From 47b378b8a3b20aaadf648e68dffbd3111ea4cde0 Mon Sep 17 00:00:00 2001 From: Marco Vinciguerra Date: Thu, 9 Jan 2025 11:06:08 +0100 Subject: [PATCH 1/7] feat: add new info --- docs/Contributing/contributing_guidelines.md | 29 +- docs/Contributing/sponsors.md | 27 +- docs/contributing/contributing_markdown.md | 3 - docs/intro.md | 316 ++++++++----------- docusaurus.config.js | 8 +- 5 files changed, 162 insertions(+), 221 deletions(-) delete mode 100644 docs/contributing/contributing_markdown.md diff --git a/docs/Contributing/contributing_guidelines.md b/docs/Contributing/contributing_guidelines.md index da42f379..4932857a 100644 --- a/docs/Contributing/contributing_guidelines.md +++ b/docs/Contributing/contributing_guidelines.md @@ -1,10 +1,27 @@ -# 🤝 Contributing -Scrapegraph-ai is [MIT LICENSED](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/LICENSE). +# 🚀 Contributing guidelines -Contributions are welcome! Please check out the todos below, and feel free to open a pull request. +Hey there! Thanks for checking out **ScrapeGraphAI**! We're excited to have you here! 🎉 -For more information, please see the [contributing guidelines](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/CONTRIBUTING.md). +## Quick Start Guide 🏃‍♂️ -Join our Discord server to discuss with us improvements and give us suggestions! +1. Fork the repository from the **pre/beta branch** 🍴 +2. Clone your fork locally 💻 +3. Install uv (if you haven't): + ```bash + curl -LsSf https://astral.sh/uv/install.sh | sh + ``` +4. Run `uv sync` (creates virtual env & installs dependencies) ⚡ +5. Run `uv run pre-commit install` 🔧 +6. Make your awesome changes ✨ +7. Test thoroughly 🧪 +8. Push & open a PR to the pre/beta branch 🎯 -[![Join Discord Server](https://img.shields.io/badge/Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white)](https://discord.com/invite/gkxQDAjfeX) \ No newline at end of file +## Need Help? 🤔 + +Found a bug or have a cool idea? Open an issue and let's chat! 💬 + +## License 📜 + +MIT Licensed. See [LICENSE](LICENSE) file for details. + +Let's build something amazing together! 🌟 \ No newline at end of file diff --git a/docs/Contributing/sponsors.md b/docs/Contributing/sponsors.md index 3bc3cdb9..3725fb87 100644 --- a/docs/Contributing/sponsors.md +++ b/docs/Contributing/sponsors.md @@ -1,23 +1,16 @@ -
+# 🏆 Sponsors + +
- Browserbase + Browserbase - SerpAPI + SerpAPI - Stats + Stats -
+ + Stats + +
\ No newline at end of file diff --git a/docs/contributing/contributing_markdown.md b/docs/contributing/contributing_markdown.md deleted file mode 100644 index 45010c07..00000000 --- a/docs/contributing/contributing_markdown.md +++ /dev/null @@ -1,3 +0,0 @@ -# 🎻 List of the contributors -[![Contributors](https://contrib.rocks/image?repo=VinciGit00/Scrapegraph-ai)](https://github.com/VinciGit00/Scrapegraph-ai/graphs/contributors) - diff --git a/docs/intro.md b/docs/intro.md index 67a9a2bc..c4bcc19e 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -1,243 +1,161 @@ - # 🕷️ ScrapeGraphAI: You Only Scrape Once -[![Downloads](https://static.pepy.tech/badge/scrapegraphai)](https://pepy.tech/project/scrapegraphai) -[![linting: pylint](https://img.shields.io/badge/linting-pylint-yellowgreen)](https://github.com/pylint-dev/pylint) -[![Pylint](https://github.com/VinciGit00/Scrapegraph-ai/actions/workflows/pylint.yml/badge.svg)](https://github.com/VinciGit00/Scrapegraph-ai/actions/workflows/pylint.yml) -[![CodeQL](https://github.com/VinciGit00/Scrapegraph-ai/actions/workflows/codeql.yml/badge.svg)](https://github.com/VinciGit00/Scrapegraph-ai/actions/workflows/codeql.yml) -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[English](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/README.md) | [中文](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/docs/chinese.md) | [日本語](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/docs/japanese.md) +| [한국어](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/docs/korean.md) +| [Русский](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/docs/russian.md) | [Türkçe](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/docs/turkish.md) + + +[![Downloads](https://img.shields.io/pepy/dt/scrapegraphai?style=for-the-badge)](https://pepy.tech/project/scrapegraphai) +[![linting: pylint](https://img.shields.io/badge/linting-pylint-yellowgreen?style=for-the-badge)](https://github.com/pylint-dev/pylint) +[![Pylint](https://img.shields.io/github/actions/workflow/status/VinciGit00/Scrapegraph-ai/code-quality.yml?label=Pylint&logo=github&style=for-the-badge)](https://github.com/VinciGit00/Scrapegraph-ai/actions/workflows/code-quality.yml) +[![CodeQL](https://img.shields.io/github/actions/workflow/status/VinciGit00/Scrapegraph-ai/codeql.yml?label=CodeQL&logo=github&style=for-the-badge)](https://github.com/VinciGit00/Scrapegraph-ai/actions/workflows/codeql.yml) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT) [![](https://dcbadge.vercel.app/api/server/gkxQDAjfeX)](https://discord.gg/gkxQDAjfeX) +

+VinciGit00%2FScrapegraph-ai | Trendshift +

+ +[ScrapeGraphAI](https://scrapegraphai.com) is a *web scraping* python library that uses LLM and direct graph logic to create scraping pipelines for websites and local documents (XML, HTML, JSON, Markdown, etc.). -ScrapeGraphAI is a *web scraping* python library that uses LLM and direct graph logic to create scraping pipelines for websites, documents and XML files. Just say which information you want to extract and the library will do it for you! -[![My Skills](https://skillicons.dev/icons?i=discord)](https://discord.gg/gkxQDAjfeX) -[![My Skills](https://skillicons.dev/icons?i=linkedin)](https://www.linkedin.com/company/scrapegraphai/) -[![My Skills](https://skillicons.dev/icons?i=twitter)](https://twitter.com/scrapegraphai) +

+ ScrapeGraphAI Hero +

## 🚀 Quick install -The reference page for Scrapegraph-ai is available on the official page of pypy: [pypi](https://pypi.org/project/scrapegraphai/). +The reference page for Scrapegraph-ai is available on the official page of PyPI: [pypi](https://pypi.org/project/scrapegraphai/). ```bash pip install scrapegraphai -``` -you will also need to install Playwright for javascript-based scraping: -```bash + +# IMPORTANT (for fetching websites content) playwright install ``` **Note**: it is recommended to install the library in a virtual environment to avoid conflicts with other libraries 🐱 -## News 📰 - -- ScrapegraphAI has now his APIs! Check it out [here](https://scrapegraphai.com)! - -## 🔍 Demo -Official streamlit demo: - -[![My Skills](https://skillicons.dev/icons?i=react)](https://scrapegraph-demo-demo.streamlit.app) - -Try it directly on the web using Google Colab: - -[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1sEZBonBMGP44CtO6GQTwAlL0BGJXjtfd?usp=sharing) - -Follow the procedure on the following link to setup your OpenAI API key: [link](https://scrapegraph-ai.readthedocs.io/en/latest/index.html). - -## 📖 Documentation - -The documentation for ScrapeGraphAI can be found [here](https://scrapegraph-ai.readthedocs.io/en/latest/). - -Check out also the docusaurus [documentation](https://scrapegraph-doc.onrender.com/). ## 💻 Usage -You can use the `SmartScraper` class to extract information from a website using a prompt. +There are multiple standard scraping pipelines that can be used to extract information from a website (or local file). -The `SmartScraper` class is a direct graph implementation that uses the most common nodes present in a web scraping pipeline. For more information, please see the [documentation](https://scrapegraph-ai.readthedocs.io/en/latest/). -### Case 1: Extracting information using Ollama -Remember to download the model on Ollama separately! +The most common one is the `SmartScraperGraph`, which extracts information from a single page given a user prompt and a source URL. -```python -from scrapegraphai.graphs import SmartScraperGraph -graph_config = { - "llm": { - "model": "ollama/mistral", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - "base_url": "http://localhost:11434", # set Ollama URL - }, - "embeddings": { - "model": "ollama/nomic-embed-text", - "base_url": "http://localhost:11434", # set Ollama URL - } -} - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the articles", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -``` - -### Case 2: Extracting information using Docker - -Note: before using the local model remember to create the docker container! -```text - docker-compose up -d - docker exec -it ollama ollama pull stablelm-zephyr -``` -You can use which models available on Ollama or your own model instead of stablelm-zephyr ```python from scrapegraphai.graphs import SmartScraperGraph +# Define the configuration for the scraping pipeline graph_config = { "llm": { - "model": "ollama/mistral", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - # "model_tokens": 2000, # set context length arbitrarily + "api_key": "YOUR_OPENAI_API_KEY", + "model": "openai/gpt-4o-mini", }, + "verbose": True, + "headless": False, } +# Create the SmartScraperGraph instance smart_scraper_graph = SmartScraperGraph( - prompt="List me all the articles", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", + prompt="Extract useful information from the webpage, including a description of what the company does, founders and social media links", + source="https://scrapegraphai.com/", config=graph_config ) +# Run the pipeline result = smart_scraper_graph.run() -print(result) -``` - - -### Case 3: Extracting information using Openai model -```python -from scrapegraphai.graphs import SmartScraperGraph -OPENAI_API_KEY = "YOUR_API_KEY" - -graph_config = { - "llm": { - "api_key": OPENAI_API_KEY, - "model": "gpt-3.5-turbo", - }, -} - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the articles", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) -result = smart_scraper_graph.run() -print(result) +import json +print(json.dumps(result, indent=4)) ``` -### Case 4: Extracting information using Groq -```python -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -groq_key = os.getenv("GROQ_APIKEY") +The output will be a dictionary like the following: -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "embeddings": { - "model": "ollama/nomic-embed-text", - "temperature": 0, - "base_url": "http://localhost:11434", - }, - "headless": False +```python +{ + "description": "ScrapeGraphAI transforms websites into clean, organized data for AI agents and data analytics. It offers an AI-powered API for effortless and cost-effective data extraction.", + "founders": [ + { + "name": "Marco Perini", + "role": "Founder & Technical Lead", + "linkedin": "https://www.linkedin.com/in/perinim/" + }, + { + "name": "Marco Vinciguerra", + "role": "Founder & Software Engineer", + "linkedin": "https://www.linkedin.com/in/marco-vinciguerra-7ba365242/" + }, + { + "name": "Lorenzo Padoan", + "role": "Founder & Product Engineer", + "linkedin": "https://www.linkedin.com/in/lorenzo-padoan-4521a2154/" + } + ], + "social_media_links": { + "linkedin": "https://www.linkedin.com/company/101881123", + "twitter": "https://x.com/scrapegraphai", + "github": "https://github.com/ScrapeGraphAI/Scrapegraph-ai" + } } - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description and the author.", - source="https://perinim.github.io/projects", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) ``` +There are other pipelines that can be used to extract information from multiple pages, generate Python scripts, or even generate audio files. -### Case 5: Extracting information using Azure -```python -from langchain_openai import AzureChatOpenAI -from langchain_openai import AzureOpenAIEmbeddings +| Pipeline Name | Description | +|-------------------------|------------------------------------------------------------------------------------------------------------------| +| SmartScraperGraph | Single-page scraper that only needs a user prompt and an input source. | +| SearchGraph | Multi-page scraper that extracts information from the top n search results of a search engine. | +| SpeechGraph | Single-page scraper that extracts information from a website and generates an audio file. | +| ScriptCreatorGraph | Single-page scraper that extracts information from a website and generates a Python script. | +| SmartScraperMultiGraph | Multi-page scraper that extracts information from multiple pages given a single prompt and a list of sources. | +| ScriptCreatorMultiGraph | Multi-page scraper that generates a Python script for extracting information from multiple pages and sources. | -lm_model_instance = AzureChatOpenAI( - openai_api_version=os.environ["AZURE_OPENAI_API_VERSION"], - azure_deployment=os.environ["AZURE_OPENAI_CHAT_DEPLOYMENT_NAME"] -) - -embedder_model_instance = AzureOpenAIEmbeddings( - azure_deployment=os.environ["AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT_NAME"], - openai_api_version=os.environ["AZURE_OPENAI_API_VERSION"], -) -graph_config = { - "llm": {"model_instance": llm_model_instance}, - "embeddings": {"model_instance": embedder_model_instance} -} - -smart_scraper_graph = SmartScraperGraph( - prompt="""List me all the events, with the following fields: company_name, event_name, event_start_date, event_start_time, - event_end_date, event_end_time, location, event_mode, event_category, - third_party_redirect, no_of_days, - time_in_hours, hosted_or_attending, refreshments_type, - registration_available, registration_link""", - source="https://www.hmhco.com/event", - config=graph_config -) -``` +For each of these graphs there is the multi version. It allows to make calls of the LLM in parallel. -### Case 6: Extracting information using Gemini -```python -from scrapegraphai.graphs import SmartScraperGraph -GOOGLE_APIKEY = "YOUR_API_KEY" +It is possible to use different LLM through APIs, such as **OpenAI**, **Groq**, **Azure** and **Gemini**, or local models using **Ollama**. -# Define the configuration for the graph -graph_config = { - "llm": { - "api_key": GOOGLE_APIKEY, - "model": "gemini-pro", - }, -} +Remember to have [Ollama](https://ollama.com/) installed and download the models using the **ollama pull** command, if you want to use local models. -# Create the SmartScraperGraph instance -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the articles", - source="https://perinim.github.io/projects", - config=graph_config -) -result = smart_scraper_graph.run() -print(result) -``` +## 📖 Documentation -The output for all 3 the cases will be a dictionary with the extracted information, for example: +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1sEZBonBMGP44CtO6GQTwAlL0BGJXjtfd?usp=sharing) -```bash -{ - 'titles': [ - 'Rotary Pendulum RL' - ], - 'descriptions': [ - 'Open Source project aimed at controlling a real life rotary pendulum using RL algorithms' - ] -} -``` +The documentation for ScrapeGraphAI can be found [here](https://scrapegraph-ai.readthedocs.io/en/latest/). +Check out also the Docusaurus [here](https://docs-oss.scrapegraphai.com/). + +## 🔗 ScrapeGraph API & SDKs +If you are looking for a quick solution to integrate ScrapeGraph in your system, check out our powerful API [here!](https://dashboard.scrapegraphai.com/login) + +

+ ScrapeGraph API Banner +

+ +We offer SDKs in both Python and Node.js, making it easy to integrate into your projects. Check them out below: + +| SDK | Language | GitHub Link | +|-----------|----------|-----------------------------------------------------------------------------| +| Python SDK | Python | [scrapegraph-py](https://github.com/ScrapeGraphAI/scrapegraph-sdk/tree/main/scrapegraph-py) | +| Node.js SDK | Node.js | [scrapegraph-js](https://github.com/ScrapeGraphAI/scrapegraph-sdk/tree/main/scrapegraph-js) | + +The Official API Documentation can be found [here](https://docs.scrapegraphai.com/). + +## 🏆 Sponsors +
+ + Browserbase + + + SerpAPI + + + Stats + + + Stats + +
## 🤝 Contributing @@ -245,10 +163,13 @@ Feel free to contribute and join our Discord server to discuss with us improveme Please see the [contributing guidelines](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/CONTRIBUTING.md). -## 📈 Roadmap -Check out the project roadmap [here](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/docs/README.md)! 🚀 +[![My Skills](https://skillicons.dev/icons?i=discord)](https://discord.gg/uJN7TYcpNa) +[![My Skills](https://skillicons.dev/icons?i=linkedin)](https://www.linkedin.com/company/scrapegraphai/) +[![My Skills](https://skillicons.dev/icons?i=twitter)](https://twitter.com/scrapegraphai) + +## 📈 Telemetry +We collect anonymous usage metrics to enhance our package's quality and user experience. The data helps us prioritize improvements and ensure compatibility. If you wish to opt-out, set the environment variable SCRAPEGRAPHAI_TELEMETRY_ENABLED=false. For more information, please refer to the documentation [here](https://scrapegraph-ai.readthedocs.io/en/latest/scrapers/telemetry.html). -Wanna visualize the roadmap in a more interactive way? Check out the [markmap](https://markmap.js.org/repl) visualization by copy pasting the markdown content in the editor! ## ❤️ Contributors [![Contributors](https://contrib.rocks/image?repo=VinciGit00/Scrapegraph-ai)](https://github.com/VinciGit00/Scrapegraph-ai/graphs/contributors) @@ -264,6 +185,13 @@ If you have used our library for research purposes please quote us with the foll note = {A Python library for scraping leveraging large language models} } ``` + +## Authors + +

+ Authors_logos +

+ | | Contact Info | |--------------------|----------------------| | Marco Vinciguerra | [![Linkedin Badge](https://img.shields.io/badge/-Linkedin-blue?style=flat&logo=Linkedin&logoColor=white)](https://www.linkedin.com/in/marco-vinciguerra-7ba365242/) | @@ -278,3 +206,5 @@ ScrapeGraphAI is licensed under the MIT License. See the [LICENSE](https://githu - We would like to thank all the contributors to the project and the open-source community for their support. - ScrapeGraphAI is meant to be used for data exploration and research purposes only. We are not responsible for any misuse of the library. + +Made with ❤️ by [ScrapeGraph AI](https://scrapegraphai.com) diff --git a/docusaurus.config.js b/docusaurus.config.js index 90035cb0..7bcb3c3c 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -86,7 +86,7 @@ const config = { position: 'left', }, { - href: 'https://github.com/VinciGit00/Scrapegraph-ai', + href: 'https://github.com/ScrapeGraphAI/Scrapegraph-ai', label: 'GitHub', position: 'right', }, @@ -102,6 +102,10 @@ const config = { label: 'Tutorial', to: '/docs/intro', }, + { + label: 'Official website', + href: 'https://scrapegraphai.com', + }, ], }, { @@ -114,7 +118,7 @@ const config = { ], }, ], - copyright: `Copyright © ${new Date().getFullYear()}, Marco Perini, Lorenzo Padoan e Marco Vinciguerra. Built with Docusaurus.`, + copyright: `Copyright © ${new Date().getFullYear()}, ScrapegraphAI, Inc. Built with Docusaurus.`, }, prism: { theme: prismThemes.github, From 7d62dc7099b6f1743e64c825519b854ca1431720 Mon Sep 17 00:00:00 2001 From: Marco Vinciguerra Date: Fri, 10 Jan 2025 09:56:21 +0100 Subject: [PATCH 2/7] feat: refactoring of the structure --- docs/Builders/GraphBuilder.md | 86 ----- docs/Builders/_category_.json | 8 - docs/Helpers/_category_.json | 8 - docs/Helpers/models_tokens.md | 24 -- docs/Helpers/nodes_metadata.md | 90 ----- docs/Helpers/schemas.md | 72 ---- docs/Nodes/_category_.json | 8 - docs/Nodes/base_node.md | 75 ---- docs/Nodes/conditional_node.md | 51 --- docs/Nodes/description_node.md | 79 ----- docs/Nodes/fetch_html_node.md | 61 ---- docs/Nodes/fetch_node_level_k.md | 50 --- docs/Nodes/generate_answer_csv_node.md | 58 --- docs/Nodes/generate_answer_node.md | 57 --- docs/Nodes/generate_answer_node_level_k.md | 35 -- docs/Nodes/generate_answer_omni_node.md | 61 ---- docs/Nodes/generate_code_node.md | 92 ----- docs/Nodes/generate_scraper_node.md | 66 ---- docs/Nodes/get_probable_tags_node.md | 63 ---- docs/Nodes/html_analyzer_node.md | 68 ---- docs/Nodes/image_to_text_node.md | 59 ---- docs/Nodes/merge_answer_node.md | 60 ---- docs/Nodes/parse_text_node.md | 58 --- docs/Nodes/prompt_refiner_node.md | 60 ---- docs/Nodes/rag.md | 60 ---- docs/Nodes/robots_node.md | 60 ---- docs/Nodes/search_internet_node.md | 64 ---- docs/Nodes/search_link_node.md | 64 ---- docs/Nodes/text_to_speach_node.md | 59 ---- docs/Utils/_category_.json | 8 - docs/Utils/convert_to_csv.md | 102 ------ docs/Utils/convert_to_j.md | 82 ----- docs/Utils/parse_state_key.md | 106 ------ docs/Utils/prettify_info.md | 94 ----- docs/Utils/r.md | 71 ---- docs/Utils/save.md | 43 --- docs/Utils/saveaudio.md | 26 -- docs/Utils/search_function.md | 52 --- docs/Utils/token_calculator.md | 55 --- docs/core/_category_.json | 8 - docs/getting_started/examples.md | 87 +++++ docs/getting_started/installation.md | 47 +++ docs/intro.md | 334 ++++++++---------- docs/scrapers/_category_.json | 8 + docs/scrapers/configuration.md | 84 +++++ docs/scrapers/graphs.md | 14 + docs/scrapers/llm.md | 219 ++++++++++++ docs/scrapers/telemetry.md | 80 +++++ docs/scrapers/types.md | 195 ++++++++++ source/conf.py | 42 +++ source/getting_started/examples.rst | 87 +++++ source/getting_started/installation.rst | 50 +++ source/index.rst | 46 +++ source/introduction/contributing.rst | 13 + source/introduction/overview.rst | 202 +++++++++++ source/modules/modules.rst | 10 + source/modules/scrapegraphai.builders.rst | 21 ++ source/modules/scrapegraphai.docloaders.rst | 21 ++ source/modules/scrapegraphai.graphs.rst | 133 +++++++ .../scrapegraphai.helpers.models_tokens.rst | 28 ++ source/modules/scrapegraphai.helpers.rst | 45 +++ source/modules/scrapegraphai.integrations.rst | 21 ++ source/modules/scrapegraphai.models.rst | 101 ++++++ source/modules/scrapegraphai.nodes.rst | 165 +++++++++ source/modules/scrapegraphai.rst | 25 ++ source/modules/scrapegraphai.utils.rst | 93 +++++ source/scrapers/graph_config.rst | 88 +++++ source/scrapers/graphs.rst | 13 + source/scrapers/llm.rst | 228 ++++++++++++ source/scrapers/telemetry.rst | 78 ++++ source/scrapers/types.rst | 225 ++++++++++++ 71 files changed, 2612 insertions(+), 2494 deletions(-) delete mode 100644 docs/Builders/GraphBuilder.md delete mode 100644 docs/Builders/_category_.json delete mode 100644 docs/Helpers/_category_.json delete mode 100644 docs/Helpers/models_tokens.md delete mode 100644 docs/Helpers/nodes_metadata.md delete mode 100644 docs/Helpers/schemas.md delete mode 100644 docs/Nodes/_category_.json delete mode 100644 docs/Nodes/base_node.md delete mode 100644 docs/Nodes/conditional_node.md delete mode 100644 docs/Nodes/description_node.md delete mode 100644 docs/Nodes/fetch_html_node.md delete mode 100644 docs/Nodes/fetch_node_level_k.md delete mode 100644 docs/Nodes/generate_answer_csv_node.md delete mode 100644 docs/Nodes/generate_answer_node.md delete mode 100644 docs/Nodes/generate_answer_node_level_k.md delete mode 100644 docs/Nodes/generate_answer_omni_node.md delete mode 100644 docs/Nodes/generate_code_node.md delete mode 100644 docs/Nodes/generate_scraper_node.md delete mode 100644 docs/Nodes/get_probable_tags_node.md delete mode 100644 docs/Nodes/html_analyzer_node.md delete mode 100644 docs/Nodes/image_to_text_node.md delete mode 100644 docs/Nodes/merge_answer_node.md delete mode 100644 docs/Nodes/parse_text_node.md delete mode 100644 docs/Nodes/prompt_refiner_node.md delete mode 100644 docs/Nodes/rag.md delete mode 100644 docs/Nodes/robots_node.md delete mode 100644 docs/Nodes/search_internet_node.md delete mode 100644 docs/Nodes/search_link_node.md delete mode 100644 docs/Nodes/text_to_speach_node.md delete mode 100644 docs/Utils/_category_.json delete mode 100644 docs/Utils/convert_to_csv.md delete mode 100644 docs/Utils/convert_to_j.md delete mode 100644 docs/Utils/parse_state_key.md delete mode 100644 docs/Utils/prettify_info.md delete mode 100644 docs/Utils/r.md delete mode 100644 docs/Utils/save.md delete mode 100644 docs/Utils/saveaudio.md delete mode 100644 docs/Utils/search_function.md delete mode 100644 docs/Utils/token_calculator.md delete mode 100644 docs/core/_category_.json create mode 100644 docs/getting_started/examples.md create mode 100644 docs/getting_started/installation.md create mode 100644 docs/scrapers/_category_.json create mode 100644 docs/scrapers/configuration.md create mode 100644 docs/scrapers/graphs.md create mode 100644 docs/scrapers/llm.md create mode 100644 docs/scrapers/telemetry.md create mode 100644 docs/scrapers/types.md create mode 100644 source/conf.py create mode 100644 source/getting_started/examples.rst create mode 100644 source/getting_started/installation.rst create mode 100644 source/index.rst create mode 100644 source/introduction/contributing.rst create mode 100644 source/introduction/overview.rst create mode 100644 source/modules/modules.rst create mode 100644 source/modules/scrapegraphai.builders.rst create mode 100644 source/modules/scrapegraphai.docloaders.rst create mode 100644 source/modules/scrapegraphai.graphs.rst create mode 100644 source/modules/scrapegraphai.helpers.models_tokens.rst create mode 100644 source/modules/scrapegraphai.helpers.rst create mode 100644 source/modules/scrapegraphai.integrations.rst create mode 100644 source/modules/scrapegraphai.models.rst create mode 100644 source/modules/scrapegraphai.nodes.rst create mode 100644 source/modules/scrapegraphai.rst create mode 100644 source/modules/scrapegraphai.utils.rst create mode 100644 source/scrapers/graph_config.rst create mode 100644 source/scrapers/graphs.rst create mode 100644 source/scrapers/llm.rst create mode 100644 source/scrapers/telemetry.rst create mode 100644 source/scrapers/types.rst diff --git a/docs/Builders/GraphBuilder.md b/docs/Builders/GraphBuilder.md deleted file mode 100644 index 584ae4d1..00000000 --- a/docs/Builders/GraphBuilder.md +++ /dev/null @@ -1,86 +0,0 @@ -# 💫 Graph Builder -# GraphBuilder Module - -The `GraphBuilder` module constructs web scraping graphs based on user prompts. It uses a natural language understanding model to interpret user prompts and generate a graph configuration for scraping web content. - -## Classes - -### `GraphBuilder` - -`GraphBuilder` is a dynamic tool for constructing web scraping graphs based on user prompts. - -#### Attributes - -- **prompt (str)**: The user's natural language prompt for the scraping task. -- **llm (ChatOpenAI)**: An instance of the `ChatOpenAI` class configured with the specified `llm_config`. -- **nodes_description (str)**: A string description of all available nodes and their arguments. -- **chain (LLMChain)**: The extraction chain responsible for processing the prompt and creating the graph. - -#### Methods - -- **`__init__(self, user_prompt: str, config: dict)`** - - Initializes the `GraphBuilder` with a user prompt and language model configuration. - -- **`_create_llm(self, llm_config: dict)`** - - Creates an instance of the `OpenAI` class with the provided language model configuration. - - **Returns**: `OpenAI` - An instance of the `OpenAI` class. - - **Raises**: `ValueError` - If 'api_key' is not provided in `llm_config`. - -- **`_generate_nodes_description(self)`** - - Generates a string description of all available nodes and their arguments. - - **Returns**: `str` - A string description of all available nodes and their arguments. - -- **`_create_extraction_chain(self)`** - - Creates an extraction chain for processing the user prompt and generating the graph configuration. - - **Returns**: `LLMChain` - An instance of the `LLMChain` class. - -- **`build_graph(self)`** - - Executes the graph creation process based on the user prompt and returns the graph configuration. - - **Returns**: `dict` - A JSON representation of the graph configuration. - -- **`convert_json_to_graphviz(json_data, format: str = 'pdf')`** - - Converts a JSON graph configuration to a Graphviz object for visualization. - - **Args**: - - `json_data (dict)`: A JSON representation of the graph configuration. - - `format (str)`: The output format of the Graphviz object. Defaults to 'pdf'. - - **Returns**: `graphviz.Digraph` - A Graphviz object representing the graph configuration. - -#### Args - -- **prompt (str)**: The user's natural language prompt describing the desired scraping operation. -- **url (str)**: The target URL from which data is to be scraped. -- **llm_config (dict)**: Configuration parameters for the language model, where 'api_key' is mandatory, and 'model_name', 'temperature', and 'streaming' can be optionally included. - -#### Raises - -- **ValueError**: If 'api_key' is not included in `llm_config`. - -## Example Usage - -Here is an example of how to use the `GraphBuilder` class: - -```python -from scrapegraphai.builders.graph_builder import GraphBuilder - -# Define user prompt and configuration -user_prompt = "Scrape all article titles and publish dates from the homepage" -config = { - "llm": { - "api_key": "your_api_key_here", - "model_name": "gpt-3.5-turbo", - "temperature": 0.7, - "streaming": False - } -} - -# Initialize GraphBuilder -graph_builder = GraphBuilder(user_prompt, config) - -# Build the graph -graph_config = graph_builder.build_graph() - -# Convert graph config to Graphviz for visualization -graphviz_graph = GraphBuilder.convert_json_to_graphviz(graph_config) - -# Render the graph to a file -graphviz_graph.render(filename='graph', format='pdf') diff --git a/docs/Builders/_category_.json b/docs/Builders/_category_.json deleted file mode 100644 index 34ce9025..00000000 --- a/docs/Builders/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Builders", - "position": 4, - "link": { - "type": "generated-index", - "description": "Introduction graph builder" - } -} \ No newline at end of file diff --git a/docs/Helpers/_category_.json b/docs/Helpers/_category_.json deleted file mode 100644 index 641352c5..00000000 --- a/docs/Helpers/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Helpers", - "position": 9, - "link": { - "type": "generated-index", - "description": "Description of the Helpers folder" - } -} \ No newline at end of file diff --git a/docs/Helpers/models_tokens.md b/docs/Helpers/models_tokens.md deleted file mode 100644 index d85955d2..00000000 --- a/docs/Helpers/models_tokens.md +++ /dev/null @@ -1,24 +0,0 @@ -# 🙃 Models tokens -## Description -Class for describing the cost in tokens for each model - -## Implementation -```python -""" -Models token -""" -models_tokens = { - "gpt-3.5-turbo-0125": 16385, - "gpt-3.5-turbo": 4096, - "gpt-3.5-turbo-1106": 16385, - "gpt-3.5-turbo-instruct": 4096, - "gpt-4-0125-preview": 128000, - "gpt-4-turbo-preview": 128000, - "gpt-4-1106-preview": 128000, - "gpt-4-vision-preview": 128000, - "gpt-4": 8192, - "gpt-4-0613": 8192, - "gpt-4-32k": 32768, - "gpt-4-32k-0613": 32768, -} -``` \ No newline at end of file diff --git a/docs/Helpers/nodes_metadata.md b/docs/Helpers/nodes_metadata.md deleted file mode 100644 index 73fd5245..00000000 --- a/docs/Helpers/nodes_metadata.md +++ /dev/null @@ -1,90 +0,0 @@ -# 🥑 Nodes metadata -## Description -Metadata for describing the scrapegraphai package - -## Implementation -```python -""" -Nodes metadata for the scrapegraphai package. -""" - -nodes_metadata = { - "FetchHTMLNode": { - "description": "Fetches HTML content from a given URL.", - "type": "node", - "args": { - "url": "The URL from which to fetch HTML content." - }, - "returns": "Updated state with fetched HTML content under 'document' key." - }, - "GetProbableTagsNode": { - "description": "Identifies probable HTML tags from a document based on a user's question.", - "type": "node", - "args": { - "user_input": "User's query or question.", - "document": "HTML content as a string." - }, - "returns": "Updated state with probable HTML tags under 'tags' key." - }, - "ParseHTMLNode": { - "description": "Parses HTML content to extract specific data.", - "type": "node", - "args": { - "document": "HTML content as a string.", - "tags": "List of HTML tags to focus on during parsing." - }, - "returns": "Updated state with extracted data under 'parsed_document' key." - }, - "RAGNode": { - "description": """A node responsible for reducing the amount of text to be processed - by identifying and retrieving the most relevant chunks of text based on the user's query. - Utilizes RecursiveCharacterTextSplitter for chunking, Html2TextTransformer for HTML to text - conversion, and a combination of FAISS and OpenAIEmbeddings - for efficient information retrieval.""", - "type": "node", - "args": { - "user_input": "The user's query or question guiding the retrieval.", - "document": "The HTML content to be processed and compressed." - }, - "returns": """Updated state with 'relevant_chunks' key containing - the most relevant text chunks.""" - }, - "GenerateAnswerNode": { - "description": "Generates an answer based on the user's input and parsed document.", - "type": "node", - "args": { - "user_input": "User's query or question.", - "parsed_document": "Data extracted from the HTML document." - }, - "returns": "Updated state with the answer under 'answer' key." - }, - "ConditionalNode": { - "description": "Decides the next node to execute based on a condition.", - "type": "conditional_node", - "args": { - "key_name": "The key in the state to check for a condition.", - "next_nodes": """A list of two nodes specifying the next node - to execute based on the condition's outcome.""" - }, - "returns": "The name of the next node to execute." - }, - "ImageToTextNode": { - "description": """Converts image content to text by - extracting visual information and interpreting it.""", - "type": "node", - "args": { - "image_data": "Data of the image to be processed." - }, - "returns": "Updated state with the textual description of the image under 'image_text' key." - }, - "TextToSpeechNode": { - "description": """Converts text into spoken words, allow - ing for auditory representation of the text.""", - "type": "node", - "args": { - "text": "The text to be converted into speech." - }, - "returns": "Updated state with the speech audio file or data under 'speech_audio' key." - } -} -``` \ No newline at end of file diff --git a/docs/Helpers/schemas.md b/docs/Helpers/schemas.md deleted file mode 100644 index 4d74cd52..00000000 --- a/docs/Helpers/schemas.md +++ /dev/null @@ -1,72 +0,0 @@ -# 🗳️ Schemas - -## Description -Schemas of the configuration - -## Implementation -```python -""" -Schemas representing the configuration of a graph or node in the ScrapeGraphAI library -""" - -graph_schema = { - "name": "ScrapeGraphAI Graph Configuration", - "description": "JSON schema for representing graphs in the ScrapeGraphAI library", - "type": "object", - "properties": { - "nodes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "node_name": { - "type": "string", - "description": "The unique identifier for the node." - }, - "node_type": { - "type": "string", - "description": "The type of node, must be 'node' or 'conditional_node'." - }, - "args": { - "type": "object", - "description": "The arguments required for the node's execution." - }, - "returns": { - "type": "object", - "description": "The return values of the node's execution." - }, - }, - "required": ["node_name", "node_type", "args", "returns"] - } - }, - "edges": { - "type": "array", - "items": { - "type": "object", - "properties": { - "from": { - "type": "string", - "description": "The node_name of the starting node of the edge." - }, - "to": { - "type": "array", - "items": { - "type": "string" - }, - "description": """An array containing the node_names - of the ending nodes of the edge. - If the 'from' node is a conditional node, - this array must contain exactly two node_names.""" - } - }, - "required": ["from", "to"] - } - }, - "entry_point": { - "type": "string", - "description": "The node_name of the entry point node." - } - }, - "required": ["nodes", "edges", "entry_point"] -} -``` \ No newline at end of file diff --git a/docs/Nodes/_category_.json b/docs/Nodes/_category_.json deleted file mode 100644 index 776ab153..00000000 --- a/docs/Nodes/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Nodes", - "position": "3", - "link": { - "type": "generated-index", - "description": "In the standard structure of Scrapegraph-ai, a graph is composed of nodes, each with its own functionality. The principal nodes of this library include: \n\n- base_node: an abstract class from which all nodes derive. \n- conditional_node: creates conditional branches. \n- fetch_html_node: performs HTML requests. \n- generate_answer_node: generates an answer using a language model (LLM) based on the user's input and the content extracted from a webpage. \n- get_probable_tags_node: utilizes a language model to identify probable HTML tags within a document that are likely to contain information relevant to a user's query. \n- image_to_text_node: given an image, retrieves the text. \n- text_to_speech_node: given text, saves it as an .mp3 file." - } -} diff --git a/docs/Nodes/base_node.md b/docs/Nodes/base_node.md deleted file mode 100644 index 4a8d1463..00000000 --- a/docs/Nodes/base_node.md +++ /dev/null @@ -1,75 +0,0 @@ -# 🐸 BaseNode Module - -The `BaseNode` module provides an abstract base class for nodes in a graph-based workflow, designed to perform specific actions when executed. - -## Classes - -### `BaseNode` - -`BaseNode` is an abstract base class for nodes in a graph-based workflow. - -#### Attributes - -- **node_name (str)**: The unique identifier name for the node. -- **input (str)**: Boolean expression defining the input keys needed from the state. -- **output (List[str])**: List of output keys to be updated in the state. -- **min_input_len (int)**: Minimum required number of input keys. -- **node_config (Optional[dict])**: Additional configuration for the node. -- **logger (logging.Logger)**: The centralized root logger. - -#### Methods - -- **`__init__(self, node_name: str, node_type: str, input: str, output: List[str], min_input_len: int = 1, node_config: Optional[dict] = None)`** - - Initializes the `BaseNode` with a name, type, input specification, output specification, minimum input length, and configuration. - - **Args**: - - `node_name (str)`: Name for identifying the node. - - `node_type (str)`: Type of the node; must be 'node' or 'conditional_node'. - - `input (str)`: Expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `min_input_len (int, optional)`: Minimum required number of input keys; defaults to 1. - - `node_config (Optional[dict], optional)`: Additional configuration for the node; defaults to None. - - **Raises**: - - `ValueError`: If `node_type` is not one of the allowed types. - -- **`execute(self, state: dict) -> dict`** - - Execute the node's logic based on the current state and update it accordingly. - - **Args**: - - `state (dict)`: The current state of the graph. - - **Returns**: - - `dict`: The updated state after executing the node's logic. - -- **`update_config(self, params: dict, overwrite: bool = False)`** - - Updates the node_config dictionary as well as attributes with the same key. - - **Args**: - - `param (dict)`: The dictionary to update node_config with. - - `overwrite (bool)`: Flag indicating if the values of node_config should be overwritten if their value is not None. - -- **`get_input_keys(self, state: dict) -> List[str]`** - - Determines the necessary state keys based on the input specification. - - **Args**: - - `state (dict)`: The current state of the graph used to parse input keys. - - **Returns**: - - `List[str]`: A list of input keys required for node operation. - - **Raises**: - - `ValueError`: If an error occurs in parsing input keys. - -#### Example Usage - -Here is an example of how to use the `BaseNode` class: - -```python -from base_node import BaseNode - -# Define a custom node class -class MyNode(BaseNode): - def execute(self, state): - # Implementation of node logic here - return state - -# Instantiate the custom node -my_node = MyNode("ExampleNode", "node", "input_spec", ["output_spec"]) - -# Execute the node -updated_state = my_node.execute({'key': 'value'}) - -print(updated_state) diff --git a/docs/Nodes/conditional_node.md b/docs/Nodes/conditional_node.md deleted file mode 100644 index 8ebd1eb0..00000000 --- a/docs/Nodes/conditional_node.md +++ /dev/null @@ -1,51 +0,0 @@ -# 🐷 ConditionalNode Module - -The `ConditionalNode` module implements a node that determines the next step in the graph's execution flow based on the presence and content of a specified key in the graph's state. It extends the `BaseNode` class by adding condition-based logic to the execution process. - -## Classes - -### `ConditionalNode` - -`ConditionalNode` is a node that determines the next step in the graph's execution flow based on the presence and content of a specified key in the graph's state. - -#### Attributes - -- **key_name (str)**: The name of the key in the state to check for its presence. - -#### Methods - -- **`__init__(self, key_name: str, node_name="ConditionalNode")`** - - Initializes the node with the key to check and the next node names based on the condition. - - **Args**: - - `key_name (str)`: The name of the key to check in the graph's state. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "ConditionalNode". - -- **`execute(self, state: dict) -> dict`** - - Checks if the specified key is present in the state and decides the next node accordingly. - - **Args**: - - `state (dict)`: The current state of the graph. - - **Returns**: - - `str`: The name of the next node to execute based on the presence of the key. - -#### Example Usage - -Here is an example of how to use the `ConditionalNode` class: - -```python -from conditional_node import ConditionalNode - -# Define a conditional node to check for the presence of a key -conditional_node = ConditionalNode("example_key") - -# Define the next nodes based on the condition -next_node_true = "NextNodeTrue" -next_node_false = "NextNodeFalse" - -# Execute the conditional node -state = {"example_key": "value"} -state = conditional_node.execute(state) - -# Determine the next node based on the condition -next_node_name = next_node_true if state["next_node"] == 0 else next_node_false - -print(f"Next node to execute: {next_node_name}") diff --git a/docs/Nodes/description_node.md b/docs/Nodes/description_node.md deleted file mode 100644 index aa82153d..00000000 --- a/docs/Nodes/description_node.md +++ /dev/null @@ -1,79 +0,0 @@ -# DescriptionNode - -## Overview - -`DescriptionNode` is a node responsible for compressing the input tokens and storing the document in a vector database for retrieval. Relevant chunks are stored in the state. It allows scraping of big documents without exceeding the token limit of the language model. - -## Attributes - -- `llm_model`: An instance of a language model client, configured for generating answers. -- `verbose` (bool): A flag indicating whether to show print statements during execution. - -## Args - -- `input` (str): Boolean expression defining the input keys needed from the state. -- `output` (List[str]): List of output keys to be updated in the state. -- `node_config` (dict): Additional configuration for the node. -- `node_name` (str): The unique identifier name for the node, defaulting to "DESCRIPTION". - -## Example - -```python -description_node = DescriptionNode( - input="docs", - output=["docs"], - node_config={ - "llm_model": llm_model_instance, - "verbose": True, - "cache_path": "/path/to/cache" - } -) -``` -## Methods - -__init__(self, input: str, output: List[str], node_config: Optional[dict] = None, node_name: str = "DESCRIPTION") - -Initializes the DescriptionNode with the given input, output, node configuration, and node name. - -execute(self, state: dict) -> dict - -Executes the node's logic to compress the input tokens and store the document in a vector database for retrieval. - -Args - -state (dict): The current state of the graph. The input keys will be used to fetch the correct data types from the state. -Returns - -dict: The updated state with a new output key containing the compressed documents. -Detailed Implementation - -execute(self, state: dict) -> dict - -Logging: Logs the start of the node execution. -Fetch Documents: Retrieves the documents from the state. -Process Chunks: Iterates over each document chunk and creates a prompt for each chunk using PromptTemplate. -Run Chains: Uses RunnableParallel to run the prompts in parallel and generate summaries. -Update State: Updates the state with the summarized documents. - -## Example Usage - -```python -description_node = DescriptionNode( - input="docs", - output=["docs"], - node_config={ - "llm_model": llm_model_instance, - "verbose": True, - "cache_path": "/path/to/cache" - } -) - -state = { - "docs": [ - {"document": "Document content 1"}, - {"document": "Document content 2"}, - ] -} - -updated_state = description_node.execute(state) -``` \ No newline at end of file diff --git a/docs/Nodes/fetch_html_node.md b/docs/Nodes/fetch_html_node.md deleted file mode 100644 index 3aff12ba..00000000 --- a/docs/Nodes/fetch_html_node.md +++ /dev/null @@ -1,61 +0,0 @@ -# 🦊 FetchNode Module - -The `FetchNode` module implements a node responsible for fetching the HTML content of a specified URL or loading various types of documents (such as JSON, XML, CSV, or PDF) and updating the graph's state with this content. It uses ChromiumLoader to fetch content from web pages asynchronously, ensuring proxy protection. - -## Classes - -### `FetchNode` - -`FetchNode` is a node responsible for fetching the HTML content of a specified URL or loading various types of documents and updating the graph's state with this content. - -#### Attributes - -- **headless (bool)**: A flag indicating whether the browser should run in headless mode. -- **verbose (bool)**: A flag indicating whether to print verbose output during execution. - -#### Methods - -- **`__init__(self, input: str, output: List[str], node_config: Optional[dict] = None, node_name: str = "Fetch")`** - - Initializes the node with the required input keys and output keys. - - **Args**: - - `input (str)`: Boolean expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `node_config (Optional[dict], optional)`: Additional configuration for the node. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "Fetch". - -- **`execute(self, state)`** - - Executes the node's logic to fetch HTML content from a specified URL or load various types of documents and update the state with this content. - - **Args**: - - `state (dict)`: The current state of the graph. - - **Returns**: - - `dict`: The updated state with a new output key containing the fetched HTML content. - - **Raises**: - - `KeyError`: If the input key is not found in the state, indicating that the necessary information to perform the operation is missing. - -#### Example Usage - -Here is an example of how to use the `FetchNode` class: - -```python -from fetch_node import FetchNode - -# Define a fetch node -fetch_node = FetchNode( - input="url", - output=["fetched_content", "link_urls", "image_urls"] -) - -# Define the state -state = {"url": "https://example.com"} - -# Execute the fetch node -state = fetch_node.execute(state) - -# Retrieve the fetched content and other information from the state -fetched_content = state["fetched_content"] -link_urls = state["link_urls"] -image_urls = state["image_urls"] - -print(f"Fetched Content: {fetched_content}") -print(f"Link URLs: {link_urls}") -print(f"Image URLs: {image_urls}") diff --git a/docs/Nodes/fetch_node_level_k.md b/docs/Nodes/fetch_node_level_k.md deleted file mode 100644 index b7613846..00000000 --- a/docs/Nodes/fetch_node_level_k.md +++ /dev/null @@ -1,50 +0,0 @@ -# FetchNodeLevelK - -## Overview - -`FetchNodeLevelK` is a node responsible for fetching the HTML content of a specified URL and all its sub-links recursively up to a certain level of hyperlink depth. This content is then used to update the graph's state. It uses `ChromiumLoader` to fetch the content from a web page asynchronously (with proxy protection). - -## Attributes - -- `llm_model`: An instance of a language model client, configured for generating answers. -- `verbose` (bool): A flag indicating whether to show print statements during execution. - -## Args - -- `input` (str): Boolean expression defining the input keys needed from the state. -- `output` (List[str]): List of output keys to be updated in the state. -- `node_config` (dict): Additional configuration for the node. -- `node_name` (str): The unique identifier name for the node, defaulting to "FetchLevelK". - -## Example - -```python -fetch_node = FetchNodeLevelK( - input="url", - output=["docs"], - node_config={ - "loader_kwargs": {"some_key": "some_value"}, - "force": False, - "cut": True, - "browser_base": {"api_key": "your_api_key", "project_id": "your_project_id"}, - "depth": 2, - "only_inside_links": False - } -) -``` -## Example Usage - -```python -fetch_node = FetchNodeLevelK( - input="url", - output=["docs"], - node_config={ - "loader_kwargs": {"some_key": "some_value"}, - "force": False, - "cut": True, - "browser_base": {"api_key": "your_api_key", "project_id": "your_project_id"}, - "depth": 2, - "only_inside_links": False - } -) -``` \ No newline at end of file diff --git a/docs/Nodes/generate_answer_csv_node.md b/docs/Nodes/generate_answer_csv_node.md deleted file mode 100644 index ca91961b..00000000 --- a/docs/Nodes/generate_answer_csv_node.md +++ /dev/null @@ -1,58 +0,0 @@ -# 🐼 GenerateAnswerNodeCSV Module - -The `GenerateAnswerCSVNode` module implements a node responsible for generating an answer using a language model (LLM) based on the user's input and the content extracted from a webpage. It constructs a prompt from the user's input and the scraped content, feeds it to the LLM, and parses the LLM's response to produce an answer. - -## Classes - -### `GenerateAnswerCSVNode` - -`GenerateAnswerCSVNode` is a node responsible for generating an answer using a language model (LLM) based on the user's input and the content extracted from a webpage. - -#### Attributes - -- **llm_model**: An instance of a language model client, configured for generating answers. -- **node_name (str)**: The unique identifier name for the node, defaulting to "GenerateAnswerNodeCsv". -- **node_type (str)**: The type of the node, set to "node" indicating a standard operational node. - -#### Methods - -- **`__init__(self, input: str, output: List[str], node_config: Optional[dict] = None, node_name: str = "GenerateAnswer")`** - - Initializes the GenerateAnswerNodeCsv with a language model client and a node name. - - **Args**: - - `input (str)`: Boolean expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `node_config (Optional[dict], optional)`: Additional configuration for the node. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "GenerateAnswerNodeCsv". - -- **`execute(self, state)`** - - Generates an answer by constructing a prompt from the user's input and the scraped content, querying the language model, and parsing its response. - - **Args**: - - `state (dict)`: The current state of the graph, expected to contain 'user_input' and optionally 'parsed_document' or 'relevant_chunks' within 'keys'. - - **Returns**: - - `dict`: The updated state with the 'answer' key containing the generated answer. - - **Raises**: - - `KeyError`: If 'user_input' or 'document' is not found in the state, indicating that the necessary information for generating an answer is missing. - -#### Example Usage - -Here is an example of how to use the `GenerateAnswerCSVNode` class: - -```python -from generate_answer_csv_node import GenerateAnswerCSVNode - -# Define a generate answer node -generate_answer_node = GenerateAnswerCSVNode( - input="user_input & document", - output=["answer"] -) - -# Define the state -state = {"user_input": "What are the attractions in Chioggia?", "document": [document1, document2]} - -# Execute the generate answer node -state = generate_answer_node.execute(state) - -# Retrieve the generated answer from the state -answer = state["answer"] - -print(f"Generated Answer: {answer}") diff --git a/docs/Nodes/generate_answer_node.md b/docs/Nodes/generate_answer_node.md deleted file mode 100644 index ec861d2b..00000000 --- a/docs/Nodes/generate_answer_node.md +++ /dev/null @@ -1,57 +0,0 @@ -# 🐔 GenerateAnswerNode Module - -The `GenerateAnswerNode` module implements a node responsible for generating an answer using a large language model (LLM) based on the user's input and the content extracted from a webpage. It constructs a prompt from the user's input and the scraped content, feeds it to the LLM, and parses the LLM's response to produce an answer. - -## Classes - -### `GenerateAnswerNode` - -`GenerateAnswerNode` is a node responsible for generating an answer using a large language model (LLM) based on the user's input and the content extracted from a webpage. - -#### Attributes - -- **llm_model**: An instance of a language model client, configured for generating answers. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. - -#### Methods - -- **`__init__(self, input: str, output: List[str], node_config: Optional[dict] = None, node_name: str = "GenerateAnswer")`** - - Initializes the GenerateAnswerNode with a language model client and a node name. - - **Args**: - - `input (str)`: Boolean expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `node_config (dict, optional)`: Additional configuration for the node. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "GenerateAnswer". - -- **`execute(self, state: dict) -> dict`** - - Generates an answer by constructing a prompt from the user's input and the scraped content, querying the language model, and parsing its response. - - **Args**: - - `state (dict)`: The current state of the graph. The input keys will be used to fetch the correct data from the state. - - **Returns**: - - `dict`: The updated state with the output key containing the generated answer. - - **Raises**: - - `KeyError`: If the input keys are not found in the state, indicating that the necessary information for generating an answer is missing. - -#### Example Usage - -Here is an example of how to use the `Generaprompt refinedteAnswerNode` class: - -```python -from generate_answer_node import GenerateAnswerNode - -# Define a generate answer node -generate_answer_node = GenerateAnswerNode( - input="user_input & document", - output=["answer"] -) - -# Define the state -state = {"user_input": "What are the attractions in Chioggia?", "document": [document1, document2]} - -# Execute the generate answer node -state = generate_answer_node.execute(state) - -# Retrieve the generated answer from the state -answer = state["answer"] - -print(f"Generated Answer: {answer}") diff --git a/docs/Nodes/generate_answer_node_level_k.md b/docs/Nodes/generate_answer_node_level_k.md deleted file mode 100644 index 2c919af2..00000000 --- a/docs/Nodes/generate_answer_node_level_k.md +++ /dev/null @@ -1,35 +0,0 @@ -# GenerateAnswerNodeKLevel - -## Overview - -`GenerateAnswerNodeKLevel` is a node responsible for compressing the input tokens and storing the document in a vector database for retrieval. Relevant chunks are stored in the state. It allows scraping of big documents without exceeding the token limit of the language model. - -## Attributes - -- `llm_model`: An instance of a language model client, configured for generating answers. -- `verbose` (bool): A flag indicating whether to show print statements during execution. - -## Args - -- `input` (str): Boolean expression defining the input keys needed from the state. -- `output` (List[str]): List of output keys to be updated in the state. -- `node_config` (dict): Additional configuration for the node. -- `node_name` (str): The unique identifier name for the node, defaulting to "GANLK". - -## Example - -```python -generate_answer_node = GenerateAnswerNodeKLevel( - input="vectorial_db", - output=["answer"], - node_config={ - "llm_model": llm_model_instance, - "embedder_model": embedder_model_instance, - "verbose": True, - "force": False, - "script_creator": False, - "is_md_scraper": False, - "additional_info": "Additional information" - } -) -``` \ No newline at end of file diff --git a/docs/Nodes/generate_answer_omni_node.md b/docs/Nodes/generate_answer_omni_node.md deleted file mode 100644 index 41a5c49a..00000000 --- a/docs/Nodes/generate_answer_omni_node.md +++ /dev/null @@ -1,61 +0,0 @@ -# 🐯 GenerateAnswerOmniNode Module - -The `GenerateAnswerOmniNode` module implements a node responsible for generating an answer using a large language model (LLM) based on the user's input and the content extracted from a webpage. It constructs a prompt from the user's input and the scraped content, feeds it to the LLM, and parses the LLM's response to produce an answer. - -## Classes - -### `GenerateAnswerOmniNode` - -`GenerateAnswerOmniNode` is a node responsible for generating an answer using a large language model (LLM) based on the user's input and the content extracted from a webpage. - -#### Attributes - -- **llm_model**: An instance of a language model client, configured for generating answers. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. - -#### Methods - -- **`__init__(self, input: str, output: List[str], node_config: Optional[dict] = None, node_name: str = "GenerateAnswerOmni")`** - - Initializes the GenerateAnswerOmniNode with a language model client and a node name. - - **Args**: - - `input (str)`: Boolean expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `node_config (dict, optional)`: Additional configuration for the node. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "GenerateAnswerOmni". - -- **`execute(self, state: dict) -> dict`** - - Generates an answer by constructing a prompt from the user's input and the scraped content, querying the language model, and parsing its response. - - **Args**: - - `state (dict)`: The current state of the graph. The input keys will be used to fetch the correct data from the state. - - **Returns**: - - `dict`: The updated state with the output key containing the generated answer. - - **Raises**: - - `KeyError`: If the input keys are not found in the state, indicating that the necessary information for generating an answer is missing. - -#### Example Usage - -Here is an example of how to use the `GenerateAnswerOmniNode` class: - -```python -from generate_answer_node import GenerateAnswerOmniNode - -# Define a generate answer node -generate_answer_omni_node = GenerateAnswerOmniNode( - input="user_input & document & image_description", - output=["answer"] -) - -# Define the state -state = { - "user_input": "What is the history of the Roman Empire?", - "document": [document1, document2], - "image_description": "Image of Roman Colosseum" -} - -# Execute the generate answer node -state = generate_answer_omni_node.execute(state) - -# Retrieve the generated answer from the state -answer = state["answer"] - -print(f"Generated Answer: {answer}") diff --git a/docs/Nodes/generate_code_node.md b/docs/Nodes/generate_code_node.md deleted file mode 100644 index c5d0301c..00000000 --- a/docs/Nodes/generate_code_node.md +++ /dev/null @@ -1,92 +0,0 @@ -# 🤖 GenerateCodeNode Module - -The `GenerateCodeNode` module dynamically generates Python code for a function named `extract_data(html: str) -> dict()` that extracts specific data from HTML content, adhering to a predefined output schema. It utilizes a sophisticated reasoning loop that iteratively refines the code until it successfully extracts the desired data, ensuring both syntactic correctness and semantic alignment with the user's intent. - -## Classes - -### `GenerateCodeNode` - -`GenerateCodeNode` generates Python code to extract data from HTML based on a schema. The generated code uses the BeautifulSoup library for parsing the HTML. - -#### Attributes - -- **llm_model**: An instance of a language model client, configured for generating answers. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. -- **output_schema**: The output schema be used for the generated code returned data. -- **max_iterations (dict)**: Maximum number of iterations for each reasoning loop. It should have the following structure: - ```python - { - "overall": 10, # Maximum iterations for the overall reasoning loop - "syntax": 3, # Maximum iterations for the syntax reasoning loop - "execution": 3, # Maximum iterations for the execution reasoning loop - "validation": 3, # Maximum iterations for the validation reasoning loop - "semantic": 3 # Maximum iterations for the semantic comparison loop - } - ``` - -#### Methods - -- **`__init__(self, input: str, output: List[str], node_config: Optional[dict] = None, node_name: str = "GenerateCode")`** - - Initializes the `GenerateCodeNode` with the necessary configurations. - - **Args**: - - `input (str)`: Boolean expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `node_config (dict, optional)`: Additional configuration for the node. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "GenerateCode". - -- **`execute(self, state: dict) -> dict`** - - Generates Python code that extracts data from HTML based on the specified schema. - - Leverages the analysis from the `PromptRefinerNode` and `HtmlAnalyzerNode` to improve code generation reasoning. - - **Args**: - - `state (dict)`: The current state of the graph, containing user input, refined prompt, HTML analysis, and the reference answer. - - **Returns**: - - `dict`: The updated state with the generated Python code. - - **Raises**: - - `KeyError`: If required input keys are missing from the state. - - `RuntimeError`: If the maximum number of iterations is reached without generating valid code. - -#### Reasoning Loops - -- **`overall_reasoning_loop(self, state: dict) -> dict`** - - Orchestrates the iterative code refinement process, incorporating syntax, execution, validation, and semantic checks. -- **`syntax_reasoning_loop(self, state: dict) -> dict`** - - Iteratively refines the code until it is syntactically correct. -- **`execution_reasoning_loop(self, state: dict) -> dict`** - - Iteratively refines the code until it executes without errors. -- **`validation_reasoning_loop(self, state: dict) -> dict`** - - Iteratively refines the code until its output adheres to the specified schema. -- **`semantic_comparison_loop(self, state: dict) -> dict`** - - Iteratively refines the code until its output semantically aligns with the reference answer. - -**Note:** The `HtmlAnalyzerNode` plays a crucial role in providing context and analysis to the `GenerateCodeNode`, ultimately leading to the generation of more refined and effective code. - -#### Example Usage - -Here is an example of how to use the `GenerateCodeNode` class: - -```python -from generate_code_node import GenerateCodeNode - -# Define a geenrate code node -generate_code_node = GenerateCodeNode( - input="user_prompt & refined_prompt & html_info & reduced_html & answer", - output=["generated_code"] -) - -# Define the state -state = { - "user_prompt": "What are the attractions in Chioggia?", - "refined_prompt": "The user is asking about the attractions in Chioggia.", - "html_info": "The HTML code contains...", - "reduced_html": "...", - "answer": answer -} - -# Execute the generate answer node -state = generate_code_node.execute(state) - -# Retrieve the generated answer from the state -generated_code = state["generated_code"] - -print(f"Code generated: {generated_code}") -``` \ No newline at end of file diff --git a/docs/Nodes/generate_scraper_node.md b/docs/Nodes/generate_scraper_node.md deleted file mode 100644 index 5b2db904..00000000 --- a/docs/Nodes/generate_scraper_node.md +++ /dev/null @@ -1,66 +0,0 @@ -# 🐭 GenerateScraperNode Module - -The `GenerateScraperNode` module implements a node responsible for generating a Python script for scraping a website using the specified library. It takes the user's prompt and the scraped content as input and generates a Python script that extracts the information requested by the user. - -## Classes - -### `GenerateScraperNode` - -`GenerateScraperNode` is a node responsible for generating a Python script for scraping a website using the specified library. - -#### Attributes - -- **llm_model**: An instance of a language model client, configured for generating answers. -- **library (str)**: The Python library to use for scraping the website. -- **source (str)**: The website to scrape. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. - -#### Methods - -- **`__init__(self, input: str, output: List[str], library: str, website: str, node_config: Optional[dict] = None, node_name: str = "GenerateScraper")`** - - Initializes the `GenerateScraperNode` with a language model client, a library, a website, and a node name. - - **Args**: - - `input (str)`: Boolean expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `library (str)`: The Python library to use for scraping the website. - - `website (str)`: The website to scrape. - - `node_config (dict, optional)`: Additional configuration for the node. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "GenerateScraper". - -- **`execute(self, state: dict) -> dict`** - - Generates a Python script for scraping a website using the specified library. - - **Args**: - - `state (dict)`: The current state of the graph. The input keys will be used to fetch the correct data from the state. - - **Returns**: - - `dict`: The updated state with the output key containing the generated answer. - - **Raises**: - - `KeyError`: If input keys are not found in the state, indicating that the necessary information for generating an answer is missing. - -#### Example Usage - -Here is an example of how to use the `GenerateScraperNode` class: - -```python -from generate_scraper_node import GenerateScraperNode - -# Define a generate scraper node -generate_scraper_node = GenerateScraperNode( - input="user_input & document", - output=["generated_script"], - library="requests", - website="https://example.com" -) - -# Define the state -state = { - "user_input": "What information do you want to scrape from the website?", - "document": [document] -} - -# Execute the generate scraper node -state = generate_scraper_node.execute(state) - -# Retrieve the generated script from the state -generated_script = state["generated_script"] - -print(f"Generated Script:\n{generated_script}") diff --git a/docs/Nodes/get_probable_tags_node.md b/docs/Nodes/get_probable_tags_node.md deleted file mode 100644 index b9a70acd..00000000 --- a/docs/Nodes/get_probable_tags_node.md +++ /dev/null @@ -1,63 +0,0 @@ -# 🦆 GetProbableTagsNode Module - -The `GetProbableTagsNode` module implements a node responsible for utilizing a language model to identify probable HTML tags within a document that are likely to contain the information relevant to a user's query. This node generates a prompt describing the task, submits it to the language model, and processes the output to produce a list of probable tags. - -## Classes - -### `GetProbableTagsNode` - -`GetProbableTagsNode` is a node responsible for utilizing a language model to identify probable HTML tags within a document that are likely to contain the information relevant to a user's query. - -#### Attributes - -- **llm_model**: An instance of the language model client used for tag predictions. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. - -#### Methods - -- **`__init__(self, input: str, output: List[str], node_config: dict, node_name: str = "GetProbableTags")`** - - Initializes the `GetProbableTagsNode` with a language model client and a node name. - - **Args**: - - `input (str)`: Boolean expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `node_config (dict)`: Additional configuration for the language model. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "GetProbableTags". - -- **`execute(self, state: dict) -> dict`** - - Generates a list of probable HTML tags based on the user's input and updates the state with this list. - - **Args**: - - `state (dict)`: The current state of the graph. The input keys will be used to fetch the correct data types from the state. - - **Returns**: - - `dict`: The updated state with the input key containing a list of probable HTML tags. - - **Raises**: - - `KeyError`: If input keys are not found in the state, indicating that the necessary information for generating tag predictions is missing. - -#### Example Usage - -Here is an example of how to use the `GetProbableTagsNode` class: - -```python -from get_probable_tags_node import GetProbableTagsNode - -# Define a GetProbableTagsNode -get_probable_tags_node = GetProbableTagsNode( - input="user_input & document", - output=["probable_tags"], - node_config={"llm_model": llm_model}, - node_name="GetProbableTags" -) - -# Define the state -state = { - "user_input": "What tags contain relevant information for the query?", - "document": [document], - "url": "https://example.com" -} - -# Execute the GetProbableTagsNode -state = get_probable_tags_node.execute(state) - -# Retrieve the probable tags from the state -probable_tags = state["probable_tags"] - -print(f"Probable Tags: {probable_tags}") diff --git a/docs/Nodes/html_analyzer_node.md b/docs/Nodes/html_analyzer_node.md deleted file mode 100644 index e4f4ecf5..00000000 --- a/docs/Nodes/html_analyzer_node.md +++ /dev/null @@ -1,68 +0,0 @@ -# 🌐 HtmlAnalyzerNode Module - -The `HtmlAnalyzerNode` module analyzes HTML code based on the desired information to be extracted and returns a reduced version of the HTML content. The output of this node is primarily intended to enhance the reasoning capabilities of the `GenerateCodeNode`, enabling it to generate more accurate and context-aware code. - -## Classes - -### `HtmlAnalyzerNode` - -`HtmlAnalyzerNode` generates an analysis of the HTML code and returns a reduced version of the HTML, primarily to improve the `GenerateCodeNode`'s reasoning. - -#### Attributes - -- **llm_model**: An instance of a language model client, configured for generating answers. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. -- **additional_info**: Additional context to be included in the HTML analysis. -- **reduction (int)**: The level of reduction to apply to the HTML content. - - 0: Minification only. - - 1: Minification and removal of unnecessary tags and attributes - - 2: Minification, removal of unnecessary tags and attributes, simplification of text content, and removal of the `` tag. - -#### Methods - -- **`__init__(self, input: str, output: List[str], node_config: Optional[dict] = None, node_name: str = "HtmlAnalyzer")`** - - Initializes the `HtmlAnalyzerNode` with necessary configurations. - - **Args**: - - `input (str)`: Boolean expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `node_config (dict, optional)`: Additional configuration for the node. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "HtmlAnalyzer". - -- **`execute(self, state: dict) -> dict`** - - Generates an analysis of the provided HTML code based on the wanted information to be extracted and returns a reduced version of the HTML content. The analysis is primarily used to enhance the reasoning of the `GenerateCodeNode`. - - The information to be extracted can be either the user's original input or, preferably, the refined prompt from the `PromptRefinerNode` for better results. - - **Args**: - - `state (dict)`: The current state of the graph. The input keys will be used to fetch the correct data from the state. - - **Returns**: - - `dict`: The updated state with the following output keys: - - The generated HTML analysis. - - The reduced HTML code based on the specified reduction strength. - - **Raises**: - - `KeyError`: If the input keys are not found in the state, indicating that the necessary information for generating an answer is missing. - -#### Example Usage - -Here is an example of how to use the `HtmlAnalyzerNode` class: - -```python -from html_analyzer_node import HtmlAnalyzerNode - -# Define a html analyzer node -html_analyzer_node = HtmlAnalyzerNode( - input="refined_prompt & original_html", - output=["html_info", "reduced_html"] -) - -# Define the state -state = {"refined_prompt": "What are the attractions in Chioggia?", - "original_html": "..."} - -# Execute the generate answer node -state = html_analyzer_node.execute(state) - -# Retrieve the generated answer from the state -html_info = state["html_info"] -reduced_html = state["reduced_html"] - -print(f"HTML Analysis: {html_info}") -``` \ No newline at end of file diff --git a/docs/Nodes/image_to_text_node.md b/docs/Nodes/image_to_text_node.md deleted file mode 100644 index 18c987b0..00000000 --- a/docs/Nodes/image_to_text_node.md +++ /dev/null @@ -1,59 +0,0 @@ -# 😆 ImageToTextNode Module - -The `ImageToTextNode` module implements a node responsible for retrieving images from a list of URLs and returning a description of the images using an image-to-text model. - -## Classes - -### `ImageToTextNode` - -`ImageToTextNode` is a node responsible for retrieving images from a list of URLs and returning a description of the images using an image-to-text model. - -#### Attributes - -- **llm_model**: An instance of the language model client used for image-to-text conversion. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. - -#### Methods - -- **`__init__(self, input: str, output: List[str], node_config: dict, node_name: str = "ImageToText")`** - - Initializes the `ImageToTextNode` with a language model client and a node name. - - **Args**: - - `input (str)`: Boolean expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `node_config (dict, optional)`: Additional configuration for the node. Defaults to None. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "ImageToText". - -- **`execute(self, state: dict) -> dict`** - - Generate text from an image using an image-to-text model. The method retrieves the image from the list of URLs provided in the state and returns the extracted text. - - **Args**: - - `state (dict)`: The current state of the graph. The input keys will be used to fetch the correct data types from the state. - - **Returns**: - - `dict`: The updated state with the input key containing the text extracted from the image. - -#### Example Usage - -Here is an example of how to use the `ImageToTextNode` class: - -```python -from image_to_text_node import ImageToTextNode - -# Define an ImageToTextNode -image_to_text_node = ImageToTextNode( - input="image_urls", - output=["image_descriptions"], - node_config={"llm_model": llm_model}, - node_name="ImageToText" -) - -# Define the state -state = { - "image_urls": ["https://example.com/image1.jpg", "https://example.com/image2.jpg"], -} - -# Execute the ImageToTextNode -state = image_to_text_node.execute(state) - -# Retrieve the image descriptions from the state -image_descriptions = state["image_descriptions"] - -print(f"Image Descriptions: {image_descriptions}") diff --git a/docs/Nodes/merge_answer_node.md b/docs/Nodes/merge_answer_node.md deleted file mode 100644 index 1dad31dd..00000000 --- a/docs/Nodes/merge_answer_node.md +++ /dev/null @@ -1,60 +0,0 @@ -# 🦌MergeAnswersNode Module - -The `MergeAnswersNode` module implements a node responsible for merging the answers from multiple graph instances into a single answer. - -## Classes - -### `MergeAnswersNode` - -`MergeAnswersNode` is a node responsible for merging the answers from multiple graph instances into a single answer. - -#### Attributes - -- **llm_model**: An instance of a language model client, configured for generating answers. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. - -#### Methods - -- **`__init__(self, input: str, output: List[str], node_config: Optional[dict] = None, node_name: str = "MergeAnswers")`** - - Initializes the `MergeAnswersNode` with a language model client and a node name. - - **Args**: - - `input (str)`: Boolean expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `node_config (dict, optional)`: Additional configuration for the node. Defaults to None. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "MergeAnswers". - -- **`execute(self, state: dict) -> dict`** - - Executes the node's logic to merge the answers from multiple graph instances into a single answer. - - **Args**: - - `state (dict)`: The current state of the graph. The input keys will be used to fetch the correct data from the state. - - **Returns**: - - `dict`: The updated state with the output key containing the generated answer. - -#### Example Usage - -Here is an example of how to use the `MergeAnswersNode` class: - -```python -from merge_answers_node import MergeAnswersNode - -# Define a MergeAnswersNode -merge_answers_node = MergeAnswersNode( - input="user_prompt, website_contents", - output=["merged_answer"], - node_config={"llm_model": llm_model}, - node_name="MergeAnswers" -) - -# Define the state -state = { - "user_prompt": "What are the advantages of renewable energy?", - "website_contents": ["Advantages of renewable energy: ...", "Renewable energy is beneficial because ..."], -} - -# Execute the MergeAnswersNode -state = merge_answers_node.execute(state) - -# Retrieve the merged answer from the state -merged_answer = state["merged_answer"] - -print(f"Merged Answer: {merged_answer}") diff --git a/docs/Nodes/parse_text_node.md b/docs/Nodes/parse_text_node.md deleted file mode 100644 index b75a68b9..00000000 --- a/docs/Nodes/parse_text_node.md +++ /dev/null @@ -1,58 +0,0 @@ -# 🐐 ParseNode Module - -The `ParseNode` module implements a node responsible for parsing HTML content from a document and splitting it into chunks for further processing. - -## Classes - -### `ParseNode` - -`ParseNode` is a node responsible for parsing HTML content from a document and splitting it into chunks for further processing. - -#### Attributes - -- **verbose (bool)**: A flag indicating whether to show print statements during execution. - -#### Methods - -- **`__init__(self, input: str, output: List[str], node_config: Optional[dict] = None, node_name: str = "Parse")`** - - Initializes the `ParseNode` with a node name and other optional configurations. - - **Args**: - - `input (str)`: Boolean expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `node_config (dict, optional)`: Additional configuration for the node. Defaults to None. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "Parse". - -- **`execute(self, state: dict) -> dict`** - - Executes the node's logic to parse the HTML document content and split it into chunks. - - **Args**: - - `state (dict)`: The current state of the graph. The input keys will be used to fetch the correct data from the state. - - **Returns**: - - `dict`: The updated state with the output key containing the parsed content chunks. - -#### Example Usage - -Here is an example of how to use the `ParseNode` class: - -```python -from parse_node import ParseNode - -# Define a ParseNode -parse_node = ParseNode( - input="document", - output=["chunks"], - node_config={"verbose": True, "parse_html": True}, - node_name="Parse" -) - -# Define the state -state = { - "document": ["

Hello, world!

This is a test.

"], -} - -# Execute the ParseNode -state = parse_node.execute(state) - -# Retrieve the parsed content chunks from the state -chunks = state["chunks"] - -print(f"Parsed Chunks: {chunks}") diff --git a/docs/Nodes/prompt_refiner_node.md b/docs/Nodes/prompt_refiner_node.md deleted file mode 100644 index ee6085e3..00000000 --- a/docs/Nodes/prompt_refiner_node.md +++ /dev/null @@ -1,60 +0,0 @@ -# 🐔 PromptRefinerNode Module - -The `PromptRefinerNode` module refines the user's initial prompt using the output schema and any additional provided context. It aims to create a more precise prompt that establishes explicit links between elements in the user's original input and their corresponding representations in the JSON schema. - -## Classes - -### `PromptRefinerNode` - -`PromptRefinerNode` refines the user's prompt using the output schema and any additional provided context. - -#### Attributes - -- **llm_model**: An instance of a language model client, configured for generating answers. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. -- **additional_info**: Additional context to help the language model better understand the request. -- **output_schema**: The output schema to be used for prompt refinement. - -#### Methods - -- **`__init__(self, input: str, output: List[str], node_config: Optional[dict] = None, node_name: str = "PromptRefiner")`** - - Initializes the `PromptRefinerNode` with necessary configurations. - - **Args**: - - `input (str)`: Boolean expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `node_config (dict, optional)`: Additional configuration for the node. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "PromptRefiner". - -- **`execute(self, state: dict) -> dict`** - - Generates a refined prompt using the user's prompt, the schema, and additional context. - - **Args**: - - `state (dict)`: The current state of the graph. The input keys will be used to fetch the correct data from the state. - - **Returns**: - - `dict`: The updated state with the output key containing the generated refined prompt. - - **Raises**: - - `KeyError`: If the input keys are not found in the state, indicating that the necessary information for generating an answer is missing. - -#### Example Usage - -Here is an example of how to use the `PromptRefinerNode` class: - -```python -from prompt_refiner_node import PromptRefinerNode - -# Define a prompt refiner node -prompt_refier_node = PromptRefinerNode( - input="user_prompt", - output=["refined_prompt"] -) - -# Define the state -state = {"user_input": "What are the attractions in Chioggia?"} - -# Execute the generate answer node -state = prompt_refier_node.execute(state) - -# Retrieve the generated answer from the state -refined_prompt = state["refined_prompt"] - -print(f"Refined Prompt: {refined_prompt}") -``` \ No newline at end of file diff --git a/docs/Nodes/rag.md b/docs/Nodes/rag.md deleted file mode 100644 index 8c87e017..00000000 --- a/docs/Nodes/rag.md +++ /dev/null @@ -1,60 +0,0 @@ -# 🐖 RAGNode Module - -The `RAGNode` module implements a node responsible for compressing input tokens and storing the document in a vector database for retrieval. Relevant chunks are stored in the state. - -## Classes - -### `RAGNode` - -`RAGNode` is a node responsible for implementing RAG (Retrieval-Augmented Generation). - -#### Attributes - -- **llm_model**: An instance of a language model client, configured for generating answers. -- **embedder_model**: An instance of an embedding model client, configured for generating embeddings. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. - -#### Methods - -- **`__init__(self, input: str, output: List[str], node_config: Optional[dict] = None, node_name: str = "RAG")`** - - Initializes the `RAGNode` with a node name and other optional configurations. - - **Args**: - - `input (str)`: Boolean expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `node_config (dict, optional)`: Additional configuration for the node. Defaults to None. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "RAG". - -- **`execute(self, state: dict) -> dict`** - - Executes the node's logic to implement RAG (Retrieval-Augmented Generation). The method updates the state with relevant chunks of the document. - - **Args**: - - `state (dict)`: The current state of the graph. The input keys will be used to fetch the correct data from the state. - - **Returns**: - - `dict`: The updated state with the output key containing the relevant chunks of the document. - -#### Example Usage - -Here is an example of how to use the `RAGNode` class: - -```python -from rag_node import RAGNode - -# Define a RAGNode -rag_node = RAGNode( - input="document", - output=["compressed_docs"], - node_config={"verbose": True}, - node_name="RAG" -) - -# Define the state -state = { - "document": ["

Hello, world!

This is a test.

"], -} - -# Execute the RAGNode -state = rag_node.execute(state) - -# Retrieve the relevant chunks of the document from the state -compressed_docs = state["compressed_docs"] - -print(f"Compressed Documents: {compressed_docs}") diff --git a/docs/Nodes/robots_node.md b/docs/Nodes/robots_node.md deleted file mode 100644 index 2f9efddc..00000000 --- a/docs/Nodes/robots_node.md +++ /dev/null @@ -1,60 +0,0 @@ -# 🦂 RobotsNode Module - -The `RobotsNode` module implements a node responsible for checking if a website is scrapeable or not based on the robots.txt file. It uses a language model to determine if the website allows scraping of the provided path. - -## Classes - -### `RobotsNode` - -`RobotsNode` is a node responsible for checking if a website is scrapeable or not based on the robots.txt file. - -#### Attributes - -- **llm_model**: An instance of the language model client used for checking scrapeability. -- **force_scraping (bool)**: A flag indicating whether scraping should be enforced even if disallowed by robots.txt. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. - -#### Methods - -- **`__init__(self, input: str, output: List[str], node_config: Optional[dict] = None, node_name: str = "Robots")`** - - Initializes the `RobotsNode` with a node name and other optional configurations. - - **Args**: - - `input (str)`: Boolean expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `node_config (dict, optional)`: Additional configuration for the node. Defaults to None. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "Robots". - -- **`execute(self, state: dict) -> dict`** - - Checks if a website is scrapeable based on the robots.txt file and updates the state with the scrapeability status. The method constructs a prompt for the language model, submits it, and parses the output to determine if scraping is allowed. - - **Args**: - - `state (dict)`: The current state of the graph. The input keys will be used to fetch the correct data from the state. - - **Returns**: - - `dict`: The updated state with the output key containing the scrapeability status. - -#### Example Usage - -Here is an example of how to use the `RobotsNode` class: - -```python -from robots_node import RobotsNode - -# Define a RobotsNode -robots_node = RobotsNode( - input="source", - output=["is_scrapable"], - node_config={"llm_model": ..., "force_scraping": False, "verbose": True}, - node_name="Robots" -) - -# Define the state -state = { - "source": "https://example.com", -} - -# Execute the RobotsNode -state = robots_node.execute(state) - -# Retrieve the scrapeability status from the state -is_scrapable = state["is_scrapable"] - -print(f"Is Scrapable: {is_scrapable}") diff --git a/docs/Nodes/search_internet_node.md b/docs/Nodes/search_internet_node.md deleted file mode 100644 index 04499902..00000000 --- a/docs/Nodes/search_internet_node.md +++ /dev/null @@ -1,64 +0,0 @@ -# 🦑 SearchInternetNode Module - -The `SearchInternetNode` module implements a node that generates a search query based on the user's input and searches the internet for relevant information. The node constructs a prompt for the language model, submits it, and processes the output to generate a search query. It then uses the search query to find relevant information on the internet and updates the state with the generated answer. - -## Classes - -### `SearchInternetNode` - -`SearchInternetNode` is a node that generates a search query based on the user's input and searches the internet for relevant information. - -#### Attributes - -- **llm_model**: An instance of the language model client used for generating search queries. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. -- **max_results (int)**: Maximum number of search results to retrieve. Defaults to 3. - -#### Methods - -- **`__init__(self, input: str, output: List[str], node_config: Optional[dict] = None, node_name: str = "SearchInternet")`** - - Initializes the `SearchInternetNode` with a node name and other optional configurations. - - **Args**: - - `input (str)`: Boolean expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `node_config (dict, optional)`: Additional configuration for the node. Defaults to None. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "SearchInternet". - -- **`execute(self, state: dict) -> dict`** - - Generates an answer by constructing a prompt from the user's input and the scraped content, querying the language model, and parsing its response. The method updates the state with the generated answer. - - **Args**: - - `state (dict)`: The current state of the graph. The input keys will be used to fetch the correct data types from the state. - - **Returns**: - - `dict`: The updated state with the output key containing the generated answer. - - **Raises**: - - `ValueError`: If the input keys are not found in the state, indicating that the necessary information for generating the answer is missing. - -#### Example Usage - -Here is an example of how to use the `SearchInternetNode` class: - -```python -from search_internet_node import SearchInternetNode - -# Define a SearchInternetNode -search_internet_node = SearchInternetNode( - input="user_prompt", - output=["search_results"], - node_config={"llm_model": ..., "verbose": True, "max_results": 5}, - node_name="SearchInternet" -) - -# Define the state -state = { - "user_prompt": "How does climate change affect biodiversity?", -} - -# Execute the SearchInternetNode -state = search_internet_node.execute(state) - -# Retrieve the search results from the state -search_results = state["search_results"] - -print("Search Results:") -for result in search_results: - print(result) diff --git a/docs/Nodes/search_link_node.md b/docs/Nodes/search_link_node.md deleted file mode 100644 index 3a63d7af..00000000 --- a/docs/Nodes/search_link_node.md +++ /dev/null @@ -1,64 +0,0 @@ -# 🦖 SearchLinkNode Module - -The `SearchLinkNode` module implements a node that can filter out the relevant links in the webpage content for the user prompt. It expects already scraped links on the webpage, making it ideal to use after the `FetchNode`. - -## Classes - -### `SearchLinkNode` - -`SearchLinkNode` is a node responsible for filtering out the relevant links from the webpage content for the user prompt. - -#### Attributes - -- **llm_model**: An instance of the language model client used for generating answers. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. - -#### Methods - -- **`__init__(self, input: str, output: List[str], node_config: Optional[dict] = None, node_name: str = "GenerateLinks")`** - - Initializes the `SearchLinkNode` with a node name and other optional configurations. - - **Args**: - - `input (str)`: Boolean expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `node_config (dict, optional)`: Additional configuration for the node. Defaults to None. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "GenerateLinks". - -- **`execute(self, state: dict) -> dict`** - - Filter out relevant links from the webpage that are relevant to the prompt. Out of the filtered links, also ensure that all links are navigable. The method updates the state with the list of relevant links. - - **Args**: - - `state (dict)`: The current state of the graph. The input keys will be used to fetch the correct data types from the state. - - **Returns**: - - `dict`: The updated state with the output key containing the list of links. - - **Raises**: - - `KeyError`: If the input keys are not found in the state, indicating that the necessary information for generating the answer is missing. - -#### Example Usage - -Here is an example of how to use the `SearchLinkNode` class: - -```python -from search_link_node import SearchLinkNode - -# Define a SearchLinkNode -search_link_node = SearchLinkNode( - input=["user_prompt", "parsed_content_chunks"], - output=["relevant_links"], - node_config={"llm_model": ..., "verbose": True}, - node_name="GenerateLinks" -) - -# Define the state -state = { - "user_prompt": "How does climate change affect biodiversity?", - "parsed_content_chunks": [chunk1, chunk2, ...], -} - -# Execute the SearchLinkNode -state = search_link_node.execute(state) - -# Retrieve the relevant links from the state -relevant_links = state["relevant_links"] - -print("Relevant Links:") -for link in relevant_links: - print(link) diff --git a/docs/Nodes/text_to_speach_node.md b/docs/Nodes/text_to_speach_node.md deleted file mode 100644 index 4db6a5bd..00000000 --- a/docs/Nodes/text_to_speach_node.md +++ /dev/null @@ -1,59 +0,0 @@ -# 🦐 TextToSpeechNode Module - -The `TextToSpeechNode` module converts text to speech using the specified text-to-speech model. - -## Classes - -### `TextToSpeechNode` - -`TextToSpeechNode` is a node responsible for converting text to speech using the specified text-to-speech model. - -#### Attributes - -- **tts_model**: An instance of the text-to-speech model client. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. - -#### Methods - -- **`__init__(self, input: str, output: List[str], node_config: Optional[dict] = None, node_name: str = "TextToSpeech")`** - - Initializes the `TextToSpeechNode` with a node name and other optional configurations. - - **Args**: - - `input (str)`: Boolean expression defining the input keys needed from the state. - - `output (List[str])`: List of output keys to be updated in the state. - - `node_config (dict, optional)`: Additional configuration for the node. Defaults to None. - - `node_name (str, optional)`: The unique identifier name for the node. Defaults to "TextToSpeech". - -- **`execute(self, state: dict) -> dict`** - - Converts text to speech using the specified text-to-speech model. - - **Args**: - - `state (dict)`: The current state of the graph. The input keys will be used to fetch the correct data types from the state. - - **Returns**: - - `dict`: The updated state with the output key containing the audio generated from the text. - - **Raises**: - - `KeyError`: If the input keys are not found in the state, indicating that the necessary information for generating the audio is missing. - -#### Example Usage - -Here is an example of how to use the `TextToSpeechNode` class: - -```python -from text_to_speech_node import TextToSpeechNode - -# Define a TextToSpeechNode -text_to_speech_node = TextToSpeechNode( - input=["text_to_translate"], - output=["audio"], - node_config={"tts_model": ..., "verbose": True}, - node_name="TextToSpeech" -) - -# Define the state -state = { - "text_to_translate": "Hello, how are you?", -} - -# Execute the TextToSpeechNode -state = text_to_speech_node.execute(state) - -# Retrieve the generated audio from the state -audio = state["audio"] diff --git a/docs/Utils/_category_.json b/docs/Utils/_category_.json deleted file mode 100644 index 0457db48..00000000 --- a/docs/Utils/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Utils", - "position": 9, - "link": { - "type": "generated-index", - "description": "Description of the utils folder" - } -} \ No newline at end of file diff --git a/docs/Utils/convert_to_csv.md b/docs/Utils/convert_to_csv.md deleted file mode 100644 index 00f3bccb..00000000 --- a/docs/Utils/convert_to_csv.md +++ /dev/null @@ -1,102 +0,0 @@ -# 🍷 convert_to_csv - -## Introduction -The convert_to_csv function takes a dictionary containing data, a filename, and a directory position, and saves the data in CSV format at the specified location. - -## Implementation -```python -""" -Module that given a filename and a position saves the file in the csv format -""" -import os -import sys -import pandas as pd - - -def convert_to_csv(data: dict, filename: str, position: str = None): - """ - Converts a dictionary to a CSV file and saves it. - - Args: - data (dict): Data to be converted to CSV. - position (str): Optional path where the file should be saved. If not provided, - the directory of the caller script will be used. - - Raises: - FileNotFoundError: If the specified directory does not exist. - PermissionError: If the program lacks write permission for the directory. - TypeError: If the input data is not a dictionary. - Exception: For other potential errors during DataFrame creation or CSV saving. - """ - - if ".csv" in filename: - filename = filename.replace(".csv", "") # Remove .csv extension - - # Get the directory of the caller script if position is not provided - if position is None: - caller_dir = os.path.dirname(os.path.abspath(sys.argv[0])) - position = caller_dir - - try: - if not isinstance(data, dict): - raise TypeError("Input data must be a dictionary") - - os.makedirs(position, exist_ok=True) # Create directory if needed - - df = pd.DataFrame.from_dict(data, orient='index') - df.to_csv(os.path.join(position, f"{filename}.csv"), index=False) - - except FileNotFoundError as fnfe: - raise FileNotFoundError( - f"The specified directory '{position}' does not exist.") from fnfe - except PermissionError as pe: - raise PermissionError( - f"You don't have permission to write to '{position}'.") from pe - except Exception as e: - raise e # Re-raise other potential errors - -``` - -## Example -```python -""" -Teest for convert_to_csv -""" -import os -from scrapegraphai.utils.convert_to_csv import convert_to_csv - - -def main(): - """ - Example usage of the convert_to_csv function. - """ - # Example data - data = { - 'Name': ['John', 'Alice', 'Bob'], - 'Age': [30, 25, 35], - 'City': ['New York', 'San Francisco', 'Seattle'] - } - - # Example filename and position - filename = "example_data" - position = "./output" - - try: - # Convert data to CSV and save - convert_to_csv(data, filename, position) - print( - f"Data saved successfully to {os.path.join(position, filename)}.csv") - except ValueError as ve: - print(f"ValueError: {ve}") - except FileNotFoundError as fnfe: - print(f"FileNotFoundError: {fnfe}") - except PermissionError as pe: - print(f"PermissionError: {pe}") - except Exception as e: - print(f"An unexpected error occurred: {e}") - - -if __name__ == "__main__": - main() - -``` \ No newline at end of file diff --git a/docs/Utils/convert_to_j.md b/docs/Utils/convert_to_j.md deleted file mode 100644 index f38b9be6..00000000 --- a/docs/Utils/convert_to_j.md +++ /dev/null @@ -1,82 +0,0 @@ -# 🤖 convert_to_json -## Introduction -The convert_to_json function takes a dictionary containing data, a filename, and a directory position, and saves the data in JSON format at the specified location. -## Implementation -```python -""" -Convert to json module -""" -import json -import os -import sys - - -def convert_to_json(data: dict, filename: str, position: str = None): - """ - Convert data to JSON format and save it to a file. - - Args: - data (dict): Data to save. - filename (str): Name of the file to save without .json extension. - position (str): Directory where the file should be saved. If None, - the directory of the caller script will be used. - - Raises: - ValueError: If filename contains '.json'. - FileNotFoundError: If the specified directory does not exist. - PermissionError: If the program does not have permission to write to the directory. - """ - if ".json" in filename: - filename = filename.replace(".json", "") # Remove .csv extension - - # Get the directory of the caller script - if position is None: - # Get directory of the main script - caller_dir = os.path.dirname(os.path.abspath(sys.argv[0])) - position = caller_dir - - try: - os.makedirs(position, exist_ok=True) - with open(os.path.join(position, f"{filename}.json"), "w", encoding="utf-8") as f: - f.write(json.dumps(data)) - except FileNotFoundError as fnfe: - raise FileNotFoundError( - f"The specified directory '{position}' does not exist.") from fnfe - except PermissionError as pe: - raise PermissionError( - f"You don't have permission to write to '{position}'.") from pe - -``` - -## Example -```python -""" -Example of using convert_to_json function to save data in JSON format. -""" -import os -from scrapegraphai.utils.convert_to_json import convert_to_json - -# Data to save in JSON format -data_to_save = { - "name": "John Doe", - "age": 30, - "city": "New York" -} - -FILENAME = "example_data" -DIRECTORY = "data_output" - -try: - convert_to_json(data_to_save, FILENAME, DIRECTORY) - print( - f"Data has been successfully saved to {os.path.join(DIRECTORY, FILENAME)}.json") -except ValueError as value_error: - print(value_error) -except FileNotFoundError as file_not_found_error: - print(file_not_found_error) -except PermissionError as permission_error: - print(permission_error) -except Exception as exception: - print(f"An error occurred: {exception}") - -``` \ No newline at end of file diff --git a/docs/Utils/parse_state_key.md b/docs/Utils/parse_state_key.md deleted file mode 100644 index cff8921c..00000000 --- a/docs/Utils/parse_state_key.md +++ /dev/null @@ -1,106 +0,0 @@ -# 📡 Parse state -Function for parsing the state of the key - -## Implementation -```python -""" -Parse_state_key module -""" -import re - - -def parse_expression(expression, state: dict): - """ - Function for parsing the expressions - Args: - state (dict): state to elaborate - """ - # Check for empty expression - if not expression: - raise ValueError("Empty expression.") - - # Check for adjacent state keys without an operator between them - pattern = r'\b(' + '|'.join(re.escape(key) for key in state.keys()) + \ - r')(\b\s*\b)(' + '|'.join(re.escape(key) - for key in state.keys()) + r')\b' - if re.search(pattern, expression): - raise ValueError( - "Adjacent state keys found without an operator between them.") - - # Remove spaces - expression = expression.replace(" ", "") - - # Check for operators with empty adjacent tokens or at the start/end - if expression[0] in '&|' or expression[-1] in '&|' or \ - '&&' in expression or '||' in expression or \ - '&|' in expression or '|&' in expression: - - raise ValueError("Invalid operator usage.") - - # Check for balanced parentheses and valid operator placement - open_parentheses = close_parentheses = 0 - for i, char in enumerate(expression): - if char == '(': - open_parentheses += 1 - elif char == ')': - close_parentheses += 1 - # Check for invalid operator sequences - if char in "&|" and i + 1 < len(expression) and expression[i + 1] in "&|": - raise ValueError( - "Invalid operator placement: operators cannot be adjacent.") - - # Check for missing or balanced parentheses - if open_parentheses != close_parentheses: - raise ValueError("Missing or unbalanced parentheses in expression.") - - # Helper function to evaluate an expression without parentheses - def evaluate_simple_expression(exp): - # Split the expression by the OR operator and process each segment - for or_segment in exp.split('|'): - # Check if all elements in an AND segment are in state - and_segment = or_segment.split('&') - if all(elem.strip() in state for elem in and_segment): - return [elem.strip() for elem in and_segment if elem.strip() in state] - return [] - - # Helper function to evaluate expressions with parentheses - def evaluate_expression(expression): - while '(' in expression: - start = expression.rfind('(') - end = expression.find(')', start) - sub_exp = expression[start + 1:end] - # Replace the evaluated part with a placeholder and then evaluate it - sub_result = evaluate_simple_expression(sub_exp) - # For simplicity in handling, join sub-results with OR to reprocess them later - expression = expression[:start] + \ - '|'.join(sub_result) + expression[end+1:] - return evaluate_simple_expression(expression) - - temp_result = evaluate_expression(expression) - - if not temp_result: - raise ValueError("No state keys matched the expression.") - - # Remove redundant state keys from the result, without changing their order - final_result = [] - for key in temp_result: - if key not in final_result: - final_result.append(key) - - return final_result - - -EXPRESSION = "user_input & (relevant_chunks | parsed_document | document)" -state = { - "user_input": None, - "document": None, - "parsed_document": None, - "relevant_chunks": None, -} - -try: - result = parse_expression(EXPRESSION, state) - print("Matched keys:", result) -except ValueError as e: - print("Error:", e) -``` \ No newline at end of file diff --git a/docs/Utils/prettify_info.md b/docs/Utils/prettify_info.md deleted file mode 100644 index 2715a301..00000000 --- a/docs/Utils/prettify_info.md +++ /dev/null @@ -1,94 +0,0 @@ -# 🌧️ prettify_exec_info - -## Introduction -Function that gives info about cost and time about the scraper call - -## Implementation - -```python -""" -Prettify the execution information of the graph. -""" - -import pandas as pd - - -def prettify_exec_info(complete_result: dict) -> pd.DataFrame: - """ - Transform the execution information of the graph into a DataFrame for better visualization. - - Args: - - complete_result (dict): The complete execution information of the graph. - - Returns: - - pd.DataFrame: The execution information of the graph in a DataFrame. - """ - - nodes_info = complete_result['nodes_info'] - total_info = { - 'total_exec_time': complete_result['total_exec_time'], - 'total_model_info': complete_result['total_model_info'] - } - - # Convert node-specific information to DataFrame - flat_data = [] - for node_name, node_info in nodes_info.items(): - flat_data.append({ - 'Node': node_name, - 'Execution Time': node_info['exec_time'], - # Unpack the model_info dict into the row - **node_info['model_info'] - }) - - df_nodes = pd.DataFrame(flat_data) - - # Add a row for the total execution time and total model info - total_row = { - 'Node': 'Total', - 'Execution Time': total_info['total_exec_time'], - # Unpack the total_model_info dict into the row - **total_info['total_model_info'] - } - df_total = pd.DataFrame([total_row]) - - # Combine the nodes DataFrame with the total info DataFrame - df_combined_with_total = pd.concat([df_nodes, df_total], ignore_index=True) - return df_combined_with_total -``` - -## Example - -```python - -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -graph_config = { - "llm": { - "model": "ollama/mistral", - "temperature": 1, - "format": "json", # Ollama needs the format to be specified explicitly - "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "embeddings": { - "model": "ollama/nomic-embed-text", - "temperature": 0, - "base_url": "http://localhost:11434", # set ollama URL arbitrarily - } -} - - - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the news with their description.", - source="https://perinim.github.io/projects", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -``` diff --git a/docs/Utils/r.md b/docs/Utils/r.md deleted file mode 100644 index 350f0e3a..00000000 --- a/docs/Utils/r.md +++ /dev/null @@ -1,71 +0,0 @@ -# 🚣 Remover - -## Introduction -The remover is a module that given an html string it removes all the tags that are not necessary - -## Implementation -```python -""" -Module for minimizing the code -""" -from bs4 import BeautifulSoup -from minify_html import minify - - -def remover(html_content: str) -> str: - """ - This function processes HTML content, removes unnecessary tags - (including style tags), minifies the HTML, and retrieves the - title and body content. - - Parameters: - html_content (str): The HTML content to parse - - Returns: - str: The parsed title followed by the minified body content - """ - - soup = BeautifulSoup(html_content, 'html.parser') - - # Title Extraction - title_tag = soup.find('title') - title = title_tag.get_text() if title_tag else "" - - # Script and Style Tag Removal - for tag in soup.find_all(['script', 'style']): - tag.extract() - - # Body Extraction (if it exists) - body_content = soup.find('body') - if body_content: - # Minify the HTML within the body tag - minimized_body = minify(str(body_content)) - return "Title: " + title + ", Body: " + minimized_body - - return "Title: " + title + ", Body: No body content found" -``` -## Example -```python -""" -Example of the remover method -""" -from scrapegraphai.utils.remover import remover - -HTML_CONTENT = """ - - - Test Page - - -

This is a Test

-

Hello, World!

- - - -""" - -parsed_content = remover(HTML_CONTENT) - -print(parsed_content) - -``` \ No newline at end of file diff --git a/docs/Utils/save.md b/docs/Utils/save.md deleted file mode 100644 index 30db8efd..00000000 --- a/docs/Utils/save.md +++ /dev/null @@ -1,43 +0,0 @@ -# 🏆 save_audio_from_bytes - -## Introduction -This function given a filename, and a path it saves the audio file - -## Implementation -```python -""" -This utility function saves the byte response as an audio file. -""" - -from pathlib import Path - - -def save_audio_from_bytes(byte_response, output_path): - """ - Saves the byte response as an audio file. - - Args: - byte_response (bytes): The byte response containing the generated speech. - output_path (str or Path): The file path where the generated speech should be saved. - """ - if not isinstance(output_path, Path): - output_path = Path(output_path) - - with open(output_path, 'wb') as audio_file: - audio_file.write(byte_response) -``` - -## Example -```python -""" -Example for th e file save_audio_from_bytes -""" -from scrapegraphai.utils.save_audio_from_bytes import save_audio_from_bytes - -BYTE_RESPONSE = b'\x12\x34\x56\x78\x90' - -OUTPUT_PATH = "generated_speech.wav" - -save_audio_from_bytes(BYTE_RESPONSE, OUTPUT_PATH) - -``` \ No newline at end of file diff --git a/docs/Utils/saveaudio.md b/docs/Utils/saveaudio.md deleted file mode 100644 index 2fe57f8a..00000000 --- a/docs/Utils/saveaudio.md +++ /dev/null @@ -1,26 +0,0 @@ -# 🔈 Save audio -Function for saving audio - -## Implementation -```python -""" -This utility function saves the byte response as an audio file. -""" -from pathlib import Path -from typing import Union - - -def save_audio_from_bytes(byte_response: bytes, output_path: Union[str, Path]) -> None: - """ - Saves the byte response as an audio file. - - Args: - byte_response (bytes): The byte response containing the generated speech. - output_path (str or Path): The file path where the generated speech should be saved. - """ - if not isinstance(output_path, Path): - output_path = Path(output_path) - - with open(output_path, 'wb') as audio_file: - audio_file.write(byte_response) -``` \ No newline at end of file diff --git a/docs/Utils/search_function.md b/docs/Utils/search_function.md deleted file mode 100644 index 8b03348a..00000000 --- a/docs/Utils/search_function.md +++ /dev/null @@ -1,52 +0,0 @@ -# 🪮 Search function -## Introduction -Function for searching in the internet - -## Implementation - -```python -""" -Module for making the request on the web -""" -import re -from typing import List -from langchain_community.tools import DuckDuckGoSearchResults -from googlesearch import search - - -def search_on_web(query: str, search_engine: str = "Google", max_results: int = 10) -> List[str]: - """ - Function that given a query it finds it on the intenet - Args: - query (str): query to search on internet - search_engine (str, optional): type of browser, it could be DuckDuckGo or Google, - default: Google - max_results (int, optional): maximum number of results - - Returns: - List[str]: List of strings of web link - """ - - if search_engine == "Google": - res = [] - - for url in search(query, stop=max_results): - res.append(url) - return res - elif search_engine == "DuckDuckGo": - research = DuckDuckGoSearchResults(max_results=max_results) - res = research.run(query) - - links = re.findall(r'https?://[^\s,\]]+', res) - - return links - raise ValueError( - "The only search engines avaiable are DuckDuckGo or Google") -``` - -## Example of usage -```python -from scrapegraphai.utils import search_on_web - -res = search_on_web("regions of Italy") -``` \ No newline at end of file diff --git a/docs/Utils/token_calculator.md b/docs/Utils/token_calculator.md deleted file mode 100644 index 686c8b23..00000000 --- a/docs/Utils/token_calculator.md +++ /dev/null @@ -1,55 +0,0 @@ -# 🇹🇰 Token calculator -The token calculator class is a class that implements the token for the link to scrape. -Given a link it retrieves a a list of chunks given the name of the model. - -## Implementation -```python -""" -Module for truncatinh in chunks the messages -""" -from typing import List -import tiktoken -from ..helpers.models_tokens import models_tokens - - -def truncate_text_tokens(text: str, model: str, encoding_name: str) -> List[str]: - """ - It creates a list of strings to create max dimension tokenizable elements - - Args: - text (str): The input text to be truncated into tokenizable elements. - model (str): The name of the language model to be used. - encoding_name (str): The name of the encoding to be used (default: EMBEDDING_ENCODING). - - Returns: - List[str]: A list of tokenizable elements created from the input text. - """ - - encoding = tiktoken.get_encoding(encoding_name) - max_tokens = models_tokens[model] - 500 - encoded_text = encoding.encode(text) - - chunks = [encoded_text[i:i + max_tokens] - for i in range(0, len(encoded_text), max_tokens)] - - result = [encoding.decode(chunk) for chunk in chunks] - - return result -``` -## Example -```python -""" -Example for calclating the tokenizer -""" -from scrapegraphai.utils.token_calculator import truncate_text_tokens -INPUT_TEXT = "http://nba.com" - -MODEL_NAME = "gpt-3.5-turbo" -ENCODING_NAME = "EMBEDDING_ENCODING" - -tokenized_chunks = truncate_text_tokens(INPUT_TEXT, MODEL_NAME, ENCODING_NAME) - -for i, chunk in enumerate(tokenized_chunks): - print(f"Chunk {i+1}: {chunk}") -``` - diff --git a/docs/core/_category_.json b/docs/core/_category_.json deleted file mode 100644 index dd5c6570..00000000 --- a/docs/core/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Core Components", - "position": 2, - "link": { - "type": "generated-index", - "description": "Documentation for the core components of Scrapegraph-ai, including Builders, Graphs, and Nodes." - } -} diff --git a/docs/getting_started/examples.md b/docs/getting_started/examples.md new file mode 100644 index 00000000..ee6a2cd9 --- /dev/null +++ b/docs/getting_started/examples.md @@ -0,0 +1,87 @@ +--- +sidebar_position: 2 +--- + +# Examples + +Let's suppose you want to scrape a website to get a list of projects with their descriptions. +You can use the `SmartScraperGraph` class to do that. +The following examples show how to use the `SmartScraperGraph` class with OpenAI models and local models. + +## OpenAI models + +```python +import os +from dotenv import load_dotenv +from scrapegraphai.graphs import SmartScraperGraph +from scrapegraphai.utils import prettify_exec_info + +load_dotenv() + +openai_key = os.getenv("OPENAI_APIKEY") + +graph_config = { + "llm": { + "api_key": openai_key, + "model": "openai/gpt-4o", + }, +} + +# ************************************************ +# Create the SmartScraperGraph instance and run it +# ************************************************ + +smart_scraper_graph = SmartScraperGraph( + prompt="List me all the projects with their description.", + # also accepts a string with the already downloaded HTML code + source="https://perinim.github.io/projects/", + config=graph_config +) + +result = smart_scraper_graph.run() +print(result) +``` + +## Local models + +Remember to have installed Ollama on your PC [ollama](https://ollama.com/) +Remember to pull the right model for LLM and for the embeddings, like: + +```bash +ollama pull llama3 +ollama pull nomic-embed-text +ollama pull mistral +``` + +After that, you can run the following code, using only your machine resources brum brum brum: + +```python +from scrapegraphai.graphs import SmartScraperGraph +from scrapegraphai.utils import prettify_exec_info + +graph_config = { + "llm": { + "model": "ollama/mistral", + "temperature": 1, + "format": "json", # Ollama needs the format to be specified explicitly + "model_tokens": 2000, # depending on the model set context length + "base_url": "http://localhost:11434", # set ollama URL of the local host (YOU CAN CHANGE IT, if you have a different endpoint + } +} + +# ************************************************ +# Create the SmartScraperGraph instance and run it +# ************************************************ + +smart_scraper_graph = SmartScraperGraph( + prompt="List me all the projects with their description.", + # also accepts a string with the already downloaded HTML code + source="https://perinim.github.io/projects", + config=graph_config +) + +result = smart_scraper_graph.run() +print(result) +``` + +To find out how you can customize the `graph_config` dictionary, by using different LLM and adding new parameters, check the `Scrapers` section! \ No newline at end of file diff --git a/docs/getting_started/installation.md b/docs/getting_started/installation.md new file mode 100644 index 00000000..6e3f0ea8 --- /dev/null +++ b/docs/getting_started/installation.md @@ -0,0 +1,47 @@ +--- +sidebar_position: 1 +--- + +# Installation + +In the following sections I will guide you through the installation process of the required components +for this project. + +## Prerequisites + +- [Python >=3.9](https://www.python.org/downloads/) +- [pip](https://pip.pypa.io/en/stable/getting-started/) +- [Ollama](https://ollama.com/) (optional for local models) + +## Install the library + +The library is available on PyPI, so it can be installed using the following command: + +```bash +pip install scrapegraphai +``` + +:::important +It is highly recommended to install the library in a virtual environment (conda, venv, etc.) +::: + +If you clone the repository, it is recommended to use a package manager like [rye](https://rye.astral.sh/). +To install the library using rye, you can run the following command: + +```bash +rye pin 3.10 +rye sync +rye build +``` + +:::caution +**Rye** must be installed first by following the instructions on the [official website](https://rye.astral.sh/). +::: + +## Additionally on Windows when using WSL + +If you are using Windows Subsystem for Linux (WSL) and you are facing issues with the installation of the library, you might need to install the following packages: + +```bash +sudo apt-get -y install libnss3 libnspr4 libgbm1 libasound2 +``` \ No newline at end of file diff --git a/docs/intro.md b/docs/intro.md index c4bcc19e..f223e70f 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -1,210 +1,162 @@ -# 🕷️ ScrapeGraphAI: You Only Scrape Once -[English](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/README.md) | [中文](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/docs/chinese.md) | [日本語](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/docs/japanese.md) -| [한국어](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/docs/korean.md) -| [Русский](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/docs/russian.md) | [Türkçe](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/docs/turkish.md) - - -[![Downloads](https://img.shields.io/pepy/dt/scrapegraphai?style=for-the-badge)](https://pepy.tech/project/scrapegraphai) -[![linting: pylint](https://img.shields.io/badge/linting-pylint-yellowgreen?style=for-the-badge)](https://github.com/pylint-dev/pylint) -[![Pylint](https://img.shields.io/github/actions/workflow/status/VinciGit00/Scrapegraph-ai/code-quality.yml?label=Pylint&logo=github&style=for-the-badge)](https://github.com/VinciGit00/Scrapegraph-ai/actions/workflows/code-quality.yml) -[![CodeQL](https://img.shields.io/github/actions/workflow/status/VinciGit00/Scrapegraph-ai/codeql.yml?label=CodeQL&logo=github&style=for-the-badge)](https://github.com/VinciGit00/Scrapegraph-ai/actions/workflows/codeql.yml) -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT) -[![](https://dcbadge.vercel.app/api/server/gkxQDAjfeX)](https://discord.gg/gkxQDAjfeX) - -

-VinciGit00%2FScrapegraph-ai | Trendshift -

- -[ScrapeGraphAI](https://scrapegraphai.com) is a *web scraping* python library that uses LLM and direct graph logic to create scraping pipelines for websites and local documents (XML, HTML, JSON, Markdown, etc.). - -Just say which information you want to extract and the library will do it for you! - -

- ScrapeGraphAI Hero -

+--- +sidebar_position: 1 +--- + +# Overview + +# ScrapeGraphAI + +ScrapeGraphAI is an **open-source** Python library designed to revolutionize **scraping** tools. +In today's data-intensive digital landscape, this library stands out by integrating **Large Language Models** (LLMs) +and modular **graph-based** pipelines to automate the scraping of data from various sources (e.g., websites, local files etc.). + +Simply specify the information you need to extract, and ScrapeGraphAI handles the rest, providing a more **flexible** and **low-maintenance** solution compared to traditional scraping tools. + +## Why ScrapegraphAI? + +Traditional web scraping tools often rely on fixed patterns or manual configuration to extract data from web pages. +ScrapegraphAI, leveraging the power of LLMs, adapts to changes in website structures, reducing the need for constant developer intervention. +This flexibility ensures that scrapers remain functional even when website layouts change. + +We support many LLMs including **GPT, Gemini, Groq, Azure, Hugging Face** etc. +as well as local models which can run on your machine using **Ollama**. + +## AI Models and Token Limits + +ScrapGraphAI supports a wide range of AI models from various providers. Each model has a specific token limit, which is important to consider when designing your scraping pipelines. Here's an overview of the supported models and their token limits: + +### OpenAI Models +- GPT-3.5 Turbo (16,385 tokens) +- GPT-3.5 (4,096 tokens) +- GPT-3.5 Turbo Instruct (4,096 tokens) +- GPT-4 Turbo Preview (128,000 tokens) +- GPT-4 Vision Preview (128,000 tokens) +- GPT-4 (8,192 tokens) +- GPT-4 32k (32,768 tokens) +- GPT-4o (128,000 tokens) +- O1 Preview (128,000 tokens) +- O1 Mini (128,000 tokens) +### Azure OpenAI Models +- GPT-3.5 Turbo (16,385 tokens) +- GPT-3.5 (4,096 tokens) +- GPT-4 Turbo Preview (128,000 tokens) +- GPT-4 (8,192 tokens) +- GPT-4 32k (32,768 tokens) +- GPT-4o (128,000 tokens) +- O1 Preview (128,000 tokens) +- O1 Mini (128,000 tokens) + +### Google AI Models +- Gemini Pro (128,000 tokens) +- Gemini 1.5 Flash (128,000 tokens) +- Gemini 1.5 Pro (128,000 tokens) +- Gemini 1.0 Pro (128,000 tokens) -## 🚀 Quick install +### Anthropic Models +- Claude Instant (100,000 tokens) +- Claude 2 (9,000 tokens) +- Claude 2.1 (200,000 tokens) +- Claude 3 (200,000 tokens) +- Claude 3.5 (200,000 tokens) +- Claude 3 Opus (200,000 tokens) +- Claude 3 Sonnet (200,000 tokens) +- Claude 3 Haiku (200,000 tokens) -The reference page for Scrapegraph-ai is available on the official page of PyPI: [pypi](https://pypi.org/project/scrapegraphai/). +### Mistral AI Models +- Mistral Large Latest (128,000 tokens) +- Open Mistral Nemo (128,000 tokens) +- Codestral Latest (32,000 tokens) +- Open Mistral 7B (32,000 tokens) +- Open Mixtral 8x7B (32,000 tokens) +- Open Mixtral 8x22B (64,000 tokens) +- Open Codestral Mamba (256,000 tokens) -```bash -pip install scrapegraphai +### Ollama Models +- Command-R (12,800 tokens) +- CodeLlama (16,000 tokens) +- DBRX (32,768 tokens) +- DeepSeek Coder 33B (16,000 tokens) +- Llama2 Series (4,096 tokens) +- Llama3 Series (8,192-128,000 tokens) +- Mistral Models (32,000-128,000 tokens) +- Mixtral 8x22B Instruct (65,536 tokens) +- Phi3 Series (12,800-128,000 tokens) +- Qwen Series (32,000 tokens) -# IMPORTANT (for fetching websites content) -playwright install -``` +### Hugging Face Models +- Grok-1 (8,192 tokens) +- Meta Llama 3 Series (8,192 tokens) +- Google Gemma Series (8,192 tokens) +- Microsoft Phi Series (2,048-131,072 tokens) +- GPT-2 Series (1,024 tokens) +- DeepSeek V2 Series (131,072 tokens) -**Note**: it is recommended to install the library in a virtual environment to avoid conflicts with other libraries 🐱 +### Bedrock Models +- Claude 3 Series (200,000 tokens) +- Llama2 & Llama3 Series (4,096-8,192 tokens) +- Mistral Series (32,768 tokens) +- Titan Embed Text (8,000 tokens) +- Cohere Embed (512 tokens) +### Fireworks Models +- Llama V2 7B (4,096 tokens) +- Mixtral 8x7B Instruct (4,096 tokens) +- Llama 3.1 Series (131,072 tokens) +- Mixtral MoE Series (65,536 tokens) -## 💻 Usage -There are multiple standard scraping pipelines that can be used to extract information from a website (or local file). +For a complete and up-to-date list of supported models and their token limits, please refer to the API documentation. -The most common one is the `SmartScraperGraph`, which extracts information from a single page given a user prompt and a source URL. +Understanding token limits is crucial for optimizing your scraping tasks. Larger token limits allow for processing more text in a single API call, which can be beneficial for scraping lengthy web pages or documents. +## Library Diagram -```python -from scrapegraphai.graphs import SmartScraperGraph +With ScrapegraphAI you can use many already implemented scraping pipelines or create your own. + +The library follows a modular, graph-based architecture that enables flexible and efficient data extraction pipelines. + +## FAQ + +1. **What is ScrapeGraphAI?** + + ScrapeGraphAI is an open-source python library that uses large language models (LLMs) and graph logic to automate the creation of scraping pipelines for websites and various document types. + +2. **How does ScrapeGraphAI differ from traditional scraping tools?** + + Traditional scraping tools rely on fixed patterns and manual configurations, whereas ScrapeGraphAI adapts to website structure changes using LLMs, reducing the need for constant developer intervention. + +3. **Which LLMs are supported by ScrapeGraphAI?** + + ScrapeGraphAI supports several LLMs, including GPT, Gemini, Groq, Azure, Hugging Face, and local models that can run on your machine using Ollama. + +4. **Can ScrapeGraphAI handle different document formats?** + + Yes, ScrapeGraphAI can scrape information from various document formats such as XML, HTML, JSON, and more. + +5. **I get an empty or incorrect output when scraping a website. What should I do?** -# Define the configuration for the scraping pipeline -graph_config = { - "llm": { - "api_key": "YOUR_OPENAI_API_KEY", - "model": "openai/gpt-4o-mini", - }, - "verbose": True, - "headless": False, -} - -# Create the SmartScraperGraph instance -smart_scraper_graph = SmartScraperGraph( - prompt="Extract useful information from the webpage, including a description of what the company does, founders and social media links", - source="https://scrapegraphai.com/", - config=graph_config -) + There are several reasons behind this issue, but for most cases, you can try the following: -# Run the pipeline -result = smart_scraper_graph.run() + - Set the `headless` parameter to `False` in the graph_config. Some javascript-heavy websites might require it. + - Check your internet connection. Low speed or unstable connection can cause the HTML to not load properly. + - Try using a proxy server to mask your IP address. Check out the Proxy section for more information on how to configure proxy settings. + - Use a different LLM model. Some models might perform better on certain websites than others. + - Set the `verbose` parameter to `True` in the graph_config to see more detailed logs. + - Visualize the pipeline graphically using Burr. + + If the issue persists, please report it on the GitHub repository. -import json -print(json.dumps(result, indent=4)) -``` +6. **How does ScrapeGraphAI handle the context window limit of LLMs?** -The output will be a dictionary like the following: + By splitting big websites/documents into chunks with overlaps and applying compression techniques to reduce the number of tokens. If multiple chunks are present, we will have multiple answers to the user prompt, and therefore, we merge them together in the last step of the scraping pipeline. -```python -{ - "description": "ScrapeGraphAI transforms websites into clean, organized data for AI agents and data analytics. It offers an AI-powered API for effortless and cost-effective data extraction.", - "founders": [ - { - "name": "Marco Perini", - "role": "Founder & Technical Lead", - "linkedin": "https://www.linkedin.com/in/perinim/" - }, - { - "name": "Marco Vinciguerra", - "role": "Founder & Software Engineer", - "linkedin": "https://www.linkedin.com/in/marco-vinciguerra-7ba365242/" - }, - { - "name": "Lorenzo Padoan", - "role": "Founder & Product Engineer", - "linkedin": "https://www.linkedin.com/in/lorenzo-padoan-4521a2154/" - } - ], - "social_media_links": { - "linkedin": "https://www.linkedin.com/company/101881123", - "twitter": "https://x.com/scrapegraphai", - "github": "https://github.com/ScrapeGraphAI/Scrapegraph-ai" - } -} -``` -There are other pipelines that can be used to extract information from multiple pages, generate Python scripts, or even generate audio files. +7. **How can I contribute to ScrapeGraphAI?** -| Pipeline Name | Description | -|-------------------------|------------------------------------------------------------------------------------------------------------------| -| SmartScraperGraph | Single-page scraper that only needs a user prompt and an input source. | -| SearchGraph | Multi-page scraper that extracts information from the top n search results of a search engine. | -| SpeechGraph | Single-page scraper that extracts information from a website and generates an audio file. | -| ScriptCreatorGraph | Single-page scraper that extracts information from a website and generates a Python script. | -| SmartScraperMultiGraph | Multi-page scraper that extracts information from multiple pages given a single prompt and a list of sources. | -| ScriptCreatorMultiGraph | Multi-page scraper that generates a Python script for extracting information from multiple pages and sources. | + You can contribute to ScrapeGraphAI by submitting bug reports, feature requests, or pull requests on the GitHub repository. Join our [Discord](https://discord.gg/uJN7TYcpNa) community and follow us on social media! -For each of these graphs there is the multi version. It allows to make calls of the LLM in parallel. +## Sponsors -It is possible to use different LLM through APIs, such as **OpenAI**, **Groq**, **Azure** and **Gemini**, or local models using **Ollama**. - -Remember to have [Ollama](https://ollama.com/) installed and download the models using the **ollama pull** command, if you want to use local models. - - -## 📖 Documentation - -[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1sEZBonBMGP44CtO6GQTwAlL0BGJXjtfd?usp=sharing) - -The documentation for ScrapeGraphAI can be found [here](https://scrapegraph-ai.readthedocs.io/en/latest/). -Check out also the Docusaurus [here](https://docs-oss.scrapegraphai.com/). - -## 🔗 ScrapeGraph API & SDKs -If you are looking for a quick solution to integrate ScrapeGraph in your system, check out our powerful API [here!](https://dashboard.scrapegraphai.com/login) - -

- ScrapeGraph API Banner -

- -We offer SDKs in both Python and Node.js, making it easy to integrate into your projects. Check them out below: - -| SDK | Language | GitHub Link | -|-----------|----------|-----------------------------------------------------------------------------| -| Python SDK | Python | [scrapegraph-py](https://github.com/ScrapeGraphAI/scrapegraph-sdk/tree/main/scrapegraph-py) | -| Node.js SDK | Node.js | [scrapegraph-js](https://github.com/ScrapeGraphAI/scrapegraph-sdk/tree/main/scrapegraph-js) | - -The Official API Documentation can be found [here](https://docs.scrapegraphai.com/). - -## 🏆 Sponsors -
- - Browserbase - - - SerpAPI - - - Stats - - - Stats - -
- -## 🤝 Contributing - -Feel free to contribute and join our Discord server to discuss with us improvements and give us suggestions! - -Please see the [contributing guidelines](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/CONTRIBUTING.md). - -[![My Skills](https://skillicons.dev/icons?i=discord)](https://discord.gg/uJN7TYcpNa) -[![My Skills](https://skillicons.dev/icons?i=linkedin)](https://www.linkedin.com/company/scrapegraphai/) -[![My Skills](https://skillicons.dev/icons?i=twitter)](https://twitter.com/scrapegraphai) - -## 📈 Telemetry -We collect anonymous usage metrics to enhance our package's quality and user experience. The data helps us prioritize improvements and ensure compatibility. If you wish to opt-out, set the environment variable SCRAPEGRAPHAI_TELEMETRY_ENABLED=false. For more information, please refer to the documentation [here](https://scrapegraph-ai.readthedocs.io/en/latest/scrapers/telemetry.html). - - -## ❤️ Contributors -[![Contributors](https://contrib.rocks/image?repo=VinciGit00/Scrapegraph-ai)](https://github.com/VinciGit00/Scrapegraph-ai/graphs/contributors) - -## 🎓 Citations -If you have used our library for research purposes please quote us with the following reference: -```text - @misc{scrapegraph-ai, - author = {Marco Perini, Lorenzo Padoan, Marco Vinciguerra}, - title = {Scrapegraph-ai}, - year = {2024}, - url = {https://github.com/VinciGit00/Scrapegraph-ai}, - note = {A Python library for scraping leveraging large language models} - } -``` - -## Authors - -

- Authors_logos -

- -| | Contact Info | -|--------------------|----------------------| -| Marco Vinciguerra | [![Linkedin Badge](https://img.shields.io/badge/-Linkedin-blue?style=flat&logo=Linkedin&logoColor=white)](https://www.linkedin.com/in/marco-vinciguerra-7ba365242/) | -| Marco Perini | [![Linkedin Badge](https://img.shields.io/badge/-Linkedin-blue?style=flat&logo=Linkedin&logoColor=white)](https://www.linkedin.com/in/perinim/) | -| Lorenzo Padoan | [![Linkedin Badge](https://img.shields.io/badge/-Linkedin-blue?style=flat&logo=Linkedin&logoColor=white)](https://www.linkedin.com/in/lorenzo-padoan-4521a2154/) | - -## 📜 License - -ScrapeGraphAI is licensed under the MIT License. See the [LICENSE](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/LICENSE) file for more information. - -## Acknowledgements - -- We would like to thank all the contributors to the project and the open-source community for their support. -- ScrapeGraphAI is meant to be used for data exploration and research purposes only. We are not responsible for any misuse of the library. - -Made with ❤️ by [ScrapeGraph AI](https://scrapegraphai.com) +- [Browserbase](https://www.browserbase.com/) +- [Serp API](https://serpapi.com?utm_source=scrapegraphai) +- [Stat Proxies](https://dashboard.statproxies.com/?refferal=scrapegraph) +- [Scrapedo](https://scrape.do) diff --git a/docs/scrapers/_category_.json b/docs/scrapers/_category_.json new file mode 100644 index 00000000..f5a74393 --- /dev/null +++ b/docs/scrapers/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Scrapers", + "position": 2, + "link": { + "type": "generated-index", + "description": "Learn about the different types of scrapers and their configurations in ScrapeGraphAI." + } +} \ No newline at end of file diff --git a/docs/scrapers/configuration.md b/docs/scrapers/configuration.md new file mode 100644 index 00000000..9fd1ad88 --- /dev/null +++ b/docs/scrapers/configuration.md @@ -0,0 +1,84 @@ +--- +sidebar_position: 4 +--- + +# Additional Parameters + +It is possible to customize the behavior of the graphs by setting some configuration options. +Some interesting ones are: + +- `verbose`: If set to `True`, some debug information will be printed to the console. +- `headless`: If set to `False`, the web browser will be opened on the URL requested and close right after the HTML is fetched. +- `max_results`: The maximum number of results to be fetched from the search engine. Useful in `SearchGraph`. +- `output_path`: The path where the output files will be saved. Useful in `SpeechGraph`. +- `loader_kwargs`: A dictionary with additional parameters to be passed to the `Loader` class, such as `proxy`. +- `burr_kwargs`: A dictionary with additional parameters to enable `Burr` graphical user interface. +- `max_images`: The maximum number of images to be analyzed. Useful in `OmniScraperGraph` and `OmniSearchGraph`. +- `cache_path`: The path where the cache files will be saved. If already exists, the cache will be loaded from this path. +- `additional_info`: Add additional text to default prompts defined in the graphs. + +## Burr Integration + +`Burr` is an open source python library that allows the creation and management of state machine applications. Discover more about it [here](https://github.com/DAGWorks-Inc/burr). +It is possible to enable a local hosted webapp to visualize the scraping pipelines and the data flow. +First, we need to install the `burr` library as follows: + +```bash +pip install scrapegraphai[burr] +``` + +and then run the graphical user interface as follows: + +```bash +burr +``` + +To log your graph execution in the platform, you need to set the `burr_kwargs` parameter in the graph configuration as follows: + +```python +graph_config = { + "llm":{...}, + "burr_kwargs": { + "project_name": "test-scraper", + "app_instance_id":"some_id", + } +} +``` + +## Proxy Rotation + +It is possible to rotate the proxy by setting the `proxy` option in the graph configuration. +We provide a free proxy service which is based on [free-proxy](https://pypi.org/project/free-proxy/) library and can be used as follows: + +```python +graph_config = { + "llm":{...}, + "loader_kwargs": { + "proxy" : { + "server": "broker", + "criteria": { + "anonymous": True, + "secure": True, + "countryset": {"IT"}, + "timeout": 10.0, + "max_shape": 3 + }, + }, + }, +} +``` + +Do you have a proxy server? You can use it as follows: + +```python +graph_config = { + "llm":{...}, + "loader_kwargs": { + "proxy" : { + "server": "http://your_proxy_server:port", + "username": "your_username", + "password": "your_password", + }, + }, +} +``` \ No newline at end of file diff --git a/docs/scrapers/graphs.md b/docs/scrapers/graphs.md new file mode 100644 index 00000000..b2f44d6f --- /dev/null +++ b/docs/scrapers/graphs.md @@ -0,0 +1,14 @@ +--- +sidebar_position: 1 +--- + +# Graphs + +Graphs are scraping pipelines aimed at solving specific tasks. They are composed by nodes which can be configured individually to address different aspects of the task (fetching data, extracting information, etc.). + +In this section, you'll find information about: +- Different types of graphs and their use cases +- LLM configuration and supported models +- Graph configuration options +- Benchmarks and performance metrics +- Telemetry and monitoring \ No newline at end of file diff --git a/docs/scrapers/llm.md b/docs/scrapers/llm.md new file mode 100644 index 00000000..cd119a74 --- /dev/null +++ b/docs/scrapers/llm.md @@ -0,0 +1,219 @@ +--- +sidebar_position: 3 +--- + +# LLM + +We support many known LLM models and providers used to analyze the web pages and extract the information requested by the user. Models can be split in **Chat Models** and **Embedding Models** (the latter are mainly used for Retrieval Augmented Generation RAG). +These models are specified inside the graph configuration dictionary and can be used interchangeably, for example by defining a different model for llm and embeddings. + +- **Local Models**: These models are hosted on the local machine and can be used without any API key. +- **API-based Models**: These models are hosted on the cloud and require an API key to access them (eg. OpenAI, Groq, etc). + +:::note +If the embedding model is not specified, the library will use the default one for that LLM, if available. +::: + +## Local Models + +Currently, local models are supported through Ollama integration. Ollama is a provider of LLM models which can be downloaded from [Ollama](https://ollama.com/). +Let's say we want to use **llama3** as chat model and **nomic-embed-text** as embedding model. We first need to pull them from ollama using: + +```bash +ollama pull llama3 +ollama pull nomic-embed-text +``` + +Then we can use them in the graph configuration as follows: + +```python +graph_config = { + "llm": { + "model": "llama3", + "temperature": 0.0, + "format": "json", + }, + "embeddings": { + "model": "nomic-embed-text", + }, +} +``` + +You can also specify the **base_url** parameter to specify the models endpoint. By default, it is set to http://localhost:11434. This is useful if you are running Ollama on a Docker container or on a different machine. + +If you want to host Ollama in a Docker container, you can use the following command: + +```bash +docker-compose up -d +docker exec -it ollama ollama pull llama3 +``` + +## API-based Models + +### OpenAI + +You can get the API key from [here](https://platform.openai.com/api-keys). + +```python +graph_config = { + "llm": { + "api_key": "OPENAI_API_KEY", + "model": "gpt-3.5-turbo", + }, +} +``` + +If you want to use text to speech models, you can specify the `tts_model` parameter: + +```python +graph_config = { + "llm": { + "api_key": "OPENAI_API_KEY", + "model": "gpt-3.5-turbo", + "temperature": 0.7, + }, + "tts_model": { + "api_key": "OPENAI_API_KEY", + "model": "tts-1", + "voice": "alloy" + }, +} +``` + +### Gemini + +You can get the API key from [here](https://ai.google.dev/gemini-api/docs/api-key). + +**Note**: some countries are not supported and therefore it won't be possible to request an API key. A possible workaround is to use a VPN or run the library on Colab. + +```python +graph_config = { + "llm": { + "api_key": "GEMINI_API_KEY", + "model": "gemini-pro" + }, +} +``` + +### Groq + +You can get the API key from [here](https://console.groq.com/keys). Groq doesn't support embedding models, so in the following example we are using Ollama one. + +```python +graph_config = { + "llm": { + "model": "groq/gemma-7b-it", + "api_key": "GROQ_API_KEY", + "temperature": 0 + }, + "embeddings": { + "model": "ollama/nomic-embed-text", + }, +} +``` + +### Azure + +We can also pass a model instance for the chat model and the embedding model. For Azure, a possible configuration would be: + +```python +llm_model_instance = AzureChatOpenAI( + openai_api_version="AZURE_OPENAI_API_VERSION", + azure_deployment="AZURE_OPENAI_CHAT_DEPLOYMENT_NAME" +) + +embedder_model_instance = AzureOpenAIEmbeddings( + azure_deployment="AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT_NAME", + openai_api_version="AZURE_OPENAI_API_VERSION", +) +# Supposing model_tokens are 100K +model_tokens_count = 100000 +graph_config = { + "llm": { + "model_instance": llm_model_instance, + "model_tokens": model_tokens_count, + }, + "embeddings": { + "model_instance": embedder_model_instance + } +} +``` + +### Hugging Face Hub + +We can also pass a model instance for the chat model and the embedding model. For Hugging Face, a possible configuration would be: + +```python +llm_model_instance = HuggingFaceEndpoint( + repo_id="mistralai/Mistral-7B-Instruct-v0.2", + max_length=128, + temperature=0.5, + token="HUGGINGFACEHUB_API_TOKEN" +) + +embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( + api_key="HUGGINGFACEHUB_API_TOKEN", + model_name="sentence-transformers/all-MiniLM-l6-v2" +) + +graph_config = { + "llm": { + "model_instance": llm_model_instance + }, + "embeddings": { + "model_instance": embedder_model_instance + } +} +``` + +### Anthropic + +We can also pass a model instance for the chat model and the embedding model. For Anthropic, a possible configuration would be: + +```python +embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( + api_key="HUGGINGFACEHUB_API_TOKEN", + model_name="sentence-transformers/all-MiniLM-l6-v2" +) + +graph_config = { + "llm": { + "api_key": "ANTHROPIC_API_KEY", + "model": "claude-3-haiku-20240307", + "max_tokens": 4000 + }, + "embeddings": { + "model_instance": embedder_model_instance + } +} +``` + +### Other LLM models + +We can also pass a model instance for the chat model and the embedding model through the **model_instance** parameter. +This feature enables you to utilize a Langchain model instance. +You will discover the model you require within the provided list: + +- [chat model list](https://python.langchain.com/v0.2/docs/integrations/chat/#all-chat-models) +- [embedding model list](https://python.langchain.com/v0.2/docs/integrations/text_embedding/#all-embedding-models) + +For instance, consider **chat model** Moonshot. We can integrate it in the following manner: + +```python +from langchain_community.chat_models.moonshot import MoonshotChat + +# The configuration parameters are contingent upon the specific model you select +llm_instance_config = { + "model": "moonshot-v1-8k", + "base_url": "https://api.moonshot.cn/v1", + "moonshot_api_key": "MOONSHOT_API_KEY", +} + +llm_model_instance = MoonshotChat(**llm_instance_config) +graph_config = { + "llm": { + "model_instance": llm_model_instance, + "model_tokens": 5000 + }, +} +``` \ No newline at end of file diff --git a/docs/scrapers/telemetry.md b/docs/scrapers/telemetry.md new file mode 100644 index 00000000..6b7c5453 --- /dev/null +++ b/docs/scrapers/telemetry.md @@ -0,0 +1,80 @@ +--- +sidebar_position: 5 +--- + +# Usage Analytics + +ScrapeGraphAI collects **anonymous** usage data by default to improve the library and guide development efforts. + +## Events Captured + +We capture events in the following scenarios: + +1. When a `Graph` finishes running. +2. When an exception is raised in one of the nodes. + +## Data Collected + +The data captured is limited to: + +- Operating System and Python version +- A persistent UUID to identify the session, stored in `~/.scrapegraphai.conf` + +Additionally, the following properties are collected: + +```python +properties = { + "graph_name": graph_name, + "llm_model": llm_model_name, + "embedder_model": embedder_model_name, + "source_type": source_type, + "source": source, + "execution_time": execution_time, + "prompt": prompt, + "schema": schema, + "error_node": error_node_name, + "exception": exception, + "response": response, + "total_tokens": total_tokens, +} +``` + +For more details, refer to the [telemetry.py](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/scrapegraphai/telemetry/telemetry.py) module. + +## Opting Out + +If you prefer not to participate in telemetry, you can opt out using any of the following methods: + +### 1. Programmatically Disable Telemetry + +Add the following code at the beginning of your script: + +```python +from scrapegraphai import telemetry +telemetry.disable_telemetry() +``` + +### 2. Configuration File + +Set the `telemetry_enabled` key to `false` in `~/.scrapegraphai.conf` under the `[DEFAULT]` section: + +```ini +[DEFAULT] +telemetry_enabled = False +``` + +### 3. Environment Variable + +- **For a Shell Session**: + + ```bash + export SCRAPEGRAPHAI_TELEMETRY_ENABLED=false + ``` + +- **For a Single Command**: + + ```bash + SCRAPEGRAPHAI_TELEMETRY_ENABLED=false python my_script.py + ``` + +By following any of these methods, you can easily opt out of telemetry and ensure your usage data is not collected. \ No newline at end of file diff --git a/docs/scrapers/types.md b/docs/scrapers/types.md new file mode 100644 index 00000000..a3a5c5ff --- /dev/null +++ b/docs/scrapers/types.md @@ -0,0 +1,195 @@ +--- +id: types +title: Types of Scrapers +sidebar_position: 1 +--- + +# Types of Scrapers + +There are several types of graphs available in the library, each with its own purpose and functionality. The most common ones are: + +- **SmartScraperGraph**: one-page scraper that requires a user-defined prompt and a URL (or local file) to extract information using LLM. +- **SearchGraph**: multi-page scraper that only requires a user-defined prompt to extract information from a search engine using LLM. It is built on top of SmartScraperGraph. +- **SpeechGraph**: text-to-speech pipeline that generates an answer as well as a requested audio file. It is built on top of SmartScraperGraph and requires a user-defined prompt and a URL (or local file). +- **ScriptCreatorGraph**: script generator that creates a Python script to scrape a website using the specified library (e.g. BeautifulSoup). It requires a user-defined prompt and a URL (or local file). + +There are also two additional graphs that can handle multiple sources: + +- **SmartScraperMultiGraph**: similar to `SmartScraperGraph`, but with the ability to handle multiple sources. +- **ScriptCreatorMultiGraph**: similar to `ScriptCreatorGraph`, but with the ability to handle multiple sources. + +With the introduction of `GPT-4o`, two new powerful graphs have been created: + +- **OmniScraperGraph**: similar to `SmartScraperGraph`, but with the ability to scrape images and describe them. +- **OmniSearchGraph**: similar to `SearchGraph`, but with the ability to scrape images and describe them. + +:::note +They all use a graph configuration to set up LLM models and other parameters. To find out more about the configurations, check the LLM and Configuration sections. +::: + +:::note +We can pass an optional `schema` parameter to the graph constructor to specify the output schema. If not provided or set to `None`, the schema will be generated by the LLM itself. +::: + +## OmniScraperGraph + +OmniScraperGraph is designed to scrape both text and images from web pages, with the ability to describe image content. + +First we define the graph configuration, which includes the LLM model and other parameters. Then we create an instance of the OmniScraperGraph class, passing the prompt, source, and configuration as arguments. Finally, we run the graph and print the result. +It will fetch the data from the source and extract the information based on the prompt in JSON format. + +```python +from scrapegraphai.graphs import OmniScraperGraph + +graph_config = { + "llm": {...}, +} + +omni_scraper_graph = OmniScraperGraph( + prompt="List me all the projects with their titles and image links and descriptions.", + source="https://perinim.github.io/projects", + config=graph_config, + schema=schema +) + +result = omni_scraper_graph.run() +print(result) +``` + +## OmniSearchGraph + +OmniSearchGraph extends the search capabilities to include image content analysis. + +Similar to OmniScraperGraph, we define the graph configuration, create multiple of the OmniSearchGraph class, and run the graph. +It will create a search query, fetch the first n results from the search engine, run n OmniScraperGraph instances, and return the results in JSON format. + +```python +from scrapegraphai.graphs import OmniSearchGraph + +graph_config = { + "llm": {...}, +} + +# Create the OmniSearchGraph instance +omni_search_graph = OmniSearchGraph( + prompt="List me all Chioggia's famous dishes and describe their pictures.", + config=graph_config, + schema=schema +) + +# Run the graph +result = omni_search_graph.run() +print(result) +``` + +## SmartScraperGraph & SmartScraperMultiGraph + +SmartScraperGraph is the core scraping component that extracts structured information from web pages. + +First we define the graph configuration, which includes the LLM model and other parameters. Then we create an instance of the SmartScraperGraph class, passing the prompt, source, and configuration as arguments. Finally, we run the graph and print the result. +It will fetch the data from the source and extract the information based on the prompt in JSON format. + +```python +from scrapegraphai.graphs import SmartScraperGraph + +graph_config = { + "llm": {...}, +} + +smart_scraper_graph = SmartScraperGraph( + prompt="List me all the projects with their descriptions", + source="https://perinim.github.io/projects", + config=graph_config, + schema=schema +) + +result = smart_scraper_graph.run() +print(result) +``` + +**SmartScraperMultiGraph** is similar to SmartScraperGraph, but it can handle multiple sources. We define the graph configuration, create an instance of the SmartScraperMultiGraph class, and run the graph. + +## SearchGraph + +SearchGraph combines search engine results with smart scraping capabilities. + +Similar to SmartScraperGraph, we define the graph configuration, create an instance of the SearchGraph class, and run the graph. +It will create a search query, fetch the first n results from the search engine, run n SmartScraperGraph instances, and return the results in JSON format. + +```python +from scrapegraphai.graphs import SearchGraph + +graph_config = { + "llm": {...}, + "embeddings": {...}, +} + +# Create the SearchGraph instance +search_graph = SearchGraph( + prompt="List me all the traditional recipes from Chioggia", + config=graph_config, + schema=schema +) + +# Run the graph +result = search_graph.run() +print(result) +``` + +## SpeechGraph + +SpeechGraph adds text-to-speech capabilities to the scraping pipeline. + +Similar to SmartScraperGraph, we define the graph configuration, create an instance of the SpeechGraph class, and run the graph. +It will fetch the data from the source, extract the information based on the prompt, and generate an audio file with the answer, as well as the answer itself, in JSON format. + +```python +from scrapegraphai.graphs import SpeechGraph + +graph_config = { + "llm": {...}, + "tts_model": {...}, +} + +# ************************************************ +# Create the SpeechGraph instance and run it +# ************************************************ + +speech_graph = SpeechGraph( + prompt="Make a detailed audio summary of the projects.", + source="https://perinim.github.io/projects/", + config=graph_config, + schema=schema +) + +result = speech_graph.run() +print(result) +``` + +## ScriptCreatorGraph & ScriptCreatorMultiGraph + +ScriptCreatorGraph generates Python scripts for custom web scraping tasks. + +First we define the graph configuration, which includes the LLM model and other parameters. +Then we create an instance of the ScriptCreatorGraph class, passing the prompt, source, and configuration as arguments. Finally, we run the graph and print the result. + +```python +from scrapegraphai.graphs import ScriptCreatorGraph + +graph_config = { + "llm": {...}, + "library": "beautifulsoup4" +} + +script_creator_graph = ScriptCreatorGraph( + prompt="Create a Python script to scrape the projects.", + source="https://perinim.github.io/projects/", + config=graph_config, + schema=schema +) + +result = script_creator_graph.run() +print(result) +``` + +**ScriptCreatorMultiGraph** is similar to ScriptCreatorGraph, but it can handle multiple sources. We define the graph configuration, create an instance of the ScriptCreatorMultiGraph class, and run the graph. \ No newline at end of file diff --git a/source/conf.py b/source/conf.py new file mode 100644 index 00000000..9fc3aec7 --- /dev/null +++ b/source/conf.py @@ -0,0 +1,42 @@ +# Configuration file for the Sphinx documentation builder. +# +# For the full list of built-in configuration values, see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Project information ----------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information + +# -- Path setup -------------------------------------------------------------- + +import os +import sys + +# import all the modules +sys.path.insert(0, os.path.abspath('../../')) + +project = 'ScrapeGraphAI' +copyright = '2024, ScrapeGraphAI' +author = 'Marco Vinciguerra, Marco Perini, Lorenzo Padoan' + +html_last_updated_fmt = "%b %d, %Y" + +# -- General configuration --------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration + +extensions = ['sphinx.ext.autodoc', 'sphinx.ext.napoleon'] + +templates_path = ['_templates'] +exclude_patterns = [] + +# -- Options for HTML output ------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output + +html_theme = 'furo' +html_theme_options = { + "source_repository": "https://github.com/VinciGit00/Scrapegraph-ai/", + "source_branch": "main", + "source_directory": "docs/source/", + 'navigation_with_keys': True, + 'sidebar_hide_name': False, +} + diff --git a/source/getting_started/examples.rst b/source/getting_started/examples.rst new file mode 100644 index 00000000..1bed0a6e --- /dev/null +++ b/source/getting_started/examples.rst @@ -0,0 +1,87 @@ +Examples +======== + +Let's suppose you want to scrape a website to get a list of projects with their descriptions. +You can use the `SmartScraperGraph` class to do that. +The following examples show how to use the `SmartScraperGraph` class with OpenAI models and local models. + +OpenAI models +^^^^^^^^^^^^^ + +.. code-block:: python + + import os + from dotenv import load_dotenv + from scrapegraphai.graphs import SmartScraperGraph + from scrapegraphai.utils import prettify_exec_info + + load_dotenv() + + openai_key = os.getenv("OPENAI_APIKEY") + + graph_config = { + "llm": { + "api_key": openai_key, + "model": "openai/gpt-4o", + }, + } + + # ************************************************ + # Create the SmartScraperGraph instance and run it + # ************************************************ + + smart_scraper_graph = SmartScraperGraph( + prompt="List me all the projects with their description.", + # also accepts a string with the already downloaded HTML code + source="https://perinim.github.io/projects/", + config=graph_config + ) + + result = smart_scraper_graph.run() + print(result) + + +Local models +^^^^^^^^^^^^^ + +Remember to have installed in your pc ollama `ollama ` +Remember to pull the right model for LLM and for the embeddings, like: + +.. code-block:: bash + + ollama pull llama3 + ollama pull nomic-embed-text + ollama pull mistral + +After that, you can run the following code, using only your machine resources brum brum brum: + +.. code-block:: python + + from scrapegraphai.graphs import SmartScraperGraph + from scrapegraphai.utils import prettify_exec_info + + graph_config = { + "llm": { + "model": "ollama/mistral", + "temperature": 1, + "format": "json", # Ollama needs the format to be specified explicitly + "model_tokens": 2000, # depending on the model set context length + "base_url": "http://localhost:11434", # set ollama URL of the local host (YOU CAN CHANGE IT, if you have a different endpoint + } + } + + # ************************************************ + # Create the SmartScraperGraph instance and run it + # ************************************************ + + smart_scraper_graph = SmartScraperGraph( + prompt="List me all the projects with their description.", + # also accepts a string with the already downloaded HTML code + source="https://perinim.github.io/projects", + config=graph_config + ) + + result = smart_scraper_graph.run() + print(result) + +To find out how you can customize the `graph_config` dictionary, by using different LLM and adding new parameters, check the `Scrapers` section! \ No newline at end of file diff --git a/source/getting_started/installation.rst b/source/getting_started/installation.rst new file mode 100644 index 00000000..666322af --- /dev/null +++ b/source/getting_started/installation.rst @@ -0,0 +1,50 @@ +Installation +------------ + +In the following sections I will guide you through the installation process of the required components +for this project. + +Prerequisites +^^^^^^^^^^^^^ + +- `Python >=3.9 `_ +- `pip `_ +- `Ollama `_ (optional for local models) + + +Install the library +^^^^^^^^^^^^^^^^^^^^ + +The library is available on PyPI, so it can be installed using the following command: + +.. code-block:: bash + + pip install scrapegraphai + +.. important:: + + It is higly recommended to install the library in a virtual environment (conda, venv, etc.) + +If your clone the repository, it is recommended to use a package manager like `rye `_. +To install the library using rye, you can run the following command: + +.. code-block:: bash + + rye pin 3.10 + rye sync + rye build + +.. caution:: + + **Rye** must be installed first by following the instructions on the `official website `_. + +Additionally on Windows when using WSL +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you are using Windows Subsystem for Linux (WSL) and you are facing issues with the installation of the library, you might need to install the following packages: + +.. code-block:: bash + + sudo apt-get -y install libnss3 libnspr4 libgbm1 libasound2 + + diff --git a/source/index.rst b/source/index.rst new file mode 100644 index 00000000..acc0db73 --- /dev/null +++ b/source/index.rst @@ -0,0 +1,46 @@ +.. Scrapegraph-ai documentation master file, created by + sphinx-quickstart on Wed Jan 31 15:38:23 2024. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +.. toctree:: + :maxdepth: 2 + :caption: Introduction + + introduction/overview + introduction/contributing + +.. toctree:: + :maxdepth: 2 + :caption: Getting Started + + getting_started/installation + getting_started/examples + +.. toctree:: + :maxdepth: 2 + :caption: Scrapers + + scrapers/graphs + +.. toctree:: + :maxdepth: 2 + :caption: Modules + + modules/modules + +.. toctree:: + :hidden: + :caption: EXTERNAL RESOURCES + + GitHub + Discord + Linkedin + Twitter + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` \ No newline at end of file diff --git a/source/introduction/contributing.rst b/source/introduction/contributing.rst new file mode 100644 index 00000000..75f5adab --- /dev/null +++ b/source/introduction/contributing.rst @@ -0,0 +1,13 @@ +Contributing +============ + +Hey, you want to contribute? Awesome! +Just fork the repo, make your changes, and send a pull request. +If you're not sure if it's a good idea, open an issue and we'll discuss it. + +Go and check out the `contributing guidelines `__ for more information. + +License +======= +This project is licensed under the MIT license. +See the `LICENSE `__ file for more details. diff --git a/source/introduction/overview.rst b/source/introduction/overview.rst new file mode 100644 index 00000000..4dcaadbe --- /dev/null +++ b/source/introduction/overview.rst @@ -0,0 +1,202 @@ +.. image:: ../../assets/scrapegraphai_logo.png + :align: center + :width: 50% + :alt: ScrapegraphAI + +Overview +======== + +ScrapeGraphAI is an **open-source** Python library designed to revolutionize **scraping** tools. +In today's data-intensive digital landscape, this library stands out by integrating **Large Language Models** (LLMs) +and modular **graph-based** pipelines to automate the scraping of data from various sources (e.g., websites, local files etc.). + +Simply specify the information you need to extract, and ScrapeGraphAI handles the rest, providing a more **flexible** and **low-maintenance** solution compared to traditional scraping tools. + +Why ScrapegraphAI? +================== + +Traditional web scraping tools often rely on fixed patterns or manual configuration to extract data from web pages. +ScrapegraphAI, leveraging the power of LLMs, adapts to changes in website structures, reducing the need for constant developer intervention. +This flexibility ensures that scrapers remain functional even when website layouts change. + +We support many LLMs including **GPT, Gemini, Groq, Azure, Hugging Face** etc. +as well as local models which can run on your machine using **Ollama**. + +AI Models and Token Limits +========================== + +ScrapGraphAI supports a wide range of AI models from various providers. Each model has a specific token limit, which is important to consider when designing your scraping pipelines. Here's an overview of the supported models and their token limits: + +OpenAI Models +------------- +- GPT-3.5 Turbo (16,385 tokens) +- GPT-3.5 (4,096 tokens) +- GPT-3.5 Turbo Instruct (4,096 tokens) +- GPT-4 Turbo Preview (128,000 tokens) +- GPT-4 Vision Preview (128,000 tokens) +- GPT-4 (8,192 tokens) +- GPT-4 32k (32,768 tokens) +- GPT-4o (128,000 tokens) +- O1 Preview (128,000 tokens) +- O1 Mini (128,000 tokens) + +Azure OpenAI Models +------------------- +- GPT-3.5 Turbo (16,385 tokens) +- GPT-3.5 (4,096 tokens) +- GPT-4 Turbo Preview (128,000 tokens) +- GPT-4 (8,192 tokens) +- GPT-4 32k (32,768 tokens) +- GPT-4o (128,000 tokens) +- O1 Preview (128,000 tokens) +- O1 Mini (128,000 tokens) + +Google AI Models +---------------- +- Gemini Pro (128,000 tokens) +- Gemini 1.5 Flash (128,000 tokens) +- Gemini 1.5 Pro (128,000 tokens) +- Gemini 1.0 Pro (128,000 tokens) + +Anthropic Models +---------------- +- Claude Instant (100,000 tokens) +- Claude 2 (9,000 tokens) +- Claude 2.1 (200,000 tokens) +- Claude 3 (200,000 tokens) +- Claude 3.5 (200,000 tokens) +- Claude 3 Opus (200,000 tokens) +- Claude 3 Sonnet (200,000 tokens) +- Claude 3 Haiku (200,000 tokens) + +Mistral AI Models +----------------- +- Mistral Large Latest (128,000 tokens) +- Open Mistral Nemo (128,000 tokens) +- Codestral Latest (32,000 tokens) +- Open Mistral 7B (32,000 tokens) +- Open Mixtral 8x7B (32,000 tokens) +- Open Mixtral 8x22B (64,000 tokens) +- Open Codestral Mamba (256,000 tokens) + +Ollama Models +------------- +- Command-R (12,800 tokens) +- CodeLlama (16,000 tokens) +- DBRX (32,768 tokens) +- DeepSeek Coder 33B (16,000 tokens) +- Llama2 Series (4,096 tokens) +- Llama3 Series (8,192-128,000 tokens) +- Mistral Models (32,000-128,000 tokens) +- Mixtral 8x22B Instruct (65,536 tokens) +- Phi3 Series (12,800-128,000 tokens) +- Qwen Series (32,000 tokens) + +Hugging Face Models +------------------ +- Grok-1 (8,192 tokens) +- Meta Llama 3 Series (8,192 tokens) +- Google Gemma Series (8,192 tokens) +- Microsoft Phi Series (2,048-131,072 tokens) +- GPT-2 Series (1,024 tokens) +- DeepSeek V2 Series (131,072 tokens) + +Bedrock Models +------------- +- Claude 3 Series (200,000 tokens) +- Llama2 & Llama3 Series (4,096-8,192 tokens) +- Mistral Series (32,768 tokens) +- Titan Embed Text (8,000 tokens) +- Cohere Embed (512 tokens) + +Fireworks Models +--------------- +- Llama V2 7B (4,096 tokens) +- Mixtral 8x7B Instruct (4,096 tokens) +- Llama 3.1 Series (131,072 tokens) +- Mixtral MoE Series (65,536 tokens) + +For a complete and up-to-date list of supported models and their token limits, please refer to the API documentation. + +Understanding token limits is crucial for optimizing your scraping tasks. Larger token limits allow for processing more text in a single API call, which can be beneficial for scraping lengthy web pages or documents. + + +Library Diagram +=============== + +With ScrapegraphAI you can use many already implemented scraping pipelines or create your own. + +The diagram below illustrates the high-level architecture of ScrapeGraphAI: + +.. image:: ../../assets/project_overview_diagram.png + :align: center + :width: 70% + :alt: ScrapegraphAI Overview + +FAQ +=== + +1. **What is ScrapeGraphAI?** + + ScrapeGraphAI is an open-source python library that uses large language models (LLMs) and graph logic to automate the creation of scraping pipelines for websites and various document types. + +2. **How does ScrapeGraphAI differ from traditional scraping tools?** + + Traditional scraping tools rely on fixed patterns and manual configurations, whereas ScrapeGraphAI adapts to website structure changes using LLMs, reducing the need for constant developer intervention. + +3. **Which LLMs are supported by ScrapeGraphAI?** + + ScrapeGraphAI supports several LLMs, including GPT, Gemini, Groq, Azure, Hugging Face, and local models that can run on your machine using Ollama. + +4. **Can ScrapeGraphAI handle different document formats?** + + Yes, ScrapeGraphAI can scrape information from various document formats such as XML, HTML, JSON, and more. + +5. **I get an empty or incorrect output when scraping a website. What should I do?** + + There are several reasons behind this issue, but for most cases, you can try the following: + + - Set the `headless` parameter to `False` in the graph_config. Some javascript-heavy websites might require it. + + - Check your internet connection. Low speed or unstable connection can cause the HTML to not load properly. + + - Try using a proxy server to mask your IP address. Check out the :ref:`Proxy` section for more information on how to configure proxy settings. + + - Use a different LLM model. Some models might perform better on certain websites than others. + + - Set the `verbose` parameter to `True` in the graph_config to see more detailed logs. + + - Visualize the pipeline graphically using :ref:`Burr`. + + If the issue persists, please report it on the GitHub repository. + +6. **How does ScrapeGraphAI handle the context window limit of LLMs?** + + By splitting big websites/documents into chunks with overlaps and applying compression techniques to reduce the number of tokens. If multiple chunks are present, we will have multiple answers to the user prompt, and therefore, we merge them together in the last step of the scraping pipeline. + +7. **How can I contribute to ScrapeGraphAI?** + + You can contribute to ScrapeGraphAI by submitting bug reports, feature requests, or pull requests on the GitHub repository. Join our `Discord `_ community and follow us on social media! + +Sponsors +======== + +.. image:: ../../assets/browserbase_logo.png + :width: 10% + :alt: Browserbase + :target: https://www.browserbase.com/ + +.. image:: ../../assets/serp_api_logo.png + :width: 10% + :alt: Serp API + :target: https://serpapi.com?utm_source=scrapegraphai + +.. image:: ../../assets/transparent_stat.png + :width: 15% + :alt: Stat Proxies + :target: https://dashboard.statproxies.com/?refferal=scrapegraph + +.. image:: ../../assets/scrapedo.png + :width: 11% + :alt: Scrapedo + :target: https://scrape.do diff --git a/source/modules/modules.rst b/source/modules/modules.rst new file mode 100644 index 00000000..7551ea96 --- /dev/null +++ b/source/modules/modules.rst @@ -0,0 +1,10 @@ +scrapegraphai +============= + +.. toctree:: + :maxdepth: 4 + + scrapegraphai + + scrapegraphai.helpers.models_tokens + diff --git a/source/modules/scrapegraphai.builders.rst b/source/modules/scrapegraphai.builders.rst new file mode 100644 index 00000000..668ea5bc --- /dev/null +++ b/source/modules/scrapegraphai.builders.rst @@ -0,0 +1,21 @@ +scrapegraphai.builders package +============================== + +Submodules +---------- + +scrapegraphai.builders.graph\_builder module +-------------------------------------------- + +.. automodule:: scrapegraphai.builders.graph_builder + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: scrapegraphai.builders + :members: + :undoc-members: + :show-inheritance: diff --git a/source/modules/scrapegraphai.docloaders.rst b/source/modules/scrapegraphai.docloaders.rst new file mode 100644 index 00000000..be66f042 --- /dev/null +++ b/source/modules/scrapegraphai.docloaders.rst @@ -0,0 +1,21 @@ +scrapegraphai.docloaders package +================================ + +Submodules +---------- + +scrapegraphai.docloaders.chromium module +---------------------------------------- + +.. automodule:: scrapegraphai.docloaders.chromium + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: scrapegraphai.docloaders + :members: + :undoc-members: + :show-inheritance: diff --git a/source/modules/scrapegraphai.graphs.rst b/source/modules/scrapegraphai.graphs.rst new file mode 100644 index 00000000..7eca6683 --- /dev/null +++ b/source/modules/scrapegraphai.graphs.rst @@ -0,0 +1,133 @@ +scrapegraphai.graphs package +============================ + +Submodules +---------- + +scrapegraphai.graphs.abstract\_graph module +------------------------------------------- + +.. automodule:: scrapegraphai.graphs.abstract_graph + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.graphs.base\_graph module +--------------------------------------- + +.. automodule:: scrapegraphai.graphs.base_graph + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.graphs.csv\_scraper\_graph module +----------------------------------------------- + +.. automodule:: scrapegraphai.graphs.csv_scraper_graph + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.graphs.deep\_scraper\_graph module +------------------------------------------------ + +.. automodule:: scrapegraphai.graphs.deep_scraper_graph + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.graphs.json\_scraper\_graph module +------------------------------------------------ + +.. automodule:: scrapegraphai.graphs.json_scraper_graph + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.graphs.omni\_scraper\_graph module +------------------------------------------------ + +.. automodule:: scrapegraphai.graphs.omni_scraper_graph + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.graphs.omni\_search\_graph module +----------------------------------------------- + +.. automodule:: scrapegraphai.graphs.omni_search_graph + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.graphs.pdf\_scraper\_graph module +----------------------------------------------- + +.. automodule:: scrapegraphai.graphs.pdf_scraper_graph + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.graphs.script\_creator\_graph module +-------------------------------------------------- + +.. automodule:: scrapegraphai.graphs.script_creator_graph + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.graphs.search\_graph module +----------------------------------------- + +.. automodule:: scrapegraphai.graphs.search_graph + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.graphs.smart\_scraper\_graph module +------------------------------------------------- + +.. automodule:: scrapegraphai.graphs.smart_scraper_graph + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.graphs.smart\_scraper\_graph\_burr module +------------------------------------------------------- + +.. automodule:: scrapegraphai.graphs.smart_scraper_graph_burr + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.graphs.smart\_scraper\_graph\_hamilton module +----------------------------------------------------------- + +.. automodule:: scrapegraphai.graphs.smart_scraper_graph_hamilton + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.graphs.speech\_graph module +----------------------------------------- + +.. automodule:: scrapegraphai.graphs.speech_graph + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.graphs.xml\_scraper\_graph module +----------------------------------------------- + +.. automodule:: scrapegraphai.graphs.xml_scraper_graph + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: scrapegraphai.graphs + :members: + :undoc-members: + :show-inheritance: diff --git a/source/modules/scrapegraphai.helpers.models_tokens.rst b/source/modules/scrapegraphai.helpers.models_tokens.rst new file mode 100644 index 00000000..82615b3b --- /dev/null +++ b/source/modules/scrapegraphai.helpers.models_tokens.rst @@ -0,0 +1,28 @@ +scrapegraphai.helpers.models_tokens module +========================================== + +.. automodule:: scrapegraphai.helpers.models_tokens + :members: + :undoc-members: + :show-inheritance: + +This module contains a comprehensive dictionary of AI models and their corresponding token limits. The `models_tokens` dictionary is organized by provider (e.g., OpenAI, Azure OpenAI, Google AI, etc.) and includes various models with their maximum token counts. + +Example usage: + +.. code-block:: python + + from scrapegraphai.helpers.models_tokens import models_tokens + + # Get the token limit for GPT-4 + gpt4_limit = models_tokens['openai']['gpt-4'] + print(f"GPT-4 token limit: {gpt4_limit}") + + # Check the token limit for a specific model + model_name = "gpt-4o-mini" + if model_name in models_tokens['openai']: + print(f"{model_name} token limit: {models_tokens['openai'][model_name]}") + else: + print(f"{model_name} not found in the models list") + +This information is crucial for users to understand the capabilities and limitations of different AI models when designing their scraping pipelines. \ No newline at end of file diff --git a/source/modules/scrapegraphai.helpers.rst b/source/modules/scrapegraphai.helpers.rst new file mode 100644 index 00000000..5bcdf457 --- /dev/null +++ b/source/modules/scrapegraphai.helpers.rst @@ -0,0 +1,45 @@ +scrapegraphai.helpers package +============================= + +Submodules +---------- + +scrapegraphai.helpers.models\_tokens module +------------------------------------------- + +.. automodule:: scrapegraphai.helpers.models_tokens + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.helpers.nodes\_metadata module +-------------------------------------------- + +.. automodule:: scrapegraphai.helpers.nodes_metadata + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.helpers.robots module +----------------------------------- + +.. automodule:: scrapegraphai.helpers.robots + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.helpers.schemas module +------------------------------------ + +.. automodule:: scrapegraphai.helpers.schemas + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: scrapegraphai.helpers + :members: + :undoc-members: + :show-inheritance: diff --git a/source/modules/scrapegraphai.integrations.rst b/source/modules/scrapegraphai.integrations.rst new file mode 100644 index 00000000..a90c8b7a --- /dev/null +++ b/source/modules/scrapegraphai.integrations.rst @@ -0,0 +1,21 @@ +scrapegraphai.integrations package +================================== + +Submodules +---------- + +scrapegraphai.integrations.burr\_bridge module +---------------------------------------------- + +.. automodule:: scrapegraphai.integrations.burr_bridge + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: scrapegraphai.integrations + :members: + :undoc-members: + :show-inheritance: diff --git a/source/modules/scrapegraphai.models.rst b/source/modules/scrapegraphai.models.rst new file mode 100644 index 00000000..f16ad476 --- /dev/null +++ b/source/modules/scrapegraphai.models.rst @@ -0,0 +1,101 @@ +scrapegraphai.models package +============================ + +Submodules +---------- + +scrapegraphai.models.anthropic module +------------------------------------- + +.. automodule:: scrapegraphai.models.anthropic + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.models.azure\_openai module +----------------------------------------- + +.. automodule:: scrapegraphai.models.azure_openai + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.models.bedrock module +----------------------------------- + +.. automodule:: scrapegraphai.models.bedrock + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.models.deepseek module +------------------------------------ + +.. automodule:: scrapegraphai.models.deepseek + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.models.gemini module +---------------------------------- + +.. automodule:: scrapegraphai.models.gemini + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.models.groq module +-------------------------------- + +.. automodule:: scrapegraphai.models.groq + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.models.hugging\_face module +----------------------------------------- + +.. automodule:: scrapegraphai.models.hugging_face + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.models.ollama module +---------------------------------- + +.. automodule:: scrapegraphai.models.ollama + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.models.openai module +---------------------------------- + +.. automodule:: scrapegraphai.models.openai + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.models.openai\_itt module +--------------------------------------- + +.. automodule:: scrapegraphai.models.openai_itt + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.models.openai\_tts module +--------------------------------------- + +.. automodule:: scrapegraphai.models.openai_tts + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: scrapegraphai.models + :members: + :undoc-members: + :show-inheritance: diff --git a/source/modules/scrapegraphai.nodes.rst b/source/modules/scrapegraphai.nodes.rst new file mode 100644 index 00000000..c89eecfc --- /dev/null +++ b/source/modules/scrapegraphai.nodes.rst @@ -0,0 +1,165 @@ +scrapegraphai.nodes package +=========================== + +Submodules +---------- + +scrapegraphai.nodes.base\_node module +------------------------------------- + +.. automodule:: scrapegraphai.nodes.base_node + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.conditional\_node module +-------------------------------------------- + +.. automodule:: scrapegraphai.nodes.conditional_node + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.fetch\_node module +-------------------------------------- + +.. automodule:: scrapegraphai.nodes.fetch_node + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.generate\_answer\_csv\_node module +------------------------------------------------------ + +.. automodule:: scrapegraphai.nodes.generate_answer_csv_node + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.generate\_answer\_node module +------------------------------------------------- + +.. automodule:: scrapegraphai.nodes.generate_answer_node + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.generate\_answer\_omni\_node module +------------------------------------------------------- + +.. automodule:: scrapegraphai.nodes.generate_answer_omni_node + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.generate\_answer\_pdf\_node module +------------------------------------------------------ + +.. automodule:: scrapegraphai.nodes.generate_answer_pdf_node + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.generate\_scraper\_node module +-------------------------------------------------- + +.. automodule:: scrapegraphai.nodes.generate_scraper_node + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.get\_probable\_tags\_node module +---------------------------------------------------- + +.. automodule:: scrapegraphai.nodes.get_probable_tags_node + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.graph\_iterator\_node module +------------------------------------------------ + +.. automodule:: scrapegraphai.nodes.graph_iterator_node + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.image\_to\_text\_node module +------------------------------------------------ + +.. automodule:: scrapegraphai.nodes.image_to_text_node + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.merge\_answers\_node module +----------------------------------------------- + +.. automodule:: scrapegraphai.nodes.merge_answers_node + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.parse\_node module +-------------------------------------- + +.. automodule:: scrapegraphai.nodes.parse_node + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.rag\_node module +------------------------------------ + +.. automodule:: scrapegraphai.nodes.rag_node + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.robots\_node module +--------------------------------------- + +.. automodule:: scrapegraphai.nodes.robots_node + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.search\_internet\_node module +------------------------------------------------- + +.. automodule:: scrapegraphai.nodes.search_internet_node + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.search\_link\_node module +--------------------------------------------- + +.. automodule:: scrapegraphai.nodes.search_link_node + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.search\_node\_with\_context module +------------------------------------------------------ + +.. automodule:: scrapegraphai.nodes.search_node_with_context + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.nodes.text\_to\_speech\_node module +------------------------------------------------- + +.. automodule:: scrapegraphai.nodes.text_to_speech_node + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: scrapegraphai.nodes + :members: + :undoc-members: + :show-inheritance: diff --git a/source/modules/scrapegraphai.rst b/source/modules/scrapegraphai.rst new file mode 100644 index 00000000..df0fb1a9 --- /dev/null +++ b/source/modules/scrapegraphai.rst @@ -0,0 +1,25 @@ +scrapegraphai package +===================== + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + scrapegraphai.builders + scrapegraphai.docloaders + scrapegraphai.graphs + scrapegraphai.helpers + scrapegraphai.integrations + scrapegraphai.models + scrapegraphai.nodes + scrapegraphai.utils + +Module contents +--------------- + +.. automodule:: scrapegraphai + :members: + :undoc-members: + :show-inheritance: diff --git a/source/modules/scrapegraphai.utils.rst b/source/modules/scrapegraphai.utils.rst new file mode 100644 index 00000000..d9100f1e --- /dev/null +++ b/source/modules/scrapegraphai.utils.rst @@ -0,0 +1,93 @@ +scrapegraphai.utils package +=========================== + +Submodules +---------- + +scrapegraphai.utils.cleanup\_html module +---------------------------------------- + +.. automodule:: scrapegraphai.utils.cleanup_html + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.utils.convert\_to\_csv module +------------------------------------------- + +.. automodule:: scrapegraphai.utils.convert_to_csv + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.utils.convert\_to\_json module +-------------------------------------------- + +.. automodule:: scrapegraphai.utils.convert_to_json + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.utils.parse\_state\_keys module +--------------------------------------------- + +.. automodule:: scrapegraphai.utils.parse_state_keys + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.utils.prettify\_exec\_info module +----------------------------------------------- + +.. automodule:: scrapegraphai.utils.prettify_exec_info + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.utils.proxy\_rotation module +------------------------------------------ + +.. automodule:: scrapegraphai.utils.proxy_rotation + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.utils.research\_web module +---------------------------------------- + +.. automodule:: scrapegraphai.utils.research_web + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.utils.save\_audio\_from\_bytes module +--------------------------------------------------- + +.. automodule:: scrapegraphai.utils.save_audio_from_bytes + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.utils.sys\_dynamic\_import module +----------------------------------------------- + +.. automodule:: scrapegraphai.utils.sys_dynamic_import + :members: + :undoc-members: + :show-inheritance: + +scrapegraphai.utils.token\_calculator module +-------------------------------------------- + +.. automodule:: scrapegraphai.utils.token_calculator + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: scrapegraphai.utils + :members: + :undoc-members: + :show-inheritance: diff --git a/source/scrapers/graph_config.rst b/source/scrapers/graph_config.rst new file mode 100644 index 00000000..e16ccae7 --- /dev/null +++ b/source/scrapers/graph_config.rst @@ -0,0 +1,88 @@ +.. _Configuration: + +Additional Parameters +===================== + +It is possible to customize the behavior of the graphs by setting some configuration options. +Some interesting ones are: + +- `verbose`: If set to `True`, some debug information will be printed to the console. +- `headless`: If set to `False`, the web browser will be opened on the URL requested and close right after the HTML is fetched. +- `max_results`: The maximum number of results to be fetched from the search engine. Useful in `SearchGraph`. +- `output_path`: The path where the output files will be saved. Useful in `SpeechGraph`. +- `loader_kwargs`: A dictionary with additional parameters to be passed to the `Loader` class, such as `proxy`. +- `burr_kwargs`: A dictionary with additional parameters to enable `Burr` graphical user interface. +- `max_images`: The maximum number of images to be analyzed. Useful in `OmniScraperGraph` and `OmniSearchGraph`. +- `cache_path`: The path where the cache files will be saved. If already exists, the cache will be loaded from this path. +- `additional_info`: Add additional text to default prompts defined in the graphs. +.. _Burr: + +Burr Integration +^^^^^^^^^^^^^^^^ + +`Burr` is an open source python library that allows the creation and management of state machine applications. Discover more about it `here `_. +It is possible to enable a local hosted webapp to visualize the scraping pipelines and the data flow. +First, we need to install the `burr` library as follows: + +.. code-block:: bash + + pip install scrapegraphai[burr] + +and then run the graphical user interface as follows: + +.. code-block:: bash + + burr + +To log your graph execution in the platform, you need to set the `burr_kwargs` parameter in the graph configuration as follows: + +.. code-block:: python + + graph_config = { + "llm":{...}, + "burr_kwargs": { + "project_name": "test-scraper", + "app_instance_id":"some_id", + } + } + +.. _Proxy: + +Proxy Rotation +^^^^^^^^^^^^^^ + +It is possible to rotate the proxy by setting the `proxy` option in the graph configuration. +We provide a free proxy service which is based on `free-proxy `_ library and can be used as follows: + +.. code-block:: python + + graph_config = { + "llm":{...}, + "loader_kwargs": { + "proxy" : { + "server": "broker", + "criteria": { + "anonymous": True, + "secure": True, + "countryset": {"IT"}, + "timeout": 10.0, + "max_shape": 3 + }, + }, + }, + } + +Do you have a proxy server? You can use it as follows: + +.. code-block:: python + + graph_config = { + "llm":{...}, + "loader_kwargs": { + "proxy" : { + "server": "http://your_proxy_server:port", + "username": "your_username", + "password": "your_password", + }, + }, + } diff --git a/source/scrapers/graphs.rst b/source/scrapers/graphs.rst new file mode 100644 index 00000000..ee5f072f --- /dev/null +++ b/source/scrapers/graphs.rst @@ -0,0 +1,13 @@ +Graphs +====== + +Graphs are scraping pipelines aimed at solving specific tasks. They are composed by nodes which can be configured individually to address different aspects of the task (fetching data, extracting information, etc.). + +.. toctree:: + :maxdepth: 4 + + types + llm + graph_config + benchmarks + telemetry diff --git a/source/scrapers/llm.rst b/source/scrapers/llm.rst new file mode 100644 index 00000000..7b1df30e --- /dev/null +++ b/source/scrapers/llm.rst @@ -0,0 +1,228 @@ +.. _llm: + +LLM +=== + +We support many known LLM models and providers used to analyze the web pages and extract the information requested by the user. Models can be split in **Chat Models** and **Embedding Models** (the latter are mainly used for Retrieval Augmented Generation RAG). +These models are specified inside the graph configuration dictionary and can be used interchangeably, for example by defining a different model for llm and embeddings. + +- **Local Models**: These models are hosted on the local machine and can be used without any API key. +- **API-based Models**: These models are hosted on the cloud and require an API key to access them (eg. OpenAI, Groq, etc). + +.. note:: + + If the emebedding model is not specified, the library will use the default one for that LLM, if available. + +Local Models +------------ + +Currently, local models are supported through Ollama integration. Ollama is a provider of LLM models which can be downloaded from here `Ollama `_. +Let's say we want to use **llama3** as chat model and **nomic-embed-text** as embedding model. We first need to pull them from ollama using: + +.. code-block:: bash + + ollama pull llama3 + ollama pull nomic-embed-text + +Then we can use them in the graph configuration as follows: + +.. code-block:: python + + graph_config = { + "llm": { + "model": "llama3", + "temperature": 0.0, + "format": "json", + }, + "embeddings": { + "model": "nomic-embed-text", + }, + } + +You can also specify the **base_url** parameter to specify the models endpoint. By default, it is set to http://localhost:11434. This is useful if you are running Ollama on a Docker container or on a different machine. + +If you want to host Ollama in a Docker container, you can use the following command: + +.. code-block:: bash + + docker-compose up -d + docker exec -it ollama ollama pull llama3 + +API-based Models +---------------- + +OpenAI +^^^^^^ + +You can get the API key from `here `_. + +.. code-block:: python + + graph_config = { + "llm": { + "api_key": "OPENAI_API_KEY", + "model": "gpt-3.5-turbo", + }, + } + +If you want to use text to speech models, you can specify the `tts_model` parameter: + +.. code-block:: python + + graph_config = { + "llm": { + "api_key": "OPENAI_API_KEY", + "model": "gpt-3.5-turbo", + "temperature": 0.7, + }, + "tts_model": { + "api_key": "OPENAI_API_KEY", + "model": "tts-1", + "voice": "alloy" + }, + } + +Gemini +^^^^^^ + +You can get the API key from `here `_. + +**Note**: some countries are not supported and therefore it won't be possible to request an API key. A possible workaround is to use a VPN or run the library on Colab. + +.. code-block:: python + + graph_config = { + "llm": { + "api_key": "GEMINI_API_KEY", + "model": "gemini-pro" + }, + } + +Groq +^^^^ + +You can get the API key from `here `_. Groq doesn't support embedding models, so in the following example we are using Ollama one. + +.. code-block:: python + + graph_config = { + "llm": { + "model": "groq/gemma-7b-it", + "api_key": "GROQ_API_KEY", + "temperature": 0 + }, + "embeddings": { + "model": "ollama/nomic-embed-text", + }, + } + +Azure +^^^^^ + +We can also pass a model instance for the chat model and the embedding model. For Azure, a possible configuration would be: + +.. code-block:: python + + llm_model_instance = AzureChatOpenAI( + openai_api_version="AZURE_OPENAI_API_VERSION", + azure_deployment="AZURE_OPENAI_CHAT_DEPLOYMENT_NAME" + ) + + embedder_model_instance = AzureOpenAIEmbeddings( + azure_deployment="AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT_NAME", + openai_api_version="AZURE_OPENAI_API_VERSION", + ) + # Supposing model_tokens are 100K + model_tokens_count = 100000 + graph_config = { + "llm": { + "model_instance": llm_model_instance, + "model_tokens": model_tokens_count, + }, + "embeddings": { + "model_instance": embedder_model_instance + } + } + +Hugging Face Hub +^^^^^^^^^^^^^^^^ + +We can also pass a model instance for the chat model and the embedding model. For Hugging Face, a possible configuration would be: + +.. code-block:: python + + llm_model_instance = HuggingFaceEndpoint( + repo_id="mistralai/Mistral-7B-Instruct-v0.2", + max_length=128, + temperature=0.5, + token="HUGGINGFACEHUB_API_TOKEN" + ) + + embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( + api_key="HUGGINGFACEHUB_API_TOKEN", + model_name="sentence-transformers/all-MiniLM-l6-v2" + ) + + graph_config = { + "llm": { + "model_instance": llm_model_instance + }, + "embeddings": { + "model_instance": embedder_model_instance + } + } + +Anthropic +^^^^^^^^^ + +We can also pass a model instance for the chat model and the embedding model. For Anthropic, a possible configuration would be: + +.. code-block:: python + + embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( + api_key="HUGGINGFACEHUB_API_TOKEN", + model_name="sentence-transformers/all-MiniLM-l6-v2" + ) + + graph_config = { + "llm": { + "api_key": "ANTHROPIC_API_KEY", + "model": "claude-3-haiku-20240307", + "max_tokens": 4000 + }, + "embeddings": { + "model_instance": embedder_model_instance + } + } + +Other LLM models +^^^^^^^^^^^^^^^^ + +We can also pass a model instance for the chat model and the embedding model through the **model_instance** parameter. +This feature enables you to utilize a Langchain model instance. +You will discover the model you require within the provided list: + +- `chat model list `_ +- `embedding model list `_. + +For instance, consider **chat model** Moonshot. We can integrate it in the following manner: + +.. code-block:: python + + from langchain_community.chat_models.moonshot import MoonshotChat + + # The configuration parameters are contingent upon the specific model you select + llm_instance_config = { + "model": "moonshot-v1-8k", + "base_url": "https://api.moonshot.cn/v1", + "moonshot_api_key": "MOONSHOT_API_KEY", + } + + llm_model_instance = MoonshotChat(**llm_instance_config) + graph_config = { + "llm": { + "model_instance": llm_model_instance, + "model_tokens": 5000 + }, + } + \ No newline at end of file diff --git a/source/scrapers/telemetry.rst b/source/scrapers/telemetry.rst new file mode 100644 index 00000000..a80eb3b6 --- /dev/null +++ b/source/scrapers/telemetry.rst @@ -0,0 +1,78 @@ +=============== +Usage Analytics +=============== + +ScrapeGraphAI collects **anonymous** usage data by default to improve the library and guide development efforts. + +**Events Captured** + +We capture events in the following scenarios: + +1. When a ``Graph`` finishes running. +2. When an exception is raised in one of the nodes. + +**Data Collected** + +The data captured is limited to: + +- Operating System and Python version +- A persistent UUID to identify the session, stored in ``~/.scrapegraphai.conf`` + +Additionally, the following properties are collected: + +.. code-block:: python + + properties = { + "graph_name": graph_name, + "llm_model": llm_model_name, + "embedder_model": embedder_model_name, + "source_type": source_type, + "source": source, + "execution_time": execution_time, + "prompt": prompt, + "schema": schema, + "error_node": error_node_name, + "exception": exception, + "response": response, + "total_tokens": total_tokens, + } + +For more details, refer to the `telemetry.py `_ module. + +**Opting Out** + +If you prefer not to participate in telemetry, you can opt out using any of the following methods: + +1. **Programmatically Disable Telemetry**: + + Add the following code at the beginning of your script: + + .. code-block:: python + + from scrapegraphai import telemetry + telemetry.disable_telemetry() + +2. **Configuration File**: + + Set the ``telemetry_enabled`` key to ``false`` in ``~/.scrapegraphai.conf`` under the ``[DEFAULT]`` section: + + .. code-block:: ini + + [DEFAULT] + telemetry_enabled = False + +3. **Environment Variable**: + + - **For a Shell Session**: + + .. code-block:: bash + + export SCRAPEGRAPHAI_TELEMETRY_ENABLED=false + + - **For a Single Command**: + + .. code-block:: bash + + SCRAPEGRAPHAI_TELEMETRY_ENABLED=false python my_script.py + +By following any of these methods, you can easily opt out of telemetry and ensure your usage data is not collected. diff --git a/source/scrapers/types.rst b/source/scrapers/types.rst new file mode 100644 index 00000000..42613066 --- /dev/null +++ b/source/scrapers/types.rst @@ -0,0 +1,225 @@ +Types +===== + + +There are several types of graphs available in the library, each with its own purpose and functionality. The most common ones are: + +- **SmartScraperGraph**: one-page scraper that requires a user-defined prompt and a URL (or local file) to extract information using LLM. +- **SearchGraph**: multi-page scraper that only requires a user-defined prompt to extract information from a search engine using LLM. It is built on top of SmartScraperGraph. +- **SpeechGraph**: text-to-speech pipeline that generates an answer as well as a requested audio file. It is built on top of SmartScraperGraph and requires a user-defined prompt and a URL (or local file). +- **ScriptCreatorGraph**: script generator that creates a Python script to scrape a website using the specified library (e.g. BeautifulSoup). It requires a user-defined prompt and a URL (or local file). + +There are also two additional graphs that can handle multiple sources: + +- **SmartScraperMultiGraph**: similar to `SmartScraperGraph`, but with the ability to handle multiple sources. +- **ScriptCreatorMultiGraph**: similar to `ScriptCreatorGraph`, but with the ability to handle multiple sources. + +With the introduction of `GPT-4o`, two new powerful graphs have been created: + +- **OmniScraperGraph**: similar to `SmartScraperGraph`, but with the ability to scrape images and describe them. +- **OmniSearchGraph**: similar to `SearchGraph`, but with the ability to scrape images and describe them. + + +.. note:: + + They all use a graph configuration to set up LLM models and other parameters. To find out more about the configurations, check the :ref:`LLM` and :ref:`Configuration` sections. + + +.. note:: + + We can pass an optional `schema` parameter to the graph constructor to specify the output schema. If not provided or set to `None`, the schema will be generated by the LLM itself. + +OmniScraperGraph +^^^^^^^^^^^^^^^^ + +.. image:: ../../assets/omniscrapergraph.png + :align: center + :width: 90% + :alt: OmniScraperGraph +| + +First we define the graph configuration, which includes the LLM model and other parameters. Then we create an instance of the OmniScraperGraph class, passing the prompt, source, and configuration as arguments. Finally, we run the graph and print the result. +It will fetch the data from the source and extract the information based on the prompt in JSON format. + +.. code-block:: python + + from scrapegraphai.graphs import OmniScraperGraph + + graph_config = { + "llm": {...}, + } + + omni_scraper_graph = OmniScraperGraph( + prompt="List me all the projects with their titles and image links and descriptions.", + source="https://perinim.github.io/projects", + config=graph_config, + schema=schema + ) + + result = omni_scraper_graph.run() + print(result) + +OmniSearchGraph +^^^^^^^^^^^^^^^ + +.. image:: ../../assets/omnisearchgraph.png + :align: center + :width: 80% + :alt: OmniSearchGraph +| + +Similar to OmniScraperGraph, we define the graph configuration, create multiple of the OmniSearchGraph class, and run the graph. +It will create a search query, fetch the first n results from the search engine, run n OmniScraperGraph instances, and return the results in JSON format. + +.. code-block:: python + + from scrapegraphai.graphs import OmniSearchGraph + + graph_config = { + "llm": {...}, + } + + # Create the OmniSearchGraph instance + omni_search_graph = OmniSearchGraph( + prompt="List me all Chioggia's famous dishes and describe their pictures.", + config=graph_config, + schema=schema + ) + + # Run the graph + result = omni_search_graph.run() + print(result) + +SmartScraperGraph & SmartScraperMultiGraph +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. image:: ../../assets/smartscrapergraph.png + :align: center + :width: 90% + :alt: SmartScraperGraph +| + +First we define the graph configuration, which includes the LLM model and other parameters. Then we create an instance of the SmartScraperGraph class, passing the prompt, source, and configuration as arguments. Finally, we run the graph and print the result. +It will fetch the data from the source and extract the information based on the prompt in JSON format. + +.. code-block:: python + + from scrapegraphai.graphs import SmartScraperGraph + + graph_config = { + "llm": {...}, + } + + smart_scraper_graph = SmartScraperGraph( + prompt="List me all the projects with their descriptions", + source="https://perinim.github.io/projects", + config=graph_config, + schema=schema + ) + + result = smart_scraper_graph.run() + print(result) + +**SmartScraperMultiGraph** is similar to SmartScraperGraph, but it can handle multiple sources. We define the graph configuration, create an instance of the SmartScraperMultiGraph class, and run the graph. + +SearchGraph +^^^^^^^^^^^ + +.. image:: ../../assets/searchgraph.png + :align: center + :width: 80% + :alt: SearchGraph +| + +Similar to SmartScraperGraph, we define the graph configuration, create an instance of the SearchGraph class, and run the graph. +It will create a search query, fetch the first n results from the search engine, run n SmartScraperGraph instances, and return the results in JSON format. + + +.. code-block:: python + + from scrapegraphai.graphs import SearchGraph + + graph_config = { + "llm": {...}, + "embeddings": {...}, + } + + # Create the SearchGraph instance + search_graph = SearchGraph( + prompt="List me all the traditional recipes from Chioggia", + config=graph_config, + schema=schema + ) + + # Run the graph + result = search_graph.run() + print(result) + + +SpeechGraph +^^^^^^^^^^^ + +.. image:: ../../assets/speechgraph.png + :align: center + :width: 90% + :alt: SpeechGraph +| + +Similar to SmartScraperGraph, we define the graph configuration, create an instance of the SpeechGraph class, and run the graph. +It will fetch the data from the source, extract the information based on the prompt, and generate an audio file with the answer, as well as the answer itself, in JSON format. + +.. code-block:: python + + from scrapegraphai.graphs import SpeechGraph + + graph_config = { + "llm": {...}, + "tts_model": {...}, + } + + # ************************************************ + # Create the SpeechGraph instance and run it + # ************************************************ + + speech_graph = SpeechGraph( + prompt="Make a detailed audio summary of the projects.", + source="https://perinim.github.io/projects/", + config=graph_config, + schema=schema + ) + + result = speech_graph.run() + print(result) + + +ScriptCreatorGraph & ScriptCreatorMultiGraph +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. image:: ../../assets/scriptcreatorgraph.png + :align: center + :width: 90% + :alt: ScriptCreatorGraph + +First we define the graph configuration, which includes the LLM model and other parameters. +Then we create an instance of the ScriptCreatorGraph class, passing the prompt, source, and configuration as arguments. Finally, we run the graph and print the result. + +.. code-block:: python + + from scrapegraphai.graphs import ScriptCreatorGraph + + graph_config = { + "llm": {...}, + "library": "beautifulsoup4" + } + + script_creator_graph = ScriptCreatorGraph( + prompt="Create a Python script to scrape the projects.", + source="https://perinim.github.io/projects/", + config=graph_config, + schema=schema + ) + + result = script_creator_graph.run() + print(result) + +**ScriptCreatorMultiGraph** is similar to ScriptCreatorGraph, but it can handle multiple sources. We define the graph configuration, create an instance of the ScriptCreatorMultiGraph class, and run the graph. From 54cdfd140e1b672726113148b2315adb135cfa90 Mon Sep 17 00:00:00 2001 From: Marco Vinciguerra Date: Fri, 10 Jan 2025 09:56:56 +0100 Subject: [PATCH 3/7] fix: removed unused files --- source/conf.py | 42 ---- source/getting_started/examples.rst | 87 ------- source/getting_started/installation.rst | 50 ---- source/index.rst | 46 ---- source/introduction/contributing.rst | 13 - source/introduction/overview.rst | 202 ---------------- source/modules/modules.rst | 10 - source/modules/scrapegraphai.builders.rst | 21 -- source/modules/scrapegraphai.docloaders.rst | 21 -- source/modules/scrapegraphai.graphs.rst | 133 ---------- .../scrapegraphai.helpers.models_tokens.rst | 28 --- source/modules/scrapegraphai.helpers.rst | 45 ---- source/modules/scrapegraphai.integrations.rst | 21 -- source/modules/scrapegraphai.models.rst | 101 -------- source/modules/scrapegraphai.nodes.rst | 165 ------------- source/modules/scrapegraphai.rst | 25 -- source/modules/scrapegraphai.utils.rst | 93 ------- source/scrapers/graph_config.rst | 88 ------- source/scrapers/graphs.rst | 13 - source/scrapers/llm.rst | 228 ------------------ source/scrapers/telemetry.rst | 78 ------ source/scrapers/types.rst | 225 ----------------- 22 files changed, 1735 deletions(-) delete mode 100644 source/conf.py delete mode 100644 source/getting_started/examples.rst delete mode 100644 source/getting_started/installation.rst delete mode 100644 source/index.rst delete mode 100644 source/introduction/contributing.rst delete mode 100644 source/introduction/overview.rst delete mode 100644 source/modules/modules.rst delete mode 100644 source/modules/scrapegraphai.builders.rst delete mode 100644 source/modules/scrapegraphai.docloaders.rst delete mode 100644 source/modules/scrapegraphai.graphs.rst delete mode 100644 source/modules/scrapegraphai.helpers.models_tokens.rst delete mode 100644 source/modules/scrapegraphai.helpers.rst delete mode 100644 source/modules/scrapegraphai.integrations.rst delete mode 100644 source/modules/scrapegraphai.models.rst delete mode 100644 source/modules/scrapegraphai.nodes.rst delete mode 100644 source/modules/scrapegraphai.rst delete mode 100644 source/modules/scrapegraphai.utils.rst delete mode 100644 source/scrapers/graph_config.rst delete mode 100644 source/scrapers/graphs.rst delete mode 100644 source/scrapers/llm.rst delete mode 100644 source/scrapers/telemetry.rst delete mode 100644 source/scrapers/types.rst diff --git a/source/conf.py b/source/conf.py deleted file mode 100644 index 9fc3aec7..00000000 --- a/source/conf.py +++ /dev/null @@ -1,42 +0,0 @@ -# Configuration file for the Sphinx documentation builder. -# -# For the full list of built-in configuration values, see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html - -# -- Project information ----------------------------------------------------- -# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information - -# -- Path setup -------------------------------------------------------------- - -import os -import sys - -# import all the modules -sys.path.insert(0, os.path.abspath('../../')) - -project = 'ScrapeGraphAI' -copyright = '2024, ScrapeGraphAI' -author = 'Marco Vinciguerra, Marco Perini, Lorenzo Padoan' - -html_last_updated_fmt = "%b %d, %Y" - -# -- General configuration --------------------------------------------------- -# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration - -extensions = ['sphinx.ext.autodoc', 'sphinx.ext.napoleon'] - -templates_path = ['_templates'] -exclude_patterns = [] - -# -- Options for HTML output ------------------------------------------------- -# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output - -html_theme = 'furo' -html_theme_options = { - "source_repository": "https://github.com/VinciGit00/Scrapegraph-ai/", - "source_branch": "main", - "source_directory": "docs/source/", - 'navigation_with_keys': True, - 'sidebar_hide_name': False, -} - diff --git a/source/getting_started/examples.rst b/source/getting_started/examples.rst deleted file mode 100644 index 1bed0a6e..00000000 --- a/source/getting_started/examples.rst +++ /dev/null @@ -1,87 +0,0 @@ -Examples -======== - -Let's suppose you want to scrape a website to get a list of projects with their descriptions. -You can use the `SmartScraperGraph` class to do that. -The following examples show how to use the `SmartScraperGraph` class with OpenAI models and local models. - -OpenAI models -^^^^^^^^^^^^^ - -.. code-block:: python - - import os - from dotenv import load_dotenv - from scrapegraphai.graphs import SmartScraperGraph - from scrapegraphai.utils import prettify_exec_info - - load_dotenv() - - openai_key = os.getenv("OPENAI_APIKEY") - - graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - }, - } - - # ************************************************ - # Create the SmartScraperGraph instance and run it - # ************************************************ - - smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config - ) - - result = smart_scraper_graph.run() - print(result) - - -Local models -^^^^^^^^^^^^^ - -Remember to have installed in your pc ollama `ollama ` -Remember to pull the right model for LLM and for the embeddings, like: - -.. code-block:: bash - - ollama pull llama3 - ollama pull nomic-embed-text - ollama pull mistral - -After that, you can run the following code, using only your machine resources brum brum brum: - -.. code-block:: python - - from scrapegraphai.graphs import SmartScraperGraph - from scrapegraphai.utils import prettify_exec_info - - graph_config = { - "llm": { - "model": "ollama/mistral", - "temperature": 1, - "format": "json", # Ollama needs the format to be specified explicitly - "model_tokens": 2000, # depending on the model set context length - "base_url": "http://localhost:11434", # set ollama URL of the local host (YOU CAN CHANGE IT, if you have a different endpoint - } - } - - # ************************************************ - # Create the SmartScraperGraph instance and run it - # ************************************************ - - smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config - ) - - result = smart_scraper_graph.run() - print(result) - -To find out how you can customize the `graph_config` dictionary, by using different LLM and adding new parameters, check the `Scrapers` section! \ No newline at end of file diff --git a/source/getting_started/installation.rst b/source/getting_started/installation.rst deleted file mode 100644 index 666322af..00000000 --- a/source/getting_started/installation.rst +++ /dev/null @@ -1,50 +0,0 @@ -Installation ------------- - -In the following sections I will guide you through the installation process of the required components -for this project. - -Prerequisites -^^^^^^^^^^^^^ - -- `Python >=3.9 `_ -- `pip `_ -- `Ollama `_ (optional for local models) - - -Install the library -^^^^^^^^^^^^^^^^^^^^ - -The library is available on PyPI, so it can be installed using the following command: - -.. code-block:: bash - - pip install scrapegraphai - -.. important:: - - It is higly recommended to install the library in a virtual environment (conda, venv, etc.) - -If your clone the repository, it is recommended to use a package manager like `rye `_. -To install the library using rye, you can run the following command: - -.. code-block:: bash - - rye pin 3.10 - rye sync - rye build - -.. caution:: - - **Rye** must be installed first by following the instructions on the `official website `_. - -Additionally on Windows when using WSL -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -If you are using Windows Subsystem for Linux (WSL) and you are facing issues with the installation of the library, you might need to install the following packages: - -.. code-block:: bash - - sudo apt-get -y install libnss3 libnspr4 libgbm1 libasound2 - - diff --git a/source/index.rst b/source/index.rst deleted file mode 100644 index acc0db73..00000000 --- a/source/index.rst +++ /dev/null @@ -1,46 +0,0 @@ -.. Scrapegraph-ai documentation master file, created by - sphinx-quickstart on Wed Jan 31 15:38:23 2024. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -.. toctree:: - :maxdepth: 2 - :caption: Introduction - - introduction/overview - introduction/contributing - -.. toctree:: - :maxdepth: 2 - :caption: Getting Started - - getting_started/installation - getting_started/examples - -.. toctree:: - :maxdepth: 2 - :caption: Scrapers - - scrapers/graphs - -.. toctree:: - :maxdepth: 2 - :caption: Modules - - modules/modules - -.. toctree:: - :hidden: - :caption: EXTERNAL RESOURCES - - GitHub - Discord - Linkedin - Twitter - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` \ No newline at end of file diff --git a/source/introduction/contributing.rst b/source/introduction/contributing.rst deleted file mode 100644 index 75f5adab..00000000 --- a/source/introduction/contributing.rst +++ /dev/null @@ -1,13 +0,0 @@ -Contributing -============ - -Hey, you want to contribute? Awesome! -Just fork the repo, make your changes, and send a pull request. -If you're not sure if it's a good idea, open an issue and we'll discuss it. - -Go and check out the `contributing guidelines `__ for more information. - -License -======= -This project is licensed under the MIT license. -See the `LICENSE `__ file for more details. diff --git a/source/introduction/overview.rst b/source/introduction/overview.rst deleted file mode 100644 index 4dcaadbe..00000000 --- a/source/introduction/overview.rst +++ /dev/null @@ -1,202 +0,0 @@ -.. image:: ../../assets/scrapegraphai_logo.png - :align: center - :width: 50% - :alt: ScrapegraphAI - -Overview -======== - -ScrapeGraphAI is an **open-source** Python library designed to revolutionize **scraping** tools. -In today's data-intensive digital landscape, this library stands out by integrating **Large Language Models** (LLMs) -and modular **graph-based** pipelines to automate the scraping of data from various sources (e.g., websites, local files etc.). - -Simply specify the information you need to extract, and ScrapeGraphAI handles the rest, providing a more **flexible** and **low-maintenance** solution compared to traditional scraping tools. - -Why ScrapegraphAI? -================== - -Traditional web scraping tools often rely on fixed patterns or manual configuration to extract data from web pages. -ScrapegraphAI, leveraging the power of LLMs, adapts to changes in website structures, reducing the need for constant developer intervention. -This flexibility ensures that scrapers remain functional even when website layouts change. - -We support many LLMs including **GPT, Gemini, Groq, Azure, Hugging Face** etc. -as well as local models which can run on your machine using **Ollama**. - -AI Models and Token Limits -========================== - -ScrapGraphAI supports a wide range of AI models from various providers. Each model has a specific token limit, which is important to consider when designing your scraping pipelines. Here's an overview of the supported models and their token limits: - -OpenAI Models -------------- -- GPT-3.5 Turbo (16,385 tokens) -- GPT-3.5 (4,096 tokens) -- GPT-3.5 Turbo Instruct (4,096 tokens) -- GPT-4 Turbo Preview (128,000 tokens) -- GPT-4 Vision Preview (128,000 tokens) -- GPT-4 (8,192 tokens) -- GPT-4 32k (32,768 tokens) -- GPT-4o (128,000 tokens) -- O1 Preview (128,000 tokens) -- O1 Mini (128,000 tokens) - -Azure OpenAI Models -------------------- -- GPT-3.5 Turbo (16,385 tokens) -- GPT-3.5 (4,096 tokens) -- GPT-4 Turbo Preview (128,000 tokens) -- GPT-4 (8,192 tokens) -- GPT-4 32k (32,768 tokens) -- GPT-4o (128,000 tokens) -- O1 Preview (128,000 tokens) -- O1 Mini (128,000 tokens) - -Google AI Models ----------------- -- Gemini Pro (128,000 tokens) -- Gemini 1.5 Flash (128,000 tokens) -- Gemini 1.5 Pro (128,000 tokens) -- Gemini 1.0 Pro (128,000 tokens) - -Anthropic Models ----------------- -- Claude Instant (100,000 tokens) -- Claude 2 (9,000 tokens) -- Claude 2.1 (200,000 tokens) -- Claude 3 (200,000 tokens) -- Claude 3.5 (200,000 tokens) -- Claude 3 Opus (200,000 tokens) -- Claude 3 Sonnet (200,000 tokens) -- Claude 3 Haiku (200,000 tokens) - -Mistral AI Models ------------------ -- Mistral Large Latest (128,000 tokens) -- Open Mistral Nemo (128,000 tokens) -- Codestral Latest (32,000 tokens) -- Open Mistral 7B (32,000 tokens) -- Open Mixtral 8x7B (32,000 tokens) -- Open Mixtral 8x22B (64,000 tokens) -- Open Codestral Mamba (256,000 tokens) - -Ollama Models -------------- -- Command-R (12,800 tokens) -- CodeLlama (16,000 tokens) -- DBRX (32,768 tokens) -- DeepSeek Coder 33B (16,000 tokens) -- Llama2 Series (4,096 tokens) -- Llama3 Series (8,192-128,000 tokens) -- Mistral Models (32,000-128,000 tokens) -- Mixtral 8x22B Instruct (65,536 tokens) -- Phi3 Series (12,800-128,000 tokens) -- Qwen Series (32,000 tokens) - -Hugging Face Models ------------------- -- Grok-1 (8,192 tokens) -- Meta Llama 3 Series (8,192 tokens) -- Google Gemma Series (8,192 tokens) -- Microsoft Phi Series (2,048-131,072 tokens) -- GPT-2 Series (1,024 tokens) -- DeepSeek V2 Series (131,072 tokens) - -Bedrock Models -------------- -- Claude 3 Series (200,000 tokens) -- Llama2 & Llama3 Series (4,096-8,192 tokens) -- Mistral Series (32,768 tokens) -- Titan Embed Text (8,000 tokens) -- Cohere Embed (512 tokens) - -Fireworks Models ---------------- -- Llama V2 7B (4,096 tokens) -- Mixtral 8x7B Instruct (4,096 tokens) -- Llama 3.1 Series (131,072 tokens) -- Mixtral MoE Series (65,536 tokens) - -For a complete and up-to-date list of supported models and their token limits, please refer to the API documentation. - -Understanding token limits is crucial for optimizing your scraping tasks. Larger token limits allow for processing more text in a single API call, which can be beneficial for scraping lengthy web pages or documents. - - -Library Diagram -=============== - -With ScrapegraphAI you can use many already implemented scraping pipelines or create your own. - -The diagram below illustrates the high-level architecture of ScrapeGraphAI: - -.. image:: ../../assets/project_overview_diagram.png - :align: center - :width: 70% - :alt: ScrapegraphAI Overview - -FAQ -=== - -1. **What is ScrapeGraphAI?** - - ScrapeGraphAI is an open-source python library that uses large language models (LLMs) and graph logic to automate the creation of scraping pipelines for websites and various document types. - -2. **How does ScrapeGraphAI differ from traditional scraping tools?** - - Traditional scraping tools rely on fixed patterns and manual configurations, whereas ScrapeGraphAI adapts to website structure changes using LLMs, reducing the need for constant developer intervention. - -3. **Which LLMs are supported by ScrapeGraphAI?** - - ScrapeGraphAI supports several LLMs, including GPT, Gemini, Groq, Azure, Hugging Face, and local models that can run on your machine using Ollama. - -4. **Can ScrapeGraphAI handle different document formats?** - - Yes, ScrapeGraphAI can scrape information from various document formats such as XML, HTML, JSON, and more. - -5. **I get an empty or incorrect output when scraping a website. What should I do?** - - There are several reasons behind this issue, but for most cases, you can try the following: - - - Set the `headless` parameter to `False` in the graph_config. Some javascript-heavy websites might require it. - - - Check your internet connection. Low speed or unstable connection can cause the HTML to not load properly. - - - Try using a proxy server to mask your IP address. Check out the :ref:`Proxy` section for more information on how to configure proxy settings. - - - Use a different LLM model. Some models might perform better on certain websites than others. - - - Set the `verbose` parameter to `True` in the graph_config to see more detailed logs. - - - Visualize the pipeline graphically using :ref:`Burr`. - - If the issue persists, please report it on the GitHub repository. - -6. **How does ScrapeGraphAI handle the context window limit of LLMs?** - - By splitting big websites/documents into chunks with overlaps and applying compression techniques to reduce the number of tokens. If multiple chunks are present, we will have multiple answers to the user prompt, and therefore, we merge them together in the last step of the scraping pipeline. - -7. **How can I contribute to ScrapeGraphAI?** - - You can contribute to ScrapeGraphAI by submitting bug reports, feature requests, or pull requests on the GitHub repository. Join our `Discord `_ community and follow us on social media! - -Sponsors -======== - -.. image:: ../../assets/browserbase_logo.png - :width: 10% - :alt: Browserbase - :target: https://www.browserbase.com/ - -.. image:: ../../assets/serp_api_logo.png - :width: 10% - :alt: Serp API - :target: https://serpapi.com?utm_source=scrapegraphai - -.. image:: ../../assets/transparent_stat.png - :width: 15% - :alt: Stat Proxies - :target: https://dashboard.statproxies.com/?refferal=scrapegraph - -.. image:: ../../assets/scrapedo.png - :width: 11% - :alt: Scrapedo - :target: https://scrape.do diff --git a/source/modules/modules.rst b/source/modules/modules.rst deleted file mode 100644 index 7551ea96..00000000 --- a/source/modules/modules.rst +++ /dev/null @@ -1,10 +0,0 @@ -scrapegraphai -============= - -.. toctree:: - :maxdepth: 4 - - scrapegraphai - - scrapegraphai.helpers.models_tokens - diff --git a/source/modules/scrapegraphai.builders.rst b/source/modules/scrapegraphai.builders.rst deleted file mode 100644 index 668ea5bc..00000000 --- a/source/modules/scrapegraphai.builders.rst +++ /dev/null @@ -1,21 +0,0 @@ -scrapegraphai.builders package -============================== - -Submodules ----------- - -scrapegraphai.builders.graph\_builder module --------------------------------------------- - -.. automodule:: scrapegraphai.builders.graph_builder - :members: - :undoc-members: - :show-inheritance: - -Module contents ---------------- - -.. automodule:: scrapegraphai.builders - :members: - :undoc-members: - :show-inheritance: diff --git a/source/modules/scrapegraphai.docloaders.rst b/source/modules/scrapegraphai.docloaders.rst deleted file mode 100644 index be66f042..00000000 --- a/source/modules/scrapegraphai.docloaders.rst +++ /dev/null @@ -1,21 +0,0 @@ -scrapegraphai.docloaders package -================================ - -Submodules ----------- - -scrapegraphai.docloaders.chromium module ----------------------------------------- - -.. automodule:: scrapegraphai.docloaders.chromium - :members: - :undoc-members: - :show-inheritance: - -Module contents ---------------- - -.. automodule:: scrapegraphai.docloaders - :members: - :undoc-members: - :show-inheritance: diff --git a/source/modules/scrapegraphai.graphs.rst b/source/modules/scrapegraphai.graphs.rst deleted file mode 100644 index 7eca6683..00000000 --- a/source/modules/scrapegraphai.graphs.rst +++ /dev/null @@ -1,133 +0,0 @@ -scrapegraphai.graphs package -============================ - -Submodules ----------- - -scrapegraphai.graphs.abstract\_graph module -------------------------------------------- - -.. automodule:: scrapegraphai.graphs.abstract_graph - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.graphs.base\_graph module ---------------------------------------- - -.. automodule:: scrapegraphai.graphs.base_graph - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.graphs.csv\_scraper\_graph module ------------------------------------------------ - -.. automodule:: scrapegraphai.graphs.csv_scraper_graph - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.graphs.deep\_scraper\_graph module ------------------------------------------------- - -.. automodule:: scrapegraphai.graphs.deep_scraper_graph - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.graphs.json\_scraper\_graph module ------------------------------------------------- - -.. automodule:: scrapegraphai.graphs.json_scraper_graph - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.graphs.omni\_scraper\_graph module ------------------------------------------------- - -.. automodule:: scrapegraphai.graphs.omni_scraper_graph - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.graphs.omni\_search\_graph module ------------------------------------------------ - -.. automodule:: scrapegraphai.graphs.omni_search_graph - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.graphs.pdf\_scraper\_graph module ------------------------------------------------ - -.. automodule:: scrapegraphai.graphs.pdf_scraper_graph - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.graphs.script\_creator\_graph module --------------------------------------------------- - -.. automodule:: scrapegraphai.graphs.script_creator_graph - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.graphs.search\_graph module ------------------------------------------ - -.. automodule:: scrapegraphai.graphs.search_graph - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.graphs.smart\_scraper\_graph module -------------------------------------------------- - -.. automodule:: scrapegraphai.graphs.smart_scraper_graph - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.graphs.smart\_scraper\_graph\_burr module -------------------------------------------------------- - -.. automodule:: scrapegraphai.graphs.smart_scraper_graph_burr - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.graphs.smart\_scraper\_graph\_hamilton module ------------------------------------------------------------ - -.. automodule:: scrapegraphai.graphs.smart_scraper_graph_hamilton - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.graphs.speech\_graph module ------------------------------------------ - -.. automodule:: scrapegraphai.graphs.speech_graph - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.graphs.xml\_scraper\_graph module ------------------------------------------------ - -.. automodule:: scrapegraphai.graphs.xml_scraper_graph - :members: - :undoc-members: - :show-inheritance: - -Module contents ---------------- - -.. automodule:: scrapegraphai.graphs - :members: - :undoc-members: - :show-inheritance: diff --git a/source/modules/scrapegraphai.helpers.models_tokens.rst b/source/modules/scrapegraphai.helpers.models_tokens.rst deleted file mode 100644 index 82615b3b..00000000 --- a/source/modules/scrapegraphai.helpers.models_tokens.rst +++ /dev/null @@ -1,28 +0,0 @@ -scrapegraphai.helpers.models_tokens module -========================================== - -.. automodule:: scrapegraphai.helpers.models_tokens - :members: - :undoc-members: - :show-inheritance: - -This module contains a comprehensive dictionary of AI models and their corresponding token limits. The `models_tokens` dictionary is organized by provider (e.g., OpenAI, Azure OpenAI, Google AI, etc.) and includes various models with their maximum token counts. - -Example usage: - -.. code-block:: python - - from scrapegraphai.helpers.models_tokens import models_tokens - - # Get the token limit for GPT-4 - gpt4_limit = models_tokens['openai']['gpt-4'] - print(f"GPT-4 token limit: {gpt4_limit}") - - # Check the token limit for a specific model - model_name = "gpt-4o-mini" - if model_name in models_tokens['openai']: - print(f"{model_name} token limit: {models_tokens['openai'][model_name]}") - else: - print(f"{model_name} not found in the models list") - -This information is crucial for users to understand the capabilities and limitations of different AI models when designing their scraping pipelines. \ No newline at end of file diff --git a/source/modules/scrapegraphai.helpers.rst b/source/modules/scrapegraphai.helpers.rst deleted file mode 100644 index 5bcdf457..00000000 --- a/source/modules/scrapegraphai.helpers.rst +++ /dev/null @@ -1,45 +0,0 @@ -scrapegraphai.helpers package -============================= - -Submodules ----------- - -scrapegraphai.helpers.models\_tokens module -------------------------------------------- - -.. automodule:: scrapegraphai.helpers.models_tokens - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.helpers.nodes\_metadata module --------------------------------------------- - -.. automodule:: scrapegraphai.helpers.nodes_metadata - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.helpers.robots module ------------------------------------ - -.. automodule:: scrapegraphai.helpers.robots - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.helpers.schemas module ------------------------------------- - -.. automodule:: scrapegraphai.helpers.schemas - :members: - :undoc-members: - :show-inheritance: - -Module contents ---------------- - -.. automodule:: scrapegraphai.helpers - :members: - :undoc-members: - :show-inheritance: diff --git a/source/modules/scrapegraphai.integrations.rst b/source/modules/scrapegraphai.integrations.rst deleted file mode 100644 index a90c8b7a..00000000 --- a/source/modules/scrapegraphai.integrations.rst +++ /dev/null @@ -1,21 +0,0 @@ -scrapegraphai.integrations package -================================== - -Submodules ----------- - -scrapegraphai.integrations.burr\_bridge module ----------------------------------------------- - -.. automodule:: scrapegraphai.integrations.burr_bridge - :members: - :undoc-members: - :show-inheritance: - -Module contents ---------------- - -.. automodule:: scrapegraphai.integrations - :members: - :undoc-members: - :show-inheritance: diff --git a/source/modules/scrapegraphai.models.rst b/source/modules/scrapegraphai.models.rst deleted file mode 100644 index f16ad476..00000000 --- a/source/modules/scrapegraphai.models.rst +++ /dev/null @@ -1,101 +0,0 @@ -scrapegraphai.models package -============================ - -Submodules ----------- - -scrapegraphai.models.anthropic module -------------------------------------- - -.. automodule:: scrapegraphai.models.anthropic - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.models.azure\_openai module ------------------------------------------ - -.. automodule:: scrapegraphai.models.azure_openai - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.models.bedrock module ------------------------------------ - -.. automodule:: scrapegraphai.models.bedrock - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.models.deepseek module ------------------------------------- - -.. automodule:: scrapegraphai.models.deepseek - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.models.gemini module ----------------------------------- - -.. automodule:: scrapegraphai.models.gemini - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.models.groq module --------------------------------- - -.. automodule:: scrapegraphai.models.groq - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.models.hugging\_face module ------------------------------------------ - -.. automodule:: scrapegraphai.models.hugging_face - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.models.ollama module ----------------------------------- - -.. automodule:: scrapegraphai.models.ollama - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.models.openai module ----------------------------------- - -.. automodule:: scrapegraphai.models.openai - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.models.openai\_itt module ---------------------------------------- - -.. automodule:: scrapegraphai.models.openai_itt - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.models.openai\_tts module ---------------------------------------- - -.. automodule:: scrapegraphai.models.openai_tts - :members: - :undoc-members: - :show-inheritance: - -Module contents ---------------- - -.. automodule:: scrapegraphai.models - :members: - :undoc-members: - :show-inheritance: diff --git a/source/modules/scrapegraphai.nodes.rst b/source/modules/scrapegraphai.nodes.rst deleted file mode 100644 index c89eecfc..00000000 --- a/source/modules/scrapegraphai.nodes.rst +++ /dev/null @@ -1,165 +0,0 @@ -scrapegraphai.nodes package -=========================== - -Submodules ----------- - -scrapegraphai.nodes.base\_node module -------------------------------------- - -.. automodule:: scrapegraphai.nodes.base_node - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.conditional\_node module --------------------------------------------- - -.. automodule:: scrapegraphai.nodes.conditional_node - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.fetch\_node module --------------------------------------- - -.. automodule:: scrapegraphai.nodes.fetch_node - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.generate\_answer\_csv\_node module ------------------------------------------------------- - -.. automodule:: scrapegraphai.nodes.generate_answer_csv_node - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.generate\_answer\_node module -------------------------------------------------- - -.. automodule:: scrapegraphai.nodes.generate_answer_node - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.generate\_answer\_omni\_node module -------------------------------------------------------- - -.. automodule:: scrapegraphai.nodes.generate_answer_omni_node - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.generate\_answer\_pdf\_node module ------------------------------------------------------- - -.. automodule:: scrapegraphai.nodes.generate_answer_pdf_node - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.generate\_scraper\_node module --------------------------------------------------- - -.. automodule:: scrapegraphai.nodes.generate_scraper_node - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.get\_probable\_tags\_node module ----------------------------------------------------- - -.. automodule:: scrapegraphai.nodes.get_probable_tags_node - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.graph\_iterator\_node module ------------------------------------------------- - -.. automodule:: scrapegraphai.nodes.graph_iterator_node - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.image\_to\_text\_node module ------------------------------------------------- - -.. automodule:: scrapegraphai.nodes.image_to_text_node - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.merge\_answers\_node module ------------------------------------------------ - -.. automodule:: scrapegraphai.nodes.merge_answers_node - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.parse\_node module --------------------------------------- - -.. automodule:: scrapegraphai.nodes.parse_node - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.rag\_node module ------------------------------------- - -.. automodule:: scrapegraphai.nodes.rag_node - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.robots\_node module ---------------------------------------- - -.. automodule:: scrapegraphai.nodes.robots_node - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.search\_internet\_node module -------------------------------------------------- - -.. automodule:: scrapegraphai.nodes.search_internet_node - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.search\_link\_node module ---------------------------------------------- - -.. automodule:: scrapegraphai.nodes.search_link_node - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.search\_node\_with\_context module ------------------------------------------------------- - -.. automodule:: scrapegraphai.nodes.search_node_with_context - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.nodes.text\_to\_speech\_node module -------------------------------------------------- - -.. automodule:: scrapegraphai.nodes.text_to_speech_node - :members: - :undoc-members: - :show-inheritance: - -Module contents ---------------- - -.. automodule:: scrapegraphai.nodes - :members: - :undoc-members: - :show-inheritance: diff --git a/source/modules/scrapegraphai.rst b/source/modules/scrapegraphai.rst deleted file mode 100644 index df0fb1a9..00000000 --- a/source/modules/scrapegraphai.rst +++ /dev/null @@ -1,25 +0,0 @@ -scrapegraphai package -===================== - -Subpackages ------------ - -.. toctree:: - :maxdepth: 4 - - scrapegraphai.builders - scrapegraphai.docloaders - scrapegraphai.graphs - scrapegraphai.helpers - scrapegraphai.integrations - scrapegraphai.models - scrapegraphai.nodes - scrapegraphai.utils - -Module contents ---------------- - -.. automodule:: scrapegraphai - :members: - :undoc-members: - :show-inheritance: diff --git a/source/modules/scrapegraphai.utils.rst b/source/modules/scrapegraphai.utils.rst deleted file mode 100644 index d9100f1e..00000000 --- a/source/modules/scrapegraphai.utils.rst +++ /dev/null @@ -1,93 +0,0 @@ -scrapegraphai.utils package -=========================== - -Submodules ----------- - -scrapegraphai.utils.cleanup\_html module ----------------------------------------- - -.. automodule:: scrapegraphai.utils.cleanup_html - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.utils.convert\_to\_csv module -------------------------------------------- - -.. automodule:: scrapegraphai.utils.convert_to_csv - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.utils.convert\_to\_json module --------------------------------------------- - -.. automodule:: scrapegraphai.utils.convert_to_json - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.utils.parse\_state\_keys module ---------------------------------------------- - -.. automodule:: scrapegraphai.utils.parse_state_keys - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.utils.prettify\_exec\_info module ------------------------------------------------ - -.. automodule:: scrapegraphai.utils.prettify_exec_info - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.utils.proxy\_rotation module ------------------------------------------- - -.. automodule:: scrapegraphai.utils.proxy_rotation - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.utils.research\_web module ----------------------------------------- - -.. automodule:: scrapegraphai.utils.research_web - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.utils.save\_audio\_from\_bytes module ---------------------------------------------------- - -.. automodule:: scrapegraphai.utils.save_audio_from_bytes - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.utils.sys\_dynamic\_import module ------------------------------------------------ - -.. automodule:: scrapegraphai.utils.sys_dynamic_import - :members: - :undoc-members: - :show-inheritance: - -scrapegraphai.utils.token\_calculator module --------------------------------------------- - -.. automodule:: scrapegraphai.utils.token_calculator - :members: - :undoc-members: - :show-inheritance: - -Module contents ---------------- - -.. automodule:: scrapegraphai.utils - :members: - :undoc-members: - :show-inheritance: diff --git a/source/scrapers/graph_config.rst b/source/scrapers/graph_config.rst deleted file mode 100644 index e16ccae7..00000000 --- a/source/scrapers/graph_config.rst +++ /dev/null @@ -1,88 +0,0 @@ -.. _Configuration: - -Additional Parameters -===================== - -It is possible to customize the behavior of the graphs by setting some configuration options. -Some interesting ones are: - -- `verbose`: If set to `True`, some debug information will be printed to the console. -- `headless`: If set to `False`, the web browser will be opened on the URL requested and close right after the HTML is fetched. -- `max_results`: The maximum number of results to be fetched from the search engine. Useful in `SearchGraph`. -- `output_path`: The path where the output files will be saved. Useful in `SpeechGraph`. -- `loader_kwargs`: A dictionary with additional parameters to be passed to the `Loader` class, such as `proxy`. -- `burr_kwargs`: A dictionary with additional parameters to enable `Burr` graphical user interface. -- `max_images`: The maximum number of images to be analyzed. Useful in `OmniScraperGraph` and `OmniSearchGraph`. -- `cache_path`: The path where the cache files will be saved. If already exists, the cache will be loaded from this path. -- `additional_info`: Add additional text to default prompts defined in the graphs. -.. _Burr: - -Burr Integration -^^^^^^^^^^^^^^^^ - -`Burr` is an open source python library that allows the creation and management of state machine applications. Discover more about it `here `_. -It is possible to enable a local hosted webapp to visualize the scraping pipelines and the data flow. -First, we need to install the `burr` library as follows: - -.. code-block:: bash - - pip install scrapegraphai[burr] - -and then run the graphical user interface as follows: - -.. code-block:: bash - - burr - -To log your graph execution in the platform, you need to set the `burr_kwargs` parameter in the graph configuration as follows: - -.. code-block:: python - - graph_config = { - "llm":{...}, - "burr_kwargs": { - "project_name": "test-scraper", - "app_instance_id":"some_id", - } - } - -.. _Proxy: - -Proxy Rotation -^^^^^^^^^^^^^^ - -It is possible to rotate the proxy by setting the `proxy` option in the graph configuration. -We provide a free proxy service which is based on `free-proxy `_ library and can be used as follows: - -.. code-block:: python - - graph_config = { - "llm":{...}, - "loader_kwargs": { - "proxy" : { - "server": "broker", - "criteria": { - "anonymous": True, - "secure": True, - "countryset": {"IT"}, - "timeout": 10.0, - "max_shape": 3 - }, - }, - }, - } - -Do you have a proxy server? You can use it as follows: - -.. code-block:: python - - graph_config = { - "llm":{...}, - "loader_kwargs": { - "proxy" : { - "server": "http://your_proxy_server:port", - "username": "your_username", - "password": "your_password", - }, - }, - } diff --git a/source/scrapers/graphs.rst b/source/scrapers/graphs.rst deleted file mode 100644 index ee5f072f..00000000 --- a/source/scrapers/graphs.rst +++ /dev/null @@ -1,13 +0,0 @@ -Graphs -====== - -Graphs are scraping pipelines aimed at solving specific tasks. They are composed by nodes which can be configured individually to address different aspects of the task (fetching data, extracting information, etc.). - -.. toctree:: - :maxdepth: 4 - - types - llm - graph_config - benchmarks - telemetry diff --git a/source/scrapers/llm.rst b/source/scrapers/llm.rst deleted file mode 100644 index 7b1df30e..00000000 --- a/source/scrapers/llm.rst +++ /dev/null @@ -1,228 +0,0 @@ -.. _llm: - -LLM -=== - -We support many known LLM models and providers used to analyze the web pages and extract the information requested by the user. Models can be split in **Chat Models** and **Embedding Models** (the latter are mainly used for Retrieval Augmented Generation RAG). -These models are specified inside the graph configuration dictionary and can be used interchangeably, for example by defining a different model for llm and embeddings. - -- **Local Models**: These models are hosted on the local machine and can be used without any API key. -- **API-based Models**: These models are hosted on the cloud and require an API key to access them (eg. OpenAI, Groq, etc). - -.. note:: - - If the emebedding model is not specified, the library will use the default one for that LLM, if available. - -Local Models ------------- - -Currently, local models are supported through Ollama integration. Ollama is a provider of LLM models which can be downloaded from here `Ollama `_. -Let's say we want to use **llama3** as chat model and **nomic-embed-text** as embedding model. We first need to pull them from ollama using: - -.. code-block:: bash - - ollama pull llama3 - ollama pull nomic-embed-text - -Then we can use them in the graph configuration as follows: - -.. code-block:: python - - graph_config = { - "llm": { - "model": "llama3", - "temperature": 0.0, - "format": "json", - }, - "embeddings": { - "model": "nomic-embed-text", - }, - } - -You can also specify the **base_url** parameter to specify the models endpoint. By default, it is set to http://localhost:11434. This is useful if you are running Ollama on a Docker container or on a different machine. - -If you want to host Ollama in a Docker container, you can use the following command: - -.. code-block:: bash - - docker-compose up -d - docker exec -it ollama ollama pull llama3 - -API-based Models ----------------- - -OpenAI -^^^^^^ - -You can get the API key from `here `_. - -.. code-block:: python - - graph_config = { - "llm": { - "api_key": "OPENAI_API_KEY", - "model": "gpt-3.5-turbo", - }, - } - -If you want to use text to speech models, you can specify the `tts_model` parameter: - -.. code-block:: python - - graph_config = { - "llm": { - "api_key": "OPENAI_API_KEY", - "model": "gpt-3.5-turbo", - "temperature": 0.7, - }, - "tts_model": { - "api_key": "OPENAI_API_KEY", - "model": "tts-1", - "voice": "alloy" - }, - } - -Gemini -^^^^^^ - -You can get the API key from `here `_. - -**Note**: some countries are not supported and therefore it won't be possible to request an API key. A possible workaround is to use a VPN or run the library on Colab. - -.. code-block:: python - - graph_config = { - "llm": { - "api_key": "GEMINI_API_KEY", - "model": "gemini-pro" - }, - } - -Groq -^^^^ - -You can get the API key from `here `_. Groq doesn't support embedding models, so in the following example we are using Ollama one. - -.. code-block:: python - - graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": "GROQ_API_KEY", - "temperature": 0 - }, - "embeddings": { - "model": "ollama/nomic-embed-text", - }, - } - -Azure -^^^^^ - -We can also pass a model instance for the chat model and the embedding model. For Azure, a possible configuration would be: - -.. code-block:: python - - llm_model_instance = AzureChatOpenAI( - openai_api_version="AZURE_OPENAI_API_VERSION", - azure_deployment="AZURE_OPENAI_CHAT_DEPLOYMENT_NAME" - ) - - embedder_model_instance = AzureOpenAIEmbeddings( - azure_deployment="AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT_NAME", - openai_api_version="AZURE_OPENAI_API_VERSION", - ) - # Supposing model_tokens are 100K - model_tokens_count = 100000 - graph_config = { - "llm": { - "model_instance": llm_model_instance, - "model_tokens": model_tokens_count, - }, - "embeddings": { - "model_instance": embedder_model_instance - } - } - -Hugging Face Hub -^^^^^^^^^^^^^^^^ - -We can also pass a model instance for the chat model and the embedding model. For Hugging Face, a possible configuration would be: - -.. code-block:: python - - llm_model_instance = HuggingFaceEndpoint( - repo_id="mistralai/Mistral-7B-Instruct-v0.2", - max_length=128, - temperature=0.5, - token="HUGGINGFACEHUB_API_TOKEN" - ) - - embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key="HUGGINGFACEHUB_API_TOKEN", - model_name="sentence-transformers/all-MiniLM-l6-v2" - ) - - graph_config = { - "llm": { - "model_instance": llm_model_instance - }, - "embeddings": { - "model_instance": embedder_model_instance - } - } - -Anthropic -^^^^^^^^^ - -We can also pass a model instance for the chat model and the embedding model. For Anthropic, a possible configuration would be: - -.. code-block:: python - - embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key="HUGGINGFACEHUB_API_TOKEN", - model_name="sentence-transformers/all-MiniLM-l6-v2" - ) - - graph_config = { - "llm": { - "api_key": "ANTHROPIC_API_KEY", - "model": "claude-3-haiku-20240307", - "max_tokens": 4000 - }, - "embeddings": { - "model_instance": embedder_model_instance - } - } - -Other LLM models -^^^^^^^^^^^^^^^^ - -We can also pass a model instance for the chat model and the embedding model through the **model_instance** parameter. -This feature enables you to utilize a Langchain model instance. -You will discover the model you require within the provided list: - -- `chat model list `_ -- `embedding model list `_. - -For instance, consider **chat model** Moonshot. We can integrate it in the following manner: - -.. code-block:: python - - from langchain_community.chat_models.moonshot import MoonshotChat - - # The configuration parameters are contingent upon the specific model you select - llm_instance_config = { - "model": "moonshot-v1-8k", - "base_url": "https://api.moonshot.cn/v1", - "moonshot_api_key": "MOONSHOT_API_KEY", - } - - llm_model_instance = MoonshotChat(**llm_instance_config) - graph_config = { - "llm": { - "model_instance": llm_model_instance, - "model_tokens": 5000 - }, - } - \ No newline at end of file diff --git a/source/scrapers/telemetry.rst b/source/scrapers/telemetry.rst deleted file mode 100644 index a80eb3b6..00000000 --- a/source/scrapers/telemetry.rst +++ /dev/null @@ -1,78 +0,0 @@ -=============== -Usage Analytics -=============== - -ScrapeGraphAI collects **anonymous** usage data by default to improve the library and guide development efforts. - -**Events Captured** - -We capture events in the following scenarios: - -1. When a ``Graph`` finishes running. -2. When an exception is raised in one of the nodes. - -**Data Collected** - -The data captured is limited to: - -- Operating System and Python version -- A persistent UUID to identify the session, stored in ``~/.scrapegraphai.conf`` - -Additionally, the following properties are collected: - -.. code-block:: python - - properties = { - "graph_name": graph_name, - "llm_model": llm_model_name, - "embedder_model": embedder_model_name, - "source_type": source_type, - "source": source, - "execution_time": execution_time, - "prompt": prompt, - "schema": schema, - "error_node": error_node_name, - "exception": exception, - "response": response, - "total_tokens": total_tokens, - } - -For more details, refer to the `telemetry.py `_ module. - -**Opting Out** - -If you prefer not to participate in telemetry, you can opt out using any of the following methods: - -1. **Programmatically Disable Telemetry**: - - Add the following code at the beginning of your script: - - .. code-block:: python - - from scrapegraphai import telemetry - telemetry.disable_telemetry() - -2. **Configuration File**: - - Set the ``telemetry_enabled`` key to ``false`` in ``~/.scrapegraphai.conf`` under the ``[DEFAULT]`` section: - - .. code-block:: ini - - [DEFAULT] - telemetry_enabled = False - -3. **Environment Variable**: - - - **For a Shell Session**: - - .. code-block:: bash - - export SCRAPEGRAPHAI_TELEMETRY_ENABLED=false - - - **For a Single Command**: - - .. code-block:: bash - - SCRAPEGRAPHAI_TELEMETRY_ENABLED=false python my_script.py - -By following any of these methods, you can easily opt out of telemetry and ensure your usage data is not collected. diff --git a/source/scrapers/types.rst b/source/scrapers/types.rst deleted file mode 100644 index 42613066..00000000 --- a/source/scrapers/types.rst +++ /dev/null @@ -1,225 +0,0 @@ -Types -===== - - -There are several types of graphs available in the library, each with its own purpose and functionality. The most common ones are: - -- **SmartScraperGraph**: one-page scraper that requires a user-defined prompt and a URL (or local file) to extract information using LLM. -- **SearchGraph**: multi-page scraper that only requires a user-defined prompt to extract information from a search engine using LLM. It is built on top of SmartScraperGraph. -- **SpeechGraph**: text-to-speech pipeline that generates an answer as well as a requested audio file. It is built on top of SmartScraperGraph and requires a user-defined prompt and a URL (or local file). -- **ScriptCreatorGraph**: script generator that creates a Python script to scrape a website using the specified library (e.g. BeautifulSoup). It requires a user-defined prompt and a URL (or local file). - -There are also two additional graphs that can handle multiple sources: - -- **SmartScraperMultiGraph**: similar to `SmartScraperGraph`, but with the ability to handle multiple sources. -- **ScriptCreatorMultiGraph**: similar to `ScriptCreatorGraph`, but with the ability to handle multiple sources. - -With the introduction of `GPT-4o`, two new powerful graphs have been created: - -- **OmniScraperGraph**: similar to `SmartScraperGraph`, but with the ability to scrape images and describe them. -- **OmniSearchGraph**: similar to `SearchGraph`, but with the ability to scrape images and describe them. - - -.. note:: - - They all use a graph configuration to set up LLM models and other parameters. To find out more about the configurations, check the :ref:`LLM` and :ref:`Configuration` sections. - - -.. note:: - - We can pass an optional `schema` parameter to the graph constructor to specify the output schema. If not provided or set to `None`, the schema will be generated by the LLM itself. - -OmniScraperGraph -^^^^^^^^^^^^^^^^ - -.. image:: ../../assets/omniscrapergraph.png - :align: center - :width: 90% - :alt: OmniScraperGraph -| - -First we define the graph configuration, which includes the LLM model and other parameters. Then we create an instance of the OmniScraperGraph class, passing the prompt, source, and configuration as arguments. Finally, we run the graph and print the result. -It will fetch the data from the source and extract the information based on the prompt in JSON format. - -.. code-block:: python - - from scrapegraphai.graphs import OmniScraperGraph - - graph_config = { - "llm": {...}, - } - - omni_scraper_graph = OmniScraperGraph( - prompt="List me all the projects with their titles and image links and descriptions.", - source="https://perinim.github.io/projects", - config=graph_config, - schema=schema - ) - - result = omni_scraper_graph.run() - print(result) - -OmniSearchGraph -^^^^^^^^^^^^^^^ - -.. image:: ../../assets/omnisearchgraph.png - :align: center - :width: 80% - :alt: OmniSearchGraph -| - -Similar to OmniScraperGraph, we define the graph configuration, create multiple of the OmniSearchGraph class, and run the graph. -It will create a search query, fetch the first n results from the search engine, run n OmniScraperGraph instances, and return the results in JSON format. - -.. code-block:: python - - from scrapegraphai.graphs import OmniSearchGraph - - graph_config = { - "llm": {...}, - } - - # Create the OmniSearchGraph instance - omni_search_graph = OmniSearchGraph( - prompt="List me all Chioggia's famous dishes and describe their pictures.", - config=graph_config, - schema=schema - ) - - # Run the graph - result = omni_search_graph.run() - print(result) - -SmartScraperGraph & SmartScraperMultiGraph -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. image:: ../../assets/smartscrapergraph.png - :align: center - :width: 90% - :alt: SmartScraperGraph -| - -First we define the graph configuration, which includes the LLM model and other parameters. Then we create an instance of the SmartScraperGraph class, passing the prompt, source, and configuration as arguments. Finally, we run the graph and print the result. -It will fetch the data from the source and extract the information based on the prompt in JSON format. - -.. code-block:: python - - from scrapegraphai.graphs import SmartScraperGraph - - graph_config = { - "llm": {...}, - } - - smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their descriptions", - source="https://perinim.github.io/projects", - config=graph_config, - schema=schema - ) - - result = smart_scraper_graph.run() - print(result) - -**SmartScraperMultiGraph** is similar to SmartScraperGraph, but it can handle multiple sources. We define the graph configuration, create an instance of the SmartScraperMultiGraph class, and run the graph. - -SearchGraph -^^^^^^^^^^^ - -.. image:: ../../assets/searchgraph.png - :align: center - :width: 80% - :alt: SearchGraph -| - -Similar to SmartScraperGraph, we define the graph configuration, create an instance of the SearchGraph class, and run the graph. -It will create a search query, fetch the first n results from the search engine, run n SmartScraperGraph instances, and return the results in JSON format. - - -.. code-block:: python - - from scrapegraphai.graphs import SearchGraph - - graph_config = { - "llm": {...}, - "embeddings": {...}, - } - - # Create the SearchGraph instance - search_graph = SearchGraph( - prompt="List me all the traditional recipes from Chioggia", - config=graph_config, - schema=schema - ) - - # Run the graph - result = search_graph.run() - print(result) - - -SpeechGraph -^^^^^^^^^^^ - -.. image:: ../../assets/speechgraph.png - :align: center - :width: 90% - :alt: SpeechGraph -| - -Similar to SmartScraperGraph, we define the graph configuration, create an instance of the SpeechGraph class, and run the graph. -It will fetch the data from the source, extract the information based on the prompt, and generate an audio file with the answer, as well as the answer itself, in JSON format. - -.. code-block:: python - - from scrapegraphai.graphs import SpeechGraph - - graph_config = { - "llm": {...}, - "tts_model": {...}, - } - - # ************************************************ - # Create the SpeechGraph instance and run it - # ************************************************ - - speech_graph = SpeechGraph( - prompt="Make a detailed audio summary of the projects.", - source="https://perinim.github.io/projects/", - config=graph_config, - schema=schema - ) - - result = speech_graph.run() - print(result) - - -ScriptCreatorGraph & ScriptCreatorMultiGraph -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. image:: ../../assets/scriptcreatorgraph.png - :align: center - :width: 90% - :alt: ScriptCreatorGraph - -First we define the graph configuration, which includes the LLM model and other parameters. -Then we create an instance of the ScriptCreatorGraph class, passing the prompt, source, and configuration as arguments. Finally, we run the graph and print the result. - -.. code-block:: python - - from scrapegraphai.graphs import ScriptCreatorGraph - - graph_config = { - "llm": {...}, - "library": "beautifulsoup4" - } - - script_creator_graph = ScriptCreatorGraph( - prompt="Create a Python script to scrape the projects.", - source="https://perinim.github.io/projects/", - config=graph_config, - schema=schema - ) - - result = script_creator_graph.run() - print(result) - -**ScriptCreatorMultiGraph** is similar to ScriptCreatorGraph, but it can handle multiple sources. We define the graph configuration, create an instance of the ScriptCreatorMultiGraph class, and run the graph. From 9d6889b07bebe3dbc280b4a897d4b4d83684a89d Mon Sep 17 00:00:00 2001 From: Marco Vinciguerra Date: Sat, 11 Jan 2025 11:35:29 +0100 Subject: [PATCH 4/7] feat: copy read the docs to docusaurus --- assets/api-banner.png | Bin 0 -> 59971 bytes {docs/img => assets}/apikey_1.png | Bin {docs/img => assets}/apikey_2.png | Bin {docs/img => assets}/apikey_3.png | Bin {docs/img => assets}/apikey_4.png | Bin assets/browserbase_logo.png | Bin 0 -> 3091 bytes assets/browserbase_logo.svg | 1 + assets/codespaces-badge.png | Bin 0 -> 3526 bytes assets/logo_authors.png | Bin 0 -> 1178826 bytes assets/omniscrapergraph.png | Bin 0 -> 73949 bytes assets/omniscrapergraph.svg | 1 + assets/omnisearchgraph.png | Bin 0 -> 58062 bytes assets/project_overview_diagram.fig | Bin 0 -> 53007 bytes assets/project_overview_diagram.png | Bin 0 -> 83949 bytes assets/project_overview_diagram.svg | 1 + assets/scrapedo.png | Bin 0 -> 19656 bytes assets/scrapedo.svg | 1 + assets/scrapegraphai_logo.png | Bin 0 -> 33264 bytes assets/scrapegraphai_logo.svg | 1 + assets/scriptcreatorgraph.png | Bin 0 -> 54963 bytes assets/searchgraph.png | Bin 0 -> 54611 bytes assets/serp_api_logo.png | Bin 0 -> 15508 bytes assets/serp_api_logo.svg | 1 + assets/sgai-hero.png | Bin 0 -> 68537 bytes assets/smartscrapergraph.png | Bin 0 -> 61095 bytes assets/speechgraph.png | Bin 0 -> 49312 bytes assets/transparent_stat.png | Bin 0 -> 221972 bytes assets/transparent_stat.svg | 1 + docs/Docloaders/Docloader.md | 69 ------ .../Anthropic/csv_scraper_anthropic.md | 61 ----- .../csv_scraper_graph_multi_anthropic.md | 55 ----- .../Anthropic/custom_graph_anthropic.md | 95 -------- .../Anthropic/depth_search_graph_anthropic.md | 29 --- .../Anthropic/json_scraper_anthropic.md | 44 ---- .../Anthropic/json_scraper_multi_anthropic.md | 36 --- .../Anthropic/rate_limit_anthropic.md | 48 ---- .../Anthropic/scrape_plain_text_anthropic.md | 53 ----- .../Anthropic/script_generator_anthropic.md | 43 ---- .../script_multi_generator_anthropic.md | 52 ----- .../Anthropic/search_graph_anthropic.md | 44 ---- .../search_graph_schema_anthropic.md | 45 ---- .../Anthropic/search_link_graph_anthropic.md | 46 ---- .../Anthropic/smart_scraper_anthropic.md | 42 ---- .../smart_scraper_multi_anthropic.md | 57 ----- .../smart_scraper_multi_concat_anthropic.md | 39 ---- .../smart_scraper_schema_anthropic.md | 52 ----- .../Anthropic/xml_scraper_anthropic.md | 56 ----- .../xml_scraper_graph_multi_anthropic.md | 56 ----- .../Azure/code_generator_graph_azure.md | 58 ----- docs/Examples/Azure/csv_scraper_azure.md | 57 ----- .../Azure/csv_scraper_graph_multi_azure.md | 56 ----- .../Azure/depth_search_graph_azure.md | 29 --- docs/Examples/Azure/json_scraper_azure.md | 46 ---- .../Azure/json_scraper_multi_azure.md | 39 ---- docs/Examples/Azure/rate_limit_azure.md | 57 ----- .../Examples/Azure/scrape_plain_text_azure.md | 55 ----- docs/Examples/Azure/script_generator_azure.md | 44 ---- .../Azure/script_multi_generator_azure.md | 53 ----- docs/Examples/Azure/search_graph_azure.md | 52 ----- .../Azure/search_graph_schema_azure.md | 61 ----- .../Examples/Azure/search_link_graph_azure.md | 46 ---- docs/Examples/Azure/smart_scraper_azure.md | 45 ---- .../Azure/smart_scraper_multi_azure.md | 39 ---- .../Azure/smart_scraper_multi_concat_azure.md | 39 ---- .../Azure/smart_scraper_schema_azure.md | 50 ---- docs/Examples/Azure/xml_scraper_azure.md | 47 ---- .../Azure/xml_scraper_graph_multi_azure.md | 57 ----- docs/Examples/Bedrock/README.md | 4 - .../Bedrock/code_generator_graph_bedrock.md | 61 ----- docs/Examples/Bedrock/csv_scraper_bedrock.md | 51 ---- .../csv_scraper_graph_multi_bedrock.md | 57 ----- docs/Examples/Bedrock/custom_graph_bedrock.md | 126 ---------- .../Bedrock/depth_search_graph_bedrock.md | 26 --- docs/Examples/Bedrock/json_scraper_bedrock.md | 58 ----- .../Bedrock/json_scraper_multi_bedrock.md | 33 --- docs/Examples/Bedrock/rate_limit_bedrock.md | 45 ---- .../Bedrock/scrape_plain_text_bedrock.md | 55 ----- .../Bedrock/script_generator_bedrock.md | 44 ---- .../Bedrock/script_multi_generator_bedrock.md | 49 ---- docs/Examples/Bedrock/search_graph_bedrock.md | 28 --- .../Bedrock/search_graph_schema_bedrock.md | 55 ----- .../Bedrock/search_link_graph_bedrock.md | 41 ---- .../Examples/Bedrock/smart_scraper_bedrock.md | 43 ---- .../Bedrock/smart_scraper_multi_bedrock.md | 35 --- .../smart_scraper_multi_concat_bedrock.md | 36 --- .../Bedrock/smart_scraper_schema_bedrock.md | 53 ----- docs/Examples/Bedrock/xml_scraper_bedrock.md | 59 ----- .../xml_scraper_graph_multi_bedrock.md | 57 ----- .../Deepseek/code_generator_graph_deepseek.md | 60 ----- .../Examples/Deepseek/csv_scraper_deepseek.md | 57 ----- .../csv_scraper_graph_multi_deepseek.md | 57 ----- .../Deepseek/depth_search_graph_deepseek.md | 31 --- .../Deepseek/json_scraper_deepseek.md | 47 ---- .../Deepseek/json_scraper_multi_deepseek.md | 38 --- docs/Examples/Deepseek/rate_limit_deepseek.md | 48 ---- .../Deepseek/scrape_plain_text_deepseek.md | 55 ----- .../Deepseek/script_generator_deepseek.md | 45 ---- .../script_multi_generator_deepseek.md | 54 ----- .../Deepseek/search_graph_deepseek.md | 36 --- .../Deepseek/search_graph_schema_deepseek.md | 61 ----- .../Deepseek/search_link_graph_deepseek.md | 47 ---- .../Deepseek/smart_scraper_deepseek.md | 45 ---- .../smart_scraper_multi_concat_deepseek.md | 42 ---- .../Deepseek/smart_scraper_multi_deepseek.md | 42 ---- .../Deepseek/smart_scraper_schema_deepseek.md | 59 ----- .../Examples/Deepseek/xml_scraper_deepseek.md | 60 ----- .../xml_scraper_graph_multi_deepseek.md | 58 ----- .../Ernie/code_generator_graph_ernie.md | 62 ----- docs/Examples/Ernie/csv_scraper_ernie.md | 58 ----- docs/Examples/Ernie/custom_graph_ernie.md | 107 --------- .../Ernie/depth_search_graph_ernie.md | 27 --- docs/Examples/Ernie/json_scraper_ernie.md | 44 ---- docs/Examples/Ernie/rate_limit_ernie.md | 48 ---- .../Examples/Ernie/scrape_plain_text_ernie.md | 55 ----- docs/Examples/Ernie/script_generator_ernie.md | 44 ---- .../Ernie/script_multi_generator_ernie.md | 50 ---- docs/Examples/Ernie/search_graph_ernie.md | 34 --- .../Examples/Ernie/search_link_graph_ernie.md | 43 ---- docs/Examples/Ernie/smart_scraper_ernie.md | 41 ---- .../Ernie/smart_scraper_multi_concat_ernie.md | 36 --- .../Ernie/smart_scraper_multi_ernie.md | 42 ---- .../Ernie/smart_scraper_schema_ernie.md | 55 ----- docs/Examples/Ernie/speech_graph_ernie.md | 59 ----- docs/Examples/Ernie/xml_scraper_ernie.md | 62 ----- .../Groq/code_generator_graph_groq.md | 61 ----- .../Groq/csv_scraper_graph_multi_groq.md | 59 ----- docs/Examples/Groq/csv_scraper_groq.md | 58 ----- docs/Examples/Groq/custom_graph_groq.md | 100 -------- docs/Examples/Groq/depth_search_graph_groq.md | 32 --- docs/Examples/Groq/json_scraper_groq.md | 50 ---- docs/Examples/Groq/json_scraper_multi_groq.md | 39 ---- docs/Examples/Groq/rate_limit_groq.md | 49 ---- docs/Examples/Groq/scrape_plain_text_groq.md | 58 ----- docs/Examples/Groq/script_generator_groq.md | 45 ---- .../Groq/script_multi_generator_groq.md | 56 ----- docs/Examples/Groq/search_graph_groq.md | 41 ---- .../Examples/Groq/search_graph_schema_groq.md | 63 ----- docs/Examples/Groq/search_link_graph_groq.md | 48 ---- docs/Examples/Groq/smart_scraper_groq.md | 46 ---- .../Groq/smart_scraper_multi_concat_groq.md | 42 ---- .../Examples/Groq/smart_scraper_multi_groq.md | 42 ---- .../Groq/smart_scraper_schema_groq.md | 60 ----- .../Groq/xml_scraper_graph_multi_groq.md | 60 ----- docs/Examples/Groq/xml_scraper_groq.md | 61 ----- .../Mistral/code_generator_graph_mistral.md | 60 ----- .../csv_scraper_graph_multi_mistral.md | 57 ----- docs/Examples/Mistral/csv_scraper_mistral.md | 58 ----- docs/Examples/Mistral/custom_graph_mistral.md | 109 --------- .../Mistral/depth_search_graph_mistral.md | 31 --- docs/Examples/Mistral/json_scraper_mistral.md | 47 ---- .../Mistral/json_scraper_multi_mistral.md | 38 --- docs/Examples/Mistral/md_scraper_mistral.md | 58 ----- docs/Examples/Mistral/rate_limit_mistral.md | 40 ---- docs/Examples/Mistral/readme.md | 2 - .../Mistral/scrape_plain_text_mistral.md | 55 ----- .../Mistral/script_generator_mistral.md | 46 ---- .../script_generator_schema_mistral.md | 62 ----- .../Mistral/script_multi_generator_mistral.md | 55 ----- docs/Examples/Mistral/search_graph_mistral.md | 36 --- .../Mistral/search_graph_schema_mistral.md | 62 ----- .../Mistral/search_link_graph_mistral.md | 43 ---- .../Examples/Mistral/smart_scraper_mistral.md | 37 --- .../smart_scraper_multi_concat_mistral.md | 39 ---- .../Mistral/smart_scraper_multi_mistral.md | 42 ---- .../Mistral/smart_scraper_schema_mistral.md | 51 ---- .../xml_scraper_graph_multi_mistral.md | 58 ----- docs/Examples/Mistral/xml_scraper_mistral.md | 59 ----- .../Nemotron/code_generator_graph_nemotron.md | 58 ----- .../csv_scraper_graph_multi_nemotron.md | 55 ----- .../Examples/Nemotron/csv_scraper_nemotron.md | 58 ----- .../Nemotron/depth_search_graph_nemotron.md | 31 --- .../Nemotron/json_scraper_multi_nemotron.md | 38 --- .../Nemotron/json_scraper_nemotron.md | 58 ----- docs/Examples/Nemotron/md_scraper_nemotron.md | 58 ----- docs/Examples/Nemotron/rate_limit_nemotron.md | 48 ---- .../Nemotron/scrape_plain_text_nemotron.md | 55 ----- .../Nemotron/script_generator_nemotron.md | 45 ---- .../script_generator_schema_nemotron.md | 60 ----- .../script_multi_generator_nemotron.md | 55 ----- .../Nemotron/search_graph_nemotron.md | 36 --- .../Nemotron/search_graph_schema_nemotron.md | 63 ----- .../Nemotron/search_link_graph_nemotron.md | 42 ---- .../smart_scraper_multi_concat_nemotron.md | 39 ---- .../Nemotron/smart_scraper_multi_nemotron.md | 42 ---- .../Nemotron/smart_scraper_nemotron.md | 46 ---- .../Nemotron/smart_scraper_schema_nemotron.md | 51 ---- .../Nemotron/speech_graph_nemotron.md | 51 ---- .../Nemotron/xml_scraper_graph_nemotron.md | 61 ----- .../Examples/Nemotron/xml_scraper_nemotron.md | 60 ----- .../Oneapi/code_generator_graph_oneapi.md | 61 ----- .../Oneapi/csv_scraper_graph_multi_oneapi.md | 57 ----- docs/Examples/Oneapi/csv_scraper_oneapi.md | 56 ----- docs/Examples/Oneapi/custom_graph_oneapi.md | 106 --------- .../Oneapi/depth_search_graph_onenapi.md | 32 --- .../Oneapi/json_scraper_multi_oneapi.md | 34 --- docs/Examples/Oneapi/json_scraper_oneapi.md | 54 ----- docs/Examples/Oneapi/rate_limit_oneapi.md | 42 ---- .../Oneapi/scrape_plain_text_oneapi.md | 54 ----- .../Oneapi/script_generator_oneapi.md | 44 ---- .../Oneapi/script_multi_generator_oneapi.md | 49 ---- docs/Examples/Oneapi/search_graph_oneapi.md | 30 --- .../Oneapi/search_graph_schema_oneapi.md | 56 ----- .../smart_scraper_multi_concat_oneapi.md | 36 --- .../Oneapi/smart_scraper_multi_oneapi.md | 39 ---- docs/Examples/Oneapi/smart_scraper_oneapi.md | 39 ---- .../Oneapi/smart_scraper_schema_oneapi.md | 49 ---- docs/Examples/Oneapi/smartscraper_oneapi.md | 36 --- .../Oneapi/xml_scraper_graph_multi_oneapi.md | 58 ----- docs/Examples/Oneapi/xml_scraper_oneapi.md | 59 ----- .../Openai/code_generator_graph_openai.md | 60 ----- .../Openai/csv_scraper_graph_multi_openai.md | 56 ----- docs/Examples/Openai/csv_scraper_openai.md | 58 ----- docs/Examples/Openai/custom_graph_openai.md | 110 --------- .../Openai/depth_search_graph_openai.md | 31 --- .../Openai/json_scraper_multi_openai.md | 38 --- docs/Examples/Openai/json_scraper_openai.md | 58 ----- docs/Examples/Openai/md_scraper_openai.md | 58 ----- docs/Examples/Openai/omni_scraper_openai.md | 48 ---- docs/Examples/Openai/omni_search_openai.md | 46 ---- docs/Examples/Openai/rate_limit_openai.md | 49 ---- docs/Examples/Openai/readme.md | 2 - .../Openai/scrape_plain_text_openai.md | 55 ----- docs/Examples/Openai/screenshot_scraper.md | 38 --- .../Openai/script_generator_openai.md | 47 ---- .../Openai/script_generator_schema_openai.md | 61 ----- .../Openai/script_multi_generator_openai.md | 55 ----- docs/Examples/Openai/search_graph_openai.md | 36 --- .../Openai/search_graph_schema_openai.md | 62 ----- .../Openai/search_link_graph_openai.md | 43 ---- .../smart_scraper_multi_concat_openai.md | 41 ---- .../Openai/smart_scraper_multi_openai.md | 42 ---- docs/Examples/Openai/smart_scraper_openai.md | 45 ---- .../Openai/smart_scraper_schema_openai.md | 51 ---- docs/Examples/Openai/speech_graph_openai.md | 58 ----- .../Openai/xml_scraper_graph_multi_openai.md | 59 ----- docs/Examples/Openai/xml_scraper_openai.md | 59 ----- .../anthropic/document_scraper_anthropic.md | 43 ---- .../anthropic/smart_scraper_lite_anthropic.md | 33 --- .../smart_scraper_multi_lite_anthropic.md | 36 --- docs/Examples/azure/document_scraper_azure.md | 45 ---- .../azure/smart_scraper_lite_azure.md | 32 --- .../azure/smart_scraper_multi_lite_azure.md | 36 --- .../bedrock/document_scraper_bedrock.md | 43 ---- .../bedrock/smart_scraper_lite_bedrock.md | 27 --- .../smart_scraper_multi_lite_bedrock.md | 30 --- .../benchmarks/GenerateScraper/Readme.md | 44 ---- .../GenerateScraper/benchmark_docker.md | 1 - .../GenerateScraper/benchmark_groq.md | 62 ----- .../GenerateScraper/benchmark_llama3.md | 58 ----- .../GenerateScraper/benchmark_mistral.md | 63 ----- .../GenerateScraper/benchmark_openai_gpt35.md | 54 ----- .../GenerateScraper/benchmark_openai_gpt4.md | 54 ----- .../benchmarks/SmartScraper/Readme.md | 43 ---- .../SmartScraper/benchmark_docker.md | 52 ----- .../benchmarks/SmartScraper/benchmark_groq.md | 58 ----- .../SmartScraper/benchmark_llama3.md | 54 ----- .../SmartScraper/benchmark_mistral.md | 55 ----- .../SmartScraper/benchmark_openai_gpt35.md | 53 ----- .../SmartScraper/benchmark_openai_gpt4.md | 54 ----- .../SmartScraper/benchmark_openai_gpt4o.md | 54 ----- docs/Examples/benchmarks/readme.md | 5 - .../deepseek/document_scraper_deepseek.md | 45 ---- .../deepseek/smart_scraper_lite_deepseek.md | 32 --- .../smart_scraper_multi_lite_deepseek.md | 36 --- .../ernie/document_scraper_anthropic_ernie.md | 40 ---- .../ernie/smart_scraper_lite_ernie.md | 32 --- .../ernie/smart_scraper_multi_lite_ernie.md | 36 --- .../extras/browser_base_integration.md | 50 ---- .../extras/cond_smartscraper_usage.md | 39 ---- docs/Examples/extras/conditional_usage.md | 42 ---- docs/Examples/extras/custom_prompt.md | 51 ---- docs/Examples/extras/force_mode.md | 55 ----- docs/Examples/extras/html_mode.md | 50 ---- docs/Examples/extras/load_yml.md | 33 --- docs/Examples/extras/no_cut.md | 44 ---- docs/Examples/extras/proxy_rotation.md | 49 ---- docs/Examples/extras/rag_caching.md | 47 ---- docs/Examples/extras/reasoning.md | 47 ---- docs/Examples/extras/scrape_do.md | 41 ---- docs/Examples/extras/screenshot_scaping.md | 33 --- docs/Examples/extras/serch_graph_scehma.md | 44 ---- docs/Examples/extras/slow_mo.md | 49 ---- docs/Examples/extras/undected_playwrigth.md | 48 ---- .../code_generator_graph_fireworks.md | 61 ----- .../fireworks/csv_scraper_fireworks.md | 58 ----- .../csv_scraper_graph_multi_fireworks.md | 58 ----- .../fireworks/custom_graph_fireworks.md | 99 -------- .../fireworks/depth_search_graph_fireworks.md | 31 --- .../document_scraper_anthropic_fireworks.md | 45 ---- .../fireworks/json_scraper_fireworkspy.md | 48 ---- .../fireworks/json_scraper_multi_fireworks.md | 40 ---- .../fireworks/rate_limit_fireworks.md | 50 ---- .../fireworks/scrape_plain_text_fireworks.md | 55 ----- .../fireworks/script_generator_fireworks.md | 48 ---- .../script_generator_schema_fireworks.md | 61 ----- .../script_multi_generator_fireworks.md | 53 ----- .../fireworks/search_graph_fireworks.md | 37 --- .../search_graph_schema_fireworks.md | 63 ----- .../fireworks/search_link_graph_fireworks.md | 48 ---- .../fireworks/smart_scraper_fireworks.md | 47 ---- .../fireworks/smart_scraper_lite_fireworks.md | 32 --- .../smart_scraper_multi_concat_fireworks.md | 38 --- .../smart_scraper_multi_fireworks.md | 41 ---- .../smart_scraper_multi_lite_fireworks.md | 36 --- .../smart_scraper_schema_fireworks.md | 50 ---- .../fireworks/xml_scraper_fireworks.md | 59 ----- .../xml_scraper_graph_multi_fireworks.md | 59 ----- .../code_generator_graph_gemini.md | 60 ----- .../google_genai/csv_scraper_gemini.md | 53 ----- .../csv_scraper_graph_multi_gemini.md | 57 ----- .../google_genai/depth_search_graph_gemini.md | 31 --- .../google_genai/document_scraper_gemini.md | 42 ---- .../google_genai/json_scraper_gemini.md | 47 ---- .../google_genai/json_scraper_multi_gemini.md | 39 ---- .../google_genai/rate_limit_gemini.md | 47 ---- docs/Examples/google_genai/readme.md | 2 - .../google_genai/scrape_plain_text_gemini.md | 57 ----- .../google_genai/scrape_xml_gemini.md | 57 ----- .../google_genai/script_generator_gemini.md | 45 ---- .../script_multi_generator_gemini.md | 54 ----- .../google_genai/search_graph_gemini.md | 42 ---- .../search_graph_schema_gemini.md | 59 ----- .../google_genai/search_link_graph_gemini.md | 45 ---- .../google_genai/smart_scraper_gemini.md | 45 ---- .../smart_scraper_lite_google_genai.md | 32 --- .../smart_scraper_multi_concat_gemini.md | 40 ---- .../smart_scraper_multi_gemini.md | 40 ---- .../smart_scraper_multi_lite_gemini.md | 1 - .../smart_scraper_multi_lite_google_genai.md | 35 --- .../smart_scraper_schema_gemini.md | 57 ----- .../google_genai/xml_scraper_gemini.md | 58 ----- .../xml_scraper_graph_multi_gemini.md | 58 ----- .../code_generator_graph_vertex.md | 61 ----- .../google_vertexai/csv_scraper_gemini.md | 54 ----- .../csv_scraper_graph_multi_gemini.md | 58 ----- .../google_vertexai/custom_graph_gemini.md | 85 ------- .../depth_search_graph_gemini.md | 31 --- .../document_scraper_vertex.md | 42 ---- .../google_vertexai/json_scraper_gemini.md | 47 ---- .../json_scraper_multi_gemini.md | 39 ---- .../google_vertexai/rate_limit_gemini.md | 48 ---- docs/Examples/google_vertexai/readme.md | 2 - .../scrape_plain_text_gemini.md | 57 ----- .../google_vertexai/scrape_xml_gemini.md | 58 ----- .../script_generator_gemini.md | 47 ---- .../script_multi_generator_gemini.md | 55 ----- .../google_vertexai/search_graph_gemini.md | 43 ---- .../search_graph_schema_gemini.md | 62 ----- .../search_link_graph_gemini.md | 45 ---- .../google_vertexai/smart_scraper_gemini.md | 45 ---- .../smart_scraper_lite_google_vertexai.md | 34 --- .../smart_scraper_multi_concat_gemini.md | 37 --- .../smart_scraper_multi_gemini.md | 40 ---- ...mart_scraper_multi_lite_google_vertexai.md | 36 --- .../smart_scraper_multi_lite_vertex.md | 48 ---- .../smart_scraper_schema_gemini.md | 57 ----- .../google_vertexai/xml_scraper_gemini.md | 58 ----- .../xml_scraper_graph_multi_gemini.md | 58 ----- docs/Examples/groq/document_scraper_groq.md | 46 ---- docs/Examples/groq/smart_scraper_lite_groq.md | 32 --- .../groq/smart_scraper_multi_lite_groq.md | 36 --- .../code_generator_graph_huggingfacehub.md | 72 ------ .../csv_scraper_graph_multi_huggingfacehub.md | 69 ------ .../csv_scraper_huggingfacehub.md | 71 ------ .../custom_graph_huggingfacehub.md | 122 ---------- .../depth_search_graph_huggingfacehub.md | 39 ---- .../document_scraper_huggingfacehub.md | 58 ----- .../json_scraper_huggingfacehub.md | 60 ----- .../json_scraper_multi_huggingfacehub.md | 46 ---- .../scrape_plain_text_huggingfacehub.md | 69 ------ .../script_generator_huggingfacehub.md | 61 ----- .../script_multi_generator_huggingfacehub.md | 67 ------ .../search_graph_huggingfacehub.md | 56 ----- .../search_link_graph_huggingfacehub.md | 54 ----- .../smart_scraper_huggingfacehub.md | 59 ----- .../smart_scraper_lite_huggingfacehub.md | 32 --- ...art_scraper_multi_concat_huggingfacehub.md | 54 ----- .../smart_scraper_multi_huggingfacehub.md | 49 ---- ...smart_scraper_multi_lite_huggingfacehub.md | 35 --- ...smart_scraper_multi_lite_uhggingfacehub.md | 1 - .../smart_scraper_schema_huggingfacehub.md | 68 ------ .../xml_scraper_graph_multi_huggingfacehub.md | 68 ------ .../xml_scraper_huggingfacehub.md | 69 ------ .../integrations/indexify_node_example.md | 73 ------ .../code_generator_graph_ollama.md | 62 ----- .../csv_scraper_graph_multi_ollama.md | 63 ----- .../local_models/csv_scraper_ollama.md | 63 ----- .../local_models/custom_graph_ollama.md | 102 -------- .../local_models/depth_search_graph_ollama.md | 33 --- .../local_models/document_scraper_ollama.md | 43 ---- .../local_models/json_scraper_multi_ollama.md | 37 --- .../local_models/json_scraper_ollama.md | 60 ----- docs/Examples/local_models/package-lock.md | 7 - docs/Examples/local_models/package.md | 2 - .../local_models/scrape_plain_text_ollama.md | 55 ----- .../local_models/script_generator_ollama.md | 41 ---- .../script_multi_generator_ollama.md | 56 ----- .../local_models/search_graph_ollama.md | 45 ---- .../search_graph_schema_ollama.md | 59 ----- .../local_models/search_link_graph_ollama.md | 52 ----- .../local_models/smart_scraper_lite_ollama.md | 31 --- .../smart_scraper_multi_concat_ollama.md | 43 ---- .../smart_scraper_multi_lite_ollama.md | 46 ---- .../smart_scraper_multi_ollama.md | 40 ---- .../local_models/smart_scraper_ollama.md | 39 ---- .../smart_scraper_schema_ollama.md | 44 ---- .../xml_scraper_graph_multi_ollama.md | 59 ----- .../local_models/xml_scraper_ollama.md | 59 ----- .../mistral/document_scraper_mistral.md | 44 ---- .../mistral/smart_scraper_lite_mistral.md | 32 --- .../smart_scraper_multi_lite_mistral.md | 36 --- .../smart_scraper_with_model_instace.md | 54 ----- .../moonshot/code_generator_graph_moonshot.md | 68 ------ .../moonshot/document_scraper_moonshot.md | 44 ---- docs/Examples/moonshot/readme.md | 2 - .../moonshot/smart_scraper_lite_moonshot.md | 32 --- .../smart_scraper_multi_concat_moonshot.md | 53 ----- .../smart_scraper_multi_lite_moonshot.md | 35 --- .../moonshot/smart_scraper_with_moonshot.md | 55 ----- .../nemotron/document_scraper_nemotron.md | 45 ---- .../nemotron/smart_scraper_lite_nemotron.md | 33 --- .../smart_scraper_multi_lite_nemotron.md | 47 ---- .../oneapi/document_scraper_oneapi.md | 43 ---- .../oneapi/smart_scraper_lite_oneapi.md | 33 --- .../oneapi/smart_scraper_multi_lite_oneapi.md | 44 ---- .../openai/document_scraper_openai.md | 40 ---- docs/Examples/openai/result.md | 3 - .../openai/smart_scraper_lite_openai.md | 33 --- .../openai/smart_scraper_multi_lite_openai.md | 48 ---- .../scrapegraph-api/smart_scraper_api.md | 45 ---- docs/Examples/single_node/fetch_node.md | 31 --- docs/Examples/single_node/image2text_node.md | 55 ----- docs/Examples/single_node/kg_node.md | 80 ------- docs/Examples/single_node/robot_node.md | 50 ---- .../single_node/search_internet_node.md | 51 ---- .../together/code_generator_graph_togehter.md | 61 ----- .../csv_scraper_graph_multi_together.md | 57 ----- .../Examples/together/csv_scraper_together.md | 58 ----- .../together/depth_search_graph_together.md | 31 --- .../together/document_scraper_together.md | 40 ---- .../together/json_scraper_multi_together.md | 39 ---- .../together/json_scraper_together.md | 58 ----- docs/Examples/together/rate_limit_together.md | 48 ---- .../together/scrape_plain_text_together.md | 56 ----- .../together/script_generator_together.md | 45 ---- .../script_multi_generator_together.md | 54 ----- .../together/search_graph_schema_together.md | 62 ----- .../together/search_graph_together.md | 35 --- .../together/search_link_graph_together.md | 47 ---- .../together/smart_scraper_lite_together.md | 2 - .../smart_scraper_multi_lite_together.md | 44 ---- .../together/smart_scraper_multi_together.md | 41 ---- .../together/smart_scraper_schema_together.md | 59 ----- .../together/smart_scraper_together.md | 45 ---- .../xml_scraper_graph_multi_together.md | 59 ----- .../Examples/together/xml_scraper_together.md | 60 ----- docs/Graphs/Abstract_graph.md | 94 -------- docs/Graphs/_category_.json | 8 - docs/Graphs/assets/dept_search.png | Bin 27154 -> 0 bytes docs/Graphs/assets/graph.png | Bin 133659 -> 0 bytes docs/Graphs/base_graph.md | 82 ------- docs/Graphs/code_generator_graph.md | 57 ----- docs/Graphs/csv_scraper_graph.md | 67 ------ docs/Graphs/depth_search_graph.md | 27 --- docs/Graphs/json_scraper_graph.md | 66 ------ docs/Graphs/omni_scraper_graph.md | 68 ------ docs/Graphs/omni_search_graph.md | 63 ----- docs/Graphs/scrape_graph.md | 34 --- docs/Graphs/script_creator_graph.md | 63 ----- docs/Graphs/serch_graph.md | 56 ----- docs/Graphs/smart_scraper_graph.md | 60 ----- docs/Graphs/smart_scraper_multi.md | 58 ----- docs/Graphs/smart_scraper_multi_lite_graph.md | 33 --- docs/Graphs/speech_summary.md | 62 ----- docs/Graphs/xml_scraper_graph.md | 61 ----- docs/{Info => Some numbers}/_category_.json | 0 docs/{Info => Some numbers}/api.md | 0 docs/{Info => Some numbers}/stars.md | 0 docs/conf.py | 41 ++++ docs/getting_started/_category_.json | 8 + docs/getting_started/examples.md | 4 +- docs/getting_started/installation.md | 20 +- docs/introduction/_category_.json | 8 + docs/introduction/contributing.md | 11 + docs/introduction/diagram.md | 11 + docs/introduction/faq.md | 42 ++++ docs/introduction/models.md | 91 ++++++++ docs/introduction/overview.md | 164 +++++++++++++ docs/introduction/sponsors.md | 13 ++ docs/introduction/why.md | 12 + docs/modules/modules.md | 9 + docs/modules/scrapegraphai.builders.md | 23 ++ docs/modules/scrapegraphai.docloaders.md | 23 ++ docs/modules/scrapegraphai.graphs.md | 39 ++++ docs/modules/scrapegraphai.helpers.md | 39 ++++ docs/modules/scrapegraphai.integrations.md | 31 +++ docs/modules/scrapegraphai.md | 59 +++++ docs/modules/scrapegraphai.models.md | 39 ++++ docs/modules/scrapegraphai.nodes.md | 39 ++++ docs/modules/scrapegraphai.utils.md | 47 ++++ docs/scrapers/_category_.json | 2 +- docs/scrapers/llm.md | 219 ------------------ docs/scrapers/telemetry.md | 42 ++-- docs/scrapers/types.md | 195 ---------------- 504 files changed, 788 insertions(+), 22211 deletions(-) create mode 100644 assets/api-banner.png rename {docs/img => assets}/apikey_1.png (100%) rename {docs/img => assets}/apikey_2.png (100%) rename {docs/img => assets}/apikey_3.png (100%) rename {docs/img => assets}/apikey_4.png (100%) create mode 100644 assets/browserbase_logo.png create mode 100644 assets/browserbase_logo.svg create mode 100644 assets/codespaces-badge.png create mode 100644 assets/logo_authors.png create mode 100644 assets/omniscrapergraph.png create mode 100644 assets/omniscrapergraph.svg create mode 100644 assets/omnisearchgraph.png create mode 100644 assets/project_overview_diagram.fig create mode 100644 assets/project_overview_diagram.png create mode 100644 assets/project_overview_diagram.svg create mode 100644 assets/scrapedo.png create mode 100644 assets/scrapedo.svg create mode 100644 assets/scrapegraphai_logo.png create mode 100644 assets/scrapegraphai_logo.svg create mode 100644 assets/scriptcreatorgraph.png create mode 100644 assets/searchgraph.png create mode 100644 assets/serp_api_logo.png create mode 100644 assets/serp_api_logo.svg create mode 100644 assets/sgai-hero.png create mode 100644 assets/smartscrapergraph.png create mode 100644 assets/speechgraph.png create mode 100644 assets/transparent_stat.png create mode 100644 assets/transparent_stat.svg delete mode 100644 docs/Docloaders/Docloader.md delete mode 100644 docs/Examples/Anthropic/csv_scraper_anthropic.md delete mode 100644 docs/Examples/Anthropic/csv_scraper_graph_multi_anthropic.md delete mode 100644 docs/Examples/Anthropic/custom_graph_anthropic.md delete mode 100644 docs/Examples/Anthropic/depth_search_graph_anthropic.md delete mode 100644 docs/Examples/Anthropic/json_scraper_anthropic.md delete mode 100644 docs/Examples/Anthropic/json_scraper_multi_anthropic.md delete mode 100644 docs/Examples/Anthropic/rate_limit_anthropic.md delete mode 100644 docs/Examples/Anthropic/scrape_plain_text_anthropic.md delete mode 100644 docs/Examples/Anthropic/script_generator_anthropic.md delete mode 100644 docs/Examples/Anthropic/script_multi_generator_anthropic.md delete mode 100644 docs/Examples/Anthropic/search_graph_anthropic.md delete mode 100644 docs/Examples/Anthropic/search_graph_schema_anthropic.md delete mode 100644 docs/Examples/Anthropic/search_link_graph_anthropic.md delete mode 100644 docs/Examples/Anthropic/smart_scraper_anthropic.md delete mode 100644 docs/Examples/Anthropic/smart_scraper_multi_anthropic.md delete mode 100644 docs/Examples/Anthropic/smart_scraper_multi_concat_anthropic.md delete mode 100644 docs/Examples/Anthropic/smart_scraper_schema_anthropic.md delete mode 100644 docs/Examples/Anthropic/xml_scraper_anthropic.md delete mode 100644 docs/Examples/Anthropic/xml_scraper_graph_multi_anthropic.md delete mode 100644 docs/Examples/Azure/code_generator_graph_azure.md delete mode 100644 docs/Examples/Azure/csv_scraper_azure.md delete mode 100644 docs/Examples/Azure/csv_scraper_graph_multi_azure.md delete mode 100644 docs/Examples/Azure/depth_search_graph_azure.md delete mode 100644 docs/Examples/Azure/json_scraper_azure.md delete mode 100644 docs/Examples/Azure/json_scraper_multi_azure.md delete mode 100644 docs/Examples/Azure/rate_limit_azure.md delete mode 100644 docs/Examples/Azure/scrape_plain_text_azure.md delete mode 100644 docs/Examples/Azure/script_generator_azure.md delete mode 100644 docs/Examples/Azure/script_multi_generator_azure.md delete mode 100644 docs/Examples/Azure/search_graph_azure.md delete mode 100644 docs/Examples/Azure/search_graph_schema_azure.md delete mode 100644 docs/Examples/Azure/search_link_graph_azure.md delete mode 100644 docs/Examples/Azure/smart_scraper_azure.md delete mode 100644 docs/Examples/Azure/smart_scraper_multi_azure.md delete mode 100644 docs/Examples/Azure/smart_scraper_multi_concat_azure.md delete mode 100644 docs/Examples/Azure/smart_scraper_schema_azure.md delete mode 100644 docs/Examples/Azure/xml_scraper_azure.md delete mode 100644 docs/Examples/Azure/xml_scraper_graph_multi_azure.md delete mode 100644 docs/Examples/Bedrock/README.md delete mode 100644 docs/Examples/Bedrock/code_generator_graph_bedrock.md delete mode 100644 docs/Examples/Bedrock/csv_scraper_bedrock.md delete mode 100644 docs/Examples/Bedrock/csv_scraper_graph_multi_bedrock.md delete mode 100644 docs/Examples/Bedrock/custom_graph_bedrock.md delete mode 100644 docs/Examples/Bedrock/depth_search_graph_bedrock.md delete mode 100644 docs/Examples/Bedrock/json_scraper_bedrock.md delete mode 100644 docs/Examples/Bedrock/json_scraper_multi_bedrock.md delete mode 100644 docs/Examples/Bedrock/rate_limit_bedrock.md delete mode 100644 docs/Examples/Bedrock/scrape_plain_text_bedrock.md delete mode 100644 docs/Examples/Bedrock/script_generator_bedrock.md delete mode 100644 docs/Examples/Bedrock/script_multi_generator_bedrock.md delete mode 100644 docs/Examples/Bedrock/search_graph_bedrock.md delete mode 100644 docs/Examples/Bedrock/search_graph_schema_bedrock.md delete mode 100644 docs/Examples/Bedrock/search_link_graph_bedrock.md delete mode 100644 docs/Examples/Bedrock/smart_scraper_bedrock.md delete mode 100644 docs/Examples/Bedrock/smart_scraper_multi_bedrock.md delete mode 100644 docs/Examples/Bedrock/smart_scraper_multi_concat_bedrock.md delete mode 100644 docs/Examples/Bedrock/smart_scraper_schema_bedrock.md delete mode 100644 docs/Examples/Bedrock/xml_scraper_bedrock.md delete mode 100644 docs/Examples/Bedrock/xml_scraper_graph_multi_bedrock.md delete mode 100644 docs/Examples/Deepseek/code_generator_graph_deepseek.md delete mode 100644 docs/Examples/Deepseek/csv_scraper_deepseek.md delete mode 100644 docs/Examples/Deepseek/csv_scraper_graph_multi_deepseek.md delete mode 100644 docs/Examples/Deepseek/depth_search_graph_deepseek.md delete mode 100644 docs/Examples/Deepseek/json_scraper_deepseek.md delete mode 100644 docs/Examples/Deepseek/json_scraper_multi_deepseek.md delete mode 100644 docs/Examples/Deepseek/rate_limit_deepseek.md delete mode 100644 docs/Examples/Deepseek/scrape_plain_text_deepseek.md delete mode 100644 docs/Examples/Deepseek/script_generator_deepseek.md delete mode 100644 docs/Examples/Deepseek/script_multi_generator_deepseek.md delete mode 100644 docs/Examples/Deepseek/search_graph_deepseek.md delete mode 100644 docs/Examples/Deepseek/search_graph_schema_deepseek.md delete mode 100644 docs/Examples/Deepseek/search_link_graph_deepseek.md delete mode 100644 docs/Examples/Deepseek/smart_scraper_deepseek.md delete mode 100644 docs/Examples/Deepseek/smart_scraper_multi_concat_deepseek.md delete mode 100644 docs/Examples/Deepseek/smart_scraper_multi_deepseek.md delete mode 100644 docs/Examples/Deepseek/smart_scraper_schema_deepseek.md delete mode 100644 docs/Examples/Deepseek/xml_scraper_deepseek.md delete mode 100644 docs/Examples/Deepseek/xml_scraper_graph_multi_deepseek.md delete mode 100644 docs/Examples/Ernie/code_generator_graph_ernie.md delete mode 100644 docs/Examples/Ernie/csv_scraper_ernie.md delete mode 100644 docs/Examples/Ernie/custom_graph_ernie.md delete mode 100644 docs/Examples/Ernie/depth_search_graph_ernie.md delete mode 100644 docs/Examples/Ernie/json_scraper_ernie.md delete mode 100644 docs/Examples/Ernie/rate_limit_ernie.md delete mode 100644 docs/Examples/Ernie/scrape_plain_text_ernie.md delete mode 100644 docs/Examples/Ernie/script_generator_ernie.md delete mode 100644 docs/Examples/Ernie/script_multi_generator_ernie.md delete mode 100644 docs/Examples/Ernie/search_graph_ernie.md delete mode 100644 docs/Examples/Ernie/search_link_graph_ernie.md delete mode 100644 docs/Examples/Ernie/smart_scraper_ernie.md delete mode 100644 docs/Examples/Ernie/smart_scraper_multi_concat_ernie.md delete mode 100644 docs/Examples/Ernie/smart_scraper_multi_ernie.md delete mode 100644 docs/Examples/Ernie/smart_scraper_schema_ernie.md delete mode 100644 docs/Examples/Ernie/speech_graph_ernie.md delete mode 100644 docs/Examples/Ernie/xml_scraper_ernie.md delete mode 100644 docs/Examples/Groq/code_generator_graph_groq.md delete mode 100644 docs/Examples/Groq/csv_scraper_graph_multi_groq.md delete mode 100644 docs/Examples/Groq/csv_scraper_groq.md delete mode 100644 docs/Examples/Groq/custom_graph_groq.md delete mode 100644 docs/Examples/Groq/depth_search_graph_groq.md delete mode 100644 docs/Examples/Groq/json_scraper_groq.md delete mode 100644 docs/Examples/Groq/json_scraper_multi_groq.md delete mode 100644 docs/Examples/Groq/rate_limit_groq.md delete mode 100644 docs/Examples/Groq/scrape_plain_text_groq.md delete mode 100644 docs/Examples/Groq/script_generator_groq.md delete mode 100644 docs/Examples/Groq/script_multi_generator_groq.md delete mode 100644 docs/Examples/Groq/search_graph_groq.md delete mode 100644 docs/Examples/Groq/search_graph_schema_groq.md delete mode 100644 docs/Examples/Groq/search_link_graph_groq.md delete mode 100644 docs/Examples/Groq/smart_scraper_groq.md delete mode 100644 docs/Examples/Groq/smart_scraper_multi_concat_groq.md delete mode 100644 docs/Examples/Groq/smart_scraper_multi_groq.md delete mode 100644 docs/Examples/Groq/smart_scraper_schema_groq.md delete mode 100644 docs/Examples/Groq/xml_scraper_graph_multi_groq.md delete mode 100644 docs/Examples/Groq/xml_scraper_groq.md delete mode 100644 docs/Examples/Mistral/code_generator_graph_mistral.md delete mode 100644 docs/Examples/Mistral/csv_scraper_graph_multi_mistral.md delete mode 100644 docs/Examples/Mistral/csv_scraper_mistral.md delete mode 100644 docs/Examples/Mistral/custom_graph_mistral.md delete mode 100644 docs/Examples/Mistral/depth_search_graph_mistral.md delete mode 100644 docs/Examples/Mistral/json_scraper_mistral.md delete mode 100644 docs/Examples/Mistral/json_scraper_multi_mistral.md delete mode 100644 docs/Examples/Mistral/md_scraper_mistral.md delete mode 100644 docs/Examples/Mistral/rate_limit_mistral.md delete mode 100644 docs/Examples/Mistral/readme.md delete mode 100644 docs/Examples/Mistral/scrape_plain_text_mistral.md delete mode 100644 docs/Examples/Mistral/script_generator_mistral.md delete mode 100644 docs/Examples/Mistral/script_generator_schema_mistral.md delete mode 100644 docs/Examples/Mistral/script_multi_generator_mistral.md delete mode 100644 docs/Examples/Mistral/search_graph_mistral.md delete mode 100644 docs/Examples/Mistral/search_graph_schema_mistral.md delete mode 100644 docs/Examples/Mistral/search_link_graph_mistral.md delete mode 100644 docs/Examples/Mistral/smart_scraper_mistral.md delete mode 100644 docs/Examples/Mistral/smart_scraper_multi_concat_mistral.md delete mode 100644 docs/Examples/Mistral/smart_scraper_multi_mistral.md delete mode 100644 docs/Examples/Mistral/smart_scraper_schema_mistral.md delete mode 100644 docs/Examples/Mistral/xml_scraper_graph_multi_mistral.md delete mode 100644 docs/Examples/Mistral/xml_scraper_mistral.md delete mode 100644 docs/Examples/Nemotron/code_generator_graph_nemotron.md delete mode 100644 docs/Examples/Nemotron/csv_scraper_graph_multi_nemotron.md delete mode 100644 docs/Examples/Nemotron/csv_scraper_nemotron.md delete mode 100644 docs/Examples/Nemotron/depth_search_graph_nemotron.md delete mode 100644 docs/Examples/Nemotron/json_scraper_multi_nemotron.md delete mode 100644 docs/Examples/Nemotron/json_scraper_nemotron.md delete mode 100644 docs/Examples/Nemotron/md_scraper_nemotron.md delete mode 100644 docs/Examples/Nemotron/rate_limit_nemotron.md delete mode 100644 docs/Examples/Nemotron/scrape_plain_text_nemotron.md delete mode 100644 docs/Examples/Nemotron/script_generator_nemotron.md delete mode 100644 docs/Examples/Nemotron/script_generator_schema_nemotron.md delete mode 100644 docs/Examples/Nemotron/script_multi_generator_nemotron.md delete mode 100644 docs/Examples/Nemotron/search_graph_nemotron.md delete mode 100644 docs/Examples/Nemotron/search_graph_schema_nemotron.md delete mode 100644 docs/Examples/Nemotron/search_link_graph_nemotron.md delete mode 100644 docs/Examples/Nemotron/smart_scraper_multi_concat_nemotron.md delete mode 100644 docs/Examples/Nemotron/smart_scraper_multi_nemotron.md delete mode 100644 docs/Examples/Nemotron/smart_scraper_nemotron.md delete mode 100644 docs/Examples/Nemotron/smart_scraper_schema_nemotron.md delete mode 100644 docs/Examples/Nemotron/speech_graph_nemotron.md delete mode 100644 docs/Examples/Nemotron/xml_scraper_graph_nemotron.md delete mode 100644 docs/Examples/Nemotron/xml_scraper_nemotron.md delete mode 100644 docs/Examples/Oneapi/code_generator_graph_oneapi.md delete mode 100644 docs/Examples/Oneapi/csv_scraper_graph_multi_oneapi.md delete mode 100644 docs/Examples/Oneapi/csv_scraper_oneapi.md delete mode 100644 docs/Examples/Oneapi/custom_graph_oneapi.md delete mode 100644 docs/Examples/Oneapi/depth_search_graph_onenapi.md delete mode 100644 docs/Examples/Oneapi/json_scraper_multi_oneapi.md delete mode 100644 docs/Examples/Oneapi/json_scraper_oneapi.md delete mode 100644 docs/Examples/Oneapi/rate_limit_oneapi.md delete mode 100644 docs/Examples/Oneapi/scrape_plain_text_oneapi.md delete mode 100644 docs/Examples/Oneapi/script_generator_oneapi.md delete mode 100644 docs/Examples/Oneapi/script_multi_generator_oneapi.md delete mode 100644 docs/Examples/Oneapi/search_graph_oneapi.md delete mode 100644 docs/Examples/Oneapi/search_graph_schema_oneapi.md delete mode 100644 docs/Examples/Oneapi/smart_scraper_multi_concat_oneapi.md delete mode 100644 docs/Examples/Oneapi/smart_scraper_multi_oneapi.md delete mode 100644 docs/Examples/Oneapi/smart_scraper_oneapi.md delete mode 100644 docs/Examples/Oneapi/smart_scraper_schema_oneapi.md delete mode 100644 docs/Examples/Oneapi/smartscraper_oneapi.md delete mode 100644 docs/Examples/Oneapi/xml_scraper_graph_multi_oneapi.md delete mode 100644 docs/Examples/Oneapi/xml_scraper_oneapi.md delete mode 100644 docs/Examples/Openai/code_generator_graph_openai.md delete mode 100644 docs/Examples/Openai/csv_scraper_graph_multi_openai.md delete mode 100644 docs/Examples/Openai/csv_scraper_openai.md delete mode 100644 docs/Examples/Openai/custom_graph_openai.md delete mode 100644 docs/Examples/Openai/depth_search_graph_openai.md delete mode 100644 docs/Examples/Openai/json_scraper_multi_openai.md delete mode 100644 docs/Examples/Openai/json_scraper_openai.md delete mode 100644 docs/Examples/Openai/md_scraper_openai.md delete mode 100644 docs/Examples/Openai/omni_scraper_openai.md delete mode 100644 docs/Examples/Openai/omni_search_openai.md delete mode 100644 docs/Examples/Openai/rate_limit_openai.md delete mode 100644 docs/Examples/Openai/readme.md delete mode 100644 docs/Examples/Openai/scrape_plain_text_openai.md delete mode 100644 docs/Examples/Openai/screenshot_scraper.md delete mode 100644 docs/Examples/Openai/script_generator_openai.md delete mode 100644 docs/Examples/Openai/script_generator_schema_openai.md delete mode 100644 docs/Examples/Openai/script_multi_generator_openai.md delete mode 100644 docs/Examples/Openai/search_graph_openai.md delete mode 100644 docs/Examples/Openai/search_graph_schema_openai.md delete mode 100644 docs/Examples/Openai/search_link_graph_openai.md delete mode 100644 docs/Examples/Openai/smart_scraper_multi_concat_openai.md delete mode 100644 docs/Examples/Openai/smart_scraper_multi_openai.md delete mode 100644 docs/Examples/Openai/smart_scraper_openai.md delete mode 100644 docs/Examples/Openai/smart_scraper_schema_openai.md delete mode 100644 docs/Examples/Openai/speech_graph_openai.md delete mode 100644 docs/Examples/Openai/xml_scraper_graph_multi_openai.md delete mode 100644 docs/Examples/Openai/xml_scraper_openai.md delete mode 100644 docs/Examples/anthropic/document_scraper_anthropic.md delete mode 100644 docs/Examples/anthropic/smart_scraper_lite_anthropic.md delete mode 100644 docs/Examples/anthropic/smart_scraper_multi_lite_anthropic.md delete mode 100644 docs/Examples/azure/document_scraper_azure.md delete mode 100644 docs/Examples/azure/smart_scraper_lite_azure.md delete mode 100644 docs/Examples/azure/smart_scraper_multi_lite_azure.md delete mode 100644 docs/Examples/bedrock/document_scraper_bedrock.md delete mode 100644 docs/Examples/bedrock/smart_scraper_lite_bedrock.md delete mode 100644 docs/Examples/bedrock/smart_scraper_multi_lite_bedrock.md delete mode 100644 docs/Examples/benchmarks/GenerateScraper/Readme.md delete mode 100644 docs/Examples/benchmarks/GenerateScraper/benchmark_docker.md delete mode 100644 docs/Examples/benchmarks/GenerateScraper/benchmark_groq.md delete mode 100644 docs/Examples/benchmarks/GenerateScraper/benchmark_llama3.md delete mode 100644 docs/Examples/benchmarks/GenerateScraper/benchmark_mistral.md delete mode 100644 docs/Examples/benchmarks/GenerateScraper/benchmark_openai_gpt35.md delete mode 100644 docs/Examples/benchmarks/GenerateScraper/benchmark_openai_gpt4.md delete mode 100644 docs/Examples/benchmarks/SmartScraper/Readme.md delete mode 100644 docs/Examples/benchmarks/SmartScraper/benchmark_docker.md delete mode 100644 docs/Examples/benchmarks/SmartScraper/benchmark_groq.md delete mode 100644 docs/Examples/benchmarks/SmartScraper/benchmark_llama3.md delete mode 100644 docs/Examples/benchmarks/SmartScraper/benchmark_mistral.md delete mode 100644 docs/Examples/benchmarks/SmartScraper/benchmark_openai_gpt35.md delete mode 100644 docs/Examples/benchmarks/SmartScraper/benchmark_openai_gpt4.md delete mode 100644 docs/Examples/benchmarks/SmartScraper/benchmark_openai_gpt4o.md delete mode 100644 docs/Examples/benchmarks/readme.md delete mode 100644 docs/Examples/deepseek/document_scraper_deepseek.md delete mode 100644 docs/Examples/deepseek/smart_scraper_lite_deepseek.md delete mode 100644 docs/Examples/deepseek/smart_scraper_multi_lite_deepseek.md delete mode 100644 docs/Examples/ernie/document_scraper_anthropic_ernie.md delete mode 100644 docs/Examples/ernie/smart_scraper_lite_ernie.md delete mode 100644 docs/Examples/ernie/smart_scraper_multi_lite_ernie.md delete mode 100644 docs/Examples/extras/browser_base_integration.md delete mode 100644 docs/Examples/extras/cond_smartscraper_usage.md delete mode 100644 docs/Examples/extras/conditional_usage.md delete mode 100644 docs/Examples/extras/custom_prompt.md delete mode 100644 docs/Examples/extras/force_mode.md delete mode 100644 docs/Examples/extras/html_mode.md delete mode 100644 docs/Examples/extras/load_yml.md delete mode 100644 docs/Examples/extras/no_cut.md delete mode 100644 docs/Examples/extras/proxy_rotation.md delete mode 100644 docs/Examples/extras/rag_caching.md delete mode 100644 docs/Examples/extras/reasoning.md delete mode 100644 docs/Examples/extras/scrape_do.md delete mode 100644 docs/Examples/extras/screenshot_scaping.md delete mode 100644 docs/Examples/extras/serch_graph_scehma.md delete mode 100644 docs/Examples/extras/slow_mo.md delete mode 100644 docs/Examples/extras/undected_playwrigth.md delete mode 100644 docs/Examples/fireworks/code_generator_graph_fireworks.md delete mode 100644 docs/Examples/fireworks/csv_scraper_fireworks.md delete mode 100644 docs/Examples/fireworks/csv_scraper_graph_multi_fireworks.md delete mode 100644 docs/Examples/fireworks/custom_graph_fireworks.md delete mode 100644 docs/Examples/fireworks/depth_search_graph_fireworks.md delete mode 100644 docs/Examples/fireworks/document_scraper_anthropic_fireworks.md delete mode 100644 docs/Examples/fireworks/json_scraper_fireworkspy.md delete mode 100644 docs/Examples/fireworks/json_scraper_multi_fireworks.md delete mode 100644 docs/Examples/fireworks/rate_limit_fireworks.md delete mode 100644 docs/Examples/fireworks/scrape_plain_text_fireworks.md delete mode 100644 docs/Examples/fireworks/script_generator_fireworks.md delete mode 100644 docs/Examples/fireworks/script_generator_schema_fireworks.md delete mode 100644 docs/Examples/fireworks/script_multi_generator_fireworks.md delete mode 100644 docs/Examples/fireworks/search_graph_fireworks.md delete mode 100644 docs/Examples/fireworks/search_graph_schema_fireworks.md delete mode 100644 docs/Examples/fireworks/search_link_graph_fireworks.md delete mode 100644 docs/Examples/fireworks/smart_scraper_fireworks.md delete mode 100644 docs/Examples/fireworks/smart_scraper_lite_fireworks.md delete mode 100644 docs/Examples/fireworks/smart_scraper_multi_concat_fireworks.md delete mode 100644 docs/Examples/fireworks/smart_scraper_multi_fireworks.md delete mode 100644 docs/Examples/fireworks/smart_scraper_multi_lite_fireworks.md delete mode 100644 docs/Examples/fireworks/smart_scraper_schema_fireworks.md delete mode 100644 docs/Examples/fireworks/xml_scraper_fireworks.md delete mode 100644 docs/Examples/fireworks/xml_scraper_graph_multi_fireworks.md delete mode 100644 docs/Examples/google_genai/code_generator_graph_gemini.md delete mode 100644 docs/Examples/google_genai/csv_scraper_gemini.md delete mode 100644 docs/Examples/google_genai/csv_scraper_graph_multi_gemini.md delete mode 100644 docs/Examples/google_genai/depth_search_graph_gemini.md delete mode 100644 docs/Examples/google_genai/document_scraper_gemini.md delete mode 100644 docs/Examples/google_genai/json_scraper_gemini.md delete mode 100644 docs/Examples/google_genai/json_scraper_multi_gemini.md delete mode 100644 docs/Examples/google_genai/rate_limit_gemini.md delete mode 100644 docs/Examples/google_genai/readme.md delete mode 100644 docs/Examples/google_genai/scrape_plain_text_gemini.md delete mode 100644 docs/Examples/google_genai/scrape_xml_gemini.md delete mode 100644 docs/Examples/google_genai/script_generator_gemini.md delete mode 100644 docs/Examples/google_genai/script_multi_generator_gemini.md delete mode 100644 docs/Examples/google_genai/search_graph_gemini.md delete mode 100644 docs/Examples/google_genai/search_graph_schema_gemini.md delete mode 100644 docs/Examples/google_genai/search_link_graph_gemini.md delete mode 100644 docs/Examples/google_genai/smart_scraper_gemini.md delete mode 100644 docs/Examples/google_genai/smart_scraper_lite_google_genai.md delete mode 100644 docs/Examples/google_genai/smart_scraper_multi_concat_gemini.md delete mode 100644 docs/Examples/google_genai/smart_scraper_multi_gemini.md delete mode 100644 docs/Examples/google_genai/smart_scraper_multi_lite_gemini.md delete mode 100644 docs/Examples/google_genai/smart_scraper_multi_lite_google_genai.md delete mode 100644 docs/Examples/google_genai/smart_scraper_schema_gemini.md delete mode 100644 docs/Examples/google_genai/xml_scraper_gemini.md delete mode 100644 docs/Examples/google_genai/xml_scraper_graph_multi_gemini.md delete mode 100644 docs/Examples/google_vertexai/code_generator_graph_vertex.md delete mode 100644 docs/Examples/google_vertexai/csv_scraper_gemini.md delete mode 100644 docs/Examples/google_vertexai/csv_scraper_graph_multi_gemini.md delete mode 100644 docs/Examples/google_vertexai/custom_graph_gemini.md delete mode 100644 docs/Examples/google_vertexai/depth_search_graph_gemini.md delete mode 100644 docs/Examples/google_vertexai/document_scraper_vertex.md delete mode 100644 docs/Examples/google_vertexai/json_scraper_gemini.md delete mode 100644 docs/Examples/google_vertexai/json_scraper_multi_gemini.md delete mode 100644 docs/Examples/google_vertexai/rate_limit_gemini.md delete mode 100644 docs/Examples/google_vertexai/readme.md delete mode 100644 docs/Examples/google_vertexai/scrape_plain_text_gemini.md delete mode 100644 docs/Examples/google_vertexai/scrape_xml_gemini.md delete mode 100644 docs/Examples/google_vertexai/script_generator_gemini.md delete mode 100644 docs/Examples/google_vertexai/script_multi_generator_gemini.md delete mode 100644 docs/Examples/google_vertexai/search_graph_gemini.md delete mode 100644 docs/Examples/google_vertexai/search_graph_schema_gemini.md delete mode 100644 docs/Examples/google_vertexai/search_link_graph_gemini.md delete mode 100644 docs/Examples/google_vertexai/smart_scraper_gemini.md delete mode 100644 docs/Examples/google_vertexai/smart_scraper_lite_google_vertexai.md delete mode 100644 docs/Examples/google_vertexai/smart_scraper_multi_concat_gemini.md delete mode 100644 docs/Examples/google_vertexai/smart_scraper_multi_gemini.md delete mode 100644 docs/Examples/google_vertexai/smart_scraper_multi_lite_google_vertexai.md delete mode 100644 docs/Examples/google_vertexai/smart_scraper_multi_lite_vertex.md delete mode 100644 docs/Examples/google_vertexai/smart_scraper_schema_gemini.md delete mode 100644 docs/Examples/google_vertexai/xml_scraper_gemini.md delete mode 100644 docs/Examples/google_vertexai/xml_scraper_graph_multi_gemini.md delete mode 100644 docs/Examples/groq/document_scraper_groq.md delete mode 100644 docs/Examples/groq/smart_scraper_lite_groq.md delete mode 100644 docs/Examples/groq/smart_scraper_multi_lite_groq.md delete mode 100644 docs/Examples/huggingfacehub/code_generator_graph_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/csv_scraper_graph_multi_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/csv_scraper_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/custom_graph_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/depth_search_graph_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/document_scraper_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/json_scraper_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/json_scraper_multi_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/scrape_plain_text_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/script_generator_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/script_multi_generator_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/search_graph_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/search_link_graph_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/smart_scraper_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/smart_scraper_lite_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/smart_scraper_multi_concat_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/smart_scraper_multi_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/smart_scraper_multi_lite_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/smart_scraper_multi_lite_uhggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/smart_scraper_schema_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/xml_scraper_graph_multi_huggingfacehub.md delete mode 100644 docs/Examples/huggingfacehub/xml_scraper_huggingfacehub.md delete mode 100644 docs/Examples/integrations/indexify_node_example.md delete mode 100644 docs/Examples/local_models/code_generator_graph_ollama.md delete mode 100644 docs/Examples/local_models/csv_scraper_graph_multi_ollama.md delete mode 100644 docs/Examples/local_models/csv_scraper_ollama.md delete mode 100644 docs/Examples/local_models/custom_graph_ollama.md delete mode 100644 docs/Examples/local_models/depth_search_graph_ollama.md delete mode 100644 docs/Examples/local_models/document_scraper_ollama.md delete mode 100644 docs/Examples/local_models/json_scraper_multi_ollama.md delete mode 100644 docs/Examples/local_models/json_scraper_ollama.md delete mode 100644 docs/Examples/local_models/package-lock.md delete mode 100644 docs/Examples/local_models/package.md delete mode 100644 docs/Examples/local_models/scrape_plain_text_ollama.md delete mode 100644 docs/Examples/local_models/script_generator_ollama.md delete mode 100644 docs/Examples/local_models/script_multi_generator_ollama.md delete mode 100644 docs/Examples/local_models/search_graph_ollama.md delete mode 100644 docs/Examples/local_models/search_graph_schema_ollama.md delete mode 100644 docs/Examples/local_models/search_link_graph_ollama.md delete mode 100644 docs/Examples/local_models/smart_scraper_lite_ollama.md delete mode 100644 docs/Examples/local_models/smart_scraper_multi_concat_ollama.md delete mode 100644 docs/Examples/local_models/smart_scraper_multi_lite_ollama.md delete mode 100644 docs/Examples/local_models/smart_scraper_multi_ollama.md delete mode 100644 docs/Examples/local_models/smart_scraper_ollama.md delete mode 100644 docs/Examples/local_models/smart_scraper_schema_ollama.md delete mode 100644 docs/Examples/local_models/xml_scraper_graph_multi_ollama.md delete mode 100644 docs/Examples/local_models/xml_scraper_ollama.md delete mode 100644 docs/Examples/mistral/document_scraper_mistral.md delete mode 100644 docs/Examples/mistral/smart_scraper_lite_mistral.md delete mode 100644 docs/Examples/mistral/smart_scraper_multi_lite_mistral.md delete mode 100644 docs/Examples/model_instance/smart_scraper_with_model_instace.md delete mode 100644 docs/Examples/moonshot/code_generator_graph_moonshot.md delete mode 100644 docs/Examples/moonshot/document_scraper_moonshot.md delete mode 100644 docs/Examples/moonshot/readme.md delete mode 100644 docs/Examples/moonshot/smart_scraper_lite_moonshot.md delete mode 100644 docs/Examples/moonshot/smart_scraper_multi_concat_moonshot.md delete mode 100644 docs/Examples/moonshot/smart_scraper_multi_lite_moonshot.md delete mode 100644 docs/Examples/moonshot/smart_scraper_with_moonshot.md delete mode 100644 docs/Examples/nemotron/document_scraper_nemotron.md delete mode 100644 docs/Examples/nemotron/smart_scraper_lite_nemotron.md delete mode 100644 docs/Examples/nemotron/smart_scraper_multi_lite_nemotron.md delete mode 100644 docs/Examples/oneapi/document_scraper_oneapi.md delete mode 100644 docs/Examples/oneapi/smart_scraper_lite_oneapi.md delete mode 100644 docs/Examples/oneapi/smart_scraper_multi_lite_oneapi.md delete mode 100644 docs/Examples/openai/document_scraper_openai.md delete mode 100644 docs/Examples/openai/result.md delete mode 100644 docs/Examples/openai/smart_scraper_lite_openai.md delete mode 100644 docs/Examples/openai/smart_scraper_multi_lite_openai.md delete mode 100644 docs/Examples/scrapegraph-api/smart_scraper_api.md delete mode 100644 docs/Examples/single_node/fetch_node.md delete mode 100644 docs/Examples/single_node/image2text_node.md delete mode 100644 docs/Examples/single_node/kg_node.md delete mode 100644 docs/Examples/single_node/robot_node.md delete mode 100644 docs/Examples/single_node/search_internet_node.md delete mode 100644 docs/Examples/together/code_generator_graph_togehter.md delete mode 100644 docs/Examples/together/csv_scraper_graph_multi_together.md delete mode 100644 docs/Examples/together/csv_scraper_together.md delete mode 100644 docs/Examples/together/depth_search_graph_together.md delete mode 100644 docs/Examples/together/document_scraper_together.md delete mode 100644 docs/Examples/together/json_scraper_multi_together.md delete mode 100644 docs/Examples/together/json_scraper_together.md delete mode 100644 docs/Examples/together/rate_limit_together.md delete mode 100644 docs/Examples/together/scrape_plain_text_together.md delete mode 100644 docs/Examples/together/script_generator_together.md delete mode 100644 docs/Examples/together/script_multi_generator_together.md delete mode 100644 docs/Examples/together/search_graph_schema_together.md delete mode 100644 docs/Examples/together/search_graph_together.md delete mode 100644 docs/Examples/together/search_link_graph_together.md delete mode 100644 docs/Examples/together/smart_scraper_lite_together.md delete mode 100644 docs/Examples/together/smart_scraper_multi_lite_together.md delete mode 100644 docs/Examples/together/smart_scraper_multi_together.md delete mode 100644 docs/Examples/together/smart_scraper_schema_together.md delete mode 100644 docs/Examples/together/smart_scraper_together.md delete mode 100644 docs/Examples/together/xml_scraper_graph_multi_together.md delete mode 100644 docs/Examples/together/xml_scraper_together.md delete mode 100644 docs/Graphs/Abstract_graph.md delete mode 100644 docs/Graphs/_category_.json delete mode 100644 docs/Graphs/assets/dept_search.png delete mode 100644 docs/Graphs/assets/graph.png delete mode 100644 docs/Graphs/base_graph.md delete mode 100644 docs/Graphs/code_generator_graph.md delete mode 100644 docs/Graphs/csv_scraper_graph.md delete mode 100644 docs/Graphs/depth_search_graph.md delete mode 100644 docs/Graphs/json_scraper_graph.md delete mode 100644 docs/Graphs/omni_scraper_graph.md delete mode 100644 docs/Graphs/omni_search_graph.md delete mode 100644 docs/Graphs/scrape_graph.md delete mode 100644 docs/Graphs/script_creator_graph.md delete mode 100644 docs/Graphs/serch_graph.md delete mode 100644 docs/Graphs/smart_scraper_graph.md delete mode 100644 docs/Graphs/smart_scraper_multi.md delete mode 100644 docs/Graphs/smart_scraper_multi_lite_graph.md delete mode 100644 docs/Graphs/speech_summary.md delete mode 100644 docs/Graphs/xml_scraper_graph.md rename docs/{Info => Some numbers}/_category_.json (100%) rename docs/{Info => Some numbers}/api.md (100%) rename docs/{Info => Some numbers}/stars.md (100%) create mode 100644 docs/conf.py create mode 100644 docs/getting_started/_category_.json create mode 100644 docs/introduction/_category_.json create mode 100644 docs/introduction/contributing.md create mode 100644 docs/introduction/diagram.md create mode 100644 docs/introduction/faq.md create mode 100644 docs/introduction/models.md create mode 100644 docs/introduction/overview.md create mode 100644 docs/introduction/sponsors.md create mode 100644 docs/introduction/why.md create mode 100644 docs/modules/modules.md create mode 100644 docs/modules/scrapegraphai.builders.md create mode 100644 docs/modules/scrapegraphai.docloaders.md create mode 100644 docs/modules/scrapegraphai.graphs.md create mode 100644 docs/modules/scrapegraphai.helpers.md create mode 100644 docs/modules/scrapegraphai.integrations.md create mode 100644 docs/modules/scrapegraphai.md create mode 100644 docs/modules/scrapegraphai.models.md create mode 100644 docs/modules/scrapegraphai.nodes.md create mode 100644 docs/modules/scrapegraphai.utils.md delete mode 100644 docs/scrapers/llm.md delete mode 100644 docs/scrapers/types.md diff --git a/assets/api-banner.png b/assets/api-banner.png new file mode 100644 index 0000000000000000000000000000000000000000..06de517d9eaa4547d2291a343ef585c7f5086387 GIT binary patch literal 59971 zcmeFZRajinvM!1Q3GVJraCi6MkYK?bg1ftGfCP6EJXmno212ml?yikA4tJ8Z_dV-8 z-uL@J)1&G6%`vO~s!{S6(P}Dks7OReP*6~)3i8q#P*8B~!21_Oc;Hp=F9s9v3))pf zP7^ z3(}uyK{$UQopYbFTV9c;__B_Xul8L$nCfHx`;(7f8gUrigNY`n23A6(zBXf|eXDGX zTM}Ap@zknI&KW(eyLeh{%gGS(tYQ&x-4nCwEUIK~=79kbn8k7Y?~7gflugtBSpx6o zYe2z#|MiWyTFhWr$N&BQzpqlmAgumh*T}v>YbX5gYvK_}ytw}R8e&ZTbIbp}hL_4| zef0m@iS&AR*8jV&*NsGV|Nk5L|16P^y1Mn*D33f2JZc$r3z~?$+uE< z-Z|}0VSObllbs;{T5a-Q02qh>K;_e8%xU~sPr@u<#asM`JhuM>y&YOCksa}MU5RHU zRZ>)XP>>jduWwscN9ntteW{5MHZr}P(Z&i@0j*-rr8W?_+9@pDB{@%4S* zfs{v*HX3{K@n2k~UFc2*uzWPe_T42U_7R`%u%U*skw)`{#hc>^O6CRu={=_XLV^K(vJ z$05kDI;Dx*9Y0gfH*o63&ZvoeT;vK3?UXsVWMHJD^S{jF2p%w>hLo>(kv7PKTaRqH zA#Z#crw=_ zt~QC*N}s3>Nh3*w7gyJ`aB#tFs@{t5!A`xUwkWb(-6bE!LeAF7+Ujlj2odlHV*P0q zjfbHVTH=^@iL(XAHP&qCT7~U3@IN*KHgY*nbV2a=O=)%vTM!px04eF>KNO4ENFupd z4dPlx==#X4KBML_)+9ihJzDe`n3+MHPYBNE>y#vdAENr?kkmiw!se}&uvC90t*jGq zC&gTl%F1n8up1g4>z}VRV-I-Li6hnyV$`IgWa1*FOHuIsNbE!EKVf(?>*06)mk#HI zDecHCu683X;F{BH_)WIk7|I`A-nV$4_8^J11;_gZ?~Zj`p_W8f6Q7o1G10;stO$;b zmJRDR65zpWwGgP;juz}C?X$?alet`z%0Oq|;RqoIHdPXYRl8|LdFRb+rZm%omS0JH z9GYW7jV102KAZPL)n<^aODBk1Twx9^1Zi0}2YsHKt4jqa>?TWrgn zt-sZ|2?F%05et@w7>1h7$6&AX+439k<0V^B^LHF~_iIG>P~vCimJ*(L~zSsbc;w2d?W!|wt9lVtB20l|Q> z!FhSibA(z*JgL`ZZNr6CS===opndN12N<2pLyz|7wT6qi%K!Or9m2^=;`K{C`hCnF z9bxFXOh#Jn3ffqocr2{^+(%Q&*=A13^n7gHy#!$vI!l2h=`f3C&`t~^okdBxRICI)Ev-0_V|bKW$Y6ut3h_lB^YZT_U6 zqwWn=`9QcrMcZa4hS}Xe?Y+blFy-ck5!P|qYYIsM`f&JA`9ZX zcMt2ey_)8HJ5_YS0SJorKtQ4Sxdh+%Fr;>o1SFdlDx`S6eYV;gd_oJXTS0*RoLJ{K z2EH8PlGVhMzM4$^7NpMVJ~}$~bmEkYcT;`78uzH*n3ab7>@@@qL*!6~N#zJ0TnhB*tH9MltGo&@kVo{p?Ce z?2o09!++v>xh`Mxo9(T4JCz5s0~?{Hv+n{ITKht&gvkvf)7~cNrHueQJT_aC-n+55 zC@6gSC-%0FoE+HG@Rzr(Mb?3(H+Mauk+qI%&@?pt)O>uz@Sz3QcV8=|zwgl%T{+R( zz9ZW90}(th8$8bJG~fH~Stk+@ui)f_D7ap51Zc7Hc6CLHeXT)bZ9Vt^!1?;H`j&ur zbpO|A^MOE=Vx8H;A?$KSq*mZ6=cxs;d#h+oGV6 zv-Xoe-%^kTKH4mdWbLAVtatqQk!QZsKW%xAaH{0D-rAw7xSk5<1-+%|3xtY$wsGh# zj)Ql;bhKl`3V$=ZLiO)1JE-t)9X5wW05orB(2{XtKt4JlFrWFORHO=q!NUF2GRfVfF83 zZ*IrKbP;+=-pgW!j@NztY)zJ}N!qt>TdINgZ6w*rC?z#*9mecoz(KGB zmE~$VZe4M}lJHH^vCDcLVkb(q2gHBkMbKed`mN%={RBc}tty0EwAe?h%Ws{A2h_ut z6hWp^U8e4I^EKB+{);5MdVt~U*fn>2a9$skWxl7ojZ?(mc>Ju2c@rOHxd_Ln=L48*7}qQC;=2QRkG1a zUOi350rH9U*_~L2v@QY*OrD2 z3uv>1&p0@swlR_foZh8@|NLS@TQXcRD66O*G)oiH7823#5=|J@11W}(1()gs4>4;E!4RqJVPe>>QubHj@k?W zl913-spF000Nszb?`X2S4!=3UG^?!U9Q~8gRiN*b`yO>>FrN$&Z`dt09_kp|~6{HZE z#Yc%vpC@Mo#SYSWDS$vS&+;lnOyhD&zs==Qg*x(Hyn^JVRlGjUIojg{lUU&u!h!L# zkYrd#-c9B%FX#(;3yG4?Ococ<59C{Y=yO94)TH4LUAH@q>n<%8P%3-kjuRWbN2)2; ze_n;B<~aTR$_sd!W9iArN8G%;Y7tZFw}7aw+3xjS2b#vFfrkrweYiPmdp3b{OX`>z z6Ogxd(-TQL%vy1=rGT1+zkdg>=XOO!#b95eFsovgw3K7kR7k9&UI9xFff+r>oMUr( zd~^l?;r+;k;x07@i;8c*EDQiaVgkjntZ*6!HaVPstD@SDZ6GROP#nvp{rpjL&;iMZ z@%-s_%YDAXs;ilNGL`7AH0|bdbv59zqx~u&ZrV;`9~F13=i)d#3RMgRvV7Ord7<|E zo-?$W{{kBi0yYjGVOZTqxNMlf03eQ+UDoU$;y5bNkn!?(knyt08onwhE3;@->#{i( zUCP2DJyevJgLlh4F_FUS4OhkWlVL|#(@R(e0C-8A94u(F&b~g$5+nYfh@Sj8G9Z3? zz00f({&?tuEpXTWSzCYpCoWLBLdFnT7TwWD&2Gi1PJe`2n@cV4K<Zq~bK^clFF_hsX3cbqvRjWY{)Z+iwX%dqg^apNg%AGz*rIpl zT(Y`*r)ajepKCwg7&hxW+@*&E-oG8G58v7`0}&j>W+*nJn%L!!8gYDV8;sz3RjAh# zUP5>waSmy=EY`nuQQ1EQBW8Fr4w0n1^JUj8RTRktpaVWA@kMC&^sM(of;$>y%Av~p zhD;W?@LXp#9`H3y+cuG6BqJ^>wa-EsP=lmc_y}oU6<`>sI6xfg%;oYbp-n(SJsa{h zl#Y@SkSJ8SS9SBtYW`CZO|xX)+hqHvStxKNSkDgHCMkK=5y$ zeBx1okerj(3&{S8R?PY^0nD; z&SJ`+TB%cdqIFy5`b^({8`-6;?rwklRFl6hM3Cl@i!y;w+~oP@0i7f{)Js-i(|%}Z z1G9$EtagiSgn(EWPV-m2@Bio}MIb_K3B~H4sALuY=_Hw||J zMCDBE`^W4=$BSDDaXvyQn*z0IizIM(nlUJyd%J7E2`EZ2+k)kj^TR0A@o*<#y?bLe zm??V3LBhqdU3gG^@^bFm=`I&Ymi$>N{jmyzXymbUc}rs05+BWfI!wfo*Z9HJ z-DMGC$0F+AK<2B>vpz96%CI^gau{mZY#VysHp8j40&bHsZGkFB_for3i1ics89Cc@ zqU*j=kGi;O0@fei#cLstw}8Iw4}cqZt_@C0pY<=}=Dm6~^NprM zTt$~Z8Axd?`KVBDhOPbfUBGRTkTEx;uRG54K_P)LJ?jPayP%b1NqRk$4r*|bi4zT$ zEW>eM#Zp(4<(axbwa7bnm%HAk{-gL!9$V`*@I2M#bpUvg%8uz7;r-DZCCS_RsuyV> zD&7)Hd_={ji%VJhez2w8xDHolylkM}wSPZ-)3-0Cu%W#UNI#EapImIq(CSr2KSH}xg7Hk_ z`MR-6B6%d1K}TOW$EfH(B|}5D8`*dgWlZ?swi+V+IcaWqBc{t3-*`%?bq-8E1aXZr z(94x$LU5?DT$JU1^YvM48aEy_G}H!Tog+AJDRfN$o;l*xQ_nSAI?SE^@50*p)lG-0 zlxP~)5hSG(MH0r+ueVpIrkXIJ7R%o`hQVv&KccSyO4`dGD;See3(*ki$Wc+g>0>=+^~Gva%oAtW zOu1Y_mg`MV58&9{2}Jej(5&n-J3HKOwMMtT{;0fEb1+1%ekMv|c$7AN!}D0|`aB;< z)?2B|r8kF(6t*pRE!)xR?;Lc=#);1t zb9xr=?+av)=Yur@%!|~sYlRYS{oRhh<;KM!Q1A5>Ygl4I!aX&7vqg zuqOCa60O%Ugs0sc#{kfpJZ10Y;(;a6c2@ zC(;Pend%?j5oGzK>QpNTPdUF7E}_Qqp*3}BL`)&PGn90{Q~~p1okI9a@ta4pg9!!Z zC|3lK(G*#)1b_LR&b!C@nv$8To^@EfNd5dQ)*gKCFt?Io%n&B_0v65o2HDj0zqO}s z&DpeJ9v z9knB1fN`UjsKxV1lElB^h4}VguUb7gN=-%|$wQRav_?uNZLz2%u^?|Etijg%s0{b5~T7T~Og6#YIB~n$9Tu!ZBciDiaE7o_mw4hyW_1^%AU2ht5RRE3&Imy_FKmoGo$>E5Q~3{UoD2Dc|G{_ncXK-9 z4MHyVz3t(2ZXt5;unI@hQ60%ua8`(I+DK>w2>yfChl0X7Bp?-ZYCBjOLX3llJw_8s zPQgn0_ANRtj+?*VEG62Q&a5+QMJ+9d|Lo%5Je`aZ&UEZx<`)uGgIi!7B{p(6sgz3>ns#O7J`Ab)cZvWc$ zEe=*k{ArO7wuJx3lw+`R!A*pxM`3N_4|hV){5gnR9v<|3L*%^vL`Uc{CI0P+mUZQg zRcmd7-N#6x^(P8ZMbu7u=0tpK^csE){%*p~*YMQI*;l|1DC^*FE++IIi_=oYlfzWS zM|s6g=V$pS4v}G-I6v{Z`GEiGSYqz?lZv=Obc0+Ojq^|k1a;vz?ap620_182CoLsP zAQ?W^v>io;{RGQOoG*>xMVLTRJv}{Z^30*7v@dd3&90LRVzwd}+`YyZ8}O@5ut z=RZq7x*rhMUho{+H)1b1a&GSL;g9EAh(FI(;_n?Yv>TFlSp2p)C}F8Lx@zJkirXBO z3+^!%H_GQh}|_ip7)#YUn}&#U3vD?Y}PQEiUaD%=clg3HFtd?i1%e41ZF^9 zfll*O@#8&eKJr{szO@u``zYmY|FqE`w2sO?Qv1B6IjA#q%Mvm?jvY3S{B@cVlI6Oe zmi$NPB+5UKld2~lTB5X?Q1L}#jv0+a^R%}$KCsED)+pEa5AF3nP`+^yf zW4xJh_9VMS@naZaV>onulTo>WMqO;uj7iVWu4foa=FFgGn#lH`*ckXiTU7^qt?GrK zl3X7$1T-={{9n-Z_01L-iX)_K6F;tp#I^KE7wxnbMuezEP`jS5Pty5KNXCR-TySvH ztQBw2egf#0F$)Ykc7Qnx^15Uw_eWofc|mKczG!|}Ag(tEU5z;qm@{z!?U`_@p|_aL z`ECZ^pa-6_EIU2ngD2%agU173@FUT2e=n|H?MPB!e0i8$@i`EX>}X@bi{)RF^?sSQ zP;^>p(54a-(|$%RtS( zrM{(4b&N!)&T8ok$2YoH>Er*8^b-b2Wer%ADY5V$>)20a3ZxYs=8k*EUx)%-Ayc;C9wu+iba>WPz($1WB|^Nmf~z^!Z`!Wh3y# z7frOwD5Cg@R#X%X{rS2nUBH!ywc}Xuc%_ZJ_Ic2rm&VxgG(P<+*c&V_5@8)hjOzb( zbWsz6<3Z;C=GmC*I<^>Ynm$2_mCgZI2EAxC`0W9{smilM+HgHuKbhK-Bk$9TWjX`+vn?I@u+k5z(q0K$sjnAK#d-oSGddbIX4Z=_ldZ z{H4sk=*F%$@Q`BHhr94;X$>pYLXGJClgk&yOdmxnwe7E8?7tqBkZsTrckso!M|mut zp;7Kf54rP^TvIBEus-Dk5)rf5Yt&3f*D7xHi^h8LxDI}Xp5^+{v}F z1E9%#fg<#;X0bj8Nm{-_N~Z8N{}yHl{GoH{;m5Bt)#0kkCHcCj5i_gflh;#~!x`G^ zo8IH5vSaR1zqVty4h#}`bEsH#SOf_20-(q8t{wjjzeJ>e#z|=n$h6LyJb@n|)^?xr zIA#h&8(lTklljxHHz31_iihM3Z9g~bziBPvw)$F<88KQ(95-;mB@5VgK3;4f9vvk; z@|Y@9d>`A#M&1Uextq8X>js)Hl{Mk}#%jX=8OdES2ww>U@{0mZdOh>_3h(zVha0C_M1470Y-!p?(~^+LA-k54pxh7xGh!OBQfntqe|^6BRi|b-_mhLr_zUS zxRiKF-L5=l!gqf|{r2>kP}_{GrVUej`S#W-E}s2EZvPp2Q59WSZy)sW5_Wg6KQxIb zLHA@bg>8kDwS&e;w%WW%@<;|otG?E_f^@`VJSxs}q`C&q*FEz!GIB`3p;Q?^pK`p3 zE{v>SziC{&We-tUS$1?aMw0k-4QiW0zfp|*6p^$ZFLbU*5I-5{J~Y5|vrwr1A?{iM z=x4LO-0SMpm=ax`^g5Jxb@)H1JYE{T3;+!TzT@SVwl%3!$R9fDF(YqYPR_sJVGzsw zFM3E1sf~A27rfk&cHd5gIR9qk=vSnUu}YC@R&0Z66%I;~fGXx-Q{MjJ?qz&CoN+f? z2D$!LPIl1~zdvISNOZ-4XdsUrMe7`UXlH2%37g}5P;X{aP3<{)srw1;$kmfjIaAdw z$%Tt681(6E{d_~x-r=R-f^&MwcjZ3b3;biwLfI)ZEj5!$%2{&Ix;B&D!xjzAj!n|v zJtcdbfLN6E`OxKrOb8RlX%6>Jtzj+nesj!(?>eD4cR6FqjzNbg@@iO%#yrc!W8b)D zKYxm8@l6ZK_3zY%U(`s#*S3PwQ=VCz`@9F+K4lP(dmN_Zi_tnVzMra)$Js`SC9Y`i zF>am{2zShNY*UpyJ|)h~c_WChzg5PUT+He0u4q{C6%w;3PCKs+dB>Kd4%)0wz=X~JAB2M@L!)5{I_I=Pg#}6epONI~ROM-;0x0>7C zUs}U73;J1br;>xSNG|(9GE%#2+Bej)FqM-GhBs3)QavgtYmoDtkH3hx=KpZb>G4e@;crBPX_ekmdv)n4WJcQ{ zqP`wSm#?F~($P_}15+gRM99NrFF~~cTYEc$@Zcw`{$Hqc2!Dm}J*-gd#--azMG^-u zHy9!LnX>QH-;mH_s{7ku;Y5ayN20-D|5w*7ix$k!AD^Cian=Dvj@Upvo~UwM#dPXS=f*_&kHDGkV84Qi?QfL+2EER z*Y0Wy=UzB(@tdHX7nE+wDx>>)#AZeD{?`#Vdx+cINkdL$n`N>p3cu*oCPbQMy`@bE zIUSe~z!R?>$4g1)Q%jkr^OK2c_O$hNK{;%f^NuORN0=BG{~)Ps>*zQ@f#)1$VXqb! zz4>+$Ems_`x0M(0+5u_i^!=yxoAt#lHw9jorMVk!!$dX%#Qr*!T8A zja9S=>hOWv5u+DI`unBQf=+&XJnG$CLBJ*B4GjVvAw4xUC7znHG&iXX^3~lh5GA<} z*g}q-q+kI$-Py3-z1#`T4=!PnXZqmQ=E~eY%kn1WBUPLcO#>$%e^u*;dK9>`mdoS1 zCU0$FWeM(7xOE#u%6;S;f>t2W%Tr^g8gV~fA?;4;llY(&VV;4OXU(Q#b>%Jl)0Iqi zVG;w46fyr?4Jv+n4fq&?BK{-0*~eYDhwe z=bhq>gBLn%{29#X5vIqP1dUFKNRN&kKmens5#b|D*^8HXPA?Uc5;GyF9HW1b4SWCXD{ti>h`MX=!M8Kv+em$)(ZR- zz0NHi!Ekt&4==+F=&b{7xS7Io=c}h@CZoYd`QJ~e>u>wB()6qKAHya*K-+u6hO36v z+I}?z%b7Y?Ydwl=UBPKa-bGTXFVmGYN|~Ba6&*(tVH_Y?ss*k^^57E6sN#zt5~n&Q zu&(SjixUOM9F4CTIo~wE| zoiD*+Bgu53@xRlKmpsMw)gF?*qz3_%f|CsFl8AcD+Yr=JyTzC}&j3O;`!=G{RVqR~ zxll*Pd_1zic)!uw<>z-`ztCoU)YgIU&T5>qlNMAqyB3n2_`GiHQq1v)Pf{Dt;(;mA z*n@qRzf51ArL1k7ZN^cA1<^7e1H_&m)4Gbv%Iql=kyJsd;}U*#nxd8fIjQo8V9;+7 zGLq+JLZRI1zDX7buR}>huU3_JrS(xP>MSN$$nQcWe@H7qa*eF&8J)fpCbTWr#^J%u zz7av$Y-9@XM66n*NN{jB*^9mAZ*L|1_#kXuwxP~UNIYsSE{kMcmJM{ObRcS42tT&# z8=FcY-ioeo8X71U6g$f~!$2U65DC%9xOmRk-je4!=nsNb3WUcTg+TXX-I4Zr0FL z*V84a^<>UL5Mp)4)C#-BAk@gS!PrmL(m)nm+ZpUj%}ErW&h0FG>_IGg??s9dF}}N} zG|Ix--f(DexAykwXTK3j*@6O4x;%sd9EgStl(sVBH{T9^>EIjWYyQ>&IBk1z_)smUsI1m%rq0MkpT}z>zYGjMNSXmeuQNc=St|WQCmx3Q__UW zg6<`z-Dq^y<TBqq0+wb~lO@`rW zfk!e?^ilgyt_ZAS`yE=qZJ*FKMKo+Q%yNy^YFNm*^+NLL8!1umQ#WpcK8ki|3k!?Q zRim{8-CvgL$%@rI0O6&<3LZZvPf;w8GQfFGbsIdDhNx#ob*;Bv5uR+pY-)3)Zx#E%~<3aYbZF@ zXhuqFR@+R#28i(dlSB#49d?=qxV=43&^V-T^MS~#Xh4E+y;06SVx=l2l!K1u@XOc2 z(5bS}BoM=X%loMsyl95H2yY6g>DjP}X$%Q7GlJ1kO5LspoiTpWI@hZqVl$i+=q>tm z<6r2 zWgRaN3Za)~ev9)K-m=%!PsG3H8+p)3>eU^)$hY9c&QMqc^erZ%C*JaM_-0G@E29aF z_Ob7m&Y**m&6j{j5napON93xB+&epcuZ@=Gz0;*nuxF|8e5dVTN}wP@EDO{O?9lus z!a_}L-y!E0)bs6hPV;?h(f)1>*%{`Hn;pcEm$Ub2htJB}Z|%p+@cf9hYm`$cawt+h ztQ;&DejoyOI9Ry2#=XANY@re-_D$@2f5?BLA6^`nv-!i6P*#mI^KvO=_p+s;)s^W! z0UqVVc0Xz)5Mfes@esx`-d44G1UAz1iUUVWFM}|Sw2cDdj~~#}A2fenj=exwv}7Ow zs^b%8o95KT)jHw%v;uB96gm)lK%YS$-tj`tu(^^DZ59VUM%$njJAvpYiB8#}8Q z%C|B8sXj`O49=^F1lu6=f@GGyKS0w)?(`chF-`-nt@2@McD7ympF9J6l=7{oQ(tmQ z3`7b>4oug*KVN$eg9=GZqddxMbpE6ZdsAs>B%k*nR3JR-Us2#76&NdZKAO_}-hxEm z<*kUmGIq+?zy(hJT;&iS^Z66|n3FWs08gFSCrDewY%X=K?Z(GSjSsN=q2s1d-!xjslM6-q& zM0ttIG<&nGF9t_7sgVvP*OCE+OqHSFoPo{2nbj2<78cyg-Lcf0hmcvRj=*1aoK66A zHX@F?q8$A%Ki`7p9Q$|D{Lzr{|Hzn{N+$N$+t?7kQXW!c2Nmd9z7(8UOYd>AvEc(k zOE$R#xLy=p82c*xB*`P{qi11ZUf+x9s09Sn(L5CP9;8EULVJRCN}~BVQJ->--VtxO zqdr5G0DgLcVVPxdf(oJhd+y5W?kar$VN>a(afYoaI&A<_Wq-h3zdduiGUXku_>3W2 z3}0h@Z5&Wtl1))#he;F)DW)r5VG-qX8*3|=Q$KOwIWNwf1xE|&{ETUin8qV0*uPjd z{~P_;0dAP_5L{w)*mg3bBC^G}?_h)0NAJ*fdm01~Q-x)$f=!j+E4QErfx01aj6Elg zW_hDDF;PC(W;GW6R|FvCdehuk+R+#4zNzs15#fjkVf8rdc){h3VUx9Ae>fgox=#n1 z*lkZ!KUb}RxBAoB@iFtV=UI+U+r4u8Rqs~w-dxjGYL;VfT2&hs--;JY!1Z;GBfZg&r+4F6r@0Yy1ImW0TYBxZLi1SdC(vel7lrc>-lt_1V0~8*aEk`pGMzfj< zwyj$rO2kNYDalyi>*|%Dn^kYZEKzUr&!Pda6{~(^)m``8tA0rh${iaFI3pyw0rOs9ZF}n$f$M##l{d3TZuD!GTP{M@ zZt#RO*P5L_tUc-JmoChNw~CKwu#=LLM*fJUdVr*sRtI471SY z#a-YkF0!F2bdBSE%+_@Qe|U7XA?Fu>YI$d~K-$FMU99?TxKyy&on>ld% z{V9@KZ~>EkcXI9ep=l)sC^&-10|U{KkS;LEOJ+@eTzf=5k8KUCZG379`1tH!s7JIi z5A>ok4}s2dTs(>GK?2latY4|Qh@2>YfcXeV=0x-2>hiq-cCn1I$J-zOZJDnCOZ97n*(yy4icI1;dSrw$wl1H*ALm+T#+7N1JzC9-Cv zq=e_a93yz`mdTl;Z+l-_j!-;xB|fRLc3piB9~vM3b|Z%@xMqfY;ryGC-ehphV7}#Z z;$yEdCJ%Ta&-oORmBQVO{>Y z;4htZwDHRdh$aTlseknIibkyt-qKa?y&kcdAdGc zImf~{9sXAn~pbHr{9!&^VQ#2bHw*O?%Wt>Dykw;MU>3fWW`P& zAy|p7y~f-W)LgLG^l^QYe_eo-N^Q2347F7I@uthOLb&V0c=n--kylU4zfi?uB=vXh z<>X~??qbzAo5-5s6^}Z0e~UrOg`F-hEe{VIHhn@0<^6P-CcEb;bG9?c#qXNQ2-p@=^rpBE;JDb`Hs4l^H279B4P@!_-%4QXH%Np%<}7LDNT9ZJ70-VW zT4Po8QR_G}%gFH|_$f%UlaZu90Xa%veYbQV+mhaz!qXQ~nZbLael|mLQMj9rZb;-+ z_2bglcF`R90*~MP#JT)hx%JQq8%f&SJEd6(`!Ah47bkIw;r(9Z3M9%x3LuKwAKLaY z2$M)#$lT0r%1-j`ZWD4?R;oiT$VPAduK%~NULZJ|lsftvADYFW#C;=!*@DJI69ENNpm4`Svn**vE4i^>s#Gl!0@uZGE<;~fkDASZn>ZC73=9=T@X!}c| ztpN#9djnnGInBj9iI~;o23^Num_-Gz zr@egxV{K=cN!CFTXdkQ-$abPI8b*JH@Mbh`Yd=s?-5D+w znOKhoQRrB;Ar!3kA` z%`EC?!=*p^p)Hn!clpukGG|d_*3iFJ6-~=~f6I~t59pQr5^$CgrejV_kzl)asG8rB zoe^dG?V%=q65LZbB<}r}5S;EMo89hM2YT*oH~-!?4Jb$A?9l~v$$rg94Ya5iyJ51$kr&;Yz^!1_}LAh?w*AtYp+23s8EI-6U3D6xb zSc_IrW6w6(q9Pd`*p^6^$-5EGylTuo4Uz?(=>9~)V`sjoIjW!v);5b*(?4YsGd!=P2e0 zC_GqyR0h}Z$zGDGR0AIh!0&||Ot4PrDWv%b9w$L0ULcKvse$i9{QqBypIQRs)gI) zaC$@sB`daUo28BHUnNg#m`j}ZCrtddcF#<}$z0$)u@_QQ)OgNzh>yQZhPCzT3Jyv% z`rKmOS>QPb(7eQaH6uOW2u-#fu_v&oxupi8C}-DR3pj$!bXWm-+y9;BMYrQi+^@0D zH$e5IN|=u<@%B@gV4kAOal0`)V)Y=?i>#36DQITS53VHJhb-6s)B-525APiy$Lz1w zirf>cl@Y7PqVrf>d)?-yozLueZgfMa(Ao&isIk6r+c1Fprslmd$RsJ9?rHutp{)4A zSNbz-ldszc^N1n^(&)`*X%*6)O_EUp%d9+&dQXGR*$)8jVv;~#1R*}H=`L-wOV=Qa z>+jqZx9qS4HqoW9?;Mu8hu_=kms-i4p@7 zY|s)C`)%X)-JYzi)~GT|Yg$@b8(T9+;GOCKWUCz4G7{rSbB)hDIf#pI z!W&-$bKqX&>cSS?r|3J!z)Pm@KYq9)*+g<3x_4}U55Mij%}cuxySHYk>VQ-L z^BLq*sr=6MhUIrpQ+ZEVd%1xExxUZ1#|ytyBbLI(tR7rj17^^cA$Mz=#hPdRu`fPG z@awO&J@pLq!?F|nCIb!ux2O^BUS&abaC)pp(LEnnoJlD;4$ z8FOJAddCb6qY{O2VjUEOh7@XkwwYQ_+O1V%HiOF1{Nwl#&TkeP4NOEB{{b2itXUyP zfo_xlIo8&Gn*rzg;c33kT`1t@p=%@cQ&*z>l1Hy8$Bi$d@{Zc?-|x;}+suK_M`G4? zw#lK^tB>)-NvWBC&z2sTCv1KMi+5e@u=O0ctsht!_Re*JMR3x-{@yxs#PMsYuV3G5 zT8m!_IOl4=n{6wtcAUulIJxEnOyJfYhj_~?#ZT>Wg64;0B>3P~ar`_7uuA0gQ`O3iCAZ_~`sJN z^<`3Lr)`s(S2j6t9q)=;a(v-24A^nkB{Iv0gOPZAB2V1J?`k)S_+^#TLNaF*$O9Bi zBK`MsfIuEVz~`Zn@t#n05$2I}6cBzXjvqcA-d2Lp*+Aa&qbG^5oAg*>uBu!+?w*k= z5^MW2H;om|zlk7?a2S(Y1IjR1gRT;QW;&mO!oFZi9^}GbB*ACD*?iE*v|%g_xhQT0 z@bIeZAh^%@ULMf#XOtS3C~6Nly)%iP0y4I_(#^Y!(uYQJ-z{L*g+k;@A8O$~z)Szx zD&S9pYFtpO#J2Fp-rve6I1U;^aYo?oBrt=GenB>aHGLg|UO{J-UhR*Ytr0prHG07d zyuTE4+IK4O;zk^p8Y-jYP2_Z&CXwOx!nNm7G z8oJmce{R4o+=6cayLwsro{<->=dv@p$I0TfhDS9<+%#+!qG@&X{2N_g@Eyjh|hB_I}Kgq;xMC$Mpns zk}N&?L$EmR`f6~LRad%qcDsan{{CoP`&*LOpfK0qTdw@rPe?ipk7FUGQE5GVk*jtT z;6Q`QHRbGYiH3CE%`-+%#BCG>G?)lgXClPBZ$>ryTNOjdv$f zj&kj&dj|fTuZ+;+JD^}ijcf3WskLg!*cPAKWRe%{9KUkfEEC4O^+bUNM`D6L6}t&G z8jTN2YufBA#LrNa=XMSlqX0Brq*8;1c_u3Th-;g!T;S2PFUdk-sEO`{4jo*y$B2_I|0s2LA2%|g>DiL$}^x~f!1)-3f&z^tS10Q*S$b&~aH z(y=?kdTMt9VF6K}l~2@j7{3mZEqE!8_Jn#z>s-gDZJXl(B-|ZUo-|TQnycB{vC=Z;R%;QBIuB7RY!E;SR&N zf;`g6j!cTGIi3fvm!ks2W;qf^E|0ENiZjpa-EuxgcA)`pu1i|R*GHZgkKJe9gkjcI zLVI5{kiF$Dk3DC7MHG5VQk{sc?NV#-i!lZhAUdFQ`~*CimDHX-3hk*m1GpsG<_=81 z2UGimV;>)PjTYEy{M36`v+l}Q)&12QZi3kDXRxP*MFWYn^JwO^R22dbYU?eC*zwgv z^yJ;2ZT|HdiBH3meB5)%&Jq5zM2>ghv)*k+mspVwQgQiXMN=od|LabrU+JC zX2YeJRB2Icv^?gp<4`7_Ut=Athe@BfI6v8MWq=eDQ} zLskM#GT<0Kd^aCJPgly(?Tdb{`wL7sMt8b17xzB-r8%6 zsq=zAA6{B@fw2-acyCE@M;NPUc=cTwSGY)01VA~K+2h%ju~=AfR|I39UB z@6Ks~yf8YsSJT$gdX32h@@rJPzkIjF^pLPg@+Wl>gWf;wFYxe&82f$Xnw6ng7_td- z)n%s{cZEa0sc`Tm;r&JF&J3g7iM~7HyWm2Je>ceg{c6Q&=V3V`^|s&yCDxe`#uA$x z+tQ-HB9ix{Chu3~@qZrc(hinB;<~VUCp?c~bhW+HY@vVNqFs_BBWQaysHd-FMy1~k zPZRvk;+V!7{HxmaBbif9&bfN8R|%M&iyOC*KqZcG^z{vQ{sz3*2T|jy&n2sFM{n&~ zaauMfLc`*0<+Ar*?H7KiaLHKE@tF3&D;5;EYlHjVd7o*`TAu!M^4ZxYRWmRs971Ok z;7u~(BCSbMh68r!=_C1|G8|{o#D8i_daupKI54__E2BBn=|{Nd@M4bnqI+)IeZ;9k zH#Ycqjh&SBdWx+;&drY@&B&JdoSyjE;2JbD`T|F5yeEffv+Q9p@V_5vL7aXyN6nl! z8TdwhL!(yy6wP~c&6(Bh&;9=i=DaaM?QMD%C5#_6{Ie{gD(5SjiYC63Oj9!9YoAX^W08MR4BX!%KQV!_hJEBnvnn%vynVbYMPQt{tv^*ZdIN zYaWK!ok%)J!$bYFIkFxiql7&h-}3sNsacdN>nmIB4fV?j z`o_ylQP)Lbn+SKiAl3BU`{mQ?qdj-dwLIw5080936+jX&>t%QzpPIq^=v=Op-}h*# zZ)PIK)`Z%S^HsxwjxFAWXleLFeYBJtjjagDeUdL9;xsj0rK%U@lNxP$uf-S)06>gYz1?kdiu6(pRqp zJt$c*_584f$s)2a5}NjH*w0WeV_Oa+wLR+u3J;$IeWv_*>^X+)Mi1Obc?+41wEN>EP<*cY5 zyaoNp%SA|`Q1anQ_oZ={uuT?6hpkXNC)-vXH53zH;^t{=Qc^>P!`R7R38%N#oEdLu zc>AVZ<@YmkiS{>+XO;JH87QAf1sy2)_e2eZJ@q%Mg+B%JGZ(aoN6dDM^XXh~>~5Xk z1qB~eigAFmRY2LNavSA0YlCi&CkPxPJy60CoitG-528NH%hF^S_1l;fJigg=`Nezl zd5Vy9v**^g=6LlKYPP@A;CeB`YRW^lfoV?e_>Hl|gsLr{g^rH8Ve#bUaVk^X_vw1o zJE^^de%nr5L?EF9qV#v{zJuEm$lJ8*R`}1*kmLt15=Q|Chiu56jbCbocp=6gtYf!T z&lzUsKQKL;vd%T=9a{K>ORo~ASWtfgL~loWZt8gS0sy)MJhZeN=kJz(N0NbT#!g8= z6=T;kt3K3ML!4EG!>EmImqy@h%i&8-hb7M)ZDkYhpIH*K~+C#Y!{Y_JC7wb)BWrIk84W-&fX7bkcPCZu^#@sMBFl3aHqvPV31yk){Z(07|^ z^kDJ4e1m8E6z3v^&D*4b&J5`vY?3QL)D?(m$l*gCo7)Tjw&848lTKDlqfCn*@Gs6Q2bjrwZ*1F!UNU{0nj;TnCiGi%|cOK;hDgv6<dC{V^HeNu_2Up@vm6>Mgka(iBKHwQ zZ6-#V(E|e|YX_PmBVHrBrz??6S-oqjV(gH<25RVZ=A?CB(7x=6U&qA~blLgXzCuG9 zyJW+Ea7fUsUoqNpQ6xIC)2{RoyYKhe-)~7TRAB0-E`Z<918*v1jm<5G1%icCFccNlX6z_DJB9 z9ns@6Uv*D{1*cmT{;bg5@=OO5<+>q3SnlI`R5%bAu`dzqdS?*PDDe`howrYCaR+!u zNNNDS#9u=m#YJdXH6|YA?+dDy_3SUO=k_fp$r20D*7>~;75)H^=qQ2no($8Q0FKK=w4+H0OFd=-kck2o4x;0+X72t*zeM6s% zrsNf`76TKSHuj359s`#)CWr|>u?UR#uf*}XyAN{z(qKe*;Y~rG+1L->mD8)^KOoLE z9h2*DKaSan*ra?7wuXn>@K2^=?aV}hzq}Xk)E0FbsJeP)uK%Q^usjw;uJ3{z{aZR) zer1lrd-7xIOvks60iR|F{miqPG8a$_i)%p_)pH5EF5pz%mP6#e|LL5=>|l+_e(16P zJi5ywR0tfp-JPgOc`|AXPBxVHm5sOZst*;5oMqHnR;3tTKe|)?=&UB%VI@v0i|OI+ z#eeI|%hz3CH#!JGe4jUAaR70ANg$o!@#wN@;sfzqz|;6JZD3zAI(kgs37>422DtGl zL;5^~$BJ4e2DtXpIb8KFbD<%aP+L^%!?Ba4yWyb}0VfRysF{9YVQ;v^?J`#D&6Yf1 z83v$gxSJ+5IADu8(-gSqbfL8CatBp zS?;38xXl`L(7xFqm41@tD0VB`a4Nbk`ayr}C?ouuAuCNxy5jsJcmhl0@YD_wPH=I<934 zUvRcbqS>}z_lZ{Ph?OP8Y6BFL+US1{Nc@E_Y3d+V+67mFg1$Qj)Ow-apphYv6 zYWr2l{t6S4UdR8vtfVB#O4gR^x31c>;(7Ck#39?Oul6bqnaVj@Oya5Xa@IIi%1(O>4XyXO*>u$XYM7DIS=0;caB|A5gB^!HDwcjSX3{*A? z(s>ex_E)r?U~mvsbQ~8LxV7mbt^rM=;bR+OQ-iK5_wLT)(pc=cr^eRKZtNc_V>GJL zNXFNyiBB7?CF9_E$Y6)Mp2i$Gc*22{Q~$F=#dWYB<#UmX-?`?1rAA)7z;n!=v^)hP zuXz7CE>MgO_zjuqxuiO`NCi1xIEre(3|5qR2RbihMzd4wm-my~axlSa^1{r8(|G6g z95Z|0VBpt)br7djvrjLMe{jlwd4X8UqPS!3bl^XC`Q`)GN3_h0&kxM6=_(rkA@`mf zD*R!($fI=KM|tvcmMG>NA1El4R}-lI{8im2Q2wZ;Wqx_k#*JC07#Z2P_4^bc2F{a{ z07N=R9~&ldKVM!k4q!b!VKb)dH?Q>{E`ess$A zp-=Z+s?gPZ0JB&il6>*r^8wh{d%wQ9*;jjb)_ij#w|C=F;ip`Y&&jS){UV-MKxG(s zMdolUV|6VM$aEskAm?!zh@y;Zf4oQRmvxnf%oNMdzF}q5DBF7yeW8r_ z220^ysTFDx3mrSVDIfLn1RpPss_Mjeh->uvR(ZP{2QOB#kxHYv|8I$4ay9`Y70|bY zDoRU5X@(`ed4-cx)F^}Zk?c9Pu&Rh1DhWqAW=IYo)>*mX8VBB5XeCcNxPMma2(WhO z{7{iM{u=-8E}p2wU1gV>99QV>OtZ?e|Mk{6(}m_~mz<3R0|S=H^@*o~suCz?*&xaO zdP4fdPcFm(TM$tF#J`QNZmeZXL;!ag)~qc`fL9kv(BB{VxU*4ze>rNvk^CGJpZZ(F z7h~0s_z#&nw2vK;8tIuV+;nQr6Ga7$zaU1iJ9S#(kds(waJeb%-$xe>OVB=}=D<22+vHSMTUu8AS zpOA27LIGcj6W+4j@oJt4{=GA0n%>T=%N28l zztBHJ|4r5Y)Db$XQD@`v(Apt1q4FowN?xj7@uF{v41Nx?N{!>62yZ=JW#BR*O@tgSK=*|xcaFUX8 zg78dy&sBu~SeT5842w9RQ{N*@To;>cUNeajMU!~$S&35uSkiRQe|D}S87UGj0s$w0 z=)v@GY4nDXu|9093cNnX1c2vWKZx6_<#qS7ZrYEOcsU8t7KA)QpX?xHPfketI`IKS z#^+<_GPXOw`c_^4WBCx_*LX?jyxaC23Erdp7&X;+P@h!)f^eVN|3@K6Tyoe0t=d|j zFxl!`Th+N-h9f6Sc0ng(kHsyeoriG7-7#WNEMUkrK|0*0iUYfqg_%=mCh{+tfDmsC zk3!-3gqN+69`F7giO&SG$#JvAZpW_jZ+2F@!t(!}X$n?`J0WrSRjEtblU@O`D9`b1 zRgo$u-9lRP42BD}c=oAsz_(C^=n{^S1kBlJ0N3-jCKkRvte3Q+$NzFZ2w2<%ob|0S zXMBHC1hft8eH0WTy8D$#2k#0wDI5hTIGV1W_#q8Uqz%(G4c-c?1U-Z>OEYg`BR*JCB=YjG)1 zZ{4!r?OM8bd6`pgk$BfDDU3IrJI6O_ znwo{|W1@KBXwON8of@b+0XQjy(-EGerjjX&;Z>OLX~5UGezD)8W^7Ei*&94y1uQTX zH=bV5blW=a=94UhJ5(U0Mrb<231&y!M}&z4((1Z>vzODP4%3`lKTdVWzC7OxaF~QV z!vm}3;4v5AFxMBWt$rYx;9))<#PlEU&BE^WKr@u_n`6T0?*eo)#Id-JIz4dIFc#z?&vc>5Pf(xDDM{+=EB}(FSbOV%ww#q>3Hr zs#RPA1DdcT;5{PjOtpzt{p?eZ_1jChm?-#|l7sm{awab65$nM7)Kw+SbW2{EKC3J@Y>b zC3m0Jf3Asf_l4Jai=ve_zZ5sduVEo39-fIhd3#+YRC@@VUev|B;A4lu-KYV;G6s4< zUkMTbshVsAjxR;1z!$BYh{~2M`Bqs?+RHTw#NlcYZ64d^F%sZ*CCI zadaM~z(nfeVE3v4Kzx`a)z}>#70Qdkb@GjowQaigITPZ70{ot@j^L(zo#qb6Zy~^4 zcpIXKu;5Y(Dkt}W83#MOIc@kdW=I{^U=+Wp9T4A{T=d^&x2kJvFen1dDP=tU{TNIz%fOc z@mhb@S~KJMhAe-X8TXJ$vj<^PMzzd+I=EobV!P#b+Wdj~i?&S{vmu=eCxh;9;gWecg@+{&!BZ#!Bwd zd)rj95->r%8yizTpvY9fh<*b3M#$)ZNY-dC;M!60JK}R&UdU|V{u1^=LhP$k#|!%r z=HWv2ep;9RQSM4PuO^=E@@E(`VSbCr?W}IEiXRBPAa7%2XRkXK$3mAb647TplxO(a z*EQ~ZB!&HPcbCEnD@Io>5=zEfK+DQ1?F^kFIzm4_IHfqcv7qVR#HtOe_e#UnG4lLD zIr@n?_f7)PmMgD*qOUg2f(?_YOL}+%jTnZ_=H7kNItbN;VT$rc6deLC>O@Ok3Ur==O_ zqm3+P8+Vay7nfD!_|-RcF<_QCa?;J9*7PzbC(wD)e%{$3zw&cB&xFvkuwYrhNIK2! zC~m9s$G%>gOh*jS?De%fg~B8Ca@X=Qml1*6B~w=6vCn{A!5F{;L`dlsE`Sd-gvST& zS<7pP`Vv@f&Nr@YGCOAGS9wF*R5wWY

0l(-SW^eHU2r_cnGzy-3GbTBYU|DXU)L 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

sA)t&9mWvqq*P0>v#Wcym|f(g;EouZ2qUz9 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 literal 0 HcmV?d00001 diff --git a/assets/browserbase_logo.svg b/assets/browserbase_logo.svg new file mode 100644 index 00000000..0519ecba --- /dev/null +++ b/assets/browserbase_logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/codespaces-badge.png b/assets/codespaces-badge.png new file mode 100644 index 0000000000000000000000000000000000000000..2743b21103276c92535512519f0c95fa97f44c98 GIT binary patch literal 3526 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 A>;M1& literal 0 HcmV?d00001 diff --git a/assets/logo_authors.png b/assets/logo_authors.png new file mode 100644 index 0000000000000000000000000000000000000000..116cba4638e12eff5f4dad76cb50057b90fa7dc6 GIT binary patch literal 1178826 zcmeFZhgXx?*EZ}F%ZOzx1Q7uXO(3A4bjY9r(#1kAQUlVYOGy|jLMRdhqzg!sCWKxR zN2CM<3@9yx2!t9Eq$Q97-^o1hv%cqj^dETF`mtt)1vBG)pL6!U_H|u*pG4m<(L1>R z?fUKYzCGYKsb$Z81>b%NxT$w#S4H2c1@Ob~aBXAlUAw9h z_&AQc!Owr(zit( zq25+aSvzY+YhT(fC>t9-l*?iEEPK*31KjAX0r0}L)#RvS;648H^`9O1&kp=&2mZ4I z|4;A0-JqFF!_9@oMT6NG2GfUEg?{+L?(1u$Q1D4>O-)U!lE&#T(^dSO{>hCJu~u>X z@MOKgZ`wd<;=%Ol#*j_ry^qh2T=w?%4jT2U%WZ57y?g7{t)9Ps`EAeFp`kyGm=3l>lC3aIQ@l-p? z#>ejNZiKY7^dVV!d00bP+0q64Bw92zC1u;lzlJg=E-v0_5TDAiUbVsNF9eSHS5sbI zuc7@uI(HGBgWrxkt9oVi+$fV-Knq9jNK*ICv#E10mZU3j5x`Y;d+_9?zY-ot4Bzvpe7St5uv0(Y;-Oe2bEI9^ z;wO8s%iK;4mD6Xbg5+#|Fw56Xc6ZF}`*mb&EZzIwy^|G+M^ciLy>H&US$)UPZ-r4% zP;iX0fqnY)>E7#Dn;SR2|AseRU0X}Q_w=w`rIXdn{L^c=W@CM5&Ydy&mmFjNw6dM6 z{!b~=_~ZKZE`{qPu|^&LQc5sBtF_V4zmkH)|Au#2#o3Fj=TV0u9hU2wa)@G0roFvr zAqv-R9lKnM-nm|Z_TCmpr0UD1Y^=F#3E-{JFny#Xd7&OXU9dcd&M`QY8etLt&%=T3 zgIm~RgA42N{QUgH?v=6IDMIrHP-@M2ePzWuF=~8o`rZ^{t}^;wUq5s9CtLANu{O}H zwW6Ye@-h0@nwq-$n!1|WO&X218^m&Ph#Phh#NRJq*S&^5sAQGgNTCi54f$B|0=L7< z&dRFs)}1?F?ZLCj=g*(t(l#?A5Wq&^<-Y!#`eHRy%6#kWkf$Zx$<7S)GbhlKmJT740+aWLn2bCqCCxUHk%4&mH~ z*I>j`cv(CVtt?(?VE;lxoIG;`k3g%7DH}A+sN1L2zj0rQP?dwf8C*!BoZ#A~M1jyl z7L}EGIjF`r_pERXmJhrT!mo&a{rvgDO(aT5l~KMb^hEJ|jCGdP%`tTG3RL3k?&0|3ZW>99R9b^(9pw% z*)KIDsq*4SqlYQwwJN44zFJFD6r<*WDQZ&-y}cX#bk!Qgor?L@V#YEt4~c}{u(i&V zB74NU)KP?^Ar{!TomW@OD1TTD|7ryN*kU*2`|{HZ_rzJ;%m~*mp4#Xiv2)wf@<9y6 zLPtjj_u|wU9R8nGb_AxWDXboxu^%t9hyw%F@tolDe7yvpQ;Kdzy_+l3J)Lnv7XI_O zQIPKC%>GZ&KMA6DDFeSMX5eqYKMV>UpaNJ8+S8Vjk|GhR`6f3vw-rFhV*rL;Hvw=I z)F2AL6NhyzE$#N8LX<$SnO!3{`R>>d;cf^3Fpv~ z;{68pDf6)ijF=jV%svWL%9JOJ?zb2-dRi@ylk%;_#~|I<*o#CxzN4_05vQlUBy_mY znhPs;@F=`EMoLQ#R|I)BA>Mc%2E*z32We~nQ-BTtPen@N*nXg_z{)BrCLB=5goK3Z zPbj!_sevp{i;s`D&N}b+;mIE!s!{tTOtUj3m;d<5LM^{~Jk0HLSMeBlb6ZbOZ{^!R zk7f4oP#2C#Dw7cY;NDWg1 zkr!m{5D1GBfGw%rjo;@2)wrHkB4*asYWjVttK)RAT zMkE?`CWtzWeEr&f;Adg`U1#vDJaltFa3Ofiqevlx@XoHLrp9YxWTe3mpqlo~%nVLS zPHr0qo{R&pem?rz6a@cxl~vNxqLC%M9Ap(~p`aJc#!}8j_q{E`P(A(`bBc=%I63O( z5opKKGCK|TMzR)B9pvG$%m(NDD)QNrG!$`&SOg20`Zc;YTg5`brem=zy7GEeXTZPQHe9sR7>kptQrghHQK_zj->at-oT~besRm z%&oMS2%d`m-(OlX*6u2ytCW`LW0H{Alb7GRjJ$KKRV#J0vm@;RsBM#+l0vrym9CQV zVrpv2d0=6^1i-@_KLlc*W>Dbssi$Yq=_*tz{AzH~Q#b1f2-Ju#-@9>2pvi-S#WDyM z4z`>X&+w^uQ-=l5W_O2i6`{e5-2;V+;@I)cW1m z(NQb4;H8npi_RUF4hSiE-SG6JvcR#AGy%xX0n0eIpO4S9zrPDD*LW`3fGe40l4D_Jwn7Dmv#fmiGD0&6?**NsNo5K9 zwH;LULa#NrO~)zArLHx(PkoFIt=9a>a!#iL=$I8nZcZ+&On0Uxfb+pNHa3<6fSg`k zU0ngJDZF5CVaMY3?R7<~ZS$15;}FQUVzNQ6kwg+x@@O<%+!yaNs}IrT`xIz*4q=#2 z^J{;)UFSzEcQ+qG4yBZRns&uGSBxx^hJ8i6>o+Eppw}~@MBLfAFVp_^6IM5Fd_Fff z4_miQ4q#Bg#^v;cavlT7_>Iys(F#(Ux4MIhX`f!#)zvliDiO=Pa9oDW0QK+DBftE( zp0c>IchaLnL*`O{pbic@L~@4`&*@bp^}2N`DJdZV?6Wcem(qhAKhC)bgYB$>>eoua zfdub2oJjeU6a-~~RMav*Ua0f5x_4l{36iokT?0)vfYO+JJt_RS@1IN~J38Xdh?=gy zY8Uru?mx>whHX;}KFtvVZuT2PpCK$*4#|F|-CM!nXv{(Yc@y{d$+-!RDL*|u9YKj8 zR{(bI+z1&93hrkx7<(E;q-U(9(6pqZF+W{UBai%tj5tP39XY4_Wj@xI7iDj%tNrIb zeE6Whd-ra=p4H=4+u|@-Wc3?$dHLmd7lp0sXA>W2uco+ExM1J(pS|SGM78BrIbAah zgl%tg*Xwr%#e8t-4OK4sDRU>bIxh_`FG~(@+C~$jToTt2QiRbX4Rna8m91@rn?hQPZU-srx>$C~Ovcfyi#`v)1M?@KYBi&O);^aVR*B>G3Y)Gn=cmeWrYzf^0^cIxxh!_ZSOWW?4yAzw%_%_tm!;3@$S+Y7W)F!-L8Y*4VB zoRb3s|87DuR66l`i(IJbYVML#F1;h6X3l8*#OT}r<)m{J)}5tZfs3a5x-KO}C~#FP z2;?*A4c;lq4YZnGm_Ytqe%ylh;OG$;dVVQet!Hixy;oe>u!7)p4e#Mk;#{l9K~Sv6 zoB)VUSQ3@bdH6X*0jU8BP zJG<6sTi#=TGeI5uGYL~8mc`0@>tt7C+I1h9w~ z$%UZUC*HYpC*zK}IsJy2SyiNm$3h|~UON_+mYX>o4rebK{|0isH`%!M{ymQ~UyG#P zFIoidG#*vXe)09Pze#^;3pCWWqA?AuL!fYQ!J)f$bBB^XZnrwagT1{6PJB+sySxRO z2=(g7ksmf^*LwrP*RRRAwnOU269g3t-MAaWzQUK>KfikRY!B3n1rUfJnuMqD1J;nz z($b=Lv*Zg36vSl%;$Bc7YY|S*u6pc@u)5>vFpH^}o`YpgqI9 zu3o(w45SeMbZ3HmV4t|F`cK|$v*BMlA_~Jstj`nTc#cC_uUq}w(o!N0EYpI=@+dPi zBtZ8?l5#5zCX!p^seEWWf8B z%7R$`mk1OV7WRUJd^R8ZJj1)r$_fsbR6P3=lH{p4XRFdS`Rbzcy*-CTGnpYkk50fB_g#%tE5i}+uk2u(W=M~P{ zctx95UuY{5uAiM;71CA9?a#~01KRz}F#8{LG^l?zFO!oGdb+z83#kWtS;Ma+ul!_( zhVDlLVVMW=bMe2$B^6+FIiO63rJzvF#&_?&I{+8K2hWEd1p#(-)GZePwui?*NfOrI zU36|haLbrJfvt%r5%z=tVg(Ky?}hD+kO;Mff0Pg3ti8RWitcnV!0zypy@&AI5Mv z9O>-r><1hw63-n10;R^!(6A>Szy!>wXb=w2N>G9R2fi8o)VxcqGQVA)n`I1*jf z$;6S}VQ0ib*3+xf4zUBc^Ct{#aROQVE9V566-zq{AV;V($dyzO8KSoV;_$pXfJDK? z^9rZg8ZI3(Y?JBtoOHLde_UkKxq5=bI0` zc2Xc`x^FHES@ci?X6y$53^L-tR>_xR`qZFdxHQ!O3Cx+Fyiw`VIa?rK-qwU#2p*y#3VSM%V@xJ@_@88Z&O%1uK zkQN~Y3cDB~uPs3gRr9Al-=1>!8>x*kNj0SXue>rEoC za5mrlVy?unrD4U2ACaM)<7RVZXlQfTZ9Oa&6}Qs4<&B{Ahzbnuzq6|0~`JdUVnEAv%uQZyASMb~kexuS0AcxuRvKRqAQTTyU61 z+W0~YA=hX1CthNUTs~!0x7?%~M)H6M*d-o=0G2-SoT2l7{lsB5f5dYWN2;6$AMZU} zAwW$|P4%@fH?NEI^YgQCbe!Z7Kwdo*sQoTk@%=h6FFL+Tw%-yJpU6CfDf4D8o_i9( zihvBK&(T>CvjUN@AzM&2C(=DBs?W2 z6a&wtvZaM1un@=^zb$>4S45=SYUc0fQjYD0SwA?Dl^YA5I^U(~VGsN+K7Y~Xs@Jc- zfphzCOgswE9J;NIjk+~FM05S~Rlcl%KLmgB*uTWofN2ZVfIp9sTHDwt3##1z_7Tua z2cYlm?*RFDAN=7&u-@MUn*nw=xKBFT+l#bEJ$Z3QI?O>@O3G4}S$%j$tAL4_6RS5M zI)Ly)S~@u3%Ey1xyM7X^1m!9e^XHEl@s5$M8sLTm$V&szHe3lxczI3DdNC+^iXiZk z0pVd9*!T7HWC%bdz67Dj741=U1kLH~Uj)%UHI$NYR7CZ8E!eRg29rlNu_1n4nNPFA)Ba1c_ukwlI@ zulmjZDlC!;Hr#f_u_o@%E9M0w2x))ZfD^T`di$om{RG0_H1p<-8~05BVKf6}LA}1F zrc4nS9QPU%X7MUNJRGRH)cN`O>%dokJ3BjD2Y8M#-~~(&YFdS0@25cQuz`Irf%eOh zQi(l2D{I$(=fQkJbltHlT>`?*Fe^@YT8B{m4FywHPAYra81UanIUqx7-oCxZ;V}RY zPtQ^wI|&0-;`mP})7_0hzbIvQKVNa7j8Y}udus4xc_F3I=YJY|xVFF_(gu>ZD5+8SilDQp2K`!77=vBCT z?(QRq&F_;`?|M@3SAWsI)QdkZ{k?!G%5Df)EZsl_F+kO?xq=_KB81}q=DuDVZ$%i;6p**n|@1E;ABZhpa+ne)E9d)&v&b)o-tEO8uvTE&?5q{oH zOCv4md)!AJKvhz|S@pJ0>9W3iv=WdC@|iE1feZi58+~o|G+Cg}(wS z9vH*pFag6^;Dl}Pl;Ry8l)No3C*4A|&uo)UpLbRIiM>#E9G(?qZW#!W8uk|0QaON~ zIskvo7DPixKBdG(K~*O4`g-a7g_F=%E60>O268S^A{Umcs;9?>A4D3BH(*(^+pk>X z;@otALRulSQ4e<9*A?BX(rm+#1S{NhWa_q8b6J%it!M06S&_ig(##3WO%~XIVOv0)k2Y#6_oT0H&zld7U6Tdwb+{V9${O&D_oa36p%0 zPuww=Pe-@ZoF#RgbuBQHzpCBancLVQTS|6v=2ZDjPdTyevc1jCv0cn~6!H*M<5PeC zVT?xS05)nzNY;~xMONApZNe*%tBtzwtC=#P+Q`mqfF%CB2BopFvCsigt(NGtpVY9= zzI}}@pq98QWe8gVFI*3>6hE{fC?Gzd#~Thhm!A?HMKcyIRJ?zlm*1}y7F&D42t|-> z+}|!c=Bwj5SW0 z|5#o$gH5Ew;97HB;|Rg*SOhI9Vm3{_bLXIHstDjU={G?Ngn`$71CkqByU%anjsAJT z-+m0g2y`Fv>-e}W2{bjUu~?)nFjGRnmi8G-B-PJ>_?PI}Qdl~s18v-&;9r}RETD#XMl%pr;wR0n_?ufY$A5F-;mji zHa#wKPaEZMn9w86R`R zVyMb~6lYVxwQ9CoV~oLYDf}c|T(d+)PDEYeG|qDMAth*wB!XtQeF1r30Nhf!wssSB z+HHyHA7klVoqwM=uVscA_3{L<=LWi8Y+gGZu(%-LG>8jU--w!tfe3l5ypXGXB{f#* z?MI`mp}4vX_4c@EH`i?+R<^ZEQF}1xV7yWmA(U< z^!?;pWHu$qG*~k8{v)v2{(2&zZ`hNEBj*okZGQWX@tn+q{6zw0c#hIM6}b$eTSRr+-sfJh};_y z4c#t@9Npz^U%v#~e0cZeuws{%OwV&c61I&JeCy=>fo#5;Bu) z(NuD)sEJz9+(&va9Y>E>r{4$Ro)iB4pS`5~1g*vFu*LJtB}{*lfc=AiTGs~*>0qaW zD_d4$!fCa`<3heIlM`W7D6>y}xgms%P*%dY_3l>;XDnSbsrABYf%A7&mkkQQ^z#4y z@~q}bKR^d!w86oYmX(d?0@#ED*;oBvRy3vT+Sy#pT`1IK!PKR`%E}yOrMeP{+CH_m z9UF~;yzt1)=(}62^HeQ7x9?MtBE$zM3m;6c5>O{V+OywT`s5%Oen}F>`{7*m*;mdV z(*7`2r`6nl_MT6!;k{khLV@GM$@PUnQhEKvNeD!1wd)*xp(rO91hVSZaMk0>sRb0MYtufz)+7q|n=3kt2G%FHd+YQZZdUM<8nc5d?nE`!&z!No= z-nETC+$%C4ObW87=K)X9u$?l8XF=KO>+4%ydprDK-S)Y`VCSnH zU`T}LN6wuDTC={mxcC)MZ5RO0OD)*|xEd03_!kNM`R<7~YTiFD6Nx@AX6?3KFDEU% zAKo>XwhD~+52I^=5^bPJ_JN+nKL`*)!LaR>gf>B@iR#SD`;05lOPo2_j$mJ32+_N~ zF-jz?OLOg$BK@m{!$J63h9ca=QUl%|&Ycn1(m4iYfzl(ZCgGzVX=BsRztcK3(Kg1N z(zY8@Ax7A=T#OnJ=xTz#J!wZTh?N)b5%NxzrtINo?PE*p-_ zt(FTSjpaF)!^ZTm4I|tu$LvzwwOO)Tts*^O^5AA4>evit1P55z;J=L;U{QT~^rMt{ zr?v>BJV@EFJ7E7mf-uH{;j!QdUjJG;IZO`F?8hz&C5pC)yc4dW$IhEa3t!b@&sPoS z$r-QLzYC%ckIu!QP;E{a9%Gr9po4y7Kt0IYD8*Ti#4&xzEXp=(823zZkrc7kJ1P52 zzI7cP4p6)8kutPl&`BNoHwyCEDlwB`Rp#C|RJ*HR{@YqU&Aba<^+=r<1q@2o@^t4! zkErJ~RLPv&mPb>P$(7@ty&8wGr(zIPWT1_ZfWVI82z#t*Fql-iL49DygkM{SmBwSV zh&go&!D<s56=ueM@jTOd+`!pOS|A!9axl9cyb= zz?QPBr>dy}dH_h%n?KQv@0#Wp7o|^v0{s~@zwHbR4HNpnIf(&@W`ZvT1m~QLLSk-? zl*S5?W4Tj(v>v+UbZ+i1OBa=}b$4EEZ2p&~C};p$l9?$p>Ge$QYIdJXF=mz&I+rym z8)jX`=$5H`vO5YuEFWsL?0SW~`Ej_;1M7Y8DkaZ)Ck@z`kF!^c9GAPGBC|bstsdhy zH0vu0inDKEhHZ|HgJ*N?!hn{IZ5cUXr!kNO@R8LygdMI%3J90BNAoJAW>V@ZEsYzjmm9kjDqeAkE9AgBo2vcjRQveq`j2e zI?*T}v9hvENZF1ZymC!m)W9A+F1?e&xtwJpTA}m2yu5sr*O}{L{O{_vYnP?Yj4Ng| zk5}AY%JbbJ>%z&x*2w)0^k>P_`i<^*oqMg$QD|W-}Zg=0d7xoOb(}e=j5` z;qLeCpOGD+3(SrN6RIFIjNdkUlQ^Qq&4WdXD(U7EZM5GwGzgF!0&~XbzRoL5SN3z{ zA!2Gdk-fD{#pOWuurLCPSnpW54FqD$jkxG3?91sdB+iZLodTO$Xq{P%5nBvht;cbD zvyiL>`YY#nUWxSwg*A!ifIaXzc;do)U|~1s<(-verhnIno!C1?=Np&TB9E*Lg}1Ms z3KuR?JUzCQ+Db%-h1xNK5TJqq8?;oiJM^6opjUA7^90a}{&$?MQU|zvX?l-)I;LmfFAyN!V;TWxLzUUUPretdui ziZvYo7*>7q$+24$jtQ@3Erl*dvD*ZaW>jYxLNi@g@HVT*jbTgb;hQ`J<^uLwbss*@Cg_4 zT=pPZdJ!9FTz6b+k+=_xKwBSi=O8G+XTg^DGny5qaH*oSH5jIX2(Rh)$m#5ui;1U} z?)zHAMzU%3ZFwJefL5U|mR1JCGyR^i+vSmyhg81pQU+G|_m)!{58frQ(f|H+Q$;Z^ zyVGy3K8L?mx2xND-1oINA-uUIJ1Zw==RPo#RsADb=0M67f>Hn9#65muV7;I72Hrvm z7^M5+qL3EP8&L(L0j9vNZ&n9QHd)fLA;eJ2T&4PKw9H>tq&(h~%*Aa_)fC6X-c^X% z>=~~&98ribaKJwEY(dA|NhX%5$;=>gI_x4=+I_lTo~L&R`5xf=CmSfW z0?f(9PeGy)-?c3tK%m7Kr^|6WWBb2OO$iK*YH>!i%+2$bD_8gy1C1*B?{ZHPJIH;e zfi|9l1+A5$k+y+G4$Fh&O*Xs6Dx1sBA;w3y_X)=_Jb%f{woy{g>nkk5oLgK<2bUS_ zR1~Lp74VSe`i**^{+`U0LwZtxIT@&{Wy7waSkqZc?9k?)L`B+ zM&T%P;w0|9JUw7UB@(tBQWtDk(eFDQ;0=$CUqfx0ixId`(UU3pp?%fz) zUuWe{vq&;1utgwRJ$-#cYbGFreG7TclYJbop6d9T0IyIp@=B5*6{?|NnW-LKeXfUTL#nl^A zC?Lura0S)p)-xk^xJ*(@=-P+1+bCxTAZNdGvOwcYMP`bphp@nqXa;`0l5Dl`g}ZgSwjmra_IQ!DWj8kmBAT)OQ*4g0S%)UX87#q ztFs4Z^6r(4fQ-hM0{&EwBd_=c?`81MTjlU~m0u5x%+d32Eh4*-4UdsJI<67(s<;ez znfUMnFvA3#*=x*3jcB5S?NpteU=_EsH>TJdsC)l@*iK70xIAEMYMP)v?BeCzVO^jQE$^NPIXJp8?+_4dr(4-(OB;d@*NXduM`o=HYd-Ub*-G_< zh%xcFJ97Y_M9n~dCV!myEJ0XZ3HlQ=>$?YU>`Bw5>jiJt&JK9;Ccq%6=d}c00;M8$ z^p7msg}PlX-tiDVMEavMq`LaQ-4?vu8yRrtd~TCSy|JHPRT6p7yY{QOPh~5^AGU=z z9S7GvXcest>kt4f|GE*fp9el@%TTHxDdCEt74s(bTi@Fbr|J&ZYWkEpNHMHFPMiaS zo{dLIeLEbbjvf1t_E}a~{ddy8q!1`upDw2io{F7WBAbDnP@-dHBY7Z2>h*ShrFK zQ9k?*vX2=gJQqW=NbPB+jftq*qr^nJSHf+OkJ-Q)mXm`*v)*7%|J%m)Prtx-_J?qL z9|M?jw`hr?Xz^(xq5=&{VAjE$u?Eap~*5sZZKZ zSs!;+46{08Tk&g}EzR>@7|PCxeJPm3v9xjM9Awpg*9Xw{L5Wzz@W^1`muL4JIyJ8} za`(6TK@;^x;8=D#Ui`W-?63@+wvqyj(7nlIelM#tDG+au9EkUVCv1i#5NswbdFq81WN^@|PU1!*!20COBmX{+GP~@C1N0O_B_?v6ruTqyj_! zVr-kSl(OCd)Aj2-KL!z?CeUq&pc^nAMlGMivc6U}JwBw?^{>7M-sB;;N(;~#BvuiK6)2b z=94=UaB&+%<^~P}>tMjyHIy+1CVofI{E{ErZnTO?aGuVI8ms8M*?(&%q#7CL?Tct? zUFo-LHLtnBY!`3{WRfFs85f;(LFok-PZ~wHzeo9i8#q2m#!7yGt8vp05-O(WsqSU+ z06r+w(dy<+bp8OOR8J8w<8N<;(BA-=&48E}VRebD4=>6w= zb%}PsM$O&(+^^be@3ZgTFO=*$KtHtSP}WHoJ)^@4G{wiWK}CDYsXdzqT@dR*+J*V* z?xV$$?jl$Boq6)2_8iL>rV{dC{^b9KBH zEO75=B1_iK`?Fe$`U#EO*^*;!zeBICt2$f15ELW2`tD1&F8uws3|E}-@SZf?(f(Zs zi8R4WLle^dlEc5JNrx(xe4a~A)3#f-gaZ;m$IKf9LzH7cN;@Nf-P(8*sW(1M*KWI*B?*}z_eAT z+3>~*0SKfCjXr8&W5c@;L;_<=q<^Vt6pZtaagG*AbBmHh&kC9N10FhfMH*VX%J*CC zg&sHMnk%w0V=)jPtLFIO0v}(mNWb0oby+z1NKVX0Eh<2r$i}1fS=gavr#0qUfX6ePTPhQ``Y_Ct7<4>lAdq?xbAEh{lKl)TDCfUu>*VJaXgd$?R40*wDS(fG7 z!d1sn$ebnos@LnC?HnnZWEXXMrdCUcV{0$^Rk&vRc8ACr@2DQ?a>(AatLs*IlI~ez z{YUq9W7@U{7zaIwHreuw7c)N9Y_JgTEnBY>?)2ENjy$TFr*3Vs^S|j~Zcz$fzr7^gU4RR#|TNfnkJbjsvSLx32 zwh*gZcAx4%rhjaW;;*%;fetG*ZF}HKy>~pA7>yNNTa1JcF6YiVcZvDEUz;}QTsT)j z2ohdSz-;Ca$wk;9T0~Phgn{LCND}o#{FF(7NzI(qo;JZFhryiJyFVXLx)M$3C4@)y zrq?QiTI(5iYDi@Eo-GH?bo%s&TuL2N%+#O>fI-P>I8F7z_isV!>gtC7wk16O2vspM z`Qzkbpj%${>E^F!*mi$}4c{Iy+~Of?ljT1YB9m>EG~FAmJ3hS_KT8cU6nUv3K{YkV zKJ(>)&sA=aBN2xlT=&P-kf4or{z)2!pI*8qXh<3*&fKZy6vZ|gjmal& z@QFnx4#Q3Osv}>{l%UD7TZe^ePMt@<&?`|Uhpi8zhgqV3jf96?aDU{|DX2{iuFfeJ z%P>%SiA@ARMZK(T_qZ?SLD*;W5%%-{(cOMu#G5YqBA5-#kxbqo+mIU35lpr4gj-&q ze2Oe|qU+9P9<7meX$V*5=NZNdI55Skfx=)gS*4fcPB0Dfbhq)pGCp#LOX3MYo+ZKr zys1H%9HA(i9^<^*0_m5`Z)ug7ELVQPj9mjx8jO!NaDKf;9I6|xQj*D|nRbqXi&P7& zn2+SnB9etebhv075{9a6j~iBEPsp4kO&lHGu@Ylxnu~!{FUwn=+mT>2&tJr>4fSbz z*9Uygk>|3vrB?==$%Y?TU}hLmpEkt^gP)<8Q1|W-a41 zt~M+j4Gp$D-M^pZ^*y@EF+&M?7aAAW3?=Icg#*A zLq;ssZ@b#PFy73zjL81_}*vR@_r5LS1RJ}GQ;Di4y4Y#Zn_zINV?G`8|8B_eNZhR zFIHw?^z}yQ0{!*5f_{^eh!q{+*lOO==M%FN8K4fS;NVeP|!K}uV2)Zoe#b){cwz}d~ruO}-pZ-;w zz~^$z9pq8k3DD_(ccFWK8RwBKv?4~Acv(r8ue7Gip#HLX@l3+kd4_pI0S);u6+XsSONQT4^Qa7`)aePnBAcC+&{y}l{-lnt~YN5;FqXC=o9cql;mG8fG&D@^yvZkyZnkTD(ssVsWNh?c7~Cim;=;&+xXf5d zDmvbKL2|wKVl-FXof`u_JtOvYsG$|v%iyzyZim-}bM97f-Op+f2A>t)NV>RQ zx&NeRttF^Qc7KY6i~e6B)dU*8Q$`Ys4WQ4%4$JgL|DM*lzWzQt` zYTKKBzP*+M2qpb=Ga}^0mWk<$t;THvR(3~%dW%xKowy@hjl@yRLb#29)23cXHx$-?!0m??es&%$r;LyjVV*`c# zl81Y!duKMd1Cf<2SVMcVT#tWPq&Qi@Ec~BQzIbTQ{ys`S zv9Oc7F029VqLYu+ES(<>)%{#eT7T`z$4$6=o!lj;?P-qsa|1^C%y#E}q}l)ZvP|Oj z9iHav#+@`bGxNKvmZen$=D&H@v6SB!0-88mRG=e>bbN-bdvr)fsYVM{m&G6QG0rMu zN;F~nR8n`h!M`f@+xHRYgrFoz(_oPC3E`7Z1;(3~u|j=sm3${OnA_~-$h>)cOhI4? z)%^Jk(<*ZOgblNkdXvaGD+hESAEwNBxZJ&GIRWz2g9zs*McPhv%*N~>f=G44L0psI zSlOXj=E7z}Fse1ReHkUulw(V%B5>tQ^Ol>>MiZA~ID5F!Gz(n#xN6Z9ve`W^hloY_ zc+Qnq5QFBHZ>2I+^Og&S-`Y2a9mE0FGkKX?8OiP80w*d680wJ^dX+C-qGTR4b7rC& zw2q3ZyKyyxCvbjzuAEc&TLX+7(6DcdIv}VJ2Iiqk62twoW5FK2zn3So53MvkS*zWn zrm5|=mwPT8pR=B@BF+TbBvs6M*K3_$)?Cly7W}u5YnW~%Px)fR%!o4a8(_2lsmJH z9*->Qc@^2y1QA~>>o4l2Is^mU%Mx)plqOQMByR{lhJaIZdab}id#%Z0cU+q1BcrdO zt6l~DmaPdk|9$GacKv->2XrowU|QYI*?F4xsXtM?3p43F>mC%PmhI!N?qz@bSm^|g z!K0}TUypH@8nKu-R2|!D=vAN^Ej=TH^i0TS9`yLsnKa)>b=m7pU}H&O5a~EX_}&WI zl<##-@BXqf6$4aOpxv~M#^=zpRJ&s?LT-C{y@AS^ z&pwTz)ttuohP=>xE7_HOj(Tebkf{x!YTJlg7rIE&;3Il&eLmUYc4-x^*d%AEK+NsE z=aR?;HR_BDG=9hSZWVkFN=uI;ZcY@kIe+sG>OPo4<4z*_ME!{6l>Qxq0WQN5Fo%PffZaS* zJaz9#GQX0?nWPHONi@HOM>FKF^U$#Bv(hpV10zlRu2yB5O@||eWU^OLZ#mpWsAp%J>3Zu_-t^1(LFNF$qZu1TxVZiQk@enj zP2SPle`{+|QBf&DL8b#O1XL81DacR}akR)r3{$o&8A%jHM%XHdG89y_0%7l=vSkL4 z03k${Y$7Xxge1Rn)9>$Tzt7{#_D|P+-=EJp*SW6unFx2ouor0t)-$Ksl}f#uHQvcp znR67H^~siLCI-XlV>{O19)X!kwUR+BpZ>$|^Hv!oiCPX=jYbH{$X7W`V(VlhW)!(q zN6VvD>Zvch)!kkc9S@KTi0RM{Zx3F*3)bLz=*($t_64Gd3DB;qUBUnt#9yu$P{uxB~^?o~9VzxFG>Z ztUJc=J^_lS{o=trgvybKQ%Wpg61l8bm*SkstGa3`@*?=G23m{+`WD0r1su){f;)mL z6}o@qvdYwJkAzx^TSZ&d>IlK+(<`Ar_to6I$e)m2AF5)7!N`$DWMuE=yK;_`Cac%` z0$1rmiPel@CZ!x+h<09Oc@8Ga;}SWWD&fqA(?;HhBJ_$f&7P#c3VDf)8X$_2fcOkQ z@0&@*bN!ji-9{B)!fjPw{q|rUiWe^^s}d_X34P0%D2;z4Yk%PL}1eY8w>la-X|Li==1$ z!c}Do+xCzhh#cB+R)yIM*T>GPgedb~hb}V13Pl~t5s1psZ#0?ZjIh%4@^H(XjPLC! zqFfCn(GjQ2l@s`+Vi_l6TC3FM58)niud) zozYi|%)^ow?j&0JZsorUb7lPv=QR;K=j;X(5kFJ@L7UtWiwN zz0+`kCqX_Nj8wxz9)ym184ftda7C>-`x zy}q*T`JCx;A&<2XQ$~`@3&&Y?7fsdxy@XllOD(DHsR)Wuly3ZkbH)_{y(vT6JbsY&^h15TQ_MnCWX7So|E%fg_ z=^qjQD5B-MeaJ4p1L43juxVv&hvDAIgXaAJV=aZ_7a!F9RMC;>I^HFnIR; zyFHYaXCdbPJ1V}psQe`0e70mL+V+0^8q(sJ2D+@bM7cFKrnp#184MX4&QEaub!69Y zS#B_b8eYrX>}>9m7eeu+xYlmcOSxdgFHv;&Y7GSpWOF~*x36ZQu1tG&di}+ZQYagX z|FPF;cpO|D!{XpY_h`^hc}0h-XS>7Y9-578wFtK^Iu|8F6An{+s}{&*$H zjdTChaZ>O(*^|rs+lxv&w{2fBz2H?ahVu9AnpEtWt19~|ebn1}G5M7B3G*R+hx0ws zb$k#kElxXdf^JPaF6S0$9hMRPd#aq6^Qem@^FzUYutF^BS1enxtG^gU$>gnh zQ%X0Tu$)#J$RYaFF#0*^vebql<@pMy8a-?0ns$-Q&5r^iVQjpE3C6BRo9}d}EnPYt zIJ`r7a2JZ?q(u#vNu5LtEX)TI>ymQvJxP2p7;4GAX@plsPb2O$sLOLoOYb@zPvkJ1 zuPrBkHC=}IRV`f|#Q)rTSNTyuX%t3TOt(g9t`7^;_A?8QTqT?$mX1W^-o5T%)B_f} zh#pLiqJA}agNL_Am_2(}aAcZ}si~6ZEPZT$e44wKfpIlA@D8-R{bJsn)_sfaKqtBe zSoP0FPryX1TKDPE!O!1t!azVr$B! z*9IQ%fx|3lr~Pj}Zxn+QeC&Ts3a4tl{UFn{?h_DORxHyrbby%lwAgPYW@II1b}nWb z{-3lKi}Y#E*JqO&Z-s>6j^D~L706JO7+C6wAF1{DtuDs)%#E~)gYJkbVEewqCdPpM zAU~(WuH-^aBAMD9jA)e>cdC~|L&DXyTH^9?xjMXadng9%xB2`1&&4_=?<-7XXt4eh zLf42wk{(cRMMCOBBNx7_bx>>qLHT>pRdjX_%FyxW5Nq2J{l=`RaGZl?fJI^H!JPAr z4XdssN75^l+f?LT8fV_GHfedoP|~5!EQQRBlw4f|>YS5joRGnIgwPq&Lc@{;0^KEf z1#RS_X*_ASz;qu?$Bf*ftd4Rxt0dnjEKXgCWmYmpV05IYlB>9^8N^-dC7`i-^Yr84 zziwELLo7qh@5|B5hxH+$`|q4LIgR*kDu7TBy7`fc;7ioL>Dh;7j_(wAPtOL!ldu_1 zK#8J+gs?7*(o$NWApvKk&RkLJ#Q7EY@|88WKf;QSTU^#KIm2xzW-^zYMrvws5@`9t^z(CsuF(vv%FNh-7`2h|ii%qJ zo73@{a;UGgi+FurNf8^n%%$@f#W@CIg34~L(P9Up@cRSVw8vzl*Vo=V1JIBNC2_Sh z57je+-*tB5cHbArmp2Ae=Y`0ZQmO}<+%(mjxcRD0m!`Jn3$!d2%}c84=YQmWv>MpD zF%-KPt>%vIZJN=|w>a1m!rFeg1M__C`JwvoBq)dZx|r3r(UF1Xz1Fd0-qZ0N@v_KZ zrD>52uhMXLaBDSHYv#sVz9iCOK&PSB+lYPtNub``TvSpbY+KO(2!R#B2Q45Ayh(Fl zoLnyd4%W-ho3_e6%U!MiT|~6x@ZovY>2h(wnQlzFu4-I*d@{+k@T{RjqqCcvFLDv8 z{`mL{73m4yUQQ8dzx;NyE>0>1CFo=m*M9r0LCvn?H_}5c8y_1N{tMWRM$0zU9K3h7Mo5wQHe`l9QY4NunYB&!hTB z0j))SKailF;NeSK_($Q^rFtCJM5lMtj?OE$3aLuWu7@#nDe2g9%jJLqC5i+7@eFo^ zAtB~I>XKDeoL9!6(Iz#3G4Xj*J>1bDn^Vl5triinu2U}Ih=-k;##?vr`?OiOv_+w2 zkOQd@PvxPz7?WeS3l2@YJVjz-{N6?H{v-;h3oj>kF4a%^r%yx`>l5yd4ve%{lsccM zutcdfK#1amV}HYDr ziQdJv^Do~x1swDE)9lL146a4UV|^`#x5a>F{8-EUNf7utUe>(ArP963v0L3jMl^<1@jR z8e1h*wF$d3e>-Qk?C)WAtQ2>_=9cCAWudn1o3{P_?*a93BH18v@A33Jm`jjBCVLFP zYNElxJqqW^d}hDzM#tuU-deNTl+JO!wOj!w^^eo5bG~xvuH3xb**4vl|Ag$sYj6*+G~nym_ARB1=-i?1@9YzDUj9FYe5YIjo)O=qPKwBZH(- zlY5b}>?MoMrmS+xXFptN9crPs=r%eYe~J>-;4F7UQrtZD&+RVK~r5p51LSQ zgTrvU1C?@%fF6XBZdd!4%z9(9Ul9Wbe8`{EucUl3a#$pA8L}d(66q5ca{Bg)(r9z6 z7eds`=#nL~7{kFeDs8ejAdR%C#9Kv79QaWx!%Wk_b!FzJNdl-w&8+j)0-iXRppeS&ZM)Y`KTdr1-)PD?~o)L}Ole0mx=XE!CL zx|r^QWr<~hpG;BA!8_9JgKl|12MOahk>XcwpitE#=06rUTy=qdHGmkwo|{$c^pc$C zP7;Z(3&gm|l~+U#CbMOT5t6TAuoz|`_;{S_^>XlW?>>#7yGhGXlifVzFYPFsEON5Q zo3AYer0r{dop<8pct^{O7WIr`E#KkSbMVV03MDdvMm6*)U*?i5u zfkpymzE6s?4~n*LF?)20|F<5R*hv&qL+Rh#^~Zs>Gl_do-Tw0e;MkkMFCLC?o1u#; zMT1}b4OIjkmYZHt`Z?S&3vWok?_c-jv>X4qM|~$QEs8u>^vsa(x3_T>Tt5}(1k`&{ zu#EnBP_VtgVmS~WAsK@bFn#q{NZ9n}Cqi0l9Fp(M5;?m~A!w1p(J2X^iNT4>{=LYb zo@GrgqAE-;l6@kD{xS_B-8!1GGN0s->KUW97=~m?sE9=_rKlWM=aYNYl>)5v zJ61~bP&HWp>wo?^2B6_u>8t3AJv1+9Kejo1Py=lVNjXfkLqW%cE Qgo$nikrI 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%0A;(I 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

TKu-or9d5rExAFCrYfV;at&@R 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

x{NJWG6WnAn2}EH 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

v+y9 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

UnMu8=^0QG6s-)+ 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

I+Jc9T@4z_EK?8HtKxx7-4 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

LVB`6{n_+S3*G(I&55EE|9H2mKP()1tjf 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

qMGT1rjLB5FCe-e{!o4OQ}=V3+TrRGaP=-~^3 zR6qMnLqj7ON6hbZL^r2xKjQjyv9QH^ioxkc8yc>*c@utWKl{6bHoq6o}6dHm-0UEYX#OpW3yWGA!Z{u6K=UP8nIwBwKJO4CE1*0=sIUY{ojE#@a zzacF03O|M|wdD#BusmyZHAmQLA&>`AM~n5cQj}jT11(3&*;n{Iy94!ScLKZmxL>Xt zJ3%HUg_ozRdJnGmT9Lb*Bd0`b?W5X`Gb*4tUH9Ycosl%XD1rZ7u(J$p#R3qY#qW4T zU*Y|SL-04v0<`xj2@K5>RsXBf{?|iFmVRH~Z@c(3<5+9?E6R<~UwpuLm8kCGOy2jD z?0D|(aC6;j^_+t{)cn|0JViGEF}%8 z;IiR7O6tu$GpIxc(=^lz)vhZ>?Ib2?d=^#}-s4D>DK%*D`DXjQnNhxRE$I*$F)eRb zjM2?t*}zHcX0UDIWBkfbHcIukw&zJbCqj0Ru&6CmM`hQXWXx%#%K}QD7y+cGHl!yK z^xIJ?h&czbh>p9}<~UfR^lCk|}0T(~X<N+)bUsW67V z_%Dxtu$p-q(}tB=R5#Vf1)|{7#!e-z+bsN(V`qiJof{BG+I%x~lDE0F2D<_6tk)0` zHXCjK7**%>aW1I5UVCyDm*TJO7Yojt9xZ=wp*JcG5)NT0ZPx z1HiHA!~5v6-?RvPoc#VBy?(|K0C*e6Y!oE(C=M73FEWLBUc_$g6l3FlYLwOdTL3zq zw<^I)qCCc%qBex;61I7?E_X0|3o6&4b+%S#+2kG=+FaTlTK+dC{n$ZkyxlDY7GD&H z@IHxxMv_qk*18iBM-#O@?yTTW4LY8&WxuC|Y``i!#&v*nX+iRsw4-N))<_`vb%g9x=grzNtJu9n?| zQ<0-rPPmHz^|3MMeJ;G64WU94hM5l zMbpXf?|$IbRPY9P&ZuQ{0mV}UVvnP%o@}T*zN2_D!`XM?Y+3LgkI$!ha6%Ogy!Ye; zlETNdf$dM#EPOH`Gk)HW^O|qn?*=E_d$-4zTa5=a=Z$Euv;7m>8+Jr&UDS$n8j@nNDYCBLJ&(0y5WiS2)W|!`-SL> zYO7WD?+{$u7@o`?o`I+5pB_b3AFj}wcBJnI_;-3wEg)pqcz7k#nq|{T?Ixs$O#c$Vq zmzcEry_&_H1`{>UdF?#4E42yI$~+}oZ<%J8$#nv$fj`%w57Zt|AcjVZ*6YM$T-Jz;jYf}P zl-D_Z5K>&fws-M?Oz5iWZ_xbCNa{R_B-!4*4oF14P{+s8pfviS+ix+JsAWJNFOun7 z+u=LYfj!$>Uw2GuW*^-1DZyrL3g=%XE!np2ew+=h~8_QUN=RN1YG z6npUKZ3!-qOL2L~5#^znpD`YW|342Zu44cEpgWL-3#~T427;uF)B0}k^nh0D%iX)r z=WHl<;lDy2M>3Ek1+iX>y{1Y4cT>@dHDH~OD@buI<1d05UYA7w`*1`{j9A?SLb%U= zS*qzREMjc#FN<<>zBOF^tl{pi7usUlB=E($W%=5n%^|H-k%)PPS?zD3Y(ao_^K1J$ zNy9{o_~a5c1(nTPZF4`@MLr=}J{r@OlE4<5H%KuOss%evX~a-AZraY z5%eQ>quB73Xevq`8lyJY*2xIt*2(lo4w6quzp(NYxlKI%!qFtxo>>O5XY63$uZu*X z4U#!J9Wd#NrH>q6z!A%t5Ydz6HVsLeCF&ci1?t|U$~z~C$3IDuqhVP*8==k4*uV#6 zwHHw(V&&55ZHtGZz*Wkp)XtPgn$7|3&nX?=RnPx30`05Gb6HHEl^~p=<&22IbnriV zY7`ki$p~Edt?%Cj;Q?`qNPF$JQ~}eB@$nxTO}}zzEZNTWo5_>UEJ6a?oc+*;N5~x$ ziC@1_)J+73%YktU{^Kd&a6C{Z4IBtB5ctX+8}fDM&k$k|(?gyM&=}Ju2)B`r%~1*( zqe}TY*Nj()y-E4TG}An5?Y>O2zBJPBtJkB8Mypdr`q$rLcnQKUkM{CR26epmZ+10# zZnQ6`g3pJfgNwdr#9kfF!4Rruf&K32Ywxmw1CpfXUG-s?bR&wdCgL0p_vk~MQP%K- zay3PMgoo7h`7he8``z6gbh+7n`}TZuagJl+lxQ*U{4~-&`feBMTz8)iZNrid1^dDaa_g`4 zASWHY?xd~Pi9?(3tN$NoX1CsoNgahN=Syc%v}D%CXgt8N=wYe2R$i{1iStX&^=_6u&89gv>H zfyz1YF4p${s07fGoEngQcAhpM<{lb6uWrVkiu8>!%J>nU)+Govp{306e^B(zF}JYoQZ6*=^9xs@aFEa8G>fC;PR{RXjxEYlKUT}lwt7TIsN;e z0@bzY2Pc$)I_=voKcuesK)8aQDo9Z0_8fFzDc~Z(sM`xJ8FJO}cb&8VLI2=Inj)e^c+46Uz1u)NRL*=p7#8E2hL0R(e6sTm{y6)W!&Ixz#?+~ldh9Tr zdBS2ek&cU&OJ-!HP2HsE-2?}^wGbf1Rm%{(er*=|k556h+)K=9gos>fAOJMch4T}4 zpZeQ0o?{N^V?WI}(xtA%Yplw@E-W}#6XOAdj6;d(uOg*xE!h0jgp4C11g@#c8H?LL zpf?QER<&`{{eVbbCjJAguvqFQe^z8P9lTh=A8Zp0qp}(E&}eu-)o8J-q_W9kW!EB* zo}T>%aal4%aM77o>P7HhxAh-u(t(<2 zj?!5t_;*TCmvnzzGzwMWBiAhHM&BNHjW)N8H3{ySD%3G8lLkNMg6~=gA)L=ZXvRN1 z-7F#sS7*n>xN5Gvi2dTMk znB|}M58ng2on9>&qOg+&GB#y=aJFQm^>5!!5d8;!nfHa*cvy2<02o_GWv(6jKVS>KsGxW4Kb z3!>I~E9-@G?*%+2Zu8lly#F{yKNWo48V1HcWAeC`Yg@&m$AGT|edO5rD{r@ZK+1Qp zoB=A~;B%`N_+lB;r{E=WjeX2GaF4DZ)yET;na3T9eX~sLc-dPWS^Bw8EdvGa$6tzf z#_YP-Ieu!#8aU=_yDgN4o-We9Dd;(U4iq|&pxd!!+p(#x`mo*_0Qu|rW;(*B>aR0& z0!hdCv`Gs*gQ-OA_VtNp@yu8+-*2$ex;e+>H3kkovm;X( z9DF6bIr7-Aafx&2YPs>#JChlVZ@^fXMcTk5`niFgfj(d?O$~a1IZ5TY`6LR5gb@Y1Jkk2% zxFlsfkJF&Kh@cM~$eUf0aVlYS%hoUv{cBJI63M*~yg%Ry*!#WkYsg5u)ZmdkLej@R zeMd*;Fk4sp49P`eJRN(^qu*NbkR;D;8rwMGCUdec0$9b?{cO4>F9cOjAsMz3e z_&E(3X*g$E+IwNLHO`70iJeX4C;x-2#jEiJg@$O4`F|AeVqMH)08hqlP6O{)GyKJrA?$gnWcJK`uTHL()H#a*< zN>yK0WrYQZpYeZ?d7L+ZPm2R!?3BP{iF`u+YuL9TV zNf#-jUntqE6Jb)TM_Jac>&=2)jJx48-l&c~+@Rp<4ge_37_%Z4C$|E5Ban9%ZPVPB zcNWVY(=8#f$#%r4nD#dG`uEw#d;axzL!9~Mc7NPZ5DV-SyZwTsXKam+q-@t~QDT~Gn{?g?WzCgp z`7EU`1Ce8go~nuEClj89Tgt-R>~S>D4jmhtqxySvWCfC!pHaj?SPobyr6Q+e z_U2XVEoK-<7!CS|I(UUPtGwQn8~u3pbhY&etyM53jdNzt$vsC$MTP$P$hdX6KLwT+ zxf}`lB;hT$v4V(JQ9z+ki1iXTJw5#diejQ-q&^3{+%{AGjuq*UUoi&jfg>C1CPG2@ zN%{JCi53CkiY|~%I^dP$$hFt@P>4*pq3X92`ku@tTG?@L5!EqtSov6sS2!FP7WRIW zcUZb%eSIDG<45Y<(Tpj}{&G^9+7p&K9B-E7Cg9Z6)D>B(*>rJ?DbvThUAQX&`G+&E zmCbk8uvQ{&t9g{MB&7ef3FyQ_smWS?op1hv{=cmQHupIWHDtyAw+8DiXFOBUdw;p= zrFM$?U<(kA7i8NTt{L>{j0sVkoKnLp{k|B08K$k+jbt@IZk;xqGZY6H6P~wj%v&Eu zCkbwmg_1YH7e<|XCgzN=h^s%w~Wk#kUyv_o0G0Yv-`=XSog~zO5 zqeUKdtj!!{rBew+Tnx{phkm+#acu54>T)o=;J~DF$8tfrnfjSjQc?n&nP!H~h--cB z1P96uTw$!yPm=@Df&bdXfGcgHiTG3}?H7!%9hAM%tM94Z;#F3NMf{?u-g7p_yQd!lubyWD#Hjj;XX8)4|7 z^j3ssy{Kf>@@FGe>sa@>{K0v|f=I0@iJfr{TAW}BoS(c5dc|S4ElG&D;_f$a4{gnqf&2eRXr$lzm8U*bAEh`Yk&qHG ze0$=P2D#ARjlTnM)n#TABSPK}6j6QRq<7Jfb+1^{IDmqFCSLe(!Evb5rKS%Pr8m5p zE}rTi4qUU-2I6fdtnt((t#P^a#ns~3DkVPN=SG+L##)^=j;As)n7cB*gjf|CKrpBO zXzA-{_Y!uvg%pqI9;pb|YgFy8(8xQ{!YbP6PDMN@BmZCx4tpsQVSC=d<7w=}E}X!~6u@Vvp0Qcod@Ym}L2Jrd;oc(qtnbacfGHGz+PkN9i7LDXE9ccZ82G$<4sMB@;Jk7qPj0rzQ(j4J#V6S& zDzq(&f?Koe#evrbsx#}Y|Ezb)xVddE0wF?h&C^lH>2(KW!*_ziwm*-c>mWOelP?6vfrJAaLMJz*8RL=E3a4H#L_NQ6CEbwCIU)Rak{si_P^xH@Ggq zf8m4>#}!2VgMKtgX9?#{0l|(jzkKF&%gm|V;~p^Y*l^)LGb>gL!%Qu9CFY)t6rcZz zw2(0sAFg$?iL?L{mhZFJlBM7zPsd7Q*cQ&)slMKThXI(l!bk#n*sP4iqtkw3lbQz} zj?7Y@gLz^!Ikqp_IpHJ~x434%v2@uUmN|X~J>of$i)6X|cS+>`@FuAR_I)n(TBOjb z=2^tm3Wq{e=+B6Ww}7{Q+*NynU*)Y6OI9qPtiE3DWz3YST+EiN)CR1*b=`?*d8ewV ziwprO)0Hg+kxiaW8$FzfchTLpDwbg^8(9U6^7y7r+~13O&uuykrP z&=AXNKv zVE*W58E+l!6{??neQ`P^MAGs2ZQA`eST{61s`%i$CqIb`m zE>)GW?y^lsp9Iwt1zfTOxHruSzj_zcMXl1x$J*zAv#YF=9S({bOvDe>m}HB|Z;)$# zf0F1`Yz zyT;Gp3023w8Kx5KX^J!LDYR2Z303UD`C`=R@$B@30XyWP^qEA*s--zkbvC;K&v-vq zA{PL*lrD34yNO&P#jmRLV|B-J(=nIN3cO0_XW`Ik!A{$Gspi?KrwGhZn=H24|P z%%2Cm2faN}k`}^3{qz)VSMCp2_S+I4w8A){(h}!`&5nrzc<)gU&M6;_Yo;w`Wm(q8i2u*D)d z;O6_Va)cG!z-V}a<~-%qHLtd%D31yoPgNu@Q<4N(jEo{H;|8QSY5Gc0DqnKipagkZ zM~)-!iy@g=UDG)=lP?CBmsaOpR3VfN@y!9Nd4$`!@Et23cPcldUzVnwT} zVSJDBj@p)z+g@t4d=IM;xg0OEH234d9TV;f4!UjD_DLFLMGiprkt&q}nYjgFTIG1J zt5r6V|IfK~s!-mx7?EHaR8iCU=m|xDjQ*7W!69_->Yels@Si$rrPz3%1&fLp3y+i( z13;zzlZ|&cUR1&R@d*j`4huV`mxN|lkTPAd|DCc6*Ue5fUzWyP*E>0Bp+^LK>N3Xx zS5F!%<%@aj@~>X(%-@8b@D#P(+l*5LkLiVjK@*@&dx=DoH5MK&9ZLrF*FH31u1SYn z9n8cb5KeC%Gp7-`Einp;?Fd_gy9k~YI%dtfaf!tL7!wd1d~mlPD#Yd7&=Wk}{w)lD z|6zd4TN@7t85z0Y_h$dkW;?KgvE=UU0ynHwt*UasI3#q3bgzs~L9hF_9abSTH5)wA=+x*W9!ZSloX;fp#)>)vNb4PYIWG1=H6Md%2)!j((VpJFl)EQbHp?G z`jeD05!u4zaN!qfw&R3gr65njWWHr*>Eu6=k@#d}WX*?_tpcZJxZCpay0hy-m(LHU zFeL@Sf?Yhv&1sc8S8<)hV0!!Y4a0z`x%F06Z`uU@_cjaW4?DZ z#`h1aFD$Z&OcO#u?;Ut?B8zezcS#Pv{W%bJe3sqA8YdeV5n&Ri=pa8 z%(wpsP4ypJ?0%!%sJLe5R`#sz@210~$YV9ok|b6s#AM3{$cl6L(s#}8W-Ukd0p4%f z&gbm}DauMWQ6>Ra?;u%wO1EBCU)=@QVwa207f|7BEugn%aA@LyBmLL7*Ms0_iQ49A znz{>gl%@!nk2wNuGx(S}SPNq$;>Y-omg!Zm&8rc=U^GsJ8>YV><~3?N6`rDK`QkiIez{DqM-U-D&-ar^9cE{ie{|xi zg+n7{ji8qqt%93U=1I&w|A*&6;y2567G=wRZCanDmQk>@o4?&t2;*+Amo>_=>UgIu z`?)n%tWY!}JC}c-x$%#l!{jh1YmjYBSfbY7=Kff1n064kJIKYqU0Bb*6vTOGaDxVxls)Zbt}*gIoOaF#WtH>N81b-30}BP_A@1QNocWuN9t_ZFB|YX=?_ zMF!t>bN{E6k;w`-OA=u-=x4#npnTb#-+mN;ai_cAsS>-5Rx?jko)B+;&o$79{;a=P zJBNA7MW2u0*O;*uxi`ecjmz(>No(+!SJZmP=1xKl}~2^X8SCJuOviRenD|C zL^7^L4hve9TMJrM2;#5A7C!5DO_D}0vE+!1$7Yne!-4u)Z?#+WP%FL`Q>dP(IMdkv zm?B__2Xg}Bb(BsLmt#D)Bhp%B4XPr~FsQ~f?W-$3)*}gpBV|w>j=s_0^Qx0`hZ8#PE=zE+SyWs`D8%SO zm#FL(aQ5pxiY_&4#Cuea;%%A$>J3VKn?!$hR~Vh8yq zr*ULHoNmp%<`3Jl>%ECKiD^i)p>p37-ed#d3n%i?osNW$_?f{XJ2cbBm`ga?u?#nT ztZ@sNCeRjBV6>;wX*6YT&$dhFE0y`YcEdi6uwTaQtEfj}df>z8aqgP6>M(HH+v`t) zRY;Qgc`M@$-t3iYA8=yg2&$T+RZaN_iuWd`GJmm%k>`!A(rt zvVEqdk)ivO?EBFUGApd)ve(kKx4vG#T38p*o7*Rm zAqKBJ6{{nn;nFODG0oXbU5_Hj(-<-<1tDu&I&{cuWn#Z(^nvdJ9=fQbk(0^Z5@N3; zi4kT4myn$_;Ua*+n>7`qBGet;caquZ+3C%udY9cqE@<;C4`R*#@K3ltFU9#((TJ_X z{9~^{KPVisTz>S#O&N=92yq#%yIu8d+Ebr*V8rrWa)Vmw#UiiwbD@5bwkTmuLA*w@ z4njj0U!z{ZR&%xWD(tXF*@IW11HiN*=*p`sc3R$-QMASwXE7~VMO!^+GqV`?3cp-# zp?pGcrk7|Ci+ZKofURl{lt0_~gs~cFM>@J851e$;!Ku_1>_#JpSyCfVeVxE&5(Cer3e zGm<3wh|L&+tb$NS>J^bIslqd?b;5l-BJdJ28 zv0dc2!~Y7z9Cb>+!YIRT!^~Noa#M?(2+vU-^}V>4Xf4KE6U-6bQi&K#Jb2a5GO`{Q z>L&8B4WWs+dQ@sB{8G0G8H+)y3GQ<~=iYznks&tm@FWl& zRW&#s7B@H@7K41#{2z~t{kdHfqV=V7$tg*L7S+-mqS~sgog}ixbU1k(|0&z6*{EDg2ugJ(A6EhNq8 zk#6DD%ctS+My9DeQHCKD^=O=d1*HFI{dYrX{hYumz@BsnL7!$!#W;pq9S@h@6=xxdducrbXj z2l`DDW7>L6B@4(kLM9*`k8oMQy1xX@uCId-u^$Bna~nLH7e+TAV4wYuM8bI%oHo4q zBt_<#52Zq^-=|TeBmIrGlZRb0PL2AlGXLW-@V6ICzS2@u7Kwe3-m;u2O^6KGJv=PK z2>I@civfB|E_#+?ni+$@kjfm+R&Xs;dANT^Sc}2#j)$`|F-lAImb9dN4&!}ntgNi^ zW>lgvU~FRUcp@$fMC?qrY|i;ZKs`^99dBwG;?GX+G`n|{VtU2G5yX+EFczXby*v!k?`zY0T}u!jtki#LaBr~TC5qsyRZtaOAI!+kR%p@McH9+K zj%}5X)!>GQf3;l^koVx)(#m7x6i&ZK%(k5v>8C+WBZ58>T}nmY_pgj+DLSC>mY@Pqh(p|@o}G7;kZ~DMnuGkEb!r9b{}O@ zt*Ps`|Kyz_0N6V-O=XfFeXT~mtv+kXBk%e7;yXQn3{}l^ze|jYGqO9I-G>=qDVfWHB*n`-{wt-?ax${ zKC;>#J%1x1FQwMsnS^@c1pBG zmUq`6bn4IhJ`SKo)_;f-O|6UU#yV#8-8NU;Yv_E&LOB_q_tOAxJ)njDN=(Fs+{`ood#GrF4kvEP?$J>KFYMbHjgsLUQn^fR&Njs=;I3f|1 zvk-O<%A4|FwxUQYW+!gXvElF32a=oio06wY-bq#74^)AZ(X4R9I9wC|4DhMYl)lGh`COY?M z3+S^-z)23)trq7Wo|_e69IjXW{gAJ6BxFwNF0$BH*zL4GiF2`x*-^;+_>*&RZhbj& zK-0%_F(=~tnc}ku@m|aOAtEY7sI&p&!427~T9IJT$=?=Bq?u<3+0Y4U&B~OZ5hX~Y zb=oOzcN!UO#N(($OYx*En%u~MA_EP^$v~Xh4c1JA*jiCtfQ7$D?Anw;KVWwXJ#)nG z!yP2y1dEvBgpYmZ!!c8yo?EwTClI3}QjV8UTI0tyiDq64e}}MzoW;H)wFtv0m8W?u zMA#W?haxmY$YuBX6$XjQ4=3g!3-K)LHQL9RRg9Lizb)7OEjAys3W)km#TysKEeq@X zMm^RK`3)+KDh_#1u}K>xy^JK41LTad!G<(e(K&g{4Su>>*&{nBM^in>N5VLJa65g$ zA~{Y01e*8VIl79{EyM)nq=N4#%viQnKAV21uAF%a*9P)AOFB zvjQ!*&r=j&_wQ zBHuzC<$f_Qjvp@S!c3lszdi-vWjY--$aI@7jsw6=xq4pc>TB)Ww131r3%-8Z?ESPL z2|NO|!rfa@R{wmvY@c`5BPF4Gkh+cwpx-p!n7UBu3?xqQKGL1Raw|)VXTFNHE1<3< zt+rV*=$HwWRZ{B*{!9{CRa+y@etW5j{-DaaH;L(V5h_SGVhDg@*APZSez7a&KD|mUdipNu})YUwg|& zK>_s(|NbVrE*bajWp!0I(tmI1^q4r3C`!^?5OEv3&Dx?E7^M3 zz+B@_;`0r@D^XJ_g4ryY^m>4c79nHedH8Y>@p{JX01{DN1>#hB53_RFa#-5KEJjah zK{;8l5zH2P5GRh$DW|rbtA8*KM83Ao-Gp zk<&8z4x?7)ugJ!!XpYkoC(t{sKH9I@${S6+XwnKjRB_?j3s+@DKbfb^KY8PXEV#C~ zPtTHeWAZ4xO>ZCK-#9T(FjXye*tbq#&{5s*=`{W7ead!QvY#}4N4?*8up1SdetH=2 zKUmKv8}psvlq7T%lGR?f;;-mU%2wEW4XkUBJd7vCq<9+n%nMz#Dy` zd>rct3q%2e%Gwf1PR3#PnUbI|KYuWWQtHc{6?_YtdMh^DZ> zr*vY7yqfg>xj3(WB2)(uTyBU32+wG~_ zm-uEk>Xm%ULRHpz)`Q6h2j86hqejHhzGn)Qfah_x>TZ@d3okFP-I8^qPW1Tq ztSdbUp-1#HK93=Lgye1M>zU9g`~Q>*{Qs%BG9O8cDZDK1sU5v+?wRjzHOx=;eCGs( z?;|5IrLch=8>7$mH`rMJoWDS(&`|}SwnpCQ@opn(ugL4>gR91Zbxx4rSn4L?WaE;+ zm?(Ggtu>@yp7Tpe1Ad;xT4Zm9vp$KbKWPMaR5Y+iU`G|s zy@g&S!j#OrrmabQ*Ut+W5gx|p)v*4g~=y1h%jdV)(%pZB3ApmJ4AgRT<~-GeaQ!V zb(S!w%G|(?$10o9gI3nO|7rm1;{7qHy{eb+U1%VOcaJ#4e9+qNYg^h70RA&D2ceh- zG=8}3@j!Yj9ld7YE{lF(oD6u?8nAGGxL@|R$5S?sC!sN7fF?i(L3q9AUuEg%F0kuo z**=!p<9;>zk@jx94)!by4caz%4{&U4utLh~VgI9;AGLLLoiO*{7)!~63OnIPmp%$W zH}2t7oaAu}yQKxjCx%juf_2>X`TtM#|+=ltgERtgax_#&C#Q5LNL%C8k zFu_^^*~Y!&(%(NLOVbcF2|p~}Wsp1O*5*q(L@tN8y6IR|YDYMC;GTM6JN&?IDF%E& zN)_*9#;q*?y`IHdxli-)8wT(g9a1DJzBH{f$ zHnC1>!WujV0jWGs#-xxS7^6KORo?`*BPkp^V0oTREX%%@FGeHWa9}{pqwYbZW z+Gl-*O96UH!sKcX)kD$kxDCxnEw*oT8h!t1_L$TwI$=M~CRCq0B6{J3#y^;0x4MXT zh+mSQ>($A+3B2TnyLxm;L=e+Hob1s`p*tqwwLhr<^Qx}TYV;kprZEhbwu5gz1?$vV z%N!eCf4UE(a2HbYj*i<@C#J3DmVQTh$1Xgn@cr_XqN;26l-Mzh>U$a!U^Fx~&4>r2 zzX8N$Ro=YCQlS-+o#{!f!rr6POirT$M}Ji#vrjl|va_O@Wq%aPY>zpOi>A>nUSeR8 z<%)zU*5`2EKbKacFHQx#xkt*S7r~X(sZ&C>%p;=Y6zvc)R#YP*uM+w}@H8hXysfC_ z4=yN8o`EHfljZ(G_>M3yvVkWU4PzXV=4IGtDH6kzduHQd z%v!88vNMhpv#((XdGeTvZD{?bzBk2H-8c1_^17rx_j4ldE>hSX&Vtj82Z%s3%vFKZ zaMc>Ct}Fet`ZhX%d6~R%Os@=>PFjI4bf3J)ZTIH-iN%hlJR%*#IT!OI{aw zkN=9OZs$EE<<7SaUAzZR1SEbd+WYnM4$3SYsE4W}v1<%J&r9*EhjW1NHFZO1Gr_Db zoG#eavs{6I_iKI@mAr>YptQ4nGN+Qzr#zZV$?4Z-dPYg9)v}KB z0ok6(wiN5{(|M-v?wp|9BJQs)RWJ{m@E=7;v&m;2?e`$oa;bH_E!Te*Y5(omCK_<& zfxEXrw~{R&T_DLH$A5&YDqcTv1D+_S2Pnu4Gj_X^GTxjg;C0W(iRF;p))<5_l;--`lk~*7?A5k_^KMHW;@T ztU4h)BtBf>|Mrx^2jhN583KNx(({`(`iuyP0r1Z6xjoQ@^UXB_8gT^IlDTJ?7)h32 z1u9v{7RbhILEvlixje$1z~90X84;nE@G^pVZu@PN8=pv^L2xStFy$7{=b5_&Lz)vy zU&#s^rbmgWxl-uTrXI#ok-B+1)4til&NI+&f;5}Wz~jP~eL2uVJZ4@M_|%q4dMP8} z%&Ln`A9_>YK#P${lzc25XYxEdkxzfklDBM?#-7RvFfqxbQw&fB4mSE=hsqSxI$SCg zF3wrJSj*SdiNiT41i{hZe$PC%L&NjM^Hv0o19~7`I z>0eMB!8FAm8MGb^>5NqI#wDh%-zw1EOBCGj0V9$TZIYy}4=fG1%jRi#d8Qez@NxOV zV<#9C9>$0 zLv+{Kl6Yuv=<>NFG+LVR7ayLA-pKF|*0iXH;U53r%Uo$&D z|3koF9NqGd+s%aET5h{}8N34+_!NbjpPuUi$RVfZXWWdWN7Rh$y~Sm%>Y`#|j)t^i z!mG#*V$2Y!j}DzMsZ}3)ZP+J6Qrrx+5n2PR8n#nGAt9aY?Ce}%x+%SayKm@vWishm zaum2m+wi%cVXq;n`>BQ^(O6)&9dg&x9{f!pt{W8{jYIqC)2K!0*l!uQwoUUXRF)es z{Oh#OA$iQ7rvR~Yb4(H(*WWKiVif+=eWBOR`B^fM&i@> zoCh^*TBuA$(kC}M0UGP>DbIc+{VlLxI}nUZvoRqj1T@KRN9-PMe#nY@>=piYfQaKv zd_IGJ2%E&1BKMRzig-I0jBRP=wKu-&jA4>}B*h5`!3ET=(PXhvQCS$Cy< zXEzTPeg<6YT!1FEy~)S=YaWQ>UJ`Q!uRDcD1>Ym)YAmR@xmC+RIdpSL_L0n-ZHZRL zojpH=*D`>gaN8lNEE!EO>U6?wI-6_rwwr<4ZOx5=?H$&U01)CeYCRnEvp8zoNjXw% z9!dwIy>=8=fA3tJ{-0@qum4jC3k2x0|NAu{aBz1l_dMVy{Ty8DX-2g5?z_aLmw8HC z^)XnwEq5_P$z*QPS;ccBoo`NnZ|h1U`e^5Q;|RH9J{*eLtT;NMvh?~oZi2sLvC0pV zbgEVtTuI$9Byz%P!o|=lYme@YopuZcCUziFw~vfiX)`5%4*0j&CnjgZi;2zc9IiaPMQa za&ULo4W*sg0(JxARXHMjK>wo7%Q;l&V&o+8(2I!0eOD+w`D(Z=1{$HL5x78|1a}{_ z$U?SbEf-k&EBzYK<@7){A-X6n8)6_xUKDZ1tDr>bqF44g1b1|Mt8cVsyE)+A%gJI` z0#7mk;=t;{qp+V5-`hwMXZLMV_~jVhS@1b5&}eVo{_UA2o6AUa`r)RM923u2pByW? zWPk6N*km>>s0hZk1#7$A&lOt`G>cE93d5<))6>i^B1*_JUsq>i6pMKY+bKYES9w{~ z9sq%8<0ri2)97wgKTZ0z(U{L)jTtF!PjVRODy$jC%K@B$p6nQ*gyWw$NmzI7DEA&P z;M&nhN!^;mWtyj=kLhn}i?G>%l^c*?;o30?oyJi!%nt44!0A$Ga*wkCLM+5XDs66q zPD3X?>>Mcbb>43)GNRs*i8AovcQXD=Jcp3rp=m@3hY-BPYBWF$=|eB~CSc<>A+ej+ zVX-t|FHz{<;HcIRE~(#uw)B}+2-|% z?w=Xqsao$6o)?9JtG3i!Zxv<^-KJzDSdD%>x&4@0=Vy9-9`M|GcZ890=^J+E9A83? zUHO{R&Erm{VgIM$E_RDrGw!u?4i%4r$pCg?ityQot&Ay3jEQ({8~?whKH6pB1M*z@ z=~F)$%!qL6iaPMPgwu1Y^D)%MsaZ5Qq=)4v$?SPNRPz#vZ*fbf?XCNaiW@NkmDh6< zVpT-rU#m51Eeg5^C$m2C)aZ7i!W#DR21wq~_qpG8T(2zdcu74_l2VVV%=`WX2EgnIg)E_v#VE(&1BinTXoF)Pr*;JCkre`k>cXV zv3g7;vAe(x@*{?3U~9}-YU_`{rg&~y>T5H)-+uEjjAvow2kL=?)T)a@H!#I5vyvoM z?H0)vD~8oe?2|(5lMyHJu61Cd4wFP{hQcvn#XSer>chH5>8DP)57!s+R2^2z^12$A zXsu(F=mCX?U1-G{80(W4G~4}YZ@x>bJ}~YkN{!2*Ild%Pw+}R=@RVb>o%z{1QTu1g zowEM~MD(ti>&`e$p~;Yt+fpQ(0;A`I@Pw!aS0`FsbvkUVN~t~j(C+-ei1qZ8ht+1y z5Jo7dT4{q3$K~eSN$OWa;(rbDWz6Jy48(HlNcaKrO+PE-^0tUyF1sU&AKjl(FV4H? zo~9LsySLY9A|LQpzq}S%2l3w$yt!`kkQGK8e)72g)Dkhb?0?7SBTrkQqZ^_0GRqR3 z6YE<3C$?ZwW<-YDZv3|%SHK_w4Lpu8Mhc#*NNWt|?41(ssUOTw>w&iCe%p}2O2tGQ zt7!%>1T()pkT*~tMHcxssL*iAel&Qd2@dgRfU<3Z1<0a;&ufued6N6`3Tq>`!Jl+d zhk8HRB)&>{5lU})i%arzG!ogdn+G#i2%tw2%Xr-Ws4+yZ6ate+2Rhm)N ziN43DfAx^cVkhlFHG}Rtgg?F0uc=7_BDSphMd5C*%E5y#b5gH;N=mazHN~KUOKwqu7z%5gxl{hM~LuD9#(rn&_a$mO6=-2V{p3Fw<%7a@>f-%;`9Fg zP4(;t7P~tc%Z>32QiD|oKW}%F!10GAJjMqRUR?6fq4@ZOD6#oik(6@B0P`T%!=#9> zt^(hik^lH&+`N2u??zZdZQi>fEKg+9!;a6RP>EGj|=4r!#)!Wk=sO<^I0}xQXL<)>wAdr$(U!g2h>?Q`2xuL(-dp?p8ww3J z*u3Xn&daW70yb4q|9NdUt~Bax2;mF>NK{B57D;s7vgdpi7U6)y=3rd%!M0_fAw6_p zzRj!c;n2owqEZHu&m#IA*eneN3u&Wa5r5KZbQrrN6o`6^+S$@f5JDYftu%kUyS(Hk ztO=K|mx5?k8HY6kegCsrlZ@R~!oqN1BF)f{WQuD)Eoxtil^yjX^&Jil4WVAhIthAq6G=k@M%S;o|d z97AIh6AQ0{i;-rokzVKLDcv@R*bi;iIr44tZEUN*4c5`K5vjo=^K~`}z|pL{2b|eZ zo!%{D>xa>Rfv}Ig~xqk{&|fEqV{fx@FP&Zi`r9D(ckfk!;i&mI#hWHr#!k zu~J*93S+g)C%M-e4Et04{7dguQoa?b!nEz6u#E(Es{-*Z9aVia>NlJz`Cnolxn!dn zUr}9$hzQpAQTPUi#KerY;eJMAIiMkU6>i@3+MjV2<2Lrtb@DCx!sJNG8k{PaxO^B6 z>j%nejt~I|rh)4yr`Tt)E#A!Unt))KlCR!F+R33cDXI47My8PPH!P@#bMzCZVvUGv z;0y|{@7Fh)`#q#eKv}hrZjDWu>Oz^8T*bP*hG!40n>doRqN$Daeck1`J6`F7%hdXa zN2?y}RGlw4#fTkhxMzTMC`W$C;YN*D$zKs#&Pr)p2eLeLn*! z9L05xw3kyoLuiQ6e}ePFY@Vpg#v#v+cakK4HjcHTS@`SL zK|(ZM>5Ffek3~#Xo`gcdTCFC3S7YCb0~%3%-xK z__CotW?mjM_=oquB(e|&;oZJ#e03EkIt+?7|CPxk%Zb1i1_+;Ht>w_OdjJ*d{S^q- zbyT_{tj@YACyd$`HpgkL18=BEW4{LPu7x;T{p)9NLH~Dc!6Ibi|JA(rJhJUW&mZLn zak{?~mAOnf?j zn;9d<8!vyKX4ke;-D41VvGHYbgBV`lg5jYwk?2?6M-J4c0$jg{3I}K+3pw)G zq6k-_<$Pr6#HPGqM{?O|#dKH{5$ziN}eCE@YhoO znbsL?q5_ZIxaNQTSIw8pJ@@)$Mb4nP;3edBYGxsf$8?u6g~iytGWwEhA@HYr>?YG? z>{XiEsHaXTr_fqeg1x-gUCl~A>JvWiOvs17#ftea{hGQfH*~`Tvm1KA#HqGza$#Cx z`cwWLHf5TgN-G<$o3^eF9&yZ^_$aKr^ZWCK>YIYV8Xd4MV#3^|^hL&qfX~y<^VD1d z=%aZl3bYV$fsLyi`AXM~pNh&7te?$@`jA;oXqw z2sfR14BF->_1HU8|K@SiZ{OYj-FX-bUD$`Z7-xr`rXP0{L{Ptu=P)VZ@1%Yr!HY`;;g z)eY?wOtP-eHdK17anEv9w>7gfe+$2S9SLv-R%upo{VICPP0~9Bp1&avnBC6MF;H+# z*#|{*l7_hYyS~-=LcvX`lyQL3HjCo<@qT+hiv&RwIq>FEKD1fQx54GLeFY>t=kts5 z@X6hF&SZ}pg)-~Umq+C0rwFsX)!*BNS?Axss9rejM%qfL(-`UL^p9`cPrNGnFY#oVh`!#H-k?oK+a8X~g8?jnm(M%zXc_Ag)0R_>>4RVQ$w0njz{ zo+PE5R>MAaK=2?Yt#XE&DUAp)M^Gf20^a4X?k>Bv@s1j3Az7KWaQrN*p%@?y@EVED zOw_VN_vrK+VTx4)$;Q-Yi5WV&1X)sGL}H^g-CHo@WQCiXQcjY+GU~u{$rxYMu{uCo zX{7xmtRVV={w$LmjAKbuS?ELp3dVliVZ{N>f`S7fG;@$1r5F2_8Y(ukOS953WGYw( zl=47ZCnkcQHYXz_KK+eO_rffLBQ9tl%;nkQbZL6Mg)l7gUXpIdH}^XfY>CS5&j=GN z84>!G^?c$du|iGTf_8=NQCzg|GibVQ?p{_jDD*n(`5S6$f*uMEs09bB=t`K+gRQRj zn(ex@ccxC4^3Od~{rZHjz~)s!z`~%{^60T@>yC%2XK4wOfk5r5|73hs_)Ed{#nWSs zH_c^I`TR2CvUjjji560%DyI0d<@XkdJ1&uUcBFczedK0N$iNKRKsV+=v+)V$AAOLN zg|`*^m*Jj;zdd!f`Ded`PX2fu{F7^>UrNPhHQ7{z=L<|5bRX7ndDd$b?^_ou?Xuo) z`{}Sfj@l3iZPtZ>i=LlhfF7o!ur0bPG#mdvUcFv)kmi5*)MbD)Fx(96c}8eD%^EEy z`;BcyRwJK3eOhs06whVeglG_S{yZnS@c?42JFnz{UU%|NhuE%6^T!w2F~bV!q52yx zNQ=bQT$gW=qtFp)m$c_cO~-@hBSK|4=iD$cVj@b#AI;Pw0G8hFMdhm5jUn~Pq*j=?IO`X%z)A3rXc~(@u=vRcdw#%(>w-&Y^vUXw7-oP4Vj!M)@ z&#Uhd{AWSbKcW^?nw+d!zB7qCY{kJBfuKJdPj%Yk3iX{w=d_`r?eb`{}% z&+F|Q*i>$MPEL*hM07pE^;qV(`8=HZjAf2t``zJ}&O&k;7Q$y4<_gSzZzh&(UWWUf zCmLu}8U|CVa#}B_x?S$&U4Q;HdUp}(IuL<;`T zHz=EacTll45nsvbjJz`%V{^-K;vyU+p>3|~_+I{!C!rkc1#TmF8~O%#?_g zY~v@uD~e+ati}kr(Cd=d0q;T6MUuK!j8+PCNYiUy3C;tRtr~+UDwcnC26VtzIzi_@ z*Ibg=BsYYLytpJSH8y4=eFxislSI}h&}sbo=qVkXS9GyK*hiYJFMn?=8(6|oi|GrK67%+`j0&N_ghgunplEO`v?99aH9y1rcR|qsT^1K`kw;25DTojXi%$ z_zEA{k@rQ|T>g>z$(jnNIr8GRip?0_Y~EQvQe}Pk_#p?s6&C?rdTaeVhyFvrN}Asf z%nLM+4M+|j1rt+stcU985Cu5B(}NdfF(aEK6Bl$lDu#9Q(~10ZN~G|4 z=JS4v#o0r?y-L}U2V+A@lEs3Yjq9^%?1ylySJ80iw~;sK)Poz_*@*VU_nR5@a;GQ9 zVdYknH^j1nmY69uKV{WB@MPCPMQFm8H|&m9nrQ8&K}qGV`PDDyAjV%pa%Id?Q)$Db zguB@=UQFsW6_0J@g}M%2SGjp zRzUCeA=v2`&{w;Re=$r*@)PTf<_@jDn9DICb-v4}uRw#!?F^Ohc3A&3WR@{3-cY(K zuVF1FmWt%&NZ6{m3-cpHlch22!(txCN}4YACxX9KP>1BAk7=dm(Lo`%GQLQlU+1H> z)XY?op;7tC$YD6+%33?W^JN7~h*HQQ(lzakrYVty58p_!Tg1X#1?B&`KFHS?uh}}< zs)8?}&wyoH-I98^^!-btyTzIw=~B|Uwj_PkcJL|Bc8-H!oR7g1&-Tu3<##?!F02&O zrr0aE9`|&J3FZ##3|g%|A*BM|)qjx&$CzP03ZwHxavY9ZVV03;v^~-^kwHT$UV}RqFe-%-gy+vKx4QfUJ!>KuB@W zcb4bcM_j2)3b#&NIrO%RbyI{os8tNKRVED=99py=)~^aYL#B$+Gt!IWK*Ar0P=;|b0dTsDc6})%(l&1X8 zO2BZxfV|RnuFLNE0F{s+?(?Gl)h`usLSGKuckw(^RemuWb2Jz#k(W%#mvkQkOhxKjvWMPa-UoQ$oVt|_1$BOf2C={rq zGrV|xRAZUUe$h@rh690OGn9LwL2csn-l+5|+HXmpQ7Rf;_iJoUB5UP&cXQu_;ogw; zzv+F#Sr7r>8G$z|e8}fPf=c%aH_9a@P(l9@#DKox^b^VW~l`M za?L*GIfG=f9_D!~;Z_#)?98$C?LUS22PGht+RS^nRx&@gv^-Z~HB1LhJghX$X*Ai= ztl98!r*c=d8E9%Ke!oVP&5U@nOfZvi683{X@%RWNaJzdP(z$e@e4-I`SW#Eqr@ry@ zQov5=%tJ?Y|KdR)%?R)c*Re+Bcpn+|Vsv-RLY}6@1ak#m4Q6W7-bP}Zz$XWop@J73 zAD*&QXdE}<-__XMAk{qhuo%sGyuM*s5 zdc-v3xP8Z2G0-F0rZIw+bH~#mWzjr-oXGppG$L2H6a(jc??v+&(Zob8gFy^BFmzZ_ zOP`%7QIHRUNZ~+|Dr5wR3UXk+c=F#Q3##tC|Ix3JKT^$irAIiHW%U`=g|W8&zASZW zz!Y?!qiXnDeYlgc9w0PU9u)H(GP>oBZ#l(b9e7)cGM-mWN#(lcE_;mwtv}^~rx7H!0_-C90WLGd zD_rbt&+KZE?Et0=ujIJ%Tz>C2JMviRG3tC#0V51<)E}5=vpL}R!AD*O1LxgPBnVk? z`Q3SN<%U>@Zodsfh^gtL4-N{Hee-E5bwlhx4g#(fexx1<9Fq+9WqLB{n-Ksz=%n76 z?>y81uf^rJj(5;c21WQT|!pFpz!LRO2BF#3?*c9Q0n}f!Zq|?rj#&xBmNi8 zK#cpmzYCZIOSbCX9|cUH|%g2%&h? zd|0?6=G%X`Ec2T5rw(rb&d+4sMu%MmSqIjE1CD>!o7$ZATQa*d6*-bB{~QgsByQoS zZD!W>H_NCP0}!O~>+wE&5|$(ms|OU^GLI)(i`31{4i7PH!ws!FI8>l{uc(-ReYKGl zqGOV7{|IQF$X7ETj-G$sQ_kc-SBPp^(igk7{)cy!A0pWBe`rtbwh2AbfJ7eUK}wH^ zA4y_*&%4(*RELkbymgCC^B=VO!irt{5?7bb(XN}UY>urf0N)GmY~_v*8}Bw!eu3RZ zHyORc-6e#o${gq z)VAzn=qVHOP}VQ`;r=~RU@Lu&S(%z&l;lIa-@+Od@L4a{2{>4^YQp$(J=RL3$ZOUo z5FCKv^vj>#QCT!x2{w!k9p8KBB}`%9+`sr{8ZLA=Tj2FK<7!4|YKd*H4Bh(pIl|zv z@$p_s&gRm|RKt~RSUP5q+vID2L*xS)rXwrCNGO_QiwHWeuOh0$%lE6TiRG7Ki_v7l z1b}gROWyP@&uKNz_0Cr4+Y}?QUuoIA-P|7~G$SOKLw0Vu11>1B6p-(|5X&{x{!0ATv9(@ z$tN5}V8~wR1OWpoZg087Uw;SX5B1pB%D2QeBkZjoe$>mw%>g5fA<%tv9Rus^%-5(k3|dSMx-8W zGT8*w#!Lw7CDx^O^I71ez1)+V@1^)EjE{y$s;!Vn9tb2k7tU5u#MDrg*NC^A#XUvrOn+a-ob z%}EaRzAg^r87XkJ%6xMS*@?OH5wws5D{%PmjxxcJA=>O>0=TXr=zWEJrL;JNC09tL zTqS;JJ53yxV;oL(AFECM8f~1KlOK0*%@1c*_g2#2h+@A+X+6NK#kd@YEUf9;41hXP z+ncAOz*z|jsuo%Ni8i~4Ea^e_t*kr^z@y5$gxAOt``Z*Bz1-yZd|}im)W25{o3)fo zuQ)od626R3t_-+}#@EZ?0SSG+7O0Yv7}oi%4m6LrAS6-y@x*Z-2bknd5);&tZAX2( zyAu79>k*%@?OB5%dosfo!#`$z-k(b&5WkHJXJEL9BW$k1X&Vfs9yp=Zl;lWF_UM%xDG^ERTvukZ zY-nm;&KWPl(NaLGpRHDXTxuh95IFkB)j4R|_6v&PJU3>?@)eL2&KfCf{r$4UoBcAi?5g zPdxo&cD8)90^#hJIK+9%T=~l z*dn9YHbczsbhq#E0^Hh%!~nN~pIc`0@+?jtXUBKmVvT%Y@Z|{+#5f@`^UwBs_@}{F zCA-a}f{7u5$t(H63yC^-gv6eBWDVgEPvNm^Q=UxJ^XJ$n6lCo^m)thD-TZGgHZ!v3 zw>S3)1G(Yvb$>PTeD$3o+jFkpmyX@dfOqIp43^}dllfl>sPZyVwWy9YM51#a=s*5I zC7NSIa+GK(XOJTit{ZY%vC%*#VZQdow~^-($|yPVGOtxOZ2gOHaaC(Kcj=oJnE^H%B`5yVrtrQLN`6YCGjTRv2?nz!&R`O zVe0T0)zLZ)tLkfMp+hCpg}4!{f{FvUK6 z3mX*?^!Fk!40XKxC^`?>virllM;;smWLh~L?@`ab47gi%;p)j>o77lMqmZonWB)Eni8{Ok`TY5`jPpKI0lB|W7S%BLJ%ddQ2*znxEe2&bOc8mC zlq4J?>F#ELa8~Njon=v++7h*H*P*)ssnmdeVKu>m2>M3%f@HxT$sc*_qxM3M)t~FN zfVRI@5d#lB7d2Qf*2zl9GiJ<0RL3n{Pe`H0hqoHjgK;~RymkVLM~;|VM|zm|U#wxZh8318N6K|ptXfObkSl0 zrcnD9F%k*7wY*|z(V4YUyMJf2gU>L#<)S0YFV5#8hdC5D2Pd3?v-0MCARMzEu}*m; zILkUxtkb*eZbH^9PQAxGJr*lr36YAp?Sp?U!}f?cjd-sbh%^$u%QH_<%hw_bAZ)fOjqpR5Y?Kr04GC z!dHbJ1^?IiauFy6G~b&mfTEB{9G!}`UC#%Vhd=z-9j>Z(5w^N>f~bdtZ;oC2Q&3aD z6vuHRG=&B?C#%VZ4o3?-@K1{nu@|eW4y4R9KK-!I>;*vuoy7xO*AQru)A`vMf85vfI(HR7TSaVhq0+ldQCyWiIzvXv!NF?OXFgPAG%SeKZX$nK2B)0)cE>-S=$kLYSQUx zTG~@Es$_Hl%8M8OECMs-XypW(XW%j|ZkHQ?syj7?!~+_nVPi@paEy*>hdHM9I2PIYyi48|>ssNYVfeq+5m zY2jtK?OGP-)NkS-C@UCx5fdXUl1mPDD#z02>)=l*$Xn%K_%rl5k~T&M?;pwvp4qS{ zVNyC|R<#`Km&QtqY^yvC@(A}U6SypbHf*%NYYok)&rBo+c7f~|vZ3h7Ps-CCDh-yp zj;xicJ%efiP58>3&pXGzwZX&%SD}q+49Rzyp>R&<9fK;Ei9=4F8HFm> zuOVS^7iUq?QegN>21GQPG(6BjN!-&^QW>>H4OMLB5LcGhTY zM?+bw5!NU+0jCNFZM-CV2Aju3Qd#L`Ox2&Y+v1We_WY8W z`gO<*A`1=|PgF+=F64-mtW-F>c{|C>s1>vOfQtoV8m@6Sq3Lfn0~N-O)fI-43w)ro z+ca3j4|J9OQBX%cY~G0)2}WyqmpWbhwNNA8f~S0?2y{#$!exF&R1i+YtsBTwu=5Nf4Rv&O0vb|dri zTHXNz$4)oJXVs`ksio?ElwG_AmfLc68NuuvA57JoY#C2$pJA^JY&EYDW>_1Qf_B7# zCAJ51AU(yO2+t|O{?>ROF_S!dx$XT1lUw|adEq1j#`rBhIN@c#Ti*Upc%l=n!5!Vp zeS+n_#(ai1@iKa#lHJIwU+o^>Y~CJFG&l!H@4=n>&m+Dj=rPgDle5e#@86&leSIKT zetBN>*;0u~@QomqqIz!!CrcnwGzes-H7z?B#Vg#>Ed%FnW!Y1E3Khp4>Wd=Nh%w|| zn9zohaRxq{``@bLI~7E@E`8#WoTC?@Sj5E|)M6@${0)YSeh($0bwBz@# z=6g$#$csM%F$kKiPgyxpr?cL?70dI5Z~nu1ekW=qY1d2mbxm*+6w?t&j=?8B0#_cL zR;jcBB~0QTMg2A&j*>r*hh_AnP?5RSRfh`X!dM)$Qs!VuMOdRqt-glLIPay*O)*-k zk&=6jqGeE8j3Nt=h}yY!F3W;Rd0FuXNNU!x%n*L*938mlbCD-+cfGp<^LOen+G~U< zz6#9v8}dh!5d4Y$B<3wF0CGq-qHAf5?0fvFGB=5+(A^l^)?n^_4VpS|Jhdpd?ApzAd0b4}He1Xa0tqxFF?s&3Gv1WUq^yAh`deYKU z7&Ib$v5Nal3L6Pj_)0?3Px%aI);P{KhPRD+{M{#gvfv0hE=QHV`x}F@or3a=f*1%X z+AU0*xwT4)0P+LtzA$`rK!DnR><%d4pkB#(3)a4}59=1yt^x2~j+o3JDO#uNZR8ne zq`x%Q^?F=HCje_RrSg78vt2QUTUAw?rMGms8W)Tt62*d7sdK6}HAqKbL=E}Ww+QG6 zaXpEEXkno<>PDSx1U-IR0{j7oG&X%8N!dwB4j&Idxq zqu+(5T2XuhzNOq-ngZ9rYiq zaZucjQj;aK!fmb#r%AUk_24KPaC3?ey<0wMzx%TL%zPYY@+ah6)2&?DJW>7`u^G3t zMwu)n8L%0QT6DB>9oh*_;Me&a)tBy3ZGEZPNU;5j_gtT5x1YVqdfI@$u{)p$*$d}G zob}t*2o|L1qjp*?dKhV3hgVV+4!n5u&}$Y|-Cx zI77w^)KY^|KeaCmy3=@nRq_%%D1_G0@=LJc!&L&_f`NAclA~0cK6VNN+`?{-0LMK z55525dtDNEZSgu2oRVvkmHouMT+f94kV6=-V2!;Xz5jxK!uuIvKzT7YzFygf=l+dj ztX<#&k?79fN|LO1$kkT|Jy+d9T2_ZpaU!czn@Hd1I-Ca2KIT2IG4L#Et8%cdRq#aB z$t8~34X<=4+gQwB{T3H!9z7<-AAJ5Ze!Tb$%3Idg6uNk7lX(80n>0p2N~&M^Ke&`u zgWV?2eI@b8(KNE%pl&LttU)y?X{vMhaYU{Oz&nzT&3M)X1F6lJogGsi z$Guo>IclC@@?jcS#6}5~bUd(}tEpma71i!IB5?iRQ0wKL{nU1xAr6h+U&vO4RjE!i zIw5%+_PLZUWCkx-AL276S>Ez%P7mM}Fac2lE+C*egeX*WM2MdMGj3MQml^AZ{wIy9 z3s%TRlVy0E!ANM!D9+ww6uuD?Z6<(++7HVnvyZt+OG{52kBIXn8*ZWEI@+KA<+7;c zfeYp+wF1Ef^=IlNo_4xJRnPQCB?2O?S05&S_!?vqZ~xax0(k$7$=vQ;m|Ui;pJAn` zfilDfw-t6zF_DDW*sEi4YUucLM1|Afc`iUN7Wg){z}`B%3zB+h+Raa?KBgg@hpe|X z)DE*vM#_+Ly-3m$gmyv7Y0MqR>|9mDUh{RxNU zNI;t>Sj#IN? zwj*|H=NXIH?YER=0g;r)Mp*p%B0Vj`m9o0)bZr#t%-TOA(8GmwT;=P>vn;r6(_8)x z%>8mlvsPTJB-UH3%<#bXqQX<{w1FndU*6IlR`IiR^NL${DJIzQTUuk=vYY+=S7(^I zUfupAy~$yQew$|%AH`-sDIXHJ%+V~rtdSOUP!Nu}Q=(0ZQ-l@vG4uP^Mil|}b=Tb{ z-JF|VlF08EcPmBgFX$CeF~|wWnHkdz*(TqvtSaH;?$H=W_ftA@sF7)bN3DY0mau^2 zfELFWnQ2sUUslNLYA7K_5I?&X6}bkZ>~I_%j(sk$S>g~X1X*R_GqgqY+8k-sUkuS? zxIclV`DKI zO6ePZ*5&aH&Gdyn`ap>HKbYVKxkq%Jx2V;~`F~9I64|$3HkoAdKO5j*iP!~VZfmmI z2MWWDBm_`9$)sPAIs>7`nU!weR5>Q4 zSdCP9_8>w9IwkB~WAb!@L`)FK`Hs-j(iuJjG~K0IGjBE0T= zoy7J?IO}q}_}SUEoOcZ57TkS5h6Tx36$m*=M-6699dQltDA;bxBf`Byxu@n2_G37BZPLy0 z#?lkHmS*o#O82^RqnNXb3?4#X51`CINS%mf5#ut3s$1QFSDv7vpX@JT73FT+)Bhkz8jX348FN7n zECB@lvnz6U=b30pi}iOkz*~*+ihKTqa0!&9 z?Z3QYeoSf5A^pdz$`-@W7RtuLd}({- zzj=W$b@|E6ZFT+~(vVyH1ad3=i9D+Vax+}}Z|Ys=&_vb(yz;KC~>}GD?M`c&3CDhZY>~-YnB)M{$yQsx+c0(>Cc9YG7*_xs%JXn&(^3} z@r+Cu-jAeFjR14x>ds`c)5z9TPk(=O9D;s$-t-b=SyB060| zcv%xS)D(KA2`^!h&Fvsawv!#jpCudXpol+RqF8*FEWR~>PV5*eLz`-ZH(0CD8cvl1 zyC%r+A;+k|I!=Rd38q|0y(Oy!t_@&V_#tgB!W}v|(JwHT+CvwrJ1?dl$C!MWpIj==ooP8_2P;aHR%Z0X5$^aHd z4)cO0DWQ4HYRNocUCi4ZDi>^)H6`m2#c>b|B{!5nBP|FRdSgaWbIuq4REF@f zlLg3a)yiM^s~_}eOZX2h97*Q!%frnQy2U(ju`lRI&&Xi|Gn8k9x9^+~?j|6iW*vOj z+xT}p%-I9hx!}p2Ii7gMlqb?U&x23^$K%M&|H~oMj~m^=`Sz=3rgvhPb>snXOtP zH`$BH?QIZKJs;eYlMG#dI`)YxgX7F^s`6m9Pn4p>w^h!KU8WlGj(jX5eRKA9c3iFR z;`hCwfOl=?(XAvE!DA`*gByy+NKN=W6L!edV7;3C=B(uJFBb(_l_hfi>eE!hc{k4A zH29oj4}oS9!;G8)jQ{PWBGHez4}ff%&U7n ztTEVM)-OMU-ItNId!j7ED0_Q1=poVK-@=13Lm}eKJTr!tmh1i8=IEtQmfAR9;G2%MS#@MaV-MFZ@NMm#x z4;BO=#jptmUZM14mWZ68yjikno zZhx;5D}u{zWKzmUw%Hi%1gWyXULibi>?0nuY0lF~?mqjENLDxWbB(08#5aspJ&pU3 zx~9S}^x>hC#~mEcg7h_R25HMg`%6o%d8#p4B*6g}plHy!Oj0agVyLY1mAPT+Y~uqC%E^}6O(xt*qZ-rLTQUO2uS@u)i& zSogT*KkdeqYyCdk3coi3GNf9i4O_|XOic%sjna$_8=y~DHoRN;yS+q3OyBFdH0;G( z?yn9v1Bk4@MT3Hgjs18q7>v7kB8;o>05q)%z1 zGe-clseAhzrlpnkunO|}w*2GG<51+2ONOVik`hGk|6=Q{g4%2YZc!+%p|r)d1SnG6 zol*)xTWFEu?(R-;O0eJ##f!TKZE$zD;O-7P-~aD3b1wEpGMRUht4#8&cd3DaTrKw# zM;uL!VM0Q}U4Q815iIX5Kki*m59)^YhOOO5 zJgds*>j7vu@MX8vA6<08M{^agFT_N+BB;6T6*Gi>fLuc`H_5 z#IB}P&k;HPVqK;$vr`zODQz(_gi738T;B_U=bZASSH}$0)p(0!jV=dl;?zU84cMe7eX%||6PHa zMt9qwDwF%my$Qq^7y3mc`L@sU^Nr#u@8(TUa4X;d!St`uQDk+czx(Zk@E#z(Jdr!K zFd4DSwe`XESb*sNT>0Gs#Mg56Y&9E2O62r` z&iCwWYBzecKzb1H-wesy_xnQyHfC@5K*W4!UGv$B=OIqYor-g8jaVGdiVM$PBXyI7 z)I|pj!M6uYhVc}+H+Ld_Hxl3D1>Us;mS3p7HK4=jd4aP z4n#G(_M3t=*z@Escev2p6;2mnSYw03}zZFwyBm|>_7EI zTb=V=p8lGdRGujAscX}V{w|@fjQNai`p*bPK#1HpUa#%>FaYdPw?vEc?~9xccI6|2 zIL8;ETuLw7)4VzYX&5B}q{I%D1jsc(-|5cslnoM`S;bgC%C96`(}(8!IRqQOZDop^ zX=irIV!ge1iWa@Pr~|A#a8h{oMa8OW){kT> z3!-NbPK`6gGa+LN!MC4{_J({(@F+J@KYxU<+8b|6L72XWnre^fu7f3|9*RR%qpzN9 zpkGI)zIi!h;+*zb8R76%ji4XFsEi8nzeYfBBk#dr4dF?`ezWdBrOGn6wfND>4Z2yJ zl6dC4;BXSzn%Hx+AuOqG^Mw+0XG4#7qsq4!DSIW16dMol$*YNgVIW-uBl$0i}j zKdSOTNrC_-i)9~dLK5vr-{LaVP(y_-lm_=Ot{-u|#G13^2Qy*iI0Qe?Gujmn>C{LQ zvFp(XyRFjODNr+>M1mj-*0*$r*9x9N>Gc0q{R9vmK~}YKD4bxuy8)g#_|B~wQ4ex* z1(`_n!1*(YqggQC23D^emfW?#8&~qHEZoRDIf)m2_}3Ee{SWi5gVvgEFDQ-|a#?v> zCy8TP62?5IR}7zE2C~&MOGO<~?3G-7ho}WiV5?Tsq5KIr12c;nUoX z9JI5Aue`S&>=Z~jy2##=C_es+9$5VU#68XD#K zzTlEZKkd=9D<<@EzDVYi0fBSRy$^xeYr8Ui`r)~o!=_n=k2N;bJ!zF)DlANH6}(4# zAFD58drbzH-3AVv3j2gNCo4mK*N@}{zcQF9zLdrBHO-Ly*UZeT8&!y`p*LlqR5sYz z{Of{ngOQt#YbIvscd~UxAGq2++CRf0g)$JiPMV$?wtr=D+krKtC{we!)pnp_{Bo6R z@@C_yO`bZ=;UFuvGuR7Qdz(#p^BaFti-TS8e%-VC`3z-&`VyT(SA}2nv~4>S(A*W> z0#5>|51A};o{X7hOGO-Dn~HPq26Dml2#vqLp!U``ehJ{8mQ`4n?AL8qG!@s?7kxZ+ zEP;<`8NVEkpPvDH7QR*OM>AF>3MEi56@ny!#GKoZL@B88sfX*s{lEsm4-j|viE$lD zP&$y9YsKO)cg1?lj(q4zP9!MvN^Bvnr?~2u3nh)1rK#$x*(>t@@T|g%-fBL(84D!b<86aXb+Z+Rl!fJ6>)#{8P~DHgYW z$g*VT10+~2(6V*_Z#lelXbzK~I5Rme4D|frQV`5(G0Z4R{YPn#`*!Nhp{LNv#11%m zp~$W}=nC=L*HZjVeZT{HJzh27D0J3cyiPfNHi_l(4u7hCy6_CQJmZel^zUZs z{D|dFD`0U0`mFH_%D9l@7chzi^I71TCA&m>wnyH?n0-A(x|&NqknB^9GxDIHzEM>$ zqWSWBNC&Ex$fo_F$;mFptaq!AWlyT~D4cWVI7rrNG=^k8j*#7p0N`5C(_e2)2-rLv z3YB_eETa;jNYEo1oaIeom!r*1Z7V}DuXIj}6$E?>DJ`-gG*)N6N2-tY#q+fccP8DL>SLe_HNJBnvHkE<);1*fBZ9iQ`Ni ztiCgTUGyjJUvES>i{*<9`Ec=-b_T0-zCnc3SPtG!n@|=Ow6>{p_c7TgpKdy{Gy|FgVn7_HFYfh&Ek2ta0(w zd;@LN!}_=PZ6^kGpAzJ2`bz)Q zCj8^KZ{Ji9zETAGyY98VX(Y{Ty5A+<2>IwJ%!F_`~<7&u8lX(3C2mwk9gSKKXetA@^5PO!lihTnT>LMG4WCC=0s| zu@PkYb5b75$tmtb#SQ#)SG+zN#a}mEfA$YP?Dd2Y05Mf`8QBF*8dHHIwsB^ z%RL!o`j2~bI&vR%z@44`lYF1#NN6nm!EVdSm)w5aI1|iRyu#8 zFi-APM2W0WO*33wBO^Qjd%1(6Z@3W3wRb=xpjV^2yRBy1Wn#(+QBSTa&@;%Nrry=k zFmO<1=C5bYd3}@Y5KUgubk-n#&v-^(bQ|Wpc*&NjM;C~FGuXIf!?jcVzR9Wow|IG@ z-S`dvaF)mU@PUl?%Tv1K%kc11R^f&gmvvXdudKXcPx@@YZfDGdGfF!*Loe3M7R(#t z_>9MgB!js&`d;X&M?hWpg?oRz!<1szJ+3wOh{9pmjf)iTPDFS!NAy|_;nXyIEX$p* zn&G6kiCue5XEyPEOSm{^Os26_oB`xI+_bV_fATbgGB~T@q$bXo>v$t;h>S&*F!a+{ z=i7IiI;PV1dvbp+} z^Wg1i)SnWN*1lh z2La{q&)5)_PdEc*9Jg}z-y)~;;W~S$xE};)=w{nL;AFY~oDpr5)lK79WM(k^Nexi0 z)u)>Qna;|E;H#WIonkF;V_5?WXS(>JxLFET(J6(Uor~A%ezj;HE&ZCDImT%2d1Ci} z?gmGsy1dqB{j+kw?VFP+wL&XUP&%kk&ye=9Uw*_rQ_isU59J#97eG9qpr9X`#xR)b zb&`}u#S&v+)gWbOCttFG-Q=wrsja0_miCCDuieF=G}I;2gZTyf422bFWf|k~ASitnD4Iazt+hLX%>%{l1PN zu>Q7feR>E4O3r1k&SBw)mGKBw}!Mox`X=pm8!SY988pWCEAK6FSL7CdE zpKPVIhnE@^KdnXR@JYJ;;~mq?|GeRq@)5fkLNoW#CuyDrG=qtx;B8j_eu3|(Ui@-7 z8j74TsjTpYQM~Ha4)9w{kwF}bwMrx*Q2(N+gafWMyuCG51rkWtvz`Dvl$@x8D19MW zO@%jCf_&~-KuLP+=79v(^;)NUl{ug3xKM>B_S()SL^Hq{bV^HfuL!DZv@2T2j*@tm zX2bOwHx3rBsJ ztcRJ(UvDnc?5Q&h{A?E3PvPxPc2hXcopqrjo2W+QgZ9yR-Er8v{E?ja&&AKS4c|zp z&C-L8-EDjIVW3*+A%T=|kJtlInTnwm?a;e2{F7`M82WX$zy?9H4M(}XNcsb5)eP2} z@lUXcnQ4!kzO|A*)uVYAfrk&@Y!FTr!;*fa)+UJN9Zf?W*YHB0~SsQTE5qt0Q!MaP{WbZW3v85qp0} z9Yz*f@*CXZ#FN>E$|bUFP4^=K*^L&(&!%bujPhLGP#LPsSeZ}6HCI36^j1)Kv_9^~ zp!Nz-{N`MLXkaT!l*hpb$w!hu7(a#(!^;y6O#XFw0dGQ>&JV+!J$QX$VvriG%u5eJ z@6R}tTnjgacqMDz*-{%y)sR3Gk_`z$9~`P#!r@ZsD8jN|d)jQwTQY!B>1nJXEg&%< z*7%;8)?d6CMotI*{!r_zbect#F`|O~w^eH<67c@ZW@ z97wZ67Q#~cp)4n2aBcG=lBxblgkXk~7yB*`lF-g7*K&3s5)Gy&9AI`CJaUinB#>mF zkUZSR-&y5m-A`)uL@v`ii9G6&Wz;K(vKh`<_MIb&lkH&1-wSq)X_PC%?`l4Pcj$F> zHB6D~>+gH8L(&q}RXj=HjRBjsY^6IyU7f~ww(J0JrPif8@n3c|rH#_eR|?P6B4ZP_ z9<@&kyad5>Y^i421+EPbKa=jbJ$?myKZ^!ARQ((etQ+)J)OpMZ$j3>l$+ z@{a)mpT?#oYd*$b!Q?Z`m-@vW; zWol|VfPla7mer^7dt9GzU)c#NkeUeNZq_ABqR)xf>ZC&W5V#kr;8&*AFryF<3ZT9= zgK_n|ak70}KC1A;Q4pT22qzZVsbV^(s^;X`zv01E7xVzXH{I8ZY%kR0# z)C%r(aT}NQ__=14(}}v%@%o{g`uXdXbXO{EH%B4|9r2mXZ>B&DKqBIkd;F>=Z@JO8 zQ)S{LIk>n~7QX?2)G8+--sZ5(UUrnM^$?Ftay_-eGaom~%nQNVJ)IU;i*2ds54fqCB%gbk?@7;+2+FS}tu8UTiRw(z}Mxs8cnl{Tom-`Um z6%~>=@;E@+xmAD-dBq(#i)-8Q3Fcz7Gm`Oi(oHhxX4x9D+2r9zwLJTRP2xkAegbX5 zJ$VY;9!{&UoBlg(-;-4T;pTr4W}IEHJEAR<3QB>%p8p@_JcBRNA1i)+35)#t(g%g& zJG7sO-)Fq6_`a-M5A)$FAKn@Kyj*rE9;fzBq*7HD8w#t(TuwjgSOFg~Qd=eph^ON% zEjioln~N4|cOo#SRP(q0FsGAsWqC;kikFf58=B%Cq*>pIa9bfae@Ee(937ed(0K>P zw=#qQJcCMcaH$8j^kKM^ zq7z8HL878jX8bR?wV|}Ou3{jl*V}P(qxZ#qRrKc3e)v&PMlVzF{;Ar5sZg9E^OVJR z(`@XCwBdQ#XoF2%f?W|DIX+H2*2u0-?$)jt3&5IgCu~3Dw46&qnX&pTRvRALh|$u3 z5M7CL{OG9{frW+Po--~yD086HDfFa`OS7f?(t-J7jA2dR9=1xzNW6LjfOqa65f-S594w-;%*R^Uho zynS98Q>F~Mm!oH``2GnQ@;YU>hJ4?Rxg2sG%&XQCKvtsaoAB?D4Y;S$F87|f_?OaGiu-RiAaDRXaU@FV0N0 zSYIwv?O&fs$>WGvtpJKk-T$IICAX1KkHX_KX~8y%_#Eg}deBje#>2PqOq>lTUt%O_ zmu&@Ab%OOmzV|l65_vaw?BkK;DAXW4hCiw!H}|T}`@~4+Uo`)w_I}mDXjr zS`9dx-V9X96zHql~`x)fxd zeh={SA$+zg>J~0HKQw@xUktocK34sZteeK&T%g!oEGt@&`yf(8s+q**rL7CKO8h=T z#YU|}f}KWYK3&kos0x~M?DHF{40jriL4S(%c8{+jcim^8wp9BpBlDMWKPKC@*a;Fr zF_!|EXZNNul23o{p@6v4wG(5MvwW>?Dbv$8K7Mw7-1BzcXY;M*)tX^SgJlHn%~5P6 zqNnfm8I<>s3(0p-q0V7U2Pol4ge5Vij&h!3Ivc<~$yaPg5C5AvU~lur)p`!~H|%RQ zzJz0lBBn84Pe>jmJx#Tr|7=KQ_mB}o4aq_EQVh0-?ZV<{)ebo!zXD|!fgq-v4}@_< zTFm*4Fquf8i=v?Zie`UY`E@}Qd8x9f0~>vDcX?>j8=AAP;nI)3Q#hYRVX6?BNY>9c{tu-r!*C4bUC?c4deVRHI+Wmn0-rGeVZ}VG3Y@@_DtM=g$7N? z<1w{60Ndd^#sUJ#;s6);vZ1X{m6IyFcs{ftp>NgYIW|61)8rL>xz8O&+C{_@rbRbA z^riqZxFjl#dIhCE->AIIiw`sTrB~8Yf7hw}@fIR;lE#0W4*!NQ#K6scxuLUBe)vP) zXl>s{fmF;C84pGu_nQ!l@J)KX-N=SW;i10gv^9ge1a}-G=(DZ6%A2pVI<4osH%jC7 z`0iqYCXD9K&O2{&9PQPjtf2>AG;eoR)voW4h-QM+P&Z70NBH_8`sf-X7Zd=(-}gq~ z`#6aTUyH|o*QEbE9{d z*0~RiQo=c}Qg#(Y{S=VKz8EF%MXIJ3 z-;|f0pDDH19-zVH&?|awEA_!2r$?qE3vuwK(?49KNT{C*k8*BYCCqlUxf@WPvXeMQ zJiu7sjK|zVvbjoKKZpx=6b!( zCi`!vS~sa3jSTW+EC^icveP5=?6t$Fzj$7bI78scwr8;n=ON)i0Ma9+c^se#+FP@` z(-fA3G*jMXy;EuOkd|&Xk@S!&Hd8q!zRl@>GH7=a)vR+$0Y-U-R$|qhQnS1oB~O1z z%(I=l${nh!5EXZ{IG$?)jVpLvCcNOS>(Th#w0osXJ^#;H@PP9v$bfftvo9JQFe8$fBWtoQ%dN@in(oHXo$#VLx7Kc zpm6lkkP;{P9DqvXL++Qzi9^w`7HIVNO}l4cGX_A9AKVs)z_W)M^n^1rGtBG97~;3T zAUL2e@YvhKno&4nrrxu(q$Ex%6yM^yJyX<+Z#Vk+Kf|Uuku?7v82HAC=lPf++xuPe zGx#L!qM$Dn;kyhMIq#z*3tT!G#P#{F;^`?y$bBzA363aeibre+>1KKz3wo>v6Z2@X zoDHy4n7fK+##QzyXfs^UK5&1wn&giLe-vpa>AV>o7*MHxy;(QT=wf5Y7A#{L$jZd@ zddOxWu_v3{uJxPP{cbLzOkg|Jr+M&0!P1fy_BNEms8?pz|3N#l)M{lI%bObaXx|~H z@)Qyr61ve$(F6AY#i4vV0$b{WXb$`fv46MJ2LzW)Gn_JAOZ+m}HOAaT(d7K)zoO45 z)9%kOb<^xN#(kb#0!Ljoy~8omYSS25Q9uw*-QTy)j{8FAS7`2 zTSo-m`@h`cSx=l@)}ydpkz@OX_ut}#t>!BrA}Q7z zOTG{;6zad*LHkxH?^AqJKhJfDb<2NHZKdL55YQ5x?Af@;Q+@!Q1se1+9C4sTUWomi zO-~!%cU|SH>R~`704A*`M^*FKa+!&9s-&SAFZdjUxGvWoi>N+0+`OYLL^4ef<`Vm% zo5ibJzvL0Ys#C39Q0}Qjh=VVSAjNqflt(u#hc{-*Du1UvfBZwCIG>liUL?W+} zKv;5~!WooDVEebcGT@wrrv`IWbEX7Irq;-n$kfkhThyzD4eMP(vqPhmL8Pe*)(vG$ zXOq_pm-X_DUZkhx;C#6JECqBA8VV5c?tN_FTM;mMv6_u8Vk1xU-pE})Ylpk}M%i7) z0UWG37z&o~a;b?QZR}S&W^{~_`2=omLLD4B;}@SQ?FfJ2o(-1Ut@$zZuF%r#iiQql z+nCD$sn@8m6i^qZOkqMj-R1|*LcM${mg{sU(TWLyld!&;hGkZOc=beT?J+$|@u?!q zpRjrDWX&SEg?HbzW(`Fu{x#aG^6|Gj1&a0ZR90#?BV}-kW!Oif_V_=_(LY}PbH74q ztb%fnAz!7;houz-j7&xfOcl}*TQ%bA zn*{dfWw(Eae74WJrwlQ21$&El#!#fjGuaKLpz1aLp!#{<2-dxT;C^6@L%Nkr+K`fK zet$P$3^yc7Law~4Y~{j2OD-#AIcyR=Y^HoH@G+>HF3uj8Wb0mlWvq8Eb20gJGLkf9M<)`(HOvg)JR6=<7_Q=*3L3*RAVme z{&0TCC(qljfXxZO<}AQSv3i+TI<#ysBC4ppXZtvTsU#~7BdG!c32qqtC78RF8y>iI zD|<_~lmC_;Z9a(Fm%1HiM^4Q7kodVITd7DD0>c}h8>04oa#WBN2zpxJv%MJvo7TG7 zRQQY$TL(-sO&KW&h>83ZqY(c5*Or8>#TF{bx6~qQ`|Bj%ZV63T>hWW7V$^5O4R&V| zvy! zNa5i?W>>c`dRl3cmaaf9R=0+spI2a3pGylS-CEh};gsJVw3){#d(Wp26WZSuXc|VYw&D(^yDe@=918 zc(@AM0Q7p|OL_Vp&e|z*dU$j(WoFsS(AOV(J3`S@!Rjjx#jD!m=??{h=<4T<<$Lu& z1q>AJ4L-!pL3+#@(ak*2VGYolwh__}*QZTne}~FWPJ_}hcZ1#(=U`Dr!eiei*s#9H zZ)u7N>-AKuq#bvRA!<${*lR0{p0H8@4>Rq*hiRg^azsn-Ba&F-KqZ+~h8F;hHu)$G zpWo5?N~P8POGrK$^+n=eepO*2y+S730KtA@vuY8SW%@j@_ zijfDfHpL74R=8d8?qYyqM>r<1le?&^=j9?maJYfuKQ1>PVMLoj4y7JX6fcb=%dNK9 zY7b4M5w`FH!+s@2y=5#|TJ#d_ma^9Bc}|Kkn|uNFj+s+@5AcaYl?w)&`Q`=wCO_wH zm5pPa?%QpLH6;E)QbWF{+(WZ~O^Y#_ty%rIZ7LIcBsG)PB*x%K&xiR8k{o!qPO$^u zw=r5At^-=`*T=xUn0agmB}dx+fK=r17<`ZfYVA^!%qv>S^Ytj6seiFg2vTPF4+-Pq zFB|iUEB}mstW;@-8-musF_Mp7AC1CVIo`{k7b?ZRb7PAaPO6A4w#tgTY!wZQ)+jL; zo@(B$G~H|^6f%!E+eOLvY(PmILg#|LtZ`JymOBh#m6_l?62!g2+D|niTw|$eMk#g5 zaRQSHt5bq=jI8jjy^1UBy63VZVL{92qY|X+nMS*ekvk+Pe&X0hxz|F8;*An9L7*}8 zgzuO!-hGFm+JM*&(jp0Rn8r0qMrFC85YU0>KrJ3)O)x$8mY>o_%_YJsr?FR|1~_?f zHzZc<5cp){D-)3Ap?<%q$?0MD%w_RZo||H&J1^w8mDs|t(g5BQU~_pETr(uNu%kl2 zLmwVmKf886yZ;}#2b2H){kudol_(6M|9Z2ty`b{Ug;|%6{&3~&Xl-~{K5LUxYra|W zN*IGP1lV5)_J^YKmpO5_%*XrY=<6-jjyT=G+y;tO3*o;osA7_nNrvsWd`AoTs=Q85 zZ9>lEAv=(`xCHBjq@=>2mW>TVddv&+k&BB9dVYTO&Qg0I6=GUaQ^;k1DjTsn4T96{ zf%C+F)5a6nX1#bB-19>1Mi8`^-%ZOZQ|#e?Q$(&u3wJL1E5aW>$cEsO{s9h=+cruT zD5U&Zg>51dJzMt&6|?80+@^hs{L6VV``|oo7>}D?q(c?#9n>p==%exD?b-SB!-E@Qgw>QlW z%9M-PoyVsX+HILEU{pw^nVz1$7b`XD`%!=wj39fKg)&rs)?449J&`sJB7j*zc9qR} z>e)aKtL|iUlbGcyv<*T3*{GaQtQ)dLRlCd!#InuC<)D^fWg&Pnw$gZWq^tfcglR zz$)2UUnrG`x1h**&i`KdpUaV3Y0a_wpH>ESc0L{G@Kk?fY~J+hHne--;JyxggSe@r zrb8dt(R66OdqU;ciL>98;5T&I2?N$I>#aTm2;V`+CpK^Ul#FQdsA z^7=5^CoVbMcP{IWkI;L9?yOYyV5$=H0DdZaXMadDFYMG>s^uQNROcP2@bltN-o0*8 z5d<4+#alMn=3`N|T=R}P2&wbp6CrvDFq!;10_3<>@Wi|fT&~HUm^Zhv`-4Bwz<)yc z%OhXyt8Ve-DW{fhFocZvLdzlHowh`mVKL$A0ug0mqO?q2Nrm>t%u)P7rtfjPo%^3P zINsoFJK{JoxfyOds@I}Q@#=;|)-Z@%Y+TU|UPsG|-gTY^>8bbusWYd~YI;MOUG|#7 zIcdqFBTUiHqfG*v7u?>MYmff&+ib@(W4#sWDmLn7=-lV#%nX9agE}^ng;zI?A#{?G zAnMlWTt&k$$z{wt*1Goe0nDVEUSR)$Q-SQ6XhbRfU}kkenJ+Qnd+vH?TYhET0ipWh5Ewf_K~iEGCdK^`|S2NXr1B z)6NeP7|Ld@f4Nx;;MzmT(m|xA&_hjo*#I0XU}=#GI?-{%7aRBCW}|;X^OdKz^PFyf zzbo}8MwgQV8LM;Qtk88<>t|eO>?-Kfv;*X4@*dXCP^P-f`!uQBqEQ;@rw%tR%8V*D zNy=~0{`>F5oS5kbgfh_D$w=v_6%-Oh`ITbvZdTZF)Jv1XOY~xHmwZy&ij2P1O~(ek z^Creh8^Z2o)oPPf>%2muc1FJJc*6f+h1OylXvC<^-6F3%CsIRo{ev(PapHcV+m-Ib zTUi3Gync4VgXMZiM!G1D3s2<0efCrzqj0a=@K(K*h(7wM%q%-KSZ4`O3yJt9{}A@h zcH!claeM;-i5Ps5nI7kWA%*5`csIcCb6IlPF^)+r7XR2}JvU=d{m57l>)vVfRxnB- zw9^?&4i=D}C=|;&0y)0d2sHr)?t4uVj{#siJg_WMZROZqZe}I1tcdpxma+G{(-Fwkg&p#@7@vBXx6iOj9UIUFTWi1l4lUD1F5n4e$H$^ zF!k`d7VvQU^xMVybGpm>2;fKGxI4Dpeo`Fzt_gG(k?hg$yDG>&W0{nq86mcq`)_&CFS)4!>kQlto;&7C6b!N7O(n-xcsf6BNmIEfzn{)kU+_sH>jAJ#2y52XH+hu0@G zLF%7*d-hPqbRuin%fBJ~4|pj0(XqGB_SqPhiv^Wk&Dfk&_chJysVU-kv~0MZK#K_I zYIEg)C0b08Y!_oV5s-#t1H}N7=&zSHIahEN>v~6w3&lh*p$COZ=m@P)w7vqx2EM+T z@MZTjd$>eMX&)4KukXbg!xs{AZ7@qa)UxY!LH_oqa@H`kn9+x^kgZ<{5A=P6`wah{ z&7E;1p|sFg;S#h#(@#?7&+>~XETQ(qUaz?44qxsAED$xizVgCVg1G1W7{7TfwMPi5 zt}rgy&pgLcGb6@0NF>fSx+*j(WZ&&F<7K3ZaP-rYURhfb1NC?nn%Cy4$P!5Iv8@{ft*a$ ze%J0E2Avwj@BC$LswbnRKB zaTa=0O@yXM3qWp?30F!E^7MSt)^mA-o%{)8s5h_S)eo^b=EqF&zY>J*n1-%d!!o5~ z5a!lVC97v6asn&j{*s2Fn2Ehy_|sXxiZGY%en_`W!dJ`;$xt~lpk%6;Jf)*^Fha&5k)po<)QME4y${cz{LMC0K!L(;G1PQ0DQI|Jt()e7VUOoX6R zvK=5_c9Y;ql)@jW0|cq6RBYlouYdL|@garhT+%MMaKHu_J}mkgJW69JHx`UmvOQ&2 zbTLrRJb;%&)|vx+7M=|sEaRT#E2C6r{SiGk@$ga`5)`ugMlofh$fI07jpphq zY-@HQ3#E|y0{^+*pC!tI)o57^F=2)VY_bCHgIy$qcbmAap#XxYovU6i=Rt(3d%jZt zbNi@aA=j7Y7|m#fj+W;YlrZE$l#|NFVVPn}-B8qr7gnl6J9F_N`r;_=^?@E@tEDU{ zlxT^L+&20BXynj$mDMOXs?}_ahSlsCiIt38y0x-VeV02u=`jUiAy9HyEg6z6;WM8Y zuWv)1s&7M0W_LvKTL>S4qPveQ_~yTYA{u2j-uH(ss*bZ~-`JOt5{C8+Tz6K@)Jt~6 z2w0KduViu&JpCIu2wy)(ucQ9eQE6=+7IAE&4Vd zc+jiApC0j$m+Q7tiTGfw6XRn#jZv>>Op0caX*$!+a-+*t2L-Y$S~~;`%Gn#Z&yh8{ zi;tM>qc^ugty(SEU9}qy#u%JimtB#kM%fFZs_2av1$tXv*S9t9keIEYn2#zBbKbMz zZIiT6&8BF_U3hsBB_0SBb8kN>AsvCMVyx)rvIx1JNWoRlCwQm5Mssc`=kK=*k$OhU zlf8tDGD;-`Yc`yY7IBUqHtd>^QSa+OwLt1~kLmQ9(&IFI`F3J4NOF=GM5EN@4gcXC z%~3J&3|P0`VWHECFEa6|5eGV&^FQ;eUK!>pj5=s@t)9YcSxZ_Xvmb4mJWVAPimjS z+g@@$W}xIltI>QK>`*)`T}}4y8Pcw3yG|X-6m3C9?r%-ze2QqH)t}c&5?t-*5I9z}^jzfC~kP#Rtrel>k+;wZ|f?hE-8LJc)7EFa_<$ zYuH(e50}y0KMK`bohgj)#Gx+!lEH^M}H2d&Qr}#o0;I-hZeq zK~#mxo0=Bz7rHkVNv7qurD|+PS^TGkj?0OdnQGqyg2g&D^dGx!%NE*Fp{lKeUD17k&EMvjo8}myc$~7ENC?V&&QX*x~GX%HRt z4sQIY4E@0Tp+K5_Zd!G2!s7-*$L+fH{r0wN4CZID){z04Q^0=X^7GQm) z!h60Sa=Y8iSS#PlG=p9xzhedHn{q7kSiS*Zyj2I0j8W6vabRMymR3KKmO4+`rc4j3 zTe=Lg)V*>9{QT8~@fj;@spF?MT^k=IMC>2XK0(XJ8zaTy^UrtR2Y*1B_gbGL#R0lk z8x>|^(6ft{M6oki*^PLs`BZ5dx{@M@qSE@)b>q_Brkbc*cXGojiTEMhs~h9_x6mWL zJ=-~=Fq@r}m@y7U--R|K#WJhK%?CBk-#STnM#JEZoB0vU>j;vp zb72}2YnQ9p{`_hQX}P-cXX?9YSsdHXBkT=boNP}VA(R|nk_@cbr98CeBu@}jCyo6k zH`ZUBZ%T%;#8Zg2gOWiY?r6lYIL-JSkY)ki?JK~rebP`qxNI=&_jl~4&+5}m`TU!$ z3EtBD+C!a9}g2;EH)*D=y?2{O((3WL7dLp$#JGQ>O&}T_cvkp)p_<8M6`W)|Y`GQu~&42-WTV$?M9> z$0S1^u}kQnaX}=$bo@WvSj2$8khsmRhASWhy8+MR_{}Xu^~*$JpCD@Ndc~+Haw0vv zSg23y#7{Y@`w0kFKUZUTTF}2i9IH~(j)b97^+&dSb6$vDYa{mS>hpk#zT){XsAz@JlZ zIQDalvB6kaQj#Rp{1%u_;fe!DvQZp1OHUAe!+nwfL)B5Y?x!fe{nbz-<;wIPf=T`z z5h+{)(KM1SqsbluXaz(hU8v2V9mpFe;l(?K%L%W3Z<;}meC^+}MH%yTD0W$Y5ExN! zn9funs-~HNw5td5SigIq?{1JWE%*CI%1Sq)9E_4$il~(Rkk{S<3I>ii zv~>&x)#fj(SI)A|&2cRCl5MhDUmSj&ks&o?dQz_$Gws&<)y!%-7HCsQyMi=SRCtEO z=fyz3B$P%$+slO^cQ-YD-W8y=)xR|e-~NFHX)nS?$MsYbMoWw`DQwLfZRfN zR*3=4=()B!YeNX=kn1t|?EQA_@i-%#m>!TJe}DD2F$)FB{C7BdkpYw;hG1DS+|$^` zAIwQxiJ+P#M~hC@nlTd&LpyU&!e`sR)gf<>8*DYMz*kdGfW8B#-a)T8Rd^g{Abj#Q z$`*-Hsp5X%b2c~O^_msgEJ=5~dswpUt~c5;5*gsp3JoU0=xT^-*+ey1E$O3Dp^d?n z1~hExiaBu++x#h!70lJq{zbx%acGI3qW4e(LUm@{gVRbk8xF40-u!UK!9un9#)z|q z)o9qECp5Z>p)@&`eso1p{aEihp4YWojirjEgEVFzBkMS zbO`9+JhTyBm46Z0Lv5QFjlV=q;}Hww5|71x{^X~Y#p$w#34APTJ_HRT57_C1o{yn zVNh?A?%wVPkXc~(aM76o5tH`UE7J|Dmaz{7(;_DyOYrX3$bfn9u%LBcptZ!M*rUKdvJ|zh zg+L8q)i6wegr!GP8z1RE zK#aqLhHM)%TvTkjHf(pOYRGI&+JQ8GvNDDOWM6HJY0Srx7}-!G9^@2eHj1W{Y2LT6 zY)lU$+4$DPI0lcJLQVPO_SNR2D&849tIQflzT*VcIfJk3v=+Zktko`~w0~XHgXzK& z9>+0u-*Wy+p}osR1ujx1MvdY1yHaRD&hFo%JLrVmDIJyKzyjx6g^`gP`L27Z_fDe= z5xADI)M&P*{|LtRJR|sJM`12Vv^Trl=q2ckc!aKW=bHG1BKK^vyut~r8Y=#(iy8&% zSNnC>eIdDZf#?j^(eG$kjNKr(A|c^buhbaE4uk0dK5W$vTQ6lq{a(qvLE`afwk+=_ zLbQ{!bpH5d%?@`O(VYKSl_KV0LikCaB7l?aUJ4lYdYRJ?Eq?8!V>lGJ(d1?_mPkel zX*tJNPBpE?2*@<*gte+Ll}pOz$T$8hln+HrGk$H0pSw51P-l}!(~8`$YD6pVrUtAm6o zL-=4Hg0C(0BPE;VCtm`+6+|RrN`KbLVX19r-1@!@;O$e1JhDi5y~xao`1Bqv0;&Hq zQ0^}R^S{XgbEwH;%+I4=J#hQljzpeZh;0GYYh&0@ zeA7DBYJvW7%UQ$Jx?mQ?xIx?=^KzH)!1|T*IODkR;ee(u9@w}*oz^WO|Km8@q&FjuE-1?!(}!Z z3#k6x*0f{_x~(#T?Z$V+ULKt^TU^V;vQ7+E#woRiANaTITFv&KSnO#>`A&BKKA3s; zI`ru2E!Nv$uxr&H$`y4#G!Xu;!VcyAe`xM+l*tD9T~w!op|inLEipo?0(S!3g1a5Dv4PL_*2aGzm$HtWDLG3)Dd?X`%_b4H#w^*PBM$U526UQ*`^| zyIc5pfRrDOtfxBKkUu zTQ%EfWhot7p&j%~9#bsU>Zoh!jaW#`TX(*Pb0ATi zz*I$;;ZWy7NTr+K61*D<>t=ngmR+IX2~S`qmFKS``XQIK!948Wr&we?NqQq>>;CZ4 zT)KSI0xhY3)}I?tJXxwe+*7A^H$SVEc3aNmHvjs)qpu{*MU&IeT@~89N0H@K**|i1QcjvOgoF_l* z5rHK

;H2wI^vDBW-l~1BNXg(y<&JbrY#>VxvuxN9+5Y%FB*&- zTnF}TCHfj|w znkR5&U>CibZ(B!oyXs=0m}CTpb*(3bI|ioZXk!TCPOgdj2EiR7gJVCUmR&OyeZAj~ zN!cb|WXIzKIG$zR;LeiYFmlLkEg+O@FWD#{!4q_-o24X{BCSA3M(8Aa(MHpx1S`Tw zwa?VG=RWBkebESzB@drg+XHX9#}3=Xki`(~L}9U_ZWrDU5}M@S3X*SGo~=`l%i7E; z7Vc8M(hNQh_IMLNxguKn&z2Lhg~WYwGE^dK;e3Lh!D5Qy7lg^tw*OQW6zGt7G)sKW0n_PwjgF9S37JI#+fW8wb49Uo_fEBO%^JiP^-SozXR~tPO-&LwYdVyGD zgpdm;Fla71ec>J%6m%7w>BJ{? z{HLcidCb>(C*7=^R`QT=6ZPyj59gG09(~X7-e+}Vo&{aQ#a`#cH-zo%VwGVACm}nF z0%kWqv^J;B_ZjUwGMyZ@EN@+aa3c@wZmU^dw`iOmDScK(qVAFMPD340N3C!toEGey z!zrX|W!wur$LS9X-|fmPGYxC5|cn%aep>gIAv`U;x zs9RW+=j+u-)?0WpNyjz+fNSFdW7AE5i!3%1cyqjyVZ16wPTF|8N^#{a12~zicjcJK ziP7Yqv3&}u|L?`_%K)_Q@J^@QFkXnH)u+$4`dIB4?67X^+&t!s(gG^Vq&VXMH^puT zqrK+bV6m`Dnd)4+CzjXY*RP8bN!P4oZoo8x0vq@OJi$ikKl|wHOyY605G~tChnI7T zER)-_qozPi_q6M%mx*>Np~OQCQ@3FTqi!B+2UpCk{h^ONb4I#8lN+}cY}E5G*Q-_T zHo_io_}YJ-c%~iWSJ}wlFPgDyuQ0hpX?H2y2ZoC3`(TA?O8+`PoZSuepRE?tP0!V; z@1G|=P48a3yi}WyCkQeQ`ay(O_symxS;wtL;Z2?G>1Rb~hH6ZQXqQ{9`LaBPjQCK& zac}1l(xfp{`={O4Zv0zAg17H1!au8!(s3<`YEgf!{=8Mj85iGJ(K)?byHZqHA_GKp zxx#f6cAG0j2xfP~phX;~WgNyuRIB?#9`XbNHAz*tzG?F76{`(2$oEkJqoJ#PsS6as z2e?#qLAVtoYzf4kn~LhM0?WIi-kK?NEb!91hYe}}(IMvYR5nPJkdILw8H4^Vs5Tb%;YomxIc!&Y z_)>r01gFn}7dK9J;0`Jl-5>VQfhuA!E1|b)X1u8zMCN?z2j!v6cJKMwuG-VLC1Rf_ zPa;7-p=DbKJ4aM^Dq58;Gs@=_$)o~L)@F1!y%0eqX~Kw_N^njypDKvEo;l);>w|c} zsXBeqAr~j_m)6nB4EW|%+Ruj&R~!GT{dc>~?C#%fhZ-YZTvnlN_GIh3dXAO{Z3~j)h|0nakamLac99lZh~e#jh-+?~4kuGKWJ;NJ z?{KxXwrOhT^L_EBvFZMXfv~S_&sLG2EQ9r;9W8%$caeV!+rIjnkyLkQ-uUgWm*>NG zjKZDi#8wdKK*M(k+WOWQKiGbGkd1SP*=Is&2?bc@0F@b!*G~Mi?FJkur|< z>ZKo0)?xrjm2_@|J#wfzRa~KNt3c`WGQsRNFl4$cwycV&+3>g zALEDPmGoGnXk7-XoS>`|_tF{=rN4J@m%%M6>5@YQ$6kGi!Ho<7h=#YBCSnjss2*xO zyX^+>d_1E&MBB7;YK|%5o3?V_=@sj3*v755ZCK3;vuQYZvA%mvvV9Af|I_(+q=pWo zJazshhj-hgch-hGO2Ge-1nmjhEb1OTXSDrk8L#2@?0g;zb#A_amRF7~Fm(dYfY|no7icJAV<`j_uY2!pJmsacJmv39mm{wZ zpO;o}yxUTm-0r`ov1K>AuLa)IZ>Ha7JCoemvyf;UOYiwiY?%01{CC1A@R@|YIgnS{^@VPxi2bTkxClx2e+d|AalhkYVfk5@lnrVh9`Z| zQ*~7c%-igKoD79x4;OSD=#k{x0S36Y@k343V?w**)E6z*+aZ0wTv{N^dy@JsF4!v&iU|JY;}dJUqtTWt6Ue||jv{dn>?v}p2D17r+qXmD7S9)4vtKVAfnFk``^CJ%BO z&_<+=^_G_ZRJF4D_1{Y9S>~~i{9)GG72|sI1>QL-f!#CU3>x{?i1YcG4a~*lJRDd^ zObq1A72H2^p=U4?KOnDvoUS$>!~jU3B(J`BJgfd!>Hkl?Rs@`S zAWVxJ>$CGeul%2v8#e~|wK9*F1*G5ykI(UEe?+$rGrpG%^cJbUrO7_C+MF$T_Hduf zdA@xoa#R6o%y`l8aeF5m{b;AnkD>=u!lBd1>cgTy*ITT}u z&KDhbueQbSsu2rtcUYQzwFyy?M`p}fttBIs-w$eAU)XC~st-anZ{`Z3yBidmz0`Qfda8XeHRAGt)rL^&-b$iUgxT=`wvhpd{Iz4VG$#OevCL zve6nt$&v>)=L26g{>;%3Sc7GBDI3$lUqQN%a1|vGQp0|PnxC0EJ`nv-$+rcT5h3(K zc~~ROsEd-r*n%KqoIWm81uM2sYsUK=$4XJd$6%2Ql4`eYdyF!lEs?ZXBI=9=o5#KM z6jAZ>EN^0vN;-e8`wU!PM45D~rg!|bORg+i=<1YXLjKs-_n~tB+KIrwgQtX2M^cK@>(#(dkj9k@nRf?KS61OVN5C&Dp>GqV!gei>fK)+FY?BhmG@mM4 zHTYyr8urT_>!+~aL)3swpZmagVeH`0m#?6udbPaB0Y${lV6-Z*m+eVu zGE%=G-QP{v=Zj?J<&#L!N}K36oDE;Eh8m@QG2^AE$>9XH%Cnxv%@uGb^GD#g+4d3j zz>^fdAD4Gs^L_fv5!0JfWcrJ%mzlCtf2mS?-vd1kw_r`Y-`3J!m`_7BIy@PVnQ3re zKqWr#{wN89`YXfwv^W>4Plb}mtRn@)oV8Sw;Ok2PCDcVDRp0mr!giHur2aaP{tuiT zG2bD#mzl_m2TP-LkV_6}2}y3(@9@+YKLv~kBYq`H&ive{tmP2O1C`G%wmu7dyWD#A zG`bx?+#l(m^ezFQsoRro<^9>0JCR=C$ixYmu3U;6A$UqKApwq>6rQ4XZf5+DG(kK; zL=NFzm?V`yC4;5fB&+RMm6&OIo#8A$wxDX zCDxc&shgPs2xyowDN)}Z<*#o9v9eZMESmwupGT*ebqe!``4n@bBZ|r@#a&$=($n?0 zi$J)79p=w6*jSntpx876=)+Eyt3 z5*Tt9qO!%a@~5$=8yoc#Itw!Doq*Y^L)6X7!@Yj;7W)wuicfa)P5G2+R)Q(!!weGeckwmVzIPwVvNx3zR_ z&wrPyLg$bWtZ^H!XZ`PCG6dQhjIS9Bc}pEChV;&%?A|v#o=3@FHxBoE2b)dD6V*M0 z#q(ftl-TQPYMI7N5E>Co0uZFKujicQzv z^D+7*6THnX#HA(E5~ogJCz|LTu&!Tbi50sESN5(}hY8pv^gRfiW}bYQk|%noe#LJ= z^DPS0=|KHagJR88q@2-VndUMrlMnl85E?3lb}>nDuIIor&GdH+&n6CT6B`lpBC8`+ zGM%%&vaZT2Pt_9q2fJt9{2{cgdgb)8dh7fBM&SZvu;W|)#`=D!5ogtU2`qTE2=wLG zaY?q6eCltT=XE{8?VY|DcQ+qbg-F$d3D4}N&w@MwRU_Z2qI5#Vc}-tioAQuUb0y~b zavagfw3?2w`D+IXOB}}Gfu$`%KZWpNyhWz51#6dfd1ouc%2GfSV!G#rq{X{#sHuds zms9x-rn$6f-8sH8CTK}8>^3$tqMzR)b+^F7U;7$c4}p{rxzr{05Rro(Y^&6DlrO#E zUE#SM0V=`5^=N6j|rGbUk#I8Op;u@rA#fbXD+qWxFkk@yHW{??dAo z(|IK|!Mu>__0-Vrr*jlzD)|Yq#f54kHtQ>Lc<7he#J=5>!(}6aX5=YQ-iRO6+};Cb znzWau>RG<3T(}DVtM6EVbKWZ{oy!OLg%iRRcjH-@@FH&iPvv4OuhZ~3ul<~^r^~7s zOv2(vi=bn$&7dlb3hY=d!lQA89h2PJ?^wxPz%~{bP$O{_Np^A>r&Usj z&%N=ir+0{fKeHbla8&Kl)nme)cxNK8>!DFE2flo&PI4Mfn(=$I>&B78SYhAS?v@Gq z$dKkO;ea}o#|1YHiDatHyXlPn5V?`Hqrn8%q*pl{?~l5ILB zFh2{DeM&{~_xLV>uYrRQ!}jiYkU}sujx(|EiH@+hh`uFz-9-1Aht&EBjx#E^O5%6`ohV?@!}RQLZAlZ)%@N4Bq3wHjVr3<_C-9z)|LQ{iU5#_? ze&P=6ceh6T-Oa|qkN$VNMNZF;*GfJYZ~aHiwQnd4S`U0|gB&dSo>=xwwTo6b3K{n-Tud|!=^usO!{hh%tkU=_ zVk8(i|K-YHcmnH56fJGdhOcZ7*JCB7ZJGdE{izP^Fvub0H3EI%?3;i};7D`nE64MGcP;@^^uB)YU^bCUJdVuMSEFWK{`6XyEIhPd>6gh*s;&+ z5yto{E38#(17w6`4>-%P!%htTLCn~!d4r5J2S`d9q zmqE6q6H)I8yOcnUZy!H%4o9&S=*PFRrs(_)bRI0&?g<(1)eocB8l7o5JtLATREq9sSU^8^aF98`AHvhy?ik<`Lwd$#=K zyEwt+a~*1KJz($eaU1#qk2A|-z4iL)B`&TVE?+~7j=K6nNg69EHQaBg;C&5q>7wXk zlh{3z8KrkU_>AsikDP=GfJE@8tx5M3`q_|Qef#!6;TLDvFN>)mk*}zfIEY z%^!!rxwk@VUD^4jg?p+-p#RuE6!FvzeJ<$ch2d2z2)|6>E6H_w$ES&_OvU&Y>lpS| ztu$U|KRW>%VKC)7+DVRy=Ec&OuW`4frH~qkmf|%0d6tN_BtVuPA{Nyt29YwA$KAR&pg$EOuZtEZ&LRImtwhLH%g8D1e^nDCj6Bwrd!NU;9(Ka(`!#&bpRThTu^SM<(co z+2j`JQ-T+ZsfaD6gaKQ8AyGT5E;~jk@hpwOd?K%TBP+?1m(#vTmgp#@F2vmFn{i=n zfWDKA8`=fY=1yd{B4p51jtnAeCYKQ)jpRo2lDk>c|4!{l>PEeU0OhW08EBX5G5SUx z4COZcqXazJi5H_Qp*L0|NOp% z;Zjn3Nf!&#A6MJ+?YVjN5wRSqpKa=hJ-XJw%}@j@{8%m?M{Jv^@IgY5TFruAVpcR8 z9LNffFf|aNmlFSx0WxMwDff|g#ze@Y&G1vq<+)t7#N6g`c1Lj>D`TDr; z1YHE%+a$2HA*@hIvk%LCkp%-16Yt(z*zrU#RRr!7#$BMFOAz^s?6PbP9;6E7(3-W$d&$&6aa&%De8gFPftN08E( zXDT2&n4#;zsMUCCEFgl*40_8HA_{KHf*+xn4qn#Q-XfBEG`UJ#<&aQ(o0v)garK?{@w}b?7MBC9gRO>aTnp?Y@`K3Q z7e-}a{3O{Df^!dEK9QLeiy;jZ>WitGJ3aZF5kr**=19%;k>}* zVo`CY$&*7EK`-=8O1}a^yz#JKdd>qu@9DejA>`!So8%4FlLdlgCKi!P>Os z++^`>J6xB3^X-6;W`_1zny5V5u=#O3bZIL}d~dH_s-?s~rkUn0FZ19}cFn~dfs7g8i_tEzgS8Zi z2X6n#kQy7KfH$Ochok3?1jPhxxqVP>Q{+RUh5_Xmko7Q@({|+4*-h)U;?n`e#_c|@ z+1DP)xg<)qW&mzEIwr_SeWapN*&oKTz{4U}$1FQo*G*~+>9S=-EjuhhWG;v-0Cl;`BoAL?%#CFJ)b|P} z5;jBFX?DG0>B-70<5OcX5a~@F*PL9I)c-p>WuwKH7iqt2gmG$|(qHQxTZb^A*EdbT zHqg}m_9yfajUImS7s2>=X-T-Iz+!{hY8WHv#JDCSQf~fQ=I-rn+h{yg{%(S)o_Tc`hLVD4m!!n>|DoV;O^*BRudY6&Tv9D$b z5%UZ*)~em};_z2&Xx2=DzArk7Q7x_Y?gc@z;@LWQjaSRF{`D5p2^B(2b2?I>1f}%GC}M0oh<$joLNd{$~svT zkuO>l!}=fla$~nBJ2^4&4I@Xj*rEB;!|ho=bM`x0ju5?LC)w>F0EvIsI~2z(B=HEuV_mHHAMCRD*fs#rXaVAA8d2YYF6whH zb?>rJe4pW%rGtm{>eU8G+fB&4$c&LFd3FI!^NfXEn+a8U7pcEWG-jj-?sjooOwZF&pv2m9EbdAL*%aGX2|KD%_ z^1piRBg`cCp}#8D#oA&liYYVVU5Crb7=fZvZ zaAp@}D^|8_NER<2T*;@LXI8fyB*?Z=``5L2}jCt%jV>aP4Ij#CyAJxRs z9EPF%pysJHvTTU#*X$fF8S&D=4lzcWwH@FM=WPi~TV}e!kmg&Eh}1GwI=%UXT)%bw zNODpXO_Gjvc1q&fBSA}vqArQ1ZVI5o{5~5fEBE9VDzf)0fz*D}*P|-+G&* zgLj{!8oL-okm@bzwM{i?!}dDFTv5;%lB^jr6!(RLD$?p*jWJga4ZeXM$Lqgec#(V^ z*R24{T^MO*Bk2(_)rjFoSZQ~?JISoL++^Dyd8xMOe;o}Mv5V23E}bikAyY5U5;oCB z6!P_`>WO$iBz%QHm+$X_FLZ%4!S@{z(iG=-yd>^oFMB~wRfyDcYv}s8gU!K{4e5eo z)<4kg*is4|4JnFrko!avzlX|rCILR5Ddm|l&}DV{QNRm5-o=L6LkcD#3Egj)X`tjF zbHbXO!@?#mmvblg?HG{m*a3xN-F(aZTA9`)8@!UK%!bBUjzJxxq(B1t0?J z@j4$h* z#{Eq=XV(mz1xu?uB^pnR#d}L71+S;Df3DQ>R@JK^BczpgkfL96EQ$ax7Wqk8Z+8p_ z%mbo5Q^@2^r@;(A37ThTw3;Sdq%^|jhJ)4n=D%;Es2OruDPF5@z_vh=N$AY5F%5bGxY-SJ9~^d7$~3ZYgS@ z5YLD94V*9yqrJQq3ylzT&;xp_0E& zt;y80jjqeW@qj($`9f?_!NZZqNc*!`Jh5q}YE0s%{*(Plg<-2-{6Ahink@tqiU4eK zmdQ_v83CD-tRIQ)KAsti&W{~ghT%dpv${CH4PGStG)?<0W@MAy%@l(vMNi)wy16F+ zuw=&QXy4K$%2M9@;%|pC55!08o=q=0o-Hn&Z>-8|^%c8vDfxHj1^}9S{Tf51RG0!* zYlw8c?90P(U~%?3Nq30{0t&fmzqycOUuW{1rrYHPRp{LzgJwg!AmGR??RbwqXi6Cm zlNORz-t$OE;YpH!*x|MHDup2J>sboQH0xI+a`{5sYn%1=XgvBL>{`Rq@IqoM$o zw{k%Q0C|vZ;LBjA?df&nGsd6jAYEcSTFbRr(&C19zmL$LdGq;e3dyAQ%$hO3k-bIqHM9Eb-Izqjq=MGJYeyDGIomunN7YG&_N*o=G7NQ8c2cq3X%O#SJfX@b;deP4tg__fOqI&nt)ezl!J$)7&!&?!qgBG`c!8!Tm?C0s9q`Y zA^WrXo-D4-P}s!4WO|r$3^_tm?6izO?aw@(0mkY=v!uY`X(kmCWRfzVTES0Zix(nz z2-RL7x?0FbI~33YAFF`OO*l}NT%|K(ij^oJKO2^Z@FU)j8r?|AJyA@j;)pznUYBtA z>z{L>D)>_!kCD&Y=(5j2pKBpE(+R~`hy)}~TqJ&R8iq5Gfq zSn%)m(H>XCw=Q0NlWGp(;KMRBe0+`4{dp*a4rr^Lrgh6e8tZz;X6gCZXBKqxd3t@X zQw7Q`Vx7B$FE2Ch%e~MqA14>^wxL*=rhA8^ClaW>yX2AlpBX#Gqzn;KLys7{-kfKv zbln=Iug8){EqY`CeBgsI!EkZ7Mchh1%`$0DujP&gF-}3gO z8ntBK_THL#1au%kTQf}26Lwf>KSD-ECj44!`O)ikGv&ErE^*N#=&X^S%@BJ9{RBWA zEz*vZ@(=m_$4cK}aP$@o!! z==$Wsp-AwxEfAckZdWSfDU$sV7*6O1gc3%pBtPu6+r56{G5r4FH1QC8VE6Vs_gn8Nk1tvCir6`}fHEMO&PO`~ zU0v&6fGmOV)v{~cBxcP1alGvgrI9em^4ucx-;#fY=&jwnt?;{KD=97>D~&x;ZrZNK z1IU)FIkxU%%e!tNmLhQ))!d#~X|F9N|4T#Va)peu5mGQ&+H- zc3IbOI^WZ8L)Uv_2b)~?&44H^&hnw&>9l^2a7OPB`Y?aOvBVJ-A(!W7w(^Fx{A7-= zBl7Hr)FdSC<^F^J140EN5>cA}n_VBlOcK%JH@NfLFoVynkFBP6vCUd;Q0wVFx>c8A4oNpfon7 zP<;CCP#cR*-_YT8E;7EFhF384lfmQYsST}c;dY|3$Us#1CIWV7nryG_blnvTU1(UT z>l3i2n40E6W=I*O7H`=$_2)eH&j1E(t-|Z8IO#uxf%JnlL7nhzLq8#|cy7Xi$ zmcY5;O+&-##ePK?{~h*4ky~Enf`ED0&**#KH>zYcV4evCCS?*dxJr|ka4)0B7gBf6 z&Y>r+L_^zKlfQ9t^JY%Oy5-Mp%-7OQJgx*!HQVHmp5A6gA4`JYBye{_KTdVB`*o1E zsT(#D?Xx9(m!xdRxv}Np)XH6cF9=h>?_<}XG+dMsfx0t-!9Tu5rmY7$EK^_WlH|ar zI|SGJqK`onuAIWb+a?)NZ$b0dKi^wjVom4CXC>w}AH}sg|Ln^J>o~c{(!-fwAqeO! z#*Kb|t8|9#jvFD`d7y(lKIc{Juo)YwPs~gU$pqL_$GK|x7L@ziDVt+tgF7NcD_9mQ zSj;&U*F6CAbS{DM`6%QJfBDXLMsn1QHMze2I}8Om^LwaNuww8ylj~o2v$TX8alU)O z_7(#{Ox?Fe5wrQdwP)Y|JbM!MrhRuH>2TL|zdrt4#BZ_k+-dN9Eapi5hXL=%&`{6vhN52zSS`@7%4MK<_PQ%~6O{g@1y#YJ@ zf>~qz-rURU8n3>oocdGQ83{a~K55w}how{`26_|kG`9+f4>M8IqXQ&FQ9;h#kDw-$ z2e|f&nxYb19@PsA2yM;k&R-~ntpL{DaAaMv5+kRSKxjZ8b}n=E8uzptKVQsin@(X> z6cek0OC81H%gkDJAs$gx+^*ib(R8|fk|l=ol!~NU*9u83i~_bbPb8aIxMKCI{@&2f zN+_@SlHD96tI;t@LC3+xk6m!bk%Rgn57L(|NV>VD9Ah}XJbb$TIb4z&DC>dQCjqC` z5qOu}-Pkg4+K9klI>zIbTg3t7J&P8l80pY)DHo{>U5;|Zy4!c*z~OOz|D<{DoC-5BE~DPB=bH&<1D2xCJo4tQj! z&PSM0S+y|u+fM@su37S?ZT(1G5sioa@grmA+Sei|-8{ zc$^s`o|PTt8@*x^lC!Thv>&nm=VQ@v>q7==(ihMPLv=AB5aG`x&@(ojgC8 zT>ziElBjM|K6TMQ2a?{UG$j^4i^LOL&Losv!iyc%9;cWzO=H#s7GzDB;UC@i+Pust z0iKF z(AIhDV2uxW1f7%Rho`xCC2dHTPbLe077U@IH~pVU*mNEeU(I zAr=y{dOc$09Vlmboy^6CeyA?7JeXUHT6(6J9KY%s#CJ2p8gN{?XKOn%rhYY`pJo

F;URHaowyve~sTibkOV^p>CS}T)l!~D;l!^uAn`tR#9B8c3MtpBq4*+#Y z;X1&@gqG*C&KHxB$?!ZSRNb&6zM!nx=~2WbHi)rK%kl0B+PdLI z$G6JlnW;II9t=>jS48(G4^J=+n${y2feClUIY0vao*LG5j%V33lQo9A%|noIn@^^{ zatxy7(;VYGJe3p+xEf>+)vKxNXw`gSt|^j3;j)Nv8e$y*A2Z}O(XbDwqkc(&9en6i zHVB{8bb(TOk3CVuG>R=7W|(>$WAPW5*Qpe%t=>I2Lnlb~1g=uB(oHR8Y)peBSWGOq zdPD;S6~(wwZE0rH=V@Fh0$fF7tKbGn*wdO(J*&}*FHz%5vv+?QwI4;tU zqii$z`)b(EGWfWsZcFTzqxMp#22x^6D#7jMz_Sn#X3sTZo~>8$?+Q!}+3FDUzUuRT z+V+3@G0x3CJoM;KDr>&~KW1q5$&V-FJ+ka|F#~}Q;v2#zQ(A^eKm@>#ZkpU=qtPdF zGt{H6Y5Ui81sbB{)cbT^hxz$slYgu0{&WJsfm&eyS~v9A)&Kul_4xm*RbLf;`{LGr z0mpuUNyVzl6Ii&iuuF3ow62lcJkCzkJY6pCeilt8I-eP>9+eUYJ)}22rtf49>4TOW zoa=C&<&NZR4^+1JT_!xx=S2#r+{G9t1dILg>Kx6xKh2KTtXkP;sdc_-V~h&dTwCdf zzI=iC8DyR5Hb0s7RAu~8V{re%a=0g-%u_*E<{4C-F%$z^&tKaZOEf+k2TC;gO4*5I zzq6C1DBQs$h_6l`{2JelRwSx=5{v`QNX#P%C1xODw!(s1HRV^|3h&91&fr`7E zzbgZMHZ_gtVi>;=)Hdoi<*N!nrr8A9k#DDlWX&!IM2s%`7wli$Unvt>%M%gzIAxbu}`1CY`BH( zkJ{*Yb5i~rqDq-5;eM7dI!byyO+m<~1{a_|O`%K~&B^8h#{1q;lI-<~@l)cVYI*Z< z`o*;yCzLE+lFw#P;M}?9JL)%QbPGeSL~MB<(!46MV6m#mMIW#EhKU6w#i?Gi*{jlU zyofrgC9d!o|IzGK^WLe8lWc=62|48I=Suky(%%F77n_$TwVwh zQ^TeKfR#QliW$AlMAY(asdDwpelC%9*|7T}XW=Kg0r`CN!K&3$C-$iBSLr^vb%Vz$ zA$Fhg6O~=r#pZ=0kHud-i=)Q{Ld{ax*y}k*$_oKz3A5( zV*qn3mM$~nJt18LJXfk1@sumQEj<4Db{7w^qop@Ie4ttJV1?ypeyI*a;v-FBjW1?+ z_{GMjY%888p1k4xsoe0-?lZLx{Gm+%;XPPk(B`;ij~6|BGr>$2;V+g&&el6_vcYoU zijDY^Ld3{iqX3GiRke`QDKcUPA;-60eS>89pina0f-= z9NBbyLCYNYVOgR?urly@gD6EYWzDIP;88D<6d+g8L2Uo5on3!Tm=U$$@O5bvt>1xo z?*BY>GBXLKq{=ErjC!=&g!b}f9)mj?K=M|az4O?R$e=P*(CfJ?tfe@ce*2#IsxZ*c z^^>rsQf;g%gm4eX~-9+=Dt)Vw#sUit#^Wj2kloEawKLMF)2VVZuvQqV+@IUz$9~;s_esr0*pNczj5e`-qlKjZ^8-JOA5-GrI+pFq`7M8Z zWC4Ky*b#Q727a_`gGPL059EJ6$YC$y;OOYcB?v~|2aZ~uM8 ztgUOEF8t8hlUFJ{`(wVUjq6IrP#&s+6EYn7l_pxDb^t8eVwzm)f8&?d#;eB5&Ba5= z-v6oNhTl)5?T@~3iL33Z)Nfbgv=2Z@8o57g>SW;+xSf*dP$ayXcj)7Z%Fd3ikH5gA z>D4f2@yy${o+k2kN;95jn|D5fxQ@c;w$egv$Yo<%e6{Nj)8EeNB9=55W{BXd_2uk$ z6F=^cpHJ&N6WYGMH=o55Z?YR3wW=}okM&&lU&;3G)VnBZs@-`mQ;NE46NW{SZGVnU zjlz!q$~Q2-&%yY@3738@9X==&eHVoIWk)7Yg!>);arYri_(w@{)%VdAAwDJgqlA{B z8wVFb6A8XYCj;ks2e?QUk@*zFbfo*o6b zZDE3zKpywYF3M2XOrppp)G>R*(si$GdZvwdb*-S=!*IQbKe82p0*n@2QBL;*m(^=e z7{H8|i>ICPPn%&X3&a+ zVJGT?BdVixFh3EhbB)a79;lxg2Of|{I#Ck+*d2?*`zPMdL=DuIu8PrmYdz98`tD^8 zy+!wYjYi{G=0pUg`B>mi`af-c@Tp`OG^ii7BiQGDXC;j-wvHvKs6%@63AO`QXCBX$ zcxGt2b&=#3>m!cG7`7^?!xNAtnKKe(qvQ8FilD0f; zLwl=if9K1v`G*|;^lo)-lbVV|9}bu^bEa3?(zqdApzkmnUZnh-pB&}c^5kE%g|@~| z4!kD-$l4KUKdJj;TJiaIl|ZcM(iUjo5MhMzk%gNKBx3U5TKoDeOGTr!0}*hA_`Z~D zFWx3$;?80s0PlF!E&MiTqcT|Z9^T!0lZ(Bi#|Wly_m?;Z-!e77k&T?{c#(@1suciMW^?NWS&Rf*T^u-*Xs?J9a zQF15rj#AT(j*e=ZIo@Hn^Lxazfk2KkU(;OWlR38;gN!AQgT0r)^&-W(#Qg!^uvJn* z!n!{VV9x6sJ;1mNaFfsb4nl^|dP`l~9uMuO{CD_z{QXX&4Eq3v(`FBa{byKYGh({z z>)_hosHtq6+p(M6*8*e*(yLd8J?1`K1{B!>Pb0j*sS5fNCpnuhkLRn_Lrr~q2t+Lt zUNgv9qPIBr19Z?5G(Pt&S%HoaFTU>79_~vnri)Gyre$cZd;5k1rg(9 zNmxiRVOIL!W03E04t_ zuLN9NQcbFK457`06(q08jOP{4H&s_Y%;*aoh$mOkyYJ_HxE61^o7P#+P8a)A1Z;8+ zh~>+>&vLu(g?Bb4WcwIz&DJAQ1rH{hg(BM48hk?SB}i^7I~sOoQyn8*qm>9vO?yHL zWKao;^#1SZxk`EY00bsqD{!u)=J~(ai+|TSWZ_zQt0vE+uvuVy_V6H7eetiiRA@h| zO76x@C*l^vTv96O;;q><0YqpW-ObKvn`w`ity>Ecf(&{MYx!Hs&B4t%9Qg}5-Dej4 zQpBjG=?(Y2Qpgm>%kwV^iLnKo1ZHo?eoAw)RWH?1(|9u0$FRQmusTL>WQ2_at9#1_{F2lx2CgN3`DAuKJ*HC6F9bPk zc58N63wD^?-kRKSHjNsRWa}Q)r4}5tbMj4gEU6{&lcZ&&n${i2iHTmyXYk91z#Y`K z-H+O~uA>#zC_YJ=*Dbtk+}AlSqg)B)pn#6HrWEc8)!S#eZTKZ(?ziF7)FGSZw!kC+*jPg1x_0Iu}zME|) zdxIS!267BYYb+1NfhEoo%fo7<)tM=;lsYK^U|0(R-Eq4*PsWLHtS$%LP2U_qQ`ORA z4T65&r~)zZcs~mi5Bt6=jtD1_ zmmoYdOi?T;Re_tDNnV$fYoGMs(lS}4wv5p@u7G1$wdWMcsQDKOREvs_9MVw^7Nrbr zl-_39iD;4$6W@O~KkN8i7#fzf?xOl@IJ_DdnbnqeUfb;A0XrGZld?8ie_y=T&Qe}% zkTH36r6jTwgSI}nnmt4lzILnZ&?F7xm(+sA z;`;+5hxlCYoUM%fN$qz4C%zn4EIGUvMrSC*@dBlbCc?`nu0bUl$DlE zChSghq3kh?%uCcms9zaRvfEy_`HO=iS#le4!Fbhb-g~DzV;V)fU>Y;IuQb~r?ahSh z(iHnNy5H1Zl1I9YssN(r1N{knDGHH9ON&-Fg@@=nuq(q-D%+Bb>U8=|1^?}hyvDr6 zHBb8g(DjyKQ8rN9E+vRGh;$DiAT14pgmi<_-BQvW(nt?EbR$Z4w?j&I!_eIw-~GJr z-uu_L|ITs1pPPeO_gdF=o&#Z=T0)oNx{w}$oj4yW%gut=ukz`S-~JGe;XNx*B!DPo zbHF=%76-H?*Wc!@d0rJxu)cJ@!0uKa|25WCJZ-j1XFbO5IHW&m|C^fPuFE&=h)lgV z9j@yDC%wCCNhrbV5RE6jdT6fw_4331xwHz>>u}G^9m~Ai0797vBe}__`>{VYo>@MS zLHvezgGTJ-ngG2nOCMHWtY*6D!ett@9MdZiXd^+tOqW%osL!x1H;k+|3(P|of6*a0 z<2#PMvx2a>+V2M+2lBPgX2Rf*(rPH(R+5m#K(#bw64QY}oLIR3dTI^oCu!eY_IuZs zK)HkcK<3Y6^i;I)s!9p<>P(DfOt!SzKQJUQ3b zK4n-NO$LbGS8NV7qsLQyWKOl~J6iUej?;Gx-(OOk{bNYZOz?TFKh?+O(@k@(?)69(dSLM>hmYw)p{a0iafyX#9kD;38BLoNL zTR}K7XROYff6?j8Y^3rI$?@r12>kt|RXq2dh{;ecw=hmt(aZE_(P` zH68kuI_kiP204IT%KWdTls5f6Cz=K&B0SWG*phC5;T>}q2l}jaV+!`E%sGv0M3AZZ z>>BaB2#O4nQG?JKC3~z)QXm<_!1*ipp`%zZJ^ZU(^6ip-cx>Tq%Ma1-Kk68sM_ymj zFqnvt#t`F$5aVHyMFq2l(iL3>t$5`dP|xJ+CAf70IQQX+e^G~GcWA~bh2MZbo$HX5 z`%ir$2o|agc&&{4SAj9!#$`)nZpRITv$vW4F^>DlMeX%sA|07lhP+eH6y5?a7haf%mCe;>|q|L$oLd_Qn^zA5i{!q5^B#;2Fm1pJb#QFMZyI&<>5gaOSSFQ zX#G37kEs=Ne5Sl`q}jA5X_+JI7H+aZv`MWz(wsRD+Z@9PxI4HVP-icbs>)?tuhlC_S*r zzuhbP;A6SvW`Z&}9*xqYQ?wpMHkd-tB@RHGe!G_X`OxOMxg>tK#qQ69Bl=hgA&eGP z!HMq6tp6m`M10iM(}1Hm|9-qgoiX|-o!3q+PoR*AYNP4wi@H>HPDeuJu7NjHFdAOd zG}NvXVrbqAGdsxE3 z5F(|9?LDFDj9xr*Q7jw$6G}p0OP}oW0_(WycrA z0-Vs#R?tZnV>U4#4|gk5JN&Y?XsMV@`vSmczv(|Ovr4;Hhw#-P#c%?PGF1rPi3!;)A-Afli=<4yM*3i!)KRnNZkpWcH`-7 zWP`$!>ilrVsy_#KZ?q2h7K0{Q38Z7bg!#{kqt(TL_qpr>NsoHXVhRjW@vhzvLh+IW z!D0|OW>;GY^l%j4&U(@POP}j|T&Cl{sjbGcx6g612y` zqFazL@+L){F3&Y;C6!zC4G~-1UwO^JsNx10r(=V?A^s4pDO5o_bZ26;MSOr>E} z7Uh6#@XdPn>aPF#axtXJ(EYq{l(TM_WdW%_?H zDkZ`f7+%i@hj|4CBMxczp^mDCx?lH{^t2;{Nm|`kM^Jhh9>AB*zKE7|E1x=w#%_f> zG&&s5KQ%7cQ22WbH!N+COPersR3JistBSOAgg#YcpIlfS10VvnF3a(D*;Ko-Ug$UU z&Xzb2;=sGbn5v4Q#4n@$bU306qbq*ttvt^EUC5E$h}kU#G=U4b6z$pp2(#P5$R>^R z9j^t!ylUuG_rS-6#LSQj{=Y1mo=V+}z357?8(Ub4sJu3Mq%g>o}-)?N3 zI^6RQ^mN_&S+GU--qVo3uAillqufV$!UIuHj3D9Gw3sUOjPLLNscc3-yh|FhE1Yhq zoY;>AKR5`0p0Y~f{q7uOckh=)6+G^z_t9gwkNpl~T2@xL;mtUrqXE_2ANJ&6f1>lCo#;i&x)5H{S~=Ztx#Fvz3O#9B_c;9yf0*+wkR&+HnmZ z$EteM&iH3yin(x2Rd?X35~UM+rduIGJ41u?LuMnBf4M*o6_+OO4iv*&j`yXj`COLY zn7Vk<_*3Vlk>J)vkzhj4YJnJB%$KiJy|~``D!DeY7Q$xN^Gf{HANo(wh6k^=o=s+5 zABKsZLdLv3q=FjP+U-#!9=RmhS>5liMUl;U&*TP77m6cTj2VCXrNWNMX4;+4tM0&T$ zy<7G*4B&W{$de{zxoxEsO~#nGBW>AgQ>%D-0_#lQM}#!?eF&5L)LWNK-yidl8u@C{ zQGrGqZwnY9aaJrHOo9RBCTmM5{h*C$sO(v7MD^{pkoi8On0{|>2lU3j2J^j#y!g+d zkBfpY;Jr9QR$x;8kvc2;=`i+|BS2-j6PCj+bU-r@#zQLKWU&=%aT$!I?p`{JBS@di zT|n&Lfgpx3YsY(s>x>x@cH2^nco)Y3|5e}1HPy#+*!P*%brH$#F>srB(!j3!h#OX) z_S^Di=Xkcf??E`tTX+Wtc?=ea;7f&Eo=JY1nK~Z_rI(dDPBDB#-s?@xyJnz?kCiD9 zVJ5#o`EYIz282|C(PxAZQXqviU)-}*Oao&&q z>YX=?wK#9j5J2o~}vs=y1uFPI?C)5pJt&t{^Y}yluBPP5y<*iHi3Z9>`5C2dU z?VaC(SA+Mg*>Rs_yV9y1Aq^U8Ty3e!`p1`X(2j;fL=g3af6U*b5E>B?0ZC8)qm2_i zX83yWrsKu;zt*_Eg;9FRn3$SAos4=$p!~YLbn%x`a9{PI zyb`oro8V2WCJH6FJRT+)qY!P7Um-E^7K5bjF`P)Iby-4bRF&k0java)( z^N8=fw+$?jhu7BDVj6e;>$d|V=BnKP6*5o6Y-pZ8uW9W}5Xs?s6ukmk z1Kz=3hd+BggDLp8t{I%@Wpdjg9*1DW%US9_sSpS9+k^LdN14x8`V+DmRoua6+H(A6 zUs>rX)(wi<_8t{Auq@Y2!MIa?1^Tb)Ee?kV{q#ybs$~Q5xPC@VH-b&#Wyi ze=QDFYpTADt7QTHJ4dq6*ZY;Q_#{|);3294Gq@iCV{$~iTyNXak(VDnl0a^ z$0p^|N7B7!(NeCDTO%T( z`$Ko+rVb#*g-up`CB!I4ecpY?j7ifnbtcJLR|WwMrNXemuzdW@GLqSWWWb*Yj|DSa zWV6L{lDQ2Ut%{L!{_7m`CyK(Wp>VS8d2@*A2ztfCUJ4oFVADhf)w-aRe(+{mL zL$p_k8D>ubwCfQA>`AYqm})9qI#YSs1wUvag4kZ|r05#AtJ!=K3n?Vq8t2X34KO1* zj^888P6?y*mizC{b(k%nvqF~rLE0JrQdhZ1N@w`CXjMVKbLBur@MEvU^bah0FaG;K zL)2Z}F!Wc0Pxo%&)S$m(RBEX-Y~mwkq4Gz&{7l(kwfYau@|1oiZ3?TW5YXMVTty&q z8e%y?J3VgwiV)Rx)Je<;dtKfIj*jn}!BXC_dGl91P6FTUfSbR#h{exZZu~D=ZHV}K zs5u$W6NY@Ya7x>D3>O$CgcW0`fbg-1z=beTli4@t&-17sH6FVUrU=!e&CSwuX?MDiJ@MJoPgxTGXOF}G5{m{S7Lo&&d+|=8l3@C#__22^b(JYP7M;lZ z=&8evgyL8`^p(pYDsIvw93k@1urRwMI#Z+8K{h zwFPCT1fZce3N##2;hG>S%2C)ujN~C{HgyuWli5Y!BG3UMGw;5)rb*5A8vda52WecNw#pTF&9l8ktzXy`mehes&&y#!= zg*7Nh>sQBA5{FH{HSwoWAtDU#G@UX$n&RhbJY~2yu-k=%C4*^3yGE}^Gf~KtBp#!u zKco*U{FY>+cV2(U@W@#$t-O-vYP1l`Z)>q#GK+z$qKAs{Yp&*ssL&| z=gjyaaiq5WfzfR3Q9{Z1DGfdjUD+s?c-iE<@%iy>ZuQl+_4#Fw{N@OwFJR#N14+9{ zCX6N~SJg6)7beE`KmK8AGxtb1ri=0KtDIA0=6nK5UUH)a?Ozdp3x;zzppah zvVn?88Y4)sUegB9knx0;I1q3h+I|UEgjEg@*{4S4Lji|M7NR2|Je8m5VT zZ>(}+y~?ZLU5s;-y*fc<1Z*ZgK?H~`p|0h11Qjj$b{>E!>AepH=e4<~+5F^rcNw4T zR)OuE$EJ}$G6j3xaQ{xPhDDq?gZ6Ek`QkfU%=VJ!$U3B>3p2SyS1xqd?;0CiKFLrE z5}`yR8C}c6fU-Z!T(EE21sQ4(I6`9BP+vZN;dUtbyzc=ffaUV#f>-H97&Ih6VFlbP znP#^Jod`afn3woLsWO>*L7s&qkH`3>7&@jR;}rM%A>Oqtfs(oHW0r=y!KTX;YkD(? z(iRbBQso@I=;g{ls9jfc`>T%T-S5(CK$td~_l>2sKnGRSTZSvUEOGd1k$$UWXO--6 zY+;&Ud$`3C9=vWN*N4UWV5YEfqZAeOuvfBPB`N?VxiBma{rrLge&F6cCUPx_?-0nM zyb=YtkIx(JSo>)0HUyXyqV5~a#tF!oUI8K}>J_|aaYnY&9s_3pS>vYgS@u&ed4zx{ zQh4nx9RWiT7b=D2wJE)*;Hb3EIB}35IiJPz6~T1Pxah`*niopIw9CFKs0_3V5|kxjfPcm;hW{8D^iuI6H^HErM#Ih_CWp#>?0s66OPiKBV#3efi<~f{dfpaWl)2~a)DX&h%p00Yv97-zNV_b6NCpGjqV zXEQcX^qKl74+u_OtVpj4pn2~-lE61RSVM`Nb6Iu@0wjWGxKb=z(E-+*E_z)!ea~w;$PPTMF<~<0?_SUtBWBc);kjge& zG-sj)<)9NHw`ZXDL(6>jDB3juD0QJ;YqcDeaauJLfq_Mv6JP_ipm4EWo@?=sF{Vfs z0_QtN!P$=mLhCo}0eMBX@oG(1GxoX)H@JH{)jC1+*Z8O=4f6S*Il{&_|6AWxBn$LD zQpEdjeXjVn1lK=3U#PcVkP*12lEr2TAB6(VoDQ6N6O~5W+40!@XeDysiC5ko+=l~} ze9^5ZRRRh2O{S-pd+?S~CB?SEyUAnmEuR-uC$>9gJ2uIY*^|3tU$U(~J|~*i@c*Wz z^XNEWblT3%%^e4}h>bhdLu^8!v>0QGlb}zHe1H?!tbwvYM`i@p_QG!M*0JW6iKjg_7T0%${IHCXI$U_VDrfNiP;K zKfB~Gtq11Q67r>FnxZy^ zM6JeGY~__YZ)f}I|4O@DSZS#yf!-y_TNyXivV3S@W9jq_&^{CY@!B5zk2PT}8m-Xs zSPcC#>DzTKg1r`NX`)epWZ-EaSH!R=!eQT)*q(kbR%=)R%UI#-_rH>_UwxTC+DUo$ zb%?M%sN;=J%~d{LY`OPwd&tdF!+r9+z~_dMH{V0=<>_Cp2Ust*l?H~hxz8djEu%ai zu!JtwD+JhTgE~@tJjxxb#L~Y9?A)%G!`a-g?0VQ5vf*V2{HNl-BNLw+Q}_gdG64E0 zB#o(Ob6VGO;2gl8UPf2Q=nVMn8LF{m{%n+Oe$)ILVo<4!kJfXx9Di5%RqI*okF+0j z`i)l$rWZZpS(=ZYs zW$Tt8H%DX-|6M+$W?(jclJ5?kec?Vkvvjvyb$rQpS0?s*Nv;|gZRZ4EDQw-oJ=mSg zb#jtyg=&6=hMxbM$84qA^k)0@X#itgV97!hJVFUq!Z)#bXLnNCw z+M`$Df1_;FXeIXAbqeZc4}3n{wCAWwAn6@TaRMR)2d^S^05X3MPUVnfwlo{EY4{gM zD4#rZWn-8`L!9nMA66)2^46}J8%F=S9;Wac5de@^mur{|)6kFWAN@(>4cA=ec-IA@ zwC}EJREv0n*f@&;$4}FwQT^5P!Ec#^vdkFSj*liQNkhg^I2MZkkPqft#L;h1-)3EX z|0?obe;440l1`XhPauv={C@X=>206P9Ct*J<48Ow)UDs4UJQx$=qvXSV)*zKif(3# zQH8C1`sX(FG4z^Y>mq>>#LAa^I+HSGX_$_5Sf5s3&LlkQYB)F<-#WM5m6qUXtG8eJ zw5q`}=H04@`;fl!*1&D69l%$!W2prqF<)Hz_c8p)k39A#qUi7)kc@(ofxXNwne6_?!x(IUe-z+)E-u==7+j{VO2R9K{VB20?@* zNT}#|yd>SYZh9z~!mG-2hzd<)fPY^63IKoyFEd6^*o%iF%2E{_H-*zEPIF5VjQ9@k zO6@k}D2m*TF@(ga{Jj8&M+VcVGjXDPZz%S=!}J?P2sqOjkn-?{kTjrKWUU83p!EiIOheN`g1EV#VW$TvtBgHy9X=PaeTpU@=` zTt5fCgNx(thnW29x{{{4wL55aI)E%OA2?C%)JsgX6zJqd4$-%r+BMnt#B?a>U3L4% zcun0*B-atArhS$3CnsDgrpu zf33~{qIMYArvuToq`7jPfogwgOWe2BP6k{%OML3y8)M1_oR~L@)oDNUl3uxjhq4ZU zG^XQ-dz28lx`*B{#vbwbGh6Z{w#SPi>mcN%+ zJ<7S+4lgX@?3k?R!H|uUwv{|=!`#wiiF^D z5JFWi?(e1NF#eotrA{*n2_2N0d_FFpJk45m5IJ;u5MYp+ zpWjpfCRP41YJ=UDkEN#jP1)n8z6a|url6qd1RPF7W8pkb-uUo*(D2nMMdC5ajH%cq z-fnnRxM&(Kw8fBX)-Fjvc}o|ERokMh#Wm}yyK%jmk^bunF)`Z%KCQW?N$DXmIs2j- z>flV2*v}(tWN5C+Kv)ZE9};J^vrLq2pKu$G$cPs!_X-0QL*D=;^4pMoW?%@g_Gngm+m>#HmFWph#dN=LvzKCh5y73FjT1Z+C7)4(5Ivr z`APw#L$U~W`Gs3pMa@^cMgL{UmAhiPFs~QTu{i?UUvG)>P6qoV`5)Z=|BjfVLMUv_~_U*WjtTu|77F2 z4Ye!)O856!urRD7e$JM(t!_9kVEr>a{>+)G@-lxuy1+x&Ioqz!vVLm z4LKU-9(GpHcVCqPI#_0R=UZ6Se5Ag;y}kX{M~g|V-((WsPBL!A`akBk0zfM+|7V}Q znX>eb|2p<;#2vg=z-S!he_V$t)?tY{_i)^zT%$6X9fi{bFF9jEhU+SJ>Bn+_2f-fp zCOyi2=LGZ!VZp&4`-{A3R?ih-O|TyQ(2G^06%Qik9sO{=WuR2QZO44`KgrQeT^7o_ zv7j*aFu>vTzgbcOU?sol5Z~eIJSFNZG2L|kWC^}7WCl^iwEDWGSYKH5v9=gLUM)%$ z+xzfwKU>*(T^e>|&%eE^q#1@eyo#XupkCRIZ6CsFt+`N!2 zF~>S`QI+AFsT2v}X8QE4063G+V)C8D zQZN@zN)Opw?DYSBph_gmK9yBFR$?h=9Nzz`#+n)VyHMS@4j<8r=4yV_o=A)7u1vn#g)jy)I9jRN0+)aOa+Xy2rI#!A+` z*$drqVG{VD-_XjAs0;3NjdmFkIt^1IyMDI3;i+gNyYe{OmW|AAbl#%iGe1gq)Iasd z-d~wwf5mG(3Zk-ab=>DzjZUESw%DHIyHV`tzcNtTsQ3jx`NVE{SVfajReR;t?&ugD z?XQQ)G$zVc6pg$?!kgiB&AmUQxO!DNG+cA&UbXlTQ4Rg{P8M6$NswnrFbUsy8auLX zrGssNxy?AZ)oDn<^StY?)6nE+C;b&A5}iszT270uS3LNyU3%uMiW<9}&{15}+hVFD z%n${UiEZd13zFC^QS-)D1jet1vDMjV5cpWQoiS?$>)3xoVi0NuF4;<}#W9%6QuE%B z=;<-jo!|6F|KS^|2Ik75mJ^k{9^-%Si0CXQx^G!Qa$1ZNsdr_$2E&bU0jlX(LR9vP zLIdQCvM{;22wk~Q=U5h5(kY^vPl&}_IW@Jfr%$|R>4z34`vxu=RzJjw)@p1EfBEmg z3@SyrpF=TxzuhoK^gDR|^}{+DPs>+7C_YXLvVKl%OyvbOLTqM0`6uef0!_ydLQKp~ zPyWGf-=qoA3O%o#WLavTqM8bY1;RvKyPwQuBk9<(*_NvbuLGcjaNhQ-{9Ya*QR4gF z3*9i`S~po(6j?=w!0Y*$?7H6{@Py zov#wBG0Rhkcn=~#bp54^K|x7I$=D}@RA3iR9wf*si~0#_`iCKTIyTa7G$vZGK)lUi zmXr7JhN#|>0_|{UWWv0UgI=@{p(I=za7xiKO07_21Ga+LgpF4X{rQn8gVD-_vTiHj z2&PcqBy!brt_a)Od3!lErn*25w&f{GyrDO#(ba0rx6B1X8!A*$e*-q;{`fm4P3MQt zk1`h$o^UJCWO1fjg2q}ZF{>)|7P?RyePoFK{KGe@JRuWSAwh z_DR1qYe_m4ACT=Pct;U$vGIKN}NEczq z5=*KkC=0m4d_WsNg9G#iAN#2Ox~av$)F~Wa@cYLxuFlK7I8K>2swS@^sCWem*13=F z-Kcn>zttAMx6=vqw&P?rMQFUIv+iY3<9wIGN3GTrK_f+klHKE3&vKaFd=f!S_SHoN z;@e`rFsW;{2T7{->_YN1z1Hw_(EFV+9IRMyHOv2}9<@c#zK0gqc^Z2eFo$JGEz;5O zzG@$8Zk)08tks`VccQRM+U#+Gw7`wBK?7XLVSl2jC`44Sl?UP|_!N_-Z?q8xF|nJ;iP(ll;Ae7X!^Fr`7@(01jUKVee%igs!|G~1Y+evl@ZO_wj@xQPREL2`d!?XO>`=GYS# z_7{%FyV`*d*W0+5eDZ(wF-z^_eNVHPDHXgR-N%X`QIP^4C&}lRE6*bP2EVBwdN{D6 zRmxCc+#91INl=kFMPuTpED0AW*-bEWib8+bT9U1%>D#jPO7%%5{aNiHAk3-mw(1hJ z$*S|-{evMp$$`6!;ckcTnX$Ejj|`i%4`8dY>3$!DSflM8hI7$}o?4g2OM2Wp@{ABs zw`|-3a(A>NLO{u7la+tsz(zrLy%g&+G`cw@s?9ZQ8qjFdlVrX^-f34XxX}= zXaAT!x-ow3yy!n)ggDl4l<@0M<=?aS|ho@LxqS2H+p2yTkPm0 zpz&lb?F8uTBY`w5qt>E2yezY^!TWpZAtlP%FV|3*bv@w!MAOktK-B>e9)s57pg5U_ zVIaC=g>G&cUh=>PiNmNcp?OMIcT6&%l&_GYs16$-Xc$RZr1TSqftzGajIt?wfTU^I zX4(c_T0DDR<Lel4SeQf^BEyizEAe!*=c&hG}W03S7#d>s6Rje-v#GMH{bWHQz*!_t;$+>r=9&EAm)NB^M`QfsxLD%Ms z=110IudIJRS#d;J=W{WEj*(){CUZEY4P;iQ?h=mw^snBZkiQK3lL=_9z6@LXssFcl z?MRRLPrKw0t5_e zc)D3-Z}Yyf|MY3|;Vf-a=HmI-VZ--^&*SuaRp)J9l{qq`>}#10eYVee#H#d?G=3R2 zIX`ttNy$X3r?bDe1k98qA_8>p`|_|l>vkzdcNp|6E&37k?!FLlNTKN=tH~_|>Sb>d z)x`U(ye?oWCnoj-1qEf-n>R*r_?E|EMR>l&y#oK=Quj_}EMWE2!~Ij}eRC{VZCfft zaM2#Y*%jpqcXwNb3#?`qsKu-cowVi)Zr+fsH;wba*$2`B!abu~XDveo)-Dzdx3vK z=5ZdIaItqKe(BqOjRoT2xjKJ#AGXcrcDLW%V9Kvpmn?2Um@E6GwH-k z5QNk~j!tT0#UuEwhT-oNuATRNqZ2J+_lw_vQ z#}@a=*m-4qNk@#cDuDKmrC7iss+9^p12RLpQf}zFlaEHJhQ6qtLF>~yPul?kxq8xC z;}#bt58ZNB2Aa6^o1u>ngnWr^=U?7)hV^C{d?x(r0Zc&p8s#L_w2q=EyQzi@|1gF& ze|EoVs*i)F{w~XTB+XfPbNNLsCxNhlYJnrj#4tzNxaqUFn5G4r_p#~T-J|MqB4v~P zjX$PuUgL+I_~Hvj!0DJgk0Z=swH25y=$}lmv_!Ivfe*o%9ZgS+_nzF`O1F$zZgAMB zY`&2KJwxsp?oJO^KeBYDrYHUvQr&SK@o8a@b0Hs>rWEteMFLCm_qvh+B>#VW; zegV~XQgDoY>cvRm@OhtS71y_rMkrR*n`~n=gqr>?4a?Hl(6(4E58=&eklnO zYNMb~2H=Q4QP*zKm}f(zeEGphPdkaNOf>+NRGH0F$)MFVOGANz<|I}jF@N|tInZ4e zJ7too_Q0x@3_&Db&y$&ZDLo{T_g|EwwDGF6Q~uU_pL>)VH~OxTgj{)usj#FTKF@~< zng_9tDaM8D5zGW`?cDv-aIHH3`}bemPDIYBnB6-o?+>EAg(Z(Mve6L$3%D4`K=X6R7*L1)bD@|!D#}kAYRQp1GFhdF(%Y&GAxvqKT`h8@wHwTK%CXpKk(i@Z}3Nq<>!n*5o)Z1}3IN{Ya6nJSKGN<4}Rf1klM$mFr zaNER+=d|{F#N9|U9f2}#Vx5BA{8TbU4$$6fUmZz?sn7nleSc=`NPU=iG{DN}amtfH zTR~N_)ixt8Oj?(}K6o)0+H1FIOKqR1orOG11>`YLW1rnJ_XgOk6;rHLh`6{_dx@0- z#ha7oayfLzFTXi<>E2$E^p#=Cy(<~Q*=j%jwovsgvR*TZJkdsutWd%_^RhQ>g36H| z_ew_Y=a{o<8G1~b$0m)Wl^TvwKQ73am@5SJaz(Ov%5&fz4ES2)uO`}|*Tv+d@8=eO|D{>Y1+--82m(+~NO>Gf8vUPai1 z%A85+NMPR~lu_N7I~+|gsJdQkj_wAlmJ>%t1{`{Ipd~oN)p>4sS%@e!y=r}773=%@ zUcFeYYDWfLEZf-0L!-4-h*f?iL-g|-%4X&54?`&^hXSZXN3)<3HjmiyQ&ZR%d>p7) zWWm==J0jkBELSZ``0qHY0LSD_QpnDt@xLb0`UO-YH>Ici*NxIBp4X%qRQPK$k}zit z&7+&TpCmY@hQgpdc3wGHGllq+23kDd zWd7xH_BslP4?tbtGq-@JyZrZ4^y;_Wq zFH>V%pb9ds$h;_8t{46N;r_Hv4 zr@2PC?T}33c>zBY)jL)p0C-m*Zb7fWfX?xCFbt{3#M~R;Pszk4WRiR$JxK_#GUr+P z(LAiv|A%eT_w&HDas2NLnQ*m5h{<&QTMHg?=0)`|txX9A{-Jz{1$6h>Xa>oMM@?U@cwER}i1{(wE1dr|JgK{C4 ztt8E7zQMMzL{F6^@~`z&I?rr9QH#&ZQR!PCmU*0xgiRtmyxbb|cua8`>yTb-e0h)W zncXZM2`HaWg>b4az6;~jseACCFs|$*aiFdI%k`iGCA9+lthDcwZQkxDss9>}Ru#47 zx3I~542^8(u6(9gYCakUM=8wvt}BoheJ`}q7`*dRDZ&Px*_EtLHJPY*Y< zB$PN*;L_DaHj9<_ppb-80PDytz3>2#2@Z(*!z@;!Qw1KIbFhe8Di>jeM#1$}Zbv$@ zva$jv6t5xZz`QRj@O>?SkB;H*Gh1z20;BTa{nY_IKfhK(OI$kz|1E>@;i1!EnP=wq z)g2t;KP>EsSAVK(Zge{T;OIYi1qJNo(5i&e_Ta>*Vw!GTq<2_TdZgHQWB)zq|M_^+P@2tE zYfwPr>Zt$krB{`=6kBmjGH?!Puy-95Iidp$v6V&>r&0Qz=*oVnBo`|Ym;D_to3xt} z>J~pxun(x)!BL|USCqt%D2Bnf9QcnLYJTGbb&1)loI4Trw5)+Bez$I=$;MKzccsWL z!jGdt$HO`Wq?3X?nN9b8~IpprE9~?XRIZdg;eRbNBtIm1*x_ zN5RizQqk1Cjg#hLF1MAYBbQPXZDgW$w`%?PbSR&0H@9pqoJ<0W!sC{{4{|b66 zr-U6`A?^wq!%9a0Wmb8uPID(JstKDc?$1}W%Srg%3P}juq@Rr_={T~7-$!4EA-e99UMDZ(22Bo6u2HSt@_4XuYf_bvEa#!9z%s6ht57*+4{4f}-v;H()2M>hAvf(vyem=(U$IRnti}p*a5Y1M zZ8VsB5k3R8z{6A!F+MNSFUw@aww%cW4z#kdcGo?`Cd8^Xp_!2Oa2CH`@)O4VxBwBY z_rp(67!=b&Fd-#6N}~GjtNyTN?5@!r0{*mq($L{?e9nCON+tPT+~tO{ii_-Vlqbw` z=YVNL^>hr;jy;kT2~1-*Q3$pWGU({;?d+efG4CjwjzN~CLi+*W2El4bXAZ1g3Du=a z=(MZ$HFVzlFq6Bz(iOv;E^t*;F>eiNE9m+vvMJF9j_>`(NVV~xddL!EagK(aN9dbu z6I=J3(-wigHyjo2szitMOv#qL`B$cA6LX&1;b)?VOM~#`Weue6`b(zgAK&?wiQLN^ z2F#lxMaMQ8Rm$Cv6HrSXvvp^)8cSEXoa~1sM)Z&eV~M1(&(R~@-pDfAksVpv|TZGGJ+D4ST$|cC=_6Q@?^5KR! zoK-UR>(c`caSA`k8Xj&O$qb|Cr6f;36{U)$WTvwC`*_mFr269dk^cM!7*$E0|0wmi zD?68sKlky&sC=zxsYt1&C6#*lN_7p+XcshsT4l=if&@NivyK5k0rl{Lz?aT`eg zF>T@mz5Sg}$01Ee(s!k2q#q5bkr=l`S}=_kPR7f{6~fgu-JCn+7YNb1(Ej!-BZz{W zJd-Kip+)~4t3FG@Y{$>K7p%Qs@IW54GEO4CPY$3qR0P#A*N-lW)yC9^BDk|ghm7J& zSGNkZ#4}QdEVn_ZZHV{ZadUQFandP_)_n$(EBGUhToA2AwwtV-$#&A7c>2N)*bOiB zhon6X32;Q#`2TUwr+fz6((3RyoLo5v%wLVrQKeZTFo2=N(~@A@pXO=&+a*0L9p2dy z?f)*)UPFCiK5t(4EybDniySwI-%WqA{A797^LR;n7s*Nf&@tt@Xf{*x`FuBD9^`*a zt|+{e`IgZ;OtL?QMzz{iE6TRVz(^<}%z9Xkm{ABH7)yl*LlHnEMfo2HsL|uERO&H& z59NL~!~r0IeNJ6t@x(Zf#%St04uP*p#n|!ZwYk;EvzZ_&$XF^q-4@e0=^{bCxu#F; z0tG?7Tc6aQOo@DRGT8Zf|HuEs)?5EI{lH!SAP6Ec1f^lb0F`D6Qlpd(1?iIR?gnWj zM2+PjIupE8 z@YZKV|FDHBpL#ZJwQ}TPIc1{_xBCI7dH-~jjwDZd4br$qS-*rwFJ8kndljgOlnJKB zrbRK55#ThE#rwz@wTi;m#-i_m+=F^yO~q4H4S?gD9L|Z9i=bWO6PET?BLaiknG4Jo zL3^}9E!(9zisndfvL`}xUG=r}&oAm)MNd2w*p^wM-!SIqC>9yOFzAQD4!|{1!oRG> zYVX$&ya{mXuJN|lHuGsMml2Quv%D0Xh_GqOez|joO*f44=`S6VQk2hv?S;eJ?8@@X z)@}_JO7y**r+Z55enQ+l=CO`+T-yuP*dFF#%#U#QZTXSD2az2kWR$KF?f=m$=@Hr4 z1}9k}-lNSMq15%do;yh$V)2lC7}hX6rvpJ#_G;tT9uN(S(tB*7^U@@Y5!z_a^t;E5k?7@a zu4LG-sAPZpj{90JF9**5Rrml|MWH)O35jEMC zPlV^#VW7y&tKVu*>XOR^EBj1$I>;d-(y{Bz4~7q4Z`i03thC zeyzR-UI;(!Crh40j|XG=-*rZUX@z6ANfi4TbKi=n#1wvF`wn_?FHBNiEu(<{McSEh z`qntKINh?xbl~o%$-N~0&ar6-uhG3*1bZ>DnUIZ+E)xu6wk1$(`(MAm zQGP&CUN#ixU(1=^zlMK$z8-v?YBvMncMX2LF0P(ig9Qbj+&O$q%5P`!-q5}Yj}16mOAk;mgtX1o`>G0H`nq4C9+fAbD7z3@^Pu_f%)B9 zK4iTp5Voj(v0Ag}eQRaq?+5%lAQ|W3!O8q}3mbkD^rh$P&NR){ekWk^l9bu=mt zD;Jndcy0ojUN>I`_TGYM$kdB5Ly8PkxG+zH;uLXn8~$_Q* z-2bNXFx#zOm3ejLFEv=XN;Xidk{aJLjS%Qb(TsMjHfPG1*ViDR^CbJw>!rOUkn;G{aa9>-1m~aNuDWzm=aF@ zM1(bNVo@LI*_bXfpuqxFNti>7*i(x@ zA3>L1U%plh4ITxQGrI~NX!!?hQ;RMGFy3iJ_+r8Mc9@U8(GeJinb2hZ8^S=oW58W+ zW9e2Rr5toKF!&ixlkSq+CHU8Hkt96|TN7d2Cjkv%-wegwi!}zX&tI8O*A3GBR-Uc- z_Cn|oso?7zJ2r0WQD_B7@3*O|;ZlI-R_pKe!|<4v#Or$gk?=vkjTFBz!c*nZu^Y}$-NBC z^hX5}00&yI?lSWOs*izF*1Uh05JqA@$lQ|rYrd|I?|t7En9n~~Z~lIHf8e?()YZVec18n@at+?4Lr7uE z8Yzxd8fBtQkh_UE0G{IOZ4qTr7O59LL?b%krh=iKTeQQ6C;R^fz;4RRT|&HM$gtSU z-sV}%<~BNS5)#Rl?m|@De27R0a51II%X?oe;kn%`KuPhA##mI#CezIEyiA?7Mbu&z zx}3hAz|juV^lz! zy}SnrA?snELH97Ce_ZIP77(3w&S;KwfbV6{T0+1)xrUjVISj6!s`cXE?sPm5(fq*G z$|Y{W&!|$7xEeqLh1p1tcD@uX8AyJ$%c}wlSEwBs$Rn+A_XMNGXS7Md+ z`@cMIL`mSZI#k(B=EpUMi`ErMhCQJ}P-gkjDJ)k7kEeV21H>Gf z_v*PFFYN+Mk%zo(H=NCfgFlfH-^a54gC$4aSdNxyV}HdZe>Hkw+(x6~DW5 zyZ>LQn)3gWsx(cyH_f=!oU;!H2w#R9mfQRK{%h0iNOgI%R=wCY@JAM9bowrwx%)z2 z=(xXSLfMOsL?;2c4>W$WuzLc0`5E?q3|11&>4Xh4c|Ox!sF`0l*vHz$xhwDDQ#>WH zd-u8jwmGIP!*_n^T@a7SE%1@Z zKKY$2^B<;%&2ym9``_2(8qWc_2v-exF862`HY4={oPRLb8)kLHa}veWqcZ0&nO1;W zEcAanxklaPy5TaEic(X%1SbWP*>yMtcYFmF-b0{~L_%=gT*j^ga&u)9dF{*R&)Cl8 zD`7NlU_5(_dgr_Fn}2{^zX1)ZNcr3R_;72?KT5eGx%2OkoFk&D4u6qmD9qZPDrG-i z;CO=kcl0s>K3}U$wA25XesM0~Fw4j9wxXJ1V6AUsk?vn#ci81^kkWurakQS6<%RS6 zPQfbGC+j6Bn;qm@C0$2Z^Wrd(&nIhIr9B89wY`EHImxwpp%>YZ9wpnuh0XZ|JH zWk45+k*XCL9QzR9`eA+;F;!BeE@Mwc8TR;_VWZ_?9iTalE^jaM)}b`T#b4L`boJsWp_0GkL<6VpclnX>|k}J zLNun*WZpt9b#z*qmWOG1qt!wHIuhkmyYoyS^9eUT%|0TLC1YFfBa?Z_VGU( zqzC5?;kfz(x62c9qEFIwW$ar2ZXTctc;*s|$QlxP1S4GwQ6VjV1os z)E~8<>MOX2)Z{eoQWJ^(gqA`xKb5}HFxAPO>moxBq=mq*2sY4}r`VGppT1Ywgi&6| z*f7OEtvdXuohVWI8PrnAVHhscOlYgL#9`RJl@)r1k5~!5xDT;d9mSeu{?K0QfVP6j z#=r|3PBvd@;1Vc4LB|F7&DGn`|962Bh!(K8|~t)z%+1+842??%(&zN$L4}u>wW} z2Re&I&57-Wg5*GG*V9|(+a~gzn1Pg`Vcg^7vWwq?ftG3e+l>tSuv3dqdHfOI2Q2L^ z)yLhQ_qr{rH({?kxq+;20X-G z(Aj3E?YBB(*dMwiPbiu;_Rji$yn_*cP#r$GFcuyYF6bv7ZOAEYTBPVWnmcDRqv6@Bo{{X}nP9AEph zgN51a^cP~V8rvNZ_kyd@>d<8uO7}<0H#)&5mBx5%WpT?;5vPOZztseYrk#2L6|iff z&j-OzF=hkZX5GZ1l2>X8YKHQxhN^{?M$drLJQVdF-?wes!g4aT&w>y> zFL|~ows7tiTe$LUy`J3^sz}bH>pWS-9Yc|LV+UUnB5#?Hl1qgJK2Lhp{2gAJX$OoYM7 z53hKRD_B*S9{rwJCxo&*eeD5tF~&*{Z45@Ag$xr=9js6BgOL-zokly|4oE5&pJ1;-U$nQMkh~_e|bt4 zxGh>-p)xO~|47qmTx7q2mbwbLWb6peP+m;t7O6ADSp5WGOXL`%Pu6^1S4$`{iE|dHX{}pJA$e^96BT0HfdB5HV7SSJ1y?xf#Y0 zyLubGt^AXdD+U%nS3^>eu|SycYv#E3b)C0n?I9HzlaNRnU}TE@$!7WGhlL=o7S*kH z3#YEj{u~Ta`nWP*mkpVK$FeagD?^UeSg)m5Y&&NYDWYxDJt&xjFfw`Kdp~6|OfbH; zlUz`TQYGY>%#AxNh`f8^y0v{Z@$dXD%CY)9rpXDJ$IJ^yKP4x3=ym@%Ztz)s1BEuZ@}7^g5iuJC%3wU9SmTHt9~J`cqz`( zD1YN7zI(ey7zWzgiDllLiDj<#=pYzcb7j0(Am@uVs70+(1AQ31;mb`}B9wrRH%;qn zVJQscx3}j9m)<;0^WctBp9EjusdLu>*Ia}_gTa4dC*EGs$jGQXCOn*CyjZnxNxQ+$ z_d1fT{Mz89H-PP@Bn$`Py=LlAion`|*EC7zg)*>Km!hMfyjIh%->|V=n5FY-5h=2K zd=BWm5Hcj{B@OlH^@4Y{ylF^)UZ?q1bI5)veN4zkHz_Oh%ZA?3;12XSzA(Fk(-Od1 zJ~*8Eey=jU$lPuT2*B{%%MIHO6TQntRKX>_zZ!C{G5d>>_$`EbB08mkLqzkMf6b?c zg_t_me`0RW-R*lCL;dH&-b6UWW|5ek_0aZag*Z-;nh8Xfl9F=3L)lRuo2fzK;N#=- zt}1R@KGG9X@e<*Gx-On6KC!m8wlom3889I)k9_#Dej&ih5goKfs6bg`0N+6?ndGQ2 zsUlp-2fp)*>_^>$CkM&P4n2gckZX1`0v|L{?0r?N<18#Ujr?Mv6J{%4IcJSWGZiwf z;)}&3dff#u+3Jr*wMBEnyn3S?C@Cqc?N$VBrC&Rf{v!yxq$`zFv~>A zqegbat>hQyOn39y6OWtf3tuWPi4i+`wT7G#Xayz26QRo~6)+6r&Zjxx796&zT${q3 z@JG9HN8e*Tgaocmb0`TUIIPvSB9w3%Be<@&}hv3<<{ z^#e6PHrV=+OC{U8$>>~CS=4)Xxd}`LOQ&;QE7byF=*n?g*~_1wFYYP>6I9;W9y0wb zB=Wy6<0%Gqq)~A;)N&(xBmfV|KJ%IER+S&gdW&93Q7WHUwTxa;rmV?emMvw zdTsM%jilxIQ!wLX`FjP3&8CY*epq~J5gr~qDROzP)X>C za8$W(zghvFz_!>x%iDWBRZwu6Cp83Oy`j$M=-Uowe0DNal zDhY8x$9-75wJzD99ebgKru<5e<-g8_f0gK{e7!wlkL6WV|B4FhuDtzFzB?V2xSi){ zDeta0`a$=-fFzN!TtdRH&|%8?OM%`%aFkY7W5E#HI3<`-8=DN{id~cE^s7|9AiiFf zWM&PTco3g90%St5m=2j-qk?b}p{zMx;d33qgf9K9U31ka1c(0~q#>stSki*(k{7`c?O= z-V6ymVj++@>Gb67ymPcmK&$~)OM7=Dt{^q7ZB`ngY*e@y@XUgoF#A~uXYm*YH1@O7 z`SG`D2FsXyraV@7bUqFVcX~MKHG#kJEYFWhV^h`1kAz~RxNS&wUVwNtHduE*D$nD0 ziqEsuc28!?@O)xL0>j@d%C{^M;el$S1g1d~tYGlDRX78-EE%YU$^#D=(8hJ!k|x-k zg+vQlLV;kDx8*-WPc5D?x~V(^t6X*7UGo7k0Re7EJnTBV#8>OqC4++hZhRw~|0;uMXsw}9yB zlw&^+5VJk&$EraF67Jh{hS%(yXj9;YFX{uLl|w3`QWOEJEJ$`OPDg8fjU(cdat>c* z*P#2;l_HH%wg~jH;Cc&7V;B~Qkf^tLQl1n*UCAmQ_0;1i_#9HnKsN%9Rich<67m$)3$f;`-s#s*Sok{zXoY>qN$-#EPPvsRDJbk$kh z3taK;V7Z!gSFf`*lO8 z@=E(GaJ6#O(C*Ja>9-W7FT_5$&?#iE(>*yb(&-Ig%UNQ30laP!I)wI?h`A?4cKUG< z(5GGF%-dQocTim|8a^~LDj~5^-;`tynFLCPG)9q>BNaA~tv7`o6z9n-lAeo}{+Nfh zt+tp`9V-==BFdi5+(ec}R5=4yE#|CAT3hF}JXLZ7Y&xx7BKA$~yPox-uLho#v_Z1$+lR)pdXGp&d-PMOuon+y=;Frt7@_f4{ zGB=g47a;7q!)O^>U#nTi#H@a#6qVG5SJizGvrVy(OvbbW0-E&?t-?GO66oyX0b!p; zk{Kq>7e7x=^oo;EY`y#E5WCyV#H>`0sS`1+d1)F?$+2lzdnkuPawfnag$8OEEr+`4 zs4fth%EnjIUeyyQC+`+UC*8HchnarRB}9y@kR)|rdHsQ6ni6gT9*Hn;x(05H0lLbm zfz80#3URv68d4Q^xdaa!Bm~&v{(F1VgP4Suc ziJovXMLxw(e;0d3`LkwDV6D8&X~clDwLcYweFR;9n636j&z+|8-O$WEJQQ3DVdWSQ zbPL7V>=|e>V20c>6Q2$s#lzRIhKV9h`jMc^J|r{Z1}B1R`J!c8t>TdG?DTxeF8u=w z;$hFPExGryd6m?^1FvcCe`n7lv*zuOmH+W+ZwiOec4T=5 zkFnG(r(SbZ6Fl7-(O|cN;(z@hMcm|Ms8j1sr8FP5LZtb&fDNp2;?_vak^ye9iz;r!y_eN)tl zWxp-%S|GMUJ9UjvIz^Xx>Tc!9e}ypft{)K*XZ2e`ORknDH3jGXAd2h{5btG1&UbwK z=KIsd=jS6_+2**@?#^gb$sZ(o1eSn;TWqn`a_cB)%-9Up_k-Np2)Nq^tC(P}I2?g( z6?|K4z@8dI3tZ~%!C1dbriE6|8Wy5-54*!Oz8AE#9LkWJd=?#*^rfn*CMM~aK{TeT z?*1ntI4#J(p5w!H2j_*M7`w!w(mcuyDDZ10}~yl zC?H5UhE_;DAxnqKKz{3?eM6#ITKAd*krExw13=dWzJ5X1R(Ht#RbMJ@|)l;-vnZpl>ND!_U43wgfj?}+?LjalgBl;05?S54VJ}e4fN7H_N^CF z)O`FC>E2N+8@PgYRw|%U?{kXO37sxJyF?o$XV78DV%^IKWBaVAffn8vki6t+(Bpob zBTop>WYu^zH}bxZ@QE9o3}>wsSyM#pbKr&!0V)CgX)vAipFeS^L(m@M8MQ5K68YrjK7gq+%DRL78?MloH+pIG{r6 zHgR7**~{5z5!SfL@kh0g+GM2FxscIfcwNwqo1s0x`F~Hj@nc4_a8}~O=jk9$v^FhR zV&?@w7xDm<@bt=(UYXY`wc;#{%kn+kpkXT4{+?&kv2I6?2XWu|{Ss0;?mZTr$Lxo6 zt}ipe=PH}YwN^80~*b#`4)gRsWi;?!T2(N~)Wvlza!5wR^wb{OTa|D>p2E1feO zeJBmz7B^cfNy2b%yTlUQc&JOQIG||BK|Z9KoBcDC>aDLt9_ZEm!8Q7V0gtzp{A@2K z8`MqHJ!`F&W1UT))1YUk3r{u&`iQMInwI*!6OdJkiAkDj`trP4-JF-{U4-5e*P6(R zBn0#(`~pJ=Vp$D@hgw&ESj*h*K_jS~1VccK=ri!<3zvNKo{padFObfdh8{h4l(+lL zIq1W0yq|^Nw#*YGwiTQxX1`P1JQFO<;*ryD^lleEN4v_c4{EX;e)5d(hcXs^?i(Jc z!@D`haluJd!W3T5J_!Q?>4Gr&k07V^W_+f4nO}&GoeW4&JD7_3fL6B&$SS-4- zMM)4BF!&(zj8Kdg`cV**7IQy)yC=|M>SM-f9Q`^MXf=*~k6D5ktyEjk5b7e z*h^Z$w2C?0*hJG+$dQx7px#fC*OuQITr|fvXQ+NAamXXfvdfmN&>#cyze5b66cUV~ zGtyHRcz$!npw=;lQUuw}IAhp+1Ou#9YLa0BaKS@-Cemop0U|#{??Lkokt&O@nrg1C zWxdxTLbnsgR3*1@hXN~;K97h};#%;BKZS+EU}3CI#@~KciqF3uIz(GZ(AjT2EEf!m z6z2@6iC#%IyBq)^LV8lCk!6W)Eb?pEg;9Z{58AMP|3&VkL!OLF>n*8>h>}6;H%3xs@=-<1QFG&aJUfkf zhLNp?&WO0{Y8tD4Bi4jwWLrO}Dm+cY5#Wf>)NiGs`pK|lrkGNI4^#zfB>ySxcItB# z!l;K}RMm-ImfRCSdhW5nTBKx-5eu+C>r?7dU(IA#1lPee`3T9wPKbC&r}=jgzn;1z z$5hIsG_3_j1|6+B4*y(by+wm-t%QFU46JJ9cG zu2a5sK~`gJ{;($YSp@6>T8zmQ&1OQ%bKM_uLX&1vdIk0~-NYG%Wotk{91lMWWBNs{ z?H&}%IfKh0zTin9ABf&+Gq>KdoQq7B*q^O9Kmx;g5cu&M!r<7O$J|Saa*X{ak3}`D zG48VH{)6zi^YPg$gmaTM%+u{K@P0wj&9<)LS$GNyuo__7(|E3R$CH4GvBX{S#$PwU zR?Dth%INNzdQ$uGo;bFN{8U=N-=yDv3itYF&6n<#+eh<3l!&OJ_Jx-sd~&mJVEIf8 z1*P+O0kxk{rTa3?NN{T7dq~$ZXRsC3aq#^T>bTUyjUmy@E@La zY4y^4kPUI-=JU!>6z$~k-mY%NigKQvof*(Ky+azzqK6J*N1LrsyvCbgO{MQnW@f(| zd@msF^6NgS*H&B|M7`p-aE|_(OHVg%=tS8iUYGT zM)(>e`B*IKKL4GKpIg8e{GyyE6x(#OZGv#t@a*a;$@{oTn)J;ZT~URORw^L|bVRk~ zgiKUabY*le$hYntE?P-bbGQ2nAf$9Mh1|=hr>8A8bE~YM`^I^*FE*^qa=}&IDzj+W z!QJiDR8+Mc!J(m9{OW!W8W$2l+UWu7R0X`Put`!lHN-&p1UK@uQWtw z%~%9bJmLI#g+`x$-1P$=7y9vI(sPXwxF6+V$>78(@-b$oPwqZZc){zIqZ$$aX}{j| z=B?+E^&f)?$jqT=%eJ}go^=bUh{bntuYpdG7DU2{J;#O-FXUi^Hcd4V(m-#+d1^aohl&eK@}6?Q@> zn(b4x+l;sBxuIM4fh*WnUl@7hy9fE}3+~_ubQK`Wd>?r_pHcNnZ)^!zGZ`{mI25?A zU{!=N>E%`f+a}ty*w$}z`FuRqY1Z$rSYgB~=YRjEQbV@Qg~PH}ceX_Q)6DRgUV#j} zD`Wp=C)b9Kp2$ff0$2{QgDJm=5Vr{PJPs5Dy+vWz^svi_U}QECAW?bCz%e{b5AO6a zD-EYO+zmC82_dUXRM|el{Ks?+fJ?ms_LKS6p61O-tX%)C)In5q_HT4k>XN&aI)a=| zL~I~=>@>4y2P8`=DD-l;#u#H>5FU-9-`M=BoroU!EKvGwZIEDGDqpSPm6)Szekzng z#b^%xzLOANRc()wS@1yGqW5H(op!-}ypDQJ`AuvfDDI!!3P>ZW)9f~x+gP!HF}3SA zT7@O>;x<`%TId}_<1V$tdjvLT%E|1Rm<p_2We z2b@hxhOrJdM=oDb4<%WHS#EUz#>)lyQa9GsLWw&G&2O z=MKT>R;*gUz2tfWWFsEgR~)*72G3AG>@GqyLvN~3v7N|g0tu8X<~5Q#gGK0q5kzA6 zxLp#R^DSLIU&a|4S>vqwgnq<#-om|RtiSxEyZ=njfKaaiN3e&}vggaOTm*(pOkZo4 znJf+cM5WRdhKwILtzG`kIHku87$e_F5fJw-77d1s6(oVOed zlS+H)Yi<~w*Dio-iT;65+)9WR&S!yEU>2?f&YooLmqEQ4H}5#ULTEDC?f+)w^DX-~ zcwG*ePxq>E$z)hpaI=AoeP7#*kLmrwW8+`fTS`9nJ?H}n;`QCu#8k{0yt-@G_7YbX z{BIpTf3UFv%#fR5qDv@W_`G=rakTYkngTn{hav>kWfOaIfKiJpyfAT@F1{%wOAy7R zPx2Jrs}xGF6}0`1?N?%$W;pNn3%D(M)JeBcX4RtE{snjGExZQjcq!XBURrp2fU9## zwEs_yk|PWwTigSMgetR3#9#T8*s6-|Mq@fld{6mAfL5Xz+y^g>1-q_ae9?YG`N@6| zHp4ZX5X+JDw_z;derjO&)>w7tV@%T3Da~OZe|g zyABmBf84o5=+T3iVMjb*_9G5rK8f=KjDTPubU{$e{L;W|kr1<}gLAy+O4DEwOT^H6 z93RZib}9ay8dWljI(~Y884!IHY>Vt`en&ADxj0U5No~zMcOM$1dA~R&C3<@obEZrt z%xk$Z$pf})VZELW2yn}yw@zWxzItXa#KXh0T^ApLoQqKuJbjq|cw?gr^?{(bI=cDC zelx79xR2+)lB|1hAuuWZwfaujQDQ)(OukIAfAk_}t0Ht}HL@U;RoOSOL=^+fX_ccp zUf9b#{qTriM2Qsgg*g4(HRS~rfP8`eT7y)X7RFj*S+5K^6FQ4E4 zdJ4jS+PRwQ3B8bnei4Nc%HEJ!#@(VR)=BTvKHk$EYxmA;XLeQF^W5Q5Jk#{E?875L z$WAwWGld#Q8TQMg`0hh5+{F#51F?-WX=D6?+N0Mf{231Y6dg{io@vfDp3(pa@J1dK z@RK{Lm#24URvTWWl%g(O%{;FVxGV8-eP=c0F3KBU}^GP z#kwVgJ&jl=biyj1wglBEk|&NFq9bJ!-=!bh{Sb=&3&M`u*$r^eqoujZA<&Hw?{+JO zVdL@SD!8blO{v?!DFaQuN)hQiPDE=-g}iUIxI7^8xA-8kevi(v^u{6?x#bwYdRD0e zwi*gM`3Q|Al`Y3?U!DBk%!p3zOTsu8&6sN2L);@b!sy<%*9%#EAN8q|SbqMFj!$a% zn{-Pi!kmz`@;YK3i@>3SiGTehyhMKg6{1Km!JQkPrKRXwwbtE^zrMygt@Fyo>!o$`=c+cILq3ahAyYQ>Xj|l>swxHf;sY<{&A`K>?&nM;T(Cg&XG$~ z`+)h<`W1Q9Pd=0JypBr3)o4*ENfF1t3{5i)iGsargynLXpBBbGEx{LKMR<`I6#k-j zWfN-`NSuMAj*Wm|n+HwCfWhv_j=qW|Uq;s({0cZE>v3-nHzg|F>*8;_ymp<{Rzy<@ zTgnA8r`Wmasy$M7pVFZ4q=GSpDmI?$zn;wDx#?}2=8F7EN2;#UZpX)kgp=}gIv`ZbqH!**ypqhm)CLgqb*u^T4@F01(9Z8{gGba{wdE9x ztb&3K&yQnwk#aw+T5eYVJ|VyVA{b#+yFgx-z43$3@c+HkKb~)*8&e+|-_e}s{{Of8 zj^ud&v)*x6{z#d>z!hiVXy3Nc5trM^67lT?CjvH7EZMZ|CB>=jZzv(w5+v|N6|mcX zC`D*!9&l3av$Havw|%3xnG*5I|yeN_fNL*{7RDsUMNEQM<16mvo5 zuwp(XRJeSp2|Fc!5qG7S?ocf3*v473Gw58%yInAQQwTza0*8dAd^*wiXpRBphexcgTe zf5_MJ1QkC=aF#~a++E}y}Kv(4Tq-G$mPawXIl+x5c^H6n!>QZ*`ggm=KJX*pLTB~HnW6pLa#1Z zSznE2SDuC}{4(%0R)OP&g#zyTcwiBkK6`0DN7BhhugG_wuDhSKR&oFysNY@9O>-S+ z^BLvt>{@&Dd+8NX&KJ#?OJ%@`t>Yj<#vh-~$_wb8oUu5r3pOfmVoVJFMxBfa_j#?MtyXqLW} zA54!*R)5QG@bV|7|rc4yo?svu8QZRpc)?ETxMLx+d?V(dg&A&H4;v(8U8 zSm5arBtEDyj!>+kmOL|LY&fc5V+c0zp|D1t?r#M2*EmNF04in-kFY(eg2B1M9qGL5 z7D`#mt^6k-#uq6GeEt(48mP&<0Vj&;6-O9L;b8KT9aI`xF%B0>?wOd% z6EO1fNorS(wBs+TubO3(8Xe`w-d+WXB0deRp0_Ur9E_7`DCxLhPu$-!>&6s*TQ2tC zY8|1RztEbmVPW3XJ3FrIdQD>D`dcD1H;RW*hzdc6CG>Ri+XaU0g9l4ZKjy;to1qX4 zSFg9P+T&hwqLFP=9{q33kk~OhA4{0hCiY)1LZj|Ht%xrvIMk-3`n9B-%QDeg9w3u4iKF=T87K2ucyP4UKcbc+q7`m1 zWsO{Xepi%5ZsnT8<$yKue%zqAgn29!ok!dY_n4Z{D`;+ft7bqSeDVE?`K7DOu|@1v z$aW815w1Zes(b!x^wsxmDiZeeaB;WIe)4BR0W1d|-|UTf6|{N@y)#+zLW(Pv*0UJ& za_r592&JaHW9Ziv^fKPcT&paTItmmy6LucMshOD7zi_?{Y zpoQh^6n>>+ayD6a-ks?#chswU?ZAEqJd1Hm_WQ(06R|XZ%T1K=-5^Wp$Mksn@GbWJ z!nx}KcqkH`Fx0iI3D!Ru#X4GEbk^MN`RvLrB-JLwqu3_ko@b-$5QdH|*YKMCC5vET zpz!NU{m_Wrj(a+Q_xZJjub{-g zb7cMpWBktOw4~UUfHy>abDHL!#m2GW7$oF%jn0+9)-|ntTZ_`r` z1BVu^`yhMs^5cl!&z+GKQfnZ3ozuNcBoAwl0bapR~%Z5M?S6HYcJ zL=m8xU5IO(@xtkwTyo-?=Z{kTyWnM1sZQQ(lDy6yau|v=S)6F1XclRL(?%5${0N1Ja!AOs-D{GW;0+%JUW6r$w;mNp$OXvp_0gBJhC~T$T=H|{z-2jAIsOikL7a@un zpi1%Nlbuw&sujgj*R7uEaqs6o_CEqih`=uv-}Uj<^Eh_bRxQ5oqfiZVgtklaLj2cr z$Pq@ikyP7n$&KD4{D*FIc9LH)SMNW^%=-;3P-DM3Fb`^O zi8Rmu(MtmM*q%(xv;^HWk+y0*l%r;Baa_ryu{LE@2v0uhF`BM7tokF&ki0Ef_aluM z>;RmjwXCx8etXP3P~V-pHn*OJ`I7v@o_|J^%0 z`;LVCm+*EEg{O$nC;e1jsdM`dH9Eg-p0w6hh0W)y<7romU7QuYC@1FGd!h{YyRsKw z13JEZbH}`13dS}z*fS4YB2S0*KVr$MH@w|>}3Ahd6?W{3n5#(1$e^)YsxNc5`8#mqn~sZ1beMCrc;wz0fO!rBj}3+a{a*W{ zrm|~+6xHDjc{Bn}9}|uRUG~|iK^jI#_vmg$j1m9u@4El@{pfnQXM4T&-FBSE`T4xx zU!re;#{cBKS@*S`Q|1HL`Sh{xgBNP5+=oF7JvZvSpd@zpb^Ux)YzB**q$e>6Soz*& z&mdCp(fJvaF|Ycd=)?NZ_V)G!-Ci!fNHMICIQl4n<0aEa{3`^!3XkoiQKo?&fF2XWS$6 z1^H4Mtc}Z)z@%=tP7lTY&}0v8C-b9PBmte+18Q`$w0=2ecOpN7KjSIu(9lrq;Go?9 zWEuKwmjMgzx?`j1^~tLL1seYjNcY+X0CdrDsQ>*SR8d^qZv;nPrIaRh!XB~ z24PHY@C2sfZ-w9+;%e%%J_b+Zj>B@pE1}>muaD;_wExz5M={&ycPmQneQr%I`+PL? z^f?@D20ITF|Br7a2MooS*a<;E7U2J6T>&>nshzmLaJSk*WXczR|J4b=h z=0yiRJCSB!i94SuRW9_N*5?45F39HLdw0}>pnzjR>SYwj<&sVDx22%_sMKPzrU{fO z6L+O{_xt-55qEpBw|1RPeF59*Iv^uh;B$~O_+ZrEC+|X7Xh5-k0$P>2K4tpS-)yTf z+4)s=c`|YAvpk43l>41Nk%C+Tzqw*m78)G&WC(An+yC%go_hwMJ}A{Do3T2}RQi$@ z*l3MGEnM3V)05lJ0jwif&!gX~WDd~4E5@4(^xfV0UthULiBaH8!n~6j^R#aoi;zDI z38{OD-i=a$cFi(H1dj4r#NOGz^*!QfLB z-DdW5OKW!5ly45{!08HHmLw)Hz-zxI#Q~={A54kmMlhkGJ`|1qX?I!{sM#uIILpZO z4OQqVhPDw#5Bl?RJYDvDTi^eby21dOalwjy^FGhSolj!Tj~uumiwU&AVd!%-p6aYD zv_c;gT1|CF^1@!)o;nfzr(PZ+Ua16*HgC10u&GAo3W|RliZWv>Tla) zYgg_UfDU&aT`~@(ZeKMj5;~-9SqjDzGS;0^%>$#4uos5 z@aZ)-ugM|)yQx;4C(jQP(oZJRPc%p@{?NTR0xo&9Ez9p(zX-;y-evAfRIEQ@fIDl` ziDYJ{2a}50m0*vNhH$200~*^$y_h8UcV8l*7aiU_(V${AvJy%tMvNrg7#IS+WGjpt zsdyM^xRh*_DCoQRNza|eOyJ@i&*VKFNa%-!r#Oqj{$Unn3>C8MDl(a>mU;Pd#D1Fr zwgN#vICc{&J*0cVYkI5f+e#j;a-XAM);fu5flinTqzZi%mB))2jlrxn;1boQSHGq?=!yafg&|FjH}@?CVvk$A%^nW3i0jHN7ON*gBq9hU%@>nG?l7*vH5RU^V>u zUJ~|HzxKY8?U6Zk*|foHN@PvOlzeC14X!zHlj*xv3?wvDXz{P^*evgk5Rsbbc_pTD z@6{FLW{MRInaF!a*)*zH*6phG4d-7pPbN4j z$>>nT8fgyGq*A=7s0|a)sdB)6Mw<6*4R|s~`S|`Zl=G$aiO?GB5#?iJQWWu+!=j&4 z@V;d?+9~+L;xr7BIJ!=^wy}h3S!FW9qjlF$+qf=JZ(8n4b>FH~CVp$J<|#98R3~D7hM*(EdD`Yk0w*ScoMl$y z&6XqQ^ys6HaVNYipBC=^UbBelT=8hte>}@%RJ9bVMAto;hWHE@w??#W??zr`uScro z^>x1QszqFj4r%2JprSZUYK))A+Nkqs_Hw5^`4Vsk(aHJf4yg>YCeIkUd%6EzIQ^Ar z5615#H_lVo#+dlQgg-`%b+bhK65f^k&Ymr|U7?Oh&9?yqb%e)u2A?7o+CZl|=+09~ za(48J03SV2mQw&eQuu{By$nn=XiX7UejDLR={g7fSTWO`^_d^hj zT5F)n^7fk+zgq;W{&fLdze!(Z+O`XAoHl=wt{ZUepe7s8^zt4+UiG#^9^=c3n&!Eb zte!yk%-)0qo_O37cCogE!L&7qKQkkOo|3_D!NL#WSxakEPdWGJc>_Im~S? zI3!plfdkMuzklXA#u9)MJ9sK&&UlR<1Hv7>-9=rLa2QyIOL&!W1lEDWB26~p=(UEZ zYi)Pk7``dh@T)HKe7a`?BFTNb9(;ZK_*AFISZQCL9}D9gAK_DRRy)7B)E*PN9DyGU zg!SEeRjEs0&!(sqE^BUM+X%n)5y$BTtDTG(1eGk@4gHQQ=QkD8x64kI? z=Z4O+`;M>P-nSiqPL=K3QqzTnhOR@8!58mkBXfX?fPK=z3yL8PIx$}Uk)dTiNH`l| z1`l>RALidz2&Df&{#W|^z=E}!RO>qF1EVSofjbSsUQsk)<-gGUM6(+NTL=4G8>QWi zh4t+$g`v?rAfnf^{}x^8Xlb3FvXboYfLt>(#vUjrDH-_rXZEuLPxa21kn(4909k9J zJA_o9o37`Y2^xmQM?w%uEmCxMcvz2!2Zqi6EU>hc{C1NYJ^ucW31gb%>4KSA9}z1bqsBX=Njj_M!oQl+N{*p;vlIe74B|&0s;^s?h=eOD_W(>QaM?c7$tZi?do9|ttP_jNgZH(UBL3Q*s z*ybp&!`c~oX6Atf*rNfdfTx7xK>ABY0GshLxj2b(ZyHWE)J`#SXLGf#36<*W(*#FUeN>*Q579Vn94;Y86W&bex%GfTy|d%PyVx@A_im?QvQG_ zdD<;*)2?1+$kJQ1+>JimDwU7cV698nxK(R#`?zpbM6`nAzl@}d6q_ihtH<+GJK4|& zL0nI)B8S*ohuo-MSBo5-RUe`a{2n@l?0S=Vo_pO7-H2iTUp|2b@&AI-dX1{vKs&$R z^K$bmeq(=9I~A)^wa=Ir&!-?G>h?|HFIa3K98D?vBj4jaaV+b2~~mCnNMY|Ac_rMl9tetp&IL)ao;?B3G*jo7O{ft%os5kCR;&Zp&fon4M)N z0KGJby`!R=4MIUE75_A=KgOVrKhjcRT9UWQb>jjpC1bAfuBn=uY0^lrG!$slhQ4DU zcvG0=Tj>%!pYQ>LY*1Hid{nKpsTq~(xqE+$UOPWy8b3x!tsO5vpc8q8B1~C*E4`7i zNBQ|8NMyH{eHzJ)N}dv#<^G1jb@4|iUvjuw@{?%U}41EvHs2ARcgR~^*1QpJ|?8)1WvYZlCH!V@LCqfrb|J! zFj{aT)dg&pE+8E4%EUz-(;Q)L+0XTRqF3hReF6z>1{1cCPuE6&aOOBCgN7?SjlGym z_^ngIro8&SHOan@s>NFZ$C;3fW(jZJFJHkMGxQkL`qKc)7=fwF%RQ#X2CTnH{84yL zYB8K|S~-uYGJj|* zGu=!(yHi5*NwCtMG_d3_d2dkc6sc)tFZ!{7>>%g*SO*#8CeFSm#pySkLIWAKByGEY2L+b%PcQYM2unk zUSz_l=n9c|XMoL^x27j6IvGeBN`R?nCC*R%H%bzIig9z^3y!>(Q6I0cnXa-J1<0oJ zNB?>sAJZ}J!gUW|S_ECCEJG0E@8SO{BTUv>PL{dg2(IqG6G=vn>~vovwtMA78#R^(YOdS}esh*%cGG9%?{;S=Syu{VR%@Y2fPz+cfICS%KQKEJRF;K(c=}vM^xz zbg+KJl(*)Ij`&b^|8r`*9)nL`nL)(xs?~5*I0_u*flo(MbfCAZdYO)7vHKdmk5I{0 zZz(u(cg!tuUy)$WfG83v4#bd}1P$&AwDeBu(+~6;a5QaU?I_P*ePL0v!hgS2Q#+AiS z{p7P(#V$0v>2{+|51M55n<7=JQ=r5(wuKmKOm$6@tePhM5BpFdg>kj4>g7@)|@sm_d{Xsw=@Cl4Kw5?kG?sTNb9-!Ethr9 zJ4rdD?fslR)XT+1S~yk>b1xWxjpbvjE0~Kc@{9d4LJ6*M8xNkQ;&hw&Ipvt}&wT7v zM&_E7GX*&apw)BG3QVa%Xz^ zQ-E2Y>?7XPF`Z}@yDxT^;v)~vYj+J0aeeH57;r2Iq3Afs$GT0#5{cP$=HnY8v&!Yz z{n+D;AKckE4w)8I*F+I%#17_4lHHYhvR`0sjM894`t$Sbv+mi4`D9{r z{aKFtT>5MKXT(6I@e3!{Csz_#F3E8k$g3lTH4%Iv6`5CIagH(As>Y^XDm6ArVew~J zZ@AR!7%GB%xwdOH_K9O7easxz(Z;qo=vCYAe>`e+&* zNDLVW*VfLdnrVq>XIhTFJlQR-5H-;8R2E!24zZ(eGFoO`6P%&*KkcUVa4hreN{71l zw2B6EKp!1phCz9HJbGVnBu~E@g_=-$60tghA;@4RlyvCw&DrMkt62^3!3FL-&de*{yQ^0Z=GA+eqgB%s_rywCF)e7y#)DYp}B-i6Gl8ZHL zlKuIIZ6hGKsNl7QIy+#(OQ*OSn=r8e%&+b`#p*L2k_T=d+a?hS52mQLu=A9tl@XHGcFQDSfjcPH_5dU}%Q9spW2p8PNEzOv>B`cf1}H3R#s-gbcz za9eq{ysq~ELHN*`KwP)Yug>})L9~z6mfrthu3DP3AS_aO2SlG)nYz&t-*0{}6vcuQ z?{YY=Mh!)NNs~Bfe?Yg3v}yr_#Fy32#@nY$wCMgTZG};bXahkEhPQ8Jo`R@Z+uGU$ z@o6BZg)HX?@<{~MB7o#XHHIMnW)cq zvDX8vKEn|8U9;<9jDXXY%=XBweaiWT zFb$OTJ0YVFTXN-B@-omfWy&vel6J%%r`49+>!=~i+>;Jb%{`|iz zk{vb{NYI%@$7h{I$6c@5-tKvf^Ho3jYZH`1YTyOB02s$DIpaXDU``Yl`G3`_>f`^+Df?13>Q_;v`h9&Xo#`Ox|$ zU&(>DL#l;7G|F3(P1v0a^NF{qz()~rS+GxgR&g?|v*3}p@3>iI>ktB*NYWvwA7mC0 zbGOrhVOPteQyWsKM@VVPirB*Bj>h1MABdEIbKBuY8nE^ur#&3rcVJ3SQ$Za9V-~0I zYoz0nuu$%5t@gZ^c^w>2H}_ITJV!Cg^u*FJ`1TF6%;;%nh*s5l9YE&I`sp|Wv1Tw? zDqh?6ktX%Mk(#+L6U4>v*X4aFQBWX9$X=!fkC@2lxQ%w-(a~fE2r30SnVgYUoO>4> zoh=E|kJPu`PE!#CHdr%^D~`vwd~2jjchQqAtzol`Vi%NG2_SGdj+Navh{aZKG95Mv z-Mm2Y%OB>jqUbqB&Z#TVlQ@dP!f_;Q`6{w-V{_42o&gy3V_JyI7cqMERM~2AF{7sf z%@IltpQ~tjo<(bsx(MyWI7w&C8?NdUNq34)y>JQ;pvCQS@If6^a??Y|cK1bxUX|0xbIZU{s-f_NYWM94_*o)p zsdM}YQpSaqK{6sg(E2QMI@$d+{9Uh5ckm58Y*lgU0%<#ksL$r6)NCNP~Eco-vgO2GV@xiGG(Xz81h}v{KFZvq7Z8jf1&s zf`64J+MCAfIoh()V7WR@r(#+Huzv|liS;=FZtvC>EpW}pItGVgerK8QE%%;^C1c%m zWwn?xYkeXlf-=iY(b@TwP5_4u+gbA95A^cU&E7plH)!A0MmCOs!$;M;9FYZ~j&axI zg1*1CczgQ}NUYvC@-a(xBA$o9q|an#gN6;EmBIE%1MkrvdgeOlWJp6FG(0Yjl?|w*>VIS~* zp{V9d+0T2K@z=V_G!o)CqSy}lfAWcf`%3+aW!$@(en%UytIo9C9#^ZkH*9WAjVd)d zY%*s2C&Z~U-rYR301wOWsdEV$UH;(0ojMLD&l?GskAmnftQ5oF3|%PpDPNc9pAXL~ z`3ui@!-r+XV?mh)it0QLWTK@*7xOqf&`g(6Z3HJ%a9m&YqY+TLMS3AxvScN>uv+&l z+2~o4QtrnBB~|~aZRQ`I>IJ>&frGfas$QKYNmn z(GB#~h#cY8rg?dPLh~7-$~QUmvtlnp7&9hCyZGKh0*!{04(^vHrAd?L7xp#pHEaWT z^R_A?hn6#@mNC8gv`BI9vI){p7w(pIG?e_VWcwLz)|}iHkAGPp1JkZJME>}X zJrH;QY{_cnwmp=0oXH;TKhxR1zejy(6k}7ObhOh@frn6qH~@ogw@(Fx`KDv!H*jPw$Xe~wN$ls)x*^np&`vnzeH>8oN{m{6>VsRmv(Rqp_M3^rg=-oscRUCViW zRTu3S+`33KIrX8Z`_*D-^cmLg>ifGQg&FzTSk$$w-HJF56bt2VPG7hqTu(e=4ij^gEY`ZbIRUvtRkB~d zyC2I;n*MBi%*sf+*^OfUGXEND2*J5kPj zC91lR_49oC)gt8L;BxvF6(6o;i zKg2{F1&H_<_^q4xChLa1qSE}<3C=*Viug=k_1s$maCO)#{3~O@bykRf)o5EPscxEz{tYQ5d4;*1+51zYVg1=27Ezx^=VjZp>VsVoKF?sZK`I+Ao&-AY9Fu-ae-tx&b$dQ4@9c~uyW#p{K#5=s32l@5OAEmn-}XUfg9kbTuw8mv@-uw2 z?V5HO2jK9@?lS!7T6U}(ldGd822M_86%`fd=_UYs_4x|A((wpY?~CS7(~Az|Bq8nU z>T(g1!dadAOvJU)khFO;XOS^QFNJ5~FTx(BAS=24U;Me6Ik|2a-K0DxM&j*r&UNB- z?q;EDPOx>$-33NOAKP?yE8ty-Q;FSQuWLVCw&7lOHMDx89Mc%aKU=NE86p_(tL!Hp zHvb|`ZfX;fP_zeEhodVNc;z+Gz_6}#)UZxuiD+x}!QKn1vvK}FdqAoroQX&gm0X<) z%aB}SITkzXryB=0;pfhOeFzTz^Q4hhEF@43?{nE*?oLPpQEqmRhr6qbNLJ-kuW{mnBH{i>-jxO-fDO?+%?3) zln?gt?T#`??+?4(&nJ)8Khu)mkfNUC-{^u|FLR@aH?>~2iHjn|W3#FpGPJ!jn`H|L9%;}TO z7|j|b|4Xd1P`jBkjl^FzuLM{ z8P6jcUKJ`O?CZ444uKDpilSID?1J-Q?lPR#uW@C7LRs`ub)HP;-zQauC<mr z-%&72lLN`suYCeE5ebjVv`?MXip4c@@f;z=My1AEB|jL#ZvY}f+;vltpB#ChAm$ef z!!Ivzb8b3LF_3+YM|#~TMpT*lU(Vx9jO{AABfUsLsz=n{BAkz7qxb6up`$McZ+b$_ z7M7djQIVduUrzTg{=AbdVAW>Ce=vq83`0d~7+ux6H5Vq)%--n5{2%{s2N(DXO7u*aN zMQCYrB2N#`<=a-s`SQG&$iBt}smlHRKOB~GBYe{i>8N z6|BfNd1X@4`0oNpLBRJzN*K>pwLqv7`XlggXjJ5n$!)=%g&vh9Xgrrl8*K-@^Z+yuCmYCG8|M(G=qaux_J_rL&2wi(up8IBmw)57LWW@PuPm;oH*=}*=` zeU)hTbH76oPM4O8R zf~9_Wz)F4rNkeQs-&6&uJIXLx!4i#bASto!HcZixCVFtX(N-7FwWNBDr<=_$Pm@b` zwab-5ppmT#*q0S!zMc>*AHKQ0ezRPwj_RoQGzwq!@wa}8D><1G$2&@^$>lX;I7{oh z*pZ?~bR{c%fbabCvt>r9Jmse6>|3Zir?&u(;TA-!b*5mZ@>;OQc6G}S zO37Xeb=&5p5hrqcg69^@6zs#S#r>|Cd;CGuGrI{6xJ7CLZU zw%KlgOxW_tybCpZTIZE_NA}N=s;<`isyG(ZdLKD@!lo!ZsWEBoaNE?De~Z6v@Ba_? z3PWT}!(!G-<66wO`^QEpMhDo-%-~??sgWY(PLWDLh4iZrl$YI_{!p5i?gOwp;`65y z{21n1E=kC(a*1D(%_!`tUp64s{-Dfj!B6w zCRs%T%!i-UXRE}a-VJO5>UFuC0PZ5keb4$a?I4bnsDktzPqBfbC_PD*OMK6aQ%q?X ztRC?$^d(!&+~|h<<-F~?*T+lE8-7->i~V;k$F*b3A;I+2PceVIod|sICq^q_?8b>4 zPzb(}{`$wQ*C0j$y-ppHzKDHtoPK_Q@vW^_6HC&%O-I}0M&B^J(tGW;?V?(E^CfGF zDZ&*1)0bA(+SvDQBPrJFaD1^I%-16afH&yt{lnEX8ic|mT&(u&hwY5gg0q7^zN^1t}z$pokWq;nCa0k~N&!}10ELvN#$ z=%2?0IT!Y~eAa3nUHweDO2erl5EBXIlzWbPtEp*H?e`&+isXrHe9fcL+n+KC)2sNYh>+X-ML!T=DP>q%@v*svnq{$miOe( zKmq21(AHZtH$PFE*dN8Ye=Upp35I+fD=UVIIdq*-lHflNuc~m{V|irGUhK~=Ow@(9 zQ|N4O1I&ayIIyOc^T&to_K+F;_Bh{?1v0yg9b@&1e1Gv#Qu6CtZqxiZW|tBV2SE93 zB;9?8t-e2=O=si!bp0kRF*hpdI=S9{z;})e!Xb(rlk$W=&&JON_0o{UYLsYZ?pH1S z?0wMd`q?Xc2HFnzFyglCA>H?tj{XI?Kh@9EXa@(N>NQ?(kKjP|u-3u)I0<~iZM&%Jy)F-!C-M|0 z<^&rrmA_#hEFgOhzW=8V+t}X5$8EKdhEjTi54t+9Ks790uj>*h0kCRaUnH2LyzQol z@uzB-m_A-_f+pgi^{uP#n#Dv$;n3)FDXeXuB9p!dgICs08P=kg$E5F%@KM5pzQOMM zRx@QwiNNj?I`FXX@_*T{_5a(57fgrfk}}u?4!+CI``2R$TZ%0%`@`8wXeNuV?PA{j zkxJ&D?l;fjG6MM_Jki1*%1XivrZerKQM#nkS-iM`rqqf%k0REWx%@Pyxi+NCX-$Pl z93s}MpMtX2tu8vd(ATLWnES4O2nQ_ueE2|lq@J%E%F(o^oSzIlBDH>v9WYk*FG%i&Un5O?y{Yg=GoDyopj% zn#bmF2eO>T#qUu(keDT-Axm&J9 zQQHfx_keTDe~z?uqpQ9*A7G+Hp9vs6iB9&kMybkQ9yl32D`R!vh9O*1z7g6&(p{5- zP4{+Cp(@mxflsFCJj7#_lhg)j-8C=$8x;xToCZ3R-QC@P!`qHnyClaY->ve*JE0FYc?%qL5OuS`@+wd2(la)fUS#>ic7mw4ZagVpVcef^w< zrKVCffRfzaYLQCI*%)sKd&>-^6M_)og&|x3FG>1QK?XR+EOh{UE^vD+!UYI~_{|jV zUpAtXE@IlhXC5SqsqW>417i@=?v-c?$vcZvc5l$lh~n!SiQm`4YMxd^$MmwRs(uFC)F4Ntj> zI*utniNp)-+d@KZKaG?Ed*y{@d(TUbJ*J%7!>(tidz$7swB&QNV7|FGF7u0dY-7vc z>I1jif~04{G{zv+>Q>{Fdoi;gUNcq7#%`4eCKJo~r;W(q3Rwj4PSP0d+TcMheh$nb zi3O5K-+{wI65I@#I7Zsl(sfP>7B8GL!}K)RrHn=;C@FHpj8)2w6+5Ct6GI=d<3lrb z_L6R>g9Ydc>4*&(dBL+LZW?jOX{Y><>~}yuQEwz1^*Hfkbds01@^a(BpBe-*-5D|a z)(8-&7x0#MsGm(0!Cn@fHBJCyBdY+PXTgZ6%-QPPZ_c)C|JK6nxi2?G>k>|_<1pFh z^gNdMW|s7r(L8}3hPN}9pHJFyeWi+O{rE~?j(e#0y&Y|%oe7D!ad&NEj2|yYU$bx^ zxTMqdfV)87vag?>A4COb-HlV#&F3|IvBQvg4Pq@Dx5hB>Ovv)wB|vst^jeX4B<|L+ zAm?7VeqM?peu<|SByRAsGS;DkmhFQ0?DyMXllM-AOzISR|$TG-*kQ=S6b+b5bBJOJ;Li=#KOGC2nm6bCvftM z{G#9lg-!61=<70D{`A_&dy!%~kS)LYQ|LIV-Y%IH)|+c>yq9lDb7pCUBl`o-6*I+D zAuw{>?wbx$?;4C79F|58C8cN3={B7uUpuWlkePMPS-Z(GDXCMN2S-tr+NL?AZkV?s z$f=8oBIQ-k<`G|xypENx*ge!4OXlfA1os(b*|C3My2Gq^8wwsf=@;${!K0?|k9)(k z;3TqCgno81t~Bsei3Csmn@mOfStB>(9ImZk$EW5@DqQYIHP$2eYwq?XKUy7fMbKm| zG@1Ku_ku=;``CSDJ_925Q@sn++G;V0?ey*0Oo9J-s-u!Xpa}VsC=h8%KTPmQ!eT5k zq;Yu`|IYIgd)D9#4+>cZ;*T%W`=5TFI@~=6&O@y9Uy@9ZaCWHoUvKrA5>H=U2v>o- z-;{;YQ=egj8aU{m@p5UVDTIFoN6LJ4(ZsJGO`|CW>%KY9&}L~YHi+N3@VWqjkgQh9 zB9-wVKhe^IDz!1@H74hxZ9k`gQGMU>%0JrV8N5DO+heLT`z%cn>C%Mjz7$OyH)CY~ zCVMBaxAeNarM;*qd5T0T29f8sP^~-OTF9Sr51Cm-2lymcM(ar!ID=5rt|#)`gj_5( zYN@DtIPtb-z{q3|BPYJNppj7lrfh?aV4~J+^n+pbB-vfGAapQmc%svFIDo_ok#6V zy@MlI{u@%Eh7I9|!Y*!}6?9LoVsRI{t`3>Gu3rbZeyOtlMql=?N`y_nZY#GRKlamL za%27AUsy&|NU+k-C<57aC-n?7es+fn6q6qvJ1lB9(?AzVOz>&8T*5S^aom4E9koj}6l7)_QIC zp1v(bET(f5{8#tjL3MFnFTW}s>M>ft6dJGOxwCuf#JEXtA3^$mm7g16#^~tirJIZW z{A#eiL(hx$PtlKCK0Ni|YnYYTjvs8>uZT>7{gZvCU19hmRnSGw0wDw%E*84o*rkLatrJsj_Hvf0p-8q zZT2NEUGFYtU?QcW>jBzA(o{R_`|CR`Nnl{tM&}=RM{i#I=l%!-8 z&Am{Y31)-8nFUqTmm=Hnt_ehobG^L5zP`Rm!X8yVm%!Q-8D}c33bU0Jv{-9^6$ZQ6?M(q8GT5%0QK#1uHn|M z@weq(oN8g8vjHZ@e^{ zcgn}EiK0LPfl)lADi-9yTRA+rYC%#LJYk90gyD%7=dKlQDiIBP^Um!IqDqSVQaaMk-Qj7xMsa+Qntw)9>Ji#cQpw>L@7k zK~(WP0g@zfwmkb`PSifAL<^|C)@Nz}iA+LE-<^(EQ+THme(<}Gtp2qVByKBmv4pe>?#V)-}?O8o`oF4wiZAv$T(rYpEHXi$3ur^chS~_Ugh( zt4-0jisyv;Eywd4Iy~M|`vGRLaejYn~P+$g%_(z1rGc4bin7{p+m{ z{kw~tgd|UuxQA3pmPK$cR0}vrSXdpOK&32JvPK;L_+kjEGyU5hFx_E$vT6D6B>S5S zkWu{~EDu1WS_-i|yRohBKkHE%I;1zaQHImknY3mle+V?03|G@iQ}boOIDnRv2);c#$L9I8`KcbAaKye^8{_ zy5!<}&xw{|-tJ?!q8g>mDyUSHRK~DNuF8dkZl=Z7~|U} z?Z8I$7N^GBD&(3lpm@bELM9(2Vw$Jpzb$+28(NU#9lHNj>{=chj-H}K#6~diayu`* zY&6-$V+J0}+Wk7qy^cv60a3@`)SriGnbd|b`g=~NU9N8IJ(T;)HD{v1q}{ONFwefE zpD&w)ez-QJZge@%+Tb}$jFn|(lNRJxGg$rc6~#O(;q6_=40~3f^!JQwNh8oZo`N+a zKd_@ONTw&u;q3O#ZK#T2Xrt~012-O**z`pNBe|}@*K+L_yam<{W{m74WHOpNVXu4% z2g@Zqq`etEI*Ba^Xkb`D;{3N5)*p$>=3BTge%9K2#G3sM54bm)v41n2*+_RoxG`)VS2eM)un0>yGbnOEt4pbW;koH(~Bv%<=Ww-P4=~b?`K>Q)4}_S1_@d@ zibs<_^qxM(45duEkiS{g$Fbq>sny6U@sOnsDz{1Imo8%3=x6efsp52FbJQkkwO1Q{yVDL|&Cv#~C)O&b8ckUQB1}FLaqw#9u*}})9V;1?h%R|<0HGa?@ypvVB{Ftn@6FZ$RAW^^OS-n!hZ;_jTG@% ztEU;j-KXri$Hu;@Osh}q<))Ko?k)cAktr$ZU3mXP@{UF}xd6BARaI5RBCF@}L)jj( zOYeFa;dZZ6l+TxEv0Utg2Vkeu+9Qe54;S4!d!PFxcM=@}yy{8kDyQSn{3C>W)T2aw zO)vAxlY{#mk=Y?II0-)IXU?v@N(DvzuY%O1?(COO6G?xY_{a!P()S`cfs}jB2qRV@ z-EL)(-T3#~ixGjUt$)&+07x;WY3~Jj%RONlZXMWoZ%?XM8_M4<#z&rNo&FnI|6MMC%7^Pn1Nj@|=k-l2y& zyee`+->$>)azDf@{YG)q;KRiEXrx(~^pBp}cMUn}628G&aTQm1yEwYoR0evweh(3m5Xb)b8mg=rF}fM@a_rMs#=#l!vwEiPB1c0n z;}Y7{?@SQ-$3o+4zdyYjlr>clZ|}-7WeS0b3+&m^oPHma(Gt62^lGaybcFVbo5g-mQCATeJ$%;X-2py86jlrLe5+m4zaG>#K&S$V%`$ZvqU*DcD9XQ z?#gw4z133=I~C`+%ghj+72+bg@>}-G0+AS^=$_PA-k*pQ+di)wY6p3Gc7S(JdeVQP z-yM{HB|ZR7bo!F~&^OP@U&jS2!sv@u4m0REd{1k+K%y=PILd8nNzmj|M;N)sp$N@I zO4Jal{)y_g{Bb1*&HtNq1V$TE1r5~NhTHxRB=!q1N}loh`1k|>^!;=9{pnJ%*8gtd z!;GPRb3O%&9ZnTm*{IfIp~O|2jsEClpkNPv&;*<2zaqgkB5I^0$rMobZRE6tOL(5A z&6QeNTblu)R}y04m8s)|DF|rlTm;9*t}p@<8}am8v1<&B3XbG++54JC6&2VNADB~g zcIKG2J7Vfgr{H_g+^7c$Sc#&M+UTXU|Gi+>toSLMf?=u2#hT0Y85yOCQ`B2&TEcyj z;Sj#t5rtq(Y@$i6HXNxK6Om;gHFFnr6_x?Wvj*<((3|}2sPF_$ld`a9VdUZA;V~&G z#REX<{$Sx6^>g_G{G^#Zyo^1^B%&D@89m#Gs04Em=aPTJEI)qyC@62dJ(AWwMpmsK z6cjW#Uu#`^ui#zR_f5Z0$!WBEY0D6mYj|^CW%%$Ma6dE3n?Km3M-Tg5J_j@eLkS#W z9CUei&<6FW#0Kjbc3X7Km*#Lig$Lj^U2QD=n?-NgE3a3+hjkV*b8d?cu-EUui=!D1 zy~en~B2^v(U&4=35(Xe~MKnpQ~ns0iC@J~R5A$|&(+2qeK z(g#Y6m|5+Ac=vZ5P|(+Z$X43-pwCb3$4OY%5^kZU0f+xea5E1hnF+WW5@Gpen(CEL zz*0!uo+Wt7Z1o&$-uD0T^;SV`Jz%$YaVV4&XbY6$0ZMTw4uL|EpoQY@f#R+Kic9bo zDOQTLKyh~~4#C~s-GhAl|Gx9xoH=uDaDC1f zsg-j@V>_{g#RbEaV4N*mqa7}n^;a?s{fF8Kxkf7(yIC-e0;sj2nq#niPpe5hFJT0= zi}I=QBfu^y%TX%s0uoLhaN5n^Kjkj4ee@^Zk!=_!uf>*o0lTFv6>5P)HMRU%;~`-T zxPBF|nlZYp9gnU-Oe>VK3c4@SdDHs6nZM~&LA z^UQV?lrr-$`|8%8PrqMG&(R@ffws3dWcEeHe)jaJY5X+pTANF)2+09`vVV0Vmr(qp zC-jHMbQ+Mlq5)#I#R(J))X|iTKm?m+?-hj3y=a~$TfYHZ40Henu$}sgRkWrk$W<;? zQxNu5Q7nB|GRHYLK00ofdnTsIz_SjupXLT!jU|xfL5!Wi;Y967^kvevLpiBfpXq15 zlWqDO`jNXMn&}^Z+WM#jgOk){b$V0%2H!3^i!>PRof64wNO=uZFx0V%Y4NaCSp({o z9GJ7t+zeF~Wlkx{KJ20BS0_}6Lyg3M&BxERS2n$^<@z8IK3`*iJ%0)$%2(v*fMVcK zT{>zLc4&n09dJs=mtv+)nx&8lCQ@)5MJXnV@<%1T1hIchVaZHdk9P;ZxqOMcKp1lH ztV@JTo{5KsFeK{ogLX~8>z(puoqAw%HZU%8nza<-71d02Y8=}BZbuDBPvIA+`%!j3 zM{wr)J}RZXNsgu0wacVOiqt9C>0$_T zu*wv{Wk^VcUh?BYLp9N-+FDXpVso%8X01byG+*#88wBq9Bf$}IdPF}}SRP&vlR`re zpAN|6UavOL?oWq*0Dthn6ZWUoup|y{c86$5kA~1X#LgS-lA9z*jat(2mFdBvx!0fj zZdITWi`uMrob`y4(uGWSJ5dq+yHp?+R}gI%ezkaZZhc`(AMzw`=^+ds{#*<<5r=*< z#7^ifM(JdAw{tOT(Wj{w8t*Jl&${)3zrRO+HsJp|;E4q>mBKF~mmhkiGK?jQtXE=H z(vwTxnT>+3m2Xy>83bh^%7lr|S~5e9f3qG(v7KESD}B=U5KI{v3iKlsZqlb&(fyNf zi^FW&I2VuUSdj5lWq$?LT#$Z&X~wmD`N7DFH#Qfs`6H}WDKhn7f0uCHSFfp1D<7^&kw&inIS6N;V# zK5$5~Jav&|lX2*PP9LJucUbqyEn%zIdP|lPHd+%j!|}rv7U}`ET~FDP*7)TtTv#LV zu-4Cf(+g5Gsh5Xdg_cDp$|6Qtc zW9;|5r;5NUZxGA$FZd>QCVIyZ@KPCMw%sS*Nlo!yxuh(RBCnDXjbgaY%_RxwZ-&pM z#47LZBTcy=1#2&F&!VwPYxt36v&V}!;N3hv!=T*AJgpF9JqVbvv;0ws6UW6f2t!N9 zzm%T~cv|<`ZSHk5obA$Pq4e@v5(%azluj)U!*i7|X}6ubO=Cx%+r_9*CfK)+D5V*0R&GCQC%v`H^=o=z z)z!s?j8_#UB7&Rgr=7_Kr^X{V{h?iN7UEu@5`d7J-@M|f@w?toF5ot^OiRseZS1L9 zWFsFoG94{6U{i}<%FWOPe8>f>mIJxB z{yZyY`a+9_us|qhu>>4_l4B01VwHrUgx4IGF!vOr8FPQ8-H5rAA&VKS#Aw>0cAw9 zlJXC~4*EWKkDo>S>Crr}Oln%YA3hgP7V83P1YuE?6bat&s@imc_?#l^&obP59tBcpUcKtPWDQuB{D zT|$F%DUQ?q0wKT>+=}>DZ*>n>^?L(nqz@IJO|s2QxzvAl(sWXMGI}!Vx8Ncm1EuJ7 zxxYh668_$;={@zB*wanXgQHF)_GLY0_kc}sWpK7k%%?!7G=Esgrco{1z z>;Ken?Sz>zkQn}vCrN!)H{5CH%V)mnCCGXI1Ez;tWQsEfB=$ty_LD`fmjew@c7(IU z6|hCW$NSTpt<20Tk=a0P=V>M$nNdy4Znso>E2THUXx6BPc{Z8$JcYZ2d`MA&N5+-^0m}9~GXLKMDpB7CmE~>q!`Bn1%t!rrzfKR1 z-$@MeiF!BFw)|JVCX1EhcjTt_bApiU>racZF)=XUBK8Cnn4l&7D-0qs6u9osNObx{ ztQh>35AA|?2XO%vs&wd+Ts5v^JTjB9+%D3vdMn>nG5U+w@kCamQb?}-1&RhO?uz&3 zQ&OCn`NfLha53tMQhsQEO68|-!M!Uhj!q6Hd5yf*@!uAmljd8@z7rsq-i_qGB-Ybl zLSt}U)m3AH&-0FUsMDtFqjIwwRE1tm$ZeUh^kYE-zTTF4e!s3O%xNjqxxl*3dIn&4 zIEr7g&?hoR9uF5Vnq5dxC_Z^tFp<*fBTr#IoOfl`ihtDqGyXLmtIt*q*WTqDsLuUu zbXu-?B-290TYE>hYw}#mQBM1`@n2p1}D9kNA?) z(4bR~rvLRYxjWS*PtwYRXu-p^;)D-}Udq)9EDg{j zx_FSMK%I(@+@3jS2BrFSUY~ZA)WYSskamU9SHKV;xtqVyyP_hwjFa`l#{+;ITJ*`c zq1rcNV4TiO`(hOJy?9BV1&smn%D(PEtZb~m)!iU^GsS|1u@bH?OjPlZpxaqu!$qg| zR>1!ExZ+S8rE{KK8^%@tz5JQ^{OtjEQI0B!HQ-sMjM&R%x<|Y9Z|=l7LUv4wxG1V_ z7&SUO81vfH$YGcpq&Jlt}j8a4WKg%(Q zZ|*)oXVsXX!QPKQHW$6wn>>(*h+mZQ6_YLRP3{ix>%IS1w>m`i@0VLkA67Q;IJr0S zh@LH31O9-Gz!k}dAy#dKA^2{lH&iHbW`()p35q9E+YYDyr?ow!+yE9dRK^%Nuo`}& znyL!`ev(|(;W5yOf1e4*`Gro1KzSCC zvl<6v*w$}=sDe7g$nMTzBdyAPLQZ(Q5q~r6tXt4H?c~Df$tuyNgcn!E>*1zSjrzJ> zHBc)KR{_UfD$lE}o`~c3atYY_vS1opXnbM-4&qD#!;JKechS*w3)R^=7bgi+| z7mxQYVUF~Zqx>-|>D&3|GYNl)cGX@#(N7zaY7&{|aA_A1H{trwWFkUsRpG%+sRZVK8dMCZ+7*BnkE1~;v(mx zQYnbH^UPfTP|phsb4gsL3Co(`D(SlfEqRaDssybbi$wJ{`f4S`*!9Z|9OvZd!i)hT z7h0KI8J!?%|7H`}S3hboT1J8>(XWt9RIepKKj(NqB(OdKwROltY~I!M(E1-1hQGk9 zExhn91)#6}(5GbypufI1`;6$Jo^H#iOURi znduYpRXNU8Z0J%mf|tx)x6#zQ5yV6N!|}4M(WP6cPk{S(rN*zm0*3zkkon40EYJNB zSSNgIq1<`X%+uZF=_S+3DMsfsQdM%D0571Fzv=4OY+?*WGQH?XJnvAo|LkffsZtRH zJlrn7y}OWg`zG`>w$bvynw3uE^3ARqb}Q=;z3F;(IP|n@(3IgZV{X0ppK>8yf28{8 z>;ZAW)q$bY6I2Ao=*y#dtlMoJbU)TMAyw7ft?!*~ex!G^|C;bzv73Gki8r2!Uo$~9 z?uY^xkF^1&{}?tjz&r#(ydLnWo77tM@fps_)HYI|HtWXw@lB20ma@~N&7V4}34APk zjaLf~=M^`S)qnN9)0u4e!h4ct?E##vSv&|pcqv}b?VLcJzI<$)r0fm#^23JjG|~5F zfI%eV-fje|82(LpRY|6TJ{e~iO$i>dCS{BCv84kja3nf{L5657#-zpL%~`)E1S8gF zcgB8K%S8xlk7gBf>nveKGS^X}dY0F^pwG|Y>wJ?>6M}h~4yf?^($bvu`$I9umv2hR zkyOR+{!zbP_ALolz|vn6#=E?;xsySKEf{Jk&2>*)M`nEXzxt$X=(#kpL-3ceP zO*rb~R)l<{R+%OV0`lU%?E5wNEV*o#B>dt_l=83DYDTf8${VToA*IRdWncEY_cm@< zr8{BMVv}`0+vQ#&>e?1{Zrg`$Oo`%B31w$PgnHSgS+X@+F3(Po-*}baK7*T9AV}GE zm#$rk3v9Ar~LUwE78n#{xINY;F- zfbs0(fn0RL!hnTrJWY6L_((ZV3Ru!dIsE$pv`jU_(imqiS7&+aG)Ew~dHga*z$a!b z=cA$mINo%8sME5_S?k+A+0)qhWFn3Y`uL51z4T@m^E0Qzk}6D2DPodIE#U7~h8 z|Ay+1Gaov-UVa&;eZND<>1;D7yj59m6*Y3jI%jD&rC2T7P&%jj+0adkZ`Q1(>(#;i zXhxA2sex%x(L%=Mt?$c21Hhjqms8dA!-AteKp!^WiqY>-z6=;nMk%dlE%Q%g)y8y7?`?q;+bp z&3<@S4R4}-q2Ygf={S2S0Nv!JUt-WyF6^@X$zwttn0drq(Nx^ngl_qtVIBEVx0WUJ zNKP*WlFzQLu67={^&@>RdEnFOm@lbZwpQGo$rfY9!~RF-UP_ggh~4if-}*NZ#g_n+ zS9)cUlORT(6QdS*<0W#uMex1y`%HWknm14mz&t$kW9|nf+YD_<5EVaSY$nNtCaW{kO+r5VJIQ}>Bt0P>Do$Vi`<9r|3z{V>h9B{9e` z>FQ=Njl-MuJC?(|3SnNzNc_?Ckv?wMRjr|k!utmWL(ZSE`&xjzpVCjB55=|e`(#GM_C z(*S(|C{&BgwFzHw>Q4jFvSh?`cp|s0b&yYXl*jx*%!-heHu$odR}iB-R{}+Ns7!^) zhAbgZC>IGKC{FhPT2LPL4qUGF5&fRvGT~M6&=c60#6;b>k>VGT_YlR)p%mJG_|$Qs znFdVRnl10X7Q5%bpy`aWA7kHY=+Op7yvqq}P%U=TgzCCSUB8$J_fu&Ks@($U=0 zTh=IJ*IvoT{F2+zP-7Udn~uRzfnvV3i>3M(HTw73e~4(E}L16Y^^W#MWRsx`5AZSGSS)0l&OMx6i|at8UoGu$qlE zCCy9n;cr4noqdYO(PpZ&t(UdWZQIq^s-KcX7wD(1B4pedM|{aZ3kQ|j>V=)b9Z8md z@S%f_v7Ei1Ep;?V*nftFjV^g2`Xhs)WdNKgU$tXnZ2kF-h@hHM8{cB;HwOE`)OY5f zMK=6IksE?&6hRl!RU;ordXt^cjH8R-yx1^sPFt6U%5{84Icu}G4c$lqc-`82i z(HmfHo#W6JSPq+f;c2h;;|((M`{x;t7*-4C4&j`TKMBkLVCkt#HeL;v6D!Z;DBk(U z)qlOL{$?MEIhG^4f97WoBf0*H5gQFtx7D3o|Dqk@l6>Lw0iulejb~@Y$w)7xk>jwfb9^pnoEStEO>quf!|J9)`1n~{ z62xIz`O+k0flvH^pRZsMzQ0@ieJ|2_Lub2KlDWd2SI%e#E!^|rXHK(^tdqg-?}&>z zztlS4x&D-!66L`@Kjycv-r1o9CgtWX(+opxKBc~$MrVt~C~w%N%@RM`9?TU8Q(bic zYB;(!%jHsG_n8p)OzjVw$p~{y2n&mnr^`Hn4l)^M_L!>^8qf(A^#da7ohs-12Pav|GLy(+pd#)57B zDm)C6V^)l3ovJ@7zN2nr*TIfpGTHK9(H|HI{rXtvrF3hR|z~{Pny7)ry>J6DvWRUD3B%11I2MWF6la`M?x@J`{J{Q;4_*IC2n| z(V$P!bUH54#V1><%Zyt`3V{p8V6u?X1cvMMGb7nIA*IHlQv0-m*?*q(zAUmP3faF< zq<*E9WJ>_;kbh#OA(OzPMOZp;ZXHHjpSDNxVHD4lX3lHY8a+Or$~Xgxj-Q2+W_>?1 zweL!B-mtSZ+m*Ys(Q*ZT*GXarx-i(>@Z^IJ=hu4NY<1)x?&W`7%%v@lM?NvTb5{GKT7nKfQ-=n+CGLtTvT&+0-M^wHbNCqC^B5zKsG(p%(^ zyv#3%y-s6?;P?C$*QG=Z0)+Snj?PfRAH$TgZV65Pf%h{yY2NJq^^+%$=g^NI)O>ns z{mJCYuei=VG0$8vH@ZDQnHMqooW3-SR`E_w$!UtX@jT&ePGsKwA-#3wd(|ncz8+ua zV_dyHKD-KN1yCj;-X?7OK~3||rpKy+Gv??lssjgI1EL$waF{vy0jp6#Nul(Gvo@bS zlOpd8;-aoshRtu~rMcqFQ&HD_NOp_&Z3XJrA6P3li-E^#_~G33#SK@-mm}sWvl7O5 za@zt=jrvVw8L9+pFJ%!%ayz4FtECJ}A1mD*36ab~%5HxzOA<2}Cc2!Va+{~zqu|j< z(4zL|wRZpz5UhVXAyKz54V|K|zqk7L`}eM(AB}@KovHDvn<+rDcV`#zn$^nEe?6d4 zaEp$wjxk#t86H#ZDkOQz$|(YlHk*wqf+R^6j2!c^+~*fl@u6>+l@Ve!qRg9X2jMEb za|yq`^e32#%_b5*3Lf{L=3GB6LRc?LghT)Ju^Yi85R6oZvUE4YlHv-Cy_`z2?DNru zLw3m#K-e!20AMxS%SR_U&6_Uhe^f>6%Za0mRmz>;5-|%O*NHs4kY?;J91AJ@b;C3M zD>!m|945yg=to*1BX8g6&2$GJDb69yqH5WRn7s5S=W`;Am!gDDi!3OkoXnyC0&?<(R954+Lz)C^y{4h4a`qiJoUPHeP0M z-l_vsfJxL-r!3!=L6|S)4SUqy+?)R3+k3vuo&Sb}r^+NmbtXWw0h*}SdF{n+VM(#X zh@rMZGREv?12d{QfkNPNGjwQBn2Tj1P0)EAs0BE+u%hP*TNkJDVe$YpvMxby=bJ=+ z%N>U%D3wR&sl5HhiO3Mn5yK``|bgrNsqInKU}O6 z&_sBEG~2}|Buvya@RagJ%`JTq&L2KJnEJ1wpxoocB)u(mJx=~&NmW~(#yBR0NCrVh zd-dRV38X(G-&u?OwEhsML=%K5AuD^7l_UAO=_-%zcNk4X#LHZFS?`1=PqlWM@ADN=(v?AkW5)1JmlDCW1a%lfy^8zwPDP z)mq!_2Am$;)|0H?%jEZ@5(X0&}@Tyi4S09E)bQvDzpuRb4k)wh>aE(!DmVxD?XqqyZ8*OQ_abn zX*a&&P{jgm4i`ZB`2Qfa(4TiP4?zeoN%{3v(| zw{@u3Y0+%BI{HRET5D&?3Z{-ud;jMKNbYqQz817R4)J9^i_YnOBRH`DruNP231v(c z3`?zldBe%jh<)??!a5eD_$viEI?_p*pk_gg1MN|v82zk3+-DW9377%E8IIg+I!YFu zJ%13ERWpt6P%md=J${Gj6i_Fyy08nXv4gQFNaH0DXA6>16+1+y#!GhP_5&SXX zQ=lqgf=|zl>bm6CJo9fsSG$MM!@{g1!4=k)*Ehp*)4&_^pTX+$g>;O+?yZA zhH1<$jKP&0BR-%HtN? z>Ss3YN-?9stA|FvSIQmE%U;0{U`##wd;ZTxCuJDV;az&CUP6#Z2pB(}_c#AIL+>i< zPuwt%E~{#J{O`^Ju)O?*Y@FT*a%9i9U_$cbCY5@jOLE^E^AK2@ady;N>_}oz+dQ|$ zc>LrrR)rh4vx39n2Rxhrqwayz(bulY40(!f;T}8~bS}O7=IN*XFaB!{5Owa$<%+Ip zL(YF%eC~Dm^+0AN`IFYWKfyQ*yw+#@JN-*HG^RVL%6ToNm4C;;_7MWo7k1_5Hn+$6 zrepkv6yI)` zk#B=X(Tr2=!!Q0zk>n@V@ayKa1kEol26bnTQR!RPYw;<_2d}wo(`FG7y0gNBruzFM zsm^VA<}8o=Pd8vT1;|%;x?XB5peCl7O-WYWOf2~4k3 zY0tO&!g5625if5_MP0^5RV-pXWa;Q*4);L^ydSb72+-8xxL$lAc6(oxgU?d7)>m&) z$7ov$34eJmCL!8TVCzabRhAso{iE~w(Yy(Xl1Z4gD9I#jQVCKS|EH+5nY2XEKy12L z3@rki7e-7^_7_5uRmxKqbWJ10w*5St7URRga>a;RRZ&f!1r z2^J4!o#i>27ZB2@>E3}LgX`$!n$Cr54Tr#t1tXa#W95hAwjlwxK;K_Zpx14JD1?97 zeF*gs6f>VHB^XKKMc+7_3ED-q*{58vk~LE!ynMGS*nApX-BL!3Hy*^8Sm(|SvtN~X zK8^$nmMEsSn5>U`vMi)$o#x^8hI*qIq6^7lOCPuWgIdz5o^!yGZ$6o?xyFNtgp)7S zcc{%Vc_`xb{0IeNT;o1^-ky0{$b4)RNe@W&cU8HU{pxI>aGFJ~EGT24Avg4AX3BFQ z=2n`aO^`?&AwWtUK=zV06vfy-i6bLBG?2eOa}#Oa6X8m{F->ovl{AkZgIl3`8VVL5 zefD!tIBoq?d>mBHhA_Q;E0Ka~CN~7e$77Vx>2B-y=L00DWn4P1ynVN%z&;7ZyC=97 zwsE5w4`SO0Gahh|S?Jj@iB_yxKtbe93ab$z2}FVBgnTht=}t zJxifcD+xzV{!ML-g6-bs2tUuC{_79$uI70jS0!J$yW*NPQ>1-FkoascacHExDw1cyT>f$O*3a>j#bV;ca z7_nq>Y4>AncNvyZ zN8G-j-+z6eppAZyHt(3}H|DUY#`s}N&*18{DO)#BfejJzw~pzl-Xs}}l4JsYBB*Yy zppM!*BaN1fB0s3@;!I`D?4Z`CIT>Lp!4(L*$kifxPw`4kj{YZ>%VxNv^RqP`Xf)IH z!rY{a&GUieZJY-Do_7A14~a$^Y6+EE(e}$v!!ae$h9v2isRj)DCqg^j6;p!N4{z(w z;`v#;2Ghi>S7T|LU`*Ipthgs%Rtd8B-%Z`uEY^Gj_DNOVk4iVRQG2L2^7`;8bvrmS-@d*0fcVxGMbW?DzQpFf=m~pf z66u@g3oEp{X8(cP!MzajF$J2y*xL+8sp;=)P#x$wbmY zBeYqqa!Nkoc0>TM3Cvz(lqEcI&IOxIFvd)VD8jq(i; zlp&OZgM<6rnP(sV4)YbM=u)z{h~9#Nn-y9nr$pj^53v3LYSuJ;v%C9Gw7U!2xGDyA z?J-OA`|Yr55va^osm7}!Aa>_wHS+6UQ*HIXSGqQ3{}LYs%6dcjZ1gDjZifHo$bT;z zVlvIhK}FY#zx^#GTZ_N%hPy8Qc60X+{`DQtfkuroDICMS&X=ic)~x-x}I&#s};+NT8LJ#^Pf9+c;wKn{odDjs|l92 zJ7oGA?5e5~io{ALib)-PdGq|9*@^CFPv~!X;{M>y=XGghMtTZ_+)6NMif-&&GE^5R zQ9VYCQMsv6_Lc)KZ{mCzrfd*ixhxHn$>kI_ko67!xK1jMW1-Q@@x9@!KQ|>?!sqNA zSfoax-Kp;%NB+lI3sUG_8l5AO<(2!mwIcWH==t+L#bVo$d~bu?_e`ERwkmcm68e7Q zC;D)$*%Bev<~k|j_@<-6Ar`j`s7}3=_2zy6Oh(y*)zeOve@ZwUE{2e zVG4X{$?{gZm|M+igEdd+BDgT#c}KVe}Bp9V1?#BTaFT3 zw=lEdw)twx-~rp&3(fDmK0<$-QJk6-OkE*;DE$A8;tt5C;*fGXd!L$ z`4i)T<9P>fI3?w{h$dO{fPb>HIGyHUEaKnZMwzxe*!|XJ=6=}H(_SktZFff7oTf2t z7z#-JHjqRXiB$dQEvKwUwpc7pb~z2B)Z5tY_9A;24_dsLte1)q??q0y^Sj85gn``i z2}&ds^gZUbvoEV{!F+1EE&lO(?R1}|->kFm84$l#zBB4zd-@L1brVY9E)zV$K2_H% z979f((i=?CA`gDyM$x9gQTK23saGSYy12aQgC^xqYK!wuD2&g)MfzYjJ$h@TUv1K+bByo7trjSk@-d9FP=H_wT+ChbedVC zDp%zFyH$iB5G7Z@-JB`9l1hK7r`StbM1%UXV-ftatt2qX4#f>W+%**8I{W^p!*i3h^djo$ zYKfXa;o)rNJo&MqlOQJo^UarL3KxeTM}KhFMYxAPi|H}Zt<#-P>MTZFOlF-a3|X^MPvo+Vu@Hm?M4;Aw%xufXT1lmg zyC0TX#q+lRJHg-L8HXNjzxI z%IIKCc;|}lB&fT9`&>SrDLaw;K#4gl&SUG9>2J#MELH zmee4{HW4`*#ItIfqD<4$3G-?SM(|FP3%GqNPGjT|3b_mv<=#s)Y@^-z6n6CNjUbFt^N=4s@!;0^ zeDrS;&#RWQqqg81`Amb-^R_zYt&sk_tQtW{^QthtDSk=YQ(2vM6gklPDk~N$`2uNPlI*-ce3L}r+O#GOU?8$ z9XN|tZ|Ga$-kWu}f6!f|7EE1Qt`iq>_EDNtP=rRkI+}uAz6_$A(V%c!qQ{|s<|e*% z=OzHoxN{R1vBA-=?t1gS?F}c-hG^-GbaIkK?N&6|>es5M6i^e|bfeXr=5-`FN%1lH zZO6pjzn2AuOb&y-MVxzDtC3#CH#Q3;Gwv6)9{S&Jo+GDh^-;~}WP!YiJIQLAtPLi2 zMUh+HXc_)E%Y<|Gc<{4sIv+=|7q)c9a{~z3avz!PC6cq@7gxz;iQ12{@z$Zqt@iuJ z>Kmix>M5P(M-Q+obBdO2QTq$;Km(nV+t`#d>h1g1YzXJz-0H&okMrH{^Pcmu5K!ZE zMR$C_dTroQ*FT@;I^Fdo-3Dm`Y{=|u(wpARpkyRJ!@mb(Q`P;)xfj%DgPX-8U7PGG z<#jC2Ntshu>CK(dhtT5j!v79@A+tBZ|5`q%6ssm{qx5m%WBf~cb8CKLP=~p-O|8w| zYi40tg@Lf7DV(csb)cvunGD}9GEVP5L^bb6MT(C2?wu z@592|r8D-zNZO~lW#~sw%RTOe{{Gv4?#U@!-}V^%TmtLuBfSy5cW%o|*aIRIVa-01 zZxSX;{NDb39@FGZc*o0Wy@xbOY}AeuV6wkywNeJb8F}f9K>MmjnHHG$N=_Y)sMk(a zzAYs%U(NrKov-^RZYQpqW431hXE-*ue$q|dGKNH!jHSCT*8Kzwt4W{E-NkJM+!>O# z2ZtuhsWHw`$J6EJ@=#@E%}#m?>$MPfy8tG%xK8jMwx^=Yh{J+_vew?24vES8KXJnp zyN`EUVuh@bv6HJ8y-Hv~?QX3pAFZuEov!R+>yEC$kirA)e%_U6@`qRKdcXH|U?f#f zd;R}Yp6YqRmm9YPdsXbt@C*nnvHj;ynh$yjKxtRue#n2dv@cYGAzo}F;H3Zj4yOQ4 zLoO~hG9m)Z&#xJW)zRMmA})HZl33eg@M=Ql{=uv0wO1M-Z@(iD1X5`$JXM@jv7H?X z2FIZ;w5V}p+2vJ9$R0|oUx07w#PJR!c30ZReuG+iT)e5y(^|>|i(1Ga zA|o4q*~66rzUZ$@2Asj7s)YFVl6@*ZX=eK5y#!OogD+MiIU@4&^M8o#HE6dfWPzEf zfacu`<&m{1FO$4s^+FB64hAor44ZYa1O9|3Ky)AJLcT_`W(*W>{a1?c&*>>#97P-B zdK2Ef`AZAF z?U+~HABYH+Dt7U+TG>C(*N!zp7SSoRVfs=Oa?B z9oIwP7URcA4xD#6@DIUsSykw>tFuTIV@zff?ckLRUG^(tPw>?;gs1jpV&T4tujhQ) z7Yjdn@*WbnclHsXXD)X5%XAIOxK@5heCq|Z+^3MT!VnUQXO z4&!f+3e7|swVjJmf2ueXA!;cgnJeuIn0Q~@T1t9L&Vv{Z`-iO`F1dJGPg&h1;z|XO zU>h`z(=59}e@|h>a>}2#pMo&YEaT%oWnPM}8tVkg-_y+0>_ zLv761`8k}Z3%acK6rjaR37vnGc;@0pD=1+;_}OdB+26?^q0*6A@DqE!OZ*slmMT|H zL!+=2qHHyVysM&wowtj_Q=Z%T^3Q<8ypJ#G;tt_Y!Tpy5tk8K9*4`jIt259Qt`pH(TOAiobsU>#{=5lD>D;_%Krm{bb^8v1W3~%R^5G z0I;D0tK>lt$*4ZG-mV5v)ORUlGtJnhMgOw7y}aI#!L(M23+r2cA@O{`UyIYKX^UWT z%z06*O*hEJ!SK<51^X?;$*?q8Rv_}DymAZBp1=P}Xv!S-8eKb(I_ zW&0Ob{~j-5z%=>msl)$t{W3UNj+#`In;k5NIzZ{Z)_1W>RAd<^S68?H9?ufaEd!6- zn1KbtifGErCv$$V6>f8%O&C+kGcI~PrP$Vg*UxmDf|8XQ7_wr)x>DkynJjOAaqa4a zOEJeCV|C)rin%I1syJMx0L^fWSg%PxOCXeQU3leWu6P&W`yWhK2DT6<&dxb=r%}g` z_rp?uFh`@IJx`KHO3_@V2)wdlcnC3yMp;>g8Pa-Eh8L(|;kNbJ?B8Y|^-@44> zxgB6ER1LE5KmUw)*&@ckipJ4{Uu*I-VO>aru*N8gjVvd304oWlj&6k@;hS7;a@r zL5G66knYRy*S9yNRwrz4lL(*S^&=SA%0l94=I}1sKZT|=iey<^NLhbHQJ#WiHM`wR zd&;Z2&XCABekw27zL4_-kQY;L_f9(25@spe_nirW%n+@ov0-^VWxPhSu@9Ha{2_f* zsjs`Lon9RbJx4sdQ-bof@Qh#K!CzPVW#m*}8`Z^m+nr*1Vw+OD ze{|ic_es6BppH%S3B8lNb`!uv6@0QLbXA($#r0T86ANpl7X36+@$(9|2xhD|cD#6( zaoj5OF~E^$+?p_Uzo41tCyU>9Vvg2y-bnLuDcw6>4j<)Ni6o-_ntKM<5el)R8l%Cl zEBH?heI0xaZU?aNeVkx}1$&wyf0v$C`Erai#K5|0rYFSA)n;1P4`i^x_bb^CClMaX z@I8SYMC!3sJV;UEZ9kG{j`pW)XaRw<@EG!3ht%i()I3wI~np@1mJlg|GgBj zA8KZW9BHD;b{guV@itm&iw~8%$qtYf@QuCQ8%7V?$wEAy>SV_O-oz|Q+v$N{VWzeR zc$6?%A)BYVu+oEVg3FT>PP89^%X1_+q`taS{Roi#h_lvGZCM~n(Wgwa zFQR>&eS@N2>fwuZQkWQ^EpG~K7k+WrL`K%tGC(%_2gAAiu$omc+dXL5`=&8%5HXkz z3azemeb9GilRyLZ+AlzvenU&e)w4IzJumwQ6`4nnl?!sIR(CR=W|i^swNJmIHr-c< zNni^c18;qe<38zyF}OubiX_=50?fo`S9ea?uE1J}Z8`F4!)r6fp6wwP+AtqDid}D_ zXNllVH?leQ*N?N=es*7lgjilbp>!&pO4FgL4*zpeI#ZoflYK+izve)L{KeLMUGNWx)HoXRt_ z+UlFXs88sNA`EC)p%Oc5yJ$d+%=z(3{k@y0W5T+URPVG36|!)&KXxX8IcP^8hKQKwBxw zjj=MECHWG~5#S|65XhdsI7qux4&bOD=Jrl3Z2Cemi5$NAJ9Vp9V=Vn4-B=lAr~eDC z5_vKI?p!~<8)!OUYVy9)$f1Dr%R$E1=zil<%Abq2-x7j{<18=xSW0@7{cb)j45M|_xy{=yt5EK<_e1HrK0ct1O6YQRE*>OHpHYZWjc-ng++JV5r4aGC zF1>~Py0^~EZqm6Q+NIYx&e($=h>5_wi%CSj7{e3eev3G7D!i0As^2SS>H6DNrn8ne zAqISxtussODb?c>NXJEL7>?C{dem3@2@fKSg_K2z-^FqO<)QXub)KOs z%-lL^xQKF;GhfR$UXxa_&R8U079Gvc?vtxpg!_ZBm8OH1&r_CMN#o$_S8B2{GQlgU zn#PrAuQxUN4m?BGmAYxIh7b~k?--2KgE2Rgn12O{-5w^xKMAeBc|lEAqh&j+0j_PQ zCqBJ(#FI)5+ZS!w=CePz{rWkB@=6Ptv#m{JD{8^uX~?#=GWg@D@KXKzjYDI~&8Gwq zboly>GxU^pOGA(fs8IOic_k=GjuugII)jG?`6f^+Lfx z%XM2&$UYIETydDW+feW|bL2fnl)5tHi-_2sy6NyLue9YQl@$7U`<-hiSE~y9hvcc{ zc{;p4(cidK15YJaiFn#$U%&-D&?{>JGf@$AX} zA6su3R8<4F{feT1NVk;0rje9RL11q>q@-)p-Hn2DBi$k0-L+{p-7VeSeb)Uv@0l}a z=KaRUJ*=5E|8>RhdV3}siMh-2O=x#gqb`yhG?bpCFHp%kMA&+6mE$r(win=X9{8EN z^Y(yWYLiQ{^2_kX_9ZqIGBTWzgKu32sf7b#j=*bNVFz7gjD1Jv;^(uZ*a0Y~w)pfl z5)U4v)V+ccN;$j$=OC{AHN<)=F%UbrU+@!Tz8T~-!0&TZyBqG;O3=>6?6j6AA;-}| zqy%fjyR)_29$PkKUln3yf4T_y3h{BGCO1IG#ZsNO#=DE+3U9RQ1-c{xr6{)3&N_c@ zE)of14w2It4d@0TB-CfX!^JC9#5zq3|GdPr(i~dpaQVvcE>?cX5cR#0-nDA*&|-NN zex2WQ>$!gQSRp{lLqg0-%{+>Un#Odu`oL-!O}>d4jM*zuO*_@7RK{Tzp|xF!U7X!$qS%74jc@Iv))wzK&`1sIFAcLojW}O z*O0nwRTRf{hUk*;-zxEmokGcOub498O@*<_m zs&w1p5lr!I!z=RHKXnNKMl6LobNAcgs>p|4$ktqXmD?a;(!XKrwbZ*dy)fYu0UxaZzt#LGKmxHT;(l4bto|u=fN+ogXh9ORLS~E6iBi|8UI?` z3g}@UNq>mJT1IeK}~Lwt2DaZfO||G+`Nbx4h2wj%2p|Vi(X?JfPA} zupdMF0ODK~tau1I@1)m6$B=nmet25n%8m5|XQ-Tw5%J3xA6C&+MhOeplJT{6gtd;9 zQ<7c>y}QjJ2#YfCD=`IkP9ik@F3vPG(VvG-kUJ(eph(cod21i_~c^jkTTAW z3)^8G!;4LNRWNAW1^@eCT4H?w=ocR*fxYvx+dB(p`NX(Z`^y@Q0sWQmkNm?i zN-S5MSY)jdXwoFYH7B_V?#`n+aU>qDhV?yNal+81U%Zxbx88$4S`Yh9Ap zbxXdi&iI?oOHE`ZZH>(#M!7cp1P5_((Xi&|GadK5-yfQ>R(ubSYN)iRc?}8DTu(Y; zm8$z^gBydvjfKK0XyT!V}}Vo_ZnKN9Nh_EAMP#oOyKWWouUR z&13Lg8!*H(mb!_`h5&oqhSa2U3GV}4FWLf=muG!!`foxjzQPb3K$_IyX;oSgR zE}@2j7{?c`H>Vwv8)9u%B+shAp2jBh+Jnk#8Jv35!b|U0e<3!9h=12lmkvJ?s3fnbM}zhFk5Q!^G9Hbb={UHS2_XEPGr4w!{;0s zM}CKEBB`#{i$25_KUE4r9EOuQaddTcK+;4&x~(D5Ok)nzq}d1H7SV=ew>hOO2ow znwmwQiMi&4DF5SO_2}kSg0AYOSnJ4C0RHD6U|?I7vdO$FuGZ##wS7!3uVL>8v!w<* zl|}L@?YV|4;A#bYkdN#}K`m#!#0<)e;t#*Bdy2gXrr#a$3(Q*0rJr?i#=ihd5DJJ6 z(83wRA~cd}yczb{rh3-rUpIx_sc`eD0>xXVW8wezrhHNOzghQvRI7cxIVp`kU{s)mMqe|UAt zG<_ctC8(fpcw1!?hHEXt4GB{LcBtBvQXa>J=w(KDvw%`2IKms!LRl#ly@ZQG2j@v3 zG1rnoj=q4vnenOm9;gSO6}^nFHX-a6f8Ba3j4jZx@jcH&a}~XRf9dB&QG?@mm3*>t zfD{x(ak&NNYJ2~6WGcXX`DGs$JuswbT{BqBn*1hQVMi#_Oy{?2HaXyoeoK3Wgo5~Y zf+GK$vC!qfXZGO0yRG&5`+}q^*7D7isMI$vIJNe(cg)h<)<1;)(RJzQ3?hoN*y~#|S7Ijmqv!o?>KPZqb_pcMXTB zJX$Nn6JjHI;zK5OKhNoH@tt2F=6}v0k#rkI_WpJZY;YdfhrqF;c{sR5H#b$jkN*al zlR4MFt87gkL{HP{0`AC0&*Bzm@*e?<*I=9P>M#J@Q@6efV{IV5!K}!Y0v!?ZRK1v&;8|;CH9~Uo5-{edP7Zd)u zOu+DPeh!TDEC5d-TFpXimAOVd-t(w^1JRn#HJD9?c=q$!c7ez!<+58}Zzu6c{)!z$ z2OH=R6cSFs=GdGo))LPX&!$TLvb*+3K>CG|(>jH+_~qvu7&HIoz-?Xrd|VOn&G{}0 zzVD7UqS+<3L#YelJ%95WGZakusd547X4&q93_h?dve9CnQ<~GY8+3<3_lh<0=UdRy zAvb09^;7LZm9{Po^TMh3IVx}YRmPXAJClHGZ?oxtQ)r6;d0skSc(yY7-gPtD-w@sZ zrM&6DU#lk2_an%9bAQkX;5Xxlm@_UzM6_dV-Gt~xnL#4lJTY|Loc{CZ5WepU-&psD zLFnTzNoSaKrTu}3mP-v$xC{v~zf=Nhs`r50V|!V4P+)8?p>#%?nShY+B4Ne)XDUjQ zdiN8F2&%DVeKQQwiHJoJT3P*a5II+1JI6DJ2N4HR3{Zk&H~gl#I|D+*CuYdOTEGIa zur`A_Z++QwsP?f)738tlQpdi9CeL@ly}uy%jgEan7+BB|yUAJnjwLphVX@qliA)x< zsaP#c{%88tpyLyR0diLQ-yjNec=BaduWVOfb=q$cr6+67Ac}h;kcWYg-bN`Vd7|AQ z>1?T8LYx&|pIi_r!d(w`LaUeri?=Lv_{S%UJYoGqV*aUHIu0G?9;7!2_V2jP zP%MuSZ9@)1dlK+=`#4|ud?WcZ^|6N?D(D}X-orht;W-&aQqCTCE)-ee(ry3tndkMQ z=Uj0yZsZ}gjj(e&liRa~o2yPdhI{-5Qq&tSKx5S|C@KZth@=HeKBLcYGGH+Lxns8V}F3 zrgwD?g`qP??t0fD)T1NG{MIWDqi^}da#S!m%7f}#W*V$1?rdi>$zak*`IcoQe;yY% zxxs31$xQ10BW()RZo?mgOHT=CRD;eF)td z6C&oR8NAsqbTDVWK)>dtYZ{>Q=&q=r@EIJP_;datx(5q@cr)6Lq~=Pm{mf(jToc4x z?Ozgf?XgVHzuyZiPi|_2V9!*gr7BIvyG*dYASiz z7UsH30vX<9$9g7Wq5}I;`#s_)3j^EMiXn~-(HfY5H6bKbM;+x$NS}g3X%tIIvChZa zJNF0Qq(vw*zjE`rl6@mM-{@946l6J0Y;SY@Ra~H@^pwuBdcrhCH?NBP0rvd*&(Rq% z-T|6tE9d0|a^=r%SaW3=hmh+Q8SZN8n+f^{UqmPY(a-sw03SK}8M=jV2#+P2UQCbHxU=YW8*|?UFOu%P z!#Uq=?Gqh_o?&tsW^1)f^V4hg)#C8v3%Y-eJmrp4oY0NN!1xGfEextNl|PmIa%xrb z9AFx&n-vsDcB?AkA&_Ax8b$)o_C^gNT~9jTdUdr$MFSK&3vW9_ z0#k@N$X2$$3|kD;NBk#x;%*#7{eQCOb6c;^|Nrh(vc9>z{9wJ*aF$cQ?7XO`^%9#> z-B`FN1+`tSDLvRd0Bm6nh)CI{So~S)iFgchumn)>Ij?Vj8g4vlP44a8hrwHy zq({O|Kb_$v*$@Z>*b0rLvuAuy#~-r!G3DM{}g92`^vB(cjZaN^sat`}pXqbWXX)|HG0UI{{kHU%cV6M17D@;iCA zv~XtBfrRLj#hUritqj^{_{E2ZkY)CN z@zL?VQaubVYwa-!KuWeodH+7J05{JnjL8aYxzBiPLi!LLzBEo>?aWkvPRIxDZj8+TsgM^l0XxO!>tlampLBE8qIAkY88Yro~ zlL_fE`W}XQ{$RSb`@|f2>m}mKWiX7ke9^sUc26UY?cr}%Z+Xu+6`&yR3#yWE`^#Xc zo|CF%maa`x>HrVVe@1t3uz7e?5{Ea@mcPCl>`5b5c981EKo)845DPQ@zMEEx6801itB|TijGHWce=1R%c47-{>Xs_5lgA3QO9LM4B1DXF^7zl#WcA% zpA36#XQ}hGkYFmlofToD!3BnM{lkRR(NQIs>^Vi}-OpprHDG{aLcys>D3GtCL^?ju9-$8Qlvi}^swMdmIPs%#K2T$#*~+H;P41|t~fjD$`i>zT*uuMYn+?3@hau~uX_qC zzcCQnOujrXkZHk)r3`Zj*6;lbG?Y@;S@Jnxn`2|gRa;r(F*lpa><%;7M76hQd+F7h z*(B81n@gJ~Xs+wY-JST2J%hBSC-C!rrs(Ge@}L`<%1nrJ@RxoGQf$qC!a}FCHkrI5 zCqH$FGg~MwrOEuX95+JXziq;HgQNP^zrB}Xu+7mZc{wvF#SI}TkDQ%om z+u_y@6|Ct|j5fvNMY(|!nqb1uB}LItroxmHnve$f!fXpkCd9a8NEnAQ(&^<}o3sL0 z+{CciB=tk|MA(%I7nsVCvlAnmS-FQZEn=2_A;jn|h>m`~z<@~4wbL3TVr&i^K6jO5w zjLTZxS@I2X=v5;+Su7M*nLuTyh;~PE*Mu@J<+Zah%J8Io5~+F-p~2tpVb#pA3?cbl zPy!}_(B7nqRNrMh8pvzdQHEdv;R{fj(DDk zSM0wH#KA9TqA-y1SbM4h@Jn|t94h0ZJP}u`>L#s*o$-GKT+F|3P*XWB(OqtH*9y7J z^5v78+RevzD5`C z_&bymxx!MN;iEzJBZ?)7kqc~kEtG@iiFR#L6Yyjg&JF~sEfPMK`a)gndn@wug0kS5 zLo)gL4Wn?w8g6fwCCQXGV0=oASpV+23QiVZBRA|Yh`MF{eo)O12dy9LyJ^)gDPvoj zFNE#4rJ;MMx~p8K>4w|gyhD?^o_5ZCobtkRV?-a@L#OTpvjzftLOc^MQw*Orw!W2* z>=VmBxgt8Dv}WW*UT7gS^`xds|H^oC=@N&UTScJkK$%!0-DNzB+*4fcm)oIlIjL7P{84f?8 zDfV`yGCQo;>akNAt7q}Ct6Isa1EEB@#ut+lyY-z)yS8gH%G5D{;M!dCTp zzIz4~YXmmP64eT`4B@Wi?Sw}aRDr7GJZpZop@~Z&*0DY4Yvo$*;s1PyuHvMYs55bn zMe|cKzI)0s>WUqeems1Arro6R!}ur`ddr_fe;6X1*y*N6GlhQ3eA?Bt{BHGox~q@P z(uG8r>6@eq?S**-KZ)9z`2Se>i)h|UyThLOr!_|errZUmxXHmgu*M6Dm^ayqs zN_ugFbn|+Bo4j)&CHcb+Yw_mSZdFf7JCX`s7U;IW_Bj&y?eYoIDSz0;g}>MOiCE6t z%f<=fcpm;6z(IK)1B5wEXdXqO$F z3=v1!ES8tOc!h1L;%burCs#&l>^tpE{4H#5_PANJY4@^db-!wpnCBJ=A6^vr!EL2^ zvTQzPSZ?tMdKb+qhTXq6nO}^|;qD;7-E}a0_0b*HLKCvL1oy63pEsIdFM1FmshlKi3ZlD z)`7>EAt1|%+~C3EJ|-VFHnxc(mEt0kT_Hyg3!+Z%nx~64X4*L$1B2`m-FBV3B>a2A zC)rr_n$@%9zJ=}|I*N)Ez`E7uneZS;J>-UAjE7K8KtT;|h``B{>lAgTOITIB`JPhs5i$>!rGi}=7mNmpPq zxa{`k$N%xe@8q#lJWXM}wfeCbR{uxM1n$i{p{<7n1t+Sf6>y5CX!iZ3nL;%7^nuY$ zQ2pp-(Cq~a2jFTo+ATrYWjGG$dfn8 zO*CVdw&6V8J4sLJqQXl-BjMX1?Pvj8EWwb zt%$})-;D|b;O5o)QT}CRQ6iZt`i)C#bU55g&48u_e072kN({_0lr5oc4!DdH5V5Jo z&*fUjil7>7lwn>vMG;rIXskal8A^uO*tH}z8Zz`a6tM-sFZamYu#lv-eR{yIDw63^ zJ8qe>IzDLhBlB=RHGJ|2fbV}?u=iA&(3W!o&dOyjb87N3;z^h3wx9HY=1~}seT8`% z+4C$KvgA!Pc!ucJBTllXDYh`v&39s2rg;_!SY=a8{2OvKD&%VeISu)TAfR$zpY95V zwq90U>NZF`R$ogEwY<;7c2Le^@3=LH;46|b?vap|EVLuo?jBam+CJ4;vibP{H<-%G zTsqZN(Z3~#Ctm7adUtUgtqrnr2+8%*i5~A%lu^p=L>oA2Fe7%x{O)_l!h|n8ht5sN zJ<3msz<4v%(NjJoT|N@c$w3w?h=Crz@dkU7DcBz_0%n(SiLo;48+!u@q*pxsO}87K zDL*dUCBwRb&tb#nL2@ZuB@y=$m20 zKZ5j5`kG_3pW~v+7(P)Cl*%K&{quUv#E3CmjEO>Z>}SMo*MbHyDI$j6M@apP`r`Nb zVJksOL5RZ^Px{Sn|L0~xcP1?I8jL`)*S_0hc3!&$WVSYPziUPS{i%a|6or8<0r^%b z)v!I+*eYRVi2JeW!liOLE|n%n9~W$U{mvdN2ZFDee9Qo@3P zzzVb7)J-wj?Uo6yV#Udo&kA)%h-I?tsgxo_`R?E7Z6laLR8TC?;orbPq$hsH?EQ0- z^ti&%_eS7r8pz->RaT=oG>>$S-ZF{!5%22(*IW~^Wh=#Yknv9jxj3nZN2$28NvfA9 zS9UpLJOrd3X=5kOU0?FJT)!Xhbi&pUB7n~5X@R^%397?<>lKj9WR(FUnP$DMElU)f9DwM>B>hB^wp2j zUV(43$qJ-nMp!!JWX~JTnxS=?-L}0kUrMN6dHt>{tIjqvz~(qiryM}eJjw`sVO`wG zhjcP*XNa!`2ILI{4BQM=5o9D3qN;YatwdL(0;og(*K;foB#;#w7Y7b)u%GPdGunmJ zhirP!CD`5uh}>C$&H*Y4`kD3JSi~s4skdS$;QiJF^6app+_}uBZN}HgzcKDMlC5MW z{C|5Qm@2(JQN#ICl!bzmTm$=Hw4$zw%xKp49-F)c>!1Z!>Vr**hRP<;6j=T8PX9MlGr>6LRWP4iOaA_G_gy5zbxL555nwW9M_R&-d`I2fRg6+(|R z=K;(71ik!(#NgO(qBT^FN4Upn;Lz9Ecwd3p1_K+b(LQ~-v#fx z)PX1VXKBz!@1w}tA{5I?Z|lF0h?O-&0Dg25>xN&HoYVn>5*kYaJHd-r3)(5lnXnvY z6E`}Hsy&Dt2%Xjb$jR;TlB<>g_i~*1HFd@vx#=}+^B$1F1X^6dH?nwsvEDG5LRxpA zyrr(!D^E&Qx*8f3ZO?_WiU1i;9HQe5J{gWBdfYbD>JR{>Bz=H<2c4aQwqHPP((*>h zh~Gx;dTwnul(;Fo8=^3C+4abvy|7@hzo&cj=TnDn6NY>4IkF=NIf~B|Id}%NC@XNs z!xUvoo%uw94yyd`!$cbr4)+2EHgCiqB~m*`{P{vaACNnEpMs2x#ntQPe5@+&Q59jj zz6*~%oXorTVQiN+M;k{74#TVifuP97UNT0lzU*qkeUq7jokQuX9VWFKCM)3ir);P+ z+4ZuCi#X1l{T_Kb*Ml`a=nnNB0M6nNsF!Mvvu(yA7 z>Jm=+IiQ0hw=|7zyRLLsg?*-@k#vSVpqCEPiPP0(FJ}rYhW|Qdo{(-%t`$~wZbs## zH7fZE4?KuB4BJ-XFsYicAtYf@pU<#*@x`&bo$5{JLp&B^4UIjd03LrxbmlMq6&$!Lm(t1uhi9FR6%)WQG47Tx$AFKCpj-KGR3eYI>dj&<$7ql(AE!8h$ z>Dm6Vp6a3Yu<_%&)f;>dgd(eYXU&$6rZx)_~MXM?l(?4Jqz^%{q$}XWCyi9ey7OdU?0j^;rgiqE7p{)DF~iEf&j+3|DHf?L_K<;B=7c=!t<}kwtN;@#*_!b#wR(>GCom=9 zTcZ;zGu!N9GvDgrg7!L1D4&)2d7HaEdcNAE*wR~#N@YUz@##rrTewbN%lN}|_C}cn zQyFUQa{CWW(jo0~?M@F%`3c;CK$h0a7+^GAi!A|hRi)hq7J#OrTAu;zxS9*Y ztfp`Q;E*)_;`_3v{|>-^A9cYXGC}v6s#e{{b%H^BvxFMSgZij|YriJFD?AILNY$6g z>roTy#X4DFaaG6oX5pGwu9bP0O|x&rL0fmWQgpUC&e!e*;l#cH*oMUchE=Ed=;;Sm zSpNqaU@+uU17stKxysOhEAT&zz<-4<;MBjNU!4soBAzb+g0j|V!6EkpmB)%^w8}Xv zd}$x=5_GS_qBHU(3uXLFlp7FIiLYhPmGL^mQU=plA-teJz?=+s0>BqL*Uyc01t(sm z0q=oV50sEy+(G&5j96E)YN&Px4>Jb`*}XslK0W!(9s@Ou!)SRk5HRw01{#blsOen- zZ#VHEuokICmY1MGEv!S3Of3T)0rsTzD5G-jmzz}Vvk`iHU0-0H2@J;nw3m-CM!2)& zPaNi1=UUkLL#Wdj;%QnlY;v6?Heol6wO3Ol`uaR1>|d&vZXooig{0L8 zmiH&2n#{{}u7mYae@gw?NrR4xt?S7DTn0Ck~$ub6mDBU;P$agYp=;Z zv}S-YLE>#+F7FP$!&G{1!;%4sET!B~i_(UUWKyyTblc+BLusNm(nUYqChh$Y+RHC? zKjP#?gB6H~(KYGLI}4~i0(^Lqw2_|J8KP zZMCiy+VgRItRn)!MFCtP;q?LN69Z||HwJ8sQO*9qsW)CyCVo`AIG3a`#)+lU(HM~4 zU+Lfu>X9gTGzm0S{sYGdNRp6tA}8GNsd-?9t@W?ozLDGZ^j~)OJ3u*amNa17?r0I4 z7_kEjoC+OB7@WOYfJuT4^tVCKeyV|N1kXI`%Wc$UNBhK0*h6MJ|4)g6zVIbb#n;G? zL??{xU#1bxE55?_$UPj{V?GI~tuHLR9uFt(Wpj>sFIDv}A2hCKlwoQm7`DmUwLu*c z!6}UVWQVi1eGMybT*8lPy#dv52+uF3?K#ur@P)0eAqImJp=^OG%~nTkvE^+dRoBNi z!!i|Ey@kioy?em%>Z#OVN6+@%Sc^Z2h*1)WdLZ5I3FNb2=VZ8nBA@1R2)MoE^H2}VNs&kI2!Mj1`wwYDvr|gmIjJ~_OJzaQ3 z6+Di05P0e8zLR(Vt);osfJjPu=l2cy5zSM7C1S8XPl7!5u$ z5!I~A&Mhz-S6g8oXzsv9Nbx3qbb`q1exYlMBn+=@3`3v;#*bVB0c|3Zzm;$bB)i^l z$X8k6T#B8qweqxMY{|yy{`oXQ004+3kR#xArr4xBfzZQ(@W&ho4#?G%Zr#6W^d5k? zs6pfGXYyGXl!9mifKsw)D0?j7`a)YWp%QWBo_j|nHo$o^oc7weF!z#Q+Tnl*Ircfl zrYgmGHE38TjrS_**Nm2b;R66FuVzfKTbfFjtS@z*M>5EN0A>1l4&CSF-Umsqr>`g0 zFSlQSX(q!kS#(9N{#yvY()?9}H>lGaEYckfr0$eTdYF@f|M>TCREWi3K%7elWm5b- zKxFIuejv$(qF6eMR7fbh&@PS*Zsfjk3%^?lQwpy(SyH`>lB#9*4@CyD-+_OfzWxOe z-Ja+UzBd7*F(mRGJ{r&(+dsrN_#I`hpzNqUo)WNlKAu)7-jeCzTMYNC<6`;1c889 zK%!HFb-JWy11`C_R#=~Vkoq_K_2}o|DyOAS8f;H?ZtK%-6FvjxC?hM@UsT+M&1*!L zjJCT(c2kH-Th9b{P-=dUo~8WK82{0+bAoW(ArO@+pMeTXhOkZ+B5lWST4MlZ7H7_~ zEfy80vB2WU9~-X^SOH-^d$Hm}n-w*ARU6~k*yY(i*TynW*RnJ=U^vHwjP2$hDEXEWDA+A z$6`09h1Hwd-tY7I7ft(Z7jE}SoK}%eyDZaBr-HZKq$q2pDA+%;#KeXCz3%kT0E#Hf zV%S@)7f6f=bZ_P{{Z#|>uIrj_>+lUYS+L+R5r{{sYQBb7EV0$!zEIj@JeD1tAD#Sd z+gBIz?8^N*+TDOu+BRBBe^}8r2`aUpZ1;E(&z}96BKSK2Ee;#x=TY`Y%>c&t#Bq-+E6gDZ8pH3@eM()4PK7)&RkgA4&TB`7>GtLjm``e$QA zg5*eKn+>e@27&aAYt4NKUW@#yK9_LXxcsUiam=22-$KCF%(Hp(HphWG^N?c(JgkrD z_oYTmz@GAt-O%J+i{UA8A44LJ3$_#jpe4SA;dAR(@}pMD*vx3vNl^2Fyxf8+aqmp? zpke=KQ`WI-h6Wa-+wcSBU1Bc3b~&@)V{xa;KiAR|arM8Bh=-09~d3AYP)LXtn>u0^Vb#v zui9v|vF?+(0P&RC?YMCV*KOMASgYLZ4Tj)lR4R|1=se}a?7`bCYLUi}*YIBm9^;?Y@izJzNV@K@ZplrFZKbPaYsXBY{| zmrFAbQ_j#F+Er6sH7KcVi!3t{kkK z#@wWROK05~w}d@_is+PH0eqol#dH#DEji?vj9#RE@hPAGyyZrppcbwxMYp>iHRHo< z6^Y1_Qi*RX-r|&-+a@fvW-VG)a$9-RsuAqa4)$dGHw+{Ed{WeydNgd-5<7Vs*1cA! zQDZRK)|ER`O<#LoVpq+a7EX>$9&VM`AiUcJtYFs-uVC+^sBZvkf&sd>9Wrt;YfRgc z`e3^~rEwPPL0ubT@uKgTbMa)gIE5L5QB4~bHtb>Bzj@c7WshdSg3y`iJJ)KZ0|9x&+Xq#fbOC?TT+38brC<9+Zz;gsuK5h6+a)MMyA zlstfA)Qei)-|_qRgw+;w4|wk_Y?H^RzLo63k#u-dl|&tJ(bGsl@2jy2#-wZkGa-T% zE*<`WMZAL@yHf3A*{W$6vQ@2<7RHum6e)Bf>~lyDa|HKqaoNR|u+ES~$C#m8&JgVe z)!x>YZ`(q=+JHq$u|>rZ7J1*(>727^V1SHS(jREz?%yFSiuZN>!)3n<^WLoQcO>S6L-_51W-55L)pLn~5AJQt!K3ukWbeaX5{0 z|3Pm^BEA1K{ww#J_4>8HSN#Z!p#;RNvu?~#y5r4Gh~rmE86b+};{n^m_0WN4!cjHiFe`NMa~2*Umezeu=0THU`eG@KNm7 zcx?N-9miEpU33F(=1pgp#i3zY(zDVem$*OlpkxL#9KA*HB4Tr^t!~B=9B|a?16CZR zSB_+eQGZ0vQ6cQ5`o&>psi@+aZ%rqmT1$%3h; zX-333-CGcREGr}DOtsJDBbG5pf_{7;n>yK&hREv+GjV^|3ggF(zxV> z!1VxA&|e9TxcP{07}#Hv1WUhTk;_iJ8TjOizl|pwI>QjV2DdD-9jFo4Jb#0WoTwR6p8&BCI?QIKtUxcM;qd~DQeF7CXg_Z6 zk)i5%xSXb@5>4u)rLg&I%e2eJ(yktS2vi+ss~(wiqdHfQOoTSSqsCw%jcF;gSI7oB zcsPvt9F$=fAe*khVZwt{90#E(5;kZ$C7e^S=R@xtYT|0>t@CEIl}d?Xx6x9cK-z{^ zNqqv2-}e%pWe(K{3`nQT8gO1-u@SwTQ|>k0qMZ#b{N!wfw4`F|%Pbe! z>+nNrW`Jm8Lob_7b;~^wNpUscHpQO>eku^_Md(G}4{4&h3;*}X>dgJ>mI}M{^oUeP zosxc@|L;zfYzBt*gtTs0^7+I@%X4=#~8vH#^nj;+I0HB ze6hQuhmV;3p{~o{?!l2ds?)M4ms7mRu%oL6FkcEe}?>X|L0KwBNDK%em6LQjKe z47-oauUuE?<>5EtKJFx&PJOe$=S7kBQoC{|x#*g&0_SjscrJ}y94pO@bfk_CKc}x1 zT6+@@WNV)iH`o;NAs$Dc4igSv{kTF9#3qU5wk-R6xrM+g#^BTK>mzo%eaQV-b(6h>Wc>;I9bUQ_{uh0R=z+2j;(hk4jN-CqfdVR7>? z+Q!xeFi)m5mtI-FRbTbn*a>j77O8JbDU-~Wc66+PX9(-A_`G=4@}_5V55#`S;U2N* z3Ou{Y_POs~A75Cqux^dU}`Fg$^r$!H-j+fQvYW)qUUtRvd zN44s9U{L-)77w1HKVl)U`cB85R(A4!x!l_3Xvp20bC>V17$5|lPbtd}#86A;W@d`$ z_&hmjG&`4;=(PTLkBW+?o}Q6W9&s=5A9lz>wMoX)Zyy87*5bZNs4zwP=Y7zy^CVhG)ey~N1&=hF$h?C7H6CXOJ%+QuE@`XR#Z`WcOEGU8X2>-Mkzt6QFvvjFJKfN%>KQ2YL0 zB@>V{A9sRQ8XRkVcxq-Ee+U+PF5Z`&YcKj_D9twPe{|5^Qj0yXa+r4Sa|iw*6)p+f zLc7yj<-$j+vfeWs63k8*aiMUL955}G0W~>;ZH|vrgB=Yo{1e~}xPTG=Mdt#?1xkzz z7#mEj_-RQY7sr~37U4G_v2+T?$S2NkgCb}Zd&BokV!FbH&VGi#9T)^v(Zk5-e#^@y z5bQ9=S4!)~=EiA;Wu|%s_~=x2T7Hji6gSUt4Yahb`W&x1Pd&kqKXv*Ky8p-yYtLLl zW?@PIe`@g65N7D+FBkQ+AIeph3r37)ic+JrvTMKFmooeC#egebKr07*Ah6AiT0+4) zn3A-&RG7i;?t$9-ZhLZh2bcNyX%6lUNbcw#W8-K3*X+L1kuBq6aq17RDWm`a0995H z*Fz^o>}>d6O1q1~O$Z<0bYima*stxshkFZ64BQIaO65l4d5-UgTAFzjHrK>^u5*zJt z95cQ!GzOsolHwq3kB_1YU)V`<=||+oW9%{ucEwZGdyWjk zNGE8sug@LU{cM?;v98l`oc9DR9BLLH#%{Tu6*;9I`L z@qq4mcC+_StT{TNk4ibRUkk_4`{W9U-#__xZ9fgmD69v&A6=}W{>GE|SM(l+D&)X& zJUhxqhxRIFxhpf@RQyAMFNTW9PR|6VNqsK!>a9;}Lff6$%U_$#8;zX12+Y?lBLolwuR-K|D3Fj{B^WgA+Im620K+i;^*)b21zC~n zU*9%DBmhZ3wBs9!^0oKx<|p20B1Vti4>2V~qlA+Ln}lL&ZC2eohktxq{LEv$CE;ig z+aosNAQlNP$=`O(IZL*qj6E&5ka{33PrZ{lSR+}5P+e%p(aQgma1%jTZ=1?`;^w#D z!j?m3vCWcJh^<{*`J$W-W1=5 zWm{o%_w2OEXAawRbYaPq(9@r&^p|g@WMAtY>{Osf?K+_g8A6jcS~7(Onez~b2H>Xj zf#p`Nj;WQN+mpRH4)Mgx36`vnRUscvmh5}=TMiI*tH3{aq{2Ni+dW9)Bv89AoLzN& zb~!u3_SC5olkk0+{jwyX!UumeEkAL+>Uqa86dg7q^M{lq3=NnbC@$UQ7;{1`VIkv* zNd?SbFN6_&&bu*?u<3*Xo_?SRd2)@|Ifp(rtxSwRrANU%)Q2YZNKwANo$pI!6zk&t zj)g%GWuVr$9L%yjb3caANOV@wuv2iFd!#rxkS0kAr|8n-oOC{5egV0q9N6s;k)FFd zN@V1o6Le%;K6f4n!m}B8Q?2&Ax0X~+=Di;+IkWxYsM*^kqdTW>!tiBB>&G9@cbd%~ z7MuJDAu-o)Z})ibX$O9X)yh>ddTAObQfHx^T^PNKGFx}d(}-ldHV_!&lo_G*N2> z(f=VKmI&0MuPs{gw=`p)n5s_#G%ynEXS`R4h!`P5;dmNt`|ZOmLpB zn)h4F92qY$e+pIXPM#A)(%Y;Ss`aARBYQVrD~4ZrX0UFvTbx+kl9_?e`7g23ltJ41 z#p8*Qn3qS9R|QAOh7;I&_|~-rXWxEJBfAGs=YRRPHenq5~(^XJl5}pJfFUb z2x=^fp!s*eyY2FNR@f=Sf@*vJwJkjxAsaPV?kX(GP%PH?Ma*xjb}w>pDq$M}&*t9J z*?mTbUjBZ*-FW-;@ttqRUTuc6+{5OL$R|qyTrQ#y%d!2QEHfkbB5!&T;IeevbeMX* zhZ&i&UYQgN95AK_9%1K;y(CdxJHi$0$e@*w>C zfB1T2WN`X?KK+zyUiWGNuQrz8&6Wl4miaP}NQYcc~T?!QU;_eQ?UH0>S z|Ndv6e6tTYVTPGZLT1*p)_q@B*3`3g1OYt_&;1t9Sb5H){^il(AkkonqugH{3&XS< zb<)8?P0~TF`X=GWCvd~5^m`qV>tm$LMeLRL{$srCe(*rzZhN=gbcx06A9lpB-oIPN z@E5WxxA%pA4+eXgVBQ1B=mzJGY0K)8Mk_$J60|71_T(=JN?T%}ws6&{$6A&TyIm+d z&NP!&v6%Y+Vjx~eBE$U}g&9`a({p1f`FW9qpr|iUH-(h-lTICYwXez!>DXRAG_G_v zU>2?=FSIz#v^X1`QpG8xQkUJ9s($rQU|6MTTbQl-qA(ZIg`iFIqFn z2l^&MP5(V{1UN0(>q9ZnnmSY|_;eC3fG!Np@0LUTf(2?HfG~ z2%-tTWc9LCQi|oUomV5`vMIFDTA*7Pdwv7Wp1!a3-ypx3<(SR)Jm040$7c_QbKnvX z&;sc6@B|r`gK2rvW|uw6%F4=cqahPHxyZnvAc&=9p@gL5r@+9#(2$Uj0hxkc6YnHf zIT$K@Cxu$>zNoA#w{3a{1ulJg5%NMT%(*t@ zQh$|CNZ;HW6>~q^WL;3d#~B*=MNu)?^t3oLTbYh^L8ili znZVk1=C&KLtHZh6D&Zy^2DDP$;&)ybyE$*Fhh7&+mJ{g6w3uE=&sWqkmom&WQr=+9 zW5(1j)t_zz*J0U0HN3{I^^d+^rs~IUYU707VoDGfFj)(4$IX4+!)?ltzC+J>l($Hq z@{w5MeH_}?ZHh|z@9=*%!jCAt`O#}p>lkg=-c^cH+~zrn5ZyiF1Mq_FQirY_fQ*Uo zz*aS3?*BdD`?mZqcm1<$s+nfTy#+hFre&W4IAZ?k9_OGzuh&g*tL%Coeo*Q=^(_Ro z`!DDyyJEl9$FZG%Nm$|YWu$s)=V$78@*d1v*I2B0yz#L>nj;ny3bY6?8BGY>)DrF? zBP2m8DKNRpxezO&B)Ls7H*k2)aWCzgZR(PA_9wOKX*`VWAo0~%M|dqft65#_{Hkbp za@o`DHTNpquaD7KXznllUNHyxeR=b6~0 zqU@xk|44mRjJLm7-K27?<1KT{RG5%o_>Zq%Z$8(Dd|`(`)@E5~FRAq$0b!_n;BXzk zbH5+a<9VtiJM}?bT0D+}j)o)^kI0fbQQ2CD(tx%VKAsga+@3hYgJfzt7gHok93(f% zJ)Xbyg{Xs>B!xKoQN#UWamv^>$%2Ncci5eae006#l$y^>?}4WT*XBeRPN5ar>!A z5q5eOINq+$UA2=fd)NDXzF|=5M8ibnMnt^>rruU9=rgD zd9ZO#@WkO;!QlA694I+~icl)6!ln2bg*T-<_6mmN#P^ZHnRq}U<+D=O^Ay(_rLIad zcn*{bPJzv5%ps}AHDwoj`@{(&kLk&yjMG}Moq3=Q+G9=k_>!_UAeI7BuQ+%R8}x$V zt}DoQ3gt>t7ZNosyTCGfX<;)ds>OC&v$#chUonvAD;iJk-#_Gjp1u1bH9ug%sK6Qj%$l@X6 zmWv7H$!jc>07+aftVe!ezMZas!ru{=^Yns)vlKCuP50tcMz6hk`~R%90ssW*tyIlq zqOR&?PWbsXQBE{v?OYZicPeQ(p~w8{EM56xLzlAg;t`#u_P0)8Yy3lkVV#j3#41a@ zQ#eaLzl}$1Fk}F!!U-d(uzFs68x);#|1Krl?F4rcH>L!6rAE8zpt!@+9yIFV6J|2M z83Hn3Ei+ut&w-R?ShG{J$fpa z9n%etmk4xSjRcaPN!?u@yKgQ_HoMNpsuMjtf@SiLjb{XZ)RSqMOk&Sm5bRz^jD9R4 zNuW%piHtQH9b(B!X`b9|Kg6WsfR?Xix%XLa^L(wz0d+mKoP}F1NSW-GK@5UK&ycD` z+`coRidy{P{rehQ0!~qu$~r)B^2halk+KW52^^P$`w*0x`|twJ3#mF$c@kfzxEOJj z!nRIX8$9Vehs2IveZK3r`hW~9F!QYn+Z;oQ3FVu-bflMq2CPD z`J=4Az9}ybr3fccSt|Q&pD`mTbm3pR?`~5*Z63e-M=tJ#M?KOk1G^Gu=dEDHX&u0& zr1Dv7YL86IJm1P?9=f;OpWH(TaGTGre-{ely=VXWC8j{~@!AuPrJB3RcDRcJnXjlk z|AgJcTPFHYCZZ>h{$f>T;zxMS$)0M_S`S(YD=m=UUcb*zhX{fH$j4#%SBI`dVu7xY zDe<~g%@*=<;P;azXE%q`@H(gXRbnxnGCs;{Bl#v|Xy1~EDr%U}R?0s%bK3ZdL&{h1 zfR7{c^Qu!5@h?>b#z*gUAug%RJV?Z(~Qbq(a3jqqyViiR7!1&_h`3X zQE6l-{?!R%>ls(o0$B3`0CCNP@c=0jkASt8AOo6nm$gci@{yikozQ}io29<>=jLv# z#N6d7xi+VFRm;hl4Pk>rVvS*=?*0}jcKw6N#7k$~STCjTFAM=O<}`Afd?#7;54K{P z_psR13VyNYp__#_4a8S-fo*=gl((^9WjGeXPk!ayVh8}@D1;Fn75A%6J$=2a4J*Eh zpai9{`nQ?gVQhr%732>)lonc#exp}lxk@>ezIOj*&+kp(JuM}q=B;@tSye%u#M?V^ zU2z4CG7|vYZm}nwyqCu#2+I!QwpCPb)Xrt`AJr^Fufm#O(mvOm!@MW*Atjl<5QDnY z2<3vj9!AHoC6w<3BRi083Qjt6;mFo42zw?8VcB-y2T%c>3~)MMtKHuhp4z&yEMra zod7-Q$+eNz@(ZfZ7CWGCj9%9s&zech&Ay$1IivX~LBr>+(8~S?R#eT(o~8M(h^gZ# zni<{aZwK023)Ak2#Gc#jV*5mz|9|u7x1yq=s5CCyGz}oxX?wXpbx#`oJV~6xsigSl z@=n9w)r32y7MoKmWR}a80GaVs(x0_3pTGs$Ez*X>2u$(|2EhRoJHPW`-(%8kk z@4h|XQJ)6kyuWNH$$Np>76MJhB<4o1VJRu=$6)^b=)NMJXXT*`d^_joGv zeYy2|nc;fLJ^Qy}?54#lL>z|ItA$vBLI4aY6k)Q;{*n2Dos;KX8x|x2Ods=+RV?mf zDWcnL-lBAaMkX+W6PiR>q~GKMX?r-6y}dgqSC6~}`b)IUZbxudlODA=tT{z}Z*Ss? z(qL%grB3pmlTh;L4*zM!DsL~4{mu~&`F&X0{&-|Rb+6>2_s{9}%uG^+TDkJ`7|`B2uU()5%#{T*$?R4IZxFotZr!$Nc{9~z5wq~bs;>9VaDR|{f}Ok)&?DZ zXuGDkt!+7K?WJpLVX1J`{Qe4t!|`7HbYs0x%+6ib=juE1>d1E=SwyfyeV^}F82BgK zj2@52pSq|JR$jFR(C78WE79eGb|8gt?eYv}OiE1b7snC=18Pw9jdc(G75SBBbtBUH ztPp4`I^u=zYlUUNOT{iIDCkY$zMl18%=EwIY;VN>V%8KUYn_XVyTmY&WmMI;IGhDhJ#IWbIgV=Cop60F2>gWe6Vm2LLGA{$j>w0U2;W2a4zY_I zh-L~h^SY~-Qgi4gP`H0q%d31``1BpAS|58+NkLBrEm1bi--(rCjAx0elV_S4auq`e z7|EQod?m^BYIN9~>mVg2?JiCqilSypNw+2j(Ck=tdem{`La)G}m$omaskIBlU$B=u zAiD(J@Y93e+YZT5{$1>*k8*gf>wMctYPng+GQXWf{N$O4)3lu;QTigqqa|t34)}eVq^qy7A(`-PG zGjj_i75)dA#j~iCYVR?xMvehtMzU8SGKFjp=YyE$LSWwL^z}yNRPehM61xFrJggyO z2ITDwG)VU%-~<7LMLRyo-PfhaSj? z3~U9G^Cl8ehoI67j+_RVPHkWf$}*26o<__-q((l6xqR5jJR!SH4EFN*<+1vhy7za{ zVR(3&#zO%_e)|*oqKna#RGo01?^61^dclK=`85Y0-xmzHd%9V&O#Gsgm5zg!PMHw> za`8KerD!FfBe|im-AZEq_Sv@}4>7@wkEQ)E-(Vc^mamQSNZYl(%^y{hsi*#s@nxG(YX*z79%#$*g%o4JziaqSn?ak2m zl0|P&4OCd}tscj&l#hnr2BRf`j8NQuzs&SjuPuK$Z@t@gQJvvhW?6pM$CP`Nx=C%p zPs;uKK)szkCrs|G4FVhztF(peO}Bd;WCvLUU=I|TZy`_2Nfn1jIMoi12(OlX9)X8O z&jT8T^va9VFkAyqyNeFZx2WK)eXxw?Rb_qQnu5vC(LDPG9ESGDCF)7#cbdzz?&|fQ z-^leAUHORl$cR8)C>QqkB30+%@1f?O8tg0eB}La~fgL{kvIBE%S6!%J8SThT-Z5{O zk>B2oxna0RsN?R_5KsP5jZ{0mK|@0724KPj?RSG~D+SS(@b>$fNR1BsblPF)41cjI zDUci~J|39P4jes~51tM0uqU^jU(HfOv$F(zUANiMtF5VKr|DlVC>+g<=8pRP7dklN zG`5p+x`Hn8`&RJs?j!EuCZ>vCBWvZ zllw2=Hs+98v{dtu1DJDt{Ny27>IxboIYFBL^X`#_ z_C<=Y?|x<;?{13l>p!5Vlb4p|)=!Dc#>qTv3}(`P!b3Pnt*F~#qbbPDL(v{M;Gsq<{ zL)zN|e8^eb`lY%Oz+Ob_@W8+=zLDj+;XHL&8hYS~YS&h8*Fk$5I#-zTc+we!9{wOY zo_>I4m$nn^+4^U>Y0qHgUtwtpSH-)ax#0g&2A)@Q7V0!o(GdHl8Iw(Z{n2e#Vy-r( z{WC&a`@1wi*c^c(fU{lm2$$<*w3Ch@OSE06>z^!A#fuB<7J~Xt`&{rIWpoSS;7dml zQ3E|8)kpT+oS2vx$~P05d$}dhqaAa9MBh_tqGCI944CK4JC(H3ex)s3uhFz0C$T8j zWYYCkD2=YGvS~k_u=PJxef!g8d1711*^cnDw$SY+?i6?LkA(`*mDSPCg5MF3kXTIb zTd3d+TU})jXn8}cCfY?XNj`-|ROsPE{Pth=(LSrV40lWu=)MIF}eTa?-GG ztbBikuExbxY{`}Yc&Lt)lC5?>ma&tb6>jiK&g4|IMjuTJX-mOB40_lOhkF2ydAxc^ zpR0HF{Bj~6CKgsQA-j2>7oxS`?#HfUweMRcy!KsGZK`=eDK)R zb6Wo06=No%xVHAnn{#sd>YI|T;Y`H*9q`6K4I}MjUFB>j*t%-jMIj5&TC!hMZw)37 z_JVv%VB+Yu%J-N@*;kMgy?ap1oz8uFow0YecSUqr!BM(2P6ecAWMo9c)UJ#`gLu0+ z?!&S5O#R!M5zk{j)FuVenRb-AwMS{=BdeFLbI->{|E=SJ(e?fR(wp}Y__~zfQv8Ix zhGq3IUAfrjp|_yx_|L32bSRWGcfw$iU7+-*sl%BsDPn1h+2WhT!@1M7L!%u0O~2_| z{Fjv6akL@D@=rti`Bg^0q>6F}$dhpLMJN*ozWt;6VoN8S9_SWch!fm2#MUjxWlZ0- zE}5XOfDt!}%h$h^ryz#2*;e^zc6ssXY`=u}Z0x64zh0%}PiL&c5{enfgg}=&2Uy%Ur*z7 zkv0q})7#NCle)^hecQ*x{d3%RrWPSv&n*lei3W0Du!Ylv#$tmb_M_XZuHJW8DU$_? z=i2`MnhUVI06_Lwow?ZsL}&32iDUJ&<%KYSIXyYjUVUsU+|p8#^crZ@sEurn~gdX*}lCplG>vHKEYWu90VVB0dYQ(es*N1^{MRUXF64Zy^rmDR06= zQ`)imm$IT5&m!F)sX1PS>|C?HXJK~NVnf(=$OIW!rpReTrABh3=cx}(pHb%;F;9u$ zXEAht0q$X;${t7vcE&-M32sEaw(Am@LQSzP_BJTOj^@Eb3;eqLsEq29BlDVctezlx zSOb*!y4*K!-8lW%g71{An@@kAg~5Qg$K6FpfqeR+=iLRGeCGZ{XX8y+y1hq4Q7Yv0 zAowz^)yoBeB`bCHuwo+KJlNaHKUl=EPle)0B!kI1QV>i;@IxHl8R|S_F7*;ygmU~7 zPB>D*@+L-q{n%7L&=f;)fX}IB9({Jhl5D|>&F*nkG5tjq&^$N|p#tCUS+N~W{hfgJ zFW|h(bnU*c4-iVQb7+|Xw#JE?#*4`zDM-X-Jqt>HeBiL}-Jhpv=U*Npp$!iSxzdWX zt{^{h<}Ynzq++CA#%hl>)Uia^(YX+PZ=_TXI~VVyn8EJ^avNdqzy~~kcqz3*HVrzz zgp%jLp z_2w38M#7B6`^n$_70zi!vFakU2j@^PMAR%?y9B#25Z}8(Tk&wzl^6-5_1TP0bqG25 zcjQ(qc9;%4pL4rHF!xukb6Amk1=)SZ&>OqhH4#Uo*UPAal+Ph;_u52l6z}cTd$fI^ zC(;-=@^FgBJ24^{cAfijDm4Pbfsc1m38kCt1|Q-IH%6P(6m~;eP*a*qrHWz?Z7;a* z>AUa3F}n|>U_+#)vN`>+4jY^ot@;4N_u1tElbw{lZ*gZF5Hq5(t%``0x@oig&KYbf zVOYW}!H>i`Ww}kqef)>J`-t}@ABl)OYa-Yx`DvF{puR73=#NgI#~>n#fBf0@mGtHn zCqg!03L$%*v2On|$@Wn`=2fvUiICSVKUPbN(VciTzFR7rU=pv>lu{DYQ|AOEyzWj`Te zoJJrl??ZW}v3({!-;=L%!B9^-Ooo-M>bENb%jpvnGDs)fZ=2geHJeeH;>l&c4nq%9 zZ8!N1gH}#6)F)xz2$50ij#r9(>(KPD)pVil6&0!tAS!-0wxYaRISK%E4+e_of?T=zHqap@hIIecROwx4FI z)&!nVqpHm)V)9Xibou~;{-l(xg#^J`@x>D-5`Rq6V1n&qhVD)^=wk47`6!T_k405V=1+X1ruyRcBHyO_Yh zL-gy{uWGNwXRcPJo-WU!&C(~S;6cHwS(7TaBOP8q5A>he63Ezs88pk(w7 zHfBo#D{E>vJdbK;)RF`=bC%m~*3l(LOzNbT^6PkSxyJY=jvySAaUs%BL4)S#YzObp z_h0o7U@FpzLbrLayS;+&Sqr=#38vm?(s*D>)Eln08+_utsI9d(&n4w|D>+!ZT8a_7aXgOCac?P2Gmh~-yy1i!Q0Zgi2y1!i)1a1!FKj)GHo^A{^?gZQpYz?D$H=x0 zsJ=$}^O(I0=@FE1C(h^RAFuhCl*`K{_Z4+*!`dia6QogI^BMPM^&hT=Gn_d)qbfVZ zdcJ;_Civ4mW&ZVj%WwWK1WGgXe_g^>+DSF3bAumafj#VCRCI4GR#f_DMC1YS#mJ42 zDtFY#VwJCDj4I-C?`i?)20dR}#k{$#35l;k1}ebeYDwRnfa7=iUqC04cun=;^hC}U zD7n^9If`K815nQD5PdoG9&x|9)25Jtq9M9Zpfs8TTE$pR^WnI#LBMr-I6Oh^-afGY zM}B)z>r0i6Dk>UvqKfcyEC-SRIz71Ihg|2G`fJuM{^r?}K6x#};G+Z{_Cw$Un$sN|yLB)j1|-D^#`hh04&inc89M7Ez%k|T*-ll^ZJD5H9&0p1=1iufM4tnowiDcy1e_y&iE30Xw!v0r zO7U%YmNx!Ur)OoH^*yATyq4dO%SxD|p{MtB65D*Vzuvo2nEMg9l1Y+ANATJuzIspD zLmK^-h4VE63q(Hm_6qg|8>?#z?N;#(Ja^EoI+8fr;`)a3>@EDJ&>{rXSnM7ER(&)cHgw3h>lVKdduA!G&I(eYA+|* zrwOaA5n!w8b)H)(J6+;y3R#;iI@f6CA0DKy{mTser-4DoACq}wH@m!ng{m$PKkk~8 z7usB`D4|Iho*@UNx#FFULGqO6^!`z9#v8DzurbPOm_%n~Rm%mN*~fN2wBj7n;n&WQ z?Ix%)QULcl?wudxBYl~n{O-u5tTAZ<(w&51PS?hE$9eJ_87LC7pSf=|P+a#~&ObJ>A@UXPLa zuo<9FNhLnP*N7TJoHCEtyGIqy7Oa|ST58=8zNwJjeAW{qdBmu5dv|)}@~tMe;al3u zdoYMH8ZP2Nb|sM^zEmArWPv0p)XfbvE(=~rlDXa05uz$(8*#1FeB8(ta_m_%7BsyM z6op@Rn|iujIYGdu6(3)|XCP+RQL<3mCAP>DFgK?sc zRrmh>Rpxi5sh4LYgiV%FD5i+G;E@uiqjN0Tj~B#m7Xs||(CGuTk#~V*G;PDo+Z7B^ zZPcifMAWFO8?F`tv&+m=|0__q=NoYn;~sHC94u$YZkYQ}i2cjRdQR_3d|wJBA5LG2 z1O(Jq)HlDKr{8D*cw8u+Ys)u0@B%8>mK%)R%8xMIDcg@-A8y|x{#G^hh44k6Jm^$L zZi-)$zGzf15vkU;0-VwHJ2||8U1KA4U`YOg&29?0N?#uWH-JJ>Z|dzY5)1 zPRR!3#?@23ALh&Wes9y6|2-C_UQ7QyI`m7nH;S11a4)j2&vUI*r!Vp9Mt}Xc-NAnw zQJIbBGLy=>`gM&2UGE2AwKeEl0mKPQjL)}+agPBlW+Tw}Z`T7F|Gqlh63$)R{g~63 z?ik(F887{duy$o?W#8> zv~f99aa`L^Mq}NB_j4Qa4j=|>YfIee?ZHB?p|&+_D*4QBBGsvB=&g=@S~Hek+IbiP zAmVG`SaZzxlXXKw!T$dK@c8&#n8G0F=>%2s#_RMi!7qRV^_y9~?&C;)Y(S0=>a`31xj-po00*k`}CEE{NSil?HW8d)-5Ac zZrYTN)S@=pbJEqb3@!LD;PTR&%u{{>@1UYIdZDEt=-TJ1I{Oo)wSz;&0KBMIp<#bS zM?qIXK_Ll5NX_QtKV)W7Z1xhX1c4 zCDhB?U_s#D>zZe;Z{G$UuUD9XIINO{rmeeu-&phTa>6&aSLla`L6?Y~J z-6KT-xTTQoJja$W2}AD|pIugSPnhnjJJOPw>H9z*;hkE4KHp9f+pZ>_p{1o((t-ag z+QcvT-y*0R*azl$x}M?_SY{90P?DzX^eMyAv%ALtzB12>=STajU*s2a4jD6oV;(aZ%K&Sr$z{|8Egw)|CH0xB5$qcmW3?~h4nFL5dLl< zNt~EariglBUSpjBoX5@vhDw5Of30gO(PuiCn&(6V8#P6RqP0|2dM4*Dd9POgM3sR_ z@e^cG&D%xzu_m2InOM_sfvy$t;<@ipp+u=5O(yBz32G>!yqRgmfUw=vM08?t3hOfK z%tk9GT^G542pW&D9chaI$VJycu_}W>^Nb=#hM1@+9)XO5w}V z(L86n<}Z7p7~0n-9-f}t=WIR(b#YY>q^E=YM!|T}1uEgvoJwFaPj>SMD`?b(ZJxnxl9YX#)HsJ}&<95Hp>*HLN?u{m#v+ z*+r=np@1O|KSy5QlzZJDvev`fMvI28VA)CixcLFLt48$rUC7AXmog`|_k1j8fIjVa zs4hMKOydW*LxA7=gxGN^{EL4iwFsxcZE??^5-!!=MUmz zgs{$^Sl{o^P$+Y{97rB>{?+-RvJ;*OUF24EiJ&g;M(j*F7H53TRad~~j+Ld|rLU<_ z`R=$G>{?#Z`aI+FH`-9*^GZwm=)@&DNGn6w?(X|xg*<>EgLL3IMi~;VM8v`xyz~(M z&Ap~=mG%-qVg?!a`9XAa)|c*#!bM+FNR8{zy18jF1NZw*nxAE7$>5FBcAZ-v-6LJh`IT>ccSM07#x}}*H zDYr%z?ynPp?mVz&ac*IsPrQ}3Yq<`m74Box+5o43?h$n{85=c+v4 zu2q=wP8C#B5@gXTlkohb8d{ADWd5bP8$gIY+R>&6_$xy#j0P*L#P{Ac@kMcpVZT>S z?iRlr`kVKDmS@AeA!F!}Q5w}PInyLW=D4QlY?2|u^k!m)TF9$8_TnE7*D~8P-2)NV z8`9XtPM#HxauUa;A@crdu!>R)HJFcXfmXDFv>$a0`!V;Gh&K+{stOBBBn}q|$5+lt zKI}VI*jq3oQUZn2DhTMF`Q zX%(sYPuq8fZT6R}C1w?)K)~Z#yJ>4MR?@yLo5OwznrqIKdiQWXYWiU)Wp?dwOve{; zv(Ph*_z+=nsc2o&AA$$mGMZ^_$0pg?O>y;bAtK<(yEjYO3Q-+ty;S?We=gyhDkEF3 zVBC6g7_9H9BLB5k;J*W?``6d;Emkpo7XYPiRT7$aFko9D4f}^@MA|Lj**PsEC6=M4 z?aRO2MfSpnU@-&{d|z=@+wE@De29}P?pFCH((&eVY<>zVmfw*WPkjnAGt#+v4NA)i zhL7xPo&%PRw0{=Xr>~BD&GnS?KDm}RmHjnb{iiTdQH}Yy6u4JEAg!*8D`3$W+*Tfq z)bs0(b8y%~J?5`=G@rm(+NiPK)OF4C@12TLYr{tY=OOjV!*H*=xfTuYT#(^~GNw3_%?E$7qXgVTcdn-l7U=i6rbkP7vc59%v;u8`Ime`MV& z;zj1WoVHe}5m|Y?7Ou8)FWn}|M_WT!=A4oV)NUKvR zbg>mMJI30+xOyGP?=sVeR%Y^GzEPjXeW;GBow)<Gdu8 z_l%IUL3veA%9es!J$L!sba4`=RBiJtuU$KMXFSa#ZBRX4=&cCOki^#=2;n1UmMyLx+NC}( zJb6w$aLclrZ<%8O4wZ&5z`C}O*9bofZ2U|4%g=gO05{HPr&{A_ni5%p{yDc(Mc zwbyE=W_NkI0Nhufb2{bdMMXtzi8(A!L;%!$^b6m$ZHrdcwDfHS5b+TK3+@haKT$UgvGP zuQ9GI--gN%=75w)(w6HlRQ_dU()Hn-su|Y<@V!a&9m{fk&G+_keVBVCp`xNf2Ti*+ z4no9j$M~;6F&X$N#`ux8+G(SA(Z#*&AugCqxFNInwN3(#!Woy(b)pS>=bdpX7k{{m z0IxaPpp2qjNq6c3t46cVK(zf-0%ilXw$Vzhrk^>=47U)Y)E-lihOG8;$$5u!l5)AgPTXaQD@V#D3qAc8 zCuip=0cDrS%?B&5ABVG*;&DeVZtP;$h~NB42NrcUb1GRrcUHFm2jBytdW27OuzJZB zUzs&dj=I)JFI%z9{!f4uIK`{}e+;WFDbx7$1zQUs z_%ypU-Sh{W`#IQau_bM_#WPIT>zcB@jtq5CU>?8u)+4d0_MFD!$t38KbZ}|j9&T^?c7r1czY=YihU{Jt!%G=HxIy2>DRY44Dab|W9wwn^K2)itcuI7pc}m*f+M$6 z&U)+HbLKJW?#14AZA>4lt#G@IyB!wo)sCmvm#-HE5X+{$#h_X}L@)!i)n4~Ggl5I< zLF1u#^INu6sk`JO9u}5;GPm)`kExCO;RQBEpo5!jx1*RZ^`st$^}@VyUCK!ws2~N6 zL_PH{9@;OP&``XZET=41_uraw%|MZqq~yu|NSWR9s_$1I`7QXr4douKy<$2z!Vm@_ z%gUxD9ONb*=S7XIXu%P~{w+X?=VbpxaSQol+(@vK)krNxYmW62b{77NDNNr?OQ=j`Zo^MN$<`378*;jJk7a%(3Ygu>14DvvC5kABW^DdU_w526D#ts!rpS*$(D*OjjSo z!gK%)(2?L_PpRS38V__;-$RbA3s*vw*4kZscDz`8v2cmikiQErV}QXwrWyDc(&yzgYBdqrod!`_%p2oN|2 zeB27V*~nD2aanyZGLV^2%Hto3qM_vw%VP`s`ADovVBP;_+8` z`e2UtR@_|R`ULr3zN-PBm8mnNX7J<385KCHORz% zrc&=w*q4s8O8opI+jO>y(u?n|^^tzdrPw*{-TA+HMt z>O!QxEXV)bEYglJ>wt6ravmX*Bs=pfhwCl8Ma+@89bl2Npi`h_9KGKWG(I09fjD9R zX%Hc%ag@QvU8My#pY&mvO;Ut$gFmsL<5Y{U^$nSW+33Er_sf7?Yrx6`(C@TkNgdwb zQG|Npf0r2X)b|iF$cY7^MN0>?>0l<`*ItNQp2bnR@*HT?v!fADJHc6Hx+y<2=0#sk z@1%FX$6P9aycq}MPHzdq`8j{zxqiQ1z$bxo1xe?5`x6QS8TNsWAm|epOyM{Vn|)`L z`1It$Up(X;CSu~3Y`PLCJ4u{v1DQ68l+C5*hT>cU1JPOnhqr^C1wY~ zEgZfBDai&$4~xz*^*5F(lZqJ%_x5-I6oakALuq3A>_ymrHg>IF?l?6?&N#w~r~Lkb z;*vwCh3?({&Y@WJJx+EkG4#ZB)&aZ{_YsgkTDamBBT|DQ0r7b^{x7QR<|RD$|IWed zEK6MmmN9j^(#qS;hwM?!C4W7i-IpOBzuLkzcdM^!#GBwN5Yr(a;R>+l*1Y_18j35{^^GJ08(V|CourANgF zX8^=%>T=S<2|GKZyD!az^$!~y7ozkpRp<6I76~;Z;<-4CV>wt}2@1dtbTBBu8n1SIyC{Cvx zbzkq9Nrl;Jvv0dq>JrP>$Y?v(v#9^vFb46>LwqKs{U{p2*o9|o|J0jGvm*+3fv$>#+n3t8)u7JhQ= zx4rKYk_!})Pph54-h23A1Iy*pbm!7!Y8v{;Pa{J~QtW!{#iyB}xHVl@TBDE7;Zr)@ z_QG@AX!n}^&+q=)u8oTx}V`9aIk+K zBhGEyYyRBXUy9Tg68w3ixdBJt!<2Ak>dT?!Oj%|mNZ8;Cu~N>}e-L#w9d-E)SCD)9 zJZm|0l+RVvzODR-?2k|l%ffsLt4a65LbJ7A8Nw8xs=fkh=oJ}H?ADWXTf|_)@h7W) z^TKpsmr?*t1@PhX-cXf2T2}=f$FE-cy+Gdl@0`4;t4V~5DF9sP_)I0ySqCr6bi-Ny|}x3ad&sO00DyY=J~(p%$yHrCNq2T zjbZM6XYI9r>$;G=Hh!QJV8rBAXFgvQ96f29JlvcDh=~i{#0p9^9}NZm&e&Wc ztMwTw3{UUKxiYQ!rT*}rM$X~;JTXVF0;p*h7Q$a!lD*L zP8A;de3bHD-5UXcK)-_NWV@)Ud)WABZZ4gfX4UUMDrNT%8`&UA+9E|AsVx@nP%uK| z>3B55w3}JWw+^^)M@jok-vE#A3 z$BuiM(VWBJy=?=EcE8s0t!DnP!=uPr3xR`23Zn6=RVs1Q$NB$U;8*>B?(bKAYrDeQ zVE(CQUt>FG)}UFbZnwyM6}G>dMD!(mNW2Ubb8(tI!n>}`GhQ?hjbyJ&@_rh3_!^z< z8q>pSYYU~l6|vgRTz;<1?S-Ydc;we#2>L`DW=Jq7Zt})FpjL7TWL+y{GgCYJ@|NmJ z@%2`9s3Lu~bqy;~xn;iihtRyX=#b?J2%k@roDM;*PU3)NQZbei>D z^kBm(^=@eMe>m`{4Q3?*i@ABAlWV0tds+~dK#XIC|PZbrFmM)5=ckk*u6(*1zdAl;LQvNKhSms$SS$bXCn4)dhCis{4 za`Pe#fsmC3QR!|8TiENC=#M1}RE(Gt9D=Amq$bx<%6tcreI97qQQH0@n{;7N!7g?8 z+u7(im)2yrMsXm(Nu6;k+v}Oe;=B7d6Z>sbtC%wW{^%qI!2ZgQ7A|#cf3+mO^pH|X z-KLccy^y<#xChSul~VFFEmpB4FTGBo3KEllp`8Q+;mb%em@9AAh-{X7Tp!7ULGHU< zqW{>uA8w<}_IE|OEFO(2B4iblh4Q@K7lyow%xr85uD^;rBzn^JeC%~Y2idYyrrkb7 zmLWt8n))sKTj`KI-}5sIL@HL~`&jPS-4!I>;F#Qpj^>L(?pO#VLWOQx>pjK&JsOvT zY0KcZwgOH9OhkOQXD!|273|88a74g=T_Dah*-@{sO?QrxzJ@*glS1;A#%rFa$G*2p z(P9su7^86U!HR!+@6aUll2Y}!s)wuFc(bhx!_=b^;qY4s)ErJ>4rmr|6mhjFbCT3S zH0HxjdCbQTGVD&NqMxTjf5`YfQFGs9h9Z(7cnHJ2e+!UZU^rw6aoL%lyknJC5HuK) zp{ydvs-v5ES=h?&l`LF&$#$6Dq9eF}8n56X8M?C4txO}&sV;9|b>Cr*x@m!7MUV!-}>R~6!Pu*%)Ca1f=fS^)OVJGp zo+U4L8;N@&z~6F!8}erj%=?I_ho`ABI8Ekmp9f)5S1xYF``=aU*0S;xQl$z;Rz&FU zwsWEf#V9G7G zAH@2vF4QIz@n;Y$y5KRHR%*mV`Rk=xs-Z_2aA%V()hmji9co>q+Ls6q)0--_^FQ>3 z%Wuq4M9rg7{g8#Ttj4uX(~SH60s?wdED`VD<0&!_j^s)gH&1pBy(Pf)qh$=YWqOzRk#&M68LJaTht+yEvG5|5j0a}X@@7S_WP7YZ(+x73MgXfTyS{b~#=Y4#md$erJ;t-HJrert^M_x|s}5m@OA!f&hAVoy zL>o!O7{A=M$B16zB|jcH$_y@Lf8e>N9`o#Z-O33EExzhh6xvMn7q$LmNVX022`fOG z5Tn_nk~YCI-^LQX`IYXHm%c~&?ZW>wV1k#xNkN<+<3{@r*(YgRG(tydnwmUSpc=8v zKB17`yi?Z_yuZEG{AtE4!)tGlq2MM7?9)9O*08Qg^q+0l4+76d7&LJ}cbvKkH({#l zuV=V00+Xl^th3yyu(n&0)a$qpE7*517hn+$? zqm!PyauC}xuI1Hpls{UcGqP&A2abjA-v_YCE~O~%a3mF7Q>@~e5V!d|UhJk644 zRor&=CI8~!tvH}!VyS$o>op9g=u4VS&7XgKEs*G=Ckm4wKi{Uws;rTXNaEX0 zUm5bZ{%qW?&OalPtKL~f%T(_-up&I7wL^9XnBG|3@)ALEe~r{Ky*%^w(yW!Uw5-uH_uvt0hm21_A5f)E(L7Mq*5 zDf5|gRrom@M#^nzjGku~wa^Ea=>>9KAm+RrpC3KYA_731TicPMYV)9(^TP3Q#9yQO zg0M)b&S(1EBoDPq>OCOHQbiG&zV}7i?cSR0_eUjU&&9t$yrx)x!Vr%PF^^0{R>m72 zn_n$0EmudgayXR22PcD9PHe&)Y;5r|vGgGw9e%1p6p5uiK3YmIY3RoqiwqSAGXf_T z=vW5|OS+5BQ;7ME=jTRN{)<=s~Zc=x0eZSi$wGkOC&_6^_C`rjE|f2J3yzC zyc&HABTnf}^2>Sj7Z#WJ<7F2K()IH;?uxN_?&ZJWi+sP}{{?1E&=G{LA)G5OhsQa$ znf?3KQh3s=!)Eud%l|S9M{WGCMR>t4{|QQ4pYM;4o`jqavOchW*al?|(uNqHsKbjg z|7H(s^nV}!zHj;o{vaW4vprK-*4}qLQ-n2V=Dj}A-UD0e6F+aK$G7U(YQRQ_gyZ7A znXvwqw`wV1n|ke0?&tlZzVK<_$cS|w?oqoo{|tLsY{5J)E-!spD#H3lL-RWDowzW+ zLqA)i)eoS{(v-ME;*R7bGmgz-Z)xL*kk6mTngze5s`i#1 zy|v(viH*H<><%Gv+J<<2#X6#axY5JA(iL`r*~YC0v*cq^(j6rZ9Jl+0n)Ukzc_3f=V2 zNls7ZVRGe?>|Sa=cwGtVrBZWGyKwMjc=O~9ZNP6wvdgASEn0BiyVhF~`=WG`?{5wX z1VvsBb-Qrwy~wO6G6jzJ!IFTf;{%4NaOwpaI3QKpIeAnlu3kbE3Z#Di_%|Otvvk)| zCBu=v4xGr9fk5P@1wA187#iOf^83N7_K)B;ZBDAU)S6&PxM(wP+yU zO1hJh?HJ+}8@2^Vi?*wMEzJEVPeCnYW|SR&Jne%;{8x6d#(F6VN@}}4)CMG6$&%l! z5VJgfx0u(C%pk*6ybxVCrJN6NIrN9K^0LGo%t*wXo(mDE4^w1F4Zww3(S?>g!< z>M99{|3e8utT+FH82BW)r9#pB-}|CdUpet$AeE!84ARCdml>u4%z};zA*O(s_0q<= zcQ!MkYk72NdF5Jvim9^bw%7cy?ckxmhAE?YQGIJlD4X7ztMcByXXP@AHw3Bc6Um;Y zWa9|)KkWor9e?z{q#>cfwK6#^s7@|e)>*tqmz9oIGgy^E1Hp}E#vj*9fw?BGRg)hY zzNA!$0Kvz)iTRA{K#>4o>tv{w6mui6|UoFvQ zu5G5dP6lTRt5WZKtyxZpp9* z9C^94$LvL-&H?X%{Z+ba{V=Zqugu=wM*Ta+VxD)51%4wJp|Z!fK}D-fB`D zgRwJLHWP!sgrhaSXJSQv;PeLalIEz89D7s}jNo1gT*P#rEcQ~1%$#9ws)|L>J^0m7 zOyGtQ2X9KsMopsx-*r{~(Jr~To{5GPI%w*7h*+ki!FR>$?hkqp+xHg36XAyg^u6*o z-GcV@U8&YUb)(c~1^FX2t%RMPRoa%TW$x19{Kqbt4rVAm?4MSVO@{y_mEiHk}4ga*@Yw!9aDiD$*jlbYT3&7x(`N{r4_~aKe zQ1RUoMvrzhL65o5*(aY7FGLzxq%>8q5&mWTMRB57q~o;K`S`ug{!S?cd;lMxIQ)dL zrAhtwxQCurIG-`gl%coVTSa&4@$*18tl(ZOnRjN=>;{$dfLaO(U__yABt>tl`=IJd2%WisM44tM>Sak z678ZCNGq7dB~Mr8f8yljk=e4h_mc2qa7iVrz*#v<$hNoiA8Ev1!Nj}Shm!&+!jO%c zNp9TN{*wr_t`u1ugoOm+|MNmH4L?8?QRKnTrOao)-to z8yL$%iVV0{H{ju2DI&m12oWMSaddvSX1mJpS)o>GWfThQb`YeNnY)C$0tAx6cXjg=zdGuHukktQT+`B z2(5gm4`Pqps4FvIc$a|S0NA}hNeJ9h+NlfD71OSG$bRDqFM#Ljlg{bn>Zk(46O2h7BwgN?m6tPBjSuEnD#&2 zDclC(pSL0M8DZuSzs@`AkZ)q6*ho}8g`H-bRAYUwvfu6zuFvz`OAW7Wwt>usJ||zy zXp>fRN(0qxz8V*MTH(l{-ik>H=cPOP*y|plfM^__lJeMM8f3KD1E7onk&IuxdIW3L zcP7=*yKwDoQS8SD>^;{J>1dI2K3k-YzaYw(&XKyVIzydI&r#+r>K~6-_Ib!^G4W2d z-@vhqF3O~;>nG4|GLwffAL?;2VURP~F-uN7N(Ps2Oc?~cI%x~N<>WOa%RI{0zm`ryDmY9sDzDLL(r!-SD z?H#&AQw;OESi_;K(G)v%NjKFxc(}_05exOz+|B7HVJJX{@xtJAgo431(E3kER9O{X zwTPg&t1D)r4h5~TdchkHI!p_U)160-muJ>%UN<&heidYiC+fR5kd(BS|+_LJu zSj#g$Up1sELFPPW!(>V<4hHrXV zP^i3IWy&S86S}#r@}p}Jop4V=ks62XKH|1uRll+EF=*dFvbJ2Y-p{`vYN1n2+N>0S(^0zb$-8>i2muZ zXKwNH@8TiB++xqqswQRnq-7;6MFpGMH3} zEIfTCJ1kRo;!R3-B-%_hf+tK$Pb=R}Gksy`N_{9!NP|wjp8s2fZvo64qH%TXH!tlG%NFR7Hn7nnb@b+su;j<9_T0|7 zgEOF3%|paO3J-|s@5~;dm=IH?$J?K)Ur@?K{54ltvAr}mJJw&4+}7Dz*s*tAzp>Odm>~OJ_f`XSFo^@LC9~A zf|H&Pfoor3O4wF$v{}ujkU`6@=RfN>OMiPl>s+G7L$^1k;gkKd1J{&^b%~a$Mnze$Ob=C)x?Oe8HkqiY)QR@O(Nj9ReO3xTfDqEQucDQ5INMlF?gqk9Z|>w zSEW1A9V~UjzdB?GrHD%M|BKJVm7)c1zA<5@B{fixIT8FL98)u9Xsa0eEd{_1g&$E% zzh)RHM?l0Tjkt|x9<60Gnsk10<1#vG^|S^|F&2nZ*xN-kS%nA~?-X>F0wu{evMm*N zxPKC1u$OV^mCd9@3)@dL5*KEw+Pa%L>i+4)wW*|_T0wpN!-JQ^rr^%W?hh0OW%>y@ z4^RZSyb5;zU?6k%UboQePRC1(jj__;# zR_dMX+u?@A$36jfKl4ekIlrsS$tr ztk&Pb>ncim&eGMO_sz%E#4i(Whe2CE{>+PVTTiCk4#GaPQF-h{w@?UH4-qcsNR+yI z^IXRxV%B!Xa9^)rx5YG3{=3-A_Q@CJot{ShZD(svYXIzXCfZYKo| z#qCE)^6-D!|MYF`cORp^IFW(Rdk&BUsFuI49nQ(z;6hof3KXNwGBQ{Kh<9azRfVu` zSqR0(L3M;IC|J2xtN8=3O|~LD&I4??E%jJ#IRP<{*XAKj=MrGt0X}6X71ryC*C9d7 zOGHy74#T1~3)F{WLJi_8ysdQDe66%+H(PdE9P8J|3r$u-o}z86ZUgu=3<}-{**J0! zZZ_I`Hrp>7^BS2P*oQ|?Lj&xQCzQ$e3Y(Q6j~2f)azzVw{j)h-?Sk@D)IL!UAFZZJ^8 z!lVmGB1beq7Q>l|3OB1m4C|>b?*xT_aDg|KzUS9h@G#e9l6v_To1c!l6Ew7G%qo~?^AaS*jYz%CWL{gq$tiFV~A!_atk20qWU+6&qPxlSMMZa=HZ|0vtlG#m^ z=q;gFnBomycm}_pl8@E#BnSwi`^9`&)png*O6~UW3eml$Kn1dw!I}#3o2rp|*8vXS z0EJ2s_lBPt0e{RhK}OLVn?X&~gRyx_`B!yA38Xd&pB=8ygeo$lNEbiwO?mc14;1I?ow;5<(H z#_~w-lw;csj~=f@eJ8!sd(FOld3*+gF$ax*kLTMglElv!=4n~|X<_vKRI%(*U8j6d zPq!qmpuR*kiD8HmAT;UXt02vS58FF&%C6u4yLq8_(AaDL%_7mPl%(_uQSjBlo5fkKFS<5V z^cB>0X5K=JGqm5UgKwe>3c!rCnL0Kgj&+ z3zh|RLkh-BoK76`ex&7UUo&&F%J+5j2pf$07|Zmi@VzI#Dd}{1oJ|)PqrPHVBfy_df<7=F6|@~)=6d`k!rqt1M)-hOHExKf8EV#+F`=w-gQ zkR6*}=ac0oE^<;(elw3$SK-<>J5V=Q5#mkdqg|#AtNpP)@e$NvP&Bgs+e~pq!BbUIc9Q}p~lsKVg(V>kMHq*x#2$JP8Om}(@I*GRLW?8P;gC*y+ zUtKv%UT)t{fmm;pXFa#c3Wzr7uy2OXVkTxWp=xP9d~{U zUrk7aG8XlZ)3sRvf(%dD44)g#WCTVHxIrQ8u7qe&*Zf%vfPc4} zfg%_hJBJ0CSeAk8$R@1APR}os<)2b*)f)+oDtmCD7&Y!jefAu|E z-g3R9OW2BZ?dxqRjK`Vs*Q9KN-Fo>W25rGn)#1fu@jL)((Sn$*y#|YNd1F7~LED>b zSDR%tda%z=?)fnP-&TBDuO!&H>(_7(VhO2<`l4bAE7vi$+N&Gi!;7)o!PW` z#N_}x0H8i>?R(8)tt)RJ7ita3DbdZX?9jwn4#4(oJEYhV>6>cDHvhaC%(32Yz+gqiSDjfBeJsFkrKP4Fu5IN*mn$7< z%jtQQb;BL>H(X;{$U@UVc0UxpweM;79nbv zG(&(0)WcUYmQ=lUyb6B*|t z%|DBWaLS;ECS;H$s_{x^A3w3Zw)VKEMo7MH(NbVW6~Bocrh?j3?ECSK)5rM*o%ii& zasiOa)dIeZ527+uK%hkEXQ+`cKzmV6$5NiiI3 zg*e2hQsRkp{?Lv93!UjMyTuO=*nkMDyd#UhBcXgra+}6?V}eksz4SaH(GizFX@CpK zb~|?5GIa>ch~n{yp`@&JimGX&i7E+p4G!5^GNO$ho&T+t$-jOB+Z{p5dxZ<;({uaw zI7b=nANJT$r}yaSP|?3XmMZLd;4gj8ApPYSZ~aYi)2)7$-O(v;$M1W2A?G)qKpxAT z{I#l7p1bondMf(V&x!bx27Mun)I?bsDp?XcT-DQy8VA9jc@J(#t}elskySWzI9IIu zIh92I+aafU#-I2+e1~2oiymt>`8gyw>r|LYnraasT!`Jd_+|CDCY`Y z-W-TP24IC`G{i~_KLL^j%nqG&`svTxLN2xI*H`4rTQ?H>eaWXsZ_?(umD!Dzb^Do>e0YA zQP!QP7h<2R{M(Dc-cvqTcILs8;g3jC<;EbTC11JH5YtK%Xlu__s_zEJDRH}d-a5Wh z4VAn87AiOW+mH-F!SI(uvv{&Ym;H%vk?K-zUiR>Ta=U$8x#))b{^6<}SH};S&7py3 zS&`cpczq5rxH4Bj8qynYl;ez@9{kA(+>@7Y-tV`+iEC|x5IK-@yfE)ugZ??ka;M7H zNgi2UigZ)s(Ii7*F28mz`(4jmi9Je-PrQ*y!RQ|N-EklZj1vB@CmZO)q$vM&P6f^C{G6bb*g8e8K=`Td-9III;*8hMJT_IbAxap9`=y+e)TJP z4_mi}frfQ?OBg)z0{b4s^aWwh$)!vQu0gZJIDAnq>^mq+j0#kMhEj$sHNMjz zwWy)S>GSbi3C<$U+?e$k8Bv1{X zFJ1KzJnw#y(8XS9`Dqi9vc)6%Y1D&J#s36v&-wupMI^4|^D=e4UKuM;g)8cvxpI8k^0LVu$ z+neafd@Fl){TrYhsm+yeV*X!y@2h^jrZvs}t>J|P`hdfmL)`ZUs~?yv?vZg9XlYOC z`yZq`eV>py4ze+(Ak+C;jG|)KrG05x=W$%d^8c zj$WG*`YwZ?>MHQnt)HwKOgJbG+pq2znmHB@pqxd=bbM%EGQ1V{H+$No;AfOg{7mfs)d4j{1JZ@7#4PVGOr+D`=mHF=6&_jZ+ zYe=4wl$(e12(S96Ce1N3HxhIhv61;k@cke^jTI0d!iz-SoytsTx5pS;y}xHD$UK2t zza?L?pbzj%YjKczW_zWz!c+`Fzb z!0`=Xe2rYc*R5554wps|u86l1Ys;jkLV*}vNg=32>$s1|hzqpYd!Bx)TSM?;Wyg6B z$?Y1O5|Nb_nFMi|?(m&u{qyg@Qc=)p_00>5>!O^r*O*47<*R3YU+OZiev1Ilb7+7S zUP(v&mgUa(L_2mR8igUiMayQ-GA#89Kx%+Wk2YX>Oxy#3jfJ4ST!m?t@*%p zT20A&E&cP?(h*Fzv!fHc> z_uoNkn0I1gV!;~~0+y;jh`#s+qIs6eyB84Sre% z)K~nniABl{VShCr?83$szCAHv^3l1yjy>dqS`6uQ8q7nHW)lniRnYBBn^Z^PSUxgy z<3aN&Tmc4y#jdPq-z~2{s|irDIPCu~iGoPiOcf|*4tb7wHUrGlkEfq?Qu$-PFcMb0ciXu{L&6Hyf*UNUi<}z&boIxWP;9xtv5?nm%*ZsV%NF- z**4MJn;J4>UC62T~nO zKHM3msuNwcBHewBT5p@!!~14!we-emYxT9|64Q**)~& zPfgs7l>M+}h$zbXs|SNuS`|K!^^8SVYwqPA%3))y1O&{Hmim)0lRklAlK7dAf$h33vgaRKC3o zndYK#`_Ee~7n=`e;@Si-A^ch}NrRT%aw zf$8T_Ou4>w#B?FVanKKWDy3@_l4yt|-OyC< zv&z8ovZ(WsM?1j<_#>C+b$J7Rf}Q5PiS1bwo`r=xd2utKY0snR#{sy!Fw>+b=1iBz zQ|Td0+2ZRQ?rD{&U1noI1w+FFg^V+mk?wfEQTeub*w+i3OM@5;$t9o%5=`0NUq z!hj)A+@+Gp>5oZ(&m4J-DH1N{!!qoJu+|bo?*C$xlQNne#umDWabf%Hh_Ey@Oj^F^urzf zZUQg+_~S`NZ_hNS)_{#%`u^hc5hr9!3XNH1Zt(VvM}wRhll(D|BZ7*}Dbri3k8LdB ztb|XlCCq06BbPu8Qda7?t*~$^f|T2F*Zus2OnG+WFV7cbYYwaRJMynze^(gn&38m% z@>7}qUDhcdk|k|sAbU9<;H`HyEb9blF^sxET9F2AKlzI)L9|m!#^*I#$W)W4E(vH{ zG)*n*snGk=rf21|{72%eRU2=s){96_i?s+R|L$~kJC|O2{L$9TFiy4t>v`-AV{_e0Bd z8XC=qY&bC2RgHA-uQtV!9a+9Z()=g{JY+c216(k}*!%nCj{Tlqitnvdasq@w zvlj1%8D)fBOh~;_Iob)o{;8NncpYAp!$wJ`YKthYUi0;7qkw>wwD99Wo>|{jxYle* zo1$*usamjXt@*01N{5!TvsJa#=fuMbZ0P0O51PSC(-(J-4mq#7wIVE&o{P?pC>RS`aB*P05rXo%Fe>X60k2fwNhs*^FyuI5`H46!LVuxj#^3Ho?&{ep*Md zUsD0@oMxo|7xmJFck+Ae9cq5?R?e^0tCPUnJsa|oINGD6=}ItGkc|3k!yTFiY}y=Z zqA3j&iK~iAn@Lf!2(*BaY0IrhL}_^b@E&j}ny>jTSL@{OyMk}?jyM)~^rlgb;K$qT z$vj9znSggQ%2_;icG#s%#EnOt`1PRMru$u3bz(qMhRmmr>x&@g%zcO9<#|#64cD zdD;pbuo#!FTkT-`@R<3Kvplqx>BkDNk>m zU{k0Lx{39`{St?s;jPxp`kkZf-C{aGR3W>Lri0Glzs1`%Gsb?V=L8kADpNN0uCI6Ju`PbS4`2l-bruTtUxhASSr7!S}c2B z3N4AZD$~Qi1K&52O>Q^q8r9Uhm7VHZJ*5m>lN88lZvhe?5B~bSJU7f1eJ$8dcUx;Z zuV1$HdP>l;y^ExmekAyGiH<=sW=xGuX=z5v!W67dfvhZzW%!X-ihg_3ld^Ds(~IpM zsRJCRN0_w#Hoc#h=Ss|H757&!ffS3Ztn59`kA5`ba`Z+VcIiv=h05%_{QRMMo8`Dw z74rhMI|NIQ4dENk0g77ur0nA9<57*bo3x68mrfUbWstly3glxuk(SP%-eK)-jwqct z4uP{8v6U=uem5eenEhi&w_Pbb99`IR;N%S*7=TE2&lv4D{+AhFkF{5T-`phpl}j8# z40Yz*8?S>Lj$9NzEWWpEr7`M{C^m6!Ee)f>%zMI3Gp&u9SzN7Y7qb3^MhBzAxw6zyz#t^9Rv?DF1Sn=H zwAq%Sg`m%rZSM*le0a6INsfoenY|S<>U)cUi>uCC+%Izg4X$B3@U|j@)|J6BpjEc3 zf_I~KzPWwk1}~mrCz6if7Ld`@ypBJ@*kOyFZ1on1^BFTo3knX^|k3!nfp6C5Jay$4%^;( z>E)eg>sY<`!3WjdrznRa2Q8TW6G8hu-R%G#B5h;~aYBU15swfePpYIt3*18<&i3j{#B@hk;ttXO)@gKZG~lSRdn7vMgl68}gr2TckSbm&&n3aqZVE zP%F`wexlg)7*JK>PpfaK2ydY$I z3TOvW)_YyZhb*~6fZVzda#uq(UR#N+oU|UUuJAKlj&nZ{)1hBiM7sg3Vjy@My>6T& zmDl8{lF|x(6Do8iW!SQw-b?NiCh*Kj^LebW&>m!IfP>$ydi5cuTA@FN6)B5+5T!r> z3c~q}HdJ&#Esz}8bhap_OBKT?1f>FEnF`b75*f>G4UGa~s-#=F_^_Rr^9;_!c=|!a zA3SAQys9Rd1Mr+exkOEbd&?#mgV7f}s27EQj|BWO)QRUr#Sm<$FpD$eJr~s8V#U=51d7>F^d6*Sd zCA^42G+=p;Nbn(-n{$-ue2F(lS9ew5=u5Fk97h~izla@-B@f^{%BO02Ydz_8Ljne+$)a()`N}r}av_L49 z_Go+oXu{`b@<@E8!F`ohZrU<&=7WWvnrKs))E551RWi(td?n(xwLCE+jB0T(`m((R-3jvr|48=>rO7pgVB9$eO;HF=o;S8x6ZNy^o9eEDg8*lwBX zyg|N8z;tOwI}(e25+BV-Y7mSL6XC*@N1}{^OD9t=m|@)(-zSYPb1}FTn?r=(>9KYt zMe2{3Ae|&l?vYHE*qVkYV>xMyLMz>EytN+r+L^>O(exVhs!pdH@2qfKJWT)Hw?~er zel)$mihu>@H^%>4II}P8(JY>Nkwg&x>6)SBF&|FjX_)NJD3Z)u*F+W8plg(#Sg}r_ zo&Vkx+~RNoKp`nQSwet!hcD3z??t-?GC|aRpY|tz^m!aW5n~*!>wnA0$=`8Qgr71T z7bwP{DUK(i6P3s6vbaH%OxvSs9n98fiULZAuNF~mR>bkvA*}wC*|bL?#tOIS7O$h+ zkAuws`YTx-ecJCE_iKP_0*|k=2j7AiH8A)=WGOpBF=P-=P7J`KZPG5JoOAl4j3OSD zMgyk(D$|q-o$MEC#d(+4G8CZfs#aidmgp+Sx>$6Ml3px2;g5H&IRmn<9?CGisrtQi z3ia~t4ZtBZn5}Mc3q&q&~uKw7F@In3GkZT(j)yA{eAct|qB&i!u9;E7j+;6FCrv+`f?1MCN&B`y?w}_hUiaWb#hw5KiWc z45_VoX84yFrWUx0JE|TxrNb?p)X01iI?QWFS7=8O^MIOO5O0Ljo@XtW=jvF|F-&Cr zyq1^*JFCX4$`opvXL2G##_|-$B4qvJ&T5b`8p*~#kK-QognI+u-GpEUNVxk)xxss$ zl8DMXw)M_uXyHY2pqh=!HKiq=@gjMa)F<=%N6V>NhNW_HQ39*Q2idvHaKLE`53`9I z{C7*}>)sm{`9G_wYkc=q(3{Yo&&x%OMPc@yL@=kI9Yq9y=ZB-Bd5kpjn4U9YuE*9S zEyT(Oks9P%J9%$I5OHAff0%m9uqgkiZI@C&1O!3pAqG&8l#m!eVi-gOM7pJ=ySp2P zZs~5MySux)yBTWV|L1w%z4uo>Q3w3iTIY3MCJtK3Y&zR&dkwlxHs4o#Z8eZm;yR?s zsI?bbDMnBGK5)349ntgfw65W*XdUm`$2=DPGbmx?SA?e%PzBxLSeRP5MpQ|&Q|*K` z&%C|Z3#?a5!uk2GpJzG~H3m)80|>6j>?F8Jy4F~h&g&_QYc5|B_D-;3y3tvNx_y5R zXtnov`1YGb=8giU=*s)Idm}HizpMzgfI{K+be~w z7aW0TOJ~p3;`CU;kDG4m?7ZIP z=i~)IN^NoORo#C19EJjWZoZn&)wX6gN7KF46@*3$88o`+*G3HyYaQD%~9aeptDg5J10ALHeVfiPUT6y5E$!n;oJ zE|uQ%)}!umqlQ@YvtOpPjk-(T%9-!_aTgck||{yP(R^l)Evp+Py87p~W$*nQVp1Esm@e zGCnIXkOxAif*~q58p0mwZ!#XjB9r^B)&d_HW+Z84G>gR-xxZ38yU~1&HTE@SSo$jk zrJ*IjV}H+!RvSk0H@trD?k7v;8)tNQ8_zO6G?L3pRschwajUx~>+ZrlvzQuF`L3V7 z{DPa{(#1(0`YgT^3gWT+<1gOO&9Q9WpufHr(`)~5hz&m}OiK))2qqNdxC26lBChWL z2RR7>f|Wb2H%l{d{%PjTciSx*`>mJZ$o#D(xaAj+%XGWti++Pgx5k?71NLcznVA^_ z32`Po5+hH7k$|FL=d1HU+e1Mszrij)#qiEl0$TQo1k&#+Ht5o;SFZ|O#5Dl?*y(F& z;Qs2y22Cb36yDx0tQSXMdZPk!`CY{iFMxTB*pK z_L3Jt8Z2n{x+`k#iHjK%m^phk>all-gukcCZw-r%4(vX-9&Uh&C3! zn)g?FeBIWY{a;rJ8K2#Ev5HI!vcquK$h?aI&8MFf&WCKCg3WnDq}Yfr!^D|@LIBif z;S{1$B~aAP(d<2)HeJU&a6`4$J4aDM2-X%C6@{s&B=SGqZd3rIIHwst-Sg8;OJTXp z<>JAaQqO?pPlu_SPm-XK-mw1=5&#qL1*)90Fm{<#s$@h<3c9WTQQ`%U?G7jNWFm4c zJ~=JUn-xmZ$9FSc+_^o3J?tyC{2XJDSf|ylmCc08U%NMbb)LB{O`j;}pIFfpj@rhM z%AquT$~~;?0b&;l;M0;zAymaXE|PMzY2Mm z_f-`PW6qD8g{&AMHwYBZn0kRr)fP$GT*YW?a{iQ$FP|&I6>%!Q9mq37# zCQb49aC6ft_uYeL5xKf_t`X^`{K|pBtH)bOmL@R7=~9Mw{CeF4y)ie`P}Pb#H_iRi zD3_*s>P8BY>BE=9Tg+JnzS*#Y_gm`!``l;FhyMR|>otu!!L>1wIJmQoi$Nw*kKarM zj)F~7Awi}ZxUCf9Sf&E#uYQSsg0f%6c9a1!K*p*BnpP@)kj-C|zmTyWd_$~LJ0Zbm z0?Re>s|GpTN&jhVz)pBZD!L>a{s}h)zIs8r%G#`WAcY@(v+9y$PnJo!y|4(mnQz=D z`{%frU{HCch^zkWe}qqZgnUq8R9xk59Tn(*byS%ANO+=*%XLkAcr?<=V)-m!5;4YUzgCaz?7!8;b&~sy05fvsO}L#N z7w!tX>RVhlO`@@@H!gGkaWV@g)tX>L;|mPg^t;h?8;XkL;?*w-R^^UJG}_U(dCBgv5mSBj3=S z;h#4b7zIr0c<@)HYX&4lMuh|ETVJgFwRGQ zK^n~D_LLBfZs31YWYAz=J!JQJO(rIm6vD!7b1WgC#%3mjeqURaPwHoX+!bcziNdU^Jk@`|kj4NY7T&!#Z{olZbH?@e5oj?!~MNgOsZH9gMs)rn(*X9E7;3f`gLm4(rP>`toc ziVS*2q%Q$QkKF;~PI??}9u^!|`?=>QvYK>+mZ#0S=<8JSO%cL9Oay=M)tUBp<2zPf zp&wuW~YWFB895f8j8T)%EtEixlyv z`5NO=@sCY4aGy$xVR7Yhk{BM7z?z7YR*sJRVlsy{a}JW=o{TMq``-ZrLXXFcpY2k! zyT!iwzl z+^VO+H(R-nyM1vGj^lEezZ~~*;yW&XX0gcGsDY13T6&KavuXn!G$#JlQWS79+ zW!xlYnXDJmv*qW{%3w-(qxV0L6JZ%U->UYQO<%;Qy1EA#75^i1gbB=pRRTSzbqy`Y z(o`PKHL9TZi(M#+;}@7yT(wgS?KKwcn6hmI?L_kXhu_`42n7cN9t>Y3OxloMfIE-T zQ44xVpSNxui=_i8aK2N&Sx10D?}(++>EUHA$i-OKJH9+xqACb!DA{$^h;Nz}_~U** zt{&{1dM;S&S0$njJ^NkBG4Xu}&OnVzOts-rTKCY%r=&038|P{QZ|7Q{};9cP=Nv+N&BMFm467hz?uX-4oEUQz8^x=+S$ zk!}2R^A<`B#CkNY;ArEA2IqufaB55m0B|EOf_(P|MTX^dHSwPvUY5uP_HSK&uI)>w z4N{d@p=HS~Gz6zZ3>+kF=96CT_1I7Ievh3j>}TX1Pu@>$E2+2yr~XuvsfliFqynAj zD|}BMgmW(yTO`!$?nasv8)X&^?k?n%yU07-kjQ%jrs&BSRWP_ghNR74@s*~!Mg zv^<)7FPs1Jw4JpIa&)X%Eh9aen+~=$72?8*FJ1D39n%H3`69l6yb#*)4O+Kr)1+ar zzmKhgyr104Gj?>aVnfL}-8LtYQF*_UaTTR^q&BmZBa{mvn&!X;KQCXY=XV#bRC9Q_ zE6DYK93Fkr-+*Eoi`<$T`$B+mzM4xitKVA$oZb(b9wzjs;N8F#}$n$bfJs`M;QG>rBHYcxLKdcZBZnU{;*iKRj9CSQ=Hz3K( zAm_D#K|_eryM^0*DKfE`T|kuiTY>bc5!@>-6WWhIjqalg@<;nLhPX*4PoTLNku zBUc`g`%+2IqlhxG^LMUkbe3nSU?zA*z5PiE%nJ;)68Jcuiw9=Fb4qp^R54e0+-KYZ z%r*@3IzTHUt>wr!@Wc&Zn&uJE;9UDYGnU1HpFk99vDq70@n?!bOliv{lC}Trz`iVq zqK1N|6p`ATf;Uf899a$2A!-^;8hUXN(37cqL3+w&N3e zF8^cIZ}|blWXr^6C|lG|5jo6KU!==3punDN3vkNj0%Cb;6fwuW=BmM`2)N%VS_+$yvi9WWLGl z0PX7X|0y%6NAbYM`2Xcp4nc$);rOz$viNV`X1d6zsV#~HgonrZ_@KR*2WMic zw%z41grfbx&yWzNjf_3;C<2{M=OdjE1w67}b=qCm?9{uYPZ8u4zrq=R$dbv7tKg zWRqC^xiIAqDR|buT6x>@M7X8>Z0ve3s!AGMib0b=Gp z@5{Mb3ai;scOzpk#@ow-`KSLrkq0&QT5SX%3Mg~}7wn9mRAI>`JH1&lL8jEZ<+)Q9L#3p|hi1Zj(w zEkD`bZF4SdZ(b7P6aVT-Pbt`hj)a;$`&|N46rvWHoW18dsoGL0{L0z62jm9HUpkR^ zbxU+%mwM6TsOwXUHcYzx&bk!n@AL?$(7zPI(l+~t%1#V4m(P-+-E&(|;6a;dXO|!= z7%V#!L~u8XYTXC3TCPRt6A%}V|F@ZAbWRWA6~mX1qY%)r7j2xOP|zirZEtD+eEnDt zl;C!$>l+M%`0Rwkx5%3w2aYSJ?D8_5@_`wnD8xl+x?y669s%vYJ0{;!6ZT2Yq=0dK z$MH4w*G`ECUa+H))D#ToRG9Ba)zt!$gVFyMR))O6bR|EG`;gRw9VaF|7%dTe2t3c} zF#8r+fPlcSss^YdVGwK;waRB$W#ds*7X2FED86l%nYPSy)bG_hw5w9fe1ES0;YKyR;qGt!YX`FM}Z*{LhztRvERVn;4#FLPW&MZf%J z$NglR6UA{ZE+brMkiM@<4Fu*{@)p=nH=7u2FBSQG{mf(4b#3o7*f-1ShPX76#y*Lu z_{3E3@oBapaaZ>Jmighzzq8mj^=?!0$?Vk_K%4pTm{g~6BC{!Z51)BQLck`%pMhpU zSTi@mj)83vNOeH+0^n?4Ut03w%w)+p78)4LeXgj{6=YXVO%#;wW*&)2Wvr3hnJSaN z|C;~ezG@9(TIG0qK3%p^J$HwnVUlny^{iQtu~g58f#x= zp-Tu2qrD!M*F*b=MQ|5UZyT+sOL3VU;E$G;fLlfm<(fD$LV?oaiFoSTM-lv{_0wvS zmk{8PAgBB2GnPLa76v3GBY2pj^<0;j`&Ad%?~8wb8nkYVV>rnxg(>&ajQIkgnhiO; zJ0(A~H~5&yaDl~0Xp7`J*+4{XIyGSWa+OH_%7c4*LwD`Ef+$|TimTOQNe1p<#?Kwr z3e0Z$!|TzFn3X41@iTgQ?W=89J+DEFXKQUn8|;YeqWPIj>pQ;uHFusgd^*rr_wSA^ zC4y;Pj^lED>5g2h@V1k1YS6i=?>{$qB#(Bk!A4o^hS%noYkGe~cQ0e66DiL`H}U7x z1mi3w=eFH=b*HH&AT|qust`Z6BrMGpaQj2oK}2+HbfnjkV7g?DSh2$yu@W zVQibx)1UhJJy4CgH^;AyS|ErIbFH z8=sU(=F##fsX6;&Gx8_Nc0w9`{7*Uv^qwz~cF6jWX8#~0^i$W}G(&H)Tx#KrkQfIT z;Ee9s$A!Gm7JSnS@oZAUTRUl0`cud&20b_g7FB?w@vtrA<*DpVD`+KFnaW-_R!7>? zjS#T?)E4#ri^sak#Gmb`8D_ZUYHz+_DKE57-YZ}4dPI#iRb#d3tM|ctOSibsnu$ei z^^fb=B#C?OXYR6@q-5a&4Q=*+jRrI|P+xO5CicULrIe0lr);@S_Zs^@_cg^S^N*(1 zJJrwgWOLgsNg345b0nl@hwTDD>+PC>#@;Bj+V=1R3z!x*{kNI@+0&9;Z+l`~r;pbq z2?zFeR+s6}*xX;R7Io#UdsIvan(kvj05jf=a-QNH-C7#$GabD!z0H|Hx%I{k8K>~! zF~kJz`y!-}2qg%ucZ1o7fvpec8`eyU0?=xnmkW$<%-Uq$s~Y5{V}m9=&ucmaZpM$< znzVJ0{#=B#2p%R_N3wF1)oWO)OYl7Vcxm2xXT#yi2Q2wGOgvX?E3dSL#a`{}daVED$ z^M--B$F6{xjUXrCfdkN+SH=KEgYXO~OYU=Gs$Nk4;Lb7oX+2 zPsh2G7s-*zK*LEhBQF1`2Q{ty6jbW#Z{k47C^{*4Mg}!uXxM=e*8QY0w3HDbh6*I@ ze@qz5mGV3axI6)>8C~GT3Wvip0`$Re;AlO&e-a6L%Hh5CJXWtSB>2}!wpDV<%nMnx z(?Zt8tq22o554hbVJaI_By~e1k)evN(&tHZ{mPk@Y$&9G1}?bJ-!yX}SxitdonP$u z;u7D+buySazAzVq3ZHCJn`aP{!atXQX(Q$dW~b8vu8Lgkev&YuNeJEKlCqcpLPN70 zmZ7?wj1p4b0tvdG@jLu*LChok7a{!54;NOKyJP*kp=43-!lc60M?U-RRq5eZ!Ah3u zZ40TT;2tpH_eT+;EC>y+o0}E)78D7sL?UPeEA*VGPnRqz=2tg=>>6Z&>MR1!mY53e zG+DnfHRopZoD7mWU6)@`O`F53Zqoi^*gM)~w|mnU(A6wy+GXbxh$CPEB7|*Ee6f6} zP3E`!`6G>=Hdi{uPEEQmVIp_yb?Qh8gx>uD^04#%InunvPtynDDyDjO5_dkNsD%FA zdX@A5a{lXydv*c|OzRf9Q`+LgVlkVbAyOqMC6j~whcD;o9Aan;4jPx{y%%djpSUk6 zu&8?g@h10_q**?qd{Hc3b;D5d{g(b!t%kYWvn#6t7^H+l%O8 z2B$>(58Ez=oKG9k12zP7=zC_W|NguK{YaVib{h+*qqFQ-!kG`vpQkRPU z*G5%wet9aoWt^A$o7tvPNzT&#{-SPhf@`p8yH5k}_0fJ4bDdlZ06vd^!m;ii6a&}J z3pX)r4Ie~**IL3wqtL{o(|u%e`p!Br#J=-K669bgfs464DPaqIHlu0MsbKmIPAtKe>lEI$t-Ug)zT${4zGTl&PnLCC!5zJ1rtRWj=C&S zVXC^rc=dNAbrHrbLF(nM&gbLr({=^iO~aR^KV2S}S1xUjj>Pm{CBDy5mX*twozv^^ zTWb0vtkP4&W;DT#b5gD?y>d$<-ca@YXgPS|-^v5$f$fiOw)?Pd*to=}!zjLYsHN)v z%G}iwxVrwLiN14_SeSDE89BlSwv@=<8Gd-kf_H^I_JeD}5U*4qFAdUo^ ztyF3nM7XlE66=9oDk+0_a<5S@zi8U^9chW@Wi-}b@!z>l<#5p|3|;0*b*gjuqHb>T z_mO&^`_Ba1X<&5knyRz7IrGu`i#xW)ow?;mD~7sa>bi)(5)Fb~y^bNxzEy86wY$%h zUJyP;`2^!;pl*q*ewrS-hww>ujWPq~b?u7VGh%jqw;XWsB7^p|YY;#1Bcj4iFNHeL z+t1e0kHhS=L^%X!ZLplnS@-4STG5?k@l0gG4g#{`x_ix$$fpNBMb#^BjlWTp=9~6x zf{`zpHE)-3s6YEvDOtmWD_?<~rb<|T#+f7Z(y~Wd*j+4_-{LZ1Y(^Gj zP-p~7X?!c0Z2mYEOMho^6Tysn^ZLhmW+trqyrnOG3XP68g4G z2QEy=7A^Y`8UH{apo^>vF;Le@>4s){B!&NL?63nAShT}$;A=_zjFjbFf>9DU0{#mufh-Fox#)L z4;+adC9YNsS|jE`_wzH^2~Dd50b6_ml1jB}SE<&Ar09a2?){w~-)3%K9qm2}mmR54 z%PI6vkL6>hl8!mg26s4{EeK>Chyxq&r#rhF9L*Fd%&3bpQz(nKDQTI(#xI+I3KeX<_zPr8tiJfC)Zqxo? z?A=J&c@mu;i&p)_vID2$Jn$=ths%D*r{g;RU-w_HA>(da+s~cM?oT!&vi5?j%bjX7mzDbqXvzNAZV?33<~RGF8lc&ITV-|)YSG#b;m7{GXG0+WC_E&e5+92(UjAM1PM1TjC55c`Kdqo69k z>O`cVJU?~;J80`CS<&on(iME}+l3tB`zPXhn}NCb7YEn&DW;kNHr-y@(%+Nbovn`& z)Li6OFOcuo{;VSrbjr46#)sqLzW%-|&q`@2DXa3Z!DQFs5SE@&|p|*mJUryX-oV zW*w*LZYzfPi3hAsND}(_RaVQigw>~;fcJ+BczbUUH)0xFygg(eGYI-K_@^a5 zPNzxOQ7eaA=WG+RW)l9P{_8k$cY`wfvac<%st_iFG!wZeJ$O|xO>Cj9wmn}3$4EFC zIN=#3Gqr-a#(l|2?=~$lN1%FunO%%;hh$G2Jzw`#ucj4vcz?)wcy)ub--CfswU*-T zw(3ndOK%c~#+@yBs|n|oC@?-mI!WjW@HdGY6Ovdp^+e#!y}++SOg(p(&RZ4?^fMhe zv$$)wx6&GCbbl&u;QQXI%xn-owdFn&D`9rH^4z?vUVqCJ9!&ONWs?-jM?*7w5)^WK zU($Ojcog#I;($C7uVrqYXFWWL@88}1_As8N$sXC$P}nZ(93d%lDbU?vs;Bxhx@d1j zaT~%aMK`2D4T&?2cyn(&n-tTxWE|EHIrY9edo=Pg=WRJiS2|gnO=8c;qJI#A9IpJ? zP(iQH$5po$9H@KM`9$^Rq7y`I(eso}CFGS7htU7v%BVUnYU8h-Z%%cC1NJU-1@&8p zC7X7ECm4uG==R>UDiK(enqWRAth^I%32SEbyq;reG4Ki64zYQgv!o#0^mZK6Z2%eH zOX7`L;G=sML}#lR-T$A|aO~vddQKpS_wMvh z`ig{zIOc>Sn1T&|JeEmybEf6VmKG3Li8{Q|d<%78)r_(#=-)tgRhN#-JRNN=F=mon zyZWyXl-in=Wby{@aa5U}^Mz>^!!CySu*GoZu`vo?77dJJf^zM+mgv>JVrxY@zsuP562RnuPzII4J@8IFeGw<=tU@HLRhm0 z-emmnjou_Dz6nu+l=z!ob=XJ`uTSrXm{3D#szfU&GMr_Us))z3bsIOZ@9s5vg`)+SSlsv&BNWr`IQc!oFW{W8=03COm{j|l~~JU^bq zXmLQG`I`?aXQl3sl4~nK-p0wCk%K1;k)C>q$PKGvI$b8_9eHIcEg$$}Mvqzk`kufW zO&C3WG{MF}+2w`0(mveBa4M}DvLAOtkYn8}A*9zS;TBgguk!%#i;-8$=MM<{NT7 zIt@Qr@{>?mxAidfYIRC+c6DGb@pYW_x*^`d)}WU5+4%F zGEBRD53u%Qou(suBdeSZ$8+7 zYeMzn`b;Zwh#vjg@{Qd&PoH*(f;g#FvHW{8@a2tAM?!5cq&npn7bJdm?P2pM`$0_Gv2$Fc?g`}ul!DB4!x^|A)cXX%3W`rE^94pJj7;vCThP#* zKl4q$$UnPYA10j~rO24e2`@~}=yXh{2H-qy(4VcHA9P~yNV3Zd=UMXeOn!+aVd$y% z>0^Vw5LxbXKzFF+=P81_z%p8aoW82%|I}=iQpS$WdDjWObaY zxBQ5&Iqnj`9cpxc*j;18#o3!aEN6q9*ygRB3!kTx_W7Hl7}$jpH#0H0$@R6~j;xR- zQ|69ml;h0zvCTs=`Dj`D-hBrr9H zhx$s~K%N@m&-VyJq$ZA+iCQ=g4oT=UszB6!WZJN1t9~ZC%daL&Uc+~cO=qN~p2cyE zTV#7DIy^N=zsDUfO}A&5lja`>4 zz_N*W^u+lWzf9sS@wtXzDLoPdFMhO*qy+k=1!Kouuzj@>;1c?w#T1RbPt5|97)$Dp z#Pvy@gY~AkW)G3!QJXloMM-RmolPFj`aD4L7_at$m7eMFMNr-}QGJOt^+%HhRJ$b; z+vck82D(|oVkJ60qT4Hp_As;dhb3gv(l`x64&_k9spim33+{BiuTHjt++bJql(3>3U@7=QQ#akTxEpyx|I3dSOBakm&^#wnR z`+b_DB>xO6VT!6Rn@~M-<5DwKYT&vJNUD^SuaYZ47HkDoo8dddiad`iu)0W3`2Cumb7N=YR_ zQF$3`91-!=>qTjO2xg_ASP`oP%_{+=k@xfUqp3XlpI;GTQiIihL5+WHfT={9RP|IF zTUgyHS$1x~F#bsyF#ar4U>_6vc^CJi2S?Ww>dD-Pns&oz``**xeAYhyPyTn-0}wE_ zVcOn(NH1a1^MZX};)owh|0180EF!BM>$59yV7s;gXDqOQnjz)06KxRpy8#(VA5>fl zecOTG{O)*ukTuD3@j3}3j(mUpa)CFJj0z}jh=;x6{t@8;JJ)`F2+vY-NgK9uwKr$U z_HKYpSAAr+bo0x~F^|Jhz6Wz0AT4(-YDTmQH;w-w`Te+rK8f-N72D9@vaWZdCJ?B* zatUugx`P^aBNGyrWA4v*|JavfQ5peXe>i8@MqT+JCS;1@zOY(Xvx+`C)1T53;>_iI z6Cke7l*oIvmOeozg_X+hcn-ng1ng?#EDAJ=ay!&icNQmqqs{JL=I|@BQtm108ChyJ zFXvXCxsBL$=bMGZ4?(D1UR+}*r@c*d32&7=5lkxd z$b~l&G`o#lEk;6+Tk(@ct4v$7e7tBmld4_@>IB$+M>u=EGUO0-e}iuZ!|=B{OPM?& zCk`c5zuE$hyU;q-sxQwp@S~2<^8$;K+lErI1&uLE{8^vZNm9cNLHm|L{8iIefG~34 zo5i#aa@n$^}0Qr*?Nes`-PAouS`r+=xa zgy%5Ad2i;3mX@187A&bQWX!uYe&&5RWE@*NIShK`Z0@{sTB*t>`k-&^A0TLcOmuz1 z1l%;1{F++BI_)YljSU>xnB)~gK#X!}z>IMA7~ac7P{Vm^*Y^BKeN#5sZC^nApig#?k=eoEuJyF~@{$Nmy$0n=4K{18ZMnT6hTxhfV*3HE z=G3NHXzqvl-Xw#eOe)IfB#>*CBAxox@7M3OVs~oZY;dpM6M9B(OxWdN{$rTWNNFBK zOZ%6Sz}jN}%1|{D+X&S|u+3mIA2ihJjDWWmPuuv`UfiRo11dD~{N9%SFg6@1pP~o5 zbaJ3z-gd=~CDz=rLLvN;T~qxmLdYm&0jI z-RO34;grzV9b5H5SouWUfFU@#70Ck(SdipZ>KSY1~(vW9SDVUl#?rDw;;2Qd5VjVjr5q_vQe;R z?Me2q`~v&YQS_xN=Uw|T3%WCTu}*8cdF4L)X@17FA8+@Hba@{SlaIe=(MWua+A1o; z-{IhJ48xnkfZEZ>4!?q`(IAJNo}I~35)Tt6t4amX5XFRMePLu{rlb@S)7AMU0N*Hz zoD&uiVZ_73OV6ml1E(0VlLQ(iMs(lNXb-)DTGB)^ad9blc5>k_0*nvgoYdPDqP=3( z8nd9}=}d84F(?hs&^MShT?RHWyQm*FX-=;}NF$V*gr*!1kqYpI7&LdGy3F{^uw!aR z6X3KER3s`K@ov7J?s`-}0`?nRDHi;$Pfi+=y$=U-IbWL)0tbs4Ac-IkRny_Yh9>HC za^m-52z=%x36ueo8m$xFgD>mzKPsiJ&aYR}QJ$q5p{3ah4(>F-O~l|tnK^rgMrbF* zUqknR=twa*Q#rHzEP;|ZRO|9H{2wfA9ib0OB}a(hQpXvm5D8Hl%TU+I zBB&Qh>0}{Y;o00b-HFk=#7>}IAijsaNIYT_x=s>kIKQIOll#b=?#j|5c|UanB;DSK z!^ui7>#793ZopkUZ#OUm4*0`7Z6!)7@eeuj!$!a><*BL85DHW8M)o0I4fQZBfi_;W zmAI3(YX@`FD8%Y5r$qRuXwyE1vq|s<6ejiZ;&s(g4~9oYruBSoCIn>02g zSKjk(YRaH_n(FEgVPQ!rT3o>ne|16so45gb8^KpjjVqK($anAZe`xVy`Y4?L?Y4*c z#d-Wo^(>e95(oDD*+PbOHNfa=_oJP;h4Gbzb z%!kw%g=@G2G4UpJRae5B0qvx>k;~bW)BNoryZegIc|#jN-lrqF`(r3%Dq`(R1sr+PYy_Wp-O-pBOP|%BNr%Ej6tCgV0f57tfw1zb)5xe*l+D(cVR%-xJ=IVfE?b z01y*y7YexWY&pb+#$a9K7g|weIrx#1sjj$jnNI_Fo`MT0oM9BHHKOARCJ}bmko6Qf zs(;qu{YQ2Fp{fd7QbTDkx7v2gyG%`y%RT)NOf z%&w=z_$IABk}J|qpUY3>GdJsfK6h-B_g5cy@;A6c zMk1<<(|&}K<@EY{uM4`H!!nY;1p{ShRnEKKc+|v47d9xFRzQFKTX2VvbZ*%@2R+>; zoxY>&4D$*TVnMZ70Zx$|W|fZ+g{BW}*QiAIR7TO(qKoBp{MsvMG{g+65Q%v(o7Y&l z!){t+4M39RD`x(%^IeRxmie>x4L^jh{{o4ZhVYD)8#h|62f3H#j`a;MRzK4t7j@yP z`B|Y|>QRe@>C>%&Vve-4)7fAD)Wns}bmYQ_?>4m8N^kQcn^Z*ON-KuNHaorswv_IY zUk&la(?Acwc!^_*Ktor@ro+znywc6w2baX;v)emo5M zRI}b>?&oGU{L%M>h4VOzT*tJb(9nk|n$caJ^s!4N7SCwnvLAi+hQAQAbM3{WHDPBo;5V2a6nZ6B|b)xx4Ydh-TC`d>Hj6TklxvFVCmee3p9)v?l` zD*E*vGmA7C&B$Ofy{m!=oU2Z3z2&9z%R{QfHP>{-#&F`j;Oh1Oe_JGc+=I3f64VDX zOJ>!~*E1#`_IknALFBiKzR(D*9QRRw!&Uml&I?CY2Jb>;7l|sPy$w>S_Nd zGowB3H`mG!OiwqZH~SA=_e%?I&N;@UJjK2KLA#-MYfs24-J*vdEg&%j%qKPn;4bfm zfgJSi{_|Y@{zt6CamT42mfp+9ea`A)F@=THnQb-g;#Gd(82!v_4;4YLrEf=|!0MW6 zUkl`M2S<32P9xF$*uTmM_=j}V2*8WSm}2XCsnnFHYHyS6;oTU=f-wF|u zi2$^;q{6GgC&>a@5Pl*-FNa`=rkEeiZHP^YrT>U*b*4mQj-UtyLIx~;OEcj%)azd_ zIEDTdB!g+)bdkC#f~bHRdLs(4Mt6L+2_^kG%g)rU)#+@HW>xi~gXx=1$uudaB`w~y zsQd2sH<3PaxB}Ck#_67bvhT`E{liDq#r`AEr7Gh0QvfaLc9?oub!CT15lR{*=f4)o zxdZzNgOTR!F`AC!l8NH$ie3`fU7?~d`AktB~g)n~xVXo~t zFsNWRkRj;HH3<%NVTVGbrjdw8kdt94?|C}m1E18}H;-lR@?g>B%ukul72mCkPI6}7 zIwC(bvsRQeAjXhO5`K$~njnJ?22Svfhg_SD8mbIFkJHn@&do*k@r)S4opMH)6h(U! z{yd9%QJbb+2ewdobe~d%Rt7z-Rqp@0nIG;OCKs?gkADH-wQ(yES)#K#dd{=?$k+6) zZrrYTE9Kx51++#CKUHT+ z)LE#j@p$JG>FSiVX&bY%vp=?zW>!aDav6^P{kDr?0&c?-@y96!cd+3n(Y3M(&(~UR z{EFs)8qiRMDY}-n^%`{o^;JMJY~2%`LMEPF?;9P zw4usU3Ya>gEQH4ac@iNZVL>Y0pizXVxEEO_nEh1}-SAn0aS)|)m?OBaTuMsew>zRB zP?Yn#>~ciGDw3vN+%aMY4Ro{>6hW(}TDNBmFf4@&+YqTVv9%`RHkZh;mnTBJZBNO1S!ZpFPwkW!!! z+$Cr!P~6?!-Q9{iMT5J$2K(~v{hf1u=2ynZ$atQ6%{A}qni@;tzUmPkbN;ma{|mrk zM*bf>>HaF3Bh}S<)cw=0yIuB}InUFU$1)-13Gmb>@{v^*k0Loh5*PRDJ}dXdBrv+k zPDm_0*(}KG zSC4@ytTx!@nU1$Q>nIcva!H%#iqUz|>X=Vz>((}T#XsVp!q{T4BaM{p{bWyW0P9#) z^Kjazq#m%XQd$p-vfMMf+(N~#Tt`CM$vLT2{$=31(5Mr9j0Bo!sQZ_fel$BDKNxAgVU}QcHHaP_SP~Q9jDL5R z-(1~}y-fIj{~F;XN*}V>7Q?afvHd@xoQ?Xr<>gTg;IH{xhuY!$vjP*;Wy>wiBQ=B> z$JKU1xUk!A6?b!AL>J+bpjqC00L1+B|tknP_M(Z?3N!Qy&^qUUQ$chvR8BcBtY zR>|4?Zt;kA3+6xc<%tF{jLnfo7ff_gE6$VRc80aTqJTQKPKw}tz9_*F;oP-r^A^Er zs^S9y9w;bczVd6`c$(9mXKT5ZD5!GM z0e62HtH++v6%Mv3r=;wdFOSvuAj{qmL2Ak5c5P2oPcDJ0Z5>lJ+J4xc`UAj`vi%v? zR;qz6!EEtwh-hE$9_&pE|2HM_6@efmDd~77^#Jaebz-ylVi>c-$f$EHs0<}U@Xcwe zt1O)UBIc1CkblNaseO8HzFDKV=fSjEWpdtjOnd5MW>Gl+$b?${mB7-JnlAfe4Vt^H zP;*+-g2>!rDVEoJx?Og)OQ^eSW6?aY!BSn-phFfhStjD!3JOJO!5Bf6YI&ce5@>WH zqG7@zmZoW;7(A;-OFCbXT@uH(WQLaqGUEKuYw|!amtGOi&bmQ*|A`*`NwT-RFoIF} zkM~5j_argzo@I-EufWU+qVwK&YSG;7YREFjRR-0ZURyH-f!{#z_xh2&D{*#%gsWDU za;NQ{^`?PmC{}#0BQ7JZPZai3S7)~wsaHK!v;<0?+b@qMoPpHb%(9kFja&6#O3lL& z9RlTjpS3poUz>?x#Me%@Q3g=M6Vlh0skmF80+0_VF&?II&$@npKxduGFRIXJmLSmfT7j)j2x;rt~Wo8?nCEewMcx zJ%raO1@(FJYbvcpo2CoSweqX7c)A>#<%id)E`#q;R+4}zH21ejB)G2kWq*i5ihf$7AX;MmDSl}S#NB;Kz)%*LS4PeWgex!*J|FBs>~jgF-)0) zbzdCRa$Op3&U~OSVpPn?!D9-T!u*>_6u-_CWmOK@1+&>SFKVIeME4IJ6 zd)twy64ma)qh$bk$Q`x96*fsSF%@iB5jVy$n2g=#zDF5(hO4FAeu9cw9P@!XnLI`n zcj!kN^V-&5mSzut$R5UFtHa(b|FT!Igro@mfmO@Z4cN6}2+DDGlE%H|xN@zh_mYt$ zLk*h-6A$bSz8(F;kqc~_F4RZLi$0bT(Zw>MUT^{5Z=I)6QekVuIHa>Qgcl>&f2<3g zr=$BuqWm=w#9NcV?I3cW`}i}0?`OI;1I2-7$3Yb=o)hl&5S;h9fLXv@fHZ<%eDYKO zOX>o#Ba0~wU`7^JI8+{Yvh!8Q#Dk`VRVnPCil<;}KQU)%Vv%^(WvF4Fr`GTfs@L`G zepNDjsYmN9*s9i9Mk93-6m4vK5`xLsPT$;1ON8k0@=z=n+wtjfTOZK}Ae%Z{*^R6v zn_FKg-^(q7M=|&DObJ0>g(laP(Gb;8r9b#c+G{@tr$dHp(nS5Z_nrz-Y!Dqu7oiIO z9@D$?{JA$H8%OlD`vDvcvSe#vItk>FOyxMq>ig+mim*gQpWs-qw^FA)nu>7B-Y8rp zWnGFE&$GTDlk@qcE8sy$1qp=Cb)mUaiy^uw=;z7U^qyfpCHI4Ma>E$lv+5C=#d59( zJt>1jV>dSx?=gp967fzYtY;)R1}JlBD|TBt(0d0CdB(R+J?rsedq$cMrX9%vyoBR~ zaBR3u%-xgBm~ZKAHf&(r2j#G)mc!fjUDT`q3jy;nSOEN?MaFHZQJ98FrdV-5AXlMi zX*QruJASm|aqTPw&G}acj{=5@JJPp>H|Brqhi|M#{#Tt_M@h-+>FLSa@q7y%SbHoq#~w!5bsjzvi>0BdC_G` zzEw0^Z)e&1u=4)*4%Z(^^gq-<4t5xkoEb1D+O1&7Tx*jkcT#7_yl;0b75_p(#=KVg zr^z*sv^})ZHj^@&^oyOSlq=O@G#vv&%=EOHl)?=8kiy3?Sq-X-uqh%ruB}g~q<_Pa zI5FVid?@S(H}1HsjR_aeVcgVdu;bo1DpkS7;fDgw9O7;|OC+i@9R8S;h=KyD5*?~y zo!sK+NjbJ9BC2i+l?knVSu_5WWbT~B{4BYj#N(V zy8US2f1IRa3bBbOiY_xhXqKqNJm=iCpg+i+ia*ASvMC( zdql%-~`gU(Qc!WPUkZYR(lSAq!%Y$a`A#Jq#?X56#1a`Jh&&%R>}e$ng4c# zE{&t?wUu;TYOyKKmtxM=Z=@OEm%%x~+)1v*cXhiu8~PDVF&73UWzJ>eM&6oUVEqyh zBYhQvh77sWc%U^%r`%=@Q4?$F*>Cjs=$s{eM7)3Rc#WUIC-RCQEWU)f9*vNy4e2Ovt_=0PzrvPg z{@Zr<8>7wl=xo1L?sPgpqV%L`z2_A{OTei?W`W6Tq0_Gup|jg{UufGFzJM>H^8>6a zC;B5mIcTVL+lPGam-2X%)JK>`Pd3t@_HE|Bi)%_ zSsG~u#!R|Zt%cb*$E;IaCaJ)eb&KqAwPUK3`ly(BzKuI$vW+{Vu|-fzehQk#4cDf{ zNGK!18vfTj0<>QondaE?g)e!_^|ql|R5ge%&&SEtT1j^ckTah=2-=kl(vs=y9G+X2 zrhU(nO))2=Z0|CPleinj?G-3RcnHcXrnDl(t4won{!&j*W%dIvxUpS@I46_88F^Oh zc5a`R#=JAHY~g9bM&59F#pD834aziFE_n?=y;BS>;$XTqy>Z6h6a)~@GjQ907pwAG zwG}>38qY3x&&*+*HQOjxHuc&9>z-GNi;Nyj6@t^ukvb)DYd_`FAvglEgM)#93|W*I z6MBkEgGdy26H)Uaz$~Z+EFBH_DKJJ!+BE zE-UUwPR23LgfnsMkZZ5>u4|vxl!4(7?;*^LASAP0R7&__n1%4JO#&^fOu~~~uE?DL z>oSoTh;d&jLfOsQR-AJyS+?xnan)AO2LhxBS#>r2Aq~VjJG((yoxeCtjA3vxkHKp1 z?a>`mIN@>vcP=D`BKLc}tY&@To1s-xq88(wBow1$k+Wt%pmQ2P$ui&iwevq(S5lPp z`q&V^q5j*)AmR~#XWu6w*Z4ZaX3_?OfIFI@oaLWr>(3vg`!0T!KN>3*1+(h_O%u?l zoF7DaGjyb;zcgwbRu)IKfHA*<_KOUp|8RX}B>==AW{pg8?@Y=hBkjh~`KPi@L*~eE zD(hvkAH{Q5F3Vr%oxM+4k;imZ*`5yaIc3HSRxM!1n)MIJSz9}m8g(xf4c^Y*t>;6| zP=Tkkr~f{6gD?);vdI=hx41^`y^{j*?dS)^G+;PodYRnXkej zm+Di^4AW|1%pV6vVrb2V&L4De+rF2oGIFjpAzy92ef-e39AK6xi-L`UWaKRi+!lK< zJLeVr0`N7LKHsMBifK9Rep*Iclk``RSmK+870{}S0si_+MweQ~~kYj1ts<*{(cX*NC0(fsu$zcf*T%8A?-c;H}uoQEaG7)j^uF4F2IQ;^?_bo1c ze=`c5qB@=2=yT~TwDw8ErrFD8l@=4sbwbV*U3=q|5sImXq~}ezdc2~8ChZhYSP&M+ zr!2(WOIV(mH0!DPkCylTh+hBRLUX6Mm zg6AoklVAAF**YGZ2=PxC((DFKXlR-3#!*XJvy+h|*Z-$s9k7Uc(IN z9noS0b^xIm&oivmjraI}dWMW0IH-@0VuvW!(iA@M$Z`pOBmtTm`_Lao#$q?O5g|vOq0&%bX1#s+`Hr5U%E)czta7 zKG3{vegZ`ndb&=lRwp|ZvANuyi!^TMGkDg`?+3TNSKDf!Q3!5wzF6=pPY4IF(Yd-! z{I0wX@j1C^Y5-&$e!9M?q?FjEy2pT_o>B>Sb)5GWi9$X~?6ha3=Rw>EO^y(I!}yei zO|M;}S|P@+VT1j2zrxg{V;HIW-WhqR7cw8qQnB#@DS2rRP&~u>mt{5u7O=0x)=K2m z2yqg8OXfbzqtAx`x{5Mr6l$ob-h(&kpAqFEk5i8_^XPA-Qa5HL5N{=-!uH;=d1Ubs zz=F{8%o?(XbO|Z59F$EWLQQr&lk&d#d$3c@>2wzj0(1Ccr|{k?KCs8E|JfYoPgxkP zIsMs6F(*z1(_A*e4Aav2EiHeq|MJEkzJVD&W#hHqZo~h?A-d^=eJSohq?mS+WqXg} zbF91sy^}jGN%v9It#-Ce%x4W(PE9{(wcj2reU2wDW!AOV`QvNd4=2}6ERbD<6XZ$1 zFAF_Ms-kZ>@nw#-es3LaId5$~aDJbzy0PLS{d?v0t5si5y1g||2QlE~kWtS1EAOom z#CGofqLY}*@j!&1b?w@^bo4nS%ggXqtoTa#;L#U zgB1MM?hnU}@x&_KjK4QBKU!df9w#ott^28t>HFL=9{*0eUy(OmYm85=zt>n_z61ac zIduWnL096N*{z5+bP{&s#hy3mj$M{pFg+u0Lxo4)E4dsVxsbZI4H5!cqHFPX*T%bs zRqP#|gahv<4IMIb=Tj-)@cT9NqXdS1uehyptEiJ&z?BOcKs^kv<|ygkzXE|6=_aaAy&0n;_tHkf=kBQ?+qhwU&h;^Y+X+q6}cmz3-S-7PyRZIPhmwz`8`s2Xrn+{~$$_+pPrD91IWl4^0GC6tX8KV!mZ*uVYx z0FfytDfLd9DTg@>g%cjG@yqDm!5%!&p><2|Gb`VFjJA+ki?q$>Q77b{dnFY2*b!I5 zNVQ%2(Mz)ViM)s*Ceug*N<;pcvj9IxV$c2q?77U@DHXP=tMp&+G&_-KG_{`L8$(;k za3p^G*W;aZ`h+<e?qsBUt_+1=MbkQ%+brB z)T2{gY`&6V3{6OwvB=zjRdc>M0)Mn|&bdE-sU`*?-JTx7So0y#zkW6Gm3ye&(90S( zxIV&tXO)VURz^zBEbr%O;{6te2O$4WMMPT#YjQxOdS392pnjvx${QwE!i&lOGvg&5 zyrBko(Bmx$`f$;ytv8i=00{NjHYfovKXwYN8+@U%3L}lpa8=WC@A^j%d}y1QNyMFT zg-G`k{ALEodQhYprnX~6HQRd~N~4ge9?uGE7C+klE~J@1aOQvYU7CQCO4Y#&caRF_ z;?u4zX@{-4-ARd@Kq1>&M6>IVvVvPgLEr8cM(d~Fd~3g&Unk%|%u50*|D!o$-oPzg zj8SLZ`0|$XtH19=G~+v`i-t2S-^18RiBx6eB>Ao5fqkyV6BC3B5HcB&=Syov=ngc+ z^R%Ivy(s?Zc3RDXr)Gsfc< zoX7GGJ^wBw95<;$nfM23jBc|`{&-4n2xLE5o07Q}9k|e8s0+Q)#4GIA!Jq!pD*g$- z(p0JX-kcN7z^}=a;1kBlyRfLAQEB_JUMkU8sXJsEIDxV?-|NZ}ZV@bOST%w)uG(nTFhUfp{e%!6k^-BLZ~qyK-u$pustr(a2xJk+~ji% zSR?&JYwqE!l^4P})eXPXmwL_1`1Fi@1cbBx-|YFu4q0!jWV$U1yF^uQRtJUAJ0^bm zGh&DbSlIXClYz4<{bk0*q(5;&YUO|3Z7u|lob1xD)85$drdr6_2h&@$JZze{|N)N_L|o_i3%4Nu70h~qfklp1(YW0v4s25{2V~P zT^lv9x<>#qHAo7@I6Ysk_g-T5?8U$2o(z)?c#P}bTy9&;WO!H}SCL%>Uf;O19mWq* zJDbJJ1Y)#$9tVqc&&XT@+M0YC-Jz{gXF|AZx4eZ}jfUdp01kg5F$7942?r#IB+~Kc zHH5s*+4|URtW$;w5jHgfp@*h0!zc>WQWr78Fb6k{Lo+}ii|iAF=1ZHROGn+vaAFk` zE>Cp2f?kBxsd*OF)!^e<)}&@g9-+=ia0c zDi${dASS6#Fy^9!5>OKS-B%9S<{P>+ToZ-mmlA`Oj_M!sdGqId-#fJ+f9i>^9M$5D zUVct$&O|G;e-z=`O9jifKw?$E%cKQ(;Rm@D=bNAJ0g^Fwo@PVZVx@+U^20IVfUva0 z43US$zm8-nLY=>Q1IiruQXiFshk|}dhoN{Io%?#1dKQigM@?UJJ=z;*auS~n$eowU z8Lwq1V7^}dP#c^t#P#nGA|<3V|Bkq0r4SWj)uuc!(-cf-cY^ldXTa{!HW^CrO0cuGib)ZyeP9?=8eyzKeus7=BPw zjZjqpZ$Q;aj_N4pY6+*CUz!7-rvgQuxgi{#%40R5oi-LC=N1F`tfwT`3u(>DVWh%# z?w$Xt+WLYYKUaDQNgiFQ!77UXHI*;2vo|WFa1CE&%k`QhgdGbQ%S0wE^X5>kip;R@ zmn!FqZ)=~!yH4Qhpf5o}TYRHik05^8gDee`tL=^c8d@^;e%5cMk`+r8lmPfL7n98- z5qyox{&Wi=&X$g{SY2x6syg*3@+fWXrC_p?7E^SC)p;EAuy`2qie;=TN{fZ>1HK6zrSDYLsqv zE1v7Fl|99T>{+E>ht;V|2;N)`b11gvU5iwWM|7+f>DG*1oW_EDth1cxq|!dQ2PN+4 z8J<-`W~Rx|d0bqQhG#=&3Cf$wq96;k=7pXzh0;7piFmVIv=yMiktu5dn@FoQZ_mAk z^2Wg54>q;{g0@yimBf|m>{!==2E(Re^W%Q!=hj_TQqIkli^y@9^XTT@>p?2$+`6|u zXlJ#J%7O63rWs4P7o7(?xKpa<{-kG(S!_}rec#W=d^y6|7V*@Vg`|u2p3R@B;;kFa zMO5@sdo5#FzmBPN@2FZY#v1#?hbQY;;}>{cHHdi%(>m3YXXZT{aut!Hu+u=J$^`F~ z1*2BxIAf=29T+3sd^c59zdk&g>ydPmVpsnoru%GB9cP?2lH|X6a-5i3NddJVVgo|f zHS}|E;L$Y81}pxBN}&J_mbw>Rf=p?N`FNPf%ud!6=!c3*)vY8*b6Zn<^2T z!A^<|UW95H%n`=;H^;H<)ygg-^e>$SjD}vFS7oF1CIiZ8T$RddPc=9+GB^0xq!I}P%HF5oFs9^tNn~3uNPQ|Yy9z0 z)?LKx+{>o*q+ysY2tq@o+L?LNu2W&Z)z4wvgM|Ma*(b=H($v#?pYqcLzW}`X<_}T| zdAFyRZ)Q=5Qx<%MS{GVeQdTd-mROgrMcD}8Lz0D*Om1obgz#~SO~53?RC&|1RCXraLDz-{)WDsIr- zggM#~XSk`H?3A^ocm!EyJ*#5Kbk2l75O&VG3sdi#L zuIbGqcH)stVJ$P*5NRf<5L#PsaM_}G1Ru|?=*};}|Js>%y5Azs#Ko&9u_!WcoL6sr z$s*@c$*>-$jfABN!Fn6DWUZV|2AZa2JUP(0oB@e%N4k&Hb)bFweUBEb^n%~+Ot#j) zCU>~Y+= zi*PRYvJ}!pE;lbfO8HleHonyv!>-TV(GZ1D-t^h8s)b{=TUS{|cw4}7Ludvr-O7V^ zVAbFWbhtfkRp8>Gu*R?q^}b^KEYuva<^K2;s;D`LL?(9SkM_!Ns@7asbI@AdRIK$7;cQaqo4TFNGX` z6Y73z)VXgW19N&ggIDSYtK(4kq&Rd1u?bm#x#v}{2MgGIA4#mz!ZBhT*~{T?tE{vT ztay{+lkJ~p-?nBqp2Om?l;VdR6TjZYljMg#Ym(U{z!rn@ZBB74l3Z1muZH^=gMy6F z`zA6fQ3M66me?M%xQ6+PF#9>aCfI6a-@iFc{yqJrcF;~nK=618?;#9(`t$i1i{^Sa zNF>YDruaVBOIq>6=)&W~ZK-Q}W}VfHyhSLlAfJ_i+2OVf!1~zjXnurIe76@zfmD%z2KJ-H}G;pxwa?qo< zRw%b+b;H^?XcUjJl;eqN2?wL7kARjpHWwrOKbv+wcQ2F0Els|9!7%~xU!Tix?YG2C ze32jJMlZ)WhWG`)9ZP4WA?(I&1O4w5-J$@F@*HAUqu+b69M3XAIXR@T&hv)*N&%o> z^5g5Y%j`IBE}`2`e@%ahYKA?+2zYm<;eW zwlC(VcL$f5Z+#+S{&0m?0hvesuVUCxPYLLNw*QL5lI3uTAo`gnavd!A#k~F+)S)BJ zdHa=ge>wqV45uq^N4Oi+Nk|KC*Hd3t$g)+LE2>>+-zvs@gs9T&;@b7LO})r%p7%f= zx>&iXhVX97C@t76!K=m;Q%kJRUE0~D2G8mPJ9?3{O!}{vUCHPGZ@cOH?H$C{`}Qb2 zeNCi^k;8Wm%@ArTnTR$j({0gAxYqOUxcrgFYbky7L^~;={R`s$5$_~4==_n^Wc?1V z-gQK!=tmyP?oa+_$G2D?-nLR(i}&G>;fOXOUPpN>h8?{YXt6_p8ldbt!T00egwO|p zN?%MlU;01*T|(9bbOsczByl8GrlL$WJ>1y zF2bxbW84qf>i3_eYNT{xzznF;41had&gMwABgBZypL#ghi-9bz><{PS0wG8N7twUt zD3a$EA=?`ot7x~mz8seNO?%%;iBoCR=)Yawv>vormhHArg#l?6((6~g?sNIJP*>-( zcLjTgzlGs0aZ%ZFPx!rdrB$C103GwrOn)qPO2MaNN@r4F9)+aZ&2Aa<3Hdb8jjIN9 zC*SHUr_F#$X6}^tyUKZ=vDahyeySkY_UnL`Ep@=F-&!`-Xi=(Ry3&V7gta_Y<$?D; zh)K~{TfaWxs2ZGoWPX&ni4Mn7iff)2jWL#Y2v@q*4o_&N4m7lB#_@&IFXjq0yq6W-dWykTUf~jb_INXt0%YPSp-1H#%O21wONBF&=G$31 zj@DGRGZPLTUp}`v4E(v3H-K>4H+Y>c94Oy{*t7HoUu4(b-}8VbM6@h(ju@kf>t{NB zUJU~j06MME=Um;<&r1UC+IRblwzSfpg%DrQWk%-<@5wU4G1>1zhj1L)WMt?8ag-Bl zBExR5KZW5qS0~cb!(-C2b8jJq>xT26RYf?u0P#jn>b3&Mcx&7MDMO3s;T5>fl8m5$n4HxZw9Xjq8n^*!rBMi&vIluYlt06AlABEujE_vl>5J> zw-_{RTKCk_>9rM}vr73sMx=)!eeA~qDyzMiKJO>t{=5FW?@l|d=jkmZMFU=Z5X2iY zUt67@O4$L0owu10rLO4_hRx3Mcc!dDE3Q+4WL{>4o?jIHQaa?jl#CdvroTKR+EBqO zA9qQxT2B{;30cee>z(~uW*%2G+Yb7&*vGla$@dTCdY&DGOXS-(x8beFhttNJhpG}B z8E)s*HTKFZu)HIG=T{Wn=cPm&K2vGXg6T?{gc^Wn@y*&%|0L++{yT5L+UHSC7AI68 zHV;?k(RmP^Hc5-)fI&GuoaRb1qm1ehE%WaY#PI{;2kjB{0 zwizkOuKrp{4G_>*j1d^7FkD2;I+5#Lj(t;w>@Ol}%v@-leq&J?A{u<#b}k&?d{X6u z{1$ghodGBt^kbDBf4&E4%9zV+QYxGHw zg8u27?8|%E%I*FYnwAazvEAD;>1?fkBrWds_PcM-IG1hof zXoEE)T+S0SZ|DQU`A~Phn#`3WheMnam-PpqA0)y#0UPyPp~>_K+f=}7#w*L2sbgVz zXD)QPS|Seyw1nX&j#ScLe<_=EwD}z``&~-Yw7jZ850p7~femXf%UO%vaTY$~d#@Na z?d;6A(rJ@8k+LmmoZ&s^jEYtXBQ48;k~?L#Sc~74I`{6Sh|bSfRmcnR7_e$j5VdsF z+i1Gaam;xp%$()?Hkop7vurh!PDzUt?H1(75htIJ_PpiqtFfQwAez+t_Xj(Dq?g6?YY$|lWNDsSa7r-j|bwfZ9C z9Nz44Tl5}ga-lJJ&AOt_%zqWlo1iSYABP;>V?Lv=yB;VSDZ+_>;>Ba7 zS8r1rm6Ms*$p+NyhBSxo?1PJGg7VAY+>mjdiaLn11GksJ$PF?2jz?Ibbd8B!*lPyG zMdUVC1S<WA;&f;<%$1kN4C{ZZeIRkF}Eiu=!SxOxO7{OJl75 zH>U8YdA7YM1gs1X%J8Z4Z~Y%l-LVspRc1Fde^XxhvR=-3)jF8!i&9_to=*`nB*S$!GCJk0IVk1xB{3z?%Vb zq0wr@-NJ5@?K~=2cc-%Eczpy_;R!_V0z2EgPzLFv=O#Mo{q!Q_x?0dsYtB47dvgf2 zoV+02zTO|ntT-u|%ZCDjQ38A0c_~fA%zla`3D#qG7YRLxe==IT38A`c2 z{_1EVYs)4PSzwln2QqW_bLJB93{_yirlG+DrwkcZN8(^Pk(2|v3Q5ChIw;_Y68|AO zni|oMe4hcu5$DZ0w&$;UnH}M-6@zo@g^&}Uvj)58X0a;{Ln3z1om?t&)>AmN-W>-g zF$7b`q_xCPf1;s-Dg^SS?Y|t_Vzt8i6QBnUC)H~_IrsCPxK=o55Gn4xG_l{H74{$Z zCIMi2{T`|w#NLv0sn-I=aXF?5ks{fl<(`!;nej3S({Q^E;{| zkIu4ihRclwvF&tLx`P6$mTQOjO0p4&|qt$F}>G&fqUN$8yK;#QrB;uIru=MRqDExxE?P$!GyUb;#Gj9ajr!BId+iRUo%b3aS7yHr5HzRo zk2}O-2>0?hS(ZO~7Q8<`n6j7_SXsi$JRp8K*;|1QnlC7)oqPrknDlJ7!%6z*RX-Nl zErJCFw&-&wp6aFVhvz@sqx6bkfjyX?x>9~^N_;2T?Z@cIR(;=Lc#uC$p8JjX`zmoS zZ4)BU+r0<*eqn=i-GqpUovv0Cp%!h!QT9_^h3Y7dQ3cUQAgM>LAw~s0ZiF1>c18{T zFfY}=)oGyhMGzJjL^YyAKlaTH{~VHOg}dT82Nhk)T?&e{T{=z*Qo(RS*!pi{5fu4)A-o^C2jiaNuhscFwJ8E6{*>L@m zzG5EyVA-VPsIST%7_FQ5D^vTL-qhVrZ~WlOARi;G(VP;KVU?+h9W0Pj|aFC26s zuR-w8YTEf5yr!sMeIsJcamOgc)8%37>wJa^;_fB;_wli`rKuA>HWH{7$@MuO+`&Ri z>icqfMBGiYqB>5p<~5fMzlOka4#GsmPgfsPuCDX<{^cv``}h`DS2IBDMdj`Aq{~L` z1?e_fvMQ4z0^{DSB_g4(ZQ1+7X(h!h5#&(^Oi%I50LuBC@!ywawh8&5=%Vo#?zR)S z+NYxO>$*-kMcu%&P&P`V8?AIcZOYb4T{?pU>tn@n=0W~uxC2=g`(Y@Kt5CK%z6Fl^ zAxZemTN(*019K)%Wl#VF-DLmn?OBPJXeX3o(e*{g@2tmBH%5Mm$gRV&1p zRN$NoZTfuuCEa+I6T17&37%`6A#?WNFOlUff_pDzcTC`upb0Gzv1a`>q?t5m!<_SJ zs5VHsw|T78&t?Rsq_8J|^Evf2)U<3TO=?g39oWZ8z0vyjsd{H?y)woM)(AF#c#r2w zP{l;4jdme;pU25(*6-xoZ;P_rf%2o;G|uZL)C6O9MvM98iW{#I%Uu3%zb9I36uVxy zuRSkH1`0OxC)_{G)y&QoV`>ZRmRzzR3mJe@oJSLX%|$!Eu>KA`yjm3h@UJLDv9G&-fE><<)OFgBH9|&A}_>Wg6j58;ax5pIG5vYEJFy2 z|F`G=Ui1%h$6|3`zkNwf{d&R5mGbOs91*=$AA_ZDm(9>L7$m~%K0sj4NJaJ?{@X7= zV%P_;w!D$g!MMUKlIbm?Xw^%-_}SCExFQ6v_g>wbLHM6rTBLo-_M)P(n_Z%B1@cb1 zTfE-yYa3mK(AB#07La~X=%E(*ZVZ&i{Ytc0v#=Zgo~b7d0DQQ{-hE|T4-Ry<_+m9t zFAZYbs6vEUBePs;YWX;a3m>ViHwJfvHH1CGM2zQy)&~;cSvU~hUPcLSwYHfb=X*#F zxe=WX7mU-G5w_G-8i`NnOw*V5oNLimU(=~D*Gr5Wqf$$?B}wPsh>sr9yTghQQJrhO z+Oy5CduAO9GT)@yc48U|YU=+zwAcqvmUv8ixWBf41(5T_`k2|8JnG%$oiBWr`-b^7WQV$FXIT^r7xT@Oo6GH(oC)Kr&Z z!XvNKQ)hZEO6DaxBHgQR?TfuF)ue}xQCH4%IlM*hL+mX~=HY;557*A7oLms}b@$8e z*;bz2109R_c)w8x{N16UU-h~7bLT9xc*JdZT#oU|_KsZcPIB^9-dV`lGz}rlz;RNL zX|#7HNd!0GQ}G0H5yle&eCn5~&SKNNvzb1EVoE(N2p3Y=z=afx=or$xl-a)9y-P{2 zo__pIwB5PxaQNDP;sH-Tq?jL3AUZMdNd8TW1L`32lOWgDYqBvY>1EY&J;kvEA8q(?)D}%5B1dw7x44dR1LoDidi>W9A&g09zA#{ zCek@b7p=z;VsD6~#~Np}PYG<5mD)u2JwX;V1TNf*X@`xf1DwI;1SA;;p0CpuL-K_| zW1x0d*vu87&_&;I1*h3))5JwVVhk}<6Jy(>;f566FT*^jv3||kp7;v;3%T)#bm@Pj zPs#<}m$*q=V#L>?CFS<1@GUdyHbjy#F=i%FL^A2qBWkyiM<29iOGsyyMFonsA3Jc< zUJD6UP4wP}jh6(Y)~W9DVa|bbf+>f(3!XVc^6-xv@lmsr3VrqS-iB}mxqPZFu^*?n zwpSr8XStU-l1f!_%4~Lm_E}(!C)>X^8F0#kUplpAXqI`jdAGn}uY?URwYIhS;pLB# zcL5FW>^h_5g?T19xKfM+ap?iXtA!Rh46Xxi*UU z&q;p7#3>}L<)ORBON#cSm=~K+KeJDN8p3|U)RYnCf|g^ZkPp7F{DVJ=P~o1z+E0H% zaH?6N$Yl5}Xr-P5uoozHwm8i*8>pjnWi&Su(j; zx-!`-AI;=3A5xDTHy}Q&N*R$0KZ)D!70yKt2qT%IwMHEZTH!zAi&@yMz1!*ySBGcD zrb*WEzrUZatQ7VM3v(qpg>eX3&I;?|8$DcOrj6xl9{e_H&Xf5#y#HRsq|}ofm3R4O za-9aU5F>bFs_|GKvXmX9R_&hpwVwxJ_;X%SGhO*2neNET-)l(kS^3^Tu&%p)+B&Zz z-{+z-^n5;^AOS;3JaJ=;p0YT7;%<67au=5*O5m*E4&|kB!%oMpU&_KS=TY7(gidGs zBCU`3A2-WeTH{_U)%tZR3Y6+`iHH{0>oZ6nI~NOABJLjR9`^>?p(8Rw8w_fPdUB+B zPNFqdnOxtrgf7S-eU=uDmzue9a}>GutE##5w^-ib4c>Vp!#B{YKoPsfMEUk>j$*0x z)PXb5)-i&8(Cbg}&Nn{m)#~{j-^_h^NA&VhT)`HK~!OK zD&tIAmO9KmLg!3pQenG*d&%7)f6O6g9CoUUs!4F5G>OEjiR>b^ncdm4`S@0E%XJMY zb8+`?74GD|t1SON70KQb-v;i3ur13!XR7GFa5GD1IE*M?dg~gumzMNk0X#Xtmz%r<0@+jFSB{#OkDd{N=)BDqN6&VBfX}1JK2qH^L`>%0KmN!9l()QaEF$jOeJv?VJqD<#gR^w(@HW$hz(4G{SL3u-r`H#aR`)R}u%* ziUCSPwzN1lKec`Q^N4&B>sCO0NzqQVZ%f2Kvb5>BMrIu3iG;JSXy;S($K)F$4+@~h4bWy1ST>FZ%gOlozthVSN#UtVM)OLC zg@-e0z@v^uv%?NSJe}$$x`Kz_;6reVaM7HUAaFZDds)nyRkK6`vpWjbefK-RwoSL* zvO9`G!U*nvw0nj*!!Ql8DaoVQaNj+uWS;8qQ_)Yx<9u@Sf^}tPBu{cie?*!V6Yi2l zZ;47}$&@kL4rwE2k->)UiamTMc}kL9jH{t~KQn6@yNG{uguoa}==S*VTZ05uLu8GY ztjt>N=JI6TRDvOMF^8)q=G@`~{9Lb4#B_Fa%|s(T6`zp|x&*`5C*l`Pcy!VQzpXfk z-mq2G{1YZvjLy*Uf{>QkNTcDxwM>u{4YFF9gHcSOSnHO(d45o_^>MOoY@DKS`l7iP zWj3Tn#>hlo{6Qgc_HRHXXD4|o1d!j=7@bk<-O;%Ta|B}@@gfSziRHdJEe&nfov#oKJ2iA|1{HZlT=HNbY}v&*)akuoKefK@o-RgbL7!$C3oNhm z^|xvK&S-&{q-X^N1-^UI8&-WX5d@jJFX&PGR}v6mwFaxjVtfV-J9RkogAV>0455n= znTmwSPGNFS8K`}QN_dR%N13kSMtHjT#@@8{6icscXl!NJwaBr)Eljy);@GZx3zazG zU(90se0PYVqqG`jtdFHO!q+|xICx>WuN0>Mbbw;QA6Hf5^Yuc8TeM?_&B(?N`tjmt z_rA%O1P znn~u#th3+yyw2GnTXi?_R|NMz&`*p=_mfsp8-hEi>9p!$L*L?*9wqnUhhfYjKuNL!&j0&T^)ePgCbIyuK~+7s&cMRFg|)?9Z?FBsN{I8>jobHF`-fUTh?Tz1GW{=+E>p3GeDW=vtO5 zUuEoX;zvf_M(pkDSgtCvTMnlA+5s-8H040}qXvUSH5b zG}X5N<*%osa$%nQ;V}2uz8^i|pr~=oDXsl=Vl`$UNQ1d_1VsFGP@a^mk6>5?PKyd_ z!7HK2#EJzGJfD!X?mFG(IHzMEAQwGnf`{#F4+!#4zSDDp+!a~v2j6GNK|n5`WR7`v z%Cprh!6}tz4oqWmh%44LP5z1!^-v z`vFzw=pGza;X#@bp`fQiKrX;bd#1{8l^u+GP(9rHOD$A1K{4nuTG(@y$@8?yKPcU{ zDXXL4+&Ho9d(*eCOaz&K%1qOBn_ZUw$dlZU2UvaNK0Sm7G=_g$NyA3wTLFV+7D+lU zZit|f25ygBUM^^Ch`V*)YaPtdwA`##PeD&YL(Hs=2XsD@-zh&dB}8c;nP7)v!qPVf zDLeVj(fSJgrl4O$3u;hGrix?%OYygxExNLrM$!N6Q)Px8O3QN9bqg{CmeBo(+WdCN zC=NK1Apm>eJsvfSKAUhim{HyC&%+)mI1JA$s|7uF_COo&@8fCLez1SFKO__3YtY%2 z4HG4hI#Q<`KPiq`t<1_knWg0Nsz9Av^zUt6bvaXG_i2d^n7bcUW5~AJ9UB>c8wi|^RVB^qGE%g~nP5|Mw_yC3{z+XR$RUJBo^msg%936_qU59Y}0cv!-19d`_aD-KqmBK?rQuhb;yZVR}gHwPE0#bo%Zm&2l?#rBSC6YU=PnrOn@SDYH*OmSaX5DW;8>Hdou^b6i9WC+Ona8A=MJKSoAx3=FLS3j>{ z^O*S1-mYy?cw0sWd*Cm6{5m<{41j>~jKn`p7F4}jIha$w)z+Kw*5UAr#ix-J@xKR% z2yG*S+_sxsL%<7Qb-SoOfu|`1YVsc7P~FF@kWs zdP$~*CKep(=Se<92jm)YoK&}P6Tcdwg3puR#v5CfYVva6zl|u~07nJ5=n^BiQJ%gJ zDtW3G+%i15eU&%VCZG~vqoy8Z0!U-`ijK?FCkY&Wo&CZxTKL};?xLjm33@}5K+aPX zRvRhr&($e)tZ3b%m_bI8Jc2^pZf~q{Fm6B3bgs`myVMf(2YLiaScFnigpIGA6I9wt zA>b`jiv11A$f}eaKgM(F4EsC_A8lNz)b~EftP(U38X!vvIB`?UkrhW1@AlRg+NSW}l_tY)#&V-ADz6ZI-ND?$1 zj)mGRV{bfZ0KE1)Tor?D*B99=D#F3aw!Djyd*X**#_#@156GZFixqrw{umQHHr>rD zKn!Bm4kB*(x+y{qX{JB$`zJO^u7!Hdz9FtFYx1dA++p-9shZ~e6rdp(+gf6Js@+Ne zJR*Ck-Yp_e!!7MR(E!I;QVUWOvg?=-o1uD8e8`q1H5+m*mD~gRviy^r8Cm5Ns+I%y zBf^^;7B4<$+UG_66T_SnosG2m@GW?1!SacFEy47qrv1#Nx3(egx)L3D94}2`r1j-& zwJ}#DdJN;xi>(Lc_J=V*S)&XScvsrGc2eJ@GV5%2+j*+H79wH7*3?jku9L_`>}z>v zXNmB&T>PVEDB(AgxYjgS`^Mm^@qZ=P;QxQ6^nd#4f^}FdD=Vwk`WuuAYGE)jBXEfHvw8$Ew^D8wg17z+Csn$>HwNc*oZ#%&@`-&p{q|HM(MCO5Ou zYpi}U|6ubObs>qk)5VMkSB0%jSMoXvkm0K->KfVjwJ|*wbBgWd<2pQQe>`zUW8eCl z1piVy1UV&iRL5rx13V3Ku`BL-7V>$H&0=B~0_G(O`2&uO2ui^86)V%^yhh&|zf}dU z6u=i*ZTPu)0z5UI3T#=ePmycQLm{)=LeCYP;)XPyh4rF)Squ5KY!4MKotzafKNVyQ zLgzb8m8IXqu0u{Exl9UV_XWW1Fl}lYCKL(& zbdJmgqC?`nRLp%IP4JAO7q3|oe6c@lQYkW)Byq#*K2T`vr-q-?U**V+T!`~(h6)=}`W6y!-p8LI ziHx4FxD*V`%yPn*6MoQ94LK>&7ieF4AQuOk=5$}Wu#lx*x&C#P>95aTf%XEMmh`?Abl3=$`JUZ z)$NEm!#)kmxiK|qpzh3Q!{gF0!pgo4CR7*LL)jN>4~O*{1s5R7*Sm1P2HtrqN0%k> zo>s)eg(xhajJb}|5jm#jeIbEIe{QPQ0Gl3#Ywv^}*k#`w)+qB|L z>Sk!k10xZ*`JZqeZg%^Mdw)rjY^YXixz+Va4Z5t-#rZXb2&5~-n~snX56`c6+8`5q z6V3>7I#e#XO5PkkDXgKz@y|rV&xF+rd%K6)y81d3ryWsWlpO!3 zt2O4~@BJV(Ki6PsTZ^3P+8K)+&75^hG~l90qpk2)D^?2E=AF)NaET!aV^i=_)w6{~ zQz`1&-SpS;Rj-XYA2VbT)wnirURifwBW#(@f0aQsPyHQ!72!3-){FVgK-#B^bNuxY zQHvt0&J|vxnQrS2>a-n5$_^Y+2{k>H|?t2>OYs$cT`?KHuh6weg#3F$|a313*jT z?b#PKbrOBJ{;SkYO)Tw_%RI88>}o9LOW3HRN=5=m8) z%$;vfa^^wrZ?GDpy_^qLIxjx!#<$$I7jiqQR^Wl6ra-eNRO=7za~m$xB8e+7YSvKR1W5D=Kh)^ zM()wt}4IJuQN7^)7b}mXx*laE&7HsI)6j&!oNB2#+NhT3q2U zn74h{D9jy0Q_ruU~?l;$VH>7(ZkRCmr4hPeVAD3JGFGIVX*P5 z(_BJt{Cm6u;t-+-ZNS4B!A&JILe2{`!yryng#~ISTKGfoG|VDyb___W@*ZFZSe9?L z7|0Tp&eK8?L3hMda5Bgk6X=!rgn@)R{oaag{SBJ#%a(Y1+qr-)zNG(JkLzKoerN7s zz=)Bk?cJ4#87qwLkZ9xB7%)bs-9^A*+hx`3xqZ;}Y2Sj+TBby zP7T`S^V2K9%7?M7g!Q%$yq>@BOKDm$;is>s`yfpOaX@*|g26hn^G?>$NT#@2gMI+* zVSdXy=5lt00&Jcli7%_M!i1xqLNUJ^fj)RKHG%RO^%s`*nk*T41rCAPfmu+En4iO= zG}ToU(O;kegsVCNswgYC6PzA7j1F1_CLZBLu>@YwczLZ2C>keGE_wm+x$1HF@qh0<*M)?pg7g0`WbUvv#e?(H=Eru3^sIBG&2HYswTrx3vSBcb^-Q7Y?^ z37X5AwB60CTsmVSzi&5MI<&GscuXZ*)+SS9phJ!MI^Db&a8B|E%1pd#5J`^wxcS-n znpb|2op{t2C!c znv1jk+)=v+K7UD08T!uKZ+na@=`f3bU4Rh|6mvi%Af$;aFf);v%qPz^w;mL)Y2Iz%DRSrH|rWbL^VO#S^W0DYk?Y*Fe| z@roa16<4Y&;J&k0Pz@YA-fml?W=Pm^$>~NL#iQzHJ!O98gE&vMZe&4unUyUlF z>{LhD^B?BFfv}A_?TeK}rY=hB5xp=c9OhTcZZ)xV9Va?Aw z@4Ufav-dHyB6X&*)PmGWZ**8ItcSiQuObsVPJC@Yxr07=mvDQsgvXLHry`w%n99 zP{1Kc9>FiD#{D_A`1imTO`wyG*^_&&$q=@WY*&OdtKE~HCrqYlrkCJ3Vjl84vZH2m zjaqFFahdI>Cg!p`QkWTuuKWN`abg*o43d{;pQOeUEU?AXW3REkIrA>;PA&|<@c-oe z;RD3#dXm48pN}Ci*E4A>Ed0-RH53cNLlRi~qMYc@fuqYNLproik=(<`Kl6JFNAx(6 zq|mvWeT z3b){k>*I#2cduMIwWKFqBSNm9zq`wHuS~1nz2U`op%ccD4638+M9c$6uPO229Mssr zaGhW@P-qOSm+a9eC!TPPK6g*^&0BVZ49RH9Mw;DQjDK&KC@1xT8e}mRxnGB-mDWUJ zJ$%G=RN^niO}$>~8#<9)f4oa|vpIi%$I3x|n?>j5cxrj~hEc6va^qR)VQZxUw8(^y zZ%H`YiFtNEnn2p}>*2r07EAU(5^7w7WJKTZTZ-OPOOg#=mcLOxlj}xxdydOb-o22Z zvu+KujGt*>FAx(9`)N!cue(YQi4IEXGxQ~7#^F(@!Ghi|!Lc6A6+Qs`CdN*!o<*)M zUkB1>7S%bZqxD1H?)Kt`UjxaJX7;)0ul@7y7Ek{eewU7XUIH0tG=4l{*tFSjr4Py6=4xpq8XHC6(lK`f2-nyc!|d2OG6 zINjb1>$N95;vIK$CF)x9b!fFoKsQCD#D+{HhFhnB#~}4ARg*eBz6VA1mpJLA9=hFu zH>|REds(3N@yMf{344_L@z-zloJkWZga}l$O&Cp?zURCeW$cj%1=|(FVxz)SFl5k3 zUtPHiZnI!dAe<(A_WE29gDIeN5x8~f%4S{eMg+;YlbNUhO#Doz{EIWq(wNCiTd;>g z`K?~rh1mAj)@?Y~={eH{a#&iet!VWGSG1YBuF|0V`VFL`YwTp^-&ZNHlcJVX$9h^b zn`z%UB2QLUc%m4emKLeJZ=ad3D_}{bCJ)ZK=@D!t>~gkcz#<{vMMm`A&j&V5|T3rKJeN;YzDjluX$TvU54Py1kMvZ)uc zh00UY7mpO*!1pIhJF8LVt8TR(R(EyIW_K97kszSC{buRt$;A7PfTIsyXOAKWsq82- znPEcZnM`p~oV1c8v<44$i;>#7LZbix(U9Vh#Xge{$(1vI2GHb6C;Hhs%tO|?P`i6>(%+fx+*&Bdjz%OBvN;l2!B5k88drmNTA^)BM4};IO2Wpy#;R-jeGoIZ3d_!Z75ggBeR@?(=6oD6ALZZT@|-^uDLu zncDPa6n?lMh&*z$0AXyqOMc>r_Wa!+xGM)>vDL2aZ)Tg3B?jDAU(bVRavkSim1t~+ zKb4RtqT8Gs6F-<-Eg&7;D}O4-{pVR9sm#yKI%rvo#p34OY?LrFQ4c4GWJYg%uADgaEeQX1PdB4Y z*X_5&3~$`PGo>yZ(kO6(`gYm%&(~sEPS81ar~08qy}3ZaR&u!6i0F6)z*tfIKAw%9 zcwZng@b!_|9f1^4ZnTr8wM;Z#F(dtCM?~NtG?H{-fgtK~ZR#4u7d0D>Tb~$S#yRrU3oMX82rL#3^?r1i!?5xB{EMV z+!5+?mH+C-cUBNKq)Ef5nm2WB7GF^nYpdH_gC<_if`g{!54V>(6%!R(H^RTwQWU3{ zU!Nhp#bLVgBLU(43m6sQkUl0)D!Gv|Ik{_&;eR%>iU=|XKyo;$!v0`^2lnwdps{^Yo=pqvbT ziw|aKB_NjDo#a|NHXyK%jp^v220RDILy`sAy29+`IIb+qVtHPx_|@1Kk^?eLfyK1s6+an_d_u;Tse2t-ab#rR&I8 zdzYu};mh@qi?-uEto_<0<#((R>;o-DfjV^6pv)mazF6t zr@{xX+N))$?d{O(;u=Q1WJ>LAEWd4l=XE24RlG%wsG)@R@lVt&Ql)qh0Xc?wDQ0#Q z59D%3P5AQ`*44=h%~{6lc>KaqMUG?1m|b7*PVH9D{Su!wNb|S)`iqdn|C77Xq;gk` zz)ARY8kCC_Nml?zZ|QN@Fn)I*ZwcHTPg0!iHm~)py|fV!x~xQCHlKDsr8loX$EH^U z4Y_AD?j8{MEw?MTXG@9fXH&HtcVKT4Q(7<`pL05@y!bScnQBci&b?-j%ImGZcNTFa zw0~I3|2h6;`qU)ojAdeThtS+w5NUW$&c?3b0)8r z9~J`s%Rb#`+qnH^(Y%#GX>$|Y^kdA zM+9dx{gEKxUDSXDGN96-b@Cx*=T1OIcCi+LGh7L8AA0k4>8A88&8}ynmtJN0>x&5G z);|rb@h7$h`$@0_gdphsSol&@soS9)-?I46 z|K@IKzX08UFRXm@ou*V+7Ju)tz(5JQ(JRVVY$n&Cn_i+)NwO-!pH{K>Vh*GgVnyT4 zS8ylGT4f#NDU{wEzHVp#t`h%p9+1-B5%ZV=Vwm&`2l;rshjv_E?=P;@%T4PwDU3IP&QChLEn3XL&1w=Skk2KO3oB&T5_*t0P;UnP!$7jqLut-nUBuKDp7s1kB^$| z9bq%)mk(8OPO}z#?@6{q$o-=;&OeFX+p7d!zpy;_EgBe#1Zi5m)IJpr5FAo9cQtG5 z3=zbhn4V9_fghVHF#{)RxoA&khzST!(GQDNzp&tfLwm~qt8(rW>}LQ09i)IlI@4s)pT9H9 ziFim!*#7k}2|#I|%?@wnEgffgyV3k<1C!ei^K^B>WgAf{0q;6>mrFcVV!eQmac!hnLgE z(ey+Q0N~+Je$xAR@UwSpKW|Utc8r0EDJHqyFxGDV`$zYZ7y~ARu*B7#q)W&{kW1&M z!_-w3Cdt&gvrY6)k5AWU*`lNROZ?`qLCLzhRdbx5cfRf`9h@AkRsG3jq>BVnFZ1$R zerQv)^>2k@Ntw5U$f3Y8H8&UdUf$)$qt)hur>sYPPVi5%=CLkyjzFO5rUX+qsQsErK;9 zMZZs-nonsW34cyWHC~hT++_mk|{kE0)6r6E&WrrYSYd znky`4I$oK3)-?*iil|Kk^rw1lIqEpnWBeEa>045X?^uy(gGzD-lkwruqwiPW11S^Y z2D@unL8yQLLu=M(-<0svSnI1xfs*&9lnqwosc+*6=l}#*0hX0^P-^j17?hafA5i0n z5rsHRN{aa(;j3L^R0VP7Pz)yS4a9F-1-p;q@?d7OtiZve4z&8xTE;KK#R1Vu^2Z<$ zS)<-K*`JOwc()RZT=ZnTilJDe=sY-tf%pe@60gw*D)|IvcS0PAt32=VEQ_=UXAyok zo2wmr6;uk23$q!Q>vliAhLdw`DPI_QwCfFxSd;%tg6x3?{bI12(%R_ocd>VpfxnAa zD_uJzEQs9i931E1NWCmEc(8DFzF}#W<(w+;h~9*~Y68GElev+Ry~2&w{Y0D?wHvBh z67#G@HfM~#Z1Ki874;_e5ejlg8Yo|^IPO4*G{_xqqq8ptf+36DEhdHsh9xRD&HFn* zG*YvFWN|OJs+MX!`jiFKw(cuYP367S{HG_NdfK$!#%G1_X;+P!Kd+vhtx~Qqkd-O89-Ad&jQj%i zGPaZ6rBl!@2rMeERX%m)+#r%JuvwH;N_N_k3z4;8cXZLei57`s0uj#idxlttJwS@6S5!Pk|L#V*4#;uoI<*PEMwwKqxm( zWXC8c+k^?axBu0SHW7_e=0?&E*m79D8e~Fd~ zcJ|kzNT)bA@xklBdh2jyoO$S1`@);zw@ox{h-nK^mygZJRY9u9%>r+i;lWEo5tf+1 zxfM4Q({~vIyhHt6if(^G~y(4*RXAkcT}{}_LjG7w_v2_@j;$_q|yo2_7dAy@;bmKcKjvz zfLmUtIo=*{r3L1)>wX99)H@_x*}0})gs&KQ(S1q!ME5bumfe51Et1Y}QNZ`b)fv^> z^q`T$d+P3%Lfwon=bMJ93fq#WV`3G*URGxT*+S=S8gq5i+3|>)2FLvjx5FDHApV=r zi`wx*y9O5jg8;T9xfK)?$k+|4me-NV0%nFt0auOG()TDoEbeO%&WIY*16e=vp2+Q5 zTM+2NTD7%WD<8x2a28)%Tl;ffDxmgDf;8o?@GSIy|E<>Bg3^f2qY^D;w$O^k!jbyg zQXWVAR|tTX^7HU!&%p*`AshOqbXV9)s%l=o#{)Y#Lt(M&0j+*Vtx-e`*9U^phTwPL!2kfUMWC3)Tp{qtyM{CZ)vfC8_nL z99&&<93*-?&fi7<`>EJ-GT*k-{L{CPLjJY_?xx=t^S%=j!)!F#Xdc)lk%L1CoH!Lj;Rf9l|(T(TMLr`2VSxm z*%+Yj)^UxleQ4+Efw%%kH(w^*T3?l3rh zdxCtjl3Mz`;5#KQt75v~Xl8{RrH|T|)|H>a>C!egh2aem_MBD-SK(W>^H%IjiuFd7 zvOfdHMq{o;1tm_g?(||TrB2}9LxPMke&3E*$HzCBHs%T)fn>@pNpB7qGp(S3zIp0w z|Km}X7lYA)x)3bOFZ%@IG8Qb^GZ~C_neXqKLf-)!UM8QzAEtkFy@V=uJ->}7enH%b zwfG!6TCP2B{z*o$N6hKiZrFlY=+(p1#cq3FW}QQTGXK_>wtJ8%z3=ZnA4IzOA-#WL zH@*zG#E~j;1$Ldh>)>ZcRQsaqGqVloDITbEvMub`isNnG)q+l2a_O53#sq=|FBDHOmo5eLUk{94t`6ir%J1Iu4+fE8RUt-h;-1qNI?UH;tYb5x}ktXOzV zKxLD|-y{Fr5HK7wCN}+a{NQcwHU*~(vfIFzGxqP^j>BJf>e7!FD8lR?N%`-T+niuU z-}MVd&qFt(IQDB0nLMzJ*eeD^Qs$^ohyy$k?JtmZMuUjEkR`m0C;Y0!zL5rNq(kDC za(B5cWl$AmA`2xExNlowQ#=<@8NueU#F8uRKSZL{O>bF7OFN@kacjY z?^M*U=eKz*qott%G(`x#i2Fw8)~G{k1!T?LqQDZ8NaW0|0wq=4!i%nu0lckb`tIiP zJp@#jqPW>U5qU10+#89wVtm)jC9dZT%TY?c(rP-BuJ_J*lZOlG)+k^G&HaMgNQaHs z<_sn2jK4k@|5211z-NMRHk$Zkf0X0mku*mm?(3$;vo(*s)hDVzex2s~_jLZ_-3_=> zsQBu(Q!VJl=9cwLFJ1JEC6215un?D8Y z34B^`5QmW&oz~YuLHC6Z3c%6o5scfKz88V(CGX4TbIKU*5rdv z`0*+J*LacBK1`L_?wl{N<3dir>2L4*pI+0cTJhyNsFLe;JEB**imkVhxX;pA0#oyv zq}GE96oL(YRFf=(51KVjSiJen4lr`~Xf7|eP(teUCZlh%#Xv7+B*OT-xSRC`O*oQX zZw`C@T5(G6uUot6|6q#m_uNw3bSQYmAy}ZsG5AG# zCCLT2yrFpz-z1qyKSvkWE=iEYZH@!culmX=o!#MvD=8C>R}(!%1m!^yL4k)r$s65N zW5!=%-8<58Nmzg625Y1!^MmK`G|=YQi^G{a1L?*Tt(-PKLq{$`$+G1A+2L%roN7>S7!UMkMa3Xo1n=jHc6>GAlVpRdrz zC71-Z<#Kzy6#GGpAkeBKRM9SMK@K_;8LC!h@bLGdKS#VYFllrV-hDX9e@#*?gEnX| z6v=%pa4T0f^rdVs{S;JYl}6Ipm45I1Yt8){F)U#)FhF2I&KtOMA$a`=fjEX#SCcCL z8V~fk`?(>AfYBHQ|0@ZR4MljFXN{No^|EBQN&v3ZDWn*_~rejq`LXsHo3irk%nZy%_GsW~Qgo!q(_`#NR`c0-k1 zXWWC{{xjD`hp$mSB@8Ox^sf5j-Oj7_^Jb`I7({KAInTNm4zb{N z;v~6iWIn=faUE~X>F97A*|GW9BJ zDyg+|Sy3`XLP6btjqg(7?C-6#K9q8VKy6f$2MzHGTw{28JBd~8mWi%piDqfTfe}QL zf;j@w-L~cEvA!8AMl3v6q%1mmi6JXdMQ!|I5GI{1CPq?eAFMjX4%X7kcwN z&G`XdwaPA}O4TY{v0Y*`%mFbo8@4m+j_<9e$OI1-JcnZ!cARI3wL4c+Yh{r+l`t~VE#3)Jel@2UOWz~saIHlbePSzdElC_fr) zyPZ~yYF2#-Xy>v~n$Pmbg+I(`&?Qw$Ecm#evGwh6LV_n7ZaYvP8hKx|(tMRb!^sVx zrQ7JJvtx+PqU!gxo6aFf;E%1x$fK1CIz6-_af#q=3mwS(>J zDp~;kUi^Fxv4#}EkXp;d))o_a>zB*jvA!@&!f?WCD$6ek8kA9A00dAa8Q>*JYIs&E z7l}VBL}7gW7-cBZ z?rPxhxGgoed>-$>y%rG~dIWuntGZIXj$UHbOG+q6p;yUgukSgmZ<ifgj z7P#UU@<%0PF4zCAHANHB4&LUispH7rhhE=#U*;f6U}mO(&*9o)4vB+y{y7o&$1tl34eGP#eS+Ef80)SE>am&H59Ff zBZbhM#`=Saa)s{`(~M2nwch^!)OAiC_x)K(Qiado3Pw{} zKC-InHP*n4r}f?JjqHcuK7R4rsb9KkyE>vw8-9C@|4&(uomXf8Qzaj-4K}PU(%T5S zw{Lf3o2=LwK!8J76=65oaRQAZt_mb z$#0JrSEBoPXrvr1Zx~u@QbQ;y6QS^G0gWlG7;fkFw=d~SH{IN&scxqzCy_|f3U>O4 zrxEmo|9pR`;p_hb77w^mnupEP>sdc+9-<&!lRI8T+$g^uVuTgDbu@BPy7R4_% zcDJw7PHkbpJ{=JA^EJhZ)~&$9G!VKb5HOR!B-zt<`0i`R)AJm%m0(cS({X9h4P3BY zPwvNSsej-xU8_Ou#5KXS;KUDCnL;8e;C#k<^8lsNZS1H*XMt0K#HcUKuNso=$Ff9k z_%Ez3>=%dk%2-&y{fC@?ho!PDqJ$PR^;7q0eo6yUdxJHvivo4^;%~?cRJFbx3Bl;Z znh+&g`P8GdU^{E2uBsr#ws#u8#&b`qB|XnVO`OHoBlS;^V~cdcOC9J1F?$5r>OlO? zZ{)JDnZs_8E3D~gaSTBwr1+J?m?ly(us`t0*PbB*43G*kv!a?3scY@`Dz@wxU*y`f zoYhtd$$;ef3ShbXXndHEm=P=}>8o0Dv;DrqdDRV6GYpL zfMCd`>{3sXGShmP{O}CjQ*)^V6YSAsE&KVa=7ptL4o$}FQghy5lR%#D0fp4E94l- z5@MzVn#NPsOvY8#P42U0ns#RnmC~(i^*Xbayfvox__Wn)ldX>UFi|m7zx(dw_W7Ze z@=pF=u)k8(v0B!6*Pkq2Gx!nRjNsuQl^)ne1JeAD!^bFG1wuWi%9u(Ga8Z zN6Qc63TOWtN@M!bL-#a_4o?P2YoYc1kHtXIGP;WglO5#5QG`OB&ev6I_1~RC^uQ6+DH(Iey@*o`t^Bz6$21Z@pC-j`B#6sI zzAMywZ%H4E-xPBIizHkSEN0coJ_@Vnk(3)yrf}-~7NAH)dm4=ut*{?%brRiu&W7^9 zj>fDYlUEWV$43lRuzMHD3~e(19`iagQXx`F%{o~r(32%k{96q4miutx0N1;eRz>m5 zdp~u1ntJJo8HlV{m zE?CUPX#BZU<&jO}2H$hMHN3~>EWAe${bFPARahv($K1QYYN{W%^6>dW&5`@As!=R( zW_EMqoSyTTma?u5QFG=LtHPF4RB?&GA4*fM^1w&-2D-o zXT^>B_Jq_8Z`Gsmm#gpcc+}Lu2+eqYqU(#d{*P4O&C!BK z5rjw5<}NSs-BOk5%Q(wj&LRrDUH`AUX&<~B>lQt_VkhoWD>*10MGGDN3k~tn-gK8V zWD+|!%3DcJB-$+ryGb}(h!Oh(O(0rEFR@#f@+%E-#}=lunD6!EzW*2iG4>rw)l|`} z(E%i(@^EIJ$*PoY$B@%qV<K2n!L(tUo)DN}!)0j2d?c4^T)PCoKV_;gMTL zk?tEF(?*?ErwBBXWT`p-5hu5UM@9B{AH6vI6XK}4^p z$J&M832<9m$gcADikAQ0G=%HW46eCzozWf>s{^``bD4l~90{--_+yJBQrPc=nXM&=qFvD&e?kSo=Jr(#L!)YBd$Yl*KUn!kugMm!*d!L;$Am@d96g-Uska^D#f5I z7M%r&p+Da^_)RVTZ8mU8zbv<)-BNR^|9@x(&70cV+QR>N%Kw`bbo?K^ti$sDr!RD< zH*)5RSL7u@1XW`AN%+ATHIA&oWrh0j>1ks(JD40i%l7?0jXDP6S4>Pip|}Zz`>AXR zJSf;^rL^pQOC+)k%t~L_cn0My7cArJigEva)_&Ub@?Ck9aSDsA*QEvo`JVazrI!SL zMeppu3w*dk6kh!H!_)TK#?%(t4t3405{mYk_f^^d^U75gueM4zn5w_kPr9r#FI4xz zSLu3AbI=v?ujwNGfL;21vh@3|ocKEK8BCOFCYx{FhkI|?(TfyM@iF|9%47+A)6v`^ zc-l6XsBhBI-q3YQ{1Z~%zl?v&G)i)KCiMTYbyiVrMq9Kl?h>?UkQPd@;!aA@7MB*c z;ts_n!M#`wC{A&AcPLOO?(PsY0fI|zdd|6H+=u&`ykz_t$)0H80Zk@$K49Kw#L z?~7O8>gdmP`=*7Srv|zEFt`CvDY9ndl)lD%W+Pgp;}V+FYIxHp%fe{wcinZ%V zrF6|9#&80DAd-AM774a3j0(tkNL7*!M8ZMW7kxDUoCvNvzuvogLH!d~N^mUag@dQP zGu#-o5VBOcQ{7ZSbekH?gznP=2p>Bjve#%>EV&%HQARlrkAJcP zdqU|N!)oCxM_*knkmlFIUKmE1jhLed8mv^$MVX(zQo%|YM*Sv-35(t_gNo4btZ7nz#X;VvT+(!G)rH-u-k5fF9@`TS^7IEH}wcprzLoQ-N2c2PqNvx%pK(U(9 zzHSU`tc&BeBc)_(JnALihcj7!-lmBT;((b7#`OKkqnint71OdTezkUwiO5%hF103x2CAnJ2@7RGRL!A0qiOi1mzp2|JJJd@Qa4C2g}Ow>&X{} z*r|v=CD%xh{y{DMB|+(**b6ItortFT4VZ2*&8qcF_K43lb~r?wk46K;a_YMk6&ff^ zf;{4cC6-GpmBrA^*&u8soJ34QMZdk*_tg<7U#q)RWcW$6vQoO!P}flo=@hLJGTNUZ z2XFTd2!Y8WC6n=0Rs}2=mw% znDHd?Qh8853akhgE&!lQjQ$+{E^LKgbN>Kelg56_R`nZ;0q>}7FCQ163?QW0h`v}Z zXVpVCZL$%W=@WUN~H41qeHuO_X& zC;1GOJn4eRvy&@&M7Ya}_uQP6uX_~!7$ZjQ4J8BmKU3F!!0gISj9X`@re0?G8fGgc z_o)EtM`4wa`|f+JIQH{jg4?pU^Q#%SXt*p*Ib&J~fqJYPt`J=7lcK37dj-hB>fs^IHDQxixat<^8?8?orl41c6!230KP2 zs+l|{3&KGJ;esAVBrjb?n?x)m z0P_t7AjWo$xdyA8#-dK2VUAG#p)B4?MRV+fY#sTams|-`qH3m@+_o%H*kF*YxZD3ucdl2e=@zSIr;9Au01Y6B`8O?I$J3--h01H~c~{7oh0P@5kXcgtbA!+61jDmhDdrm+y`MYJBr-VFYMk zcAOO5w813Yl7Y8Pn*#e=Ci@|K=zhRvMYa${IrLTb5Q5uhNefuH*-wZ#CIM5&0OBH8 zm}^`Y{|4TA^xhM+9K{(%b39(jp7;(|63|%>#s&=p5l)RZbr8njt0{6cc+d zCpM_B_panPkKNP-KLe}2dx5`~Vm}U)E$GM`K4O z_Gn$&ahQUv!K5^JZ;W0r;%Pf=Vyj zl+GOde*8nd=Ri05@t44v?ixnDEP>naQnyco1LE)BZ`D@z;4STcE{YRJ^zu{~AUzd* zNCz1kR#@36j|)NysZOp{AnzVndh*F{UTnT!Q^nFfQ@u4L0LQI|bm-H8<14l+GjVwt z0dFgV0;ae(p#;fMzs8JuNkHzXhq)}Uy-qMTE(`soXwnqU-sVcA9O^vu{Z zqe}L`&m6~eI!+W(rna3FD49#f*ed^As=xj$&&%@6A{m|+nVExPIp8kdDZ3+`sKp`l z^}g4in`?Iof#X(oB)~nQ)mbe7Nh--{A}h*@KzvqEpPa|Ebzg8%%LLZ>50M}*Nb8pZ zQEdz*=Oy?1lIcaV=kJyk+Pb!NrF+;kXk`w1j~ZzLkj1c>Qr*Z*DgT~e44n1Zazi+D z;+N4|Cb=hO&z_LA)CgAdsFRY0o_WYPvhyk}Fe&X1g@2PWCQbf&0Icji+@=0V*V3Pv zf8Hm{VO+zJNe5GFJXpu;x@r9P>wc=HCu8 z&5jUhc~Vm5EwW=3OH<=0)qhu%x#cQUK^0JgWtbXN&Ap5+c7bt})KC74vT*mWQIweHl6+#tr!%`1sXM#^Z(b?Y+=gH#f1# zAdlA;U15V!rr-<8u<&r1G-0Rg59J1x>A~|-{=2_qr=(DYJ?ClY_LbL?%2%6$KX{V7 z@&j(p9=~(yo~$1omB|%q{EzVZxf{1W2~Tx(AGUFYmAYVlT06J-ef|p^^X6gf z;SPRv1?tHFBMC&=4Q--@70mhLp=Y%ovj3{TOM}6Z>l)p7iVTo;Ps*ipX)g( zpYEPz&M&+2S!}z(}tnPmlBdRY^-%5aVkB@fm zRMZ3+c}*~Pdw!op(%L;2JBy0VaWw@V3Zu*qRr3!)AuPX5ZRY}S$H=lVdLu#$bfa0IIOk~WbYmnj4 z(E|@2vG}e%9FCWz9&J2tHTAvJb@ZEnnyF7Sv}bf7Wy+C*3)?p&1%ww`FI1Lp>VG2$ zN*|Zy)EGW3^&osG^cF8*rukb@0B2Sl66nrcX>V@WB@v0S{ju9sq?ZXCyoX9r*_>1V zk!_KVPLq7hS|CVnhqhWX2ol^7(zB9b^_Y(oIlhV;qR7?Ps3UN{oi`pu(@1p~jT@?U$&MtYUdi_P1{fW|fbbV?Wm_RO*9L6?rwH0y8#ziT9ycZwyBl7ZZ zNHcS@NjG{^a?j+}jlv6yGJ3y8!?d1wXH9ZVQ)3qtc{fU?(qCobgQ55yh0eiS9 zE`aY94GMRN4exd$_MEo?*n)Tx2#53amFV(&;Y!C=em~nn65W~OwN7J7Cy_k4QJ+@~ zjN+K4PZcUCO9gGs8p~vBgYQ}!=OJaf!<`*Z*D)X;q%MLHr?Y;&wK2)!P zfk;*Lm7dG?SFtJ|bYn+RtM}3m(ArT^>3C=-1w)0xH*AXM(MsyudmhipNabbu`#oZw z=@WQHSG{%UOUji7EQCazlc~;-JI-lIDB5zzQZzK4kDVJ*IjDbS`X@YYl%lk4|JzTZRdht zt8FRv(Xded+;mq}VP|RXAB$#EyrFR8(ti@i2|(I@*3V-%Ao;wkxGh1%moaGZlT+S4 z_bOudA$W(?wKK<4w#%DvrWewv`;FF*|QH@(#2KwY+tpXrXAW}omLDM5H! z^3ESd)`xu-Aik#=NZ*6Qo;);>XB)2}yj|NcQiFP7Qcie^X&{pd@t2$=yk>%8M_D$= zt*?Dh%A>PIW;`Bbh#Byy;=H6@^Vg5?&*_~$Z?~dIq+g-gArrR@wZ5cvwoiEuCfcvC zeJ+!->+2#;0xyoebI|pM<{^U_6skdUo0w!L))MWBl z_-#KZgB~muv&u(%mcua$CR+B7zP69QA^E$L08sk zqrq4`w8IOPAS|^*wGeU>29ZRP%sF(J<{Gw>X7fRjA;uIJfXBx)GRT+l&`qigl=J(o zt0K^2K-ji|eF8^47ny;{D`zYxHSG{2y+HaY!fCLo3R`JhL%P5 z3n}zQaN1o|9vs{~`g3rT%Vb-|aNK%gi`{@0!4;!>TQ$mDO zvX{jZpsWVmmGh?egEk2UILCg=;;wsNXM-gkPl*>*AvY9YifZcWg!@a5+uhm*8HucV zqUF;%r}6kmr#D^?`{ZW}ywKJtALYN1@R_8YHd@!i-hLIRX%PY~KfvWm;slMOSli(t-SV9Y%Fzkk2caAO_W7f8CBrIZ3X9?L!fH%rBxRQzXu- zA)wACbP#)CZ^B_i7YeO_vMstLt~3$k846S2MhS{UzhvFW_$E8gk#onO;I3}Tpo)+! z?R<62Rc_apuJhe9+2cFhyMVYxPMVfCuvf5r+z-7_;wT29p4y3GRfPr#rQ37ARh-=6pIfjMh&moYU z!xTT9Biu=%v*E1NR3k~7r1C3JDgs@(mQm_uJ+0)t+j>_A!v}8%3CKhdk|-@z?e!h=*TTNYowlyzc2NiWJlat`#js;@Ek3!VU`RiXo)W@6Xp@^{NI zdE|%M%;(rRp*OA^wp%~U$dqnv;#5W-&p22$Nl)l)$7j(?nM9&~j=_$R#0&;vWa`r6lsx9`bwitt1J;d%dZ^V3L@*8kF)ZkQ+*-79|M@iG?v ztO{2dUAa!)-9ENsoi-VdXwLdgZB*|#zvWo?tb?@vqVwtj)k`DgH1l7cpNUA)j<nTS!2cDm>HO@0)X?N2Vq7R@)pGvzbQA{ zrqgHB@pE!dYoq`4RR5vqAE0{3igF_s^-{y#gHpKmT|EJODP6zI5sbGGlOv+lR{13r zk;~Q0x=czTH1v)s#*T#%1rby_tOq!!>{W1E#Gh*sP2tLUJe$lUf5XJP`4f;!&hnHd z0VkFaTGYO1clFBQ_&cvG>;=o6rXkI#1{2VJDqM1UI65k7kR#SiJWTg^Q@S`D6-=9q z9#pp!<-|1B&zNRI1)icJ%G8F&f`vyS?tctM`go$oQ-9fQ@7f`chZRJo;+^&(S;f!mG06wa;Mzn*ip7Or-a9uM#Bl5G;Dj2bihG9LL zArUa~WxiV(oy@;HzI9gG^-wnJMZnrXq0Cnl2pgD&<_V`?uNS6Up0f&N?IFBMws+Il zpfp!`wntRhZHF<6(}CgSnoutnSfKQY%11rSg&@r89RV&w%kCMPiSU8%#yCHHjrimdKXvX7rK;>t{ci+bbG_zGpI}DRS_5wV>Gv z#cuXn+`4XQz~bchOpEw8hH|a*n6^NFibV^9yTQ1;?>tmD_BXWaU95aB9G1 zY9|;%H%e?=%i}*-a=jI*E0=Z9DalffoP?)zDECHO`~Cb(xEmsUhAk(H_+wQ}}bxNJWcH9m??n-rb`P#MuC zc19fkFmhwQ5!#2*j~I{b)zWlF@YU!5T=3uMpvPUMZKoK?C~1@)4=isdUJE}wHEOtg zCYqaxvAYB?rvXo3pF8qp1SAbD{AR=ukmQ_wJ>6$>X3CB*M0M`5FS2AI`oJRs!m94_ zrU*G8qUTOLswK)V3Oh=nXbN-U^F3gKMVQ6_Un%4VAKp020d8HCBqsO7ngMg$smbeU zagk2H&5 zNDwCr@sd2DsM`YMxUY{!8i#m2t~|FL0Iq~IAeW_lIB%B=Mf`7FI%eEQ`X$=$g;(|| z;eXVj37{*&SN?djgbZN-F~ zs{B_@dvjEkyp1X{a?T8&5Iziy;oRYNt*@L=Ye<$D3d8-`@}*YPG|t(yKqa-w8?^$r zk0yJbX>rym-BM6GJ+SB^aQ!IojZ>F6Jw4rQxyj8HzAn=QzH7J)JPw9WfbNR2*wLf# zFpq9fHIFFPuD%~ciK2`!^jka+{37aj8|PzdGjr!oiV0*GaLtdYK(@ITrf9O0@9}hA z@62o)#D}I)B1uy0=P6_KqcW1IA}yGgb)X_gL(lWf>r*Ye5EY@;ZL>^?T61CzJ2h54 z>&)K$>!AW8rG+UhH=4`8SB539mdSIB5_S8Ls(=niL-IJ|=q1G}RpoH#95b{eHgWAN zphagP_sJR?qn2NQ>GfljXKIHIO-Fh~4XWdTL+N`Gf!Ize@Ram0YUvx@HNR!-{nyN! zQ|25XsL5>$+i|sxrp4>{U#o-I9=-S>pj+d9i{OZUuxoNnP$}cM&rFkB&C#EBfB0PE zTJN!x;`-2bc;YdXI{-Rz8@hE`i7It~{YQU(si@&e&Z~iU-Oz@d*VFI0v77L+JmwWe z3Kn`$j$L%3cr&P@rFsNktEB05i-o|T^9sReLMFE9U3mBLgW^U4LGs4N$P#=k>uMeA zgf9ll-qT4iu{MFYLWD-buM1n@12?g*;5!>v&p))H5&`^{BK!Du3Z7x@5}Hg$Pq)CU z6FpIh{Ub=(02~v=^sc)Rj+bdPw!eaF8rJAh{EE?qC+VHIa%`J8Mx|INx{qNMEksQk zJJ7U~Sx$+k0+gGrbV{{>l%MECN(B=0jz?yK{J4%R)RDJ_^TQ{`E%=R>3=s~G=I|T; z+I6`lNTTzM5?q$(W?X50u1}g1+dtWE^ymZ9Y>@$RcOJF!_GMZEN{=6t>rl>h+)WO5ovW~kr0e=u=rK_M{WKK1zgVQ>d&K? z$}D$GQHfA`FNDmm_4YZ5J11!&kN1CnxN-Irwm0^yyooM zL?Rn;bwtLWtLwTwxT;U5c-c|ypaWBsSfwNGKBwv`5<1L&tAkqp`WszqEXqiTjEeF) zPuQ);oNwl3fE?24B*Fw%=i+DcQkhCvKLfl_Dbm-jZ|G*BsKojhSyr@;>@ymiy1gj7 zQQIX}meVW+6baserUj;Tn9Xpw#A~_~sBv}jNy*^TK*-!yj`FHzvv4uvY_)tV>x!X# z-o@n&vz^%q%J|36Q)6PStySp3Z@Lk^0TC*E>y9 z8hmVYd#vOGYF>;qHO6Q#VW{EyH1;hVSeXK{nKfI}*LHA7qUzZ)*rcf2{LsB@Gb*bXn>gQExE2~ROg~y|P9mfzcaX%)x zF;iS}j9J;jdDd}J#x-(;boa$hki#?|4|)2m^_$~s71!U87F>%&w3*Wmij&gke4VtH zD~xw1!7zFfqqUxn7z<@NOLi6SJa2$W_<6*-gT5^%!ND(>P~T|@c~X%V0gBfugy^cj zEfsOuM-`~`g|{yWE$o%?-znt#t@O!$>8Ud&HEbDDT1?5-`kv{S$DevIHR!NA-@Sr5 zel2eMNI;jsI+g%`8>DJ#d8oIkGffNfa5pEi)1K^yYrc%nqJ3f>c{cW4QSKg4)C?ovvo8FdSN`pv?B9Al?|~f>Ri0kMZkCN)q(N=ROhaCdHveu|?FGuK68QM40r=leiOlT^pRLJtW3< zF}46N_`BgM3|;ujr{5ADFv_f|_T;6ollEm{kFg!EoL1h(UI^Y?;#fr;!NbwJyKyO9 z@i4GgJ!`J^eCBY5thcFL`XO1(p~u{M274>cvFHS=?NT&j@RAyWaM7#AW}Fx;C1T#M zMiD;ywLPRE{O5oHZfCI8#r^gHUHa`2b=8e6GH68c_Rd9Gvdd*S z2Mv%bX=&mkLm*DzYLWkajChcD5DKl=TU)WW%9(`toA6FaOQ|0z;EFO(nqY!6>C@hE zG*t|*0U=xozhV=)%?xZ!jyXEH=Yc!X9XnwiR)EY;zbVXvA1z{CvpH{Lg?0`53XG~_ zy7!=UoWxM|_#(v{VyH{J`CDC-*|f4r?wOHSoKnkC#Nz>DhTCr)1+&UW)VE&7*=lq9FW1Lqf%-j2yQiwIm$$!`E+0<#Z*m|}$% zD)P?BPZLOd%11*V`>Xqt>1TL5;?EEByUGT_CB->jgK${uJbwUeZ`Ir%9(OBR|mB6W+y;aIXvck5o1#syqv`i z=>04M<96o;JUfU;5gW@;E@! zF<<0~Di8Vgr*g3T*MCpK|5v1<1(6BaPrFv=Rc~Hv<-a@T)y(Z%`=+uEYO^-;MG9%G z?OOy~9vvMKy6=sK*VPF!*N{FWNZpQSNgvr<$?;g4VLlnMcr%vAey=X$L}MMw#73zU z3?RbQx@qY;Fk3&~rq;Uj%y~8Rhnth9w?8>}?CVSQ#9zH#3G8Xw*gtsQs}XjLq6*Q5 z8)c~bthVQcDDX?wR#7FrS{B{1B`VIObEzmM>sJD>qtb;Tah~H2wU*aT$k6!~`$?d) z?+x0_bCcTUdYQH?cms-M+eVCGibEo{b0Zw%r1X7{*}0Rst1&Y2TV_Saf2Aq5@s7_c zI+W;5HyW(&9t*B$USIl3ouaA`lP|bCLrJpZ-d(B}&5A_mIsr z8_Yu6f9LCRkeUdKrO-p_0aJNQV4F?!FAN)wbjZoc9iovUdH++UG27bsaRIgp+r9g= zXB(6X(g8+CgONR{gkyFID0{g#YO@~9^$%60KKWiv$SremBY?X{Y&m-FU)20=1yt9` zAX_yUIceq}L^;|V?wVyVffX+%82Q!du6u9Gx=Xh-1OW&Z4>3o}6Ur5Mbm3iT4SDsAKlIN7d^& z+tv(?zH8N?07RdmX>BN(Cjddbl{U^s#=}Kz?WGO2OS5*qW5i$*gk2+#)9ZmOfdQhB zV|VNBNM#H&*KziBa!*{zIqQ&_es_(Budy2DQ&=xLPbGDhT&WyU$5gh5G>(xd+nkMZMJ?WN#bOUP&1`92)sC$d0!{B{yTBY=0z)ZvXF(J z4nECnGZ+eIVT&FG%{={`>YaMkf2XPqU+;DFOyYiQXPA&9&U2US@;$Sm5j~kE2 z)Igd=ZvWvFW>gL-aJKhU86D_-xrS&n*=DZlflPOKYPg?2KiaxUhqN+F7FFV&fyuec z-0sr>^#HFThX{+0Di*bP1CFc(TePl#*A81;6|wGSkALImNJCcC`h^UWv=RY0r}>6>kq z?lB>Ei_k~)s{98$Pp5jjSy7uG+fyml@jKk4vw~MyMqMrASt!sTyX_oM>R#BGvF@eU z-u!c!a~mF`WzYT3Z+WW8Zee>*sr;0P2*iloDG;^Pd2!9YG2@Y-CG-xy?ir;T6ncF6C5~+N5jyUaY$!Hz4}EX zW&lEfU0hll174mKSd2fKF#|ww^aJjqw$cE=Q)!HHBjRTCTjZ-=N$s%b1yie=+2K;7 zIo4Tzscd-;GFO&gFS%PL1xENnb!gCs_nfNEE};_WP-&c>?TPzSj~uVl6k$^6Q_P83 z`o9t;rR~F8W^J{f>?Xk`S|_N?Bd^4EicDgv!n3Piu_ODyzZtKHNa{?1SH%i^9OEx6 zfr3Pf7p3Z5v*hg$!eO0_;-AW32SHSTjt;iP=3V)C7bv%dpJ1tAO=086XEdpQyfsJr z>+1=e+yWIp(uWDH6zVp{mOl2N0d^m+`2fZTw7Ucw978{(8PFl{6O~bQ)`=*w^P=|` z4r$$m0OFUdDpfFIQDJ8X_07e+YWBb$Fy+NQcsFcoCyEJ_<6%QTC!WUpS~~zo__w>_ z*7^fT2(gs8YWw>Z`XN@9?J8BWb;jO>grNRiK4*H%vd~3C^ynk@rrwPo?c5o|a`|OQ zDoiNraU*gif{TE5btZ6YdR9hauYqu-GuvuD=VqiQe$%F=TG#9~!QmbU z?_eotkDa5PpmBHFtlbl5I{GNEXCPNFB1Ej5>OlWfa7&h0= z#oYhaP3e*PqR=CS@7{mH$fPU0IJB9b5NR`+3Nj8o3}-af;AL_1eHh$MI8@9Zy?WEh zl2!F4B^Rm39D!)hV}RVjj8Y7tWZv#|W`xG}bpT zmIKSN%8|TIcR7jP<>9IuXu z4Lpb!#9G~0j9ap$f=e=ZanLH7VIhL} z-s6)glAHVv$C(!N%C&bs2kI^Rp^{GdY0FE}eo9o-LVgZ|mR4Hf62YFWUg}X~cMM=iv9Crl# zaIV98Rg2^3RC`zcKZGSBN(YC-lK%ewIMk9EW?EzU2l=mS7N|0MgPWGS*7gVZ^N`>` z=f&6)?>#pZJaPrmTeg zNLHR4B>I@voRhsnpruwq7#t@OsCzVrF(>X5(gdksz%P&BeNA6ui@`!_ioaBA!hF}_L}h2!Yb{N5{wR5WV10aS!!vS!onbC-5nAQbzC#m@0_; zz#ep%R+M1h)@gvE8$CxgRyn;#IYOTwBv zG6(Z|YtqUGG0cnqc3)`F{eJ1T`*;bybThWGn;Gir9jf9_*hK$jslCMe3abDP+|Mk(KTx2Q zlgrPd)6RiTBzB-tGrl+3myK4qPm`b#Vmq2wocfUv* z2Y4kwDFe)wgOJC*fn?Xb=b^#O64^42;!R}|Xrs7y^#k3OD;zI6AGz9UH|X119|`r! zMe_s7kgu$wADJc+DaA{jWbaeJ6=!e(y2nzf>!EBy>OHgd;4HJ&O_{b-#DHcjy?PxM6R_fVcCLT7yEp+Gqqnjv^ z=DjcF2v4S2EcND^huH|%gu$aBv7yO|t1y~sYVmSq3>eDkld|i&@;3Ohyd@P&yWYkO z{$99Q=oKycK8I_M?!n9;(7CjZC#2|Sn0#2NwR1H`MF2Kwh=W=My6RN&Neqyz z(hFJ~>}^rqAs6}0A{SAlEv5(3oDZ_ZJ`+uVigmg2?8_#FWiYt|Iz_f+7gyqK`VnKGywRm~dRY^@%M>?O-=Yl^m{n!ueL% z-FF8gDna~J|IXo`p1Kj-MDqfVzjk8TZ+IL;z}@H;FRp=F5wxIHXXl2sV${vY&IPsq z`&m9xG0g_)blW58mGT?8tuoBoceh4>k-c4L1an8UO@f=2S?>=aP_m{AnDEA3&d#ET zZPSJ*ij6|rW=mfl-i|qkF2#EEd^VQh;A;i;PtT8vEsFthnQW%DkG2fVuB(oKkP5Ga z$tT0OcA|TzcjDPHJO&wW(0WUEQ2dhyui|u8X$ib>gt|5k`VvcB>cSgaN83Zg;lpZi zAuC&zGR--%E4A2qA9-U=gt7x_Ef=%;i!SPK;0GpaeCZe~$5Sagx-6_&T!HD*a9_D0 zk1lW5_PD|v-+Mk=h8E!BUEr;5tp_&e{+(hgDa8DX7vV=}~so(q%42K-_QP z@5xmD3=TP)ilHE~7kmyfIiJJHNi%zWZ;tY$;ni0GXW;baVTW@R1ASk1(FfuNVHKj- z&Y~YGPDQC5gr4b6jo7%YNn-p!RlcA8-3Z$wYV|Ry6|E?+4V~r5kWY7APIq&(BhGj= zMmbO~ebT5362nn_LtJWDwgAaJj?CfoQ^}a=L=G}vL=qo6y@RniO;IK>BN(qdJ-G$U z-!yu&tE6aH4c*@eVVC3bIX7CDr+PzesJJmM4g4Y*t8Je#t@MPFCOdBg6~$le@U=^t zly22FCqmv03JeHh*9KuKqb1?}2x!5;=|15UJ>#`qOcW_zhZEjbTr~T~@pkkrFppscA zWsbrx>M&YWI8o8t6#hV~IJ=IV?}e&qY?LbkAeOxctrV@0$8NF*!Zlq0rD55;`Sg>A zVNRb))s-mOS)y?e=339q+z$J;1>v?$z^XDF650{w_tz#>Egq~w?r1kvTqc&=LiOfh z@eCa^jkd{riRK!y3_g3`=|~P9Pshm`2t8}TAHUA;7ZHNYNk9d(&%~OUz;P}e2(eWh zPxEJyGSDpAH6xq6;C{tFA~t_hG(FF@|4^>M<|^AN8%5eXO_Bro`0`BYCNBeJ2!$XK zHKqT()1&>Kn@fIV_+|Y&hH~ILs*|T4)yd<%fHQ~ch8y?YTnQxl>@x@s%M3+X^ksZ} zM2*`0-d`7GN#C=xupp~J(eR`NccO*FiqAT|U$LGpM6i=@W4#=ceWys==XHj`;op+2 zesllh`y{n&iII%VISMX*+rm^B_sIkI(;`#D_q6t&{=>4bKmtas7F4LU&xvAh2d9mp zIdN)L1nqvlR*IJw{xB;PaeqyP`ImUD<37Yi9l|uj$d@++KopynWcEbpv`glB^gS>$ z_$l(kt*#%>t@Ok=;NmSz?|C{CYtpC@)v_&e!g+iwIW{qWRdm_@!BQ-(thyC}U`&)l zt}@*QS|*DriypX|b54>;goVyhsV=Uymn(wRvN$%`+_o15f{W$63CG89UFL%8-#pRz zU%@244C?rMBdwDtLUFc{#w-Ywt5MPv`^jG7Xz;wGjC%e4`DVb%??VCwQ432VjyGh% zN)BS%^^;zSS}R183~Alb!r=8-JA(DV!^R$1;b?d0p~!j`=rPPDA$HB=N;n4YqJ7K-8PYqbR~3MNmv|s@{D@R_5V$ zqP!1Yl&iAQ&|lFnwGsL&6C^ZGs~M+&xsM!@Yn8dR?`npoUm9EK@O{Y74b;);U?7V= z(|q6kJJG^MX{jaeeiF^Ny&)d>%6o5nW4{`veslAXFuQz?w|rBos?$G4HIWKhk}tTo z1ZKJpJd@m4YaXnVC@K0ZVRdRBY?o<{b23dL;j_fef7+nxaqCn&|JSg9FI8kDcgop7 zE`PZ$Ua7+l_`_q0p}b8gE-9yfOv8)lW$?r8_XNh-ZcY!M#too4 zZS%+JTuO;09Ee|mxlYf8A78Qeq5N~C4lm1o0sCl@Ko1+sP61Yr;LD4Mw>mLT2-+I^ z1rfn%m$-`QyzFQkA{hX+q+*d{R;_BTQIVc!{Ko~Fme`|q{i+sW#ySV8ywfgZNv^f} z*WIQDVJ8pmR`8R`c8rD!r}k$BhnU(kt&6)Bd7@5gg%H)(dOYJ;5&qFU_YWfNT+4B?zdZ2zchYSkDFX)fnW$x959|WlqlcM zygXc0a1oVwV-Y|08Y%j0TB?xu@R9!0_OM^6@G(#jx%ED_;4=e_V2(>@y~WSB4==4` z?o6Rug_N=jlznq^S1a#hck2xrd?q4MM@56f-;%+v85rIHQ?Ix-h)4faqNsha5*GfG zHu6-rR(s0>C&T45dcbAUpT=?)Z5P0iYlXeyvlZ7kr8Z3omYWES(XT|e6`mBqyX-dw zl;~GgbOoYwnC{cna)FKUDy`uy-V?AuPa@^E2`<;U)J#rRZxy4X)_}{91q>?is}Yl> z>5v%afy%CiJzt3>6^8Npl{~j!18P5|U|XlLb7c(GESnm@PSrwjOxSIU{Cu$CMNh)x zHd&I#01x_=2R-MRyCJkx(P`j^`TKJ^gB9>07^hAP>4R{HvE|0C8P{tI3?ap~MILv>5EpImS& zk}RobH|T$C{p(61M5NwsM-?wko#`>f&jOHnRD?}fpmY7=A7`IHj#qg4OcHS-qzJR$ox0t?kFC)G!KiPumTk;76(2weh+9%Hiwd~)4aHu+j)TJ1S+#F;?G83fg- zP2J!on6=XC)Vr@;NSt0lHI#JM+njlN9_MOIXF1&#yivM15u&G>JU|RL|Gxi3>TKW0;%E{7(C`&SR z3Ri&7gDE?35(kRV?9gG1r@6kqe(m8Qcz?Z>&=ZM#hNuQ5;YX9c2EIrfm)aqJfdYAd z8yLj$;0^d3arH^YYUgzc7fCVyCuS>k>bxNVrTtju_wgDU#>D~X!_?%4pDfl*6I zh74^LPd~08#joAAne&wg9aQqqc0wAzQg1gjHoYks+mxa{ie6$@ zFmd|JTSW9(r;q?uA5o^N<=eufYg)o^6aLK@TTC2tHM4?WYb#Ng29?2^!qK`s50MtW z{^T*5eU5#@ju$tUYzo1PrQ#0hkE4^FDS40dEXX-0#_%sVCkf6!ZPD6y!7p0Ta!OVT z3>wSY5)&=*yEuqjYIIQtIhNl0NB)0rhO$vUKB$>?Qdx~tN_GuxjJu*`p0W=(Db775 zeEiGbPgtx#t?l0Fn0n@w4h~EItFUv6g6>9UKDfgr$MxP7sIE1JMV@&KWwG_w?F>0= zz3ln^+(8ht?>2*}yri`%c}hBy?j|w#o|*h1BnZ}12<6q~1G~oz`FYh071(?kn%znq zD)~A4n}Q=EH<9H3@b(r!RfXT%sEU-dbRI%MT98iZkZwsSK~fr|q`OnPJEgl@x;b=r z9O}^DM*ZdgyK}!gbMKuIXU{(S-E8)GR=&?#3)?BmXQ&U&a>2LZN6$(_Rcb4)4WI9L zvhRCeL;W*F+W7$!GTSIL{NA1~AnwpDthwp0{5J&Ct?E35!BTP`StM0|XrMop4_K$6 z@8^GuqlwIEU+Sza$v`kOZoLK-;AN90xVHj2hVD@^syEklCCIYRcvBX$qJ0Q;K;XjK z+HawnV*X^QY1qh!>GGyoq1S_BuXR{&@A-bP1zsih7zOlwt*fI#o``{Z*+(Vya1jHA za1mjJG-)-#H2vO)_gkdG$D^cM$KIsQzbXXrbluMVz28$vRfLG6ocK$jn7>TH8)0y~ z99yKFc6)2~<=8)>xiC>GaZ}?XSViW0w*-%h!WW;{z!RV0EZyG?bfTPBBalpGpRD#} zenb7(_*pP$c_C$KD1(+qn6kbV@b!i4Nrh-Ug%k!QM!qS+CW2&*7>Dr7 z$mbj@uI7S{38^sc1iGPb5r>Zp@qetS66<=Fg-M+jdR9t28POFe8C_TG= z{1gIh`d8HLo$e0>-#)D7qCI@l9gbOpXPM{9`++Ym<~L!4yjXiKIQoO{_G`&NyU*$M zkXoa`RM|#4?Of>~kikmh2#n!(<=lN7=6IAr=cOF{Kd_$ z9`y+AV8LK>;)hnQTdm&A%!aNae35ob8b!$tj_%DJp*INC8j+jG3^xJY05cZL7&nDz z89ib@wSvUBi8TIbJVE!eJt560t;%yvTJ-~g4FkW?fgH&$dXW`zq_p$AyD{$z)0dYl zo}c`7jL)sjj3e|_-&|V0O++O}I5!?(*5JHQYkp!9w8z31>GIPhpa-Z3o1C-|Qpu0a9wy9P@2&f=nBC+=X_9+v3PZ z`kE*`qA|bTinYyw5+qWmWkTZ(O-gBv-6TFQ_uR6&1+$gNa(HPl zbDX3o=#mycc|+A>@%5Zly4yIn|03t}T)Dx99yYGQVP=vZ1YP`M;v+eth7qh5^>`i3 zp6=%ZANA^8jXhIgHb-wqxrbTF2bYkht-VIPM{?TW`7IjEIz|LAb0@Xr;U5%K^81Yw zA3I6*#!c6!0wX|8UkY7U{rr4}DHM{*3>XT)WLV~LaB(FhCL~P>Vk>;+7dPZ5yRd8|?KRC0o&cBSs6r_C1Y4MQCa&^)$3_oyYVn{3;Y z6exPof#VMaf{5(yNK#csMu33`$9X_MG%{(_EF0WP1#8ukyNV&m%M_(mGs9cgI>XL`UdAjl=H5}V;|trE(aGHTesPa!Mmq7yD8d(+JVAL< z!>?>N(+~zvPEM8&4p6XZRj@MfAzK9ZNj<4|0LAi_Q=F!y*6Un0iQy29Z>h~@dFrR( zKxo@(3M*^A1|rKT;-RnvIGy4bo*Fl39ZO5DrNUfva1dym&hqp-qm>@> zhUJ1I6ArK`mH}6_ceF#Yzaz!_ce%DPi{toL;Vxdi+-jRtXQ^v_G>PXxKCmvICK0tq zNhL=eS1}7O5D0|UrQ?7WhHXG6a|C`vgSJbn#O1M0&aaKSxZ=gTl#PD9s;q8>&W!r& zLR`5cKVZi#RtQ=h(kA@^XbRmP3uOXm8q~S7uLuIg5$-xDge=I#a`QwibhQ1pf#Fyi z8@o;9Q8z$yKijXM9%Tx+%ImLZ#};e3zqUuM4k0CWIAV4enpmUxi|xmu=bP|$UlR%E zN59A$Q|XGt;Bqkr2NTHa5o549XO7pc;45>vch5pu| zmQAOruOPxQ?|D9p*ctIVPQ!=nsKY%ilcjj3nAO}c){A8J;ex%f^H9`u>XOMR5(jos zwQfV*)KHTXYaX=+e2C;0;N`y4D$Ymodm)Vr z=WwQuHQP4CUJ}w5sb-0}R8>sms;@pNGI1GVF7MEnlOuCq%fGU?hUYj^$aY;%8_L}V zG&@VBLJ0+?kjAH>dTjQhPD>x8!JPA`SXz!5U-?oN$BIrKu)1fDJ0mTzUnVnUniQ>E z6wbezW{M(nip_rWHL6LAwt1;k=Nw=XCrYVT{<5yL3}1LZUkHX;+MB(LTb?99Ch48(hYT^A&z*R_Us%b9Uphl zF>r~ueMS%eDV;PPp>$o`#%%MQ^-&IQEAi!gy?=M%Wo@Nq_2SP5Zzp9zVkJYX(!m4O z59=lDb>Bp&Ed>d&slSa*%dSVqWoG)5*Jp8Dg*BT;XlR#c%S&3BWd1o$`Rjj&y8!`j z&Cj3K^jh_25TFHxCeXgj;eM5$&RvoJ?KJ$vmi0!zz!hY}hEE}vMN~Y?sGgmj-H(L# zTPx6$VtKL2xn0cg6&(bfA{HIvdp3r=C*lXHktWUK=RUV-W&7xz)z)6Wb*)yoqDoQ6 znPcRO4@ScBTJ_egyBi0P>UBX)nSMT)Qd-!2W<6jsaWO;P8)U*O5rOMu!p;jv@trMP z*z)}0S{#)IB+vQlzUye*PJ7^{0|O}ayWfa=Efar`fD56SWbLI-o;;jM2n#4V1Zr-B zRi}IbiZ`l|HdiCDRyd8SocQcC{H^ARO%781Tw9GiY94Yj({@T!{2{%ZOicYuMkCAn#ybv&ZWQZIQo?sn&a|wNAM}Dc{Jz zKnY_UTmDb?i3q`$z-A4gjMq_oT%e!DGy414Bn&^i%9`W=!l!TeTe~C?VQ+RhFbTh}A21}&a*NLo znCt6HTj9E5kk}k<0mggeXkq7sVrhTm45?Q&A!@!SShcmZauisCRp&o@s8H;Zs^j-NO*VQ5x zPIce(oO&u;Z(i7`SH3lwD*ExU;j`VK?^FddF}ODNL|ArB9WzPF6tz?q1%77agK*>9P;mq}5cuNSaWd_AKL>&;5_fV=p3o+%sKt()1^9o3k?oJrP@ttk}))#MmYAN z>9iOqJ4GEstaM=;6{nyED&pAg{iZKz&FD}T`P3A>hX++)9FG>@2kmbxFMsm>Qg=6# z@i*Rm6DbSiD*-l{z#@RXE}b#u#q2jfF^2||uwu>yl5#DrEN?JR&?1=qzYDK3Q@@Oa ztK7uEGA!`MeiaL}=RN$|_{E|2y6t6c)fW2g)ds8M*62j0td%wLSXvMfjZg;Y=% z)N=1z$-U2kSVF(^sq}(In||BQHT>L9;`pHmGPc`j_zd)9RXM)bomdhr>J)vS@K8>0wv);*I{jID<6|?Q-MXr_gR3vP z>rJ?-Q|$1XbYzA}X|w+8T%Peh>97luZ{_1D%5#KA0Yw4M3fk2=xs8X_+Zw4#PLi}T z`UU>?3Q9KD)mIAIce+=Wf~i4|`2X#RzN_2=|+Fd60JtH*=Hc@bFT~1 zI|U^_;J$a=;IEGxTLA{Ps;a8Sb6AllaaalZ^K=SJk(0iBCd;;tNG7F<8s9YEfAW~k zm-$_7Zm|IcW=4?c0m+y8`myX*u&&K3xYA4{g=#xMJjnR#i?pnPK5%s*(%R-LVAD6^ zleE4{oWOQLAJ8WWj{45CJ-m7&Bh4KBMqc1x`p2)dAp6f7sD3EWnO*Y3ZW+3`IQ0>iKtVaK!M7@pQ?Es@qmI>;%Xg_AYfBHUEmtWX>S;~X z3Yy**=kUTaobgX|7*72vIw%G0qkyhP>arjBSg_NA$~wHr4N~N15lx9xEh$#N4mwDv za!yXv69z!ozc4+TyI%0CVG;!lUvKLND$Mo2)J<&1l$@)rIcFh)}HDTAWs>14L#M8I2 zM)hXHFE6MXX&{z;!?l4TsXqf7wc1_C7~R7QFRLZx&vay5MMg{7v0TBWmRFwsNn9J- zSVp5Ych|9u{=LPgb~S}%B1;z)kWy3R^{GoPumJ+_VbSd#0ZiR_-z05Gh9x*Cnf-Gw4IBTKYWFvo(h{V&l3w?*CmaSB6-v z+U&>s_b$iF9>@Gg{>bmMp71@(V0cDOLDcJkbwXP6sI~{t9@{890$YmnXg22XXwT8nL5pT2XoZ?uFz74w)Q+Vd9|7gkQ%j^vd(M(Pt6{? zCa6kU(--L9fv3l7MRG-orma(e?4`!YE*@jl`yp)Xs`_MyCu?pP+=rq73?y)JlT%|` z_w4rQV{Ex47uHMRabljCofVkcwTT6z&dBP$UsvPqRzSV{SL16=%V= zedu`bZW4-ErGB_Qp}MtNd8xTnE=Ee4vd4|Xe2{=-m?Ew75HoHkZ z6=daOOmf-c$%1&qyUXmnqMTQGMG5Jp9}NqWXyxBy6eH0nAPYY_Ro#KY&$Z4gjE*na zm)eS9#Fi6u-nj7T(HJ;a`%PHOKtl^&LyIV{S6W;XZj+q1n$lR)W_!HfloUoO$I?gN z?PX(~b!28hze-pn1D-_Yu{opo%{jfLICaTEB<*#z&JyGbySaIOH#$=>3Bcx_Ml&gS zt_HbPp2OxVB2zcihih>1g~69b zsX99W<1l30{AsLh*S`aK`pykC=PvV2yV+XwZ7)%+b)mXX_DIi~>7PqR>FX4o*2|5s z9dAI8v`+f~uGVA0C%l4PuZY{e#Ln>-9;mgRTr*h@JOA?ZQ?z_Grnkf=T&r!iPQ*Dq z;C_@}Xiolio#&f9e1IJh(*71bRP!OJXY2HvR2&F1|EJ!uAzs!Q5WiSjgwqU@W|tym z$sXjC_x}3jJzHVqm7BXoYlKgZ3wbU?f(3iB;IM=(?z_q}wl&PXy2Xw%VQ-(KpVn+V zZ0El0iWA!53^3-{=JJ3B8;=#WZ~hznKZOkCNv4bSBl|NbFgm|726bL>hC)Nc#d^Lj zZqu;lK9e-Q;0&aU`EL4wrc|_ka<&kp8hZh>?6{VVQT8Rx01N zVl^pwO;c%umJhWH2x$)9wI4@meWK4++X4LI!o{wS% z0Q^55L<2nny!iWq<}la;FFr#g8tYvHuF?i`pV!ybEpM(Fa%FN(>%lpX-)Rl&+Cm|y~`QiVk)ynmJ%zXib+jO zVOUp=&6d~*I_+FOKZC7^!L=UGF5hU|3fLP!v!)%Mj=)`y#@^fZRQkx&soyFTN6dNg zBNR`s1y`tqKHr5e1YU=sWqDw0%0dgh<~6(jc~|udLKiKUWQ84T(&}Nea#IUZVz%b} zkI0g^r5b#)$T_sWfMdj<)lAF-{mGLBfihbk1hq|}0Y%!HW%XU*V;D6+(;rSZhHTr; z1KhondLTL>BCFwHg8YoZRdZ?{-tQkmq0?j5L0hN@lRsK$fS;Y6JsuSU33$PwqyZsP zX_AJ&W)C@D;4nk9Sf}uPQHR%b9M?^wM7T){+X3gr!^==$Qrb^LaD9EfN+&P|^7-FE zHJwlXEdv^qD>osO6h*!kU}mGEhkF!%SJNFZh%w9tcje|g9>?B0bcKEn1OtHc z|0N}RGZh|Vk|j&o!v)HIJ)yd-;|KWgWd7x1$|~o_#PR}ro`F~}zXJkk!S#;EaJ!?y zVdZj|u`O&garsnxjWkm9@gcZ-`O{U-d}uptssn8L4MWIYD!=g&g+R=q(T@zo`oUs4fmM!B(GAc2b5<4^Vt`gv;4j*3`b-wGQ z1${Xket!KanNNG`bX$9u;}3tTzF!>_nCKqIfm_ITAO;)NGv zl770w@q%RS(!T*zGaTTBONpgkFcT^)AN2XmRM!H7jPQGxoKkUx%!FQCjT$cRIWB~o zgz<#~)_{Wbu)e=+Yko6!SpTZgd@+=0n}(vgXS#2z+yzcs_C=$Gw&5FDO)ZXKeSm|8PoTuezqKzZcnQ?^;4EIc+yG?B zC~vpp@8pc^mWxFFvGg~k6^PtXUnp+xXdn1dSy$1B;ubjU^?}sLjd5Ul zM**)4GnTfkwH&T2IS*HI`;&KRrL;JrqLnOpYiL}y;bwjoh^=7HQp!W=J1TP^7-UU! zD3>+P@QFAwzU|&cyzbKKG}JtTKe@)(tz68tF3GYJ5DD}En8zZElob5DK=8sWO!6P9CMzSX4q%v$+j zi=VO1RZe*Z#E;*92!3^o7tkZ2THmbqrol3Cn*adx^$W|IGV>Pc4AWrSY+PTwu?sMH zU5LDe)3yI2R3pK78?m`zc>kX*e&iKl%54rkdI?+jl+d}qC zqv416jte!!hW*hP2>!`jcAoL^c(vco3pO9t)6qYENAMCRPjjYb&WKMF*a?pA^@ryn zi-?eS9P`9_BOBZZL8MEyM04I8&uZ<503*%dEpy+JD*FNRfyJ#rdS7ZxF_b)l0V2mGP%{sSDM111xB zqv*q}$|oQHlH9PE!vBqxzDi9^qp>C&b57bxRU4)yB$rjc#bQ(!5sDx|gY-OtgU)-~ zF`t!pB|eBf>5v(#{QD!ok80hK#6%g+31e)H#UXLqwruq-~$7979UMkY~^{eA5W#Rch?lqam zxF6oZwtP z6S0Ji3B31!@ZY(HDQ%&guS5aJGY0_qM@3c#lrS-`1B4X-zjc3EVt*B_FG0)vuF`t; zHUY&S)%trCz*7Ht!v?I<+wsNY|Cj#!PZityVU$%AAS45ygN3K@@U3r=4KK}KYUy{5 zp)mc6izyDYOEDoJBy@1STyPMQjDB+hL)r9R&H(RT|A1(l9REI!&n&lDp_1$(-93bW zHO=|*u+08Io$MKT1gt+xYcDWB?bG@*(KqQXl)>@6m}rQ>@uZaGas(f6y*2_ORQWt= zI&60&?JBOj4Dq1W$aNclx_g17aPAL~Wk|CJt{IJpUOcmMeath$jF09v{Sws`C_n{r zCrsPBUTVW~%X=na^5`|JlAo* zgAF6$eVKxI3yruv?m$B)CPv|PzIe`4v5_RO(T!?H#^_?{Xd)pgZ%xXuY8oNM6XxREfc7oVT9my+T=eKX?cfv z@s=EvqhjSHb;qYC6YhrAInqtVj;;kdT`J0?>#jr`9Qm4f$Xwy*Kfd$u0NY=z`92O;FtO zb+gd%WZ)+bunh}Qh4CwNJO8h-j~p(4)5^`h(vhACe|`TS)HJlJ5dLCX8imf^kWAdT zci?XgIY?~-7+aoEyuNKrvLNxomHcyEoUZdFBNfPvnJ~_?;j2q|DhheSDxzt@(&sJ? zIfX^i=o^&-;=l&jg}`LuwR}waoaLJa>p%FJbQ7A5q5TU%!u}G?zW__E(U_^;5Pt+8 z-p>P|wnywYe&r6>qqXY(pwpx!eZM~j0G$q#(hZ8CYRPZ-l7TJ7!A^)e4)PQK2TT8$ zt>Vt^?${E5vOXU9`h#yA5Sl%sdgch5>zsW19ep6CL~upn&ZDA)AmW7&-zuW!zP+8IBJg09GkC9Hes7miM9r-E2`{ zn^Al`JZEs@BA&HaAk@Wdoo4+LuZ^G`nkYgj3t)&^WN5gPS^ z=lgy(FE!PI2PXl*=Uru9{g&0=>oIe<_r#RF>4ut%xoIt*{#CT>ms{=~fOOc7Mu?2} z_DO+Cae~bz=@^-a?&nTHuCTXdM&wHYeE|>Ha;aa;D%Vb)TfwBR0S^AEkbKL(8UM0> zH~th@`P3R4n$%i`=3d+0HW=S+Y<)JjgZpJDufi`F--(k#biZ)-T7N;o6_xQjBA;$g zo&dtFgPP-E9rrH|C?bo(PS@LHJkT8~=)q~waf>wf^4QGB@QvV`Tka{2qweU4kZPG@m9&C4h!jgXc(Pgn>fjg~Z}nSON0n zMFvUSe}nDckvx0<=K_$fIlJ%;$`_5$zv}e=7VOo3wW*jI7-iH=XfBrGf6Bv>oc)F* zAPv9sKL}K;rc*4%Kv>+uY}jA)*sDTIs{iVHqU*1cyYDyH;@Nkq?_G1lu4j7=usnL( z+n>Rq5IotS&YT% ztOiCmeD=!TP}WxEOHILrT0a&$0vL^eq1O0IoW%ro0ZEl(NwYQZMsia;V+W87!gL(W z4g&UczxcxG)m4~g)0TFIsw4i^Hw{YIFq)dZooD-Dm6DRgA0)q-1OC*(4IA}=o|jKC%ws380l1H+?5z7-A!U0xoUh7|n^`K#G|3%2Al z!EZ;rv(d#8Y@83ypO;Xm*c~<(^0_T9U9N8Vj+&f@IWK=DbHDB*f&-Ty9}luGd7GBh z!F9UMMUV@+B$6$<_d37Bs$OwLxT80pxQUBp;Do0p#xd9M?(cG$XFME-Lm}ph2CW+4 z`Rc~wEw2hO@EK&|;({n)PT&KIm`&fuy(lzZ<|zDXT&Ha7H-pO<=vqmHglhHhsoclr zgp6cby2n1BW3dMz#(@(*M;i*O203Q@v=?tB*JMw;Us~cTl+S<4^rH`O(wCR-;qn$5 zVXI?R+9TmXe$-noIQ?8nq!--H=P#FV?9US9eD)BgF>xyOP7*jSR0A&}R&P48RZh-V zZ)Ocu1i~gD1__A3^Qkl2X;imY2Pl5pSh|0D3W6d^H9!jAHbb8|53b(PG~dZNpmtP+ z`S@XacOI!*mGXZW5FdL-aJ;d=k6WRGc+=X*aL>z>9MiNRfy)zLy`ESMDOE zBL6I$FqgHqkQca=Fa_HKud+2dI=YgUfq^6`HTB`Wz5PW}QBjd=20qZ+b(hTImVRSm zk-!@qEaInNje3l^^qs?O=IsrNKOwtCB@zPq$Flc9uh%VaLw(?lgHnIK5t!@s6v6kB z#G%b==ff8>64T#)b#U7`a<157o8hJ_$sQX$w5U|?m^0R8qaf$5B)~y0t3e(i=NFyXv#iS6Bj(+db{)J%c+!^w zIj`r#$%N|tffokAPw#sWS{*bzMqAS*9=Q`l@>5i!%ax{RHK@NhBeAP)FK$Dn&w15` z_>hVYtHU*$mc@iCCn$lh;<{~yP4EgvSF^9~?J3fdH|y{{@ddr+3%}0PogcA6`a&@K zKkmqiTp*nB_diPCi!4>>nl(JVxbLwWsiaic6a4tDHuNiRcAx`lfWCW$nyF$}`2*w0 z9mdIB0dt|Om5CGc;B#CMGyRY21MW{-`*md(Ar7BThTY*SN^WqZh#Vyfpk;Bcj3wOe zx+g3t4RWiR%8a3YBCDF0AgcqHq6wO2d1LWxhb*Z(hIi$)1=?W|8@QU+iL@Xx6foSQ>JUqP`m62^d7Xm(zCEQ zY^kWIQ1##R5)|Y8Reay=xA?``6y1W6ZB&!{Ztu9#o9JN1KRSID*FWp`B13*OHYRt6ea8EeAyQRT{nT#Q`K zG&`B5k{}BHF~%lpt&KQ=wl^f7<1JHbm!GCfuOuS_pA_6G8rny_L-=To*V8I$BK+7(I@k%+L%Luqe%%Pz zl!l~0v>tVz>i#*@?~tL~*4kB@PY@r~wp(s@ghcHJpswnA`^XnS^I$(~*w3z$9ZXSs+t()+A~u~E6&AhwL1ZmY!CamNC&Xy3M6yOD+W4>zT1BB&=|Mh@tP>U6~9EjM=kFWPiI{@SFvL50GX?_-jdGTNqE z=v&Tcb)Vb-fcasy_)WxR2qit|7*f3<^THKi&}ZFs25Px|t->*hqAdPrlu^U^)&C~TQms&4WDI-%S7 zDw-5c5%%Oo`EGEi~v<`3xa6$iKcR8^f)VPgIOXtKuc z*5owpKd;4oyqD)Mb99~3$KT*@2B_}tL(bDeqg3**$ zycQr&9ktwn@5sTzqU3Ib-@K>#_SWUbSwP_FJV0YTz5rWxlxQ{VyU$dB#7)g;-gMRw z^|KR8mOT-`Nl2r2TTP5G@bIMBpGLfy59G|s3IP>={F<=bRGf0h09xBD$#zj5MsV z0bz-@CrRtmrF9cYR|RWhnqz%oVYq!zt6l@MSt_LTth}&8we)5PyZOKCSeIlMDIca| zm*5O5Lw;h7n5Ymlhdo8GU4~VAcpS8#SVxy`q0yH&l*W$e(Lsoq7j;TnNr-%84RwbS zBkA1CP4BZ4_20bsDCfVl(FBh}wn{}$*LlNiCbZ&EDZ)+nKANpqMDGR-X+@(k71PF6 z3rLo|IHq4(W&fj1+y13ZQ8!c`PCNOoKGrGoDDMX)>*)}ox1g=Kwd*0>X`q#l)@Gvd!%2Pb&|1 z&pvB9BT4bBtjR6fe^*0m+P51$yXerL4xxLGwS<;C_qA9VQM&sXNjb@|IK6bv55Qf{ zd2LhHyx5$(=w-?8;($zd-=_ceyl8k1(4&WVR)8B?RAQ-lDh+#Of3o6{;~W<$vU-Cz zdTH=u@+e_c#VQqmXBNWg)10^ZS8ZQha_zAdxl5q|dp$h?k7vwXq8jIKy_Ts;Kp?92 z;0^eilZES7lx%J%1mHqfF5nDyJ-rF4%mEfAVGA_i;P)~opU~paqlpqdy*2pp6KXe? zB!qXdprmdG6IG_F)4FlXm7fHq&iq-Xx;?WCl{uivvDZGqoDK`a)a{0NjsK4`U?`Si}72{qD#r0718W3n(6||dc&cRQW>cZ@D z177kS%@hM$zVFO{dCqV6lpN=kco{LcY&jfDtb?KNwhaWmJBOMAFQQI>d|Wi&H>>cxQP zn>k;$olx8_nbn2&CZH;&n5ZxU+0X!Mhy>M+AJfFDP;xSsxlKj7tL-5m03!O%F>z{t z!7lmxX1|rO`1L>y5k+lD*`E+h!=err4jJ$3dWztpQM!Qu*}W{y9s7t;w@CdJ*g!qW6nW>DPU_qDLO_w`v?$H3LSSqs{!6JJp-EdB6czm^BP8NbkYrjv(sR3CO#y=k*xnh;# z-ZD{enHkp}*uCy%4Kw9G-<%S)lG?|Wo}l(hgfA*aq2Z)JFz&?6Y{?opZ_UP z|MQHwOATK@K!{Fb_l3z3TnM%(Pibw)!4y?Gn}xmGF+tp1;&m;?XF7h4kVla+*}~?x zx`T53U!9Q!Px1u@gn({4&)3$3hH+JT$NhD08P>1M@1bpIZcj2rLp+JO?TMV0pCO^IYoL?^PRJzSqH1X+-!0sW zX_Mtaf3gh?iu4rmHn$iR*YWl&UAD#9XwXaAREmZ z(Um$WgsrUC(F$O99k);X69+R-xv7S~WAon;OK~3|0e*?amq4_z#=0u`JQX5bu=i#_ zv%A0ZgJp0z98NYW1*OOgngHu1jIzvHqD5}yyYh3-)Og)Z^ot9}t}ia*P7(H$)!N6H z?|u>K-tF`JS!G$DJT}xhh2*B^`$Gr| zybhaNE`1vL|HG|$+Jn0QMfRMcFfA=D4=8KUF$Py341E0fQ3D7m(F)Ki2jCYsV2+C= zY6le{>_a~4=%g(*mP;fu+y^YsLx&b5AmXZ8`tIL_gg~$N{up$BJm?2idG&GI)3tJ2 zfC}HMniJbrT!Ut^TiC=USSZNIxP?gU;sY%HQrNm9SN2}6phlf*y_@3b{8(S-a3>|h zsOD;~7%}6Qu?;$ru$Z@o30@{*8=o272X5`a?{5tFLuA+Ddmo+f9$QF6q?3GI*Z8bB zH;u{B=b)Ayr-+Mug*6U|EmLwvDdj{7uJ22KaO`Zwl^$ofUk ztTYE~_}q4fA8LobHm!iseD1hLFKS*CZX;n9t@7z5_wx@!T2gzY3TgQ|J03=KIp$}K zaiu^-g?@LFldEcr&czJ#9RFqSVkGIZD^G(B`WE%-lAy)O5^9a#|?DRV$m8jMGx zO?8CJ(fNu(&BrtJ*M|7`0dgd?8b8BWDVEd_i`YaN8m4iakiZoj&(iCcnZeh_9fC0p zm0`Jr%5=uWfjO*#kGwUs2c?Oe>df7V*0@(H^Ozp3H^rOH&eBc z(eGq!#vJ5r#`zP+b)-nzF4>IqVWn1)bB8X&Tesv9sV$Y2oOwY!PZ+<4nm=C~}aOv?{M* zLUE9l$J;-M<34UfaiEypZ525*Ev&toSG~)YD2Yo5^k^zSA=lzj?87@#|4e??WiD!e zFb50Bxeq*v;}Zbb*6VJ9fs6ckk(b0{p^G-32yvJ)@}y};$kGYQo8EQVKgi8TC66~b zUk+u2JZAplKmRNBH{%jqS;SVV;d4Nx-sBwUYE>Qoz}#UZnZ zVHNM_MNG1+*A=@9eD&=XuklPBt)0CwC(%py6kZ@;w9}|*YgRV>bQx(_=6s?sL&0}R zrchcA@qxp)(?S})!0#2)FjkjzM@n2lK{L~yB5l|2KpTL{$rRl0- zPngZTI{c!N9csrj6i3_Rv?n)SXO{2U++m}07n*#LNcN7HhY*xk=)-G++q$d62mg+t zkxkiUW-<>dM}*`jLfCv)R+9g<9%`NrrY(+i%kS`)@B(+p=&rJaDmrWa1^hUN%z+hv zK5l{2KxXz_CgX-VT=+pwd#=^qL38AqW)9=SlVpDi#u}#i>(#Wn9tZN0#-wg5ldzyo zlBIxJh&4e^J}*OpvkR56w*2NM3!J&?&1xEFkBk^mU0uk^6mYXgn6GcJ`D*A8{r4}$ zP}P=Mx+%IoFN(uc+q_x!8ZN`YQ~PhVOsVgd}CIc zpU=5l9Kc)>TpTsjZ7Sd+!;(UfTJ1wkuq43+s*f0)=721ZG-WTfLlWjfWBASJo!|%WdymUf zKqKt)8uW$}oh1J6;19PI`w^CxrpS#dMnfd^<;_~pYLYTdCATZ!h4)DJ{4B%mu_ue( zK=JI$)kOVph>yxWK-H0c?K?3`_O7ix!KEnrX}XVxk{r} zWs`W{6hmAB2Y&JX+2yV2|mq>n4 z6PfTJ+;m>K4qB%8;p4jZX;)-w2BOK=9x9qXl-**rJI6C^sGKaU+PvR=t2c%|4I}+q zgA)#NRufwN3IgK+Mnm+`01!F#G1;zlGBp$aL%GZRQSRJir-596c&*}rLjb`+{GmDl zhzAB>Kz@q^U@QI~+=E~#V3PBwG5VnUL_tdn#b)!DM{dfueg>XjgM+-*vObrJ zZxrMlvO)qE6)Ra*E=CXH%pvBX^%qKDnRExAqb6c5TMlzz-=gksis*5l=5GeG>?+;_ zySlXOIwty~NZhivJ-@j;@Yy}z)1BUTD%)t$|8xKnZ4LBGtqh{YUATHn*LWvZ zwyeSL4O@e_vQ-1(QK{j50$PN?fIp8egtd?Pxjm(IzoIL;8EE-*s&Uj7N z4DM&|{k-pYzUw;Y7i)#J<|2CE^KN5|wJ2+#z^-prHm+tXnN5NHKm<(M7PYJA+tvL` zOTPALR)$m26b$!LfXhS0q- zgf<1i)8CTa5NWS^k&VQl9%}4ejE8?c{(O4PpJR@HT~r@TMe}TiUeE^N>U*7&=Uc08 z(>9$%dzII05B=jv+wSs93o1kc)S!__NviwE@A7;P$UaC43JPFsur8Wme{vUvzzHt$ zda;I5I>)*0v!Ho%X5wIcH`Mj~ZEDV+-)?bf{lHx0(*NN^w49fhCpD|&k7IZSzZvHP zQ^V0MH+&I)rO^|T^AwAfvA8GhT$H$v7)*}XvfKQQZzF(=Dbk$Yf(ffgRorqx%o-B8 z)Kz4iJdzqj9hISG?U>)7ikQL~c+WRANje%jII$1e-p<=mgYA5>Sd^W z9m8p;JyT3`FejvK1Gj33Ln?WBkWh0WPY5qyZjy*QuekT!_i`^R8fGO~N>5f&ptOn2 z#a$VBQON;S=PlA{@1+D?g{m@zD4wxK+tYeG=IX!7jt|&$wX8Kk{#7H6!l0WJ`%#FK za+BIVV@3k%TP7bqRdlV6YKN<^Vc*E|EUFtqQkF*^k9$Xu!MB)M` zeq_h4P%mQa`Er}DJDnxZrO`!Z62k{Uk+OXiZiK3cVUskXwA?V8(VEn5&8aa9SOfx2 zJugkZ^;1EDrdEwTszs@t>sQEW8umSp38~!|A0pn(M)Dow82M_jLwxy9=npDPt2G1S zHrJ}O92gbv&qVMow%Y#q29dmIdAxnYDq4_WC;K_U!S0Guhs7(^TBty_=Sm`<>pecFZXou0^y~4p z8=S!|c2_iO1alJyA0BA}XCV}vK-vTM`tRrb>C*;YI`fl*hi4@sB4RTHpcXuXQv0Pt zrlGc92qzzH;s&1V9kdH{`K)@L9H>5f2CY5&iJJYV7lG~tF9MQ+vU3oNLWmWmHEw`K z*PVSNnPFevh)rIP!z!uvbo7|Bdjxa>3fMXxA+bK48L6b4wyXY0@5zE+tU5(cBlYXhP%v~fj#zDhg|n}qt_`lq+UDuOie={ee9 zA{MkllXuXhVNp|nyHeX`$r~C{J5!YeDQS_sFrj$QepV5;Z0kvaP4twUo|$2A{1QazM#p&tkXC}tEVFLIOS?|9(v$0{N zpg%R0U4xB!jw*$_o>b%9jof*t4wA@rNvLmWz23Qg6M$DBNrpSSL^9Zh;H;XnB#=F^ z>|=Bm(qlm|eWZ%T4$H2NJd{wg2Eq=;F(41fjmbLQK7*pCuW5sBu4w>N(4R z>5NX+9KpJ47_$7$XQ6ca)37oeM4pe^ePF=QXESn9!mQJ`zpKiaW?*u}AfMLybAQWt zu4&lj!0mfzA*zJ1s|QX+2+Di4nmfm|inSY-$lsG}jY7YL>_`!0#j%Y-58BOAyOFMR zR=CYJzQrD1Hy+8x(h_B){CS zGJ2X@L922%iK8ZTXX{P8j*ku+8px$CN3f}skX*T{```n?<$~8|YfbadQ`4E)d2_jZ zL|xsG*ioRH=bW1N@erT4s=lbqs3lCsWvuX2~7?xxS1D56JtI zN9S~{0(LKymzO)y!P0g~*mbSgQg%uOT?adFB;}iQ-h4e#b0h`=YYR=K?@7W3d|4Co z@17Qa6UUOFO{Bi?0LT6(03#z(y1H3wn0~fPz05WagbiGB+K~t5Jsi3dwd(V-){RWK zO6p=JHILUjy95e0Ur^dmipFu=%k&-Q)-%R#4Iy`o@*2MRC%lhFdyufkAIr1bdVUiP zbM)TL*^y>w+)cgx*x8X%THe=6SZx;t_I*qas91hvPDqjq z@SX%!ldkHPON%+3#pE};TB>Uw(Bl&NmD}aaXh%{ZilUPg2-vm~a_vK6-G0>Zc{ds^ zKUuq*ZP#{ehsfwoHiA|$4c9R@FOuw_*7;TFA>{V!P*LXXha3@cuUA-0qJ8F_P$BY$ zeN7!?{Q2?}sU!XLi0PLxwSh`KPb@lFUFGT2D;4V!FEBG10mW{k(CH?_kS3`NwJMxEg?p#>oXicmVKr!Cgu_m1 zxD2hDcr1Hz=pu8x?G@K}UMW|^w2JlU(&5t(TaE}FaXQUZCp-DEi!q70wUg4pl=#vM{M*QGJJBGI(GR)9!f}-uEZ~ zym&y(gmM1-E>DJKL@)DlX`$>O*H!zS%Brd=&W+7YH@NU=)h!Yu;L@SyJa%1Q(Ih1iG61V13iMU*=LeY$?ie2^A^gLp-iWj}UlM50LlK2JQH6B5%#T2V zcTQ$QDbSZs*zA3P7;O_x-1!KVlWXn!haJf2Peyh7pH_c_4%sKYo01(gGVth2tc)Nt zjJT1RY1~yXgDkJ2(7Ly&jj(TE;7eL_=XdsKj1x0Dk9<#v*3ZPPz1Q(R@EL%MHG2(C zz*n^aj>AA*Au2F%K-(R`@nAg2Rx<8L+I}1BXEk2cUheSGh(XVE=22 z^`|turRTX|UP(x*(eX>2ow*3)caytIc^3PL!LQEgxYJH|`0Ka_>-M!#9OmIvOwX z7b_48P9)F#>vFu~^zof<B-3#ZoZpi zq!qEDU#dTORB{GRgG^6KO>N?N_0d|V{e2?tiXWH5$NCAio~Dd|b0fcGhm)pl@96qW zYF6Z9K8ojNIOKo(oM@-Ck@BDNg6B(y!@6P$-0XHQc)3IBALBPj%;*XE@J)CtE~!xH z>V0j*QyMm&7HjnO-lvh0=unnrhYb_XlzmmHcR74iA@Rz}Qw#eV1o@7`g!7N5T&{*P z)h)7iMsV#n!-BboYCI|pT<{}~h94i!Cjl6o+{*d2n-8eb^Tec@bce~|CES`9M_iw@ zkKC{`+D|+@JhY|0cI_JJ&3mHSMW^Xg#F;YOM>x6eJPPICA%_R&sAb{y?`BOTqG}MV zMGs#?sHve>X{l-EiQ#LsHXM@kP|rm7jhD#ZoshbH&su2hcJ8aqSE8!w5zkQmA*2UM zuYiq8da!1@f>L8^ju+Y#X;cb7A6rryrjzKq<9u@49?{!dg#A5&K?%{l6xwAk1vQBwsA+z2p#U(|na9K5b z;f}V(POw*>epog9lKAhSkYS+q?%cg(Bb8XEB~_XW}U3`2XWtP7-tVBOpLf_HUSo$uyOa1&LviO-Q2N7 zI2YFf$Br(eqS!XE&c;z<-Iv`q@kefELSeijg3MUU6o7K8=k0wav zUap)jgLR0dGe!H+VGeQ~^+~nx6$AY>^tmdE-+PQLf>e;2MwCAh%b2&Oyyx80S%_SM zU8hXN^4mp)bMqVI5u(`JV@{}OIHYF=!fMy$JK|!8#rTWb2ix=XSZl|X;}{K&p%hsC zB^a(703IFBhCQ-TLlVWw#U7XlkN|q?nbRZ-*NH$kiKwesH%F#Xs=bYe9v0C@3f@qW!76114*a`$Z1R%xbfi>p&w%_Y>Ax1~Al-@ZK_ z{4N)!fU2gfCGf&$^As2VJ87W~vhOQJRn?*eca;eIaq=W}8bVam+ei|nHT~^6^F*(i zuzN(B>SlGv)o#lo1}~L|pp>K|&Ob_iO&QOh+$R#qts!D1tGUckkq|RHFtsF|$s{9} zL0lUFM$Mmvm3184F15wv7t^B!m%r;Zy+bq6iZ-XuA14mqJ zJmeX3>8Eb^V+2#x-NL_$$wuRE5Dl5{OAy5T6bR+l7;SPmow&tBPlZX<*rk2^2mMjDhy*Q?mRe9>1^L)AWmrn5 ze$MNtV*`SQ=Y51Lru5B5=!rS=zVfHna>RS+d^>n9k~=Khg-s1#*UWIbTcX^jOrsDq z{7fuo*#X8LUmZAy0I7zL=|ahf2JLx|^&9ZoneDQQis2d?Abnly-{n3l&W%&O;GB?5O^e^t)j8UflHSJ5WE4Jp^}#bd z$Dk0@pKBcL)yHHARR_t>#SFJf3cJU(?s-l+bJ6y7_)Aem3@WWJ^S>pmZ#<@H@D~{; zi8XYkTM)4}e|op!$6{{{fr9b2?eXPaUdY9n`^vujx;k&}l>Fiuy;p)$B_=Uu3v?9K zjidBY@-7PvwS1m-q(X0_JCrfg)_7VRBn7VJAYGJx9No{|%;1x2ABvGWqRgD-elk`l z`~%8gD(?rdfnmMg>dMRVOkgwopH}&5v>aE*4Yt4kX-tOp)0oIpBMa(9{QtSxU-Ye2 zX!)Ce8S($wCIR-ogyEjcn^h1k-GuRO;GcfBcz4s-@y{99F^B|SDg+I$si$fD9>O&lQLi+X9 z?Cl~trQ%23&8_e_=V+Wdok(RFm9rr<&y4pio!*YvQ2OTd%UmzqE3f)NVWEqWosyR` z4u;JYhgZ_rLz{X~$>Hl68gvHt?(_q!o56@$W)96Se#fbb7W0u_qUI#DL9j1++~Z)U zZfU4+G6V1hIrFM|U=2y{#-dJo&t8Ky3v)gBynE)g+$ureszyO|e->U5UQ)SR2P-f#LH zLYH3ARDCX;2aSg6vjdVx=a%%UE|U$QUyjByf2t5#gpN%Z`st#_E=Hc`eV-q%?2|8c zv@F!C@iS0-=iPftyC5BZm+EVlTgb9dWvXTJkdh!N;hu#d{$ls&Kg2-6tDW+_dirj| z_P+Kd`$Jbv$gsoqf%fm_e%JMJu|=c;q+AUK(-7tra#GjEhy-L zeGgAgN;+#{X}PSz<^I+8O2JoY>Lfup+WZ+fX970DJCb`cZXWuE-ouQt_gnnB!Ftu$^-PGo!i+Hk1qKea_W_{|$VUCVr zE~zwZM|1ESG2v%CFP}Yo_TjZHQ{yRCxc(o?rZ9P=R#zyPcet8#LMZJe$-5K;8YO>x z2Ve=fmabYl zeCeJt%?@vCdM-n-`rKn<@9+vaU?-vcS;bRvYnidoZ2?dJc!5`sI=*mY4mD$Oo9N?? zk@Hj_AW*KFHLmk(7o8yB?*vS^oUUW=M>M=)OVTq>$fEM zPQJ-pZ(5g~R}!emRbHBz@piVhW?tm?D7d<2J3?&l%Y9hLPmGu!7IS&`bQf!rSi9+c)GwuyPeHz)mwFI??dB*`ddV z8%e?&`<%^B8@=khWsUbZu0Ht*@XY)u-wzdo( zT;VoJI7WjemK!`M=;Ao+U|H;2{3$5qLjB)-i{Qv?EH|fFf}^`Xo)H5_t2od|F> z3h;eg20;c$Yb*Nr`n%AZ*6Fy8oK^j`t&vXe!l+oirGQ+kIq~K`VK{%_y!14l^se`L zp?=kB*nO)+VTOUjO-;l}4xw>Rpi2$M6>JudQ~tAx`Us@YrnqbzlbwFt;+-^4Vruu* zt2(<2u}ISatI9L$#@5yxo9$nrBV>c(sr1w*OY#W225Ueq;!G;&YW{l9?CbqzB^mwZ zPF`w=GR5MRE+Qps)TR%NcVIs1X-<7_qhm69Q44y|7xU`&DcZREaVW~aR{)gXZBB!@ zDD87p5alb0E;SU*%?-|Nz$!UEb`DwIB_kF zl=5z?c)v;JJNF5g*MoEL+elItII|+l)IQbUwna0K0b}EN`c_FENr$lSdd`_)vFS#% zpx4tg^zFqld#S1NPWh0i{C24`hh95+EI!_NhTOG!NyADGiq$qrqt$_QZ)302#Y6_Sl1ovO_d7Vc5Pe^mP;q` zz%76*9YJ|*+z3TGRW-FOR#`=P6m`t+ulC7~=zW_OZgqWXZR_35#osKo(3jCmfVo)| zf$KQkw4^8h=9xG7yWeR)UNAsTx0o3pjhuLAlG8kRr1`4DwxQDi z>9IkG1WXe^K4XJks}%i0vfu_oWWBub*fXKhnz3#1ZAI zTnxrj%egICrBBmOB?razBt#)-KfR9^z)CLNr|xF#HuZ)g?psl-4@ALw+1c685x`WKCws74)9d-76M1*m7`1034n2F7c>7YGfBP(D(>}b@D6&%}va?HGS+e5DEBr_qHs~kQT7c`GUiPn` zO;z)7JQk;`;NB7$mY7joP6-p|RTKB*uvnyS*0`G*{IEI6L+ug_kld)pU9k*hQ=t+| z^^d9&ve0k#rLKSUU_Z<$c_ubS^CZJV{&UnlO}+AXQMrs&Qt397`!N&X6%{r^Jl*qv z*nk;{-k)AO@!w@DpJXFMumI00c&Swvh#B3I=RcXaQy64OVPEqt%DRe$B!B4DooJ5_s z{36G}<$MyA>5?Yr8VinEY88)cTn>q`^W zbWR-!B$mhbDX5Q^(0rRfaXML@w-ByvClNbawuUJGvF*QjWdb&+;jUAqIH#G<3uB+1 zk9nK5dfkL{_sKt|roqu^@IA+7=QwxCJ@dYqWx@d=p60gTv|?3ZMr9xSVnM{}18LV0 z$t%+8I-uG>tuS@uv7m#{wV{#{9k}sE8i3<&|LF351#?$?1E)i|$TwN@#H~%4dg+a_ zH!0k;v7hvTKqyBs72CxcRW`O7_S4kpoV*l_S?u>1rZoMyVZFOBz<>=Sva$P4%iB`c z;Y<0ym(nk-`4WU)4zURRv(TZHJy_^7T-{BfsZ01^oxhIT=Gqj?_0sY;_5WijkPsp+ zmCb#Fi*GNF?6w0iH5rXm8oVnL2#S5b$=tk(J0t1Qov>5b-dE${Cc53HJ~Urh*HkvjqDtk2NoKy()Tp#d@iG_dxqt&#}L2$aQdi`r#ZGO|%%2RxCi=#Nm|Fa$n9i_(-7O)3X zcuh*JWSk%6wm!LzDJ0i$5WUVCzjp_*S1bXYoKmR+yQg&jA;BBtiJHElTYJCv>{tEa z%jcrYMPM|kan4j4)bWH=3@Y;0wnlETQxZm0BU6)QFNco4e%myrHF|qiv3!n%@1*1a zdIZmV*s-CRu_WMq-fcI?a==9AWaR+4RqE*@CNgn8qHAAJqe$YHp@Pz4OF8Ze$vZWa zza_{6Pbd>>uVDRRn{`k$)n<`f|7@sZzF0YTOG{qbmyYjueK|Ii-w!1ou>xeB0@7@~ zAk|~ch0ks`o1-`jT~}cy`=dRKT!2He(UBJ|Io|wx?`gZ7x2P~{5`)$aa-$A;H}Hl%vw4}6vQ?CL*@DBhn`s;?9cTX;p7=PoovLv>M7VVBrR-M zCDrV#)UUV>QBz8Y(3MJx$h$p9em@@A6O-RxOfC$2KL7UPq6#&utAYBdp=XI*)3V7- zyrI4vwNa>&9HuPpCX%ulRo*rw!&VW(UP^0GyJR0uqbD-I5oy;i_QO<$*t1vE@UdxI zzM{+#pV@wi{9!2i;nH{G5dabT4S+)u?t5)Ue)aXz2geulx?H3l!LR5Yc!b)F#LqtB zmSmow^K}Y5ZowR5>kO;k8K|nM^=SUpW`FZfZ)ctH_{}E+^KEXf!hJ)I**zya*nUp8 z4*x1$e!w|6+Z)e0cwh{`DvtUPyi@Po<7zKo1_rp>Rp)mS;&)%+OMTr!4Bp7;hds|^ zvUUMPz&?xO(IEEgx86G@bopmgZ3L*}8a;9?IHv1Xop^LvRDaEAAYi|WksIq~#;Z#N zr^emik96K69@G~m(>k7!K{#W*`L^l#(aS1Nb5aaWPb!i z2P6YjAnj4)h_=;&uo)gPGu(X<5j3o~2MKNXJ#lg@lC59f!}I0A3r0d}#ct2R#?=BH zZ)*LY=SZxgc6zAceBG(#ESsr4Lm3-W5ig>xNQ&(W>Xe zqo`nQMTPiarE{K#(&M$lnws&@J9QI)$nOURU(`J1(-fjBAYajsdIt0uidpi|TgU#} zzdSC-3lyus*ks~_K({2|AVDg~tz9Jnwm(1CSgk_$7vZ=5UmLeSu0cka`f+e^P|d9^ zq^Q)9|uj#0jjq_;|61Px~J(f-Q?}>yg-UF%W+zo_h7ZY;B*RyWcj?#D{v;PgU zMA%XIi6nl0w6oh>SFd;TJyEsftHi`LCG9egg%T0}rU3gH_N+pK!@C(cX`PMg#2>k> z8E=relEnlqgy=`x728Pb1qYpjjVC%TCvWiF;;*+MaB{aH0tIE1e;L{OXg59~F>vps zw%iE;BV4RWwW0r_XmNJ*CGbUb-CbflxZbWO$?7Vh3FBh9Ckq3Fyn2k&89A#mRn|#s3mQFx{Xsx^D&@LOH~kJJq)_gF3vD6IT;U zwV$&bsrf(4VjlBW*qCI6{kWq)I@|xEX6!K9ShOQ+-aU4hfBa31_E3UNr;-)zD)`Jw zMFh(#9PB(gJMp4(?C|>%H`-9Pu1b=0=R zf$NU#VzndooHot8z;&tiHYWHsUXgKb)kbR-cu`nlcx>#!6QJzmlEmRYcT)z!uI<^j z%H^D4?@K^-w7>1m3tNYub~I<(qt74gEL-kJJ^FC;TQ9Rrn)=1hQt@B6AH|clS~B_< z?Ji)Mh5WcE>^NUN^DW7AaEeZL7?D0W8Y}}EHyJPLK7$=ss3hWW-}g=_eP1!JjCD`T zostZ%{brV!G-Ywf=aH&+f!-SywwYh;G9dR~IUE%+MA~#@)MQo-rc#Eav^F*=IWT}` zepW;~L7uNDR_A>HTFR1A+4Z|EfOxni4%<#$~wX7@r3XM4=C-LX;|12*qo%U_Aw?O|7M+-XH0HSWp zUpv878kBGqoA%43h6dg>rt|p2L47$QJZrc#QVI{q<>%Tvwa?2l$IjNav+rF=`9{FlfcY6?5 z%a5Esfsyt~*;O032gux4^1bg77EP${Sw<#Rp+&t)m6+B1TqXh~hVcakUP7ETA)oQG z2^lM^J!_jD9daVawKz9tEr%RMzkZc^l8f~?}Kd8 z>U>}{b-``5m)js76i%O2ypAd})dXS{$skR&Qui-yYic4Fy>*cr`DxJoJ@g>(fqrhs z(6>C2k3BS8bP5#QjhOch@#Oi!_8Y2k;=#{ZQpq*ejo$ddN2)5e!H0>;>B5rKW=fVE73$}v$-(9#-9(Zni9^l@t~ljYm#s<>@Rn; zNK>T~k!X@o-dwZU0_8^gqu7skqhyd3kwsXS{@G1!#}gS^#WU zeRejN`HvRGK4KN58CJ5+FQ}KVk;W^w?Pwbw>NUi*J+L@u? z%GIO%Gv`Tou2?CsJ>OzXDHPD8}I z=n>w2ms1HV6)v}y*tv7$vRd}&byZo~p-nC9NSR_6vHTa3{_cf;ko4}xpz_}=RLBWm zg_j?PiAr@)4&NTOurvByP6WR*U6WK_>LElmw&m4olh)AQHF~MdbB}QFUI_(Yr;}|< zIM*}U9kN9?;LMEeRwtC+XyT;*(M=|rp3*OGzp1ZMlWA7@_=R?_SM@-CaQFIDY6Q~TkxHdNn@ zOLECZLEAl`-Z21WtyBx&B}pN^0+%DY58TX6)D8jvpqPhn_WtrF z-{wZ%;K*7+B->}E&^F~Ar(#J*%7qv;5q|Rfjo5Y77?CqgRPpE4c@FQj?+uRu##n-n zQr-#84)=57kYdM-XeCxqsOEf#QHnJ_D3eDneKKk&vd>ipU0pHaiOx)3Nvr24JFBwy zqykM%3^FtiKj01(fLux&hF%kacYyhuUoife-|DOlm1aje5{dkJt71A!GZ>~w(_AB$ z=VwQOD*)?n-EqM0*)Gl2$4axKe_hvJS|o4Q?9yy*sDvHq3tb2I{(YUf;Y+s)F%f)R z5YA)WT%PT^0Q^8{R&O}D(6nj_#DGm}i{{f90A7O?E@1rQJ%-1iLO(G+{>bn3@U0>U zguPj0JHz&@i7RC%LnmV=i?tNU34R}LcKPF(v9cjI2x3KSm5&5Wde6TpxZ+Li+I^0s z=u=6-Z|UI_O70ynA&6;Jxh&!~O3e|kr0}Vwq++OSJB4z%t(Zv$9X^_;(TCRPVdEiS z=xwYmFUcuqF4d0g9C(~+ry;>M?~YGm zoen*ykM*#Fvv%tS)U$1iEW~wP#g^!LI@>CsRz6VrJ6NFeJ(#u(p$&AO1k|sxzccuP zwjAQI&QP*^R$(1=6vQwtq1*v5ZLWAViv;I!*LW1qWUZ|+zCOR~_4j;>7Q)1x6@u6# zLEV#L6@2!(P&K~$;V8|9lCs0e6Cp6;N5c6zDietcYu|8Y!<;TGAtb@hZ|w&t<4%ln z;dLgW?hXA3ky*xVWr0XchE!d4*Vu)~vCb>lRKuN}NvDMpDVs?>6d$CDI(T)PAF;g` z3*F00^i}%a_SNE-N%};71K#p+s!RZb;v>$F)!d}6k1;dy8A_}sYH}1s)!h6VH%kY1 zd-05J&yYz_A&x15){-hd;`xB0PtgG8(Lsm5!0eCAw3Ca4l1Gl|KPBp5i<1Xh$DiDy z2U7WW#0us^QcRa72vlP@cRW`Gpm?daQQMO~D z5CeFrG*L`cglBh|jn8$7)_dL*%)F(`K^CzM!E~CT&@2CaCdiv+4F|sqr8~V3{6Q>^ zZg}=07yjKzV2*pg4CKS)@WhwW5^IwOVCri+PTjb{1Gph1kk@q$=4tU4cSr5XtH3K} zkT2V)E5AzLhI1gh&%q^-YeH%{=>-;okma1Z1Ey( zzowWC=*R3>QuZ@9Ocq&husykFK!0sa76gy4Nb7w*Qzc&i3W#^a{?1|X|Oxl(gr zGdEJY`pJ^JI_(pI{YDIz^_m2?}PJ3JdzSp#U3E3bAPv$$bMGDv!9XtG{{y1!TGO`v4kG#@ZQqh7NHdm8_bV zM7-^J$%h9h)7?Y=)GEfYJurg(BYWr!5POXdI3yWMfU? zuAyF8~FZ>V+TGk0am-NU?~F1hCCN0OUHStsj&BOiEX?{~yRExY4}vjw>~pQ-pnz?th3Kw2oSvOs9H8;xoASHPY2`ILi@)|W za>|c^m+ODs*^*e2@U9!VYrUOjF&}!;h2T6*Ae{#f)2KfTq&ANQE&Nw0!sUtyskL`X{ z4UG#x%1h1w9v?(%{_ys4l<=0b<;OUh=RWcW^t0yQk)BcjG@1(rj0t>z@%|r)E5Col z+=9cNW|=j=&6+MWNl2u@rV8l@3O;PFbsu3o9-yK~T8k5GU109RV`(pL+LqA?*B(oy zj}%am)ya8&QM?~M5TT|r?PZr$Tj)}dkK(a3Kr%9SO0KsyKn3~0um~!)o)3y=+ud_ z5)K8p%C^rU?3YWSokFE`qfqDis=V>Bjcuyi>uzA&N(g~XN$R+?okz}vLK?!|VCNJd z`vlpCD2VY`fM-KV!8%edF3O_R*8hBQ@tbshpzb0=7T{RsylpWUg!Z8^^xB))KdX4t z-4$T&%lhtTfu{abdU8^Xiw=thYi^b&MQyD=>KB-)hbjQE;|mu&)>{6uUryEz-e4Cf zg&?np=ie6l-)GXB8?mtww%uhwxD9X5f1lg

HnCds7IC{JEDZVwOg>>VH^tlIvbe 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

)dVgT)7KQ2 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

~*OxDB*zz(60m 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 O)2g1XelF{r5}E))?&X#M literal 0 HcmV?d00001 diff --git a/assets/omniscrapergraph.png b/assets/omniscrapergraph.png new file mode 100644 index 0000000000000000000000000000000000000000..e142603996036ebef66033463d5ae934a4efcfb7 GIT binary patch literal 73949 zcmeFZi#yZ(A3r|1@7vwoLFF!;aCbllStMuEeMfRG$HYt_mPTUaFw)Yph{r-XP`?|WY_v`RHKAwlyYek>4GTHRY z?q5J4&?eKfMm8YO#ugB0UDeM&0iQVkk>U*ekO;6b`2$2~-OB|2_`&OU%ilqu=kXhs zFZ~Goz5e=HrvMO0y-xH`;*iJ1UJyu#H#Pd*?xySHN^prvBT6B3S|Q;N>pe%y_^xkz z4LOXMzeAo^S#LA_d;eh@jmSgWM(VbJBwq6+hH5JA4ApI^tJ_$;uyfsSKX3f`#Buj& zxtSKZnHsYDOdx`Ry_VU%Xpi(nB7>0&44K(jiRt_g1x-ywy17}Ml~&>(bvcKjX&`GHVKZnfpzGLDt%An%qg68fY^#j^kL->ksU8&211tr;$sTw4tI zdGz@1*v${h{L-`Pmp*EP<%H}54NH_^;fnBsxkRMX@b7ch^|wcU9~RbzFAtXMPNn-# z?-8QK7I3ShE(@zSe{vocra|yy74=KXA&sEPN3*9EF~iFX{?w*YaJ(?AZILWCscy&4 z*fW?1Y}%~QLV+-=H!KtsR%e5V%`XFlZ2t&UUmMP_)vG}#cv&d%-?T_MfY??AM!;~j zTl(NmVY?y4e6!n$SiM=lSUt8$eI?HgEcM@TP>}0IufIF@JP^Op)8)OLh?d?q#yboY|RZm3pk zRQ*y-^{?wvWA&O(*XvwP-xFZCPHfoD>^ASfUTxe?M*JN0=f#G4>@fKOTi`#>h!7WI z$yQ)j)Nr=+)+JiC-JejcX<6ZwzJ0F8Tba^=5h$xIV33=lbU+u~DFsk~VKn+$>sP z>H7NBk=Q)~v;r)0VQ=*|@j;xc8oN<$>F6}fjgnu6e-awjFWsyaVe{8VgEmu8(3fL*vqBOvfki-tla@b*iW z`;PmCK8Y5mqss{Jwc>i=Qf^4)&%-~3up}+T9lP#sSct27X>a|eS!G}#RjNmv%}7hl z-LZr{jJ6Qwd*9t!b?ChesY=UlmR|?VdJLFNfa@Qn&h^RyO8utKPj4R+7j>Nj0F}7i zLI!LUf3V6u{2y@Wll9*$0tj=Q7IL`JcPH-i>4wUKI79K*&VVSPdaYS=2?^4c!q?;rbV?C#fZof%O)^5z8O<-(}DIA4*SfLf&Hwk2QMrO;Iz z7vKr85})jiSdD>xWB4O))F64}rUr3j1ib?$!x+H3|S~)zVnkZVDc>BmO5al6K?ia_1LY`;`S8z z4lr537#%y^!#4^&!ne>3uWO4hQ1TL3fDbI755DA7Gb^#&Eg2=g0B8kpD(e>W3l4tO z?0Cko_}s_=071bciYkRC2W9~zoeSS9{`zAYu=EPBG`Tv-6Irh(h>_YX&Nzst1z2i2 zrnIQ_X71nz{x_N)0O+0>!>bgk4KRx1gF_jTRo}c90PiJ-mxElXrQyTantd~S#J7HQ z1+X$5Fx-hS8z-0<-kZ1}o_~SNPwbA3Q(y=mVu&h~n=tfTovJutZcBi|_JzQk=N<&l zJ*@r)BrcH3GZeuHr?^>&VCklEu3?Fu_{JA%t20J%3`NzIJ&uA2sRePA0~K;7LZZ!u zz~XH7H}>P^NhLk1ev3yBHyNfah~p;cXkzD!5n#F9j?3T%9jzI0A%Gl|p81$gIM3N& z1P_j`%!GX7N+mboD05d973Yr!w{XQ5t!u(_kA>u$qwBd5OSf3xuzsvI9Yf-{13`sc zUwOz;JYa&3Vmd3bk*Xn$&HvOV8)(zNu~VPK&dL!*aLgXZd6o-UTqZ@97a0kdY879X zL5xD)4)Ir=tmZGPVHZzf#b1;_0I0rGJ>sc0OcKyumhSmKCn^^QEIEcS&4Y*U3yP%* z#N`~xHJ^aaQ8Cl?$@=>AZv^H8Se*PLOl_bRVdPyUM102!RpkSUU=-8WrBUhzO8iYp z5J1c4Y7V~2UvaRJD=x0O9z0idl?t=g=KuLdYxozzl=i|HPkcqUDQYODd|DBF>#&yU za$2S8zb|zcXXDW>s85m#c^T|yfOy+Jd6=oz5SM~R#=If+!moLaHc{1gmv(|bo z)F#jc-1si2?CMfI<`b@S+aBK-eoblQu6}a-6cYVBLKChBax=*E3V??9tY-VC!r=Yp zuIp@lT^6@j%8N#J!I_D=Hq_U*O*2j760?h~n;tK|FU_vq&Lxvne1<-ZB>IlUZW>;9 z0pD1Y-?DPpv$SPIeiUMi%Y-<}qE?9#BNOxQqK6ZsiEO2=NA;H_cu73l4hk!Q7Xah! zR;d5sW3Hz`Re#|HyN(K0X7Q?Y%KbWp_Ipt8sVA4I_IVk6tXl&#>m4vDOA*b)|s=%ootuO&NnHI?bTW2X@_1-7y=Uvj(ugg@A_D*U=mC+;7S znrfyA+n`FZn2U66iF-xt#39z@p^XS5RIX~R!m9mxgP(;pn!7c{Zcs>^5D6mknR*iW zoWeUJ)1Hg(GE?&6?0;~3?!l2 zfFh8^9$r}$N6<7K&9j7tE38JRkFFONzR0*%o4#sZ&X;6%e6U!DD4%MFS8c;@xWU_8 z_f|>2%6#VeWJca#$GgnckSZo2?!W52314?vL(M-=O#(xtuETV|GNVVCgCvVu?6X`1 zRgh`za<<`bYLMFIQ``FKcOM6)e>@1V@Z5Vfey^DeWYLS4g0N18CY+2WfcHVr2y)4 zQC&5~J$?_PD*)SrW}C*J$12{kcjkJ`de3ew=}p~1dtph^I!0P_E4`;wfYyx}km`;& zPtK1qJ|Ut5PT12KcLQ5kaVJ*z``s@SgY@w_K=^TW*wd=k1> zEWAo7Nl#%>rd9Y3Z1YGsZ^u-zs^!$nR-m5-JUa`-ly@}MLL1!tNJ;MuAB))r&-6$= zzKfP9Kn-Mfl1eR2`RR@`MLEMo=4r!zKI*gOzJ`Y_ZI)CKCyNKRB?jc_#WjYMBg#ng zdFDM4G8)hcO;bb{*M$Mak$l>TXgs3lG2M}LkVXqu@Yb#8ya++*AY_uUm|9AfX|InS znB9}vksWWuH)}|<$wgFY$p!E(+Ffzw`9|4a2zItM=UUG1qO~jLw?c}WtLM#NJ_$|1 zI%K8f(66d^Wd;wO0wAWv;NZw1dtYr?(%j^hGQf6mlM?aZrNuywnQ= zFKQBMTg&3vdF>4~U^7_5UYbE#M{Bzo1x{QpS4AW?UCSJIxl;Cl=;{DVw`^BSy2r|} zEH4(#iP%AN#&oOoH|TJXtGEZcdk6?em}U_Y)SY3ezq)Qu^?2_sw1n$*t082QaVg(449->uR!Zwhdk)0<%@66eYpeWl#R*X}S-Vq_WRiT3 zmEJP>a*8kixCikN5NA=dhhek!Y9NS2Bmse;c~m4@w*$tBKc`(Se7j$XrlPyp9Q3K3tf3r}vB<(UO#LdhikInG*cO>`nV&f8vyEeqp>ty=DHs zezFa3yuFYW-_ATz;G-EcATv>KiQ#EF1wzW4&Nv4@D=ZG&PCJ=q+*^pq3_=_z@PRUi z2Uaom_(3r|u!O1ZRom^;NBbRs5TU?{ycDdVqn!hR*L0SioK=!^!|ceRfKZm z8P8s&7c^bv;hY+Kuh#*KGO=b;+tL-~un~s(W-PiBrbRZd6TF zkfnK2gVP#&V=PLbXBiFieeFa|q zhYjNM;*eL`8@7nNv#wkWdz4f6b|oP#_D-tj*R=TOATmp<{<6Uz0CvCY-Ig<>kC55LmB7(YFmPasU$g!Y}6Ln-Sv zs4^;;nE@=l^Ul(j+AIQH*hbtUJv?O+AS0)F;Yd*?!7CmC8PZC?*kc_80w_{w7EccKoqfaoE);OIfVrU~~`3Qo*b@ zyYw&;bz&uqiA=M~&x_laZDbeG|3zUt#1*EYR&p4jtg>)S_fd|KjGNan^=M>5`W968#HKUu6!`>o%d!Xvah+&}V$_;_=!94QPWVypXfktk{^TlXS0X0XyE4lwk`e@6H^r=2>-E zAy>+L`^wuqU6Sv!4q57wy{l<2Ow*Feo$P8g+H|tf6QO=bbs|Ixj@;J_q*tSJqTfr- zlPo4xvE_Z3@e8TcD>vMGl#cXj0+>JX_CxmvJ&Y<{P0l$wFOF!+zj(&^7+XX(#^+oD zbvVBrPYLc`n2hLgDKu_yH|wErZkje^sOMKrYv&ZhdWiA!8H6%RGd??W>SVtak~E!# z;Nt`0noQsU)erLsq$HPxym0sx{zcv(b5Ln&o1C?28onsA-^_+uFLT}i&!l!Xj!ZDg z(B2yk%#$jJG7%LGnto{J1fKDCLR0znWWO{`M#<#xDkAPI6*F5!%Oekze$w=Wnkj1& zQ~Dk&)d4P?J$0~CRpvx)*@qQCfEA{V2ix~yPxl7lIz9E1bDI4vV_4Uk_Vdj>mFeY{ z1~CsBl8k$=>@wpAM%(w16IA)|vX{Tfown07YeacCG)DC7T`;n%MeNYQQ6V%>m!#<| z4Sd6|v^LF{a&Bo7r!grZBE<+g+tAHA}-P)_6e#}sVY_RDpwy8 zCqio;J>#UC75yVPxs`ST%uecSZ?9C{Ur?rsFa}tjSj66AT{FW>KyM&O*__Zb$nwTa zM2$t;Y^Ue;DH{G6sqc1AhPhpkD=Gc7owcpVCP2jBfm%ovBNA(5tUAY(({83bOH9%4 z_I%AKP)ZN(wq`B?64b&^c#KjfT=pMNviZ}4#Xw3BiP&s5R?Kyog$)oa{glW zGc&$fFUr_cgrR0%I%NL|E|N76HeIaR9c+U9u;76H)PltO#CfVs0_Jj&CMIsCh`)6b0@ZLbvnOj3|0E0xLIB43gPP3-Mo9C`7t@s|@ems8vox6!%*mSUQW zoJJzl&r=tAiMDpc!>DwVZM1%XD^&Lafl9o`@-~BscpBD1IPWjWQjH$$CuM+P`jncj4Z zsE>r7h%WUg9XX=x8Dt-7V6KEdGdfZFKAVcrj)LPE?TUcWOq8BQ&s=p%ET$jRohONO z=ab3dWlv3PTY2NNzIKXE&`askSFH#f<0Ce&N0mvI8Ga zyw5_I?KxjbQn|4?|C*f_RP(9dGg}TDb5Hb~HRH*J@}QwSY$&fklqaVLDuJxwY1a)$ zmm6Nl4tg;hER ziKp;Q?a;QQ$tq5Wb1GG^lXf0cJJa7>`ax|A@GGR}XhFqcgwZIgbX>;>+39J^qmzsb z(b21Hbc~uxcZYoro;E>Ev2K%ZOMx7e*EHiiCg7XU;>iI}?toT0%wXlI@*Ob8$jBq$ zHP|dsm}z>;(uscO)hg^Jz#Fq^#!6TbGkE^t%17syNGd%hnYt6|9RYc^p|L$z24){k z2RktaJ%D70mN{H(9&KOY2v@k;<0VSRe}-3`+IPem18J~@_aeK4O$S*CUwA?GRgn(C zhl!{gBHKfi)75z%b_CU!jME~W;L*>_zv`qnd+;53fy+=>?hoh58GuUkzp7+g?o!*Qqz zXPoI&50D3{qT+I?M4vE7yV;B^{_s@%c{!w0L(NeVnA6>0UVO>U1j_R+2F@7!k?=A~ zo(pt`K~!EVsVEDLNEl~;w~C&Js;1;DYjUAAxl9Vg!~C07L~aUV{>3k(pgvPsPEqMQ zYtv=6K5UUDAF>q0DE$b84w;{_R&x!NlyN8B#^8%^yE&VXC&Onyw4#Z2=EW8Tf`ldjRTI9pA>r?_ZCxfum6t zb%e49rY$IE+Rb!jY#2O@o4jqpyEt!}q%n1(C*sh53Qm2*_$jEUz2m2s1GBmTnt zO;v-OFW%vq?o)6=E})!je=wH2?Th>$&4x!e(LCD%Ld zljQsq7-}zyi*IDF0#xtW=b+mSgzMG%ag}aYT_*8=5Y5{nN3ZU%B)I-7>oYc}wg?BT zxS{l$HdGy6Nc2`Fw~NT3i^4T?SS)3vV3{~}QaSQH;ZH=oBMnPq51 z)>ntMKiDF1Hb4Rt8MG$n8<=_Q7FnSJ73md#1!F^%v;=01g zn<$it2(?9ynN~Q+W(0&GX`aCjTK(6pk#wxo-1&8Nyd#4pg-ZJ{UW0R z{L~3UFk7&_At%yHIa-ABd5n)y)QJ=u`hs~wn{F!_09}WIqdg6}|2g)VUOJv&UF;lK zgk*;4C&w|8JmZ+uF#9jsfiavyt(q;EJJ;MnLEIfsT;OOR(h?KVfQ_JIBN*6-1#E;= zMucoegmOlNRz`$LMucNVgqQq^D$2<;U>&s&1bX7MmX!VEA)JybI56OUY4LRtMSmsU zDsO<#V@pSH*xk8(7yECt*DU=Eayt>2vXj(g`T?p`USa>Q^CSAcdQa(iHWfh1joiJw zZF0`Gtokd=>@oYe*=V4CgX7(==rV8GE`^{J0o>YF=vz!BUS*wDT;L)(?=&;rp8@8V zsJcQdR+BkwkU@2i2Am#-fKp9z6PqljH(8q1`~And!++ruUn~F`f+gnEnb!81kL@$m z_L&Zx;G@jz!ODdc4U^wmwu3;I*I;euy&1U>OYWUP=T;aYgnD}3VJ3VugceK=LL%QO z29Fu6tGg1T^iykdfzswPd|$IhkG=%cLVRL)E*{7}ip*C->D|>(s`Vw5j+-+*Mo5h` zJSrSg;0rQ4nIXU2AI8yJGEN-(C0j=l zR0nQa1HM#fsUMn4I!)OKdvGj)Q#$QFL(0>gdC)tT0dlKKvbt+^82h%{xbZE^)GV%W zq*^xRB~S;U}&ze z0-PU4!jdASa1pZP2R~}Sr%$Dx27#7c)=aZ=TxzhI82YwYUZ!^AM8fHaB`;c)E7JAF zLW9WRSB>G0{ObCD1ig6`DMqJHj&tGEr}`2z1X;o`O-TcK3*W zO$7j+TV(_4B$zv%hawL@zaPB<)X{0w?DDB7b@|*?UiPBld#tDpT`BgVD)@#kX&Y&z z)|vFgGt*=F(ewd8YccatRQ|c%fM^jnKJtLidp__43LL?61H;@L zVQfowe*O8!3mAQ&TCSZ5Y9;lmP)_Q`6sTlRX5%e(>4V0K#sVct zjK#dmh>JNT_dn&dnc@L(b7JUNC^=xPyj9i0T-a2P8`X%i5A6Fz0BcE;eh+~Xq0l@! zVc6O!yTy!eWtK<{qZRNk?`iV~NDaG;^@bs+4T~ubK)$}9uxf6)1r@5$V{Cy8karUh z4x#qIjk{Fb%`jN9ZG z4Q|+O)^Jn7UGIfyFA4A?WwUtpDb?zHv|#~a|On)K>wBSC`1^|dJNQ%j|lE|j>}I{T=Qr(jd+$73ZyEH$fGr9&dVWeZa~e7mkzF0SK}w+MTtd&I=~nkznTe|klA3< zRQJEfc7y5&U!mcCI1h!n1Ab{X_fG@vB9>E@b|V&as+7=J0pIpdCVx89gBrvwT59mgPh&1)6hTP$M9%^~` z{Eg-FJuY+t>Upf{RC@ywr-_QduY~hnj^UekUM)1&J7c<%KjHsqK9M>hDvKaJt9Cc< z*yDo>rSvNVK5Js@+q8Rg8`N}l}?Ol%H?$D09~ADD$%?5 zCsSKJ4ZIQEM<*??sEk28+pkDhI${XU7bN(o9mP6pbW+Kf$HxYfjN>X|2`kT3^N(dl zs67jRlCiUWjp z5HDaPw^)0zO6YBMsyDk*3RL3r6-_*5Zg%SoH5U;>=!KL*LJe!$We;eJY2t~j=s!Je>oyQ%wcsnyu|{u~3|wRYqBVI$oP zAW1LpXY5C1z5U4hbWjoH-xhFoG;Lmsna1qF8zC(ch)1^q8cfh+UL9E4bQnLZwVHw< z;m*Wvub!NVlNYZHy4c?hZxMO;{pY};_^A|5l~6 z$F5eD%{qpd@XU$H%kcF2!o;2)6u}4+z0z!jd2X2Wy!^vo>!CgP!l#B+wq^}}t4aFA zQ%<9)CaTQ>!$;a#|4XaW=mp?#;)zSD%;#FI=?#pH<)*2Le~&4F>WFK7+EWy&d48@T z=gw!meOfr9(2n zMxqh7_^9GtqIXW&80V$l8A&cr3>1UVnoGL8x(?9?xe^<=95^GlIgG4KMmlqN(%u1vSMSe**`9xztiX zXfbg#RR@Dw^V0Q*n)~xUy$npZYqNYXwAjSXaZSC2tLhDh6HcX`*wUi-7^7jbuf-k| ziC8-`h?M_gp!s8?pS5NR&nz&^K#{IV7Ok#V%#`C=ZEv{7So{LUhWCEWhu5U{ELhI{ z0Qa47@6G)*nW?Oq@?C~NRsYb_YOgh-kBBu-BGO9eZ%;;`VWbLtl%cIp6N|^bU%#`^=Ls6v?Xag7ZRjzNw zPt~3^Q?{;nJ~?ddo@*IK2xzk?eZcP>sqQ8EN2^XH$7NC2F7?O@LFjZ#y4rS{Jw|f{ zo#N1+gJkx=GD$3IuroMoDyR2p%T1N3EP&pWa>vG%Y|9-rqSCB88zu53dHCkvH7eX( zsp&t0y3VZS=;N=X25$VmXmiz7FdyS6BGuDO<|lr7V1JUQ#rq6mfhjM)1xUV2@8#8! zfS&PM{mZLqGl%uF0w(ttRH?>HgGErBF1igj zG5ZYcvb|Leu#sR15Ycii67AqH7ogi}AEaUwP<)b$B&g&F{2#Z}_uUOfRAx4B2iDE` z@&Irwtj|`;$|=UH=5V`(l_Ft*{-zJGCZkD4;w3K$>xVe%FAmZabg0~QAA-j zl+~kzFZQWzT2+y&A#eW0kjrhroOXiT($aAhkfsg z(Rd}-wW-bEiRzAO;Ny~*T0X5XMz%G(awFVI5_IkMT5JmBP?fPeYQwMIw|)#5ZBVlD ziBktjQvcrB39?W1+0yd6cT;ml;6>F$h$FlB~;ZqMKz^)6TG$>gkCe zlN7=ydR%scG;P=H?-v(Q;dc*apcLL_hXKp`I{_4dN~%;+CHAj!+5*f!WsjP@Xa1&g zJu+mZSU&7J0oeQN)sSCr_CEz;a0=_jV%oxJf@r&zZ+6%Jt;P7>*rAS5Zd68!`MSEX zwRYPn^Fh72)X$?fP}jvS+k&>0O5n>Gb#Z0hKixB0h!owZ0Tz=!8?cp{e#e{e2b7vF z1?n>#y9%w8ej_pI~cMrj> zegIwjbIrPch*-u>yvCe4FKWyN90o>;o=7f$FPW8_&c_L=CT<)C?Ie61?>cv99{kXX z*KJw3cHzH{m#wq0t?%w3!P!HgwBOb|?nE5_)uy55%tOVYJf_%SeC5Wry-|lm4Q+t* zyNADycjcDPgX81)PcbH6$N<${2mD_&xHvr3aK|roC2R51t;th%S{k;^IHXY~+(PZ& z;m7sCA+O;>E>VZzgdac~?bjSJCtPqFa~FIsb9qsZK5FytXwaL7V;V*Qa+%@Nw=p8^ zd_4?#JU1DI{k8VD)E2fp>c-bA)5rBG=nsd7(xbZdfwpSEdeF{{HL-XArzeWxI=_zQ z6~nORfW@yq8!6{uWTkXApuQB~On$BGI~BC(JpUK??v;S|;FY2tbi*x?3RfSuo7BF$ zrz3PS_{Y;Uyw-``RdQb#G%S#355{ePZEP9C7VCmBYuDFz5`t@3)z_!rT%)E(YXk$c zzPh5jpt|8z1N*xDFZsLv1Y!rW;5uYpBk z0YEF~n;)?jX35-G`zlUkOX3*BC}97UM8LS}&aK7jF1P}UVLY_qNq04H62}05>dTX+ z+=99{X7oX+1rLgRx&|>N?E{N_Wv^vVl`Zkfl}ca5+@%knKCPjAS@ZuSKom=*&K#qx_$Xj#ZAfE`YM*P&1iP5Xzkkh_257M6=7t{0?oRdFPQ}gzO1ux z?TSMr7TI-_vI(~QVJz1KiZfpm_%(ut)c({xfZ}rj<6DERy4KKkHsu%5=sUQ9r2qfX zw00|L(dZ9}zAcJtYil~DN^Wh5eQcR(3pm&sZo7Hae14uQl3>7)PKB82Cte3k|IGNF z$qeNCXpu-#tdLo#c?s*)V2Y4Xl-&YpsuYyitFmW>!Q&b z+IH<|>$`Udbo_@kgbH%tyjEUA);c0!MMe_hCX^`)Ils0v(O5%k|1aW3v%Ti?|6}?8 zY5A*R6W@rMVpDqjdDb|&ioknSL3mcXf-fuphc8lZhs;b+3?En2j!&{^6z#0gced8W z83GgKy&n#sr@C&F4XuROWoKS!&vXmLa6+NUip3ja6zg9=_fSH-`hu>LkN;Z6-p~5K z`AvzAZ_Uzxs0C9TF<&!LSd5yRV*!2EC!s)r;6TwGdCR&)4!2kg8}elQ4dXd+fiUnq zbgGO}B*IBnA?{^0k9nRRAI~PT9;HpUm~1ZG%5D3q(w{c&6zd}*-cG*EE?C179(h=9fnntqv+GFN8ZPPOm zEg@2d(*~nJH*x8cNuA;Bt1!XSnH(V&xSx+Gg&s+4%F$KgTC%M9X8a!_?PrT5-DLax zdr`F7GQVO`9=aJ4Pko!)c;bjbnauz%vrHP&;5ysUE)D6mkzev@kPjcg3$1{~3=j)r z3>;V5QyGb3vmND&45yT*z*DlI9uljxO3+5}f(g1jrEuUx9K}Y-FxWBz64s^p#i3Q)xq{LWW82W(k7dnVCRoXBb_-`)$bi|g= z0EaXktdiO1;a9>fm|a#13d1iP2e9$GK|SnMK_D5oSU~i(YfwPBb7Lv4PI9yJ8w#}` z3q`jR)8uD?lMzN+DZ2!wlM_1s#!7e5@xI|QaYG?_X>vPl){yj+1Y|P>dJ78gO*Yr5 zR!*~KDPGD0HYnj9x*d*RhhIIy<5HC~91MmQIv3d8!vg*+Ek*%-mFrlnUBTnDdIaA=ClFSRYzZA?wrJ6voXxhL`n%`Aiw%L>xy9cb2xo|} zB2|zWUz5*Eqqv+$eFlTI7wNa?I!-TrsA{?H){MVf6|uIuTAy3%{oUc4zha}8Gk-_vyu$tO(Bae`EhyUh#e%Yy18ng#o|cw@ z?zAF*K);@u(phX?qM*mAS7+k=ihQeE%|jv)pPUxhH#;S+RhZBBpI_CzLPYOhH1mw> z7r7-ch*G%xwJ`blX2U%=VZK!Fz85A}WkGj`#`erSvsz|a(q!Xb7KJu%XeEfsgQ1#m z*@PWG;|)jt7Cbr4d$XAibKknDPN|Yl;7ixS`0ruR3kHmb%6~0{G9Pth!U07rfV;=ywcAb%+cdE@#B{#-FmY%%@D~wDlgyX!1Clmec{s$J&J9gCyOMq6&lMgR5Ttv~H^*j@Cf& z0;LU2+WH#YERI;RwUVA;Q2lK5a_6n4Hp`rceNRqZx$Q!q3yM`E>j(~?JbVfLa4BSH z*vg>mZvHWeo$?gYyJ07(YOayu;4hzd!0;6gIy>7_{66P7uRd> z0!`Y?3@z!+glzjR)w#8SQj^8wL9US)I)C>@k6 z4{ql!*ctMAeF}rg^VO_q>3Mc{DZ6V>w>Gq)xivqI*F&S7bnHtmUI#+;@`v{nk|X+; zXj$mtm!Bh4-n`F>81A}_+fQPQ?_npqI~uL*`!17vJ^gakFtL8XEF z1pH|^du7374$FO}Ixm!9eahK6V@X-rL1DRhLxDT``so+KdC4UfsN`OtH43CeWY^#-nfo&%yclp%- zt68C{h%`*(&(YRBc~-uYqdZtc2<4ko*3UdIbqbk?q2!AKY(d!ceCv%gV>;w}@y(Ma zGgoLBNT?Hc*-%fhdR{#}+b4-&Pr3ps5AObJ*sI?}e?oH~;GZ!%h?!%wsDYs0fqOlJ zG6P4wR6$ zrb8z&LrT!Hz$xmxHU2Q< zKNR04$8Bz5(9l-`R*Z>@gTYLj;PI=R(G>KJ%iR10R~IaLY-;K1y5m!eS$;*XpW?Zb zMpWgIl~2y}v7;2?Jp%H3ADQwW*i~VVTb_t1^je;c9(wVp#gufHc`?W5mpV#FC&F5P z0+c$nG#g6`a}ACV-C@_Pj&Hg$VlA9_POE|ixFY+c{oXt7a0_#}**Zn@k|t;Ca)v}? zG4h4%JF9l6%TID<(|+tiC@X{otX8};DW&}(z2>d?^MaB3KAEn-wv%z+fp5uDtNv0a zD=P|WXD})~f0uqiQ;V6JLjyH`&B*BMa;A;U6q`C zRH#}t@#)Wx%0lUx--31Gh5ZIn!Y&HX)T0>Ow%iUK{623;o46k{QzW_uR~RL{-)PsH z5g6P4!iroX(WRJytdgPVy3w&j#+WGoJ^)x$(CCjqLV{dw6WmZM385~qA|SokYOb-D zqbxSqq?QNjMQ9Wh%%F!;fort}2Gz<A%tp9 zE9=AzIXjek8>j%F=AP0eiKN7px{{&A9N3H;;J+&&?_0B1*v75Q!2?{Rxi*j3E#g zx_q@GPO}%Yu7H4xE&9^*uezjp0pE!E{cb`q4m=38XCj!CLGza9ikYPXhc{49yG3;MWZxV zw)c$hZkitJFE%LF?T0D-M7-mLH3HImVw-h5sWx;apmpO+SZSK63>D3(ppVI~D~a&J z-SFW8N9Bc^mqr(B6{}Lnq3CQTmos<7M& zee=E5ya}304whRkEVJgnk$F9#oWQ$Fw%B-0ouZo}3s{Wvq~65*s%7%pg`wAOk`wz| z-$X1uX07=3IAQ}>&ng>0MFS&=A2X2m$Rx0T2Io@^%}bQAjRMybT_sC&rhCwJ3R4eV z=jJh3+kT*4sq|8_YkLv%o!K0B5n-9M;6?X1Df)vFH@U+Lq#5mnO?nIH#;#&86voxU z)ntZFi$b>F{`L?ck1wd@MK>3w`Mp$L_$`ul7L6QKernoVz1)~-j=$* zLpn|AKwwE56XBX*&e$tzLE~Xg^=ze=y&<1J5n#RULI%6_3NQWk11!H{j0!6O+B=Zxq_zTf`1=ztCh z9IgFDKb!4igEK>IaQhi>m|cK%-W})2_~sArF5^@WtSF*bA6BhzXWc)m&VMi1W#>SE z5oyezSdZKjJU>;5ktm{Phynt?=)`M&@_Y5U`?(p@?SDuqk*vOtQ=Ky}6$Z}L@OHWO zHQz|!Ik4P86C+N_%@4ffjvoZBAF^0LnXFR{i&jYx9Wil%yWGiPyH5qLW*tC1e&uHI zRwoT`7;rt>I$r(K&I`D(nM$(mT)U&4^$K9<{G|8l?6-r1wx}g{j6HwmGyLi4Ezqp* z{bM44VzA%{6LPlGYz1z9HxWiWGnRXPF&?%8B|RdH=8;l7p_@ z#BF0Lk~w9oK?90ff>tslfd9$DUQ``>0-XmPwc3VzoFwJtfeaw?r~ytms@A`$yNb6y zAgFUz{dvZ6f8hrhd3u?(4p&PIYJ2g03SJ_QasBkJrU;Tx!PiQa{E~qzjRQ<`;yO?y z*!hLc>I|VwJ$8k(vs(+SAoF8=k`iN8b3jHRx-oszdaILz#m=7`;Dd`1Y>wd^Qys`v z4Ceyo4_A!IH|ZMD6~DIxmYgtaPXS$@{or%xJr%wD89e0Y5+L%GwgTH0a%v6~fB6Cc z{~;h(;Bd$e#W!~x&G`A;Ot!mk!N6x(ufGF$(M9{CmZ_A2)h~vzj!rij$b3@Z_kvwLw>>X1uwGm-pkWMy zoL&gyBrCnvag+@vG8R7>46T@W{2T)K5Bjr#VxcTF{(G}1^lv~c*!!W{x`$3~adNc5 zRr`=(4w5UMixT(MmuU_w6utr!wc>ZAU>l58YgU?|wbi_>x zFp;V(-yh1Zsl=>PnHDvnLO=M)%L0ybHz~?+{4r~TLTx!|!4>_>8W`_AsArB)qo zC(Dvzc=Q_jAyS#!(qSU8V+fE&oR{3kT%bTd&Hbmr`S^i1&7y-kZekXJVz9l-Q#KtH z#+}Dx$P64c>cr9^{12>Ekox6g3p7|h4-&ShNW(4Lgcon!brmu@9aGrrTM1t9cyx^P z)Az3WXkx_OufUbdX@5hM-DPH@V2RrPWCKOF`wn0lC~aQv|Hsys$3wmS|F_&*x7(s} zFO{t;k+Kwn?A;nMGGyNxD(hfKjD5M?ZkB}0$TAaZFc=zQjEt>v%T8u67|WGxW0^9R zjPN^eb(i1we*WrFkH_>r=d~}-*Xyt>w?fVE%Ydk$B~}c%;;P0S)l&}yeF_~mA1OD4 z{?>GL0V=M{f$s94=k}Jtu(8@6eSzvzHT5xG7j-_R30tsG;eqpAa^~F||KkXg>D-a4 zwI6&pc0BXCZ03jz7kUhwsF#`6%rANnSj^gFJzM6t72%|x#`n}$=0l~$Hf`a)lQN&* zzu~x;=*ZWo#q5)h{FpCet-m>htySHXb9D%Og$p7;KVpHYq@Q0IThZBMc5vwY zsNALQ`Tw4Rzf$Q~LkUqvfE-KvMJ#Wua= z0RWKMP;ld&!JIo7Xx^|eYvXEmlr$lOdUmzR#4#yU`NHfYrgzcs=g;M@)?%8ZC$XJ6 zJmP%kN-#P}OdImCJ|0`e(I1|J-Piz4Jm?6n> z3=dp-S?O?aSPiavjvL;v+Ve1NI3x6Y>3*n;3D733Wc`hSXQR)B`~L|0j1so291ioD zAKzw){kR%v;S;gZKdODnnUJjG>pEgvIhkeRNTmIbyy3Y>N&V!Xj^6PD*3L{EKY%m# z!kbr&!vNJhJGT(GYzN7pYp<9G>anf9old9kYeorJdhC(Wvp5Mqx~#c*WrCUbz@ zA|D8ST{T*J(OHB?6V5hAMLg3Dc$;64ne(4kklX~Q6#?DO6r??EqDd`%>}K5=0`{@` zV5i3MDo;R`AE990B*yC!RLt#ZSF<_wJ)y1Bt!yu1Br%WM`pXcO7r$b)CHdk%m9+T`Z_l*2S`r~x_MVk4-c;0LEQ%PN#sQF0Mj6!gZ=lyK4FBd z)_hhH$^=Z;F8^1==C@dDo`h-79|=TYH`h15*PT5K#JnP?_oX*|y?2c)P`C8!hq~is z@lfNT#G5|ss2GLh-4k#;mVgGoYaGU!VmpUcCJ$|!z27N5AD-KkKOFijFhx6NK=r?u zRD)_iH$v}wh1PxUYF#+Bjh5+_IqRV{bG=gZIgpu!lJ%a5{@PpakJY`jlO1lEOMm!5A%gq=^&qiG9(Qpy2^ zV>@Y%Arh-cxF_^BeoEvoITiVYztn8egU=oNPnz_kO`t9qvy>Y>yPs|5Y`ySlWXL?6 z+vK@Wu#Fb)mI+d}+50|W^DSQ@9EpSd55tzm(k2gW-`53jVW_3<&ESjYBlH4JCa%wo z2`Gr~q_I}&eUVGKyF(>pl?XB$8(DY9?s^kd|C=zr9X>Zw{{*Vbf6q2`W-Tm6XI))? zU(Fit+U^A$Nm6!W`2m`}-H|k*CcQC7=d@%U)Y)}QpX));kVB83_~@i^QVKO_cB-Do zJL;7a?lv+nSfY0<`HlWDnUuHz<^S?i6Vw3A!C-vmVcL@>%ET6c8r?#sC#x^Me z7fxetWnU16qp`M0K{~wUI-mOU_4CH+8xtI;C?i@fS&gp`df(jhQ6DrxXw4_rmaR)7 z-W(lG7f#BSiN}E=a+3Z5j2`BHS%(x(DhT9riq1LKRcJ1&ggJN4g6goE2 zV?N(J0Gt*lt9rikM2spi;K6?qt+%rYY>+tu?Z3f}ZQ6-&dJhW5?K!*pU|Cp69w}r1=&_m#{?Mb znOh^ZIh?zZ(}1~<1nXB;?r+$X++ik-t%gw zW7T2V)->G^TXF3dqz}b{vT@*>luq#o#CeL|dtu(kKvatUfl|Xro~>?nY|8s95+8v8 z5nB}o93kxVZ)0}wiAhTn-CC$Sv=Bo?bVvNx=iY4GoQmQUZZe^-H48>Wnk+H7sBHa1 zXZ-;^$3GU|ZC||WgRIT$*0G-eX9YNXVu}DyX zz;PYY^beKpIWVY3*7;^)D3Dq` zazF)9>Ti8}Y0_4Pp`C>-wcQF8^%6BzL^}b)CbbrFIaF=6$)s=OnB$-$Sv&t$x#8I< z$@buWoN>`|CN@+Y`QmN(n4fi&lP$c32L?>DppOUqkB=vAm1B1gmnnLkIfPDwP*NPw z#9AoW5%s3r*!d%{%C67HNufmz4#D2QJ~>BhEZlRmhC(`V(-%sEk=HH4fys|@x(Xi{ zhw31Z35R~off9FUZ$Q+T4LAcZPEVm4Tkvm(Vh7~^qt>rKn`@CCme`84uwG*nkLEi+4^~Sq81Buml`U&dmf)@OeJ0=N#0XVi3!viIJRwOE5ntrb%l>-_9nSHy2zkl0Gq_eYK@&c`i+ftVS??M385X7`#>l0v)T14-E2x#pu3g1(z{oCuc(CC% zTYklo8&Xk!Q;rchyqxSu239~?LhW<0v)iWZL$EDpo9w>c zPYgBrfy^Of*DHC69GaFvKiED4Ol}$I8N9p|2C4z~#w_4MosGl6rsC)ql2G0M)j4U& zb*XUO@AfsM>2iQYvK;r5crKNwB~1+Yr{`#U2ew_C|HHjSpSZB(i>D=e*rbkvYlPg} zXtOZGG^Y~JxD>sCUzdrr?BB*?211g5x}Q+4fYvgB?{$^V81}ZJu1jre6&ea9&eF?` zt13b!vL79x#m6k-U~d>UJ9`^|BCP^hzHxs1IiW~K+u7&5v7Ylst>wyul7!8!{lR~1 zM_s!Gir-KoasCZFH#?WRo4IoDMM!2aLmnziY9heFWg|-~L9w*69&M`m4>OA|FyRY} z6%-<08qM(6%0mc_UJU zj>MBWwI#Z`qS=yVH8nFmla?z(n&Q8R{!n51ccY;5dpV~rBfEmbJ!%M?j&QpXV_6Ho zjOl9gfMay`v>vKhlDfnU7`;N@o%d0z)}2!5Wti#CMr;EaD>$Ufv_m8)=FLe;u1m*P zBk1hD8{MUORvO+vv_nWOlr zBjy7SOaS&7`2)mZvS&$6b;y!($9HTvJQW9(9w~S(&ZYS628jZ;8D1xT^Ela{U)1%LSNE)AXG0}KR z2WV1W%pk^e?H@>2@e7I^9+9z|Hq1TDLMV_ zUfjNBVw`I-EWu6J*VUna8soOJ)T^sjrbPjCMdW+TH$VJV3bMv3gp*?Y&)2Jt?Lc;DuhT#S{Lv2yClA?rGge}!*YvKdKqWB_ zSX(2qby6tK*(#muPt4yRkpA1NxP6Nkx=+oF(ednwb0xJK$7CZlXc}?zgx7k1%N(PT zn4v&iNACD?P>TAk>lU?ZDwFpxKS>rLj@?De?Pvw%n6eFETs&s$$1W_@$L#q)ye@Uh7`Qm5Q3$n|#~9OUJetGyILiX9=%?Dk6jn6-hIAilc=ae`Rrr6w&oMx5GUW7aow*(yp22 z-*J*imp+<|v4b)F#j3Aex*n>x5__upeajVYF$98r6>u=AM>_sBO!`hlaBu8B84$Q! zgW6F`zk;Uf)`7LwMrAA~9|hQpXS|?7kdcs~^3HvY2{Fa0(`#=Q*H4s+0>tLykOs#` zKYl&D5eQ=RF#n(h%6FiD4Onc48?s`jW*lJVYDdAUwMYEE6>_c;DQ)Cq@q{Oc$@Uta_ne#+3JGFY0Wae4&I!<{&-*-Y1K>{d0c zkEe9jc%H3Z_cw%(xjG2VCBB%5o8NC5&}@E;*HaIHt)Z^IJ9AwS#&R-EOj?qPZw3{xGl^!` zO+i@E077Xweg2uzu5`hqrEyToYd-OVfp^_#)|ars0qz|B5v}~T9>N0n1dsNQrn9ND zPzTpCZ8-RB(jpg4NE8jYVdLN&gBVkeXQFshi$;^!pZnR0JrTSuop89DNQlw2Y5WR)m0L-xw zC1;R)ox@Wsle$pU`C-+Q=3{LOF&q@kNA$sF;yW8P z>v@yEjbQ{C*k^69y>6-}${7`jGP)K*?B+V%(}gWBY%^Z;6!Vq0><>piuw5)VU*bvBqpWKN@gG;IhZ(ezIpbee2Cbc zxgUo15@&ziste6aDm}uD$Y=mYnH?CLEy4>hLzMygDZ-*zL@0B#&jrbB;73#`?n&^z!#)>($#8cjjVpegdjQ+ ziDLquwAQ7`Yn0F$%>uI&D%ug z%CMRCd}X3QV@6D|ZsMmNCvvTB)wx8QK4jXp(t1!CG5NkRCT8D>>9yv?@ROy_sqPxb z+%B0gf6Z8|aR153E+{FvP8H0>jskzQyDTp9{c(@zzssUoKTc^pt8T7&{S6Wi>QQa> zFMfy3h4#nkNt$Y=itAI4I}c+q9?>pw%j$?s(nc?>mRN@Cu3#yxwZ4C3IFq5BfWUKN zY1trBpzvyRGGV9^(gKJTV6kr;3<;hC{>3l6W9N5*OF|v64>fwuHVCI5ryxctgJ3Xj z?E_nJUt?O#J{fNK`fBhWue|wSruUxHC3w_B=r-xK(E5=-?k4PM?E780dJ2T=*A6|5 zRkDq_(be|BsjF=#VoW8TjXGR$>HiprT=eZwLmX*rIvMt}wwQ?sa!mnM^ETR@5nf35 z?8>Ex4ba9UiR;E@`QE-44cVX*mE$c6XB(H@r`?A)CNsJtbLM1@Ce!O4F(w>(V0DBR zeP98l26Xb;pQ&cf(D_28;$7j#TU4v31~oy_29PPiaZRPkZ#<5bUjSAksU38k)B6|4Tk(WrSQl-{wu5!OqnCglz zDqoEs;`(#IrGS0+l)wNtlq+c8UxXZEl{U=K5r4Cgf(8rUAK6=2GiY@rr_86C zWW{y+0m}S&Mtz0|X7qH4?zFA}U#sogVvq6Qi?cA_{l zBV-Vc_PrbZ4qMX-Sw9-=)I7E*JMD>rA-zqYB<1Av?OEiSvD!<^`vavjOEDcq)2`x} z`qSlWnZ~(=B@b!V7L8Kn{6U{=j`(}zx*DXIw$%2V2yKMk}8ks*6_I4_a-m9nkWz^-&TiEgH1CL3~bF#>Z zq2q>Tx0Q|Y%P2b*k?1rX!i=ZrGb`ekYrha`8n2S+Bt>>gwhf=Jd}`ri$cf7n_(0ka z0WRow*pT%AHJIfo1R}dk#*BHg>g4xciCd%!pUz3UH+e>~!T4D91x*kT5P&|MT7d@2 z6J!n@_10Oio|8#^sru=STgkr0Ut{)ZPOlj~ZUX?OlB~}F9h-hEM6&hT`>SPrH*c1` za8@nfYnq(=tu!+3ni>CE@nLy9njA^@vhI48a-V-On|13HVoWW540SLw@`vlILK%WO zU9iYhbjDZtU%4Nwp@@SVrcj>}6$c zR4>)$x>Yk|+EXdSnJ$0K+F)Q||GKdZ!@nKhagNcQ=DJih5af0#1gnC|>U)u3bpM_%DqIS}J}jH-E+ZG3ka({17bajw?hA5kL$-s9gk& z9^BH3ZMwyKzxk|EV`Y)OU=TGI0O2{Icvoq>Oz8P5S6;}0o;y&~)+MTV# zaC!C`P7OL?2Q&Aebs*?+=@~JcGupk=WhlM9mWG|4w4t@Ss7r>&8mo_MtekqWAg?5& zg~nIgCLiV{RC)68I30q2%}Jt$nc>V6-LFbCrIA$AyhV<}>i#x+i?_?tZ(T-O4~w-* zy3TmeY2n=JKV~EH1<`a@WVK-?jmzDF>D0x$uokX;EVa@ThE)n#p%s$v3JYV8A`63vgB7 z%#e?3)$0G8y(PC_yX#^C$>baK8UAlL`T{z#oUOlClQ`yK7o$`gPSzzW$0k%zhG}~Z z3^~QhsDRtEg$Wjc7Lh}%?cQpLp=bJRW0~Y-?NG4PH#d?n?COpf3lfG;ihpZUr#JE2 zin;*psm{vLyt%Lil6q0OY-WylPf~J6=F*pOx#F$76z_eWw=018(H{s3<1#B;@sht> zT>8_Z>4D{1?%^$~@@(RME@{REaGJ4X{Manju&c)+Y-2 z4H^XYUU$(?+HZ2K0WG)l9ON=U-J9w+gIuxdjC^2XCD`As1<+>2lv+l9(X;ifcKEsD zl7yti^$B^kVS+yF?R$XDe!8&;Am5FQw}SHT3+(%@mQ6VY_#zCc207?Mdeo_#0R*}e zxk&A>m?xF%{>0GG-@!B!Ij0t0Q&>k2Z*L_wW&#g!_+g>vOv+RcaV`pE+03BffUYY2 z?WsP)VZG8w-feT&$x8q&+rH$L(>}=dH|o-ABZYU8+O;}pSY-0@h?Rv-UhV<@m;EBP zcSt|?yI$4Ddu#B7vO%P4-XE++S5^C!vgQyqWg}FT(catRkI4xyY57N>z=|tptL(LS z_>w~MUnVC0;v6!#(O|hfDVoVukSyX#Av05l80O52r24sU?06}}b4ysJv`W(|V z@jg`F0jCf1%4aSQUK3lm;=3uF)ZPqjn-%Z5fKv<$^3&Y|vuiS~{Emq3YAmM3UB(MV z!`Yp^A{Zt$CI^`*TaM=##kP41&S_55FGvGo=5^{Rcd5&T?2k@`WmTg5hfRMOC#dOG z8#5oZrv&>E-B#F_@lNU}S5?g9N{8lTN^qkt_j3+d!;Q=cG?Fvf8g~VCgIzAHJp)L! zxL~ZpZ7q8j91*@~4mONQs$0VM=QT zZDy1h{{!w7?}wyz!(**zqn(@SpcuIfiXC`V@N{MmbK}ErU&Lk$OZv)>+jK&N);d=? zY+XC$yHw8vn{S&TgclZUb>&U%k__Elx9z$EUG7mj60*Wax}y6-n48%>)KfX_%U!A{ zBbKeT5A#_EX~x$UW}XG3RNDG?0D1XB7qqwwK|MQ*TxyvZeSlY zkfaB;Unb)_zi+F~z#hF2H#mitrd3v<^~R-bm+RJkK&1sYI?B++k;DL-hrm1K8&ffc z%_^S9cAHkKVd~u-V>w1>b07bwlMmye$lS1`tC;k0Xe<5DK(29an|vE!4T%a80$IKC z17tBe#(beW0m3~L2=_upR$F>TpMy)cLOr}huRaB+W_BYR$V%Ht#7D9g{Z5nqhDW*X zI^BB|K6Ekelu-L0q?zKP%4r**apo?PLhUIs@iQ2qOh4d}@e|%8;2Se@xxpz&KUH%& zK5!oCXEKu@+dhfW7$#}R5O2#)v+FR5XF) zIr!!FsFiQeo}nkg`=y}*^aoMkl5lTe9}*!8Vhs}IVYb6<GCs~#OD%BkwIU?!UG3<&(XYl*x(Z2p%xS^10@$Ig**&V+#?wx{EME2o;^A{z- zChH}-xyQM365I?BWBe#jZnJ((IMFX*hulcby%WG4$V`X&>JJU}r|3;asXBJ~DhSFFwb963n z%VcPDsT(u&vkS|oB5>59S(<6M>@*#u2#KVzFF9I=j{{o@IaXa52KgiUvg|LmUD{GD zwC5i{4x_s{G}iD{8qi)l1wd1@zb>fv=UHfSa%+1+V|IjMf{aJ?lwEg)FMq{=IwzH+S2B7P_hyB5zeDZ&(lFHIrOP0D2}r=$cj-vmcGvJs z922|SZ8IN*E><8W+GFEea=XR$w*EsXjlA{?hC9_yYa$35klNHDF1zHL=O>1*6oMsi zwS{`Doc3V&T!!!-^5o#@FWyg30F#2|h{|WRc6X=oSVo#!@c!Kbu z{=u+`4_6kxi=O)s=vZ}nc1E(SfAw>;LVJ#A`ZAbS6HdrLUKx59OWUhApnykLqYztU zs%yQOtSYPBi;(OJkUbgaY6kwq$&DR5pn?wbDVhq)+19G&6XB6bs;ZJb$vZ`8BeYf* z1W!7um6Xpvm!2G|7>2Ud!hNk@z4DV_wfGb&684x;zk>Di)JV|b7|7QCj72!AWzn4s zF5>$d#2aG5cldjz9Pa6jM@OH!vI{oKH6R}(XchM)5jW%+z5Bu_7A z&Rhs{h5lvVT(J!^-l>b)3SGDnKM;wv)SSW|Hf45Q|HQf#H2QUrlp!jpy)5 z%s^4ey0QJ6Dp-6bNG_vt3sD0PD*rOc!4vV#jKyHb?W&ic&}P5!ke^?Ww`7?Z!bvm$ zLYxGEE^Wko%9s`pPE%=I{}83cxKX|}CXy4$dtRCy*EBKtNn-sS9Np*Antr!z9)^fJ zNqjBbC3!#B`<#K4JUxbHvUVk7_JrM|Lv!`sBeIyvMA{Wbz5d);^$!0B2sZ8hvNoZ~ zziL_)ls=RY&h$+4{{Dp|J<90sOxFaq^!*MMpp3k_>;iLsxB+X;mZ{ZFswxKsdznH4 z%T~<|%TJ%EFhvpIY?43blF(Omyjv#|oS(Aq6)AS^q*_Vvz~ z2$V?~ADd*K(qMs1s+~Y!=c0#QQHGO<%UB}@>rpEy_%W8}H`5Uwu;xxca5xDxq-@5T zQT>#pB)FI zJMyAu2wBt@H@ozXA(%IRr!493RRC5f#jC#QRR-v)=E{Lc*~s6hoai*mJ9a=F{m3V0 z>e`kG(wPBqEO<0BO%1ZTRe2a#`}U`VY&OgdJ5aM6Kk(ClLLP?DRll|Gr}J3e9VV6- zc$$U%vuCdIN+wqA5naTBvGmBTyiLS}tO?MLnt5`!b4->xd#iwz&YG=XJi=HmUuwJJ zQLaa^KW$$&qRJ}3gfp={6*n^L2EzKmW;x!2go-(A+<>3MYTbYgIUgf*v=gkqp5J4t zIuxs0Evuz?sGsr(CO%VI1giQ0CuGDx2AUNt$;PSQJ-B8X1>$7f*2qn$6bZV9S z2|&tKwIO|q5`qahOta+P%L8%`rpl%y?P^Tv2lM>bD02sUEa}{7s&;~VHAzodmPgSW zI=777AN>f{p{O;P5VpuZ@l{~f&UZ@s$*|i5;#-gm)?lmq{InF-50SGl%6)kpD&`lmD1xVoWyQn>N5^}==hgO~k$#wK^I z&$f;}qaKcuVfCt=z2Ki6Q#QRN^1Q=IbB4$Mx@i{ns->gWD`gXBHZOMN+9Q1}FA{{+ zEA@$M3K+*l&INzlZ0cC8A$o$HPW@9--oL>9c+!UUNsO|O@8uN4km))uguqDVS=PZTB4O=Oxk*=O+Eb z|5?p46-_urn3q@7(%j-=?z02cEue;=wvYzyR=c{|5I&KIQ0)369htfB1WypT$T24% zY}x77+UpMnca&xfFL8LU>f|Na4_R7F-uKB+L??PevMgL3yx6hOG$P&=e0h6nNr|3v za}6DDR(V`%ARrlO3&VjT2uz+Ia$iq*=C3tR*WL7V2jTtB(CGLQsM@G~JyO;it=VHB zgC7D#-|Bh3=U0f_ry~~`JEB3lR!b z7um~RuN)(vx%(}%^a=zx*52$i-UF)pUXBiD#kuG~AKa7{&^Z=Jx?)M+p2QZ~KY{{Z zX?c7GtAn}sCb1;n23G#}TQOjXO9L_mNn4SrUbVK>3s6C~HBdlPsQ+nD@3U42AvyZ| zh@l+5zZU$e=F_+)fdiU#d)BBiUTzT!LjZXcJ>(Big-|`7rndEYQSkZ72YSkaJn%~3 zqQmI{?_{JM3Kx`cZXYs-@$D`&59buKux8BcLDZc%D~?0_~Ro zMWJ>%MF{&b_TV&hk?-3MHo#YSfxO^AE)2Qg!)O({?3$2mV?Xz(D_e!FTbn9f$4WrBw{ zpat5UIT8U(XtMOYD%?2~_hwx+w&NUdkVQ5y<#Sw|m6wK#PidCei{+#QU?O>^AG?kRO2p_+Sl%Wh~tE8poH7o*p5sVK!E&BJh(ug3wY7> zm)-D{rc(sYCyAkhS&1=TfeE_w2(x2epp=<31m>=)r@&OSf~dfy`>zij)~lb&%BhP$ zddv3h%b%-KpKS&2eyD?4kMZhlv#Fq;bvR+qq5h3W5wGM|jZ0UFyf}~$k%ik+=6!~V z8G6FWu$~bZt73+j;XM5630SxImq33Z98kw?0x|PRrm8)YI=9e4I^cgtI7tND1D?7$#X;g^ zUOTGT@qMR0oTiDMZJ03Ka(w1yR~!GI z^!eJW`V&+E5lJI{+pr6|Om zVBCzhMc=u^WVs=IbWsZHYg*{){xVa%kP9p};i)VpAvjBQ(&Dzlbov0zJVgP#rb)ks zvydix7N~PUaXZQUT{u_w-F2HxFf&vV0>P)(o`JhS8)&T397=UZ_S?vG*7xvRg)_yr zWF+@vy*!YQit1>0nU5shUAp~#iACzI8{RZ6IwWc-m6xgrsD18`)-U^Bm>g6RlO&XS?o3s5Ij`gayFBe7nSXyUd^M_ zsqQs06i$JO>9^GIg;0>g*#{#q{BpmP26%ce#wVDG9YN-Y^&H z2%F6m9zQ|)WAXh7-0xOn1tpGRTW1f8_`H64W^%PsV=Kc-2QxaN0+MCxh%w!v-L#+m zBTT2VCsoVwLf+l-H#6j!0p}WP?wv*s$eo>@InNQ=i}cjUqA@;#ZPx!w(4vQ}meUTx zovV}Qx0lXAAsFZj%_gtZEPuWwx=%hF*qmtkJ!#o+dG|v5TV||X=z6BhfI>*2W?Egx z339b8imzwRzjmFvXRjMHUOSnS2Zyb?AIANjItI4eoS$s~uk=8JSgnCOdz*Pa*bd!R znc~>l5JvcQ5%{Fgy^UaRE~)w5gZ|gYc|w?Oc}9W#+2jrFhZ*u|8?}k|PV+bhg_==| zn*<@c5o6+fGKp?TRVN`_J7atPuVATZO}2fw2H)76U3Xg)?Wt7@p#-1vY`62{YVq1K zGu(zW73XWJxD%8Nk&b63#yT{U59+%`B-o9rfBqKln{Y(b_syH5PPbkhm3f4DpuB7Q zjy(rsj>k$Re*dXXhjelTswXt?irPY!wNHoj z&WV%SrOR(ao^@*^dFwy57vZ2ZYv%H-f1CW7t#_!2yjz4{Md6 zn^Y8^+l4(%2(a-`)(E#Hlr0r1-y)%_sl{EG!VpvoEl19hcb`HRmUZV z5cC7Zzq+%DXG1vwYAQ$5&plGYb(F|qcaw8}K4H3MOPYU?V!I!YAO^$Fxx4x<9890M z4VEBJ6;Dk_wj9dBSRQvAr z<}KeKajHCSUqXQg?!keHBhG^tV#IN zT>?A0PpRaNGWt(r+*11Z;|zL9;?K%)xab$KH1^JI7u@vJ)J#*`QI)!8TD(NoJ+`Fe zkO6&HuIF~1pmrNz>|6m>vaG&$?&{10vev%F-p51r!i}U1=UZ?~0{PBy%Q@+z-zCGD zCdp+ku%j^LW|}^ev~SlsoH!kAuG%Msr^%HMOj@$fdB44C*iW+%Q^YjWiUP(f@+bun z@o{|BDwKehL(QK)3g0I>9-21xrhA*zo!+|H>g;aUwWsrvWnl=`9m|6l`yX6QhUQ76 zyRMwi3s>;c9&9OWf^zc{>a^VnsoF#Gg8NkI1O3* zO7~lr`>B>Q4F9)A{fpBhIp9jYwB|beqKbGsm6y>IA}2Yy$(gSqbz53OZ1S9^7X{vH zq{R52v8+g~c(U;{Gf<*hT}uF-tNHIcP^LuV%$D{l=P(qrjg*2;R-nrsDWO-9yT94* zmi$s_XP4rzQ8mhiojfsP?J9Ie;0{`$a`(1hI_`VlCdv^U*FPlubEA$1FM+3%`cDOu zeyH%?=&pXPxmKo-gR8)8Wk#u?H(eGi`Cb2n-fs3 z`s?;0f!v_npb1>>y{{zrow6GY>CjHKWzqM)y(YecdCgm3+ly})$b6B`abfKbKsa?m zK39we#28fGzP)Mp;$h4FN^O7Lu*}}~x zbEbA;C5$?Cr=g4Spo>ixVtX=Py4c=q`DG9RBcY>sQ@_+Y)H|@fnu-L+-<} z%(lqEI()P=cfYi{0x<<$rr8Qjm$Qq{1Prgb0|xyH7!wM8(UMf+zC4hfZBF z@6y8O7DvPzGW9C1U(G4vT*V!eT)N$pC-A?J$j(v#)m__!&>Jmy%br3$ShclbnLp@Ycvi zn9~Gs?));NYB9@_D?Ky)sgD9XhJrD|ZtJf_;!Y%lz21PcRw(&JOPJP&0#S{{Mp>s_ zSVjKwa@EEM2#W)b*!}X#$jrj>8ei^@mvIy7b~uu)ek?O8M8%Wih^5wN#k(CyU9t@&wsh-m6Q0M&jfU~ZtT5S^9T>?4L z{gFHqy7XBIlW|QPs=C)e#$ir*;knudqIz%J8>M;fK zjVw;IJ}_2$Bt0X9iDVkT7&Gft$Mm+!wn{bXrJyUFtY)4Se4b@jPFA2o?;7iORa`rO zWO3N9*Zt0DxVkJ@6wpp0`9!kng6vgZH7TKC_;`6R7 zaf`C+WVJT(v@E%=1zAqEyub0A|#~Y5?AvhJsWoKx0HyY-q?H^vc>xMwHKH{+=J$T_btx{&dy)*VtH>l z4>PWiXTOJo<^EWbiL9qGB?m)xbAf^uX>yXw<$Mui9QI6gnnUCb%Af>gX3AfcHMU@k=7h`mD`%xUE6%a%o&u0eUu*NO`efmHhEl+cP!0! z#?eip>0Ma?#NLtj(-+q@=Nc%NkjnD|b#mNhz00^QKS4Q#A$gl*Q3fk_6rK3nwlW8U zsy_lW+Z~e>mxc9`!DHTcMcd>mMlTJZH4n6FTFy+~{r!vTR)l@Wt!)r2#EzM}3>aHY zgS`i*rZpT@OBT7)TwZ}?PKAuT=iqI|NNca!I{SKf4h^epbJ{KLeW*eZ9m-g`-ml00F%LXSBef+6a{mZIT*4)9E#WWv9>()y zH(-9hTUaKS=@MnW^wM91=GH6m=t_C6=PRY7pTp?cR};r-8@2;`ZBb}0Le@x4n8{6{ z%vsL0cH5Q|l=n{YE#yOk=%W@rWCJF@$A1GYlKN4*nONpkpn#YE-%_~~pWxi+@QwY^)-7i}Z=R!T$+r5$V2u;g4@VZtnls+O|V z2?CCOt+3h-D^xkIAf9?AuE4sSw9&3wWV5NWIN|wf%<-MYkifno^D+29>Q}3eK7$RV z+4ihiUB|xv>1_M>^0sY8*HhI-0Ig)UY-89*C$-<$$9J2%9F=IX4*&CQ)Lfxm{ip!T zMF+w9&E@QrmS_(`9fpeJKJJY-d8kqGgfoEZotAA6ytX^v_YJn-w0+6X+US9or=Rk2 zFHc&gqL-VM>J)9^sd>F8IjHjI)(&-eYfD{_^|TB;DB5Gm`rytVO^KycTe4xXU90&< z_PV&A<>gvoDn8xMUE*Dn$B1&}g9*+V9&`C7gQ={LxweHZn)FoqWX@mN@0xiUOR*oL zJTxVcQ;s^Mk?mBqN_-0$)QzT_Wiea&6jo-q#6>lFA4rUhRkl09h}2*Cjsl)~{2HsI z(99|)ahBCS-&*Pa9f3{w^5)+7&FO9VL-XNE`N3W4>8D$}Z@B(WK45_9%OWrFero!R zqwK*<-dTP>%?aHNJR-TfaK9yMzCe)o+}IXr@zk+DBrmeWZt_moDl*4-KS57s$|cOF ztk*WmF0CLCm*2Y50-09I>#jvv7Ys2(`4M?w%d@z!25s+8WGltt&v|F}6h6du7v5%@A4yO#NLq#4C={_0t?|5%BpE-lB&#C|1ofytfExyzgi{t*7&cO zTQJ=%T1G9)^Q(X?e)8N>CMB-1@^r&5WgS=V3Vcrtuq@-50CN#&0e&(v9G%f)v@{$933uKujSBYR#$;m37i zClq&=@2dc%#Sw-as>a%ZhPTFI;vv%m@<)MWj%@}cIkH7bmaX@5F{eG1<5sPYT4$3T za_Dd5onV%&4@f0AbY;$Lg}0w^Si5EL94o<5pWtJa2Y|_UW?p@zSIOyedXzqv-u4`? zW6)DkJFn&Z(H35dS6T9@v%SY(!B1X0Ccb&wo#?str%#dw)_ZXSO{L{+iiaztZ9Hw( zzJOP?TY-(FxM$>$Q`PAEo1ZU<43RY0f^%`X^PoSh`Dvv)Ac(;9ZZZi`pxEmJ#Jx{QkE8y2No z#P3_TyOn05!#M`6>5ZP$7NDN0_HiKtdH&!m^^1ITDqhCPSKoESf7pVd#vaeR~`wa{8DR zR_qFf==tYVg_2=6g~QislA3#iV(*S(h5D;^srF?02i=f2Tobe z&2$H%^@U7JT#@Sp6RX0F+S#LNzctp2;=4RU`P`QyjEZoJ%$arf>X%wYoTdwztE>zY zC9M*7`{dEp18zc0Ys{4)i~-ZKR_(|`5;E4}Y3J#`McZ&F%Y?r8`9~Xtza`tI)!4+_ zVDgJ(Kf1N}7oqDsaKh2YEwBo5!Pw~pLi+9eQXUOl==A!EmuJFkn8 zNkxZ|x(0S!rLM)>$1x??*budB|4|3qc27q$u^0-=rNZ-C3w*^&ws6Cu=b4m;b?VFI zl%B_6%nYC6t8zO@HWZcoQk5FKKJ$KQ)7N&GSW&+5E`D?gcBj`d2w5NtWS~*JwJVkT2eizoq+-Z92yRVkftNi{F_g-Y6Y0&4^Cr4Gnv=xh# z8|HH0OC)mCgZmzR$B`4t?X(nm8NBLAe4Upj-mBq4f6ZmRwTQ<>6&iop3_w^6{X@-< zHr`(ed%-hTWMC0_ux`I(f=G9N+*Z2e6ZCR?i@b#)Hp4I%fo6h%K;`7Qk+NtOvqRHv zgd9DEyPtZ(m!a~c9gLEdw}MrdSGPhkJGFUGOq1wNB(WxyTzG}%=A7b7Jz>OYLM}Nq zfxRN@(&AA`t?xbA1>U|)v#hhW;#q0BEEO2b6KKOt3*$d-(tfIc<=N^tFkQ~+^dI?n z{|sa-JGG1!6~fl!swk{pYcbABv36N?T|Gj6tbE6j#Afc|8lQ;)sDys4n1mq z;@hC1`9-rIb`Bl^F`CgsTdaa1FXLg??)LKZ!2X6A+asB7Oo3w@&ce=5(vUuzZ%z^{ z!#lTJE!j?u@}`Y$Zkkax-d!kbTHR&QE`zT_kTL`NquCn%5A(NFcYRR@0dpA?$UczF7iUw?Wv4hdI=W2bCMb{v`j`c|_tvk${E==in+9309pQCd;7 z-<#{^K+q)AdHMCZItK|A1*DMj3d{6}56#my)#bF!)NxtJ+B{D--P|eANfOO49o!YW zYP^?#3p^I#kuTCW*N$G;{rtu^cy{~l1+}Y$?)3W!!XIc~BkVy<_BaQtWAy~@N*NDC zeQ{a7y87{0=wreP%BCuFqW>5>98kiwV+h3OoCs@Ab&W0Gxm{x6-*T9T%qO$ew^|@7^S4leb_K*aDd-e{Nw+$}Xmy8X7b{5xbLOadhg5V%P0B;zM>I|$ta40W)pm7F7 zVAm$LM-8nbbSEc$e>Q8cY1W}7A{vL>^6**IMSSCcd}> z!#qLM=qy(Bc96{T?vaWws3jU?C#_FVVE@Y2c+MXiZydk43ME;PO7;Fp8 zDzVe>IWnAzWxd4oEVo38x%AZ`6Z+EgY2b*zC4Lxkswu zn7Q`LtWADrD{mV&VYRw$esVQdHkmqOt)dEj8_wk*1s80fYZyHg9T5bnymfUE*eb@8 z)g3{khUDp%*s+v3yvu=dG8XV0l%CoJi|n#SUf_b<`X!5grmbfsQEXtH$KjpDSm}wG zcK4aGOQ^E>hD$J1fqQzz5l-C9w>Y>EOllzEWgn9)>@sIZR)Qj`h1}$_)dSh-CAvzL zcv-Xc*%H&tQ1mJ2T=D(EhxyE>+-3{M^Bnt%TP*VJ06}Ql z>d~45`SG*4FxKWLnrF8y*oahA|DEZUk^GLC7Fn-HN&n4b#;6yQVfZ-p^9Q? znlLB=t5l8+eS-~w=FwF7+)|l|idr+IYej(B`3l_6J+Xw6w<>UZ%`*1D$i-z;v;1=G zRpa$gQbjI8Xk?XuG~N@6sjMyI=E5^;~` z(y%KTcY%Rua0~?1s#%I6KgQq`J@|{TCKdMQJ{Qp$#pWW6l9w~Yy?OXw(c7?e8l^qo zls~(Pm4$N1YGu$s)F*kO)Ggh3p2<^WpY1Uv;|nat3Rq0^NEqOKJMUP-@EIrT4GhUE zSb8v#MlXpZg&x~BY^ZJ!+zYhr{ja_XT zqONKBh)D5oS)-YfS8^Da2Exo}E~9VBU8K0*$DR>1Y;)o(|Cl!w`|fBtD`8St0%ufN z;xu!qn%TVh73$^9H08`h;G7kCD@+@p^by01&vJ6@>j!c{k)N_5A`{|%d;Xd;DkUjFT8 zr_EmID!o$fcWOA(@GQA~+@S8|_U%~+pM!ED64-#7Az3I5KCwdL>l$qMfMSLVWz9DH zvUdE6!wSZ0C*w?K^Z?v)@cK8d1%;V`WMc%~I|1?)JDV0>sE#lzO0J6R==bWIZn_e` zl6?Lf2kDs=!}qx+?XU#pFWH&2b!&W^`G-9miWqA>jE4>)#Q zE4YzPs509F6!f?Lufy*w?=}@vdy^dR=>Rx4LM=>q8_yYQhl#jkNCsn*J%C$Iz6jVMlzmS2iQ7p;A_vctEK-%_a1l2dS|U5lLzoM||rhjM&rKvR=iK>Fq~#JcAj zt4Bnh`@ekVB-vFmL3oU&UoF?6xYiX~dv}{F5*2*pmNz>Vy8J3Kr)Sl=I{Q;p6v0$| zYr5r+J9Z_boPhcy!DHLv%MD9~vriHGafFm2;<4fz7cbZi29rxpLXju!@ruaRXww7L z-c6uJX~ocUd6fK6$*3w80FHI#bS16%!Bw}+Qxo%4?0kAsVfWDqN>8r@Gpt>LSs7oK zFnjBpN3>`Pb_m)C)FiCbv@@PpxZOmPH{H*HGsh97Ji>{i25IS=>THDdz%4ZV;bDYQ zPhGfOO_zJ96=>{k=C6@KNdmx6{+n|Bu{3wlVLAUpj*#;K$(KU2w}yVfn{PWug{-ji zb^NzZLvy3wm?cnE6jGyyR|m$UA`5Cz@OVJ4G(%y<`$eC|ZlO;^DPZ+_$?JJqX4EcXP4srT0139i zdRPq#%C>1(R;`3*vZ6ULl%hXu7@+bkblPe+9M{;a&zfGdOQzo#aMMLIVu0~?7OAr( zIy|igYWVc<`_L;#Y^onfPo$nRuaZk7c;K@Bp+a<!aEW0jx5eZDcSaccx?=K(MjHhUEN=H~z2fD!} z*C7?$%=$=;t`a-o(Lw(EJo41hNS%wU!zuFMvO zr<;%V)g87v;VE27eNLdE`-+~yb18>~KzGeQl`cOhgtVv^AG*w4k_#$Gm2tvjYq2vn z+dTW1oRBM6<+WET7f8{)gyl*jQq=PHm7k4TmMlU=F28=|jurh(_89%@_qs!OREI-2 zZZEy2|3Ur*CB+p$OK#4b#3U*5!3zCFt>wUT@_Rc&dbFrV#5i zL%hKrFA>?k{TDJ>vA#?RvxV!qG)}^Dr@X-g7pxrsmiT5m0G35o%$EKN@;H(Oi1gbHRorZ z?605+6xu#D-lk{?Z|?(A6N~F9fGFY`AYwXcq-k#2G4m|7*S-w@SPuMLPYihTM$%4og%Pp9^*Ri?-?HC zi>L5e+1eXaJ*17c4QJ$e7!0=iTb3U%;Z);CHjR8gh_zC6Y?I4c(2_6T8ZeCCnq8_c zkt7Ow8d_`f;2F87y?Hkrav>Tm3@a z##Kko?fSuMW{0y@IU6$uJVtk#n^L94V;s}ZQi^=Fh4`>OQYb4R$+`#q-C#O?nu*qjlCrtk-^a zQ|x1YDS&Tgf2^H}TE?2cZZRh66K#;DWt9jwsOS&EVp=dB2yV6Sy>%~eeFM}Ot>C7FJN#{O4}nzkhW%DTuS zfm{2lg}SSlHxnyZ=IQdbuyvi0mgf}n;L)1@I6JN!{;zDySI_+y7Ys`BE%f$3ZT~gh z`7U1gq=W4mkNOA^aUt?H5-NI|3+_i;&fG-!Q^u@?VCDlA#ac%#49Lg2kFy60$2_cZ zJ$T+CY=JbWgxJ(+O#Xvorn$_Wo-B${+sf}-^SO(4Y23!-V*NGoVZFHV zd69%qGTc@8&MoBmpxF)=W9ANmrXG>?(qF+cKtVAq+fub#c0sHY{9R2{lWg)(+k*?8 zPbX{IUmw|&qQ_+hVr~6fm_2nT{zG5IxzM{qYJ;t@$7R&$T>5dcLAN@ zE_cJL4O3-KSQp^i)QV^R5;d73=k+|Hx5D*BgFJ}qUsWwTRV*;{b5qax*W$S5mdk8G zc?y;o48J*guC6VPZ@!U-sLx0on1V+8bcKr9j0RJOM6!6rdowZgSEpiXz|hz#-LKWE zZ=fWn_@24|>4AX3++I@6$<8Tso0G72^bw=Sb^#aVSg!*1OlW;DqYvv1Y`DJY0Tf;5 zsY_IDIu^mW6Nv1szP)CQgdv=sCN!Cq?%iGOEyqzVj@4e-%Mn#%HqbwGZ!dFz>2y%E zUc9%ofmv-kS-i8PsWd~356=x$dA&&I{d$83e&(Va{aTtXlnc3Z<2~PdXc6(E@@dI9 zu(JKzEAuKC+V^#3k;SYMo*q4hs97=`%CDO4nu%t+z3&=ND*O34whyw~*pfc|heG5y z0PhEZU*b2qt*Xw^GH%P~3bK_moD`$sH@6xS_T$;{zqk15>e*=1HY~QKfKL1V_n1jS z%GaNpvN-6qVvQuY@C!I)3I3`Wo_k$hTn0p^J3{^bnKJ@GLTaN`J(Y+5Oa{@A?J%r+ z0ZzB74Yy@JX>P+qDrz5h-6{&XL4t#L&=io>F&v>SDvARk;ow5m>98A^r%B{#c zk%|wP9injVfTZOGX%CbKPZVFOl4sDSW&O#h6*Hm7o2qlTjxb=h-}m*K%?ewszL)jIf?7x%wQO-V__#QCR;~^i%8x0$Fx*t_u{l98 zh&q*v@#w8G>&s*wB`D@14w*XGg1Oj)rk+jr_4WQtpQL;dg!WL)jnTYAXBm3`=BV^v z8e8tXe1ec86a`PU;9%(tb)QJg+1Z2%#O_3I2^e>8HJ1%()1GO#w4@+D9Aj^2J9KN} z{Mb35+->jg7MzmVSw$@46;;UEQUi*ra^UIJ5QCZJzrE*oI=gmn@d_BjXaU)>)vpS- z%;}UAl2t_S~TDNX@aK1G{Mkj!QnmpGjOcwvZn5gp(d_clE=v zpjkqAYy8&O_@V|_2HtOL{LT1gs92}%PwwSv4Ie8O4;@JK{`9V(OhI&{Qq5_1j&Q{4 z++Yjis}(!#C#>q=qRLVWbaLOu_+rf3| zaDwpJz17A=>w`x<>d&71`v&4plBJEficj*VoVo0}ww<+wFkfV}eA``TQV~*o_@TXF z+7V`w%o~OdxIg9L^Lc9*xaL;JY905AwutvWXqYTCTl3@^24fVN(bTAzl8D~5=2N+I z@jGG4H0Q?^*8CACg%{7v-G1oHEuX7urg#eF`p7p|wMD4F^Sx=h9p4in3D+xH8RJi{PZ->t>`rw9??RY-(RVa=&(b{|{Hx_&}d2)45a8grUjG(A5 z+07cgiPWmd8E*RA4vOBF^>B#^na@u+@#m`yzbmfJ@ zZou3~S!U>pgUqNQJGp8DJ6B906PA%m-u3m8-_$o8z3tgtS@c5WWdBVEJ&dq1nd>sr zGt;OR-A_0%s(}m*5`E{AUW<=hUcdQLJo(e_VvWbd?B07fe;IlB_56jihqKCg-pe(8 z)B*BID*IF{XT_w&;72?P_XRL9e6>PmU_G2#H-FY4wJ&JX0j@{b*J8%@jwne~nWs9I zC-VN_y%g*U*3+qG2*}Z}DRZ?cii9f5dt?>FC6X2$`>o2%(L4VdTXA3h+(Op&YF{q@ z5y}8on`ST73q;)h?LRk<2xajq+D&!m2&Ka#eET1Ux#-p->O*XU_~MP!l19q^b&&n3 zYw*pt9daxxx9?{2@ZM zZ0Te$bV8f$pp3YXNrrf)S=B7$dKg}EdwEEin~Q62ytf|MOCbHb0>s`5zttM**{IWo zEWT}NAlOnBHSb{f+-YcgHay?Vd@-K4 z6=ocCB>tTzby2E(a4TXzZW?7Kc#nEFro_89xcNdZ;{MJ)vOkxh6)E5I`8ypbE1&yZ zM}B#+CznOKJLM!CC12?oNwTbIs34z01)L?$GvwR9vVdGUmAM&-Cp%|2?DV&FMwf9^ z|3cLdbzP==A<3)I|&v{n(bT|3Wwu+dN z05B%qZ0!`+FyqTa<2Vvjb%VTP-px#|uo;?}%wh>j&qg;;YWIQHcqTAv$55fcb-z2toQqY zX{v#J)OXSV-ZAXa8pibS&An#LGt$@JcZD(1nckhDhf`aaP5vf9vYee`h`rQu`Z*`V zoYw3X-^0J#uJP&TCQ`j&e2vm?7e_1jP(}8x7Y=uwY5$mxMaJ^PSet31^5@Vi<*25f zCUfj6OakTo$X!JGZ#^QXnLxram2|gxK*&1*e7pR{Tu<2k+a#d3_g4b()PH^;@Gdo~ zOA5}13KoxYoyu@}T77)Mp*7P(z^|G>Ms3ZiGA(a&_lAxt zJBy#-{}|JghD~V6!b#v%%S00P8E&%IZ)WJZs3iBS`OlxX1w9VK@gV*T2N2JH~$^KadjBt|P;NhQf-ZtEF9Xwgq{2NA*!UdjeEJaP^%Oxh+4LhZN3ME9sj?S{#G&oUHthya4;GURs06ACy`_dp+58Ccv1aQbmvHL*W>NQ zrrUu=7RJkP)_IoFDYnCUXa)}^1$4DUa3tBE9q&zkPMj#?Pw?1n*L`HGLgw>;;P7fH zTJxOtoF1BP9Rvj8XPwVKCO~0M)zeMRAi;32fQ~u?6QYHMOw)_*drpb>b@_x zeQ$$dUO-f{g(oFkg7+3BdV+j_GS6~qRME)ScTr)qCJaBqM@)k!P86S9aUmu5FrfPo zUi+r8b^=d~JtlI}U6SrdOiT$^8ymCyb8fukCXC)2v_;hFDiurr;K7Y@WtB3adbr1h z6T&5sYIBSOz?~JpM^q|lD7dUjD|NFTN=Cu&@e8^LnSn^+k`xf7N_6xxOq1$n3}*i& zHhX>$=G)F5J0mAvobHEjlF4SjM?ghX!4j?d*Fu0u5u7hDJsC-%cW1nBUa(qm#F(=r zy3sUMTbOV$&k=sTPGQHbos zK1FAKYW%fx^4V}`ysehk^`INTQYV8Wkym}`X2iy}JJ6+9;Q&^L^x_t;?6&jo4Ih~f zzdq2I`U_2=aBi&~#w6A-)YN*gBj z+fG%A8fk3`toXhO&s`TtI*Bg( zdAj+my8|Dc0%AOm%#JBd@G|eJNeDl-9}y&q#!}2G%dvW$hyQf_TV)D*!0t(ORIpa5 zJ_5BSdNwk&E74_EAO`HN7Kj^nDDV-)3#KDF_ylE(GAaZvv`=s3`f!P=YRuil^1Qq+ zkM3GjCh{#C)3r4eJhGIue6NpWJb%i`8QxrX0DsMC6BF`tO9U%8>@s=MYB;}c$ zG^H*`sNi{){sSC17F#h}Hgq$x4klhvy7sXhH4H*5# zCwNWTA=`HlYQS5y_9=;x&&m_KT*YY>*xvI(+eJO~g|Mn1Ql;8GYP@NdKi+bsbth7} zF~Ol)kLB}4%MzR1L-&s;$GT^rb;#EI*M!{m^LCq7m>H9tGp2nAxYTa+>?r+)4^R#U z$D}I#(*3uF=Di((-#7)%{K!r?=o6&7)?FAQ8`*mX+ujlbYNrwD%rKXiEr$vPe^*m5g`1Jaii z>cutQg6sOZ!@4}6(Dw8ULu_d?D76R|?SZ8=4xNJgYv;49nc(HY9y;^@!f)R+3acwS zVa>nKu3uLPO1D*U&&R@2+#M^Qv=w5>?gv<2)>Th+-G9W1M!6+_a0*d32SHFt>hYZh zp2npbtX&tJG)iqD#e+h?nkvt^i%&H1*WGwzZnatq$;|7Rc2{AAc?*bjwTOqY7@(b{ zE~do5oVDl~c=VnzY-sF`5W^_l-$yCLCw1P;fH(U7tu66niA-{_EM@BCdle|R3YG_I z&HvWOgP4XMm5E20@<0{^w`(3@-PtT%|g zi6kRP+cP={Dx`<@yu7f0XPh;sx8|h#ay#)z?=@3@S7&|=oew*h+2fl1dt{~30_?Ik z*>TBvX{fp3v__A<%bFiy!KR-3jOk1wctEhN@vrjIZgF_jCVi;IlxX8}mKJ7CT{#tB zqYe8KVGo#(@&_(F>niRs=jhZ!zwA!TR@5N)((c#^qV0hQi+7#8M8SMGQOsD9{ zEOx=cKdA|QCIgMu$_TrTroWEj1P^Bh_@k7$-28W$qa<-+7q+w@i1h{cmuMk`+D2_v ziE_eKBsGKb5UBJ5gRk`lKkcDH4kl92DoWlq`@GAC(> z6C2)If_6KB|HdfLp__B_<1qy#g0+@tPco5hAi z+NFH+XpF9bx^nlwW~TSac_|~62T~Ow_TBQ)?4`BV{b@tlOxcoq{@svuj!3j2M%Hb! z@wiCLRr`fd@LbP1i4{f2tK&tX3d&E7l(XGWUjRLfng;x%dmm&(45{9~z%Un*>aLv` zk;SPYZfSoYH7p=)sg2c?Ttvc7m`ZzjH|EYEc+{B=9;EDG4rq*YO@gpq+!*E4Ll`K< zV#CQ2(DF+_G^PAwpR9zXO?!Kr&#&LUjVH^fbgx}$A@bt%s$zC+(QZ8A)o%A3{l zw1=}!Qkslc-O`eJM*T$tb*tExx1*v|4R~!ak=X&S-iqfTEe0PcHo&4Vb0Qm!zxM_h zlryF`jaZ0uCno&y4}HsL!Fdb^YFHg%l{^>=0Pm8V$n2y&{dz0_GF_ajnG@Wvz@nPG zVHoC{Y<~qL^aQBpy_3jnoZ$=Oq(wJAziF;7tlOjv2ZQ4o;9z@Ur_%$q)p17kpOYdR z>gp!%dHWx|XZK~%fvq?#Azhz<`ZR)`-E{YNgfcB#oRlxtc(>eJ5bDfVs4p*3Z0Ld0 z9ai&x0j-zxqrBh~%VKJ@ztg!~AaUdLFL|148y6f%gc?E8?mPkaBemIyo*-9h2-x$dY&Hbw)^R7oBRP2rap%Ct?^JqcyP2oM8?d_AwsrNE~4X@58|KQcc5 zF@u?1OWT->a~A_6-BsUxPk(u}EN!~iM?-g=s`$;AstDSr^lXlMiri;LI}Pp60+m}3 zhA&&Yii)IIwH3c}wzD)Wy5mc~y~@OT9o={(YvH7+Bhq&W%H!groKz?Es*+6 zRvs>-?_C%=oMmB^RiP`*S>iDFgB}@F*-Yop;&7%ld~mOsa1mwRNEucYJ~6+e{;B^+ zfN_;zE|-q*4}bw^=!>VmhM6yMHy!j{&L#DX`O9;k0YP^S-LI?39A#Zz!ck!dvJ4f2 zIcwdAG(Y?VL$tN)fLuG#LVPU5^irDO`Sk8naBDN-H|9hg;7?BYwe4rOU!4X_u{4K4Oa8H!XP!@3^mHS2zu0 z_68ED=p(3u+U)UhikaXPn5j26QZFX=Fmx%O!_x*xHR4Sd)b6yGut;Du!wKIGp7gF6 zM_KmZv_FAuPWsG;vKz)Qs=adAyS^70I34dCc{y}+a{~l+a3zy_U^$}Tkk5fb_H$w{ zn~kkWB zKh?~79Zi5UKI@l8wcn`sv|Z|rY?9C@#{_qnQeK=yro=&PR8%0Ng^Wv9s$bxbu*h_m z=iP;cjT&bZHtOT!WYj>IJLKPz38pVJEZt3urv4dIrKCV_ZZ-vLq-|_c0bTOsFX?(G z4w@TaoA_HCG!r&civc-qx_?%HWz|2eau%?TqTZF@FVUX&-i}#itS*coS1uvyP!aF+KH?I>! z#$HPLc3AU&7Q@VH70*VTz%>`)YGbE--gg0jm<`)M2cArS&-0yS;WV&gS)ZkR_-Y;W zC?HYYnatTd;P*@ysstY_=tzjicZ2a#D%mgIo4IAplXdh{j}?TUouB46b!C>d#RoRs z@(XHee-_IV!iUk7Asl_|i!dkes*!!PBLF7`y z=XAh|>*-Mv4=#^ds`j<4T^+`UKrwemPnK*}GRCMNsgBPa$F5-Q= zU$j3IQZ%~uCk9AlqF?y~BpP5?8a1#j0HdbI$ZAPtKR=OO^d7NIHUegA&L~9t*RGK) zSi(WE5QfTFu#|7U$XO-tSEg~gO2gf}qyA>kI?gzbkdJ%wephu`*YW-9 zQh)TIf_S_cM2&dvH&ZaY!o#Nz@}v}0tK>MM;yee)S*v8!hP`@=Hk>{rOK z)%bVUl6%aYRXJY?l7j)(U+T5nza~#}Xbo))OWN6*rWJ8Ls4V8)HAZZpcek7LX$6qN z9X@N^%ax-1?%6Ea4OnHfn#is_{5OhFZPUvW5#6rV1IwW8p2%+%xSl^qejG-dQ2W$K zKoFY1GiZoMUonf$@q&oO_vWrXknzv#9hX(n1VsYYneL}Y-IH6aHab<3nxKCc$FQtcg#Vej*{PsMN z1H>2%fRKo$MS}1fhPht9RzZW0gO<{rtD|dgy2s8P2dfL&`laLnhq2WV)OXoj0}%-C zCjNi^1_yz)HGYb_sU7o&FaN6a|a%1I@oA9wUDRHl~>)F*W>RgFY zYh6Fxn`>Ysj>F1_j%2BeSJW6U2(vr*N;2C-2W`V<|CAeBJ1NfSH1=t%2@1lGgh}q1 zL;rA(mG=xE$paM!S@d+sfjln`7J0)yD(;oxFTa!V47}(Iu5;I@MNfmA#+IJT+^v40 z+D}S*VxESs!dk~7E95mI!M}bcDuvUvN~${*aOFYm+KxxElEoESN7k71cz)_=23{x0 zT^qbh`8Q(9Nt~WK*$SkCLi*&&ld#G_pYktX)Who^zY|aHdHwB&Wwks-N*-v|GY^PG zbb?C*J^~+G{t{aU&U5YlPaR>aZ1P>|qnHx2URG=L`hxJCYG(JP+GuKCOqZ6^THk}U zuIooB7T=MDd)~J)vtw=Z-p%QZ=gU6Qv<2cJ+3WtG#ta0SiXJb~gDT~4sPtenZIlS< zp;QgRkfselD^Fv*?Jvc~b(;~!c8 zSCkafrA7|0Ll2lU}R9$S+Zuk3VqNUETsE z6L?qk+wE>SmaC>EjZ|+kMDP|_1zyxm!OaMW$5^?YKHn#QLZ~*}j3+oHc1k^Hxc760 z_f}PTuwr+B1tTP{54KgIdn^j+6>{UDd@U`&G^B(-Rh>@8(He5Os-XVealKIR=IqU- z)ihRsOky=4|9fBZmhb}*GzVhCwV^O})_Av}_iuQU-Ra?ujHf2?2-~?1x1$%^!kHR2 z94W_LYD!F(6pei~B>NXxFiIxGEGR4P-7-f%MOAuWN!a}F&wysmMC*g^*kk6ThU9tL zl{>Lj_nOZ#BL&;cuZY)GGUE;BE9jw%R-152((pmec(T_cUo20zDQ8Ov2>hQf%~nFx95$2+yqsDsOh_`u8om>y4^(I z|AliJhG{Sr1Ayr(BP2*=@hHwN9r*$_1_|0V<;F?+;C-Bqt#oH zdU)HYGCh%EKG<}j&-Fm8Bi*Cs`mWnGabpSQO0vLRO3UH3mtBU65X4>`;f6+1mWxy-^?$(xiwKKvH2n{ReK}Blr&udD7Sg< zGLZJUg24oi(5RoVtLK4I(He0cMhHXm`JAV0`bLSrZCtg?zzGe{`OTNV+^8{RVdZGC9?{Ua^UxFUgl>Ig$DZ!JIdZvlo0PKpnF`*x>zj!4bv}A7 zs>amI5b|x#kh3YVY5~ev@9zsTjvM}&&-JDrQ@6VHTlJd<)A47W_mE+Y#X)m^3jFvp zyVK3A3O1ITcDZLSWcr!}jl>x-!syExjCB3<|NTmw$SArdN)O9pd|%+7D425X@*J(WJoLpb3Zhki*gc|rT^??#76hvoABe}mBx^^+pQp;f>MzHWkTJl z;hctrzRP;p(kJ21={%+rOzmbFjW*7wFYw+82>J4?F=D@i3(wjY^_qS4qKm)hOz5%X zzhk!On2|4-zPVju)glsBD$ZB!ix`ohMckL0JE;(MVZiyGJB83^H;>7k1T^3-gFV$k zE{@!1??D?KE6;9r)I6IxWSZ{UoM(*y?M(#(RALDOg8(f{sh0kl@&B^aSbx_vp27?^ zQcz3?n`#`4GZY(1!>c-5f-AEI(u{!M#m%<(gvM}_pr*KYpVr=Ilu2_&0cjC$dt^rR zt^m+0PSlsW=H4t^HVpeZiSK#LeLTnA-WYC>$+onPUHw5mC9u13$=L3#t`g|eMfmmA z+;9TCp4*V~pC0<1M=(8fTQIoZBM*u+LYMVDYZi>aeb2&E#x7`Pd`$3I0(wCRx3I1ZInYxH0KA3|_@q9Fd+jKDwr6}TGTbs~GtP*;Em`zy zYCfKA_evIVc41_Eatn7%gUR_LUjh&Ar)HJzJtLdE5Vkb67Gp8CrRf>V+h9CMj zV2?hp=M!c%6A+U?5wMa3q6H-HOTOa6`z{7XK%=Aq2NBgL^zL-2`^%`l{na8EP;NMi ztPKTCk2=Z;y5i7szf5>7;=L)%a!?lwdL;iwNq42zU)%cdGm~SKJ2`U7Y^cs)*p>{) zYh`o$by?wzzPYhA8Sxdrw^H6+Zu?FPYHtG0@}-n`_vca~Qv4pg(v3MXp1eRgoJADB z<*v2VQ`!m!Vd33&A@x{i{_AkM{N9_Aa-zmCv>Ab%LrjyyM9Dp7YVYi0Qq_$(3+v!{ z1q{%NT*YmBPoHr};@bPJXGMo+_krOn%)>k0OA=OOf3sNrfM&(vo0=OU;@*7;o6&TL zk7mwxyX}9k%Ii5?v$(N85fIMK=Y}E|uD2Q{G^=VP=(~hzE#51RuMf~j!k=^&U7e%v z&t^SxOB5%5nphaJnhnvBx^~%s-t$ErC_)fP#pd2Ud*xh55V8sH7sY#|H@2{ z`Rg2LX^dw?1_x@z->v~977ASD$>ogfAv=u)1qD95*Y0!5MVI;qMh6q|N1f%agw1QV z67V-8C3__}mv#y8hmY~%&gq%#VUe#X?UjSHTUlG=gZs4?vc*g#DFy$$&l8x3>rj!k z&OK+`r((eryF2>`RZ)F#j&(q&xintzPaptrs3<2+^mem6$&4x=IXthlJC*@@rJmwN zo$UbJ>(1?e{ds*|TJ0{iI_3yUA$;~;*c6u+E!ruNv&PZQ2A0z06SQ-am07a~-Sl{Z zr^L!-nzkN0FofPn{ft_GZq9Rh^~P0lJT4qhOK<7R=p_W~6hM_ZLLGVy7Er zhK*-B#19Kb!ybW$&` zPn&4dnV~@OTSsX}f;nA zzsD{!W!MFx?jfXp=V2E)j>|9O+*RQ3i;6uzULd|cM9{G6m;wcWX8`49_bwxMx<_%W zeQEpd{fRFBg_&(cW&nZA{tWph?QFSM6#zkW0L1P2@>4@-JXwobu^0wS*Kw`uK`YK_ zq08;J=SJikAyA#zBe+_->|zPENib9kaN)b$vp z`M)jQJo*dv&M9dk78O|)LGYJm%nXUic|EG$B^UUJ;4~g<3b}a#Tv5r~RcSNFa$_Eo zQc6yGa8ti=pJZM;{ipW_I1XmzO33T*R$<4B3${D;aYcCIy;hxxPvwFvKN9(ntdrzBtivAg1J&)~%uH)`t!o>(mlG*4h8`?|h0qb-c-y7i;bpwnQioA7$*4bNl)M z5bncR$7by7;~=am@2(cZlwn^Vg-03NAl`RrIMG3io0Z#3F2r8WEpS?YOIq$OCPeI` z**}bUd!qGabDd1K$SW*Br2>GqA*}+jw&jtfl$EhHh2A`nFDS@Htd|Zl(sxv~-)$bY zYnZvobQ70WU>BIgjcyIGh5XyQ$qUk2U)~nCc>VG2)YM<(D^N}oh!*#gyYAYCKU@ZA zCapN)buM=JXyvYMwG%VXwYy*4HrDGD+P0$}Ow=(eECq~5>(wLC_cu17u@P{|JX6qZ z3bKqgV^Rot8$3(_NoNQ@wRGg8QjucGMwSL&eQMi6z6}U$Zzc2D1ZX{Uts~m z*aw-86APcH86SuY(G3#WMZ3_%%yalGw4;i!5D`G$e7%#fCe!;^W6MYWRL|zf!!R2z zSOt<%woQ>Z3hUWOw>2-vjbl4S-x+FE?wOwyXgpA=9>i<{O5FrKO2O?MskjF$RpP8dWtNEdAwxnCd6n<0n7zxibMcND1 zcN&g#3^qL3@3$QOTrazQD3j4wsHRvIO15}$R^(RY@2i3GKiOp1OTmDKVEFSKe)Ndr z?|QgL<>6ELVUk>kRG#0rrJwlgiBLRe=H(XvJG$Mt-|N?oZrt?kBW_$M1mex5aQXwm z$>UjeajSvfc|3tcNTZ=o1dp-ERJ8ir1p005r|+h3-&JlV-1*HTc%r|!q;j)vB|bF` zvz8Yr25U}HL=*Ylz}0^MUWaP;Iy9Gk73h6YSVjncdFc9GWl@62j&_yOl8N?`qV_Z56P;il>Nw z=SW**^GdXnFPoYGt`n|+dLO^GU$0`X#0 zdD!|}&h!&4?%VPg=@>6ddQL`w=HeIAtjTy;6Rnl`($>a6Z4{o%+3st+IABNOOpMzH z@?C}O9Xe#h@P_l!9W_T0M+LpqGYi2h(AFsvv3G`N8N23~-)-(sNs+qK)1SoHawiny z1u1X&`zjix;O7wZp<+xYha`yH{pO$C!X656+J)87(aZ-uSg#P`o%ruz3eF2Y*yT`#Ov&~{q?#L=% z(ILXWvNUh}SLf&Ui$%~?#+vrqJ;q$u5TWa+6(M`?79w>%FJ?8i4myVD2W9TEyL%+` z%iHm$%!sQzsp%{w+P`{PFP5A5j@}~ACG5)%Z+80a@g%3rP+hko>E!bKKrUPCJLBhr-Lo?ZwMEsihyZVRyF46qWTAkeex)`eP4->CnK7Hnz*fu zb~Ib20*s>zfV{oqeTnV@`c`+ecsE^5aC(~f*mTAvl3iWTNEDE*1mUgW?8HQbuYrwH zcJM;Y_(KP=9z%5C23Rr1#J*S9)SRX#LTmDtJp$mtE9dH4La7i5F^y2)s3#9+d)e3@BO#?sJZ zIX}AUwPY{om@x+DOHJOak);a0H$#)lDozWB2F%GdtzAbyG;!r;8C7$wm01n)8VmZVXE+@uprJ#w)9{>5we|1K zYcC_@!jkMyb|!LUUf1wtZH(Pr_A!p&1^d5iNYDS3t5zEI+&-5aw2Nydz6@>oBr}{9 z(i+%w({E`ZGC;SkTtD>$?T~rfElB>3dqv2KQqlfRiQOBDvq##1Q5^gUDPj4 zh69h?w=#X473UKcz}kHHl(3?QnOplTxIbdIwGXr(a zo##mxzB#ns{$#0Xh``!${IP?QA!h&QBD5mb*y?fUt;wXD+3{5>v?pe5@;V}(nX=dW zAkKS=j#K@%KEGMSiTA$MptsZGlq?1vH8!94DBdgkGHkIRyFFsYY?p`EcJiGaL0=8q z$8G9HTxZ3hv!+ZUFq+2PuJVl^N5cNB_=Q0Kq26U_F=2GU`^v_Qolx76(7mK8(F5-??q^`a5B_FVbt?Fng+NDfa|4@yQ zkq99|eknc?@_=_oPSZ5x@ZB~0NRTW6o@U>CXkv|o2%2{J=O=&KOLgw57I<=(GxU9% zGHB?DsXC^x866*=9oeR~dOi&nFc#kWtD%#S<8eJo5_zi)-n!O|Qx~h|s;p+cZj1Mc z+?*PZX=di}R;;ciG~=FsS$Fd}1pxMCEpa={w90q(m-`cy9Ci?Hk37x$5`Z0anHkRA6s%IF=~&T+4` ztTCt1`<)|t8wY(AR`s=| zd>SAPt}(Kwd_rmaTYJ>Sx(%gYZNLIo$^ca{a@a9h&ow5+^fxW9LV5$rj~q5!#hGMdNz)rntF?~yI$KvSt#AP=@emyEi1XFH zC`}yvVK$)p`TC`{f7NbCCkf%UrX}dtmfB{d-nh(AA>TD3h3an=M4A_WNUo^!N-QV~ z0yMsuu$TYy z8k4(m;~hZE{6M~@q6-j+2aG@SUjenrfl~Nm+!dxyl=nzDxn;k&<4)lKw?l2?^-=3X z-0kPj20fe?zXiYTlmm!~5ZIYAJE_dCMY@0Z3FFhj(jM>fe#;jCX+jS8zo^FR7T^lk zqIc+C?0GV!3X-S%0D*7o<{;iyh=%z&bI-B*)T0};Tp{12rdK9lX?*j&C8R1fR!~4t z>(BA4)|SIr@&mk5-7~mX^MS3Xj{oI1%VYJ3k|7)ryv`JL&uxFW1>%Ph9}}9-iuLGz zHk&4sn2ujP5^q8Cn&RUp3;`~mA0IZt>&Q)3X}9*YrXF3VWexeJHoXEmM-|^OM8O9h zQ$W^VkWYd6YgDn7ss$Q2Qlbw-dHjgH^9$q`BPSBH6y+gG)8Dxs^eZ!U(<$g?S0pgG zCY}gFQU=%-#{*Hlz6}`vJVZQq#`hfgXhHM&79K$n@(Kb>@E!sO)i&n7RNdZxtg3Cd zUxAwUJ&dseoKHXcS)c70*Jbcj=^K_k3P`@*+5wv|TgdeIi*^~wHIA@3dW zJC*F~SaDlUTPv-3smC3Q-Df{V7-`VO&$Oyo)skZM++cli>)SR7eyCH;y*9*ybjY7& zKq5TLy6VyX?ExA%-|ZW@z$?@*L~hbVlvvb1@&_i+qUzU`;~6T>`lk}Efd{WHyFX6?NxWMsP!iW80AIAj}O>DTxK;!e%eO z4SprP_lS*9_WiPukSbbe5asrVs8m?cj%O9f0=xn&XaV1DQ)e#nCLKvXYAsy6H;^|R z==YKQ2b4VnsObS^*|42^w}cc!H(B1xYz*xN!!Im?r?$176MN1OO=x*i^&$Y=M&BhZ z8KieVYU}3?u456d;c7gpkmuafdZ98qvFEqQNgb2o+~k_n7cP;Es0A*lE(>xH zy6g=+^ComnUO3V&Xz=2BL_^p!^yQI_0$w(bbLjQUEf{~k+hjCgffz6@mhw@^K zBPi#&Z)oct=x(3+AM~H*iYI0W8%qESi?|s*x%J*E_r(EJJs(1be&cv0+3xRL$Jz&ZKZ;>9d4z_9Vx#Mv(Oy7ay z2rL{cc9eM>$QJS6wt=t;u7Kygh+zc}NNoc`&|G>QWZmDaqpgeBUsk=7 zJzieg^=hOG@$W{kU;Oi8Gjk`ur}Q8sC<)W?@EE_IPAT@utw;yJy*n$de(lJ+CFgNo!D*1A<{Dmifzk;ylcu*O>t|;Q2Hu z9x>6v@L0ZImG{LP25J#^$tn=O-SLmDGM0GnjO?5N=D_;$0QgOn4>ja4KsZ4ch|+sc z_&VKBx4@5e3ugnJIKpLl`1gK4HYht@z%;cZxkaQ(?g|2%x!yAKpS5(R7@Z0G*#(YF zM1fZ>8NU<3lu*=0d>I@O?Oh@LG*8M@4}%+vI{^!}F#(`8jyPz})Ud<=Tf&4}=R01~ zap0GWOpQ1i-GF`uc)9}=)bJvW$F>31N!w#(nkj)#$GISh1R|Cc3c;EYN@T2RIa*0B z_B9xU>|!2|2O_|I$!!6?nXz%hcEA5vyz*-8RwuFWPN9Y+wz5)Ku)1tb?-MK9JSfJ2 z(+rl*v%n9Sc1h?aJj7$Bbnx}>(H@Zw*wd|2rdkqb=9m`}ZlLtU>o&RBx$vzfUjIB+ z2ttfP&enyj(fx8tK^(Gi(qu?xjh%~GHBgu@s}J2LnxAD+z5iRRA4D|eRWO_FAXiI0 zVl@AvjoKtjB~d*tj=H2WzY7C-hMIvlo2PWJbReoN4*N6(c~*!(9{IoUoxASjv$6GT zS#Q8op1^WMN427&J(7=Tt6Y(n^KeA5Jmj*0$Iy}bR!T1}XwFBw-ba~dAiyJ-8nM~O}s2~p4z~a2;ehIMV7sHl;3)Z5^ zzQ9V*h-FOJwTMm>#-l#40Pwy8$#8R z5<|G5`EoH4BYms4eI{*({B3D%8UJ?MUBEU3e(H0ogPQe8y|rD}Q46r*=7&|5?DGRs zmB@GeG99ZHs=&M%?M)ZjYp>DJ!hMT}h^s)=7(Li$IOnJlrTXf=#C$tC5DUk+N1=sY z$f4;AagbPmv-J{IO&NPw*IOw~xuIQJkNi1x>FBYwW_q=^WAl^ki-Dqmdl+x#-` zk_JJgu0^%$H~atn758#!d7BQk_)$W`XX)PqyzqP{AEq0&!cM$u-j;( z-1(ljOa(pVlHUwxZ;;zcAYAFNm|nCldzP=A3pZctZTuD<(GwNw_@Zmgy6IVpC0 zSv1De29?D?E+9c1?y!l-&fteg^ft1r+)A`=;6XlvxOH~!(#B%=00)X~Q5`dNL{jZk zWul+vY!wV$|MJ9R&Z+@wKDA!DS2R29NnYn`wXwiN65|2w4B2tsm>0CFOxj7Veu&b% z)5LZXBiA<0xbuEnM?0+*yQ~wCZmkIJN<$MTi7oEk23?h=YcwuWex2geA|Lvk7zyG zjIc#{NIbn(S*_vwXuGlyjx@D7dghVx-pg^Cme}@a2>~$GruSxoGzVfmo4EUS12cKT zzI1#umc3b)e>cCh1s}SVrlQLl8g|o|jI%SrxPQMU3Uk*6U4LJ#zgL9-4{h0A?zr4Q z*b)&Am=%Jo@QAyxC85gQn7DCv-S?-oAa~@7iU5WWDZ+jcO-G*a%jMAqtCqL|LtlKe z9~4^&WOKbHnKTiRgxS~%*;P7jK$I8QDar$0+Gok>UJ!IUg5~oq!SGxNVygtojP|7A zW47~EnHq?wZ~d`o>%+4yWBIeaUF)}``Km%s=7iw3cKS#H_HxeeB5QF=ZPYeEw;ec8&!33A z@+sdp(ElBm`&AGJI&X;-4`V^BlZZ-csebmkWb0@MTK3G!V#h&C-djUzeoj!Qq0yjh z*V6{fInr}&-0--5lZq#BnuE?g1Kh4bfqR*cjMk7EJer4ROL0C2vktFE6Wia5IL`1E$-x%; znRJgBY2XmPm+M`O$p5nD^BZZSJ~Oj>C|%)@V1;XY+1w_ssnJ9}!qu)1Y+I7tzZf4jy90YmVM z)OT*=H#wga%j`)=!^{OUdY6jPnAEZZ6;Bh;cFw~H7rg;jc*jBoAT>Jt3t)oRx-P}J zN4Y{3zfXh&2O24ENb4ba?`K$LMc*ryV`MLB8Q8}Z0+*BXS`YGkH0Apr1B`}+6;hHO3b+(@#_SW-Nw1*sx(=CnW5j0qTScl@H3%FYjMEsl#9}WQGa6i zi4VVp#)`CIn)4X2E?b1m70GYws+g-Ttx*kN!mqa*(`P8Va};~G3=TbGob(Xh|3*%%?dH;o}EgDZPM;)MoEh=9C z)h(QKrfCKj;07YJ`8J}r{{L$O%Z}wpZE#!p_$jbCmuSzXWZ3!6nq6yUzl0 z-!+AXEBS=0@J_Jj_rRV{2A|=*9S<$TI}oDq4vP83?(gHxsb+EDt*I#IlL7^jOzo*xGHB*E@pp?&3ulB06#E*s+z3ZsOEg>132g9RPeIfE z#?nJu5ODRe1U5yWpX~qIR$vT!3H4X98{m^b$=9!*{O1}P=S#@Y#xtqyAI3=Toov$Yui^j7c9(3 z*GhfHLnx_Cu`tU{BcYg3*OE(LnXgjx`@KE-N(SEiW}^`}L5lpY(B4u(QQQ^O^<-cZ zS~#^uK3p{rs;9qU?rQ#DP}uPaCnpG6jj%z_)hrLpA&(Td0j~6wo&uUC+rGRTu)YOp zadIkV9+a!DfF|iVc)U?ZYwsHW&{8;sZ9Z%Hhp)n$z@9D#MhTOsc^L_TJEUTN7-1Se z{X7A^r_>&IIRj;W*dF%-WYCH{FF)65+ z*K)^@*ooRuUZ5Z_@Dgd^>u4AQRXm==n8kwrW>+L@&lmHw$B0RG;Y`H<35{!)_dVDj z3k;n@$!s;qd5eOe?r$(4pSBcwX6hn0rE^F;Q;#b<5JOwH$|%&wenvr<)mR-p2u>Y?vUh&|>&aBv&21`A{cF(;DjvLcPhq&0{f!c$8?> z!A>BL7#7Y9>%2KZ;Gp?iC8?ZBip?PqFxdp~NngL)A|!vQXvM+Rd|!Z1ikM>1{NS31 zEtgRVS!Z4m#=4p&YD4X5PiqD0lDV05dTn zDd#!mK>G+-AjVk*RO`Z#m+ag~P``W@lzVEj{%(-s{;kg#1 zSua-e4?|&xCfC+*^zG3t6jb_)PQ(BvSTwS4qCuFg6=|kD`$C2tGQv+#Zr0=oR}ekZ z@D)urZA|LoI3th@=_@kGp7AegL@h=+|MKQ6_TX2l>1sNW@A?yIwkEppt^ zH|qxcodxOpzE%8Pdq_V+NwX$r`S$BNW)~wgW&vV-nz&?QhPl`3y=0jvvqqyNKYR3d zP*1etNI0t^zR+JPvx~Qhfhhu-$Zs++nrP)2j}XK`SwFUK{(hrOt_lS59ez#n4P{5k z12o)oj4AECS`&fLF=M zI>gz)#A%{kl1;rAyml$+xGK99S8;|Hc8td4pwPiK(M(hBn8_JRJ7Wkw7wMdMk$ zdGKgF3GT zNDHZ$m`Kb6>Y7ZhS)VxsEuBPtyx;pIxVHhwxJE}w#;-~o= zAbTizVbnDaAhbqY+cvO>|8{;+-7;_b=j~MQC8o>9-NzlsP|{zU2Ui2^%V7&&o1h`c z^Of7sodkKPF5>4k(;)p|Kr^?TrKS_!Q{p z{{!gD=2fKgR7@p(95x+yAVHpsy+6s>Nc!+L0tSLAe)@n|x2)&3IGS*2`s(Pn|J%VI zF_;u=r=&$dK7oR29T$%wTsjj^bWB76?B9uak#r}LoQ5;U{?PM~8iZchZ87aT7HdVV zN@sL1BvtMrY>FDxmBQqZ4CFJH)~KBTlq>tOD?T`5Yq!WaJjU*WeW_dm8J*UPg~cjc zINOxem52$kqdrrGd_XS=h}6Qwi+hpvOEO2aKU+m5#^DBciRS)oJ~b?(!G05?pcGR=_@lM{1LOfk}`1 zp}Rwmb;6NL0(s8`Asc*2@~AV!)9a>hTYW()<7tCeYp)@9^kX2bZbDj^h?#Fky`Ii^ z+2GaLYsee@xDBe)p4^gQWJ{*Lx~a{2z#~rm4kr6s{nI#vLWj0%b|7ds`GMS&6SEPJ zNuFCKe+U1l+dxi07L3D}R)-3@7Afv&q)x^2v|)WY9ER~y^@6VPZwd)LH65_wwzUkf z?Ni@E{p*3R%yDa&)K{5=(5c@6YMk~iwbq6=6-oE8qPqdAPJOfDUX*m)Gl=0ZI)+TJ zQ@;are!7{p8bykCBV%MO7d|QjVWuO-e}!S3QRcxdSLG@0JfwrLs#oo9(z9T^1ZnLS z?SJ%?d)2jF+#O9R-ABXbaXZHqcQaC>;(4mSKH+7}C~O$wlxQ%m(Z0z>JKozHp`t+o3$8B5~J^%wwa zr@kh)#q4NGajh-+KAGA*ZIO{KUzxj~NXG(0e(G?5+Ct@pfqd3R`iwIO88v_Ky+XS# zR892>CfID%?lLkr?jwgGzD}5AoscTIC+eTZn*4iQ02|64luq)7NRhLlx0|(g+oljn zyo@R;+HNol`Bm|C>0kHy+Ut0a!Dk-=K~aGG-5BU?Vy)f02`jn0G%;@4w)=efNH|#| z9@QKn5AcIIDBWq3>^fzRm2E@$#?w4#V^Y-`g~)+)8de1F*RJ10mRyzu(3m0OiZjX! z;E4$?W3juJ>-nV6E2!PamGPpY7Ep8Cn5uWhxYGZYL3%Z>pnQAnA?;bU0d>MDP7_g$5e0u@^02N zark}%-F72&x2pPRFDblWWzZ`A1--B3-MCf7q1DE~MXPBFMo->&GiW^6*KGhQoZpiY zGy*HPH9HE9R~{i_Z%FC^6UnCp<~(J%PjUFcV|-p9C@&dx>OV^`Rc@P905CTc|uTBz@pP3$(?`%(cTGyTKe;zw|YCd+vJW z0dmO|wJRki2B;l}Z6&jX2U*(6rF$-(z{F7!b!pPwVw%J)u~2y{!{&e`WsdSXOh%6t z@r^p35K5HW_T+*kZ8GUNHqI~X#`2ANvQ_UW&)iHCU^sP*ha0&O^S+LqBrBs<^R_4x zxjIvFBIR~=Ea<18^n!BV=l0N;#=oL|J!~o&5aHn^!Zg)83Vjb!&rB0wsiA0`+_8Mk zgG_pYj4s_R{Zg?;`Gn=Z2B@}LBKFpHdE5-Qi29{32Dj$+Di4#LAqpvD%_HowG8#1! z3QMOQ!0aRd7t7>ksxiDo!WNv}&6;)$vTuOmhoMp`VVzassF9dF&|O+O4Q-rfF98rx zyOytNZDgy+SPU%!MS1jG5KIcjXDP}w;)!9h3+*(i^!n-jK7PZShu$QB^ z<@zW$cis&!%RwS8B)t5=icAr+;c+*XrE(43C;(zws8nQf@X`^977r`nT`#36*KnT0 z?&Sx|9JE*LOr>9xVkP3O+>Oc=T(SZEDW%F*qh{aROSY6)Vd*uZIZ8Fc7J{Qg?&&rd zxiPn|hnt(u&-;~Yu2ca6_6!{NW(Kz7-m=Z_*#4BUyx+Li(<&^B91A+HJ>&T**m#&K zB8V&Wm2WlAsQRsun^`MS63@jFt?}egahpQFg7i``1E86&q;xB4+;bspJUSG*rHeGJ z!eRhn9G}M}WT@pevLD%Txb1B8hxf`LWM2jc$pb6{_Ta z-Q?!QCynf3nL8H!hNe7Q$gmEO*Y^xEm2x_Foka7?fW#ybr>Q*9nnn(vb%*jt-AsvQ zN0B7EhBocKnhlPIHN0&F>V1+8Y)}jE&S}I)c?h%F0Ei_Lv6Xi6jwO6tx~!2L#bPlM z)I6qfWh=@&@Ln=9t5wF9>7(8x4ZsFXXW?zK3TuV5i~v;us6gNmtSpN1d+t7%#+EfP z;>PIUO?2w(2Ny-5p1jyYgHOR+2r+`_tsopZa}h zNJa~_?ddKix+#GK>85$m3d>|z?jRWOABt^VfaKyA1JQW>1#@La!LtbTMH@q|r|(P- z$UX<1z_NR~qlmRreaU2k!GF?TZ@ku?d&4hh=cOof^zxHG?mW3aeCyGp-_5>&Tb6uv zuFHzJlinw9EKIq#IC=R`D{k{I6T8lB^-U{3GdAf~JB)S4+qKSBo~wFz798EhYxa3CH}}^?iANVD-|00c zPh$+EQCTilh4trLNnvkZxoN#Jdy{6wIjT(Yb4{~Ot#92Ex<8x9iy^9i*?;KCcgRID2|J!dE9*OO~X^_-l8ADCCy=DFwtMz8bwgj)SUAMzma_3XUI4{djJT z&3#p04d_Gm(v0CoQv8WE-GgVGSolKi`{|j+S81+3lKIM)<+)iKeXy-X+(CBW*ieZ` tC@C2qk3$FYz3LCL);8Y?J%9P$J#O@>+DkfUR5>!D)h=6$oSmM3{vWd&5?TNN literal 0 HcmV?d00001 diff --git a/assets/omniscrapergraph.svg b/assets/omniscrapergraph.svg new file mode 100644 index 00000000..0519ecba --- /dev/null +++ b/assets/omniscrapergraph.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/omnisearchgraph.png b/assets/omnisearchgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..f2ab22d69fcc53e1d0ab095ae3f9a3830e702040 GIT binary patch literal 58062 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�O%?# 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 literal 0 HcmV?d00001 diff --git a/assets/project_overview_diagram.fig b/assets/project_overview_diagram.fig new file mode 100644 index 0000000000000000000000000000000000000000..c5fa03d403943c31ccc7053de0e5b2a7b54bef99 GIT binary patch literal 53007 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%0AwJYKy4K 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 Dg5f6V literal 0 HcmV?d00001 diff --git a/assets/project_overview_diagram.png b/assets/project_overview_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..cf4d2a181213717c0eb33939bb37139d366826b3 GIT binary patch literal 83949 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 literal 0 HcmV?d00001 diff --git a/assets/scrapedo.svg b/assets/scrapedo.svg new file mode 100644 index 00000000..0519ecba --- /dev/null +++ b/assets/scrapedo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/scrapegraphai_logo.png b/assets/scrapegraphai_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ca24928b6d3f071d220ab482839bb120d1f3f0f8 GIT binary patch literal 33264 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%0D;6)LT%{I#?}rsG8?1hD9%q-m&aEbF;Me|T$@xa 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 E0CgtT3jhEB literal 0 HcmV?d00001 diff --git a/assets/serp_api_logo.png b/assets/serp_api_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ff2f1b01096d8200defc6d914137433a3820f02a GIT binary patch literal 15508 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

B!gF>AoKXJ zpFMT*H5XM+{@Qno`qs=be-@4mMn=l9{~5{O%=Bk%FwsiUi7BJyqc42>AhH?3(AD>!U81`^VE}%s~!ToUZ1^9gB8ud-_+~w>QV@$M2Ua}# zR_wp>A=8KSn|$?k)nhKb%E&LO(WNOIESI!Iil(m|$$tg3%m&VkbkIqAS%Wu9iZUX+ zgIgyeXb%+l>SDni`*$yVe&?2_{&@Hk>n8|$5_;S~%+S1d#op$%~8=7=Hew zL6hfw(SO>sOY)1WCpe~qoPuJ5r3*4e!<1G{IV45`oYC=pOnu-|?2SphW3;`Hl?Cj4 zMZ=-`_09Dw-`KwS#g`B5TfEl%Wv5($oHCFUbVb_X__l>>WB&ob-6f|^7*JVr!TCi4 z&YD$r`t+Ip;_9&g5U@QcF%q{xPLT-8VaBrNg+#Wcjk= z^&6HR`uLr9j~`usNWaDIft)lD9@;)xf2i$~^)CQG`~>cTK7#{=)n|?>>NjF+QQw+j z1r>va<`-8FF6=Y7I!0l}ZRRB>TP_#=eeTAtRK1 z>|yLn+4uQB2QBaSegEID`N_ z@5{k`;Ky|ic`ERO%0cb!O;~ml+XVP!zxfTt8!%XI;Ni^&(4mLy@98?gU<}pJi>eNl zY6^ohcK|1PK8!j0z{NmgO1C_+}zg0-4>TI&N z>Eun1s$M_(;*8JBGl(uGEi|!*dZ|b=e`OnBCNyYkl#%CJM$siAf@it%jCoN3bkTi>#$%(>0 zUx~oqI;FmR+9!6}piF&v#DKpJb3;8K+QXKXDsy6r?yo`x>r^9A9z#_Tv0$kzBhl2} zYd*wAbr!K`A60_cm!cZ^s9LSb%Z2X?IO*|)o)r1liaxLJ zxg@zsXI*JIEwS|5CY8ZaTd@M)M9AM{-|Gp1!n>AcZ-lOczON zGO&3hvr+l>N;3?evEXMOu}d|zy5O7XsaW6kWLbCX{f+haH+l;-_lc!%(A|d7Dk2Q& z+ftXaJr(_X3au7h3s8RTcl^1RSb4@A9$`iMFlfDAL=wkqj7Zu*=*!?rE2W8A_oQoX z*#i9{vvoRLEK*uMcY}xii++|JTVBdY8MMoMBMCN`gnv53bnOnI{l39$w7fs(Ioz>O|*yqnrD=^&~OqJO;MK@od;5$*>%(c`Lu4uSTe^a9M zj7QXs0Ve*ZEbT7{>lwO;mRQS%j2+iRL#`Uc+)aRF|MCg zhw{dVL!3nQjGm6L`-Y85SjB7=Qt-wNmlSSdbQ}ec^~UgSxjWMmxr6oW~u#MBA?WTQc#q$5KC+`sXP`_p&2Tu8m-q?SZO$~=9F%O zeoi#&WhC~v-zRY|hU48bv!^}z`8GC_G1SNJtNHTD!lk9)FuXd_jbB52IGTU% z$0a1{i!#wLw-n!*6+b=3sv2;+E7gOk>c$r>kxzXpyzTeY2vP7;VO~DPwi)}aG@#r8 z4*H!tY3nn#um)y1R&r!oCOWhuK62k3?WPxX*oD!4KGmR%XYyNx`?2|2x8$#n@^6uD zAwPujDradSj09ZRB{d6+ZX#J{v*u?{t1nY;B~BmX=acN=BhE@yq8C3Hc8hx#xJBKl zbmHakoUH<(8jC(mcT+;SzU>~v9blrJn9;0UM?_R)7^!a*>InAdzb`(p6Tj@*O8XP| z$36}dNx&f4pEUK7Ji`tEAPxWs&lU-RBpoBWfK;jpKAC$SsbHOAQ&pka-)%xvij~1g zJ#a)yAoNHXbs7v3T}I2dU=j=8%+=+^Ui?u9M8u-~+i}eKb{1bMnqpBsfRi;3wRKsM zLN8f>EK0cJs503JvF{L5DiqDm`tb8_G9r(sV2+RX^H~OE{H@TK>?4oJILmov0lPgN zhc||NB)%kH@7EQC4?n>dVTZy>EWN|ijx!=TbW}-Yp`c8C#S9-_F00weB~YSDHhZ2z zj7w%Z^~^50CG`i}n+C!j|Ei_rw&Mj&zT}hJp&(&ZhA;>N49qE**74JPj;e{b6&i)C z`7E#DrtY)@)j=dwXC9>gCs7bx3@K1_z9p$N~6EQgvbg2Y#E+FI_oKs9P3mAxUQrw z--XfMK(xm`kp+PYD$Jj(@3hPMvwN(su{MdaRU`aJ^sK`=d@LsNqUGT+vvDn_O5}^$ zY_4YH7r$58Ct@V`nP@d)tEp=Q_xjQ>At4#~Z=`9R*ebwhr)az0`}{xf`C zKrGu0`+J`c8_yV;zr`64$pZ{@EuD0~>D~mQ`v}Xol|U%i0{%}2*|S%j3si?ocB(T= zk!|~b;zJ$yhBJ_VthGW@p z>7iRvxnCV-#SMq`Ft9{Ybd^Zjomp&G>@D=2_*!VG*!J6U`t;Ic)%+hQ1GT^>(R}9d z0_HxbzCB6DQhx=@Uz?~Vs2;81k!*Oz<=a&?@ho>FVg@@u%C6o&A*H#DB4gOi z;K(uk81$Q}Q$%>xJ9O|Dezy}M7694QzVbvFD}{g~QMxxt+?^?GEIB6RRq5nN*kZ|pol5f0OiNtFCaZ?E z0SyqZz|}wk0au&L0FDB>@uMw*QzZea^o`xYG`a{w+qNeGYFqCCM)RpS)qp5PKJM$b zn1viQA}N~B{OwV|;289aKK>+$*O(UoqmiYnSe&V8Kyd6XMpa-)7MFHl$aDzftNCbP z$iWKrWlJ)syN8e{{Sfr+Dv?6A59C2DglgZk*_!>+Mfjnt;s)MzO9>h+vUzuxU1y|=hQt?{5&=*pPR_4HP8*vnUOJ4rjkGv zgrLt*|s}D`WHOUlI>376X*GlCGk$0OjL{mL6hp z7}J2Cj#gDnHazK44;-E9jy!H_=u#BGJ2!QjcOw@~tjtv*ZFMA0Q&jbx^h0kgTfArZ z%{J-(r;`_L5lN~$P8RHeoU8_%tVRgB&w=!zwhtkes0N|YT3T?5Iyq7#9?c+?9cjCw zawt$g$#n9uE>aF)`(F;OPv?(Nuf%(ZzE`T85=;xE;?T-|K;CA;7h$c7707X>-D z*|T($H4)O}4?%i#kNCzwByDQz0!W&aur3C5E8~h8AXH};hr^{$)A~+wVbzn)k#A>Z zqJ_HRBlYiSG$pDN;m$bB@+ZxQ$x5x*B&v>Q$3k>}MxqdiMAea{^lTf2HDWEPe4eYl z$Uzw6p?wIctdlxzGo|9RbRLPe!Bz`7*@RGi_KnG40f>Hgo7LKcS<@`e`_45r_@(0px#PsPagss{(-S_o%NPis$n`?4e)T}YfMNXp6K$x z4;{*^3Xf6ZHSe!b`|E!@u?|D86{SN$Xb2KQ(ZOjy*eV+c zfJ>mx_!l`}OB*<~ett!b9NV9W-quKrEX8UzF(5DwjW3D1OU3AUz<1YQW75+aA6r=Z z$ZG#I+vVhIVe9uR&dop6)DVwzN9Nh+xS%Ex#gCBYnm0*HWd5>_S&YH@kqEX+WaHP0 zRzC*_C7XzPsJ$VNLRAi^v*{F|&VcUUrMg?2?MAk3scM8vi*@sZrv?(y=QI-|tFW3% zM-Z4+faw*$v<*n^CK{U#NG^+$zT;U-2weW9I8H!0{#w|32$Q^~c40glG6G;SncOJS zMM?ln6J&nL_E}8Sn#y}NPV)FGsmqeypxfBt-+Rz3W8YqmZfSt_@Rv#faaLf{aB4RJ zSav;2R@x3N4ha}ke)AOU`0KU}esBT`#(wj)5?lk<$ zX|B2eAN0$Qp5o^r!?nb1ea~agw-%(Cum+V2Dq!*nwRtf>v4C>BUZ?}8ZF$2t#wS@2 zCvJ7kZL!^GcisWDXa?@r)F-ToY1d7NB+VeSG%zI6Mzu-Wgg2#=mwdZiTi$8Uo?;Kbyv#Cfx}BHKJ-c3KoZtU-G@K8kN+ z=G#U1W_{36+M2GP+_5_(+NoWh=|-Z!-O$J(;f^MYSUO7)k`7;(2wGeAmkk7#3d;iY zLfe+xwXIyQG_>BAcjy2Rf$bnGSP+=wUv!9aPV#W}Iqb0uB>A4U3H(s-4#0q8@s0cq zAw11V4C=V&<#$eC{kiXw7$P+KU#&;ms*rdK)R$3f#O*wFWT4dk0QUJ2iM6NocgDy|`_z+5!cwX`3a{49uo>=@{ ztCZBmCs#L1a9B3_@1jrR2J7_0E!F9&=$x_qRH3%K%O3%XVKIs zjATPf+T3?xoh&QhMH;m!k+R4<8=sZ16^n!K*#<|te8HeYJlE#XV5~7T^1}kcg>qrH zSp8HYe>yZ8jQHr@7nXOY{us$16ihYKh4OLJ`}3L`$P!%)b;%d-vTzRnq)6L9er|Gw z+WQOIypi4a?}jbw=yUQqV3=%mbl=@}Ip_G!^~A^l5NG0W;+?K{^QYU2tkj7CsZn_4 z234nb?7SOeRF2cJTy>I}nsCdBiXZ#lH4rrEp_b>D(j;`^m=|qxA9jdigF$ms*Uu zs&AV14a2C{L^F`4PyI>rG#Cj>b)pb}B>`YzqxdApo;pnHaQVVBvm@Wqy=mBYg{Mo% zHr7*-xBV2<5rTdPj11JFIUwi=_iEK|ow*ZYoIq#tEg^7_b1%nVA}<2xegn=`Eac%% z&c(FOJ|edP=Z2f|2dSqtv?v4%WCvs5@_yo(0{7#u1zlzHIy91$mTDsk2UE&-f^*U? zzT!#KUVmY?bOP`p(;6f}#<%rn?+4iFq(-9Y0)zHFv5?ucp_$S1+iBc?lHK$QC=I`6 z8a@@NJ2MS`LsU*glQx4!?&27|0#^NXEhZ%A962ACiB=-TM@H1DHI>(4^A-$w9|dPU zRh4u3(9Du&(XTi~i z;~g_CA+8zel1D&T%7L)-0%18Wr8)$}NmRGKmXR9r5eQ3Fbp8Y6gPpJ(o-#5Fdrj;J zPOx!n?3zywkuWl@%xtQs1X`@QU-^KmafVe>3U786mbs^OKgp1x`=}1 z*B995av1Zk1!+sdIE52P^?FtDax)v3y81HwQKWAOZn^-CF?i^R9FRP6tOD)oo%H7T z9}~Uh)IZZ=xs^PyH-H86D@&lydqXer^aNWa*M_WTb!u$AM>l;c@6&JkJyPl-pL_=&19~q&GQ0H^5V2-M z;hP&Bp&GzoeQbuOVNkCRtD- zP<7!m6nzPQTZRyW-|#BOF{ne{N+bzdq%K-s`j(LbmXgk$3}370ogSGvujuGIM&v+%DPk=fi2 z-OZu^X9p%Exy3(|FKoHC^p4@8ZQe_H%~2lN?nL|r6QX)*^$#&&Vfhot^YyBQMKm@p zVfB)iD)GMc+D_`a#C}{UK4k_`$8a5O!*YkrBXiH{qZv!&;iW)FTKgmUSUR*e7*vdW z0f`vSA~#vY3UxYwUSe$&(!;^BRnZ+tJTc3e5SbA{XeS+c_yiD7`X;>QBf~^pw*~ps z5k8W7pmbF&M%*v;88S3DL6J`(m`6FzTHV^v5W`2j6P#p&qUS+f^5DLs^ORPSp+vFo%AGwGc&3{D{cw0c?Fsp|W80tF9%gV96+rM6cRc))ZZ7P2 zd$j}srl1vS1bQBB@-VRkST19PkE|Y8`60h?h|e}WX)h%j1`5)|gmL#Qkqe(x#S6QL z5efr7m#`J`ad_vyFj9uH$j)wG2J02#w=zN-(UE3MFu_=mO1~P|49bS{P~!}2wwn#- ze~!zbZ1}T!?7CMD%U zU>L+lWCFgl%*8r~R#KVpm0{eG1WeNOEFa%SyQjlysWt=2BaSOu^olGqa_aD4tR+~W z%;o_@oKOJCDXV5@6#hGUN@lNphe3D$(^W*!(EA@Uz-$C_`&8=Jz$KD~+V=I#*3oa)_)}P=V^GgD9n2D?}{u*r+ zt)?^-p&ieOcopNSANnBJ{LwDNOUO&LnCCkX!xHlGwxHVTYLKOp<|^M2n*hY~2f*Am z9xpi~vGh_jhe%Z_(NgNDs}8N<0-l40>`<}&6JB#!Jr3M3m7D(g0BoibE18Wct>ZcG_7eN!7tZ z{nq0(iF-!oZ;NZ>lWW0R{Z7L}giIDRExYv|f8H(uRM{)#WFFsdpvvZAk1t}-d;>Yh z1WV*8Z3)7c1oL0YBg}aBsBPZa+$yTUT2+s95r`*&LO~Rd%Rr5W(|I^CfJcEu&{SQH z_eeU8q)~)3Nz7RMjf*r|s=d1Jibc0PO%1<%+8z8|pqk<$%#W0Y|F@p~w=9T?1tE^J7f%IuOh#V1xB5}7;R^f;=ca{ zu+SzyS!9?tkV>>%F9vogZxJK`yCer*@&^zM&3IM2_aK;CJ#RR?YZrQfbip|;mpWjV zGjO61uuC3R%PD#*;j|XbUHH8CH}A3RNEZ5X16unpfbL&wW59yM9H{I!p#=$1?0tVz z889gXtqy1(z~lzA*FN9{(?YE-Y!EyZ!77XWna|n`ExC!F34G?0U|G+7LB70YAq{b!AtaFGY-v)F0B+k38(=(-D-c0?~kUe}<)t_T%cb7%D4+CLlJ?=>)|1W14D`rl&cAoS@GP-v!gWFI9*@wT8-H;by>j4;-7}aQ8qBKezb1E?pSo z*lvyd6;Yr@2J3In=zz%ngG<4%+yW|w4VHJ{Jq?;oTnfDAse(kf-QQ$)4}EwF%J9%T z8_s8wUsv8a>D}fO&cpE7-qC$=30YqzT2M&VC-_(_d%h{?bIVA9;OamG2u^?Y%%70cPup#)qnqX*fn65lV zJXxUj9sYYCyfU5431Bkn5}i)8@4y`5aeKptj5*G;k=sJ_#E(tpCJ?YbmI52XuH^Cq z8KfI9hqa<|Xx#C;Oe%x92-u_oIxN7epx;UZ!`{6}+r}BGgUuXl(hJyXm%pLxw)aNNRmI?o}etESfI0;op11TCd6Rpu~pa5B_mnVX*_0zFIsT!j7wOJs?$k0ks(Es zP#m0b?1fd zXPLVklIQQa6>Fmku0Qu_gFgVD0C++)i&&YFk4H^snb019>nz5gzhn+f4=7xfxMl(|82gh1eaDeMSf$!ih)vzv{WkaV+yaNJ%C7_&ej>qj48NxsYW&~Uv(w-Qo9)^!IC{2z)Hr?4Pr?w^_6LRv%iNRn!xg^vS5!0v?$crb}s;| z(WA=)AMO&?Upk4A4@1?I5MjLL6{;AAl}F^w$_Jb#cr07`T_dEPbuQ-L&uXRl%t+>1 z4CmaxZBT6KkxuPH`n@)9V7=R~e-vYII{@!{2vY$jo4Br9bqxE_Z^lK*Ji2)meunUY zs(#5yDz;}}Z4&qkOi%Z!;eap&>X5*O4)Nu0=D*=B4^=m#Gp%q=pi&Qw^4#6xff^>! zI5W)g5Bg+*JPdlYJ3exw0~c8t$e*%G&(9f>H3ACdVbMc{I`R+9cn!L}@h}tOLy!mZ zp;&4KHY2aN3rw_aKFSUTU3(CV(Ks_CUHo z1sn%f&O!ePITk32VbFh)LN$P6!MZS0+Q1Vc^JXzRbRb7fgd~5oJ%Le_9zZaqkq;A3 z5U75K?*jA?j3kGti~9&59bTI@Anx>Q9mPo93c#ZdVYW2kNb@fKx@8L5Vw{`&NhhUZ z+z^hdsw^~x31=AzQ9?n%2G)Z1Yyr7-A);iHH6L0m{lAlOJ*x&9lghWfL0^5B5oryI zkP!kSI=GGvS$#ylO?bd*hR5=x-{ml4u~GdWK85V0M54oE8hL{SQOqs~S(RlFe*wTw zTAZK_W^DJlDZ^X$vHOB+Zn@^ZD+htXDFF(nHV4SCSc5-h7*G}-9%~ZN&>4tnMj2;2 zir1=cLMJQRD+kPiHxF1h!u$u&hsW35>=RJp}`zDrOs3)S=X79xrru<18z_V zvT-4Na^w34kNBjv%=Z+Z!WTD9?MCjhGYUB9k-$c8o%drFn|E;fDaS;&$es)TWC^3) z$s{B#?)#@elgV9aLA#Ve`0(S35&Z1Sb4#pp@IVgjrX^M_S1!avJj>#P3r$KJ1z|3zE>-kBoVnG_AG|2`#!%Ez3(CS@cIA$*eO= z&~9SOq2atcrKK!1r3Tky?x6Q4eQ^TRqFv9b-R+|TH{#J$0KRsXMzR_Z|TgH<(Aurcmu zEh>8hHiQ+tOE*$)3Sm)EqW8n7H!l-QZ2ZuC`h*GfH4M6RASd`TNuH%W7A0y6u$k{> z!hf)-6vp2xELR`t`}+pz?0(RCs4Ody!S14k$!&rRhT4e!SjCpfk?fkua6=O}k!2K=bBV;dAxcUXZO)BEJZ0Hm$O1rE?+V5?B^( zlN*^7CO%)^3$f6W!|K*L9qw=>^+8M)PjEv&*Sz%W*lBt^CQ2>?Z_Sr7z5ZU?dD|nF zZQd#;Z5Hc5%_e$JSG9SF=Ian_bROmMr%*gk>ICH*43@#FH*j8Cv7m`cA!qxR>;>Nn zPer(P>VRP$|AAKTmea{|(^YG83CyM!i$n1@_%(67iuVAS&90d6in7qh=2Plh{qSQjF+)HmSo zTdITDHeOAnd#>6>t<{*>;Pb=yHddC2ROf%pkQLd#4tKfkJIl?}xQY#?8FQG~tlPI@ zeO)T)w7SwqRws%G4YDPQf?2kvFV3WKz`EL8*M%93f}}BoLQ-2sMLh0QVfoz=MU5gn z$0s$X^I1ftv`BoNbyu!O+4M5FjnUGj^ZkQIz!n^li#I)=^cqK9LEJfg^zgnXBSMtf z${&f;POIAw+_uIuhlNB@8%t8o1DjQuDbWaMCp--HW#x0Y6lz_N@xA)?!q}*)k@Qj( zd*DVOqn9(O?ogP)vo9iSM|%$ZoR#dR;<1X+${zQXA$6R~d{9bA7R}D7j9Hq7%{^oLv9apM=geP`z9?)Lw9 zJ|!FzT3)z&)DioEC`J^a*7La5fOSKWr{_!7E8KsaIAp!gGK#w7`!47&p}NXV+nb@Z zh=>t8(2>Fs-x3cOU-=)9K8zjH?KU;+J{@jWlkg;{nFef*ImQ~G$g-Kp@C-a2;h ztfetW)h+az^MGw-19uGc^aKo6Iu_x!X$+3Rx3PSuDXdYlq2C!E{f*u4>F(1P`(w-oPPl43HaGzw;5&` zNN>{Z9Dn51SWHyj*B+-X`*vm2a%f+nz6XwxuymNZyGm@oJ=hywYc=CJr@+lEtZ;d| zMP4LdI(Q-=gf1)4v~>8wt=-!pKB_%*GOKK!Tf%TDFVtAU>xlIknS&LVy?v6iOhMo+ zTUCJDj|p69XcjtYgdk=N7e~xyo0cm*I{xVR{bXsC)*Z)rAARucpXVGd&302beDx}A z9PQk>@4jV>gJ8Zi)7~vL(KE&+d@rk5I$uS<{K=1aSwAKr{bFOb4KLP*)gE$OfocE7 zDs$}I)*XNT=8YIft?iF@GCXVbaQ%K&p~;P_+Q;%WZ5#VkX4+l-AFp+$BoqwAP&UV8 zwkDJp#+qX!ooD@oD=jEd5~yhU+;2{}hEM7A@bNu#Uromvmk}tevMs*53FOz^aHHzr z?dcMO1CW`Pt!B0dty8#gw>(x|^>d6rC(fwQrR3z{kV0F{Tts8Mo)sW+W*}aqo^pTe*#Ln&f-ziYLv*JsQTi${le@9M3vF zO`Fq7dgBP29V3pZhl~QXUM!3@Mz}0A7G>wwwt-FcUk0{YWu!dYH66y9JjhsWqD10- zucprtC;LllgVVfDl#UlsE|2}NOQHDct|*nDD92~}#TU(2Jil#+7imRF?-=}zh?o0( zxR~~4murT*708u-_a&)9_oRkK8Z2mb$#_PjB2XK|^RzGCh78i}&C!vqvD?v)hlrOCWYXqTbKoh|8Dr)s0{n}}#)xWUQ?54;5mExgkBW~PvMV;-Eh7^Zrm(fw@@>`$}Weqdh zCefaLvPKT;F}%Ih8Y4LtUL!$(KGH_%Z`YV-C{muEjFH@0*|;}8x)$Q*v^DGyhz;L0 zX_b_7FXh7t8GIA5$2PxPNkQho)>>up!Oade276eu>txBuiPS?41ds+Ge!X1BpB+y` z`&F!XQ;#;s5bVF*jJWwhRzqfMjWOyB7BQ``q7|{7Und+w6kP81_0lt2-zAJ%Cdzhr zfmV0&3*{TMPg#1D_Feg80QNe*aC7&}s19~CI?m)7>c#Xl^qz{b+3F2zUQ$U9e2)pv(bwQ*+9d zR4VszLmBxF55;2d{DYAasD8mY*Dx@ek|>{b6s}y|$;iT|lgWhfP-nRzrj2g;_GGV) zIfB3|#B^YaSMto_F6*#yQwB2`v%i0J)LtK{&6u@uEF@1Fbxme%+_PFv!BYRcjdyh% zkInG2*8kFu^p-eyZG;xx180pOY)`=*Mlp065!)FA4?h6FYfZ6WBF1ShI=Hwd`ijR! z;hy{L@59#!ojRTw1={N$Uu3w~ve-7X%P7O@90a_Zug&63`#PT;{sh9TDMDh-S#tUe z01A@bSLeC9gxdW}~ij;Zgy9z^0Zv7s|e_83#5@#nacQe#FtGJOS z!`-#DU0UM7QpNE89K}4dj2(Ib#lCK`bCdjBf@`W$THp*I4iMAAQuZH@0<=m4ZgcZ8 zYRJ|iX6W8hCV<6;6UOAhb(U^%WA*~d`_YD?bA{L1Arm8NLl<8~ZB`0P&Zu?jsKo+< zDGVZiNH*1%;ux(7HGU@v^F;n;>F-taIJYRU;T6gsVZtW9Cgp&sNS44R$eQJ+opw*4 z&xEBlZP&frXLC7}DR02y+MX{h6&7nFMrJD9S~V*25jG zD(JZlW9@jV<@4xI-@IB`bANdE+CEB+Y$iV zi>?qJH;0|PkEp}uIL^hO3^qVwM~mh~Pc%nvjf*i-R?9cIN{_;=RJ*j zk?@VB#X#Pm*gmdch<~_?(sLv%KwQau>B`Rnty)X_{l$5vDzMKOvo4kZu8tfRX~B*R zJ<^w8v3q7ZJz4BqCPzQC%OA$3F3mbH6#N+#8zkgdszcZN;?rQu#VUUXZ%m#Ef5>0& z;rRA`E_P(k){}3{U<$hN`Ck|VSl-ad>I+>IGuS#-wR?&RWZOQShhi_lRQl&zTh|$>pJWJq1~Lmu;5LYh(Q9fgjo zyB}XxQi83NG4B|xLa)qrvNQi{Z~?>ahyDxE5-9v-?;;XVk_cHP9S@w~z`9FXqjbI% zOd+%O?N2z?FD`fkk-K*RIinQ+@Jz?ub67;G9yA6Ty%1;AT6_Q3Wt%SUx8LbsW(vWw zO5apLP{^;V-hw%!($>XnM@+M*cTRGBn9dzW3#LzyPqyA4tFW}){QcRHDg(VjPeoQ4 z-KpJ6e!1eqUUg&k^|6eC9yLPp-#80KxnCD%pz8HM0q)ZGw}s4KQtLb{a01f?OfP-G zUCv*oGxw&x0v-}@EpWPP*Bx zbyOsYZ+s~S;S2(IU5xXQUjgrLbNIrtO~;n3yZ`1c1&1@hm@3*v=LF8}KQr za-_Q(N7b<+Wd5t)=SWe5DLh~PauLLw$vxPv7wIkvdCTMjD4C_h$pDI9`wArPASk2M z#ULQ{?;4yWsKdRxa#sY-fL23p}nZ zUhrqc*k+}8Dn{u2HXx1E&-AeDmhayG+km%VClQFP_u?OZf1U2}pTU3X*ulYl5TMws zbVbqMfc$B`PZn4LyRlSXo$AcDDH$+^(){*{VbXP25r}@Vo~PoZ-={aF%}LJe zYKfQ1oq&a6X6{GW{D#@Tm7GLXJ_KyI(+paLivv-S2rSq|)eFWxr6!Uc$&tS;;7qU_ zUJ)kL_-bvg(qv3uhq+CGH2mWTwtZLf!94fzN2dhEYrnDYx3>UvYdci0x7&Vu*PivR z0g=)Q9t{xR`VI9+)x%71-1?u#$?n@FQsXOUy<0(Yhc|W3790Y1e`X&}$aCi31kVlf zO60@YqS`cdhN#l-*qZv?A_0uSk_)_I25xto46yyVVEZosBFQU`dg7YR;>- zg}&k)qdx_XXonvSbY3;A`WaCm;$9`Lx@ZNP8GTBX&{ zQDtW}@v7IWHDr4p@9(t8aI$QUHN|%)brxC0XmY?l%wZaP>#~k>RCJ0L%{vsfopUOS z`ebL%*{)7lDCmY|+ERB7a324`nE%b!YueqY{M-H=dRX@rp%VB(V(egrmPrc>tp$%& zec{pimnnYs;k1KtqohShUaK~eqr@SUqTx^vW8faj`8Ip&tL54cLC9$1%AnX3UH0B< zl^ip-wFVSGVe&s!b)(E_P6v?A5o}4Gk>}uON{iRZColdhPB3$ZoyZx#we2wiC3hqE zn+9R97vs+eYtz(MmhZ+Qhr*PjL!-|?SGZ33au3$C-&$M?Mhk2v2c7YRcH;INXo(hO z%O->tx+`2{{z2-HyA5VlXX_$Gsk=UH9L@aa)vkF?^c}EQz=-ow(Z%Xe8$D@5ZAqX5 z2e$q?nH2C@#>Z4ZFK2aCD*JIYPRhi!|AcWhP|^ohN?s*W=z@bJ9zh7aE6;IzZ}gS! z+k^U8_m5(J&0D5$o396j?-tT}4yFVtZDt%SoX}GOhI_FdYjlbXvjgjI(9^M?zM2L7 z%0ZA};IX@(ih<)2ekW1i;`$W!XmRoAe*0TX)^?Rwf2sk|gT_B|=)$Q+*zAq1ZYxgj zU8;9INF@O6B>sI$WuQy;E)6yW=tupm$(IsNSAmDAQ7QzkpC`6HIOqx;qxXlXDcJck z*hNi0*?GacY&3VG*>KYb!8NzGz%lDi3L9|vYpBX)artBq%{B7dv{sy(&DVdlLj+kN zv%Nhgk3)grO~ah_p9@JM!C8c5 zw#84<`Pw@6*T@u;<9cGmL&~UVUe_hdSR>|^%m;=kH_VA=)s4al7fW`o$MWDYbiLUf ztdjpuu8hwJJ4G2Yf4+O?!Mozo{IX@Eh08sK+_qPd{SLz1JF~1a(px91#8;M=!9aGx zIvKjlhT-h3(}nFWfr?(@%=<6izP2##H+y)7+vCTi=@IC@KBmmV?7#}3(~+H>1%UM+ zgWKQLS=2ic!vY3NeSKp1tEB#B+nX_SnM<7!yi@Z8C2@^Rg%6YJ~A4SW3!r zulhpf(+2&cX=))x-Qyk&sMBKJoYdC2pt{W$xb<{Gck*rXyxqvW@EZmYH=o5< zK}6}IfhS|xT&OlbMdei%b~KL?zQ5k0#2@fu47YDO!QJaLUrETX_HSKEk?MV6B<=E^ zb*;SyN1~J+T}BMIS!!R)fBev-%Rs%kq*JeL_9`&wY~}1F)?-Q+rJm2(ItNiMI=QZ5 zZl!c5%G2ZooqkvH%r@+Hw1UlcOMq#4>1sn4TL{IsV7H7q7Z7Mdf%Tpj1GWvY9 zOi{%Ng2#dL|HdD{bjb4WW?kD@?u}Rn5(jb9UVo z$}*e(Y*Dr(q{6qa=1P4z2QTN3j3tDhZhVo#Vdq;uPZb%kHpEF6cERCuS23~i0yFix z_h(qB{nRafz*=B!@Pm^j*k+gWk&8zG66GwRClOWP?Pnb)On+IMoHh! zXE8R&9%ka$&RsweCcpWJ!^>iiZPCse8f$Jl& z(4+4;#Y+2%>FgMzdts-jx<;vBvD6}dUriJ(Xu}qriGS_ux&(@N*yi`pJjU?#Eq3AD zx>5`G*)*4l*GeJLu^W}ylJPErkE?xq60Vl*voRHlJFDFIiB(iwZjz?UU`1->qh#~? z(3H~J=Ln^qq$tUX8KUqOA#Gqa%!os0P=>P3N_ny+A??&-Dq+pj{AH&G|FrHdvcT}) z$X-)-%@+75TopUKugf53tKaElpGThwP#PO4Cn?jo_o0k~pTB~>OeV+pkpE)v-+{~# ziO$s1*+w#A9&75(u2Uqp@|kI=p7q%b!uHb$2E=gfE$|B~qf_3C`8S}Ft#wx*ry#bu zPFI!sK^!#J>?%j9X8)ZyzS7u~ar-=bRdCuwAbrE#mj;HVw8`A3JX==h>sxK|?Vqf{ z3X|Sn+2;RpK*1t0Eb+T2P z?UoF>&~^n_*wa(qsy?=-VX&)JufMY2C>K&RkW0obmJU8XiL$-y-1=ezCf++I+EX#m zGaK(a_oTaa@v8;nW4P5ysf^EvZwj}Cj#KGZ8@Wvm4*XaB=kII0XzKlk^O+4Cx(y}{ z|68N*&M^3&OC}+UcHVtrOjRj!>m9sql^#SxmvtI0?*x&XKlzj9@cU4hkWbGPrv&T{ ztk4A{Pn>zTC?jrh*r4Baauy}y7|5iIm~38l?@24842Qdw_x%+P3;2BGKhY9vd1z4N z2=zs)oJK%^bhN^PPspXdc9ixvi0!cth}QnqPjdlfKQ_sM-A-5&>4M2iJt+oc-yWRn zVv3d|+P5e&r=iDdzN9Ed%87SXiV(T_bimV%-g?j}d#wk>4f5%Y{7!(h@06oo0dkRT z+NtRqWufZQX1CX(Q!yZ-(4#vGbINey$3N}uLo)f2}b)&#4A8iWEsxw&pWmJBnf|%pn-} zz(N1dVoT~F+z91EN0J^G(V zpz#WwfRKk`M(@h$yw+C|`rkt$gxBV4>NWu?QdK8M`Gm~6}Fg8SuUFT9L{F-5ePs(0kCqLOzI^TST*=x@EpZFJP~pBDMHPKzpf z>R`0isu$u+85q!6@$xX~YgFD2l=Z8V)?My1+L}gH=2mh(vV+Cst@I>MlRAoySGB)l zsuBdFof;~(0pVD#dJjgpAov zKSRT`0yj@NF-OBayEViwO!^+vi>{|g+eZ;(EE4#=ynOn~zXg?PUwI7vT3P-B5j3Co zz`N3Y)7xD3x%yPI-jhJx#8=>bsn`;6X;VDP`--JfPBi^+)1NStAb&|aY@|DF z-Dq92;ae7ch_;lDfg9;;;8y!s;(RsNleH1cS>@b_yEYzADGA?S$QJZ1K@H*hx0As) z6nGcb#^8B|S0BY>^qSfx+pYB(WVb6iPqfJJQY3!N5hm*A=AOJ_t-I#A!oRt1B#W)g zx;9HxG{)qI{HMc%|B#z+*UA9RG=bH!N6|Ka`Z_|})Tah$0|qlT{;^~Y<=S@V$AZA} z<@>DCE6u_cE3`3dt7%4VGs0fFIriV~Dz8maBp%I3oW{F|h*0$k+$20UE2WekwNVqnwKA4Bb%s&yWf3H{ z&h|hBUgR5_%wb=;$7CDE{Ihkl=k1_LGk;!-|2f~b@rnSJ(sXU6oZ{6-A~(jnb``l9P*Ryu*|aO0 zN$+S2AlCF(m?9#=0z5V*Xj$9aw50f;tL#MHMUdw$mNwYsPrT(fgqo%$y_(tdk41Cz z8lZxyS=3+E^S-j$mI5xj1xVlVWs(;n*tQ9bIVqoikq$oAaV z{5H-V&wOcb*&v4DLX;uzp*h=V<|esLIzDCxZ8+^ORDM7$+ZO`Gn)(z>dpFB5tFg3)Amsw^dsu>x5yN;&16Eq}xrl z{PQTe57v3z<`z(KzTsuac->|zs4S%qcQU?wjLvBd&C+>6@`N&}E`_-$s zcXbQsnj-(fA!mL|R`zC2KN6`&l18l+S=d|~wcwZP2pk=G5PL7uTioaXW08Kz4j-Z{ zja_x3bpA_$=pt)uaPa2&>Z%Dd;k{M6t<)C1Y*$uPq0dU&pyY;x64~uaHZs>~L)>gA zPK%-{IEK=^um(#)|Ri06_+6#L~gsjdl!YVJ%D(EW=Jn!$R<*^G^r*%wQH}2k&JUVWFu%B?py$$Y|%fF+~ij z*hh&qbt+9}(EfW8&3Z&`+t8C#sly?uSF!=RHD2!PjWX!McG_lb@zl?7dGAVYSMNdY zPS3u#I0Ms~mb9Wai!LM7Ad3+#JrIfb7Jxm|$NAA5U=k%gQKH_?rC|s>=+D^Z_o7aQ zTqCc=C>|IBoVLy%P3_YWFo`#PK4;*kk1$~mPYL@#=}btL>}>QcQ+qf-MbQ~Wo8+EJcOYf7G;(i;cbXt*OL*zpGG@1V-tsMi9clyI zva_n{^zJbQnS~T)ZPJvo=v+xNwygLkH>;s+%##Qd>h5z466FrT5E>qLx&VDP-wzeL z&)$PHFIaRGTBg@C{L+TcA{qJ_G-zu&5%(oZ)0#9%lPRWdMU8b?hjLc~X5)Ti7<&;4 zitp^>`0pQaQMyKvbT1-Q&LpCOcRsK>X1fb*9IdpRXcDr+Z!Ex)k?-uSA_wUtXaPG- ztEor0u`y7Vd6VdYG= z>D9Mqc}679M^W`q6ITb(UkF@N4}K_6h%-9{wiLV?&Av-7L(>N?caW*LZVM^R%F%Jc zP|mZxrIPQr$jCfCICbL7y^>>x2fNL;B8vrvmm92tmrBtB?c^;j=RPhcioqIZ(YN}8 zL4o=cV@yO}`-M_6&S9bm*|WesW1H1cPVMvmvHfPwRcVA!w=yS$EBMcyxsS zOkGZBnfsb_P}!%$ua5o`lSCV=#*@p2ZgFo+TW8LBHW$#Qec8&E^sz=O#7o>#J`+`T z+s$>f^*9y-26iHgGAsfV~kucRLqsBEs=Tb zTu5O93`IC*Q#ggqH{LYEUv3-iTOD6uYA7AvUHoNj_lGv`!Oo5g(k-+fZYm(H$Fpno z_ykFoPWsHK_h`H1iswhV4}G4D!7M4W33)O34ih^TsMfKrqp!#!FN~jN@wiZ%;9ay< z2SPL2au$ckz+JR0x{ak)706Nt*}DcNelbv&dyzInx8YRsppR2k7jMa%z(&CzhIs&5|?Lb7kA5GrX6kQ#*+muT~}u+%mq)$GUx-wWrc2;EJFxdGI%jf1t+a zbUTHQu#7u%bYkbYZXYl%)erw>4Op=H%5acFoo6`CkcX>K`yETyJ7JQr(SW2nj)#@+ zRC16b?gvg6&)9j4-K*<&TJWjA4m*5&zN#hJdo5~AHh_;tj$;vX5PzYujmsXa*y^lB zzgE|F>zZNhsaBnJ9E@4?(-NU8snoOv&2Cy4O9VEr-jNwk4h)smm|#gf$4_kgREj_A zYgROq<+ml|tA2g2u=V-Qz@|_*gWA3oBRj#xPx`GY61%+I&_p@OdzCDvw>S;TPUy9hlQbzTB8ia4W@<{DQ~E86{~GY;J&iG}ndS>OG+i0!kG@M;{f6(KXqY31?dDHJ!J~=;#b{)fJ6|f1EH> zXV`cFE~9>M8T~Y7${OGRPOSe$Z|1#HQkk~6bI9ra=5P>oZm=u-g1yN=TJPO@1e{6w7O6`Rx*8w+YB z|D;HP$(h@paN>ONd^0!A^&Q5ey>5^)kv=FWQN9KU7i-(vy-VOy%z0mJ%h{jySz(Ex z`;}FbIWs8c`uj{MQTG9u4GKz_3QNAn?RS-Hgt9tPTtx@<`WPl}$kby(5aOZn1{J>FK&&#I^Whf*i+K8-K7wal}6z?BOxasvo8o~g3^nk(7 zmfZi%on6sVt-ezJS~BQQwpXztqL}>3UIA~^T{wj1)MZCQ6EH}JNxV+4kbZq{NZC}o zbs>1@GQ;KDP1Ili3+-70>#?aB00a@27GF^P*~};btgz`c{vIPM=F| zfwx3V6va{nLKG5#RwNzRmpNyG+=ro#4XXD)>oi8LjKJBZ3CPm(u7PYQZz^NN87){G zZtpjByJNaY9#x+$Xp_Sh{FsfNPy#tCm%8%ZNvnkR#y`|U*^&wF3tF6zNA{mEG-V_S zs_Hj0F(!3E9xbKOB&JiY!nSg+oP>WLsN*9eLn0W4U#901){DQ@JHdW)?>D{>(%p0# z0zU;neug9zQ~}duuTlU?ydR)Gkw+`YjBbv}60=OXcR;uZC&8Y*%}q8~oF}J=+Fm(3 zpSLpLrd1C25Qb6c=nktKBW#`-?NAM{WL4Z}p9CF#@Xj~v^uUe;!H!EFP4et{QE%(} zdEy&qOCJ-aT9!k&fR1bUvp=85!gg0g3Xd3qurg2|O81*>zwv8keVx)H#K=Df7Vrze zK6t#IC26!3F;D1x)hoQ#z3KUOKQLIEsu$x9Q~ct?p2G>Yp|uFksqmvXPAG* zxKel8wGg2SqP|A#^7kg1(VGAdBxxmn+D>t8>Oz-4Wc!eOPbMfY~@FcIwGVarX|NQJ)_IJJD>H>HvEPL3@>{ zcAGULd1p0X>L|ARKYSQ4}dns@W=>1=?V8{f<|(Q6vjkq|36BT(O$uq#;y|9 z@^K!E*QopUuQDzj8!t+pDB8mNm4Hx3>iESiS=hpsCMtGdsH{diE|TP%0b0$_+W_lz zNBBpWM9U#e^nwzXCs@Mesk^77Vm(%CKp!De{!_nOduaV#-;KuT%~cB}Ld2!9IImd; z5n(O1xa4Z}kMDvwx0xS2kXSFyx&*aSP~W3Yb29OY2^!C5(a$|wwAQYXuRpv%lzR#)Hs&<1EO+?&IV@Trk{)lpZwK<^ts zuh7{p; zh{gU^d0=d~*YtR=vH6=HyJ~55dyh(qt}eNRXpIXs5v!Rx)tf!Lk%t}?I`ni!Th2N zK2D&IwmBw!sYPx^bnBm9@Z23-!yNZRo-J_9LmYhj3BaCG%0!V5aIB ze4I21BLW0Y%_}=;Ik+_bI>ZluYvxdyofF1`lXrdftH7?{qQ7kWXByJ6-vYzaT)tL< z1;Z?{p#*#!_UFAQOtKJo$Z#_;y=lm_Ecc||px{pjvtA)Nw={|TVl)F`i0cfZ|htnU> zQfADHBA{OffUo(Lc?3f%r_s;DqU-THT4IByuC8zk6grIG%;Taw_(jY zkMW@})UkqQ=z06H;JXeWcV2WheFS|}-`MPS30%Z89$}2*K@8gg&pRbI926~2?(El| z6(uqb{u1&9t@}TlwiHAm$c88n_1g$)_pZJjq@cFs2l3%IMlWo>@>$o4J%2Umb;Mb! zRGQ2f=-4?Tyj^G-TE)*Z>?jc~KCTl!%!Rh!qLkdK>iq@}&Ku|WvE+@n?3{R3)S&3& zH9tSxIfkNZ`-WI8Jn;z}lPN=3pMe}X^Iu?A2kKoQtY^`KKY$v?p0!$9it2B(PY$lc zHo0~$CnIT%FT89hPDP^Wf#!m~wW*wD|~nfV(_uQRs7?y=X%e8%3?!@W}3 z8vQYEU7SSI5R13{wl!0lRBnuoO{1Ooy*f^67M`iSSY_Sd7(sY%TRgUYB_?*Xbu`w| zk)b%L6NUmh>s`W|+2#m_=bxJHLzK1n7Ud8gRCY7{40vHKGb*e7wQpRYJKI^~BBZf2 zpYxa3g{@!hs-hmdq~rV9^ar?YyQ5ced|Eg4=vpV40Xq?)Qh*i<~>V$*LDTj zPEZg#lU9@)Fp;MCg1kKq4;4Awdg#{i-RPgkv}hq~Xd408bl5!W?2x3U$97P^7zi;f zTZ<#1w`!F}6|K2i)-;RVLQbm8%nGtyw2cc0&#yg9{k2XI(mEB#@!{+dw)_lFk1j{< z5^@t3ZU2fbld$X>NhdbmBf@$YCb9-~{jX{jE>@~1o=EML_0b@7sf02|$=a6;2w_W=9dUsJBi%4?ux4*lbn#t(R5t?H=es^xpcf^T=W_!nPT2Q zbP{ayOTZ%yqOtuJ+V)o19yp$aSQi7O4OjeBI8XCZ_KAp|4q8&w$sSxsH2~FvmKgWM#P4}ef2>t8&`vht^jb%yghDl zw#aRJdzArX#;5}$bEG_P;fC6&ly<48s4BguXC z!1x!B*6`Y+r`2Y!rjLhY{$|+ledGV#&`fN_sVPjV@aa|*vWKe4t;=Uri_|Lp8EY3v zH%oFQ#1#E=*!J&B=j?XjcVF7iYD;b|dv|QF!^<@JiGx>0m>qR)H|!YX>I%PTNVbEQ zXSqx+B=xN*KD%FlYi<5`*zd`oO?8BL4%*V-O9mRqWJOts&vs$?4q>jD3$e&!WjJTP z3J{H8!g*b=DS15N3L2{jcaX{3M`v%*&E`djtt98u{r4n1u(p|+$@3S1XnQJH>&zIg zsY<)v&6UZ%5{XhVxCS_CFAy8l02~(G;w2mUvs$mMi{#!O)P$pjC=N=_$={n#F$6WI zz@G!7BJB%u=e;9$cg`qNahGp*p%U7+EP%2rozp|1lF1E=@5P&k0y}$DYvCZgOr(qY z#CT!QhyqV|D%Ap)VkL>wFM#p=S%f`m3lyC$e4Q=US2zvl+8PNnl;YT>#0$UbuS0P80_$#bSobKw=99_>j~)CBX#DWXO4>?7{K!=1eKhS;y`zqyUekQmxE7*# zX}AVc_+4eA+PvA2`YWS7$b-OD0sJXaYD9Z)>=Ieyf8e_`!`{E02ICr?@M>hkoN;3bT%ZwE+y;Fz z73-jfEFXP#OFHMx^7KfT<^VZjehQmBOHLho-=^R=DMqtjd7sL6d*0W96m@$y>*NCN z07d`%6KWBN2PG4F*vLLq!3qdN50)1wg<97J-ABcxyr1m^Nn-lb`-BlR8|v>H&8jAx zAO(jwO6M@P>9{7$aM;tk=jDS2hDQJ=DPI6ez{Hh%0mIR__XJy!|0z`T9+N3ngUJQ- zl3}Q(Gw?WTCNWrz+n zO_TpN-URCFE`PXx`2DK^D2oqNm4dwvd=)Abx$jXD);2rvgkEB6&eHggEG>L)vl2ql z`!Wgb-%_Mb8b*kAtGUvwvYc!3DtZgs5O=ygHTe!?9e2B-iTb6M2+J=l-7c;(2Ry72 zT9SxJhMUU7<$a6BCaE=dz-l=Iie#{?7~NsPK;A=h#_NEx)qivz6m`>zpTaD_1Osr^ z)9o>%?{c2)kfB>&T}axfbwG$yMrW+o{H9?P<%2y#tY>e}`Y)TCx|0NfbwvKUnro)9 zxb4gjt@Bzy@hPx$ED=n_%5$mFgzTlcfJ&L%bNo2;ShKEc7dfBs8zj58n8ZQohmqex z3)c&1_pyORmY-#SE*jdb*l*DEKt$^PVft>1WO;LEkD;l<@*k5T_QB4Zq=z*d>!8LZ z_3~>Ro0BGzX8oeQ1~A(_EYGRSnV6_`1nO3Vf!Exx#-NXVS2HNrg~516MTy~=sBdcM zeZ5WJA!Ppj;HVmzrld+KJ@$2D@QkGIQHRWDUmKv1!FCK-_v>y!Uw< zVC@5OFJ$xrrCy(Viz9mzz+r0TJw}}G9!0xW&KHlo?32JLH1VIC+nA)vbg{ZmVScQc z7MD%~-dEXjTjgrg(~?Bf-g`}2b%x7p%nBCF2v0f~pLKrm7dX3hK7fubX)7b|oZJRS z)sMNnNG;zX%(=?p`bo8DX&Hge|1Nr>*zBcrVW-47aKYv#=PX3s=TmgKbk+ zd99Q8L5Um!sA+ih^MSxmS!w9Bszm9d;_jlFvQAxX$cxQj!FSEW8o4m$^2L9)y>@z<9 z+$LLj-f>&~L9jGUl3Y{*Q3!KN*jGT7+`l>oSed!I_}b$i4C z=gEslN~NIp2bj4T_pv_DI$*2-q|$@3Vr9@o$@>P%;W&9xb}N>8;Q6@VR`LxA+%34cY87V{a|Y_#mV%K=u|wMDe( z9-Jz2zGhY6vb68qhq+p35e8KBT|$>zn#b1jt{9*156QHtP&)VxdKqb7v!@88n|QC} zBhSqPL-eF+H4sz-fD`L~(Lt|>aaXO;%Ij)yj-BYo>nNtZg5K8<)FbOV=R1v7xexwO zleJ@d;cDQ^$)@JdEymU*P;z!K{UimsZGvLqa#6ua z@fVx;$zIM^@Ek9d`oR6&*LJFXGL}>4U#CmjBQzsPG3-R@bhdmF$G)t7YgLS>ExgP! zw{SgRN?k1IzG~h;C4kBX(`IASTlR8&(G<1 zZ4gx~a6ZrVZ>}F78}P&zyQc29GC4l*eZJ@nT;)w;)Etby&^Nfh`1H?*u)a$(d4&HK z_J??D5|C;6K0h5`b?WGBvy4CfgT|Y^6w@I|ULOOKyuRAzJUmX1`Ih$Kf>chqE zgyLk1-ug}4zhF0JZr^gc=%U&N%++;~ZG_7H6R3=<(<7l+(?v&WOAORi`k#bXgY?8U z3Z(U?&h8)jnXvIzgI{hRr%h4Ec+izcZS*ZoiR1TM;0hwBdi@QW%xJr_ote1bp>a`4QG=05nG>n=9ZH0_iG_rEYGyY%!rH zB71_-+9})xo7I{+1|E3v0Z?(mJvH$%d|8IoOP4 zrUZC^GMg};AGCU6y~sKPAG!VG(!(dO2fy=?okRXi&^~*=Yx91P})H|V0O0UNO`d0{B1zsvU&yJ36*nyb5j{q!!vd*sG9kx z+>G^~2-xhkPFB-)8H%#D%?G!>{w*A+_GPanQ)r;Z=&sOGvCTGng<#y7CufK#pD(Iq zhKC3+mVq94!-prf_{Z_R;QG2amoLxnK6I^}N&`3G{VpLl{rdVt2gXlz!X3HDzy7{M z71#fyq2Q||dx|Pw$BmT<6FJjZ1O^>}q~Jf~GKo^f=D|+UU+$ptj`F&ae5#@{PGC0T z`?|bb3L330iupkcrH~(zuWh>~9Qxwe;c;$Vd#wvabazDoNOT>R3e8nd_%GpD2m?Lq z9|LC_=G^(rO$lp3C~Or{XiCT(y+rGx2~aFJbq}l30E@vOsTX6t zv#k<_PV70Dk3F2vaXRwIN8_`D-|7D}HiALhW)EW&?+fW&1$wLT!i6Les3%hIMcsjv z7z^IjbZf6|CGx~Q0NlI)_#l8Gb4S+U)NQf0Gl^=&ph$T{8B1?UtraDD)RVspVjkPQ zNPjxks?4e=wbDB)6hSqpovls5q?4aZP%9Tf?WB=JfA!1NI{>~gJIinxptFAvj5P5~ z4IubzWmO-9I429P)dEg587%_TKegpmVQaWG^;HT*=x=_6aI!x4cwrI;K|oL2=*(gt z4lL`RX!vBPw}v}lLua%0|73d_ecP~q=0W`VQ=Pi3gB)YGAacu zAJXJ(?j-0y-+ zu@6(y>i#PG`Y4luJBCtqgIW4tlbX4{zd<4X=&mUkKtiJM z<9J=rRB+7NTEn^Kui~-wyfEeJ^a#bv4yDpIf(0}sAX=%vdx}NwYZ~h``8hLRn&P=8 z{+Lf*TWg6vB0s)=_COkDP!4A0zGx9~v*-QvjyUueZ}I+Lyro^c4U#K;hol;L1!NQb zm^vZkDb$1_c^M*a>2I^Sm5Fig6THeCfl1FiPZ%hxovh&IKxMHz4@UZ{bvuyybcqAiVay?AzO)hJ%2Gk5W7uYPePj< ze+(iNq!WM4uY_ZaOd2B^*IYWW|0w@> z_8?=c#!{az@|OMz)etm<{~#hP%vl;GCsX&?@0Q~K_k+G*D>|2ZuDuJLzr{p%Se~t) znrFMRo$1kg2$Qx>r*rCt+}YGD*}k@=!8On#Y%qF)C+3S4WaU{rr9D^+nF?0rg@Z#c zj-4AGr`>VrK;)0%FKcOQSjs*2eqMl|Erz={+(7~sf3b8h%clH z=FjPoq0CkLmG{t(L~mH~cJ5^7u7zC6HT_4}dtjpy&0sjjSNE!XmT`9ULG+KXDcR-Y z(yOwIS_ixjas_;SBL&nKBJ)mR*jFAq^ExD`Lh!jjf1|%x<--MExRI>|ge*J5n0M>0 zNUK)u4)c#`F8l2<+Wj`}l`Zi(Q5!Q>#^y-5;PP-+&t` zO91Msnv(6ujnBN!a|smNmj%qY^>TTitpK6-zQtO<;8%f|<6l<^YT-GLBx$beeLC7D zQ)08rT#gFuU3Tdm^4ke+%;kQMrjYyO3cnv#R!NBQkn`mLJwujg`R(z+!HtB?oyN`1 zDv^b4b#4KlYa0M}xy`l&$9Y)|fSk~hW~X_@d3Fu~)&=!?d=+nT$8D6GSE0HPKndmL zqe7^sK%tXq{}Z)wp!YH)eyu}N%?i7NNLL#C3bP7m1wSDHDEeT0fIbe&h(3cmcNdX= z_#j`})(D!uf$j@ASxZ6mVN}@tfx(6*Q}ZH3m8hPInt7k|(`coOC45GfKAx#)wW79# z@Ff}J*Ll)pA8S2MBTA^e(EbKy``_7w03SN>IUp-)TT(VCi_%V?bhI=6au zIEn9HPZ}Z_UR<6Qn<_6mn^~c|)d-n7B1-Q$vfTi5F z&e9YeKIgCLgP!OX);Z^!Y`FBHKN=LvZjXAB1eJ?1ugfW?zL-0Xw%+sgNkr9V1#^vOb_h2qx8D^*ITp^{6nb@DhvH|DjR_pQqb zFZ?f)>T-7}zmgON{v^UnQFiA9=3-+_LSjNLH^FCt6YE4&nKE>=?icWbdRof{MU%_@Q=yI^@gmxGNd_+>ur_mO(#-HH! z*?R_)lnqF|AO3}{vuB66(W>BR>1-KOVQ7Zsc4ruRvG-txea#2D^KmYS$WJ6cF}dwd zjnWy{1fz5Bt(3JA7k=xBi?E5Rc1XesVnA}ZvOS3<+Gc*!o};B888V!Mi>9khzC*i{ za}$q8Lr7XW-()k|WBLlYxTh$yp*TP9C~3j82&bDbz}uB}Z%rVC;741jVWhJu{7DKj zO+?UUTU08M&%+5jW>4XQ>JA0QsPV(hC=F<&e*Zw6zdzu7U^go73do-6r#(#x{aFw=6jr@KaJgLF;OW2Av`jnLS5Yh;*Z6DseZ1LsuOIzswWusz zK!ZM|a$d%&14(?l#2lVNJwUn@zEgGm9_{hHM53^-YP7q&6EfsWOHIj9xeVR-X=Tt= zU+FfKaJo1v#yYghK&fVdmtowwiW(3;WcvnFx7^&&m(*&-_}v9GNK>(a_ws-wjLxMr z8z2sa-piK=U6d1q{6gMm0|{IE+z#L3zi>Wylcyh%*1Nb&XY)|6z}8Y8Uo!ekUkc|K zk(#Y;(+S`RzhE`~`1CDhwJ`MIB5$h8dV#C;ublibvWqCiUZ-QQB4su4cM3n!UqEoW z*&D!C06{npKePg>U`TM=rh3(lbg3MKAy?nf(I}ovru(ukLgMtUl$K~`3XrFJn9`HjL(mJ}Jq8im2fN(_SjTodTH`v_DN(zG`SUI|2*0%JG>W4^7_Gn&Qb` zW1QFO+w{qXN5^RilNa8jF1gh>f|u<-;`M7cEXz+cde+kpW%OH*Hk2vtkRQ?#xe(Qu z$G-tOU#}mq`V2oYyP>psS}@jsRl^(or|>D)(uxOt-FbsfXzl&SFtx&yD)P(4|t)!rhcm?OY0iGHurhaYp0Ueln_6RY*kIP-+Q_xqH$8}n}5Qf4uy3Qy5yRABhkjCbhDxomjcd`#cTkv_BW%~$G{=JdH;RVf_MvJh;)ON@odKSrpxt~A!_hlkFg=J_ zt~NTb@50BIF;{k(26Diqp2v0|1AJwp|Beij&}AM2veK_JfrjUN6(NN6N#o7;_x47wjr?2Hh`K}I&btXik)0E4Wjvqz*r`s_@HCrQ*-m6GY|S; z>+nN-BTH_PN*yGg7DYMw`#U^=`PTJ<>i2gyDc=j~aDrxM->CBZmj-yTf0A=}?Y}#kUnWr82qlX{RH5 z-M-u@3DFMY#Z2ga%{!A{9O56Av||BM546l-&e=u*hzPUXJl^R;#>(oMZXRF&A8_7l z?~S3p0z;GDv_EIAfjO%`?{FyMrf7L34bUqogRx=14v2Kf`Ub8JhRF2e#x&-wYebNz z#-*#;#Z!Q*>a@0=L}atQ5~KmJ_+br2PJPr zAPa^cpa^*?n^QV98UTE$y0xkPk$0cf=1gdFGn!eH9s5xcuXe~-kOmYp#pTm8*=DaP zTCj0koFe{zR;1xOBXlQO5jwv#DgIwF{5g3Cd2D(}JptTrbF}qCJVjvZCzs0wOi#)br4%ExZ zwyo)Ocj09U=ATzsXN;^%>RRkL1*?!1w;qBZUIg=E?dCCJ6%z|g@DMlc?A>Mmc)9Jc z2{jy@tUT3;Kv7{{8oU-Cz9X%^v+q(gddLNk+efF(%Cq+0Jp}AC24vGAUSbi8A-lY< zkim@ORR;G=a5uyLJZ}+5kJKbzx!P}b-OI@kr&-YsqFS<KI11=3I3?T=rO5U$}yMSBMC|(Q@*bR?V7Bu7!lhELEr- zBR|3579hS}$yjfw5{cxRDZDqAcy1%zQoq!Dn@`nHdR|1FsDGm?+AaGidO+mjc2e^y4@S9%!jfT=E8}l54-JB1o$%XfYH0gl`cNS1dy$vNkD_5=FnOv;Ew< z<-`iPNEHi+Ly>{DsS#U@LEBu5pkWtEV*1TBW7PK*B4}eCe+zboWfp*%J7X&{P`mH; zOdi9Fr|DhS4iA<7-*8xF68U4?-`>pZ=mn@;NyDm3xAU3CXr*+Vhhy3ap?{Rc&!vCZ zKJ$V@;<01Zxaqqyhd8a)s2c%e_dHU+WY_^VZp)Kyo+P$VW%0rVt9js=vW@^GVF`CL zY9(0sR@w8^M~OyazBGykH{@Sw{fK4gA2nDgD zaZ@^LNm=|Q$8$==+hj^h2zyz^&&NZYs_%Vj3kwve#E?Upt&F0JpCrYLhTjUkJNaHw zw&bC;XmU8_8SL4+?Q>}WWeO_y-)EQuI+zf9xi7kKM_+P|;qvPibe0U1eE>S#-P@g> z;KxsGF%@on(w{wm{!5c+ZF?y1F^KG4jCU(^9~OOQ`yDvD*r%SJJF1VoF!$D=PxfkSIx=5p@)(EvjyL^a5)+WM#O)-W zsO@wG`cr<#8VoTbwmR^c%1{4}G zYlb*ZF&$E!wz%QO*m-B74_t8yE}*2z|H7>-7-p1o#yW6b1IE#gV=;d2Ief1i&$zPG zb1{s*dt@EhWMM(ov_i$k=Jg{1H^ScH2=PLifjrgCp`UDM(IU3S*h{Y!mG^Y%GMBF56LYBAXjYcM( z@s)3%fZSUM4R2R#56wGOOeq4gf|zRmekb!%=Mg2HqG8!_fHjD7-h0H*U1uBV(AK>X zp%puU``6oBPNTwezfSx)@X5@oey--!ANiTD`7093C_&s3sav1}PpDZDtq!t;NIdYU z^iccTy%JWN5qRT7mjLWTpt6%M1MEDqQ=N851ocKk7K2?$rADE^e00j8*5?-dxnqfm zB7ym`a@4+ZSidxgA!#N%0#(s@Qy*6~ZY0}?xXP^pC=(o~Hl&R2{=>jO>ooq;!M~v; z1aEX;NVX8}?HGT^pzm>2cUcvsOQQ!_>5}*qZAW<5thmDj|99a&Z4qJ{7;fWfJ zk5>nAeXBMp81Rg{^mx)>e5pVYdWzhvg>rr_33uyhKiJL^oVUWkX85e=lR=*Gk^p=2 zZU02>o?}|k=3!C~^kEbzXGN&eH zL}qH)IQqy|-GNfyN_498UO6NBXOrzl3ujWn#`tIiL&z6QjO!8(6bo4rzM@}BNv2{Q z2h?UxVWF4%`bJcsTCg<`V8h!VfZB$)hEcAF=)68>&-VKEu1swD?<5+OnZDfNrC`Hdr*t zmXDD)7z=L$@w)leXq`|dtZzR^Wd<z z-)EQC{&n|s&3#LytBeXseMMc#ND>OADOt$v*tl;TeTIl>?Pch0`Nek8$Ls_^;oHTF z;7*NTuat7ND?bgBtMtEIIlR1>FL?QkuicGtAw8kiL^`c@mqQqavmvXs1!~J_YfB6$p@f7~ga}CpV zjbH*yA6x+a7Z>{$J3NzWD|hCdPT&G^H46AF4!6MuJWIn0M0~B`-v-4G3|*hLf_2Fz z(Q3b?3UX+gWG4`QozVPb|9;WR_EXaQ!C}C-I_neJHEdx!Jc%CqLEoWBTJ;F$ESSH& zxxO;G!T-at*Kqy#U%58mV2Ej@xGQ!yT~KRRu6zW!BccA45{%zCu_Tzle@YWs#xQHo z=3E{-o;=|nVerd-AL5LnWc(c1YVcst@#Q5gtEX2SU7gMi-JLG;4F*sn?OkB%_jDLG zNXHCKw%)lXJ^C`knapO4sJ4tRa+LO_FB+c5v}I3E#_HaH;@SKOA5YFmx>B^0#LzQrEuwIt*hS4>>C( z^zw|e5AhZKtLLk6W7(y8YT^XvQ5y;~8P9vj7_ui^Htaf0_Z(KgRD|1YKE#;{V0v_&?kb* zd$1d!Q<{rSB^3m8A!lcLIx$e?@3Yt4%Q^*^g8DNxx+Ck*X7xCvW>OC2;W@)Hlcu z;LqO=)5j#fd92bfA;Pbj)T+?ZqUYFl#xOz32;(3HKI7r5;3vC_Ev4X9@c;8NvTmA& zj`zdL-(DL3B*Zots*tavu<{ho|BCwaxjL#`)(Cc+?fqmc zEU4wN<64jU`+hCLJ%!C7q4FY|`dNf<(6l%P?NLA1C4Ob}mf@|XZCdu&q{Zq)doSQ< zzy8GyOuv?Z1rW>L$>8>w&}Op^M1u}S@vy7!dgFtHVo z{2Mq?yYWxJt1LU8B!YB@oxR>teqLmG3mzXG5+QcH( z1@b?fTtr3U(B8A>z-l>PbpRhl*N>C6df2zymQ}-d0!t=NF5>9)Plz7s{eHlqL(o-c z6UM6O8qx6dHP+mM&0*8(Z=w=0vnPleJs6e&nzkHTCs|2<(I6WC)wjS@L2HB66Kn7*63^7Ts zuL7snTw3OFAWdEZ;7A4Tz((ORAg&8Gz^k z{az@>XS8_1v)yl@0XY8*&BC{@_(EYr^csV^x1yd_>>dgzRur!W+ZIh7R<0BPZN7_c z>kW`AmKU0`(c^yy@1^1P=CSbaTWro1(PjTA{3v`BL4qFd`w2*XPx9+6jn1U+d}Gnx zTvbUeW}3Htw~L4+>RDeRpfw0^kVSwZI!#s*IJ}`=U8aO}G#;6|4MTtgl)Pl#ezFBX za{u_Y>%8d)*v&5$o`UKB8NHm~DPl<4ni|ZFp5=(t%ukN=mxdO_pJqd0>o|*i?7V;k z%Jvo@zrNWSNsuSeHtdcEUCuwhXP5=6ehJGkq%UND2J^>{zu7i$nU#px98?MCf9Gfm zb!#Tjjy;sd9G0m<^S~6gV3G{!`j$ZCpT^A6rbUpx%dTM$?DYXUgUlk}J-r`l$Z-*e zAGGf}d$?Isf^Kg9I*vVTjA87~({}r>Nm7yiVb`<^R{ga5?{s{G%^%?+n&Qu4m>*MN znf){KTfp5<5x4+n$jXCW%M1U;$h8m}yT)JSCr6ysxT=4=yyLK+e&C;x)bD4?+Rb-( zuQLSDDX5j2}qyuWaFZ$Lh-T&BPve)leH{=5st{P)}gL;uhJk>~^3ka(z5w-87v2=_)Vmyk6c`9 zlXo*5z2K2E5Q~^;roYTvF!6IcI+zsvFHq~967%FG%4TZ*`kNNpBEjSVa^n6^g#(ffP_y|~oYsRC ztXjPwN%oh*`-G+E!Uq5kp`3 zvXwY>P3l^E5W=EruDo1fGJMr+xH0GmT$!1!#J=K-q>X(7(%s@yAy9b|jei=#3T{}2 zf~vdrHnOCbYY1|JMKJ_0wJ2tJk=J;c}t*_T0<8Do~;JxcX?|M9!Nb6sV- zpZ9vsd7g9bbI!w@+2wa7e2psL$+0>JYO^YN1a^#p@;a8r)HfPwCyFhru9!0nFDJ38 zxf6In%y$Vc{3j;XhMNN^)l5iW&qX`OTK?EHYVjZMTlB}@L}qmd3;*mB2C-5Ed>)tB zStv8KPP2{dA!VE^)?kv9>{wzkLvAL&bn{Jm|D#~k?wAP9ZKXB@v2G2urbP(EY+T)F zhYhUwPB!ul))0@c?yiDBf-c^Mpn*s-{!5qH59tmunJRw}F9p0|wQayFnf!TX@4);b zy)5u<4)vc|9Yq-OeDl@M->#bL=uC}Cx0N?WSe=<%+@(V>EQ3(iv~yb8ayKidac~*f@9XzkxpHv3oQvXNW_`|EGaitpN)ylVwEMYmoEXghjoUp-5seaC_z!7;|te&34LK^28F zi={E3V2p&JTAHjx7W43NQCk00B>WUVUfLk-M;Gg@GMogvaLLLUsOr3&h#E7jZ*^}c zTZ|C?QrnA)rBnCLLE3#hhm-V$cdj9MOXz2YZvM&Kyoe3tw!&Cc(gc6esy0Nc(sMC? zo696YW&JP|J@zZ^lKCLAwJUQMJ&uihRE|SDr^Q?m)O#*UN+2%{?2e>Hf1JKAX=?sp z<4mSB4&G^BPv;L(uH5(!wDVikqg7+y@zW0NO6xJsBwd=(#FE(8N2vv;ok~<-;eF}=TTzb-m z$<9Y#G4_5S96abFV#n3aue4I5xHa<4T^1j|30;M7%YwR8vz6TQYM?erCzOX(m(Z>} z42n0&qx^;BGn@R?Cj@@!cZm9Jk`A5F}NzDC?Ym}!zkzUhaTDhs4H z+F6f>32^Db%FkjBY;E!@zN$Tm6k8A(@dTt<9sw`1J@ncZ^vVFMUo0PhYKwGlcvp^A z<=oENkklU$m^ED67^<8^>S<_4t)xrkK+^S{8oY$$fXE!OXCJ7ZDMfLVXoF8*N)2aJs`4!egXG-iO_Y$QeQa79DoJ!Gaz>Af-gisi!BH33dqbG| z)~=B;sSM;{2Kr6C#+DWZ@~dqwb0)jZO9w2f5mrMhPw5z3rLNS@Jl4{CPh_+$lkA#^ z(=9p8*V?jMexS%^K)Sl07?VhLAZ*^+-|01US|mVT-t7oKLh}nKk4#&YQyZ<@VwOh` zeD8Y%ecDU!nZ)$Wqkh^C$RJr2hu||eJtsC`eA|;=x;G-E=AZzVS+Si!bx4IL5kcTcRm>CB1K*iP1zaTz>V@|hp zrWN$OWYJB?{#ZnbUROb>blX|ShDJXT752~DMCM3DUC*_Mi_uIs^R*i$P9g(V&ih=Z zOQHEe7o@Dok?_^ycL}>e9->9=bO0o$^VwG7zqDI&5~116`Bigii2r&+SN29gYbt~b9tcG4EGRJk-d=WHHBcOzW6!+>!*aHOF1R6@eGslaa^Wbct(4|#4D_VR zs;^uY3!To6Y}m46^t$t>&Vo#2$bl;mjL!-k@~KQb-~lDd%j8b%o;)X~k6kR}j9<3y z^{tdlwyi!6u#ZeM0dE(80Ri{}jdxP$W&Oc`;KOvm5>hN@XWqxhAOXVOe`gSbKfHCl z!9WJ!U;WOY`(BrQ*s1_YdZsn~(@jLeO*T!NvuFUDND~r6&+?~#4yXo$y5n@+e*5R0 zBcD7CF=@XNZ0SwD0k`ulI#Gd7;6tFSp8DPC>6aWf5G}g3`fHHWFLzf(&6fiZimgOd zdi%GoJ4dc=PdsQBgUJ>8>cGe1+6)M;a+}ba?N^c8UF}!<_*T zt#}11X(mHD49Tm%=o#C>2<$ERoR#0jXc%9h?lr%SDggO3`m3r`QdE&Kd_pjKKk&34 zHwJLaKL5L+&zYAn9tWxi)l74bXGl=^qZJ9WKV(U0GTv($(ZGWt*<|f^=U&#**HC zz{2#jnXTVI4uSEax6dA6vE1E$`pAFj434t1-vC<6Kg&5*$1wsdd8{pCNgJ32Jtt+W zpTPQ$B7w%8pSRZm`Jnj))VZd=EdHDisG6^|dG+`CLq2sJsv5{H{+X^|_(k4D0-K{D z475%8J8l3i<{vm0V1up=Z%*nsY{3Bi-F9b2!*`!SakpQq_@KD~iQci0^@o~L4hPZ) zCBr z0>9Ya4vr%`TuyG!>hY=$WI$W|fOMc$Hz@o6Yr|Gw5<&gnY{~4w(x3xXC{em30UzJX zSqvt|xT0--4ZQDusEYFmsB*c@NGT=|f})p(2(!yyE?RoUTNPkXes>VU1rVXPkJwB` zs4BtV0#wSAs|5J~tkc2Ld>! zN9xaCKm4NcInI$2TV+z{4^2yUGnE{_;CK8_tCKuclAvJ8--%~JJUIuke}7(v410%7 z6yI_9l7%(0R{{3$_I@BnQMla6r>x-Uc($sT{$9x25Ri&$N|oPkCv+adTlH(oA`A@L zzt8H$jvc4BX==~zs_oObe0q#w5ER1x{qtGwBZ1rfyb6TS^&k32laVoYTMn@O1EDg# zRVb%88lpQ3Jr8jJMcyp7+6M~lQ3^B$F2OktdSNSrF6YEv9}s}m0x*85#%tx5jObKqmBGz%wv4*wl?eKl_&skf_;6pq~|!ppxlghKRird z7(LZD9!{FhfUH-;dA+dbo$gNsOa*)E!4!(fd_rr+#)#6uMKdG68=&BE@4V<_Jl%;M z9Q*19CIP#Jmi(4~7a%2@fm30JZZVcz_s=s_DV<#9i8?5|6|+vfMo*HbN46`}(Y=er z2y7a=LQZItDmj9?!UYuK>Zc881C*XJG!*^_+_jCvdL4i0DY@V8ZJ&Xx6WV?S#K}-@ z-HN+OimY|+bL=T1gNO@IvS489ZVLUbcd7KijK>5#tpVC)aBX1*=UpA3;NTUrvdWYb zspq;0S--W2O=!um=*j<}S$(z5-}IBZN(#~Ab16N@5J>{H#;bu#{VJX=!ve1#-#Ma} zS)A`MqHy(EEQJnIphlA1NRlbri?DiNkKi5$LLLiE7`hV zxZ){|oe;CBA$b2iz?vowUm`$a>alxpP^0RL{Ob&Mr2Y5e$IVu-x`>fGUp$`bCAn*D z`VGBdFZ)0oO+%O1>APr{+zRI92zjj6VCA*p@}S>8T|l|pl)4s~AMe4e0)l!+d7(Lq zqY8wV&dH&|N3<`10Oh03BzzjGWVD{ZFeA3YGd*ThY`T#Dx|Zj~n9g%mMHl<8fulCec-yMCzO9I+bylD*+p2Wata%P0%^c# ztowhj+mc(P9=!1>;g?k-JknMMwcP1f*Xf(u4;1wqGB25zFMYt3)p(V)u=8r|jA`xY zb7Q--vq6vBHPk>oP$R&b-^nh??0b=TDF{Y{si2LPl*^WNj6Z>^CR_$;k*+ZYR-R|{ zUI6+JzG>hJ$obsi;#N|`ro;N0A6&b5HBm=5fC%jUIudb`1@A)31xOFRqxD!{ARa#HChsg5!kiBXgYvm?%h z#dV89wbTb!%{4u2Ciu>tn7*_# zS!loL+_alele*ZN@&lqE%U9TPRmzN5B=R}wi5iFl{}m3Y*QD0Ex&=#SvE$$tv{gKq zzyqF6UM|9h9jR@Z;&>;lgwfsh_B;4_==sKw5Ryp@TmQ>dkLw9(o2VAD7EHk@mS9hD zdzIb;{$p#>Irus`2|GFWT3!drAVIq5gnnI%P3(RhTKqB7UWql@y-4IU87Zu)vUUyd^(UM|AwQg580&+oo*;94x?7}TE6s~AB3g-O%%&#{n$4TJrze3U6X(4I$M*})S z*;}Q6%kSAuuc?=_KWAIHUwvr{Wcpq7cEiB?b!;O52=&Mxb>X*C!FoCnx2+wnz77X( z|BDGO$N#E%Z@5N!j)Gcs_cHojA%qX0eC#jH^KJTGfNNLiX|X%oV_SDTEB^>G>^T%= z%47ij`rZ4l=5Z6ENBs6&I0MvoiBXt*%e?f*SP)uihZ9FIm97h*oD{h6`KyNg4)DS; z0x-|*RZPqGF$nCiv&z#DOS^=P{k{MNTkJ06f0QdMa>*Q*yN;1I zK>ll1K)OGO2Ohs>rE-m-{PSN$vC|czwN?Lxez?Gd{jj&{#(!#`bNh)u43QS_(xehT?!bn zeCBswHJ?^QN$&P@;BIGAIV>BPs=$xk|2AxgOA6V3SR6O>L$2=|PlYErVIu?-k325p z7-nd}lyKDe@c!oQCnKjG3r2E{&`tY0;vl~Dbn4}~!s9k7ZZ3@8@f?w|L!$wVB&N#ul$&LH-eNGr_4}CS+y`o(dTlwAuQe0;T1BzFOW9w7q6JQ8y&p%DrwH4yaUX>o6jB`BW zA>ww>*~@?G9Pk}2*ExwcyGU5&e_1`g0gNEv5A247-^AEnD+ho$UwA7KR4Z=Pq!#bS z*Kx?$fPOEj7}rBCom@1VrYd!#B6X;dO2^AS&X)m|ltK52p`x4IgVb0KVUr=>Y{57! z?lp|`&v||6dD6pL0Ae<1`}2{({ytNHuibwg1smezKt|NzTL-!Nu-!KKEOVNZo#No| zV!>_4Op#ozLb{(bV*Fc@u5LtRv82&WRaMFreh?8kChh2LO*(?3jm0^S&q z_gY7Fhqa_0B+#Z^>3*!`_1kEKhR&jG-{Izj%#_MwJ4c*)j2h)#%(b?5Xt`yxq9j|zTVn~J{t!1qGC6Mci{_@9DV7E zE?aArD_)VD`L7%MXSC{pvz?B33XmZ{1@-&a%I)>(;TM~IUc#!2PhfrX$pN#>1U+B+ zEsshz1{Zuev|fQ@glbeo#r9meY3<20de#vJ%D!7msmTQhMOVIO#@D=^EZsIpLtnYr%+L0gfClIz*PEN_w|bmx$v4Z|5K4IDcY-?3cMdsmW~8~ zVU;DYK3J8btvERzB)yKST$-9Lg04Iai*k0;c-e0 zEbh&`+;Kx^d;5w^*Y+)1JZ{msIcy^HgrQUIN&ljqG4KVf{&X|q<1UnLlmU}wbhd>gAk3|~?aU2wwD^h;)>51aeGoG* zkG9~L!RW!A)Rzmz_ltdU&w0*tre+AoX@MLjD8}b&GvAoGSOjkTr_h+WEA&x<3cvNO z7%5%Ud5D+&ZhDRBQ~l0uw3UR~;dZZ~rMI+8@)*5;MSP(`Ioot}=+p0>8Ikw`$&ubq1+YyfQg+%iBO^Wff?Z=4Y($y#G4y);HuU;<t*SKOwM8pqIm;d5qWtyc8eLs@tL3H%`Vp^L^8jK}Q z>51*gyOj@Xrx2<<9Nlur1`n~9s4D~ zZ-dvQp9|QnNc1ko&BV0BpHl~inpyhdijDzxyin-v=jNcYc=^tx#2Nnz>&uhuO)N$? z5x2N?U$&yNgbV;;PESLF4)@L-JZEl2~lRtKSkaQUXTsph%Q<%abg^+cr1+SJ2Nka~6sn)rk(jz&cehVA}2b$&yof?kuGquHZmUp^x_psZu zEaTMtMH!02RPjNh4TRN_$YYHftXA-QI9N%y?NIUVs-XjWfvy?TgPB_J$3Gp?D}>G( zoDgu^_=s_B2H+m|&<>H5r!%??l$R}(M+2oq*OsE@$*DQa+7aGY2ct|**COX?b#O`Z zqy*-ScLr$H1bey^x7=_Vn4YIIc%zP-+gFRy)y8fhr9(Ugs^S2+pi>B4bZrsGJG$b9h@0NHHmqsUa6l>n7n-`P z9}Om+yBpd0GC4`7nxa>2`S#4v>pBfv=*j58B8?`@Sd`|{xYN5h4VLEA_8cH^)V@32 zMDXqzs+i$C3>T5ZU#0YMtb54MMic<3*Li-Mj&qSxg4nBqyOhl^8{Q>BcJ&g8I;cL#JP~3&tX)G{^G2*U>M{w*BQlse6qT zQ(m*L7l>rLpcVR>(PHmo>}+Sb8{#VZCrY0@3u$oH)svilSEnd7B@p*LBxDJZAQnfK^re6bGRyzB5VG@d2}vRh)`P(NMHDazue_ zA8<$EYq*D&p^8k5?dNWF$u+co+(1Gm`2d4s{<&zZ4f=IeZLeRaT>&D+J*-@{v&(e5S1{>82IZynsfDqQ~c+aF5P{O<=WNRerbCCAOX zvWH$#fK9ag{0_jLc#(Q6a0O^)K)qfl<4gn7>`mR_!ur)D7o_sYd^I@@u$olIfV*x? zIn@FUbYQN&_&f%-5mjqX4G{(tv~v&;oa~-r41)|Ze3?K~=8)lgA<7^S5f7AR51pCr zeo0|qneC|(6fu_lf7DPzA^RL;`v0Wd-h~ike7n{I=w4Ak z241E??bdgVBEwD`0#-t&b?8Taph&~>JHB)BABmRhyE_{!xmzpV@l3##QV2eDS_de7 z4gaZ7E-2iq)27=8^g)X>C9KMIUV(;9+x7+1)Z?L-!d1=huy3gIr9pgE#$gn%!%W^y zXC#p>9B0~jF|L;XKlZ^6hVnIK@luwa$$4?Mkx61#xj|*g^7VWpk>@A`_Pw25+ZBcQ zd%5y=jZ>VTJ3chjR5(AM<@m7II6+BtJ{b6_M<~tk%E?{Ac@Q&jZ$i(3OlEbtR({uE z%b8anu^=Wqnt5q68b=0TFXI|J zT$F;w_8HG%1*RbiRJp|{l)wWv+GNN(K}HO)WbCM;ebyTGJBlUIm5nWad{7tZhv*Oy6wSs-#OC8@!Y_XE?ItEY)(spn*rS)eXu(eXuo->(3f6nAbl%}K|c4uJOWvmFUVpkVX1**&$pN)X82UOHX> zx;^;jMmiDbl(uiXtG9>3!2Lmkrz1c}-7;S2JGMP^`!nGx$oh9&ot;Eae}7F#xVAmXijAdC!xgDTgr zx*jU=o!Gza**Gf?tOW{*sibm{a{&u+)-j*@wqr@hU^rk5Dy2H|qXGF-ko9Q1dE8R% zk4oRRsB~NjFq5ps84eumJ%0DjdI-RW<*xf2RLJe$Foz|^K>a@yLBem-RfdzuctVpG zK~YD+{X&i)&6Z9HZuUFE(XmCNKcvtXBtY8Uk+ZenaYoj=!iE|U=#BERsvWsGxQAR8 zo^HLj#dr5J`8mrrm;wd_K^sSCTu<#2$X;jH9~wGZ0du{}5(4!|rNcofWn+k*eVIJ6 z6&63`0R!@eqYWMBw+6BLzV#q;J$38BdfPTOm9#q$f*j!aQ-QxJ?h%AaTBpz2qP?CZ2)lhC#cbIZ3XO%b}Y0VFC9-R{2kb$;t_JHP&FQwCtn zfbCBeyk;wR6i;jm(p4vpJsZ%C9yPR}+u@Q7<>V09=b8qrkhr#3=YgUfPPaB?e$gr+ zh;Gz12ze{}sB1;HkZb3=D&0z7biId~`V>pnGZn*5)P|fb4*qeZfL}t%U%@{A%Z0PH z-^)iu`OO2?3V$2aQbMAGYZC#NI~S8kPE$&TCmgc=@h2Seq(ulp7vgc!-Zrm{V_g>c zG*tXy!1zuWD$uLQ1ty{!lTxu`hOsQAF&~0hnG`mp);eS_EvG&a%exaQ3945B*YwvO zRhJ^QS_c65Y-R0vJ&VvA?L%~&doM_Be)ACci3DUp)DXWq)9IDybZ!ra6D%?*ldS{k zl6P{6?EFGTs^P9!PHvK9t~a4KM5Vo2#>gD_EzY&b0@)6%pZ9d@pIQ}D&-G}EymbFy zso6rTgKRz}9o<-Jb8tv`Mh|$b2Oi8}im4E1kS8hl0-}orL7%*^O?=Q)#geGs{@a35 z+?g8q5-NiKF1k5I9qH>kUVki5MbnnA{Xm0)l7CTm_^JY;$8QDPdB)?D< zrjk`rjPnRbAjI?Qi+HR-2J(o1B2my(QP)=vrs^hVXQ$HMB53N1Gqg3I^?IRDZJy{8 ziN+e0=d=y*6Rs8~7K*sp*PjjyDBLyEZMFnJ6v0Ao-6YuEwQ57M&t~| za|{|(ULb*Prs=<(H`^ujTBv$~Td7#$qj50xeK}uNX%98?b)JtEzGA?RD}2>B8+l{ zTFQ?Diy-*`*a>LnZ5rc7mUxaMn067Wyrbo+O1m8MX1&bjjf5CZFPf<`K3^~el{A!4 zn!`0U9ZYCSWjBNYjc;`z$T-7>8uiWY8K+pKSxj61D*J5uhyqr9BfXK~f#Va+vy+`K z;u>tyaf$=UHXD@S2H`6!LSqD&^A0HCD*6(?rFFYxEh!L(v;AbEx0$-DUn!SpAu|fWMmoDvwXQQB~PkY`} zy2H?1vH{TWUS+yFYU%q=KVYIPw-0@uLAN&QwJN+`WmFtozwN?eQMS^&TDKCOq)>RZ z;fFMw8q_k87ebW%E{9NyjnnE3)Z#m~3$W{2_Z@I~bb}dO6m7n9_x2_?8$6im^Sm@g z2y=dF{drl+p914lw3A137wRVW2)(d1GeaUh?}RU3p8Ep`a2sF6zT_xQSykDo zGTC%F7fVYL8x7$mGOo? z67~(#gh*`Z3g91m@Liaz^=CtY3qu)9D5UvEx_$G!?m_mpQ-_@QK)bf6rr-`IW`gM2 zDIML#_hjH&C{u5r=adoR(v$>7S_l3B;mN!?TduTz)j0M5@Je0xJWNfql)gsHc}!i~ zWgfnYsCBY;R{5NO!K~5Xi^He|^c*Ri#(MTO{QUVnFB3-NA0Hdn{YqhZ3}GDAz5L-K zL$#L5j}L`GB33ip%2~HA^%b54U@dbTU2cRw43` z_igfQvNA46rav);^}4dUcs>2E`F3dMZ`hTOw`J>@9+1O!*@p(}k#aDHCZJeOd z-^}HFVg1D5v}O>0Kg>95^jx({djq4Q`cum>E9LbDmarsMifEZ>TWYe~+7-#7Gt155 z>LpQ>-0Iz2v}bl~>3X-9UtP6(=H7W3uJDW&X=>F4jjz01A%5gJ)YRWaeDf9F*e@`h z_3nI`m9W_6?}a_+H|E+^jL7}5bHvO?=xHtc2!f=!YlN4tO&YljqZ+(KN&jRos4zK4 z4f%0!$JAjz#1-W6Tj!L!C$S?z%6}FHMZ+lztP7~>^rW4-=$kc%*t-wa?TROkdnRJ7 zHrF_Yxp$3Z`F!$NYJbmrokXll|A|sf5-r;|)#=}uib+PQx!eeK(k9+5IxyIT=(Tui zi#lG1iWn1#YTL7MMI`I_5+7^(>4(EnBYT~FL%|{Gl*=w`oHCbP7AYB6m@O2}i`c9F znwCymRrIWEqPdXC1ydU6@^rn@AmP3OmpN9I9}I)+Z5k<%VVs4$aE$wTHiL!;RnoG{ zuASJ@)s+XMZ(ivN&+K^E^{xWapyfe&s)l*r{xbP-cudP_E969--i_4nxQXDPgn`S; zS;)uS{jf-Q);v;k8UCaZQ*<~hFHhQnFqcR1ou}*`_X7a#L0(^k9`g^~bJ5s@UeCHh zk`1D9-0&?wp&msWpHb~lYEQN7%y3#>X()U{l?|v_edV34i?XEsvk89uOA?mKO1&XW z5st*2x`*s7$(u-uv7v14rhcSlM?GfG34xvI^QLUep<;jzDz12Wd%v$SI-1U?HqqVO_wImBQRI;FNv$lt9U?bIQc@`w+a`0#EP6k>r34a#ZY4M#-#ym5L zkFH?*$%ppGi&9}T+VRS8>^w3r?3uacGC1Z-)E!2|b{B=6+~;1R zl9ueoYAp>6d%{FJqXqfU)e*gyb_rJ_rIgkBS8m-=r7sq#Z{@&^ zl5OoZP$a%m%fM7IB_SX<+Rsq4EQpZRJ18~>2U+7k8K}35Iz$F#?{dhUdSp$6@=o+R znVW31u66haE#6FNgPcPvUJO`-wdeR)O~sJig7wWRXH=^qZ;GuIqen+3i}XF`ghzvx zVGHlGj1do8psy@h6^fWHZ{}7@TQtlqk6thY6cEABeoKi^2|yiLPi_*| zp_Gvva?4_!afIjx_mPmGfF+|Ea(i8a>)2XZ30GI2{MU8`%duT?6&*L_eGSh4W;G*4 zwsCkMH#-}K;YihxvoK$~$dia(*xQPUOj5Jzw?;;y6!VfCZ$&AB!tw!kmO&!jtl*vk z|KMO+lQWPBT}WL=LhZgYw{0qoIBJTd=P!wRLabscOtTxRN3cPg)f-Wck_a`hyvtXW zKBnd;l~_FIcD8X?c6}BJ{S@%}xGvQ$F$W96r*EKx^Bz9Gf`lTkN`BQj@18$!Q2#&ndy*vk4Vc)AWtaGl1t!p)}=R90BfMPc_TFV-0>2Fs^a$Al|Dc!lg(r`8Okv}Q}Vt(SId8`{zAQ+ zxNT5}*!9Htefqw?rls%e&b2q4K2YLKh~Fu%M~vRc6;t>okHo!K=Y-1%!q8CL0uU?? z9x14vesfZ2Ac@;mgTA1xCnMD6*}UQ^n3tqV9mE0&P(A-l0z3D`dU6+rrr-Lm&(VEo zUxZE$TKV|%2G1!CHSUwTtqO}~XXP^db5J44G-;1bPuf;rLIY~tAKc!y^tUIw#E1!1 z4P1olGL(aidJI7{VrZ2|!ui#)#F;T^_C8+#8f@fOf}eeJlD9}*c-H6aa__3o*(4^L znqe>x?T?UQJ;I5GLsiI4>lJvl@X+HW;;TinePPJik{t-#CW72fB_b8rZ8pJPoS0uJ zJ&?4AdEHI@`%0h;hzVet6*$>LB|OfsYk&;95l(~%Rb9rN+_7Yi7|n@SF-z&l6g2hv zqWo?yTeINDw9nZ%m%TX{dpS{+IY#39GN@7ygi65?QzpZ)_v8+RX{H#-`wCr?0E_GJ zo@7V9iVlq(3BU9;A00t5w$8^G8xE`FydnTCK&TqSKy0Z zqB&(XXN`&Ya83szd~<7^uvKnke(9n-eY9UK3mP`Yc~QF<{J(TLdoOR~l#m98u%_SH zM{2ck_u3g8pYxH{_zwr9?5@IXQibjDet(`!>6mv#jHJNG<^Ms{$5+F`HYB z)1>l;25zN1-OLXR;NQ4WTroeWhBaLsX+}|J=fpYMG~B@KXQwcW-ZU|bznv=$`>aVu zJcb~ueV`TNj||KL@W~F+zHhlKdL|i^n;=|xzsVmc$`_nH9`X07j(MBPB~c_bF}-|# zL$4y6Yh)m&@^l4bOTX&bOZ-*szGN%h&*e#;Z+~{_P^;M_FN|2{h9c!p!4@W@6&ELC z%v?5`rOFAtOx`IZ&R=}!4u60v7~U+40o=7?>$HCFUyM(4P(%X+(Xml%;)8Ek~genp=*Qfyz1rLDs?gN1E;U zXN;_=TgBxwN_qi(E1!^%j|iIEiZmnyqL~?8<3BXS!|Fnx8fGePabrAU_ToP$-sggt znNnYwPd8Z`OgGc7ply(iv&%=qNdy>tnL1^bAMG*EAW+!`TuH-zGy)$DzLNWAX@|nn zrd2n(MHegaqr|zKY{kWTJ`{4`))ZcfvWfCbEqfKflDnn52M!jVhu{b;vlmB@q#-@I zh!@+e065}#nG^t-)!PBjpKY z=G5}Z37i=^JLs+HtlW+zN;`=}x;WB+FP}H1jSG{#SI*l1?Z7tV8H{9%*-)b5GYm{T z@NKs+OhgR3_6;B>&8ZJoT>kB+o7|KR zGwy~{5>S|Rd+1F#A{$A#wF##M%Uzt{noXTQdJlV)>qMXqkn$d^w-^Q$T-G$F{ZK1- z98gK*x#R!Y%>8Y`2x>%j8M$XQ1tYDx#e{y8$*GH&%};!vbuagPk&1ud%UI$(G8^{I z%aoe!m%NgVqBXY5aVP!L&ESeSit6|YN4kWBBN~}=%4dN%Gx4T*@Kv0;kj7@3f&DC0 z@zg^mKxOU?vkUQND>oC)b4CP5Glli22L8ifuG%YZ7*opd>evb#Jv(UH7eQtDI%Idv%5FKjad^h-*`=RI`&s8#l?wYNY><} z_B2G7bY*ld+J$1f^{%C!l|gE~pGKmFE84p#%2w17}W{dwJ~wKzm3v1s96)k}qhY4Zs0@A6|0$heer=-PLqwz ze5)7M;1!>68>+W36_rU|W-mtO-Fte39LvScHqR~KR`7kccC~k5E*N1zYmm*+ z)S`}*2e(U_gm8V*>y}$WFP6+N6q}MjJ-PDH;863;hnFf>^l7s(n4hT_XCeQ;hor=` zGH!q(_vukq;#13&_(V_!YJHtEQGdzqRp7gHJ|(YcGey8UzVoLKGP%L z9IEKns$Ax57Yi`=9+s3=rxlT&;AWlLmqQR5Z+mz`@tnU$G*Sr@MEB2dkDTm2 zW`_AT*erTaq{3Teh_|q2?zA~)#5}9|&t+lKB^Z?*Mu}?=SSL_NifOqtQGvC~Dy%ZJHZNyM&xx^QuS*8_xEdgR0_)H7gmb0W-{AKtSNvpWqnbezy3@ z1I4_tIcODeP<9?wRQJ17#k<#>8G90h<(zuicI%;%*aF9tp=jcgc!~8qJ~c_@c4^eI6Rh?O7{*DfdMUWmXw9 z*W^7LI2Bgr$=5#AD35+tQFdps;1*8TWAWAy|NaH`cC=C=LyZ{z>U;Qyx)XOhDz3+r zSovnL&kwM1U~lZM(xD_bLBePCl4Xb;fc>ZFWL%^rY_CQ1fSQo6`Fo$|4%xRG8sE!| zZ@d^fXg+wPuGS+|tt2j2NEZ^`YpEyv9X6EtL^fWDO(-`sCB&0Ym%ZMBeMVi>*HQ@HJjU}CtZyH1eZ9pS{KhEe7G3(Iy=EpD6|ZIUjx zxRZ^RY9rZo{TXX&cz2;oMNaFT@s3SDz_@bryclI_Cpq7amt>Z>aHCK|5KI^S4^7J4vzXMR0rt^YuD49pihv6y`oRBJMV`+Sid_Mej-_HI62jUDoDoP(Ev?K300EEGaj19EC4 zrFbx3Ups#)ca|NkOmd}HkZ9sB;)(8ilgl-wX7!CfbZ3YLE@6FsAKG_CK}c)|s)rjl z2^ox3xhE8m$r(b8pU*LtSmOxi5f#W~9(nOSgtxz(pI^0$H1gQ|j9%LJmejgMQkzDG zMdWxxYu91?yB>$+SEbHzto;6rscs7pb?*E;VoTwfwd|Kq+k+L?Pz+)tv(tkI)J4av zhObU~#MmSs?CXwF^A@Vh@vT30MlbY*tloV`=?ey_w8W?S>+a8d*fp(_H=iz**UL-> z>8J zqf4IqVG(-eLy^3d%cKF^a>bw2c3md{C_{ z1szh6{u1vt<~bF+h-LOd>#u#Yvdru-FE*S#C?KM%>OJJbWnV6HS~QhI_uh(g#*&<| z*`o3z_HQqeP%%bpWN?c7YO|tgZvI!lOmRN*;rcQ)b{)!DwQ>Tn5qSdPJzN)|m*YJS zw-9^h7s8G*zLLv_TK*Z__ta0mJ!-r~RwSzsepzYMPPl>z@BgPHpfC zs}G^IP8}J3LFE-zQZ3Bei7Gfb`3Rkz=sI=ZpnGgZWXH<_`?dbX>IP1OAC^>&F#vC&vO_^A@z2DDtQtxuKZtKMSjBiPV@Vg zYihgkAz`ZObHnE<_MuBR4{h9)Y8K!MAowkn>?~?_j{rH zI|FnF@$X5-wFHNemZn(cim<&t8(73+6>I$GkXF0%8}mE$BS;TB#-1SnFO<=nhg(E zq<%>ETiJ=4f4XE+Up_Q^b5E?-6YXi3&!_=;gS}GRx=917I%LyecT^_a@WEYm9SgDq z59wvQkwgbYo70q7Rk%Xbt~bYUu`_~i46FgVH<#O-)vrWbGkI+LOeW&wI_e^iIrw~S6@u9oW z&Xy};L2mu!o8qdiWuuAa_R@w2%`Ukx#J^U6P)w_jMoh$~zqXUtD{5O&6&qQ?@1Vfa z12pPvYViW~P<3Lt$m#0Ehy6LG{UrgSx7a8-6BqsRPT387D=4Fm=s;SN!@1nm8ylzmkMvWC*^m<&1Rc>*s?GI+^Ifj+I?Z?jgl#j~{ns`>3n`QF- zn`$MeVWxe_wgE0R@Im-8ohjdJDwiKcS3tdT8eR`)n?)|3kzDwhTt`-|d5pibPy0Hw zrFoI(RR70QPAiP)ON$qYngiXFcAR@|eva9&XM~lP4Szu3EoRfXuXP|KoKTk}D$A1R zYBpODT@?%K^#W!F!UT_Ev$4CrD$~aadvYRvV!H#(ux`r`-hnInL(LTm7Jkx8-%i>V zt;Gu-xn}IsqdY3hVX>;|Xc~IGOmEl7x$d4L$jM59^5E0Qk&<`0yzX3d+-MRtTRIqw z4LwzHQn1cxSt{S4s>DlrD&d6c_;>d2I~fXw9iBzq`U;Kk@lJXWM=G<#-MLIqaz#hZ zE^^`WANq9;P9eHABA$!}$~St1b`RGuY^e~UFLk3DCf|RrVQaN9RlvH`UBAE4WAo~X^fhRiWBpv`GoOdbcSScdy&o#yH&1J8E!Pxu ze^tKIw-J#s*#?H&n?mRP( zjmq_r^u4{mc2a)!Yq_@Ikzl^+jBlZbgExtX3ZDp>*%lXnoa!yBn$`jT0dx`OrNelR zrfR(Pt|FDlT;o$344DwF{ME3RnyH7om7gk0Gv}6ywg%u0)K(1-a2ZCL6dNu`3LG|5 z1VWl|=42pWO?O<(nq{{T1pVZ?edvwmVyV!1*}zwYh&jgI_i*=P45|hghE2~q%h)iZ z^3rUC0qg1fo<$;KZ{0#>CgKufuRHuv+FFL$4gmOW_YP_~cZZ|@ViWK-jJ2Ne<(+g6 zKjM31owv$pj;m&0hsmXeQAU$pUMv$9UNXDos|V(-iSDR9X|2gDmVcwC zf~V}m;rDk~uTObQG9B=;;v|%suhEqp3!Mi;cMFSMUU-j=c+|4J*H;KMz_^wHG5KVM zfB6O==Do~I@8f_&hQjjo4hF!kyn{C6ubnoUYgi4_)q=>nrYBiL621vq&qB}kkQQKp z9iKxF-{U*ekzj?tSA1#BpU3 z59%4csS~(B*E!4lo`@O#R_4>2o;{PJRu1TlA3H7NG?~Cg zK1c2E+}cRfDGvdL!Og^yp(~e!tG3?KTLi#0#3!CmTh~K^AJp$aC{x3w<(2%W9ZBmre9}I;H%mRwrq7W7QH{A2M&Xgn(<+= zXr=loq0h9Vgp_~85 z^Xq5q{SFVzTpK__QtbK8bxGabB0~CMHe}b1wdVPW?1zWjm+`DFNPrnRbM2xt%dZ(( zG?O@U69no>oGm8`xs3+^q=i2D^PdUstzvRPsmMpD_W)^X4F~GAoy!ZwWk7mL@6T-f zga-mGF<{5(9FY=;PG2b^Xt?_zcJ=z8X0koD_!IbO9b->X2to*;PSq-kyHk9f5q$ zx}a!4kWkhqfOnX;cxT^R2-n^!F~ptADL1~^3tkvvq*LU;FN*vRb7FIDzm{5%Royc{ zl5I!AGC-DV%jZXpsB*NnjoJ=r0Y2OD!nl1cKkSHST38bn9Zro|&ay~}zS^K3kW4jw zi}?zzeA6GrG6xF(!y*;zznejRv%Gxa;Awza48iQc+O6-ae17lT_;E43^6XV(`~&mt zYA}x>1k4E|{uEX>U&`QgsNzCq`jN-#!78mVEGNBU@29fRtzX-yf3tYUwJJu)145ik zkY$Iua&+fy<^GT!+I1H?(X_QZiWD$9x!yoF#nCdhAn9q&!G&|k46fw^eFts&pjCaw zW>+2}*ZB8Qavdj(ItJ|PGZRYYOQBhp94yq#ASuwY18?x8=Pq+r=A7V?0U_5C0w81< zn8v~T)Z!Ax?+ZJM8ADLMZFJ2f*6J<}j+^a0qm6a=K|(CJV6W2pZHn39B;$cuzD2(XZ7M{%zRm=JcJtbq&1m^NO2Jjoqp{pVshV zl&n_~DyI}SRAwvW8)L2dvNoyEmVs_t$}r>3)MTOD@scR`#vSN42^28~Fe|Q*DMxFr zh`}K=Cp#+PN4gzXn8LS9W^=Ly76QSx3KLp=VFrLtz2*0<4BMJezi$A10;Y3X*T`=c zQhZNrrG>FiltxYEn4Ndjc~vZbt|32f6WO5qD~cDFbIKeUL19CAM#6=OWj>E1zxnfS zHQ^ce`d7wYk5G4ShI4LI%r^qI9>92%-{6Z)FzCH%278rCdGV#M9x}jhTjEt7k1HFg!)RH>|L`BcHc^?#}GkQ zn0WKu>)dmg@Ku6BO5EcE?<y}Jshym9pFb&Dt{%>mn-4|)Z!`n5LkpVCp} z-LyO0Bb{pXSN~Kq08Tvi)$S}1{M0N=!MW!$xAA;G70ShrcUu3}22;i>{PXF+AIqE|yM|@Djyp~&R=KtcuwCWH-2lsV2FyAqUQhO@x zXrzS=VbKw$#UBXYL(H?2_9f`j6?*C$<60jMpQv)w;M8Z4RnB}PyeU&YiyLG#W50OD zO zMM<-d#}mWP0-mb?p3lMY{85?SIjnR;sRp25a@GC)WCNZFZKx-HF5QkN50_FipUk@L zzO?!3$ZT`siz@@+RfmZyz*k~w4AwqJH}e4dTMxfNwL4%)|I1_Rf-&~NKNvaZ^f+0HWw+l z$V{dYSV6)JweG))qqZh2Z!ylg^sRED8dcDsVVCJ;fZ}(FTB0+Cl zJLz>Hy^3HMV)12ZwTcvj(o(j0JZ80d;qh6zSqK%yimaVtU>;fm*@V?gZTfzk_8XNk;4ktFr>n1NMyq_GL)0Pn$kf#KO>8a$*)9(}hK4J1#viG_^_#e^c>9 zy{V=*S7CPX9w6$66wCuO_dX|^)WocY4Ok;+0~$IZ1SCGB@UoGmQdHXczyn1gbKbst z{gz@7-12jq`PdnS2HrUB)whLbVtNCs&DyO#mqXsU&q3N)+nLpwa-h>`I+aEal4wAZ zV;P+oj`4$YdhXwP6!hxi?T_PBaVXe&^SjYT0;Dze5!kb)x@|(%RuUbJ=F+?@ySq-e zpucu3hRYlz)D?v+@ZsIy+i5}nKeczp*3M^I`)CioTmx6RAHJr!-w`>t=A1E#>~+@K~uYScEKDMf-^ zfoI8`=tz;O`c9@JUF|dV?D&= zNQ-Uz2ptbE62t2%u!g>{O@x3u+}pbYuXT`pnavHj8sG+U_{UU>kE&avw<`IMq-gm4 zX2Si($T^SSukvm%OJy8?`R>1@OM2Gh=@N=gfNP(O-!BWG7w&hK2N@KJv=49hB=`&$ zG9@~6S2xFM!cSt2>hkmj{4LzBkHlnvvtLxq(u8u#oJ3;zISe;M5>c|zZgdWvAPxjg zX_nyD#FAN1Gx>ZbwlO!%zm^>7QbORY_ulX*t+*-M=XYmyF?R8Va-qzwhj1vbdlhIW zs`mFjp5(^c9s2lF-7C8d)dXmxdvkZG3O+0YATBr4mQp+E*vhY~Ig}?0zQS|@M>=7t z5k-f@;gLG)yDOpz^bC4l@nlj{iYzUy-V?UY|2%}ee^mIN|la=uUa2gG#+VZoX51( zuk3(sxI+o@s;1InJ{)lL4{lnMnz-_Ba45$V$$w?ej_e4{p2C|&0@J1>Smajsx4QvT zr^f7Jt(tyt02ltbJXgpdC=wOGtCKR|*M7?nuAU%K1D{}Tul)}BCX%QQubbjzgxY*1 ztE~Ffy4&5SwfSM1+eRCLu*(rjTKwWnDs2n1>kuITnRat#eise)#Uonat42Rz26wss zFy`=dWm7c_GaOYtSmMmMYoUJf#03lGy}m7>0I z#O6IG^Xn5nDHr#{UU_|Ag##Bjv_T*RV?Bv zh@{?IB6!w?1GB)f3)Fzse3{PctJTN`siEjj|ARvF_I#~SGiO3&@F?Y~jp5u^*DvHR z9iE&CO`I62X9Jaik#w#m6mbL7B~bkZ+(4=!dzZU;EfB8IO3x!lpO<9B+qpd*zAx%y zhI+rFl{ec^N-djMTF`~5-SIBy;`BRzV6i(-5lsbaWkOu2PRy9XK_|fJNWf`Ps&sYb z(U3DWgr_$&TjXXRmv2}ZX_{K!em07fHXxP*S-2dig6M!5n+MMUD=9!9BU<@HF#7n& z7h%RC9^s*X(v+h?1QWn04gX{a|4~SRX{+x`aLxOqjR|#JG73CcH%I?64t?p<`fyy3jDw`hK+y3P#gJ|s zSyc!L79JP$p}0Ur(Q|LMdN`KDSgkv-A<_I#Y~u)tvmd|4S{-?mSrriigrQs)c*PN+ z32qIq=&tfSgB^>9-+uH1b6g~7&4_BNpcjQa`U&%6T1dC73^tk(dpAg@W9G@2#doxk z&22=k9Bl4K|FiLHEGI^6B41Wi_RFOPL(^qx;m?KL{rAn@pojsqK$GE%fJs5l)zofT ziCdhb#$jLmWM<04VWZ8Q@euRni^mb}NRgxGk+8UB9%Kjj8R23s-cNp53>g#7XgoSo z<&2K^xs+c5c!cjgllFif_Zq#lPBk%9i&?zcZA(7NDb5BkAhJ>ld*moi13(iUFR_OU zn>LRXu($!fdqVH=BqMe-K6XtI?8Do+0=-|>7i+W7MZqk;Im^J1!5>SCm5kC15A2y(S1UAVprqz1Z$V*CCO{D4 z(T4MOa8UWd*p)McBv{=RsIK;>+**NNUg_ofFiwW#Ur9tM=iq z$|Hb{qQc;}t7XRCcApKTS%5^w8B%$Emk%QMd;6tWAU1q>2MPp+pm4(W`|!4$<|cHi zne~~_IvVB(-_6T3Szg1p#wQ+^*w0d87CRG=#6B*}IkZr0lO$*psV9rJ%JbY|t1Lfd zwnpU=(+H%!1ci6YPbWM@+@4b06z?PEc3e<5xL|&Qhze49UKay}n&8=%bA?Dt15R(G zwe3}Z@*(~AB3;O~p7Z$7T_X?$#w;LPoH1)PoEmhP5HOraF)p`o#H8}}ZMDusK6f{x zrIZjC@5O}h_r4jG)(yGPbAM$4M8TYBA~Ffy_k#lZx|Dz=d>fUe_~u+Is$h z6Efpd?l=h!>%dK!IFE$Qle>4#`&1O6Shr~lQk%t^R9MQ`C z^TUZ>O5fR=veSi-R;p{mL@&l|vjZ65v^}xQfqpvlRS=?R(`SIMfU^LXlr7jiV&(B5 zkOfAzz-_70RWtD*XWG_C26^0-!9gUA+aDy;S0b4Xj0G~?FQH)z_ROW{9HzmE1kYob zmo;$5iA{!I^M)u}_QNg*FeVTKe<6hh;VlSeWx}s|)x>XcJ6S5-Z3nqd^WJ3c)!}O& z^uH_!MPv^0n@1_W>04_uw zf$Rm2G#Wls3DOi`xW}4$z=fB=s}v>gqTp!S4=VbJdnvaLD=BQ8nYP%R+I?_ui;ri0 z?7F0=e$b4J)%x3A6P+;9U2#z8gv~2!L^W*xW{e<_v3g2|`S*8UnjN^?lTcU1U>Shf zLj?JK>x7;u7;a``m<(g}3QL!%95x1%-|K_A@ z3=4ZcKdBi}*u@W1?};?UAy^WX*ds4#2rQim(rePdEYKmREPP{;7{`Gx0Ri9YRs+}{ ziajVqKt^8%xsxs+=v_#v|9)8wbjLuO1w5C68H-PVLUp`0op-J4v)=^Pvf)uXU7 z0ow+<97Q_B&wzx`v=>z5r9(1((w;FgPp6%o((j0*#bmW?JW9rmsHJrY<=l?_%L!>F zTPZWx?)YY0nR5WtJFaTZKF*r%Iw;Yheoi*+r;rYnm{54e&xTEr2c$v((IR$|BzurV z%63}**k^*sV3u<9;ycRy;ac9;A&V6SijoZrED-3QJ9LQ?>%T8{Vp}CnY`}J_KfCB8 zQFY9jLmFBD3kLWz7K`yb*0D_}XD@uQi8A1%Lr;~FEnNKLmMhzyRBX6T4w+O~L*9AR zL3$X1v1cg<#KDQk6ym`N9*jv=DA8zzBJrnUs%!$PWcBqWAaZ~YBV~92+yOlHaI90DM$MQm5s`C=!G?RgBOkph;iX|K*{8J=OUo32;v`qJVqF z-dHMpjHuKenJ7qX>OqS`OTZtQegHv}?*HsUKL6QD@ClTUnC}aF2W%~To*`|27rmr1 zDrOh1D0e7QYjB)D!SbH-Oq!(1Mr&3a#In%xrGkvWUh-&V8a!J0EDllOR7Q{K`<(e` zp-Sz(326}9#1UKD_5(@+v^{2@WS+n^3FHyClpv+4enF@lyj$He1WfZ;1?YW5LzBrD zd83Qyb;NOa9npusj@X4>N1)|+O~sRdP2P|=qAGk|B8MiK3~ztGrZsl#!^GB~q5F$a zY75+?%zB{x${o)!;WKkNJ(Y zxZikCd^BJx%Fo~cpbnJBCeV2D3j}Hz0gQ&9vD8=f^TC5@aQfT*w~uP9!bD0yf4P|R zK0|LOv>1UMGVR*fdyy|rM4O((8Mmn71NdV)ymP;bepMY05ZC9hjn)KN2+F{jvQ5y_ zijKVjYG@A%iR?>k$@{N?66iu4OZaK|Mwuz<{Xt_<CoRrbTwCU75pya%M+B5NE)yL+X10t2ii*v9fLE_p%Z*~ z=dse{^5#2eYvQiTIfJ^6GcgPqS1qXTcQafe;e9v0^KZH@Wx(A-kvgoDfCsatDuO2g z#(}X|ZC+K4P%c~?7^R5=BUl^k0ud$og*%Dm@N6o$1>o?>0#E9Q)C-UX)OL9AWH{BK zHGVg@4wIU$MZR-(-H3H-uLpl@15B57ABk4 z|Gpjqfow88Yh(?9Z1@cV`N{2Zh&(!GTg%D@9VBH&KFSL9JZ>lsSJ7b75biB|b zh{vW98XFt?2pVDT9uCAq4wGk24O!n>e?afH+WM_Gf7|n?n(5xGBWq5b_;ByhwV!tE ziNklPOgGLC56{@{!cI5tf}6hC4n3f8V1Hzjzwp!?=JIezOM}Z9J*^ShRe+-ZSDw3X ze4%^~?($!HQm?)GQv4Ui)@|GQ1|dUpc# z9+#alzJc3-!HsuupP+^1@i#06?=GI4XLNJB(85rh+gL5?de%?>zV&P$fy(|1osctr znw$6Wqv*2L)USec*$bj@TwxCvhfc^GFKhj>?%(yzC%W7TVdIO7deb@b7%z6yrQ}gU3$27+^jln;=fBFJ2Nh9$n-unE}BLucNl$mFt+ZMS~s^29nm0q{arP#N`P+i z7`jidiKrlpNb63FjnpA;7+?3&Zmc$tVfCHX=BwTA1l{q)B|SCVc#c}fIqD9s+xuRw zOk{}8R-PbHlTN%ajP>$zl&&yR@~n;eoej~?U7ECU*EqDl3U1FOF+gfvG0{!O?I zAwrRGAb!TC&5v|ighdNOa5-#7_rJ>^Te02lhB@Q+(ZcEY8yDK#NwOkl_&U-J+z4;_ z;`e2q?oe#DHkmcH7^&7_v#V~gXGx0Na2aPK$=~*Ul}<*tyGM^`Tnr46YKQHv%*D-1 z?Od7JIJ5<$X5jn6NAiHWcW7q~vY~x)`O%-bGBeN7B+{Ve_a)CH!4h4r2u;D?O+jW% z-w|EL&G-0s3gO?Ggs_fbyLmm_$BQDqp<0InH5pwflH&G6GM6JQ&*}bWAruMdS10e| zF6T%g%1Zkhaz%m$hR82+{`;clAfN_RmuP&8)M(i(a`-P1AMI>N4&>MG{!Ui(Whiz? zhwM1Ms3tX9K6`n%Ml{l3V_4gS{g39;f#%1@7gLOPDVL-Nf7(8F+`G5t`yNL;0c#6r z98n=A|0#N0Fg=Fu*0WPvlK8&ljQAK$GImTfZRnibPI=kTC*-3Ih)vS}IVKAnQ#dZ- z0@kk<9i1+XJWkH%*MGk`kT$?I{J1EGaVfd;w~Szl|5&YSWZL%~nl%CF504!Wv4VD1 zqT83h=nW_@iH+nxj~rr!*%GNy!a;5Xn$uu2HOMgj_ALZ*1O^!S3q5QgiWCuy6*+#H z!7m~W$hu=0oax`cFH0v;eR)E(u*BG&03GM~oAj!W|r1lV7`e`y3n z?Ly|}sGYmkjv~Rzvr(^oMPvV=5J8bzQ0=(ZjwJ0<%N|c?4f@Y_JHX4Qxee}C3Az^C zO(8u%%EVv4@9jB81Sfwqwx4?5B`q@Sk&YY}a=w2Jp`~}bZvn8>k{qoaIf9xMdEjI@ zjGw=+coYw;0$WdX!>T~nm&+5P#_kCwgazM`4JiRzW?L{TQOAb2&q90r=OPG^bct}OQE-4GO@9M7}q;MhSHLV2Kq77--g(6oN>LFgh4A4 znZOI2!+4vS0i(h^bW}t>*LyMiZcj_{vQszNBr4E>1bqw7v7Yg{5RpBjwHkA-{X)Py zW7GD%Vj_Eep<%8#QG``by$m;KS#5mr4M|eW`ZNDbiJy+e{Ey&8nuiPhuptnpmCR$eD%b zrI~z?c-^WK7gK_Nl&&iA8({CqA+S6@zH+!bvwT5xoJ^Kn(YUKgX-QPb@%7M0&Px69 zJvpS@=dzwx`qsQ`U7-H~{raZ5JTOzhpAFX^=cbU{dclDZNKkV@oFsQ4`lLcl>`mb) z2j|L`L-O-DpL>GEDL%cv|jLf9CtQ@k{ihxUa8yL$Qrlz$<&Wfy;&56sOwAK=Etl zaQe+xq}8XZo}T*XNyUQ2d$pqXe@uR3q3{o}nSj_Hkq3rxE=wt8zFchAqTpM1*l3z6 zJ-@Sli;b1#xxSB^cH)r|ztzCUZ%`VnPQoKpp^N=rG-XcI`56t|*(X;wb+WAcdGQMO z6@YuxrDOrmhxA_Ljmwo{iIwg8u}(sjs8aRhuu}9s?=ZjFeGYzbnq+T2N9nMVMbqja z#~kCAi-y|gI!o&=jz-GoF+0mF5nf@NuGUoT>ZA)XVnaxWV!JIe#zhqhA`UtH@jA8s z6&!8$bbLneeqemz^{Ufv3KkR)w(z+5i;9oTxRPX1Rd=(WBS|g*COh!3>aJX5uEN2B zbJz-}ed=ICH%)A}b1m4dJv>7cLV7Jb<)Q~ZhScv>%6oE7c8#vrF7)LX{HEw)*cYpg zVp>^wxxYv4CCih0*hJ#M<13V9)_L3W>^kEVXnR$YDWGO&?pGtzjo%m&$i1x}T;VI; zFv#e_Su4pklI(}XHGw7G^#-l}Cvqsq4%PK*nlABOw-4k^==^HCg4|~t00_;b5X~hS zYAnNSH8!0uC1$=^)zeWkulXjtl6mT5K!kCpO8luSk1UbpC(*<&H7AGr1G1x)){Cvc z;2LmiJ)%W*57uFf8c?q$Qn%{jCuSta!ae z9h>OT;nA50Gevr8co$l!4K+3lw|k2fecE-QSW_lVlSYXL19T z<#Xh6JSI|Wp8AGSruhbB%F*08V^idl%BM&`W|SP@e}m*`^H5jXm!@>JPj>|I;>+V| zSEX2X*0gWSNoU{f)#^L0zu9p!Z!s5L@=z+K%Ia-TaVa6EuaavJ*FSW~D+43hU0NB5 z<;~v+tKYo^Zu6Gsxm0}DIHJp#{`w$1u^c9AVmo7SDPJ~@NmD~iE*%z>oy%d7Cqt2R8IE1B^J}tBkcNJ zYBgb+DEJaB0m@RN2g7R~m!Sa7k1T;E>bc9~@s;m+V;Z8))=KaxWN;sR{ekGc-gfF% ztIqZ9e^i{jBSRukMdwvgf1ll|bF%cIgH}1g+f?e)Ki1LwMrM|=6WGyY&VVPac=j!W z^^i8;!653(;}H^l_U@mu=mPE{C#Fxr<>hSepe8fy}DKNI0?TP2k7nKbf9Z`I8F%NRODocx&5e&K=<`;FVG3)3%XKP)ZTc@RY3S#cTV_7WBhCLvc>DMAhX|EQ?AHRou!0SD)1tx3Z zio00hLFX?_yw)t*i#M}sFUAuklGd9*tzM@QBe%C|z~iEz6#`qP!*dC6W)<5u?pA6% z8qX-#KnN;3czFSwX_67r!7kI+N7F^!>v+j**aZpb9M{i=E;Wa=!9JHuLuB7hFrDQV z#M1gl7p5!kovwIF8Xi;6D2y)oJiO}SjyiQ94+bwL>vr}~! z*C1Ti%~`oVNUeDF0{>(ay+ba3Eu9v0((PQ@$bJV4^%6h&jRzkK_(jE*cqaWIvJ)DY z3>}Jr5!Exx(+v`H-xcupchvRN!wNft^3Zq$@+k6{OpKjA5iexVXf>xJOUh%eIh`3O z(Sau<1{QLHHeMIU&aTUnsf>y5imS<-{kw;8$MC1}Nye<<+j&By z+b?VGA?aC0olMA0NLqm@-!R`dCqJkB#@#Al!>98&uktzZ zAZp2Ew|J6lDZJ-ihaEhUjM|-+rsdk{Gs45$y9a{tLE6(xFzF&P9+8~StnCe|RYaCn z=FkuR2D3}490^n=z8!!iJ|1PAvUe$DXw~)@nR1C0MM7^Zl&<~~=~*ue=y~)Mgy|yy z`ttGCA8v4CBiszW4DrXrdA#em@$Jo+t1_*>^@h^qs!J~A5fZK>kp}wCP(x?-x2e`i zs8x%p)ualE{35lI-Lkf({Ib#`PfJvhNQZ`uWR<2@!uTFtpS)l8fjwZVOEly zSD#1kGQ!J$x13i!el$5BR&U45fhu~}!xY_Wo{}u^OlxawofEd6-2`n%P)s6I;CyR- zy%T*#v$_mJPmlRc& z1;2Pu7RF=D%)wwS+EzAg+a46{YfU#1&4RyU>c zi_8ZCH91XzsMB=J{lY|n7%8>@$1W-zw>!J#m-?@SirE`1^iem$&RS`2Q>ih{lzd%E z+ro0POu}ac`p~C{$OJ$YGCr@kO2uH(k(TPIk3qa8dD9IsPs^D%;#jC8aH~ig=Nf$I zcD+X@DMsEVny6&kw#QJGS23sdg82Z)E6hCbxEif27fB;}Ibs?ukO{Anp%9?^THmcwc5sK&$_U8I z7P!E24~5(ER`d>vSoWD$-;NYN;ncpaxsd*5PTM!B?DqB3hC#VdO;bj@RSuq)ir795 zPa}DUIp@DYn$h=@Y^%H?`!KKbEoTDsBa?_MPGwWQ#3dq3nm)-21h_#4aLQFNJ5&l) zVZPqdv@&^^Sb{7NFHU8RyC`==%X$erS4;MZVcmSd7yns)$H73Aj@VSY6xfdXK$R1B zQ*BcpOW^X5_h?f2NNg_RO}-Dq&MRzVsTr0um8sfpTa{H=>Lz*f3;Z+v!^^a)g`gkk7M-@xTE21SqNl;pg{13XlQ+LC?RiJu+=N<>BK`Q1~>%gnkPdDuUus0 zQyM^33FRsV`!3oOjo8(aPEhUjII?XUTAOKqB2?}^Zd0De&rJK1q3-u_GI<`qFzru; z7Tm|F!v>6uq$Y-5SWg zJj)oGRwq6v8IcWcPC>x1ap%)>DV|G};*8Bc)05!B-@TfKYlrt|C!~1VV+y*zJYUh7 z0O94yK@f}3x-C)6`lW^PEja!bS9P4=VqCF13657c8qSxW1@ZGMsHc1g8eKWzQLq^e5+ z7H8j4WlvtwN#}}A5cUXBzZc=2BK`H)pjW0``{2$5>Jt@&{rL4ag^Jn1$i$(_z=9l; zzAcAfRn&3}&JxKlW7VxFqkRN~M?-jCTK+xQ{D4lvE0|x)g~W1_an4^xMpqk6$;uQ$ zd~QO+Wd>m*#I*)gd2UILwrs(QK4an;z-S%T5&TK7+#(x#nfE3V;}mks!pNviD$}fW zPth;?l@ca03-IVpN7zA{TMp@Y4I9^j>`IC?ChH3jD>Mp)7WH++&344*|inRxl@ z`IVGo&(R+~q-9X%1NY_ML(bY&u`4z0$K`4+PqYu5H(KGv-;{jRU^!vKygum41hs%# z(gHqw;WAeiSHGYSfxP}}hZG|PBRr7iu}=0qHpbYfU?;6}gEM}AEYZthqeQo3Ds;^m zV`N;gwQRs!cYVwbTpo{TKdt0N*XljmQQ0AU+Q)mo=O&5gGjv_D+a{HiKqcadVjT4z z9Up3;;am_bbHl^}*>jnmeNvbl%U+%0%3qP>2hjErD8J6!JCe@5oKjVBPZ*a9PnBc6 z`vl$iW#M=Hghu+EJHGPFT_&OZ*B4uZRmv!kW(iQ;@sS#B;de*!T*#3VYQXkQydRVu zN^TUc@%U5g9Z;Um(FMYVXY@CJaG|y)M0#os_HDz-~R>?Q&XbN?pyDD5 zw>r}>O}`U~`~v!Aj~?d;TQ*S-=L9;0_`{5h3ZyQk#kt{c#uluQT_VwtzdzA4!^-;0 zSvzEZU;gKVb0@KZv)Ml)C)zVb;9SkXGdn4x>73JVQY%YGv~LXC`h-QKJSA{$Kr;&3 zBUT9a4!i63G2D+{utK&@4abf617?0{AK3X7Guo!)QxuJD5LX9qYuzLfFZt_Zb4Uxv zA&~PU>ln{f`ALOYzYUuMW5bM&D78K@khfO>2pUjaO^v>wN3q4uRjKHi(q&aVlKz8} zg1rieCp14394IMdl9Z8&RFF9+nlaiRaLb(OBbC0{@Wg3Yo|hrmg+wldj#%PAK=Kc{ zObP>2_yfK4_JK=Z=?yU@pP^{{266oz(EC^X(T|whFHug*pfjQHC0orUNhZA6^h3AC zwrv>^6LuH0t zdUe?ku=eFH{GPM|>y27Wd(%+&pCETZWj<^Ge>cQs-xqmFLlF3^?=cwVvFFH!2O8{& zWqPdMu*w00`C0aARO4RVk2ZGhCXv%^?3cNyS3Nq5JoZQbdG`UQ>%l>tuzAG%JHdN= z3gn0?eEnpmgn}^_IO>}mbo;2qTG{;@T%+qwv$LkKnnKh zZ#YZ-nL_v@p4{lqAl#ho+N-a7mb{fh_;c2LpT6TA-0{-GOsZ*UG~m1sSfa_VoLjDN zE;&`l{fq53U8mh}yx+rlVQ@QPOT*|*O!;cv@i%k=-LE#X_a{g?@kt0?spywn3r!ag zl7#r!EcE3KA!wzAULQ=c2vzy+G-7@kgC_Bhk6`9LsxZeQ&3Dxi=}FddnM5V}*6Lhk zjEqT7{TPjBoAD+Uc)5*MSV88}QxrUb9_SoKCl?)Zzf!}TBO`c22gey4QzprwguTuHN+gjqc zZo98Wmp1$_Ynmuq8nFphVNOSwd_(67S8E&;5j5PuH?DdsODa3Z;Z^U7lfA;6%DI`n zwpalzV54U)XECcXA?Op0SlDeabjGE|-s7ADiaw$VLOa@EKx8$iWF;JFDd2B_>}T4) zoKJWT4I@kUFy`;>4-KmDrf8(h`mTZOOaygy;4D>vx}mNYZ}EGe-=__A5hyYMF(~NIqga4HPuoPDu6E zO;(l>zg@Wr7JwtOuE*1UB_^p(z%;!=?tD?Z5n{}=Hx6~LNWg!by?aRCXBDIkbPxrW zMfVqir9_}2qRTO1)ER_*ESK3nyfFE2b;RO0HH>jBBIt#cmRdgqqU>m5b@m^;_3^$M zI88-8s!=^1;0$gejla6jSEE^c76o zA^AF0%*4RzCYY?Mhs?lxBGRib8a5wDXZhLnR(4R%(ES77j_h-Ax6K^ zkV`@-S&%jH9y0KUxavF)RY>z^;1K2WPJNV85rU#cP=EU{`g#bV#LQXv#zq_**0IYP zx2UFWhKwXhvGQKT1S(2eyvdLCB!R&24W%I6E5*QVmibz4C$e$q1Q?;`<8>uBZn9z`0B}nJM_e`pl z$?&sFMV9BV*= zJlevvHwhivroX`pYiBqcuL|q2aK;#3`g9Vv*(OO7U_Dl=PIZgkAUE;4O-|AP= z&LL-l-X)?Oly^Yd%1a0L?SRf&U8w27-}f8_NK+}&?>(AZY7Kegt`A!hdtUfc!U~It zZq?>=w~!Q~QKy;x=yQjD_sG#AI?fYUS9%34ojKb%6Uw5rUzbp+QHF0CZE&p7jvwD z5|mS@$tj0TabaZ}AWNw@OrFQyUcv*YDftRTV;96V1bE|hHv7Ktzh1JDKH2A*4H<9c z%ESA;sILs05EVv{^aQ!q&F~F3>m>fn(^Od>JEqd9WDG+RbG_&XfK$%-? zEqG#W0koE^g$ZBPtdr-lkC}0Hwloh$Apiz10R}$+D>Cv`iPr`nOGRrv%N&bs3N`0d zTe?(V`W<3!iM^~kECV( zCjt@UwKxE2Syie~BuXQAoEI!z}DR1B8^ljNRM!S zn+T)K?lgrC4Ipbux`}yS;@ZVMTVCgl89{?@3ZjOp^$(z3vq{2?5}y8nSX{Pd_vIMp zD!}HEpFx&-7|6nGMHa8Z27G!pp`4C&hcQATf&|CrRa4hO`rg=GKkMRUqqiMocF<0h zbH;lBkn@CW5SV95;HvDM&m|e0>#KtM;r-Wbc|Zkfi~WTXK$kmO^+qvFlu4 zp2smr^AV5*9sqEzS%Gs>^?bs*N-df2iymNE(u7H? zxD9#T*aM7Oe&UE{8mM3Ab0V0PTl!O=w5s}76^s~UHXTkG)25zrG3hKb^Y*x2Pl=qr zez!(F&tJ)sE~tEkA>A9<0DA5mzOek& z6^O-c-?ZdGkoPwPX7>%4FMi9DY#&Q+zr7w=7v)59aqFs!}Z%X4%fS%kfUbX`cS~ zm?KV{D@o(Q^eS$F*Ad3{hRgQCDd z6n1@Vxzn;1fJ6s&v%%qpeYR;^nnqsu@?Kxr2YJ>)lhB_{xu92Z?(wCnF5rrAP-FEX z*?MmR4tiUjrCiWS@6F>N`Em|t>@TWl`zkpE4H; z;$~YJW@vzPX*}YI86A0+ujF8nyu5QT8p?ThfwpHHBvFCc8j8$xpU|$FUSd;!;PBH* zHNZd(8W`h(e2>G-U1qcFd{t(~X2>(~j7iUhv*E0dO{*ZTM~CM!{ad810v9RmWtWs! zLC!+$ue~Ks$o~d>A96!oYPI5$J)$01UgU>YIy}w|>CCFee>0T$3-nzNzA= z6S+|h*#_l?FBj6p^^5pJpy+C?4#p<-7M;Z>?!S+3P*6VPfI8)M#zteCz0I zPGd+#9~AC!b=X8Id9IEGdsS#ZH3FX;53es-QkqVKnX&HCwjZi)?3z*E)}8hc%wZmJ zX6`Z%mE5kMTXZgT45%V{MHL??8+h)P3vb&FNP@&US%<)GA0nm?VNgl0Hw4XYCpGERI9%2aVPzk~`L>8t+qQuLXiQ zA;ruvpDis=Dv#hX<7-z%1zMlo2x*?cu;EfMTIt0zNz?D1rGum+>ZsLaS9^)yTKvv~ z1p#w?kr45!ijgEHr4lexG9JA58=ghQ@x#BNy?^&d%(_ zM%KsAYpw0Y{v-Z4NTodwC~Z^*BR+$hz=9|PnZ>t0EgrhyygQJnh?Vm$h$}>&+pO%x z-ciaQw4z>L{I5hX{MU4~jX7VE59uHN39_^zN-MNrL(ea$-;L4KB+FNO!mkn2fdh>q z{y?K+Xew9U(%?{d|MpQ(fO1ophrC`Vz7luaf=S`9kd`OPVG*I+D;5A=b$8aU?!@2U z8FUN4&{YN`r~V72h04r~ZIIVnzP|I|_hNp{Zv%d2BBe6JvktsO=67_aP zE)v2|iiLk_#p1&S8g?q;&a>-|B5my*KNT1m-&8Dma((28)bk9Ue-om3QwrhH#4am!S%cXZtxk{= z(kriI#q7yMSPBN(Z)^P#hX&;)mv8jGX_((M9z(tpXG%_`Xvjex$*kz8XGKSlxXSS- zSSf#SW59Fdn7kN(cNIFU7>$?3a!6j`Z(Lk8ZCJGF@{gGQv-O`rb#vQLISKv4N^<&c zKS5|#Vx#tc_v~QO3#?&l_{YXH<*}7LA+E&~jmH!AR_e@M+aa%4#x&QC7I#i`J0XiNO*TqkI-K?)dsQU%;|LlhLYl(yjhYl?JtPCfBLCpuaO~&NA zKr)$-sIe7`w=>Q8nO4Jx?W4tJ)6V~jFyG^JuSPCVIpE;#ibzKOF4yFzeNqc&$9_9< za0hdj)hzo-`fS&)5YIDW$8hTlXqEmp%vKy*jjDB3|L2z=_51Y?#NlLiB;kOi>RvJH zM}~QogchuR>+*Z)0hMo(v&-`^>LuiYDu6uX5tw!bSF0_4Pq1|ep)lRwq7n1IY`Ar* zY5MW!GnUEXdha)={d2IfDH#We3SAN2pPj1jq=!E#j@c&;6TU$go`lpK(rvrd;%g+6u%j#VsoyE&?n}SEK{PVMeAXw-{3H{Rm zdSO37CReQ1)?wic5TIUbR>-W%zZyBlw6~hwSd>1?{uT1%E2KhN#1?!;!oUAjjoLRs z59E0m_iE%_p%8$eaVrY`0NmH_V!?d$pLY6}kJ^QIjUWEU!j;PpHtgOJ{J(BUO{8uY zZDJbvcd=hhZL?oIZlCe0Z)(G1 zb^m`R{=cOO*EFX<<`6a3gpnnfm@a3esR_GB`7^O#=mYa!Me6D_pTH$(?FkqoHLzb5 zUR7J(BJWO)=)#FYT=WGZrUx^4F~AF_iE=nYY6xHSf_r5jx!OriDE>du)BNV$weCi0 zhWv1<0N6c54*xSk+|6<36|c4=}p&bo$Q8wQ6U0kSh6}I-{@*z+$&FKs9=_F=p8Hs1ZRmZ_JftZ-nYamh zNJlmIhimXmg=rh%feUa9VsAmw=0lriIns-VMU?KD+25OkNn`Is3*OCO(8r6x`iYw- z>WNG%FzYK^oI!-o-|?AO(NZydD*tr)uXP^r)vKGAh9X!XI`bHQkWCuz7cJ<}4;TcF zlCDpJ#Lt&8m@-o!l~aw<3met2BAEQ~G~}V5>lh zY>)bI{>Q?PA@lu)2K50AVXb`@n3o~J3w$;3U)uWOp5t>tBQnhi^~}03!bs!|f8Jt? zDnpBOx5D$e7w!uxfjm6(kif%)eYtK(Qmp^rz;NnXGHQ4IQGWf*C7-FGd2iBmq@a#X zkgZb=n`iZOIxm*?ReA{NBP}D>hfKAGMY9=&h{!n_m#6>Qf&*qaW+$7&BvsZ%1x+;w z{$S(%r@9gr|GLLtpS@Xk7SHZhGdQd}ab5nlTd&;1{_OP?){fTL2m=)THWykz{ON>L z(WQlt{^KJJrN?D%7Pcf+u8vULlh~hqA!^xUUC!6RD;NFc4)(+}xgAXH zbWJ_)4q12PSk1c-m!KD9zv1~U=3+-c@Gx|*yWJ9a{BtnxDk_XhrAiruqQz|}4=u(u z20qO-uvcB`2gCS>L0(LU{2mPViHq!|@IY4@t_lvhpNFcpY<y>abUX?$kww)5aqw3OTjM__OO& zyEmhkiau03P5S?>VL=~=DN=j&V!f+cR{tu5((`)uLX+o&#$yaqNar&dXKxg@%Was6Dq?QU-sfWS`=aWlIsOa)0xigN>kdHt%1laRLe54rR1jHMTE`Ob9VEW^N{p}&(nKL?x4ePfsA5-@R2%htA?YJE%2j59c>+gIvmyE^pN0f6yw|fFc!&5*ZrPtT*FD z(~r#qmVxK}CsGl+yuE3p*e}mz8OfMgHB}lDb=m1q5yM)PA7L)|wfS>aaGMM@O~i|1 zr2Xh=1~STphs%rU<^iDS(q55`r!OSL++lf z$rGA`KE6~Gr*3Jco)Edvag6HHF!PSBn5d)L;Ah6qBbj3|m!Na%5PIOy+xe>uJ}r=1 z?;M6h(Wcc`>OGtFKV`A$E+ltGjqd8#7NNK7mWcCG!kFzXtWsY!ube#0h>FiA{K&x{ zLWCE7bu$m^38+YBCR?UlTRx0ZE-Sr9nqp}!+M_c){)SP+ST%T87Ztgezc`QTGFawq zAV`I{HuCZeEHK$idUN^^?DhHKbp*G_02|(ersoP_y|ST%t~%~A!%&_7p03&z!E2Nz z==y04uewnC@nb!&@ztkMOWk7)1s&HO@_N$@BaDMu4+X36_S7rs82l(Fb^;yMXvn7q zqy9Gd+`pl6T)^M{V&r5$_RVyWs4wCye|3~lZ0OnIx*osJBTLdb9w9Krf@sUAEs#Ayuh3!h_pH<~A76c#vx&y088AO# z_^O=KK{f$SKO!id+~cSg+44|tS+hS}XR zqse2l#JXTry>5wHfyfd3l(09)ecLPMrw3^Mj{8 z0w2%0Zo(^?7cae}H64>BWx#uhS<^b6J=Lan!g0XGAI0k?!?PQCwd;$caaD;F(mDRd zs31Sm2NHllom^PU2J*)8ilbQ#?gqn{5rQ2;Y(K6{uQF%Y7rw(`mWR?pR?~h?;(5_( zJjnCv_4{--|0sEL%eo5Im|$V%9Yc2?f3RM)r$>)TY{mWjsOxPSBO5dK`7pr{Gv@W- zm~Aw+icBGy@wY~K7wtT@BcC*OT=-Yl;0<8Tx=Ay!hY5$(jt#Hs3w*o$`}`j@PWM5x zIN{gw+efqWFj>60V|EKMM{T4yq93E_zUxakM?#{o)tCw@Px9{ujwa}F8GCYMf+mcq zMeU28zn%}E-VR2%EDerQbM!`&KmV>YVoHkvfA63oq=u>o>mi@S(<$u3ISog3KkX8e z#BGlZILEu4=!Apc5DvEvui4o&oA{F<|8ZyKxL#Y@PPPM%8z#@D&kHY41Q_%6f4nIR z+2LI()R^Ij%RI56de?rmM{mxm9T6!=-B7tbB8Yp%ay7dwzNglo(b6Gh_~Fy%OvMox ztV;901h+DZMvWswta(LEBu!m$P97%h8V<@^sTdJ!08x%9 zLv=9b8hB_Awyq>a{jVw`zV46Igyf?%m*Nfe<=>SbecHfm^+13aihhN>nw=nqDgR}d z>MPtVt37(aB*TJYV8Pen_(#E$5`!(#Z?1nhW?hh^Ih-H)3;XTo=E1Cp7f32!$X@2b z(VV5lKqZW$aD(vu%g>>54-@VM+;tL%ow?EK@x1FlIGEdC2E*D{Q)>(&19|e6Uoz?N z9y8pv8$mA%%ih@qK#mxj$e>U2#-ws~IIl(oKTP-|KpA5GR^6~cJ&d1|B_sZDrtMZw zSHv=hC1tXv`B@&zrq056K<&YmyIy@;IrJaVIC4!K$V7hW@NdB=)Ms1>xYo4=<*<7n zWF&ZaSMb#snNTa9aueAsmo&hSv1huvXBVw9F z6n2J)w{T7L%5S^~cn3bcsZP6op`kJUz*^UEidJbM${{j#pw7&cQt^Sl@JB@_m-n{_Y;Fu3w_={= zQ_d#kjf{Vucd45W`DrJ9W!|+f((zR!6*?g&R z_DoedW~`Wv7773S{QE(Q9YsAgp*o;T-M3d5|D%Q9IF5@j;Y|(XNKGAhpt{&;myOLv ze?-O~*yzeHBP~y17zd@{1fx1R85`!{PdnqJ%Nm0jhHNnCwYUyXaiN3+zeTj^J~9L$ zl3frO-nc!m`$6C#8Gq)W+jG3&$5{6=KVlg;rpP7GBNrT~Jh#&E7mwe!K3MxqUtR`d z#seA7;f9N`rI`V~`EDCs=@xW&^I3 zedg+rX}hz|+Fb>nIX~7H264a!8S>vwlglvMX2ty z%ZFr=KwSI&qXOa=yg=fIgyJ$cVxgN=X{X0|b1m{tsRmP;lCV5k9e-e(E5<^5atvf- z#}7A1#+K?b2hG~|HrHj}c=wd5>l_gjqVk)4@NmfM3~GhpjCaVR;o8C>T;ov4q17-Q zXrFq=5hK3BkC$WYU3d$I>R}LK&-=vCgT9m6kNtal#ArG@2~b}@H5n#pB6lK^;zMlu zQd?3fwY;vpBZVU;bBlRtb~4x%PU4RGR7x2NfqV~E7U|71vhT0B^ROu%GT{U}*$uUl z4!!WX^Y{6O3B3WOm6%>3s3rYVZWLFdp6yzRK{`Bel2fZ6AP-^=^N!gm$gN#Ua!%ok zQSIz+L`(@V54BZ&T^IlZl}XiK%8&1-cQ}d`*leETw9D>%2w#TVf~`D_`w)?L_W<(} ztX-MDgM%4vy!}u{&?qfsqI4n{+@Kh{`cBuRgzkX5Kb1~` zs$tjg;-r6z&%M8iTwwZBR&G@8j=?~~rT#h6ahEf|TokyaabkI9KRS~+oyotYD-9zk zikBJj8~3f#pUPveV>I|(fB92Y@Z^^oca+{l*XQ3498J!1)08QJz_SB8IDFFFvAVW9 z8xNIZKspd>5_U|FUAGcPA8!gi6_UMmS16?dn{b(UfF}QAxvqa4bR(c)e?@Amvx6V( z8wF*`k+u4-Ux~{EpfZ7Bk^Yg#2}gOsawwLT7^ZyG@~wYIDNJquKeE zv&BxkfStl7z@rMp1qAA0T#$DNY}+pH6<-nKylIQ>D99?i3_z6h!sq7Smy!~g0ltLe zy%BeQfW+%^s&c1rYP%iyE!I7^7NO*>8=DtKb3AfHe~(fz^9EJg_*GX-BIao9#inV; zc|?|JyPr<$UE$ARg?f8Q-TwEwha=&|Ks5*x6$!H@KX^mU|K^3Gj-=AcEpHg+55 z){p2A)V6Cy{%th#YTo(b&~=s|{($s*DU1MwyW|C}_LzY!4=N7Iv@kENRp4^eTnOb` zHR_`8+&yH;A81Fo@T50pW#?(y%!}Z!PR#me9;CoP|L}N2-@#tL0(AHg!l!`2|h*m4}CqLM^TVg=C zRek!ZFB+JYB+Q50G>>`4c(=xpW5Lsy*IL^;dp@~MH)z-UM063Htr#XhB(0Z*#M4cf z364~>;PBD0hG}vSxvb$+S?hz%>`HM`CeB8p2i8BRke8t|cdmOrkBg}!%Lds8HLJA_ zYY|$$uevQlFa)Lpu#>IZxnm+df9Eu^eHRmu2~6-A7IpY*~l9q&hc!AmEQ&AVCJJ+sV80Vr2lcuupP!Rg?)|m z*^1$`rvClkg5|G@0jZYfu-3b zG#&y8&i}*Km&ZfB{r|VzKHXd0q_QPkDzax^vfNu_9kRU1GE_{qhAd-=p>B&k$-b90 zgOR~tY~6%1A?q+>xd@Fh#4tkmof+Nj`}qAkj|cDbdY#w4JWtW%*~)j=83gEqUz`9P zMwg$^5gY%F-!EMp-|kf!wh)}AV4MROUmev%H_1iiwwau-Pi}p>NOI}k**ekUaqk`W zlUkgbFes}uO7MUWJ{UbL6l@MuWH<@Xb-GKF&YTC0;WHX>y8fE1DT`q~u@Stg-8HDc z{lBIz-H3yfy~R6jb#8fO9K@>O&5Tayf^PfP*TP-n6Q9VlHDNH^Gv4g&?Z3wYH(R8# zxcR^O&m%m;)!l`by1I3yjm@F9Z)6NIyO1G}Q<-GNvb zv-eI}!PIP7#J8JcJ2QuI^$Q_)yqO=N{+j>NHJ7!*uw!akMsJupr!bz0Wo8O&=4EiZ z9J+9e9od20;z&0t9^TEW@A$VxvOaicETjR{koXpLasg$5tWnfA3`l44+h}|FwMhUZl;w>n`t~u+4?XVuIa(mWnQrl)&xrX`az({uN#I8J0_8=Ny%h_*|{n z|ESE>1rSDaGt(k8~<8$?h`o<4o~sj zL31EL4s|2YGfKZQH>Nt##S406u?TGH-3t~p6= z<@+J#kL*0pE{87%0dIOmL3iY*VL9zD7<=A?6LC#y7e7~sJ({hGcq=#d2Q!4;w_Q=B zFSI^4v2A9|W9Il@1_kCbx@*q_Pgj~8-ZawbVBo}Zo@IH1;9TJ+UYw+Con&xdboZfd z1ZQy<&GF6^f9e5nyH0mjrvqHP(8Wt8`9?7TuY%Yj&dvlfPl9};YccC7E8gLD;eqL* z`Tk?ZCU{1JHurlgH{V8U1=Qa* z7tpTWR(mh6)`X$F1CK`QR|0wRW#?6~2ebIHqeXh9y#il^o$RyfkNdCOhW4ar`Rfju ziu7u*3bWA)hj??nLbvC>jBv&KuajM{wwciDW9V5T>ESFkqAGgn=%6gud>EKTdOZ6) zqBMCW?&d;cyLObD#N7W$pg7o7I?zGVyrCVb&(N4wi6gQ?Vs01i3unc)=V#_0#c7Ib z1nB0&*@=Jq&dN;d@PQ-m*$VpgC$aFqKDcP-_$5wLcQDQGNsn=V*mnZ1Or8nzHe-VM z7G?y87OUsA$H}^(De2LcjQU#Fe08^`=KL8>w;XGYt^WB;3opma8?TSqqlQO^S?Nn) zSCoED1NBb@P>ibc@J`-)`3`_*xwRPBsy3k}DKdJq;lZlfCRo z=#Soz-Sum?-^Vqhx0)uqCxt4C&nK?(dgK)O^H5F~#NC|4-JI_K-#wJ1LvY8X_YPi_au3Ps zLHyJWaoR|?UAz{@(L{gqCG$jlXhN6LoG$u%*93o7!nLzc@3-@Difvk6wmO+O`(s%% zH1lKjnW1WXXx#AN+@}b=khzXmUOLXJAu|tBq`MTaXRzk#Ce$QEw$5fby=Jna=N4Z} zosGz)qZ>)taspqBmexf@wnVc$nm!jh^arrGebHLq-pW2D6yG6q(`{QuHyEs=B;>D~ zF9F~Ze9EeBhXndJ1t%$YfqFS+Q2!tE&$6pczrb2!!!{d&=y&PU^OZq zqtA$x%)TBUPGBeS3P*@1SId;ESjq<0^FNW&UHlvDpOhq+bm z$is|`SjlPLnN*5a;26pW8{5L{HLmOwkzTLfy5ugk>x?Hm?_tAzVVhsSjGT-Qb!vDp zkj1LhF?L?__v+x|{T2#*pI+;C+0~Gg-s-1!Tpzs^haI|KGFbLBaBI+8${cwcEm*Bk zu<*@N|40nvM~}pnV4FZyl&vo(IH}s@f#l-hbF*}K=Ka^ABY~rh!x@fXGr%P3-Q8zh zb$$zbGkn{T9M0i_J|^rR!PP9V>XeNj7Uk%c<{UQeRZH#C6%?N<-wh^>sJ8m5Z!b+I zexn!=|HYQnjfOb_dr&x%OIU z8bm0~*e+#VMCwM!z@x%7w%xW0KQS%&}HjddF zFQ;&zh0!-@{KFviLxLx($!GA_A$rw*EFA~)k!f2?LRrUweZ`IOEp4Qi1C?lwLc3%^2$W6GOYD1hA}%l?$~TtDn}ExT1r;A3_NX zoLpyOL3x7tD56x`D{Osu*IJypk4n`{1eN8P!*6`A>L@4p9WC_byjC7(HIj2Oeib-P zdI}Fcp8cP{8SC;r znzp7r-h>{D@0|9?X>#|zvXA!Vfma}eeRu3xm+p0RC=);$usf*hVj>y9{HNE=_10I4 zed~~$2s$f5F;EvPuba$nwJ|*Yf4_OWGo#2oW8<32Xc_IAF{5ycM_Oe|W2=d_d*-i5H)7_hD1EkwgyA%P^X+KlQrc*ZF;+I9ldSsR~CUYVwKAMLHpq6 z&EIsCQ&KdRKFv2MEL_V>`!xq!H@U!0h&9%9oGT4xZ>o#k-yZebLhqXSg~)fefS%mK zWEV%iV@?jw$wqDLR!^493EMpo^d-f-0Hay_4jZWmR}3>8P+qNAfEgfR$SAxL7zSuE zs&F^Azhzc6h6zPtFgp~P<^^6Uq68&=kdGdR>8IzdY+^#ijokH4pqcCHI&}B+o11-M zdYeU_LMMwHP56;(PVOFX$~|f{mcz{defzkt!O%ew-1=$%&yS)NPJHfj(VmCuL@pb$ z&bL<_3_TruhM#AlZ{k+2*1x2@_^b4HlV^L{2Kr!A z4MUd(k7Dp;Qpjk|XvXXulZMfaLkmR1H(b@=%vA}R6s-oc?V3(N_gd$aUmjhuN|_9e zDSU5nE?vvif~Klg;<=9xa_zAyb~lBaIh!km874ubMj6yr8aY{P1D#z+xtdw- z_S-C`^+}0fG>S5=4BIGK2=sV1iC3a878cLdLz^L4R`l@6?db2k%hHN7xUQm0dT_q} zPf#!G%>I_qRAJ~Gp|+r>BHd+qoy#TXZm|Dz>*=T?^3)OI+4HXmV6$8yn6>lMt;9L( z853{}v;sE|UJ!B8SGQiW|7p)g{!_N)pdH#%Vp&~;eO2k%h+>rE7Et1p!v1XBR>F+9 zB`ca<^D32bTQMaxaB6>Z0ryghcsXm zj8~67ncjjdZxel@kmFUjP}lTHf4#m>#m8YeMTYRr&5^j*e!H}=%JL)r09%HYvh%n| zyoxeyXa|A&<4nIN`$|~#+()yi5l29t{#7?6vqptIVlo>YaYT}851R$euMJUly!4&t zA0fbV8)3MuBed5cTOB^w=-K11gftosJvI3s|oSQe{e?~R^-AI>!%O%oeU z)&$K#A^=&$+x2Zn&2(De7hK62uqQPV>!BW%nV4-!I}?)D_+!l02y01;?fb+n1_nhp71L!A zuA4txYyNC|3^Aw0#74K!x#K53J@Bf(!#X<%;hM6{oR1i=4$YcP_%d=l{zhxy!A-dL zd-$-?)_&f2vvXOM)R9qyS@Yj|m|KkzAtVAtq&~BJI-Gw;w%9g+vTsaFNB1={i5@M{ zvyw5ijcvc#ZyJ=ou!%wF&;-d9&n&BpON9u`b!AJq^*@|OU^c2FaZ}!Q?cA?4d#Zow zNX%jlO8AB?KD<+}>#Q0?_7X_RYH}&kGQ8|1Q-855M;^( zouX6Ob|UhnAWLbM4I9zE$I0i^TUSra)!MBpvt2lJAWR&>ko!c7|HL9UO9mTb_cb+< zk0Gt0`$%tcBJAbd4hGE!B(@m8+2mnIDxPbw&>z`SjV$c85KUJuaLY-i^MKuo;9QU2 z62&+BH)VgWvC(;)61P45YCH5{1qkCAtI`)Ud*Yv93h(`qm-efEdS%TRil3%%dQ*o|*K~cR+ z$6zTqX$WnGZ?0ci$Cnby^VXLw!P!nwr&3GFvadZOvHQ&m=O!7 zmzaw?54M*&4KdMC?s>h7<{fiS35G->$$*w?@>vlMq*LfhABwN`AB+ zKScAaFNJiG)VrKdn0f<@4EgxvRp6}5hxS+?o~n;{COQK zw4JCsE7J00=?NUQsL8?VYKQGPBR`YxtC~fuKMyE)U8Pg49n^!gC>|_8YMR@6*=U+u zKqw=W0Ucg|FZLXTrwFW0Nzk2xPac;op#5fVt#1w7ck5yMgy?JD*%C-#QOxWJQU8|~ z3zQU>Zr>-W#b{l>B4U34n+|l(-wGIMx#}jg*WbubAVOZ(+TO>S*(;WP+Os_3h>Gmj z2PY~IcQ^TZi|&U!YiGvhO>+QNL{!u}WGj* zkHveRW78FV{uT6{qJl^uopUEjL=iFM8e}2e0@_KbenHegJhsxe53sK>7*_k}vQuU^ zfGRMs`%B1*=lZnvfk6`WV~D8jg(>TY6bX@*ZWk@T;Ys8FVL})T>+sp95umGZ`hRoi z#R!iUUwxf6&MATV&n(mu4Iv$8dxP0!nWznsLl*=}`ahpT57bumxM=qKqz@hxMdIr_ zeG**x#E~g2O!2c|)p@c(e?S+5{iOz@2{Eqp$reRoX%68prAyAsl(>)M)9|LiF%3SJ zVI&rxdKs1Lw!HFU@wdv`7v?H=2Fw1P1^oLWlmf=K?|HeN#(XoXM7=%ZZ>JQGns3%9vEP5s zI|_TitZ-&lyH;+*gpeFbswyXw+j&r8L>Q53TC{V}q|MnNrZ)(r3=unkd4vA(?N`tkWpdveRy`PzK#34N*w{ zXniT!#P8DUQ$NO%ZvFzPe>^Hpolyu7pZ4a>d(%F1J$=2c$uGQ zprqfkB95FZ>#c$n#tkMEb#C}TbW`z?gbrxHD5=0RtrHz?i#@{9T*EBIO(>{FBoIT0KbLAjp0C6(ez6T0kZbCA)QsVnOSY^2 z8Nu+UGXR=tTvYC^(_uM8L?4Os`Zw0iiLZmv$;XuQB2z>at$=~a5C2OBQ|2X$EfMc( zpLMzY8UJK!0yd#`Mr0}mSn4kT{eeqxM?`)h-#0i#2Yu{7>JyA@dZIjpGDVXPLj$4( z{R5YE=kWDdt)fyGwDqi4N72zRh3;JMkA12dd2~zzE_1ZUXSu(a5U42rrlkI>r40&P z9=S)?n-4`X&uk*febj|^tgD4tSqMaXBJ&AOu`P11Lt*~+9`}bUoKkW0-`55po-z(T zkNvEE9AU`bjYgh~Uz$eBUJUlWwV%j}R9k$n=(MHzne31A8+tLlCZOva0Ah|+OqsS7oWZ4_{%N;?wH!dnpyX#FPEBUR2lYo*)&?(&S0u7dqTv~Ym&5@ghy{7 zv0n`{_SemwMViOh4J3;)Nbp}u@Q4A_nlx~x{yLj^o?+ZYUOt@jm)W$C+ceOp72=^M zmG(_B({3dj&rKlh#OflC9Iwkzj>_K})nQ4Gez7Wf;dT$|Y=@;iYq+#8j6&P5Tlh@u z8(16!!7N_2<^CtudhEgNuIw+FobleGS$))z{|Wljlh&LMYBKZLKZ4k$KMOxQ_+^ME z-tBDGRJ{m!n=O95`H7K*ofcM3{krf?E4X#l2MuUd4Y6uoJO++4lN)5dF>kHxBz8EG zW^yl4^q?=aWN(;&NX&XE4#18QT*sypsZOJ435qOCR;p*)6(`Udqzrw%Hn0OBU#80z zV4E>dD45kNeY3^1*=c3j@;rAt4B5Q;XK@7jBMMEq>aUfr_%DK2Jq-JNRo|x!d>T1W zSQNN*o@f~Y<_BBoC*qf8e8b^vdTBYU82fl}(JadA7S`m%M4gDp6bK!}Su@f<#|3ky zUFlV8lFX&Y?K9Scq+y0>Ak0P&7M0e^6k{AP?f_vosr$s1j48Z6FUXwSe@O1gMH~H0 z%dFa`i93nq4D;2i!+-*aBok&jH$OV7R)H~4{)Vr+w0<%LS zfBf{-ZlQc-r%0zyrpR#gTaQ*06Xs1x4zo7)CW}&@n%~y*Owt;!!XS~ogRV`x8418O zxI#Cfq=gF7`LC~?EZ>hv`yKSe$NaveO)w+h1v2Jba1Sw^L_aP zha8*cMp)^GcY9#F<)}Ah|FE#BwvxtzuJb8_*+6wtz;9JsX7{KsOZX-F@(T+%dT@*t zfCN`908x$&e3I(6AeAFf*9;WVh65T$`ntG}i=lWTpC7Ar%PwRC}hjWpv3x*>N z(=c~mOe+>=Nm!8ZP;yoY<%vAlr%x}l2Zx7HhQPX_Z_8#>_dR<1UNoBb3?%k-`MqtC z=S2~i>@!$zVHvEH;7Fc-Fxdd{G_%}zf^z@Qzao39nm4YwcvGxwZVh{z<26f|>!Q%A zQ3C!7W15{1n+UbH`+UzV|0voavotfEokUk7C-<6mE zYpPh_+Zyp;=e<+)%NYCf>`q*H*dKfoY9bm|+qo{ROV77+!1_Dl~_0MmAbjJdsQnHMQxq2IxUHcDyo=-X5m@ zNjLwH`fP@F_e)Ay4N*QLdxc2w^p&G&toPyi@JXu{h8c$g%)IMpBgwfqq&wxYs~XAx zjqkuG3wW8O-?jkYL0)pL2wjRpHP&@QluoJY&wd$~fmec^=*%!LpoQqVZA|*4pY2qs zLhrq8;s=kA_qRZ!pGRn9<~4^+O~!7cIb)^NO-JL@%xEJ<~DN zI5j;L1{h~K3wr#%-fb2E*{C|@hA=?v&O%d_IYzd5(g>W&D`I_cZQf5ur}IECK4 zyC$9A_TycfmCZyP{(}APhVJM6R}$qeF0`vWqMQ}!i{?K&kEv*uu+||XctEQ+ zUcrA zUW|6z&V^F!J}j%xC1=%$yIc3-k?UI0?v*h&dmCEO@%cGxb={;Szpin=EwE{4YQet3 zmy-GPTOEd?y(hup9$d@-U*vQa@91%WCp-fH(qqqZaJC{y_K^org7`?Ypkx`IWsn#9}Ft zwGcGXS|$FtGl^?{ zM!W+|uaK6%!8aAb6Ak!Z)U2)a8=jz>==r{39l1#MT?-?H<_6=7uF(`8UYeALABv<6 zCh;87Yc_fx)*T2|!GF|wFhV%qxV+~&k1pxmc_&mS*P65G4t=Txc|4vvz0~Yu?7tKg z%wxT0=w~V_%?S-*Bm9Umz=lLI$JT!Z6)!MZ@G!zyq3vSfpJibhtW#S(w_S_Hp`E!v zy$JE>Eph-EM%qWo$E4PthuPI&r`N6Btj$LjutZ5p8+4>PRW)nVf*a`zay|lgufN$^ zY=by4oqG(M>rvs80wnZ(&2c?#Q!{-Hkml{(*Yisa794y?mT=_?AK>KL<2%7R&IH!# zzMcKv>nbtpz-IJnT7*F|Ct2GuU+jT`fY>4x9tL(lD+M)KM+AVP-HBWmR3NLD1b1ON z&UIZJ-V6oU*qGfmO9-{i4jTxCC8v;FgqJ{75TDSs#Xm#3R~&^`1G=0cb=D;PWUmaX z9RBTpQ!*H`MfErAqqnfAyu6&E^JfKxfH}GE`qa)ENWeS~{7hcVfY^9|L9M2U{AkG6 zkB8aJWOK4Kxwsi{^2yi!q=~v;MEXF)CwFmr$nMS5-6N5u_17yg$7;UD)HSNk53vr~ywekDm4)lrHM5YNhiU z_9|V+<=sl(3i3UBBDEqI0tgk-^={}`T>*wd#n2=wcnd)h{c&x_CSay3~E9vx>gum-mr zcjlo9Z_SlNuG`66b%lvsZC5&yE$}foksh2s_u;D+m_yDKyqIlh4w@Tgch22ZE@(5| z*ly4o!N3o5w3hnja0rj5I_@u&AddmnI@0*G7CY$5g+kg`gRb6PqWOT}V*@tM!7=pf z2>B~1jv>}ey`8xsmIRR1c497aTklK7%dxDL6|vtj=`eAjmVO@qlxLsJJ}e?n=UwCl zTQ!KFiFZ%?3a(X_{!(RJRjLmOdm7rB@kjdL}NESM>j)$Ok1v* z)1&Y|y0NUX4}P2Qv=(y@UmB24h%HEP z!?PzA>zuvM-E-rov7Ag!z6W^2j5Q|z<@B-m(TF8%hUG6S@KXST;AkB6 zMUm0{Sqsh+JuB!kAL}86}&)V-0x+kog!{RQUqI?cggcLFX8Jr5%8!G zm0+5_z!3h_8V72h1ZpH+T%gEQz_&$4l0|sO=+$Ts}OUgE5 z;420L^10u&YtIq3v*vBwf$=<~fMBgVXNRg5&0_8~7IU|p*~|q)J_QqMzlhXxPQg`( zx|gCJDK9?uSm+eoA+|qkU-@WZ_0k67wX-^DTX@Zx?7yu}Bw}qt;XUs8Zo=Nytxe)~ zp$V6!Z(31jU&6)FJjVmL%A6>yN!H3m+Y7oq%qurizs3H_1GSbS9yPWGrE}K~a{XW( zS?FlecXN^e-fa`5^yvwEC*Y;@gqOaufj5rja`2k9eMSMGXtq$W0AG2m_YIyKwfBDz zwAr?Su?JHjURzU@+}8UC->24~!K-vZe-q(0FTwrOv>di=EzUYGi!{29Wxm4iE<+=Kfe5r)+uw0XcMzH z7fpVw0ig3aMccHg-LX^M>jKGMs`Y;~XtHhFO2PxNZ-)e!j0X-k+N#EpR%V-yZ3Sq$MP-`BHLIe+*qsQaAdLAAdT>baY}fl2YsG|ojcNr%a2MCtIXvy{Ij@Cd z*r#sWJv9PT-XU<@Y0Mw)*OfI?-T$^JAx?A zot6ya;TrHaAWiF~b01%`89C)f_=cx6(JxIlG1spyXRrTdZ+b;di^DUTfG9L_quR4mD3{lnmk_dmO+q>?=5!Q^CosQiHS^wCH; zulio?qtQ>$@hDL)xq^K~iIy+9475$(7eyzZ*=h|WIV3EVNVQcDG|s*5YjFya5|=y* zBcHsR%oWXDo`ImzN?ul#3ZRH_ItLnhu5rRhO7VrnII@+JCuri~g2*O0F2L@cHz55k z4n`N)1_Yxs>yxNF{vqSgo%)j}i-G_|ps{V6#DUI|kQOh?4-IqvNnBz@)7V}s{9i2p z7$L8mvq3Xzp#vNDUT-^OmESng!?$Jl=b2Sr5NwmOaN*CO-u;7#E3YdTUKG8%`hTdS zX1{#?GICnZ2d=AyLfWl;%}j2NYKY545Z&d*s!6xLNkn^>Ww18lH31_08>b-S;$FYg z=j*ZDJ)hFWZ%-r`Vq?P9Qx_ zK7K#`W52j$L+9b^_1q*ko`oN_1lGD?ruO?g^qgShxY8U!D&UlwpgXq`2=ydo^# zG1S0Nnte+3<+_jh?9(zlest>;o5Ut#x^SVftOXicc*@Jb(_USsG}=O# zgtqFY{5Sc8eWiG}n*vV0HgbIu8w(lmxFu|(3|r#p_F#?li>jdA95xn)^+imX_({w5 zwXd=-?g_X!1kuZO-Y(^x1n>|HD>?(WRC7BUM+GVzht|r^_juEZeg$MF!$_{-d)E`nINhZV8HL+c58qs)cE$SdX80 zJkI~51)d{$wwq#BP>K{sByXy8I?gX*P*?hjq}FVjkgaZyll@?+>8=;qc6SdifV~5k zqAMhi)<0bYFl!R!hFObM3frAa6aEpm&k$AcDY_~x1cd1 zg9LcE?;r`uck^$X#VX!wFbnK3hy1O2s#1$3kSlVcMTkFI{ozznJFgvnUcaxRro5sVyg#N0;9@y0@04b< zrOkycZF^b(THGGqY79r3*4ZaU0P3eB)jniQ(Lv~ZpFxuAU8*eDF{k7fQSEY6GPmd- z$1EL^>bpvfs$}AkE>XMYifJD_pgAEYJK6`HP;^cb$;Q($61Uu+DeJxk@Q(O`oPu$P zYlv$$e&A+c;f$u?MmxUsh1~JS({ri?-Lz_YOyQc50q6__^U7LvngOb&7f=A zSA!b4!>qaN+eX;1jBLZMRElzFQ#4AshAj)f?z)O@0Ik9)$mrFCoZ!Q}B)=Hr-1UsJ zW%XsQYOp?MG*X*Zs3jqzl5Rq14VypwOc6D%q%4N4r?bf!W09lj1V>{mHKjb4 z_b8;BI%lL!miUCfO|8)s`&!x)jEQ=ke)8-9mmU;b0f}2wH(_a*xd-_M+Lq_4C8eDP zrr(`Wc(~-*{gaqWxB3^|&Es%VfM#3uR?`;{H#!9#G9c9wXs$_xq&CqUq6mT*mrTl+ z?!hb9@uVk@>JATaOPAj!;}ofV(@05-og-zMr_Xs?zt71%!+`X#I1;bWA+w}%3H2>@ z&s7uP2QRq81@kwasv5HpqMYPgNe7u(T1s_6O*BxQlm%cT;f{5m-8KfNz3zioR4=Qs zXzSP96D!CqtH6B!QNDH8_XIyt@72zvUWA-DoNY49gE5071RO;dx-8c# z?Fye-7SW|PZ>v*dUj*1M{9Ow{S-*qAG2)7@)$Ibo$#C%1o!uS^sn>3 z2o7N$2ux**+Q!#A^Oq+td{-Vvp&{!H#fJyWAdUy&ADcjrwAXQ)Sx#u=_O@%-SFXP8 zADCK!)q>Jven#lR44@Z~tv@{8Jl}1}$~M%@dklk@HLc0SBfFyO)6Z7dVPNsf#1!u) z2~w)HfYVs$_}9!Z)xH1>b`92^i}ARdLJLUywgw?R89}nAE~oGXKh8nM2K1n8$p}(g zbwKlW!xvue_)+8UDpDwOijfZoXJ-ML#@KIM=RyBTJ1%s*MiStPA&mW}SMQhP8)h7= zxNP9akxWWrA0MD`dWTGfTmM-d-7FA;f|&!pe=PWjanCNCBU|C0G<+?_UazTbAmm~s zKmpbUu?{;-cD66?P@1VGV&j4wH&R(=Cd7EPuGr|?4}$l2Eo09i2d%5=28wYJ_k{vIq)vuOjAe^(x(P&!xx6Bet)6R#{lvS8vRgecIQ1fY<(PUPqD+4ieIfPR^zm0&cOuu*8JglWwu)@W9-LqL}qZY zytb%=(6t=!uJI-qRRg{OKp}l;UOIE?Z~@$Z$?G6XU02}xBYJ<#<1jZ1asCjOp0o$9 zv=BoccFD0U(_^|wm3PEqCwgV-m1n?Iy6mC2AZj+oBP`+4B%$I=dXWSo$_X`aHzRbW zq}PuRH+tKtAsXA->sY9cWuu@wUDNSbpr&6?>hZslhI6$~*q*eJdu7Ceoy$wsdaWxo zzYzn@%K6V(X`%Ph1@~B^X_hIgYfD$_q};Y~%0)R!ZoWyARXv1ste#*RNi%F{{A)$z zl3xnWDC{CHTRT^)ZkK}UN>C8FszE=LE`yaN49Xfc+hvEUxs5?mvL%KUoz&)NnhdkW zhkV_l~8F)ntRAbqxF!SE(TF`52wX7~sMGg>3+VV6| z$hevK2?YPtXywrmvp|7l5L_?KgS=Ty1u9lX@&^;rtZ0sPZcvFi{sYb*Oocg`4DcrCFy4K^#V(n| zf4nQdxEdhXMwiwBnxj*@CI-}i<^H^TU<^H36jpR z6}my|l@>G?6;3W(xQ|T292_peNa(vSKWzYeGf?jel4Lz7yZo-j+C4MW^(6kZsKx2y^~CY6-ciW5_{8s{j$uQ(&5}4z#^@i~N}&If|293&;U; z^>6+olJa3^R`|Q`-G>)~sOoFn^1jK>4-z!wwTzj&Hi}KsM##|c>U|pS^9xTQqI9q- z-0EAuWq%m$&li4`r@z(*b89Lax9zOn>IhR{i{jiVTa`9N@yEz?nFD4J;}dukxfslY zpfeK1`GZp|26oz-mSZNMy0(VZTNtM?$((7Su9Yl62frKWiJ}+ek3zAWC@15Ajkz`^ zv>|1i?bnTOyXZ7DH(b402MVuJB1V6?Yv3MktOm{;W}zcr(-(T0%VAFO5QT zQ7tt;Axpkqt&KzIaim)Z{hAq_TrbnQ`tA(l)3~Z~@aGr9x$TeJJ7>TRZ(q4EH~_5M zU_p-3diz;)Y=Ss6Wixztt_@R2FR|^CXzhiFv4wHwh22d#wryai&1npXjNBsF-sW)G zFcHcLdZuWllY>q#y#1k!{{hA__C!fcaLI~Il?F8%xQiz5SHb?P+hyGzBDhSs5C;!Q zmUzv2JzQ9d;ra6hC@J4V=W>|#%4prjivA;48xpNUoIv?PxpeZ?%{ zu*Wc|>TrCG`+O9Omc{KHb2cpw&BI9mNOs3T*lN7^lpguoYPx-)XB{+UJkS79;3}cm zUYDNb{9wG=SOLw`PcvDyKD3#6-Rmi5d_l~_&+!EB_0)|CZMe_aZLc(+n3!FkBGg(8aoCm!E?99{qR{6@{DLup`XtS3CbW06 zaiNZ4V0Ner1E!23H8L9mv|fF#xUu|mY>5lc&i_~!<%M$kO^!;)#`cLrq-A-;)TMz` zlE1wx8LJ5ILj(*D7Lq;3We~uOE6tQ;!}%E}kFVumyz|TOPEOevWgRdrhu!MY5Qi88 zNWD`D^-;-UqaebRfrpRwNylwgZn9oBZDH$7xW-gf>%a|l;3;uN-(s%{fB-lVfWDqd zjC!1>eJ_j!USqMRYHI)V-N_c$i#lr`c#d?;kmQucGMREfcp6-04bjr|MPIsAt~oEXc`W1FmRlL#V3u6rlC{ zZ~BY><3WSppFrn1u`VnsN48hhj5#brnpQ9vmd}tX@tmKN5A`2@JPk};$^rptsESr78_yV!qSHDsAn(ehmPz{|GGI1~>Zov+c0+}vSWINnf!n$v6%$0q(VQHX=yz~;2_ej4{&8|lk~kvWVYVbu zI?uBqdd4lC6(MOlomzZ+{e%;?`&LEG&imnA0&1GS&Hw)in5o9nVmXRCb)4)H<(4*H zZ>*fV`_X>&Izbg_)8QwMabLb#@4j8gQCVVsF1;xgb8xL^W%-W7N^JtSrqWTjdGg!X zk&3pV?F%4UAn21QexqJ?$CAvgod>K^GO3yJkR1$bEsYs*TZdC4@CxiY-n|>3dvYfKDetv|+{Z z-H~Yu8VSTe7vDGS9=Eh3W)_51mRHtw9CMd>w9BBHpa;Eh+-*!XI|8k%9 zr(I-ydw757-zs2fQ(fzx)gd@pd1LW!=q=F?2dRPwoDF5F>X!Jyfk&0MS9dR^3F{hlR|Q zxvRmjw9BTyCN=%_1}H4fMu$!D3v8MUpa=%S$boMLil!avZQ&9i6!i#8xjFfld=O$B z+loWKwOC_+j=RA*+<989`TtZvc!j}EE1`hn23)IwZU_V<&h>Wm_tfLE^jYlP=XR?X zt_d%B&U)=&8ua4^R+dzvD;h7d(vKqrPiyBkw5mWeymd*fy1rw%3IIxdXQ_%7jeSDZ z-uwvsg1Vz}C=?q6Z!gCn4ZzqShWt#C8oq1RL3Ow977&J28hD9Biye+LSPyH|svGP5 zyI8}UiW8Y=${pfOO;;9@w+42R#uaO4*7laRpJss=n8X08(fMn6syCq zcC*M#8q8R;$l1Id^>>wLT=R{JIx`D+V5$U%*(a4Q+)5+KwxqF_Sung@nPfWHqAXBla#2K^Q~hAq(J?_3-~MbGrE)L;z^!6X3MCC5*~C}FZl9cpz%uNh<@DXsY)`)E!dD1x)0JH>=;Yd9$- zq3xwa>z0+0XelAC1TPjj^S<)QQvG?`az9XK&vFG4hHQfe3w>ZA3ru)}EIi3iTAy7x z+iiNVjpcsuR>gFfUz~PKy3}V+_w^%T1r&- ztGd>u&3N)9HDv+NP(<@rG)*LUd|R%9l8b212y(TarM8G8ULv+dY!arIh^o~=3=tDcF)dWp{9PD!k2&hO4%;ZxFAj3)e{O^Pd-gDKu9M8%?VZw7A*XBTd^C% zBIQjUL0N^G5W)v~hf#f3%=AYzcgxV9?FQJ?Ffb#aHsS;K%8=2mEEZV*YGw)UWZx_0 zRy;&>%XJfCLdK`1?F762DxB3ZF`z%=Kqx8)Exjell(-X6U$u=Rgi+km7$OB$mr}2Z zcLEl3(*&8o`&Dbe!2z}eLOFBs@nE;~)W|&rMBSP9h+rv}57~Ev>~(_|Gjq&{u4n@16<+*k)kW z0}ezjdYk(K-s_3=^q?60Vjj&U;rCo@@u|4v0)Oc^53`FUZH=xQlkyp0)TY!py@-A{ zooVEpwdo;|Hn&^!g|ooDz6_;!8jwDr;?B6)tScg%eoa|TDsazqt9+t}>{mge_#_Lo z+Ag-u0Q)1Qk&FnN(~6dgJ161EhvcdP+VTOj(-KS(l!P=unEXR=nz|2*{dfCDd8*)`PWFmsYnFi-Ov0*HIMmiJ+ef(goC3%rJttfY07O4IX)pcDN~! zyu+d`98_>s*1sN$sp( zQr2CTBi2@@ff0`k_FFX9lDEKn+@{XAS?~ASo$l#74jO3emj+n=V-JU2=enawgys{NXzT&@hLf36l*?!b-g>Bqtg7TR9Cj*sGGeC z-YbPQYSv--z51#?|M6>fX~aC3P>kthH|UAD9U%`zvjEwvV3YBCvy%NrLCn)jH}8cP zgugVaxO0-jK3w_~B{!zCXe`XFRsg3BZG00g(29*KkUg)8$1DMTRF>`t7rr z0pm^2SbfM#3jlkGPjFKNX9tFFlv!{&0QjoCoq;VX_S2S1cXXCAAl+m4|ATiCgV-5H z;I)KHHxIm>Iu?sGYnu^j@`3GsG4z~=W9!=Z$X>>CxSy(=qU3WSCzV8Im>)&iI zkvMDhtA-3KySZ(mHIvL@x;ZD(??KaoU0D6Cq{$IH(%shBzGh@)v#?ja`NSqtT_a&Lz6Yy?}d61XII3`ylW%MB zWTM({di|jYinI~NV1n&wJ%f1=SG2=i`ab(1;ItaA9hW1y;3KlG`C6Z_V`YCOu_|VA ztA08-x~H)*cbZB(UIt3WL9{^%B0CWeR-cuUk_EtCV^!HYfjFqp8eB>}bpZlnD|?mC z49M#qz@yx3X(y%YRl(vRBnOW&&5*fhTJ@xV%#~b)gz3^hJ8g?@zCa2o!adDv!iXC( z=jJ@ftOVTB|Ayz?r30zYrrDCj&6cF?O~H6g&n$)w{Gr(qMH2D>f>qgt*wIt$nFjHU7`#kw#1jA0UjKsbM931^JM zW`n{T_Gpx8wok{T;hsL0=GAA3gNeQ5MpjRK_Flw17=Mo$0Pu&=;PJl6-s#C6+$2f# zKw(b<{7_iQ;6SU-gr^PYJK0qKOeD$_!p!__npMoKSVy;9ZMo(PFyf`~o_ARTdZniD z`z{&%0~)%F{Il?Adu#DK$Y(e2d)PEu8z#J&L3KF}@RXe7oV7vhT+wzksmP&%Cx2qD zDjrkeJGSTgyC^3+o3_vBF#ph6X%YFY)1U^+nup2&25R2F@EgYd8j}jpmNgFQIIG-j za4N+%0>Dqcotdv+YR6i2qFP_YW4!(!UtatsT%)#B5|WT} zl;o%xxz8C|8%s%%BVx)KLWLRE45d=U0#%h!uBW@EUVIrF z=vo)sS&bDU9@K537nC%d%)vhFzBT!5UeQ;aN%k+j9yQP&JjJTOE3A38Isted1)6sC ze}2JytAjFH$hqCV4elEvgcoY3Qz`vb0|^>KUXUNKi+wNl1=WWlztzSyr4jlZE_3pp zx>O!^%JA-RGI!ePV?X8l@@n_2*?L!Szx51LX^GhCd#)(XyORaH^82MUyN@rLvP>K92jHsmXLgG-mA7RIv?|wOO-#AEcEnyEGV@Y=Xr(% z+A~v-qDW1c(T>^q{i$p9qJ@8n_FC?SVzm@z&%%1!s z$2B6@YGqa6k`7Sam8K1JRUZ?Q>t~a%{H8X1t2B}l7B2$=R35*XXF2U*x5~@uv1ea6 zs9i`uXCoy8++SR&ndQ0mYq{6#05Y2wvJX4iIW#XQ=RGCGby_nMat{k6L3QfBTc9%a z8N4v^kWnv)DeJY&NCHqb1-=~%w{DhHtG%hUHm-1Eyr+_-%z6X(#r;VIMQ8C|OD{kh z(^%oTZi-vBXO0S93u$GIZC|-EYv;m_jc&Jv$96+!I}gbH{vfbTm&tjP49jl?C4zxE zP=&2ZEi;8*PFsE%`@Mekx&G8i;`ole=N8|Ri#&_t9ITqx*%psowd#`D^0B9~P{l2- zGr7{+t}DijY~SPV#@}m^`^nuJIG!!o(|7pOX17$c@`cn%+E!q*<=KfinrBuK6$%`l zw*DR22P^`{c8ltvJTKug7>k7wap0ohbfOaI&3gJ(Cmoljz{t}F79J`Rytt$J0s)*O z{x^B|uFlpLY^Yb@vOq$$^cM{@#Aq2SMXc(G093HrKkq6)o6aPviZe6`PHfsNN2yJG z@z*ENrSfE>HfSm9bho^A-XC;Udi2-audJl|x5TZf+jq~SMosW=(>{=|XF4rhy=_7Z z*W(tb^iL@@d_7L{0tY31v0mq3wTl6&hRJ`Z>g1i#MBYD$?5&>Qq?VLjlRpW1te(Oi zEPbyI{MGX91gOQ_10fs*9e5_J7XATP=m6{Q6}M}kyGDkm3Cgi?r*mHQ7`PcfaT)^! zaaGrN)tVO8{FKg$61ST~>5%R|`E_ftnD^3e|&V;7|$8 zcK4k~YyFHT_JQX$9Ojq}Z|-jyIMJCutA)1g(+&i?`O13Fm21W}qLuzRXak)xzEadI zWOGm<{sWj@Bi>@9HGpYAx5i6I%!9*Or+1;Z%#V56KXf>gd(F^nU0A1Pz?&CtZ-{Sr zam_fNkSqnLYyCOXjroKuZ}lGBp~Aa#t3X)@n?md01m|bzRnzPu17L7S0c-J8_%NpTh~PHX(x~UCPg`@;trYqh$Y3{H850 z#~=(_cBdRPBV+TgI-K9Gs%T+({ysVXEWWkEB;yrTE%taP_2MBYho|vdd(2--t{iaf z^9H=h@%&V9P@}M6-~|H$wsNJl!M4m${d*(E7I4iBg7XmER$$OpkVRa-za{Qc?bgy0 z%{})N_xGr7ZpEJK9UAA-X>_i!XMcG0Jt{@Lz~W6n7m{*+W*{Qy6%lF=0nKOEPLQ*Q zm5wRznL2ltT=A&NEG*lz17yc67ey!@>7Yx*W{Vv6-YHEdIqmN?p@0>xK*#9~YsbEu zW$Umexfv)Im5!^2a{T^0p8vop*jnv4kpqrSmhaB#$1xAfKlOXw!Wpi6=8VRK zF+Z-0O;RJL_E@WosTS?;aZ>xL>JYII(swX!&8v3MYmGdAsxIRPWCl(qpw7FMz1lQoqAmprnZ@x%W7l0GEeBjjkTX3cO7Z%Bt*R?vp`82u#y+s~b z_fHYQrhvTNg#1S(==|J;#1m8i*(KT3@BMpEEmC)pi#9yJd)S0*rxjs0aeO9Mg?r4- z(pzm|kiBTlKeh8f%a4#XR&qhJ>r~eD+T)k?glD%qVWypK9g+_;4MmRm1$;(JcMCX*Xzx z{6Y`%cB9R)vuDgLEV%C<>bi$MFu@)gOgbF+uxbRQpP%$;t%&IM?O)^KpTB&mAN(?M z+p|>}-5WKAzQ(=O7jfMh1!JDtab(k<>wi-{b?M%(znO4#xZDXFe!%qk!B9p?D8<1V zOVUNS=GIsTcz2il$%Th{_q6!MMTgFmRr=Q?q@a$y%-rC2x2p52uRq!5gIE;M>6(Ae z#{BifGN>oa<|bpWXSg17KCIYKPQi*8ex<_ulysQ_^<4GG_aX9jvQsjNZUD@biNCPtpB|%iQg>=Db{c%vLw^paF>fpz6!Fd><0p*OkJS>=-&-h6X&%l9 zAV-%Vw+V)3`IEB-HL6&~Z2x6~LD|t;a>ZNx8h3#E8RIt!9`Eq#LNnO$!=Wb9*iyX+ zbY)ZH<>pkdlB0w1>X-M%d9%ChQK6YQyFp(<7mIOVf{G45cbp-=X2VJR(SB58 zxm|(VOj*#TL87&KjUlCPJg~mH<|WzVfupmUchfjG-gFE^F>fZN6zP=S)x>(Ag7jOJqr%^^Z=7VuQ7}PM|Injb}pE2Q|)zDY}XrO z*Nn1Rm08F9YkOFg#bJgg2z3b-aUO!4$l-rDct`xj&nf1O_`#HT6s2g}pa{mjnEV+z z$Qj3}>WQtz-$Es&vN&}U$6H1xdI}Kju9cTiQlMzy(eK$tlE>p~!cCq>9KI4#g-Se8 zzuCD~6B#jC?UfMoUehzRIa%SkNzHjRfA%6Vir$4U*}(nXWaJ)8|7~BBMV)#$CBZ7> zg61Z%hn#bYoxrjD?3IhU8=T+Ix*D39#q}4c^|o-PsF;c4-`o!XHP8dsHDdB z_N5dCRk0^fCX2bJ23_pzANpZn$85Q|9iFyD;9P;OH4L0(5b92}`<6uS41M?$cl&&$ zs-J12uFf-I+&Wg1yZLrH0I^gv)~qAX_i={z@<{%5`FomjJfiDECw}+IMy}wn*7(j2 z^J8_LqHcWjhj%+fLFB+_8IyTbZJSocPWp!((~sFiLz8UeM!*gg_0);z^LzoF(9U$2 z%O*EW?KsZOVBpN{3b1+ug>`~{u`lrc0J1Y-!!FYK*~2AiG9uv8V~@YbCDvGuxbU2k z{CGz^J8Br)^otB-707#>_S>evR-gm9YmHLInxCwnEWK`YPjdkR&~Wi{mj9&k)@YW% zr!Z+8N9giY3Rr+$-7FfL!;hWFC!_s48Ls#VcY%Grgg-vL;^>z;3mQ5s@i=)WkU5Wt ztKBB}onIW2L}DFCm8p;WP>k*tcDrxpgyyf?2XR(}Co<+!Zc^2G0f@$M^aI2HbcE0K zuP*oC3wOdA=aMvQ2+LJr9Ycen0OGX2O{u4oKIJ;?-!>7xfR^~1AD7$S#+6O_JYZ!T z!&>&)Cw)4T3G?*FcE-5nU_X*uG?1EKrN!Qk@v-lpA^qhuwC_%`ELuZ-8N3_?j zaBl5+wJsh#2>;&_^5w6IQI@?hAxE?&)}B0u=k;DWcx0f91r32+mE^33RIX`nf9 zKWQ9rutByD$*(G)^N&!eR7lq zN4@EP@`f=xJS&>{zCwJd0({W}f-4E;EderhD>9yS_43B3*MvpQFDV{8PR$^qj1;6m z+9xxs;iK4&bU2{10r*KDe`}Xtm;Ls=`w&YA#6qnjXX~yJOrfJ^NBV11>YwUr@Tdp){c<)i~MCu31 zyh6Um(*xxN24(b`!5}=_Hy}Zl01v6&{>^-RToR2kk56iq!J2sUl~Ws%PY~*t%Yq65 z)WX*91T68kz=UvKZT1q^ir*PV`AB)MY0}yZID4$xT_RtC5aL#4bV@p&4S&d`nn)rO zlw44wM?ZSp)mjcyKlaQl1sj3iIoQJ@1)dE$Ux70&V77<0&T!K1BM*vyNB6<(x2-qb zt9~ujoIrCLC2YbpH~Ii{8>Dvube9oBhoi4k?rGWs(ck36Pd?cwINITHpF3=_1$+$z zUyojb!K8QURc+QnVR+@t;n364nW#E|&Brnj_&GxGz20Oib__>Iv5XQ=fX2x)*{TT! z8ACG*)M5C}!af3xm14ncOxoYCUxy0j2GxuZ(TTj@r(`3__aFxiszn)( zx2Yv7$77Ph3mwy9J1GH(DhU(mc)*G8iGqZTSAsv!mGe1UGKvVn2Z02xgFSIyp|$wb z@%S9?a39yI(!_L%H5P$jzCWS^%@w#Z7dD*#{JMOirZiY-BGMkOLtwni8z$~7d_YBO zvucx6`qh4hZhHx$TruI>b=LZk-5pMMK~Y7b)nwkwxOGyqwl>WL_&uFtB(W6O2dyV7p6wwvRG@m`%GFtaAg;pQ|q6>2Q2nz71x!0 zsoMnGkoX^s+e!^s!`CzSYL%J7d1otWzZ`-l@_;-v?A6lHJp%=Mv<^{%zA6{9(0T-_ z`qrC36<@i}ZU0}UnnEm{4;{g(Z|HS6=cl*e7L-Q~;^k=0Hs<-}weMpUhhW!SLCw5% z?|6SweLYuI$oF+0w_qK%O{piQw{O9QRrNc>;w&U#XGtrrnCw8TbWke#?TyevI(m3k zt6OgU%53lQd@lwPL#nZ_)Z_movOeFOa^RfT<7~lvy3zIeP8ju7A^QHYY^3BGSl1y? zX?$e&anYdcw}Z{b7WuBun4qeu#IgF_h!;Cl7pQGs32PR>qR-9v0S+XHUFGHn5d%G| z5=^{K5Lu7PO^xQxR#8r+Q`7{r$GV+QZ$;+(OyRX^dVWaZjD8jlPRzoFYgOkfc|*D6ZiGU>~Vyn}3MeJ+o2h!wG8i*aSrFXdxkwTD{x3L1wIz`Ly~GfAg} zQ;rfKoh2XI(hLa=o{B!eN?NS(Z~!+J%>mVN`fMr`Z)KylE`v z{tcj9stJ0Z)GfDe!(R}TEr2**vpzjnCrl+c`JC`N2hbR#>;*#`mTl1u`$~uWL^u29yINKGjY548d(vJIJ=G)ohGb&z*quA4n5=|-+_^8}! z#_QcF`Jy%kPRs`lJE{SV9s*ZB+Pw)!>u92cAgWj<>Ev+A%MT?NW-o^_5US!pfEt-d zDlwIN^isPvxFHKdtklJJ`M-TdVsBVVqO*+6(&f>9epRx2TAe7h6ZgClevN(!*!>EC zTf-6WRBtHDOI$O&r06-tMvDq~V{S5y=+hn7`D5F3Y{GVeHsOEKJ1+63Zq(}rr8qb# zTcLHxP_&~@K6uB#*2HMgNLq5*V)BzM^In4n;4RJN>ho$J;vs>pk~p270cf|3Lt?bi zqfBlzKP7kgKDWA#)oxcYm<Tb*QtmWDg_&F&c(LWr(zp5 zM)_Gw7kIiG7|-=QkrX;9XU_3Tt&{!(W@u2DMa7i*^3t=c2-Df^?6SERYCP@s8CC!f zV@wLsP9S59O4zQj+vyOlH>oaB+k}oJ`B=wSy$Oq{GeHCM!Ig@?G~QS5e4yU@2lG~9 zbcQMQ)j-H~YA5~m?$l_0cJA;PU;GMdOde?(vwX2G!9@C62tsB|m*Mj}vQ{W)Uqo7# zFG>kcnwPEqD^p~z`$3nq7#VUZ%Z7+9(=)6`&4n(v+UkGxDu^GfUl(lfZ&XRO(@g-MkEO0tWbHAirZKv6E&SPdSf+sdn#oke!)mxNs3ymEF)*9g(D& zX0F72Zry?{;^@`H;t)cC@reqM(avl=>shLGq2Hw9Oj-9J_e_j#&V+~ofO=^TMb7KK z77%(H6MeeCmRlonl^}YcuD{5<;*1)D7E&>!EFiKbhOXKbP_N85vu3LV*P=ME^!*DT z;?ghoBFgs;C?twdxb;gOm9$lU`<8W^fpAp62MS_IWu7-eA2%W>59sU_)20Mz1RE{B z9lIU@;AF#3cxN-gwE{pz47d!67=`JMwh=1G0rg>?pJZ- zXI25nN*XV)j&3M5FGI;@yZM%f$d#iFCpdVI2S+6hr*=3?MCQlA%d-{wh&1thQs#n7 zmD3)vQj1LAh|q=ig6=HQ4_Xiw6#y1_0X$vCE3{RI%M4mHDmB5JYjY`2`~hnR3) zTlgO&5BX%xG>B~}$G9wWMR|hCz{$O03INFlGCfmf@*#Y}Fj29v-aL%lT!CrL@>0(M z#}?ieDmc_L)aoc^W5zvHOOW*KN$tCK+_aJ=hJP(4%c6&=8(?2bb~RI%Rw{8IInT1^ zGez`jOT0_TJH{XN>f7V22ak9y2|TJD@oqU}i?Yra0pt?v0xARNq|?qMGiHesxJ=*7 zl&i5R?*qthVP;!^4!zeAR5~Duk})Y~HT%hzax`7wKsyWNE`7KMi<014nnXd|-0P&n zI_1q zw`ts7F-e`SEp#9z9W4#QzZ`I8?FJBIO7D&1IvM#W0V6A@;!H6r8v?urcf6%yBB<{o zv3^zbUSOPd-SQ4;$jlk+Xwo@~5cd9Boo$ds* z1j-TeuF+>ZKGcjAoh%~6J@^Ob_OH;zZGUt0%Q)OGAS%%g|G3A)!QUalrtv&?o=}GY z5eGe0qjz&{QBT_0)y`QFJxsVBVG3-jx(!i6?5amq3QGO_`8EUt6u!3v#REYi^@Q~w zHQQ-+k}*$-TzVW!Y`SH2C{B=m0eQEW`c`gR)jEmeb^tPleqALoo#&^Gy^-Cn6NFX8Mko8 z_@JI7iQ|)UhxFNd*LR5Zq6#@Gk4zwk*%A0Xt(Bu3 zCpt5NuxB7>Z>tJ`nX3)2&_U12E^T_!Wg(AgX|9+$8o|p$v}=PKe}J(@J;TIEJJhIB zkWUWQ2xde7cz3NAsf4oy`gWY>@4&5=dNvtEw&*3HH+T`;_3!FC`OBB=YG>MaKVZ&G z;RH2IKPUjRA8-j^U%&50f0{w`p})PZZ!$qBhSwAOb0QUhi{hyP%(5m~qW-z=cleB^ zh;Ao=E1@RNH8t^R67XL6H^nE|hW#%12L~!$fScevHo^Q@c9cEq=%B^c!IQaz`o7I{`f8g=zmd*iRNLI+<|TzYJ@sZr^Ap=04P;Jp(~yBWaAG@2$}N2GKa0unBZ z3-*3&qxJ6*6sd=YoAuX{5ts)h9%OLk5pX+oF4P~3S1tcTgz27kSVAo@)VZB0YF(jL zZpS?;1uzpPwqa9K4YJ%hD+oU~g(Df`y}OH1oPkYK~iSSUbI z!z%32`Gq$ifS^FXiKf@Z6dQ_4?FIYQRuy1$+Gho2d}7j-M3%lsO88tw=N-f!Q)L~w z+#5Qjr*i^*l2pu|^rz^k1 zR7kVf8)uU%i(K!{+XjRtz%=b56-`;yX-9l%RHBpw=Lgxu@y$7JKyB z3?9dmfOCDq5&|&o006HFXW)Sqy%RgR`Xv-yo+hx}Y~pDaJ_CO!Hp-X?5Klq8b%&5>mUJ$ar-{yKFg z`m{b>yP^;N`Y<`*K_MzZ=bwPGPUdu&?AO~V$ZpRJF<(Ls|6S|lBbDT^+|HR;6uHRU zC_%>w&+KKQrJ)1?3;4SZctVbw@1c-PSo$ttp|W-Gl&`^|{HrN{lh3BVW}6g;v)4(< z0~RA_Kp>YdmMZ4onKS0sX%_N`QSIyzZ^M*3m_DcBC6)NF2!4ltr$p(HBU5aHeMRec zP9tBxIC%Cl{zkK-`mtofxIe5M{g00}qa&djQx`ZWXJo76XwO{;IQVYv&Qy+dS&bpq zoV=q3S*!%U!SfvJjB2 z3aBx>0zgFasUWfg%)^A7zJ0#+;EO?L#YoG|=oI4vhj<0DbyEqf4fs6GebglDhIydp zA@6n506U3EFNvr=ytv`60uU69eqvxd2&|>Ntt@k_g3B6QI3EUU+=v7hSb}KKm*`td zy9=xfUcN;|-7L`)Q^biJ2>YYvA^qbOpvwsx@^Pb0$P(8ASgjIdOk zmh7}@VG_dObkbS4$(q|nsmHeEu?@KviibyIAPjquFI#s zEomV+r*fur&l33Hwqi24>=RPLj)QlHXNTXRj@@SlNEcm`&;5`sB|;bqVAU`3I}v4z%kH(}z^ZoB zIiCnmBk)Wev?19TpU})T5@059tZP_5;xe7>%Js#)PIU-F1tP*_q`lD0s5npdyH%fh*wT|#Er&5TN#yT^;7aJ)$8#yVGpZ+Cy1;-w)+ufnA~F_ zACD>PJWJgXZ8{-hEUJ5EfE4O)f90;ob6GM&`_bUR+kl53>UT~I$=Fpm0x8S7DrDh+ zu&H*YyMsEp$St2QdBn;XYiBvjnpP#{%^20_4U~2q4&aE&oyyRGTM=e%n0z@`oem{3 z6?&IwxBRD&~}@RM^HD;}tJfIZST>@7kG zS$FbWO^N-L1u4k;zhZnqpEPB77rxk&Jd6X8|IG=G=~cDxucKrg$b(`Aj$R+=9XG%&f3)=>0I1AH!XE|600*Z88=hF;zH3 z7s4Fx2Vkx+5R5MQck?g@pT8|{0bKcdez-fM^Lg0?Da_VWX6p4pGhu1G-wEFW`t{yL-E~hn5qA02go_$UbMu#dG~ISNi6*|Vo2Xx|JS#+{f(9BP~uS4pIU?k zvdV_24STAl`%CEay(;2Hn{)G1DCImt%VMnaw}7|QU!05WbTKcN`(yt&(`;a~Y75)r zFI~?H{lfF7hDgMa?WFU7_Zic12Z=ei8F(vFT3h3N{ld7wFv4F7<9kjKKA??f1v!Nset3hyXPo_i9_sdw_cGp71F6k z=NUwf#~eyTq5Bm%Fkhn1$9P_Mrxwr~tt{&?#OwmNw+86I#*I>YvQ*j`1M4D(jIlYE z8=ACi4HJdNQ#&>N0@2@(`1i~bO_00)5y(LlTSC};P(y7Zcf_7l6Em^`_!9j*v%}yB z?oxXa-Bod58^-z6j1$ItjH}eTk#J%~2Wb2%602xBtB3#PQBXV0L$Yxu#~Yq9G*83W z=cH38f<7mDf7!f=b;AeXhnxV({WS|hGa0tLl=ZdT*vp<3&g}39(LQUIbL24y^|P@- zW$TP|a(Vmf6=%Yd0BH(@(tJtkm#EiCdqXoFR(-4;_tT6UUf^-@`S|6z#Oq{Jv+>qt zq~!uVNUnJ3IqVRGyPE)aX(iMk!+YlXpiSq{39r)y+sh49t2|H6m9Ci&2n%9aK*Fil zCISCwkV=W-5z;70nx?a%D-q8B4}lbQ?_h(>@Ct0tld*tT!=|0;m{CRRRpsDgUcNwr zHZ-s18YH(F^jY|wKg9p)V4I(}KG2$F6WNBUpPrr_#y{O)WSV<1l@i7?Jax#p%ueWy z9@uc>=$H4K2yG>>ai>{b={EzP=07^8Vr+BthQIEm4|j(Z1t~R50`#S)nNoj=!qMmg zdMAruwD{rPSh2zJIkD{A~X8u|} z(z<%1&hn?cv?eo*85zM?T#%6#O?$v0b(kOEV%V8Yfb&$u5E7ngvdigj=pfhhki$|h z3fkRp9Yg}g4guyFYaYZ;o{={k9{O5-N;*(JcqGoBVS%@0orqk52&>0LE-mH{`}a>P z7Yw=Hjvm)qiL(gnHb8RWLjuGPZ408QjokwQ3$ffho9gN6*Kb7#k8;r7l$tSA1`xVAtF?U19Cr? zmaYvhUR&r0kto>hT(=_}nR_&#uaD7@!@w2}g~0p(YPD>kuVC3*jEKu~CxuB7%n6gI zi7F#R8qx1feuX=CX<|@R;{p_1oUJh;9$MUx7^+$y!w!pW-%Q9_kvphp3FIf^ctHX! zhmKkVUL_oz+c$fs-YyX{8{bO*{4zTfzv_bo@S-$;ReH3Kz2yiT^94QZo~%iROc(u* zjC|P;64qGm#j~QnI@FWjxU8{ckf@hTIm9C*QI6ft9}ifGNqk41W@FqEE z;sX74P}ynIsZZ8~M%WnGUJy`k^EvqE1y9 z?Z=v)3*!+IDTi+3#w-8F{7o}_@qCbUOuaLovu60}-Z^`@qR^ha!5h)Qi51%g=$}62 zP9Z1W3E>S6yQg(sC9)!UIOL2UJp*v$(1Pu)M$*20^*WF}U=!Ha=1MQ#H!kz}i9*>S zQ^bG*toc)--bk)B{SLOaOZ8(oP=FYKCYSqAAj+R!AkW_B(Pg_0lf6iE0MUMr=qh_nz18NJAy?I8QTWS= zR8wk^8o=D!mu*abM^IV#9w=Y@wcI>(Cc@!9WP1A9|FHBQ^=W&DE1;R#Vsx`Idr3@| zXLw6l2!=Tm7C9|RnEILN+OPA)68LLv7An~mZgp=g+=3Fxt-BNwF5x)7m z-#NRzePOK)YhK3arB`CcLg8)12czWa>WR!%8gSsMmO%O`NM|{i+=URo4PULLD=fyD z>%C?IJc0{^L$DJhD3hQJ=UxwOLCmjxGh%}=o4J~Sa8)=q3;$;&GX_<20j+R5EBrI( zmBmvrghhN1PcfkM!f3+7hIzljf%mOoO(u!UzMpl}$!S9zh{KM@dq*rISmw59V5+N7 z-g79J6dFo4qj~EYolrvjsMOq$B{7;;`JrqduvkVb23c5I@-kEDL@yAd`L#BiJB$_w z+5X%T{bE}=7vHM$Q==dU*RZDrizc!Zau%f{76{ye7+Y4MGdgm5<||O|-Kp2ku=IRA z=k1=1flE$RGeeo|tM4wy4Q=}$1PY>oI74*-Jnc^K^Q5+suHlH_lX|o$iF`6JVX~iC zFQytUgXK+w<*mX{UnW~v2=4cfAVw5*?>KmecW3)UN(NJa2 zOC5I4Nw-?sDMBG$>g>Au_VTSE`JcZ%{roE~lRhJlNV>Doso&UZpVLku&bIjvowO;a zMGaXJUcf5ATIa!9VVNaiE~-LMRiMYLYRo5=kl`l!4KZ;*;w zc-iAWRVb0~iWvSxebz!g?9Hfaox#PJXLEn9GPty8h@Wb7{=5}XoP zrufBR2fbz2;!YU^m5=&F7_J}4g!6|*J4yBRT1al{u~pGy4L5c{)h4s8E!z1Bb)bk= zXign_WUau#COLH_Z0#1Z_`()K)6Y~*QkB2pT;pOZwBtz$oTR5Bc0*YqwPQ>M4BoKl zTR1Qb%1vOc&o45EW}}LA3J#guC*KJM8+tzn!Cd?1DKjXu4)|%wSE(WVU4+k-cJ&~0 zv6d`emi1;qs=KhsfZInx?dDEJ9w85S0sdUACL zUY7G1OD;RGg{I(FIL|n=vWHL=Xkcf(n7{18JrH zUmw+PU-xm3J`SD=h4*U~665KcSsGkpGi9G&``Ftn94=I}v3{LAZC*8!xH#}V$Evt8DnW=L@9ZJJCo4b-~ z5>_+=SL!e4YZq!22WO*7=r2eHnsb{=#3L*hG16RiC~b~J-szoC=LD0IP)p_)1EF>a zH+(+BtANri4yoR!v5PVM&J6L4f#UYjizNn*nGxx3ONA-C0*7BToQ0dppy?z!jY83z zOIjcq&b@@v)E^jkeK3>Z;nRLpKb}4BA=}Tv4&H>!Kua80&gNeG$?*P#c^c+oQ8V1H zN>8+a-v^c8!HE4jWe8_d9WjKkDs2OxO2eK{&yfgwP`T$nmnT!OwCVlxvh6HZZGtT& zC}`=@$$m~6OFzkb?H%FB$OT>cBXYS7*nzZPfwGXtxXyG18Oy~%>p?9J9Tb^nE_e!PnK)1mAFtfu zGc&*W_KbxThVq=7OTx^*obA4)oeSwB8&NhQq_z3xq58n?`hZCb#s5#E5Zj2mv6Q0{8{;~yrAIVFTU?5zxIDy!Yj*& zQ1{@-0)jhM_pIv5h=$zvv^cO%Ce_d4dlls?8APRq!Mo0(Qdxe{-ftjj@*FMw#S01H zQ)|DY>M+>s4j;|pKvuHy*OhTe3Rva1ww;x!B*T@GE?}CVEj%<`jVR~5>B=w-&mO~P z`UWvw&T#Ip-^=G7a&XDed{Yh!=l`$y+==ei!FLM?Z}6<5l$H5hI!67B0n#|^YQ^uB zk;8rka4ES_PZp4vvj1z`m-3!y(U5*VF!Y80*SK0+PT)t{UlvdQuTd94y69Du0TVsm zs{DT;@6)qD3uqCpi09AjSNJ5-B#E>Iuu6XmElZe!gFGb~C`piDA2+OK@Vxe|ELOo7 zeo``1Kd$+|VYi`}%GVxVe&^tz8EjkjhlXjeYh!ch&uEwsP0{fvQ(oq;uc z5E8-%#qZ;M{cO>dO%AmAju6z=A>1K@lac}CIdX9xEYexHSRZjYl@7-8jMMO{N1Qf& zWI(0l%Ew2>20CqGX#W7rq_A}rU@licS`qf~)V2s;Wbno(ghqt_$^Kf}k$=bU!me(n z{gv%^oaq$a(+}9mMPcO)ko)~Z?$|p z4feknSQ!T}PynddB&1>hu$_%jM=e2VBEkNf(zHw^3629auyyys9vKM{|J01Zi588@ z9*P)<`_9`ZoZ#HenVaLFT^fK}!%8@^!is`BXs|;PibEFVt*lUnA8kY@~1AWI&`qW}VsW^#uoa%Q1*5Cs1lFQ}AQF6jf z(OY_zUwbmU6IWKQ2}PQtX`y<_q(4@{qJ+H*_k1VFHqoNDvmtL^@A{)BDJxq0kte(Q zApmu279&<~u0*+b@2be78bA*;oU*H&Ed2V&vOrDG6I?3>dzVV-9XtO7SvT8JNBc+Zfx%^xu!&{R>Q_1>%j}?yRZRbPza`k~=cd zmCg^eHC-(ntU>8{+Ao{cN$&!?vBLp(euGJ=2oVhV57KhSC%X1EsaU*u>2+~s?lCjC zdlG5zIL#ldPzE-!tUVFIh=FCR=dHA;bq_wMHjVqYr+>%GFm)IY`XrhEZwU-u- zjjT>2wI8RUYLZE7z(Ap*yBEakW4u~zI#@GT0AzSY(@EhRFfR-Z+&e+$)6P~^44mH% z@x$9!qC-`?3>vyhgqBQ1IH}78w(f&*M>9P9YyOt*4p@T*#I-IePeI#&?DUs4!#DEH z1x!=c86*Bs%7oks&{7rQY6{q-*tTwf>zVg73@mcECF*s8&9XdTyM8mHPttPNCT!r> zsfwFd(7nMKE_$dFG*rQ9t6>`umXftIJEo($>sJF(@+WS}yjpD@FbLAm-G(b)&~U&n z`G*CY=a+_;io()lj4iM6;@MbJae*=rf*7bwIQVm6seA{65p<+KAVR$i@Wp`FY2Qz6_Z4UhWi!WtHp;=ZICoLam&L0JW8MO}SX zuypy$0Ej%Bfgb_cINLDx)t?8 zscrv3TltdjZ!J>&cJsEI_)q2bs_{nqCx&2=3Sg1wkh}BGgp0fsPW@|cc-7MfvqV>x zi7D%o_26#d2OH+!)Ba@Z-Wzv(f2Nss1r~W_U)&dOK>GSZ2&oFqfE&~Aq){mkNtuC* z&Hj)|4_h&mQfS`5Nx0~yOqmBJJjXL|#nmuP3rop}uQF7l&TvKZ9Pv}BLAvX)D!Q#` zn%RD`g8QV(Q9m`}h zyYqS7Wq|jR3AGZrKxb`}+bDAx5`>!1vs%y|JYCp^oLcWwGilS;ZI$fd4DqFA6#ey}`Lv+huH;h?g!xq4V7J z@aGC>R!c%I6!TOiqHSxu=~kYDt7|)5GqOye&wNwTAUzwsRZgcsZ;sUD|okG6&fC6XQkv%{cRyS|Q*G=7d-0CKV8Ym&E7iuvJi zli+7(68D%0|MA?^Ogqii-3)W_-(vhcPg;H{nY~T@DF&#}@m&b<$P!3=gWX6NEK+WecS}~-cq~!+{f#~GmxS^FP>9V|ay}m~v0TH}L6xGw zCq8_98xYpnor*f6xShDi;Pbzq=^AD0-U%<=jhzAd&&pErR!hX9MECgDGUbSw$zwX; z)hn)00Q8M}iCI|$D9gHW`1|*A74DPVM*XCD10pburMT>>Txl81W42DhQxuSk4Gk}& zjBA(+O!{A)y}2WZ^1}v46u-Z!nM(EB3W|DLyL4}dtAS1Rc4N!B!j;z}%C3b4IKW^o z4RV8D&(sWuIS9oB%032vHUAg;cL}^_##S^1R8?S0SM@rW%fT(i)7Sb~wyurO*&;@T zD8M!w`k;g!lv^)74B{4Ho%SDGp&X z@+vbKuP^x6x(XJ_`wDuzJsbNCJ)z3Jp!(TUkWHb3-C|l>IH}0LpKOy4*$Rj~LPv_X z=I1QUwte04_&epL6WG;};pRKAGVf@=v8(?IZ`*;@e@ENMuKqjRd?(i79Zd=b(*sJc zyu0eUJ2l?f8CP$=V%&w|C*@;oxoEAWHsBP}$S8Ib{%u7rf47l*qYmh0qqQGA9I+Bt z{o%FSFS3>3Ht}nFmAx0`n{hTRD=J3#=5C;x4BgZV-~JtDrS`SbE9AdPU48|s#z{+V zpw{>CND*~Kmq3pre?KqzM!$Ia^HB17LCXv4ZuEaI!FJ~=#fiBs=SxduJ@9==vgHE4 z`To0oH(ROn$=ko&OC6Ui#0OW*jPRkx>A38}Po>vqRr~TNDy+{jF;gqvzwoKl8nEu{ z#U`WTw}0`ihTi+cOaXoM{Rcg*E0-3XLWC$TS4>7vz<&T$1ZcTCZ29GEY0<1qcH0nU z9QDIf1@QE~*M?wDGoO!W)~{oJbov2YGqB7rFDS)tBSmxS8k36nD>`2IU1@+f3EPqS zD61iQ{r=k8&<)?gfx#Xf1rmUtq}YJR)9=f8E zgfBl@3&eY6nV6WI@Vi0sp@)B%6+E4H(VEgXppGmC@{UjpXYc;^v>|+d+!sZ+dWU$v zxGnEUgdL6$dhNf*E^>D=Kxj;wgt4XLg?MgTCj00zIOnF@ z@4q);V`nWTl>uu-bO*Br_RBBI#$^4#TN<%rNT6vJLN7qR)8Y4=?*YR*GY# z3e2^7^o^Qn)2wF2=gS|he&E08eWa-rLX|Wv6G7d~yFOR<-^-CZ!IEx!-40qxCeiRM zivHBc1wVXw!!b)qiV7c5d|>E`61I2Q0bYoZ3;nixgJx*}?S#*(CKHOM2e0hIQW(vO zcM#mPT}nEeG0DY;)~*{_rd+TZwpqqu(tx75q;5e4uCLo&O#-XaeFpal*RinZf&P zClRUW5_{YK9zOy?Akl)Um#&qypoT65Rwv@+?SD``Y1fP`4bCo&AkL5AMoJv}mJ22s zF*d+m`~Fj~@)=kBy*^jEJaYqe-Li9^TetT2XF!+4o|Amj?N*P7?=?^HeX|_WSKW>K z@i9QhwiZm8baCbxs>nRH1#XF}?^pY8ga!_Xg<~J<{7A)pnGu1T#d-1%V*2*9r6egC zUAI_YZx{cu;~Xk&bF-Xo#Sbj%VjyWe9o)CC`;*E&UwuOMz$piDumqK=LoW9sy zr80P5X2RGFQH=XxZMTb9_XQ?e3a07+h)my{Oy?!P-Y$iey)iULy$#2W6(bC{b_ei%FWW$-^=5WYC<)?d8)d*_q}=XDZYNS zlzFPq6#ZZI8rDnSEKhCgLikY4AyC9#|F^@<`c=ogW~Mx?esunn`C;|bVscg82wM&G zfKCf5E4!(^`eR_lLg3Psu1~&2p*Mdy=Od*oH{W@zYtx+gwf}#eAF_DSh1s8aKhHm9 ze(vK_dwu)~|7MN-X;{TXX-)Q}-gjE!_lMPGW_y z{#i_*$m&!3g1)`mG=0kcFSD=SQ0EE%nf6=#>Fjs+r~P%kx%<>P{ojr^Yg5nr?R7?Y z?nQK<$nR6{^nVxL6hGys^?UWE`uKm_4kpf8UX%Q<>?hmb=1q%F+r^fJUhO}Xr@4D? zPVH6U;P)kPiyJs6q^mDK8~AMIDVyk-={nJ$r&WIY#G6_laPQCd)gOJ>UYXZD{?A^= Vzw6HFK;0!EeV(pAoBZQi_h~kukT+!Uaxsgc<()*bI*C7_c{064>4EF zE^XVqf3t*y#5SYL29^>Mn-LNc8*G01H}IFc29^ha|NVflymUdLyjPYEeEFB#dFXiw ziOPg6D>pX+-+#Vy*#=ml*)0C=2gO^q6bXsuQ$_~ouikZ>6K;8{>*1hq*Q`6Bd%oK{ zz}wWDJ1`z2XMT-IX=(J;FM7^+$$mV`mewJ`}~zjjN(rl|chQrAK?W+&0I2nyo|21H0LRCta8 zs(UHxoZi?H{syFUa2DjV0MZGW4{eHQnU17Zbx?FdmgGSy{;Tp<-V0Mb+Q1e*e_luz z`;-+qHMl2LVN?fe3(nNm!nKV8eF>wJ4ca21o^*lVi*uQVd`WHI18B~RjxKGZxaFiw zdxUe%k6&dp|6pBqodjQ?L&qvR2tErxW`rY3q&j$W|DCA{_P~p1Fx9M-~O5UiSZ z4ek()%A1c(HYu3vew+5=rCaGrE&v?)$v(H6;o6wB2E4yCk zy^sW`gWq%P-toTae<4}Z1`a{v&({sH$*sl~8Isf{Q*iHi%XIz<1v=)KrSMJ2`{uIi zrNQt8P^{&JAXmh$)joN3>SSC?-MWPMzX7L)CRzC`n8y+?U_G=x>AmQ<6w6+pAzM7? z$?bqfxU*3rSBu;2S=vd$$C-`rB!PL(`i7!*NBAcBsu^!je{=hHR25)KJ&nW48zeO3lU#|P&#Sy@c zRysUAnPc&7H?`gaW^z)W{w71>M&b3+L5jABoe*c)_6ECehDzDGY;OKY_S=*jhk+S| zz>G*m<3p1Dw-Y0&zLWp@Hk{&FV=G*gkLD?mbS4DqIw3tVPuBNwd;r+TAau0>{jY^P z-v8zjogaN$DG`UYEpxO<{`Jsg!@l)Q>(0NSC(TV1H7Y(C zk<2s`QFTJ79f#K+Jy#0|e*#^#u~4oH&+NtFX3l;aY(5Y0pzqiUfvVDZEY+*O&&}JP z+Trt!CnaR#fyE=}TmI?V2Uk*{YKr`INZz>uSW-rt*NYDDx6wW*h|XLw?6dkNJL(>Q zXvnJ$k!A7~wKj}z1^C@M*+jhoj1^I)m}~z48Xe)DbT)2veZR8RgGPGSlP%|mFnXdw zs2k3|%Ilk0iME?HwxhTXz2nBp!EXIAI(v}o{yD7-z@s+qY3JxL=Ys%tjovZ8zEBoG zF!#N@o^|qdAJX))D7EJ=y*pJZ>k}?9CNfth(0}`f0UI+%or8QEYW4%j2!AEn+NW(g zjam(!DNvA<{5E=L1eiaV8E$9c3C8#Q6;XJ4JzGf}05p=+;rYh;ck#UAxye1hU00A? zH{!1zHMY79igj6S(|aR*5s6)9hqiwc99051eiR7EB}4iYM|;z9UsCk?W`6-l#?d<2 z(afv=Vo@EB>%Uh zo^^-6y$$e;b5i7$Was!=k2xblpiKDsxdjL%C>m?Dy{qOr!S@Tgl6uy)Npt}MhbbS4 zSL~4W=^t7`dGGqVP9iEN$1?fW_FCJr)gt$GO`;9~c5{NS((r1XngYt)3c`4ZI=FB0Asy)@Ha*S>iNVC`|}s)YqQ-S=g`OWc1r zVlRLj;g!z=lvv?9+|~we0t0R@--xO@q+3?MDK7Eo1wiEFNs&XcXAs4E<+-!d`j|X0 z7Ez)&IEQ_=tR5>|A4qEkSb~DS`f~L48{gr{MQ6SBG5Htd;T1ydo@1Fk+6S7J|30)n zWGbef3l>%HykGXAWGL&qI*|)(ITw9P3;XUp$lKqway=VM>;@` zy_}Ktf+Z?FJkp|`cNs8BLCeMUCw1Sbv2DUCj)v#==!mL@{{wLQ0Bj^k6=X`*@>)eN zI#T19>#Ne*;DDe=HRIEuD&BbTo&)PcC-MLdm(hQ)4`-_58kg4tM?wqG4{x7*2Xc$u zf>*|^2Tk)M!1+MB=uOggTBgDmrp5*9^19st6b6b>=%1rFz2ergv_3ZcJMgS+hDx*; z=U$dFZe982J%I8GQUzHGvEWGb@|pD|c7UfGudm4pcli`39(do39N&$y#`Ai79Yw-YAAErDLehyv@_mg;)?5m>F&y|`N4N1;0@%Le0z#>VX z=fuTUthsEHn(|LxvDB4K6d8v&sNZ98h=@5jut#15Ri0eAlsRG*eh~QM4GYUB#w1iG zR7o`HO;+3JzQ;iy3Vv{*au$hUI3`(+`F4i&YIN_UNS8HWtRuzG6ZirUsSp7bvhd)Z zH4&ZYk|Os4^Uez@??0d!1xnGjirRxnOvXaa1n!M>AKx?9*$kK%B@_oAOnExIvm5DX@TSet_fEIq<;8*;k3B6ju-H%krU ztNEINQccaDq+{U?4__W?ndC^9n&k+`xMj=4G`C0*1leLAQw zurC>@E=6(O>82Yy-!5H-!dS263h|bjG^7!@++`hLN%IiAAyKOZ1(_Z;BpJdMYpxvU zhRH0YmMb7OmzNA~z)f_onofEAK)YnJrxQHv{+Lio?28E7TJbw%vtgwZ%z=4v;uZ=4E9kg(I3 zCX^N;^IkvW)Nq>5`($%GnatP7L!yGV{bGkWiT zBp^>oBgULQ<0lBYr9!H>nS=H!Q!>H*8%9M#Xh)^(d|bTybS3KtNTzlxS>gn6dMn^4 zm6k|xJawzl%y(GjUEYY1aqxoLESwr%im;St*1}z#Xng3OvMKxwcpNH8tZ?*s4RO8t z;+n-_W4rA@tQmVKUodepr&0s`%+5r-BVcfttAd6=brWF^sTxy#$o+VT&k**=tFxDnhJas}~K$a(QsSDY9D9mTDvgWaC zyq`gvmoeoN-~~SeK??0S5(GRyYSeNKLf+S|ni5kA+*M{el%_qD^XZ-1TfB*TGg^lg z5K`KK`_AA8^DBMrDD|C2z2rCp_^D%_ku$dG{_(-c6}YFJ0-XW%`eo@HH$AmV9n74* zJ#)r~sOwT68D#b*HilvHb4ffs3$Nrdc1Wk`y=#8}PBhR>~J@b5{G8 z$nHtg@c1wTT^Ev}W&rLf4l$IhG-Na2153HPMr&_TYvgjHl)ooEpBW5y_j^0gVvdj^ zbvyidio`o$+f7nHNU!#QX?4i>MY!?1=>Y`fHhim6J%u!0eRv6V*z36mvm2T4P;;7m zHdzojaQi#a52U*1>i^95^}C{6lwK;~*;$uXnqbi?>Ix_PqMIU=zOaomiji~i#`0ez%#1i(9cI8zIi8#y3@up9HiYJtG16$uMBBn z)08|B<&*YD`XU-kLHhHD1@@0p&W;`Bhx(ww6r{??Z$hsu2*mC%!&d;f{RI_sJD%a0{W`tYz`#Pn&hZz}zz+5`Ip!SUcm7t*_3 zabOsK&xP$aAcR}H@QkNhDjl)rxf72*Ys$bV?=WV1=QZDoX*sWijLUi;WuV>T=jk=m z$YBO+-U5!QhHb`9Afh9=u)^Va_DuMop@6B0oYp4eRl)4aTNGRUCx=NL1N5-fAitie zd=^sO(w%9&WqVq;jeFI=_@6jKGvt<+{&5L> zETxuO46-;2?QqzFq(JE^o<|fs;%C{Y)ofzTA;h!}*_YHI&7`F8&&_9+vvse@fk{DR zd9H@-%Yv*xN(uyf$_bgoAG|csTCSfn6PVi$QP9=9OxQ_e|G}|8tm|}{u#d=oz!^EL z8+n;=~x)5_ivk^Nk0G@*Io$^9lBns>3m4Ph%gvU=M3spWD3Pd8xYy zyVd5Ug`Z9D$n{!QWA7g(pjCwv{}KC*q`twecZaEozdwbfqnB@)`n?@7ybQj7saUcP zXVKbig_@Y;oTa~n@Vf&YfPc?~skN2&FWjwT4kVy5A;LMWLf3kZjf;~0bPY>`kMTu4 z7?CO2hj8dFV9C)TsQt0-lInjWXWY4ZSSOTTXRAJ}{S6mrw$o}FF(Ff$J zB6IP$7GHhM>Ki_n{ocNnD>;1smP6aDR;`O6T)V&oRkt_P#{}8y*IS7eW@zS1cs(xy z!S|8daHPOg9BDi;LbC4P0!#ux)ycU_f5Pc6wfXi`{b{cm`)xKVb#1YW@Gi@83n@hG zR%qy~K7&lmA|9JIP1hU1vB#F~_Tiv5#8W`E_eAMwPEtPYm{^sIYpOIyua4Jq z5r@LemUHhvl)bpO(ER-SM2^x{fchIADU~R3Rm(jN5S|Lgu1QHT`;(P6KSBrP1@yqE z?Ao~Tq9PDw@0?Mxdj^KI(dn_?Z+^Lx3^!K8R#{2BV6a`~QR?Q4mbuWYrkaM+${1T)zbh!L zf7~OoX-K0x3S)ZMvsMYt?>^tDW*~I$93C$#>cIpYEM<)xveTg9r2OS!V=5(BT_+^z z*1R{D!*;i%fQif4mTUE8BYc<0k{i}xS%X`ATa3!yoQIV$o`jdcU{hXb2VgugbWoD-Lmkjd9{u;5ZZtpiR6R` z_PZ7J#%j-2!~62cr*>Cg5?ao~y8G=tRNn5ltgh{;j=}nNUS$+i6sbdPY;&!vo$Ro= ztiT~RvtU0_hsGfCv;ur7wjPOdvN9BCyLylm?=%t-F`RHY-NL)?v|k>GYox4a_${S#kpk5A$vdk zhwXsKx=~C-#Bo;SblWZyw9qtJm!uqgKJA3q`M-(-&2**=&$<8c&3%oK)udhr(GjgnKWGdAtRr*pU%4&+PhO%v^R-!4mfPypo&YnsGsfq z=m!}xX3KW+5zA+Lt?@#u3Tvl`56qUG5;L0B%j$(MZhzJwu{>mdD5UmDxijX!H7Eeb z0kk&4Uo0kM&5y6bp7Hk|^vX0sBzk=XKKaz<#3Q<_%LH8_J7K1-Ju#oAN#_BLt!CU> z>3;+{*+i-UvAIAkaFhe(zjQ&ZBk^#x~T|-!lL8k z3Z<`T_7J1_VsFTSBY-nrLFrnB4X;GWmU?*;-e-}$)c^2DC$Zcj3P(gF7O!p%3xy=* z^aFmFJ0ea7CtmyFrWZcGxrYk@kmH0}{A3q<{fE7Iz82SvQ;}-hV*x0RZ1hEP(%H$! zV)&%w;vo|!3#W{#zb{m}Q?cE;1SIS1=V&_0)i~3tMx>2Z6Ta}I|D2(T*ptg;nxk-Y=+heeG~1Ls@B_4Rjm3RdsIY!4P35tc zIE-ClfG{4eIau>98C-EB$}-gKX-=vE!GeEOx7LUtE*lo_i{o{MZjwr^TkUJhIv8;! zG1Egin_KZM&G1uK>CK^rq3*inRxcp z<`d6?n|LN4*w04tX{YHS+W{~V*CN8SFmgPF>w^1`{PEszS&a)JGUXMoIPvIH64OsN zL(vWGI39tCFdFBmD6nm;toj4HNy=dW zUOApF_DcK5U{=H7l@q_{fL2~IVpAmI?UXkdwfs_i#l8IZMBM#zV8aVYiY)BPV6Ecu z0w{2Fq{B|0s>LBHrI569t`s!nr0ZPGe!%&Vw%IU;>snl4AHlS@E&RTse?Kp9-y zeoIrU+nrouEeP5Aj&^3RKQ+bxuH#xHE>g<*)pobr8w(J7YX(ywZ83|!olh$)00hvE z(?d)+vhoU>&-@?}Rj|e$szlWL*h4F{Ngc*Oef?<0z`>KGJJ@#fc<9o!046Qz@}{Gn$WC0+_{(5nfQXUAk>3z&I9{=g|d_7rfO zXCk^GB-T}u&p;6D!K{`W*sFeEDZ&bhViT9L3OW14Cz96k4?vw^>enP;dRW)jh~R*x zX@EZ|kO1wDt!cMy4a*6<2e8-Cs}8)kD8b8Fi6=!T@-uSpUoL)i)Kgsn+zK40C#CRP zf%2+D<5mPld9%v3Hd5hU_x46p8}F;x4G;uywA`A`o*9{zdNjD?(KXC_ME34XblGNe zgqyF;mm*&?r2VM^7}8C3n~naHA|}RrB8v;w(JycE^l#M)=;7{UQj-tU{scg)arbdg)FCO&Vw#13Kl+ zmTT;hVdv8rEX+#)pACOYO>v80*)Y@{!!H4Q0L*^NiVm~Zx&|~}(o26iZcN5A@6y9O zGEY`GwAgwyK+xL$Nqk~Z;{eN(nx|btKT@-==1Eeu?@20HXi8=6Vv>@v?3^Qj5%m+E zEyj`UJo%4a63%pjm%#qz_W@HUVd)f~^pl(FTJ3`o7#2C6>~2iOGQ?Y6w3a{^5nPCf z^qCN-9g&UV$O1>?8$XMi$G?h85y#~yysG-$g*wK8il##MAEM;-w}ebzM*W_AY|o}` zO5|AbJ43$I?PDexA_#GR969YQ*y{+82?dsl*izo1r*-ps`tw_W_JaMHp#4@z@8Yt` zrB%q%qhq7$o!vv%G3e0a_srq~T&%+x}d7z5Q;DxLe1rwXINTxG$QYzjM z@GNR`OG;I1gV>KlZxhjfwG*c+3Az*Fj?Y=(siR*Vmy$!sr=9F$X9A8p5Aa+AMqHU~ z28FP=AAS^K^Cf?hXs`W4F7t4UnTg8wS=jK^+CM6{G9w3uuv&j(w^$_9rD++#4dCiZ zNKW1DLgi`GlmIFNL9n*O!?1pM;0XNjvi{~X{fNUr+2^npga@qbL)-WoPLamTC-6#i z^I+cNED51u%VA3A+Y5!bmaBcF!cM6cTf|bOihf*X%9VVb0d3kjw}?DpMpeaq=LSa_ zoSw%Lx+zm$jrkKSP+_g&j?*GANK$OhBC<1Zk^Z{6GR6e)`7+2*T-tdzek`Wlmt4qP z=w|79A>Y(2NrnCR_LB0y-Wfg_e7oT_(4u>5Z+OLJ^S#+1zwMT-@iz}_ybaxF_jh#} zm_T={c7nCWpIwXAYa|+Z^g4emjz1QOIZ5MQUpz&tpV4xQ_Q%HqEC6xJlR(seB8Qos z!^h+>P9D<*0k;vu(&B)YZK_=*%DmpR4CVb68BFHK$q1m^BwVJXKAJwMvUYoPxaBGx zXoL89-@J0GTn>Zbs5*PSEaN6=w(M8#8D))tfi`64aOEW+=1M}!Dbt}IU5THz)rm|! z;spjZC@>8}Xj=1d0~GuRkjB*LJZNbAZe6N}ai|&4F?_Kl7W{+6Y0tv&Wz5IFkam#Z zX?V++gz3%B4H=;rw$M{bW62dD9$d9g91c+On*x* zK){`YZdq_67wEg|qUc`V82zFSP5 zpwD{o9m%(SJWTsOH4umJ{>YQeRN|#GW&_ugiWjiTZrnxjr@ulTW)0#1`dGfGnc&*ww6aTH&WbQ_l$O1A8T| z0HW0a(d~USb%0g=W8wlX*l9N;&9_rJb<9Gn1?-C!?N4%+3<$pgS||WobVJ14%E)kzS{!5hbeZ;n3%Y$*e&W|Bik~!yq4%-c%HCXQl@#7e;H!WC* zF%{P&@vGmCX51b8zyC~d)8)^7tOI7-i)WjCo=pgu1Aln4tSAl!K=@asXO8HKVsf?^ z8WF^=9!=-3ZSZ5|5_JdUVZs7iZ0q{_7>MZAVj0{X(oVd#F}UR63lrx{S0cpBtGh>FKz(Z zb6=)!{REIV2%-@CG)GHpl(qYzO)RKhq|Ne2-A)e>zF>HZ#3A(QpKj>Aa{BSa-yWcb zW8r3iE^cC7?uk9Qoh)3c7)lUeU~i&X+{T$=nsnF?>l$r+2JDm&H)}*lC$i-Mh!wA) z{!iqbQ0EWHvApmFeVu<=fDQ*H>szEQ*pR}A&JY92ZUaM6iVYmE3jvmCDw{{GMu6CY|=3A6@)rkA2F zC^qK+;DK!58)nS|_qeI7S7*Y94^1s>@dc~|47}f4K-2F-WQ>6J94Ug+8#O8ni4N<^KjJTH(b&nITqj^@17IBO8loA=hilTRB}}ONZ=T%9-DJya6)txIDMNMtyz)=H0OT; zy|~1ib8D0pUqin?Obee@`GCk*q=SK%Bbueww7O#^T2}q=h8uc_8;EkG22<~~IEo+n z0{A!Uo&sP#LK5KCT;NZbwIIF6?xnU1VAkqk)4Z0o_clHzra~rGK89H8{+D1!!Rxr! z(G2cNpIwFWqF82BbUy83A3Hykh)@K+DT(X4_wQH!o*?`TDkmX&-5RCV6nz3%YUn$8 zIF?h+E{J^v?Sa?4(ieI5kv*dy{zu@S_DfTZo0thgtHRHYYd%syyVQp$2qm(`kF8wW z_my7AF_!raUDnSi)z88%850uFG-GZ)P5jn_%Vz+u41yeYL#|fPQk}y6DmRIDan3R{ zLQ2=FL_s$JfY08w+r~{(z->;*@|C8X;HD{)FJ`$+=UH&VfcKSe9AEQTGO6h( zOGiF@MGSkfw0~C4kvBq!mKT$x$%`p#H_$$3oK% zt-bhHZ$Nm42F4#1tcA`lT~o17BqV_Inz7i6t!tU?e9R%trM1{p17HAP;H!5HB>VHk z(|=6`b_gi&6&vVix_Gt3pC%l8B|w3%+wObA5wDhbdn~kE3Q*vyQ)h1ee^uXPsrkoJ z?x5934Mg;uGE^8bInAXuu^w=vsR$u|6wfW#9nw{*=7j$wom%cBK*tTKBU^b23(qfQ z*F^AxQ9O}3KbY54?LdYwt+1bTA|pm)f?xvrY5HCIt7fBrv_bQ(5g_&zHY*Y!Q$yTM ztDJf+OE@ddAmKiux#p|QbqvsQO8@JnY6R_P>PkA7odeuddPU5lxfJT17XFWs{!IRJ zb87wS0tU4-D!9>yIK92^)UNN1G>kn^-sC3yBsuabf|QA`jug#0hm60u(IrH#)P;@gpyXNg9#XZJI_F!s-)5mSg+@e z!s>MEZuSO&vhBq8IEt#A$FY9{E)mD-Bib^{?eQO#X!luqQ@4mK`60&aKx&iZ9<86c zWXfpYW372d@JIx3t(!2?7$Nqd9y^S%nTjwDBQ_TBOxS7DyHk$azWIk|LLkAdaE9J8 zSA`@#OnwlU?n^m|@^I{5dA-Y!q5VBd-%iEJP%Brvg6)AH6C^mih#0^>q&jt;G-78? zgL{HAf~{lSn=XDIRB}3wVFdmgR$YX!KGnW4Vxcx?53Vpdgq`2hSjaP{9nO{vLz2 z1#;cT`%83(|M`A=q#yabCCHGW@%{c}Yk|9T?%%%S;p4T-uvtN}LO9!P$d}LS8gfJO zhsI4`H=+agehLAl0o3n$oo5S$0cuY3&7s$7dV+Vuq~#VSnd9 zqUOhpR6WM;ACZ5`x;ZXX6Uy`!#uy|?$SdXRKXZ1MmHvZJ>cZ$vFvD` zZ|*4O%;0e5s9h)SL7HAeuRc2PpC&Va z$@n4EwbblM4{FFXU!Cg5<>SJH?*h+x0o;iFTy}p+s8O!b#eXOX{`<{=rBgmLEnE^yafZBD31n7R0VYzPn#5qmt|*RTlRTUO0|ge*btg*!4-s zP+qUCn7L(Cp1JHUi}{DSvLHU2F{HOJ>h^#|HAqP;3>VNDOHBf@bBn(zn!DqBOQw9# zjl9F<8;Mq{KQ?8yKV5hgiJaw|N7A|&gC*9DviIFp4ZdT$sL^^BZWD>MTBcrx7Z;c~ z-`zHzW1lc8q~Nhnzg9j42lVa#hvd`1uA$63;f33*{$P;|77ydOWcBC1b)UwZ4H4~V zHt2ixf+he&+u(UJ>XOvbm^oMk(@ovM2|4A^(m8#_kOujl;Jm5NQbz$6CfEZcv-@3J z<8+~#t&B3BM8X+XM~0m;R*6p1l~JP(+y#rmaoe7Gtu&A)(YGI zE{Sf0;r!W643H4_^39T)T=Zu_;B0O+d5veQzC%-;`@``RAPDD7SFMaXFbil^W1C36 zt1Vq`mK@|3+8aMir9NjZlZ7qPe?uPjx_pnly)1xQ0+(}43^Lelz6~X>ejnb{2Y&Q@ z{WXy#eq+pBP_Ff6$zG0_r4Y%WGt47qFyqF~bTr~0GWLUp**HM`)#vOtOLlU^Y#Gtp z5Js1JW78|Nb=AzuKjfC1hh9b20QD6RYhE#zBO;hUq0DNW_-(w?xfqR*`QAbgLRbyu zKU3XeE{j&^tnj*5Rn{dljsGBdwRdGwl~E`veEE9GMvkZ_J_(Ufs~@2)(yhA;X{z75 zmV@9v3odi|eof zS{>m7mGCwDkmEqy{)6-!Jsz|4_0lytP2}o(QpNG|b18CX%)jP==I3Jzvt4VoXu{nW z&u}TYO($yjLW~j+4*?DD=O{yjct4lG1+<;LuxqgSl(pp$^7qJqT9wbjagKdx}s6W&6XI_@r#;24ra!k}l+OsAE^+m|YZi`Aw<-7aYnY4^pj6Zn}R&)*ej&?F9*YG;@zMaeT@8M83 zN|TdC^a0V%&3eH~NIo2)CUi|*nNdlx5#P>{OXnT&lOCuoRP&hjm5^1*tOncy@ocQh zQ-|1I^DmB>kC}nqOwVnV`qfad6-sq3Eqbg8$2TQ-C}vS`$V@hN^`cT7xFPm$X~c#) zwBS6jOd_L+ty8|0Y7*1FxNsJ~&@vu-D;16ST2zF|g~F_F7hU~Tx+ax)O+uQfC10#w zcR#If)l~}7YyM$mkx9v_9knaL-`8@eC>BixX0Gax3r+j2m*5dmJj11XVk`VD?ou%d zSKG8+FImb}HJ$sEX>J!e?V=-NCEu_sJM){R`Z8Z@>Z=x~y)-q`xLxhEuO*8OJ6($u zXwxk8U?umncD7_SU;U!^A^KR@A$$CMq55{}B|v+2oLog#gDd;6s=j z_-^jnTJyJaZ@F{DQF6s2=U$$Y*d7^d?C;%KxQl{k9{=IXgaC4z@6S~InD+UFU>5sb zo0=i*=$CL>GT>ldbYDS8BebQjVzepoHn-zlv<}`!P-@K)5Nw(j(+O{$A6e@_0g(2^ zbsz66jR@cKX*q1(N8RLyb870mCxkNJ1}<*g7`Spre66p(SQ;*aNFm2ISz6-B27+Yz z8SRO$x-!DbakfdnIt1v6ONZt+KpT`v@G-m<%zKY=u(B`qwhMs#&z?)2d-IvYO2FGl zU5e9LsMmE&N+H;)`{(25zX;JkboWM0#2{OJD^(BJF#9C|cLPad0%35RB9)!+-+p0M zrM)a$RxW^6BgKx%%)6t;OdWFR&oHH$r!TBvu$>b_38^@3&Ry3Au69>Y7gpfzsb1h~ zhcKB);HPU^InmNkyv^Lz4UoF&K=`u;8{1SGYRR)t&4gLj@x z_l%gf1~vN_kUYduX?BL`qEi79s+;{xJsZ0GAP1f#P zbPaO2atgEec!9ZyA&>{(4|Jiqdw;Mu10i0PU1&;nA8W`v*L!Ow1Pt&)lHyjP89+m6rT5H94UbAoXHvHe`4qk5@5c2^{zVJ^a zaz*z@TaJm9hBZGTeMaEw-?oEkC9+MfM4ZIjQL9ZrKGn*>LTDHWwz!R`9qck4?&Cr` z>>zoqPun%)Q8udFtI9me^3V@6HSVrp}t&4)>4xp~l?@uG1)8-bJNvK|`b~-gES2qxyob?*31{cnI z;u#~PC3S%;+zy%wIIh?n+*XEaP|gYsa5X_X;=EGlm+X_VxOqKQx3-iSA;q}e(6|bo77lAP?zw? zAeOl7KiyPst_yw8%Tue)F8xednztj+$j)jHJFDh-L(*+=$hZWL?Q^ox1ITp?RV$|5 zpPlA=+7;QV;GS8#fI$RLJ+jY z*8z>RoK~AZV0)T`9rK?qWxi5^qTyYS9Mq@M_|^T|@t7d7E+@-q$zPNSh#>Pb5N3Ho z%akCq_j|u8w6vCCopwE$q74%8FJ3)Ow>v2UP&ORTCe$+x-tYLPjhOV!Kf$Ua(;b}u>COhAHtYpzLle2Gm2-3|3cLE+uvW(EBqDZN z517L?-k2qBcS?qBTLc;fmY+sll?C>TVRWJEk`!V-X7+JWPHx8LCzkcGw>xH0eRq%GYFoCYU8PGu*=GE7 zM)hO$!iv5K*Nm;%D0e~f2pE2*+}UinX@)FD)SYe!a6)>(dS-AdazO?k8R%!IRp>qs z@Z<^9)qm}4`nQSE{ii0-z09&pH+6^*bBIsy04_{ZCPoW64}k2 zzvsq9cru+bWX+ujmcD_F>AjT6$JT9hcd3znaf*AGj5P%z6Ar?yZg2Mx7DVJ%J2*i- zZ1KppCKH#qqj|#4llwIF;KD4qW*uaLu9 zRM=~1U@-Y&;SJTVHHHMPh*-U^;JB2om>Jim*yxWl<2s|v}9T6m0G+tGSHyqJXD+2)bF|0ZKHnKOQl-5|LWg+0JrrQ zW-9@|XMjB)GSG0V#ohnCFUS>h^4iTC{rrQPvkQbyl|z)r z)E<9KKK1vyqs6aI&bsNEFmxIU(}2Q7CLlc*d#yV?K)Rs-HyI0Pc6F;xD*qEAb}+-B z#T7nFi3bOP;D&dg$cI?f{!7#gf4Mhk!uBm3IGstXj)?B&m2-421+F139fd_=etKco z7r5_!v|y4t@@ln(=CHT-*~5nq+bgGOIf%dbd8~$;ND(sj3|MxFinkSY_p|kO?0(`( zg9K)cl3yx1ehmwKiTx`ij&KWxM(x(EA1LAj*}T@HLa_5J8i8jZdIG7 zAKvJp1itTR1h7kagn3!S%7}&mn&$zd26a~o+|MTbx7KM@iCV7hH80E9Ii)OcN!+4J z|E>0wYNnQ9)EY{&0)Y2oIQ&TMSU_W07b2sewBl9i-HjUs%sH6PHd5WgIbSoL_{`KR ziv|Nd`sTa(o58RY>+W;`FH^79?Acn#bORw1q~S&k>gF`b_TgOX`MNcLMca17#CDMf zYI~HDGhZjZu5+hoB00K2)eh;EWWMIfSa5Xq%fsw`EMeGN0QuKB%K-Sr50kzVrue^( zWPo-8pOCvb0+e3E>af7~xTDcutNc+Xp7X0#!&{N;X(#(3#JK+M9`S8gtI@{vKF0H` z<6OeCOUTFLgfbv1>lDyi>bl>)&UKJN1W8|+dUOm(so1!p*)|ZYdtY{fHW!ZAJcT)t ze@AUSo}L%=cv?oHxoNmPaMTxfuQN6F)|Xv?$SfzOt_1H8`(OR?Sh zj;8aNk6;`X(}3NFskg850M>CZd;;X)*11gB)_qJX3}YC^u#0+!88ai<57bhx|3FTZ zdnGm}@G4AYUJ#nu`N&4agId&+T+SZC`od5T0GR%#-j%|CrKr|p^JHIMZQs`uBUX5F zs)^Nzx$C-7Ftr=hsA1nPS0!3|DaW2}s+z$97;LK+7JyF&{+(uU`0B_RF+KKO?@otF z*pRNbClikWXA;G|OGg;U&(!GvNW!$=uNhWjL(@;7I`o>;@;D&xZ>% zyj;8Qq7e=l59(nAP6a;EMfa+9N|)ECDUczq?Yh#|DPqe$C!(&4az!&b{$fx*GU9Ke ziJQnRD#wRGzAJSmZ%(Po2~bXD+rXILidIi46nLLEKV2Bd6AHWfulkC!>X(la22m0r3&I z0@N@t{4jG@k4x{$pdmBhaRE-4II(>vx5g9(T1!IaM!wo|u!FVbWut2J#*2c2liBRL zR*h)vrzy@UaW2SZ?}j`5d)T)x@Zi*5hdYaK22HP+cQ|Lw?zD}Wq-%7p^jus6EBuB~ zNWJU%D#!4ah@DoU=ZXZ*{(G#>!D6S+Zhj#`6S6vAx7pKQR#hXLva$ISK}hY90w%kv z{E_P1+?mC<*t`(ge)AhPM3fY&1aKDJFcAs3stu|^I~1e#UK8o`E09S#LUQ*qt>oQA zSeX|N!29S*T8oDBJ6r@ivlFt|HdHq|b$g2ABOUJH{Vu0mNZna&s+1xhiuNW4a%hO^BCXUv5QpV}&zq-?PJiK+mp8==%%9_#fli9Ioo&Uh za(}!VEsLldS?NLXU<|~==`)*OP|1)9g{vQeXSxeC9oov`YtCSE5j)DBd1mwq-cB$t zQ0h9rqOcIC6tfsFu412sF@I#2I1!*=Z91X!68jhN1}C06y8Q)NW|AT`?BBFKy{dRR z+6y0Gb+=JJzRun!LMWrAayv=M5OHwhu&)aw!L%L{+zACapmewQBof;FiG`y_J&zRl zo^7t$sx;Zn+m=I7o<1I#=YD1^(Pes7n;0M)p9E}iw?p$_zKplUC(F?DN$d;COZUxz zeJYXNRUXD-K~I(9%F&B3G~!8hb^-=D`(R$@I^~QfLw`S_+WeG9<}A=vALYvDdyP1> zL77$w>G|4>wlYv5zbSN<62#3lZ2}bxI94N#Nz1im@aJIUV{u04UI{3x;0TKzpX}vu zXNH^S2P?WTvPm48ROF`+nFs6pFCf{y2vA?mWxqZZe%vBzIBP}+j(yx^ucku~5>O7* zNZ_TEN1D&vf#$NHjKOZyu0w5{K59jBvv=v|)VVrPXaU@O$kNW5Cr>FlH$p5wxdb@W z793A|gtO|=js@pUEDBXKBF-uRj6I*OQVWcb9zholBut4&vW ztuFL8H50tjyQTnmRnv{gP_?d7QEPG$B1H?ycZ7#bq<+y>czk#lJkwb%HG2y|=&6xs zdMtyc*c`#&cNalPvMkLAWuX)9#sh`&eXGFF{UlOc zOb@&5LgF*(;=mL>wf3WCu-Zyc??iqYLNc%^QT8e4_p$__nN+8qQ{QS4X<-+OJ(!{7 zH1k+j-Gy+zKO9=d+!$g8@~6rM6cECpemw(i+L#^;*xfe4g%+Mko<8=u?gh?zN<)`U zt({nsT^7WrgWli7L}Qx73Eh%12V4+C>>Jur!1=FRXRHOuxRxv>#OXik>@Td&N>(V{ zPA)cJ%L1TvK*^l)5M(JA(AjuP;VXxFemW$2?#%6C27;1BaA{}-9kZ(THJ)FNn%WDr z?F=YawSqO=0=hl1-;x}IqYa!Wxv}ugr*|Q{F(R?FhY@uWoR0Xm_>z&Gxed8M^3)JN) zE;(JtCaoMpjWi~{x$t?B5ruXi3F$YbOnZY47Mh|ao{{+|B8TT%%tX{<0%~kx7oi=a zAnONL6ZblF!DBWb$zztJzXX1AW}Zjj(uRb97xU5(gl!>yS8tp4S@4|wy))_eulH~H z8zXa*&gff2YE8CygFMtSrj?MY$jI(3J)sSh@ILZM4CMdO_2q$3=l}m5-?sf!o3^DC zvT2>=K1X3&M>&Qv&KSylG{iVUL+!5QPK05YTq9(p7&l$+K@5f&Ohq%sG^|{iG5lUL zX+OK)-|yGon)mB?KA*4W@pwL-DAC{(y`Wo)EmdIWo+pUtsWFGFbuUhB!^;656OyHEgEp4MR0ewKT(PG$p;#$$Vn>C zkwIV;lX=e1@hoKjNvv%sKvh&hVc14}WbcpctPkptF`=^WgUWyF|Aj)xfgeTUmf42= z8(-L%&I_uHI~SE7SPvx@;*OdyS-xV*0S*spPW09`RfbZ-h@WrDqcYedR7~T-^$Vo+ zGcbI5NI;&eL;h@Ia`2fcj=AgioyvU6N}`9mY_)$75k1o@&4^KSe*XC{A}}t)Ud3!3 zXl&vj!LtxmZk#f>hO|i?%xIuLv%-=Hd=R{QS41gyHqdNP{KC#vCr-0$BcWF#o}j3{ z;(c*YwP%@k{dqZa>8ToGD5wb4GcZ)RP%^WuO;K+5Mn1jO(4IOHBBE%*wNYQgIu0mW zu$OW*kc={`+)oBy5n!`W%MAC$Mr^B&c$+|*Q|DP;T_~yjBn0`Qg4>H_jbs z&JP)BbE}57V2NdnXJswohN%q;>q|6luDty$ zNBBoKWWWqPdS`-81Spv3V9XdCaT_tCC-{jLW~PHhdGOv z_`v7$@l)@NAV&trK*VU|k^f@I`9|1O;FtT%eTQ-rlt^S&?0p2)uFl+d&ea;B?WgWn z#TlIi?Hg$!&ASGLa{JDo!VHwUOe#%+iW1KGRYsP0K?XzUm) zuERp5Ou(J%>#+!P8Duyuv17F|>ZBRi&g55U9Psto<-8 z>>GvL^VED$?{rV~y$&V*6)ycxCY={^3sG$*!BbWe|v*>x41l^;|&CB^8yuT zq3Uu~7sP9E8=2jY^ZfWxFL9AETEt^5QX#1TE_{3UVcxIU(})=BomaC8qwF%=e@uq+ z?F;=sXZjXe-zUDm^6-LJ!mc+sw_dzk&&B23UvfFw#S6xGpuWlTFu*MsRetoAnh2_8Ymh!AYOz3lufVH zieJ5Ijm7wK3--icjvBcR3~chrIYT`ZCqq5USL`5QYuR340_09f!o1_<6l0Areq4x_ zeX3Cv{nGf`@(PUqOv4%MpR!S*{E~dyuQaDDQL;3X{|b2y~OV#cQ8yIg8Ytnx-Ppqr#klDjH%Ag zgF;IU0Qn2*jrk%U9gN%s@*c6ve5qOXmX>qH=PrxOw?(_h4HR(KPoE<`q^`|=F|9#Z zhB=Dn7G^Jb;fxno%GH2E-0MD84E=%Ia?+1|2;r-3p(5&*1uRid z>pLDJhZ7*V2juCWbnP6U978FWZ0L*sF?-x0cqs58rsA!Nu8Ss21lhkrg&-NyAX#=% za$NE&jCe3NN3K)qcoY8_B>v>^zGL5<2gzk`##aKNpK{hXEw_gt${(}1b!ATtTaHd zg+PW^{!(&leqnaHdz#bD`afrcty4rK>T)LZXN1iT%3CB;%4F>=CAmj1&kVkz(+jmV z{%Mwkwc+6doI%j(R&OcYkKca?c~}H)M?Dd_@pzJdG%%v4SvujvFs{0|A)a7x_ZIW> z*+j>yk9`0x-;YO$y}A8wGYVW*vQQ4 zsc;wW5pzq&+h|fJqVFt~PrJmI&3~OvN&UM|y!9WH%)2M{+$+m_{76MYTN+h$rXz`P zy3O8R@%r`ShSrn#d>o;|U771JStSqU&7RGI#-dGIl$qHGYF+ZyTV#jq^pbh&*CjH+ z5@XW6CE+M^MfP)6J=B*aB>n&;N1yOIe=TIgkF)HVLhDB(TRAny*sf68X7&H)p!oR3 z_s1X7Eo^U(*@%u`2q9jqfm0V*)J!Ic;j*ysl>Vib;k!8^Xcjwf>pg0ej)M{(*YUFWhmCIf1&|!GCWT9 z;|O2HA&Rtmdl;L(W|cE0H?M>)C1r{U^Y#-#^^{T?&dlt^86=N##%Hx z!OiZU>%25({<#x)!E!@NupgaQU*gt)k(@?A-@^hN<_UUQJCw|A;lL~MD6Waah zL(vmfD@{}x*S0$@rig!g%Xf>R3bRS85Q0h@=0lQNr*rY5zd@95y@~P6m(S%4SBHsX zf8UeFG3#6CRo@2*`-)I^aaL&`ocH7*rjspzU5$zcM3rYiCEi(M(+~KjmX5d3Gc{RJ zQ;igBVnp^gyQ$8%o2!Nwsn}8TAu=yQ4}HoPs>$?d!i{T zPm3vT!WDPQcE$2n=1{ztgKd;^E|Lnq6|w&O){C=t8daAa4ptrY8L9(uy0(qwWgC!K zzh(yj7Bw24z=*12Z~SvjdIKG=Z(MEd-N zGhegzP{1RXq2E@ZCUX9u{G0{Ifm@~zcVrh1skSlI6yzk%;&HnMhv&0fU$vqeyKc~o zr>ngBfj5G%ikJeyDzD=GU*9Z&hrkkWv#a-g-ZjNhowU?iBwxrY# z1#pP) zK8qsdQzazYJ{eNHh&p%Jmx${(2ESAsyFx@8v296f185+p=~R3FcRKtAtM7~BLQjmb zOJ|cU_+AJKt46O2(uz+x#myyXsu6C6&jwCkFZ>yL5CU^m4rS`v-*4mATqZ`S5d#yz zg~e^;FLX+VTYeQK&^-FQUR}jz`^t9c{LjAi6H3QpG=Ui}-9*v{H-U;5^GS?u|GIJq zyElyc_w|%oz(MM%GmXcG8el9|#2^*I$esePl&H}3*)Pvpw!hiK|K^wc1ttyU_4S)? z0wI?G|qIDbIA755vEgS_I16{Bw( z4LdCoU}A8Z=erdx{8^8$9v#5hLltRNFpDa5G}ZFt* zgA4H-r6l;>C>#ml$*gW|jdQcvLZv6 zznB;DDAt5=n>RAg0=pY5&6urcJ=movsrl(9D1RNRBTR2hOY~M-Y8+&Z1644m4ZB~{=4a-dZc3K83`2}_)y^R%B(1z?8OFy3xndC>t4uu_pV;lI zSc0m%$+kroSExG5X;*jK(T;&#{;G|R)~eof<{+W)uaDpT`tiDNA1^6o)>Yf`c`nQ9 z^wv?kW-6%MDMFVnQ%0SKNnx$! z3Zx4VRWtllx<6 zNY{Q>Qga5ohz&(DNG1vLjS^D@usqSrTUVCS|xK6RwWcKO$6^^&T8&y)ToJkX=>S| z&yy8YQ;MrW>PYd*kR}#76pcV!@SXG5kVN7C@Yy2@R?^JjHwwp9eM6u zEpFw-swUIrsinRx85BA%n;e$w7X@V$n9?AQ!KpdxhATA?5rZcXwV?WoT@_iJ3OU@fGh;(i+m3YY+5PVC%oPxJ-2H*xkfV*fu;_ z`MAP|<&Z>u%D!vmooraKbpl7PIIne&4zu1cib+in^bSAZU69_k9{d#Y9K+ryOw`aJY$SpM_J zJV5;wfjWq!S5?iPGiEB>%yn}?a;?1*z@DBof&XJjj_8kGK@lYUqp~MjYfO?BKfb-$qGEOK)ORU&-1>dx=(qUJB@s>> z@6<|!r276Kz8|1uM{f>(2kID-c9B=Lt7g3g@i#MVAIWa4smxP@_&?SM1sv;Oo3%u> zSdI>oUf0OOtBvSBB}@av=qFTn>m`h;Rp#>4yj3)}{6=y@*P?*Z;F~o+UUifn@BQ*c zE5I7){nx)KS}pJ9J)bQB@n|qNhmg1m91q5Oa3|M+zw>Tcy>bt9FCA8~qK2|{3>qYCWY!0WAGV#?G@Gt3hJGnBI(#C_ZouR@=9{fJa`M zJ8qwauMSx$@(27z)#dDxE&Kq~%pN~N9%meP_&CEJnNVm z&M%iqgEOjzHSzj$OBtLDYU-Tonj%-KMLTgSz3b_j#g++I-g^+Uilj~VO17+&f9QX~ zkC-7EF3J{S1JQSYy+=m-6R^w&k%KaCx4$J}V{k?Nm4nR!m_#HZw+ zcu&6iMCO3}w=qPd%cxs1$M>{zkD{Ht=8C%a!Nz@oJz7IyhV&vRRXn5nA;~TSxCszu z)Ik;}MV8^r$ZxBG>qa|C29qO(yeBg{*;leIH*$tYQYTbPHfw7i0)zn~plNjgJx~M9 z#jp2`Xr)9pc08nxib6V{5*SWY`34GIzEl#`-#7Hks`-K#R=O>m`&SfRNDvH6ar^xf zw#~|+h!z$7{FPmCIHvkmSz#F8t&rrqx`v4m&*1Q-Vd33&=ieK zf8JjQw-^bn3}2D;wm{PMcBB;KfCO^K1Hi+j2oLVaRIh?Jrlcd2^cmL@#9vXANYdc} zO`J4p|KaC>8`uSoCw3|qHBX!u;u+281amq&+rB#+#ur8#7v<$d?}i<7y8ye#*QmKB zTivfBU%zpm3M|-|YX=@`72uB&Iuf;X^iM29#e{Y(85#I*hi72Ugz;s#Wwp8eoo<^w z>J709aN}ROE<_07YAJ9FX(4&N;&4WpdCfpJxD85Re@NvDzII3xH{oArk@dJmp8Hl) z5`hS1=Jd+JK|@OpRvg~h4Kb;qVVJsE?w!Nl@RE>YjReldxw+#oGUg0~tI$IJYqJu< z{o?Wo6`lo}8srwPNuy%EJK>K9#EEVlf|xz7pB20MX_~d?cEjWS*>~Og z1ci)+5Jp1C--uWz7#RQR!SFDrR9N2`~;jmwvu9#FLq9E5yEM z`ZKvrU&c=gS&;^QW8ltOZH|)2;gjpXs=9-C8zG3d!3=|=DnD#zTBLykf_Xl%io2f3 z1NEA0Bhvn7WglWCK9$bC&$Kuyw9kETAdR2S=AQfo<#QDEE{9)`CGCwZnGiZqdd9|= zRC*JaGu#Fs?hSOclD@aC_9SVF_w~lni@CGSRtuX_JJJHq zOX8^0ugp~-^eG2g<{Lxuuo?K;e0M7A(P`#Q`M6d>Zw>P~p>gy#{^bz^#oCX>eRg4e z9GKfA1$5?wNX{W?^T^b6CTaQkjX5kUE*l#O{K)I7{MrFOv#}!#q<_EpT6cxDOxVMu z&W!c~7@<8HydM@H_E_m_Z@gEvwdTIqi~ymI`mMLpq&K@?J1irA;TK7wFPchDg^Dy7 zQ4)+ADZRWGH+p`1sD(=OzDu;voz)qsL4Pn@1eOve-RFswx@|pdnXB(Ftqt$QeE4Ir zV2M=he*$*`W)DIH3&@lbVrkH8Hk7PMC}5AOdrVcJBPEPXJF`DK2S!=A)9ayF&HJ1Q zoWEtJI9=O2sH32zlLHEbNAM)~fwxg#^l7=PdQgM?rC%DNXV*VsTkEqGJMMwh{NM4Q ziKVJHCw-D?p>SftcIPz^D|1%;Q{1{ST1e>l5iTgXs{E%N^DFQ_&n>=q3jempd!~{f zR(O}R{A2+EC0c&JEoDY{-~bxyJh)g6F7~fdd0;7VmgJnW3M?1T<34#f5h8&k?wv+4 zPT7;s0fEK)%ghaE)%IP;Eg-}DBa&BHxhI!g`i5DLaxf54H>&$_^-cumN#!s@3yyp? zBMANvuIPNXvv%;x0vhUha9fO+DKSE6cRgCG&J<0$}qm!<)) zp!Yhr?spT^V_e{SP&C$q)uH#fAxl7py8J!g(8z!==pH7zWBmOe%Eyif9RSAWg233s zVelXBm*a#saSA!;XO~K#9}>M zBPM8ep;~`kTl+3+Ia|HsEw(^SpMP;T*+H`cxG3?6yAe_>_TyiXJFnIWBQ4!Qi2#gd zkm$UZ;tIvK&TNeKX6Og^+hg^Cc_EdmWc*txmD}==x6Y}2lI1`S^D}S;%ON87GII34 z02|}Q7f`sQ!hoVK27TrhWp!o_qA5pyzch@Ka=P?ajk>hr~_MQ*vbF`jp_3x7&VV8Elw>m3sN{4?9(!=3jU-+UYQi=0bU z=A^htsHAXautD>uIYX?F2(?&9t_X$Gjb1+QZwtVhh#bz8EU-m%OEL!R9y#hC%9RK4 zg|d2BUU3rqIoy2?+4m8X?vsMcCl~mt(;IuySsp~4rqQ9X(6@DgqpPp~djhPb{Gq5P zE1aX)@N4yUsj8r}h+7(#KP#((j?g{+(OR(il0 zxP!yS!VONb$`L0Fr@kbZC#I>}X|#QPS9OHB%cY|gro8+sU}6#u)YD-hjtQXBOLj(i z#DF|J0py0CS_Pl@lAOHv?$W(&XDBQG^B=9MvEmTPBLD#&g8Dgo>5iuvd2b=AgN$ST zK`ZMR1bMa`Er{fm@DlTR9as-ClQZJo=GWLCbvO^8;kC@hU6xxwKH~yftAWu_VFd?A zuxV=PdN=>|1geOKv&@}X8qB~%DE-io(uj|(X1$;UkVmq#P@{JCu8knPR%s)w`Axa& z4G99QD|#I@$3Cl9Sil=4!+7TslN$DhGmq0m;RqpgVll;}f8dokcVo%(;^s^^Ucsc_ zVQ}NC!oPbvBm6~C5q4DEr1P;1<0hoN8U=;l0%bw*_Gf3}{=RYc9opE~k|Xb8G~Dz;VtM z%R|yn$B$kjubY8BxT&~V2YGm>KOoWt+AwE2?N16-3Z|8D#-s&U6Ju`Xu_4;y zyhu)s7~54S4lq+b1%Q(~sKa`HiHQjvsQVU{yGG^|3+~Zsq8mopQMGN*M zfak|AqbscEV$5oe43T>lLGaMD%+nfNqz;u-woF7EKZ|ROjB4OrEaw{YU-i(HGJ!v4 zj{=%wS4V9N+u}H;>YjG4>de$%`$*tM=>a5MEw4FoJ_a;)A_r1CG`y+u&>?Y~HPfxU z6#Mcmi?V2C>%b}m7uR~?3SbK;tqN?M&vzS666p&Pc;Y*5N1^4#j2%0%+FY#kHrMB1C~ zNzs?HXao&x%jdnz2IB4^DEbEwoE=EB!JrCXFw%4)qz{?PY51hO=Ke7$+z-kM1xZIQ zVno+SXde-^X$C>6hr1TK+X0V*g(qswtA@Jswd;&`0AIV{OB78ImYo@lqD4UKT~aks zG0~xu={Yr%_PO)y!4?hRb|C!PTHzk$gj{+C4Q8@5 z=ioK5MU}~Tf1JOCA=%WoD>BbrPkOMr+*jR09FG1l!I-;}I~o>)8a2w*XNUCp@?*}Y zMr%_`?>K@wtXC?8=`zgl4ke+K9w4o*>xPBq;-YSm2cF}&*F$q5)BuXtEDz=5dI}Zo z!uHSKob<-?`4!yW04y_~Ew59KVUH1F;*iQa`Wy_y4>xN_y~6fu8_5@cqz6x|+8IY`H2Br;}w1LHVkG z47DE^cCR$!&0pCq4`KaGsR9Y~?iwb^&OQd9+N^h*uXJFWG@PFgEwo$+iAk85_$fC9 z&4C4wR@5I=%`GynH!<}MmN%z{$#c%e@yopNy3`1EqLPA1uT5b@3Lvk3a#uKHRna1e z^4QBMHl-mJgW{x9Wjgr~f?t0w&4&HRP%{n;_?i*QSbjh8R_GWhF2qp(%yq6xU0@WH zU0fB8`pW@IX)Oaq8xGOEB?gLope_mRWS`v&VG2-6)=|)+qDH!8-AMpOYPuDn^M_80|Uo&fGp`452@nbdJ{c|s&o4T zX@ogn|FhNxE+H<#{iXnczx}^VeCN#jb>`5|Dy8>i&ixS+39tA1SWp~g)sL!ab^WCl zMgxE_ciV+KaD&~P@)I%r1d^x}Gkb&`Od2NRu}9M|$ma`u&|{;hA}pQ`0UEB_t9bDV z&g!K*0B52o$4}{ofsl_L;56+HTD?KNl#&1u2~u)e{tm#`?{&0RnMw|q2rcI5FI%`; z9pmhLUtNrO?Q?>()~J679!VMP&ej~#3N#&`cU~fgZ8W6nX}}p$C}m2Zk98DcZYh0p zQlk{G&{CT-dZPQrQxPS)QxmGCMhHb|1mmf=VGZqV@hWAQe326l!G@MqqFiC-LT5%i zv2A*wxuC0<>ygVrX*`&JIf5uOT4NSdqR9idTgyAK&)GPLI7j_iSry!XBn4r3(Uuz2 zxm(?46k~piOiEod=kv<`{96GxC2*kB9Rq|h4o%IcXfdGQ59HYA{;9q!rZ#@$#MhGS{AT`J^Wr^Qsf)_BI2u z7D%l+4OyDdQ1-+&(j`T`E}mzYV}qir!_NTUx?%qbWan_HB(kP^lRtXz(8WE#%&x(f z`E3$>e0}geU(Wru;{UEv0PU+gEGxn@p4$_jhX4H~&aLwo?rTYr`nUOnvVPJ^@L4rttM_()$`LPn4{4SnV)ll zwGEM}9Ov&u=Qo}Q?60aI6#w2|d-NNc7xb2VJ;tJU(1Y7& zSmD|b$OB!V(#}nvyEH_QqYF(?%KQLyZ8fssn%^mFWjTol5UQoG+6=>vbSt!01hVYb z?_br}^zBG13yd?MzCR(bY6KzRO>>Hs03QiJ%J?K;k?&|@dnlUSfAFS z9i;Lj?@KXZ255gh8A-Z_QV~zq{X&Z_IPqSQMZVFH^rb7aQ?U=xEDI} zim*^_twcqRM(Z5Jl54y5Ly|V(kvb=ue<3o6_AF);YNo$^!rcwcH={Q$6>6X5zolV6 zrWsn0;xMY|Nr3Q1Z>@+=0I!oD=P0aV>>V!IqW6Jj zA7fRt-tbm6!yN(L^H;BUzIU+?a)^l%A{=70<^}?{1nUibqz7uit zk|IVpLLq{ha@p^!oyVuK+rG*2v;4lziP%&`Tb?@S`Co`at->3a|7)R1ziUH=9jIK9 zvAu2UIn6Z7kc$AviR^dlDrQILw`$wLxaNo^N{U_vfYj(N$Im@a3)vH>vl zCz3mMUmqCWlgGWZDPCskg&06;tD6}e zU;N>Xk5d{bXO?odMjbivbiI8lSilgT1^5e=CG08srH`Lm#S|i})7)WVE7KRK0PbsM zLbU`_Tb{NB@0XxHo000$pWeM~t&^?((R=YJ9UIlpcpZ9%cNmN|rS_QTuQq_$h58Op z&e0F|p@gqSqN1Zb?X82{(m~TXgd=P5Ok4j9@nTP||1(TTph?&0qkO>;aR=cA%-_6~SFmE#gphtor$Z`lJ z%I9$9Uew?~Pn@G4=%TT^F$UnkZ@_yscTPj1P8e0y7(<1CeB}XE+#_UJ?EQuq6PJ^+ z(%W16;nKghCg_Bo*}4%~pDAqssNtR^gK@-`aMzG|`$XGLOyPR!E{oHR{T&`)t)|q# z*VoNpFFhWRN@s75?CQj6nIU+H!-%uSIsJi7k`?ZIGTnX7GY%)7%f^)B3Cih3%xrnX zkmNQCYIbmfXwic0exuxu5kia^slgO5g%MABpSb-I0@&DJu?UL5WlG{4YY+TbEEx3( zP`*D2|D$t@OHZepavFMji3iqKk{SJXf+j|bdCu4RwZ*Q_#1&s6@bR`;{* zN!ieETQB(M)-QZbE}V&o2Z+*!B>=FlkAAmlTm2#1Ddb?`4pKb6Is>rjS;MNYQdI0xVX4N&|JVXBo5?6g*FiVvWf|vV8 zd(`S6=o(()M71fokcRSX>K)ezWYozCJCAZO-Gg+r>FpWay_at@jmQpWmWyzwo$dnp z%}GJ4#X_R@do8#4L{sVNoJcZ+5*GB4kh+(6O2p5E9Hd!xGuXFr-{q_^?=Y)vIJNq} z4tlOu8KAWR!$|YSMruqnYG6|6h`loPP+pwei;zP9GbI&Y@RhTwB9dByJFfHz-iO!| zk7&mrxW-_hYhiLZ0hyszOV|vrl)dUm*{7Su5d-a-XG;yLEPwhY$d^I4E@0M|*lv-A zMo#YG&ZSE>$~%+6hi`q+BOkR_q8{G<<`WChCiJpI1mJH01C?aDYJ1_JJ`{vTH3(R+ z5uhSEYZY47_HjaE1+FS9p85C@k{MIpJjEDxZA;^Wk-%6bxe;w61mp;xd@%MO-LI{U z{6WjM1`*fl3C11}fKOL;pe@#N6HjL$;sFt#K(H_G^Z*oAXoA#BzKx)y(285($B`)K z5w~_ZguB8=A`}f;mjLD6DN;RXb&aQ=GIg~oORZpzF(S7>uQv|XfE%a|dxPbClI*4FC# zO|Gv#1HFngqxO_gM0?UmjffWg$e*k7DW6~-Iq5iez~5#Sv-7IcKfmG>!`%P=i=fMv zQcQ+F9hh%m-B}sf`oegBu0&3 z2Hs(Ey0VvVN6Z}I+U{Q}{Ov7xxo~XiYMGzHIkv9X{8&#hJ5KoLFp1NpeKk-gF{Y@Y zW}mBNFz3X|SrozoyYs5j*H5p+sX-w!fj7sc-;47b?7B2etLole+L+|tjmcJ$TAHca zd>i<2qGT3hw3D8mFkk5QYI)&gd$PH8ieiZ_fg`$x!a#ERk)cXG>zD5R=S2aq_542Q z6Q7MBGMmGV{GV(V{NzLgm&YP+41>nmqiJjgpFeY@QhU7;(d2wAj9_R+6otN)v-J*AJgRykUQDlm8` z$M1pi9AZ^0>+U}|XzN;!=tS55u|kj~lX z*!3Pk!b?Yzzl9;?vM!mH*53_RwPV8I^_$=)1T9?u;+Fk;2_Jgg<^Rj?yW{#pP~-_1)!Di%OmQvgE`p*stv(A6hFgt8t#V1AnQc4!F7dJng z_xI?6tDw7M7cy~P`SQ&!y>PwyO#rgv>tQr01xWQpP2~s*!%}#3f^S{zEpJTl=LNj- zH#X{Ed>m+fR6pd9GkfdXqV}E^Nh&cgePA79mTM%v@1)t8mG;!*w zDSCGOi$#dSWi+{=a}rQ~ah46@Q!djCN+l7UeUk?#he%WCqHJUd5bqokn9<2CTm1$LAK8PbNo2S-STc!i1J~HYPc~qZHRFg z6ttF-HCwB5Qe5-va0_*wM2O_sc~wS*h2>Vd4=ux*R_mx2KnqH8^#2%CdX9|ZN|re9 z-vKG)UgXoZ-d%rQ7X!J4m6qZy#kH-M2&loAj%?G$THq_ce^NG9QI6Om{Ek1_?mZHM zF8sN&q6_bPfXRYPi&Zd1eLtZRf2?5YE+CVl5|(UbRtn5(T+P%x=6h<@Lc|Tp6mdpm z0x}JGaEI9-iqA{D1Jqy1yIG*FH@yG4~mTPb~2V`fe1a#vQ-$W|i|8#5OzLq)4 zYT)VF1j0hP7EHM4p|6-BX$+aj>hR0usvf)Ipc66y%db*{`)gBVJuR-yj4ch0G7$MJ z`Th%Y%D>`g_4#zgx8JwkT$Es8qbZD60`7E%0dr!-n1QPNH+MStD!q`Hl71i4tQV6W{$I#m{+ea{ci}PB$68jkpfnI1ZDu!5nslz(P zETi%x<`ZYdztP--<*fF|cllA<%5*BrZdSSYIA(Fu3BJ^Ti!l#|!)mO|NYRMSav6oW z+`=(M#uq4ZL~AOe0O<_vuWzFG<(A@AYuI84*S@zAr$K3rd^7jcoU<&VGa%RfwliO? zz-3JHx)+>9S{aAa=*?g_;}QEq+@E#hw&~5gXF87f)v~dzN8<@lUrKALP4W?%@Un?)#CVS|rY6dDpL zVZhkn(^^tu%7g0q!UI%&oWumQuOWTZv1lRrtCJ%QmXwq{r1Nd1?cI{DuX5=SYdRngtF)SZ*_!e#t}n;$Pul) zwz7`NQA<+wDZnqD!vR~znfs|zl%-2)i0Od2Kq{CY&hoezvy*cVm|3v8$}5#bC)m|wjE193B6Cqw|HOVJ=duC5Hw(-Y&T)iT>L1K+s zZSaRyU6ty@bZ%C_$O|a4X8Xfet?~VQ>Sq49FSUm1*eizMdkOF7Oc66jl4?cvra(0^ zPr74=ggXQMi^^1x_#Ll0oif!`IcDo1SQjD8VDPL19L?`YPx7||E`w6|aMEoMZQxPi@Xymz}RKFnSH z$6N`)DXJQKq4w*-D3l}uR$(xxGYPd1Cf-)5a#_{;de>q(gi) z&3T_KHB?P<0idlQcs3q@xY$xRG~q}Xas56r?*LQzSIKRuTw13f)~aZq%jt|?!K3CH z)n3BN4Q#Hfmm2dP1cWbw;a&Y(u2E~dJbWFe{xi|j=!h)qu`AaymA35;&?@`I38!Tn z@2TWbS7UL}LhHxs3=x}qcb$wH3p=k4U1$s*uQYjZR58>s}s^(n18yUCO0xg3!83nloVj-9O9Spr% zMt_o~)Xhe`?z$zU*+23W)U|GPyB(urdN+**@_H;H^PWeiw2?Q%xZ2uT?w>TW{NY5; zn4MmyB2n>t7U~U3V}w0&DysEptL#s{$bJZ~pZ+r0iX8KwGhu_8pb)r2Mea4`z~rMp zuDlji%f*v9IN9U+iTT6ImAI2jVTSE zlwVvos`{#FF>5rg&C(sxXzW6-5hZ&KTSI7I^h>O`?m!%Z3uco2p+@X}`-ARdP4doa z^z!lST(eTOcgOUqJoJg=>NS5+Dz;bmZuO+pm1u?M#}0q0HJBXzNiSSMof#Uqirhes z)2?Bb8u0E)-2EzIgDin{JJP|?Je#wYS1)rbP-Y0%yaWx`@V7g6dEpjCs&SMr{oi?J zr}NLUg1p1C4IJn4l^DjR;__R^D)tZ4W8Opl+?Hs>YRKR-7<%C4t3q<57qW$}_C}2V zVR`NmMf;(F#et9YQHttVa--;I=&o6r?UQ{q9Med7<;$|;k< zmA_9FUUj|_{T(UthuVk4np*~uh$7_u>-XK!iLp~Ir7l!uwC~#h9E;rdG$qP`6`!fh z)SMC3i{bBhiZj08(mBb_S-FDqXvK%BX7To9C(o`39+Ca5lw8TcssGd1v&Tc3^*_7q z=G`q#``Su{+0Et>VN~|Ip1@>_se-ao^Rw!!6(bi#?y2Q_7xk9P`OW# zeXP%#2{nGKySEy%Ba{|fja9C1+o|TVBkO8)&^hD7yBq6z-Nn5X-fDA4v4MnbG(eU~ zz4=&1(MjIqE%9sti8i$rJAeEf!@qXUY#z;{^!+^j%Q*#{;WZ7zx}$ka#pO!BdeT29 zV1DX(*x=mGJFg&hzoxhZSB_8>opp%b$G8W@T9>yC#I|6SJMGAQ_fEQ&pY8Cb9Try? z5W^-5KlXK%^LBVutUVB9tUQtuYQaUXz;2~Y5z-sfpPtzUnnh$J-cK8mIA(WER00Hn3=Urlw=H(*;}vU5cJT+nohp@P8u;7^}qC&`SLZM|%IH z=T%q7>58L>sZ2kk04!BG{$RUM?X;ffbT6fHO;L(fno?0tTKJR=y9O6+X5;^s{`XX0q+t=G>z2oq_8;{!4X|5E`E_tn08*mp^69z2k`@!>v-TSe=0QN7iewiRk_AAxR+(6qX@L#l)%&@q*^f~-Yj@?<}L_B6J zP@|7p#cF!)5eiqdsDgCX=B^}Y{^VM*uQX_dM<>QN86P_tYxcw2QB$gVc+>vXrIWq$ z?r+*Fvy+B2dL{+F@`Us63R)j*uP4cJ3iFsh+hho%U^gF)gefXdC3eohT$Z8x6;I4e z0;oR*tPgF^l{Ln43)CZp>aC`~jwwDluV6i6wAiJo>;0do=h^~RcEs-b;jJCzi>esa zb6I|KrIz#f_EDVr^gX8k?&(9%rN__hxKK|T7IB5Y*qdYpt`0%KhP1Kjinup2)9i}~ zNW?YS4bGX|acnFk1iMaX8)Q(e{A$?ob~@e%R%6w*!|6J1=>?H7nDkM#}wUNoxGPRp?n>E$QVU zehc3=q(#++w6(g~NPAV@>eF`0<#vQKZZ*h}Vpgb+hfns_HxM8Hq{jhw6 z(dKN5_5cX{bt9Egk}2-UfwVZ$koB5F%|GyN`1A?Xn@w+wDLSbE#eB0zZ`0$f8&|29 zFFn1wI|1DX(Pxy|LwVOpnr4Y&M8nqWcOdo*6`dPx))r(py|^)UYf-M>>}iQ+&s_Xp z+o+eVDk~(6M`OWgxe^}rNFRrus|^k?sPQ^eD(keIOgu|EI1SyCqW5j&ewE`>7mRz+ zvp4G?B@l|_s!>dj$-|h}p8Xm%6qSr5(iHVXTeuHrXWldP#?+-@MkflKBuda0U%q=)`)A`bo zGN_pnETO^KVtQ8^ZuTk=kE}OrBR&z^WY@OApqdhKy2`VVel;&rYcbA#*}mhwiIuzm zy|z4NImElZm5ICT@I;Zxz;`w6DjBw{`PdU}W$d@Vh>T1fLfK2s_TF`+^mUxS@^e>l zFLVQpepMh9|FKn@qRbY?w`z$jFWCX93{2Ahb1GEy-#7Wo=eyix-EmprHJ$c+;yYd- z#j_hXaks5)%wtZd{`J7YX@@0|;`i!4Ghg-Vj{fNZz49*Kj`c;mI$W|TfeLH*Fx?Sl zZ?Yk~_L&*CBddNIzvT_4%QpCe6^0edt%=O}EqraOJ~a(80LVaLu&4h{QFN?5pVXHc zlNou8&tv2h*IrF6Yf{TM{p-9m(?9HgE5b^z%EDB-pe!Or^{l5qN7i$afZh=dD zv!X%o&7=lI-y4PGBkfPA*VqtWWrriGsFfc)ckfCH9Ppr+uC@6;a884XX@u&j=GzB>o@&kD#d%*d%CIzbVs*Y2HTdu7ybLt@XF?}#83GgkR36s$T`l3vOpY`5 z5vd|%zBxjlr*gOp~;7LDV zh8V6UPOM093?=*nVqEX%KUn96Z}nvv5@zSQ!S-%U=_>?Vtp*ur+x$6YNWZ}?u}Tg3 zd|znoKkVM$TN+6yo$YDRj#Y1uY@g12lT<@98{cXYBXYH|^r>x`PaAq6&PAk~7KPwC z4t3UET?*vO44A%kx{%ohw|diGgNvL9PP6QH7eBkz7RL%>{&A19dH!O=4F2-{@!7QP z!BEswsof^an=sjZGHQ76+zD2D8+?!PGq#aI9s%)pJsJrhxjs2n{!~IAcFUxo#aN_Ap_J#8`8FB>QVZ#X!HuDo8|ZfYyC-}Xz=}4^MrY6 zIZ_l|ysmmd}O4e&UasRKVL4_#nPR`iiyAZ-{b0mxY2 za!YEJ0m!7_8&cb3j$L|T55zXJ;ayuHsP}ux$QxKPod`7>^;#5NI3m&pK%Hv~Ok)0bC@2@&PSX2B zWaZSaptIB-i)|b!T^S6>yce|-GFCPAEr4>59PU|!8tDxVP>%dRC|4mb+Czj*AZjW9 zok^T*6+8xr!s<$FZaRc=Z}>lu5AxkAfRZ%co3bd?jwXu7#wk>`ZWM^q(CrIKCRvCp zTKe4<69TrI%YT(v7<$sew*EBD*iEDN!~zs=kJN!6ufNE@4+x0;U6E@idNf_G4`Y2@ z`bUs4kd90{K(Y4H3TQG8Shng)Md+o2D84aOm@P@OXL&9jMr7#-lFgm5kdnNOAQKh3 zOP}5Hu4H8xC%G-ElJ^f#`n6Nfirq!6-iFls?@E0M9#CZj%RJXUCR3p~c4-6iZ~zna zUXa1|L|ka7DRxgP89yX9TMee`FfRQsEI;1KBWgg3S5=4vB{Jns6?=(V5Axk2YS-^X=AjKFf zVuuH2IJG!5DP-V8Qr7~P+T;y4X7hB&!4Q|b66yng9Naa*_klcS6NL~f%3=RNUWN96Zpu`T#Dp%Cqv z!A!l1>sxWeQg%tX!Pj7ZZ&r$ijvy|Nh=<6kQ3avaD}W>xtn>a3;luAyOH7zqb+BM_l3ycOHpUr)|;f50y1deFQ@mMnvg|HGB zpv8Q9u<|O2&IZroXN!o5EN#KHJfanZ*osWd0Wnl4V1jm;*fhfD`^7|2sAICeq^2o5Y8R&gX@O!i`vMo zeu!5Fe{=@ymtP;oRp2H(O_++4Pqm`jRVI-GPS~Fyf>WJ-af~%Hq%@A4B>??@#{{npe_<&dg5Fk$|wuF5CdUJhVjhj_DXN(H)gR9LEepp`3 zBR5nq2&u)Q5EiCeC{IbK0YQd2f%tlu(zF1av<)sE=VXJ z^=Y$ril2*8EP^7c4FKn`IvqXBV_hOKik|>6;)LRBwznkt9);9C#7`y=f=~5_w>TQo z3MBI$7D5I@%*{Loo2a2J2&a<8*5LQ5?PT%Q9jy^!4)779nqx>1E$T$6L!OuXOT*q2 zQFlU{^3S$B^iYx6bqPal`Eg)kO)QboG|YTb`&^*{|N7bNwn0PmruCA6@p2~RLQZcb zr3lhnw4=jpCZo?f>R1I4{aAbeOer<#H5>5^IWu2v0ur7crC6$^N@yWHSohybTPFeCwAm{F{N+LRfXez=nv>NJpH$2t_%%h0_Ew+UrQ&_i z;kGD041T7wz?&X?6u%h;yVCG;McgYqh3Gj@<^%Xy34mbh89jDY=VXQ5wkSA|^F<>v zF(_S?qd&fZ#}q+U5*Z*I<5JetZr7iQ9G*GZ-;0wMWruBt_Ud0}G!W5R0)H%7j3g@o zmo`mzLghZqC#lqv9(953uy;|@d%CL!;c0OP2^6(SMph=IvLeVef%{<784cE!b`&D( zkr)Z4l-y9DR3Ktbr%$vCra}0M@VE(dWx9lF1KlOV^32=3@*0dIKh4JT?t~=C%sZ<1SsYQ1CAvX56H` zhyaJdzG|ktH3AeBhF2P6-d7L*_FOU)Yh9lOM0)4}@VYB{mPh!uc^W>u zb!m3|U@&#)1d5+&PK~%HO%oNi12ShXLWYa?GU}`5&2+cfF|AyfPsii z2tLccEx-@VCFEfYsYM|gdZnE)C zPO}+|H()}4CE#2z!o51qmLJ8xT#;-KY;Lv;1Tn7o$EZ&Z;~*FILuoTJvS;+M8`uFm zAIAtMvhu|UN5dUyMD#5Q%_k-Xm+zAINg z6V+CBGAJ;p67N>ZEpNz*6!muoQ04q{efd>czB#Ou(;!a4esGz+#?T~M-4}mL_SCUF zz~77#In2f}4iK%j2z0rcWMA;5OJFLeQ=Ddl@H6l*_tFX}r{bsqu>aNdyG{o9vBcUH z*Ae@{n<w+*UWLI`JGGjh?9xV8O)KQ;qdi znJre+UeMjN9=>OR8*A(JZm4$0*+d42Ot707Y2BTzl}B_vemMz9R{JUPvMAU^zmJ6* z%io+8u7-)6@m`X3<72W|6+DN#l*iPO0fp3=qI9G5cnyM6+hdBW5!LVPN8d7` z3Z45QDKJ3sXT7I3PtGeY6L7mF61W!RG#!~WUl--+h)rOCG!HZSxmA)D_7i4o9E-kv zGV~Q^8wm1_<&vwunb2drn)#TxOz5tJ0r#p4sif-ii0NnHJ0EFOmY59|yJh9WJy_M; z>9iO`^%A{D$zmn4jZV~l{yJ2x12&dnLS)?+!^v?vQGiw0Ga_S`8Pe5ehf?xM@rE$) zpTkQ7=pxif{gs+Knr+WnhmQ>DURr^{#CM&jKl6NrI^2t#bvX`9!1LnR3)dxAbbr@6 z*rX@plZ3+EOA9dYWnZETM_OV2A2aueSC6_zmsi#v)}>V?qStt$<*UY5YNYooYUYLY zH)LWtFHY`mW5}~%)jd;j15UU&-YY#I9xKvJo6rvCA-T#PJ1Z4c+QKTxU1Z6iwxDrX z+Ppc^kN&#JZh7a;3L>M2gnXKxx=J(nQ&ia8(vhG>+)fTXrvA*`G@=TbYa$(O@>pI| zwbv#4NCr;|e;t0=ycxN}cbZeQym~X2$nfmxY`&%`s*4GOw7EE5qfmT|WKa_JWc+=j z#V6wkn{xY)pnzN)b?Jw7Et4l~!yb&kZ?*{8Pp_duX<>0ZO>;6YOLR(%tvN4uBN>bnst%uTv=ApmG!&8E9$4B1i%tb*X~K&MyB_kKqdu2UsuI>fnR;P72NeBI zsuzrK&No}kq*7~_7Ql1kyG~de^$azS2qZyAG$Ki^f(qG%(XmFCY|oRP0?UCBHiWG_ zwxDL2BK->>iBHrAcR4n_y8rPa>$AFw&C*U#pdKa@r?_zk1ix}V+zpqG;9zh&H4sh~ zN8OfWr`}Y|e)U`Kr13AR&3N(Hqf2WbtnEkn+0*+3hdCcolXy3AMswP5sH$BUUXG@P ziTleBp!|+lLTO-OMBhnuGB-g=FREV)h{NqgX2L&K$7@11zc5rCb;+wR_>#oE<+fJE zxy_Q}mM%+cu;@F$!gY{RoO)EiBV05x2QHqC*HjdQ3K-Sz!fHM@2pi8-4X=>B!qv%x zKQuylX<@7>8CL<{ueVVTQ-e#Q3FhEEWwoU>5MI6qh$jwI5z4S8lJ^9C-y_E|_dq4l z;#j3k4h^E)_jJDgoMQjd0+aKE2bF^h!wU_>$cZZ*A0qrVbd!^O$%)Qwa$e@j2noV@ z2n%hanqiQeekNqBh^KfkpxEv8*a-#akQ{6_#B)@{Zf2VWX3OeRy|JS)1F@z+GeLaU zzK6oYg^YJCv$R@^EPh8~|CWD4teIPkXo`rW%O>|MTU09wITK}-6u@9%gY(ak26hL5W)(`)}Ga(Iu$a%3GW9r@>)(vctIM6A~&i!jrao^3G@@yx2myv8wbE4|= z+J!nl=5O&N=7(q$FqbX&ddnR+q&Jxv zKFN=|S&Gw?2GJuiMTOJLLNGcDBBPlvPf9U=sif3w0$z>B?c~w1qCby;VUBY@hgjvv zuN+qIzBWIc#fy<}&8Ta_S?Q(WALz@LwC1+f0BPbg$%HFyH@~Y?e@9fxZZzr164+gC z;XDO*i^VadM}EGA=WNz6Y)B|g?En2`qX~=9F1bb;!pvLo7~o|?`(v!UC1_aj40y!Q zT&c+`A;E`9>6r6$LtgFteRCJ3d`)(`VWTec)x-(O=O@ycjLZ-fPv_G6+&j``uRZ19 zgAeT0@9PS1%fMu%N3_`MP6XR<8rY2y`_%88d7Lv{Er-{&&C6Qh@0uZ`M-CpdF52() GpZ@{EILY$> literal 0 HcmV?d00001 diff --git a/assets/transparent_stat.png b/assets/transparent_stat.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f3c5fc24d1fca2b5347edce573b6752ce80fac GIT binary patch literal 221972 zcmagFXIPWnvo{*V0-{n>K%`euiYUDVY0^OfrGqp9At1d5P&!CQP^wB3C4`pH0}9e1 z(h?x_Dumu4lye84|Fic#`+d*(;Dx!@%&axPDXYzje4?d%^)ka{5D0WtRYg$;1iD}a z0+D_vy9j)FAe)>70-bNP*E4W8(A1E$a)t<4SUX$V2zWzY1MMJ?w5<1Q3o8d3cUDUq zTYD!N_O;puc2;|98FqaU&HI|K6>RM6ReW7-bbYn-tb84;B&^wG!I!1IB>@2t8+Qv< zZ-}Flo20i4`C}>;{@oSQVUIZCFJFLRyfhTYEH{k5c^pqH1IfY(C-XIEQ6Aqfcy!TS#cA3Wd(DEQrcoZKzE`JLQ2h$8;V zP_%KgaFnVy!_E%0v;HI8#@qhCq&vC&qdowHAhAVINZ`KUeY{4L5fs zPXLI2K>Z(M`cDULdOojh1a)lOoIPBvY?M50oZLCikRakB`NZDa#?e609%AF<2B0g$ zF7!}L;{Vlb_}`i(9{#sh1!qTRS6#rbYyiG9CL(x}st^lX8-06gcf0>4?!Q_zY@BR~ zP5%*f)1+**@8KEO ze>JHpC_Hg>erfLrw7Kah%d@H~DToS5h>G$*5csPLU^+>F*Z!rCqJ=v^_2B-4`~3IC z`5%bu2|bV$c_=9)!hc^_^8VlPoKXW2VQt}V@&89p^lMgWfJ0MLQpMiQ-PzUW?9*Ro z*R^r^`|IydNBc7`XJtLJwWNg=5hNM**RIai9#%HiXKDfB{gehD;*A1BQEoe_(5nS_iqtvgz2VQdF2JozP* z`J!di=NJubZJj~zYKh@Si^JfzfK_t`BQ^TVLkuC|H#O1ZaTMCc^TN@Up}1r{N7a43 zp`6YOq0am=X47=hNn9so25}(@FPy18dG3ju{ZLawlXZ43cI9q$tU-%X#c76zZ$&aq z3taj6j=H(~d`<}2@7DM(lDhrH_cxzyLS+whi&To)%Uc*EJ2_PonmAsWedFQ$_Jzkf z*RcHXv=SaRvL^V<>-^`{cHxPdPXQEB7y6H+g}bMz2c&;0Au}3WLBVTZ=sJuRz~W+) z%VkBsye9pxkFZpHU?wEIYF_zv8P4;YF%;uqXL4s}*(-a-FQTYZ-}J{SvwNq{!n9bK zgB@8HRA3pHKFD9I7`lN#*P4m{NZ#MOb{hm@1*s~^>3L@?*Bci>hCNgE_DVfXwKBiC zEoE4-;K-46j#jNCJk-}vthsvc<(|jSh(EtiP5$%>I|-xZ=A%_=dZmQW1S-zQR5#e! zthl21TodAHep!Z!<<7Dta)gxXJX>I+ZhMhUfbIVA`BRVBt;DpN_^o}b-!n-)Rq)s~ za*OR%UW4sb$2T0rff+)mX&pJsCroAHbEUv}Ao_Wn%l zfu#Lw>o>-45x9W{(C<@=dm&WQ60XB=Gtl}u`KmJSo5YU1F(sc6r>H|uznSm0EAIgj ze!pK-7y%}QLdZU~^akq11^%0Rk?!j~5kJUq#FFWk=DAf5#eL$%E zsGujvyd}9Dg!&R5P7aL8gwraNNVP6LC_X!>)lIA3aZ z1?+SkQ_GXNJl+m`O##r&l$k@?7O~M=yDDd@nr%=?h}33R%L1KcaU_-kq?8~08UpN2 z_BKD(ascBYV|yz|vdyIh){PI0|93@ePd_;P8Dv3V{O*z19oABrAigiJY00E<=DGr^r7{Tfl{$PLbTYNH~D1?}R9BFD}|^3MS(oS$r>r+FTT z27m$Bz)T7q0VgZFEve|STL71K>`9y#z@XFxAp=XF`n{fC{X2lI4dx)URfHkLiZz6) z@_akcMb!n9-S3nZWJ8phwSs^!z=ACsN>_LZzudeOfsyT;b$Zn%|AqOl_!2tX)mUPe zAyo&`%_^M%TK2?&ef&!UU{+5yDe|uV#o4ezyk-4K8f_<>oc-rUnE-I9|B_iaDXlXE zrS^=`5fucW*nbd~JV*2_3r!^1o(95gf4E1B?l( zMD&~3PcfEq=_Yeb-u{K3(%m+&zQpEL!cK9)BiF#2{1L%v7WWwh$I0-UR3#c`OGxN zYRa58ELpV=fste5S&3oN2878YN99iqfP)aBM6#bTf+EiWjF$nVuPXdRT|S1KMH`h@ z__awldL2($FIyrlhXr62mUtkP?*_%48~P7GY+2NlLLtiwJ!8}W*4<|y5@rFcuS|M? z1T+4zn!Gd*>hdI(i1s28?Fd{1F>MoR3DkFWQWmNwH$!< z{b%0n@WGhIpRqA|VKthFHjtJw;Gliwks2V{wK#|YdI>-vtd#4A!@nez@6eWxroYi= zy4e$TQ=B?e%?iZ)uWF+@gM3e8Fsbd=nn0#8x4an+ED$Pr4ng5s}JvJf! zc=^oQ=*#WoK)SI8=i;w}%)tNlsNGB_w3|5CR3Ad+b&WXoOky-guvxPFYlVotUw)u~ zXE<6Q<1he;Dnja)O~c{+pg6g}iGT24aR)W*0#m`(!fFKId;FY$&AouRY4AShaya^* zfM;vgopS>P9Ixy?mOXaIoa1sHm zZu9QgqVm5{4U-%-RpM^{gX-~_I0PUr4z&NLnsDaNK=>8=9|9@Twr7kusmPuQV{!`| ziX-)&1MF@)LlPDdc%kt-z2Aifqkz-b2i445cY{*1yjp>57Gd1gn(gX$OnOo&J9iR+ z3&k{gxHH~n@vZmz)GJi)Re=ctQ#yQ*^%AbIb4FbhmYwLSFYeBhofDDWZC>kiu;;^< z7W{!a%19sHUg%C$PU2tM;)E0kF}*wR*6_UlRqztxlSG8?o&)-axIDBp=?f$_(3S@k+d@xmmht>tSn%*cj$e6cyws(65K1p zX(5*r+U%m-s!wg#M@g1&a3@PI3#>XO&&eK%$=Rqa;S;IXa&`5KX1u5sJ$ij}Gno-= zO8JUF{T7MgFb%&za7|Di_|hu=T?ITm0VSK7IRU|@SV;E$Kqmr0r{#MmVkAd>Qn+-l z)gMrz{}?v`2^=)(Af%Hpy}B-0W_OG^*y0LGMGpy{+02D<|C43OUTbQ6ToP6N>W&pJ z1CNQIhBle3b`3Mn!?+%sk6w54+E@4$?k(I_rV%p7nr!={ag$$q#dibZ_ZfMH@ElAd zbpdhrdbfhs&$El2Uq@hL|03kN&D{+tLrZ)kGC+U z#2nUfKg`yU$hMis>ty7cj7I7Ri^~~I zG>~VEuC(FqzkY>j0pkcaKOG}5>u$hQ5nuyb?^d!@Aalt95+}eNPfZ>(e{z=9XdEzn+U# z&ExR#_D?@u+*{hwP50wGSTb0~Y__V!fiXi?*W#SzTG?~qNmI(uua!|))L?QB7Z~qR ztbW-Kr#yWi#8pz?QdwQwmbbG?@? zy1{K@-mhxvEU$5<9)GhKMG1WLa;t8Phfm0!5|}~oEQIn|=%a6KF@!JvW;bG1UWY+g zD1Pp7*sypQZ_>B={`RP3WyvGZ7Czry@gD_$h%a1V9<0kU=UTCV(MIlh&lGz2WC$if7gh|ie?SM@g<=j(wO##O&a z7ZbUMTK@bS*1-9LV+Sk^bl2b~=8y$e51m+8E1!$?GH%KySvPMeuRr+J|IpLy%%@{{ zEgLTSdiQJ2;z;V=u$ec|CBlh{SGAg?lEHMA?hMYYCA9f6{y6;VUSKN5GJ3Va;f^>3A6QmsQOK* zXAak*oqwrbDapp4S*xdhFRu&t*{;FKUn!TV-4dm>^001VJq&LoZ6cW5Xo8X9QHk!7 z-Km!Lm5CfbV6(qEw3qPu!s}@giySmgPTo^faAsDz_0m>vwoLIoIJ)L#Fl||2?2m>1 zhLuJgT(SZGjwZH@8!29pV}(N^Xt}03AqM2~AoymgEPenR_}lN)4Ti{u0z19MJa5~x zWkU{eE(n5OSf2*gAQ{e}b-{D{)S%PZkAIhgE;$msr6nB#tj(jJN%8pP$mP7N&HU11QKd2&-pUw_-3a)o?to{d zuFAbkFv|YKNuKmhI%P;T|K`W4e0j=oDK@=0MJe-sB{quJG(IydOFZpJO#G|4eos!* zvF=O*{cxQ!Pwy;!q)6M!Fv4)@Ct=Cb1(~`)81QE%AKHIWi41UBT40A-JS3E^FWGh;N7~2L6oeTS;1kMFydleL;*IyC@x@i#HoIDica%r55jo(5i^1Y?SHHU zmX7akza_4YTJ9??^N`fNUPY1BU7XCmw4OuHYjAu@cNQ7ijrKph*r7h0%368!(Knz2 zgx1L6jJERY+T&@^m@BohN*YWmnsiyoRN%VD8|$0J$~zkHRQFl-M}%cR>VQ`Ky9PPdr=~Wyuq!n? zgNs8D)6RmPIY}X9)j<~+q>v7~_y^HSJtR;Vox8B@U|QLUuou62RZ89J#le?gc;?UC zP~CQWvvPG!sThLFlT<%}^!YATQNlPx-m@6A1@Ix;J6dKja$310%(bwXiw#63pK9b`<=UJEf^hKwZOmwriY z)C_{_!L~wB)FQ=2t>Hto;X9VR-~-84^T`Z@)B1=PtAeJIk;bohAcWsOKQ(@@nl(Xi zDZ&rp`oRS|>NkxjPIcGz+r0$G{TDvq zE2Yld#4A--RYx06qG~;m%%O4d;Ik6Vl)LM!$mDac z{CxL;@!j4G?Jk?BYDJ!qap_AItz3yXnDUkp#&f#PrB|uNG)Zx%pECCWwn;5M5zfoR z@Lifpog6vG*D zBSV`hugcn%UZGcCm+~zk9tw1mlAu&@e%k~qiw@< z<_T5C41MhS$m(59j_$h4yX@=={>E2(zluKBW`u{%#63OeVui`BYLD3N=@A-7eS`X& zpLb@Vl2uoJGpO!Fy#0b;^IHgRK8d?_lm+#9kRkPiF5$)&3Eea4;vCMU2L)1t8;>HG zk#zN2E%lbr@oRx4+F!|QArIw-dq*Dgzpoa4+Ny(pLL~Ujt`wFXwoNlH=1Y8fBiiI z(bRs?g#AzK3ipxdBSHJw?I)~qkpqknYZ6YDni-^Tx{@@&$6@)J2&LI|8wdnOj=9+gOb}p zb->H2*m1a_l)7u!@;gE1YqcM87k)78)(F$(dBV8J)pw>Ol_b6DTM9$Oqiu^LGtmnh zspM91*sPi#=JKCNalalrB*zH&Yc50gzdX<7XMG!??Yf<1mzqQk63IwY)le&Xn z*Lh@~5yKCi$!jS~etgvz<4+nSOE$T8&U@~k=%b2L)kKGyl%KZ$2h zSaqhtf!bEH{V(a1_&5iqujbF*F-0srcYty#SbYMIk3*b)57}2u@f{?a@@YrTV|UG$U;U=7MCNQ6lU8=Hcg#XUhNCIz zTwPuRWDNBNSB^d@)VpiM*|D-^9eBMjt4XG3YUc{0KdP@4UQF%q{f%T6m&>iw8XmWS zdhRYCChk%Vb}<-f%}dRPI5g9K-o>LKDLUtq%>IWP?(t;Q^3wYAnDf~oG^OZ7XOi{s z`$&%83cY8C6;49WVg-10E0ipY^Md3HD>=q@ZHOZW-Y^pcH zD;n!LZ9ZwRJY=ja;uaar{*0G5d^9UsEb(i>2vWz5U(&KRsN(&(_B>zB29pFM1=q*N zF#hlOoY!(TUm(=B`2DICs`o>i$U+9;3HdYsNvWOX> zB(9b#uleo|5YM%w#kNa|ZF`*0tvi$MoBo~v&W(W}t0m={aAkkcO3r`KR;jzif5gY( z!m65&eEp^@Bk4;ZX8-f2UU#1&-hj)@qPhpekr^lwt@4DsVS=)znqTt(| zo;L#g4M`&;GZIHIVdz`f>H(q1MTw8;d3E*Sm!O{|OP-7ghz8Q@k1^+{Sx;zLsI9YY zx27u}!{qBcFL1V0$BbjcYkEBy&E;FypbOL84FQ%&+53mG7$D3pL=M?LCS9)w1)OV? z^_oYW9Zf~pwmmgke^L_THNSCZ6Rr~D^0m@q`_pI6tI=&niKUI3;74VpS$^v!FlCwZ zO9QY~ZrA6A(bo2T;8dATmWJ^gusGkgClle0)0{8g2SwkvCLdF<^TjFsem3Qw36l9Z zlzWKTcEU02hWka#+3|In(O~ejS9$|MSy3_}vtBeKZr758Ie$3qL=6@q^FJ^5J)uu1oor*<5PV%`@Qxze@4?YE4#Jcp4|NJC!EirHO`NKu}KKHu% z{E3yiWT%!Ne#YuJ+FWpHG#AB4f3)FS!VV=yw$k`lF*fWJxo-3gu>|dE{~@`&-Jt#| z@JQ2_Y?5cZ-WxB-&m()`EE#1GSCnj)9-T-1R;25+VIjw>5C1vF%XpKcx8QnjSB@b* zG->QhSEWC$en zz8Wk)WhAejTRUGO&TMU)mYlozO}&2q+tC!6kVO^xu&Ky5+-z&%%ws4@cQx|jna?41 zER-rEEUN-v6vX>U^Q+eE9YTaiR9RWL%}BO``ES1HR*o6L=uEh!BV^~iXwpQOj5=;% zS2+_3&A1~7{_6wc^-5zviAno-#}Gs-zv%J3)_mmG$CwbbLb3i)8>XhnCZ!9sD@6WO zop9T7=4)p~+YxG;Us_g;>DyrESh&OYRInSVRl~N4lv}KS@ES=YnLfAMlWfV# zDM);;&Sd&%!KZk^Z7lVC9ytQ3S#6Ag!g!BOuJ;z?p3(=ZbXKG+8NgKoFv8!kwYkrr z-K%>4uHNX-|bKy4lAbMu8_b{f=;vBf2$5=MyRKDB_Vu)-B!U0RA94G!dx1 zbNgu4f9`Z5(pY77I9*T(MlzCQ9Sd#>%JV5}h4hcFSVu5J=zWiO?9g3R<2A~&Z|bBa z15hc=+SI>OGOP+)Hp_S0^H}o8;k8!-O}N!<_tY*?{w`C@!vdGO?WQTlbM=xZHG%L! ziwQ5S<2kp2wo(2;!)D9T9`JZkWwKjTDN@}K~{Lgv@b#W*(l`=m)3r( zw}(%@VFhVjwSU`Fgy|*4e=QYUHW4gGpw`CG$uGnrJ4A}$hJn6a-_azn!klE6v{Vl2 zE<722=L(K6xbWqq`x7#8U-3leNAVi|I@@QfYx{AOJ9$yVWze^1liQS9I1^XW7mL2@ zpxPWkU;m%Jr-fcDbvry8$!8h;x&Yx>6IH1oaG~cF1Sef*A>B_nyUYVJ`>2V|Whb@x zn5-1D{&?OUwaC`vDR4-?W61Tm-EEIr(~~L=73>3xX>w)7G$C^J#9#|^)f-MOCrAj} z<~7cY<4*Ff_;5DNCVdM&1HXEe zPGC^8=rr&20+x7NgW06h???RhyjlF;6}zE{)a zip~3Y$i#D=lqwTHEytJmTezFKH~2QER5_jJ*z}dc@c*LcI13GGQO&@$Jjchlgl#*g^eYjRBuCu^41T)HLKeBNS&S`QJY zku)XmL@k(g151?1uqjCh&UE~Urm-xaeC=E_{~#iOd=mPS#OaGSCfDmpA_ffNEv?O& zY9&qrbSb=n^2BVWoe3N!yQnY+JVCKoslT1@Cf;5VR}(npn<@TMf)vent&&D_2F%7D zu(srZ}n^B}Pd21l;_R%)lHQN8{nfh|s*Jp@n5`yDya- zB3>Y*P-YRKjtfpYPgS`#^O&|plooy=+WE9E|ccBk7D?AJI-wxQ|?-jD4L>?WDm zkY96&=kttrP4$=^T_*d@6&Ki@d}8r*cPmyUrWSXs*wS|MWrlp;Vgz_>sxR7K?LFF( z)Yw8VV6iXc#n4lmdttdQz70{!!Gc!H3y0M&KGzQ1*Fl+ITn}C|t2=0zA!Q}{)wh4I zr(B{Bd_kw=K`db6Wf*Y2(7Y0+YtOB5^h3&kt0!^Oo#jEm5R#v{*yhXI5Sy{`8)Wvr z6{p|H8`G@6^R{@r*c~4YPjae8x`{s>j%`_@l!{WcB^#N+4;ueSDzWiW)QL@(8ddI( zySGX1<`5!LT%T0IuZr10LUHHV4;!S#+l#x~TMm4Wn4w=2vmCl{yhTRDg`v6pT(Wmnb zUt2%@BgB-TnH}GWoP!XhSyIlxy+PK&*t}Bm{liC+X$4L0Fqqt7?Uc>889p89mN(J? zM)y?dD<81@Ifzb*wdv*|?+P^cWy$_=L{+1mGgH|>n1q@CBoKFo8w0>`CLFZiTupFM z_W?~(g7&SRd;`i&0OX{Vrr(Im6j0-Q8D*Ob5#9Ysi>fQL_tow=)n#9KO~#Y-*cfLb z5JvWjO-6;`S*cz&z4-;l5x=Cw#P4+#JWX&Ko@oB-sCCJA&EMKvQ%2x@LTiH2oH6AY zQQx*%K(*Yz~$U2Qh*nvJU62!sX8|2YxDhr z>u4T|Q*p7A65f9FQBc4C=geGi1#f&yyU6;nk6dfMORob$U|lCyRA;){OWW2NvSK`f zPa~{CnIUU_t&jbFx#DoY=0(7VCIG4AvT<)#btv%Hz#MQs7pZNKz>XSLinDE5v^J#R`{1@e` zM)vco7JHGWV8U=g)tpeuJ*$a5zM?34EgVNK813sUe5*eEgA;!gZW7_ardIZV%gh4L zUBJ>C7E;dezWGHi)c&f7Z}9bg30_V4lD(&tT|2*5rprf{KhN-g)24h=-8z(_c*pKI zbi-7UFQ`J_>E`bg=9leu^0!LRv9Rk)3ej$ql~>q4Uw#LnPrSeV_Vinh4IT_*|RUpN&QepJQmP!}VUczf`z5+8-GRt5I~ZejOk z%4j|UY3e9C2Nqo`f{u!wTyZzMG%?(Js$Qo(l0yj;UEqlahai8Z?F;Cn&8wgjU6AZq z$pSG8`pI9))7dgh1#K!cs7MbQH@wOCDOG36LMEipN6DXP=Z|m5Bdr$P!5sBd>dRL% zWjNisq{E)X^~t<|Q*r&0eT`OKv=vR>hqs$X3X zKF{~}`N8lan+e2aE8t}Mfz;tmL}cep!^f_OVPAz@dWnn=#qADBm~%RYGqW|&Mpxs& zXqUOL|^& z&BJ=)d4$rgUni9f=Q)ezH^i%num~t{7C*`k+@%JC0%#iV+5S^KQWak0TB`Eg?Xit^ zZyJ^Llt>!8g~MtdB#Td-y**%8hPV8Ch366si&1X)Rh_*q7-3FJZA%I-^Q?ZHp|5mB z!!86%PIoNqK3u$i_6F1f=eFBxf+-4!2@Nzf{z5#=iq zkxE43kX+=Z4yK_w_eN$Gd$1p^EF>~!@p9Q1(LV-sjZZ0=#n$3#14yjQ`4kCttA=H1 zxpTr5ofb8*Jn7YVeopZH+}9%)IjY$ikdoSU?oSojsTfSdYL;> zpNa=%UsyLjs{;Zi3K#UpbN9KXrFX=xeWhI9*ec1Fad?Y4ztlUP9({kA%{NYozf*xv zR?yE*fc+}l%SYr2Ndg&2&f!}#kJ?0-Q^^IiFg>WejiB?41#Il+G#Bz>1cUT22H0a91B5`stR<%BHU3@202AA`E7m9)&Ity2VM9#zIi z-&$RlnonUP`{&WRp^Pu*qRFHsrm$6LJy*~q;_<^@D%}!lKfRII`^=8BShSL6L#_L4 ztl>nRr`xsNgo@EU@cHK}sqeG6!5EbkpN!|$K1j60FcLZHnmw{!7>ygNCkW769o<$p zTebR;)N|FI>EKR5LDRB8WYD_@^7BXIuN2^zn!n zX2{_It^|3!Mh;ai^pt^w7 zfKeK=W^Zw9TsE=Ni#X3RP9*}w)enGaeqMkAHN zGC}s3yJKl<$9dpSZBDPkTd_}eRk);(oFCp~3}ns}`HkhD^nX}JuE*@%o5QN48E(2# zCtdRUj+y<_3pwaqIe4~S$w#8ehpmrF#bai^_*XaZ7$D6bon+GKGtgmjzwI#zF=0Mp zh^H#W_G#`$U8Aw&Jv9M^D;4iLeTR|Vz%}_eWokXe%#x&!Bj3htrY_PIVVcC#0_3Ox z>QSMaX@}dlz|rRu1briiiJjHpR$TET;&st=V#U>4#pM}S^2xv;#lHn|RX-{)($D@3 zi=*{t zRb0LkFd6S$K_|+}lMneOd*zM~f7rtjn8!wCq4|cpEL?@R$mN#cJD-24XSjP9MyLoM z4z0vP)!Z9o>cfK&ogR__C))25$LE+S1viC@V_>a9oelFP8YU@eCGIN(u#!30cA&!U zF3qUArBCdFofMh+P<}i=&)cT)t8Y5WP?wF;tZKCivS)TZleZmK@9iaE)xNI~4p}lQ z8Vh51IbRl7OPLFz=p!JCPa*=EgU7@E%*`%2SwZ}1F}ru(FHwd$^iEVjBSma!0#8i# zx-@0`e5YQQ#<0P-UVJ2_{bQoe5(_229~T47Dui#Dr_67M_Cz!7Z+UB+Z6un3GD^^T zq}$$1$~p(=cA zsa=*Iz@_v72~yG#H~-~U2|vY`V*42P_(%B8!-u_M=4yR@176B`Xx{@b5;w?*k;A8K zhunvQu3N$|EZ$=H;)@gk)StGsVaZV+6F!5Lht~K=8=0MSMnoLUolWsR-0;TJMWr${ zq*zEWbavV>pW9Fp{{i{sQ%Jq3-&*0tJJ_kcnYC+{GB@`r$X?_(Y8F+}dqvFDg{?%h z5u}h#3vc#ubJ;5=!4unq=10AG4=+_Hvj7F3!3T}S+Loi9f?8W_AlVC(<`VyGJVLz9 zw?FDZbWf@qqX$f*DtGp&cQ+kdM!f!tc%9n@l$8Z!mq&bYMRX!@RTDdqe5+H2SNe_#PTo%Z~Q*FRt?V6;Y>r ztIH$N)~5OKkZl!zo~^;l7o@j_gs*Cub3bXiv}L%^)ao|vFW6MHQ3kF8Z@(x_#yrk# zg4cUwr*ld8`BTV3W}Y5e%3{OY^Fq9R=s&??jJ{W-*}dD@`ZHaDusKqnsD>Kxaj!t5 zBU36LMCM8auFg-SRM=2}L&qDobOnzZ>59LX606pDraV-d!BNha)@2p`Sv-%vG~%Q` z-t|)F=}RFAxF-@uubTMlTc4Hqny^~d?9_|A#1*sW=i5l#*)kBjCx}$F z8>qyLP}S&?@ldNzw=1cOS?D_qsw{<-bQh}fy^T(4ENbgRp7R^%7~OO#G|{5z`z>W! zK1|PW)t%KdsWaw_=bAZLI@vK3E8IadP<3cohF5_tz7rpkthk*EiH6)X zdAZ4uhx&LFW6g@G^v#>+%qp!D=eAEYK_@wR*Ad!rl0Zo?XcDL}JqOW# z&2+VKjbyz5ROkQC={m5@TbJRJJJ*}&d|i8t>B3q*XQygcN-o78MDn9KZ$_m*v6*&S zC#HL>d1)$R215fCYRBNaZrJnBz&oRoiU8)Tl*}A-rR&nNDkP=!XS& zb#J3h=X}sg8j9;Yx=Ccf=)fDQvGv9xg?;6FP)lU#rnHy9{pkM93yl^)H5;RN23_&T zmAsBZCy?QOzE5N}Wq%&exOuD`xF_iY7gq-J*VZ*-{SFCHZUOxqmLsdy#9fA4D-K_g zX#3|4Z5p4;yy5*n@H2YfcK(xgBw^P zEdG?Z!&L$9J}E$8;>`QP?85p2=*a#*s~V}tBXk3&ml7E9>((~j@+mSYiMj6VDwY~K z7VVv=t*n@CoH{$kGHf+UK6%KY4k1_I)Wq3A`@kmKuW}R8&g-(I!>72M_%k!pDsM*M z-dG0<)b&mC%Xhl5P~oiDyyzM#$91SD#OxIfQkUU(>}^6;3n2q@f!(9yc*i{-VfboJ z2i5j8d#~Dg1(T-zSyhUz+AK9byL)7^)F&o>KF7?98d844lOW4f7c~S$f1!R@I#$+* z4*g=jB8`J%cdPh$hth=SD(uyCw;Z+&i~2^#wXAHP;vD%Gaz(@(*0A7~25^vxLehtF zbEXJE4~?iEWKvzhRjYwmB2Q<&YNRz>GS(%+y{A=a0Y5M6QE!Fm3DGAF` zqc*ds-HO>>K9xMMdI1VwNxX?$izfjOgBn1S>F7~P;_?Nk`j;U1f4cFguSt>j$GMQa zU-D5^B6M*vW?pR1bv>tC+>+|hOUuBLq=r9xE@j2gK~*{ls@k>r;o4z~NZV%T63Ilg zyMvFcrURkod=^VNBBP6c#_Mwj`4le)G^0Q#=+X@Q!MC37c6>?&f9F9Cc;G}}$IkP% z1aO|PZyMKkT-W)@u@=S`gB0iQQr~ zf#0Dg3L8D^syb*X+kLpsp>ByWUX(d_bxAn4UiSD<&w)9-y`*QwBQZ?boc2SJL&A`? z%hL3Ci{i@LTw?|vv~u)}{}rJD-WyvKP~@*-bY3o64tR(V37J7uTe79?S@rmhk1!Ok zgbj3UO~1`Rb(NrfX!_jz4@{(34||3b4*YLl43wpK4iDrL*bYa^yd7lLi&IG|sNpl` zo<-ZwV0{a<(r-;V{%j!z#B--}`$NFFlfuC<=w!B9>aR03OH4wonbf*n zeAl1)#bb<1k9Rg+sx_D0mq@G#C)Z7??d_&|svEJBc^H|YS5zt&D1H;+lFV16+U^S? z;B#hQ-Bc8L_MtCUd`N0H4Ll&ZF?38{{JtFyJ7_AGzczm^L#-ZTT^?Ort?vl^a$IQK z+TH3R!SbF@i(FZ4q^zr$cQ`q~^pMJLElYCu{w?F#*JBQ;x+!K2GW^NH`$}1x1OW^O zNd~fW(w(PQ_prDad)j~&l9&Dl@o z{Cr!6)iEonSgzYG8>Z!1SHJe`(@BBxTyzLha!^a4G9lINyUr_!BjWesc`d2=<~w;* zuzH!jpSh+CZWf~#QQatZ@;30Ld5`pkW$q41E{Xcz-ElB-9XKR&u%H+Tn??gLQsK zA!hUR7Zw@VR4BK&oHq8L=Hij~HRA0IACQ{DN@adT!r9mOfg6P@L9(v@S=+ie9sMxl z7A4Wn&udOE7`Vd}9v>nA;pL@6-HjGW#wLA8gAVPdkUEpI0A1%j9p;YHYRExo(t758`t-ddQ!Gk>QLUKSrigJZW1qW3LL` z-ul6duOAqp$$s`HE%_ac$&%Tz$0Q;#z7k`4hd@95P#>FZ-moA!Cuk@yS+mS<9=1P% z@JK?jMovi8KcD*}YI6s!`$X2q_}X{)@wmn`!!E|`P;QIHCdRk=#$E%*7~y7FjlT=fQ#r$ZWF?Hc6omSd1iDo{X2mNzmktntv%8|;|a(ce4 zX)FT2ZDsKX=lg^-+MBc22&??Q@#Kj#gZ_4?0A?ziPBxVW&Zn}M1G{6u?Pr=m`*clw z-~X52iC1vtuMd}$9*EC7s|RMcAT)+{$7T3yO}ct4sx`9f4b#_-^5I9*&T_;Dl?gzi z60~SDpsu?%xj=H%c=qatc&nh9g9ux(RG)6jr3q@n4JpWnE?Z35qFPyU&nMOn_w3AatMk(6i;h=_an_F)aDKN!=JKcuq-t@d@9*wUPqM$aqr8Jx zurs_H-;cbVmy~3ZKI7;iot#``Z>1GM|}T0`Z`*AAPXD8VyqOn`pNvY zATNGr){QHF3y*Zhc@#G%mqL7c` z8mWrCgmX>?#SPU6DphDlONFf+zXJ6eRpe9H66(uSzL3enH70~6qO{+C*@Q>!?&iL3 zO@&D6P{!{$pBg8B4`~#lalF^1TcP?|kLi5N{3q#*#jgSZ>9SGxzi&M$o;&B4m9%7- zSH$uG+qdZqt2T{erX3{27fVD&Z%Y{TO}T4D=oFdXV0@SEP(x;TJt|L+V6s)Jq);4l zuwUa;yb^phWZ{ij`3nCdt{w0uePMTf(FDiva^ZUQO*u$w&7|d!Sq{q4cq&;_GT(q8tI6&^E3?lYT`W!!{OtL zH3%&Z)r{Q>T#@tPg6F*IZPJ62L7TyY;)Vv+uWDcnCbb`{G_ullg60suwN(^mOCPwX z57?gjcYXfE_4#A7RIOT)>6UkD0t7bWiVLh4ZSRM2r^~#7vRZ0_^AQef{T?6d;P!Dh z@>QR`Vu5i{<14odYC=EEbJ{77pL{!)jT5pVnzhL@TQ z!8nP19UE%G)=Dzfs*m;`gPzg=tJC4C;=q;#kCx=tnznZQM%tR3rrXPfjhz)|{d8ms zlIGxIa;+l~El?2gbxn|d&sf~;W-rqH3-4qz{+^*lw9ZaXvs-hkj6S{mknmhBYcO|4 zBdhxU@ZuY}Oct_GwvR8Rkjir>uhmlf;tmuN?G1Hw0_RHyrbK?&hOck9F&;fCs-V1k z$Hd+;hS2!4B!-`=5Bvf4xqrV%mMzw(t;AbO^(C_cC+F>Nv*&hj0bQuXiA63zb3|SZHC4t=3etRG zNuK2v`uMAKM;3k{9FT3>KyMVyfBDbc1`C(#K{+V#*Vt*e!`PSS!sfh@QiN$MQF8PC zylQcGEfX)zbISZnLa^A@Lv!%=+L(Hny+N_daamBqtg3NAiNh%^EN5h2n-G=t+#?P zCA~WV6{k^UZkDcb=eowEBc8D|TYt8B@#8v2EtaoyK_z0{PO zcUh**f5Cih8xH7+@u5p5p=0bxLg!0midXR}VKg!4dfD^~ZU3&Fu6bt92q8AEn{6ay zEEzpa?*8NnQi69n2#@5w9rB`<=eYmEo>FMch=)MU;fRb|Vu|nt8s?;r3ankT@S-KkR0| z7A-B{_sd&Ps!gKt2Hu-=Z45wHns~d{@;Jv`&t8#Y&(G(qpdw$OB7@8-r^vwzq5|Uf zD*4t#R^af(mwjc{du%ip%C}-cYS*(>_jWF;%jDC1&W8gGK|7P*Jk4zQ0*S;QNL(=f z_~(+&KrdUvq)Ga>x=XXaFTgrR4H{D=oU5VOD777d zo8f80qyxXp)bbd)i3mqZ-le3o+eI@9oo_!&EaU0F+G9C9!o`#$asuj0l%Jt2D(Vtq z34qtsNp*trdi@=N37~56Y20bO$3o)ZfUmsthq1%K=#yuBRk=XDJmD{Rp?yuDL$X)h z63_?}REyAb>6=H&m|1fB2(bbc%bzwI7fCLGD3luCJqKx`j+h>074zQgK)t3*zqSo2 zGt0Y*-IAzW!uD31Bo%r z$AtM(qs!Xz*oF5B@u_Qo4iU0bn6`nEv`BoL(2x20!gD6}{9@|wAWgt;_TBtNbK#IQ z`uBMDZ`$8vI(t@@N9TWbHU^xtH%!Z&mZ@ZH4BI_R6;QD>3c4r)&j*aQAn#vHDfTQ~ zfIRaU5KTtHpQy1ob$lrafwpNle>1A~`wbc#FVng6ZOc>EXTd++-Rwoy%Zmyd72GvO zZ*A9w=LU$4=ww6gsJ2bk_X&}brG@!C7TGpSkJn}lxxCw2w^p(mrN5&c`Je{k2QOnM z3z3aZp7XX|Nf0`l>(l0Q(t-*Qx<$5>62ZaRsu{1FX;m7hF992d1&o?}PC|fcMx_0c zFmuxZ0d+Y9MljL(#90KvtiLJALVo&P^Lx69%|S+DOCyAX4xI0sjfG@rZoX5DJJL8g z{V*62v3d4ZCFHF4czsPzT?G=*eayqi-*bxdeR%mg1(LZlEMQajpLNMKPZMX0d&&Yd zkb>QZtk*h8_ZqxEdx(2tU9eD|+rTG*i;1-EA=$9?R&MFW+3KwOD^;bF_Jg8z@2i(_ z<~fjBRPhg8$?wN9mmfd8yhbkNjBro2fMSZc`KV|uE48oo^R}wBZxR@R-FXK2-CBt; zMMW&Gp{Gn8^klxhr2sadkUyYb~0hDOfAWPNL#82T;5 zZ9m#OKv!N!3;OI$nYv(QvcRJWKD9>^-Rq_ir4sNJRIqNc1}*H=-~kY`mxw!G3CM-T z$zQOv|AI7G7d!b>Y1(s4nby)&q|W8czO;2fX7j$+PZa;LCu4!M{2bgHcL~pQcIJLE z@aKT@T>sM3{$CS|zk&5rkRt4O_P@94i&f_oWYKt#UgPac<&-)!3%~-t2zb8^ZHAu-oMt&DBoBCoEp}MR~?9f<|N3%!V zgTHz*6OP5&!*r@Ho>6;HDlZs41S!}Wi_ckJkzl72>LSPDc5T7sS`v$Xj^9a^&6&O=t)&U<42XaGSjoP8>@bRA)=PQk1BFE3 zDoqt;(eHTL>jAprP{&2=6o&@FbPdEY+xeiR`>@%_5ug>FDfw$?@pBJ0-#Ee)2xiK| z*02_ierxs}lPj(MoX}VNm=M4ltIz;S^VwPp3WQ%us@vm^<^>L>17gDtf_@m^0gQo9 z^i{Sn-E&^Z-@HkZ11(88xkqP?phsxlSw?@_!*Vl0OjvX^}*3Y zc=Eyd6N1sttI`M8k2_cm9b{kCS64$Begc&bv+g6)uiSD;>#f^@N32Aw1aMW0F$@A9 zC*981AH5Skgi@evp|J(N-3cIE=|`wHh4HBG&VL;}tdlR7gH2m)OXiZtSHZ^jbA05E#u=rpYT^}%P&+{t9cy9HV zJu0;2dC-pZ>!iQN6YoMss~2v1tf2r1?F7Ot={%^yhev>3-Us% zUBXkox?xL1^tj-wmQ31ANSGFsob+)tDs4)bV&~G=1Q&YubEItP==6nEWpg8IMS9$x6 zJklLS!|<9?`$)A>JD;BAh!}#GEVW>_RkCbK%|G%-He^xWp%(S7MKC}-wKwAqr^`ZC zPjOxzXDxfB*1~_V6KcDVr3H!mIi&rK4 zAFP$@73O{2n}?qeRCCeGLOjkEdyC-nPD=H}6SDD|R^4^B!2ZqCHt{QRui-{xSeE@a{dz8 zJkJ4&Aq(1_3nEP(+&T9L`5RTSKNlA-E=!3HC;2a>L$L<3f~RdP?EQ+mC{Y%+74T>z=OJYn_obQWaJY>CM?7b1D+F*`BWRS2(QeD8V{&2p`?= z+Sv84)Yww_S+sJ?1Nb$2qZ&Mv%Mu|GL;3KQOY;iV5;!E@mfap+@01M_;YedcsfF*^ z&Z6AC?~uD9#q2q(O1eo)Z;L^5`(}cl*jg$pIwT1b(y^fTWgN&T%t_kfd#X4O@vMAQ z1*FXOM1U}PNCdBsC792dwj(ienDboQr$2Gh_l@ae(9xl6&=$>)--72H*eo4RrByL# zGc+ghDn;nMPNm>~DMOC%s|*Z6@vjb}ensF8+rOP(ns8faGIi*%Zl|#$OKkX>%_63r zy4Ow?{nm(~ju(<7pZNPrvN(Q}Qjn?TpQie5IarO2-=-c*`ebr*QW7_kuqe=q0c2 z^A{;Z1MNp7I>%9jRHnyATFNN~?E)VRhl#suoU@n=eEMifgCp&1a@Uijik$Gd)BCh# zYut{r0ek9rrK5Weo%^}eodLDMTd0qmRhljZ zMMg)zlz6(#r_0Zs7g+VxjBcTPzxd=WWsft)y4cT0MKDwMrG#t<#Ad}$QRWw)YNt4e zTxWQ;9ZG6Z6Y$BEqwsOneoZ7n`iN?W#VKWT25}?v8DiZN`jMYDo|r3*F{HiU;~Z=T zY~efka$V4ftMcDwa+q*YNxlrbZE-TE7|E7OR$Sd0;&2`|*YoMrK!tN;6sTKcklp_7 zFqi$wUG#e*wQ>w5=sp#mE!rxpR8pzC;|kd4x8Q|wr$l@NZL_#v%INc4_OKrq`Jwd} zKw<`-vv08R0y$*WVwY5js$s9^jWA4Sk{E`wSex7$4_ah6mD?=OxU*<|{#eg-d6a3@ zHJdlXSUTCI{dxaWIdAv%s31(2kFw30zRo?g1T>qvd}Jp2(;7-JYDzUnW!U|SZmJ@R z%vg>eW=;ytMUIX`5ojUFbjLNS-Tsdf$Zp2UkG=sr^%GRkBjn~f8$wMp>ysS=Xx|3M zb;C>3A}oG6h1yh00#oD1uPEW5T(P|^&iqjtkE933i8@8g#;Jr3j}G>02R9qC6We9u zD_0c2kT8^@-)A*5_hE$TOCcfWtlh&(pa)EhC)eyms;Y9IYhUWXVSki4Rql9X4pGzd z77Bza#@#ODE6a*)K))GhssYJHM3^?4?%`RgL&@-m2Do zEj{BI`1JdaV{GMXPqpfX^?Oee9)<^>qv5{FG3MTtv<@OF z-K;fBT6`_1h#xM|sy2sK-wo`M$fRUEH$$33y4o zmFfJ*)q8jP>I(R3Z@(UG^A!jK@klXGKsf_{{9^)zT)L9Vftm_$p0qHmS5`+wmTLPQvGGX%dLAM-TNR&zJGqc@jzSFKvp=`mrW=7DcBpRJwABl zsxG~Ozsxt_#qoLSFJ?A!kC#@Eufdgj2(2H z_W~s@D26VO@&+&>2S4`%_Z_;udrxcg`)GK?P9++%?t}MgVuCiwai_mF@fJywiUF;> zncz@xCC0iru;YgvyKS(7W$0-5H0xdl_Vgon)9%T|cYr1;)J|g;pgh-o*I`i-WlW-t z4HP~FUQ|NC^26MN`pUI>uX{$F%e1R00*JGx(wEM!2?8l>{;#0su>`xc0QJ&k0M9sq z3_B^w{`5_QoC7QNfRn=qbP0$)0Pmfs2g|AtxJfwQBTgBrjLSvrP9uZKrFDM*J%=nE z#4PqKBk;o<#1PmT3-{rr8dRjs3soS!zUkWIk~PB(rq*XgFGqi>7>`i{f0pUHUwVTX zR1C)A*go8x#zeMHKzE(3U!KYKhIV*!j3t1~(LMPN%zeyQL|}W}k3xF@@CjY(+2uE} z48J9A&u6H*#QVuNUtcGj_(B40%+rT>Zk2^>&%7s;oQ6L|lHnpW!`07Ko#7C2kl$;! z{9m(C`U^WU2f}g>?=mk0nDXK9_Jxq&PJAP=l{8t@I27XHJBAxV!LWI&TT)CW8%RRO zEZ%ST4C7RIA^%*IycqY_oiQ?|EuQKy|H^Od{}`bja(7QQ_nfkP%_N^_?6T_yaDZll zD%wHvQ4hNfvyg?hsJ2z3_&vLYWZ32={k#q$ib{#*IGB%`FR%tzBaxz$5wY z?iHdb-K?j@zP6yQ%=evWH4f6)oGCo?3#eXppKjm#f|T%W1q~W)*gH>{2{&$=?(Jd1RYx&8+cayR@i%g1fo_`4`Sz-TMDC3nFsH{N0zT9Ja;tAFv% zR1Q7<(YVfYUAI`016>xM(o!VO6aOk+iN0Dv_dr!}G!spss6_3((XO#D5v+joUhw~t zfk-kBv?|~P_yE|4FZt=w^f6^Ax9OkaX5W6`dV?W*S#`8`Y%Tfyfh{;6iQBlLN;C3J zHELM0^{xlvWDXRB-Z#(nu*~Nqm362`6;ZW|J5qqX3v=>O}XJEJ%P2(N31FK)JHvwPIVS*f;G63^IG7@ zC-}1C<=R!#*;sVnO1U`C*Z^(PH^^vkyBC(_?%qdCnen}4+ zZbmE%+R1kyT??b$dgceYh+AJefnU<=@}nzjW~4hxJVE%m3Qw$7lU+e2St$bHIVD~A zycJ&y9>+=d?EKfWN=YBxr5!5x+Gw}r=$4#eWEi-XuYVPKJG=;Au00N)T_`d&? z1FsZ-ECtQ`CWnhnX{9|p-b7dQ3e$OAPoW*A;q&Huxu4zl+q#)AXIf>*{Nm%eTcc1; z>qhJ$cyyd2(0`%Y8|47Wqu6iGD46N3Gn|#C9Z%F;_7bpoX!=Krt{fmR*qrnI^2Te^ z)>2R6Q!s4ntbe9WLH@w4w z4FlNQrh;;n`g%aA9>g`Fw@aYc(?YKg$a9j@s^YDZO>;+E+Wr>iubU<%$KYdo0wo;qr~CO>&Z|~DZiz2k1sgBBIr$ZU58`QqkNmd0gc=$FdU!H(d#G%# zR&bbk5dGLypP{SJShQ8o^RHI2X5H-@FDB;mCAVJbMUIwHiAQ|eC2~HTle4#j*FU1R zEElmU*H}Whe~xZT(RQGMpx0{_KF7Le2WJQ6ia>B+H^qQ60S|*zhIi*J4E%mAwm0cw zrC?laN1uI+Z2-rP6Sv-b^aA@p<2TDMKIc0VERKUWlIwD=Vz=awn}tt=cqN2K)j5XC zy>VV3mquF9k|pPsR@dsyPY&~ zYzVNXburv4!X6(PyXeimU9GR1P(gm;Y|R{T%~t>8EDU1yFKqen)t$XD&fts4`b*JN zHSvUXOrWK8=_h9NTxm3kN*8@!X&SmKkUe)JE5^UyI--1-^>$<7n=5GZ_4N3KstGtXT^5NJDoP)rc2J1v3~~$ zPmNyyi|>dwr=ossEL|FV#Ux3={u!i07@`8WbQ47FRX0y#FS9(}Z%_~lugj+}H4x3@ zw`Y_Hn{^ETk&Jl3tBPey@R4M+2inYMPZ-1q_2U@*TBSgJn(w;Y=lq(@d;D1Kv>e7I zDo`BheZB%Kj2FdHyCKAe+*6Eyd9j5`b-M&Zc&_RL&Sn-ta78-q?W0?5rQr5+i<_JK z#%KCVx9fPyVe8Dw0CUiA&co~tPF6k%SJn-0g=rSDNc~7!%LwU2G6aN8ieT;Qz15D8 zv}AgNZ_$4*IYOMZX$jrvYjJ_2B=ZZ^b8njI65^Cv5zw#N)5ns4UH2zi!w05HxpC~L z(cZ3!Qq1X8e=>g-zwih#OGXyIGMPsQUXoQTK6i8Thoe1^svFez$vqu@|D#0m6ofqF zi&5x5m%g)TZUGh^D-0=4l(!CoD7@oQ(s83y`SdO>t@mZQi*J%Pcf{s<=&iC#?{KBc zgw2`LJ|k-vAHRuMT~|C%XW-?66a-~AhNEF}bE0WM7~O0khP48rwTgPwvbg@iPcEOK z4#Nv2xjXGL$*R1s9ele&G*hA&Wf*6yn6f%c@ki^N`4#&-wn!P0Ds&EkuUG!`wr6fA;Vzl_ST86y;1HB zy{F&x=~@w?Dqa%|qQC4k9FnCG?ap^>%!h=j5rTJL3dJ9KId<%u{jD9>#O{*Uo5|Zb zM^h7>fUeYO$P;$%Z3m!NoE`C_RA8McY?oAtirHL`Bo*Ll}F4O;x;%p(x z=DgqYbO&twgmCUpBu^;dIDm6}v`!0AIcgi}%xp@%uC;d+eTBpY*Vdx789ol9bu~5c#5TS&--?!K% z^sg3x<5cFgOElW7@RttX>FmobhiW;y_M<;>5_lTCa?CJ32O;~I$~Aoxp&p_O-QJyE z6nh;v3OpY){F~g%rW+|vEdD<{Ylp8cQUYFdf}kA7J&erz@o?t_&$|t8!7wI+ow#g&1d5n>C!9Eg&fp>pTzPa$f@Ob4 zyuqSt)7b)@U#BNjVoQZdK;(TPHp5hx(d5nW>0-W04hUN7=c4#QTkJk9Vg7PeSVs$Q zn2bUUU)yWl>OLk?R-@_4cH;w_JND)5i5f-xH;5wX(R|?*NbDi}wX_>zkMVCTQji|s zCGS(5oqJaQhY~pd1p))Z-nE=}S8xl-pG1F&apxf~=#616C7ZfNrmrQ2P|6hW`ROEF ziFKQh6sd~}!ALe0I8WyDdEQ&Yo$H{7NsAYZI0VfiB9)lcY7iuVPoK=WH<@5eO*Zdt zQBkhbPO}!U{MTeyuAGD4*u>X*;k61bcK3ceVVeHRrc{NvIrdG!PvytQm--8afcG&+ z6u3)Sn!kg>T1ms~lxopaZZMI4JwB`Sl&d!MF^&k&Xc%gU%`vs@r|VajC*e)Q2*GVa z*)Pe)_Ag*uGh)jvpU(xG_Xq>G^NOUI0rmCmd)PkJ0976X+z(`KvAO}q~I7= zcwx`siBN2`Ps{h((37vh04GDVtLxq!ZT3g*4DU`f!Xp zA9y}k1DgWs4QTFAN3==UYSEtG$?Eox2WT3kbkjw}QhLFoeAHwodTK1}lpOiP%Xy?L zJ@x2D&xkzF%G{TJH^t7{m+y}@x_@|B!wbUKw8w`=ZVX4Of#iG7Dj)U_or^ZqKmG*j z(53o4Dt%}>K4zF7n^ascyqS{V2M^r}zBb$}@m9}}S7z9Ib=Pu~Sz^8t>1~-q(E#NQ z7`&7|0T4Y6$Y$ulUlxjMrv~J6ZRHr$1@A3Pw6+;1RO<*2D^Kti`umWDx*4ujZy%X) znz<62I!ku#j{2mi`4~sTXmP^1BcP(~x=y@rGFrZ5W3wH@Mol6ze49?WX9FrV6k5tf5a0FIxg05VJFB)-`-k*$II#iFSF=inXrKQ}uZ)cQicTbjKPuyKA@SFWHM zPJKCMv)>T;sk_LU=;$2bd}F9h6{9F@MkW-8aOgM2Zri*lW_c|M=!tOtG`o z{FYfO{zo5Q&5fZKDUn9c1Rgoi-hTX1+P)-8^TCZW%CREARj#XsW%pwZT{7QOmE0)K zpd4ba`D7}_!L6honcVvGQ~s;^IDw#h|+t&{tITFMzh zQdJi=XGAu)i=&s2y8GrNNrj}L1G9sq3mqc!K3TElNBJm{1F3kB)}|)_TUe8{|2$cW zwz-|;&jG&R_Bfs-r_;!Pmuw8>X8ik`H3|vfA1kShm7F{uBf;?4%?6|jLNxmXuFZh%1fL`-hUtd#fnOd`jS52NqYN=$tA3)4Vq zFei>9;AsL|uomk9a4X+2rgV5-xn+cEvqhzZ5aXRTM#CrBGv41kRh`owBGcnkl!If2uB2ZOZI+#nsX7X~YG)Ocjv8DyY?CZrLvJ6kdw-N4d5bth z=7$lP7ouV=H_gZwRYtBuf7&GNxwFqv{R3W;b-&d>}M-&4~xANyVwg_M){P*zNekk>vV7)Wza#q zq=RiBNfOU@t+LTmz2cPH;x>h+&fs#9J`UEU(D(IFUHI^kERJjQsUB)%cg=y?vIJrd z*SXayA#Ph8;#>h5w0E=C_$)zCaDUU*-P?wj|BSPZK5~O*b(^-FGEkd|p;2YWw0|~K zy>4JOqb%bx>NtKa&D*HUyuMw)u~>SB38?!Ms4)r2%gf!YT5G)qvd12Ygkf3G7NGfZ zA}==;Beh3evmoCXHSo{=SnfZdy(08~`}VDB=n1e`(;(>RV)_e1DDY;PgW?EXL*n-v zX7u5uN$E>1@Z!CC(5m1d;NF{`O9@ zE7VnUinE<*D~d z%mG{uCNw1ZKwX@8@xA?n-`w6j4pZ8Eo3p3mV#0WZ?nvKcDuJ#5@29|9UX@Zl7MA zZ()7U#V_e?8s!G;TJDi2?)D3v0afVr{=~@~!!J`?_YK^>JB;(W^lujL@8K~~ZL`a3 zF14d%*61HA1v=>X8po{1c98%~wgoNqJ3k(<>&Ud!Bq%%UgTZMFI&K|7x+ z?kxIfcOww`7hkkB9?UtZ$|W|RH@UYLMU>V~EgJA>9Wz;!D5@7NvRoh5yFQpejF(ny zZ=k{xcWZ|VT4&k~;U6`jdQ{um2O}g0?K(6(ug5*RIAqpc0xz?*ApAGKi8dA+Z&au6 zY5Wf__cXWz$P35su%~Pqc^gx-csF`Lvk(XVre&K<)%bFbHXtw0=&UL!nGY7MxWldx zQ$(yMoZOb?7{W-q<^R++TT9=&nH&_&o!-XxySD*Q{&8*XN5YRWRBE=!REd!pt@4sY zeEos-#5%3M$&ak#^@*|CFuo=)jKx5w_D7c@X;{1Rm-zmH9VE}V=+{q=kdITF5(WlZ zUD=7+We!~UnH8jl;L>T0F=)u7=#z?Lm4pqSbtQ;HL1huUJ{-SM9m*aXxCTSB6OeFy zhRN2NUZ-W%+H9i{Lho@*@JBQ9zGn?BTRTdjPvp#1LVMr0QuyLV9Ud09WS1=6VC=m{ z@;qU|tB3iq?>Fap=NmR{H)C<@aS`VUEm3}cOa8&y*Fv&q{-H2H!Ow^HpBVdjTxThe z*1~U*=B&xb9_Y87Su2nfbVo)!@Sd`$yrsqBY><3QwQORlcM__K9U5sm%S~zlmfZ(2 zNB7c$tdc7*an9V$1#&z}5cF~Aqg9OVv#sJv>K;jUqxkn0!(-bcGwj=mIUVk zV{dv=S4&AQ%c9qu!FOW|Usl+y=ud9DX(Y=z6+(-PRU<8hj4{Xq6`rF#-K2y%W^sU8 zBpIA4+?MLV2stqFrM1DNXKNx9Ipx6Pf3uzqeSN z&AsIK*7_oG+(MD*WZc}@WQvim8DZtVB}OM&!+UiMsg-Cf2P$&ZVAoO{w08+mScoXs zQ}$1OwQr1?8D=oQ?rai0hV#)A&;H}KWcm4)=ag1#bB)3Ma_D-)pT|ARF(Z!biwx=H z_OlA6euWgs*QJRkd_oXORW9@?010~+x^dl&xym+v;5<)42q9+U4Yh4 zNlGdeW(Bp*?}jw((k^5f_@<6b>|xSOH|hXzkqpaRN#31Xx*vygEk(bY_KyZycFdT( z?`awdm?L~vUocRVl9N`+L|{XzNdsG%L@^P*>};4;w293 zQj^zQs}4a^xA*w%PfN0<3hBOg1JU8$qNu*NM0UgQ&#cjfmXQmF*-8w#W2pL2NUVrj zX@iK&zNetG5I7+$V<io^KhB1@LFjI^qs&oy zI=&tXGP6tSdO$g9vp-M7ks8N2i^G3LOz}&Hk6M3Bl8p<$&@|nO#9Yuy?Opy1Xz-MFjZEza^R3&YrVCwcM5RwPQ+}| zM;^HSxMY=5lD{GFLUYUxeX&+ZB_vgMI+phe?UFN7|NOSK;rB+bP_q5vMoc49^PHtNjPdMMxYH#giF%J#{-Brrg_u_0 zkok%@zbCnr)8y_VCc=*wDXKT}YNka`805_2trE2wN4ut{AuUL|aIgzjfFMT1m|HvK zulsTkd|!aOtNS<2*;Ra6e~j&r6;kbKZf@Qs1jY27WEjD>8lN7Hz|G%%Cg z^s464ndR5XVK!-yJQZ-(rMC#L=?m`WFZq(I`XyGvzBOfhBGLlr>P#CygS@vG#H#Gi zn(d=T4!&tAPziMqR*ti-nYS>I+6d- zxSr%+XT?te1KzJAGl_o0kU`A*=mij&wqakbQ@j#<<~{G)4xVV#<}1&w$e-L9O%}bg z)a}c8YC*0kwI=tHdd@EdUorPAosK{N3LZX6o0q~=#|i%y$yv*^t7)`vI1EH*r-|DH z!|g)PRlsb4VCqJqy7FT>53FY*(~ah-jW!)X70(wONwVMY^qSfITuZdsUWAWN=A%q) z0zxJ=7ECwsc@lhJ>u*`_U^f9t8W~N)p5QEY4^Q=fr&v37mHH-?*t^Hay`3IvSoPDk z0uOhXFV+L0W?n;3vlLzVUWYOqeR^To(Q0#hMNlhF?l^nbeQ^@?u%|-ZMn2OFE$;b= zL#NblT~YI?3q-D1rSCB7ra%;OmA}IRJxv49x-u>JWq359FxZUk zW)IA$pv@j>4(mmX--fMwq;UhwWpQ)8u;;_*Hj|RPn6tg(z2dzFt{o)vS~M10!Duhg zd2>m!$nMW&DEHrASf78^qJy=QJPJugS}-jG3q-x`30*Z1cVF=GeFOg__>v9ZNm`QX zb14JvZ;@u$@dTB{0f!O4joSLTUaLC%``Dt8OP}bIQE}-e3CI1Bro8>Od=uTU`f_XM z?-iLYr%;ukBk(MgG|D9L45lrLcMLml^U|(6$!5*t=B$jqT?Weu=1c;+xriFp3UWA~ z=2-7cIN+Z1p|sYGGhb(9&;EwiZ)L-$(l3B7?&LES@ah#>d$v2*j(2#xI~(L zZC>R#F~h5E1_)!q!ZVL!znbtIv%zY&S59>3%t@A-yN6biDJLv3!b)1=*i$qvh}}{+&Gb`YQ|1>+$N2L*d_j#(xNT3=42a|oZMn_cnsGjDyx*jW@J#H8TCat|bpGhWmUhD+ty-eh$u5aPzDi)mOavO15Q7MLk+w z>&W#e4wnjD$S)}b+z83&VlLh;Apns&+H{~UfFT!35!Fq-z>vdbp*>HR4y1UziJ$ty zDT_^rfU%fA>FGdFJvOWCEck^@PQVO20QQ-|f>n;yTS%WoJ{U2i=~&x^1US!r8c=l8%>Dx+%Xv*9)dJ>3{@z0rZdPgMctQpfVm;M5xTz_8w< znh3&*rfqfNF#;hNXa!z7n!%j0#Q%w!9PZB{j5+e%ks!;P3QmWVDaJ#i&AY%|C7}=L zz9nwtcC}VIGdifDJm*ewoRorLA`ga1+06kAhwYF@`Vap0@3eU9f)BuB%)d<){@XXN z#P~H34@NsF@+D^8J@u7#G~-!)X3yGDYwuBI){uFT5MJJhfwySYQwHk~YmgLJO;;A_ zsfZ#e)9Oa|>ht=irSTN|Jw>t%-lcjX{3}5LzU+3b;&yjhm3AO=|5(Bcf?J%|#Yfv2 zUDY#%s~oI`BXN>;T>P!-w;o@vBH8Q;^ZmhP)vp{%dNxo>Fcr0BNTl;5jxHquJdzIF-o z`h3)3%n5#E%z5`e*@^USWsy^-0Mep8qr=fW$A$Ox87Sb^qAYsF@5xlwEd+wb5vn-a z1rjs58m6{7;HQtf0u^>Gc4Dgzd?8lT2hv{!a^TMCo_zc<`;mjz0CZk@)6mGupLe zRqH#?eSZP2nI>zB7Qp%BN}Xev5nNnOtnaam!k+O=MgJ8e09bEL_#Dj)0`-ynKH~ zW+B5W15b+sM|5xq%W|vnX;tV69j(kQxPpkE(2htTgNu=#pgdzcQ@ zu-Rei8{&2y=Y^P>hK7VWB5}0m(S+FzKu-9ai5^UF!#4kAXm;(*veHnso9lqtNY`x1 zs_ScY?Wy69lIn%54Z~LoN1kJSv?|mKyiS6W=2>(iH0wib`myuFr@myTdp3ME#>`;G zTBa0%%w~cP$|=@6YgR7q41Is%js`~ZvPC+)H^(U(nULOIPTSb-I>~%DryRv(NlCaLG=v z(pFBlG_n?;s~U6E8WOPqRR+IbA2X{yweT7ns_}yjgzADsho`a{{0Jku7g|y2EP;9r z4-KEuD&PbZ<*@B2jkO5<&=(51qY0~ScA%Yf`Gde{?+^t9+V#}`%?Rb$!MIJ>`d6tl z1*;3^a2@Y{82MAD_2}L|DSeZVfyUClON`xc#K>mK3cBQO!|_$Cwk72`^uyiwecm*e z3XrRYxz!{waXXI)J@sHT>eKBSt+p@u1W7hb{60i!`|i7SgL^r5wSJbd_(V>oF;Suy zD0$1)SW$K_bRs*=%~b-KS0&D;7~R-@l2-uV>(UUszD_rPGN^l7XCUwZMYWeJ& zue_RR4bnJ%bkL!0<0LP-NAqxn170fAH`eT&Mtq@!(NFW$ER?a5ny5{-7lY%&Tb_qi zBtDMIz6vj@YTK+pXv~-}J6)eoTAA4}k6**zAJ&fa&^Cki&wc*#qRTsJB+}CZv ztW1jAm5+Sx~RKeBEVmUTHM?=eJAHn`+`ni{5as>}t>S;{=4}vmNF=NL zr4Nv0_zUL@Uo0c{b?e~sPFy7H$;6+<|BQRH%tGqK>1pTCm6A>Fv>+1w#3GZDdXv-(&wWs@B7t^@|`tBd}4+pppL87s=UpPL2tt5``@=YO9 z+Cek8eaq6xB}x2qtpamLOHZ9@O$ zru=TNO>1**Ud~LRdZKnL{3iu9_&Ms_8zN{t>3y@Vdrk%#68eq( zl?d`*Er95&qG$;lvD+AF8LTltV`QP?PSy$xcVCXlXv1A1O8zL(Cp!xXCJ;wY4Uxd?(;@n}>&6 z9NsD($L%YmJ#qI5LTU623L_3k-{*iB8rxJ&p_)v*HfnzIvTiSX8`_ZL5yde4^TJ!_ zqzXFQTUh@$nfrX8`!8{K;Nj_6bNV=VSo^H`*S2g@VoWw|b=rIQl?fU3aS4ZK-^(TY z$IN&lwFyTC00*v{P3Z|{pnB()w80jB?KGgIgB*8hq0+w7wVr##w;`BVTP^FBYjdQp z%dW0h?m?R@`R|yVdVDlXLfAWQWx2d-AyhRx?}E2Qwwjk=LlXt}48}p1V+bQ`N+XPm zqQ`CG`_nqZs-KjuBdKPlB$?o%w*Q^=JM8XDBu2lI|X)U3aP7!&{J`Hgq zq`I7{(NSlepMh(Hvq|x@oHz1Lxs={bKY+hW9vF{gE-3NVN>nxbl{;D5T&oX&9&3{< z<^C9az?JEpy6J@dE<<;Cl5EodPHz$`_fj4nN&{^I{{_cyEUje4E-{_{8Du}h=NeOa zYo=VQJM!T-XW<%r;=p_(?bSrUkVd8$Bc#E|0+^d%v=SbqAlYt;-zbGySs+pLyDU4? zqxtMg)ir7MpZ9RfPAc~tClvb9x}I@I;qC2i{z&fQ?gq#Cjz_()A_Q^&>^<4jYSWG1 z8P!=P%%S9t^J*Kn)-%-GCs7qd*j^o;sZTce^f|+vPi7R2KQyEwNhulG zAw=1$q&Q~CUS)F}dmau-Daty=!8xexopFvmDkWrO9S#R&oU9`|=NP{yt=ISS{_FSr zBi+vJ8jtIKJ=XQO9@lmG?!@?jK&&5Yke7eL@gISwFo4h9$|T9|jCe{ACc(;U_?~zf zb#fgHA*}a;_l>yS_lp8ickKOeMMV$!*ApJ~eppC&O-GwG=fDTbJRNAO6z$`1cIC63 z$>967;8x>WsI=YW2@ex`f5;_Cfex%8$4k^*IUJAWMxeS9DL#fT@#%N;T!kbubUhF? zSX0thS7ca}Gj9kJ=XtZxP0W;}6g=oA`YU^#EAl9!HHcpT-mI{pFJq0cK{omX5xC4~ zh|7k>lUo(Bn;IjN@`IMs}hS_w1?pBcXtE*ogLuc%;e$ANb?_jDUG;H1b?ajfC4| zQc|31;62_*#kG5uki=#$Cpi%YRc+-jQk!}i*=W4$ErEDI%lHm$S#)4oMNJoUD$gr6cK`>s7G2hVh9Z^<;cZ$4pxVC6V z=BrFp2qU_|@0EcIUh5n3p66#q_P%?yLgJi+O(dV=Z$D=5jzV zUl=7X9}?!4_&RDUHQUYAdedqQ{#{Gw7Z%~8j~I_w3C#NZjX;V59?n$va&mA$>Ol01 zEVRS6rg1>QweC`;i3Eg?2}WZXe9N%dOHU%iH$c7w!i?rgx1FZ*)e|j=vvzf(M-ALj z0K2CaeST~o@xj@8tollP0^jWGQ&1DlH=SHP8gwo7YlJcpgoIB`R{rxD*h0g{l^|*# zQOY-Dehfq@O}SJ-79$lS?E0uSM19T9`Z{lLl$=#e@OmG_HuajQzQFX>7c!yug;(yB z!v;6rBA2qarIMEu=o!dKI>KD2M>}0ua$zyh28#1t6;<3IIIim)>qmSVQ8=G*!VMz& zQNK}A3xX}#;pf@e%r$Cc0aVBO6k3C+-n2Kw`>*P#Fn3Y6)%FW#g~SI9C)>c&mDgJF zLa(aRDoP5KB^R@8KB4XS+w8wcYm}T(P1W;OREinNs1IxlIkiOmR;~Bc3sDi{Q8Tn! zNfhU$rTErcRdst=iz4gUh!k@q0|e_kkUOXujt@#aY;G^6*a@a>-GX7o46<^Wt%xT5 z+0s@Hx+yVVDcnnT7bN)gP#Xf8dwQ3qDn1_7*Ke2*a~tu1Y*c0KoJHub)=*kk-fxqn zVxRYaPZSSK>njxK%w*%JGNv>PO;}J(SyK7&_}Bl3Tpg6*|8`EF3to*|fwdhi82Qhze+J4J~sRT@OPwCcP71+F7g3POu`5 zS1kj#_f=ZGkB#$C`cU73K?=mN_{t+PJ4WqYfd!U_=Z>9jzn6v1)b}fbn|9R7+Fkkm z$=uVdAN2a|9hS#}P7R=~BuYh611+2d+dL9)j9C>ftS4GooAdfY>4O?(L9nEiy`Ez`Suic%{+p`Z-=I zzOQ~CGIvA>-_ZUIALZNlrANIrwKf$1z!URtyEk@_)Njdk-S&N=PF z=@G6OJq(3nB74J2@mDVNEK0|(i`=%TZf%%AP})I6iYKPQCiNESB)TI1&X zV2dLb_#u@{y`z){DY941AV%+JbYrqwy3}C zsUta74Er8wtBl*|dbX_9my-v)AQdajR+!-9_0yeVXQA<~-)1orJLQU8zn=jdW=?PD zG-zu~6G|m>8aQ7^AQO|IytS}y!mNS}D&kA5pTJGKwy|2*N?gfLvr!&%=%`3=YY+c$ z4Q;Cd??4@9; z$?7r@N@u6_mDSYG@$79~tPrh6XwZOfewR<}owoTo%Lr@c3|=^~=FM&Snr;PXEg_zQ zvKPsHTG*`rB*9fae<7Cg-7CcLW0DIp-MX?^(LO)?D=sspw}5Zh ziPj=zt1LzM>NUp4%_8OmnI<^ukC=_9{aE{7pf8}mVC!7 zo~a;Xy@$3)pZx7>_+MgkZ2=eqGy?HZWYADi58`_WZYz~N`znW z`8s%RWD45JDHfDV=uz)x%H3A3twr;QFS);l+Uwhc${xph_N(dL{ehqaL>lMX8ZnZri4~RG^w|SKNNU?aXyzq>BMTEdF`d=jmcO{4V=waKZV6AL^g(G z5fpH+5B9pel-}TB3SU|H`4d}bar9qJ7%OymPt~%aRthvTEs9P#5mtv-98fLe()r|T z7EOm=dn)+GJFOZar1Yx9+!Tj{g_q{#p9bVLm@8w1NHoaLdKnyX-MihJ8XH`x&iKyE z2+EFpI8)VfY2D_Am)vu3cEZ}L8D_@fu93-n(|or_LuAkFL$11J)#TL8y5eaxea7wT zZnO2bkYmVC>+3~s3c+OUpk zax{Z65*0f)d)IH**N=3iaT{HogM+QJprJTF)I`GQJZwGl>z9wg^pj$%#$gHHAjSH} zM}sj8F%LCSUMXm-5p-MDqz?)&Qh8ibAj+Drxyaa1E`G>}R|9I9qa-z4Z@+@I1MVF( ziZAfVu$>MSGcm~ZPmNYblFf&ar$q)!8wY|Et9G+14Zu6!Gx)WxBdU#wbdcW`#(KYc10T+##MVc!{qFv#q7Wtk4tk| z-K`@O%I2&O1@Z;s3gpb*m62KN#wh-oOrbFnvMIDGi6>WO3xFuB5wu?-qhf)*I40P? z{Q8wiOJCAFLHl8!TJjw~%Ir-MgUlGcm{B6nTCNNp+-zJ*zBU833cn%19avTN!gr?M zDTZ%l2;8`#7TaZ0Hk=%iHt4W_Ju`XPSRy75sNdaJPW z^P^8#mg?>6x>TZU_o!dxR1Q`Qmv5L>q*1dw;7q%$ZmeB761VCuuCzYjLLuS%yON** zbkRw!3$=+-v4Vtx{IZ50FEVtdojM?$;^o;bLQeU!4ozL=VTOpgO}mKBxYrh1tt~z? zX(SCRhn2F_mUxHBnd6$pAIiK#{R^CS8R)g=g|SojBa-SIoGoy;4a#unqsb^0*Y zXkq;?)BePS(yXGJqd4Gh8b$nQsS#`06->m?#-KUNB_4OzJD9GWb){R^Rp-mFKn%9G zF0i~bzLucl*Z@oXOqc}s!C8hBHO($OtkwLi)}d$?@N8C3f!8|uoGVX25Ne6d3fj`_1c6B_g3!=YDT$qSfqV`ofj z3sDOhejTB08NX4U=V0xYsvD=YCdO#%^V9q`^(E zvHoSQ@S_Z`Kz4$nfT+eBbquWmTZrkB1P|irsa3HB*_SQu5P{pB3#sNCVz0mvzmyygRb)T17EONw!@_cEz3VygobnP!oB_)UVwo{4+|@ zQHUx{+}p1cF<4f@ialmewz9^l_E-y`y z#7IM}=7SgJ3#yki_?ABEYoKi;LyGEi{gMd0@EEULN}d+P!&ItD@lt?}anrZm3|wC~ z0XMtoT)guvYkX_%z0Nk8M78fYzO9KI!hy-}{%mdjP&Q7oi+8+5HlWkdVIt=ki0AWb zaXDszyq;1LkZ@-q{PG4DIQdb&>K-1P)}#3*`uzs##%)uvc~8=re0}vd^e-Met#|Vj zN7T!TKDB~>k3$f0{mhP+@01P40&j8^xENmS*GEHN2$4;kdL47@#*;q8m+^K6?!+$Y zAY73u!ZbsLbp=~19=8KM(s<{xqA4z^PYoqBElwh@6Lt-J^dN(Rb|{jJGLrF*9K%D|BPqO4vl^qf;L8?uD6Wc$l5BIA^rTl)Moam z4D(S2w>Xs-%Tp);F4SyeEqarCdilG~hK*DF4Z>}fR#yLzN$O4&vvtCeNgfwexuvUi zYpjPNbGl%st&_fjBnR^ku_qHzK-!N*gBX&w({(9(c9e{`nEk;gC#nvX=AbW`D<#1* zC)ve_@KuVMPkO0j@{qAdY>nmfWr)^VV>}DU0N(*KC zfA;8ag4WfH=saV}s4>pjdSmf=F!gvqh=mQ)!*-uxS$d7 zYeS$~*IfS1$+u@qRV;d4tu>uHZL=FlE7-%<;HK-A76v=ld2qh3#anTysl4|miSeow zO44ynrP`tLBmu5E48)ji0 z$QZz0iWGK4adoOJn)d<*f{!a3O;JM^MERK(wOSgI>-*(8ZjVUDiU+V6Id_P6=iBSf zP9G+ldQ}%&Wekch#eP>2&A+fp62Feffrl)$KqxiF#7Ymf>2qzyl#@jet-I@1HYDsg zu4A$Bxu{Sokf>dS(b&{{E!a-Gwq9AJQk?BVN>HwE49!DzxB~ZkM|z}Ivp)^W+uY5N z-}!;sb0E;{yWC-3njaf)_AW`+p83TpqTzPSTJ@Euz9lkioFc}!#dsHBjDRO@-(;U( zfV5SKI5`!tVCHxW!#&i+SP2kRf{Sy?56#muA3ay98$RpTu+cq`zayXRVkaJeh?2Nd zr_x@=@V?lkLQh;o!%|hy1J(A8;Imo=&sWK`xQ74qcIx~Jju9zvvaUu6`8NJg=XEP5p!uAUue*qW0 z;*={arL7dctJk82HA0^-y%4AAi|@H0z1U~3@?~RA0$islqR#nUP|J9>ajY)sIl@{% zB2b6+EZx)G$VPj7?_oDZ`|(WI+_qlLy43HBl97f`+>M#Z$PbPAPd!5ehBoq`WTgXjUi`tY}m}fb> zu5fNCP;tPPGA(%QT!C=To1yH2y2{q&8X2C6(-?$F(NTD;c@1_3zuf84De}unNVKD4 zidZn57RT0D&gfAo=;23*T#^hUxEs+CCYhqQeyYBfvRq~PfVy5a9|Q57HA`K)u&Ljo z4&>sL93m!1CT4Xj)*kxJIZvKHzm4p+P#2_?4AwPmpDiPkWm<5~*3OxXh;+)y{FK+% ztP;sr^@3kW5#eAN76CoCagIIL#PFgllJ8U{c-TI^3Jc`5eR1ZPY)h@cBVtmnXm!X) z`j_`RT3&l%LaT)=ps03Kc_lfC2YD4bv5N6aatx!hE&BS~8Ika)g_4LC&WHMl0v@~Z zVq&nSJ_{_%aWP1z>*G=)wS~S5mLbNb(?*L((X5jxM19R-y$K1(fWaiykE%^7`p&XR z`s9lr(^r!LHe48w6{;uC3}Gu>Tp4Giu(V%YU&}SDSKldGEWf@!8}=aML&6U@Sze7C zn%cMltYGWmNugqJ zwq2x$33gJxh963OE!&PqauL7l@6UH)66evN)^JB|UQM~{s8-)njR3AZ;RVTSuJXer z1x~b=A(xmvckgq!{Kxcny<|q(N%f8{>j3p{?ZMb7yPeSrKFHd@nTp{tXQ&Ec@C{Zh zTFn(NPJ+xCa%jb>mV15vko41B{}E34tbW_mbDq_Qoj-Xr`Ig3OZQIApjSZc^X|{AN zZg7&T>Im81Cxc(KejEuxm{oXhm1JyuxXlL%B#f9SbItTfCZC|X2)7iO3HX%Z#U8Xh z{CTf8aIZg8rAP(X(3f?O7T?GiFue8)go&9ilALvxmZ?7@rF8mWoXe>ke2EX#sSLh# zKe6$EB_lombwwS4N4N?;08)RrqYsW8gT z+#m5WC2}2~ueDx|nk2wqnuF@b%#U7D$yKt>PTd8Ww%Gch0=HaPWkxlu z*M?Z1&Lr?o`#g^^`Si1?bgXG(_UZU`nCy8(8Hi@Zzp3K8d=nGr@1z+i;N`7#|5{i% zg7YwOlj|l6qiAo4z{$)b8sRfC>#FJJ*KbX3GuWl8t=SeS)hdC%o>a$bMquMUcRrpf zzc=T>?!NBCn8^3_HJsU7e|%KcRT;|W92};5?kzTB8ycc&u$szOOD#0zo@_2gF`wdN+3k z6grI*6(BxiUnSEn)QpvM=Wp4bDXVGJV6=^(A&{fJuREIQ988kp z8Z~(HuxC6P5=URC*6ADP%iA2w^Rak()l@$xsv^e=YgLq{dCIkPVWg4#Wk-vt#OCQ1 zlx8dK`-{U6qrrg}VM{g9am!BAr#RrJB8a3crQ;T(bIT86D z+dQkP7oy^#>GLnZ+p&H44X1{RLrK_TTUV*CrqB{N+vd*3)~AkQ8?Q>cFSRA6;sWNV z_zw#4Uf3(cF`ANQd&uYNdmo)TtOXuWuJx6Tz}H^DC?}v!k@|Y_vKA;g4AVpLo4nxVpIg3UL`1JkE+jBGAklC=Esrg~ z%Tip3J*Ar^vy)u_r}k{axs~?;FGpW4m?b9P>WaWu^XN35%h`RMS@*!L4GC)tQ&-;X z==Al@Dnll7hcunzpYk5JsW(d-(uG`7DXC11Gq#9zBNpq5yk&oHl{9qebA4gkU7g4F zWJ&yshca<<14*YB`P#fh^vhk@UQpCB8{OL5FYBDvQZ;#a-cM4`YnWF;qa{2mCbd-L zNv@X{y4^!t52x2N;@P4wD}Yms7-u;l_a_&iS98*IoNJ5))v`qtVyrAX*Jv^#spF#{ z02ym6)d*?S7+)JxP4{mq;RHN>n}C5YY}GW|eBe^0zYYuX`Sa&n9<72v326^pLLOb8qp)Nz3$6~Q( z^7vXeW;?63S0Qu{jliuIsTD?o*Z7^xKgCx;hf9Vif;s^r%jfH=l)A=eY7fsPOXOE2 zJexPJ62LfdRTiqinkwlE<>Q>3`k)PX<2uV(W1YJrtS!cY^7qD_qbc}nX)NX5=~X*$ zF`we8@7hIJh76;uT&ZCT2(zBVj3_?iv6oR!qKyR%_I(++@A-;cgi?elbX-B@8szh4 zHEe9lHOcUzK7`!bu<2%;w86X|Dk=TW0;~n4le`kjGQ9r8jxA}Ep6B=w7&AFh zcr_*Mm}H~JJxgp;B%S2&CaUpgA4=3z>0J7l zttFDHIj`Gw>Elb!e7P^@^M};KTy64kBYbLFu7Plz=DAaL<`*MByt=H*E<%)!F1L{uRdnNYTyxRdE{8;YUR@>6cs5Ec6yQ zYbD}G+tik5xG0f07% zz_ViePBl_0z98v^w&@74?reMqMocC|GO+>{p(&J0GA=68b-X znr+t4(Mo04a_havd_7NfeX@*#a7^?qRxQ`4#RL_NVl7kIiP|?WT0@T&D_V9;StpnJ zql1B$qX~@hEEkb>4I^{gSL`ar1-CA8b=kgxaR?BS*u^;F#_iSO#4#tc6KRL=W?E{n zZ~DG%j86z3t2GQv@!|ygs`Z5R&coh({(&4CjNj_juR5mSF7>`|fQ;3*A2mT$WEXZX zPqQr9dXx~E^sy12WJ(1@^5wfH6AqIIgLd`IdNLw?-+~J}8)vS2bmx47yx8%WpW|i~ z4>6a*N9>kB_U@bEPpyqL88w8A1abtdDt)0l3ItGDiI;7Zz`gvezfit6_&MrQcjt!{6U_NSTb@>I8WlDRl4rbKt_(x8W6_tmF? zXKm(^CNNu3spU0EsY_wAhMQAm5wqAUGP?{D%NIW7*dT<{7n<%~yxzu^TE-6M@k_BykmQ7J&t~ zxK{~NCWVLXehNfwX#GeW60}Jc_g1SLI;QD?-fGfxj9xBA&TpTG8x8s;Udf-!|1dy& zrGr$P#TMwj7E`*(Bd%K8*OvlskwF#QagLE88Hzu6A*|ml@@^nEc*zdy+2G8Y9Y*1? zSY?rTV)UuK#3%0^wvwroGM_+;6y?IU>> z4BAGMA%UW#GC@LZ8pp+#w>d_Pr+i%Q4}PS(YLTlIFF^_cJ2$;7@dLyBkYj`_zrtCI zxgEm3K5*c++5~nHq9MoeyvDkT!P<&kyD`Vc=_cb zOyV?SYQJh)ujb1;=|dL!m~93W_t$M7X2m zA`@^1_CJRYG(2!*)}B5ps39@t`uHtN-r4s+(#!-F$Tyb`2UvP<^!GYE^kTPaWgE^< zo!q!AH+m6>WY7T7VW7R+}^2Oj5{U1BH1nSGMkZD5+f@0-+cFUo?#rCF&zoAcGD&DF{D;E%7&SvDmxFU>w|7-z zeg|xSeEE4AY{fHMtlVPBEb?(&hiXDm89_I(>lK|**BbNNewk~G@y|BJt!aaICK{Us zPN|VGK)ll(C9NuO*qtC#bq_cW^CvtJ3i*(oW4z;By6ZiO2p(B*_yvL+|zySH4F#KMw~?G&~%jV>82xGO8db#Qyo8WVI&5*Ob zvOh)5i&IcMV;P5RE%y(EOjT0`wRvFIqK8u`s<~z-hV9o%dtzhRfp;fBmt!Nx%XOdP zjUTTLRmT9{0D97awETy~HlqxBfyv2aD06t5va4`*09wBzr>;Pn%zNZ0j^>odU`Hjie3XW&T1K1z^8U#R+OKlGM*-SNR z)wOtS^V1*x4}7NsChPE8uoF&K6VW5%`cx$ne`w{taBy(LJvhj?*GPk$m?=lS`NWG7 zDAMV$_{-BxM@N4L%2m%)UU}sG9^eRwb|~^t+kxzdqB_Up*O2?USk2J=1oDIK^M51bHH+AN zjP0zO*zj}>(E&u@VEDuhCC^`)BNWvk$Fma#K=TyfxZedPrhlaV?K?tb7PYSpo1sAN z*8yN4cgjy!uo8S<&$?dxt${$HBQ*KOpwL6Wmglchqauw~y)pag{-Gnsen*l(6TUZr z6A}}beoqVtRP~f2er;brf+nzli2tfutq@d~b&%QZD)g`Yx7k@uo(G*?`_GS?8syxA z>XHB|zpJy=uYRWofku7*c0=qgRU@Y#aKH#Ky}!z#l|n2~u}1)+|MSy$;K2&y?^rMX z{521MyYwRF^6tDl&>p`y01)n)RbU7}qmutRq~isShnCR(t+u+)H11k|;X#W6Ox3tg z5$GR=tJC}k8k6Z?wP}ZgHNby<0ru2E?ot0~2q+v1Is6ymp#9O9bN?fyO;iImzE5x{ z_1|Hok0$mXXgwz=br(t`2|^5yu$&3|NX`4Ab5K9FZ|Lv`*LG` z?H>WOfMN!fT=+Mrsg?ctX+HUvX8C}h|M!=JQT(ToHtqw6?f*5~cI*HCLJP=5DCFqB zW;yq<>imZlKS#*^^xof}jDycTeH#WYJt8>`=1Do1p%ivfUybxrw}tjarHp6{~f>N zkD3FB{$f`3Fyxk*GGMUi5C27Acl+pXugO*J?-Y%^JxJaO9iji*nD39<2zL2>+fW50 z(*J_5d2!+acn`nNT-BX_@pC-|oXY@UcKydnBkzeCJ~22(}*ul}?KFMQ)*M8g02mkLquJ@l)8z(@Nv_-exTDkAtmva0F+7M)N!g9@Mm zje7kB{l~K`w*+qwZ&eVe>o0O3wce$KHHm{J(SH%S@#85Ed}hCMX`{dO8Ll99X~0dS z@6jL-n)}Zbf!r-cXS>y%0S5>)G5VJcn$txS)@TmQK@H$>{-QLr@Mkyg4(R}X?SGVR z{p>@G`R_y3b>z?ZLGm2Wv)q#Qxe{oX^Wx7R9RZTg_+ zoPWeKcN{|OqObpJ2& zfJ(2s#jYs%5z@f(%fHGm2XSE<8(PBa21D*how;su!489XjDD?I533N@qs zBU&I54RAM66oRBiZa`RiIl2Mz2_(_|rfoAG@a*S#cV1#!7Pwn|X+RUZ|FGfyNr!iC z+kKOzBq&Ly4mAT7Lcgm;Pl%+FC+XZtTVp6<0c zkLhJa|8PX|oGI(&Gt#kjUfOE>HeMV&ChvI7Bh_ehH)IoLr15qn(CG3&aUgVi^qL3i z70zR{)^HAkdTfB^;2gVsuA%dUY1l|x!#wBuZfw6|aE6dC)oAM45P^SuBx!@xIA`Gu ztAdTIEcOP^g_Z7=6D_;QAajSmGY1lV1Wwjg(ttPACfvwU=S7x?s7XcCmMmw5WZP9K z%_wD_ytzGw=d-VRT!NH6U+(9WdCDwg5ONVOt(XVX8{jvNOP*0#l!R=s88s*9>LV)4yJpIzIB$o78+}?r-7xbg>a$x`yqx~ zj{~mEJkVDrcF+3;nI%C*U`BLJTD>wQge1;+iE{bzT? zqvV3!ij{h^r8Y~Xs`!c_z#GqXI=jO8aJQwMkqiKq?a@_{GtClN@P%8TiNtTq!9+TQ zNHnQc=+mYeS@^(%03>%J*kfxndu*@qlwgZB)Y;D3dn_L!SC(Cqc%oM`6aUc)5q^x2 zZCgAB!46Z_EJsq<$G0IRsJn|Qw0}7Woea*yIKg%0>siL}%B z;@X;r_nn0tTHD1InT!-DL6uam>9>WaPQ>J4mRx&B0+&M8!`%EkN-g1%&1L_GhNKre zH+C)C27_)>?m2C?ENB(TQ@>(^vdxxSoEgtOKc(F+;{v* zr~telf$Gu)01a25$0q~z_X*HOn~C86)i>0VvXiaxaA1+&8QvWfyRnB+<{@LI~fSkzT#r~A>AyWzryc9s_TiPbKk`%YPk4@b8kLHNg z41*E+XG38jfqjre#`%wylRCN_n=ry!rZ|@XSBRJJa9&0#)cC^Te5VF;RV&z_Z(^-! zdS8y-30_}Zz^dq$JO282H5$J<*LuaO;ioE5uu2LZE1?9paCi&xniC*kKMN3wqZh6? z;W`WumQ^J?#fV_im)!Ji4vsp?lv|@SoQfpz*Ib1%-==NP^O3!MWBM(wCOtnZpB}P( zH=Fi)19Pu9ZwcEOr!U7VunB1$dee06CyZcKlAU;b$-E;;V{^AgzBoWlEY{fAYUyb#ys8cH@CgO1_v2Nw6Hr7IFn zeE69y`H5wz2%Z!dcNrS^unrUd&QpG+RMEL%qYv_U$ovkqPf|LRvD1)bSmtCzJCG7v zW3YkMTAlKmTQnMX+4a?f$yO~&-G%6zZFwbV=V4Q`L=Beqx-)eeCKmzw9F5C}rk+Ur zyOII@;7Z|fS~B93zzy_eB61a~RMj^I)z*ED`y=P9E_nPBrfCnLM#)V{10>4)ANIIE_Dt~b zj5)TMyFC6HMu+j{b8&EcD$hHLFVJz(y#f8k62iGeGyB3qCHgD`JET^EKiG{dnowuq8BcqjlcK%!#MLA$NLX z6n!__#+SdqPW>qRk0)|NZ`5bJxId=2!YFQXQz`$5zIm;C+Kiy{I~X-izpi1f zhQ3d>^Go7Rmkp{xs;UV^cG9*^-woLqQy41e5n7^%FJ%_E8u%DB)fHOxDd^aTQ=MQv z#&9hBlFBh!PCAB9kK7-#9Um!IMsTxYr?0An?v=kNK4w-yCDObtIVKHK>^3bkU=b6zR1>rAGulW@ukf2`AKfHbY;}kl z@i{%4mvd}Fa3a^CAjN>z=Sw?on;FvRkBW3pTyId>+Vd ztnksiJgK|iJRjYZz?h7fyw_M{?%^R`>4GsaeMH-_lE(B72Acnta?GDD_PDg~;C=5B zODas|w$(_QOPJX3vm)o<&{svu(Nrn_aU%4=-%8IBMUF~Civb%!hT zrpyJ_LvE{cjE1Z`~?2j>h=4EsEwHhM|YpM6f-KPv6 z6ONv7eWE<9!VrJrEAN(RcmjC#L(!OaBGU3N#A+*+9U4x$7Ct0AdkI> z_e#(1e&=JlD)|p2fUxg;(_UGrkP5%d<3V=zvaAqo{jThGl#^D;5NnYDuR0X8_PDp^ z#?6w!gpZQ69mDqp+#;ViyBkKwC)4Dm#CfuG5m)cefuTxd^fZ{ZbUAY_X<{*WQ^fX^(btAz~WMRefjX*mc0U`^FaEnn}uyt=5j z{rd6m3HzS&Dt2Hcsz5-`I!DX>=MvLt)x2qO{1{6<=(LrV0(A| z`qBE;^XyE0x;Ng{>8o3f`hEK`e&g~Q%klFU|1$eNR^DOOdBzZ4e*t>EN6!YHWrB2N zO!|)SbV$vwwx{|Jhb$^OFaS3_76lVSJM+Ub6>-H`XM4`4at{#WG2bq1sH07pt2it^ zGtpFAo$o5Q!DeO+$for&u0^nYHZYU;*zRB~c(_aS%X*Brpj=dnUmYuL^Nv9F_y|Cc zlJaG5w*TSxo3!qBz7AK*S>}WW;>~>B^jIG0shiD>*O)w~iA~B)^y(B3(xTTRzibOQ zF5CU^+gEA3H=PpBL~?myy2h3btzhm>3d_oT#faM(-f{BRp{htrwxcha{X@rvf9KF3iRA8q+&In!?IfHCz_|B0jMuVGsz@@@rV`09bZlNy$QL?!p_=FR`gYGe4S@opdF|K}wg1szcQCT&RcBSx zDEi2cg+lS@?3EBL{rgvS?q`Cuo}~ZCz#O+IpbGeUiThLRiQSqxne6HKfzg768D58? zu&l$%Pnp4#J3>yaypKv#%O9c}EMUgRT&63JiQHDk-(TM3eUUua~QU=cM zBEuyO(t}Fz>>Ui=XZkvQ+T;d@;l%6?Km8KPj2U0^Km2x$%k$Go-Sau)wn8^OTaNpG z9`?jUUX*k&nbUdl@ByFqR?ytb+#3UW1s{5z#ZYURx^~}0ii0!>^%|TrAgK=m?HVgj znNIe*Muu55UUDBHev$~)L?!ZSxLwLJBx_FOHV%5zwe{ZW=alrQaCSZtVFtU#AM*9s zxiiZ-_l})3mw{5<)zHPc3?`iHS=Cbq4m&6f0lY}{Sozrhm5e_1!#~wIkI~*(d9wnU ztTI57gw8KEUwYq#Pa0hH+$-oANTO75_d%=es5I6OfsUL!UbS5$qmO@7((vwbK%e+X zLXq<|@06zJp`Npm*RVr(9KJalREcbsRX?x0&zBgMu%;%QOY;S$fUw{%342hT!;^=n zLcreUnw>Af#csSzMq%N+6Eu47_&3s|gBV`1m4=r6KgLQ~ikrHqi|T~5qZH|=fh&%+ zEVReiN53GxFPHZ2#Ic@U@=-Cf4<}s$-V16Rx|B~9F3a@jU9xrYS-b1yST$OLXV9UX zMgENZ8x(L71-DTFx*wI>;IQb{WiU(Q(c`(f>f<;b?>cy!O6^?OQRMKbDcr~@l^S@K zdFy^*w)W-BjnppwF=&^CmPu?QTk|!FHfykuvYhGvaHO$<&$Ug#I71DgOU;#D?vaW8 zEA8s+Ls`T_&|yUxD2;Ku!12TP=$qqAYx3cRoZU+-IMQQXN*^j-Uu-eT5-uGl<5pbzh&Nbn&>`@uRMAc2{P&=u`6|;mPuF$+ z@nes=8LQsdwRcR=yB(3IpU~OJklv<$>{~?rG5r5E7;hXa1bmw4OKDX3LuGHMUayup z%7$U}bivC8`{YsY$j~tyUp)L!9c!=Lu5tW$>p6;%%%@As$%O+(t}|8--&+Vip{1%S zDO1#-P316}%u9+l1c}zUQ$|ZqYU`h4lFxe)nKWJ3Qet59<#P7-97t;F+nZ)}*xvIV zYjY!>gbVLH7w8zxbZ0HI*1p2|>6IdTqVN5$32AZ(_AfOh4WXGBBUklSUzsX~es!pt zJ!7s;-5H_2PJL8rOZv!r3;26lPfH3Xuh+|W?cVlXSCmlCaiM(KcA*0b()Ja#x^S8c zC)s}Q{%(|iub)5iT&Cr=d$u}s+oy1f>B{>0|u zbBy;X88Z$wleOB})AzP_0Ufk-$FWu5zRQ2yC*@Z?TAz}Jjch^^DBdq_t@OgmA$%{h zMbBGm&>J^q2i|H3lx!rn&zhK*rZT@p=M_H^6ga*nY?fqoLe9I;55sl(!Sy!+ zuEvXn=iEGFD>2z8*J-_z8qcx+ML4m?~<4u(#9;14OZwma{v8$pV77Uewr&%I*H{2xK*>{vIIu)17lw=Ne3&djVW zvPeUIi{`yFOfTk;lYBR=aG+(D!DVZ20&DlC(6w_;vsT@acjw`wseZ{;#vV^==P~IV@^e`6Xz;sY@xT0|70b{e-+ABV7N4T90}nKO}bf$ zO=-7xSjmFK^@32tH-*--JqalJz;0#Q=mF?%t!ljk%X+5~E4cIcQE zL=TnqGlg3$=9bZ^xn1Eu=mgfZ%Kv_7k+N|4u8G2&ck*BezNTq0NpL9(rY`^aA_U^PP-IQ(NQIt@1zj z`5_ZKiRlf3@J@BTkots{Q(n@~ zp_t{))pu2lbl_eCvtQE0kT<`LOCX6pnkb0BN3VG}Zir-y zS@Vc)EPuGv+8Y*TC<)~b->NoIYvTY>S>=MY>JkC;HRf!jc0)hBXEm zEIn5ciLnh65&;_rxK(3gX@))4Heh0y{X>pJqfR2p2ip-O1s`fq%CqVXYrm1g9a#6E zOVUd3e=tC)WO~|1r?+YosBmx;9jdi2#Lu2)1AP2t-NFLbBc&MoOX zRL(qGkTr|wl4TDLqxRc_n;cOb(nX_bLJ_X&ydA<%EdQc+=9);+7_3OIQ+9MA#0LOb zqz}nzzx+27k(Z0%zr)VbFuBRnuM}c%t5Z0Hx8j?xf_L}Ykm59Aa2>q3gU^4}Btcga zo4QeFhpM$lifO+X(0X#akt1pK`+p0UTy8#~XFxW5a+}&~rn7V=F{R0cQp>5yrgO1q ztVI>YwEWJDU|$U#epQsENto4>*HaJwc%SAbI%?ta?>6uvX2`b*Ln z`Uuu!?Equ>V&VUi%w}^_0qcKqX(-w@Hs{+}$UQ&xBD`Ic{2|@D6HF1v&33mdSPn8Y z*FnU%9C7xWcUKO|C2weLwJqJJom(!OR%yTj1Fc>smJ>~34lGonGe*tX7J-eO4zOr7 zDcY9?6prSD2WH-GBfBRcm${{=f%Yg^vui{<<@vP{0Lz%`YbO$3u!;uCZ%+L`>S|l4 ztHy57|7V$Q7V=A7X87USc&FRHz`*5G^jrL;*)oFsNG&d5kJrRW^Ai3PNjDrA0d*H# z?_PyAewiIeTmM7f!yDxKqpX-7<&7YV9oue zIlSdj^dTB{NP+6yt(BYo1|mSnb_AtE+!>QLItZVdiG)~phOg?qG~Z1n6a!57xs5(~ zr&oV+DOP52&FGasN%sp3ZB#|~{!dl1mvQq#(h@&=uYY&xqV2zjp_!6gOc6ixnDxN< za_ZN-i2S@6I)w0Aw5e4aXoJg>T5N*G$j_F`3=&YHaAuf!R* z#~*=vsE2vGH=uqbC?7;!3ZNAzpPEUm|A4K=N6J#(2)&CBmb{m@w$dBm7@QO4R9Ebg zWI~~(v|*VqWqMmM`6u4#S?35_VKR6A%SMS^@CQ|X>u*R4d{(=1-%tSe4>at?gh8e|qd z6K%oBD6H66a79ORXnP#;VW+MyBoO+y%xEvAC2>X9{z%qUXD-PK(0^RkayomW%5f*o zn^JeZdz;h4(si}LhF}V}{>Wq0TZsL#SKo&kDsA?LfmMe*Tpj*84WJlS*?wu@TtQ0v z5gm?2>JxaNRBCQDNl#G^-Kgz?F$=yJ6UVYxQmJ-k`VN%VQLjkt{K_a3=ETd_1kQ@H z$h3rZS0%FCSvACRGuXvdKZv`o7{>|i(hS;NQD~}N3ClejOynQD`QhC>iI_|;M33ob z2|8ytWHTBySFG&TW6|@knx%NPbZIBJCk5z=f=%#$s%ysV`74gi%dUs1`o3m51J50u zifnO-BTnf&Ovtp0tmFL@m6Ax5-t=9pKOuB;4sIxKY63@yLMVkXNGIqAJeJT+8G9iL zG=^>`9d%)m`>AYn#gBZr5C6w+BPX>Z)(v2A>kg*W!5R^lf6q8t(?^|1J$gn zecMLlFVSsF`0T4;t9){agF|L$5B2Wa)q9 z*E-y%`Kgj1(&+a7@9gk@bhAb(4mk3g!P-jJ(3I8oy}q*!e~lhG@L6#PWndnNTOa## zPdoipa!US;y*j!StOsN203eP57pFeCNwwRfhZdY@g+-bk(-xO?ONUmur^2srZ)zt5 zYlS7WzfK)Ri=5+%#|`|=mirwWsc#xCMj=LHSin|_blG*0v_N)b%0k`_nAOi@4rmW zUV3ygr+a#_G9lgghi5K6I>?314~kTw4|^|(n~HBUFhlus$Pp8XAVI33m6?6KUfN6( zvTorPOM#Kg8Q^{7rvf{;0ElD$K)#dX!nUSTM+QLy+eK5O{9Q}XeCIgskMcG(ZI@^I zc~G*JM?~JN4HFja2WR-=%qR{1>I|1gI}Ci35{7%<=JbR{2*bJupgF35D;Ys+fzQST zK`W#lx4BSXPB#;}es!!H1Yy!cM-*!i`oVW%|7JaF8v9V>`Ev4Yz4`w$U#>?kMj7s? zO_jV70!J`i7IOwN=???d<;H3K$MG=f3?+DUTd4Vd-^))SUAXZz8^zsn4un(V6oU*? z6oL;6fh(uLb$v+A-77iL*kCcIQGVG{mpy&}3;XZH1ZWsV^AR9Q(TU~yeXCHa^KjX& z2Fy1I?|3D+_ktmBPbMDfwl?*mZ@MaC?_ zA$8e+(u9e42Y!b=do)6gG2Gb_ubW|0HXD-UJ<&sqgx}z85-JGkKT2t<6a?~`{pBvD zm|_6LGCrv+@xHh#7rYIot+?1n2*F5_nn<; zV(nM{W}UCsQl3A^OYX*4fS;4LvkB8 zl6pqVjMD&2GK!`17!9*_%6@^3k8Agm=V!IAG?r^Nr7eaGP_16YAq(iK`q)NZQ;5dR z6KDKRrfG8_X{vvP3>n7+9npnX7wD|}lP-5)Yp$o@EXDsv8FUTN6}#G>GdjjF-Z|z3 zesK@eRBjKh6;6jOy2`Y+O$UDbB|B$-`3a-4V>!M0ssYVzgh6+(|1NpKlgVXBVBbe} zohCFb5xJGRBTM&LbmE5I!cK+bRYDhKWD>IG@$vV%NAHy2sHX(-3IVy#ajt;)c?fwG zvMYoH9hH8T9)S;x#((ybNHaYl# zJ#MV0PnhXEkM{Q3!y+P=PHL*-fH{U7V*g0pk{8dDn&P#uQ^}wHgNJ0Z`=wgN6us$I z*Fio-6w-|KG`e1UWA!rHc;l-9^Yt%KIt3(-Ek$N!AS+81~zJ1dyss zVCgsE`F6moaBZ7Fm#Z4Eyg>c(%;s=Y`pt=4CKXf$$2#(G)JzNoun_z&)|P2^CV{>8 z7jfzG6|KQgP;}jWDkRkI8mb#9Z6W(C=9sO7_ClJ+R{S49LZBpxs7ZVw?ROIjkH>M= z-?|lM1>N4W4tM;$bTQQ-*Y?KJjRYylf;2MpAqt?Eg7H@N%#O@ z6Flqy7oc+A2dzrVR|(FL#uv;n&NPuvW_jlKn4NP#GQoNa1o>E|!jG;G=$yO}L&&DJ zFZ7X0#wAy=+a!U){tX?SsGyWqT@rXj-y_n+B3neE$U=A=RCY2yYY*l-^FZA!Tdly- z0r(bs`A_11_&6X&EK4P06Sfm(`zm)U)K*WgV348oQ?P#Vzc`58;JID+cZSk^wx9ob zwkU<3&9hH4F`JD90d;v(7U~G5o9;=`<<$0aVq-zVL1p$xUD6+atB=MfHk$Hc2A=UZ zS>xN)u^~6^8$ySW_L&cpQpXBQ$vpPry}Ot+-w4>vo$u)*h1V{xT3N)4=QW}i;2URH z>WVKRlhJ@!Ay+jncflVA8-PafZVTzTF&gqHoXyFhRiqJ`#_Ve(!7Lss`_9Rp=x{FX zXUV|BW<*DJy**3$hTKv-*1O74O2s2@pUNu+oF(r6&KLr-7TDzO5%yqCum`*C{O7?U zG$##z{w2;P%Z)o&t0Mo*8|+pYyQ2!dbceB+kL8>sMsVHSAPQhevQ3~%e0u(DX1gAEgz7r5LmHc1JkZfwdv~C8=M2Yvt*lv|ziDXHf?07}& zUrP{8?n?_98>9s8Ls&#Tjz2kNa3I;|;Z{53xfm2Zu%j)?x)v=uiv=#VB?yx>vDx?5m-Vg4!G(qMyS7IYdX9+6uZ8}ep^rX9~12lay_V9`EZ1CiALAY>ELC2XOU!V)o1q~hC8oj zouT#>c04j6Em9=BEMzy0cm!*@@WkM5YxJy~OSNg)zjqP+L0EtpSuzz;Df}}bo$M1$ zk>e`RwT}&&A+KLUIP`I1HE2Jx0-432`CPXr-&GwUHQrxp=B*?}tFCuSHcjCykU<@3 z0=}M)BFL4lMGxA*y@ad`!eiGKOULdROt-AHZ>7teixX&xIzqSAK?fHqO%uqWce7-@ zv3{#Rf;Q_oX#e`Zbr=p5Zm{UF=0P-_Z7_oc>t1o#a+dGOj*q+!rKktv*zlL46s%g5 ztmVC6mW%rAFr#B*ec|PfG=){V{W|TjEWF!(_H5ymh6x?Q`_=7l7-@|<>LF>HW3!yZ zm$=I_=J)F2mKbsF3SjlT6bzNz*c~Ch1{uz&`0qp2bH8q41|85GU#{- z_!Et#T3jtklhEAd_E*PX_A~nz{*KLI%72-}t_Zr~otWYbfNq{`p_@B;3&1Jx9{PD_u0F-G?T`i1e0 z)M_6wzTgRk{@Sbzgnqet|5nEy0ym-XfXb`bsfCg%1+vMi5HdzOY>cHt3LXHTq2niS zRvPr3b#gdQU}C+pBJ}*NFxviI>k6dwUBsQ`Kg!zFL8&GyrJwbZ8Vo1Qw63SH)C>&! zHx(_5V5G|Sc;g?kTU^FA!+=6RJC2GPh=9h*(-&!5phS5gbzl6<~4+uaGBI5;R1UaoPQUYww7WG?d$-6XN1{E-Lv8AMjQ<(e9Z5x5l zT1>(E_0v@Fl1~Gl=SWJW3{u*X?}x6KD(qGO89`3OXMf_SA zz{DO&f?ijNS$!SUV?CXE8Lvk6Q$b(BMQ)}lNFO@~UYe`oK(_6eI?YVSjHYC@#V)`e z#s}X{j?@3Yw>}c77trD|LBexGk@_$4B=R^uar8R`CUz)`M8N_X6ih?-^9<`IB(H~l z=0qc`Dp89GY&U4NINP! zDnvjFLV)rr-8VLipnYz7i^x0*^o6S$V9~P%YK8Qk=dhjJWC{KJ)8%@>9(~^#1fZl-m90_gM)0YqC}||51Hm zi|gOq@97VM91qXGV6ZaN)BJCf<=(Zi{tr@Ay_Ncm{)gILKG;FyJhxVlTc;JSyN5p) z3VJWCuy{V)NNT=S?QVJ_gnO4WiZ2N^}IB@#F3jhp($J6l@0G~;B_SIWoZvoWyR^xd_?%dU-=(nxFaSxwjX?$ zH>Ekf`Mt7hV^#m3cg3a<`4k@vU;S9r4wu+H^*J|IKha*OEl@Tz3X$?R+;9tjP$oAb zetO$8KClQ$*5ZJhq_xsRsMbJx1kasFd>ZL?$lRpgFxlILtrnUlJ$ zZTxv8g<_1UJGbK4@*4Xj2qo$29xqNAZLQe|?a&m4cFJlk z&X}XS956NJ_uO(HOlSL|3QGsYL$~%5@#hQlTG>%DLev&%bGwr%V$bu0jR|z=Lp~k}L0;mc4&6-4mpTTpp)J5BDP~VmvLi*Eh=v}Y~;*k7v6^@r+an!df z4h%!*RzP$IpUl!=P1?--3#$V&e(@XI-LfPcx}z`6S_J6jzmtKlQDt{+7npHUDtDd< znveV~Sv{)sZG)cgeW<&Hhsk>?vEOL)(Erz=nx7hRUrZ9~R<;Vaa%+41PoG#t7n-^n zV*^&SqExBz+CO(6qF37*U8T^M0irS~LpD6czQu(0D5N+*$a8!vMgx|5M&2mi@r9R4 zngnzT^3%;p$9(!a!%VegcfwZ;;yY!0qPud*R!1%jVQE0A6%)K3y+`8Yxtz1@1+RXd z@1JH;mH3v?;54WE4G!ehrQ0@}!5GX74#=(A7`E)p=#~3l;8WhNIO(}Be zhYAuNR~8BUSMbd?A127QHb=GA2iG=#f&Ek4yxhr=XQ(IL(iqj+{H3-ziZ>x>k)+`7 zk50iN#@NK0@y`Vz+aIpbr1I-a4n-S0PS)F;0~+8rhx$FQdMVc2;AUKDHNbTMA5 z?^{?cBXIL_yA?^Sf)YG*iu%eTO@oCB?sN+7gbG@&{rm~7l{-(Ox+<@x8y6f;I@{u| z4`G@DEWFt84of36uhk2eEltZfS!z`A2rnlA!9hM+(q70oB0GIBQaTW2077W zt1^)+qCi_MsEk!Jm^wnSpy~&FdI-VFE=Am&XL?4RdckM#a^7m$ofaPlGn9BpC@<;* zdd`gY*^ahGN{PSvcgyp*FsZB#DU4ix{}5jN5?+{+!(CTv%eTg z+~JJH!jaPt(-~^cr^|^AnxlR}-d7lQhH;aEtmNu^+|7=`PpLxHRIqlve+=e3)CIuZ z#dM^0+yE@7+R405vN5Br#p>HBU@Y&E<|Fa&7kgFcIbYO-Q7_D+iJCC{xnE9H?Y$$a zX(SX5aY^CS)$N7#SL6GNOePjLqUT_*?UjpEv1%$8?3Iv3l;eRzKM#}ZPK4B!2jzmh z+u}!BHmU%xztv!eD!_4x2B!JXe-~0kfgWy<8OPNH7#XLrl?o6u0f5O1T2o=bj;-nT zAJtcXr5l8&Cx?}iE7 zrh8%dagFnNeMqHZv0=ZJm)RgkgJy-H9z2*0 z(;?HF;CBCe&6Yc?%h;jn#ID0$4Ox6RA(cD|xiQ|E=pZ9KDFRk%i{4My=Qo4KC2+}( zL!~o}5Kr+N({K2=s6$&Q3G~r(SrC_0e+h0^tLK~tW1WmnPWcv{>%z>lbp{_Fv{D!A zSLD%!RJK|c^PTBd!=epT)W)okxVLlqr8vPtvocQuahiFYflDoxl^jq%>yWhqJHhrh z-^&v@jIdKG$GzS1aME&_6picc=aOj8x*a>=r-hpn%lW@`Hz&V;Lj6PUq@SV%te*7x ziW$!^t9t@B9Se7x^?W#W`R~?HDHp=CTl09erF}o(r0;W##G2J6coaAHPSFxJ+K2Dg zUm4BZ0F@UmPM;Q@Vi;<6f3HQfFkoYq;_&BKSgr4}ma_@RV8x!-Ei1V1>f1U4=Qr+4t`u7qp zC?{F&s4$FhGmn|HFhG)=;y@@tX2ujIRpn!_+FkkrH?pCh%9F^AUUHGJULxHLB!B!= zqQx@((Voop4zC46xsQ5(B?H*On6=77&(+BKQUM|L4=`F((t$4n4hI~ zgcIP@QTh=09n5)Eq~zlgKX7;iJ}>wt;Qipw!_ zY0eq+qi=O1ge^jR#E}3gmN9Z+%`)t20K~T>y~A7+9Xjb9{I6&5g35Ynh4|ZGzwqU7nNGNLte}!PfLa3VZjdxg7vQxN4iiYnU^g zB)v;$PqDgm_V$%*wu08$DUaFe(v<7JS0Sc)iz~sr_=5(_tu@*lxnL-wm?)asZ+M^i zGMf^p;)lk>aOg8gR&(>P7Ap4gOYhLAXy)5dA<}#p4afVYWN*0od96wW5*8H`{1!IkgGj~$qt1QriWbUvy@k(}T>vMET;U@_68?b^0L!EICPTo7uM?C~C4@pD?)?|Eu z~yE%fiWD?aP7p=Gn z)R8gmQcd<1NjMB4&*qO(``xd+_varJ^DKdliCjFw% z>6r^nNRR{DC`GF|PI5(E^QJ1T?({e|r)9;XBXgc$68EBW>wRxz^F2#fD9ZCiPIvE3 zyBRYVYtDkV*E^ph@4oAmBtO?3c*2|qLa^T%S@Yv^lRmh0%GMUT|3;bW{%z*VRL*Ai z+P(kb)ANbs5}&|PwY}cxU}I01PwYROdrl1)w?B;@NKGP^?hRl#LCZB0EE}E1(;o?Z z_NCmV!vK$c#G3Q(V*()jOrR+Veoq?DjmSp8SHnWEM9;p2uE?T6DbR#k_@;Ta?{gP|gEnU^#$TW9WiJ!C8_TIRr?DQs@W zqiHOHe$=Dyto7oPG|AoKFIC3Rx_)=86IAz%?0$P>Gg#)M2V*Z6K7zM@5K^;x!}t|t z8=t|4F2C)xuAR@&!J-$eVBehfes%y3Wf~nMeB`xJ`T+Nc zgS#4SG5{TKn6s;sU(IB~E@So5*$0RqJ$^l-v`%#zN$h%WS!2`SVkM6(Mi()&6r$E` z4sR#$-Ya&Uu~oY=o7XN%9y_8YjVm_;^P&nmFix#$zgd`}b{Vla8AVs`Kl7e0w-|gS z_3OM`8WcKuTCKZr;6|wqboZ;Al*yy0fORs8T`#+WH+hy}P?fyjb5`aAM5`}O%NMb$ zbv0MnT~SHpkz~5N-d4wXf2-?$q~+gGPhY6YGt!6^?~!9;Rx*cS56jC*IM+*CPOrhq z-9~B4F9+HDncb#P5pVl&hrgN}!P$;NYrSE#7^eW;n8pZ}JOEwQAPv!|>cF00;&%)E zVoTZK_ko<9`}(ph9r+lBKZCi|$=p$InK;-0zd13`zDiZXD>rjlzAuDcnSrSgV(QP5 zh{N7B$}gT8G7)^Eg{aaVjf=B0h2&OVCUhHr)wtJOXbG8KX>cmi4(guXm5U)cJ=1Ca z;yb}UkDRSoC_a-q5FkN3W<$BT@z4QSMO)YTQUr#T0KMt#w<<>nr*8qPSwL?A8$X7% z`TI1HWPlXyXnwCFaAN)hBBRI_9)q%0f+ih2nSw$qrImsH#jkj{|0~aTH*N1YVb#p5 zqCXy;^_v*+3h5w(9LyO0>XD~zJBSCZ)s12+Q(Gf23W%NZJTRCz~xMjl)+)3V6>p*DmJY?y3UmE*SB#I&rdXaK^-t`2) z@`a*eJs!r|m-^PS6#q4s(LtG?g`VO*NOl`*pdJir-;d~*ixMIR{i1hL+aclMG%-y( zx^>6pXsa4$WA>7>WfMkL5^8xY*kN|#FC%;f%GBTr)P5G-H$B!K7Z4@C?L#GQV}fxN*FIfAZ>yrY`?n>xUVs3O z!g^{fg|r5smBQ$f!74HDLIh>AW=BhGk8IkNj0De)gM}``$_zAymJ3Z%1BEdF%ehk1 zHerAsl*i8{2u)+bG_c?;q~P^o=J|%f554`^Cb^Hmp_4P@RM^EtCIt~6dm7IfeUtlY zs!!sVThNK6kOV$@+Wsc@#LG3+=3{Xu?~!U_C2UPgwRj@II!jxiVT&(jx#dK@pH=VAm|KGL-a-j$S0pdD=n#P%l0rWOh}kRpVW5EW|Lj+=9*Hu~Nh4 z3<#Ib(AmTws79Y6t|!s9%Y=3zOwm2`p{Q!_0TBx(xX?oC{n&q%A&BxYex2cCVKr|m z@=$jECc*zk2u}kc=V{l^MzVMb)8bd!*PnlWG73sxmRlTZY-|TnI_~vCvy6&!elCE`fUN zu0s}L(nC0N$yi=jnC-Mg)P4B=Lc@kO+%io3OwEcE%9@&(g9!yrJ6da9Z0Gp)?qbg@ zFWZgAha)wgnoolydNu`O9U?Cg$SUuid}Arm6EA8 z>nJ)^7%!*2BK!C$=XBvW7eF!^xQzUi_HA^w>#4!fPyT6U)03dv?=SyP2)oO}gzdDM zddEgCmS|fk@%39k%$E~nV}U=29(V}gi(CLX2KfWV7PX6Ds6`5K^>p+*eeguX;;}M2 zO2z0nk9c1RSTBq3T!eQiN}YtGDsr$z{tEmN^roo{p+t1%meg9M>;LU17W;JV%bwc_5mg8f8S(8ANUVcIDLyTI4so zne}-)Kj~fqiyij;?Wh`Fu5h$9t+4{9Pln^&cq)EKaYktfSkRmOvR!YlS@7``?ospU zaBgnd2SBk)#X-AnBj(0?K=^4sV#R#Gp9eI@7%O?%4Jqqv(QL~LU80xN8W4ORjz=9i z&)gt|Cjn;_sJ!+5Mg%PWJX4eDF!BvFC8O+P=xO7=@h1~yo*#gL&xJDr&hv1ihjZB0!qIjKUajBU0CQfzI9cYM3w@BfcnnE6XZxdKOJ<_cn*S{1YX&|HKX zH{TCd&3oALKS6{OYnN9v{M=To0)yfod;mIG!jXa|1Hj4r%!+BjuPav|5q7m=CgXwT zS6*_V#!m>Xi~BOUVmP-u<9+>{~FKNp2CYdd{5-NcG@i`}ty$Y-Z2ys31B0h_*qYYP`vEJqh@^E4OuS|hl<==XhV78CM=wcN>MA;G2- zdno2d`V&HQhE z582YQ>`@(uXEMYt&V2DdGc${v?-$SqIOLLsR3c`TZZ!1MA0qnc7nWpbEiv~9#)-pe z9+c@a#qL8toGx^E4XCoLa?kzB!-NHEDZpYJqDh1?l=s8B`}54FwhglkP)eFQ3%sKz zEBi65uv$d|V*6{c=A>G#QvH^$5Q`4txo>40Gmy$8?I5P#O4h6?k+`xCX)aB2kt<^b ziP$08o74mm74I7hUmeD{Jq^{FrdbY;t&~qS`@~uKQw?3!9)I5|JfUZQ$<5#kaoQ_R z{51M-P?aOPEt8j35=nK7m+AE~2+JPE%z&H3{bzPz5nrMyUy26bGxX$6@6QG!hJMh) z)5?adVgae&)Fj+8rJj)OU@o_Oj z`YU+hyhQ-8W6(%y^(qwtS6eI^Itz$w;uDCM8@ER{&2Y*81RVUt!T^=P4;&k_k$deA zC(fJzJdG6g&fuz-s6ff%O_FueZ(3UpFkbcOJyqz%P(wLCXQKKfgy+}|&Ofr|W*DJZ zNL>}!BLk^)dAAs8_9va|ayVhV0G=?9=AFr}&Wl6!HR;g#OBW_c!(#tO9tSg?kf*5J zuNuZYFAFi^JcT@ZHR z#4NbYH-9x(sz0A*JEo=5^)Pr|Qq#X*FPnE+WrUm!&$9GwGQ>qu5M-FLwVs)25#8B*L7Aihf9&S$-nC7BrIAWu0*Gfth*vkd_QP)t?f&p!iOL65(>WVK&ZXW z-LhGZvi3Pj?w)cI4nb-Aa8C_3=z+ohG(<%rTr1#41(pVhnO*hhAhF)r5y)ye-_zdd zTva%z|GKq5x@-87J2mTi4MV1VU4#o=Cn4aciZ0VFh^p22EJrv>ZV{nd-+9fcnS@%U zBnjlWV}G3{Bi3_S+?usw>s@z`P%fMh{8#<#=q5jkIm!ty5jan2W2Oe4o~*$^mqi)J zJ|}Z^hU~$l>Jas%#hZqDNRVFYYlVd{c*`l`_VQ1}Ur775okz3Tf3ggKV*^1#rJN|G z-W3SlK%&YxiZ1=t0%)$l`VyTV~Y>&l7t$x7p5Rs`pWV>HJ~66ALMV)*FYJ6fBn zYE^6ny&Z)y9V%F!Ttu^N?QB~qr|y14NMFp|hT;cW&Gh4aU=}Ia7RUyo>-4W6*G(2Jw*25;-PV=nvAFM<*P}=+O9^qnPe?Qqo+@bG{Ak! z1)Ok^ZBy0?)H~Kv&DM-m9HDYKY;5)B99{DgodD1HYm|_FUHb5w+aKy(F;ma9r0kaX zLsvpB9k8zw9iG{2hRmW(Rr6XtR_$W?i}t%vZPZHDq#JEFQ@A++V6pwQ1yxxds6yh; zZjAL9oTsTXC@&hO#Z&x%4e~fEx!7eS+N~ARs{Zdp0vW~c>>DVT79!Ty-y90i?=OAJ z9yKio%EqG#=hI2@Q~AQ=+i1?mi0#7UEC&iEUfRH8tT^7O3%-a3ICOYMAYnk5hXrcpzz}elx+=; z5^E0BEn+C`uNHV?#4iaNWR}<=ZgO1^lhfnjORlFZMtUS=lyh5$lI68QMZLvX}fx!WCJa!JOYayKbi&1c;p@UFLf(W}N`U zDkX)D2MT9R!Yo>eL#OZO70eWli1!014$SoX?zRHk`^mk`iYo$ZL?mHCy*Exb72uX` zyI?-^#h65OM2Tl~EVWmCQfkm*pn?;rN`Q}N=XeE?tc{FF;><@iij)M5hJeKB=KYX7i7EMO+!q()OKSvw(xsq(m@!o zM>Ft0)?*~9s*u+i9W*jbaE7hvV}a$z4-qi$?w(t90gBlF`9cx$(i4kfauQwqI?<#c zJWMoZX2V`UJi}^iL(n=Z-2Rc#?0D5=R>l&LsDQmiPmesil)ZnDB%VtQRKR@q(B8Z> z?7Q65-@b;toB6cI(OG)tXZ>9-nmwxXrxW3^X1;-wxB6?s#+X9HyQe2&uu1Gr1ip+g0-S|}`w$LA=V9|U7 z4R)ixMH#9z7zP`*tv!e72|F-N<5#rpQ2DH1VYj}AKp<``BK3{BzV4Xx6@P=`w;2Ww z;}Wg@f1~2ca|KRnE>w+^2gJ(=egkIO!)WQPPL)!kAIY(?1|QsOJC<2zE8L} zwvf%CKn>oBdEGJ=gDov2yft?TSJ8p=4U(8kwYPQIdYo1cpg;Rs5k|J%3rsA=hy1fJ z1#%qz_9}CRBgh^*!D7JIUL$IS0uq$gF*CzfH8i~P&x-EDr z(Tb)QfVG-&Vv~ ztJ?J4_UYO$nSH-N7%8iFS6^edA1vTS$(wSY>tDO0)nte5HzF3%<+*T4_1Rok%FzPr z_f5A%9^j}&@ZFsH9ca1>nl;71)O(gDgMmMXbWzC&-BnE%*#AnZAH5}!HC>j=FDLsI z4I$O9Sa}drJ-GN@tMlQ5Z@fyfRt~A%<(3RK!f>d(8@l!^SC?b&gfU%=DuwOz>9n8I zBd>o7k-g}m)cb?2GEk*&XZ`o30kY33_s7fm)7J`vY7#y&NmnXslt-`T1rsoeS8Nt3 z?eS!9VoXAYF&tRF7+t!#`AoQyONn!Mv%R%EtS8`f&#*qJk?{d4hkxn~pqErRhCk-x z+#%H1HOJ;-u@XX5;p(w)v2wSz8~8|3?n=2r&M>~Mq10Gk_5$Dy2+itlq~UO z>j6zGPlZnxEHI{q++UinpOvk0s5gsg{`w8z0&lg&D@o$O0Htt3j-J!xkM@6fwA-awkxx2 zh!zx&$BQ4#an|6h0OuLgU_I8P)LPh$zlAAKu3Ai2*s5oEq6i4NLJGeu+Rh!#en4M* z@wRmcI=tXj1sJ5>dDvQ%2=xegiG>MR6GqXP2jKR7Y8l-7|7iNEs5aZCYuv4c7Pmri zx8M%N9fDhMcXy}7-L1I0gkq%xcXwLc-R;lwe(OKTS~mLR z_T9r%F}DdF@`EPAM9K8&=y$lSSCW#P?X~^Z2p-%BN$_#arB}@T-jkuxZo!)9ioO zsr281)X}$G){AMAEgoz4q#VP^(3iEIpV+u>>8zSU$f74R{nosaO(V$bs*c+(khT`I z?)*DkOF{|SlMZ9*qP-GDUn$lHMZ3-u=UU=>=1dfrf-#lSR<+QY0#v4$3)=jJ>AOPq zQ5MR&IC;g!wVQn71Y3v;E9jwVV*2+q^yoZDP8`<3QY;}qHgs7vNd|@5NsNS?SOl1T zR#b;i_>tsD&5(&W!hxProi!1CNKv2bz{#t-;iZ>rn>?pjshU|aexaDROdQ&jk}U1v z%7tTJ=c|%qFoMh|-?NjmAR^^5F0<4=KIruN;S z|Bd_uF4=cz#+bWGOm})b9xNr5M(KrOX%G4RnqScF1{LaUmfliqCj9ea&5IMnf!W}3 z%(cz^ZDe@X7EkuTXXUkb{eR7HX}V^A>RyGlNVdqY@#`PSl?R7x+Z$N<7&=I}4$_U#GEUysOlff+M)N`t%Hh<@iqp@j!dSrUe5Ux1}?~iOksv+J)uBUc- zlKZK|ZTD6V+Vwuw=fbXi{huIr=jWGno+Pr57&7)q<4|D%z-g4>psz?ZW;{kGYN18q z1hroBn2)8hN1cx@-O6Wu;mgFDExVuY|$&1Df| z{njlA_@uU^wAYN?ou5(%BO@c>cjK!mzaBX?2Zhogi1xO0S5&`+u;C0s ziH#A_Tmh^5Gct6Wb61dhq7=Fdw89t_(0`8xOg(CaJ~CEkjMniGnb=@Rv}tB3jb`H|a0cR- z9meb|Dl4fQLQ{3Ekwt75^T#ZAn`%*%K)l0!jG^0dN;>lFYy>z+pBFQ;Az2cG z73!_F$?*H|DlL;8wXMH(#w@RhfqK=aS&^I`-=Q^hc#G4`)S2#O0L*44k@JZ`Vn9Xz zgPLb>*2M5~348hac&k=OaI{PEm10>ktT0@~RoY(D?!$_AmSIpH)s?84mmT17<@a7D zFLfuX^Q!k}h5kb_Z8R6ob@nRK(xwdS-(wm4in3QYi6JfacT>(y*~xh)LMaaCB{>Ne zS4&rjhub60WoDPEJyzPX0iFcKtGs9VuSXORK~Wm zDfIP>Ju<^hgXLp6Xf2X8Qc?v??+0Vv@`ayt0pq0loBs_EmyHl7*zJNu=v<9822)a4 zH3B0@e{R>AZ7WSZkYwm%^Mi0QW9BqC`+~MbcQg7%S4N++sQKefSlUVe)`jWH>j(ssJpa>Nph3v4#$R z`d9k{J=y?lOq`%SuTM)D_uXkar{l1-N*RPdBh#4<)2;bCbZEJva!;hkS!OF|eYDbq zMGFnio(bF>?h%Nyr}4JNI6)d|f@54aSU#?=M>os^0_NTosL(Q_4E!quogAB>laPy3 zGl1HZ+ZJJx}@cFF~_9cPxuxN6EF8^1$YawAEeT|IG)V&UKPk#lfy> zV-{SJ5k@hTz~HH462>nbYTM4EG9opdV%|Q?2{7*A=R}kjeT#R>`cLyHxjJ9OSlnD9s3`;x3I@)T-OMsx45U z7+;O(^Tc49FH?g8?d+eMtpa6@rW%C27Hw7#&(#&stmfzIV$n6(1Y3EDe?)O1szbYF z%;nHYF(vx4KuyLC_#yHGNe7$2oLzSdNY)NyF%#IC$?nDpy0X<6oJi(}SU_SP)w=qz zb$EV>12}n-^@yusK>!{=71tP?X67p;MHR&z|10;OL;-F3PU#RB2b)P0<6Zqp!M&F&7bsvT{6cEtxd(ZN%R$gY`SQk`_ z3%yHEQ+kOla3A3@m)9~z1K5&_2<%^sg{Ol%;DbP$6$%@;(t|aq0VgyTF-M z48G~wnQ)@d(B2NJ|E&}{r~UTu@hOn%920bI1G?bB@sv=pD4Wl(no`YDwYz2roy$$6 z*YUKrLu;sNm4BA#h;WJ#^iT}id)aLtKveK{h}A=(Ytd}WqDucEI&S%@c%9@ld{>3=$OSw9%`3cjyU8H! zVr{bgQBZUSS(dOqG{XgB(~fxR6K~aiCt-sY_8^PD`gruQ3uGx-Ubh19zVTJ)1yuBm zD0kOehHg1dO@{SY(Ca)C3i@Ta2wqTy(!IM}V5c8! zcRPpNany6R_aN+cP3uAxtJpcO9AaDI9$S$o=NmRR8s0LHbx2kV79-C9iA?V?|pBbGlkbkAqMv zC!(G+^*`j_;iJDCm&7!)I3eRpVD9d>e;1oW>qU z&H1`x&@FOy%>h_0-#wQzqZ)>~IH*BgLol^1M(XfZH(FLh`@#KH|DAkR5WW0XyE^Hp zFQ{^o^AC$nfXsg8$y;!rJ$88OkE0`$bdl$IsO^Z&%5Cc)^uh1qLe)n;wu{@xJ&e9~ zTP?THr~a4*Ep{#RiJy7>dv(8E2dtzJ@gED5_&5kAo^$HxA^H0%<<-QETP{y4f@ z9|_B_BZOW*c&)?K05JHVqck=AVGaozY6y2@qW7_XHQU{4NkQi9Fp840&#mn_)hU41 zxysX7&LkdrOz9H5E;0x{P3&mNY<0C{zNXLQAToT_+}n2>ptQCkh!aFlPK2D0egwoV zXK+@rn{v4=iR=hEc1&{+*Sg7)&I+MtFh2P_)4i>{nfWoGbAcbZ_njTR8PC@@`w|99 z;CWO-Cn=vhTC+V7=Yp3vn;-rr?9@)5@u0EoLRQAlU|MBU<{5XD@|I_?lbJNF_FFZO z5|BTx;|wad=ulZ2&EM(yJza#Y-<+DH(U2HfN5fS6fl;vxrpu%$g5=jyEtLmddR(5L zBE|1s?c*$~0Os$stc!XhvtKC@7HuoafBrSmsyI!)LJk+#(;VI8jhnaq0j2y9jPIf1 z{5!4m*@f=|KmU9CuZim!eWNjdwdOb=LKaFsG3EKV|HpUlksH4MciDbpxa6(uN^pcj zp}i2M4vEJ&ax3SLfsY(7Sz?2CY%XfVoSKdRo@UJ4@f^-lA9%%Yn5m2eeVAwMU;Iz; zYC4ZpnbY5_>`75A9!T?hDSdaX4bI{#Yqf0;-Z!?k?GHJ7Vi+nsd*tn*cS7vWLftFE zfRE(oj#Tu>OylC*qB&MMthL&IkxAV?DY4xYA{Om(G?x(w88@7}C|0>^^McCCgBtWC z|D&+bUVLi2X3qYZZUXsBHxa<|D=zi?6zOZ^&3t69620p<6!(KzQ)oGM0D%trt44oX zSpWL$qFxYRFkwEdl6+smAUfT=Uz0=_{jlQnlLSRwkm-~5>c3SH%c1u*j)*NqF;H~PU6a@4b-kY>+=i7H<}*$fGu|m) z=niajrj4Is@UPvj5C+nXaqR>Z5#`#A=~^Z4^0w(F?dNJ`-CHy0xEXQ@*61r#5X##s*CX=utdeR%@S?O*=b>1`Vv`d@ zx+~(L1P8Nf&eZ%DT4cK47|p8%qFDth3v$wMNyuHluEoWB|au z$WNd6JV)u}0IO1LlNJaSOy54Q{@_@fKPCLFr1?$dlM-4^O%?))4~WZ24seV0WyMY# zIcnD=i)qlVqznr>W5_@H)ws3O#}8CjkOJ!=K})7+4SVq8X#1Ew!FT)rYXNBdt$UY` zb|TYT#u;XOo{`~Bo`&}6Y18X?RP3w-tS^tD&0%OPCObFWM)&_uiWj!G;0?Uv|K8B2 zHFs1}1qf7XHw8#GVIx4@?iVyu$3*P)tah3iOP}G#&x6kcY-!g4AptZjn z%@=@C%St7Z`)fI_Eq*L~D*>#Y@X&d0x#t$C79#0z=rl@t=G8O0zttW=^^VeU6p)d_ zM(WC&qxEM%3qC>9M%?NA1zy;EF>bV-f2D$Aq<@w2jP0NK&;j9h!jEkKS;aBu_gtw3 z<=$%jH*H*VU3&tB;>8vYChBde_}h*iUEFP+*cMoly1meT<$N%JlW16bDyQV1M|E?x zp%{ajfD()jfakc+p|OFetb|kBau?6J1Wnsst(+btMrb4s+4_TMbwYQ+$*2Aq+jQ7} zc|`z&)mwjzN^g^9pb(?J#H58dl!I*{LTs?<*YA0royKm}pbECE5j8Ah|ANaFr%$z` z?L-LOxa_ztBR1LXA_S7x=igd3v3Ula*SbY?jda@GFlmBzgRR$e8}FyG=!{Qj7NHbQ zh1Lr(%=Jt9aGY{?VY&QA7wlw_JIP1$k1nnB1mi%sj>0xmMk@>S@+5%NS!B4wgx~h$ z-TowJaB>in3aQtLWv2=uTJ|x}vK{Y6Hyh7quNWI)Ur;fiB629x0d?ld3-dP-MoaQ7 zk~MzN%DlmvjlJB0OlPeOL9#Fkok-1C_2IdMy}vTR`XRs^nN`AJ+&#IPyfesMy6(J3 z#j45%IuPBEc|7IjHW=@JZl6ou*;v=(A>tx3b20`kf2gGT(&omxg#i8&Bg4Q2$|M}< z4UPTZ_^p+%oG4jA0yf3eB1ET=njFs7yFJpxPEX!_LKFESi~U<#r93G|DWa~DHgvU6 zeVRcA*2bZ>(?dthcQ~ml&kxO2wPd8%*Er3wpT;lw99sW1NB#aVqb&q4sl}Fgq7M*M z`iv}Lwf8~i;TwF3j8MK+*>okyK$BrnYH*0-bE`(8ow)03P@%GYcx7`LcoXwbS&7_O zx(ebs#g16H+49pp>g;`13`4O(^c5+L(<3V@*8`?-QA_UOF=YlDFYgkT&IkpgJeX29 zd!6AEz3gwRQA7q&#ok)cwG?+#l%Po+hCvj~v7~P)7AZS>LVlc9{Pn{gF>7=_7ia+& zR+L=J{W!X76`G+{+|%p}$kCQJ#;*kz+WEXG?*n`yHIDX3G0!yCZ$zC~HIm*qhq1Ur zgtePy(#&6*m*tPtMIBdCK{!#P*r`}9tK74-2TxNJZ0~PQD@YDM@9=kmKcLxT*PJ9^ z=HHS0!uH*`M7VnE8ba?(#P^^)Uyg0ANB5p&DPF(swGr!RjdF4SuzU3JXkIFXaZ#m~ z$<*zUVIeaAEafY!Cw3!E&=O0^mC_g7u`?15_!uK}BzI1jW1D z>?Ywqa0|4ml!sVB3>qw(H3J{#Qior+iLqQABDPGc`o6ju9?uZc1W$K+!Db06*Y?Yb z28e38j)m<1?!ZSyV{{sK-K9$as-bHkm?aMks|Zj`-8S%fjWk?9m;LR>r+T%V6E7+} zF`>L)vH-i3?7%beNcJP7DwdI$Npcc(%E1lHmAy+J79bMmYgl3L0^HpRIgUt22ql^X zL~IB}6`-`Os*sL^$iIH@!^-d3+sR_2uv!(!eofN^<}Ff4mIdq%bD<0+#G=jLPC*JN z&1M$c@>5r_x^g*FF9H}G5}K3)<$w=ehbVqER}}Qhkxo4aueB4h#8;R=$Irihd_m!{ z{kE__I+CG}et7)LF4d@sX2JXh&eVVqlyRyx{LmzxAG)``c_w)FL|Cm@OA_3~Et58h z{{1_RxIA@b>|#0ds(rBDM+ej!l5`g1@%7;*oD`1B^cV z>|ts%>7j7C5;4)Lh~mnL(!`0vIg8RXTW(RdzR%6fL}@tk10Nqc#%m3G`P=-@kMwCF zKWLlv;o=Ycs?GLo-;$U22l=u|OuDQu(>DcxHAV*A!I{Ao_X(y5{A}WH9vvJQsp^C) zdy8{72$@uS+l(1{>RYUezY!TY$Wbctvb8iP9H$C1LElLWx zs`*ZkyWC5NPf48`cHIyn4jYz6U7AF%X6|n_R(ABTwewH6ogPjh7MvKcQAobrabwcO ztR+1+{D_;ID~o^h9()9}8T=&n{$?s_{1!zCsq&UT8o3lu*Hc@W*+Q%xrujSUF7#DV z><0szM_B5|0O7D^JxGD*))=-v*Ts}LL2T`llwBTGz50ZuWo6tbjCi@*?yweQOln#G z@gFhHruM@?0x=;`!vH}pNPWFquoszSQnbj3aI}}r$C3>b2s9#04rY?ru&KNPVA=e@ z03VSk#p+k_1q64W>4t+@&8PMQZ1yrx%hyK}J=Lg(OKp5slX&PQu|7v)o%xIU2SnRGx$)#;2X0h5X9i7_q@zx}HEOHEeE46-$QVFh=#u0Yn(`}2VapfENJ4lAq4 z?q%|Uum{Qdw>Z9+OCPjrWQW0%;8pgnKxIq=PY1D!N&~Hwc zKkxrSHT-^@h4IyukH?`6jI@&&bV*+p=9tZ|Ym174>2|#7RVHJv1evH;KvezR0kl;g zWcJc`5;QI{Fvh;qe;2DslXi+Ld%jxo9V;zD8$!w!JpZhAw0EYsV0xMiqZl1@nv*b{lFpxYLr%Oroeg0r?=RvXUzuqYMY7@4k?UZ>63QFkn{o9jH$z zkLKJGC%o0u@f)bY^+66*9v1<@!qcuVFYry7y~Wp;@fJvI!G1mVn&G_{;BS9BhR7rm z@Ug0F0tEe9og*CC{41oxax;9{ay_`hU%-l@%ejU`#DCTtPpGBz?vy}IXx6v2jy@*0 z#~ynx&s)Ia4E$-<^JHL-S>OYI=(ztVTGMQX|HLfYb55DbwXM8V&;j2#i zlwDBz;&V%9z{$_X)*E-C)p0tFLYnnoE>KaC>~q+WR+K(IB{(}eT0!BbgEAYp6 zh{5IW-DqcZEp^h9$7nzsl4)J>#NGITU5~JgE0wPB-A?bZ_IXxTKJiEkLQv+buk&G5 zq~pWOj(o(H4H`$Kk+kvB4nkX!Mo(}IG!Z!Pvy z>iNkQcbg^h@0SC=yC2_aR9V6c6yOPu5c7Uy^?$gy9w8d@23p|WS!aoGMJ`4ZBfcZ5XjcY(g>*+O3>Y_r@#4(3g7M% zH`edkbLBgePL{E+(~MU>k02B}i5acN>$0JBBoKNaY+rn1%{5|on*3BLED8)rT3sPP z4YmpCQ{3n)5GX9Bw^B!h#1-(6`RoH=9;BbIdbxTI`9UMsPN#Z?*pka}4Oz7uNe^IF`YREGm$Q9MO;$XN2yOQYs9y9pH zASDHyKUyBv!P&UWN;kD36)2!N)Qzj;>3VSRWF;=<={ehNzi7+vA2GepitCvs8Mdb% zn>1Z~zf-P%Y3hkM3zxT#Y@*3p={g0+840-th$iAi^ZdHdv5!>I;Ody^U>ncp4i6HV zV7(Sdok+xN=IBiYk#ME*RS^Uc?GaKCI6>E6XHFkdoxSW>fXJz)-CT zT&PN>r2u^D-1tSthNp_bh*gNi*$d?M?@f4&TCv^w1t!FHu0vk`53DgVAV`Jh!bTGs z#L@uWZfkC&0S>U@dj}L@`VI!1l-*+zv<)iulpLG0vN{PM2Kj9gR;*;kW0dRE7N8Y}`W_Y%lwhwR3^1084qrnf=b9w6mgB&7qmATT{oMBcm7|A6XTy){nLs%uG zbL%XI^va&AXm@>5#X&t8lKx{#hUO#?#2YT5u&0E*xsSB_Hi~oc81@~40lI0f7vD{k zF#FsBQuhzbucpC${0VB3Bi9}>oG(2kV02~Q*_IkFd`wAb95enqjEiu8-S={CWHaZZ zvwAYvY2-CULtBOOU>;|NXFj^sCn$FK01!A2kPO`a4K5r9#{x~tql#L8#=A#yYP&Ml>-AbW_4Cxa{>bgH!=TAm6a9Tkzs$#8J-2)w*V0XFV{RYtEf z99|Pl=Qt1#Xu2@^^1p?G4a2AG7>!6C{X{(tQ`C2wzQk8gg^-Gy`kBMe zI%(=B&iV8ywuuH65(mb0n))ukyO|uSVQE3sNn|i71t`s|$!5E5)?2~)S#DLd z>k<=zu~pPnW(`w>T=UdD_SYP41v{yTJs)4ntOIu=H6e%n8l7Wa=^9ci1r``NJ6^$g6C$K%P){?lc9ww47PQm<3%ZVjL1 zG~-EVJ}Tv$-#ebeQxqsUH_;;Q`YFHJ(db&>UH{zuR!3t`lVha8<)AAhz*mu^roY)CA#VB7 zw?=1s4Co>-u>hxns~&a6HeB&7&aF$Hf-9TsIr%x&wNGoCNk=S2hLHgdzTci#yl^)ur768K=|LpGChBUA6OuK=$}shb!XR zmp(p)WufXrvZPe|Q|#JY3^2C=ENMXmi|Dz(Fs9jSz?d@js{2q~*}=Gz28*bD+>5l+ znQ?DWeQT;1$2P_j23@ssdyluykBBOlNHWU*O4WV1zXFI8CBJM;Ce)uBOX;eFy)TBh z)Yj61{JgJi6p`AKSSZ4RDwUjv4lK4n0(>uyjk!Xy2sG%5LYBq-A@0*qYNz=%R| zVh&bob~Vb<9wTMhCT9L5LU6%gO!m;FO7+9DWVH@{eTgA&=VTUtZr9d17Tw@gzBI^l z;YTl0J4D67Be~r6f?y7fPc;QPE65!IKC^MrM>Rmm(LF=w2ijwDWRogLFB4G0@xqOH zhv>>O^gWnzAA0OMXoeL#T>dGnQZ`q{*7*gjQYuvQta+oi`V9h_Ng;o1EEcWo!JbrE z8*SI%$>j%3RsvCKDVX}hWlxjYwqMn!Y*3hN2+l_qz2;iV!GKd`<|ZYsF*CF|+$7qg z`x^VG4Cf$N=lL;%0Y@nx#hzDK-G$vImC&y=BZXFmPB#!FzRYP^x|m@w)Swn2%$*&p zmDODbTa5_I>#D<|?xQq<8&Fg`zqZLPo#p6yuhyl8ecM%Pn-ZY%U_H3lK>dAkWS%41 z76BnQUw+#r!1&ctA#ZPU$Hjbzseaxd&Fqp&6jRTpQo;vDss_qIB&t238eGDd>5mM6a zpe;eOW%|x52kNPlIx|#bhAD+lCH(d7T2C>}2FtqYo zqYKI~{>_|Up-6UTmdkr{gXhKGDkv-UG${mjQIXb;h&FT9ckgpCoxwcM{IcWGwaGW$ z9-EnZ&`ZuQHEnP;76N{0m~0~zugdCr#QDsZzY21&R* zEf_5NPpm=f%Z~MJ?4oaqoY?@=!Ta~0{{&eWh(aEsRdR`^^>yDC_`Vk4P3}cT7vzX( z?CZ|+8O(4D3{+lo!}jxAej>0|mgX31_O3=Qo^shqDWBrp^SAqRNqFsxMh*4T72%@Q zaw{xQU%oy?q-A;2Plf@u*bB ztHo+NE>SxI+=*n&>4te6X8BF>;bngogb4@ogc&)lNDZ~v`90k{4dru9V$V!Ys|m@F z?_QzD*z4@F2z^=cdN3ds*YpQU84(0&>Ca`N1a;3{N!5tIWpPlZ}6pE-d-+POueuFRg0HCO={uKoebReqVbdO1c{iX#eW=4=}QEny|?`KCl%}yXK zRlA=DLYUg*&$pBSQU-)gt=0-?_4aI&_aXqu$Wl$O1`xtvuYY=yN(^&jVXRn;In~Pu zn#wkx9LcytpW~|rSW`dSi6Wi&Rj!s-;fvz`ca>SgXEu>{VUK=OY9*ESMT6}O*oj@b zD!T1TT-LQYmd_8>3p@*i%$?cWM{-ObFajN3=LBJZ3a%zK{DWY1PL>MBLkV5 zSV9d-Qo_0=RP@}-DpvxX1h-N*6M;%3R%6cd9dgHlB}npzBtyL*csMwbIpc=qpG2ub zx)exyx`fvYfj^ou@dse+oL+V6Vx$aoX2(Z&*aLM4n*>k>@SDkB337r|VEF=LN9(FC z^nSWuUQJR+U5;p@I1D6E3T^(lj_&w{6h1Fp_RXw3mOl9(13p7&z!a56jycIyx8yYSuHLpHnr;6|&2wNx&tUj22XVSKES7Ycg5KMa&-De!&41Mkz& z0xl@#GczG;q|a=ws}6Qv%dTwKF{`Us*8e`SGMl=?K?;dw)nQ=NeOp0`@o%_xFDLNY zFE0|>!rnydAZ63Xf4_;o@n%BN;=tNlS4OuzfG1%6n$6$Ro4=sks{CI^JDsYb8b8ZU zhog{t^-*jZKhOQ{l^2;q08=J#kFRFW+`g22=o$p~hyH6NIvIb`Aqw2*7U9vYtnz?I z0R&U@Oh&Hj8ir)Iz0zN@o^oASTX|)M*WMUEvuD=@H|wA+@~j9^d*ioZJ{PgqlOX!} zV>K?eIZYf;f+#={K6qmdRadxNk<#&3iAAS=N^46W5Jz92+4)1PtwE^OTXllm#8R53 z@yWqKO&9c3VCKHSP(tlQX%l4y@;un^E(nq^du5S7taA;vu5N3=hN}jwlgMU_e z3?b{HQ?r4R#2|MYsd;&rU=HftScr|VeZ1iTg%W^*f*e=8t0@B`i=ti@fD-}(e zg6SB{E9-bT;64qYlSU1Jfuio|ShZysAE+O6F!N~e|^9wF!` zu-B|$V(3TDNbZM0@%;P-2>0Tl=OM73WACvWu;va$`AeSbX7sT05zAM(%nUZF7$2T{ zS#tNiy?~Qk=8m6(!=Dbi;WT&?D!yKmByI=6LNa#fRoGSLm1Atcp;ky=-qv4aET&A2 zf8_0bkW}h>$IQ~BWuYU-VT!MS`Botvqur_l%;RK?iD<-eKi>29$}OT`c+tYuwLp<% z_bokH@aVC|7eQRr@IQPdF<{Ax99an9Zi*)6nc@B>UfG9E;Eo*oHTy3L2ha}uF|xKk znk){6!UVSW@5TZi=6@hRh=<(!p1F!W;Kv?M;e2KuD{BO_H<&{@TaJBd+j*oz*Oid{D}pyGk7!k%)k0m|*R5dcNN(DDKQ-)E0JPCSR)31mrDq>g5Dd0jZN)7)?^1i#- zzd`=W0(CF3T>Tpp_WOkE_leu&v9*cyi5L^i*oHfLW$d+mq$<=mozJ-vx;sMG)pHF_ z!#4YoX>9z);NC#U)dc!WmF^}fspK!tJS!Wd93neq(tlx$rLMK35Tm?F?UZ!L2d||< zB5V?dZ`YQ^>PL`3P z^fjyH8Yb^>=6lxt=XrU|QBQPVW&PnkB)^giDJf7b+q|_vSg=(~X9%e01)29g5BrOu zp^ZRJ;`|lD&JjY;;p%-esrWRe&EwKT|5D~_|MN?Yf@mOY@6BoFDpp~6xfN#d;VoX0 zwY5_8LfLox|kSr&DFCshocSP*w$Wp>z#paIYBzemuPF|OMi zb0BR*!Q(46Vkyyu4TfT9(i@rE83{pB$X?DIL1^C#wT)V@O=?GU^_zJs@IY=hLU z2I7LCL^x(wcy5G{Jf00_8wjR-o;l38o>PY&?edD85<8|3QWx z{?`{OCoTjceKRQ=Mq5?0SLbjMW7&eHI*2gk4x*IH--w z*#`{8>UssOXeYQb|sYo5+Z#pGiJIr_gh?+*lVuP1>6yYYe3nFDU z>;%HNr(;jdjJSw&g`Xr>Dc71y9f`@bbHd)>f)0t7E~=q%Y2N9g@9XCdVBPU{!qFxo zp-T?T*IbsQzCNflbyctL$i}N8R{jb#=hjc#J9^?&elk;M!8y5AR-(C(YvU^zGC1qP?ZTU`eaRvMQgKZ( zMX6JZ@<<*3#q!DN`TR$fbT0LgC-5^2cmpcQl{4m`+aRfSlX?q`iDnfa#utENU~4tE z=f66GT2q!+$qpGQt-#{oloOysvtta3-v)9$o3o_z2R z69okuB|3*H1eo>Bkf~f?kcVv()+NN2^;s`$wQIJEiMDQiW3j0&EiUCbuOOe7Y=lsYWMKY>i%6LyJRY+{6( zx2VBD7r)|vr*wI<>+s`29D*_%{Ks4D(`S$JyqDR5G0E>|o((Tcm#zJT^voi{gvR^Q z9*wL-nC{rQRsvz!3v=Cn{om5aMfjS*NEH>tYyXRm8#ReWvGw0S8OeRxQV}H#8HA{8 z+wpMSQ|jhIjD`5Zou@A~9c$}U&==C&IO8SUVYIaf)4=~Yle^T$-8 z4T)k$Jw6C8xx=%W@gb;O$c|sk-3L5>u@LPICX7s5g$@?Dx=ifh6jb2FFebofZl~Lh zS^L7>U#DuaGk)MDc5%?@2yip*Hv@(HLS_}dDJtfUp2M?@t<96#|HrElY{d5crx)RoMuo1>Q2CmZdxoq$(mNqOX9GxKJ zic(qje__Je(mx||&~O=}OFZF7s00M9mC|7gf(D*S1U=1{2#+v_5O@dY%Mp1O9fQs^ z)fcmgTwO-$j?2c_?rZZS%gjo-*?EQqwM*BtvS4{O-Oc|p_DF;*a~y*!E#iKNIS5e-tN%w5OfC2Za;+|~cu2u^yJFHl0l2sjZ3reDDjnBzk* z4)NIJ`8w885FA!~RY^+%G_itCdoxC(95fjh!@-!~W#CTV+Do}Cm2rE1uLly~jg<3kV8orv^`HU|XHG$+; zDO-M~)IS_dxBhIm9^Y(m90w>ffW1rRQQXoK(|`$J#;A4k;xi64&#&+Lkda|jn1<{< zRr_V$6tJ2n;Sbz|QscV`C|&vA9ToehL(2V4`aApnSNG@MC2F;M)M%}|u__59Z+-xm z;g1x++Kdj5m_e=sgJd%;<3M(Qg6g<}XqUGen@7SQ@9-^CS$5b|!hGry157zScbL9m zQ6$bxcmSp-`yo5Mgca=MKmK`#34a}dIL6|H8=?L1klUYviVR3pJW3zP?;7~tKDZ^b zQ|vx^Zx9#&NYEEN*`jinjKAg+<{6`x74oK#4-wAQ#g%d8Rifg(r z=3VElbL#P>gRx-?m3C%m(s5rdf!KxC(a12TQfqN!m=kkw#>>Xy9SSP{JG4|C?86VGV3Bd5l?=e8^)KhP zAi-U@KGLeG7Mo)Hlny@>ep-CGf?9*D(UG;LOj8vQ8q&vbO|ESRCrh{xvPLxhPZ=3* zS0lcC)IZ2ANF?l>U@wH3HV{g#^)eS-$oG2?G45?$ztDV{&{UM~eVt=786Y?=(;CLu zon`P!U_NK$MJ`h-@IujD+?6LUo#;a)oWx1Eq!m62%$#N}uyORn~BOY!ozJ=Sv9f9XJY97g{}f zEvI%3rD#FD2>)TE#R~`TZkKVGbp@r)?oaz)F==&<+DGyxWp(>cP95p;@lb9qugb;k z7Zu4SWaPu_ba<&ep!Q~_A*Wz`=mC%?^9eeJ0VyP@%P!gR>YGTD5AriG`%mK5P`E9hT7- zmwDA|MBSt`8a@{+lJy$>w4&B9w)=tBTLnuXged4$0*ejiurQKr_t9WA--xeQUEgM#_qCR=*#I0KCc(* z>+rd}|Iw3_i@B`K$9UFJqq3=tCiIk6^x=esm4S7NhK!0)VQj(tbJ=N%>zfE%a7DK? zg9(yZk}DF+_{YM_{puz~v{hc~7lrjQ>i z0})Vhvm1F{1KGI*y4r_KVj^HiIOlc9f9dIaU0<5xGdMcDalL=L#~WV-x}bugWIk&5 zTYTYv!6FxqEBO{@Vgh#+7xz8l@$s09=p8ERN6A=e63!E*W5{wtd?P%f{bp{sOP0RK z=ZTa}e<;Xgr8F6Z!vJ5)G3lnx{?6OI0OjgFF(5XcEHpo|i%pqXkSGb!N#_=@0c;HC z*5;nvb2T}fTKO97W9-AUmO~RT*a?OqhV^_ke~xnUFmaPc?W^ot-qJdJ1EWwg1V%8_ z8c}&tS_w`ZLe!Akp6B{2Fq;FTb<0rrh2KwSv2s?Y>!QppZ0a8G^3)m?lA{ojKE8b<8d-tatd= zDGI!TiAlllHk}WU;;-iI_^SOfI@U8y52Xb-d`rDF4Zo3!VaTQ`gu|m`ug7kLX{Mau z_U{gDQ*W(D7Qb2}?`0bd8oR8g&8^<8O(KbeE;uq)xNknBN*>sh#tQ)RpN&XcZU?vk zthe4t(tE*tC2PWj^%dkL{$iOvLoj^gWhxt6uBy|#j0*1cmuCXbe}7=Nk&X-%W$@Ci`rEzqDM52(&%XggruBD%&m!+QEbGrOX{@ZRq%(hPGPZwH z+qDBcR~^C*IbInUvJehmxaOa&N>gGLP#v%=`BZ|#%4_945;(YU+lLBNXEDu|Z;bYC z)Y986iB;6f>Y?jE`UG2bVg1TWqV&4obp(KqA0_Jt#c-2 zf5GBJsVnX&B0ePT1D^!c7~YAjR148O8Mom7)K?f0dB+IDVlFb|WUINv%vC9;^h>#b zX9|w~A5mW&7S$VVJ=D;lbYoD`(p?HjH%Lo&cZY<8fOK~^(m8bhUp6+Z+u7RVL{)vLAkMum3iQD{9D zs&MUn*)7)o?PlO0|225&byKDJSMO`rr;Ziy1t;o!@E|vRKp8y|-N^DB5SRAFi^pt}ZgzXfq4QA1iAaTFtlj;xr#8-)T0T zmNmJ1H<9 z%RDr5V~xmRYi`KKT1N~ziQ2CZ+C;36B0VEpEfO1Vknu*L{4~)IT&~2r{eP{lg~_gP zwfAZasIf@SYRL2+<9mrp#;kQ0@l$7nLa>S;lMp9SskclR0}w`TBnlZK*AE7AaH4Ks z${DsKFYaR9h+B>(K*DqusOgQWw#p#o$c524dkb~j73LpQqZoJ5s}(fb@jIC0t=KF^1fJm z%i6R6!2`n@WaG6F?#)bZgdJD^yo8J~|{3UzwFgH@hOQ^ed(D|UXtPtS%NgDPePgfb_mMXyh6J) zF7$VGW>o*M>05P)-_J^V{C>5TLoLi^ou)J)G3QJXG*5wCIUO76P`sFU9dc&Rdl4%@ z2pt(O-EqjrP_@F%C}5J}@T*in1&12hrVU@k)i0BEx<(<*ary1qYRta#p%N;+Cwb%y zmyiGw$D&p^I*e(SxO_Z&=h>ztpFWZyrbn8jFJ|bcc}FF-oWtr0C^)nZ%UU>EPAD$5 zlhPe~V4gCJFnoE_LDF-%_Z%ASbeWz8$e2eTo0NZFjEEtZ$7>H!vG+fKjcwix+J+_g zZwd6*qR&7>S7vBBM7zZ`;93M&X}-5~B=g6wH$3V))`ny=YlUjv_4fEAZI;;m#Mf2O zWY)RUe)u7TeSUW+g+a`rk&t*ASI_;9?gNR!$WjfoN|R7miGGIENB8*%VeV|Xs^>A{ z#Fjswbn+ar$uQum8PJ0-aca8F8QXY77LH2zYrD8!ZZ(4Oiji4iFvLszfBGcV8+R7N zt?viO)OQ@2Db0nlx&Cm7=Hsw4EP;yVY`3Zlk%|b#&W-Ly$QoW#BK)O^IX=|e4nb&# z*<$rKTMEwMC(msj;n97mR(IUv(yex_bcvhA{lm2dSB22Iq2p@vN`Bn`&p=aTA~nn? zNIkC4e)uC?(cFO(i9uSX?KRDZTUS>5m@$cWU{?wBn0j9n&}7cvqRtWlG#)V^*`N+K zphr7Mz#(NtBDrV54v=Fl{$4A*=brH<2gDPc4?c+53Rz3)oyL?|4ZIo*W)?$tfezE@99>*_UIQKGQvz;a>H={{?0N7mMJ#BONc=iIYio_3Xj z7Su94+?G82Q_^`XQ`lId?R=S&epL}ij2H@4z^bSeEwyd}5W5!VtO{ArpAf)kpH!2< zbBOb%Js6Zsy8d!rPnStts0f}r9`Go+5qYR$g7FECIxPWZ{$Dey$`GbT*O$shMM;nB ztYpBw4Gurpz~8_Nlmkf)_$MjEor6$X+@q{O4jE)25ztWQVRwyl#>3)((D z;5bK?rX6=*7UavaLxcbE4l`ZqD%%7hzC2SD&JHKkQo0?)I&CoXPScC!ChGZZv@nlY z@@o+fYrMK0n3S~keo`q~eGqrw5JDWn#GUY{Xj(be6S<>SZ5l1yX|@S?75XOo7m>Qr za;H}8a=(|x4$7aKC6sLL*IHMla4fouIDveXKORVKu|#Xth{g-#*Do<0RoVxAfKYK% zx1Xk`YH)`BxvcUWT5x`rqGGoaErzgxXJ`eLHtEQ79|ZY&#Xzxs8b4 zoa~8iB$rnb??H@M7T*NcF-|`+@-1>Vl1nHlO{9Jp^L6={>YO=;PICwy=`shYP?!)B z((Jx7;n9K}1$#weEqTYT?IcjFH+rtEZhkS^^hSQ%YbqpF8+EF=_8_UaD{dE4O6@@y z5T5Z0o;TMe57_B_SeV_~OlWq$nDDFYD`Gdl{NlTshaI6(SrJ`Nco2>b?JN839Q^OP zgQazz`|{!R>bN?07Wgn;Ex7bwfi0GmI|yyZZP2JMLxsLt|k!Ac&Y^q>_7850=+G@6I>p)!?o&%ioNVl0gY#l&HzG7C(Q3|=NS+H~g| z*z^qNe$iG}dAxcNZuUBZ{yVFn0tJzfZMgBMDP!tLja9=F1e3+PR0rlI8kE^Fv9-hO zWig$!=QlXzhuPcP|MI+P_AW%z{#q=eh{-%GZ!-SH*X9sS_3HY~3QQ*nvUsLk>5PgJ zf5Awb- zgYy&A7|DoXNb$}5cEo8&Wx2VzMTx^?X`pDziBt5eVc|T-=yO^sB#+5jp)vlqBY*P5 zrHv}>AnYPs>F1D{#%{g5J6Z)AQZ$quLrn86p6&g-&>`i@!>Y0^neCMwN3Tg5oG{a+ zfUPmMN_YBSMMW=VOZq5ZE)>u@>D&0XsAxDGy` zQGpcRRFHlbH&T__`|=^Gmx?OQ%7T~ECEj@3@i)pZ;e=<0K~{~yQ{r+%v0qC9li+%z^9=Rbglbww1H5WX24*Zc;8e=`!H(`)yQNS5BFM>b4Lq15LZ*YFqO$ z1GWNurm~By`;Y1h8GWOa9`E?Hxf{qw@#{UW-~N|V16|(NZYI%$%$wa0&se)cx5VYH zNx*=5??Y;<4R^Py8J$Z-x&Zqt-gdJS%}&x2e0;f5&x{1Fn@W9loIbxpJjF~A4A9$0 zwt!JM@lHMS0bZpU>rWQ&OOIS23>@7Ia}ho4%UV==V5Tq({=W6G03(8u;$JHIz(&|o z5m;i!6?CXZ|BXE=`P}lUs4cNG`AdhF2UV4E%xe+#c@bn?rkaVo z!GH1wsrg*RVm*t=kj*qcNrZ#8oO^X6HT}GzGz@VK-Xc^kD-gL$5ZzY89u=jS-(C@S z*qTVLvkJ)bI7lvF>Bs)V|NV)MYd^@6dk z%R)?>P`25Y%l=KCvj{uN{SnufyHgzhvI?eeBI}7W{W&6<5QiU}+HT|?0mp#*dwu2P zzm6V>KSnw_+l0pAR&Yg2nE zcxm^^pkos*6tY)WF1~^Ob|*m$UCQ9aN6%$%i|YEtu2Tb(!!y1Q$GM6Da=cd@NvJA()YpkM89652KB-L1uz^9?k|2+>dj!p0N0 zJYsY5yL*T(GNi!5%?`I0A7Rcu)K_5gIt*t9yXjl=ZRYv4J*p4JI2eegIS|dt0FJ7+ z{bWYgAt88q1zOoyk!<&(TG=I&(>mf#)!T=OzgpE%t2qcT-;!Q|$Ce3oU?^=GI8hxp zX}P&I>d6_svvwX|7r#ZeC(38^oauY>Cw4rVFXmj%&;@NAPUHjROvlSF0%tOv(YT#g zMVcLT%UZ z`*mqHh$kByaE{X1%ttLjVqT)#_SVb+kvnrf#Mng+J|1^wifpf-HNU-^=Lz6gYrJkzcmpP?ndCpcL@TWv!J6<(hJ6GR|-aN>>S9r7Ca zL1xn>IhSkh=x)C-V?S{T(Xa7R!)bDfbipc3J~B{^4^YMFraI~gO71MxR~l&S zCM@M>IC?m?rk$_kN@QI+o*XK}=${fcn$8aevF5CJ>_k40xk}1Gl5M@39pEr!?!qYMx;rbq(J{+sV(LWZ(nyOGI&}}(>hvojax4WZcW6l!KX%{a7Q>8aBn>xIQ`)+ZJit@dlqkoh+|7`)o*!c^?MSTfzA$TV*W z_dKUBaR?C-DFnHIA#6eO@}knn7=R@N@+Fc|UUEZ1i%w|OR_@V5;1t-Mh+MtKc*Ze%pS3XU%YsZ|5;p z_&qSKNsKpKV$4fIf4b-PKhHuLj%@p=UQ>qKAg!Kd@Q)>EIK0>-!-%F; zm;T18I6DUS3ztKw!lvY*3kd(d4{J)NlgHq%g?19dzsV|0X+0ICvD1MQ+#i#0tUpxU zta|3?A(MmoTf4;p<{59-26sI=Nb4|vY97?*SuMSLAnSLToskTl7&uAv{4LW#4!^RE zRGLOUcB%ZFa>-W`p@AjkUCwLqLW7!mxG}uZ?f^!kG-3`e__VMK{_68TDGlOqp!^dw z0!qJJU>B&?W*fu9d2AfdnceEoi>&s}W5sY=#f%hsXIBg}HY&ZQ$dl#>@e-?;)D*}| zn|QW0_2Ny6m+ruuAsp4{qMHLKkwJHtoSeSou0H-hJ(KQ21s`}0rsHLf)~~Y(=fCs@ zt~}M&hW%(^3o|+epP>cV%;Y?`?u(*$R~i7{nO=1!{n1u&c7>3;unn7}$*R$~AUgH} z=WnH~YwF;;19fc+%83@`0n$d4{>p7b)T?SD9}s)l+2sfW7ghp>tr`a9ffT# zaR{P2zsWA8Yext$2}$;jLse62^(|qf@9DlCRVp1t_>{aGB zpjHzl{}NNX%_r@>0Uq5&`60iA>fan`o-ldiAQY`I1pW1(`g7_zZj8#uw>KUM4_~l= zs|{%RU0<=7^GE&|KmUs)aF(_5!@cIoJDY)4LE(?^QJ;&(_1`h!?|HDD#v1o?=fxbn z2LPr=t;?S7dmC~KadQ@GJxVOKoxLLK^dty%+DsOz%Z6V8mO|TjOZ`5i-hiGT7n1s^Re1*@o+2QvYIo%Ips}7!{SZ>w3T~ zE*{*8;DA~VN3|Knueu+cd+mHhrLI?)xY~Q`@775EX(B-ls1niCTtvU=_MEWTs<>qB zKoLKNEF-M^ES$c zuN-S@9FM&Me>l-4MB5$RKF23O#?%lwO@OP#e-DXsnsod;A}QIV$CcuUkRLtcz<`OH ztTSIr-x`jTy?8ol_S)#FA! zNl#jUccc+ZqTu-+aSHoX#>S{15)N(qh2cliU5kTpYP2t%bBj&+@@g^_MJsDv5y zyZW3o)@bH4yIT#hJi=dzD|bGtYF_a#7UA)S#P0Uce#i&WbyNN8py?=QWY=&Tn#8y5 z5^RNZ_Tdm^2SV?^*F>3A!7rAEtRIvT!)r(+TJ(|1| zEAI}LduX-FyqGuzC0c7)Rvy%Vx4*%|;TKI^;1;NEayEbDUi$y&4xpzOJ{z3~dUSkw zbzR`q^YNyFGimW7S!Y>(rK$MmWew`APn;#^SZ&GuE_XK!3uB`X!#AUaB8N?JlsKv6 z&?OXDfX*M(ghFu>%8WRLuPdn(HH$ya82EJe>RUC8>-P_!2~vZ>nQ~^9wdu8{N|lSqVI{0q;hjsE%IbN8S8sc3(5p|kQ3FH$)=*40_VxX6LNVhIi zPoAjHQO01@1f(3K?6gbrD5q3f!(#|;jieGcxk5Le%`R{wk~ek#5Tlabn(8XDZhZWf zb8rdNjVCEA@-@qu7{GQ zvvki}_5pblb39eNakwI4Hm>^;&(#~&X!NiOTWAm`_R@XnzTZx3gy@|fG|OmqxO?nf zRo0uHwiF!WRDL9pbx%Pmq5sIj3hK!+DUd`$nhhQ}FM#s}`6dqPF|SH{?9*)u`sA4MK{p6cZ-| z$>7O^HZEuZEw<^wro)s?TjL$|kcPHu-HNK(+;t(;;Pl3aAE0~LNV3oJJ%yf1w$<@W z^U(t1+x^ARMvqBM28s0NW8uG(ab}A@^Ub3;x&M$Y44L$_1NkHH9M143VUc+k135~j z7H};Ja7MMd?RbcaJ$NnNeej{vU(aeH!-W$H%2rnA%HQdnKwnOe!^KQ0ZQsR>BW=UG zEjiJ7@2+9)L)M=$nC4=^Pk&S9X6Fg9s8my^VmcP7C@rO8Rto+-Fv{I$Ye^Jlb^pPI zkJ6%g8g8Q+zk2YPZMUK+k#wAwuvAgyzPA9yoX6bhELDaFF*jfN_f_Y2xE9lM{Snj% ziF-t%{2PdtP&T;V%3n9zdg6XMM8g}?_9=yuj?`=UdkZ1+`gxy_@HAgiw0!T5?q)T^ zL$EN6h}rw33jlAC_=hwTReyX#dJ@(15*;j#2APZU3P zd+u7Xjw1uY{k_x7U;Nk~--*mic|lmGc}fK{nfJl&Q!FwCido}saae;zB!TrxDnuy8 z&OYC=wa6=%#zR^)y37qlHy%*ycDY_mQKOXG|M z#vtttnnbGrPu3M@h;-++o?>xklYR;IK|F%J3+j6f5$%~Q8R&95*z|c155Iz6?sz#s zQ237E=n+{T`qJJ&_j|IS>dl$aa5bU)nHZh^r$qS9e(@U~rqoLd@ZDw>3jt6o90Rb> z|339qj<7!9{5xJQK3BpnE#JJ z{T;v5j7F7LfM_mYWq0<0r%haHagE7``pR$T(0xa;tK4ASj)+CQ^^701%+OTGtv#N~SiQz{ z-GNP|s4ZqJb>x$p7H2=$HCtdfrl-wTbXP7zl}AAukvtb(r`k6P^24^PfhFYHZ|JGl(%H6<&2@W`8+_Kzwo)Y4CjW{H>>_ zu5P`GA=?$kNo@Kqcta++bB6wx)HAY*4|L zJf=ieGn!q`F)o>g)W5l|{jK#fKGS6@cwf|V<+cU98!TOw5|ysHODEiu$=$zCx~i%i z4@dkChn@GLI*&sN8<$yrb=I2BWm(}M%PnC4n^QVl=kS5?MY~FO&&rGk7i_!n3&Akok?Yz+Fj!lJF+uA~MV`cTdsx#|#1KRB zI;;Ra>Y*Ng`% z_#rKh>WG*<>;%mI_B69ulsCMXYg$H3w^9z-Qzcl`)gnk{L`Z!j7Xh;U=hp6ptO*0?tF6Bpl2v6V&3ey(>C<{y*JqGlx)Qi z^2fT#ZP9$!o%sXsq@uJN?L)e->ws+h3TUdiy7)<3_^m!>#?xf`eryZ*6%I!#uLUFO z{GnSbx|CwPIW0NMj)5shL@eIF_Fe1rGTm1XuPvl1Vs}m7wPBFai%u zSSVx&H>S#2@j%EOk%%MG$NN!~2qYW5x1(ET#iN)L>@r!bF*ZL8Q%f`f?y2NUE9PZg*{vm7Jgc11|ZqfYv!zDvRCYqn$^k z{V77RUCX!FIVDX$r)hR|aq|joiGb+V5J<*jvn@}-N?lMG}6ybr=Q}*z+#hC27sfymTUszNhV(BUYNK zs-H?f40mqLC;Oc(152Wfcwil!J%3pQCtX$F6$MubxKb}Zr&=^04GJmhK0=Bv;Ma^T zhGb53BG3$Lv^_iI~1dtvN6E{FdJ5NN*jwBx`RUSrVq*(w3gM9WO49-qCv5A{(N z4&Zun4P_}y`DUVv)ZlFbC>^3Xb%st?Ab!5!l&D!-0v)k&Y!K-v{Am%d?FBpnMYNmsT_+L;!DIaJ4$6At4 zkpB(6Sc?(KGLr{1Kn#Uax~4&*)(d}hTWY-eyaeS)>8bZ2Rfe;~YogVNcyHkB3jJ5> zG#6%2ItthaLlI$u_h-o{^n*=FPA0jf|5ro%t5>R~jYVDZ(wl2bnTk>)F3ntO?Q9n` zW?EQ%i=fqOzrf9AmMs_hr0~Mpde6Y-rABoE{>U_FMMolrmkBPb)9nX zsHOB`LE5{`A)PliB0RiO5>Q*}`AK<;bp#8h?7p`1WMc{|w__4^wKgyTPGCaN&B0(B zTjsah%A_lbkITMz)?Z7vf@9WM*|ba_!t3X)n{x6nq-xK50d<1J+443n)m8z!l{el@ zS{~PdYtc2558mvIg7$bI*927Jr*OR!>lu^8s1>k#%gYwUt|y!b7iYul8slKO7M zPv60sA*Rys9uzB+NaHk0cgdx-@t}J|KLtzprY!o;@TqWb+~-Pus@`b1R!OJS1`wi9 zh>6hO$R$LdWfZbP_i7Mo&ohNG$I^05!YpXtQ{?(OtTs% z@q#p!z3bZbsVJu`@Z&iSYNfezU+o>|Nz%jij>_rdcmVwF-U4U67k|UklwH@e{_Qtw zKbL^oA^xBRN$u$>CS_<=XDJ)#jf1c{mXX8gq!M#XFDLxMrqXe`^H zify<=LD{H{$|D(lUpxl%2%FFvnuV+A&R2`8_t;=~GL4@Nfmw?|3mpg&_KABLvj9m-eXL*jkLRoM=(9#dPN>Tw-ce=%u zoqmy!H8>--v+CT74vtju&@o*N)#I|3;_xOj%;@}Si%oMI9^^z3Bpl+;PLn^XBhk&$ z;>~VJO>-j-10rFI$Bg22J!kyWPLg@Y@l~$-`Xppf&)56Wtp?e@L|X#;Nay*F@s`la z`G%R%g|PQFgyLq8f&##E7TPTe*0s>&box&$14y%%(&p$2T?QG8!WO7%)28lIkE05O z;6-qacxf4inFg}!P*vNlrqkoVli4D1--;9S=rM_AsXs`H=)6tFn#1y1Jooy&-1s=If z%p?_?v6mqIqh?kvwom4Dd9u&I8#a%`w9UEB8+erwZ*!{eVYq+|F!=G8)A{%t4Hvth z8`pjpJ#){cg!Sa3<8_X{_N)yLbGJbm-*yh$)c+0v`@K^DqungzY_~vY0J1tTAibCu zH1tD&5z~ncfFdc-(*V*SCCm{g*!R;bVne6A`?SLFJ@GCiI@0 zsEPfi93+htaP;ilc@y}11v4epW#JG^Vxq##^f{yANd5{`KM(d4?CA&xQc_RGhEKZ> znl4ji6e7C(IzDMUi8MA>PjRp7GC1=`t`6D2O2KL*kb*-(Ok;F`?WmSEarKWFnv@sR z?8w%>RcCZg>@b%1GlADimOAJkBJQOtGZMNiu$zP*STOJa1C8S2Z!lPN>%?k=UEX}# z45(j}GFPqlUY`^J$Jde6u%foso-Y1i71RP6UA`xxe`aPHdYUYbJr5gm7HR=+Srkmo zn8_npeI8l>NZy4gE3~zJ2bfHN2N1P%g{=heR{YQPuONUU)8VtPUUa4U%v}X&H2KqCY&w2s$l=6?N{dF(mxgZ)9_`=hr(Elpk zr)R(KDI-A$5;hEfzt=Tg!zy)r&W}EUdPZmEY(mHLhO%yzUucdE9Y@W{UR~_ST7Bn; z{&SV5alX%)i?*9@x(c@g#W&&Fs zXjUA(x-lhzN63&Exwko*K>)wAbH^uHlRx-IrOA149a9M)YOa1{J^X;D3B<$3}=Y77bR(%=f5>h5`OC{aJ zgOm5%`Mfk~RIzaBZ~|pT(CvMHn)-<~J63n%Ko9Qun$$P>y=rh*&l+HD%#iCAn}PoQ z2V#ntSr<*%z+v;Je9cBqiB{j(;jrgl#|saLG=Z{O{qwLgnqKzH~Mvj^*Q zgq&<_Ag2;696Gf=OFbUCBH6Cw3S!c4{N%+HU_c8qd`Kn1mdyj#v{ilM`F&33GggBWXLU)v44qVfcB%N^`*xv2x(l=zK; z&-n${%CFVac3znlYL|7sgp2QW7;ADsz{s@XkIAi93#iGtC^M-3@ymPf*3(E?eN`7t2M5w^F)RHeV{c-d};JgIz9r#AE5Eg*Bd%EUwJn+UX- z9zhH#C>9%Q=l`$(&Kh%4GF17~J@(PMC1hE%S$-e4aM#iuJK%#;x+tK8Lj9v^%yE9$ zZ>UV9_R_nXDJwcmJGHXDo@fLWK9XeRI&_g$r5ol@iZpQG4J5qta1(r#2szjpG?8NQ zDTcy{WXI#3xCO4xnl9kT{#8mF3Y+LLY1aEotgSko$<=Xw7l&kIHhZ1*{%jIH zQC=bJhk?``UlqV*J=dVH;SW!nyzKRmJzZu0=Lw)h_8^BuAprCMkWhV*Tdi*uh;IQ` zD&3FjeP-xWSYPrI3cI)w8h51=JjiVKKbc2|X!!r8>>&IfAnDo6-qF&6tNF_SqGvJ- z{uUc3SvZKI`a1Duqb93B-@39jeZMY+T~Xd2b#~QYY#^d=N#pkeS^?3n=@3QNfdhvh zKLgxCY5ci%23^#o2@j{?4{$i$ssek20;KPhn?V!#w1{qPO-{|^Bh#SlIpq_vCZV8H z^!FMKGFDVBpT7{sF74=?X9gD$DlIo*A@av$EY%YvRq}cVIdMUKbdpHvKu!wCC$>>v zoZxOQ{eHgb8-#W{u1IU4z#RiLLd!21$7wa|mD)geW2A0&bS`0YvooUId_U)%O=z|j zuP+G$!ko2Da_UOG3ticdBw^SZaA0+X+#`9vT{aaDw1k9+)7;=hZesfuvDWG9onb~i z=T4nMzo;6rM*R+kc<%k4z#D(Bb^n{vh>yPl!KMJji%G9w&Wmib^YbisI^ty2#pZ@c zRD0F=mdu@*(+>z zwv-XHx+PoZ==dnCoja68c^tKK`;1YA9mr4@LE&a1s?Iemj!{n5Wb$TEHmq`B0#fi!DHA3aH3GR3vK zF)~#C(RKg&S{(Sh|M2)S8pJhmU3Sc%ZNmw1X0vU>4Ry8E93NYUtI|ne)7XGvA?x)` zB7}nV`dB&I{Z3!Fki4R{*DAZ!_gm(^8k3fP_E#T`81>thTu6pnOs>+Qc>j`}(qLY3 ztG<%H%0ybOIT-u&)u`SghyjvKKOc|kNvld8G)kf8`HTK336!*`ws>T?m(?P6K5<|s z!tFMM!<|gZ0~c2I!@qtzCSh)lzKkUd*emcl7l=H!T0jHdtsdEbe|hocba3MkTtRD( zSx-!pmJey774rV<4ZmHcAcswlZu&&-70s=Vy3%~1$SckgbEr19A z%cjSu`Sr-~Y8W8*0~Z#^BYn+*>K|4G%(lQU>8{e7$G2j|uq$BQY~s6krxf@S-|rn~ zQeL`v{QQ_7S{{qG5@+J-9N*@R;-d#g-_P+u55r}fiw$g-SLdRipEA+&2SSbby-GY_v}Fn(>|1w9h5c zi(`1Ha{z+yQS5|Fs+v*)05yU~MC zVWgS5(CB3D;u8Hc4T57pc}+oHHLh>Xg-&!3Ze6SJP-(BWTt5M0GZf*yavgI$rR zMmatQ9`2D`G(f+;ZTD9~9KuI;(mA-Jr&7gNj>J0n&_+E+kCSpyUK+s;t2~)8U{?O3 z2Jy4ve{V1O^KYznl97)wmeJ>5#4X`NY6tiQ@9%u#p5vY11K(N&9BzQQlGr^L@*pXW z^iq@yS2ZEvjzrIWcU+Ea<(Wkl%IrD+8l*if<6?4u=6<0CKwyz7OEp4 z@$LkGm`q`M!vdSG!$J?EIXt_z5--7Ox=LX*_b#<(F20)Q8!G{b*?0e&&f{cH@^TIS z6cF@1Z@8RYZF;7EG8J=;zH>>6Z5jGcRY3abW)KZP5`X)@T>?Lu1S5i=c_(LQ3i=J6 z&l@5`!Z0&Ra`U^M>His_Fu6_$@_X3!0in_V0BtZ*CQ6}zxXyDd=P?hQ-@qnF8EoO7zz=IH zN|a0BSl!wkfZN~PWQOcNc^#Z?q0li^t)2IE0&}~^vYOS2OwM|z!_>q^0Lr}~{SbYL zEe$MY__lu;wVk(g9%%OMLAwJVz>Prt93wST{o68wWWUt_;kM~t@We{nz82>TOAl_# z>7)o?p@%9fXlr?IU=UtE|w^WSO#^DtY!pC|A7dbuf`aroZkHcRFOf%>M&WuuNPi1p+r=XV^6hx*dg^EW(a> zNtC>3Z8t&5D;&{xW=DO)84tijkV1C3p*18_TsoDEg~{M<9Mzf9myGavM~^WhMZkPw zzNVMe6`m`FBz|=D0YpIQN#^Bu&ICR7j7&=MoLY^{NsPwo5c2WqeY-^#T;2_ zwljB;6Jy>G1^BO>{(q||dRJf!Ruhm#t2UH{@v5#rfCQqiRR@_hf&$?u@V4klF%Hu4Q}Wn|WAF)!Mf$v%^L1{@ zg_}*Ncj*Ns^wqlLrst?hY8Tn5r_;2aU`Op9F(y#m-MgoZB&*|6Wt)Y9c)~U>2s%nN z({D`!?O$xpSc1v62or+j!x*C6T^~iqr`V?C?53P?WIy$d3nH>|3~?melI}qatP{cf zkXkmbUs2XW%q8y=RIQj<*jMjHD0d$do!G6EOm@6je*0#Hl@5EKt~iYeR@I&eu0A~Z zV22yf!M}02o*BHgKAEjmn8lonNFZTb1J~>nl@3kwYHyR}XUTc^xzQc!N7d9f>>9mi zr0DuAQ=QS88Fbye>P0D!>0Ti6*x!S;8FnI4@cwCM@*5q>ETfiv6M#imm*N z&KR$_7-67+BqZ{8=VL3B@sI1*_PXygk`xFO9cW!U|B*Uw5LVL@Tp)7rc*e082-%I{f# z0CrSW4YRRZQspmeUGx0t^iX5p3l^=`zUA=`eQ>&9$UBi@^%jdHH)3A7udGKSN=$)!{mMbTK)67Fpt)bh3<7U?Q(EyUE ztQz}W&t^?{j}~}la;Fk)boOIPdtqnc9F5uM{sJWAH*Yif3A=rtKELG4_~rY_Ektw6 z*V8inLkvWW%tqDKk@W@JOvj7zMvkY9G`1^-W=FxnOg47hj%R>i2Eyqh-}qMjD%uGF z8y7ZM^Y-7nIX9Swtz6JB5A4v-KO$@H4*i`6jcv1sc^^so>I&KFGURWxH`zny9cEhT zpr(gm8v$-BMWHQarV&3%paJQf6$txscgIbCK-*sKI}!hm4$s}cEHdu{?q`Isl`=7s zw5I(l{#R-~pDcoK5q!1+b|8Fb%==<$ijs6C5nLMUu_SCN83pqBNQxO1@l~>pJgA0y!f7QJYqGGR%|_lUMU|pW_sa&qizrhwwtbb z4Q1(3w{c^hdd;@ZZlDdP`bm$L)+@*nzyB-JWISVEBmUH3C-&VM^$qttPpSEE`74Z1 zG`(d;P;w!ZUJ_FscbGZB)PNPjRz0=BH;eautMtPiTcdJ6&`G<7T4@#BS~Ybw#X9OP z0|ztj_?EXf`!715-wb!`d`@#UxmW=0`kuMjpC|}5e-(2hUZ~k{yFR!aOGmiT z5M@_^)(cl*RzGfMoJMA}9q$#l;vkAve|^S-ECLqF@257s)|1ULY6Q)tL%sX!yJKlo{-v{gYP;G5bGRumf1D-0({_7Hd;FwE zPHg}8xs7R#K2ry)?myB4UKJZ=hw&Bg`E5l{jy`z}S?ZbkD?`ooB?q@VI;)52X56Cz zIxzmeSYe?K2zrgqJJi7}W32Vmv~gyfote#h4}ZBfH8bmZu3hUa8#Na-)hlMLQlpA2 zHHNhzGeX48(F0rsqxFj-iRGv@G}%?J#l*%Gw}}nY#V?)#xudoYz3>nN6Z~D@tDrSG z#>)oRd*1ZBef`A*F~(QlHs<8S`Sl)0^~m4C%PHvHJO`PLB|JdLN4Eync^iVLP#OYO z;s4Fz7zW`Oxq)^SguH29J>6g!L%w{MH&IO9Ca5~1-H+0TFKY!}8B z2%S2_Mj7gDq*p&XCGda_vz#K-Ym~<_Y%o5}U7eWPX!p`Oy>pJhkwcAoP;Z>!%08Kq zFs^vp64rWOv-oe%R8_w^4Bn~tbu9A{J|cg>wt~Kp1Qii>;Yo+d&?3gS-39j?EPlOt zK|@9mK&_N?xX*g@y3}8T;Ram*tiH0&P!`x9Sd>iGdkmn4qw{8Lb3({o>Hn1A_s z#fdvh$LMwHrkf#p-BL$srOCwa^M?2Xr_s^%!=>D}<+jzuDbfB0Sp}tOJZ_A6pNOPP znO{+%`wm>o$0H5A)&AJvE>P()Mci7fN6M87ux z+D7!d$_JIkRw!&GHfWE00XZL0kCaMZORS^X|Jeu#B)D0B3nV*v4s7lCr`#~Olh|2$ zPmgAjd8*x19;yUAOd~u$^3j+U4V{|eAa;#z>ciizKQ9UBy9}*`Q2m+9_$!R`j|P4P zP2@8teZ|d&wubREAsjw~i$l5A0yBS!W-)IiGeY8%>!dZqXo@W@mOMv<_Ny6d&Hbdh zzw*T{gV}tdy1pem+Mgja7o!B2*>a+vq@A#mdbErKvN2krRF}dn=Ud zKoKVrJLn?mZLY!a{KKzSE;Uy#-g8GrX)n%7N$b3U3Rrn>FnY8=2=FTuE{Y#d%jiA8 zOuZBEIJ9@-?IHGZDdf6av)rB@9gE0lzSt^U>Jr64{C_-MWmMGL*B-hg2Bahf1nF)8 z!J$LCJBH4oTSDpX4#}arLum;?x}_OXx_QU@zxQ41_kj4X^=T zc|>^Kye7c_)8L=&Yo)X#86@Y93@5$VH$l0FdcBu7K(=~t1`1i#-;ZiVeO^WA1kC3Wh&fgFjRPqjqD?W(JNzCp7I`3C(g|j=W0~VSZGKo{0 zi&j?prYQ!EPDQOxM)@wx-wg|{)kv@a6kZ6Xa{F6WkAtD;nq8jWe~qHpVeL*Xf*L)@ z-kh+<^L+=#C!*#tW8(@I&U5$Wt9%frqOL}z!BLR=CpcQYFfbL zGu>jt8=zqd9BR5Y<(Qkgb;I(_7sTHCrvIKcX~z!7Ae^KIH7gI3!D^&O0415sqAd<8 zaVU8>z$!N#k)mjMgiKdVeY9E-hLP zxxHqm5(CU10A5?V?<(ABggPSkde%Rr25`gJkhKEwO?EV{9pvEyayy0QHhmR*ESvKg zdIh+gH%^sf`L%H@4`=41^wLxBwEeFRiLSsr3aecDgYIxwpl?B5r+93=efEH($v`3; zX{mQVzI%Ah5m1dD1`v9)X@{7*lQpuTY(?aY_!HfMX}VmeF{w9G^X*dDQlbJmOSE{M zzMv&x@U{R<_>xT_&so={skl#L2}Ek{d?l34B`8u)OYQwz$Dq?Gh`l2R2D_gVbh8Z! zCh#9C)*WYP*G6=Heea1*W_Gf8bWv|MrjftY$e3H!0HvvR54Ef4z-oGW!)A~d9cIP# z*&aa!=;FKSZ*}J?AuUOPY1L~bYAcsDVubP3)4As5rVSk4)C%@ZONKN}Gz&T91*Izj zU_$x&BB5+HfN3x;rbbAs>^S$p*@g$P)a^n@t4a#1lzOGjR1*GNJ%TH{2$dXft_G^K zezB1Do0J~%5+@*L&0O{e(zhF)w5J7rYu!wbshp=0_7Krm3~}ZH7Z0!R@siU}ZUQLX z$Lkz7TP`Iacu}0pv0~wk{w=hF=_1ujIbnzZ88nIc)>j0BhArpu#SHQE-b+6-jkD5P zACcoe3rp_VyEvDxC^_075=d7WQ5*TdT3HXr_R<7I|7Qwrrze1pd@=rKxc(r+vD$}d zD4aI>z#hIQkQVThus@TQNEw0cK*DG`qQt=mC?Xk>j8Z?JG(ulbXc$PyK)>KaL!U8a zd91Y3nJL0VTGN_zX90Lbv(BvN8XF_eivHx^WbA8dVS2>B>I0@PkU78Y&mlWC)4Z&Wr z1!>n3!vnGqO`G37m{}dIS77QHIw-vo3g;oC3MM;**LHgMo%Sxv$3$Qya)dDjgSoCm zwCnumEaMkt0BIi)TgE=E8>knV;@I^9PF*$I8d~N47AU z7E2LKABEF>Xzs}IJ~oGM8^s`;wOHQfZbHy}P0q_b8~NbRS$#?6ix)+VMHS#WZGc|YlkezFYvt~}wD?iw z%vZAbU|W8|PUWN2AoytwGl+T~EQ-3` z__`03Jp_&p0>lnp0>QVPFMRVRK~RCTFm(kxx7WBV+jPD{np^< z#_C}&`$1?WDcm%K0K@bQ#3%@k0^IUU zeh4jP%Ap!0#62WcC)DNIb>h1u}x-Xi(Vj=<)fi6*6Kl8AAihx8husOxjd@-bHWW6rcuP z6vN|$ugU+;ySdAM$-qfv#M=U%%K6vY!;bZuYW~KA2>tN}cA}Mb{KQPWA+%jK6E_oU zEFbPy^!$IGHQ^C~@02{y1D?+X)QItS3&F;bg=698jsfT29f$=dh^K00mK$GF?zG}( z^;15ZXGgHA5r;83+L()PmR}nAq1q6-MW&6kb(6O%a##_Mj2IS8kB4W@xak+*F4imW zmIx|mznAZ~wvn#40yx^)M|Em6DEhx^17e3~^~gK$v)7GGC><6l^#O)=se^wBa-S5; z+yHFXLLiWXJ2+c6+8!NSS>h!U2I`9PyUoLDRL^x#ds}KRh9{!iuzD?I2t*D$pP8GV z1$;itx8f%D!`Ezu;kS)7ifAt?&bwcoz{sExZRvA(y#*~8Ohc2H=@$HCZ*JnPq-e(emxq0f4D z&vAW9lg5yT85-%tcsg=#OV1Bx?HhHLRo<%Qi=MeW{*ckhmqiz;Mf|+stMr-{xgDDV z^i_~Q)y5C$q$+Hd@I)(T|2rE0_7xoYNB@!lJRp6{3J=TySsd?O%*JOwY52l_6do(o z)Wa8^>io3z-50+2=dAR#OnmHy=@naVc)7JIz3PQSh&*e!v=;8m-d{_~`3^s_bT&~t zxaY{;k(F3HX4DgQ*}e?&2y>UeJGg&xv)3p@7~R(Cle_E>s@HpnT&(l?)&w zI?NkG(c$~x@_Xz1GcJ-NQl5t~j7Vdyu*FigJ7U!8o5iJ<+;F>&yg@NzZ=L!AdAed3 z^Z+DnoYeJlm!4muR>%UnR6nd2YCqSZ2}nvK7?%#;kI(ey1HIn$&^V zSg5p6lW?azGwIiEj{Ls%#j>)QHDovVuNOcd(K;ieXEk+=JIU;bhp(MU7%r28)?|M~5Cn4LHqJ0nG*LTdGYyS!StxS>4f`1(>xUBpjQLdGqZklk zTSz;XBSv#DGs5r1H{s|KVy@7bM+gY3O&RdIHV?-`$|DRQWvdbr3b@;n*7H zMv@_K0=S99p5{w^fOb8<9eqWLcN{2SoR$(%D{*60BRBvx_AWClZ~Q1)0tV^SAAQH0 zO~e&L*>R*Uc*Y*BaFCe}&C?ex=k8pT&@33*zpm>=EjrpWkAyXir!h*&FATKG@lRd7 zdR;TjlUzJpfJ`EpX0VG>*>0Xp2j%9Ox$Xxpw>k4>ru50e?uVOLzhhJ%GcRper2K}B z%MXqh;Gj<*`5*joV_Tv>>%};VK1e%)u(b<&Kq+QizMDt^N?PP0K+ndPLI zkID23y3i=OSQOI9OBvRpiZqK6J4;ZE^=Qdj8jO z)!Blv9enfOR--%&)!rd*bq8wfuiomv;gl8~FhWpf&V@l3~VD zB8tT_uWM8#=SF%0#z>%ApWu>m0bbt`tY3IczmZJXFQw^&Us7C8~7y^O88N z_NnzoA5eixRN!JWMp*An6U9Tyebd)$W8bu{TfC{mi=h}XuR#ojsMDKG8QA4dVeh@R z>;LD$?>L42rbPTNhyf3Df$eZr?%5~6p-T*ggVLUfXXZ%#S7x~e`11xDCCv$GoP#|p z8c!sZ;r;0r!Y}g^U`j=cU6_8u7#=i;BcHyC*r`8#jMkP>Cth$-(k0}8pmNh*swPs{ z9&7Pzyy@A=a~s$C(ZpI^1oAf2jA38-DwR~3GS9RlL4fiqduotg{k|%!?-gX-pezJz z!U@4{J~nq-X#4Z4f6iqVVnyEItwjG$-n~N5_&^YR+hKn{fPJ*w1K$-E|Bd>>V~O=V zkiZ@8s)%aIN{&{ymH8m0bg?7+q3+!~EsN{Xt|yDM6@^>)*l`6%aX1goGmPl}Ei}69 zOg?>JaQy`Rn7#1VE>@@MyrprX+Q{H+*f0m-)C_REH!=2X1s9)o(d^NLgW$WuF-{S% zw+|Vlx?`j1Kmp~V=6%aRhi**2{G)`ds$(Yy5}mOecG2q8Q#+S3p?PEDv*P0ai_K3~ zMBy!n`6+xp4NbD;>-a%GcH~v(>@VF3USa2#^c@KVOuffhibIE2k|8q#8q06t+JDx0 zlBz0DYhZ%BTRFA%Vky=vT+Hgeh=woHtSOOD-=M?0Eu-C*6LUK2{ejb}j5={KZar6!fm%=r$pqGGKZBu>6n`_J-VhF0;9!)A%Cl1KVy+wfBB$ zJBOy7CbiMy8TbD}!)|!k0A`S}@C{Ai37V4@JWS?Z?(V?B;X`k# zW<%zN5=y05ti#%vy&O~E$cDNiOQ5aVJ$r%0U^MjJ3F7UIROX;rFzcloJKSWwxvrt| zYNzIn9PCiTvPQ^nW%u>BW+|=))0?~Zi{pPXVa7tJVr-VFkf8eKoJ+Ru7CH%BLa!Y{wh!tok*HazWmr4&@(M7B9 zlE@A!iP7Ete1r+*&?>}fo`(kK!0|>zpY=y$?$Zium4oQFV0MZC z1i{p!uUp+qWWbO{Gk=y28EnXPM6h7h_~v1#7~{`_$+To}virUzE>`*A{a#1B?P3MC-1CYN=l)zZdj)$e+j( z`}5N$?Y1BJK^Rq&g(gXTPF-KNQ$RHlGh2xyH1hp>W{`~X=YbK$l_(@Bgv@?U$5Tl# z=Yv2uUgIeUWOrTCwmX-f{lF4@WkMJ}jMY}PcI33b`=M%qSuj1=c-|?1P`;g-*pcB^ zW>!!5^S&_0{atEw8#7tm^QY?GzQb7-{YEue0+9=cRm$3T9#J!A!d?mLV}Qe$QC^Hlr}2uF3E>K|`L0s1k_i*y=FwJx+fQ17R+-~vofQyZN<R#p@x;-f^C6W#gE!js>!WN6H;<}F=O5dL6rzFO*SyzC z+c{N>PueWtYP@Lcd3CfJ+7->w8u#DigX1X+>9iiO`eMBbzBRFMoDt()WJBqNKZGH@ z-aG#{0V@GK6n-dKyDog;OMq~K@LL?QSh7<-T)n5>S6gD-;WbP3lSTx!&AoL@Ik=_G z9va4IaiKq>IIbaZSzt#POtxDQiHXP04ES2k0tSjhFB^biKRf`55iO%N=R~2Z$x1E~ zO#IdSN}BA84%BwugLahWPM@!$%c0E>?}NqoQe;gA&Sn~>eDkeu;j3=G8MTQM?_&z> z2kWzp;V&VE`Mx6j(!C!oa5`R%q!|5t)VIptP4p#KByv~mW>Uq&f=*$@%SCVL+pA|N|m)7M2337$QbIOZ#ARr(x0p-5;Y1ud6s|aQg@zBjg zPEb7LxbFiLAPQJV`l8f*g7?OoKkx)R;5Vv3<3#kE-7%}Nyxa_U=Q95D+jX1uI1M@s zr;4X5EFc;nR~L#ND*2T)F>ls1Ga;;M$5o@3M5!gDkI3^A3DdWTIHt!E(99%e;Ba=a zm}q*~;gX85&2G!7SY{$IjL&_O-t2XdErmzGlee7+x!wp{Iv%r`j1p@~=yzR}rWJa0 zDa9lXoZK=bALnzQwNLx0D2JU$BD;cI+eUoQG*>-=V}p1TQ=dt<1PZs-DW^U-Ul_9w=2$*g08j1xmh z$U6Q~JsCNG|JBd^Yl?i3<4F1m!@57f==V|jmA&&|!t63qSsN3CP426Jq6T2>XNG4u zwbj9npJ`wuK0uxP(z_HRCL}4(t9Di8pkBA=V8Kx2x!0ZaB-P<;qcUj#!fcI2^Y#^@XZ*mk9xO6%rb5> z@g44#)?UEgz~AA>jfEeF+0LF~+M@Xr2d;aHun+Bk;1fMuC$k{zDNzZT!_5z?wv=8h zq@Fj0Lt0fPgn`lA;OtYtra?H$HxX87Ki;5jp(BPk3gaqhbO?b~k!dvQ#!X1M|g z0S2c~t5!uNyG^!A91SiLEe%}xjb52n^9^>*b=obR zg)}46kY_wg{RH7oJRe5`x$924wCuCYE)mx${6&_1t}C@3M6iO4wVW_}%#J4tFAsL% z$wvGKqC*?_<~2pt4^sMK_5@S}004g-7c6&ykJlN}!;Y{g3811WcpRO_J@uzq#5Jbc zXVN$bl^aehQj)5~OmsrDYLC*oty-P1`6gbF@Lld$z>S^pkK>t>$(sksxJLUe5vtao zn6;Jl)6%RrLx|v60hB=7r%H_ZgzhEulBWugOl5QiwZVWmF)^9BvRoeWjP>@sdzWDt zTXlMv0;~%=$k_z8y5#h5A`)fkf8|F4`h1vDck;$#W4(Pfs>~o|rTO{j+T^UMP~hIS zJ9gXBqk6$~XWrzHs#ikBdW{7qU_zMl9!9)5%KpGNo8s3y>GaFP{}->|CD_oP z|5Q(S&`acgtyEa4Va2|B*@pK2=!d+G=SYGKg__|9Q^7Et^NA6{VAu z!sol3P4%hYA*LpBW}O^ zhJQC=BaGV%*ujeE?2D!|i$Ed)3M*_y)-;PBKt8Gke$t-{kuo8!Pd3MUw9V$;;>7n^)4-wwM@gvVNN{@Kj`lnUY3X7v;y~;RK1H+ z$GZ2gi$e7L4^NEGVkZ4R2iFrjUl9kO!5dg1v`2%N9Gt?@9~|#(4%?rh@8{k+{85}G zQuT6opDyYBg#NC7CWN%y-mk6faH935^^V5o2t%$A3e>@_V-n;}D(?1OdX*XGb2JMlg8hEkYqYbiJJ7rU_}i>o=yD#U8N zukweD%JGXQzbD`bxx#s~qXToNeUhKAC%qa`LcRCwfi*z+UDQ(9`)(S}%tM6#IDHa;cpDit1su@ili7M?t zefcZOzKMYU&9-ZinB7@N z3Hk?p@%1(es}<*9frEF@YnO+qdt8F}s)D+4AQYkH%3qF=*VKx?SbP(Y3yHdOugd3c z5flD;n3GPgd!eWS&OY>zeSGN^%H(QZ%T*gc)syA!ss#;9QSoCpoywgzUT0z$A5|&Q zvL}bxkJT`GJ(_Rg>BLeX`M~bgeNs?wSD+{YW)GibQUI^vA)X zy61u4vl=aJhe*Vbi}Tfz3_eD zK=8MxZI42*rO3Wo1VWT5dc&FZJTy2c;hD4CjP|Abh&9b`lX<{rvg+UyDb&cjO&#QW z@k?7&WHsa4R+q^9b7S>D&YWL=Q$#G>amJqqzBnJpQZ6)^*`@rYe7~AkVnrN17qFk- zbIc2tk}RdS$Lj~qNgmr94>-rnANvlS?5a=Q zz_XGFx;v18&2Jq&7{gR)EL|n{^9bJxL-~8g3&%S9Pfb(Z=PzA@Bkeb(j#7H{tG*6A zE*nljeOm?&F9}~v6`;%>8OL*#7Cj8MD)?}8}aY<5a=(<##okdG)Ss{8! zuG#JR>T&R+$!#q|lZH%Y=Mf3m&=;+E*Wvrt3InI}dA_}HN*p_@$CVYfAoAWNXsQZDe;+=o_!+4BSz9`MN(MoAfzg<~{ zRreQ(%@p6Kmn%O!vUqx-*iIPrthb(%WC_Oh7WL;-_)s7#EV}|a3%_tUpTEAqIl=<+ z%{z0PTi*SUcifQ+rvUi!Wbqdaxr|U)Lb*p;ZndSquKZLF{-G}K-v2ws>>6|FMb7H= zRkjZPOZaWLe*jzt%wh>907XJCT{cS5Q!Vb>@U>S!IUx=Wo~efiuOQY(bcl{~@oiPp zMXjEWah6+#sqSAPEB@Lc;s^&BjNcLE%36o_z)T2Z*qC52cn zAgU$1=~3BkjW>+6!uOW6BF7&GzABP3pA+3QL2rU$2a$+y0%;Df2M&5i;m_fEv8x;# zKRA9TYgCB%z<)EVe{uisjVRKJEN|2w@cO@n!@=qnvbPVI!|gytVZ|9Sv6-@eYdDkB z`Qen8oxV|Rn3%Zstk1f_|B108TkuP7(VMN%H!s*&O`V*9(8wPLSAT2GXFn0(yZ7Ow z$ME9nMDnDE@~fXu+*N9IV)JTLgNHk^<;$p7hK9ZH%x)WDd4IR|ZmV8f@RB7ZSE$}% zp{uhDL*Z~m&EL{d%D6D?~~>bZa(zS@O~z^-^3VsKLcsx48(zZEs_wn z?OQAM3?h_3-GSW4{sx_QYT3`MSEQzTHw5oR45YQ9&7?S@^!IQI88LWwy+ zo9qvBkpn9v!O_dTsm$lHovWi;)6*XKlh*{3vlW3rWE{#DaqMibjr8Al)r9qi%9CWl zP3+;#i*bX#_1j48b|;LEw$B}P5xpZYHw;J;I)M*(a)~>*!4lPaf@kWGXG-B#j{BEP zy;|NrWQT>?YVy~ws_bK9f<%I%(-F~;E#ZR99 zGF-Nw?#NK^oE~M zoL!6_3Wx8(9k_^n%M3G!mG;d~bwtHbTXuNG5#CDPoFBxLDu@RPb312};J;2*>^Mr( zD38NU^^|D}jl3pRXsaG8f_)nlLQ^Y@%_X?&YH3}W-D*S@cTxngD&oBW2E0y6 zh2@^P)*Cjcq~2_J$6pE77G-=_BoRorGptBhInu8Ni!&0yAZmlf%b&A}=Hsg`d}d~bZS%e}|W-sx!V{AWyX z_nPax%=V%5??3;~S0!ibIfIcos_H6Ao9Ve0DPWpWE?x!su0KmCoAhe3(SIA;bfxX6 zew^JlH{&+_iVZ!;guoPj3_u1KRob`|d_tue3}#~Ey*JCOdHwoa!7zeReTupwNkYNM z8W=^z6`f`~?S}0_$Xg8tsK?KQ2Ic}z;4tTb+T7I*S&!0N`nvw1Ede){hObfv-B}tf zgsdqCm_?1O6k@Hv%P<>PJCe*GhK9Ni?9j(2ztIOrgbKqsG?Ks8^Y;T}a@(sPF%U*n zCEyC-HZ+Qi#*f&Y6VJb^N;8s+%z{AP1t=K7htbJw%(GTAWHZa<>RRx@R{;EH1%y=L z86|P5as^ywkDJI#s{Xicd3BH!z9Tgowz|7E@^bQOf;vp%(Df00*m&s%v`w4fO#&H; zx{AkRzJ8y$FzU9o{Tvi}tX)5tf}f!aQ*+dAXs0aT`mB5UUC~QvC3Y6o7VC$6eqbC}Z=4nkA9T-OT6l^0&bMY{SKO>M9u4jC*T zrA@OfHclpLi-7%Tpc!_~9p57J@b#$e^#||{%t#*+wdh+Xot9=Sy0%;o6frBNrE^c+ z2h<#bhF&Eye7{Rte1*ad>F$2moBCGdv7PlS$}LuJvI}oL{MTdxiDf=r789q-^2S#- zQADC2WS&-K{2H(mXxUExT}kmgM}j8J%beE#dI4hd5li0zkFMlH0@wtqEAG`xHJSumlIozcY0`j1#;WySK~ z=yQ=U<-g{FhnyN54Rhh_#^#2E6At+YnZ=}J@oVbXa<95YDt!f{kIJvc=wF3hT-UO=EmM|htZt)FDHg6O0Wdi`bocu8JI(P4tkNfaKb(ravFvxcQoyg5wbfC2 z!tj3mWO%92nY0JC2x~3s4?P(Zd`1sUb_*u_&(xhr^$GI@^p$5+$E=UWhv|@%-1m9* z%nby#lX#ev2-k7^{XW|tks$7SsvW^=ZQK?R>_{4zu|fnO+9Dcnr;lfVW=eIJ)uNH zYV>>5S){8Ik28B;_)@4yq;Vxnu|mo=zcM>nHM7sj@4cR=y2R<_pBe%G^Ruaq0FoE8 zl*T*kc0Az!-}<0f34(H%^`xs+=)BPN`#P5SV??sqE`pE!Gb3D|Oo)ONn-hLEYwd{a z1SO+nW!m$?;8>IYkEc?N3+@*4gt~E7)yaX!bS!rCSJ_rS)UPI+@Z$VY!RtFj%O$N3Kf1v;ZRNbn6m& z%lIGN)IA#q_4&wRvTeo%p9N;u{n*=Wd}eNXDbml?&!~DsN{PVtKrBZ z_t#TxbW4hfj^Xb<^y?B*MSAX?n?gOBfUo>o10aO}=Y_>8texP(Z`QItX-AW ziYTH2|G-V9dqVJ;0(@+Ai}bgh?eDk#d2mdFE=X~;>_o5iHSd94oK$;ju{qUsK}U&w z+sKD9J09Sy2B!OtLy=1yEi)gw6uhDhCmX&waULagLn)(zySm0x9hRJ>Q%Y_SK4LFt zf4NN>8CWa}F$|f&R`&Q6jBvpy>2gW4HDs@z_s5Kj)#W<_wu)FkLT%PW`)=e$LBifkJNza2K?DeS`IN6Eu-*=`iQgp-~jG&!p?R0Uoe6llr^`@A$S2w)m*3yqk>tVt0&u$1iwF0ITWFU*FiMZYu5b5mLXI}joFI-zsI z8E+WzbNRhS?&tFTmrq#l%Tg*TV!4cg#1=ko6Xlz4VdZ+zO4t9=$1-fZS%Re9nmdisdy^4Qr^Js)}g& zNtU)Dno=9Qk~U=7*wJxe>BZqG%q_M;QTQLUJ18u_s~W8ap%MO8>r>i$7j6E8OrWJP ztnrCZ=w#{zKTU#Uc+s~>u(g{Zt>2mb0jJHqjWN95{Plk*6Bz*5Vzf?(EVZsQH#OhI zU`W52-}~53E4V5b#tvEjLV1*cC4AR ztoD)R2_?2&4h<@JDSLNu#9fES`xjQoWlk<+q3y4YHDZO6`QxlYn6_YwANq3;4-m4K zQWM&HYeg5kU>R?A6Wm(suQVET^uAVvTPf?Yao;^|Gt6pgb%&;l`Poy!8+!f+IPJ+o zj?`4ysM`Go1Q^P@dVzY^-^b=$Dfd=3(G5;i_ zZ?_7s6Dj{=RZ$Q>U0IP?k$&Vn)2}3onc4`%DgbrhOn4d#@$Ml=1L!=KXcLb@1CB_; zq8Vw--3YsE-?zO)eZNYmLQ0>~H0Qq54E-sG93-shL9BW|Gn_l))-Pnr2{Dl9nD^s_aOk#@X0mTW&2#kSp!|oQ0A9?Cy zGOt@!GF#;;Kflxq=f8|2@U=(WClWlCq8@rzEj$OWGu&hRb&4org&9(&0=s+lshO(1 ziLJf~B|*`9Y~H-=Wt7$AGVQJRm(e4CE*Tkts>5$ocdhQ<&-R%Ks1UgyNz=B#8)%a7 zlS8|;iAb4)I2JRJ1)Cy9+$unRgh0*3D+j~dRv~{@ehgSda&9KWG?!*k4MR9e>etGr zv$OqP<5LH)|M4r)-Ea_^9MlQ(y= zQIGL;!_Oq_uaAERk(c!d5i`Qx2+Xm(7Wh+ZxGY(S61aoNwv?tmqEXG$J9%Be)00wS zlfB2*S%ziQiq!=ksuSteV5rIqf=aT)5$kN1Rc1x{sJ`$DTXx%%XiDUCYL$0k6H0T@ zXWWP{Y$vC8$qk>d3kvT`X*Bl(aGSxY9B}+r1fa=&?Tq$sEUpm-{`$;a;$-&OO~t0o zZ!imye{Ms_armrjsEtkH{qEaJ&eVt6>{@9eI)~=wTnmSnF7TWs{jbC`g!g^}lpKb5 zyV@#|xlGwDGJV0+u7PC3Di6%(PEY#*^R0~exDcNua7dZj6aq-_nV_0SNdJk9oDPKDf!UrICh6l3hYMK#@q8wb6?b>WKW+e(s1HW153A!a(cf!V^ z2UsU6)6-K^Q$@2NPiR_q9se=udABfto++A5Lq=D8y=2(}PSf7p_9AjzMfv1}xGNc< zLy-!!Ch0AIINi?^1m(K$R0X$rGNmAD63V~HyVL7o5x0?Y^E4PA2&6hdBSBlnNH}wB z^Q~0$4}5~8qGTmDVuBBoL|KcJtt|Fe1*twMqbXA$;)YX^w+TD{3tlxMrMyrA*4IWy z->MNI(bUS)HSaQK9_4nRLdMXcQG?fd15*K;26asHZ4A@HFCBF~! zT29GEAJpb5gt^Zo4wlN|`(0~Mjj0xjaLE=Esna@nO9~#T( z(j~_xHA?Jq(%hSV9)}UkNWV~@{)1Usqr<+kYd zD>6fh+U%{h`=+XD^qS?}j<9(rWQy|ntJ1_%8vS}Uw#~=gT6;p^cM6jKkwR~Nl!b-3 zIWrklKvTAVTxrHQj;ptyEh4Ex;;KAiBuoKWQZ~c~O#fHgmYyV^2NcmWf;bjB;!>yq_i*gdqBQSF11Qa{W1_#!7B_Cd^ zK&utxv5DG6o9_eYNSsUX?i|;D${HKhfGp6RiIQM0B#N0!R@4o3YzTEHkxrN31}vX6XF8?N+7>#H`kcu%?9K zcJU#14Kz8HAXjx4Q%U4ThNdcz)Cn2r@Z}#>yAmSSyuqVoz`UaDilS6;#F)i1jOc0- z8%7CkmMaTupYj*sZ=H#=|LXV@ydO43vjbC%X&Q{O`+iu6jSkX=%P=LQ54E-r48VVl ztXE0$1%)Y-GXw~fg(hH*3#Mj+*jUfQ4tHs~ba6Fb&;L2+8T<@-`M#LBe=EU!e3Rao zt6R?PcyAR~1s>pK{_=K^xloNL}AMHDR=2q<{hQ%l}Kefk*HAm)$ z8)y|$wWJ^n3-a*u8Me&&Cv_ka+NQU5H{87Cel{YDR{SsA3sdpNs1I5j0 zE$TxLJ}g3jE25Pbp)fDd~QDAnJm5a>s&(2G}wsb#oLzs}l8mlUpc9Gm6-s z%tT}?NDLIKJkcT4Ui)%fDehLyS7kuQ#(sBN_S{5%>DAVX(|G{=pdZHoB+tm z%J#s=9f0@$$0L-LI#5gk!UUV(EYHSrgHTf%Y?kazJKRWD48a*dqoa*^LN3P^IV+#UG^9QaH0e<+4AmAH|U z^6tD>qAQv$J{WH@KP)ivvhX1Vqxg9l|pl1-E&Mi0Y zP!{LlP@#twY|i#gvHh&x=%hfZ%07*MDNWJlJ`3{s08}s1qN(h@6Df}OBJ`hdseWzc zJlG}y*9S9xBmu^viZ)OcRdr87BwVlK&qy$&6o*3;oLffzAo!ihjZp+T9QekE`L%6DmD5Ia!Btcp}LTxY7B424EW}_-WLHZborOM(D)2?0rRY ze9|cBdj_23+*>84O{G6v1S8KGa|k`Tw!kNIa!dx+}eLW~)& zHGng%l9#4BY=>9cNwy3A(qc2CYMnBAmtrcrH7}kuTN#J!SC#)X2uYW}i*~zwIA*kQ z+Z!2^8Ln;oRS_^8EqAW21^VgTMJMET)I5MJLmHQ*$*o*t_caEc`I>%#ye_4B%fZlv zFw!6fUk}Zo{ft!eqCH&Bx?b%5uv(Gmx=#43pAgj(A)9%SHuf4x-T4;6yjpeC;7-z&gu$h&lvxd^Q`R(G}Hk`=dLIP|D~7sj{|JHK)(req3m+c2{})#^_l(PF z349MWzll)g66y%F)ev4Hdcn40IY#gEM^mSl5L1|p%)l73gFI#LLd7^2{m~^>6rx<< z#RG*u$vvI9AL=YaZ?;N&BEztSL~y+puY^7tedXJ<(;EB`Pnbz-7fP z^LTOjs-j5Cs3I!jOGTICh<8xciO%~MIvo}O_#?<94qAIynv($!KZWuoqdYB<&R2SQ zBJ$5X6J=!c&CaROA*tu)-|Pymu+nw$Q`}y>G;C!@quo=~4WS*>!jscy+C}xYtdS?3 zBf&uhJrYWH-gYJa%YO`z+75naOg%UK{KZD>RfWMrLW=_G6tMt-E8n4DTK%o@T9ITY z&h|$q;|%6zlllmlX#ZAkmJ|FfzV~l3o~IQyp(YVP@UVpPP3dTsgwy2po5+wbiI>|O ztd(Tx{e<2g?rW?+jn9fcbEed0JVc@+H-VW5q-z%-~92zcFEiAYOp zXli^<&iA;p{TTE=c+@r@oPvp2<&L}aUVm%ff-8QJgYU6E@K7JwZjW9O(fL} zRX~D-2m@`0>j+9J2T-@^91)GN&M+-np1CC5uqi3nFOs_ivZD|#*D>TOgbm9!GOl%f zpbZ$yW^RJ5oQRA_b9=NHoT*2dNR>5|M@J1Yo`)L#vRr9~DnceN<;e%!P3L#7Zi}Jk zB3t(!|FFZ{R$Em7?5cUbWNZQC8PiE|xG{h-RpMjpRPcbn5+b2#w!9--WsywG9)%9> zL)Mg=>>`$&_VP=jZ|nUgXK>Wv1+qWwb-Ww+PFQ7DE=qB%2!7w-ld-~y5H+zHzFTu> zskr1@kiDfQ1VrQ7FI#;`B`2T#I}|bnX6tsur*{{29Ck7d-d{an$J;<}dAv7H zHa5QIa9@;q0jd6JjktFP_pGqO19<=~tu4}c5Gf5HhSNISMr(TqB$@}5Cd95)QfTTh zBAFjM9^NVXo~}I8KaKK|oByu`R_B&1SmhtQ4@;~Qz6SYea?R*6OfePIoPSRIl$00T zf~UhUA>E+Sg1811C?|O0bL5YcM_Vl_g^2CzBSaQE!xHVLTbN8wmz>73UutBnBJqJd ze(<5<`bj!|Zh6w{M{6C`v*Uz@MFby$D2&ljonl${lHa$Y?3 z+AXPl`;tz5O@@hH#3z4`A6Nybyij&s)h0xsPXUj#S*Ffq) zr2|~S$Ha9UTOVXG90U7aN`zQlQhV2n%t~!GHpj>;1fEv${!4jVhVjxdp4*03$~YEh zcOB`34dy3*a)FpkymX>;*rZM(0z*wn0fjR$rB)?{f+ z8lQd&>QxL@so}zghMjw=9U{&;Qw>X*Ux+^6j7U|RiZo*4EHuR7{1lwtqWR(&Uf}v$ ziokA}=Gbnr_bUDLcC6>*YiU$Pnod8M^}U0e?E;(((;-=MRH7*lysJ_1w3-LP~Ljk2b~SaE5aFCyEG*QCfrZC#{L%L2#R?crw%A zg!5zqt7(R?k>yj*rAlnuQLjUnp+)J@8*AN!!&m})9i1x?JUMF=-MtrQ?tBXRMkWtl z2qD=2pX?tXClI0W;1#Sdhq)Mwe9;j>5|#R{8)Aw}P!Q9&$*6xscWCuGHnZNRdHB8> zpd+fME|G0$<5jtZ&Wiq?=8vs@c6f`Dn~Pb*}}ZBeFae%c=1=R$sb< zbvG-S<2I5DS-Bh}uuEUDvLOA+H-@(fO(o^(dDZ!+lm#>|>brpoJ^~{t^i_%+7t@a$ zoV87glR3;!HqI5@iHvWaEfFhmR)`}yw|$}bmXT1lfm-o^Lkb@h84iAryS=HpDi9}jVk z&>41B%Wv-}V8J%zF6s8&E&8)CMi!lvo%-?|%8LcwS3gT`HW_K6r_v&b&%=9eUF>{> z+`~W>5j_*Vt;O+0hW~r`KUXw|SVVIbys_3$Dpd>Ow}t6wc9&K=bH3!QbszC;V8n&@ zHj_9pPvV{W6&lLx$Iv)EtFY@c+_t^=df@Yv1D=z5{o5a(>*K%rEcwt6I1erJMSF`) z)RW{;Rn}OjFil%CL!nZ`!Ik`KerDic*mU7MZ6P#q`jz%hD7XX}?~O>t=O)eQL%J3J zke8iH3Z5&p-mN7_cxC+#BTg(DvCh&})*|`f-9gTiw>sd1 zZk@2zBE0DjPw8cKC#sdoaTW-1<+pe*^cbM+cmhrPAxQbzQGes^k=Bs ziR?b5D{HR|a9+B+*Ds5h%Lb+_Ybzywg7wVH=CN8~sv<+3vX3_OV*(lNiJAynm+#1Wy2kDi|4!i)}J^FmPp*q_` z0Q~_+OQ5kT7p^7|WAH+3oS*IG+_{QDc*#{&J5g z<0hgbDXgve=;5uZmCk22dTxa?(e@nWOn&EvnT-P6;1h6FjC^K^hUOGUBg!O!>i!g@ zwT|Lo(~!Wj2RARJ9AICy!m7XXJnr!8*7SV&HLWSPJjX+d+BT_HPNjt#_<5;7QswR! z%#V1sZV>o-%`Hwe#=ZlIgeI!bo)}+{s@`~SD-&LGmT&6aA{^_@i{!&6bp7#G^Kcr* zINI{Mi-qRW#2ao;A*rTMtg>a6r2q_vgfAF%#@G$8?}$ThlA0TN&)l>*-74+c>~4#b z!r=Fr^7}sL_=&_>+H7CkY5eFsSf6sgW?j4SL>dBd7}_ig=^a)!>qY-eUDC>ec`1F0 zH{@DSLm+%f?5$5APXhg-m|XINc3R-F6Is9zu?D4@JylZklYDhlTm=qj^pb6pp`#iz z)PBV=sOE6n5i^^C6*I^H{856Yk*U8h-ux#u<80AN$*XJmmA(khh^$7?Y^e2= zdYL3X6YVgxHbU>eB=(<^xfldi`m-JSYk=G!s6fl)6AS@@U8JTqZUe zv?D>`f?lp3-cPiVSqC%FUML~^$6YNpHc^N5N(*Q2DVvK^SA<8t6TRwqzlaIuXz7eb z#xFTBqm3{ubRXQxhjMh#wzQV}8mlLGL~5?F+SFy1 ztQl8=Spq_#j%hW?2pYF6O|+5^FP+U((?se^YEFEoEstDYb+dkHg)CImKF4LMlH;c? zl(U?g&LGwdWWf`os`tw?kn^^*IpN|6Lh4?_cy#!mlAqceppEDb!ZwZu(e5TAnjJ(*lcXl8Zg;!|dQ%m4f_SKdB zU9k4ZP7q48$G0fq5xeR#cFQVdyuI8iT~E%=UnJ#Q`Miz<8ahoCjD%aPS7m3PGk{76 z?KU`?0aXmjLmae>>Mru!PX1Uyl>>~_N$ia0yVUA_SsqFHeb%T<=e5{nTf=VYZO=rW zA$YAQ&Bx847k+t-4Swx&`UQhmXaW?OwnjU)P~a-EXI|6z6>2uOR*(75YE^0-6jH-K z%#6l+I_L7(d!asA)OZkb?xfX?ftFlkih|1%e6(Z-)0ClP(;}b!fnQ9_-q{ZjL>7Gx zqAQ2DSp6w_SWQXn$K)9zaXG7SG^H$QA=%mty=Cg+%SEzr8lh5NEGIf6eVNOH>MiuG zS;3_I3m)oaacfR0upFIr`?l5G&WYyI|8+-K%Mj4q$0*m^++&_FfYoR}Ze`DxAZcNX zK0Z6=h%KMLP-la9>I%b%AB(W6dcZ)6{Ruspn0E66HkOZb4T2Zy$Xyy=`6AIz@_*Mi z#}o0sEZRIF-SEq~n&1xw@`vn-+m8(xbpTdTs>q#|eSdPV8;tpvwh1){uYAbUTo$^YyEv z34(*%1oWo8rInheUv5L^hen|0u#lIG5xYqT+Iw{!7l$^HWZ%@L;<$+{jN|qQoSFl8 zho-Gvy{5}@%X8jHK;YK(ANHWV6v)I%Muv#`1b3Es2vYBk4Vf`$GjQ z+pzrVr2%TNZPtJX1wjf5n05WmOKau}_oUw^{arbi&;I z!yvma=h?i+Jl?U|U}3K}>}5Q-R$aAiSB+}V!yW;?Z1G8$F_%xO_=bb4H2uTMw~FiI zxv6|Bsz)P;O8CR$D05Xr`=>85X=emEuPlbPd9pB$al8C9)XTYvWCY~ep9m~pWOO^C zgtt9X;r@3p0bkwYTFa_vg7S!}rtNN=-k6Qa3rl=$#B{H+_b%zG3ZGrCvw(^FQGEI{fbmTNOkxS-ZVNK(EMHg{5yI;A76f!d( z?$WI7sI@6+44WvSF_&3M6tk;g6c6B?fZ1+>1#eQRFW) zkR`kit||uTS-$QlQNpa6mZCN(MSUs;*zE0CyaXWv1+4WmkG@m>Y@xnEuVM%`;(i=o zyOxl8sjh^yi5Jo$TlTOR4V1jUa5h*(#urr_QV}G$-pn$PD=~aia3RnK2@>_vK4?gq ztksnQavQarGZhZfiRB3x9kSDPW<6WSe*;184vb10V`F&O>5b4u)rN|uYcbgCBq`H)=0^`QTdJ^u{a-drqQobG~pOtf_ZNiA7l&nyx#|P zp|<~)i-(eBDoBWUMq02f3FOzH1qmAi18f;g1z)|sGMu&(*vVtDzRt&Q9JbQ7Uzw@0(dw}NLzRjX}8l~*ealij@lYAn9moY4+V$mC5^GztT!Ct}NW zFclh1J<#ZyT8iV$(9~BQQwEU|_e}TYqL1@MTFsS{JpT9Dm@fTp3IwW!1RD1O?1${{ zI*XFuv&R)D;(;~%s@x>ntah6zOK^&ph8dn;$GG*g%;mSGF}#8Z7M!j%!Z9#v>j<*@ zKj)LfH|qaZD1MlM=SW~N!)TZRM2&fgyoo;i`FVz$HSkA`Ro`UN>%Lv$@%@{%Q;)!> zxdkWR_1$uCH@q&kGERbVPoHBE3t-}TpN^7wx%9p*7V+x6t^4g=do z4N(9~WC}3rqHrV$&k(}tcos@}@=r$&`tNu5%=J#JQ;O^%bXC$06}Z=OFnyYn*JS}B zx@m%=tXB55?!tV^Kgnqf#Mhd2Wz6kjga zoLEibQ{g#J?Y1`i@J%J7!fVOlX_DJ7?&NXdO=8~LK})r{4tR^#?o}=*=^ZM}?n&aB zLy$NOKxawCO(||jrvO>gig4mszFr{<0tY!u6=eVus_SV>ugsrn_0uAliQi`7{RgUU z4PlJGz(Fq0I7ExsA$az`_INNH#J5i}OrLM5)e3V%_yyy&^Bo{%d2DEH{_)YgK0EIU z!iDKz9EvJUbgyapK(dw$CB59#Uf6+JpkiZ|#4UwKRF9K(>fn$&3$tET8k zgN4p{`x`luvERR_Yj>MOIjGgK69#d}4L?_(mut6WqZB-6G_!sbRH=o9ReacMSNIW3 zQYL4MI_EEH4s_#n0diL3DZf|hs*G@P7h#^pQY%=={k?5`|F^-1?FBRRT=NBN1n-s&*q!HVrbO;Hpl!+ zFOKZ+%z)HagZ9YyEij;vY>T@p3dJM-r)ICXcb)>{OmuMUdIau<=^qq=iW2HDyjIa% zz*kc|7NtnWGNrmceeSd$H%bH=NIG|L8a?+TH6K@G5t!D92I&%l_TalRlShIL2kVb9ag?lq1lWyQ1kGH2sYIgHpc>!Zi(&T5bpWWO7PNG_(s zpF}fPb`7HC)CT|=MMEt-R^dIgUZdU(5~Q4T{Lr1=XO*2AD)0V-AncPQg6NCdu2Eil zH5R<2&GHVR*-s_D@1pgMbp7^uEni<>MU7kLSoYrc)G4vxZdCm~ zA56zy6nUxqwzKSh@@C=FK2Hd#@UCD>r9tI}!85(+{Rz5UiGUt4fq_~h_M%&*KBREpg2oXX=s)B~4iHA%=Xj zUg(u{<=%m=7ygMLp{eui=Q*tYdXHFRXN6BnpuPVKk4E~Q193g1Z1>!;j4PYZ0bD!O z=;V)SB+WL8kRJKZ$Ju$cKw+)cDNezC)sJw|GrT7>kV^cFg2A5p|5ab&!AOa*<^I&C<|m`pAa9hbFcqF%o#<2Umg# zvANeHjtPbLqH9qVrPb;`*d|!m_HMrcS<}ByLfksi!v>1JhyyY?>uoBwScWx=!N1Q> z)ZCDUH)!S~sU5I%d<5ME)1+U5i`}l}Rg;|oenZJm)*drd3y@e+3V7c5{g%ig- z#}%1AkX9{CHeb5y3n<7*%0c)dJ(NisUO!j#9Gm;NJ;6vUw)W^-|G429N*3Z-#P_tc zO2F-&Nc7QQ_={CZ3dmCRL~3hU1o0SJD%vq|2+jAI7{50IV}DN->Z=^VGiE4Yx@Lzd zU8%etz^>t@vt^xR`V2P)8F}Hg=s~RaJh6uXv0c7<^%Gs^*;;o$$LgaN)jVN(_zE4E zs~}C^p&}enuIWQ(Qio!QWEw^?=v+2Di{d2W(UHsnRejLnQ^)9yeED8JBkB zFPsA$eG)k}0N-LZ?|kjPXKD(Nz6oc}jADNq`2w1Iw@|Hor>(M$C{{dUua%|Uw#F9& zW>m%#7Buh{H^&;{&$epE@b>j<<_cRVO|dN=c^d6`HW7Ff6ysMSZtThM#MChA(4!Fj z9`Rq0f4c23y8d)iPi$Zm3I*K9OFm0pJYz`6)k=OKq}YH_U>E)0LSKbWBl@GWSVX z4?;J99p34$BuT|7I)YHSM>)%|5~D|n7jno;)e#f4Fld;AaAAM5<>|q3D{}>6QJ$qW zhdC79R=i93$6hGD;V)`>uxDnBI|)dWa_WjH-Fe5W3#-)up-o)JZZ&!X2BcOMae#t^ zk}HpDub1wQ-VxRA{TObx^aB`fiuyEKJ%}SRR?vx$29%%VxpbXQJ=0p-3@TRaNthO` z+4wk0+@Ja$G$hg5zTdR43aBDI zI4W;zs|1VNB#zGTu2#2SQCNbK_7hnbO(bD+8kjCEr}#2LCY_$sb=Av^NgGf=nR_1Z zX>znM-`OJ4Qgq?@1~GQ)X3{S%d~NE#aAG89pKcLTx+OpiLE@j`mOSAGPJJ>gIKjoc zo1qhmah&HpN@TIsS@(MwYwNCC97NvQ>rHE9RII>VMgOfJ=!lr;xt){npJbJRNZU%VEiHKzSbc%sHrCyryL8pk6kwG)BfF^0k`B*1U}m2p3TUA!_8)xY7y=Zn%qn#BSh z62ez-%S^BPDjCPQ#n#VM-A>R_0oOEZaFTHP;_OJv;0)(3C?c}0vbHj0M>SKVfr5Ikuj52CHcKg`u%|DV7(Q)@62&=Z@W##=_obSq8Qp<|%;Jom*2ygW@wkKn z{9l8p!x`I#pwlevBKEADWDVQMuB4(i+VBQUohxQQ=^|)ppM?=-NNgnVF#OsC6&pM$ zxPgD(D7iss*ltZ7D5hK9Fi@KC)%?a-Yggk$Qy+X-7)tq~tug4-;6{p)z5T6s(%7C1 zYn=%KKkf5#o}us%U;dTORe#5IusWi*_*x&zYA2g({stpE3b0(Nt)rI6xZ zSULN!ZagOx%i5bOBQF4k(R_4=cGp4-ei9j7u0319#PB(KInuWNReu5Ztlk;)L28e<*6RztHq@onBT~+NtS_AKB<-U!XoI2Bm({@ zMaHxFz&Zchqj{gvqX4r9@IN~J+P5^-dYjv4*K#nM;0<_9F5bz~CHKoLIq&fsG=Wf- zYqotscQGB3?A1BB_A;zVd|rs*(L3CYmES~VMdM3b;)kuS>d(a?hH3SdsQ$BV%BM#4 z>g&lHjwsk?JI0SIFy0`tZH}AI8(d31Ry3EgNUq}IM+OTxt0yFrhKna1LT&hC*lh=o z;Tp!p<04f-{`k6Ldhg(S4IY0=Pwh_JG|u)h*s5_9A+#^YIc=o2h3dS?&cuNy!79rR z0z%T7Wz#S7D5d;PJGu_9qG|sIJm1gj->kY8$kGm5S&KLzBJeVu-s_p>FDm?|Zm9E| zqLj{Yisv1U5NRfMMX}vIc&$IdJc;7NxQz~pB<~fzOuO1|6xGYG=wQ>-u>O8eR416t zSFAuXsa!4Ir}o`!d+v$LtsuOm7*$gA&d-lJ6*eik;u;;7;nm{W^KeU3@I#^a&Bz1= zae=XiwdR~*`IuEUNGxp3L$V4)!H2RC^M0uFD`jo8m^c0z+&N_8DNmQ zu0IfC6xCfjeKlHK^ZfnnMp=oC&EYPk2+KbjHY`HVd-33qlMmm&fb~RLXAqIy#S;Or z`TVdJ_nsUlYlB@DqrKIQ)H=>o>nMxv+jDofnCnp7Ynk7$(pN1st@+IC@v8atF81?X z>@1|?VP4{$=HvlUm-{3SSM+#r5LKHco^(^?-AVxGD_v`0zJbQ9N*$#hA=Y0Jcf8{3 z{+%ER_5q^H_a+y4dGX86YxffOC0_JCHS8r$&6jH%(>OTAE^j&aLDm^*3a&RX!3ncE z*001bd`WqY8lfzmmKE7br%s}YKHDNK886{~>TeP*joVb%YMv}njmYE4+>1>Hefrl6 z@angHR{6plkZL@Ebw6_IGf1Awanw4;?58dV@pb&vHF6w%9*|loe{COGbj;21GNl7} zgGEJOw3!Hg^lHb)XTjb5#UPsB(b?>mx_4uAVFD4d**Pay)IqA2|7EOzCvs;kUJGW{ zsaG5@UOK=sD?sQFCK%PY&!j5~6vy!0x$zy-?&YurZ+@+k&r4stco`0ZH#S{lzPT#z zu}H~pVTPJnvvmhIvL-rzNW*tghiZl z#jk+6GqgXbQ8rI79+47+o_wK+Ag(leAR50AB)(u^qa9sAGIu0EG<=@kVr`TGe~m5{ z1}KlXP5%aN`AP7>sabCSO^rxqr?741A?XJ;Au78K{~yz%PY(#KMhF&@IL6 zqikA;TFG6kM(X!1#9s&;YiV?CHL!{z*f{y4TcIr~gk3JH&&XIR3%1@Sk0Be=v#v-? z4bZ7FFBK2$Pc+2L1o<^9-o%4v(lPzP-}f)Sblb*Cl6A3vCqM#5bafc;Yn(k@8_qk4 zm^VjYSu^BPnb{pEwIn?F{_yE@Q2mJw<5AI_r)0CaWYSuu?g?~G1ZzOkb*d-SyT@P{jQAg0J9_%G?aFk;P#c8ebHh%lnAw#HLcHkrh?uN;G z$%*vKnDftA)FysHnO=;UuVT>S~j@_|4hh5GYDFt6$J`FV+sBy^G>vR%Ej5ANxp9 zuFe69BQgHLc2P7+Cc!X0*pOAVLgMvN)bnAG^lh}{q7nhgWdEYf;SDoSs7*8)HcY9_ z<(rsMorC0HUn2rk0{p%H?RT09E$V9Opv_-?U!DQrq{;Z%KyVt z3K8dA{eu(kYp`Wj6!{eSp|)$qz?pn}@dERwu8_@mN(paA!^(hn#G5e>Btruj3ORIH z#EGtMJk`g)fyHbK4xn*zVUnNC#;woH)7~scbdV={w-fpN=qKZ`{`l@ZiLh8R- zBb!W~fNWk)k)!cz=}fxjn(Y(~MFG=lwsPdhzMZuQcD&eEWQWD7{V@ZBC}ns-T|Vq@`o?_`>g zJ7@fn)~IgMt7HDNSnSZ=7sJIVJ|e?N8(rk#)3io|J{72pHKq=1zdR@m%zr7+L02R% zCI(6(H%H@Y%9SAX>6++nW`A(g60zDlhqs)+=DCuH^8QH@2SyATNK{F0^nHsScyylQ}`+mJfPLn64Wkk7wI~A){MDF0Pm^vcNTHe)`%p1=Im~iOFFF?)eVeWH$ z%bvO%yF8>9=KHvf!zHH%8-vnyn-*WTU2H#`94!t;I0cI5e2=s%7F>)}_4{Q*Gd1IQ zx!zFtqD7MH4gHu|;CD=$tMi2FsDJ1C0L(GYZAKO6d2>)PyAFu8YvK(F9tVk>yo}d2 zggA{)Kj50|4}ih!_f`BG8ll!1uIcV`Xj8=XP`2s^|EDyh{rKo^wmXjWC`uvfG&2`A z#;%eLVbiT(y$qWgi48>26>#y(3*UjL6uXRsbMIywt_PBh9ZtOi!;vK)dE&E1(;GSK zF!`q$97En>HYO8hJNgB$7Q^^@!6R(Q)KtNS2bU_E7>Bj}cV5TC(V0D1&upz^Oa*ct zGU}JwDa8}`+4X2}#ax@MAs(ZgicX1qm0*0$fAa5DtZp)oPj@S>ix@=UUMN)p4Z&5t z0M#x8#lO845EnMwISHGYvniH91E7+l&B(;z*^k8b#KkHpQFcLI$wUOe=L_Qcgt0lD z4;V49!i3+mTa1x>OQu{tTrK6R8mXLQBY$%%#Fj#E{Qb*#(!6X_-Z_J6qp;CeW}<@k zqZ4HM%0=P~-+sgJ9epY=)##f|?{Q~6|l&0oyTX z`khBi+@vPE)657YnyNi?3|dP}7)cuGZxg2)z7=12dwb6iEQRqO{WL<`+{{Eqrb15R z5wx5kS*~@0MRF|Af8I=8CV)@ds3m+A>vJxgCbYPj!~0QRSMl7}_*1jx?0~Q;x|`G= z&+~m@)3~Rj6(CXJs_xwq80Gs+PR-$zd#SF$=t?ymq)yV27Q@oKg_4_(|z-qDZA_0*>!u> zuB~id6J=KZwDmm+jzVE$kzb3a#}6j^WjZ4omDw0i$HyP@^-|V0>TpE)FO{_7>I|V9 zOpw++n)f2B3#Gw+Y`SY}il+qVe5OGaLMM;4w1 z^SD4wt?!aT5?@~MVK(v-!ak!>Au&IvQflz9sQPFM5}XTYi{fFfy(p(7S76Yf*j=iZ zH|nHxI@5;+N1bPP&InM9t}Q>$>U}n1TY4WDblP!vTW8FC`^%Pczxh85;pp}_j%>(9 z$|bVeNs^cULgHwhM3EUcRnsuhJPxD-a2t{VrFTJb;Bz|;bgIS|-^%y~+`XNH1SVd^ z5^QAuK3GO>K88CFQ^9E6$ob;zf+(Y*cHgD92#Rh^0uP@dFJstfy9giWdM5bN;l=Wk zi`YPyRl2m``NooP+}^!4d~1lBiPh&j2#c$(78%={D-zv~QQ=kbE}nqEsOny8OvuW~ znOL>5u-A*+md4(cs{yldk!7+v==*u^D$wSU`CmShg`AIu&vrFp$n!b*Y z#B6;OXN2dD5&oL3IOeB%0V|FHl=y3*pnjB8gBwjqY$x;jMDsmZLC6t zO@QBL!K#J%hw8?iQ~We8Jw%S8{2%ji1unDpuTr8(6no7aY|ZNC-+Y^c`Mx7m0(OCC z4lXLfQ#BR($jvs9wMzS~EsAq+Tv3WAvTQXqMxUrt-3PvfpV4ZvI0Ki~qHH#MyyinuPCiiYJ@nU)uF_o5pKr9jy_K<+O80)cP6+&pUAVs^>ZL*qyJpOqXI&&0l`IwpCu zqkN=+BAerz+In4oUpczJ94h&SHN`P)pVkpH=tJruaJ{0v@-F+CkrYLHJvkG3(K_z& zbsRCGBwpyZ1%t|@`2}^#7TnS%(3R&T;pW$D*c_mw4M!rw#0~Ru{-<3*y)Re1F}LJ) zu*{u`l@f{w${LR3{T>nY=vwx_LjX48+*`E>QMj?{B%WAIua+3LI~6N}QcrZ#EhhG! z-$Al<8TB#Ikd2`?Mdvgvx#lkoa z-o5bf2hu7C%5~3e^b1)LU=`VXFYQFl#Dw-d-|{}sy*}f&&K9_CCmE}ISa=j}h(!xa zwa-F25wB(e0Mg#foKih^aWZR>pI$z^@))nQ6VjuSzaDBy)xQRcC+et3i-4-%H;|me z2O{LKtiar}S&~n)C`}qtRTHwJ{j+k+zHfx2z|r|}_CSR=E2`$z z`@5l6HSMERJn>w0E_XocaZ_ptk5a(2J*pr-^4^&%gg8^AF@-jB{mB)#Gp%665@>4F zCz=erUn&}2Yl%ZXV#q(jfiXJ}QIvMORmeog_&8M78< zRp2P`ybXdS% zRGV2xzvMi_37d3(S53&y^JI8Fhcmv#W*EkyoLcc~j_%kia&)`mjy}^*@ys7HmBSrL zyQ1+x53@;PWQkK}EIf*CcA7GvWDhNogdv#62up#P*duuW>%tXh@sj*QbF8T18#OLT z-=#D(h-h_x^p6Ml3yHx+`6v=K4fNPyUEWId~YRA`XCMz zpLU*KfJn@4t@%?fHwJJKbNIk3X7azq@Rs39PIcV1k@OEFO8K)3)RmKQKaco_HA+nP zCr(k)u8sE8t*?zyg9-Zf;^Z9^~pDsba> z{h&Zkqsf;en@w|>uz5GhH~VN`E5-TkT0hdYP{*nBh%EB?Twmu%-pxXf`hlyM|5!~} zeUz&X_bqvjvDs!be9y^+Pn_&hH4wgs`bFkWQic)PC9wpXhHmsqh}k+A z>3|jG40V>?`2=Ab>YL7-q14uT?L!NL5~-ISi@wFs5C&u|8k~PFd^xZQbR-LkIfRo3 z{OGYmQ|njr1EP{4H_|_jZZ2>T@5|!@YyMeOJief9;DQK1B&(9xpwj8<{$NAJF!I1p zq!hPUY>O*$G*d{3Hoi@OUj4AaJhKEKBH;XQmkXtY$NWtx*)fJH&v{AU>2;BjNAf*n zQFEp4dL{Gbi}?`Qb$g3X#?dT(#2upLQY()KZ@@VlbQw9z^~5Tw=#3R;R+Zt&Qkr_&snr8FACC)$z zA@4U-MQ$%p6o8TKcqg~EFS;ui^FwclMqDSA+`rB>oQQco`2&j z%3aI@f(Z#E2VU8COANRc(|nLjIGkgqowK=ITPiNVnX!g4g!(T3##*xOYstR$DAqZS z``AiFbg`otk=z$xlg#37CAUOcOWOjNq{?`$vVMi!aGdCzr2Hr>`4}Bpf%Zqpt7fx~ zzWFz<`|jjznRMbx-dCxwPv$MM!`;TKqOA5JLWiA}#S8p8?_AN%D0(jV?0H&8f^OIC zM1#i0qGq=riq#+K`0h^P&pZBdMwxbkIdZWd!gd37H^jDSqrQk3O&*RuaV)KZwM4-- zx|Z>p3O-fKBi@$cebYUyqbye^<6Ja-62BWde2Q!tsu>=EmI5Ye@Qt~v<;S&kPX=5Y z=kX980x+{|Y@S6G%^K5*I$zUhG*XLQL;_aYozP3i6{I4pRJuj8>a&20`DdP$ClWvm z^Ufxtrww=p8bLLN1rje#=Y)qdsn7KGzWrtNmgyhVk^t8^ zqy}V`*2vpN_XKkxVf<+^?E274d555wg(4_t%Gs>QP8upD7LPEwh)sz%4F#MQ(*5R! zz-{PJM)3_pPDkk1=Cj+;BNkU98(!soKlVn=uJErSS=HuGG5NyGRk-Jub>x>|WOw+& z1rkwh63XJC6M>I_KK`5ydnsxtbI5p?-*MehQRvk3hB35{ejT?mKLo_&cjMmbgE-f$ z3!ve&C-^xTa1sTpPMfC++`{}T^+SIWy7txZm{;2IDU;dX+G26JlYa(cMV0a8o5!gd ze!EUp%RndVB#%y)(MX>p%8e>Ij7y1M7<(sGzHe=M3y?8Z(?9YKv9z9YFOl3Md6E^o2^&r zG8~${5+OOl_bCp!K6|Yf=1EOk z4?mbcrzx_me}}3T)+`EH$wqg^-Q>C^Ldf5Px|(Kskx;f{WcTLRC4WLqx4nk+k;LTH zBy)dUrsGf^lfpnebR-|L1Fh&0DK($oix2cF2fRZhp5e`yO*+l86sT4f=MLI!qk=~T z_+p^Hu`Li(TB}SVoGfwmrm7z?SCy*ZJ?@@R?e$9WYcBv+T#v;O!f>a+%sFMo4`By@ zKFn=QPo4yw##HEcbY|O?fJJM2h>xtc z>;_Ooniq^MztyoHk9q0306J_vYtCFhDG2&G4(Y0yxmEvX|A0wG+_+Wm{@%j3{lNRi zCW_6NavH{!dN6w#-tGdChp`^PI}hAfE-(wqp|XJt{kA!(!9H-5<00!SIIezs?0M>@ z&g`bvGrmZYo>rQ2G|TBXzu1(t$ZxuNx(nS!k6Qgdrmiw9%4qA7g0xDfh)TC~w~BOk z4>5FiNlBy9Ez;dXH>1P=f(%_l*U&Y@H{PrF`F_p6d7k&2v)0*r?X~wwlCrcO83%=U zwLB1s%mPH-H`7U%R5A?*RfH9pFjY3i_hGirVYbl_RCqvMYJkFD&%NcXjvFh!nLSY2aus;kzm7>IBqV%z6?|C@{g)Owz|=jq$$M>a ztK39&{8HFcd`oo1*$Qx!)ly*GbTHw;mwDO3qMw)h=SD4-WqA}O--PIG@=o`#(&dLfvP)?-DLDOon!n8^ zlyNu%vGu*U9SAZ5NZ|jC^F+D_@?1bB>13J8n(>SgI+mKE!T|jq-R~f<+8u1dTc^M* z+#=tWrIshBe`eF(8Qu|uM<#=PJTHliRhLn+t}5`JdtH4M=#ljLiUCw>>E%HT}~i$g>oDqxf8`59klY>36(XWt>Vx66zGB;#?oi24HN!bPYb*9 zR4*uwDL*4mSZAsLODo9H`QG8{8!|{g|21XfA_PV<(l2Sd)XNRs-Cty2eSljnOpV?q zkY)`Di2sDEtlCvG5Y0uG$VL{Oou4XwJ9{5Wo6sV*70+Abrr{d(?w82R@pp_xvbQim ze&@(iV$7lre*NqSbPVmO^eop%7qdQUhYHDl?fzXWg1PQO&o!VUF5W)@iPe*^P6N;O zdzfg2YUs7YRtKfLj*j1~U2D31N{)gBZnZ7n4Kz-h+(Z)^{>`u1zxOWMg;bJ%JD?#Y ziO!;yIcuemq;MjjdTcRee#;GxbKuyy0MG$GNFh{wM`MKu);&e#wcp|(t!RH77N6WU zU7&GX&=HU2bN41|BNK_WoCvr3cFU`_j8IiZN&9R!m6yQMh^265K~%hAUxz_f=V+6tb- z8|Lp({~Ecb7RB3f_RZ7(|aSUAz$o1vX~*4tP(cEA!PUm`4a=?kXsAO5II~o zeq4IOIrXqMJ*@XD=b6%K;*0Xa;wdmciB6)!ynfS)+6_;i0kn>Ux1L@S>7aO6oSu*8 zeTym(1h0TbYcZwnRdIOGvKA1h{oL(aY>kNWf5iGV!jO=H*rnX;Vl9mx(zKh=pqnjy zKxBw?TrY*X$iA&%1h~(jMG$tKE-oXEj@G+)>k|U|RZRZvlv%8ve7}CWHY@7|b&x4` zzM*6~Oe*88-4S;jWAVF40=+}qj=Q(zF$A@})fJ+m5T5w?qMvfu$2Wg~Z}dszjnlN} zf_c*6Bxx$+0NHK5_UeUcU<0M@gmlN5|0105mLHdyW370hWC|OFE!s9h*#>O z&$$N2>l9>Ldb=!eQ8!qOmZd4Tj`8+5lQ>Ex~pFjJi`{w!)%*b8qCdG=*>p zD1Nza);UgSaIK4_lj?q*(=$U^npZ-d85!{!By@j=*Gjm*8M9+jfA>e3hn?-cJNfYlgu*z;8ecdkuRV3+E}ZBlf5F#kj^mV$Li`aBMa%&+E*7zAXbpKksW#c9O6RR1(M?Q31`fwh zN|L$m07a*1rZlsqJ6Yir+7UhRMiCm*;8E(dS-I@CA%$2mI{BG9G~W)?e0HdZt@^1p z$%|pn%ATrnWB#+3ahK{9o)u^=7lFTEo=T26eY@C8A0}ok#%eOGq&L5?XMxWI)bq*u zqApxkA>0re*3-Ld=)uQk1#}!~$(nGOdo6*EV-pxmEF9{i^`5fIzL47q2xId{@Ky86 zt*qwZOL@bM%F`jcIR|Xa-}2fVNw3$=1CRxEx=!!wRTJ)dlY57N?Z1h+6Ad-1pb@X0 z_SRvic7oNoMFz){EC3a6eWNs;T&$7nei$WU-*bvq$RT10Fnv4gjlS?kUr-Sp2!*=; zD+oDZZ`SFo3oE`GRQlZ20xv%$>0VvgmxS6|EJd=CdE5#-4E)sCdpAw$rf_!6(iQQHER|xqn5V9ZN_;9!xh<{i85OBWxyJ~WeDQu3X znl~XTK9=wxI0{%rQN%MQ?WcAi`IH;7#9Rg>3f)n)A?$wMt1)KE*`*0vD4>_{k+ z9DJ6?yV@K3RAH}Hk*z!nMjD?r^h5eMrHD8fobQ+FNq3F3e{-sI?hs%fS3Sw!u_!Df ze$DX3UF1gG$mwKhaZue_WW=ijgG^UQZ!~eX+{5CcLtt8e=f-eTT+u{y8RoKBD=eJ9 z{);%OW1)kDMl~izt9p0hg-SGQyyv}xqt;|sW+rUuK1>-~E{tCuVhKK$V`KZwgR@7_9Fy&Kjg8RmWfj_99fn4L2P zge2#s54@QSz{#U-W&oF*ep<0;YE)hURt;9MD+uq!y2yzDVU@pC2w`TuiWu=?>UbPM z?76|_MHENg-S4p2cF)bq`Bp@h@0RF%kzdutLI2-|AZ(Y|Og}3fCUY4tnI`}(Bc7~Q`sZB#R9Np;VIha=>2#T_hIa7bE?WMC zu>g|?iwX0+V`}4tIEF&^3iG|b>}%Q1iJ=Q^2O(<*1fa7Vuh>czr`EP5?(P7Tuakww zfV1LWJx46Fcl=FuPFS^g4J?CiLdVIXHVM6oc1(xqipEjQG@b zz$q#!dP~BKSW&pO{Hqkfi4HUh(fN$3#7UWpR>NE{R%w3@bw(@o={kc3O>cer!TEDo zk}}G1Ll9HYzNN2nji04fJY9y7|7GtF=_qId&mRMHvZDR~3wvu-&OpCD@I3A-m&os) z%!am}fWGNap?WhF)a2fR+2~6hT`iIMl4LXSw_MaY2eG-PbgW^|i@jKH4i@cZi7NMUCp!lhnch3AkzEx z+oJ-NCBKKeE_?kF#lM#j-@XFg8|s+2_gxKrf<^RU+zx#5z3FgasKn+KQ!Fpv3k=sR zw;icFEOsKl_~~!zyyc{qOKnPme{iGnAG=9fCBwW&o!1AA42p|GpW%gP>B3&*kCl9oE|Y>kDkt$pEpi5Rl!Jjb+KdySSZ}AUTfnP07ONGJ`^mfW;OmlxP*;G zCTv;(8gKF2I2JDT^fj(q88W)3hfXVIO^^?F=$j;MH3*M+#xdsD>=h(*Jq*J;9_}C5 z{=w(ifIF*ZW@&A&Vsn_=@b|4tR^P!i4%R__-^D$NkZHl9?iNt*(xP%n;ytN?2H)3$ zp4VWP)Z<0uqmbD2ouq#h`lR&tbM@K9Aj)dCp(x|@s_Pr~ddm70?l1$mYs!$E-0~E3 z4IPE$mhbRqTUIeKcY6I06+fo#cV7Ov-Ba?*vv{Q+yqh0;Mg;1Fm4`tzWXs{;An_6VN8N>0}N6@d7i(tqDf-LqV{ls|tw z)6VaL%G85a6R&|Hb5PJmmaBL;go1kwR_9+c|R+~WBI`OOK zAL>mH=Y=4<4=F^$wPx{E!b{IPSh%(I-<0bTR)juTj4(R?T;mQsnc42iCR$TwDw2#6 zkw*1^*W+1o%p@ObRAYp;7u4N$dW;)Zus)d3y-ZLe_~jPD5uHu^QS4L`HY0?zcdq3( zPE$J#knU$VjG~}zlD~X(I{NmJJo?e{apJ0nDD8k;54hM5;;j#&cxwKa+q%#NrBAZyf!ZYTT8ki3Xmivtw!`Zr zhT(HA!NDC$Fu|LWCra@>5k$k>W3#0*%wQc>uupn08BB)P9xj(S#$7F`BVw6LFwoDgiXUk{+P|~gYGpvqgqRs?$MXA(jDL9lQ-<8auO8NW zzq^lk-JR($Cs*tVG_=8eb?_og_d`hIkg|70$0g**%Z)ANm=~DrYEyZucUlLX)B$fW6<^8BN6EOM^!8Ph*a`TCSFoo=3{dy~(RzdY$%AwPO=BwkdB3%m$1ODJukDmv=g$ecr z(?dV{(Rq32=iMA&R>obbQH|pFv2Mfn(*KLFQ#0J!E%DM5L{3LUH=17k*u=9387}S+ z$z^Dvjv0RA{fy#+m6MNxM=u>+)@jmGX+`o;^>AJ}0IvFdn}Ry^B+c_X8artwg+E-| zmsNu~$e;uZ_al9dnSF+l^|-$r?a|XT_VQ)3i$!<~=n~YIyKPl=Qk#-Is|I{o)1W9|OnG{c$FGS0} z>%Xd-Z8nefaW<_d&aGbXINXXZ0FDUquRKS7iemK!I`Q8PX;{Z`C;1Lt2`{$-Rcpb> zsFK{>R;%jgoO#zPwPZ2f# z@kwp43%ZF=%F zUr?(Lv|$%3%TZ~{qLS&whqt>fyteqKl)ofh(;q~bx2Ncddwc|#DJrXHG&A8QWLAKc zD4EPoTN6p`TpQdXO`GiDI-M^>q6naZD^)MGWjM2}h(&#H7$TlK9zks8{6)~80Q@D( zMre#x;)xJ8rs5UrGV*W7=4(%~%)0BX$4o?nj!$xt$>!3?{bQ8W!oI(%&D#0+gmZ~y zqu8J%1&s&>lxN*ri^cU>3QCoSpcyKPo~Tf-E$dD2yq2#~LYus3Z`6N9zkvR>>VsT;NYdI*(U;~Btl?0UI4<@?cHgt z(-dw^+1C*!Az9*Ha@L{`qJ#R8E0pu6=Y3`jVcw&EM5oS%BRditV#t^aFP(snJXt@a zB~Lphzn0-Nw5(yd;(>%4iva#pcd10m!r>9lSFZOHU)8W@<%R6ZKPKx9r~kHb8|hUK z8!a`S_j8JQC3EdOj%;>#T|G3p#hD`(blfA+kaEY}eb3E{=o?>V|I4TXBO^{5HFn7- z!VJsg0$!V4t!@+?GfO+_N&?D_dkrnVZ|khaK1EzEDXV$NlgaW~u=_7qbh1s4xG;c3 z)BbQN=Tp8g5F>$C%xx~c2$};oO>K#glyDJG$5Nc%o1p;V!{4In2VauVcet!}J~&wL zl_Nb@^E)%4#!MBoPd!I3dDc?&PyI`n+<>>ki(WXRh9F#|sB(iWtdmJ}&`ytK%+jIk zr;hBCp^751O`QLp_^V?#5>;N~17cG>z)X%N)ga|&r%&Wh<;vvFRBt$Sy_W3an`TpT z^F8nS#aIO!3*{<&9*rkqMAdZv8B+t1k0;K}pcqvWUOxAxkleiK&+f#S8globMsqqC zlWPM(NSzvtyRO`qHHD5h}`fIT7{BhZhl`dRYE9X+Ov_s*QIqQ4dx^Ff%+d=UcC>s?)k>WyMBa zXR2*42G>pFUoa3gdsbn%@L;&xkR0RehheaG|H zdPsn4i(+WzZpQA6;-}?~wMRht7mx2xFOfwlU!Ec3)@R3vUu^$YW%mrff2TH=32X0))CCzMTBvPF<%y8_e_ zs&5H<{1RKo9Y+Vcgt*3Q9-iLp)OQNat-#(uBej6)qZPLDE1Q_nM zat2%;j<8N-Cf{I3 zjq6lX3p2|L1IYt!^MSsNOn)(taKluKs;$)&i?_`jqh~E&9=S*_ARS9&;&&%lxvdBZ zf|Ue@!2A8UACL0BYD8z4xriEm1TU!1b8Tf2z@9jWuxf)r zxWg@Sln=6U@eu;z1g+9CmK*$@{un50x6@^wGvIra%H}RzT?3*HU4v?9sc-b4VwN!%P8zZW3Vy&D`l4fo@P%X z>fo~vwB^Pf+9Z^V^3?DxZWNBK1>w+HmM5m+6Gah?Rw%*<@wFYxKPrFwsrf#miT{NL z)9UYgP}_qcuIUz?bS{#hp9X83eHRpXh@yRFesGiZ>N?W<6Dg;n^MXaD|Mg~?PUPN< z<3+YKFs9x*{nozi8^-(Y^Mbp+PeN3yN@m!;_1B(9XdZMF&|rt@3(2VQysOyV%O@%* zt?wj zE)`lFC}u%Cgr68_lZ zmto#tz0_mx)=$R*dr9x{sJn1h62{qWSQmp{xvG~_@@rz*pMOvndJ#euY1{sF4cMtY zo5Qckg{(42H~|J7<+#dv_lertw6_xGh_Jx5yF`8T!t>Q7m?N{iv~DTdSua>I*OWq% z3eRDNwpKb*)JNjlkH^2jxc88b$?vPQXO2@d+zEFq*g zFY|+?hlA$6GB?~boPI`KrE=h#x}Zq^$gNuotu$MKGr*SJU-q+D|M0Q-+3AZP=gX$R z#W)8ZEO(KSTcQulEGg(-hoWJNq~iFcutwmowbrYpBtdamh_E9|3GuBrOCiZgmh+Q9 zMdD_+Ob}M%p%UYEv_rAR*C!YY%Zdvld)y1aFJOgSb_iBqI4P3#wvcjU#CsYA1oS1%}bxwnuDuQN!N=zR6f`(ZAG7VmAeh_Uiz<1R)lXJ9p9!IAMHn`nvZe8oO$krZL3-wC31c^~{Tr;hCA`-8FY01fj(7d4MUTGwICQJqs(d94Z#RS+}r+ zow6;n6&cH`9%_;h)0PZnID_AJQqz2^5+fPatf}7W-+Q*TPvey|v`4?awbihDdQzYi z7}(xiW!2a{LyUkDRqXM$pWU%M0)I1Fe6OVHjP^H!pkERbAIoi|)@BDa0*|ZMqK$xX zoiHtg|;-9{5`dfDSj z;y;UprGk2^2YP5_M^H$VPs|&&s7$!kHw1qxs;oMTm+&|srhyFVbxJT0w#VQ-rJF~| zW8fB%n@Dn~+8Lx?bLeyjz3%9Lzb9AR?enJG;?(Jcn>$6?K1%{~fg_#s@<25|hXV4@-NC7c3sh1f}-ghlh#oa7-*}_p4cd>Y?e?ocW z>>^g3TaB*kKEHWcepq4QQukE#a{F|^mS)Qomd4&R?T4KIC;xh+B+k_V>IF?Wt!Uad zr(J#$-FIkxCLN?OHuf)MUV0MfO>Xh_>jS5CU^aUEs9dM$8tRC@7a&J3x`x_~zTk22 zkL=N;W&?_{{aP3r`2@D(E1ZuqqB4Y6<;=q_g<1SaVb3X<9PyJZHvs!Gh~_8=D?azV z-dE4*D@A||ifoLfEw6mK2IWJ3Ns2JwQ;hh%=V6Bio&E9I37B}J zmO3a+aa>VhoVG4d_o-E_S_D2vGzlAr4)N9p6Q(*}a7*^*!@U-f?3L|i<6&Z#-${Z?v>al0F-LX;JGv;x5qB0&{Jg) zAM2@|sH6JkM9X3RRCEB{>Q5(OCyDufG4j6qa(KUmdYj3G;5hj9D!Oq<>zS0M;?5l> zN8$FQtYA1Z3bKPc3AknQ@?d}E~fc|DS416?`=#-Lk%`|q;R1^f(~D#UiZZBV@oyTs|D*MAqr$oua#h$-LQ z1aPjBu7qK#I3OLZcP~_dhnj!I?)Vd*l$$;QGS;8m_Z}`8+|-sMW|SRSkSRzgZ~cJi zERTr;!7oAi?-Qhtt~{HWO`JvNIDNER9eH^p=a=T8`mgb|qnsj|^<(eOhR4J`z+HqZ zV?FzrCb`mSY9H9JDs=QDg7atL13hF?NK@pQ=?);C76$o#(#TAm-l7VwzDlJKNn} z-w;{=wTuyEmv_(?r6y*^rG*T+F9K#NNfWroKoVn(H)s&TcJVKro5y#hlN(?^!yrL* z%Zq!08rzG-ip5!vb^~iZIh|YwrKE*B`^aVdGcTMaMuU!gu8}cRQTjZ?sXHm!JLJ>7 z)7x0s|GNXj5rp$QmchI)f-M>vevDhWr-24_f$-YZP(&5lyZYZ2y^Y%BdJO#20UAF% z(zJr5noQ(%hOsfcB>Ht8*Gl`>wbN zPo+Ni5h%b8jq)fTL&y*XwVzXk`;9(a@FvR9S!BAeH&AP6XQJ~rn!5PKWvNfIn;Q(- z*eufNJ^86G&dmiSUCKcEAThUtjEhxGz=8zi6+pgVtuZwU90Mu_q&dWsBL89u)*ji` z*bh0TNFnOn7tEiW6>b`XO}oTHydM0Xn)+K0Dh$Y|m`#gxZWDDPc#lb!CTmBpLR~*X zy-5Bt{ju_D_tuUtW-ojy#_2ctPoPl7?E#T&9HdrgrJQ@($^yY2iW>6p2alg_eQ%lev!b1njg8BulO9(VH>GR-bhZE*4HrjX{5cjOc z-`S;t+NXE@sKdvsRyxYVV(0}RFQJn=4-r%WE!f9Y*|r{Nv}6TVF;WAUo2kGOF}Te{Oa+c4scI+kxk#!cpdcmJc6ifbi#MGn?V%I6x!bM5s#@R3W?cy&oEfYk$Wxakq z$BaRF8Lsn2Dj@2dbFb4PYRsZ@jVS6XTCE00X zj3AKs_vx)@{5vv7rPqS;1l%|J)XOfK5{n(xvyG!*(gel)wx-o)a)C>-O&G{QL5tdl{s)_6J?Q=1!jJd0@BU-r1{GL0a75BY{01QHpIyc+rp9BbTRHb>o}qjYT3 zKZ50QJ1T}$6@N`*^kw~#l9Mh}4a|<=2#FY>-&8V7pP^5|PfA%la%&?c1*7Q|Xeshl z%8t9x5=$1p)hpaXk6tQH+o5@v7(a41WUya|GB*c2hqg@+-^lmN4xq)}6QX8aEb~Dm z!l3nIuRNiA=Yuznjom&`Njfeb#`W~}&B+wZIq_qzj_}3N{J4Yw zp=ASr_rS?cSn7KpedRxy>%Uw&JXTe!o;s*!hOjqoao72#Val)>MK zIG_Rm0Jv`K1j9YYGa>=A|u ztD&3Z@U3Ns=%(9jh>mB~0B^a4O7V;4$Ia}7R;?k7tWg4?2(IJCp$o{o0q*o9A1?5iR#HxK3hJJ~NqqB2SU6;8aN}GmXlqu* zpj>=Lcz~XOs(M1S$wVA@wdyS1IrHy~IUdQN%E9x`wE0!a%`iy_5i4#?Sg^ZTIQvFEUg2KI31|l|8kLOV2zIWcLEzpI7+*TG%Fv zb?RRh%_X+Fp5qGkG#N)baW^y$Z+JRY6dbD|a@tuT+4{z*dR1%x0IGw4gq?r%ZIf^Z*Y_*MA<)ur7+P#it_w+S;j148W*e2AC1SncUAi+m*|HGuoX40|Ra zaJ2&Ahm(BWG3(bLgSx;{)U$gfsseOr%M@~4&$9qQfSw1c&ESX1Bfr^YpZn$MI7hhn z-0&x~nuk`~znw};>WBa5Dce6_}~2-ioj0*;;(N3pZwN;PuCZ#XC;)t7H}}&RTZs zDvo}jhr#9AymF!<){~hC$T)J=!l&;DcU5h_ zS4VMddMV80!$)IKX5nA2=4Y#9Vk-{HQu8Dir5BuIJcVS=JhGqQiJEN|dwxgBJbWyW zGvDZ1P^Y3%lH)kiQlWX!Hu$K(q&}pv$r1;7vwRoF!hK7Y6spD zlIZfO99^Edrv9tmdW(S`YDUx!yLWr4P8$t1S^Fnxn<2X0R)98Mv_+!Oib|`_ML%l$ zo#W_=nLC#E!oz3b7KRF4BqJ%@#iZmD7|fP4Jo`EZfBM!o+op1ReFkpRzVr#>D(w|$qnyX%I=G|-rhwp>$7po*bGABy z*{N_?zkZ`x<6$9-!38}wBPC_3YsS~N47wpV+n3Vb(Z4kjJgZ7;6 zN5?{VYDPk)ON`kaUVM2xC--Gn@(>O>E+p_sx#EZf?$Aou)NreLIwMw7Nv2SONH zs9aI>|$j+dVs7xGyF-B@jOrAAr1wFQ*}6H>P09zKYl0tq9-nE+WCSGu#!( zAy-jLEOpiVGOV|?@C$8GI^$dJ8Nn^Ae*%F-bx2)@rI9|Rz8RirM)x8O) z?=uuJu5yn(QMg{pRGy`b$PcJ~tMz*!dzxP5qn4oV?8lR(BDNK-@8zDduQlrd9ZwsY zEyw^<9B=-xn|}e4-H_ruWAL2{;Oa{yY14CT%N;SAK!1_&nJX{Og@zQ5_#G`?d%h&j zZn3Zii1-G}nG9YLZsMuRp-lg`@*4a24e5Pb<_2eeNK!zTT_&+?^)n66v+TRvsv!-_ zEHYCkxP?J#2OY=nUn!Ls{Kh)8K`ATHu~GlY`Yv~Sh>k&bR^e?k_1Zqj^Ob9S>>RUU zlWx>$t8Yx9#uR717bs{K@NG6SC5Ry>ea)xmGp)y1Px}dVQ*W3)$Rb z9lak>qH|Lni*du=NcG&Q6Ys4_+f?1a_kknvzQa*X?N+$Us|cKtC| zp#A~#Fo@2LmpKZuudzb>or6;EQ>1u*^;1_3$pT%Qh>0ehd8-I&Nbl@NhWHJl;e93t zxZ|9lG_JWO2D==Lm&G&+aNS0jET9>Xj^oKV`L38U(qCfi=Dg43utY~Gj{w?f9aXOTs0d2)razyHojJUhf#m|fr;JWHx6y-^DA{C*~i{5 zOVYp7das0#V=}W$U#POY_4`%d`P^nISd7S|?%4pp{!t;5df4k)cK)9)zxe#L1YG3Y zophyOL2m+~UPfIHIUjiZa_&U^roCoPA37E;&jXjcwr&iU{fr7GY~D}?=xlF&JoOKA zX;V@J`y?+&sz zUaDWo@=qT z2-ripK2dxsMkNWPD590^z0U{W&;D+_m;|=}BvwIB=Rv>1sJ_7s;-N)IapZ3NU>7)MX_>0N-KVN1dhVR4_5 zLE<>=+?Or^GNQ<2ts8FoqKi*}d5a5e^kONEUuBJLt_j+mIOB97-Yr#B&$Zvem$EuB znZ~YTMPe|~rY|4C^#w5d^&nvO}~(lN>P!4ce`La$(YjSpFTHwFkQaqyQ!8 zFEl+0cpmLqIk!vEJGtVA^~C9Ol|#;5IrUrKxeyHf7}NIRlh?)d=nlgyS`$T44wlF= zscFuN!YF&B8hJzVmTl4|#F*D95AWcy_a%`C$z2cl__V!4uZWe~_F4BPRRzG9Q#%`g z*{h}Vk zC+%oM^%JyjhLsWoBrea~$G{-0BYgy5eauaCX^ zTRZA%UY|kQj}_SIZCb``fQ43kpM#^Eirb|x3re3@b2LG8=zX4`6u;tsW)2F?>fX2= zx1iG}x?Fcg;uw7X%XFX0sq5V7O8?=Loc~ye<<_Y}u~pFO@MCn;3}w72tLDBM)34(C z#so5wy<2(qUYwq)(_=k;3^l;K6W4?noq(1gzjVi6IyKEWL>LWXQ_@oWusb^2a@L05 za+I{V78%W?pEevE^f-}C)}+!3mTeVsKkP5CnkGJF6uYEOVjMM;O=conE?71U0n;sSEE&lxPv!6r9;anVGozy zKAPKIR26~ORuv}aV6I7^eOB%NmT0?8&QIb_l*w8)ta>BMqi0<6O>z!1+62~>PZZl) zKiW}iw(29#tm?Oru?e+D-@ZtfhgG5#8JSiYl8A$o($TXTB_ZftUH983{Wa`LJamDwH5s~;WbteV`Ylx0 zJJV12REEkf3i~@DR&^8E+*^U9K12u1ZeIUwqQ^98F-7kA=u%nWZC0L07ah6Ce@@Y# z!_=vGb||uZMa9>{2E$`)(9TqdIoK9db?a@mdis;XMri>?t&#cp`B&6$r0ZD%&Jg`! zk4O7i+vy*+?NTDy!8}>LAGYNSQY+wsu>q&q&G$lHi25g^7O9_SDx9?s(d2e3`j6{+ zEm0Hzpss}kAKa+nS9!kF^OPUdQ`Z@edcDxBSG`HdSWk`{9Tj&r&^nCDal$cQRv+rx z6DS8y6&@;tWVj%kcXP_YeGZ z<=@;>N(t1e0~5REx-ukwRWuE{#H`dp5?E2iI`0PqbhS?$FTpjqP;Xn94EP3LrMJO>VgNxSzXry{%Q=W7Q(Zp5lLa%XOFQ=j^<@fG$-D)(Y+E4-W^ne&lrf zg`pecU9(kidi)fe%o+MfI$HTLB-7>?d(1CFn2R)y`x)NhTv$Kjn_lL3)Xg(CNG89D z@0}6oyw`XrNx!oU3wSS;(z+KbiFMcprhz>MP5a*ZJBfc@%qm$E?6;Wr0wrTXpF>u9 zCoq3=Fj@r|V)Z7?8O5GcIxB^wikP>_E4H=pbfn@Q6eTK|nIufu5jrYVQc1x`zBD;r z<8-!JG%PoJxYa*j*JQLBSmL|>VCKkKz~hjjw;Sg+z008zx8?V7h9JMZeNKhMsj)f8 zD`eLzrTe#j?DBL9bjH%&&_hNM(GdQa6#g@9g&P#2H;PwWO&L$tiwA)3kgZI2&6+rj>tP(L!gtGb~rSQP(uuzB>&xtd$B zCZ?rx*n5KW=pAfo*r4g}rQH(EtwLdi@;J=)UZb0abf+FGl#_j2=5761KxKzW`|q1P z>Ma3l-sLt4N0}Wr=f;qra^WQxmrR*+y}TUzsulpq9>E%XIz1xB6aNAbZ$NAHwPBrv5sYr3@CR(z zu>r7y<|X$_q#Y10pn)<4Yazw;v$Kp0;@3duavxN1=A^~!i8c#oW?+5ENhc(J?mH7<%iY-Ai zVgYPAtX{0o;qS=m^#v?`prw8ienCvW!ZozDWInvP#hXqQXIv-lN{-kRak_K#LcmA& zBhMx_Lmlsgbr`K4Mkq1%AW*6rN`eMg_|_^KFRG9jP4(*-u%c+HXMc(noUQdu_LR}|O90F}o^KE9cR*4}6ZwLhPLC9QuQ z4x>No$5AvDgTH@P&Bb~-jjZD`=Q^cwyf3m`$Z_Zs(zJ^q$Y~Uw`i0vnr5&mdJ?I`z6MV}c7zj{Cgilb-z|46f__|CnTIE~`9>UT6hEdC$S zGdmvmT>9dHKH|VH%c6{F@lStu4|l&d+_e+-u|7j*;d;kbV){gcE5`lh)k-JwYT%Ti zV~+K>4C3s)-#M+Kt%qJN(&#PoVV~iB#XKu*C!W%(Q0$`3FJ?_z#ldO)8Bn@WN<~g8 z$bO{nyXs&8$*XFu97RDS4NuV` zE+V~9l!AR6aLzw8Ep`~}a4&*}0)%|^rfKj&OWj#pwPwoKzVnKRA#W7C>Q0GdI6Y?8 z*0O5bE=O&Mm1rXm*5Gaq1F8xMFh!F$3s0H znfik>`TuCDK&4_S2vKfw_drg1kzpwyP*$B4>e5RG#*Fz%TYx1h{B>b07O!e{To5hw znY>bydSX`JqY)wOm^|>H$32qHeQti3?q|Yp&mR>AUdLC9FtV)3Td$i!YK~zdjafh#CZTc zg9?K;!L=RZ#aG3s-9X(Cv$%5uFcUHSp%Tx!#_NbOWBK@BD2`+(E!o>q_)BlJ0I8Qj}Db?yjM`OS*IDlJ0JJxbFLR zU+4L}f#Z+;S;t=MTWc$9$mGOGP@??Lz23IU>QB>Ukcf|0;yEJ?a?mtw+oWdk@GI}T zPdk3U5`*wQO$v~O5b4#~-=vbIfQnvC4dBo{RIrIDj|?~u z%d8lEM3btX`{WzUm(%TAr|9V(OJmo7a!N~)*YA-Xole4T+VmC}DE5o7?=pH!cREZb!Mb`>6PT)!DQao zIn={kPJUsU$Y0Krfx9cqDF`lA{eSwl4!E9>hx(@Q6_eklu`rQrfYmI0;LK{sjpspE z2-hnqs&JxwiQ(7ZY#jn^3KOaoCUwfZXLWGQbMS?BQm%0P=c5ndWq=w299Y0P!4^HI{dj}Q zv;k6Rn{!#6g;wac5y_*4B!>kSDGu9XUj^*{4$SfrB}*si+y8k1W;t%Z-H~Jo@utkj zqX?~8l68FdI^OJo4K|p`z`UvK6`KGy7holR7I8KUXc#xXi=#s1oDRE-shETns3P)p zY%g;l?Y%z_7+MO@5>p-Da-~XE4+-q5sF$x2!1VA#`ATbK(mCy&N(w;T}=(0Mx4}wytQSh z89y=ve@(HW^rOhh%W?4d&^oue%-_rLl41O>gFZz>W!71Eqj(mTHedZF>MOGsE0xS? zkD6>Ti`?E>hjLArT4fF@9Q!7+Ji7`;nEN}$S{(gf_^gyqvr#^^o=k;@o4aN6X9a(g zSE7_SU)y4{43*O3)T&FLtJPCNJJ&%bG37O0cw-~N=yS2+x^SFEjSFy?l1_0z?ERnW zWBcEsqMP81vhFt9*HwVXIkQaw_yv@}#&iJMe8bR$FQ;~!&;E(=kDwu7(R?biETbPC7o<@B?RS8G4Y6bJYj9Xg>MKqmJwntP@%@7Cw0qH~y9oPKK0-i~ zGpoGiP@z=qWv$<}&oR0Vd(VVK`mdglpPnvy%YuY~Mo}H99kiOf;`snw z-8&8#S@zFpk|Onm(o>f7B|3ajrNg^HbmQaO&%;y}Xb)_oZ*HE8`tadEio`L!xWpB0 zsigg;a)pW>6OhY1XSx;jT`e*}aJH1sRkHQ?Vkpa})*^^M)Pre}Mh|Va{=RP>RR8X2 z_K#-$WtE;|S?8v8&OOd&?1QmiXTAYDMVs5A2^Hiva1)EV>$&MuVW(foA}Fg`H<`x< zI2U$y$c|R6gRK{tOSg-@-Pj=ZO@sfO@iOc=xAq1bNIku2T&hn}TiR+vqkd|RUo7zN zD?qsar_Lr0%END$2*qAl+9{p1Ht)HIZJ{A08ZICEm+crW)e~6SWw`~2(MkZ{kB^1) zYZzQ6#oLGlvl?w{(YcXit;9XrpL=6kE>!BKUa{5e<)V9U(_*^~pfZ7m&8<_YpT{x( zFo;qz9bc(8-ytwg znb1b^n2f-~ck^1PU*~H44dVdTMT++yZ!=S5wz2mmm_&}VlI)4vU$2g#N3O%%=Ycb| z!BzLnviJW5lq7y#mkBp3mo)}FsvbN@Wcb)aiIq-i1W&%7c80T#I`jdvZh=~Oo2Z74 zBRg;Q_sK?VRQ-{aP6W(euoy$@wWo{K^Gb2jMv7uJFV%FDD!iuOw&kz#N122p7@Jgjh$yz{nY7OaxCwW$ zUdAE=toC<%5LG~w)#Nw{bH%MS%gCy=B=gbKt8iw1YQ zh||Bjs{+nhf(?6Obv;C&giJN{ApI_nh3I!5!KX1oB#lGY(OVQ=@oL-S2K?r8nMAk{ zj?<11D8rQ}n0wecu2O+<^dPAv>VFS%cI3Gx=}8gMkN!;)^_#YvN82Qr*$~DDPIY#n z{I^t*eW-t#`Hi3Z+_D}Q1(>G}jmr7*Q3d|+zOJON92$|AVvGJ^9V}&lrs7JxVz1g> zV!So#DpqOm2|}E;lg5|w7EP8D#*Zm=!>eq0BOe;~xic1A><_s2|0x>B&6}BUXXSk# z-tr-!Bu-7g4KP)hJezX$zF_MC{_uh$;9bcJ;E2Ug;)=RLo9W1Zqb$C69PoIwiRGB* z)@|sN3vAKU#{+oCjn=h1RLmOhH5{V>1j9@0^>{HLYsLE*Stz~GHP1f>(6Rsahga@C zyPyEeKfa>&S9msq1TT`9iZ++PrL&HkrfpLgjVW2zVet+PLLfP5X@o>?t0W%G*~8FA z`qN<$%K2r^3`6mM$istrbkkMe9VjJcH6=SUqKQi%5B(AKC5<>xZBdBYT;TcEvXRL# z9P-|O^Y_;e{qQtAaJI|p-hLd%pG$l+8*!i=cJOMW-DtgVRd37#VZ{Ξ9Cl$7Fm4 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 $&7}Ih*@&d& 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 str`** - - Asynchronously scrape the content of a given URL using Playwright's async API. - - **Args**: - - `url (str)`: The URL to scrape. - - **Returns**: `str` - The scraped HTML content or an error message if an exception occurs. - -- **`lazy_load(self) -> Iterator[Document]`** - - Lazily load text content from the provided URLs. - - **Yields**: `Document` - The scraped content encapsulated within a `Document` object. - -- **`alazy_load(self) -> AsyncIterator[Document]`** - - Asynchronously load text content from the provided URLs. - - **Yields**: `Document` - A `Document` object containing the scraped content, along with its source URL as metadata. - -## Example Usage - -Here is an example of how to use the `ChromiumLoader` class: - -```python -import asyncio -from chromium_loader import ChromiumLoader - -# Define the list of URLs to scrape -urls = ["https://example.com", "https://example.org"] - -# Initialize ChromiumLoader -loader = ChromiumLoader(urls, backend="playwright", headless=True, proxy=None) - -# Lazy load documents (synchronous) -for document in loader.lazy_load(): - print(document.page_content) - -# Asynchronously load documents -async def load_documents(): - async for document in loader.alazy_load(): - print(document.page_content) - -# Run the asynchronous loader -asyncio.run(load_documents()) diff --git a/docs/Examples/Anthropic/csv_scraper_anthropic.md b/docs/Examples/Anthropic/csv_scraper_anthropic.md deleted file mode 100644 index 138cfe41..00000000 --- a/docs/Examples/Anthropic/csv_scraper_anthropic.md +++ /dev/null @@ -1,61 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -# required environment variables in .env -# HUGGINGFACEHUB_API_TOKEN -# ANTHROPIC_API_KEY -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, -} - -# ************************************************ -# Create the CSVScraperGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperGraph( - prompt="List me all the last names", - source=str(text), # Pass the content of the file, not the file object - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Anthropic/csv_scraper_graph_multi_anthropic.md b/docs/Examples/Anthropic/csv_scraper_graph_multi_anthropic.md deleted file mode 100644 index f35e4182..00000000 --- a/docs/Examples/Anthropic/csv_scraper_graph_multi_anthropic.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperMultiGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, -} - -# ************************************************ -# Create the CSVScraperMultiGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperMultiGraph( - prompt="List me all the last names", - source=[str(text), str(text)], - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Anthropic/custom_graph_anthropic.md b/docs/Examples/Anthropic/custom_graph_anthropic.md deleted file mode 100644 index f6d60c3e..00000000 --- a/docs/Examples/Anthropic/custom_graph_anthropic.md +++ /dev/null @@ -1,95 +0,0 @@ -```python -""" -Example of custom graph using existing nodes -""" -import os -from dotenv import load_dotenv -from langchain_anthropic import ChatAnthropic -from scrapegraphai.graphs import BaseGraph -from scrapegraphai.nodes import FetchNode, ParseNode, GenerateAnswerNode, RobotsNode -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "claude-3-haiku-20240307", - }, -} - -# ************************************************ -# Define the graph nodes -# ************************************************ - -llm_model = ChatAnthropic(graph_config["llm"]) - -# define the nodes for the graph -robot_node = RobotsNode( - input="url", - output=["is_scrapable"], - node_config={ - "llm_model": llm_model, - "force_scraping": True, - "verbose": True, - } -) - -fetch_node = FetchNode( - input="url | local_dir", - output=["doc"], - node_config={ - "verbose": True, - "headless": True, - } -) -parse_node = ParseNode( - input="doc", - output=["parsed_doc"], - node_config={ - "chunk_size": 4096, - "verbose": True, - } -) -generate_answer_node = GenerateAnswerNode( - input="user_prompt & (relevant_chunks | parsed_doc | doc)", - output=["answer"], - node_config={ - "llm_model": llm_model, - "verbose": True, - } -) - -# ************************************************ -# Create the graph by defining the connections -# ************************************************ - -graph = BaseGraph( - nodes=[ - robot_node, - fetch_node, - parse_node, - generate_answer_node, - ], - edges=[ - (robot_node, fetch_node), - (fetch_node, parse_node), - (parse_node, generate_answer_node) - ], - entry_point=robot_node -) - -# ************************************************ -# Execute the graph -# ************************************************ - -result, execution_info = graph.execute({ - "user_prompt": "Describe the content", - "url": "https://example.com/" -}) - -# get the answer from the result -result = result.get("answer", "No answer found.") -print(result) diff --git a/docs/Examples/Anthropic/depth_search_graph_anthropic.md b/docs/Examples/Anthropic/depth_search_graph_anthropic.md deleted file mode 100644 index 6d6d47b0..00000000 --- a/docs/Examples/Anthropic/depth_search_graph_anthropic.md +++ /dev/null @@ -1,29 +0,0 @@ -```python -""" -depth_search_graph_opeani example -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import DepthSearchGraph - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, - "verbose": True, - "headless": False, - "depth": 2, - "only_inside_links": False, -} - -search_graph = DepthSearchGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Anthropic/json_scraper_anthropic.md b/docs/Examples/Anthropic/json_scraper_anthropic.md deleted file mode 100644 index faed69c9..00000000 --- a/docs/Examples/Anthropic/json_scraper_anthropic.md +++ /dev/null @@ -1,44 +0,0 @@ -```python -""" -Basic example of scraping pipeline using JSONScraperGraph from JSON documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperGraph - -load_dotenv() - -# ************************************************ -# Read the JSON file -# ************************************************ - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - } -} - -# ************************************************ -# Create the JSONScraperGraph instance and run it -# ************************************************ - -json_scraper_graph = JSONScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = json_scraper_graph.run() -print(result) diff --git a/docs/Examples/Anthropic/json_scraper_multi_anthropic.md b/docs/Examples/Anthropic/json_scraper_multi_anthropic.md deleted file mode 100644 index 20e411f8..00000000 --- a/docs/Examples/Anthropic/json_scraper_multi_anthropic.md +++ /dev/null @@ -1,36 +0,0 @@ -```python -""" -Module for showing how JSONScraperMultiGraph multi works -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperMultiGraph - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, -} - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -sources = [text, text] - -multiple_search_graph = JSONScraperMultiGraph( - prompt= "List me all the authors, title and genres of the books", - source= sources, - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Anthropic/rate_limit_anthropic.md b/docs/Examples/Anthropic/rate_limit_anthropic.md deleted file mode 100644 index 455d209f..00000000 --- a/docs/Examples/Anthropic/rate_limit_anthropic.md +++ /dev/null @@ -1,48 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper while setting an API rate limit. -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - - -# required environment variables in .env -# ANTHROPIC_API_KEY -load_dotenv() - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - "rate_limit": { - "requests_per_second": 1 - } - }, -} - -smart_scraper_graph = SmartScraperGraph( - prompt="""Don't say anything else. Output JSON only. List me all the events, with the following fields: company_name, event_name, event_start_date, event_start_time, - event_end_date, event_end_time, location, event_mode, event_category, - third_party_redirect, no_of_days, - time_in_hours, hosted_or_attending, refreshments_type, - registration_available, registration_link""", - # also accepts a string with the already downloaded HTML code - source="https://www.hmhco.com/event", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Anthropic/scrape_plain_text_anthropic.md b/docs/Examples/Anthropic/scrape_plain_text_anthropic.md deleted file mode 100644 index 911a2787..00000000 --- a/docs/Examples/Anthropic/scrape_plain_text_anthropic.md +++ /dev/null @@ -1,53 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ - -FILE_NAME = "inputs/plain_html_example.txt" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -# It could be also a http request using the request model -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - source=text, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Anthropic/script_generator_anthropic.md b/docs/Examples/Anthropic/script_generator_anthropic.md deleted file mode 100644 index 9006f2f9..00000000 --- a/docs/Examples/Anthropic/script_generator_anthropic.md +++ /dev/null @@ -1,43 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/Anthropic/script_multi_generator_anthropic.md b/docs/Examples/Anthropic/script_multi_generator_anthropic.md deleted file mode 100644 index 6c9702d4..00000000 --- a/docs/Examples/Anthropic/script_multi_generator_anthropic.md +++ /dev/null @@ -1,52 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorMultiGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, - "library": "beautifulsoup" -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -urls=[ - "https://schultzbergagency.com/emil-raste-karlsen/", - "https://schultzbergagency.com/johanna-hedberg/", -] - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorMultiGraph( - prompt="Find information about actors", - # also accepts a string with the already downloaded HTML code - source=urls, - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Anthropic/search_graph_anthropic.md b/docs/Examples/Anthropic/search_graph_anthropic.md deleted file mode 100644 index e0e89407..00000000 --- a/docs/Examples/Anthropic/search_graph_anthropic.md +++ /dev/null @@ -1,44 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Anthropic/search_graph_schema_anthropic.md b/docs/Examples/Anthropic/search_graph_schema_anthropic.md deleted file mode 100644 index 92630188..00000000 --- a/docs/Examples/Anthropic/search_graph_schema_anthropic.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import SearchGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Dish(BaseModel): - name: str = Field(description="The name of the dish") - description: str = Field(description="The description of the dish") - -class Dishes(BaseModel): - dishes: List[Dish] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config, - schema=Dishes -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Anthropic/search_link_graph_anthropic.md b/docs/Examples/Anthropic/search_link_graph_anthropic.md deleted file mode 100644 index 5bcd01b1..00000000 --- a/docs/Examples/Anthropic/search_link_graph_anthropic.md +++ /dev/null @@ -1,46 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info -from langchain_openai import AzureChatOpenAI -from langchain_openai import AzureOpenAIEmbeddings - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me the best escursions near Trento", - config=graph_config -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Anthropic/smart_scraper_anthropic.md b/docs/Examples/Anthropic/smart_scraper_anthropic.md deleted file mode 100644 index 9973c82d..00000000 --- a/docs/Examples/Anthropic/smart_scraper_anthropic.md +++ /dev/null @@ -1,42 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper using Azure OpenAI Key -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, -} - -smart_scraper_graph = SmartScraperGraph( - prompt="""Don't say anything else. Output JSON only. List me all the events, with the following fields: company_name, event_name, event_start_date, event_start_time, - event_end_date, event_end_time, location, event_mode, event_category, - third_party_redirect, no_of_days, - time_in_hours, hosted_or_attending, refreshments_type, - registration_available, registration_link""", - # also accepts a string with the already downloaded HTML code - source="https://www.hmhco.com/event", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Anthropic/smart_scraper_multi_anthropic.md b/docs/Examples/Anthropic/smart_scraper_multi_anthropic.md deleted file mode 100644 index d13f4f6c..00000000 --- a/docs/Examples/Anthropic/smart_scraper_multi_anthropic.md +++ /dev/null @@ -1,57 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Anthropic/smart_scraper_multi_concat_anthropic.md b/docs/Examples/Anthropic/smart_scraper_multi_concat_anthropic.md deleted file mode 100644 index 426a36bb..00000000 --- a/docs/Examples/Anthropic/smart_scraper_multi_concat_anthropic.md +++ /dev/null @@ -1,39 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiConcatGraph - -load_dotenv() - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, -} - - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiConcatGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Anthropic/smart_scraper_schema_anthropic.md b/docs/Examples/Anthropic/smart_scraper_schema_anthropic.md deleted file mode 100644 index 616d4f8b..00000000 --- a/docs/Examples/Anthropic/smart_scraper_schema_anthropic.md +++ /dev/null @@ -1,52 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper using Azure OpenAI Key -""" -import os -from typing import List -from pydantic import BaseModel, Field -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, -} - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - # also accepts a string with the already downloaded HTML code - schema=Projects, - source="https://perinim.github.io/projects/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Anthropic/xml_scraper_anthropic.md b/docs/Examples/Anthropic/xml_scraper_anthropic.md deleted file mode 100644 index 314f46d6..00000000 --- a/docs/Examples/Anthropic/xml_scraper_anthropic.md +++ /dev/null @@ -1,56 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, -} - -# ************************************************ -# Create the XMLScraperGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Anthropic/xml_scraper_graph_multi_anthropic.md b/docs/Examples/Anthropic/xml_scraper_graph_multi_anthropic.md deleted file mode 100644 index 0f2d9c0e..00000000 --- a/docs/Examples/Anthropic/xml_scraper_graph_multi_anthropic.md +++ /dev/null @@ -1,56 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperMultiGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, -} - -# ************************************************ -# Create the XMLScraperMultiGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperMultiGraph( - prompt="List me all the authors, title and genres of the books", - source=[text, text], # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Azure/code_generator_graph_azure.md b/docs/Examples/Azure/code_generator_graph_azure.md deleted file mode 100644 index 9507b4c6..00000000 --- a/docs/Examples/Azure/code_generator_graph_azure.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using Code Generator with schema -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import CodeGeneratorGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False, - "reduction": 2, - "max_iterations": { - "overall": 10, - "syntax": 3, - "execution": 3, - "validation": 3, - "semantic": 3 - }, - "output_file_name": "extracted_data.py" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -code_generator_graph = CodeGeneratorGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = code_generator_graph.run() -print(result) diff --git a/docs/Examples/Azure/csv_scraper_azure.md b/docs/Examples/Azure/csv_scraper_azure.md deleted file mode 100644 index 4108b023..00000000 --- a/docs/Examples/Azure/csv_scraper_azure.md +++ /dev/null @@ -1,57 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Create the CSVScraperGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperGraph( - prompt="List me all the last names", - source=str(text), # Pass the content of the file, not the file object - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Azure/csv_scraper_graph_multi_azure.md b/docs/Examples/Azure/csv_scraper_graph_multi_azure.md deleted file mode 100644 index 6878e389..00000000 --- a/docs/Examples/Azure/csv_scraper_graph_multi_azure.md +++ /dev/null @@ -1,56 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperMultiGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Create the CSVScraperMultiGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperMultiGraph( - prompt="List me all the last names", - source=[str(text), str(text)], - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Azure/depth_search_graph_azure.md b/docs/Examples/Azure/depth_search_graph_azure.md deleted file mode 100644 index 53e92b33..00000000 --- a/docs/Examples/Azure/depth_search_graph_azure.md +++ /dev/null @@ -1,29 +0,0 @@ -```python -""" -depth_search_graph_azure example -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import DepthSearchGraph - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o", - }, - "verbose": True, - "headless": False, - "depth": 2, - "only_inside_links": False, -} - -search_graph = DepthSearchGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Azure/json_scraper_azure.md b/docs/Examples/Azure/json_scraper_azure.md deleted file mode 100644 index d83162d6..00000000 --- a/docs/Examples/Azure/json_scraper_azure.md +++ /dev/null @@ -1,46 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper using Azure OpenAI Key -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Initialize the model instances -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - -smart_scraper_graph = JSONScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Azure/json_scraper_multi_azure.md b/docs/Examples/Azure/json_scraper_multi_azure.md deleted file mode 100644 index a63c5ee1..00000000 --- a/docs/Examples/Azure/json_scraper_multi_azure.md +++ /dev/null @@ -1,39 +0,0 @@ -```python -""" -Module for showing how JSONScraperMultiGraph multi works -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperMultiGraph - -load_dotenv() - - -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -sources = [text, text] - -multiple_search_graph = JSONScraperMultiGraph( - prompt= "List me all the authors, title and genres of the books", - source= sources, - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Azure/rate_limit_azure.md b/docs/Examples/Azure/rate_limit_azure.md deleted file mode 100644 index 490fa3b0..00000000 --- a/docs/Examples/Azure/rate_limit_azure.md +++ /dev/null @@ -1,57 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with a custom rate limit -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - - -# required environment variable in .env -# AZURE_OPENAI_ENDPOINT -# AZURE_OPENAI_CHAT_DEPLOYMENT_NAME -# MODEL_NAME -# AZURE_OPENAI_API_KEY -# OPENAI_API_TYPE -# AZURE_OPENAI_API_VERSION -# AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT_NAME -load_dotenv() - - -# ************************************************ -# Initialize the model instances -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o", - "rate_limit": { - "requests_per_second": 1 - }, - }, - "verbose": True, - "headless": False -} - -smart_scraper_graph = SmartScraperGraph( - prompt="""List me all the events, with the following fields: company_name, event_name, event_start_date, event_start_time, - event_end_date, event_end_time, location, event_mode, event_category, - third_party_redirect, no_of_days, - time_in_hours, hosted_or_attending, refreshments_type, - registration_available, registration_link""", - # also accepts a string with the already downloaded HTML code - source="https://www.hmhco.com/event", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Azure/scrape_plain_text_azure.md b/docs/Examples/Azure/scrape_plain_text_azure.md deleted file mode 100644 index 159d1f5a..00000000 --- a/docs/Examples/Azure/scrape_plain_text_azure.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ - -FILE_NAME = "inputs/plain_html_example.txt" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -# It could be also a http request using the request model -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - source=text, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Azure/script_generator_azure.md b/docs/Examples/Azure/script_generator_azure.md deleted file mode 100644 index aa989a0f..00000000 --- a/docs/Examples/Azure/script_generator_azure.md +++ /dev/null @@ -1,44 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/Azure/script_multi_generator_azure.md b/docs/Examples/Azure/script_multi_generator_azure.md deleted file mode 100644 index 582657db..00000000 --- a/docs/Examples/Azure/script_multi_generator_azure.md +++ /dev/null @@ -1,53 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorMultiGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -urls=[ - "https://schultzbergagency.com/emil-raste-karlsen/", - "https://schultzbergagency.com/johanna-hedberg/", -] - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorMultiGraph( - prompt="Find information about actors", - # also accepts a string with the already downloaded HTML code - source=urls, - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Azure/search_graph_azure.md b/docs/Examples/Azure/search_graph_azure.md deleted file mode 100644 index c6fdca82..00000000 --- a/docs/Examples/Azure/search_graph_azure.md +++ /dev/null @@ -1,52 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info -load_dotenv() - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Initialize the model instances -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me the best escursions near Trento", - config=graph_config -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Azure/search_graph_schema_azure.md b/docs/Examples/Azure/search_graph_schema_azure.md deleted file mode 100644 index 5836a378..00000000 --- a/docs/Examples/Azure/search_graph_schema_azure.md +++ /dev/null @@ -1,61 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from typing import List -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -from pydantic import BaseModel, Field - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Dish(BaseModel): - name: str = Field(description="The name of the dish") - description: str = Field(description="The description of the dish") - -class Dishes(BaseModel): - dishes: List[Dish] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config, - schema=Dishes -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Azure/search_link_graph_azure.md b/docs/Examples/Azure/search_link_graph_azure.md deleted file mode 100644 index 6d1079e4..00000000 --- a/docs/Examples/Azure/search_link_graph_azure.md +++ /dev/null @@ -1,46 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me the best escursions near Trento", - config=graph_config -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Azure/smart_scraper_azure.md b/docs/Examples/Azure/smart_scraper_azure.md deleted file mode 100644 index 77916d7f..00000000 --- a/docs/Examples/Azure/smart_scraper_azure.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper using Azure OpenAI Key -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Initialize the model instances -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - -smart_scraper_graph = SmartScraperGraph( - prompt="""List me all the events, with the following fields: - company_name, event_name, event_start_date, event_start_time, - event_end_date, event_end_time, location, event_mode, event_category, - third_party_redirect, no_of_days, - time_in_hours, hosted_or_attending, refreshments_type, - registration_available, registration_link""", - # also accepts a string with the already downloaded HTML code - source="https://www.hmhco.com/event", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Azure/smart_scraper_multi_azure.md b/docs/Examples/Azure/smart_scraper_multi_azure.md deleted file mode 100644 index 460a1e50..00000000 --- a/docs/Examples/Azure/smart_scraper_multi_azure.md +++ /dev/null @@ -1,39 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Azure/smart_scraper_multi_concat_azure.md b/docs/Examples/Azure/smart_scraper_multi_concat_azure.md deleted file mode 100644 index c107b57b..00000000 --- a/docs/Examples/Azure/smart_scraper_multi_concat_azure.md +++ /dev/null @@ -1,39 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiConcatGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiConcatGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Azure/smart_scraper_schema_azure.md b/docs/Examples/Azure/smart_scraper_schema_azure.md deleted file mode 100644 index 808b3a9b..00000000 --- a/docs/Examples/Azure/smart_scraper_schema_azure.md +++ /dev/null @@ -1,50 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with schema -""" -import os -import json -from typing import List -from pydantic import BaseModel, Field -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Initialize the model instances -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Azure/xml_scraper_azure.md b/docs/Examples/Azure/xml_scraper_azure.md deleted file mode 100644 index 4d47b801..00000000 --- a/docs/Examples/Azure/xml_scraper_azure.md +++ /dev/null @@ -1,47 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper using Azure OpenAI Key -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - - -# ************************************************ -# Initialize the model instances -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - -smart_scraper_graph = XMLScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Azure/xml_scraper_graph_multi_azure.md b/docs/Examples/Azure/xml_scraper_graph_multi_azure.md deleted file mode 100644 index b1e57c7e..00000000 --- a/docs/Examples/Azure/xml_scraper_graph_multi_azure.md +++ /dev/null @@ -1,57 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperMultiGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o", - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Create the XMLScraperMultiGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperMultiGraph( - prompt="List me all the authors, title and genres of the books", - source=[text, text], # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Bedrock/README.md b/docs/Examples/Bedrock/README.md deleted file mode 100644 index 0248d25e..00000000 --- a/docs/Examples/Bedrock/README.md +++ /dev/null @@ -1,4 +0,0 @@ -```python -This folder contains examples of how to use ScrapeGraphAI with [Amazon Bedrock](https://aws.amazon.com/bedrock/) ⛰️. The examples show how to extract information from websites and files using a natural language prompt. - -![](scrapegraphai_bedrock.png) \ No newline at end of file diff --git a/docs/Examples/Bedrock/code_generator_graph_bedrock.md b/docs/Examples/Bedrock/code_generator_graph_bedrock.md deleted file mode 100644 index a796c8d5..00000000 --- a/docs/Examples/Bedrock/code_generator_graph_bedrock.md +++ /dev/null @@ -1,61 +0,0 @@ -```python -""" -Basic example of scraping pipeline using Code Generator with schema -""" - -import os, json -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import CodeGeneratorGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - }, - "verbose": True, - "headless": False, - "reduction": 2, - "max_iterations": { - "overall": 10, - "syntax": 3, - "execution": 3, - "validation": 3, - "semantic": 3 - }, - "output_file_name": "extracted_data.py" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -code_generator_graph = CodeGeneratorGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = code_generator_graph.run() -print(result) \ No newline at end of file diff --git a/docs/Examples/Bedrock/csv_scraper_bedrock.md b/docs/Examples/Bedrock/csv_scraper_bedrock.md deleted file mode 100644 index 5cc1452b..00000000 --- a/docs/Examples/Bedrock/csv_scraper_bedrock.md +++ /dev/null @@ -1,51 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperGraph from CSV documents -""" - -import os -import json - -from dotenv import load_dotenv - -import pandas as pd - -from scrapegraphai.graphs import CSVScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - } -} -# ************************************************ -# Create the CSVScraperGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperGraph( - prompt="List me all the last names", - source=str(text), # Pass the content of the file, not the file object - config=graph_config -) - -result = csv_scraper_graph.run() -print(json.dumps(result, indent=4)) - diff --git a/docs/Examples/Bedrock/csv_scraper_graph_multi_bedrock.md b/docs/Examples/Bedrock/csv_scraper_graph_multi_bedrock.md deleted file mode 100644 index e75a033b..00000000 --- a/docs/Examples/Bedrock/csv_scraper_graph_multi_bedrock.md +++ /dev/null @@ -1,57 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperMultiGraph from CSV documents -""" - -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - } -} - -# ************************************************ -# Create the CSVScraperMultiGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperMultiGraph( - prompt="List me all the last names", - source=[str(text), str(text)], - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Bedrock/custom_graph_bedrock.md b/docs/Examples/Bedrock/custom_graph_bedrock.md deleted file mode 100644 index 863de975..00000000 --- a/docs/Examples/Bedrock/custom_graph_bedrock.md +++ /dev/null @@ -1,126 +0,0 @@ -```python -""" -Example of custom graph using existing nodes -""" - -import json - -from dotenv import load_dotenv - -from langchain_aws import BedrockEmbeddings -from scrapegraphai.models import Bedrock -from scrapegraphai.graphs import BaseGraph -from scrapegraphai.nodes import ( - FetchNode, - ParseNode, - RAGNode, - GenerateAnswerNode, - RobotsNode -) - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - } -} - -# ************************************************ -# Define the graph nodes -# ************************************************ - -llm_model = Bedrock({ - 'model_id': graph_config["llm"]["model"].split("/")[-1], - 'model_kwargs': { - 'temperature': 0.0 - }}) -embedder = BedrockEmbeddings(model_id=graph_config["embeddings"]["model"].split("/")[-1]) - -# Define the nodes for the graph -robot_node = RobotsNode( - input="url", - output=["is_scrapable"], - node_config={ - "llm_model": llm_model, - "force_scraping": True, - "verbose": True, - } -) - -fetch_node = FetchNode( - input="url | local_dir", - output=["doc"], - node_config={ - "verbose": True, - "headless": True, - } -) - -parse_node = ParseNode( - input="doc", - output=["parsed_doc"], - node_config={ - "chunk_size": 4096, - "verbose": True, - } -) - -rag_node = RAGNode( - input="user_prompt & (parsed_doc | doc)", - output=["relevant_chunks"], - node_config={ - "llm_model": llm_model, - "embedder_model": embedder, - "verbose": True, - } -) - -generate_answer_node = GenerateAnswerNode( - input="user_prompt & (relevant_chunks | parsed_doc | doc)", - output=["answer"], - node_config={ - "llm_model": llm_model, - "verbose": True, - } -) - -# ************************************************ -# Create the graph by defining the connections -# ************************************************ - -graph = BaseGraph( - nodes=[ - robot_node, - fetch_node, - parse_node, - rag_node, - generate_answer_node, - ], - edges=[ - (robot_node, fetch_node), - (fetch_node, parse_node), - (parse_node, rag_node), - (rag_node, generate_answer_node) - ], - entry_point=robot_node -) - -# ************************************************ -# Execute the graph -# ************************************************ - -result, execution_info = graph.execute({ - "user_prompt": "List me all the articles", - "url": "https://perinim.github.io/projects" -}) - -# Get the answer from the result -result = result.get("answer", "No answer found.") -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Bedrock/depth_search_graph_bedrock.md b/docs/Examples/Bedrock/depth_search_graph_bedrock.md deleted file mode 100644 index fbde1a40..00000000 --- a/docs/Examples/Bedrock/depth_search_graph_bedrock.md +++ /dev/null @@ -1,26 +0,0 @@ -```python -""" -depth_search_graph_opeani example -""" -from scrapegraphai.graphs import DepthSearchGraph - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - }, - "verbose": True, - "headless": False, - "depth": 2, - "only_inside_links": False, -} - -search_graph = DepthSearchGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Bedrock/json_scraper_bedrock.md b/docs/Examples/Bedrock/json_scraper_bedrock.md deleted file mode 100644 index d0454db9..00000000 --- a/docs/Examples/Bedrock/json_scraper_bedrock.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using JSONScraperGraph from JSON documents -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the JSON file -# ************************************************ - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - } -} - -# ************************************************ -# Create the JSONScraperGraph instance and run it -# ************************************************ - -json_scraper_graph = JSONScraperGraph( - prompt="List me all questions and options in the math section, no answers.", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = json_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = json_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Bedrock/json_scraper_multi_bedrock.md b/docs/Examples/Bedrock/json_scraper_multi_bedrock.md deleted file mode 100644 index 181ec760..00000000 --- a/docs/Examples/Bedrock/json_scraper_multi_bedrock.md +++ /dev/null @@ -1,33 +0,0 @@ -```python -""" -Module for showing how JSONScraperMultiGraph multi works -""" -import os -import json -from scrapegraphai.graphs import JSONScraperMultiGraph - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - } -} -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -sources = [text, text] - -multiple_search_graph = JSONScraperMultiGraph( - prompt= "List me all the authors, title and genres of the books", - source= sources, - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Bedrock/rate_limit_bedrock.md b/docs/Examples/Bedrock/rate_limit_bedrock.md deleted file mode 100644 index 19b9583f..00000000 --- a/docs/Examples/Bedrock/rate_limit_bedrock.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with a custom rate limit -""" -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0, - "rate_limit": { - "requests_per_second": 1 - }, - } -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Bedrock/scrape_plain_text_bedrock.md b/docs/Examples/Bedrock/scrape_plain_text_bedrock.md deleted file mode 100644 index e7de926a..00000000 --- a/docs/Examples/Bedrock/scrape_plain_text_bedrock.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ - -FILE_NAME = "inputs/plain_html_example.txt" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -# It could be also a http request using the request model -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - } -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - source=text, - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Bedrock/script_generator_bedrock.md b/docs/Examples/Bedrock/script_generator_bedrock.md deleted file mode 100644 index d1be9d5d..00000000 --- a/docs/Examples/Bedrock/script_generator_bedrock.md +++ /dev/null @@ -1,44 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - }, - "library": "beautifulsoup" -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/Bedrock/script_multi_generator_bedrock.md b/docs/Examples/Bedrock/script_multi_generator_bedrock.md deleted file mode 100644 index 88334022..00000000 --- a/docs/Examples/Bedrock/script_multi_generator_bedrock.md +++ /dev/null @@ -1,49 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -from scrapegraphai.graphs import ScriptCreatorMultiGraph -from scrapegraphai.utils import prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - }, - "library": "beautifulsoup" -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -urls=[ - "https://schultzbergagency.com/emil-raste-karlsen/", - "https://schultzbergagency.com/johanna-hedberg/", -] - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorMultiGraph( - prompt="Find information about actors", - # also accepts a string with the already downloaded HTML code - source=urls, - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Bedrock/search_graph_bedrock.md b/docs/Examples/Bedrock/search_graph_bedrock.md deleted file mode 100644 index d9edf487..00000000 --- a/docs/Examples/Bedrock/search_graph_bedrock.md +++ /dev/null @@ -1,28 +0,0 @@ -```python -""" -Example of Search Graph -""" -from scrapegraphai.graphs import SearchGraph - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - } -} -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Bedrock/search_graph_schema_bedrock.md b/docs/Examples/Bedrock/search_graph_schema_bedrock.md deleted file mode 100644 index 9d7227bd..00000000 --- a/docs/Examples/Bedrock/search_graph_schema_bedrock.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Example of Search Graph -""" -from typing import List -from pydantic import BaseModel, Field -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Dish(BaseModel): - name: str = Field(description="The name of the dish") - description: str = Field(description="The description of the dish") - -class Dishes(BaseModel): - dishes: List[Dish] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - } -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config, - schema=Dishes -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Bedrock/search_link_graph_bedrock.md b/docs/Examples/Bedrock/search_link_graph_bedrock.md deleted file mode 100644 index 1d80784b..00000000 --- a/docs/Examples/Bedrock/search_link_graph_bedrock.md +++ /dev/null @@ -1,41 +0,0 @@ -```python -""" -Example of Search Graph -""" -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - } -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me the best escursions near Trento", - config=graph_config -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Bedrock/smart_scraper_bedrock.md b/docs/Examples/Bedrock/smart_scraper_bedrock.md deleted file mode 100644 index e38c7dd4..00000000 --- a/docs/Examples/Bedrock/smart_scraper_bedrock.md +++ /dev/null @@ -1,43 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - } -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Bedrock/smart_scraper_multi_bedrock.md b/docs/Examples/Bedrock/smart_scraper_multi_bedrock.md deleted file mode 100644 index da51fb7d..00000000 --- a/docs/Examples/Bedrock/smart_scraper_multi_bedrock.md +++ /dev/null @@ -1,35 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import json -from scrapegraphai.graphs import SmartScraperMultiGraph - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - } -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Bedrock/smart_scraper_multi_concat_bedrock.md b/docs/Examples/Bedrock/smart_scraper_multi_concat_bedrock.md deleted file mode 100644 index 36bb96df..00000000 --- a/docs/Examples/Bedrock/smart_scraper_multi_concat_bedrock.md +++ /dev/null @@ -1,36 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import json -from scrapegraphai.graphs import SmartScraperMultiConcatGraph - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - } -} - - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiConcatGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Bedrock/smart_scraper_schema_bedrock.md b/docs/Examples/Bedrock/smart_scraper_schema_bedrock.md deleted file mode 100644 index c7319fc6..00000000 --- a/docs/Examples/Bedrock/smart_scraper_schema_bedrock.md +++ /dev/null @@ -1,53 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -from typing import List -from pydantic import BaseModel, Field -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - } -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Bedrock/xml_scraper_bedrock.md b/docs/Examples/Bedrock/xml_scraper_bedrock.md deleted file mode 100644 index e04b6de2..00000000 --- a/docs/Examples/Bedrock/xml_scraper_bedrock.md +++ /dev/null @@ -1,59 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperGraph from XML documents -""" - -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - }, -} - -# ************************************************ -# Create the XMLScraperGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperGraph( - prompt="List me all the authors, title and genres of the books. Skip the preamble.", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Bedrock/xml_scraper_graph_multi_bedrock.md b/docs/Examples/Bedrock/xml_scraper_graph_multi_bedrock.md deleted file mode 100644 index f742c9f5..00000000 --- a/docs/Examples/Bedrock/xml_scraper_graph_multi_bedrock.md +++ /dev/null @@ -1,57 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperMultiGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - }, -} - -# ************************************************ -# Create the XMLScraperMultiGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperMultiGraph( - prompt="List me all the authors, title and genres of the books", - source=[text, text], # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Deepseek/code_generator_graph_deepseek.md b/docs/Examples/Deepseek/code_generator_graph_deepseek.md deleted file mode 100644 index 7ba35090..00000000 --- a/docs/Examples/Deepseek/code_generator_graph_deepseek.md +++ /dev/null @@ -1,60 +0,0 @@ -```python -""" -Basic example of scraping pipeline using Code Generator with schema -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import CodeGeneratorGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "verbose": True, - "headless": False, - "reduction": 2, - "max_iterations": { - "overall": 10, - "syntax": 3, - "execution": 3, - "validation": 3, - "semantic": 3 - }, - "output_file_name": "extracted_data.py" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -code_generator_graph = CodeGeneratorGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = code_generator_graph.run() -print(result) diff --git a/docs/Examples/Deepseek/csv_scraper_deepseek.md b/docs/Examples/Deepseek/csv_scraper_deepseek.md deleted file mode 100644 index 49273d1d..00000000 --- a/docs/Examples/Deepseek/csv_scraper_deepseek.md +++ /dev/null @@ -1,57 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info -load_dotenv() - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "verbose": True, -} -# ************************************************ -# Create the CSVScraperGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperGraph( - prompt="List me all the last names", - source=str(text), # Pass the content of the file, not the file object - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Deepseek/csv_scraper_graph_multi_deepseek.md b/docs/Examples/Deepseek/csv_scraper_graph_multi_deepseek.md deleted file mode 100644 index 76dac83d..00000000 --- a/docs/Examples/Deepseek/csv_scraper_graph_multi_deepseek.md +++ /dev/null @@ -1,57 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperMultiGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "verbose": True, -} -# ************************************************ -# Create the CSVScraperMultiGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperMultiGraph( - prompt="List me all the last names", - source=[str(text), str(text)], - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Deepseek/depth_search_graph_deepseek.md b/docs/Examples/Deepseek/depth_search_graph_deepseek.md deleted file mode 100644 index 6799e628..00000000 --- a/docs/Examples/Deepseek/depth_search_graph_deepseek.md +++ /dev/null @@ -1,31 +0,0 @@ -```python -""" -depth_search_graph_opeani example -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import DepthSearchGraph - -load_dotenv() - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "verbose": True, - "headless": False, - "depth": 2, - "only_inside_links": False, -} - -search_graph = DepthSearchGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Deepseek/json_scraper_deepseek.md b/docs/Examples/Deepseek/json_scraper_deepseek.md deleted file mode 100644 index 727d596f..00000000 --- a/docs/Examples/Deepseek/json_scraper_deepseek.md +++ /dev/null @@ -1,47 +0,0 @@ -```python -""" -Basic example of scraping pipeline using JSONScraperGraph from JSON documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the JSON file -# ************************************************ -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "verbose": True, -} - -# ************************************************ -# Create the JSONScraperGraph instance and run it -# ************************************************ - -json_scraper_graph = JSONScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = json_scraper_graph.run() -print(result) diff --git a/docs/Examples/Deepseek/json_scraper_multi_deepseek.md b/docs/Examples/Deepseek/json_scraper_multi_deepseek.md deleted file mode 100644 index 52db797e..00000000 --- a/docs/Examples/Deepseek/json_scraper_multi_deepseek.md +++ /dev/null @@ -1,38 +0,0 @@ -```python -""" -Module for showing how JSONScraperMultiGraph multi works -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperMultiGraph - -load_dotenv() - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "verbose": True, -} -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -sources = [text, text] - -multiple_search_graph = JSONScraperMultiGraph( - prompt= "List me all the authors, title and genres of the books", - source= sources, - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Deepseek/rate_limit_deepseek.md b/docs/Examples/Deepseek/rate_limit_deepseek.md deleted file mode 100644 index 5c9e937c..00000000 --- a/docs/Examples/Deepseek/rate_limit_deepseek.md +++ /dev/null @@ -1,48 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with a custom rate limit -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - "rate_limit": { - "requests_per_second": 1 - } - }, - "verbose": True, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Deepseek/scrape_plain_text_deepseek.md b/docs/Examples/Deepseek/scrape_plain_text_deepseek.md deleted file mode 100644 index 85381291..00000000 --- a/docs/Examples/Deepseek/scrape_plain_text_deepseek.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ - -FILE_NAME = "inputs/plain_html_example.txt" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -# It could be also a http request using the request model -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "verbose": True, -} -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the news with their description.", - source=text, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Deepseek/script_generator_deepseek.md b/docs/Examples/Deepseek/script_generator_deepseek.md deleted file mode 100644 index 90fee8ed..00000000 --- a/docs/Examples/Deepseek/script_generator_deepseek.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "library": "beautifulsoup" -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Deepseek/script_multi_generator_deepseek.md b/docs/Examples/Deepseek/script_multi_generator_deepseek.md deleted file mode 100644 index 604c8878..00000000 --- a/docs/Examples/Deepseek/script_multi_generator_deepseek.md +++ /dev/null @@ -1,54 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorMultiGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "library": "beautifulsoup" -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -urls=[ - "https://schultzbergagency.com/emil-raste-karlsen/", - "https://schultzbergagency.com/johanna-hedberg/", -] - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorMultiGraph( - prompt="Find information about actors", - # also accepts a string with the already downloaded HTML code - source=urls, - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Deepseek/search_graph_deepseek.md b/docs/Examples/Deepseek/search_graph_deepseek.md deleted file mode 100644 index 866b10fb..00000000 --- a/docs/Examples/Deepseek/search_graph_deepseek.md +++ /dev/null @@ -1,36 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "max_results": 2, - "verbose": True, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me the best escursions near Trento", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Deepseek/search_graph_schema_deepseek.md b/docs/Examples/Deepseek/search_graph_schema_deepseek.md deleted file mode 100644 index cf481308..00000000 --- a/docs/Examples/Deepseek/search_graph_schema_deepseek.md +++ /dev/null @@ -1,61 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Dish(BaseModel): - name: str = Field(description="The name of the dish") - description: str = Field(description="The description of the dish") - -class Dishes(BaseModel): - dishes: List[Dish] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "verbose": True, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config, - schema=Dishes -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Deepseek/search_link_graph_deepseek.md b/docs/Examples/Deepseek/search_link_graph_deepseek.md deleted file mode 100644 index a5dcb1e9..00000000 --- a/docs/Examples/Deepseek/search_link_graph_deepseek.md +++ /dev/null @@ -1,47 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -load_dotenv() - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "verbose": True, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me the best escursions near Trento", - config=graph_config -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Deepseek/smart_scraper_deepseek.md b/docs/Examples/Deepseek/smart_scraper_deepseek.md deleted file mode 100644 index e88ce75d..00000000 --- a/docs/Examples/Deepseek/smart_scraper_deepseek.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "verbose": True, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Deepseek/smart_scraper_multi_concat_deepseek.md b/docs/Examples/Deepseek/smart_scraper_multi_concat_deepseek.md deleted file mode 100644 index ce1ffa4c..00000000 --- a/docs/Examples/Deepseek/smart_scraper_multi_concat_deepseek.md +++ /dev/null @@ -1,42 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiConcatGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "verbose": True, -} - - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiConcatGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Deepseek/smart_scraper_multi_deepseek.md b/docs/Examples/Deepseek/smart_scraper_multi_deepseek.md deleted file mode 100644 index 9caeb8c2..00000000 --- a/docs/Examples/Deepseek/smart_scraper_multi_deepseek.md +++ /dev/null @@ -1,42 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "verbose": True, -} - - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Deepseek/smart_scraper_schema_deepseek.md b/docs/Examples/Deepseek/smart_scraper_schema_deepseek.md deleted file mode 100644 index 8a1735ed..00000000 --- a/docs/Examples/Deepseek/smart_scraper_schema_deepseek.md +++ /dev/null @@ -1,59 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -from typing import List -from pydantic import BaseModel, Field -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "verbose": True, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Deepseek/xml_scraper_deepseek.md b/docs/Examples/Deepseek/xml_scraper_deepseek.md deleted file mode 100644 index 628e0789..00000000 --- a/docs/Examples/Deepseek/xml_scraper_deepseek.md +++ /dev/null @@ -1,60 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "verbose": True, -} - -# ************************************************ -# Create the XMLScraperGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Deepseek/xml_scraper_graph_multi_deepseek.md b/docs/Examples/Deepseek/xml_scraper_graph_multi_deepseek.md deleted file mode 100644 index 013086a3..00000000 --- a/docs/Examples/Deepseek/xml_scraper_graph_multi_deepseek.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperMultiGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "verbose": True, -} -# ************************************************ -# Create the XMLScraperMultiGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperMultiGraph( - prompt="List me all the authors, title and genres of the books", - source=[text, text], # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Ernie/code_generator_graph_ernie.md b/docs/Examples/Ernie/code_generator_graph_ernie.md deleted file mode 100644 index 623ce5d0..00000000 --- a/docs/Examples/Ernie/code_generator_graph_ernie.md +++ /dev/null @@ -1,62 +0,0 @@ -```python -""" -Basic example of scraping pipeline using Code Generator with schema -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import CodeGeneratorGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1 - }, - "verbose": True, - "headless": False, - "reduction": 2, - "max_iterations": { - "overall": 10, - "syntax": 3, - "execution": 3, - "validation": 3, - "semantic": 3 - }, - "output_file_name": "extracted_data.py" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -code_generator_graph = CodeGeneratorGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = code_generator_graph.run() -print(result) \ No newline at end of file diff --git a/docs/Examples/Ernie/csv_scraper_ernie.md b/docs/Examples/Ernie/csv_scraper_ernie.md deleted file mode 100644 index f893bf6a..00000000 --- a/docs/Examples/Ernie/csv_scraper_ernie.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1 - } -} - -# ************************************************ -# Create the CSVScraperGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperGraph( - prompt="List me all the last names", - source=str(text), # Pass the content of the file, not the file object - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Ernie/custom_graph_ernie.md b/docs/Examples/Ernie/custom_graph_ernie.md deleted file mode 100644 index 6679d32a..00000000 --- a/docs/Examples/Ernie/custom_graph_ernie.md +++ /dev/null @@ -1,107 +0,0 @@ -```python -""" -Example of custom graph using existing nodes -""" -from langchain_openai import OpenAIEmbeddings -from langchain_openai import ChatOpenAI -from scrapegraphai.graphs import BaseGraph -from scrapegraphai.nodes import FetchNode, ParseNode, RAGNode, GenerateAnswerNode, RobotsNode - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1 - } -} - -# ************************************************ -# Define the graph nodes -# ************************************************ - -llm_model = ChatOpenAI(graph_config["llm"]) -embedder = OpenAIEmbeddings(api_key=llm_model.openai_api_key) - -# define the nodes for the graph -robot_node = RobotsNode( - input="url", - output=["is_scrapable"], - node_config={ - "llm_model": llm_model, - "force_scraping": True, - "verbose": True, - } -) - -fetch_node = FetchNode( - input="url | local_dir", - output=["doc"], - node_config={ - "verbose": True, - "headless": True, - } -) -parse_node = ParseNode( - input="doc", - output=["parsed_doc"], - node_config={ - "chunk_size": 4096, - "verbose": True, - } -) -rag_node = RAGNode( - input="user_prompt & (parsed_doc | doc)", - output=["relevant_chunks"], - node_config={ - "llm_model": llm_model, - "embedder_model": embedder, - "verbose": True, - } -) -generate_answer_node = GenerateAnswerNode( - input="user_prompt & (relevant_chunks | parsed_doc | doc)", - output=["answer"], - node_config={ - "llm_model": llm_model, - "verbose": True, - } -) - -# ************************************************ -# Create the graph by defining the connections -# ************************************************ - -graph = BaseGraph( - nodes=[ - robot_node, - fetch_node, - parse_node, - rag_node, - generate_answer_node, - ], - edges=[ - (robot_node, fetch_node), - (fetch_node, parse_node), - (parse_node, rag_node), - (rag_node, generate_answer_node) - ], - entry_point=robot_node -) - -# ************************************************ -# Execute the graph -# ************************************************ - -result, execution_info = graph.execute({ - "user_prompt": "Describe the content", - "url": "https://example.com/" -}) - -# get the answer from the result -result = result.get("answer", "No answer found.") -print(result) diff --git a/docs/Examples/Ernie/depth_search_graph_ernie.md b/docs/Examples/Ernie/depth_search_graph_ernie.md deleted file mode 100644 index 48ce19ef..00000000 --- a/docs/Examples/Ernie/depth_search_graph_ernie.md +++ /dev/null @@ -1,27 +0,0 @@ -```python -""" -depth_search_graph_opeani example -""" -from scrapegraphai.graphs import DepthSearchGraph - -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1 - }, - "verbose": True, - "headless": False, - "depth": 2, - "only_inside_links": False, -} - -search_graph = DepthSearchGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Ernie/json_scraper_ernie.md b/docs/Examples/Ernie/json_scraper_ernie.md deleted file mode 100644 index 56306eed..00000000 --- a/docs/Examples/Ernie/json_scraper_ernie.md +++ /dev/null @@ -1,44 +0,0 @@ -```python -""" -Basic example of scraping pipeline using JSONScraperGraph from JSON documents -""" -import os -from scrapegraphai.graphs import JSONScraperGraph -from scrapegraphai.utils import prettify_exec_info - -# ************************************************ -# Read the JSON file -# ************************************************ - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1 - } -} - -# ************************************************ -# Create the JSONScraperGraph instance and run it -# ************************************************ - -json_scraper_graph = JSONScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = json_scraper_graph.run() -print(result) diff --git a/docs/Examples/Ernie/rate_limit_ernie.md b/docs/Examples/Ernie/rate_limit_ernie.md deleted file mode 100644 index a19ad3dd..00000000 --- a/docs/Examples/Ernie/rate_limit_ernie.md +++ /dev/null @@ -1,48 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with a custom rate limit -""" -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1, - "rate_limit": { - "requests_per_second": 1 - }, - }, - "library": "beautifulsoup" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config, -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Ernie/scrape_plain_text_ernie.md b/docs/Examples/Ernie/scrape_plain_text_ernie.md deleted file mode 100644 index 6733adff..00000000 --- a/docs/Examples/Ernie/scrape_plain_text_ernie.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ - -FILE_NAME = "inputs/plain_html_example.txt" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -# It could be also a http request using the request model -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1 - } -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - source=text, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Ernie/script_generator_ernie.md b/docs/Examples/Ernie/script_generator_ernie.md deleted file mode 100644 index 4f729fe6..00000000 --- a/docs/Examples/Ernie/script_generator_ernie.md +++ /dev/null @@ -1,44 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1 - }, - "library": "beautifulsoup" -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Ernie/script_multi_generator_ernie.md b/docs/Examples/Ernie/script_multi_generator_ernie.md deleted file mode 100644 index 235be684..00000000 --- a/docs/Examples/Ernie/script_multi_generator_ernie.md +++ /dev/null @@ -1,50 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -from scrapegraphai.graphs import ScriptCreatorMultiGraph -from scrapegraphai.utils import prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1 - }, - "library": "beautifulsoup" -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -urls=[ - "https://schultzbergagency.com/emil-raste-karlsen/", - "https://schultzbergagency.com/johanna-hedberg/", -] - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorMultiGraph( - prompt="Find information about actors", - # also accepts a string with the already downloaded HTML code - source=urls, - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Ernie/search_graph_ernie.md b/docs/Examples/Ernie/search_graph_ernie.md deleted file mode 100644 index 52add57e..00000000 --- a/docs/Examples/Ernie/search_graph_ernie.md +++ /dev/null @@ -1,34 +0,0 @@ -```python -""" -Example of Search Graph -""" -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1 - }, - "library": "beautifulsoup" -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Ernie/search_link_graph_ernie.md b/docs/Examples/Ernie/search_link_graph_ernie.md deleted file mode 100644 index 2b5b192b..00000000 --- a/docs/Examples/Ernie/search_link_graph_ernie.md +++ /dev/null @@ -1,43 +0,0 @@ -```python -""" -Example of Search Graph -""" -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1 - }, - "library": "beautifulsoup" -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me the best escursions near Trento", - config=graph_config -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Ernie/smart_scraper_ernie.md b/docs/Examples/Ernie/smart_scraper_ernie.md deleted file mode 100644 index bf665aa2..00000000 --- a/docs/Examples/Ernie/smart_scraper_ernie.md +++ /dev/null @@ -1,41 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1 - }, - "library": "beautifulsoup" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config, -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Ernie/smart_scraper_multi_concat_ernie.md b/docs/Examples/Ernie/smart_scraper_multi_concat_ernie.md deleted file mode 100644 index bc8310af..00000000 --- a/docs/Examples/Ernie/smart_scraper_multi_concat_ernie.md +++ /dev/null @@ -1,36 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import json -from scrapegraphai.graphs import SmartScraperMultiConcatGraph - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1 - }, - "library": "beautifulsoup" -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiConcatGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Ernie/smart_scraper_multi_ernie.md b/docs/Examples/Ernie/smart_scraper_multi_ernie.md deleted file mode 100644 index 3071638d..00000000 --- a/docs/Examples/Ernie/smart_scraper_multi_ernie.md +++ /dev/null @@ -1,42 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1 - }, - "verbose": True, - "headless": False, -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Ernie/smart_scraper_schema_ernie.md b/docs/Examples/Ernie/smart_scraper_schema_ernie.md deleted file mode 100644 index ef2c0249..00000000 --- a/docs/Examples/Ernie/smart_scraper_schema_ernie.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with schema -""" -import json -import os -from typing import Dict -from dotenv import load_dotenv -from pydantic import BaseModel -from scrapegraphai.graphs import SmartScraperGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ -class Project(BaseModel): - title: str - description: str - - -class Projects(BaseModel): - Projects: Dict[str, Project] - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1 - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config, -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Ernie/speech_graph_ernie.md b/docs/Examples/Ernie/speech_graph_ernie.md deleted file mode 100644 index 2a85cb95..00000000 --- a/docs/Examples/Ernie/speech_graph_ernie.md +++ /dev/null @@ -1,59 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SpeechSummaryGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SpeechGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define audio output path -# ************************************************ - -FILE_NAME = "website_summary.mp3" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -output_path = os.path.join(curr_dir, FILE_NAME) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1 - }, - "tts_model": { - "api_key": openai_key, - "model": "tts-1", - "voice": "alloy" - }, - "output_path": output_path, -} - -# ************************************************ -# Create the SpeechGraph instance and run it -# ************************************************ - -speech_graph = SpeechGraph( - prompt="Make a detailed audio summary of the projects.", - source="https://perinim.github.io/projects/", - config=graph_config, -) - -result = speech_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = speech_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Ernie/xml_scraper_ernie.md b/docs/Examples/Ernie/xml_scraper_ernie.md deleted file mode 100644 index 393eb6da..00000000 --- a/docs/Examples/Ernie/xml_scraper_ernie.md +++ /dev/null @@ -1,62 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1 - }, - "verbose":False, -} - -# ************************************************ -# Create the XMLScraperGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") - diff --git a/docs/Examples/Groq/code_generator_graph_groq.md b/docs/Examples/Groq/code_generator_graph_groq.md deleted file mode 100644 index f5df87c0..00000000 --- a/docs/Examples/Groq/code_generator_graph_groq.md +++ /dev/null @@ -1,61 +0,0 @@ -```python -""" -Basic example of scraping pipeline using Code Generator with schema -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import CodeGeneratorGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "verbose": True, - "headless": False, - "reduction": 2, - "max_iterations": { - "overall": 10, - "syntax": 3, - "execution": 3, - "validation": 3, - "semantic": 3 - }, - "output_file_name": "extracted_data.py" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -code_generator_graph = CodeGeneratorGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = code_generator_graph.run() -print(result) diff --git a/docs/Examples/Groq/csv_scraper_graph_multi_groq.md b/docs/Examples/Groq/csv_scraper_graph_multi_groq.md deleted file mode 100644 index bde981e7..00000000 --- a/docs/Examples/Groq/csv_scraper_graph_multi_groq.md +++ /dev/null @@ -1,59 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperMultiGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "headless": False -} - -# ************************************************ -# Create the CSVScraperMultiGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperMultiGraph( - prompt="List me all the last names", - source=[str(text), str(text)], - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Groq/csv_scraper_groq.md b/docs/Examples/Groq/csv_scraper_groq.md deleted file mode 100644 index a0ade8bd..00000000 --- a/docs/Examples/Groq/csv_scraper_groq.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, -} -# ************************************************ -# Create the CSVScraperGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperGraph( - prompt="List me all the last names", - source=str(text), # Pass the content of the file, not the file object - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Groq/custom_graph_groq.md b/docs/Examples/Groq/custom_graph_groq.md deleted file mode 100644 index 1c4fecd6..00000000 --- a/docs/Examples/Groq/custom_graph_groq.md +++ /dev/null @@ -1,100 +0,0 @@ -```python -""" -Example of custom graph using existing nodes -""" -import os -from dotenv import load_dotenv -from langchain_openai import ChatOpenAI -from scrapegraphai.graphs import BaseGraph -from scrapegraphai.nodes import FetchNode, ParseNode, GenerateAnswerNode, RobotsNode -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Define the graph nodes -# ************************************************ - -llm_model = ChatOpenAI(graph_config["llm"]) - -# define the nodes for the graph -robot_node = RobotsNode( - input="url", - output=["is_scrapable"], - node_config={ - "llm_model": llm_model, - "force_scraping": True, - "verbose": True, - } -) - -fetch_node = FetchNode( - input="url | local_dir", - output=["doc"], - node_config={ - "verbose": True, - "headless": True, - } -) -parse_node = ParseNode( - input="doc", - output=["parsed_doc"], - node_config={ - "chunk_size": 4096, - "verbose": True, - } -) - -generate_answer_node = GenerateAnswerNode( - input="user_prompt & (relevant_chunks | parsed_doc | doc)", - output=["answer"], - node_config={ - "llm_model": llm_model, - "verbose": True, - } -) - -# ************************************************ -# Create the graph by defining the connections -# ************************************************ - -graph = BaseGraph( - nodes=[ - robot_node, - fetch_node, - parse_node, - generate_answer_node, - ], - edges=[ - (robot_node, fetch_node), - (fetch_node, parse_node), - (parse_node, generate_answer_node) - ], - entry_point=robot_node -) - -# ************************************************ -# Execute the graph -# ************************************************ - -result, execution_info = graph.execute({ - "user_prompt": "Describe the content", - "url": "https://example.com/" -}) - -# get the answer from the result -result = result.get("answer", "No answer found.") -print(result) diff --git a/docs/Examples/Groq/depth_search_graph_groq.md b/docs/Examples/Groq/depth_search_graph_groq.md deleted file mode 100644 index 9e116d81..00000000 --- a/docs/Examples/Groq/depth_search_graph_groq.md +++ /dev/null @@ -1,32 +0,0 @@ -```python -""" -depth_search_graph_opeani example -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import DepthSearchGraph - -load_dotenv() - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "verbose": True, - "headless": False, - "depth": 2, - "only_inside_links": False, -} - -search_graph = DepthSearchGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Groq/json_scraper_groq.md b/docs/Examples/Groq/json_scraper_groq.md deleted file mode 100644 index fae91fbf..00000000 --- a/docs/Examples/Groq/json_scraper_groq.md +++ /dev/null @@ -1,50 +0,0 @@ -```python -""" -Basic example of scraping pipeline using JSONScraperGraph from JSON documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the JSON file -# ************************************************ - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Create the JSONScraperGraph instance and run it -# ************************************************ - -json_scraper_graph = JSONScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = json_scraper_graph.run() -print(result) diff --git a/docs/Examples/Groq/json_scraper_multi_groq.md b/docs/Examples/Groq/json_scraper_multi_groq.md deleted file mode 100644 index cc66770e..00000000 --- a/docs/Examples/Groq/json_scraper_multi_groq.md +++ /dev/null @@ -1,39 +0,0 @@ -```python -""" -Module for showing how JSONScraperMultiGraph multi works -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperMultiGraph - -load_dotenv() - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "library": "beautifulsoup" -} -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -sources = [text, text] - -multiple_search_graph = JSONScraperMultiGraph( - prompt= "List me all the authors, title and genres of the books", - source= sources, - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Groq/rate_limit_groq.md b/docs/Examples/Groq/rate_limit_groq.md deleted file mode 100644 index 7f50fbef..00000000 --- a/docs/Examples/Groq/rate_limit_groq.md +++ /dev/null @@ -1,49 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0, - "rate_limit": { - "requests_per_second": 1 - } - }, - "headless": False -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Groq/scrape_plain_text_groq.md b/docs/Examples/Groq/scrape_plain_text_groq.md deleted file mode 100644 index 664f816c..00000000 --- a/docs/Examples/Groq/scrape_plain_text_groq.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ - -FILE_NAME = "inputs/plain_html_example.txt" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -# It could be also a http request using the request model -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - source=text, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Groq/script_generator_groq.md b/docs/Examples/Groq/script_generator_groq.md deleted file mode 100644 index a52d69bd..00000000 --- a/docs/Examples/Groq/script_generator_groq.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "library": "beautifulsoup" -} -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/Groq/script_multi_generator_groq.md b/docs/Examples/Groq/script_multi_generator_groq.md deleted file mode 100644 index 87c0d4ef..00000000 --- a/docs/Examples/Groq/script_multi_generator_groq.md +++ /dev/null @@ -1,56 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorMultiGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "library": "beautifulsoup" -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -urls=[ - "https://schultzbergagency.com/emil-raste-karlsen/", - "https://schultzbergagency.com/johanna-hedberg/", -] - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorMultiGraph( - prompt="Find information about actors", - # also accepts a string with the already downloaded HTML code - source=urls, - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Groq/search_graph_groq.md b/docs/Examples/Groq/search_graph_groq.md deleted file mode 100644 index ca327517..00000000 --- a/docs/Examples/Groq/search_graph_groq.md +++ /dev/null @@ -1,41 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "headless": False -} - -search_graph = SearchGraph( - prompt="List me the best escursions near Trento", - config=graph_config -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Groq/search_graph_schema_groq.md b/docs/Examples/Groq/search_graph_schema_groq.md deleted file mode 100644 index 653b6230..00000000 --- a/docs/Examples/Groq/search_graph_schema_groq.md +++ /dev/null @@ -1,63 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Dish(BaseModel): - name: str = Field(description="The name of the dish") - description: str = Field(description="The description of the dish") - -class Dishes(BaseModel): - dishes: List[Dish] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "headless": False -} - - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config, - schema=Dishes -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Groq/search_link_graph_groq.md b/docs/Examples/Groq/search_link_graph_groq.md deleted file mode 100644 index 5aafc92f..00000000 --- a/docs/Examples/Groq/search_link_graph_groq.md +++ /dev/null @@ -1,48 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -load_dotenv() - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "headless": False -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me the best escursions near Trento", - config=graph_config -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Groq/smart_scraper_groq.md b/docs/Examples/Groq/smart_scraper_groq.md deleted file mode 100644 index 66f4d011..00000000 --- a/docs/Examples/Groq/smart_scraper_groq.md +++ /dev/null @@ -1,46 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Groq/smart_scraper_multi_concat_groq.md b/docs/Examples/Groq/smart_scraper_multi_concat_groq.md deleted file mode 100644 index 003dd845..00000000 --- a/docs/Examples/Groq/smart_scraper_multi_concat_groq.md +++ /dev/null @@ -1,42 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiConcatGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "headless": False -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiConcatGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Groq/smart_scraper_multi_groq.md b/docs/Examples/Groq/smart_scraper_multi_groq.md deleted file mode 100644 index 8dc1644a..00000000 --- a/docs/Examples/Groq/smart_scraper_multi_groq.md +++ /dev/null @@ -1,42 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "verbose": True, - "headless": False -} -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Groq/smart_scraper_schema_groq.md b/docs/Examples/Groq/smart_scraper_schema_groq.md deleted file mode 100644 index a372dc64..00000000 --- a/docs/Examples/Groq/smart_scraper_schema_groq.md +++ /dev/null @@ -1,60 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with schema -""" -import os -from typing import List -from pydantic import BaseModel, Field -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "headless": False -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Groq/xml_scraper_graph_multi_groq.md b/docs/Examples/Groq/xml_scraper_graph_multi_groq.md deleted file mode 100644 index 25d67453..00000000 --- a/docs/Examples/Groq/xml_scraper_graph_multi_groq.md +++ /dev/null @@ -1,60 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperMultiGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "headless": False -} - -# ************************************************ -# Create the XMLScraperMultiGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperMultiGraph( - prompt="List me all the authors, title and genres of the books", - source=[text, text], # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Groq/xml_scraper_groq.md b/docs/Examples/Groq/xml_scraper_groq.md deleted file mode 100644 index 49e692be..00000000 --- a/docs/Examples/Groq/xml_scraper_groq.md +++ /dev/null @@ -1,61 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "verbose": True, - "headless": False -} -# ************************************************ -# Create the XMLScraperGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") - diff --git a/docs/Examples/Mistral/code_generator_graph_mistral.md b/docs/Examples/Mistral/code_generator_graph_mistral.md deleted file mode 100644 index 792a5302..00000000 --- a/docs/Examples/Mistral/code_generator_graph_mistral.md +++ /dev/null @@ -1,60 +0,0 @@ -```python -""" -Basic example of scraping pipeline using Code Generator with schema -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import CodeGeneratorGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, - "verbose": True, - "headless": False, - "reduction": 2, - "max_iterations": { - "overall": 10, - "syntax": 3, - "execution": 3, - "validation": 3, - "semantic": 3 - }, - "output_file_name": "extracted_data.py" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -code_generator_graph = CodeGeneratorGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = code_generator_graph.run() -print(result) diff --git a/docs/Examples/Mistral/csv_scraper_graph_multi_mistral.md b/docs/Examples/Mistral/csv_scraper_graph_multi_mistral.md deleted file mode 100644 index 45016459..00000000 --- a/docs/Examples/Mistral/csv_scraper_graph_multi_mistral.md +++ /dev/null @@ -1,57 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperMultiGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, -} - -# ************************************************ -# Create the CSVScraperMultiGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperMultiGraph( - prompt="List me all the last names", - source=[str(text), str(text)], - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Mistral/csv_scraper_mistral.md b/docs/Examples/Mistral/csv_scraper_mistral.md deleted file mode 100644 index c6309743..00000000 --- a/docs/Examples/Mistral/csv_scraper_mistral.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, -} - -# ************************************************ -# Create the CSVScraperGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperGraph( - prompt="List me all the last names", - source=str(text), # Pass the content of the file, not the file object - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Mistral/custom_graph_mistral.md b/docs/Examples/Mistral/custom_graph_mistral.md deleted file mode 100644 index 3d566343..00000000 --- a/docs/Examples/Mistral/custom_graph_mistral.md +++ /dev/null @@ -1,109 +0,0 @@ -```python -""" -Example of custom graph using existing nodes -""" -import os -from dotenv import load_dotenv -from langchain_mistralai import ChatMistralAI, MistralAIEmbeddings -from scrapegraphai.graphs import BaseGraph -from scrapegraphai.nodes import FetchNode, ParseNode, RAGNode, GenerateAnswerNode, RobotsNode - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, -} - -# ************************************************ -# Define the graph nodes -# ************************************************ - -llm_model = ChatMistralAI(**graph_config["llm"]) -embedder = MistralAIEmbeddings(api_key=llm_model.mistral_api_key) - -# define the nodes for the graph -robot_node = RobotsNode( - input="url", - output=["is_scrapable"], - node_config={ - "llm_model": llm_model, - "force_scraping": True, - "verbose": True, - } -) - -fetch_node = FetchNode( - input="url | local_dir", - output=["doc"], - node_config={ - "verbose": True, - "headless": True, - } -) -parse_node = ParseNode( - input="doc", - output=["parsed_doc"], - node_config={ - "chunk_size": 4096, - "verbose": True, - } -) -rag_node = RAGNode( - input="user_prompt & (parsed_doc | doc)", - output=["relevant_chunks"], - node_config={ - "llm_model": llm_model, - "embedder_model": embedder, - "verbose": True, - } -) -generate_answer_node = GenerateAnswerNode( - input="user_prompt & (relevant_chunks | parsed_doc | doc)", - output=["answer"], - node_config={ - "llm_model": llm_model, - "verbose": True, - } -) - -# ************************************************ -# Create the graph by defining the connections -# ************************************************ - -graph = BaseGraph( - nodes=[ - robot_node, - fetch_node, - parse_node, - rag_node, - generate_answer_node, - ], - edges=[ - (robot_node, fetch_node), - (fetch_node, parse_node), - (parse_node, rag_node), - (rag_node, generate_answer_node) - ], - entry_point=robot_node -) - -# ************************************************ -# Execute the graph -# ************************************************ - -result, execution_info = graph.execute({ - "user_prompt": "Describe the content", - "url": "https://example.com/" -}) - -# get the answer from the result -result = result.get("answer", "No answer found.") -print(result) diff --git a/docs/Examples/Mistral/depth_search_graph_mistral.md b/docs/Examples/Mistral/depth_search_graph_mistral.md deleted file mode 100644 index 9855215f..00000000 --- a/docs/Examples/Mistral/depth_search_graph_mistral.md +++ /dev/null @@ -1,31 +0,0 @@ -```python -""" -depth_search_graph_opeani example -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import DepthSearchGraph - -load_dotenv() - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, - "verbose": True, - "headless": False, - "depth": 2, - "only_inside_links": False, -} - -search_graph = DepthSearchGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Mistral/json_scraper_mistral.md b/docs/Examples/Mistral/json_scraper_mistral.md deleted file mode 100644 index 74b61d25..00000000 --- a/docs/Examples/Mistral/json_scraper_mistral.md +++ /dev/null @@ -1,47 +0,0 @@ -```python -""" -Basic example of scraping pipeline using JSONScraperGraph from JSON documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the JSON file -# ************************************************ - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, -} - -# ************************************************ -# Create the JSONScraperGraph instance and run it -# ************************************************ - -json_scraper_graph = JSONScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = json_scraper_graph.run() -print(result) diff --git a/docs/Examples/Mistral/json_scraper_multi_mistral.md b/docs/Examples/Mistral/json_scraper_multi_mistral.md deleted file mode 100644 index 54a4bd2e..00000000 --- a/docs/Examples/Mistral/json_scraper_multi_mistral.md +++ /dev/null @@ -1,38 +0,0 @@ -```python -""" -Module for showing how PDFScraper multi works -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperMultiGraph - -load_dotenv() - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - } -} - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -sources = [text, text] - -multiple_search_graph = JSONScraperMultiGraph( - prompt= "List me all the authors, title and genres of the books", - source= sources, - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Mistral/md_scraper_mistral.md b/docs/Examples/Mistral/md_scraper_mistral.md deleted file mode 100644 index 67a2a5bf..00000000 --- a/docs/Examples/Mistral/md_scraper_mistral.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using DocumentScraperGraph from MD documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the MD file -# ************************************************ - -FILE_NAME = "inputs/markdown_example.md" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, -} - -# ************************************************ -# Create the DocumentScraperGraph instance and run it -# ************************************************ - -md_scraper_graph = DocumentScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = md_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = md_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Mistral/rate_limit_mistral.md b/docs/Examples/Mistral/rate_limit_mistral.md deleted file mode 100644 index 3a930d61..00000000 --- a/docs/Examples/Mistral/rate_limit_mistral.md +++ /dev/null @@ -1,40 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with a custom rate limit -""" -import os -import json -from scrapegraphai.graphs import SmartScraperGraph -from dotenv import load_dotenv - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "api_key": os.getenv("MISTRAL_API_KEY"), - "model": "mistralai/open-mistral-nemo", - "rate_limit": { - "requests_per_second": 1 - } - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me what does the company do, the name and a contact email.", - source="https://scrapegraphai.com/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Mistral/readme.md b/docs/Examples/Mistral/readme.md deleted file mode 100644 index daa88f49..00000000 --- a/docs/Examples/Mistral/readme.md +++ /dev/null @@ -1,2 +0,0 @@ -```python -This folder contains examples of how to use ScrapeGraph-AI with Mistral, an LLM provider. The examples show how to extract information from a website using a natural language prompt. \ No newline at end of file diff --git a/docs/Examples/Mistral/scrape_plain_text_mistral.md b/docs/Examples/Mistral/scrape_plain_text_mistral.md deleted file mode 100644 index f85b9bb5..00000000 --- a/docs/Examples/Mistral/scrape_plain_text_mistral.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ - -FILE_NAME = "inputs/plain_html_example.txt" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -# It could be also a http request using the request model -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - source=text, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Mistral/script_generator_mistral.md b/docs/Examples/Mistral/script_generator_mistral.md deleted file mode 100644 index 25076407..00000000 --- a/docs/Examples/Mistral/script_generator_mistral.md +++ /dev/null @@ -1,46 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, - "library": "beautifulsoup" -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/Mistral/script_generator_schema_mistral.md b/docs/Examples/Mistral/script_generator_schema_mistral.md deleted file mode 100644 index d2dcfefc..00000000 --- a/docs/Examples/Mistral/script_generator_schema_mistral.md +++ /dev/null @@ -1,62 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info -from pydantic import BaseModel, Field -from typing import List - -load_dotenv() - -# ************************************************ -# Define the schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, - "library": "beautifulsoup", - "verbose": True, -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config, - schema=Projects -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/Mistral/script_multi_generator_mistral.md b/docs/Examples/Mistral/script_multi_generator_mistral.md deleted file mode 100644 index 23f070e6..00000000 --- a/docs/Examples/Mistral/script_multi_generator_mistral.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorMultiGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, - "library": "beautifulsoup", - "verbose": True, -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -urls=[ - "https://schultzbergagency.com/emil-raste-karlsen/", - "https://schultzbergagency.com/johanna-hedberg/", -] - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorMultiGraph( - prompt="Find information about actors", - # also accepts a string with the already downloaded HTML code - source=urls, - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Mistral/search_graph_mistral.md b/docs/Examples/Mistral/search_graph_mistral.md deleted file mode 100644 index e651452e..00000000 --- a/docs/Examples/Mistral/search_graph_mistral.md +++ /dev/null @@ -1,36 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, - "max_results": 2, - "verbose": True, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Mistral/search_graph_schema_mistral.md b/docs/Examples/Mistral/search_graph_schema_mistral.md deleted file mode 100644 index 3ceb16e2..00000000 --- a/docs/Examples/Mistral/search_graph_schema_mistral.md +++ /dev/null @@ -1,62 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Dish(BaseModel): - name: str = Field(description="The name of the dish") - description: str = Field(description="The description of the dish") - -class Dishes(BaseModel): - dishes: List[Dish] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, - "max_results": 2, - "verbose": True, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config, - schema=Dishes -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Mistral/search_link_graph_mistral.md b/docs/Examples/Mistral/search_link_graph_mistral.md deleted file mode 100644 index 46f108c0..00000000 --- a/docs/Examples/Mistral/search_link_graph_mistral.md +++ /dev/null @@ -1,43 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchLinkGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SearchLinkGraph instance and run it -# ************************************************ - -smart_scraper_graph = SearchLinkGraph( - source="https://sport.sky.it/nba?gr=www", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Mistral/smart_scraper_mistral.md b/docs/Examples/Mistral/smart_scraper_mistral.md deleted file mode 100644 index 047d98cf..00000000 --- a/docs/Examples/Mistral/smart_scraper_mistral.md +++ /dev/null @@ -1,37 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "api_key": os.getenv("MISTRAL_API_KEY"), - "model": "mistralai/open-mistral-nemo", - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me what does the company do, the name and a contact email.", - source="https://scrapegraphai.com/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Mistral/smart_scraper_multi_concat_mistral.md b/docs/Examples/Mistral/smart_scraper_multi_concat_mistral.md deleted file mode 100644 index 124eb357..00000000 --- a/docs/Examples/Mistral/smart_scraper_multi_concat_mistral.md +++ /dev/null @@ -1,39 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiConcatGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -graph_config = { - "llm": { - "api_key": os.getenv("MISTRAL_API_KEY"), - "model": "mistralai/open-mistral-nemo", - }, - "verbose": True, - "headless": False, -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiConcatGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Mistral/smart_scraper_multi_mistral.md b/docs/Examples/Mistral/smart_scraper_multi_mistral.md deleted file mode 100644 index ec2c68a0..00000000 --- a/docs/Examples/Mistral/smart_scraper_multi_mistral.md +++ /dev/null @@ -1,42 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, - "verbose": True, - "headless": False, -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Mistral/smart_scraper_schema_mistral.md b/docs/Examples/Mistral/smart_scraper_schema_mistral.md deleted file mode 100644 index 98128fcf..00000000 --- a/docs/Examples/Mistral/smart_scraper_schema_mistral.md +++ /dev/null @@ -1,51 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with schema -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import SmartScraperGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key":mistral_key, - "model": "mistralai/open-mistral-nemo", - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) diff --git a/docs/Examples/Mistral/xml_scraper_graph_multi_mistral.md b/docs/Examples/Mistral/xml_scraper_graph_multi_mistral.md deleted file mode 100644 index cd76879a..00000000 --- a/docs/Examples/Mistral/xml_scraper_graph_multi_mistral.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperMultiGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key":mistral_key, - "model": "mistralai/open-mistral-nemo", - }, - "verbose": True, - "headless": False, -} -# ************************************************ -# Create the XMLScraperMultiGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperMultiGraph( - prompt="List me all the authors, title and genres of the books", - source=[text, text], # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Mistral/xml_scraper_mistral.md b/docs/Examples/Mistral/xml_scraper_mistral.md deleted file mode 100644 index d52bd314..00000000 --- a/docs/Examples/Mistral/xml_scraper_mistral.md +++ /dev/null @@ -1,59 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, - "verbose":False, -} - -# ************************************************ -# Create the XMLScraperGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Nemotron/code_generator_graph_nemotron.md b/docs/Examples/Nemotron/code_generator_graph_nemotron.md deleted file mode 100644 index a0130289..00000000 --- a/docs/Examples/Nemotron/code_generator_graph_nemotron.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using Code Generator with schema -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import CodeGeneratorGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("NEMOTRON_APIKEY"), - "model": "nvidia/meta/llama3-70b-instruct", - }, - "verbose": True, - "headless": False, - "reduction": 2, - "max_iterations": { - "overall": 10, - "syntax": 3, - "execution": 3, - "validation": 3, - "semantic": 3 - }, - "output_file_name": "extracted_data.py" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -code_generator_graph = CodeGeneratorGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = code_generator_graph.run() -print(result) diff --git a/docs/Examples/Nemotron/csv_scraper_graph_multi_nemotron.md b/docs/Examples/Nemotron/csv_scraper_graph_multi_nemotron.md deleted file mode 100644 index 51ebcd94..00000000 --- a/docs/Examples/Nemotron/csv_scraper_graph_multi_nemotron.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperMultiGraph from CSV documents -""" -import os -import pandas as pd -from dotenv import load_dotenv -from scrapegraphai.graphs import CSVScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("NEMOTRON_APIKEY"), - "model": "nvidia/meta/llama3-70b-instruct", - } -} - -# ************************************************ -# Create the CSVScraperMultiGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperMultiGraph( - prompt="List me all the last names", - source=[str(text), str(text)], - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Nemotron/csv_scraper_nemotron.md b/docs/Examples/Nemotron/csv_scraper_nemotron.md deleted file mode 100644 index 5b8a4876..00000000 --- a/docs/Examples/Nemotron/csv_scraper_nemotron.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -nemotron_key = os.getenv("NEMOTRON_APIKEY") - -graph_config = { - "llm": { - "api_key": nemotron_key, - "model": "nvidia/meta/llama3-70b-instruct", - }, -} - -# ************************************************ -# Create the CSVScraperGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperGraph( - prompt="List me all the last names", - source=str(text), # Pass the content of the file, not the file object - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Nemotron/depth_search_graph_nemotron.md b/docs/Examples/Nemotron/depth_search_graph_nemotron.md deleted file mode 100644 index ed90e987..00000000 --- a/docs/Examples/Nemotron/depth_search_graph_nemotron.md +++ /dev/null @@ -1,31 +0,0 @@ -```python -""" -depth_search_graph_opeani example -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import DepthSearchGraph - -load_dotenv() - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": os.getenv("NEMOTRON_KEY"), - "model": "claude-3-haiku-20240307", - }, - "verbose": True, - "headless": False, - "depth": 2, - "only_inside_links": False, -} - -search_graph = DepthSearchGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Nemotron/json_scraper_multi_nemotron.md b/docs/Examples/Nemotron/json_scraper_multi_nemotron.md deleted file mode 100644 index 5c475623..00000000 --- a/docs/Examples/Nemotron/json_scraper_multi_nemotron.md +++ /dev/null @@ -1,38 +0,0 @@ -```python -""" -Module for showing how PDFScraper multi works -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperMultiGraph - -load_dotenv() - -nemotron_key = os.getenv("NEMOTRON_APIKEY") - -graph_config = { - "llm": { - "api_key": nemotron_key, - "model": "nvidia/meta/llama3-70b-instruct", - }, -} - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -sources = [text, text] - -multiple_search_graph = JSONScraperMultiGraph( - prompt= "List me all the authors, title and genres of the books", - source= sources, - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Nemotron/json_scraper_nemotron.md b/docs/Examples/Nemotron/json_scraper_nemotron.md deleted file mode 100644 index 0c78ff89..00000000 --- a/docs/Examples/Nemotron/json_scraper_nemotron.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using JSONScraperGraph from JSON documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the JSON file -# ************************************************ - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -nemotron_key = os.getenv("NEMOTRON_APIKEY") - -graph_config = { - "llm": { - "api_key": nemotron_key, - "model": "nvidia/meta/llama3-70b-instruct", - }, -} - -# ************************************************ -# Create the JSONScraperGraph instance and run it -# ************************************************ - -json_scraper_graph = JSONScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = json_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = json_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Nemotron/md_scraper_nemotron.md b/docs/Examples/Nemotron/md_scraper_nemotron.md deleted file mode 100644 index a5802592..00000000 --- a/docs/Examples/Nemotron/md_scraper_nemotron.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using DocumentScraperGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/markdown_example.md" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -nemotron_key = os.getenv("NEMOTRON_APIKEY") - -graph_config = { - "llm": { - "api_key": nemotron_key, - "model": "nvidia/meta/llama3-70b-instruct", - }, -} - -# ************************************************ -# Create the DocumentScraperGraph instance and run it -# ************************************************ - -md_scraper_graph = DocumentScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = md_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = md_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Nemotron/rate_limit_nemotron.md b/docs/Examples/Nemotron/rate_limit_nemotron.md deleted file mode 100644 index ff549deb..00000000 --- a/docs/Examples/Nemotron/rate_limit_nemotron.md +++ /dev/null @@ -1,48 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with a custom rate limit -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "api_key": os.getenv("NEMOTRON_KEY"), - "model": "nvidia/meta/llama3-70b-instruct", - "rate_limit": { - "requests_per_second": 1 - } - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="Extract me the python code inside the page", - source="https://www.exploit-db.com/exploits/51447", - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Nemotron/scrape_plain_text_nemotron.md b/docs/Examples/Nemotron/scrape_plain_text_nemotron.md deleted file mode 100644 index d197c6d1..00000000 --- a/docs/Examples/Nemotron/scrape_plain_text_nemotron.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ - -FILE_NAME = "inputs/plain_html_example.txt" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -# It could be also a http request using the request model -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -nemotron_key = os.getenv("NEMOTRON_APIKEY") - -graph_config = { - "llm": { - "api_key": nemotron_key, - "model": "nvidia/meta/llama3-70b-instruct", - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - source=text, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Nemotron/script_generator_nemotron.md b/docs/Examples/Nemotron/script_generator_nemotron.md deleted file mode 100644 index dfaa956a..00000000 --- a/docs/Examples/Nemotron/script_generator_nemotron.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -nemotron_key = os.getenv("NEMOTRON_APIKEY") - -graph_config = { - "llm": { - "api_key": nemotron_key, - "model": "nvidia/meta/llama3-70b-instruct", - }, - "library": "beautifulsoup" -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Nemotron/script_generator_schema_nemotron.md b/docs/Examples/Nemotron/script_generator_schema_nemotron.md deleted file mode 100644 index f82d26da..00000000 --- a/docs/Examples/Nemotron/script_generator_schema_nemotron.md +++ /dev/null @@ -1,60 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from typing import List -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -nemotron_key = os.getenv("NEMOTRON_APIKEY") - -graph_config = { - "llm": { - "api_key": nemotron_key, - "model": "nvidia/meta/llama3-70b-instruct", - }, - "library": "beautifulsoup", - "verbose": True, -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config, - schema=Projects -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Nemotron/script_multi_generator_nemotron.md b/docs/Examples/Nemotron/script_multi_generator_nemotron.md deleted file mode 100644 index 0bdd467a..00000000 --- a/docs/Examples/Nemotron/script_multi_generator_nemotron.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorMultiGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -nemotron_key = os.getenv("NEMOTRON_APIKEY") - -graph_config = { - "llm": { - "api_key": nemotron_key, - "model": "nvidia/meta/llama3-70b-instruct", - }, - "library": "beautifulsoup", - "verbose": True, -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -urls=[ - "https://schultzbergagency.com/emil-raste-karlsen/", - "https://schultzbergagency.com/johanna-hedberg/", -] - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorMultiGraph( - prompt="Find information about actors", - # also accepts a string with the already downloaded HTML code - source=urls, - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Nemotron/search_graph_nemotron.md b/docs/Examples/Nemotron/search_graph_nemotron.md deleted file mode 100644 index 28b33621..00000000 --- a/docs/Examples/Nemotron/search_graph_nemotron.md +++ /dev/null @@ -1,36 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -nemotron_key = os.getenv("NEMOTRON_APIKEY") - -graph_config = { - "llm": { - "api_key": nemotron_key, - "model": "nvidia/meta/llama3-70b-instruct", - }, - "max_results": 2, - "verbose": True, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Nemotron/search_graph_schema_nemotron.md b/docs/Examples/Nemotron/search_graph_schema_nemotron.md deleted file mode 100644 index a0532381..00000000 --- a/docs/Examples/Nemotron/search_graph_schema_nemotron.md +++ /dev/null @@ -1,63 +0,0 @@ -```python -""" -Example of Search Graph -""" - -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Dish(BaseModel): - name: str = Field(description="The name of the dish") - description: str = Field(description="The description of the dish") - -class Dishes(BaseModel): - dishes: List[Dish] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -nemotron_key = os.getenv("NEMOTRON_APIKEY") - -graph_config = { - "llm": { - "api_key": nemotron_key, - "model": "nvidia/meta/llama3-70b-instruct", - }, - "max_results": 2, - "verbose": True, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config, - schema=Dishes -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Nemotron/search_link_graph_nemotron.md b/docs/Examples/Nemotron/search_link_graph_nemotron.md deleted file mode 100644 index 70dfa4fb..00000000 --- a/docs/Examples/Nemotron/search_link_graph_nemotron.md +++ /dev/null @@ -1,42 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchLinkGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("NEMOTRON_APIKEY"), - "model": "nvidia/meta/llama3-70b-instruct", - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SearchLinkGraph instance and run it -# ************************************************ - -smart_scraper_graph = SearchLinkGraph( - source="https://sport.sky.it/nba?gr=www", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Nemotron/smart_scraper_multi_concat_nemotron.md b/docs/Examples/Nemotron/smart_scraper_multi_concat_nemotron.md deleted file mode 100644 index 09fb055d..00000000 --- a/docs/Examples/Nemotron/smart_scraper_multi_concat_nemotron.md +++ /dev/null @@ -1,39 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiConcatGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("NEMOTRON_APIKEY"), - "model": "nvidia/meta/llama3-70b-instruct", - }, - "verbose": True, - "headless": False, -} -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiConcatGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Nemotron/smart_scraper_multi_nemotron.md b/docs/Examples/Nemotron/smart_scraper_multi_nemotron.md deleted file mode 100644 index 5c7393b7..00000000 --- a/docs/Examples/Nemotron/smart_scraper_multi_nemotron.md +++ /dev/null @@ -1,42 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -nemotron_key = os.getenv("NEMOTRON_APIKEY") - -graph_config = { - "llm": { - "api_key": nemotron_key, - "model": "nvidia/meta/llama3-70b-instruct", - }, - "verbose": True, - "headless": False, -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Nemotron/smart_scraper_nemotron.md b/docs/Examples/Nemotron/smart_scraper_nemotron.md deleted file mode 100644 index 2096f9d1..00000000 --- a/docs/Examples/Nemotron/smart_scraper_nemotron.md +++ /dev/null @@ -1,46 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "api_key": os.getenv("NEMOTRON_KEY"), - "model": "nvidia/meta/llama3-70b-instruct", - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="Extract me the python code inside the page", - source="https://www.exploit-db.com/exploits/51447", - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Nemotron/smart_scraper_schema_nemotron.md b/docs/Examples/Nemotron/smart_scraper_schema_nemotron.md deleted file mode 100644 index 9f471e92..00000000 --- a/docs/Examples/Nemotron/smart_scraper_schema_nemotron.md +++ /dev/null @@ -1,51 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with schema -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import SmartScraperGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -nemotron_key = os.getenv("NEMOTRON_APIKEY") - -graph_config = { - "llm": { - "api_key":nemotron_key, - "model": "nvidia/meta/llama3-70b-instruct", - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) diff --git a/docs/Examples/Nemotron/speech_graph_nemotron.md b/docs/Examples/Nemotron/speech_graph_nemotron.md deleted file mode 100644 index 05c0b157..00000000 --- a/docs/Examples/Nemotron/speech_graph_nemotron.md +++ /dev/null @@ -1,51 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SpeechSummaryGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SpeechGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define audio output path -# ************************************************ - -FILE_NAME = "website_summary.mp3" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -output_path = os.path.join(curr_dir, FILE_NAME) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -nemotron_key = os.getenv("NEMOTRON_APIKEY") - -graph_config = { - "llm": { - "api_key": nemotron_key, - "model": "nvidia/meta/llama3-70b-instruct", - }, -} - -# ************************************************ -# Create the SpeechGraph instance and run it -# ************************************************ - -speech_graph = SpeechGraph( - prompt="Make a detailed audio summary of the projects.", - source="https://perinim.github.io/projects/", - config=graph_config, -) - -result = speech_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = speech_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Nemotron/xml_scraper_graph_nemotron.md b/docs/Examples/Nemotron/xml_scraper_graph_nemotron.md deleted file mode 100644 index 76ff63e3..00000000 --- a/docs/Examples/Nemotron/xml_scraper_graph_nemotron.md +++ /dev/null @@ -1,61 +0,0 @@ -```python -""" - -Basic example of scraping pipeline using XMLScraperMultiGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -nemotron_key = os.getenv("NEMOTRON_APIKEY") - -graph_config = { - "llm": { - "api_key":nemotron_key, - "model": "nvidia/meta/llama3-70b-instruct", - }, - "verbose": True, - "headless": False, -} -# ************************************************ -# Create the XMLScraperMultiGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperMultiGraph( - prompt="List me all the authors, title and genres of the books", - source=[text, text], # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Nemotron/xml_scraper_nemotron.md b/docs/Examples/Nemotron/xml_scraper_nemotron.md deleted file mode 100644 index ecbd8bb1..00000000 --- a/docs/Examples/Nemotron/xml_scraper_nemotron.md +++ /dev/null @@ -1,60 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -nemotron_key = os.getenv("NEMOTRON_APIKEY") - -graph_config = { - "llm": { - "api_key": nemotron_key, - "model": "nvidia/meta/llama3-70b-instruct", - }, - "verbose":False, -} - -# ************************************************ -# Create the XMLScraperGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") - diff --git a/docs/Examples/Oneapi/code_generator_graph_oneapi.md b/docs/Examples/Oneapi/code_generator_graph_oneapi.md deleted file mode 100644 index 937c72ca..00000000 --- a/docs/Examples/Oneapi/code_generator_graph_oneapi.md +++ /dev/null @@ -1,61 +0,0 @@ -```python -""" -Basic example of scraping pipeline using Code Generator with schema -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import CodeGeneratorGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - }, - "verbose": True, - "headless": False, - "reduction": 2, - "max_iterations": { - "overall": 10, - "syntax": 3, - "execution": 3, - "validation": 3, - "semantic": 3 - }, - "output_file_name": "extracted_data.py" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -code_generator_graph = CodeGeneratorGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = code_generator_graph.run() -print(result) \ No newline at end of file diff --git a/docs/Examples/Oneapi/csv_scraper_graph_multi_oneapi.md b/docs/Examples/Oneapi/csv_scraper_graph_multi_oneapi.md deleted file mode 100644 index 5ad816ea..00000000 --- a/docs/Examples/Oneapi/csv_scraper_graph_multi_oneapi.md +++ /dev/null @@ -1,57 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperMultiGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - } -} - -# ************************************************ -# Create the CSVScraperMultiGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperMultiGraph( - prompt="List me all the last names", - source=[str(text), str(text)], - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Oneapi/csv_scraper_oneapi.md b/docs/Examples/Oneapi/csv_scraper_oneapi.md deleted file mode 100644 index 0ecfada2..00000000 --- a/docs/Examples/Oneapi/csv_scraper_oneapi.md +++ /dev/null @@ -1,56 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info -load_dotenv() - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - } -} - -# ************************************************ -# Create the CSVScraperGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperGraph( - prompt="List me all the last names", - source=str(text), # Pass the content of the file, not the file object - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Oneapi/custom_graph_oneapi.md b/docs/Examples/Oneapi/custom_graph_oneapi.md deleted file mode 100644 index 02f29cef..00000000 --- a/docs/Examples/Oneapi/custom_graph_oneapi.md +++ /dev/null @@ -1,106 +0,0 @@ -```python -""" -Example of custom graph using existing nodes -""" -from langchain_openai import OpenAIEmbeddings -from langchain_openai import ChatOpenAI -from scrapegraphai.graphs import BaseGraph -from scrapegraphai.nodes import FetchNode, ParseNode, RAGNode, GenerateAnswerNode, RobotsNode - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - } -} - -# ************************************************ -# Define the graph nodes -# ************************************************ - -llm_model = ChatOpenAI(graph_config["llm"]) -embedder = OpenAIEmbeddings(api_key=llm_model.openai_api_key) - -# define the nodes for the graph -robot_node = RobotsNode( - input="url", - output=["is_scrapable"], - node_config={ - "llm_model": llm_model, - "force_scraping": True, - "verbose": True, - } -) - -fetch_node = FetchNode( - input="url | local_dir", - output=["doc"], - node_config={ - "verbose": True, - "headless": True, - } -) -parse_node = ParseNode( - input="doc", - output=["parsed_doc"], - node_config={ - "chunk_size": 4096, - "verbose": True, - } -) -rag_node = RAGNode( - input="user_prompt & (parsed_doc | doc)", - output=["relevant_chunks"], - node_config={ - "llm_model": llm_model, - "embedder_model": embedder, - "verbose": True, - } -) -generate_answer_node = GenerateAnswerNode( - input="user_prompt & (relevant_chunks | parsed_doc | doc)", - output=["answer"], - node_config={ - "llm_model": llm_model, - "verbose": True, - } -) - -# ************************************************ -# Create the graph by defining the connections -# ************************************************ - -graph = BaseGraph( - nodes=[ - robot_node, - fetch_node, - parse_node, - rag_node, - generate_answer_node, - ], - edges=[ - (robot_node, fetch_node), - (fetch_node, parse_node), - (parse_node, rag_node), - (rag_node, generate_answer_node) - ], - entry_point=robot_node -) - -# ************************************************ -# Execute the graph -# ************************************************ - -result, execution_info = graph.execute({ - "user_prompt": "Describe the content", - "url": "https://example.com/" -}) - -# get the answer from the result -result = result.get("answer", "No answer found.") -print(result) diff --git a/docs/Examples/Oneapi/depth_search_graph_onenapi.md b/docs/Examples/Oneapi/depth_search_graph_onenapi.md deleted file mode 100644 index e1291d55..00000000 --- a/docs/Examples/Oneapi/depth_search_graph_onenapi.md +++ /dev/null @@ -1,32 +0,0 @@ -```python -""" -depth_search_graph_opeani example -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import DepthSearchGraph - -load_dotenv() - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - }, - "verbose": True, - "headless": False, - "depth": 2, - "only_inside_links": False, -} - -search_graph = DepthSearchGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Oneapi/json_scraper_multi_oneapi.md b/docs/Examples/Oneapi/json_scraper_multi_oneapi.md deleted file mode 100644 index 7e6f6425..00000000 --- a/docs/Examples/Oneapi/json_scraper_multi_oneapi.md +++ /dev/null @@ -1,34 +0,0 @@ -```python -""" -Module for showing how PDFScraper multi works -""" -import os -import json -from scrapegraphai.graphs import JSONScraperMultiGraph - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - } -} - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -sources = [text, text] - -multiple_search_graph = JSONScraperMultiGraph( - prompt= "List me all the authors, title and genres of the books", - source= sources, - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Oneapi/json_scraper_oneapi.md b/docs/Examples/Oneapi/json_scraper_oneapi.md deleted file mode 100644 index 7dcfc48b..00000000 --- a/docs/Examples/Oneapi/json_scraper_oneapi.md +++ /dev/null @@ -1,54 +0,0 @@ -```python -""" -Basic example of scraping pipeline using JSONScraperGraph from JSON documents -""" -import os -from scrapegraphai.graphs import JSONScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -# ************************************************ -# Read the JSON file -# ************************************************ - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - } -} - -# ************************************************ -# Create the JSONScraperGraph instance and run it -# ************************************************ - -json_scraper_graph = JSONScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = json_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = json_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Oneapi/rate_limit_oneapi.md b/docs/Examples/Oneapi/rate_limit_oneapi.md deleted file mode 100644 index 438e9f47..00000000 --- a/docs/Examples/Oneapi/rate_limit_oneapi.md +++ /dev/null @@ -1,42 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with a custom rate limit -""" -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - "rate_limit": { - "requests_per_second": 1 - } - } -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the titles", - # also accepts a string with the already downloaded HTML code - source="https://www.wired.com/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Oneapi/scrape_plain_text_oneapi.md b/docs/Examples/Oneapi/scrape_plain_text_oneapi.md deleted file mode 100644 index f49a45ec..00000000 --- a/docs/Examples/Oneapi/scrape_plain_text_oneapi.md +++ /dev/null @@ -1,54 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ - -FILE_NAME = "inputs/plain_html_example.txt" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -# It could be also a http request using the request model -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - } -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - source=text, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Oneapi/script_generator_oneapi.md b/docs/Examples/Oneapi/script_generator_oneapi.md deleted file mode 100644 index f924be01..00000000 --- a/docs/Examples/Oneapi/script_generator_oneapi.md +++ /dev/null @@ -1,44 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - }, - "library": "beautifulsoup" -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/Oneapi/script_multi_generator_oneapi.md b/docs/Examples/Oneapi/script_multi_generator_oneapi.md deleted file mode 100644 index 8b2deefd..00000000 --- a/docs/Examples/Oneapi/script_multi_generator_oneapi.md +++ /dev/null @@ -1,49 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -from scrapegraphai.graphs import ScriptCreatorMultiGraph -from scrapegraphai.utils import prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - }, - "library": "beautifulsoup" -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -urls=[ - "https://schultzbergagency.com/emil-raste-karlsen/", - "https://schultzbergagency.com/johanna-hedberg/", -] - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorMultiGraph( - prompt="Find information about actors", - # also accepts a string with the already downloaded HTML code - source=urls, - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Oneapi/search_graph_oneapi.md b/docs/Examples/Oneapi/search_graph_oneapi.md deleted file mode 100644 index 9e3f12c1..00000000 --- a/docs/Examples/Oneapi/search_graph_oneapi.md +++ /dev/null @@ -1,30 +0,0 @@ -```python -""" -Example of Search Graph -""" -from scrapegraphai.graphs import SearchGraph - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - } -} - - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Oneapi/search_graph_schema_oneapi.md b/docs/Examples/Oneapi/search_graph_schema_oneapi.md deleted file mode 100644 index bca60ffe..00000000 --- a/docs/Examples/Oneapi/search_graph_schema_oneapi.md +++ /dev/null @@ -1,56 +0,0 @@ -```python -""" -Example of Search Graph -""" -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -from pydantic import BaseModel, Field -from typing import List - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Dish(BaseModel): - name: str = Field(description="The name of the dish") - description: str = Field(description="The description of the dish") - -class Dishes(BaseModel): - dishes: List[Dish] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - } -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config, - schema=Dishes -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Oneapi/smart_scraper_multi_concat_oneapi.md b/docs/Examples/Oneapi/smart_scraper_multi_concat_oneapi.md deleted file mode 100644 index bf165c55..00000000 --- a/docs/Examples/Oneapi/smart_scraper_multi_concat_oneapi.md +++ /dev/null @@ -1,36 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -import json -from scrapegraphai.graphs import SmartScraperMultiConcatGraph - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - } -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiConcatGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Oneapi/smart_scraper_multi_oneapi.md b/docs/Examples/Oneapi/smart_scraper_multi_oneapi.md deleted file mode 100644 index d2f3e0be..00000000 --- a/docs/Examples/Oneapi/smart_scraper_multi_oneapi.md +++ /dev/null @@ -1,39 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - } -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Oneapi/smart_scraper_oneapi.md b/docs/Examples/Oneapi/smart_scraper_oneapi.md deleted file mode 100644 index 62abcd54..00000000 --- a/docs/Examples/Oneapi/smart_scraper_oneapi.md +++ /dev/null @@ -1,39 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - } -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the titles", - # also accepts a string with the already downloaded HTML code - source="https://www.wired.com/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Oneapi/smart_scraper_schema_oneapi.md b/docs/Examples/Oneapi/smart_scraper_schema_oneapi.md deleted file mode 100644 index 694ce965..00000000 --- a/docs/Examples/Oneapi/smart_scraper_schema_oneapi.md +++ /dev/null @@ -1,49 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper and OneAPI -""" -from typing import List -from pydantic import BaseModel, Field -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ********************************************* - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - } -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config, - schema=Projects -) - -# ************************************************ -# Get graph execution info -# ************************************************ -result = smart_scraper_graph.run() -print(result) -print(prettify_exec_info(result)) diff --git a/docs/Examples/Oneapi/smartscraper_oneapi.md b/docs/Examples/Oneapi/smartscraper_oneapi.md deleted file mode 100644 index 38e35a2a..00000000 --- a/docs/Examples/Oneapi/smartscraper_oneapi.md +++ /dev/null @@ -1,36 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ********************************************* - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - } -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="该网站为XXXXX,请提取出标题、发布时间、发布来源以及内容摘要,并以中文回答。", - # 也可以使用已下载的 HTML 代码的字符串 - source="http://XXXX", - config=graph_config -) - -# ************************************************ -# Get graph execution info -# ************************************************ -result = smart_scraper_graph.run() -print(result) -print(prettify_exec_info(result)) diff --git a/docs/Examples/Oneapi/xml_scraper_graph_multi_oneapi.md b/docs/Examples/Oneapi/xml_scraper_graph_multi_oneapi.md deleted file mode 100644 index a08a1cda..00000000 --- a/docs/Examples/Oneapi/xml_scraper_graph_multi_oneapi.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperMultiGraph from XML documents -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-3.5-turbo", - }, -} - -# ************************************************ -# Create the XMLScraperMultiGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperMultiGraph( - prompt="List me all the authors, title and genres of the books", - source=[text, text], # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Oneapi/xml_scraper_oneapi.md b/docs/Examples/Oneapi/xml_scraper_oneapi.md deleted file mode 100644 index 74680ca2..00000000 --- a/docs/Examples/Oneapi/xml_scraper_oneapi.md +++ /dev/null @@ -1,59 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("ONEAPI_KEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-3.5-turbo", - }, - "verbose":False, -} - -# ************************************************ -# Create the XMLScraperGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Openai/code_generator_graph_openai.md b/docs/Examples/Openai/code_generator_graph_openai.md deleted file mode 100644 index b69f243b..00000000 --- a/docs/Examples/Openai/code_generator_graph_openai.md +++ /dev/null @@ -1,60 +0,0 @@ -```python -""" -Basic example of scraping pipeline using Code Generator with schema -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import CodeGeneratorGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key":openai_key, - "model": "openai/gpt-4o-mini", - }, - "verbose": True, - "headless": False, - "reduction": 2, - "max_iterations": { - "overall": 10, - "syntax": 3, - "execution": 3, - "validation": 3, - "semantic": 3 - }, - "output_file_name": "extracted_data.py" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -code_generator_graph = CodeGeneratorGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = code_generator_graph.run() -print(result) diff --git a/docs/Examples/Openai/csv_scraper_graph_multi_openai.md b/docs/Examples/Openai/csv_scraper_graph_multi_openai.md deleted file mode 100644 index 632e0711..00000000 --- a/docs/Examples/Openai/csv_scraper_graph_multi_openai.md +++ /dev/null @@ -1,56 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperMultiGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - }, -} - -# ************************************************ -# Create the CSVScraperMultiGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperMultiGraph( - prompt="List me all the last names", - source=[str(text), str(text)], - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Openai/csv_scraper_openai.md b/docs/Examples/Openai/csv_scraper_openai.md deleted file mode 100644 index fc6cda54..00000000 --- a/docs/Examples/Openai/csv_scraper_openai.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - }, -} - -# ************************************************ -# Create the CSVScraperGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperGraph( - prompt="List me all the last names", - source=str(text), # Pass the content of the file, not the file object - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Openai/custom_graph_openai.md b/docs/Examples/Openai/custom_graph_openai.md deleted file mode 100644 index 2ea44ba2..00000000 --- a/docs/Examples/Openai/custom_graph_openai.md +++ /dev/null @@ -1,110 +0,0 @@ -```python -""" -Example of custom graph using existing nodes -""" -import os -from dotenv import load_dotenv -from langchain_openai import OpenAIEmbeddings -from langchain_openai import ChatOpenAI -from scrapegraphai.graphs import BaseGraph -from scrapegraphai.nodes import FetchNode, ParseNode, RAGNode, GenerateAnswerNode, RobotsNode - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") -graph_config = { - "llm": { - "api_key": openai_key, - "model": "gpt-4o", - }, -} - -# ************************************************ -# Define the graph nodes -# ************************************************ - -llm_model = ChatOpenAI(graph_config["llm"]) -embedder = OpenAIEmbeddings(api_key=llm_model.openai_api_key) - -# define the nodes for the graph -robot_node = RobotsNode( - input="url", - output=["is_scrapable"], - node_config={ - "llm_model": llm_model, - "force_scraping": True, - "verbose": True, - } -) - -fetch_node = FetchNode( - input="url | local_dir", - output=["doc"], - node_config={ - "verbose": True, - "headless": True, - } -) -parse_node = ParseNode( - input="doc", - output=["parsed_doc"], - node_config={ - "chunk_size": 4096, - "verbose": True, - } -) -rag_node = RAGNode( - input="user_prompt & (parsed_doc | doc)", - output=["relevant_chunks"], - node_config={ - "llm_model": llm_model, - "embedder_model": embedder, - "verbose": True, - } -) -generate_answer_node = GenerateAnswerNode( - input="user_prompt & (relevant_chunks | parsed_doc | doc)", - output=["answer"], - node_config={ - "llm_model": llm_model, - "verbose": True, - } -) - -# ************************************************ -# Create the graph by defining the connections -# ************************************************ - -graph = BaseGraph( - nodes=[ - robot_node, - fetch_node, - parse_node, - rag_node, - generate_answer_node, - ], - edges=[ - (robot_node, fetch_node), - (fetch_node, parse_node), - (parse_node, rag_node), - (rag_node, generate_answer_node) - ], - entry_point=robot_node -) - -# ************************************************ -# Execute the graph -# ************************************************ - -result, execution_info = graph.execute({ - "user_prompt": "Describe the content", - "url": "https://example.com/" -}) - -# get the answer from the result -result = result.get("answer", "No answer found.") -print(result) diff --git a/docs/Examples/Openai/depth_search_graph_openai.md b/docs/Examples/Openai/depth_search_graph_openai.md deleted file mode 100644 index 59e578aa..00000000 --- a/docs/Examples/Openai/depth_search_graph_openai.md +++ /dev/null @@ -1,31 +0,0 @@ -```python -""" -depth_search_graph_opeani example -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import DepthSearchGraph - -load_dotenv() - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o-mini", - }, - "verbose": True, - "headless": False, - "depth": 2, - "only_inside_links": False, -} - -search_graph = DepthSearchGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Openai/json_scraper_multi_openai.md b/docs/Examples/Openai/json_scraper_multi_openai.md deleted file mode 100644 index da31c23c..00000000 --- a/docs/Examples/Openai/json_scraper_multi_openai.md +++ /dev/null @@ -1,38 +0,0 @@ -```python -""" -Module for showing how PDFScraper multi works -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperMultiGraph - -load_dotenv() - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - } -} - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -sources = [text, text] - -multiple_search_graph = JSONScraperMultiGraph( - prompt= "List me all the authors, title and genres of the books", - source= sources, - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Openai/json_scraper_openai.md b/docs/Examples/Openai/json_scraper_openai.md deleted file mode 100644 index e70316d1..00000000 --- a/docs/Examples/Openai/json_scraper_openai.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using JSONScraperGraph from JSON documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the JSON file -# ************************************************ - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - }, -} - -# ************************************************ -# Create the JSONScraperGraph instance and run it -# ************************************************ - -json_scraper_graph = JSONScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = json_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = json_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Openai/md_scraper_openai.md b/docs/Examples/Openai/md_scraper_openai.md deleted file mode 100644 index 9599feb2..00000000 --- a/docs/Examples/Openai/md_scraper_openai.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using DocumentScraperGraph from MD documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the MD file -# ************************************************ - -FILE_NAME = "inputs/markdown_example.md" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - }, -} - -# ************************************************ -# Create the DocumentScraperGraph instance and run it -# ************************************************ - -md_scraper_graph = DocumentScraperGraph( - prompt="List me all the projects", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = md_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = md_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Openai/omni_scraper_openai.md b/docs/Examples/Openai/omni_scraper_openai.md deleted file mode 100644 index e60ab057..00000000 --- a/docs/Examples/Openai/omni_scraper_openai.md +++ /dev/null @@ -1,48 +0,0 @@ -```python -""" -Basic example of scraping pipeline using OmniScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import OmniScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - }, - "verbose": True, - "headless": True, - "max_images": 5 -} - -# ************************************************ -# Create the OmniScraperGraph instance and run it -# ************************************************ - -omni_scraper_graph = OmniScraperGraph( - prompt="List me all the projects with their titles and image links and descriptions.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config -) - -result = omni_scraper_graph.run() -print(json.dumps(result, indent=2)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = omni_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Openai/omni_search_openai.md b/docs/Examples/Openai/omni_search_openai.md deleted file mode 100644 index bbca43fb..00000000 --- a/docs/Examples/Openai/omni_search_openai.md +++ /dev/null @@ -1,46 +0,0 @@ -```python -""" -Example of OmniSearchGraph -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import OmniSearchGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - }, - "max_results": 2, - "max_images": 1, - "verbose": True, -} - -# ************************************************ -# Create the OmniSearchGraph instance and run it -# ************************************************ - -omni_search_graph = OmniSearchGraph( - prompt="List me all Chioggia's famous dishes and describe their pictures.", - config=graph_config -) - -result = omni_search_graph.run() -print(json.dumps(result, indent=2)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = omni_search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Openai/rate_limit_openai.md b/docs/Examples/Openai/rate_limit_openai.md deleted file mode 100644 index 5b8345b4..00000000 --- a/docs/Examples/Openai/rate_limit_openai.md +++ /dev/null @@ -1,49 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with a custom rate limit -""" - -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "api_key": os.getenv("OPENAI_API_KEY"), - "model": "openai/gpt-4o", - "rate_limit": { - "requests_per_second": 1 - } - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me what does the company do, the name and a contact email.", - source="https://scrapegraphai.com/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Openai/readme.md b/docs/Examples/Openai/readme.md deleted file mode 100644 index 6c91d8b1..00000000 --- a/docs/Examples/Openai/readme.md +++ /dev/null @@ -1,2 +0,0 @@ -```python -This folder contains an example of how to use ScrapeGraph-AI with OpenAI, an artificial intelligence platform. The examples show how to extract information from a website using a natural language prompt. \ No newline at end of file diff --git a/docs/Examples/Openai/scrape_plain_text_openai.md b/docs/Examples/Openai/scrape_plain_text_openai.md deleted file mode 100644 index 20750b80..00000000 --- a/docs/Examples/Openai/scrape_plain_text_openai.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ - -FILE_NAME = "inputs/plain_html_example.txt" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -# It could be also a http request using the request model -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - source=text, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Openai/screenshot_scraper.md b/docs/Examples/Openai/screenshot_scraper.md deleted file mode 100644 index 8d82ed71..00000000 --- a/docs/Examples/Openai/screenshot_scraper.md +++ /dev/null @@ -1,38 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import ScreenshotScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "api_key": os.getenv("OPENAI_API_KEY"), - "model": "openai/gpt-4o", - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the ScreenshotScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = ScreenshotScraperGraph( - prompt="List me all the projects", - source="https://perinim.github.io/projects/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Openai/script_generator_openai.md b/docs/Examples/Openai/script_generator_openai.md deleted file mode 100644 index b477bd4c..00000000 --- a/docs/Examples/Openai/script_generator_openai.md +++ /dev/null @@ -1,47 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "api_key": os.getenv("OPENAI_API_KEY"), - "model": "openai/gpt-4o", - }, - "library": "beautifulsoup", - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = ScriptCreatorGraph( - prompt="List me all the news with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Openai/script_generator_schema_openai.md b/docs/Examples/Openai/script_generator_schema_openai.md deleted file mode 100644 index a9544c99..00000000 --- a/docs/Examples/Openai/script_generator_schema_openai.md +++ /dev/null @@ -1,61 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o" - }, - "library": "beautifulsoup", - "verbose": True, -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config, - schema=Projects -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/Openai/script_multi_generator_openai.md b/docs/Examples/Openai/script_multi_generator_openai.md deleted file mode 100644 index bf721af4..00000000 --- a/docs/Examples/Openai/script_multi_generator_openai.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorMultiGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - }, - "library": "beautifulsoup", - "verbose": True, -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -urls=[ - "https://schultzbergagency.com/emil-raste-karlsen/", - "https://schultzbergagency.com/johanna-hedberg/", -] - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorMultiGraph( - prompt="Find information about actors", - # also accepts a string with the already downloaded HTML code - source=urls, - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Openai/search_graph_openai.md b/docs/Examples/Openai/search_graph_openai.md deleted file mode 100644 index 15296f60..00000000 --- a/docs/Examples/Openai/search_graph_openai.md +++ /dev/null @@ -1,36 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - }, - "max_results": 2, - "verbose": True, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/Openai/search_graph_schema_openai.md b/docs/Examples/Openai/search_graph_schema_openai.md deleted file mode 100644 index 25349806..00000000 --- a/docs/Examples/Openai/search_graph_schema_openai.md +++ /dev/null @@ -1,62 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Dish(BaseModel): - name: str = Field(description="The name of the dish") - description: str = Field(description="The description of the dish") - -class Dishes(BaseModel): - dishes: List[Dish] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o" - }, - "max_results": 2, - "verbose": True, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config, - schema=Dishes -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Openai/search_link_graph_openai.md b/docs/Examples/Openai/search_link_graph_openai.md deleted file mode 100644 index 2f0e6d2d..00000000 --- a/docs/Examples/Openai/search_link_graph_openai.md +++ /dev/null @@ -1,43 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchLinkGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SearchLinkGraph instance and run it -# ************************************************ - -smart_scraper_graph = SearchLinkGraph( - source="https://sport.sky.it/nba?gr=www", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Openai/smart_scraper_multi_concat_openai.md b/docs/Examples/Openai/smart_scraper_multi_concat_openai.md deleted file mode 100644 index d39511ed..00000000 --- a/docs/Examples/Openai/smart_scraper_multi_concat_openai.md +++ /dev/null @@ -1,41 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiConcatGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - }, - "verbose": True, - "headless": False, -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiConcatGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Openai/smart_scraper_multi_openai.md b/docs/Examples/Openai/smart_scraper_multi_openai.md deleted file mode 100644 index 87c227b3..00000000 --- a/docs/Examples/Openai/smart_scraper_multi_openai.md +++ /dev/null @@ -1,42 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - }, - "verbose": True, - "headless": False, -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/Openai/smart_scraper_openai.md b/docs/Examples/Openai/smart_scraper_openai.md deleted file mode 100644 index ebb44e93..00000000 --- a/docs/Examples/Openai/smart_scraper_openai.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "api_key": os.getenv("OPENAI_API_KEY"), - "model": "openai/gpt-4o", - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="Extract me all the articles", - source="https://www.wired.com", - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Openai/smart_scraper_schema_openai.md b/docs/Examples/Openai/smart_scraper_schema_openai.md deleted file mode 100644 index 60ffbf05..00000000 --- a/docs/Examples/Openai/smart_scraper_schema_openai.md +++ /dev/null @@ -1,51 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with schema -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import SmartScraperGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o-mini", - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) diff --git a/docs/Examples/Openai/speech_graph_openai.md b/docs/Examples/Openai/speech_graph_openai.md deleted file mode 100644 index b602f250..00000000 --- a/docs/Examples/Openai/speech_graph_openai.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SpeechSummaryGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SpeechGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define audio output path -# ************************************************ - -FILE_NAME = "website_summary.mp3" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -output_path = os.path.join(curr_dir, FILE_NAME) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - "temperature": 0.7, - }, - "tts_model": { - "api_key": openai_key, - "model": "tts-1", - "voice": "alloy" - }, - "output_path": output_path, -} - -# ************************************************ -# Create the SpeechGraph instance and run it -# ************************************************ - -speech_graph = SpeechGraph( - prompt="Make a detailed audio summary of the projects.", - source="https://perinim.github.io/projects/", - config=graph_config, -) - -result = speech_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = speech_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/Openai/xml_scraper_graph_multi_openai.md b/docs/Examples/Openai/xml_scraper_graph_multi_openai.md deleted file mode 100644 index f183bd0f..00000000 --- a/docs/Examples/Openai/xml_scraper_graph_multi_openai.md +++ /dev/null @@ -1,59 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperMultiGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key":openai_key, - "model": "openai/gpt-4o", - }, - "verbose": True, - "headless": False, -} -# ************************************************ -# Create the XMLScraperMultiGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperMultiGraph( - prompt="List me all the authors, title and genres of the books", - source=[text, text], # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/Openai/xml_scraper_openai.md b/docs/Examples/Openai/xml_scraper_openai.md deleted file mode 100644 index f61385a9..00000000 --- a/docs/Examples/Openai/xml_scraper_openai.md +++ /dev/null @@ -1,59 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - }, - "verbose":False, -} - -# ************************************************ -# Create the XMLScraperGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/anthropic/document_scraper_anthropic.md b/docs/Examples/anthropic/document_scraper_anthropic.md deleted file mode 100644 index 46e954c2..00000000 --- a/docs/Examples/anthropic/document_scraper_anthropic.md +++ /dev/null @@ -1,43 +0,0 @@ -```python -""" -document_scraper example -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph - -load_dotenv() - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - } -} - - -source = """ - The Divine Comedy, Italian La Divina Commedia, original name La commedia, long narrative poem written in Italian - circa 1308/21 by Dante. It is usually held to be one of the world s great works of literature. - Divided into three major sections—Inferno, Purgatorio, and Paradiso—the narrative traces the journey of Dante - from darkness and error to the revelation of the divine light, culminating in the Beatific Vision of God. - Dante is guided by the Roman poet Virgil, who represents the epitome of human knowledge, from the dark wood - through the descending circles of the pit of Hell (Inferno). He then climbs the mountain of Purgatory, guided - by the Roman poet Statius, who represents the fulfilment of human knowledge, and is finally led by his lifelong love, - the Beatrice of his earlier poetry, through the celestial spheres of Paradise. -""" - -pdf_scraper_graph = DocumentScraperGraph( - prompt="Summarize the text and find the main topics", - source=source, - config=graph_config, -) -result = pdf_scraper_graph.run() - -print(json.dumps(result, indent=4)) \ No newline at end of file diff --git a/docs/Examples/anthropic/smart_scraper_lite_anthropic.md b/docs/Examples/anthropic/smart_scraper_lite_anthropic.md deleted file mode 100644 index 406e0023..00000000 --- a/docs/Examples/anthropic/smart_scraper_lite_anthropic.md +++ /dev/null @@ -1,33 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_lite_graph = SmartScraperLiteGraph( - prompt="Who is Marco Perini?", - source="https://perinim.github.io/", - config=graph_config -) - -result = smart_scraper_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/anthropic/smart_scraper_multi_lite_anthropic.md b/docs/Examples/anthropic/smart_scraper_multi_lite_anthropic.md deleted file mode 100644 index cdaf312b..00000000 --- a/docs/Examples/anthropic/smart_scraper_multi_lite_anthropic.md +++ /dev/null @@ -1,36 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/azure/document_scraper_azure.md b/docs/Examples/azure/document_scraper_azure.md deleted file mode 100644 index ba4e9dea..00000000 --- a/docs/Examples/azure/document_scraper_azure.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -document_scraper example -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph - -load_dotenv() - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - - -source = """ - The Divine Comedy, Italian La Divina Commedia, original name La commedia, long narrative poem written in Italian - circa 1308/21 by Dante. It is usually held to be one of the world s great works of literature. - Divided into three major sections—Inferno, Purgatorio, and Paradiso—the narrative traces the journey of Dante - from darkness and error to the revelation of the divine light, culminating in the Beatific Vision of God. - Dante is guided by the Roman poet Virgil, who represents the epitome of human knowledge, from the dark wood - through the descending circles of the pit of Hell (Inferno). He then climbs the mountain of Purgatory, guided - by the Roman poet Statius, who represents the fulfilment of human knowledge, and is finally led by his lifelong love, - the Beatrice of his earlier poetry, through the celestial spheres of Paradise. -""" - -pdf_scraper_graph = DocumentScraperGraph( - prompt="Summarize the text and find the main topics", - source=source, - config=graph_config, -) -result = pdf_scraper_graph.run() - -print(json.dumps(result, indent=4)) \ No newline at end of file diff --git a/docs/Examples/azure/smart_scraper_lite_azure.md b/docs/Examples/azure/smart_scraper_lite_azure.md deleted file mode 100644 index fa6134ba..00000000 --- a/docs/Examples/azure/smart_scraper_lite_azure.md +++ /dev/null @@ -1,32 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - -smart_scraper_lite_graph = SmartScraperLiteGraph( - prompt="Who is Marco Perini?", - source="https://perinim.github.io/", - config=graph_config -) - -result = smart_scraper_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/azure/smart_scraper_multi_lite_azure.md b/docs/Examples/azure/smart_scraper_multi_lite_azure.md deleted file mode 100644 index 975b8057..00000000 --- a/docs/Examples/azure/smart_scraper_multi_lite_azure.md +++ /dev/null @@ -1,36 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.environ["AZURE_OPENAI_KEY"], - "model": "azure_openai/gpt-4o" - }, - "verbose": True, - "headless": False -} - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/bedrock/document_scraper_bedrock.md b/docs/Examples/bedrock/document_scraper_bedrock.md deleted file mode 100644 index 0642c8ba..00000000 --- a/docs/Examples/bedrock/document_scraper_bedrock.md +++ /dev/null @@ -1,43 +0,0 @@ -```python -""" -document_scraper example -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph - -load_dotenv() - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - } -} - -source = """ - The Divine Comedy, Italian La Divina Commedia, original name La commedia, long narrative poem written in Italian - circa 1308/21 by Dante. It is usually held to be one of the world s great works of literature. - Divided into three major sections—Inferno, Purgatorio, and Paradiso—the narrative traces the journey of Dante - from darkness and error to the revelation of the divine light, culminating in the Beatific Vision of God. - Dante is guided by the Roman poet Virgil, who represents the epitome of human knowledge, from the dark wood - through the descending circles of the pit of Hell (Inferno). He then climbs the mountain of Purgatory, guided - by the Roman poet Statius, who represents the fulfilment of human knowledge, and is finally led by his lifelong love, - the Beatrice of his earlier poetry, through the celestial spheres of Paradise. -""" - -pdf_scraper_graph = DocumentScraperGraph( - prompt="Summarize the text and find the main topics", - source=source, - config=graph_config, -) -result = pdf_scraper_graph.run() - -print(json.dumps(result, indent=4)) \ No newline at end of file diff --git a/docs/Examples/bedrock/smart_scraper_lite_bedrock.md b/docs/Examples/bedrock/smart_scraper_lite_bedrock.md deleted file mode 100644 index d8a45b6f..00000000 --- a/docs/Examples/bedrock/smart_scraper_lite_bedrock.md +++ /dev/null @@ -1,27 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import json -from scrapegraphai.graphs import SmartScraperLiteGraph -from scrapegraphai.utils import prettify_exec_info - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - } -} - -smart_scraper_lite_graph = SmartScraperLiteGraph( - prompt="Who is Marco Perini?", - source="https://perinim.github.io/", - config=graph_config -) - -result = smart_scraper_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/bedrock/smart_scraper_multi_lite_bedrock.md b/docs/Examples/bedrock/smart_scraper_multi_lite_bedrock.md deleted file mode 100644 index 8e16a7e4..00000000 --- a/docs/Examples/bedrock/smart_scraper_multi_lite_bedrock.md +++ /dev/null @@ -1,30 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import json -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -graph_config = { - "llm": { - "client": "client_name", - "model": "bedrock/anthropic.claude-3-sonnet-20240229-v1:0", - "temperature": 0.0 - } -} - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/benchmarks/GenerateScraper/Readme.md b/docs/Examples/benchmarks/GenerateScraper/Readme.md deleted file mode 100644 index f5a5023f..00000000 --- a/docs/Examples/benchmarks/GenerateScraper/Readme.md +++ /dev/null @@ -1,44 +0,0 @@ -```python -# Local models -# Local models -The two websites benchmark are: -- Example 1: https://perinim.github.io/projects -- Example 2: https://www.wired.com (at 17/4/2024) - -Both are strored locally as txt file in .txt format because in this way we do not have to think about the internet connection - -The time is measured in seconds - -The model runned for this benchmark is Mistral on Ollama with nomic-embed-text - -| Hardware | Model | Example 1 | Example 2 | -| ---------------------- | --------------------------------------- | --------- | --------- | -| Macbook 14' m1 pro | Mistral on Ollama with nomic-embed-text | 30.54s | 35.76s | -| Macbook m2 max | Mistral on Ollama with nomic-embed-text | | | -| Macbook 14' m1 pro
| Llama3 on Ollama with nomic-embed-text | 27.82s | 29.986s | -| Macbook m2 max
| Llama3 on Ollama with nomic-embed-text | | | - - -**Note**: the examples on Docker are not runned on other devices than the Macbook because the performance are to slow (10 times slower than Ollama). -# Performance on APIs services -### Example 1: personal portfolio -**URL**: https://perinim.github.io/projects -**Task**: List me all the projects with their description. - -| Name | Execution time (seconds) | total_tokens | prompt_tokens | completion_tokens | successful_requests | total_cost_USD | -| --------------------------- | ------------------------ | ------------ | ------------- | ----------------- | ------------------- | -------------- | -| gpt-3.5-turbo | 24.21 | 1892 | 1802 | 90 | 1 | 0.002883 | -| gpt-4-turbo-preview | 6.614 | 1936 | 1802 | 134 | 1 | 0.02204 | -| Grooq with nomic-embed-text | 6.71 | 2201 | 2024 | 177 | 1 | 0 | - -### Example 2: Wired -**URL**: https://www.wired.com -**Task**: List me all the articles with their description. - -| Name | Execution time (seconds) | total_tokens | prompt_tokens | completion_tokens | successful_requests | total_cost_USD | -| --------------------------- | ------------------------ | ------------ | ------------- | ----------------- | ------------------- | -------------- | -| gpt-3.5-turbo | | | | | | | -| gpt-4-turbo-preview | | | | | | | -| Grooq with nomic-embed-text | | | | | | | - - diff --git a/docs/Examples/benchmarks/GenerateScraper/benchmark_docker.md b/docs/Examples/benchmarks/GenerateScraper/benchmark_docker.md deleted file mode 100644 index ae6fe1dd..00000000 --- a/docs/Examples/benchmarks/GenerateScraper/benchmark_docker.md +++ /dev/null @@ -1 +0,0 @@ -```python diff --git a/docs/Examples/benchmarks/GenerateScraper/benchmark_groq.md b/docs/Examples/benchmarks/GenerateScraper/benchmark_groq.md deleted file mode 100644 index 836d0f6d..00000000 --- a/docs/Examples/benchmarks/GenerateScraper/benchmark_groq.md +++ /dev/null @@ -1,62 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ -files = ["inputs/example_1.txt", "inputs/example_2.txt"] -tasks = ["List me all the projects with their description.", - "List me all the articles with their description."] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "embeddings": { - "model": "ollama/nomic-embed-text", - "temperature": 0, - "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "headless": False, - "library": "beautifoulsoup" -} - - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -for i in range(0, 2): - with open(files[i], 'r', encoding="utf-8") as file: - text = file.read() - - smart_scraper_graph = ScriptCreatorGraph( - prompt=tasks[i], - source=text, - config=graph_config - ) - - result = smart_scraper_graph.run() - print(result) - # ************************************************ - # Get graph execution info - # ************************************************ - - graph_exec_info = smart_scraper_graph.get_execution_info() - print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/benchmarks/GenerateScraper/benchmark_llama3.md b/docs/Examples/benchmarks/GenerateScraper/benchmark_llama3.md deleted file mode 100644 index 81ef1ddf..00000000 --- a/docs/Examples/benchmarks/GenerateScraper/benchmark_llama3.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" - -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -# ************************************************ -# Read the text file -# ************************************************ -files = ["inputs/example_1.txt", "inputs/example_2.txt"] -tasks = ["List me all the projects with their description.", - "List me all the articles with their description."] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "model": "ollama/llama3", - "temperature": 0, - # "model_tokens": 2000, # set context length arbitrarily, - "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "embeddings": { - "model": "ollama/nomic-embed-text", - "temperature": 0, - "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "library": "beautifoulsoup" -} - - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -for i in range(0, 2): - with open(files[i], 'r', encoding="utf-8") as file: - text = file.read() - - smart_scraper_graph = ScriptCreatorGraph( - prompt=tasks[i], - source=text, - config=graph_config - ) - - result = smart_scraper_graph.run() - print(result) - # ************************************************ - # Get graph execution info - # ************************************************ - - graph_exec_info = smart_scraper_graph.get_execution_info() - print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/benchmarks/GenerateScraper/benchmark_mistral.md b/docs/Examples/benchmarks/GenerateScraper/benchmark_mistral.md deleted file mode 100644 index ab6660ac..00000000 --- a/docs/Examples/benchmarks/GenerateScraper/benchmark_mistral.md +++ /dev/null @@ -1,63 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ -files = ["inputs/example_1.txt", "inputs/example_2.txt"] -tasks = ["List me all the projects with their description.", - "List me all the articles with their description."] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("GPT4_KEY") - - -graph_config = { - "llm": { - "model": "ollama/mistral", - "temperature": 0, - # "model_tokens": 2000, # set context length arbitrarily, - "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "embeddings": { - "model": "ollama/nomic-embed-text", - "temperature": 0, - "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "library": "beautifoulsoup" -} - - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -for i in range(0, 2): - with open(files[i], 'r', encoding="utf-8") as file: - text = file.read() - - smart_scraper_graph = ScriptCreatorGraph( - prompt=tasks[i], - source=text, - config=graph_config - ) - - result = smart_scraper_graph.run() - print(result) - # ************************************************ - # Get graph execution info - # ************************************************ - - graph_exec_info = smart_scraper_graph.get_execution_info() - print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/benchmarks/GenerateScraper/benchmark_openai_gpt35.md b/docs/Examples/benchmarks/GenerateScraper/benchmark_openai_gpt35.md deleted file mode 100644 index 9e4bdf5c..00000000 --- a/docs/Examples/benchmarks/GenerateScraper/benchmark_openai_gpt35.md +++ /dev/null @@ -1,54 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ -files = ["inputs/example_1.txt", "inputs/example_2.txt"] -tasks = ["List me all the projects with their description.", - "List me all the articles with their description."] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-3.5-turbo", - }, - "library": "beautifoulsoup" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -for i in range(0, 2): - with open(files[i], 'r', encoding="utf-8") as file: - text = file.read() - - smart_scraper_graph = ScriptCreatorGraph( - prompt=tasks[i], - source=text, - config=graph_config - ) - - result = smart_scraper_graph.run() - print(result) - # ************************************************ - # Get graph execution info - # ************************************************ - - graph_exec_info = smart_scraper_graph.get_execution_info() - print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/benchmarks/GenerateScraper/benchmark_openai_gpt4.md b/docs/Examples/benchmarks/GenerateScraper/benchmark_openai_gpt4.md deleted file mode 100644 index 70668a3e..00000000 --- a/docs/Examples/benchmarks/GenerateScraper/benchmark_openai_gpt4.md +++ /dev/null @@ -1,54 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ -files = ["inputs/example_1.txt", "inputs/example_2.txt"] -tasks = ["List me all the projects with their description.", - "List me all the articles with their description."] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4-turbo-2024-04-09", - }, - "library": "beautifoulsoup" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -for i in range(0, 2): - with open(files[i], 'r', encoding="utf-8") as file: - text = file.read() - - smart_scraper_graph = ScriptCreatorGraph( - prompt=tasks[i], - source=text, - config=graph_config - ) - - result = smart_scraper_graph.run() - print(result) - # ************************************************ - # Get graph execution info - # ************************************************ - - graph_exec_info = smart_scraper_graph.get_execution_info() - print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/benchmarks/SmartScraper/Readme.md b/docs/Examples/benchmarks/SmartScraper/Readme.md deleted file mode 100644 index 2ed6356d..00000000 --- a/docs/Examples/benchmarks/SmartScraper/Readme.md +++ /dev/null @@ -1,43 +0,0 @@ -```python -# Local models -# Local models -The two websites benchmark are: -- Example 1: https://perinim.github.io/projects -- Example 2: https://www.wired.com (at 17/4/2024) - -Both are strored locally as txt file in .txt format because in this way we do not have to think about the internet connection - -| Hardware | Model | Example 1 | Example 2 | -| ---------------------- | --------------------------------------- | --------- | --------- | -| Macbook 14' m1 pro | Mistral on Ollama with nomic-embed-text | 16.291s | 38.74s | -| Macbook m2 max | Mistral on Ollama with nomic-embed-text | | | -| Macbook 14' m1 pro
| Llama3 on Ollama with nomic-embed-text | 12.88s | 13.84s | -| Macbook m2 max
| Llama3 on Ollama with nomic-embed-text | | | - -**Note**: the examples on Docker are not runned on other devices than the Macbook because the performance are to slow (10 times slower than Ollama). Indeed the results are the following: - -| Hardware | Example 1 | Example 2 | -| ------------------ | --------- | --------- | -| Macbook 14' m1 pro | 139.89 | Too long | -# Performance on APIs services -### Example 1: personal portfolio -**URL**: https://perinim.github.io/projects -**Task**: List me all the projects with their description. - -| Name | Execution time (seconds) | total_tokens | prompt_tokens | completion_tokens | successful_requests | total_cost_USD | -| ------------------------------- | ------------------------ | ------------ | ------------- | ----------------- | ------------------- | -------------- | -| gpt-3.5-turbo | 4.132s | 438 | 303 | 135 | 1 | 0.000724 | -| gpt-4-turbo-preview | 6.965s | 442 | 303 | 139 | 1 | 0.0072 | -| gpt-4-o | 4.446s | 444 | 305 | 139 | 1 | 0 | -| Grooq with nomic-embed-text
| 1.335s | 648 | 482 | 166 | 1 | 0 | - -### Example 2: Wired -**URL**: https://www.wired.com -**Task**: List me all the articles with their description. - -| Name | Execution time (seconds) | total_tokens | prompt_tokens | completion_tokens | successful_requests | total_cost_USD | -| ------------------------------- | ------------------------ | ------------ | ------------- | ----------------- | ------------------- | -------------- | -| gpt-3.5-turbo | 8.836s | 1167 | 726 | 441 | 1 | 0.001971 | -| gpt-4-turbo-preview | 21.53s | 1205 | 726 | 479 | 1 | 0.02163 | -| gpt-4-o | 15.27s | 1400 | 715 | 685 | 1 | 0 | -| Grooq with nomic-embed-text
| 3.82s | 2459 | 2192 | 267 | 1 | 0 | diff --git a/docs/Examples/benchmarks/SmartScraper/benchmark_docker.md b/docs/Examples/benchmarks/SmartScraper/benchmark_docker.md deleted file mode 100644 index 8e062e9a..00000000 --- a/docs/Examples/benchmarks/SmartScraper/benchmark_docker.md +++ /dev/null @@ -1,52 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" - -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -files = ["inputs/example_1.txt", "inputs/example_2.txt"] -tasks = ["List me all the projects with their description.", - "List me all the articles with their description."] - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/mistral", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - # "model_tokens": 2000, # set context length arbitrarily - }, - "embeddings": { - "model": "ollama/nomic-embed-text", - "temperature": 0, - } -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -for i in range(0, 2): - with open(files[i], 'r', encoding="utf-8") as file: - text = file.read() - - smart_scraper_graph = SmartScraperGraph( - prompt=tasks[i], - source=text, - config=graph_config - ) - - result = smart_scraper_graph.run() - print(result) - # ************************************************ - # Get graph execution info - # ************************************************ - - graph_exec_info = smart_scraper_graph.get_execution_info() - print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/benchmarks/SmartScraper/benchmark_groq.md b/docs/Examples/benchmarks/SmartScraper/benchmark_groq.md deleted file mode 100644 index 59b2a9bc..00000000 --- a/docs/Examples/benchmarks/SmartScraper/benchmark_groq.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -files = ["inputs/example_1.txt", "inputs/example_2.txt"] -tasks = ["List me all the projects with their description.", - "List me all the articles with their description."] - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "embeddings": { - "model": "ollama/nomic-embed-text", - "temperature": 0, - "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "headless": False -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -for i in range(0, 2): - with open(files[i], 'r', encoding="utf-8") as file: - text = file.read() - - smart_scraper_graph = SmartScraperGraph( - prompt=tasks[i], - source=text, - config=graph_config - ) - - result = smart_scraper_graph.run() - print(result) - # ************************************************ - # Get graph execution info - # ************************************************ - - graph_exec_info = smart_scraper_graph.get_execution_info() - print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/benchmarks/SmartScraper/benchmark_llama3.md b/docs/Examples/benchmarks/SmartScraper/benchmark_llama3.md deleted file mode 100644 index ab44d449..00000000 --- a/docs/Examples/benchmarks/SmartScraper/benchmark_llama3.md +++ /dev/null @@ -1,54 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" - -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -files = ["inputs/example_1.txt", "inputs/example_2.txt"] -tasks = ["List me all the projects with their description.", - "List me all the articles with their description."] - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/llama3", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - # "model_tokens": 2000, # set context length arbitrarily - "base_url": "http://localhost:11434", - }, - "embeddings": { - "model": "ollama/nomic-embed-text", - "temperature": 0, - "base_url": "http://localhost:11434", - } -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -for i in range(0, 2): - with open(files[i], 'r', encoding="utf-8") as file: - text = file.read() - - smart_scraper_graph = SmartScraperGraph( - prompt=tasks[i], - source=text, - config=graph_config - ) - - result = smart_scraper_graph.run() - print(result) - # ************************************************ - # Get graph execution info - # ************************************************ - - graph_exec_info = smart_scraper_graph.get_execution_info() - print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/benchmarks/SmartScraper/benchmark_mistral.md b/docs/Examples/benchmarks/SmartScraper/benchmark_mistral.md deleted file mode 100644 index 1f3ba6d1..00000000 --- a/docs/Examples/benchmarks/SmartScraper/benchmark_mistral.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" - -import os -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -files = ["inputs/example_1.txt", "inputs/example_2.txt"] -tasks = ["List me all the projects with their description.", - "List me all the articles with their description."] - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/mistral", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - # "model_tokens": 2000, # set context length arbitrarily - "base_url": "http://localhost:11434", - }, - "embeddings": { - "model": "ollama/nomic-embed-text", - "temperature": 0, - "base_url": "http://localhost:11434", - } -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -for i in range(0, 2): - with open(files[i], 'r', encoding="utf-8") as file: - text = file.read() - - smart_scraper_graph = SmartScraperGraph( - prompt=tasks[i], - source=text, - config=graph_config - ) - - result = smart_scraper_graph.run() - print(result) - # ************************************************ - # Get graph execution info - # ************************************************ - - graph_exec_info = smart_scraper_graph.get_execution_info() - print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/benchmarks/SmartScraper/benchmark_openai_gpt35.md b/docs/Examples/benchmarks/SmartScraper/benchmark_openai_gpt35.md deleted file mode 100644 index 77e8088a..00000000 --- a/docs/Examples/benchmarks/SmartScraper/benchmark_openai_gpt35.md +++ /dev/null @@ -1,53 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ -files = ["inputs/example_1.txt", "inputs/example_2.txt"] -tasks = ["List me all the projects with their description.", - "List me all the articles with their description."] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-3.5-turbo", - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -for i in range(0, 2): - with open(files[i], 'r', encoding="utf-8") as file: - text = file.read() - - smart_scraper_graph = SmartScraperGraph( - prompt=tasks[i], - source=text, - config=graph_config - ) - - result = smart_scraper_graph.run() - print(result) - # ************************************************ - # Get graph execution info - # ************************************************ - - graph_exec_info = smart_scraper_graph.get_execution_info() - print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/benchmarks/SmartScraper/benchmark_openai_gpt4.md b/docs/Examples/benchmarks/SmartScraper/benchmark_openai_gpt4.md deleted file mode 100644 index c83fc8d4..00000000 --- a/docs/Examples/benchmarks/SmartScraper/benchmark_openai_gpt4.md +++ /dev/null @@ -1,54 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ -files = ["inputs/example_1.txt", "inputs/example_2.txt"] -tasks = ["List me all the projects with their description.", - "List me all the articles with their description."] - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4-turbo", - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -for i in range(0, 2): - with open(files[i], 'r', encoding="utf-8") as file: - text = file.read() - - smart_scraper_graph = SmartScraperGraph( - prompt=tasks[i], - source=text, - config=graph_config - ) - - result = smart_scraper_graph.run() - print(result) - # ************************************************ - # Get graph execution info - # ************************************************ - - graph_exec_info = smart_scraper_graph.get_execution_info() - print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/benchmarks/SmartScraper/benchmark_openai_gpt4o.md b/docs/Examples/benchmarks/SmartScraper/benchmark_openai_gpt4o.md deleted file mode 100644 index a2d9eaa8..00000000 --- a/docs/Examples/benchmarks/SmartScraper/benchmark_openai_gpt4o.md +++ /dev/null @@ -1,54 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ -files = ["inputs/example_1.txt", "inputs/example_2.txt"] -tasks = ["List me all the projects with their description.", - "List me all the articles with their description."] - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -for i in range(0, 2): - with open(files[i], 'r', encoding="utf-8") as file: - text = file.read() - - smart_scraper_graph = SmartScraperGraph( - prompt=tasks[i], - source=text, - config=graph_config - ) - - result = smart_scraper_graph.run() - print(result) - # ************************************************ - # Get graph execution info - # ************************************************ - - graph_exec_info = smart_scraper_graph.get_execution_info() - print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/benchmarks/readme.md b/docs/Examples/benchmarks/readme.md deleted file mode 100644 index 5d6f24c3..00000000 --- a/docs/Examples/benchmarks/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -```python -These 2 subfolders contain all the scripts and performance documents for the 2 graphs used for the scrapers. -In particular: -* __GenerateScraper__: contains the benchmarks for GenerateScraper class -* __SmartScraper__: contains the benchamrks for SmartScraper class \ No newline at end of file diff --git a/docs/Examples/deepseek/document_scraper_deepseek.md b/docs/Examples/deepseek/document_scraper_deepseek.md deleted file mode 100644 index 45b32ec1..00000000 --- a/docs/Examples/deepseek/document_scraper_deepseek.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -document_scraper example -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph - -load_dotenv() - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -deepseek_key = os.getenv("DEEPSEEK_APIKEY") - -graph_config = { - "llm": { - "model": "deepseek/deepseek-chat", - "api_key": deepseek_key, - }, - "verbose": True, -} - - -source = """ - The Divine Comedy, Italian La Divina Commedia, original name La commedia, long narrative poem written in Italian - circa 1308/21 by Dante. It is usually held to be one of the world s great works of literature. - Divided into three major sections—Inferno, Purgatorio, and Paradiso—the narrative traces the journey of Dante - from darkness and error to the revelation of the divine light, culminating in the Beatific Vision of God. - Dante is guided by the Roman poet Virgil, who represents the epitome of human knowledge, from the dark wood - through the descending circles of the pit of Hell (Inferno). He then climbs the mountain of Purgatory, guided - by the Roman poet Statius, who represents the fulfilment of human knowledge, and is finally led by his lifelong love, - the Beatrice of his earlier poetry, through the celestial spheres of Paradise. -""" - -pdf_scraper_graph = DocumentScraperGraph( - prompt="Summarize the text and find the main topics", - source=source, - config=graph_config, -) -result = pdf_scraper_graph.run() - -print(json.dumps(result, indent=4)) \ No newline at end of file diff --git a/docs/Examples/deepseek/smart_scraper_lite_deepseek.md b/docs/Examples/deepseek/smart_scraper_lite_deepseek.md deleted file mode 100644 index 48331ffb..00000000 --- a/docs/Examples/deepseek/smart_scraper_lite_deepseek.md +++ /dev/null @@ -1,32 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("DEEPSEEK_API_KEY"), - "model": "deepseek/deepseek-coder-33b-instruct", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_lite_graph = SmartScraperLiteGraph( - prompt="Who is Marco Perini?", - source="https://perinim.github.io/", - config=graph_config -) - -result = smart_scraper_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/deepseek/smart_scraper_multi_lite_deepseek.md b/docs/Examples/deepseek/smart_scraper_multi_lite_deepseek.md deleted file mode 100644 index bc36c2a7..00000000 --- a/docs/Examples/deepseek/smart_scraper_multi_lite_deepseek.md +++ /dev/null @@ -1,36 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("DEEPSEEK_API_KEY"), - "model": "deepseek/deepseek-coder-33b-instruct", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/ernie/document_scraper_anthropic_ernie.md b/docs/Examples/ernie/document_scraper_anthropic_ernie.md deleted file mode 100644 index 41e40d51..00000000 --- a/docs/Examples/ernie/document_scraper_anthropic_ernie.md +++ /dev/null @@ -1,40 +0,0 @@ -```python -""" -document_scraper example -""" -import os -import json -from scrapegraphai.graphs import DocumentScraperGraph - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -graph_config = { - "llm": { - "model": "ernie/ernie-bot-turbo", - "ernie_client_id": "", - "ernie_client_secret": "", - "temperature": 0.1 - } -} - - -source = """ - The Divine Comedy, Italian La Divina Commedia, original name La commedia, long narrative poem written in Italian - circa 1308/21 by Dante. It is usually held to be one of the world s great works of literature. - Divided into three major sections—Inferno, Purgatorio, and Paradiso—the narrative traces the journey of Dante - from darkness and error to the revelation of the divine light, culminating in the Beatific Vision of God. - Dante is guided by the Roman poet Virgil, who represents the epitome of human knowledge, from the dark wood - through the descending circles of the pit of Hell (Inferno). He then climbs the mountain of Purgatory, guided - by the Roman poet Statius, who represents the fulfilment of human knowledge, and is finally led by his lifelong love, - the Beatrice of his earlier poetry, through the celestial spheres of Paradise. -""" - -pdf_scraper_graph = DocumentScraperGraph( - prompt="Summarize the text and find the main topics", - source=source, - config=graph_config, -) -result = pdf_scraper_graph.run() - -print(json.dumps(result, indent=4)) \ No newline at end of file diff --git a/docs/Examples/ernie/smart_scraper_lite_ernie.md b/docs/Examples/ernie/smart_scraper_lite_ernie.md deleted file mode 100644 index 73f6530e..00000000 --- a/docs/Examples/ernie/smart_scraper_lite_ernie.md +++ /dev/null @@ -1,32 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("ERNIE_API_KEY"), - "model": "ernie/ernie-bot-4", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_lite_graph = SmartScraperLiteGraph( - prompt="Who is Marco Perini?", - source="https://perinim.github.io/", - config=graph_config -) - -result = smart_scraper_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/ernie/smart_scraper_multi_lite_ernie.md b/docs/Examples/ernie/smart_scraper_multi_lite_ernie.md deleted file mode 100644 index 8427e7d7..00000000 --- a/docs/Examples/ernie/smart_scraper_multi_lite_ernie.md +++ /dev/null @@ -1,36 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("ERNIE_API_KEY"), - "model": "ernie/ernie-bot-4", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/extras/browser_base_integration.md b/docs/Examples/extras/browser_base_integration.md deleted file mode 100644 index 276c8d12..00000000 --- a/docs/Examples/extras/browser_base_integration.md +++ /dev/null @@ -1,50 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "api_key": os.getenv("OPENAI_API_KEY"), - "model": "openai/gpt-4o", - }, - "browser_base": { - "api_key": os.getenv("BROWSER_BASE_API_KEY"), - "project_id": os.getenv("BROWSER_BASE_PROJECT_ID"), - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me what does the company do, the name and a contact email.", - source="https://scrapegraphai.com/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/extras/cond_smartscraper_usage.md b/docs/Examples/extras/cond_smartscraper_usage.md deleted file mode 100644 index cf6700ec..00000000 --- a/docs/Examples/extras/cond_smartscraper_usage.md +++ /dev/null @@ -1,39 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraperMultiConcatGraph with Groq -""" - -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("GROQ_APIKEY"), - "model": "groq/gemma-7b-it", - }, - "verbose": True, - "headless": True, - "reattempt": True #Setting this to True will allow the graph to reattempt the scraping process -} - -# ******************************************************* -# Create the SmartScraperMultiCondGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperGraph( - prompt="Who is Marco Perini?", - source="https://perinim.github.io/", - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/extras/conditional_usage.md b/docs/Examples/extras/conditional_usage.md deleted file mode 100644 index 2d27e388..00000000 --- a/docs/Examples/extras/conditional_usage.md +++ /dev/null @@ -1,42 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraperMultiConcatGraph with Groq -""" - -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("OPENAI_API_KEY"), - "model": "openai/gpt-4o", - }, - - "verbose": True, - "headless": False, -} - -# ******************************************************* -# Create the SmartScraperMultiCondGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source=[ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/extras/custom_prompt.md b/docs/Examples/extras/custom_prompt.md deleted file mode 100644 index df5b54a8..00000000 --- a/docs/Examples/extras/custom_prompt.md +++ /dev/null @@ -1,51 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -prompt = "Some more info" - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-3.5-turbo", - }, - "additional_info": prompt, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config, -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/extras/force_mode.md b/docs/Examples/extras/force_mode.md deleted file mode 100644 index fb5af97c..00000000 --- a/docs/Examples/extras/force_mode.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "model": "ollama/llama3", - "temperature": 0, - # "format": "json", # Ollama needs the format to be specified explicitly - # "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "embeddings": { - "model": "ollama/nomic-embed-text", - "temperature": 0, - # "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "force": True, - "caching": True -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/extras/html_mode.md b/docs/Examples/extras/html_mode.md deleted file mode 100644 index c9e776dc..00000000 --- a/docs/Examples/extras/html_mode.md +++ /dev/null @@ -1,50 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -By default smart scraper converts in md format the -code. If you want to just use the original code, you have -to specify in the confi -""" - -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "api_key": os.getenv("OPENAI_API_KEY"), - "model": "openai/gpt-4o", - }, - "html_mode": True, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me what does the company do, the name and a contact email.", - source="https://scrapegraphai.com/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/extras/load_yml.md b/docs/Examples/extras/load_yml.md deleted file mode 100644 index 6c27333d..00000000 --- a/docs/Examples/extras/load_yml.md +++ /dev/null @@ -1,33 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import yaml -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -with open("example.yml", 'r') as file: - graph_config = yaml.safe_load(file) - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the titles", - source="https://sport.sky.it/nba?gr=www", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/extras/no_cut.md b/docs/Examples/extras/no_cut.md deleted file mode 100644 index 0937f9bf..00000000 --- a/docs/Examples/extras/no_cut.md +++ /dev/null @@ -1,44 +0,0 @@ -```python -""" -This example shows how to do not process the html code in the fetch phase -""" - -import os, json -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "api_key": "s", - "model": "openai/gpt-3.5-turbo", - }, - "cut": False, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="Extract me the python code inside the page", - source="https://www.exploit-db.com/exploits/51447", - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/extras/proxy_rotation.md b/docs/Examples/extras/proxy_rotation.md deleted file mode 100644 index b26f63e7..00000000 --- a/docs/Examples/extras/proxy_rotation.md +++ /dev/null @@ -1,49 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": "API_KEY", - "model": "openai/gpt-3.5-turbo", - }, - "loader_kwargs": { - "proxy" : { - "server": "http:/**********", - "username": "********", - "password": "***", - }, - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/extras/rag_caching.md b/docs/Examples/extras/rag_caching.md deleted file mode 100644 index d4825cf6..00000000 --- a/docs/Examples/extras/rag_caching.md +++ /dev/null @@ -1,47 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-3.5-turbo", - }, - "caching": True -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) \ No newline at end of file diff --git a/docs/Examples/extras/reasoning.md b/docs/Examples/extras/reasoning.md deleted file mode 100644 index 11545a74..00000000 --- a/docs/Examples/extras/reasoning.md +++ /dev/null @@ -1,47 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "api_key": os.getenv("OPENAI_API_KEY"), - "model": "openai/gpt-4o", - }, - "reasoning": True, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me what does the company do, the name and a contact email.", - source="https://scrapegraphai.com/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/extras/scrape_do.md b/docs/Examples/extras/scrape_do.md deleted file mode 100644 index 0aa49357..00000000 --- a/docs/Examples/extras/scrape_do.md +++ /dev/null @@ -1,41 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "api_key": os.getenv("OPENAI_API_KEY"), - "model": "openai/gpt-4o", - }, - "scrape_do": { - "api_key": os.getenv("SCRAPE_DO_API_KEY"), - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects", - source="https://perinim.github.io/projects/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/extras/screenshot_scaping.md b/docs/Examples/extras/screenshot_scaping.md deleted file mode 100644 index 14965162..00000000 --- a/docs/Examples/extras/screenshot_scaping.md +++ /dev/null @@ -1,33 +0,0 @@ -```python -""" -example of scraping with screenshots -""" -import asyncio -from scrapegraphai.utils.screenshot_scraping import (take_screenshot, - select_area_with_opencv, - crop_image, detect_text) - -# STEP 1: Take a screenshot -image = asyncio.run(take_screenshot( - url="https://colab.google/", - save_path="Savedscreenshots/test_image.jpeg", - quality = 50 -)) - -# STEP 2 (Optional): Select an area of the image which you want to use for text detection. -LEFT, TOP, RIGHT, BOTTOM = select_area_with_opencv(image) -print("LEFT: ", LEFT, " TOP: ", TOP, " RIGHT: ", RIGHT, " BOTTOM: ", BOTTOM) - -# STEP 3 (Optional): Crop the image. -# Note: If any of the coordinates (LEFT, TOP, RIGHT, BOTTOM) is None, -# it will be set to the corresponding edge of the image. -cropped_image = crop_image(image, LEFT=LEFT, RIGHT=RIGHT,TOP=TOP,BOTTOM=BOTTOM) - -# STEP 4: Detect text -TEXT = detect_text( - cropped_image, # The image to detect text from - languages = ["en"] # The languages to detect text in -) - -print("DETECTED TEXT: ") -print(TEXT) diff --git a/docs/Examples/extras/serch_graph_scehma.md b/docs/Examples/extras/serch_graph_scehma.md deleted file mode 100644 index 4fab5b3a..00000000 --- a/docs/Examples/extras/serch_graph_scehma.md +++ /dev/null @@ -1,44 +0,0 @@ -```python -""" -Example of Search Graph -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -from pydantic import BaseModel, Field -from typing import List -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -class CeoName(BaseModel): - ceo_name: str = Field(description="The name and surname of the ceo") - -class Ceos(BaseModel): - names: List[CeoName] - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - }, - "max_results": 2, - "verbose": True, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt=f"Who is the ceo of Appke?", - schema = Ceos, - config=graph_config, -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/extras/slow_mo.md b/docs/Examples/extras/slow_mo.md deleted file mode 100644 index f239fe6c..00000000 --- a/docs/Examples/extras/slow_mo.md +++ /dev/null @@ -1,49 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/mistral", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - # "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "embeddings": { - "model": "ollama/nomic-embed-text", - "temperature": 0, - # "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "loader_kwargs": { - "slow_mo": 10000 - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the titles", - # also accepts a string with the already downloaded HTML code - source="https://www.wired.com/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) \ No newline at end of file diff --git a/docs/Examples/extras/undected_playwrigth.md b/docs/Examples/extras/undected_playwrigth.md deleted file mode 100644 index 365d764f..00000000 --- a/docs/Examples/extras/undected_playwrigth.md +++ /dev/null @@ -1,48 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "headless": False, - "backend": "undetected_chromedriver" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/fireworks/code_generator_graph_fireworks.md b/docs/Examples/fireworks/code_generator_graph_fireworks.md deleted file mode 100644 index d014e0ac..00000000 --- a/docs/Examples/fireworks/code_generator_graph_fireworks.md +++ /dev/null @@ -1,61 +0,0 @@ -```python -""" -Basic example of scraping pipeline using Code Generator with schema -""" -import os -import json -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import CodeGeneratorGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "verbose": True, - "headless": False, - "reduction": 2, - "max_iterations": { - "overall": 10, - "syntax": 3, - "execution": 3, - "validation": 3, - "semantic": 3 - }, - "output_file_name": "extracted_data.py" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -code_generator_graph = CodeGeneratorGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = code_generator_graph.run() -print(result) \ No newline at end of file diff --git a/docs/Examples/fireworks/csv_scraper_fireworks.md b/docs/Examples/fireworks/csv_scraper_fireworks.md deleted file mode 100644 index 74e0ccec..00000000 --- a/docs/Examples/fireworks/csv_scraper_fireworks.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "headless": False, -} - -# ************************************************ -# Create the CSVScraperGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperGraph( - prompt="List me all the last names", - source=str(text), # Pass the content of the file, not the file object - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/fireworks/csv_scraper_graph_multi_fireworks.md b/docs/Examples/fireworks/csv_scraper_graph_multi_fireworks.md deleted file mode 100644 index 2b939890..00000000 --- a/docs/Examples/fireworks/csv_scraper_graph_multi_fireworks.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperMultiGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the CSVScraperMultiGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperMultiGraph( - prompt="List me all the last names", - source=[str(text), str(text)], - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/fireworks/custom_graph_fireworks.md b/docs/Examples/fireworks/custom_graph_fireworks.md deleted file mode 100644 index 40279dad..00000000 --- a/docs/Examples/fireworks/custom_graph_fireworks.md +++ /dev/null @@ -1,99 +0,0 @@ -```python -""" -Example of custom graph using existing nodes -""" -import os -from dotenv import load_dotenv -from langchain_openai import ChatOpenAI -from scrapegraphai.graphs import BaseGraph -from scrapegraphai.nodes import FetchNode, ParseNode, GenerateAnswerNode, RobotsNode -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Define the graph nodes -# ************************************************ - -llm_model = ChatOpenAI(graph_config["llm"]) - -# define the nodes for the graph -robot_node = RobotsNode( - input="url", - output=["is_scrapable"], - node_config={ - "llm_model": llm_model, - "force_scraping": True, - "verbose": True, - } -) - -fetch_node = FetchNode( - input="url | local_dir", - output=["doc"], - node_config={ - "verbose": True, - "headless": True, - } -) -parse_node = ParseNode( - input="doc", - output=["parsed_doc"], - node_config={ - "chunk_size": 4096, - "verbose": True, - } -) - -generate_answer_node = GenerateAnswerNode( - input="user_prompt & (relevant_chunks | parsed_doc | doc)", - output=["answer"], - node_config={ - "llm_model": llm_model, - "verbose": True, - } -) - -# ************************************************ -# Create the graph by defining the connections -# ************************************************ - -graph = BaseGraph( - nodes=[ - robot_node, - fetch_node, - parse_node, - ], - edges=[ - (robot_node, fetch_node), - (fetch_node, parse_node), - (parse_node, generate_answer_node) - ], - entry_point=robot_node -) - -# ************************************************ -# Execute the graph -# ************************************************ - -result, execution_info = graph.execute({ - "user_prompt": "Describe the content", - "url": "https://example.com/" -}) - -# get the answer from the result -result = result.get("answer", "No answer found.") -print(result) diff --git a/docs/Examples/fireworks/depth_search_graph_fireworks.md b/docs/Examples/fireworks/depth_search_graph_fireworks.md deleted file mode 100644 index b1a69808..00000000 --- a/docs/Examples/fireworks/depth_search_graph_fireworks.md +++ /dev/null @@ -1,31 +0,0 @@ -```python -""" -depth_search_graph_opeani example -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import DepthSearchGraph - -load_dotenv() - -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "verbose": True, - "headless": False, - "depth": 2, - "only_inside_links": False, -} - -search_graph = DepthSearchGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/fireworks/document_scraper_anthropic_fireworks.md b/docs/Examples/fireworks/document_scraper_anthropic_fireworks.md deleted file mode 100644 index 9b1ecc15..00000000 --- a/docs/Examples/fireworks/document_scraper_anthropic_fireworks.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -document_scraper example -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "verbose": True, - "headless": False, -} - - -source = """ - The Divine Comedy, Italian La Divina Commedia, original name La commedia, long narrative poem written in Italian - circa 1308/21 by Dante. It is usually held to be one of the world s great works of literature. - Divided into three major sections—Inferno, Purgatorio, and Paradiso—the narrative traces the journey of Dante - from darkness and error to the revelation of the divine light, culminating in the Beatific Vision of God. - Dante is guided by the Roman poet Virgil, who represents the epitome of human knowledge, from the dark wood - through the descending circles of the pit of Hell (Inferno). He then climbs the mountain of Purgatory, guided - by the Roman poet Statius, who represents the fulfilment of human knowledge, and is finally led by his lifelong love, - the Beatrice of his earlier poetry, through the celestial spheres of Paradise. -""" - -pdf_scraper_graph = DocumentScraperGraph( - prompt="Summarize the text and find the main topics", - source=source, - config=graph_config, -) -result = pdf_scraper_graph.run() - -print(json.dumps(result, indent=4)) \ No newline at end of file diff --git a/docs/Examples/fireworks/json_scraper_fireworkspy.md b/docs/Examples/fireworks/json_scraper_fireworkspy.md deleted file mode 100644 index e57ea407..00000000 --- a/docs/Examples/fireworks/json_scraper_fireworkspy.md +++ /dev/null @@ -1,48 +0,0 @@ -```python -""" -Basic example of scraping pipeline using JSONScraperGraph from JSON documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperGraph -from scrapegraphai.utils import prettify_exec_info -load_dotenv() - -# ************************************************ -# Read the JSON file -# ************************************************ - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the JSONScraperGraph instance and run it -# ************************************************ - -json_scraper_graph = JSONScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = json_scraper_graph.run() -print(result) diff --git a/docs/Examples/fireworks/json_scraper_multi_fireworks.md b/docs/Examples/fireworks/json_scraper_multi_fireworks.md deleted file mode 100644 index e9f4128f..00000000 --- a/docs/Examples/fireworks/json_scraper_multi_fireworks.md +++ /dev/null @@ -1,40 +0,0 @@ -```python -""" -Module for showing how PDFScraper multi works -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperMultiGraph - -load_dotenv() - -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "verbose": True, - "headless": False, -} - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -sources = [text, text] - -multiple_search_graph = JSONScraperMultiGraph( - prompt= "List me all the authors, title and genres of the books", - source= sources, - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/fireworks/rate_limit_fireworks.md b/docs/Examples/fireworks/rate_limit_fireworks.md deleted file mode 100644 index 426816af..00000000 --- a/docs/Examples/fireworks/rate_limit_fireworks.md +++ /dev/null @@ -1,50 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with a custom rate limit -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct", - "rate_limit": { - "requests_per_second": 1 - }, - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config, -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/fireworks/scrape_plain_text_fireworks.md b/docs/Examples/fireworks/scrape_plain_text_fireworks.md deleted file mode 100644 index 31f866d2..00000000 --- a/docs/Examples/fireworks/scrape_plain_text_fireworks.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ - -FILE_NAME = "inputs/plain_html_example.txt" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -# It could be also a http request using the request model -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - source=text, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/fireworks/script_generator_fireworks.md b/docs/Examples/fireworks/script_generator_fireworks.md deleted file mode 100644 index 5d6aabb8..00000000 --- a/docs/Examples/fireworks/script_generator_fireworks.md +++ /dev/null @@ -1,48 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "verbose": True, - "headless": False, - "library": "beautifulsoup" - -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/fireworks/script_generator_schema_fireworks.md b/docs/Examples/fireworks/script_generator_schema_fireworks.md deleted file mode 100644 index 9ce34ebe..00000000 --- a/docs/Examples/fireworks/script_generator_schema_fireworks.md +++ /dev/null @@ -1,61 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "verbose": True, - "library": "beautifulsoup", -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config, - schema=Projects -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/fireworks/script_multi_generator_fireworks.md b/docs/Examples/fireworks/script_multi_generator_fireworks.md deleted file mode 100644 index 59224069..00000000 --- a/docs/Examples/fireworks/script_multi_generator_fireworks.md +++ /dev/null @@ -1,53 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorMultiGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "verbose": True, - "library": "beautifulsoup", -} -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ -urls=[ - "https://schultzbergagency.com/emil-raste-karlsen/", - "https://schultzbergagency.com/johanna-hedberg/", -] - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorMultiGraph( - prompt="Find information about actors", - # also accepts a string with the already downloaded HTML code - source=urls, - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/fireworks/search_graph_fireworks.md b/docs/Examples/fireworks/search_graph_fireworks.md deleted file mode 100644 index b066769c..00000000 --- a/docs/Examples/fireworks/search_graph_fireworks.md +++ /dev/null @@ -1,37 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "max_results": 2, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/fireworks/search_graph_schema_fireworks.md b/docs/Examples/fireworks/search_graph_schema_fireworks.md deleted file mode 100644 index 3e2c544a..00000000 --- a/docs/Examples/fireworks/search_graph_schema_fireworks.md +++ /dev/null @@ -1,63 +0,0 @@ -```python -""" -Example of Search Graph -""" - -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Dish(BaseModel): - name: str = Field(description="The name of the dish") - description: str = Field(description="The description of the dish") - -class Dishes(BaseModel): - dishes: List[Dish] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "max_results": 2, - "verbose": True, - "headless": False, -} -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config, - schema=Dishes -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/fireworks/search_link_graph_fireworks.md b/docs/Examples/fireworks/search_link_graph_fireworks.md deleted file mode 100644 index 87ee6fcc..00000000 --- a/docs/Examples/fireworks/search_link_graph_fireworks.md +++ /dev/null @@ -1,48 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -load_dotenv() - -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "max_results": 2, - "verbose": True, - "headless": False, -} -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me the best escursions near Trento", - config=graph_config -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/fireworks/smart_scraper_fireworks.md b/docs/Examples/fireworks/smart_scraper_fireworks.md deleted file mode 100644 index 56ac9747..00000000 --- a/docs/Examples/fireworks/smart_scraper_fireworks.md +++ /dev/null @@ -1,47 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config, -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/fireworks/smart_scraper_lite_fireworks.md b/docs/Examples/fireworks/smart_scraper_lite_fireworks.md deleted file mode 100644 index 3c175e6d..00000000 --- a/docs/Examples/fireworks/smart_scraper_lite_fireworks.md +++ /dev/null @@ -1,32 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("FIREWORKS_API_KEY"), - "model": "fireworks/llama-v2-70b-chat", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_lite_graph = SmartScraperLiteGraph( - prompt="Who is Marco Perini?", - source="https://perinim.github.io/", - config=graph_config -) - -result = smart_scraper_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/fireworks/smart_scraper_multi_concat_fireworks.md b/docs/Examples/fireworks/smart_scraper_multi_concat_fireworks.md deleted file mode 100644 index 3a933a70..00000000 --- a/docs/Examples/fireworks/smart_scraper_multi_concat_fireworks.md +++ /dev/null @@ -1,38 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiConcatGraph - -load_dotenv() - -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "verbose": True, - "headless": False, -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiConcatGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/fireworks/smart_scraper_multi_fireworks.md b/docs/Examples/fireworks/smart_scraper_multi_fireworks.md deleted file mode 100644 index e239273f..00000000 --- a/docs/Examples/fireworks/smart_scraper_multi_fireworks.md +++ /dev/null @@ -1,41 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "verbose": True, - "headless": False, -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/fireworks/smart_scraper_multi_lite_fireworks.md b/docs/Examples/fireworks/smart_scraper_multi_lite_fireworks.md deleted file mode 100644 index e17d9e66..00000000 --- a/docs/Examples/fireworks/smart_scraper_multi_lite_fireworks.md +++ /dev/null @@ -1,36 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("FIREWORKS_API_KEY"), - "model": "fireworks/llama-v2-70b-chat", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/fireworks/smart_scraper_schema_fireworks.md b/docs/Examples/fireworks/smart_scraper_schema_fireworks.md deleted file mode 100644 index b020816e..00000000 --- a/docs/Examples/fireworks/smart_scraper_schema_fireworks.md +++ /dev/null @@ -1,50 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with schema -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import SmartScraperGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "verbose": True, - "headless": False, -} -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) diff --git a/docs/Examples/fireworks/xml_scraper_fireworks.md b/docs/Examples/fireworks/xml_scraper_fireworks.md deleted file mode 100644 index 5c9fee07..00000000 --- a/docs/Examples/fireworks/xml_scraper_fireworks.md +++ /dev/null @@ -1,59 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the XMLScraperGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/fireworks/xml_scraper_graph_multi_fireworks.md b/docs/Examples/fireworks/xml_scraper_graph_multi_fireworks.md deleted file mode 100644 index 4747050c..00000000 --- a/docs/Examples/fireworks/xml_scraper_graph_multi_fireworks.md +++ /dev/null @@ -1,59 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperMultiGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -fireworks_api_key = os.getenv("FIREWORKS_APIKEY") - -graph_config = { - "llm": { - "api_key": fireworks_api_key, - "model": "fireworks/accounts/fireworks/models/mixtral-8x7b-instruct" - }, - "verbose": True, - "headless": False, -} -# ************************************************ -# Create the XMLScraperMultiGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperMultiGraph( - prompt="List me all the authors, title and genres of the books", - source=[text, text], # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/google_genai/code_generator_graph_gemini.md b/docs/Examples/google_genai/code_generator_graph_gemini.md deleted file mode 100644 index a5c09b66..00000000 --- a/docs/Examples/google_genai/code_generator_graph_gemini.md +++ /dev/null @@ -1,60 +0,0 @@ -```python -""" -Basic example of scraping pipeline using Code Generator with schema -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import CodeGeneratorGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - }, - "verbose": True, - "headless": False, - "reduction": 2, - "max_iterations": { - "overall": 10, - "syntax": 3, - "execution": 3, - "validation": 3, - "semantic": 3 - }, - "output_file_name": "extracted_data.py" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -code_generator_graph = CodeGeneratorGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = code_generator_graph.run() -print(result) diff --git a/docs/Examples/google_genai/csv_scraper_gemini.md b/docs/Examples/google_genai/csv_scraper_gemini.md deleted file mode 100644 index 8024e3c4..00000000 --- a/docs/Examples/google_genai/csv_scraper_gemini.md +++ /dev/null @@ -1,53 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the csv file -# ************************************************ - -text = pd.read_csv("inputs/username.csv") - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - }, -} - -# ************************************************ -# Create the CSVScraperGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperGraph( - prompt="List me all the last names", - source=str(text), # Pass the content of the file, not the file object - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/google_genai/csv_scraper_graph_multi_gemini.md b/docs/Examples/google_genai/csv_scraper_graph_multi_gemini.md deleted file mode 100644 index 0ff0258a..00000000 --- a/docs/Examples/google_genai/csv_scraper_graph_multi_gemini.md +++ /dev/null @@ -1,57 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperMultiGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - }, -} - -# ************************************************ -# Create the CSVScraperMultiGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperMultiGraph( - prompt="List me all the last names", - source=[str(text), str(text)], - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/google_genai/depth_search_graph_gemini.md b/docs/Examples/google_genai/depth_search_graph_gemini.md deleted file mode 100644 index 633a293d..00000000 --- a/docs/Examples/google_genai/depth_search_graph_gemini.md +++ /dev/null @@ -1,31 +0,0 @@ -```python -""" -depth_search_graph_opeani example -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import DepthSearchGraph - -load_dotenv() - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - }, - "verbose": True, - "headless": False, - "depth": 2, - "only_inside_links": False, -} - -search_graph = DepthSearchGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/google_genai/document_scraper_gemini.md b/docs/Examples/google_genai/document_scraper_gemini.md deleted file mode 100644 index 1baeeba4..00000000 --- a/docs/Examples/google_genai/document_scraper_gemini.md +++ /dev/null @@ -1,42 +0,0 @@ -```python -""" -document_scraper example -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - }, -} - -source = """ - The Divine Comedy, Italian La Divina Commedia, original name La commedia, long narrative poem written in Italian - circa 1308/21 by Dante. It is usually held to be one of the world s great works of literature. - Divided into three major sections—Inferno, Purgatorio, and Paradiso—the narrative traces the journey of Dante - from darkness and error to the revelation of the divine light, culminating in the Beatific Vision of God. - Dante is guided by the Roman poet Virgil, who represents the epitome of human knowledge, from the dark wood - through the descending circles of the pit of Hell (Inferno). He then climbs the mountain of Purgatory, guided - by the Roman poet Statius, who represents the fulfilment of human knowledge, and is finally led by his lifelong love, - the Beatrice of his earlier poetry, through the celestial spheres of Paradise. -""" - -pdf_scraper_graph = DocumentScraperGraph( - prompt="Summarize the text and find the main topics", - source=source, - config=graph_config, -) -result = pdf_scraper_graph.run() - -print(json.dumps(result, indent=4)) \ No newline at end of file diff --git a/docs/Examples/google_genai/json_scraper_gemini.md b/docs/Examples/google_genai/json_scraper_gemini.md deleted file mode 100644 index 36d5bf42..00000000 --- a/docs/Examples/google_genai/json_scraper_gemini.md +++ /dev/null @@ -1,47 +0,0 @@ -```python -""" -Basic example of scraping pipeline using JSONScraperGraph from JSON documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the JSON file -# ************************************************ - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - }, -} - -# ************************************************ -# Create the JSONScraperGraph instance and run it -# ************************************************ - -json_scraper_graph = JSONScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = json_scraper_graph.run() -print(result) diff --git a/docs/Examples/google_genai/json_scraper_multi_gemini.md b/docs/Examples/google_genai/json_scraper_multi_gemini.md deleted file mode 100644 index f60f641e..00000000 --- a/docs/Examples/google_genai/json_scraper_multi_gemini.md +++ /dev/null @@ -1,39 +0,0 @@ -```python -""" -Module for showing how JSONScraperMultiGraph multi works -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperMultiGraph - -load_dotenv() - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - }, - "library": "beautifulsoup" -} - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -sources = [text, text] - -multiple_search_graph = JSONScraperMultiGraph( - prompt= "List me all the authors, title and genres of the books", - source= sources, - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/google_genai/rate_limit_gemini.md b/docs/Examples/google_genai/rate_limit_gemini.md deleted file mode 100644 index a41d5e1b..00000000 --- a/docs/Examples/google_genai/rate_limit_gemini.md +++ /dev/null @@ -1,47 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with a custom rate limit -""" -import os -from dotenv import load_dotenv -from scrapegraphai.utils import prettify_exec_info -from scrapegraphai.graphs import SmartScraperGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - "rate_limit": { - "requests_per_second": 1 - } - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the news with their description.", - # also accepts a string with the already downloaded HTML code - source="https://www.wired.com", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_genai/readme.md b/docs/Examples/google_genai/readme.md deleted file mode 100644 index b1aa385a..00000000 --- a/docs/Examples/google_genai/readme.md +++ /dev/null @@ -1,2 +0,0 @@ -```python -This folder contains an example of how to use ScrapeGraph-AI with Gemini, a large language model (LLM) from Google AI. The example shows how to extract information from a website using a natural language prompt. \ No newline at end of file diff --git a/docs/Examples/google_genai/scrape_plain_text_gemini.md b/docs/Examples/google_genai/scrape_plain_text_gemini.md deleted file mode 100644 index f6a462bb..00000000 --- a/docs/Examples/google_genai/scrape_plain_text_gemini.md +++ /dev/null @@ -1,57 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ - -FILE_NAME = "inputs/plain_html_example.txt" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -# It could be also a http request using the request model -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - "temperature": 0, - "streaming": True - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the news with their description.", - source=text, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_genai/scrape_xml_gemini.md b/docs/Examples/google_genai/scrape_xml_gemini.md deleted file mode 100644 index 003be1e1..00000000 --- a/docs/Examples/google_genai/scrape_xml_gemini.md +++ /dev/null @@ -1,57 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - "temperature": 0, - "streaming": True - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_genai/script_generator_gemini.md b/docs/Examples/google_genai/script_generator_gemini.md deleted file mode 100644 index 276ac95f..00000000 --- a/docs/Examples/google_genai/script_generator_gemini.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - }, - "library": "beautifoulsoup" -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -smart_scraper_graph = ScriptCreatorGraph( - prompt="List me all the news with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_genai/script_multi_generator_gemini.md b/docs/Examples/google_genai/script_multi_generator_gemini.md deleted file mode 100644 index 670be810..00000000 --- a/docs/Examples/google_genai/script_multi_generator_gemini.md +++ /dev/null @@ -1,54 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorMultiGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - }, - "library": "beautifoulsoup" -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -urls=[ - "https://schultzbergagency.com/emil-raste-karlsen/", - "https://schultzbergagency.com/johanna-hedberg/", -] - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorMultiGraph( - prompt="Find information about actors", - # also accepts a string with the already downloaded HTML code - source=urls, - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_genai/search_graph_gemini.md b/docs/Examples/google_genai/search_graph_gemini.md deleted file mode 100644 index b5792a83..00000000 --- a/docs/Examples/google_genai/search_graph_gemini.md +++ /dev/null @@ -1,42 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - "temperature": 0, - "streaming": True - }, - "max_results": 5, - "verbose": True, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me all the regions of Italy.", - config=graph_config -) - -result = search_graph.run() -print(result) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/google_genai/search_graph_schema_gemini.md b/docs/Examples/google_genai/search_graph_schema_gemini.md deleted file mode 100644 index f4d3d59d..00000000 --- a/docs/Examples/google_genai/search_graph_schema_gemini.md +++ /dev/null @@ -1,59 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Dish(BaseModel): - name: str = Field(description="The name of the dish") - description: str = Field(description="The description of the dish") - -class Dishes(BaseModel): - dishes: List[Dish] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - }, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config, - schema=Dishes -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/google_genai/search_link_graph_gemini.md b/docs/Examples/google_genai/search_link_graph_gemini.md deleted file mode 100644 index 573c3e3e..00000000 --- a/docs/Examples/google_genai/search_link_graph_gemini.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -load_dotenv() - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - }, -} -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me the best escursions near Trento", - config=graph_config -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/google_genai/smart_scraper_gemini.md b/docs/Examples/google_genai/smart_scraper_gemini.md deleted file mode 100644 index 01493965..00000000 --- a/docs/Examples/google_genai/smart_scraper_gemini.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.utils import prettify_exec_info -from scrapegraphai.graphs import SmartScraperGraph -load_dotenv() - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the news with their description.", - # also accepts a string with the already downloaded HTML code - source="https://www.wired.com", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_genai/smart_scraper_lite_google_genai.md b/docs/Examples/google_genai/smart_scraper_lite_google_genai.md deleted file mode 100644 index a5c96f0a..00000000 --- a/docs/Examples/google_genai/smart_scraper_lite_google_genai.md +++ /dev/null @@ -1,32 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("GOOGLE_API_KEY"), - "model": "gemini-pro", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_lite_graph = SmartScraperLiteGraph( - prompt="Who is Marco Perini?", - source="https://perinim.github.io/", - config=graph_config -) - -result = smart_scraper_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_genai/smart_scraper_multi_concat_gemini.md b/docs/Examples/google_genai/smart_scraper_multi_concat_gemini.md deleted file mode 100644 index 5d977e1c..00000000 --- a/docs/Examples/google_genai/smart_scraper_multi_concat_gemini.md +++ /dev/null @@ -1,40 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiConcatGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - }, -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiConcatGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/google_genai/smart_scraper_multi_gemini.md b/docs/Examples/google_genai/smart_scraper_multi_gemini.md deleted file mode 100644 index 495d89cb..00000000 --- a/docs/Examples/google_genai/smart_scraper_multi_gemini.md +++ /dev/null @@ -1,40 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - }, -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/google_genai/smart_scraper_multi_lite_gemini.md b/docs/Examples/google_genai/smart_scraper_multi_lite_gemini.md deleted file mode 100644 index ae6fe1dd..00000000 --- a/docs/Examples/google_genai/smart_scraper_multi_lite_gemini.md +++ /dev/null @@ -1 +0,0 @@ -```python diff --git a/docs/Examples/google_genai/smart_scraper_multi_lite_google_genai.md b/docs/Examples/google_genai/smart_scraper_multi_lite_google_genai.md deleted file mode 100644 index c33d0f58..00000000 --- a/docs/Examples/google_genai/smart_scraper_multi_lite_google_genai.md +++ /dev/null @@ -1,35 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("GOOGLE_API_KEY"), - "model": "gemini-pro", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_genai/smart_scraper_schema_gemini.md b/docs/Examples/google_genai/smart_scraper_schema_gemini.md deleted file mode 100644 index 10e992e7..00000000 --- a/docs/Examples/google_genai/smart_scraper_schema_gemini.md +++ /dev/null @@ -1,57 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with schema -""" -import os -from typing import List -from pydantic import BaseModel, Field -from dotenv import load_dotenv -from scrapegraphai.utils import prettify_exec_info -from scrapegraphai.graphs import SmartScraperGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the news with their description.", - # also accepts a string with the already downloaded HTML code - source="https://www.wired.com", - schema=Projects, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_genai/xml_scraper_gemini.md b/docs/Examples/google_genai/xml_scraper_gemini.md deleted file mode 100644 index 008d14aa..00000000 --- a/docs/Examples/google_genai/xml_scraper_gemini.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - }, -} -# ************************************************ -# Create the XMLScraperGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") - diff --git a/docs/Examples/google_genai/xml_scraper_graph_multi_gemini.md b/docs/Examples/google_genai/xml_scraper_graph_multi_gemini.md deleted file mode 100644 index 2159cfb7..00000000 --- a/docs/Examples/google_genai/xml_scraper_graph_multi_gemini.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperMultiGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_genai/gemini-pro", - }, -} - -# ************************************************ -# Create the XMLScraperMultiGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperMultiGraph( - prompt="List me all the authors, title and genres of the books", - source=[text, text], # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/google_vertexai/code_generator_graph_vertex.md b/docs/Examples/google_vertexai/code_generator_graph_vertex.md deleted file mode 100644 index 4e1a0e2e..00000000 --- a/docs/Examples/google_vertexai/code_generator_graph_vertex.md +++ /dev/null @@ -1,61 +0,0 @@ -```python -""" -Basic example of scraping pipeline using Code Generator with schema -""" - -import os, json -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import CodeGeneratorGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - }, - "verbose": True, - "headless": False, - "reduction": 2, - "max_iterations": { - "overall": 10, - "syntax": 3, - "execution": 3, - "validation": 3, - "semantic": 3 - }, - "output_file_name": "extracted_data.py" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -code_generator_graph = CodeGeneratorGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = code_generator_graph.run() -print(result) \ No newline at end of file diff --git a/docs/Examples/google_vertexai/csv_scraper_gemini.md b/docs/Examples/google_vertexai/csv_scraper_gemini.md deleted file mode 100644 index a1d75e4d..00000000 --- a/docs/Examples/google_vertexai/csv_scraper_gemini.md +++ /dev/null @@ -1,54 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperGraph from CSV documents -""" - -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the csv file -# ************************************************ - -text = pd.read_csv("inputs/username.csv") - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - }, -} - -# ************************************************ -# Create the CSVScraperGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperGraph( - prompt="List me all the last names", - source=str(text), # Pass the content of the file, not the file object - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/google_vertexai/csv_scraper_graph_multi_gemini.md b/docs/Examples/google_vertexai/csv_scraper_graph_multi_gemini.md deleted file mode 100644 index a7381d73..00000000 --- a/docs/Examples/google_vertexai/csv_scraper_graph_multi_gemini.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperMultiGraph from CSV documents -""" - -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - }, -} - -# ************************************************ -# Create the CSVScraperMultiGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperMultiGraph( - prompt="List me all the last names", - source=[str(text), str(text)], - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/google_vertexai/custom_graph_gemini.md b/docs/Examples/google_vertexai/custom_graph_gemini.md deleted file mode 100644 index c512a7e2..00000000 --- a/docs/Examples/google_vertexai/custom_graph_gemini.md +++ /dev/null @@ -1,85 +0,0 @@ -```python -""" -Example of custom graph using Gemini Google model -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.models import Gemini -from scrapegraphai.graphs import BaseGraph -from scrapegraphai.nodes import FetchNode, ParseNode, RAGNode, GenerateAnswerNode -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - "temperature": 0, - "streaming": True - }, -} - -# ************************************************ -# Define the graph nodes -# ************************************************ - -llm_model = Gemini(graph_config["llm"]) - -# define the nodes for the graph -fetch_node = FetchNode( - input="url | local_dir", - output=["doc"], -) -parse_node = ParseNode( - input="doc", - output=["parsed_doc"], - node_config={"chunk_size": 4096} -) -rag_node = RAGNode( - input="user_prompt & (parsed_doc | doc)", - output=["relevant_chunks"], - node_config={"llm": llm_model}, -) -generate_answer_node = GenerateAnswerNode( - input="user_prompt & (relevant_chunks | parsed_doc | doc)", - output=["answer"], - node_config={"llm": llm_model}, -) - -# ************************************************ -# Create the graph by defining the connections -# ************************************************ - -graph = BaseGraph( - nodes={ - fetch_node, - parse_node, - rag_node, - generate_answer_node, - }, - edges={ - (fetch_node, parse_node), - (parse_node, rag_node), - (rag_node, generate_answer_node) - }, - entry_point=fetch_node -) - -# ************************************************ -# Execute the graph -# ************************************************ - -result, execution_info = graph.execute({ - "user_prompt": "List me the projects with their description", - "url": "https://perinim.github.io/projects/" -}) - -# get the answer from the result -result = result.get("answer", "No answer found.") -print(result) diff --git a/docs/Examples/google_vertexai/depth_search_graph_gemini.md b/docs/Examples/google_vertexai/depth_search_graph_gemini.md deleted file mode 100644 index c4cb60d9..00000000 --- a/docs/Examples/google_vertexai/depth_search_graph_gemini.md +++ /dev/null @@ -1,31 +0,0 @@ -```python -""" -depth_search_graph_opeani example -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import DepthSearchGraph - -load_dotenv() - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - }, - "verbose": True, - "headless": False, - "depth": 2, - "only_inside_links": False, -} - -search_graph = DepthSearchGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/google_vertexai/document_scraper_vertex.md b/docs/Examples/google_vertexai/document_scraper_vertex.md deleted file mode 100644 index 0f0bf3bb..00000000 --- a/docs/Examples/google_vertexai/document_scraper_vertex.md +++ /dev/null @@ -1,42 +0,0 @@ -```python -""" -document_scraper example -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - }, -} - -source = """ - The Divine Comedy, Italian La Divina Commedia, original name La commedia, long narrative poem written in Italian - circa 1308/21 by Dante. It is usually held to be one of the world s great works of literature. - Divided into three major sections—Inferno, Purgatorio, and Paradiso—the narrative traces the journey of Dante - from darkness and error to the revelation of the divine light, culminating in the Beatific Vision of God. - Dante is guided by the Roman poet Virgil, who represents the epitome of human knowledge, from the dark wood - through the descending circles of the pit of Hell (Inferno). He then climbs the mountain of Purgatory, guided - by the Roman poet Statius, who represents the fulfilment of human knowledge, and is finally led by his lifelong love, - the Beatrice of his earlier poetry, through the celestial spheres of Paradise. -""" - -pdf_scraper_graph = DocumentScraperGraph( - prompt="Summarize the text and find the main topics", - source=source, - config=graph_config, -) -result = pdf_scraper_graph.run() - -print(json.dumps(result, indent=4)) \ No newline at end of file diff --git a/docs/Examples/google_vertexai/json_scraper_gemini.md b/docs/Examples/google_vertexai/json_scraper_gemini.md deleted file mode 100644 index 751614e4..00000000 --- a/docs/Examples/google_vertexai/json_scraper_gemini.md +++ /dev/null @@ -1,47 +0,0 @@ -```python -""" -Basic example of scraping pipeline using JSONScraperGraph from JSON documents -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperGraph -from scrapegraphai.utils import prettify_exec_info -load_dotenv() - -# ************************************************ -# Read the JSON file -# ************************************************ - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - }, -} - -# ************************************************ -# Create the JSONScraperGraph instance and run it -# ************************************************ - -json_scraper_graph = JSONScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = json_scraper_graph.run() -print(result) diff --git a/docs/Examples/google_vertexai/json_scraper_multi_gemini.md b/docs/Examples/google_vertexai/json_scraper_multi_gemini.md deleted file mode 100644 index e1cffc86..00000000 --- a/docs/Examples/google_vertexai/json_scraper_multi_gemini.md +++ /dev/null @@ -1,39 +0,0 @@ -```python -""" -Module for showing how JSONScraperMultiGraph multi works -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperMultiGraph - -load_dotenv() - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - }, - "library": "beautifulsoup" -} - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -sources = [text, text] - -multiple_search_graph = JSONScraperMultiGraph( - prompt= "List me all the authors, title and genres of the books", - source= sources, - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/google_vertexai/rate_limit_gemini.md b/docs/Examples/google_vertexai/rate_limit_gemini.md deleted file mode 100644 index e7255aa1..00000000 --- a/docs/Examples/google_vertexai/rate_limit_gemini.md +++ /dev/null @@ -1,48 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with a custom rate limit -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.utils import prettify_exec_info -from scrapegraphai.graphs import SmartScraperGraph -load_dotenv() - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - "rate_limit": { - "requests_per_second": 1 - } - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the news with their description.", - # also accepts a string with the already downloaded HTML code - source="https://www.wired.com", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_vertexai/readme.md b/docs/Examples/google_vertexai/readme.md deleted file mode 100644 index b1aa385a..00000000 --- a/docs/Examples/google_vertexai/readme.md +++ /dev/null @@ -1,2 +0,0 @@ -```python -This folder contains an example of how to use ScrapeGraph-AI with Gemini, a large language model (LLM) from Google AI. The example shows how to extract information from a website using a natural language prompt. \ No newline at end of file diff --git a/docs/Examples/google_vertexai/scrape_plain_text_gemini.md b/docs/Examples/google_vertexai/scrape_plain_text_gemini.md deleted file mode 100644 index 5a94f748..00000000 --- a/docs/Examples/google_vertexai/scrape_plain_text_gemini.md +++ /dev/null @@ -1,57 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ - -FILE_NAME = "inputs/plain_html_example.txt" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -# It could be also a http request using the request model -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - "temperature": 0, - "streaming": True - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the news with their description.", - source=text, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_vertexai/scrape_xml_gemini.md b/docs/Examples/google_vertexai/scrape_xml_gemini.md deleted file mode 100644 index 2d55e0de..00000000 --- a/docs/Examples/google_vertexai/scrape_xml_gemini.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from XML documents -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - "temperature": 0, - "streaming": True - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_vertexai/script_generator_gemini.md b/docs/Examples/google_vertexai/script_generator_gemini.md deleted file mode 100644 index b5580613..00000000 --- a/docs/Examples/google_vertexai/script_generator_gemini.md +++ /dev/null @@ -1,47 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - }, - "library": "beautifoulsoup" -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -smart_scraper_graph = ScriptCreatorGraph( - prompt="List me all the news with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_vertexai/script_multi_generator_gemini.md b/docs/Examples/google_vertexai/script_multi_generator_gemini.md deleted file mode 100644 index b736fd78..00000000 --- a/docs/Examples/google_vertexai/script_multi_generator_gemini.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorMultiGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - }, - "library": "beautifoulsoup" -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -urls=[ - "https://schultzbergagency.com/emil-raste-karlsen/", - "https://schultzbergagency.com/johanna-hedberg/", -] - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorMultiGraph( - prompt="Find information about actors", - # also accepts a string with the already downloaded HTML code - source=urls, - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_vertexai/search_graph_gemini.md b/docs/Examples/google_vertexai/search_graph_gemini.md deleted file mode 100644 index cc110619..00000000 --- a/docs/Examples/google_vertexai/search_graph_gemini.md +++ /dev/null @@ -1,43 +0,0 @@ -```python -""" -Example of Search Graph -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - "temperature": 0, - "streaming": True - }, - "max_results": 5, - "verbose": True, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me all the regions of Italy.", - config=graph_config -) - -result = search_graph.run() -print(result) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/google_vertexai/search_graph_schema_gemini.md b/docs/Examples/google_vertexai/search_graph_schema_gemini.md deleted file mode 100644 index 868a4f03..00000000 --- a/docs/Examples/google_vertexai/search_graph_schema_gemini.md +++ /dev/null @@ -1,62 +0,0 @@ -```python -""" -Example of Search Graph -""" - -import os -from dotenv import load_dotenv -load_dotenv() - -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -from pydantic import BaseModel, Field -from typing import List - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Dish(BaseModel): - name: str = Field(description="The name of the dish") - description: str = Field(description="The description of the dish") - -class Dishes(BaseModel): - dishes: List[Dish] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - }, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config, - schema=Dishes -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/google_vertexai/search_link_graph_gemini.md b/docs/Examples/google_vertexai/search_link_graph_gemini.md deleted file mode 100644 index 2fe787fa..00000000 --- a/docs/Examples/google_vertexai/search_link_graph_gemini.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -load_dotenv() - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - }, -} -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me the best escursions near Trento", - config=graph_config -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/google_vertexai/smart_scraper_gemini.md b/docs/Examples/google_vertexai/smart_scraper_gemini.md deleted file mode 100644 index 3b7bd42a..00000000 --- a/docs/Examples/google_vertexai/smart_scraper_gemini.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.utils import prettify_exec_info -from scrapegraphai.graphs import SmartScraperGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the news with their description.", - # also accepts a string with the already downloaded HTML code - source="https://www.wired.com", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_vertexai/smart_scraper_lite_google_vertexai.md b/docs/Examples/google_vertexai/smart_scraper_lite_google_vertexai.md deleted file mode 100644 index 3d8a8fd8..00000000 --- a/docs/Examples/google_vertexai/smart_scraper_lite_google_vertexai.md +++ /dev/null @@ -1,34 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "project": os.getenv("GOOGLE_CLOUD_PROJECT"), - "location": "us-central1", - "model": "text-bison@001", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_lite_graph = SmartScraperLiteGraph( - prompt="Who is Marco Perini?", - source="https://perinim.github.io/", - config=graph_config -) - -result = smart_scraper_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/google_vertexai/smart_scraper_multi_concat_gemini.md b/docs/Examples/google_vertexai/smart_scraper_multi_concat_gemini.md deleted file mode 100644 index 283095c6..00000000 --- a/docs/Examples/google_vertexai/smart_scraper_multi_concat_gemini.md +++ /dev/null @@ -1,37 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiConcatGraph - -load_dotenv() - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - }, -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiConcatGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/google_vertexai/smart_scraper_multi_gemini.md b/docs/Examples/google_vertexai/smart_scraper_multi_gemini.md deleted file mode 100644 index 84cf8693..00000000 --- a/docs/Examples/google_vertexai/smart_scraper_multi_gemini.md +++ /dev/null @@ -1,40 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -import os, json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - }, -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/google_vertexai/smart_scraper_multi_lite_google_vertexai.md b/docs/Examples/google_vertexai/smart_scraper_multi_lite_google_vertexai.md deleted file mode 100644 index 4639820f..00000000 --- a/docs/Examples/google_vertexai/smart_scraper_multi_lite_google_vertexai.md +++ /dev/null @@ -1,36 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "project": os.getenv("GOOGLE_CLOUD_PROJECT"), - "location": "us-central1", - "model": "text-bison@001", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_vertexai/smart_scraper_multi_lite_vertex.md b/docs/Examples/google_vertexai/smart_scraper_multi_lite_vertex.md deleted file mode 100644 index abbc43fc..00000000 --- a/docs/Examples/google_vertexai/smart_scraper_multi_lite_vertex.md +++ /dev/null @@ -1,48 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "project": os.getenv("GOOGLE_CLOUD_PROJECT"), - "location": "us-central1", - "model": "text-bison@001", - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_vertexai/smart_scraper_schema_gemini.md b/docs/Examples/google_vertexai/smart_scraper_schema_gemini.md deleted file mode 100644 index a781e656..00000000 --- a/docs/Examples/google_vertexai/smart_scraper_schema_gemini.md +++ /dev/null @@ -1,57 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with schema -""" - -import os -from typing import List -from pydantic import BaseModel, Field -from dotenv import load_dotenv -from scrapegraphai.utils import prettify_exec_info -from scrapegraphai.graphs import SmartScraperGraph -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - }, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the news with their description.", - # also accepts a string with the already downloaded HTML code - source="https://www.wired.com", - schema=Projects, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/google_vertexai/xml_scraper_gemini.md b/docs/Examples/google_vertexai/xml_scraper_gemini.md deleted file mode 100644 index 67b0eb0a..00000000 --- a/docs/Examples/google_vertexai/xml_scraper_gemini.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperGraph from XML documents -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - }, -} -# ************************************************ -# Create the XMLScraperGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") - diff --git a/docs/Examples/google_vertexai/xml_scraper_graph_multi_gemini.md b/docs/Examples/google_vertexai/xml_scraper_graph_multi_gemini.md deleted file mode 100644 index e0fc6069..00000000 --- a/docs/Examples/google_vertexai/xml_scraper_graph_multi_gemini.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperMultiGraph from XML documents -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -gemini_key = os.getenv("GOOGLE_APIKEY") - -graph_config = { - "llm": { - "api_key": gemini_key, - "model": "google_vertexai/gemini-1.5-pro", - }, -} - -# ************************************************ -# Create the XMLScraperMultiGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperMultiGraph( - prompt="List me all the authors, title and genres of the books", - source=[text, text], # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/groq/document_scraper_groq.md b/docs/Examples/groq/document_scraper_groq.md deleted file mode 100644 index 477ed535..00000000 --- a/docs/Examples/groq/document_scraper_groq.md +++ /dev/null @@ -1,46 +0,0 @@ -```python -""" -document_scraper example -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -groq_key = os.getenv("GROQ_APIKEY") - -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": groq_key, - "temperature": 0 - }, - "verbose": True, - "headless": False -} - - -source = """ - The Divine Comedy, Italian La Divina Commedia, original name La commedia, long narrative poem written in Italian - circa 1308/21 by Dante. It is usually held to be one of the world s great works of literature. - Divided into three major sections—Inferno, Purgatorio, and Paradiso—the narrative traces the journey of Dante - from darkness and error to the revelation of the divine light, culminating in the Beatific Vision of God. - Dante is guided by the Roman poet Virgil, who represents the epitome of human knowledge, from the dark wood - through the descending circles of the pit of Hell (Inferno). He then climbs the mountain of Purgatory, guided - by the Roman poet Statius, who represents the fulfilment of human knowledge, and is finally led by his lifelong love, - the Beatrice of his earlier poetry, through the celestial spheres of Paradise. -""" - -pdf_scraper_graph = DocumentScraperGraph( - prompt="Summarize the text and find the main topics", - source=source, - config=graph_config, -) -result = pdf_scraper_graph.run() - -print(json.dumps(result, indent=4)) \ No newline at end of file diff --git a/docs/Examples/groq/smart_scraper_lite_groq.md b/docs/Examples/groq/smart_scraper_lite_groq.md deleted file mode 100644 index 55537173..00000000 --- a/docs/Examples/groq/smart_scraper_lite_groq.md +++ /dev/null @@ -1,32 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("GROQ_API_KEY"), - "model": "mixtral-8x7b-32768", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_lite_graph = SmartScraperLiteGraph( - prompt="Who is Marco Perini?", - source="https://perinim.github.io/", - config=graph_config -) - -result = smart_scraper_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/groq/smart_scraper_multi_lite_groq.md b/docs/Examples/groq/smart_scraper_multi_lite_groq.md deleted file mode 100644 index d02d9951..00000000 --- a/docs/Examples/groq/smart_scraper_multi_lite_groq.md +++ /dev/null @@ -1,36 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("GROQ_API_KEY"), - "model": "mixtral-8x7b-32768", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/huggingfacehub/code_generator_graph_huggingfacehub.md b/docs/Examples/huggingfacehub/code_generator_graph_huggingfacehub.md deleted file mode 100644 index 0d460371..00000000 --- a/docs/Examples/huggingfacehub/code_generator_graph_huggingfacehub.md +++ /dev/null @@ -1,72 +0,0 @@ -```python -""" -Basic example of scraping pipeline using Code Generator with schema -""" - -import os, json -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import CodeGeneratorGraph -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -graph_config = { - "llm": { - "model_instance": llm_model_instance - }, - "verbose": True, - "headless": False, - "reduction": 2, - "max_iterations": { - "overall": 10, - "syntax": 3, - "execution": 3, - "validation": 3, - "semantic": 3 - }, - "output_file_name": "extracted_data.py" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -code_generator_graph = CodeGeneratorGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = code_generator_graph.run() -print(result) \ No newline at end of file diff --git a/docs/Examples/huggingfacehub/csv_scraper_graph_multi_huggingfacehub.md b/docs/Examples/huggingfacehub/csv_scraper_graph_multi_huggingfacehub.md deleted file mode 100644 index b842ce16..00000000 --- a/docs/Examples/huggingfacehub/csv_scraper_graph_multi_huggingfacehub.md +++ /dev/null @@ -1,69 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperMultiGraph from CSV documents -""" - -import os -import pandas as pd -from scrapegraphai.graphs import CSVScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -graph_config = { - "llm": {"model_instance": llm_model_instance}, -} - - -# ************************************************ -# Create the CSVScraperMultiGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperMultiGraph( - prompt="List me all the last names", - source=[str(text), str(text)], - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/huggingfacehub/csv_scraper_huggingfacehub.md b/docs/Examples/huggingfacehub/csv_scraper_huggingfacehub.md deleted file mode 100644 index 31d752b8..00000000 --- a/docs/Examples/huggingfacehub/csv_scraper_huggingfacehub.md +++ /dev/null @@ -1,71 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperGraph from CSV documents -""" - -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -load_dotenv() - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -graph_config = { - "llm": {"model_instance": llm_model_instance}, -} - -# ************************************************ -# Create the CSVScraperGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperGraph( - prompt="List me all the last names", - source=str(text), # Pass the content of the file, not the file object - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/huggingfacehub/custom_graph_huggingfacehub.md b/docs/Examples/huggingfacehub/custom_graph_huggingfacehub.md deleted file mode 100644 index 4f309502..00000000 --- a/docs/Examples/huggingfacehub/custom_graph_huggingfacehub.md +++ /dev/null @@ -1,122 +0,0 @@ -```python -""" -Example of custom graph using existing nodes -""" - -import os -from dotenv import load_dotenv -from langchain_openai import OpenAIEmbeddings -from langchain_openai import ChatOpenAI -from scrapegraphai.graphs import BaseGraph -from scrapegraphai.nodes import FetchNode, ParseNode, RAGNode, GenerateAnswerNode, RobotsNode -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -graph_config = { - "llm": {"model_instance": llm_model_instance}, -} - -# ************************************************ -# Define the graph nodes -# ************************************************ - -llm_model = OpenAI(graph_config["llm"]) -embedder = OpenAIEmbeddings(api_key=llm_model.openai_api_key) - -# define the nodes for the graph -robot_node = RobotsNode( - input="url", - output=["is_scrapable"], - node_config={ - "llm_model": llm_model, - "force_scraping": True, - "verbose": True, - } -) - -fetch_node = FetchNode( - input="url | local_dir", - output=["doc"], - node_config={ - "verbose": True, - "headless": True, - } -) -parse_node = ParseNode( - input="doc", - output=["parsed_doc"], - node_config={ - "chunk_size": 4096, - "verbose": True, - } -) -rag_node = RAGNode( - input="user_prompt & (parsed_doc | doc)", - output=["relevant_chunks"], - node_config={ - "llm_model": llm_model, - "embedder_model": embedder, - "verbose": True, - } -) -generate_answer_node = GenerateAnswerNode( - input="user_prompt & (relevant_chunks | parsed_doc | doc)", - output=["answer"], - node_config={ - "llm_model": llm_model, - "verbose": True, - } -) - -# ************************************************ -# Create the graph by defining the connections -# ************************************************ - -graph = BaseGraph( - nodes=[ - robot_node, - fetch_node, - parse_node, - rag_node, - generate_answer_node, - ], - edges=[ - (robot_node, fetch_node), - (fetch_node, parse_node), - (parse_node, rag_node), - (rag_node, generate_answer_node) - ], - entry_point=robot_node -) - -# ************************************************ -# Execute the graph -# ************************************************ - -result, execution_info = graph.execute({ - "user_prompt": "Describe the content", - "url": "https://example.com/" -}) - -# get the answer from the result -result = result.get("answer", "No answer found.") -print(result) diff --git a/docs/Examples/huggingfacehub/depth_search_graph_huggingfacehub.md b/docs/Examples/huggingfacehub/depth_search_graph_huggingfacehub.md deleted file mode 100644 index b062046c..00000000 --- a/docs/Examples/huggingfacehub/depth_search_graph_huggingfacehub.md +++ /dev/null @@ -1,39 +0,0 @@ -```python -""" -depth_search_graph_opeani example -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import DepthSearchGraph -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -load_dotenv() -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -graph_config = { - "llm": {"model_instance": llm_model_instance}, - "verbose": True, - "headless": False, - "depth": 2, - "only_inside_links": False, -} - -search_graph = DepthSearchGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/huggingfacehub/document_scraper_huggingfacehub.md b/docs/Examples/huggingfacehub/document_scraper_huggingfacehub.md deleted file mode 100644 index 82473c2d..00000000 --- a/docs/Examples/huggingfacehub/document_scraper_huggingfacehub.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -document_scraper example -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -# ************************************************ -# Define the configuration for the graph -# ************************************************ -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -graph_config = { - "llm": {"model_instance": llm_model_instance}, -} - -source = """ - The Divine Comedy, Italian La Divina Commedia, original name La commedia, long narrative poem written in Italian - circa 1308/21 by Dante. It is usually held to be one of the world s great works of literature. - Divided into three major sections—Inferno, Purgatorio, and Paradiso—the narrative traces the journey of Dante - from darkness and error to the revelation of the divine light, culminating in the Beatific Vision of God. - Dante is guided by the Roman poet Virgil, who represents the epitome of human knowledge, from the dark wood - through the descending circles of the pit of Hell (Inferno). He then climbs the mountain of Purgatory, guided - by the Roman poet Statius, who represents the fulfilment of human knowledge, and is finally led by his lifelong love, - the Beatrice of his earlier poetry, through the celestial spheres of Paradise. -""" - -pdf_scraper_graph = DocumentScraperGraph( - prompt="Summarize the text and find the main topics", - source=source, - config=graph_config, -) -result = pdf_scraper_graph.run() - -print(json.dumps(result, indent=4)) \ No newline at end of file diff --git a/docs/Examples/huggingfacehub/json_scraper_huggingfacehub.md b/docs/Examples/huggingfacehub/json_scraper_huggingfacehub.md deleted file mode 100644 index 3f3c5ef0..00000000 --- a/docs/Examples/huggingfacehub/json_scraper_huggingfacehub.md +++ /dev/null @@ -1,60 +0,0 @@ -```python -""" -Basic example of scraping pipeline using JSONScraperGraph from JSON documents -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperGraph -from scrapegraphai.utils import prettify_exec_info -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -load_dotenv() - -# ************************************************ -# Read the JSON file -# ************************************************ - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -graph_config = { - "llm": {"model_instance": llm_model_instance}, -} - -# ************************************************ -# Create the JSONScraperGraph instance and run it -# ************************************************ - -json_scraper_graph = JSONScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = json_scraper_graph.run() -print(result) diff --git a/docs/Examples/huggingfacehub/json_scraper_multi_huggingfacehub.md b/docs/Examples/huggingfacehub/json_scraper_multi_huggingfacehub.md deleted file mode 100644 index 790f1ac8..00000000 --- a/docs/Examples/huggingfacehub/json_scraper_multi_huggingfacehub.md +++ /dev/null @@ -1,46 +0,0 @@ -```python -""" -Module for showing how PDFScraper multi works -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperMultiGraph -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -load_dotenv() - -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -graph_config = { - "llm": {"model_instance": llm_model_instance}, -} -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -sources = [text, text] - -multiple_search_graph = JSONScraperMultiGraph( - prompt= "List me all the authors, title and genres of the books", - source= sources, - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/huggingfacehub/scrape_plain_text_huggingfacehub.md b/docs/Examples/huggingfacehub/scrape_plain_text_huggingfacehub.md deleted file mode 100644 index cfbdafd6..00000000 --- a/docs/Examples/huggingfacehub/scrape_plain_text_huggingfacehub.md +++ /dev/null @@ -1,69 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ - -FILE_NAME = "inputs/plain_html_example.txt" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -# It could be also a http request using the request model -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -graph_config = { - "llm": {"model_instance": llm_model_instance}, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - source=text, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/huggingfacehub/script_generator_huggingfacehub.md b/docs/Examples/huggingfacehub/script_generator_huggingfacehub.md deleted file mode 100644 index ef7030ca..00000000 --- a/docs/Examples/huggingfacehub/script_generator_huggingfacehub.md +++ /dev/null @@ -1,61 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') -# ************************************************ -# Initialize the model instances -# ************************************************ - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -graph_config = { - "llm": {"model_instance": llm_model_instance}, -} -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/huggingfacehub/script_multi_generator_huggingfacehub.md b/docs/Examples/huggingfacehub/script_multi_generator_huggingfacehub.md deleted file mode 100644 index 1722ebb0..00000000 --- a/docs/Examples/huggingfacehub/script_multi_generator_huggingfacehub.md +++ /dev/null @@ -1,67 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorMultiGraph -from scrapegraphai.utils import prettify_exec_info -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -graph_config = { - "llm": {"model_instance": llm_model_instance}, -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -urls=[ - "https://schultzbergagency.com/emil-raste-karlsen/", - "https://schultzbergagency.com/johanna-hedberg/", -] - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorMultiGraph( - prompt="Find information about actors", - # also accepts a string with the already downloaded HTML code - source=urls, - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/huggingfacehub/search_graph_huggingfacehub.md b/docs/Examples/huggingfacehub/search_graph_huggingfacehub.md deleted file mode 100644 index 42792b14..00000000 --- a/docs/Examples/huggingfacehub/search_graph_huggingfacehub.md +++ /dev/null @@ -1,56 +0,0 @@ -```python -""" -Example of Search Graph -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -graph_config = { - "llm": {"model_instance": llm_model_instance}, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/huggingfacehub/search_link_graph_huggingfacehub.md b/docs/Examples/huggingfacehub/search_link_graph_huggingfacehub.md deleted file mode 100644 index 09072b29..00000000 --- a/docs/Examples/huggingfacehub/search_link_graph_huggingfacehub.md +++ /dev/null @@ -1,54 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -# ************************************************ - -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -graph_config = { - "llm": {"model_instance": llm_model_instance}, -} - - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me the best escursions near Trento", - config=graph_config -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/huggingfacehub/smart_scraper_huggingfacehub.md b/docs/Examples/huggingfacehub/smart_scraper_huggingfacehub.md deleted file mode 100644 index 8af44412..00000000 --- a/docs/Examples/huggingfacehub/smart_scraper_huggingfacehub.md +++ /dev/null @@ -1,59 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper using Azure OpenAI Key -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - - -## required environment variable in .env -#HUGGINGFACEHUB_API_TOKEN -load_dotenv() - -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') -# ************************************************ -# Initialize the model instances -# ************************************************ - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -graph_config = { - "llm": {"model_instance": llm_model_instance}, -} - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the events, with the following fields: company_name, event_name, event_start_date, event_start_time, event_end_date, event_end_time, location, event_mode, event_category, third_party_redirect, no_of_days, time_in_hours, hosted_or_attending, refreshments_type, registration_available, registration_link", - # also accepts a string with the already downloaded HTML code - source="https://www.hmhco.com/event", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - - diff --git a/docs/Examples/huggingfacehub/smart_scraper_lite_huggingfacehub.md b/docs/Examples/huggingfacehub/smart_scraper_lite_huggingfacehub.md deleted file mode 100644 index 25c27272..00000000 --- a/docs/Examples/huggingfacehub/smart_scraper_lite_huggingfacehub.md +++ /dev/null @@ -1,32 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("HUGGINGFACEHUB_API_TOKEN"), - "model": "huggingfacehub/meta-llama/Llama-2-70b-chat-hf", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_lite_graph = SmartScraperLiteGraph( - prompt="Who is Marco Perini?", - source="https://perinim.github.io/", - config=graph_config -) - -result = smart_scraper_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/huggingfacehub/smart_scraper_multi_concat_huggingfacehub.md b/docs/Examples/huggingfacehub/smart_scraper_multi_concat_huggingfacehub.md deleted file mode 100644 index 41571d70..00000000 --- a/docs/Examples/huggingfacehub/smart_scraper_multi_concat_huggingfacehub.md +++ /dev/null @@ -1,54 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiConcatGraph -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -load_dotenv() - -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') -# ************************************************ -# Initialize the model instances -# ************************************************ - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -graph_config = { - "llm": {"model_instance": llm_model_instance}, -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiConcatGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/huggingfacehub/smart_scraper_multi_huggingfacehub.md b/docs/Examples/huggingfacehub/smart_scraper_multi_huggingfacehub.md deleted file mode 100644 index 71142b4e..00000000 --- a/docs/Examples/huggingfacehub/smart_scraper_multi_huggingfacehub.md +++ /dev/null @@ -1,49 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -import os, json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiGraph -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -graph_config = { - "llm": {"model_instance": llm_model_instance}, -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/huggingfacehub/smart_scraper_multi_lite_huggingfacehub.md b/docs/Examples/huggingfacehub/smart_scraper_multi_lite_huggingfacehub.md deleted file mode 100644 index 11a395d8..00000000 --- a/docs/Examples/huggingfacehub/smart_scraper_multi_lite_huggingfacehub.md +++ /dev/null @@ -1,35 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("HUGGINGFACEHUB_API_TOKEN"), - "model": "huggingfacehub/meta-llama/Llama-2-70b-chat-hf", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/huggingfacehub/smart_scraper_multi_lite_uhggingfacehub.md b/docs/Examples/huggingfacehub/smart_scraper_multi_lite_uhggingfacehub.md deleted file mode 100644 index ae6fe1dd..00000000 --- a/docs/Examples/huggingfacehub/smart_scraper_multi_lite_uhggingfacehub.md +++ /dev/null @@ -1 +0,0 @@ -```python diff --git a/docs/Examples/huggingfacehub/smart_scraper_schema_huggingfacehub.md b/docs/Examples/huggingfacehub/smart_scraper_schema_huggingfacehub.md deleted file mode 100644 index 300d43a6..00000000 --- a/docs/Examples/huggingfacehub/smart_scraper_schema_huggingfacehub.md +++ /dev/null @@ -1,68 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper using Azure OpenAI Key -""" - -import os -from dotenv import load_dotenv -from typing import Dict - -from pydantic import BaseModel -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str - description: str - -class Projects(BaseModel): - Projects: Dict[str, Project] - -## required environment variable in .env -#HUGGINGFACEHUB_API_TOKEN -load_dotenv() - -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') -# ************************************************ -# Initialize the model instances -# ************************************************ - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -graph_config = { - "llm": {"model_instance": llm_model_instance}, -} - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/huggingfacehub/xml_scraper_graph_multi_huggingfacehub.md b/docs/Examples/huggingfacehub/xml_scraper_graph_multi_huggingfacehub.md deleted file mode 100644 index 643c7aca..00000000 --- a/docs/Examples/huggingfacehub/xml_scraper_graph_multi_huggingfacehub.md +++ /dev/null @@ -1,68 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperMultiGraph from XML documents -""" - -import os -from scrapegraphai.graphs import XMLScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -graph_config = { - "llm": {"model_instance": llm_model_instance}, -} - -# ************************************************ -# Create the XMLScraperMultiGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperMultiGraph( - prompt="List me all the authors, title and genres of the books", - source=[text, text], # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/huggingfacehub/xml_scraper_huggingfacehub.md b/docs/Examples/huggingfacehub/xml_scraper_huggingfacehub.md deleted file mode 100644 index fcf59e71..00000000 --- a/docs/Examples/huggingfacehub/xml_scraper_huggingfacehub.md +++ /dev/null @@ -1,69 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperGraph from XML documents -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info -from langchain_community.llms import HuggingFaceEndpoint -from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -HUGGINGFACEHUB_API_TOKEN = os.getenv('HUGGINGFACEHUB_API_TOKEN') - -repo_id = "mistralai/Mistral-7B-Instruct-v0.2" - -llm_model_instance = HuggingFaceEndpoint( - repo_id=repo_id, max_length=128, temperature=0.5, token=HUGGINGFACEHUB_API_TOKEN -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key=HUGGINGFACEHUB_API_TOKEN, model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -graph_config = { - "llm": {"model_instance": llm_model_instance}, -} - -# ************************************************ -# Create the XMLScraperGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") - diff --git a/docs/Examples/integrations/indexify_node_example.md b/docs/Examples/integrations/indexify_node_example.md deleted file mode 100644 index 5f1db60a..00000000 --- a/docs/Examples/integrations/indexify_node_example.md +++ /dev/null @@ -1,73 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with schema -""" - -import os, json -from typing import List - -from dotenv import load_dotenv -load_dotenv() - -from pydantic import BaseModel, Field -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.integrations import IndexifyNode - - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Image(BaseModel): - url: str = Field(description="The url of the image") - -class Images(BaseModel): - images: List[Image] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key":openai_key, - "model": "openai/gpt-3.5-turbo", - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Define the custom nodes for the graph -# ************************************************ - -indexify_node = IndexifyNode( - input="answer & img_urls", - output=["is_indexed"], - node_config={ - "verbose": True - } -) - -# ************************************************ -# Create the SmartScraperGraph instance -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the images with their url", - source="https://giphy.com/", - schema=Images, - config=graph_config -) - -# Add the custom node to the graph -smart_scraper_graph.append_node(indexify_node) - -# ************************************************ -# Run the SmartScraperGraph -# ************************************************ - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=2)) diff --git a/docs/Examples/local_models/code_generator_graph_ollama.md b/docs/Examples/local_models/code_generator_graph_ollama.md deleted file mode 100644 index 4ad5cee3..00000000 --- a/docs/Examples/local_models/code_generator_graph_ollama.md +++ /dev/null @@ -1,62 +0,0 @@ -```python -""" -Basic example of scraping pipeline using Code Generator with schema -""" - -import json -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import CodeGeneratorGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "model": "ollama/llama3", - "temperature": 0, - "format": "json", - "base_url": "http://localhost:11434", - }, - "verbose": True, - "headless": False, - "reduction": 2, - "max_iterations": { - "overall": 10, - "syntax": 3, - "execution": 3, - "validation": 3, - "semantic": 3 - }, - "output_file_name": "extracted_data.py" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -code_generator_graph = CodeGeneratorGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = code_generator_graph.run() -print(result) \ No newline at end of file diff --git a/docs/Examples/local_models/csv_scraper_graph_multi_ollama.md b/docs/Examples/local_models/csv_scraper_graph_multi_ollama.md deleted file mode 100644 index 937c0315..00000000 --- a/docs/Examples/local_models/csv_scraper_graph_multi_ollama.md +++ /dev/null @@ -1,63 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperMultiGraph from CSV documents -""" - -import os -import pandas as pd -from scrapegraphai.graphs import CSVScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/llama3", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - # "model_tokens": 2000, # set context length arbitrarily - "base_url": "http://localhost:11434", - }, - "embeddings": { - "model": "ollama/nomic-embed-text", - "temperature": 0, - "base_url": "http://localhost:11434", - }, - "verbose": True, -} - -# ************************************************ -# Create the CSVScraperMultiGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperMultiGraph( - prompt="List me all the last names", - source=[str(text), str(text)], - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/local_models/csv_scraper_ollama.md b/docs/Examples/local_models/csv_scraper_ollama.md deleted file mode 100644 index c22080cc..00000000 --- a/docs/Examples/local_models/csv_scraper_ollama.md +++ /dev/null @@ -1,63 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperGraph from CSV documents -""" - -import os -import pandas as pd -from scrapegraphai.graphs import CSVScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/llama3", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - # "model_tokens": 2000, # set context length arbitrarily - "base_url": "http://localhost:11434", - }, - "embeddings": { - "model": "ollama/nomic-embed-text", - "temperature": 0, - "base_url": "http://localhost:11434", - }, - "verbose": True, -} - -# ************************************************ -# Create the CSVScraperGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperGraph( - prompt="List me all the last names", - source=str(text), # Pass the content of the file, not the file object - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/local_models/custom_graph_ollama.md b/docs/Examples/local_models/custom_graph_ollama.md deleted file mode 100644 index e00dca76..00000000 --- a/docs/Examples/local_models/custom_graph_ollama.md +++ /dev/null @@ -1,102 +0,0 @@ -```python -""" -Example of custom graph using existing nodes -""" - -import os -from langchain_openai import OpenAIEmbeddings -from langchain_openai import ChatOpenAI -from scrapegraphai.graphs import BaseGraph -from scrapegraphai.nodes import FetchNode, ParseNode, RAGNode, GenerateAnswerNode, RobotsNode - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/mistral", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - # "model_tokens": 2000, # set context length arbitrarily - "base_url": "http://localhost:11434", - }, - - "verbose": True, -} - -# ************************************************ -# Define the graph nodes -# ************************************************ - -llm_model = ChatOpenAI(graph_config["llm"]) -embedder = OpenAIEmbeddings(api_key=llm_model.openai_api_key) - -# define the nodes for the graph -robot_node = RobotsNode( - input="url", - output=["is_scrapable"], - node_config={ - "llm_model": llm_model, - "force_scraping": True, - "verbose": True, - } -) - -fetch_node = FetchNode( - input="url | local_dir", - output=["doc"], - node_config={ - "verbose": True, - "headless": True, - } -) -parse_node = ParseNode( - input="doc", - output=["parsed_doc"], - node_config={ - "chunk_size": 4096, - "verbose": True, - } -) - -generate_answer_node = GenerateAnswerNode( - input="user_prompt & (relevant_chunks | parsed_doc | doc)", - output=["answer"], - node_config={ - "llm_model": llm_model, - "verbose": True, - } -) - -# ************************************************ -# Create the graph by defining the connections -# ************************************************ - -graph = BaseGraph( - nodes=[ - robot_node, - fetch_node, - parse_node, - generate_answer_node, - ], - edges=[ - (robot_node, fetch_node), - (fetch_node, parse_node), - (parse_node, generate_answer_node) - ], - entry_point=robot_node -) - -# ************************************************ -# Execute the graph -# ************************************************ - -result, execution_info = graph.execute({ - "user_prompt": "Describe the content", - "url": "https://example.com/" -}) - -# get the answer from the result -result = result.get("answer", "No answer found.") -print(result) diff --git a/docs/Examples/local_models/depth_search_graph_ollama.md b/docs/Examples/local_models/depth_search_graph_ollama.md deleted file mode 100644 index 32781acf..00000000 --- a/docs/Examples/local_models/depth_search_graph_ollama.md +++ /dev/null @@ -1,33 +0,0 @@ -```python -""" -depth_search_graph_opeani example -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import DepthSearchGraph - -load_dotenv() - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "model": "ollama/llama3.1", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - # "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "verbose": True, - "headless": False, - "depth": 2, - "only_inside_links": False, -} - -search_graph = DepthSearchGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/local_models/document_scraper_ollama.md b/docs/Examples/local_models/document_scraper_ollama.md deleted file mode 100644 index f9eadeeb..00000000 --- a/docs/Examples/local_models/document_scraper_ollama.md +++ /dev/null @@ -1,43 +0,0 @@ -```python -""" -document_scraper example -""" -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -graph_config = { - "llm": { - "model": "ollama/llama3", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - "model_tokens": 4000, - }, - "verbose": True, - "headless": False, -} - -source = """ - The Divine Comedy, Italian La Divina Commedia, original name La commedia, long narrative poem written in Italian - circa 1308/21 by Dante. It is usually held to be one of the world s great works of literature. - Divided into three major sections—Inferno, Purgatorio, and Paradiso—the narrative traces the journey of Dante - from darkness and error to the revelation of the divine light, culminating in the Beatific Vision of God. - Dante is guided by the Roman poet Virgil, who represents the epitome of human knowledge, from the dark wood - through the descending circles of the pit of Hell (Inferno). He then climbs the mountain of Purgatory, guided - by the Roman poet Statius, who represents the fulfilment of human knowledge, and is finally led by his lifelong love, - the Beatrice of his earlier poetry, through the celestial spheres of Paradise. -""" - -pdf_scraper_graph = DocumentScraperGraph( - prompt="Summarize the text and find the main topics", - source=source, - config=graph_config, -) -result = pdf_scraper_graph.run() - -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/local_models/json_scraper_multi_ollama.md b/docs/Examples/local_models/json_scraper_multi_ollama.md deleted file mode 100644 index 1a0d100c..00000000 --- a/docs/Examples/local_models/json_scraper_multi_ollama.md +++ /dev/null @@ -1,37 +0,0 @@ -```python -""" -Module for showing how PDFScraper multi works -""" -import os -import json -from scrapegraphai.graphs import JSONScraperMultiGraph - -graph_config = { - "llm": { - "model": "ollama/llama3", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - "model_tokens": 4000, - }, - "verbose": True, - "headless": False, -} - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -sources = [text, text] - -multiple_search_graph = JSONScraperMultiGraph( - prompt= "List me all the authors, title and genres of the books", - source= sources, - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/local_models/json_scraper_ollama.md b/docs/Examples/local_models/json_scraper_ollama.md deleted file mode 100644 index 4795d7a8..00000000 --- a/docs/Examples/local_models/json_scraper_ollama.md +++ /dev/null @@ -1,60 +0,0 @@ -```python -""" -Basic example of scraping pipeline using JSONScraperGraph from JSON documents -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info -load_dotenv() - -# ************************************************ -# Read the JSON file -# ************************************************ - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/mistral", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - # "model_tokens": 2000, # set context length arbitrarily - "base_url": "http://localhost:11434", - }, - "verbose": True, -} - -# ************************************************ -# Create the JSONScraperGraph instance and run it -# ************************************************ - -json_scraper_graph = JSONScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = json_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = json_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/local_models/package-lock.md b/docs/Examples/local_models/package-lock.md deleted file mode 100644 index 5c692a57..00000000 --- a/docs/Examples/local_models/package-lock.md +++ /dev/null @@ -1,7 +0,0 @@ -```python -{ - "name": "local_models", - "lockfileVersion": 3, - "requires": true, - "packages": {} -} diff --git a/docs/Examples/local_models/package.md b/docs/Examples/local_models/package.md deleted file mode 100644 index 15fef0d4..00000000 --- a/docs/Examples/local_models/package.md +++ /dev/null @@ -1,2 +0,0 @@ -```python -{} diff --git a/docs/Examples/local_models/scrape_plain_text_ollama.md b/docs/Examples/local_models/scrape_plain_text_ollama.md deleted file mode 100644 index 663dabc4..00000000 --- a/docs/Examples/local_models/scrape_plain_text_ollama.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" - -import os -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -# ************************************************ -# Read the text file -# ************************************************ - -FILE_NAME = "inputs/plain_html_example.txt" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -# It could be also a http request using the request model -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/mistral", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - # "model_tokens": 2000, # set context length arbitrarily - "base_url": "http://localhost:11434", - }, - "verbose": True, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects", - source=text, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/local_models/script_generator_ollama.md b/docs/Examples/local_models/script_generator_ollama.md deleted file mode 100644 index 053d6b60..00000000 --- a/docs/Examples/local_models/script_generator_ollama.md +++ /dev/null @@ -1,41 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/llama3.1", - "temperature": 0.5, - # "model_tokens": 2000, # set context length arbitrarily, - "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "library": "beautifoulsoup", - "verbose": True, -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -smart_scraper_graph = ScriptCreatorGraph( - prompt="List me all the news with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/local_models/script_multi_generator_ollama.md b/docs/Examples/local_models/script_multi_generator_ollama.md deleted file mode 100644 index 42ee2134..00000000 --- a/docs/Examples/local_models/script_multi_generator_ollama.md +++ /dev/null @@ -1,56 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorMultiGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/mistral", - "temperature": 0, - # "model_tokens": 2000, # set context length arbitrarily, - "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "library": "beautifoulsoup", - "verbose": True, -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -urls=[ - "https://schultzbergagency.com/emil-raste-karlsen/", - "https://schultzbergagency.com/johanna-hedberg/", -] - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorMultiGraph( - prompt="Find information about actors", - # also accepts a string with the already downloaded HTML code - source=urls, - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/local_models/search_graph_ollama.md b/docs/Examples/local_models/search_graph_ollama.md deleted file mode 100644 index 464a7311..00000000 --- a/docs/Examples/local_models/search_graph_ollama.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -Example of Search Graph -""" -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "model": "ollama/llama3", - "temperature": 0, - # "format": "json", # Ollama needs the format to be specified explicitly - # "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "max_results": 5, - "verbose": True, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me the best escursions near Trento", - config=graph_config -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/local_models/search_graph_schema_ollama.md b/docs/Examples/local_models/search_graph_schema_ollama.md deleted file mode 100644 index 3912ce61..00000000 --- a/docs/Examples/local_models/search_graph_schema_ollama.md +++ /dev/null @@ -1,59 +0,0 @@ -```python -""" -Example of Search Graph -""" -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -from pydantic import BaseModel, Field -from typing import List - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Dish(BaseModel): - name: str = Field(description="The name of the dish") - description: str = Field(description="The description of the dish") - -class Dishes(BaseModel): - dishes: List[Dish] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/mistral", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - # "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config, - schema=Dishes -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/local_models/search_link_graph_ollama.md b/docs/Examples/local_models/search_link_graph_ollama.md deleted file mode 100644 index fe4d364e..00000000 --- a/docs/Examples/local_models/search_link_graph_ollama.md +++ /dev/null @@ -1,52 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -from scrapegraphai.graphs import SearchLinkGraph -from scrapegraphai.utils import prettify_exec_info -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/llama3.1:8b", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - # "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - - "verbose": True, - "headless": False, - "filter_config": { - "diff_domain_filter": True, - # "img_exts": ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.svg', '.webp', '.ico'], - # "lang_indicators": ['lang=', '/fr', '/pt', '/es', '/de', '/jp', '/it'], - # "irrelevant_keywords": [ - # '/login', '/signup', '/register', '/contact', 'facebook.com', 'twitter.com', - # 'linkedin.com', 'instagram.com', '.js', '.css', '/wp-content/', '/wp-admin/', - # '/wp-includes/', '/wp-json/', '/wp-comments-post.php', ';amp', '/about', - # '/careers', '/jobs', '/privacy', '/terms', '/legal', '/faq', '/help', - # '.pdf', '.zip', '/news', '/files', '/downloads' - # ] - }, -} - -# ************************************************ -# Create the SearchLinkGraph instance and run it -# ************************************************ - -smart_scraper_graph = SearchLinkGraph( - source="https://sport.sky.it/nba?gr=www", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/local_models/smart_scraper_lite_ollama.md b/docs/Examples/local_models/smart_scraper_lite_ollama.md deleted file mode 100644 index 7bfc0654..00000000 --- a/docs/Examples/local_models/smart_scraper_lite_ollama.md +++ /dev/null @@ -1,31 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper - -""" -import json -from scrapegraphai.graphs import SmartScraperLiteGraph -from scrapegraphai.utils import prettify_exec_info - -graph_config = { - "llm": { - "model": "ollama/llama3.1", - "temperature": 0, - "format": "json", - "base_url": "http://localhost:11434", - }, - "verbose": True, - "headless": False -} - -smart_scraper_lite_graph = SmartScraperLiteGraph( - prompt="Who is Marco Perini?", - source="https://perinim.github.io/", - config=graph_config -) - -result = smart_scraper_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/local_models/smart_scraper_multi_concat_ollama.md b/docs/Examples/local_models/smart_scraper_multi_concat_ollama.md deleted file mode 100644 index 5b05935d..00000000 --- a/docs/Examples/local_models/smart_scraper_multi_concat_ollama.md +++ /dev/null @@ -1,43 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiConcatGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/llama3.1", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "verbose": True, - "headless": False -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiConcatGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/local_models/smart_scraper_multi_lite_ollama.md b/docs/Examples/local_models/smart_scraper_multi_lite_ollama.md deleted file mode 100644 index 64bc9324..00000000 --- a/docs/Examples/local_models/smart_scraper_multi_lite_ollama.md +++ /dev/null @@ -1,46 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import json -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/llama3.1", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/local_models/smart_scraper_multi_ollama.md b/docs/Examples/local_models/smart_scraper_multi_ollama.md deleted file mode 100644 index 2ebbea19..00000000 --- a/docs/Examples/local_models/smart_scraper_multi_ollama.md +++ /dev/null @@ -1,40 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" - -import json -from scrapegraphai.graphs import SmartScraperMultiGraph - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -graph_config = { - "llm": { - "model": "ollama/llama3.1", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - # "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - - "verbose": True, - "headless": False -} - - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/local_models/smart_scraper_ollama.md b/docs/Examples/local_models/smart_scraper_ollama.md deleted file mode 100644 index 772f2aee..00000000 --- a/docs/Examples/local_models/smart_scraper_ollama.md +++ /dev/null @@ -1,39 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/llama3.1", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - # "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ -smart_scraper_graph = SmartScraperGraph( - prompt="Find some information about what does the company do, the name and a contact email.", - source="https://scrapegraphai.com/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/local_models/smart_scraper_schema_ollama.md b/docs/Examples/local_models/smart_scraper_schema_ollama.md deleted file mode 100644 index 1ee9cf53..00000000 --- a/docs/Examples/local_models/smart_scraper_schema_ollama.md +++ /dev/null @@ -1,44 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with schema -""" -import json -from typing import List -from pydantic import BaseModel, Field -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -graph_config = { - "llm": { - "model": "ollama/llama3.1", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - # "base_url": "http://localhost:11434", # set ollama URL arbitrarily - }, - "verbose": True, - "headless": False -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/local_models/xml_scraper_graph_multi_ollama.md b/docs/Examples/local_models/xml_scraper_graph_multi_ollama.md deleted file mode 100644 index e4df1cd1..00000000 --- a/docs/Examples/local_models/xml_scraper_graph_multi_ollama.md +++ /dev/null @@ -1,59 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperMultiGraph from XML documents -""" - -import os -from scrapegraphai.graphs import XMLScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/llama3", - "temperature": 0, - "format": "json", # Ollama needs the format to be specified explicitly - # "model_tokens": 2000, # set context length arbitrarily - "base_url": "http://localhost:11434", - }, - - "verbose": True, -} - -# ************************************************ -# Create the XMLScraperMultiGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperMultiGraph( - prompt="List me all the authors, title and genres of the books", - source=[text, text], # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/local_models/xml_scraper_ollama.md b/docs/Examples/local_models/xml_scraper_ollama.md deleted file mode 100644 index 353c4465..00000000 --- a/docs/Examples/local_models/xml_scraper_ollama.md +++ /dev/null @@ -1,59 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperGraph from XML documents -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "ollama/llama3", - "temperature": 0, - # "model_tokens": 2000, # set context length arbitrarily - "base_url": "http://localhost:11434", - }, - "verbose": True, -} - -# ************************************************ -# Create the XMLScraperGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/mistral/document_scraper_mistral.md b/docs/Examples/mistral/document_scraper_mistral.md deleted file mode 100644 index 5434ce0a..00000000 --- a/docs/Examples/mistral/document_scraper_mistral.md +++ /dev/null @@ -1,44 +0,0 @@ -```python -""" -document_scraper example -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph - -load_dotenv() - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, -} - -source = """ - The Divine Comedy, Italian La Divina Commedia, original name La commedia, long narrative poem written in Italian - circa 1308/21 by Dante. It is usually held to be one of the world s great works of literature. - Divided into three major sections—Inferno, Purgatorio, and Paradiso—the narrative traces the journey of Dante - from darkness and error to the revelation of the divine light, culminating in the Beatific Vision of God. - Dante is guided by the Roman poet Virgil, who represents the epitome of human knowledge, from the dark wood - through the descending circles of the pit of Hell (Inferno). He then climbs the mountain of Purgatory, guided - by the Roman poet Statius, who represents the fulfilment of human knowledge, and is finally led by his lifelong love, - the Beatrice of his earlier poetry, through the celestial spheres of Paradise. -""" - -pdf_scraper_graph = DocumentScraperGraph( - prompt="Summarize the text and find the main topics", - source=source, - config=graph_config, -) -result = pdf_scraper_graph.run() - -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/mistral/smart_scraper_lite_mistral.md b/docs/Examples/mistral/smart_scraper_lite_mistral.md deleted file mode 100644 index 82b62f38..00000000 --- a/docs/Examples/mistral/smart_scraper_lite_mistral.md +++ /dev/null @@ -1,32 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("MISTRAL_API_KEY"), - "model": "mistral/mistral-medium", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_lite_graph = SmartScraperLiteGraph( - prompt="Who is Marco Perini?", - source="https://perinim.github.io/", - config=graph_config -) - -result = smart_scraper_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/mistral/smart_scraper_multi_lite_mistral.md b/docs/Examples/mistral/smart_scraper_multi_lite_mistral.md deleted file mode 100644 index eca9b597..00000000 --- a/docs/Examples/mistral/smart_scraper_multi_lite_mistral.md +++ /dev/null @@ -1,36 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("MISTRAL_API_KEY"), - "model": "mistral/mistral-medium", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/model_instance/smart_scraper_with_model_instace.md b/docs/Examples/model_instance/smart_scraper_with_model_instace.md deleted file mode 100644 index 27edd420..00000000 --- a/docs/Examples/model_instance/smart_scraper_with_model_instace.md +++ /dev/null @@ -1,54 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper and model_instace -""" - -import os, json -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info -from langchain_community.chat_models.moonshot import MoonshotChat -from dotenv import load_dotenv -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -llm_instance_config = { - "model": "moonshot-v1-8k", - "base_url": "https://api.moonshot.cn/v1", - "moonshot_api_key": os.getenv("MOONLIGHT_API_KEY"), -} - - -llm_model_instance = MoonshotChat(**llm_instance_config) - -graph_config = { - "llm": { - "model_instance": llm_model_instance, - "model_tokens": 10000 - }, - "verbose": True, - "headless": True, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me what does the company do, the name and a contact email.", - source="https://scrapegraphai.com/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/moonshot/code_generator_graph_moonshot.md b/docs/Examples/moonshot/code_generator_graph_moonshot.md deleted file mode 100644 index be9dcbd7..00000000 --- a/docs/Examples/moonshot/code_generator_graph_moonshot.md +++ /dev/null @@ -1,68 +0,0 @@ -```python -""" -Basic example of scraping pipeline using Code Generator with schema -""" - -import os, json -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from langchain_community.chat_models.moonshot import MoonshotChat -from scrapegraphai.graphs import CodeGeneratorGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -llm_instance_config = { - "model": "moonshot-v1-8k", - "base_url": "https://api.moonshot.cn/v1", - "moonshot_api_key": os.getenv("MOONLIGHT_API_KEY"), -} - -llm_model_instance = MoonshotChat(**llm_instance_config) - -graph_config = { - "llm": { - "model_instance": llm_model_instance, - "model_tokens": 10000 - }, - "verbose": True, - "headless": False, - "reduction": 2, - "max_iterations": { - "overall": 10, - "syntax": 3, - "execution": 3, - "validation": 3, - "semantic": 3 - }, - "output_file_name": "extracted_data.py" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -code_generator_graph = CodeGeneratorGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = code_generator_graph.run() -print(result) \ No newline at end of file diff --git a/docs/Examples/moonshot/document_scraper_moonshot.md b/docs/Examples/moonshot/document_scraper_moonshot.md deleted file mode 100644 index 5434ce0a..00000000 --- a/docs/Examples/moonshot/document_scraper_moonshot.md +++ /dev/null @@ -1,44 +0,0 @@ -```python -""" -document_scraper example -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph - -load_dotenv() - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -mistral_key = os.getenv("MISTRAL_API_KEY") - -graph_config = { - "llm": { - "api_key": mistral_key, - "model": "mistralai/open-mistral-nemo", - }, -} - -source = """ - The Divine Comedy, Italian La Divina Commedia, original name La commedia, long narrative poem written in Italian - circa 1308/21 by Dante. It is usually held to be one of the world s great works of literature. - Divided into three major sections—Inferno, Purgatorio, and Paradiso—the narrative traces the journey of Dante - from darkness and error to the revelation of the divine light, culminating in the Beatific Vision of God. - Dante is guided by the Roman poet Virgil, who represents the epitome of human knowledge, from the dark wood - through the descending circles of the pit of Hell (Inferno). He then climbs the mountain of Purgatory, guided - by the Roman poet Statius, who represents the fulfilment of human knowledge, and is finally led by his lifelong love, - the Beatrice of his earlier poetry, through the celestial spheres of Paradise. -""" - -pdf_scraper_graph = DocumentScraperGraph( - prompt="Summarize the text and find the main topics", - source=source, - config=graph_config, -) -result = pdf_scraper_graph.run() - -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/moonshot/readme.md b/docs/Examples/moonshot/readme.md deleted file mode 100644 index bbf8d779..00000000 --- a/docs/Examples/moonshot/readme.md +++ /dev/null @@ -1,2 +0,0 @@ -```python -This folder offer an example of how to use ScrapeGraph-AI with Moonshot and SmartScraperGraph. More usage examples can refer to openai exapmles. \ No newline at end of file diff --git a/docs/Examples/moonshot/smart_scraper_lite_moonshot.md b/docs/Examples/moonshot/smart_scraper_lite_moonshot.md deleted file mode 100644 index d9244630..00000000 --- a/docs/Examples/moonshot/smart_scraper_lite_moonshot.md +++ /dev/null @@ -1,32 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("ANTHROPIC_API_KEY"), - "model": "anthropic/claude-3-haiku-20240307", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_lite_graph = SmartScraperLiteGraph( - prompt="Who is Marco Perini?", - source="https://perinim.github.io/", - config=graph_config -) - -result = smart_scraper_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/moonshot/smart_scraper_multi_concat_moonshot.md b/docs/Examples/moonshot/smart_scraper_multi_concat_moonshot.md deleted file mode 100644 index 65c6b8dc..00000000 --- a/docs/Examples/moonshot/smart_scraper_multi_concat_moonshot.md +++ /dev/null @@ -1,53 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from langchain_community.chat_models.moonshot import MoonshotChat -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiConcatGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -llm_instance_config = { - "model": "moonshot-v1-8k", - "base_url": "https://api.moonshot.cn/v1", - "moonshot_api_key": os.getenv("MOONLIGHT_API_KEY"), -} - - -llm_model_instance = MoonshotChat(**llm_instance_config) - -graph_config = { - "llm": { - "model_instance": llm_model_instance, - "model_tokens": 10000 - }, - "verbose": True, - "headless": True, -} - - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiConcatGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/moonshot/smart_scraper_multi_lite_moonshot.md b/docs/Examples/moonshot/smart_scraper_multi_lite_moonshot.md deleted file mode 100644 index a27e2432..00000000 --- a/docs/Examples/moonshot/smart_scraper_multi_lite_moonshot.md +++ /dev/null @@ -1,35 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("MOONSHOT_API_KEY"), - "model": "moonshot/moonshot-v1-8b", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/moonshot/smart_scraper_with_moonshot.md b/docs/Examples/moonshot/smart_scraper_with_moonshot.md deleted file mode 100644 index 3d40a28c..00000000 --- a/docs/Examples/moonshot/smart_scraper_with_moonshot.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper and model_instace -""" -import os -import json -from langchain_community.chat_models.moonshot import MoonshotChat -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -llm_instance_config = { - "model": "moonshot-v1-8k", - "base_url": "https://api.moonshot.cn/v1", - "moonshot_api_key": os.getenv("MOONLIGHT_API_KEY"), -} - - -llm_model_instance = MoonshotChat(**llm_instance_config) - -graph_config = { - "llm": { - "model_instance": llm_model_instance, - "model_tokens": 10000 - }, - "verbose": True, - "headless": True, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me what does the company do, the name and a contact email.", - source="https://scrapegraphai.com/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/nemotron/document_scraper_nemotron.md b/docs/Examples/nemotron/document_scraper_nemotron.md deleted file mode 100644 index eef2ca7c..00000000 --- a/docs/Examples/nemotron/document_scraper_nemotron.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -document_scraper example -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph - -load_dotenv() - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -nemotron_key = os.getenv("NEMOTRON_APIKEY") - -graph_config = { - "llm": { - "api_key": nemotron_key, - "model": "nvidia/meta/llama3-70b-instruct", - }, -} - -source = """ - The Divine Comedy, Italian La Divina Commedia, original name La commedia, long narrative poem written in Italian - circa 1308/21 by Dante. It is usually held to be one of the world s great works of literature. - Divided into three major sections—Inferno, Purgatorio, and Paradiso—the narrative traces the journey of Dante - from darkness and error to the revelation of the divine light, culminating in the Beatific Vision of God. - Dante is guided by the Roman poet Virgil, who represents the epitome of human knowledge, from the dark wood - through the descending circles of the pit of Hell (Inferno). He then climbs the mountain of Purgatory, guided - by the Roman poet Statius, who represents the fulfilment of human knowledge, and is finally led by his lifelong love, - the Beatrice of his earlier poetry, through the celestial spheres of Paradise. -""" - -pdf_scraper_graph = DocumentScraperGraph( - prompt="Summarize the text and find the main topics", - source=source, - config=graph_config, -) -result = pdf_scraper_graph.run() - -print(json.dumps(result, indent=4)) \ No newline at end of file diff --git a/docs/Examples/nemotron/smart_scraper_lite_nemotron.md b/docs/Examples/nemotron/smart_scraper_lite_nemotron.md deleted file mode 100644 index d6388bf0..00000000 --- a/docs/Examples/nemotron/smart_scraper_lite_nemotron.md +++ /dev/null @@ -1,33 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("NEMOTRON_API_KEY"), - "model": "nemotron/nemotron-3.5-turbo", - "base_url": "http://127.0.0.1:3000/v1", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_lite_graph = SmartScraperLiteGraph( - prompt="Who is Marco Perini?", - source="https://perinim.github.io/", - config=graph_config -) - -result = smart_scraper_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/nemotron/smart_scraper_multi_lite_nemotron.md b/docs/Examples/nemotron/smart_scraper_multi_lite_nemotron.md deleted file mode 100644 index 42a3b088..00000000 --- a/docs/Examples/nemotron/smart_scraper_multi_lite_nemotron.md +++ /dev/null @@ -1,47 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": os.getenv("NEMOTRON_API_KEY"), - "model": "nemotron/nemotron-3-8b-chat", - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/oneapi/document_scraper_oneapi.md b/docs/Examples/oneapi/document_scraper_oneapi.md deleted file mode 100644 index 2260fed6..00000000 --- a/docs/Examples/oneapi/document_scraper_oneapi.md +++ /dev/null @@ -1,43 +0,0 @@ -```python -""" -document_scraper example -""" -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph - -load_dotenv() - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "api_key": "***************************", - "model": "oneapi/qwen-turbo", - "base_url": "http://127.0.0.1:3000/v1", # 设置 OneAPI URL - } -} - - -source = """ - The Divine Comedy, Italian La Divina Commedia, original name La commedia, long narrative poem written in Italian - circa 1308/21 by Dante. It is usually held to be one of the world s great works of literature. - Divided into three major sections—Inferno, Purgatorio, and Paradiso—the narrative traces the journey of Dante - from darkness and error to the revelation of the divine light, culminating in the Beatific Vision of God. - Dante is guided by the Roman poet Virgil, who represents the epitome of human knowledge, from the dark wood - through the descending circles of the pit of Hell (Inferno). He then climbs the mountain of Purgatory, guided - by the Roman poet Statius, who represents the fulfilment of human knowledge, and is finally led by his lifelong love, - the Beatrice of his earlier poetry, through the celestial spheres of Paradise. -""" - -pdf_scraper_graph = DocumentScraperGraph( - prompt="Summarize the text and find the main topics", - source=source, - config=graph_config, -) -result = pdf_scraper_graph.run() - -print(json.dumps(result, indent=4)) \ No newline at end of file diff --git a/docs/Examples/oneapi/smart_scraper_lite_oneapi.md b/docs/Examples/oneapi/smart_scraper_lite_oneapi.md deleted file mode 100644 index c45ac243..00000000 --- a/docs/Examples/oneapi/smart_scraper_lite_oneapi.md +++ /dev/null @@ -1,33 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("ONEAPI_API_KEY"), - "model": "oneapi/gpt-3.5-turbo", - "base_url": "http://127.0.0.1:3000/v1", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_lite_graph = SmartScraperLiteGraph( - prompt="Who is Marco Perini?", - source="https://perinim.github.io/", - config=graph_config -) - -result = smart_scraper_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/oneapi/smart_scraper_multi_lite_oneapi.md b/docs/Examples/oneapi/smart_scraper_multi_lite_oneapi.md deleted file mode 100644 index 2152ba4e..00000000 --- a/docs/Examples/oneapi/smart_scraper_multi_lite_oneapi.md +++ /dev/null @@ -1,44 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/openai/document_scraper_openai.md b/docs/Examples/openai/document_scraper_openai.md deleted file mode 100644 index 30d38e7b..00000000 --- a/docs/Examples/openai/document_scraper_openai.md +++ /dev/null @@ -1,40 +0,0 @@ -```python -""" -document_scraper example -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph - -load_dotenv() - - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "openai/gpt-4o", - } -} - -source = """ - The Divine Comedy, Italian La Divina Commedia, original name La commedia, long narrative poem written in Italian - circa 1308/21 by Dante. It is usually held to be one of the world s great works of literature. - Divided into three major sections—Inferno, Purgatorio, and Paradiso—the narrative traces the journey of Dante - from darkness and error to the revelation of the divine light, culminating in the Beatific Vision of God. - Dante is guided by the Roman poet Virgil, who represents the epitome of human knowledge, from the dark wood - through the descending circles of the pit of Hell (Inferno). He then climbs the mountain of Purgatory, guided - by the Roman poet Statius, who represents the fulfilment of human knowledge, and is finally led by his lifelong love, - the Beatrice of his earlier poetry, through the celestial spheres of Paradise. -""" - -pdf_scraper_graph = DocumentScraperGraph( - prompt="Summarize the text and find the main topics", - source=source, - config=graph_config, -) -result = pdf_scraper_graph.run() - -print(json.dumps(result, indent=4)) \ No newline at end of file diff --git a/docs/Examples/openai/result.md b/docs/Examples/openai/result.md deleted file mode 100644 index 958bd5f3..00000000 --- a/docs/Examples/openai/result.md +++ /dev/null @@ -1,3 +0,0 @@ -```python -0,1,2,3 -Rotary Pendulum RL,DQN,Multi Agents HAED,Wireless ESC for Modular Drones diff --git a/docs/Examples/openai/smart_scraper_lite_openai.md b/docs/Examples/openai/smart_scraper_lite_openai.md deleted file mode 100644 index 737c756b..00000000 --- a/docs/Examples/openai/smart_scraper_lite_openai.md +++ /dev/null @@ -1,33 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -graph_config = { - "llm": { - "api_key": os.getenv("OPENAI_API_KEY"), - "model": "openai/gpt-4o", - }, - "verbose": True, - "headless": False, -} - -smart_scraper_lite_graph = SmartScraperLiteGraph( - prompt="Who is Marco Perini?", - source="https://perinim.github.io/", - config=graph_config -) - -result = smart_scraper_lite_graph.run() -print(json.dumps(result, indent=4)) - -graph_exec_info = smart_scraper_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - diff --git a/docs/Examples/openai/smart_scraper_multi_lite_openai.md b/docs/Examples/openai/smart_scraper_multi_lite_openai.md deleted file mode 100644 index c8f7ef66..00000000 --- a/docs/Examples/openai/smart_scraper_multi_lite_openai.md +++ /dev/null @@ -1,48 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "api_key": os.getenv("OPENAI_API_KEY"), - "model": "openai/gpt-4o", - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/scrapegraph-api/smart_scraper_api.md b/docs/Examples/scrapegraph-api/smart_scraper_api.md deleted file mode 100644 index ab9ad6a9..00000000 --- a/docs/Examples/scrapegraph-api/smart_scraper_api.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -graph_config = { - "llm": { - "model": "scrapegraphai/smart-scraper", - "api_key": os.getenv("SCRAPEGRAPH_API_KEY") - }, - "verbose": True, - "headless": False, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="Extract me all the articles", - source="https://www.wired.com", - config=graph_config -) - -result = smart_scraper_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/single_node/fetch_node.md b/docs/Examples/single_node/fetch_node.md deleted file mode 100644 index 133c56bc..00000000 --- a/docs/Examples/single_node/fetch_node.md +++ /dev/null @@ -1,31 +0,0 @@ -```python -""" -Example of custom graph using existing nodes -""" - -from scrapegraphai.nodes import FetchNode - -# ************************************************ -# Define the node -# ************************************************ - - -fetch_node = FetchNode( - input="url | local_dir", - output=["doc"], - node_config={ - "headless": False - } -) - -# ************************************************ -# Test the node -# ************************************************ - -state = { - "url": "https://twitter.com/home" -} - -result = fetch_node.execute(state) - -print(result) diff --git a/docs/Examples/single_node/image2text_node.md b/docs/Examples/single_node/image2text_node.md deleted file mode 100644 index 6e98b34d..00000000 --- a/docs/Examples/single_node/image2text_node.md +++ /dev/null @@ -1,55 +0,0 @@ -```python -""" -Example of ImageToTextNode -""" - -import os -from dotenv import load_dotenv -from scrapegraphai.nodes import ImageToTextNode -from scrapegraphai.models import OpenAIImageToText - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "gpt-4o", - "temperature": 0, - }, -} - -# ************************************************ -# Define the node -# ************************************************ - -llm_model = OpenAIImageToText(graph_config["llm"]) - -image_to_text_node = ImageToTextNode( - input="img_url", - output=["img_desc"], - node_config={ - "llm_model": llm_model, - "headless": False - } -) - -# ************************************************ -# Test the node -# ************************************************ - -state = { - "img_url": [ - "https://perinim.github.io/assets/img/rotary_pybullet.jpg", - "https://perinim.github.io/assets/img/value-policy-heatmaps.jpg", - ], -} - -result = image_to_text_node.execute(state) - -print(result) diff --git a/docs/Examples/single_node/kg_node.md b/docs/Examples/single_node/kg_node.md deleted file mode 100644 index f1111bad..00000000 --- a/docs/Examples/single_node/kg_node.md +++ /dev/null @@ -1,80 +0,0 @@ -```python -""" -Example of knowledge graph node -""" - -import os -from langchain_openai import ChatOpenAI -from scrapegraphai.nodes import KnowledgeGraphNode - -job_postings = { - "Job Postings": { - "Company A": [ - { - "title": "Software Engineer", - "description": "Develop and maintain software applications.", - "location": "New York, NY", - "date_posted": "2024-05-01", - "requirements": ["Python", "Django", "REST APIs"] - }, - { - "title": "Data Scientist", - "description": "Analyze and interpret complex data.", - "location": "San Francisco, CA", - "date_posted": "2024-05-05", - "requirements": ["Python", "Machine Learning", "SQL"] - } - ], - "Company B": [ - { - "title": "Project Manager", - "description": "Manage software development projects.", - "location": "Boston, MA", - "date_posted": "2024-04-20", - "requirements": ["Project Management", "Agile", "Scrum"] - } - ] - } -} - - - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -openai_key = os.getenv("OPENAI_APIKEY") - -graph_config = { - "llm": { - "api_key": openai_key, - "model": "gpt-4o", - "temperature": 0, - }, - "verbose": True, -} - -# ************************************************ -# Define the node -# ************************************************ - -llm_model = ChatOpenAI(graph_config["llm"]) - -robots_node = KnowledgeGraphNode( - input="user_prompt & answer_dict", - output=["is_scrapable"], - node_config={"llm_model": llm_model} -) - -# ************************************************ -# Test the node -# ************************************************ - -state = { - "user_prompt": "What are the job postings?", - "answer_dict": job_postings -} - -result = robots_node.execute(state) - -print(result) diff --git a/docs/Examples/single_node/robot_node.md b/docs/Examples/single_node/robot_node.md deleted file mode 100644 index a80ac81a..00000000 --- a/docs/Examples/single_node/robot_node.md +++ /dev/null @@ -1,50 +0,0 @@ -```python -""" -Example of custom graph using existing nodes -""" - -from langchain_community.chat_models import ChatOllama -from scrapegraphai.nodes import RobotsNode - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "llama3", - "temperature": 0, - "streaming": True - }, - "embeddings": { - "model": "nomic-embed-text", - "temperature": 0, - # "base_url": "http://localhost:11434", # set ollama URL arbitrarily - } -} - -# ************************************************ -# Define the node -# ************************************************ - -llm_model = ChatOllama(graph_config["llm"]) - -robots_node = RobotsNode( - input="url", - output=["is_scrapable"], - node_config={"llm_model": llm_model, - "headless": False - } -) - -# ************************************************ -# Test the node -# ************************************************ - -state = { - "url": "https://twitter.com/home" -} - -result = robots_node.execute(state) - -print(result) diff --git a/docs/Examples/single_node/search_internet_node.md b/docs/Examples/single_node/search_internet_node.md deleted file mode 100644 index b2fd3dad..00000000 --- a/docs/Examples/single_node/search_internet_node.md +++ /dev/null @@ -1,51 +0,0 @@ -```python -""" -Example of custom graph using existing nodes -""" - -from langchain_community.chat_models import ChatOllama -from scrapegraphai.nodes import SearchInternetNode - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "llama3", - "temperature": 0, - "streaming": True - }, - "search_engine": "google", - "max_results": 3, - "verbose": True -} - -# ************************************************ -# Define the node -# ************************************************ - -llm_model = ChatOllama(graph_config["llm"]) - -search_node = SearchInternetNode( - input="user_input", - output=["search_results"], - node_config={ - "llm_model": llm_model, - "search_engine": graph_config["search_engine"], - "max_results": graph_config["max_results"], - "verbose": graph_config["verbose"] - } -) - -# ************************************************ -# Test the node -# ************************************************ - -state = { - "user_input": "What is the capital of France?" -} - -result = search_node.execute(state) - -print(result) diff --git a/docs/Examples/together/code_generator_graph_togehter.md b/docs/Examples/together/code_generator_graph_togehter.md deleted file mode 100644 index 61f10b95..00000000 --- a/docs/Examples/together/code_generator_graph_togehter.md +++ /dev/null @@ -1,61 +0,0 @@ -```python -""" -Basic example of scraping pipeline using Code Generator with schema -""" - -import os, json -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import CodeGeneratorGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -together_key = os.getenv("TOGETHER_KEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, - "headless": False, - "reduction": 2, - "max_iterations": { - "overall": 10, - "syntax": 3, - "execution": 3, - "validation": 3, - "semantic": 3 - }, - "output_file_name": "extracted_data.py" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -code_generator_graph = CodeGeneratorGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = code_generator_graph.run() -print(result) diff --git a/docs/Examples/together/csv_scraper_graph_multi_together.md b/docs/Examples/together/csv_scraper_graph_multi_together.md deleted file mode 100644 index a5a22e9a..00000000 --- a/docs/Examples/together/csv_scraper_graph_multi_together.md +++ /dev/null @@ -1,57 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperMultiGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, -} -# ************************************************ -# Create the CSVScraperMultiGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperMultiGraph( - prompt="List me all the last names", - source=[str(text), str(text)], - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/together/csv_scraper_together.md b/docs/Examples/together/csv_scraper_together.md deleted file mode 100644 index 09ff8783..00000000 --- a/docs/Examples/together/csv_scraper_together.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using CSVScraperGraph from CSV documents -""" -import os -from dotenv import load_dotenv -import pandas as pd -from scrapegraphai.graphs import CSVScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the CSV file -# ************************************************ - -FILE_NAME = "inputs/username.csv" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -text = pd.read_csv(file_path) - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, -} -# ************************************************ -# Create the CSVScraperGraph instance and run it -# ************************************************ - -csv_scraper_graph = CSVScraperGraph( - prompt="List me all the last names", - source=str(text), # Pass the content of the file, not the file object - config=graph_config -) - -result = csv_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = csv_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/together/depth_search_graph_together.md b/docs/Examples/together/depth_search_graph_together.md deleted file mode 100644 index b7c679f4..00000000 --- a/docs/Examples/together/depth_search_graph_together.md +++ /dev/null @@ -1,31 +0,0 @@ -```python -""" -depth_search_graph_opeani example -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import DepthSearchGraph - -load_dotenv() - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, - "headless": False, - "depth": 2, - "only_inside_links": False, -} - -search_graph = DepthSearchGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/together/document_scraper_together.md b/docs/Examples/together/document_scraper_together.md deleted file mode 100644 index 568dd596..00000000 --- a/docs/Examples/together/document_scraper_together.md +++ /dev/null @@ -1,40 +0,0 @@ -```python -""" -document_scraper example -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import DocumentScraperGraph - -load_dotenv() - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, -} - -source = """ - The Divine Comedy, Italian La Divina Commedia, original name La commedia, long narrative poem written in Italian - circa 1308/21 by Dante. It is usually held to be one of the world s great works of literature. - Divided into three major sections—Inferno, Purgatorio, and Paradiso—the narrative traces the journey of Dante - from darkness and error to the revelation of the divine light, culminating in the Beatific Vision of God. - Dante is guided by the Roman poet Virgil, who represents the epitome of human knowledge, from the dark wood - through the descending circles of the pit of Hell (Inferno). He then climbs the mountain of Purgatory, guided - by the Roman poet Statius, who represents the fulfilment of human knowledge, and is finally led by his lifelong love, - the Beatrice of his earlier poetry, through the celestial spheres of Paradise. -""" - -pdf_scraper_graph = DocumentScraperGraph( - prompt="Summarize the text and find the main topics", - source=source, - config=graph_config, -) -result = pdf_scraper_graph.run() - -print(json.dumps(result, indent=4)) \ No newline at end of file diff --git a/docs/Examples/together/json_scraper_multi_together.md b/docs/Examples/together/json_scraper_multi_together.md deleted file mode 100644 index c504bab8..00000000 --- a/docs/Examples/together/json_scraper_multi_together.md +++ /dev/null @@ -1,39 +0,0 @@ -```python -""" -Module for showing how JSONScraperMultiGraph multi works -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperMultiGraph - -load_dotenv() - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, -} - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -sources = [text, text] - -multiple_search_graph = JSONScraperMultiGraph( - prompt= "List me all the authors, title and genres of the books", - source= sources, - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/together/json_scraper_together.md b/docs/Examples/together/json_scraper_together.md deleted file mode 100644 index abe2ec33..00000000 --- a/docs/Examples/together/json_scraper_together.md +++ /dev/null @@ -1,58 +0,0 @@ -```python -""" -Basic example of scraping pipeline using JSONScraperGraph from JSON documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import JSONScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the JSON file -# ************************************************ -together_key = os.getenv("TOGETHER_APIKEY") - -FILE_NAME = "inputs/example.json" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, -} - -# ************************************************ -# Create the JSONScraperGraph instance and run it -# ************************************************ - -json_scraper_graph = JSONScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = json_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = json_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/together/rate_limit_together.md b/docs/Examples/together/rate_limit_together.md deleted file mode 100644 index 268e8b19..00000000 --- a/docs/Examples/together/rate_limit_together.md +++ /dev/null @@ -1,48 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper with a custom rate limit -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - "rate_limit": { - "requests_per_second": 1 - } - }, - "verbose": True, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/together/scrape_plain_text_together.md b/docs/Examples/together/scrape_plain_text_together.md deleted file mode 100644 index 982c4e3f..00000000 --- a/docs/Examples/together/scrape_plain_text_together.md +++ /dev/null @@ -1,56 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper from text -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the text file -# ************************************************ - -FILE_NAME = "inputs/plain_html_example.txt" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -# It could be also a http request using the request model -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the news with their description.", - source=text, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/together/script_generator_together.md b/docs/Examples/together/script_generator_together.md deleted file mode 100644 index ca4020bd..00000000 --- a/docs/Examples/together/script_generator_together.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects", - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/together/script_multi_generator_together.md b/docs/Examples/together/script_multi_generator_together.md deleted file mode 100644 index 51ddc3e3..00000000 --- a/docs/Examples/together/script_multi_generator_together.md +++ /dev/null @@ -1,54 +0,0 @@ -```python -""" -Basic example of scraping pipeline using ScriptCreatorGraph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import ScriptCreatorMultiGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "library": "beautifulsoup" -} - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -urls=[ - "https://schultzbergagency.com/emil-raste-karlsen/", - "https://schultzbergagency.com/johanna-hedberg/", -] - -# ************************************************ -# Create the ScriptCreatorGraph instance and run it -# ************************************************ - -script_creator_graph = ScriptCreatorMultiGraph( - prompt="Find information about actors", - # also accepts a string with the already downloaded HTML code - source=urls, - config=graph_config -) - -result = script_creator_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = script_creator_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/together/search_graph_schema_together.md b/docs/Examples/together/search_graph_schema_together.md deleted file mode 100644 index 7783ac10..00000000 --- a/docs/Examples/together/search_graph_schema_together.md +++ /dev/null @@ -1,62 +0,0 @@ -```python -""" -Example of Search Graph -""" - -import os -from typing import List -from pydantic import BaseModel, Field -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Dish(BaseModel): - name: str = Field(description="The name of the dish") - description: str = Field(description="The description of the dish") - -class Dishes(BaseModel): - dishes: List[Dish] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me Chioggia's famous dishes", - config=graph_config, - schema=Dishes -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/together/search_graph_together.md b/docs/Examples/together/search_graph_together.md deleted file mode 100644 index 976d996b..00000000 --- a/docs/Examples/together/search_graph_together.md +++ /dev/null @@ -1,35 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "max_results": 2, - "verbose": True, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me the best escursions near Trento", - config=graph_config -) - -result = search_graph.run() -print(result) diff --git a/docs/Examples/together/search_link_graph_together.md b/docs/Examples/together/search_link_graph_together.md deleted file mode 100644 index 3f0a78f0..00000000 --- a/docs/Examples/together/search_link_graph_together.md +++ /dev/null @@ -1,47 +0,0 @@ -```python -""" -Example of Search Graph -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SearchGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -load_dotenv() - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, -} - -# ************************************************ -# Create the SearchGraph instance and run it -# ************************************************ - -search_graph = SearchGraph( - prompt="List me the best escursions near Trento", - config=graph_config -) - -result = search_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = search_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json and csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/together/smart_scraper_lite_together.md b/docs/Examples/together/smart_scraper_lite_together.md deleted file mode 100644 index 3e7b89a1..00000000 --- a/docs/Examples/together/smart_scraper_lite_together.md +++ /dev/null @@ -1,2 +0,0 @@ -```python - \ No newline at end of file diff --git a/docs/Examples/together/smart_scraper_multi_lite_together.md b/docs/Examples/together/smart_scraper_multi_lite_together.md deleted file mode 100644 index 2152ba4e..00000000 --- a/docs/Examples/together/smart_scraper_multi_lite_together.md +++ /dev/null @@ -1,44 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiLiteGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_multi_lite_graph = SmartScraperMultiLiteGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - config=graph_config -) - -result = smart_scraper_multi_lite_graph.run() -print(json.dumps(result, indent=4)) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_multi_lite_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/together/smart_scraper_multi_together.md b/docs/Examples/together/smart_scraper_multi_together.md deleted file mode 100644 index 7d43a6a7..00000000 --- a/docs/Examples/together/smart_scraper_multi_together.md +++ /dev/null @@ -1,41 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -import json -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperMultiGraph - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, -} - -# ******************************************************* -# Create the SmartScraperMultiGraph instance and run it -# ******************************************************* - -multiple_search_graph = SmartScraperMultiGraph( - prompt="Who is Marco Perini?", - source= [ - "https://perinim.github.io/", - "https://perinim.github.io/cv/" - ], - schema=None, - config=graph_config -) - -result = multiple_search_graph.run() -print(json.dumps(result, indent=4)) diff --git a/docs/Examples/together/smart_scraper_schema_together.md b/docs/Examples/together/smart_scraper_schema_together.md deleted file mode 100644 index 85ff15b9..00000000 --- a/docs/Examples/together/smart_scraper_schema_together.md +++ /dev/null @@ -1,59 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -from typing import List -from pydantic import BaseModel, Field -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/together/smart_scraper_together.md b/docs/Examples/together/smart_scraper_together.md deleted file mode 100644 index 145d969c..00000000 --- a/docs/Examples/together/smart_scraper_together.md +++ /dev/null @@ -1,45 +0,0 @@ -```python -""" -Basic example of scraping pipeline using SmartScraper -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import SmartScraperGraph -from scrapegraphai.utils import prettify_exec_info - -load_dotenv() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their description.", - # also accepts a string with the already downloaded HTML code - source="https://perinim.github.io/projects/", - config=graph_config -) - -result = smart_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = smart_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) diff --git a/docs/Examples/together/xml_scraper_graph_multi_together.md b/docs/Examples/together/xml_scraper_graph_multi_together.md deleted file mode 100644 index bc805559..00000000 --- a/docs/Examples/together/xml_scraper_graph_multi_together.md +++ /dev/null @@ -1,59 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperMultiGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperMultiGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, -} - -# ************************************************ -# Create the XMLScraperMultiGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperMultiGraph( - prompt="List me all the authors, title and genres of the books", - source=[text, text], # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Examples/together/xml_scraper_together.md b/docs/Examples/together/xml_scraper_together.md deleted file mode 100644 index ff1f2792..00000000 --- a/docs/Examples/together/xml_scraper_together.md +++ /dev/null @@ -1,60 +0,0 @@ -```python -""" -Basic example of scraping pipeline using XMLScraperGraph from XML documents -""" -import os -from dotenv import load_dotenv -from scrapegraphai.graphs import XMLScraperGraph -from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info - -load_dotenv() - -# ************************************************ -# Read the XML file -# ************************************************ - -FILE_NAME = "inputs/books.xml" -curr_dir = os.path.dirname(os.path.realpath(__file__)) -file_path = os.path.join(curr_dir, FILE_NAME) - -with open(file_path, 'r', encoding="utf-8") as file: - text = file.read() - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - - -together_key = os.getenv("TOGETHER_APIKEY") - -graph_config = { - "llm": { - "model": "togetherai/meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo", - "api_key": together_key, - }, - "verbose": True, -} - -# ************************************************ -# Create the XMLScraperGraph instance and run it -# ************************************************ - -xml_scraper_graph = XMLScraperGraph( - prompt="List me all the authors, title and genres of the books", - source=text, # Pass the content of the file, not the file object - config=graph_config -) - -result = xml_scraper_graph.run() -print(result) - -# ************************************************ -# Get graph execution info -# ************************************************ - -graph_exec_info = xml_scraper_graph.get_execution_info() -print(prettify_exec_info(graph_exec_info)) - -# Save to json or csv -convert_to_csv(result, "result") -convert_to_json(result, "result") diff --git a/docs/Graphs/Abstract_graph.md b/docs/Graphs/Abstract_graph.md deleted file mode 100644 index 36c163c1..00000000 --- a/docs/Graphs/Abstract_graph.md +++ /dev/null @@ -1,94 +0,0 @@ -# 🆎 Abstract Graph - -The `AbstractGraph` module provides a scaffolding class for creating a graph representation and executing it. - -## Classes - -### `AbstractGraph` - -`AbstractGraph` is an abstract base class for creating and executing graph representations. It defines the structure and behavior for a graph-based execution model. - -#### Attributes - -- **prompt (str)**: The prompt for the graph. -- **source (Optional[str])**: The source of the graph. -- **config (dict)**: Configuration parameters for the graph. -- **schema (Optional[str])**: The schema for the graph output. -- **llm_model**: An instance of a language model client, configured for generating answers. -- **embedder_model**: An instance of an embedding model client, configured for generating embeddings. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. -- **headless (bool)**: A flag indicating whether to run the graph in headless mode. - -#### Methods - -- **`__init__(self, prompt: str, config: dict, source: Optional[str] = None, schema: Optional[str] = None)`** - - Initializes the graph with the given prompt and configuration. - - **Args**: - - `prompt (str)`: The prompt for the graph. - - `config (dict)`: Configuration parameters for the graph. - - `source (Optional[str])`: The source of the graph. - - `schema (Optional[str])`: The schema for the graph output. - -- **`set_common_params(self, params: dict, overwrite=False)`** - - Passes common parameters to every node in the graph unless otherwise defined. - - **Args**: - - `params (dict)`: Common parameters and their values. - - `overwrite (bool)`: Whether to overwrite existing parameters. - -- **`_set_model_token(self, llm)`** - - Sets the model token based on the type of language model. - -- **`_create_llm(self, llm_config: dict, chat=False) -> object`** - - Creates a large language model instance based on the configuration provided. - - **Args**: - - `llm_config (dict)`: Configuration parameters for the language model. - - `chat (bool)`: Whether the model is used for chat. - - **Returns**: An instance of the language model client. - -- **`_create_default_embedder(self, llm_config=None) -> object`** - - Creates a default embedding model instance based on the chosen LLM model. - - **Returns**: An instance of the embedding model client. - -- **`_create_embedder(self, embedder_config: dict) -> object`** - - Creates an embedding model instance based on the configuration provided. - - **Args**: - - `embedder_config (dict)`: Configuration parameters for the embedding model. - - **Returns**: An instance of the embedding model client. - -- **`get_state(self, key=None) -> dict`** - - Retrieves the final state of the graph. - - **Args**: - - `key (Optional[str])`: The key of the final state to retrieve. - - **Returns**: The final state of the graph. - -- **`get_execution_info(self)`** - - Returns the execution information of the graph. - - **Returns**: The execution information of the graph. - -- **`_create_graph(self)`** - - Abstract method to create a graph representation. - - **Returns**: A graph representation. - -- **`run(self) -> str`** - - Abstract method to execute the graph and return the result. - - **Returns**: The result of executing the graph. - -## Example Usage - -Here is an example of how to use the `AbstractGraph` class: - -```python -from abstract_graph import AbstractGraph - -class MyGraph(AbstractGraph): - def _create_graph(self): - # Implementation of graph creation here - return graph - - def run(self): - # Implementation of graph execution here - return "Result" - -my_graph = MyGraph("Example Graph", {"llm": {"model": "gpt-3.5-turbo"}}, "example_source") -result = my_graph.run() -print(result) diff --git a/docs/Graphs/_category_.json b/docs/Graphs/_category_.json deleted file mode 100644 index 7cb609f0..00000000 --- a/docs/Graphs/_category_.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "label": "Graphs", - "position": 5, - "link": { - "type": "generated-index", - "description": "Description of the Helpers folder" - } -} \ No newline at end of file diff --git a/docs/Graphs/assets/dept_search.png b/docs/Graphs/assets/dept_search.png deleted file mode 100644 index 6cf02d12f941f3c86bf444ddc2a5610319374c24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27154 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 bBdpfUNTbtoZP-}gzq>NZck*sOc>aF?ms1nZ diff --git a/docs/Graphs/base_graph.md b/docs/Graphs/base_graph.md deleted file mode 100644 index 1cf97724..00000000 --- a/docs/Graphs/base_graph.md +++ /dev/null @@ -1,82 +0,0 @@ -# ⚾️ Base Graph - -The `BaseGraph` module provides a class for managing and executing a graph composed of interconnected nodes. - -## Classes - -### `BaseGraph` - -`BaseGraph` manages the execution flow of a graph composed of interconnected nodes. - -#### Attributes - -- **nodes (list)**: A list of node instances that will be part of the graph. -- **edges (list)**: A dictionary representing the directed edges of the graph where each key-value pair corresponds to the from-node and to-node relationship. -- **entry_point (str)**: The name of the entry point node from which the graph execution begins. -- **initial_state (dict)**: The initial state passed to the entry point node. -- **use_burr (bool)**: A flag indicating whether to use BurrBridge for execution. -- **burr_config (dict)**: Configuration parameters for BurrBridge. - -#### Methods - -- **`__init__(self, nodes: list, edges: list, entry_point: str, use_burr: bool = False, burr_config: dict = None)`** - - Initializes the graph with the given nodes, edges, and entry point. - - **Args**: - - `nodes (list)`: An iterable of node instances that will be part of the graph. - - `edges (list)`: An iterable of tuples where each tuple represents a directed edge in the graph, defined by a pair of nodes (from_node, to_node). - - `entry_point (BaseNode)`: The node instance that represents the entry point of the graph. - - `use_burr (bool)`: A flag indicating whether to use BurrBridge for execution. - - `burr_config (dict)`: Configuration parameters for BurrBridge. - - **Raises**: - - `Warning`: If the entry point node is not the first node in the list. - -- **`_create_edges(self, edges: list) -> dict`** - - Helper method to create a dictionary of edges from the given iterable of tuples. - - **Args**: - - `edges (list)`: An iterable of tuples representing the directed edges. - - **Returns**: A dictionary of edges with the from-node as keys and to-node as values. - -- **`_execute_standard(self, initial_state: dict) -> Tuple[dict, list]`** - - Executes the graph by traversing nodes starting from the entry point using the standard method. - - **Args**: - - `initial_state (dict)`: The initial state to pass to the entry point node. - - **Returns**: A tuple containing the final state and a list of execution info. - -- **`execute(self, initial_state: dict) -> Tuple[dict, list]`** - - Executes the graph by either using BurrBridge or the standard method. - - **Args**: - - `initial_state (dict)`: The initial state to pass to the entry point node. - - **Returns**: A tuple containing the final state and a list of execution info. - -## Example Usage - -Here is an example of how to use the `BaseGraph` class: - -```python -from base_graph import BaseGraph - -# Define your nodes and edges -fetch_node = ... -parse_node = ... -rag_node = ... -generate_answer_node = ... - -# Create the graph -graph = BaseGraph( - nodes=[fetch_node, parse_node, rag_node, generate_answer_node], - edges=[ - (fetch_node, parse_node), - (parse_node, rag_node), - (rag_node, generate_answer_node) - ], - entry_point=fetch_node, - use_burr=True, - burr_config={"app_instance_id": "example-instance"} -) - -# Execute the graph -initial_state = {} -final_state, exec_info = graph.execute(initial_state) - -print(final_state) -print(exec_info) diff --git a/docs/Graphs/code_generator_graph.md b/docs/Graphs/code_generator_graph.md deleted file mode 100644 index 90876e6f..00000000 --- a/docs/Graphs/code_generator_graph.md +++ /dev/null @@ -1,57 +0,0 @@ -# 🫀 CodeGeneratorGraph - -**CodeGeneratorGraph** is responsible for generating Python code that extracts specific data from HTML pages using the BeautifulSoup library. It creates a workflow that consists of interconnected nodes handling different stages of the scraping process, from fetching HTML content to generating Python functions based on user prompts. - -### Attributes - -- `prompt (str)`: The user-defined prompt for guiding the code generation process. -- `source (str)`: The URL or local directory from which the HTML content is sourced. -- `config (dict)`: Configuration options for the graph, such as model settings and execution flags. -- `schema (BaseModel)`: Defines the expected output structure for the generated code. -- `llm_model`: An instance of a language model used for generating answers based on the provided prompt. -- `embedder_model`: An embedding model for processing text data into vector embeddings. -- `verbose (bool)`: Flag indicating whether to display detailed execution logs. -- `headless (bool)`: Specifies whether to run the scraping process in headless mode. -- `reduction (int)`: Defines the level of reduction to apply to the HTML content (can be 0, 1, or 2). -- `max_iterations (dict)`: Maximum number of iterations for each reasoning loop of `GenerateCodeNode`. - -### Methods - -#### `__init__(self, prompt: str, source: str, config: dict, schema: Optional[BaseModel] = None)` -Initializes the CodeGeneratorGraph with a user-defined prompt, data source, configuration, and schema. - -**Args:** -- `prompt (str)`: The prompt guiding the graph's workflow. -- `source (str)`: The data source (URL or local directory) to scrape from. -- `config (dict)`: Configuration parameters, including model settings. -- `schema (Optional[BaseModel])`: Output schema for validating the generated code. - -#### `_create_graph(self) -> BaseGraph` -Creates and connects the nodes for the web scraping process, constructing a graph that defines the workflow from fetching data to generating Python code. - -**Returns:** -- `BaseGraph`: The constructed graph containing the workflow nodes. - -#### `run(self) -> str` -Executes the graph and returns the generated Python code for data extraction. - -**Returns:** -- `str`: The generated code or an error message if no code was created. - -### Example Usage - -```python -code_gen = CodeGeneratorGraph( - prompt="List me all the attractions in Chioggia.", - source="https://en.wikipedia.org/wiki/Chioggia", - config={"llm": {"model": "openai/gpt-3.5-turbo"}} -) - -result = code_gen.run() -print(result) -``` - -## Flow of the process -![assets/graph.png](assets/graph.png) - -*** \ No newline at end of file diff --git a/docs/Graphs/csv_scraper_graph.md b/docs/Graphs/csv_scraper_graph.md deleted file mode 100644 index 3b7f82ca..00000000 --- a/docs/Graphs/csv_scraper_graph.md +++ /dev/null @@ -1,67 +0,0 @@ -# ⚾️ csv scraper graph - -The `CSVScraperGraph` module provides a class for creating and executing a graph that automates the process of extracting information from web pages using a natural language model. - -## Classes - -### `CSVScraperGraph` - -`CSVScraperGraph` is a comprehensive web scraping tool that automates the process of extracting information from web pages using a natural language model to interpret and answer prompts. - -#### Attributes - -- **prompt (str)**: The prompt for the graph. -- **source (str)**: The source of the graph. -- **config (dict)**: Configuration parameters for the graph. -- **schema (Optional[str])**: The schema for the graph output. -- **input_key (str)**: The key for the input source (either `csv` or `csv_dir`). -- **llm_model**: An instance of a language model client, configured for generating answers. -- **embedder_model**: An instance of an embedding model client, configured for generating embeddings. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. -- **headless (bool)**: A flag indicating whether to run the graph in headless mode. -- **loader_kwargs**: Additional keyword arguments for the loader. -- **graph**: The graph of nodes representing the workflow for web scraping. -- **final_state**: The final state of the graph after execution. -- **execution_info**: Information about the execution of the graph. - -#### Methods - -- **`__init__(self, prompt: str, source: str, config: dict, schema: Optional[str] = None)`** - - Initializes the `CSVScraperGraph` with a prompt, source, and configuration. - - **Args**: - - `prompt (str)`: The prompt for the graph. - - `source (str)`: The source of the graph. - - `config (dict)`: Configuration parameters for the graph. - - `schema (Optional[str])`: The schema for the graph output. - -- **`_create_graph(self)`** - - Creates the graph of nodes representing the workflow for web scraping. - - **Returns**: An instance of `BaseGraph`. - -- **`run(self) -> str`** - - Executes the web scraping process and returns the answer to the prompt. - - **Returns**: The answer to the prompt. - -## Example Usage - -Here is an example of how to use the `CSVScraperGraph` class: - -```python -from csv_scraper_graph import CSVScraperGraph - -# Define the prompt, source, and configuration -prompt = "Extract information from this CSV." -source = "data.csv" -config = { - "llm": {"model": "gpt-3.5-turbo"}, - "verbose": True, - "headless": False, -} - -# Create the scraper graph -scraper_graph = CSVScraperGraph(prompt, source, config) - -# Run the scraper graph -answer = scraper_graph.run() - -print(answer) diff --git a/docs/Graphs/depth_search_graph.md b/docs/Graphs/depth_search_graph.md deleted file mode 100644 index 6d4f50f6..00000000 --- a/docs/Graphs/depth_search_graph.md +++ /dev/null @@ -1,27 +0,0 @@ -# 🐸 DepthSearchGraph Module -## Overview - -`DepthSearchGraph` is a script generator pipeline that generates the function `extract_data(html: str) -> dict()` for extracting the wanted information from a HTML page. The code generated is in Python and uses the library BeautifulSoup. It requires a user prompt, a source URL, and an output schema. - -## Attributes - -- `prompt` (str): The prompt for the graph. -- `source` (str): The source of the graph. -- `config` (dict): Configuration parameters for the graph. -- `schema` (BaseModel): The schema for the graph output. -- `llm_model`: An instance of a language model client, configured for generating answers. -- `embedder_model`: An instance of an embedding model client, configured for generating embeddings. -- `verbose` (bool): A flag indicating whether to show print statements during execution. -- `headless` (bool): A flag indicating whether to run the graph in headless mode. -- `library` (str): The library used for web scraping (beautiful soup). - -## Args - -- `prompt` (str): The prompt for the graph. -- `source` (str): The source of the graph. -- `config` (dict): Configuration parameters for the graph. -- `schema` (BaseModel): The schema for the graph output. - -## Flow of the process - -![assets/dept_search.png](assets/dept_search.png) \ No newline at end of file diff --git a/docs/Graphs/json_scraper_graph.md b/docs/Graphs/json_scraper_graph.md deleted file mode 100644 index af66a67b..00000000 --- a/docs/Graphs/json_scraper_graph.md +++ /dev/null @@ -1,66 +0,0 @@ -# 🐢 JSONScraperGraph Module - -The `JSONScraperGraph` module defines a class for creating and executing a graph that automates the process of extracting information from JSON files using a natural language model. - -## Classes - -### `JSONScraperGraph` - -`JSONScraperGraph` defines a scraping pipeline for JSON files. - -#### Attributes - -- **prompt (str)**: The prompt for the graph. -- **source (str)**: The source of the graph. -- **config (dict)**: Configuration parameters for the graph. -- **schema (str)**: The schema for the graph output. -- **llm_model**: An instance of a language model client, configured for generating answers. -- **embedder_model**: An instance of an embedding model client, configured for generating embeddings. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. -- **headless (bool)**: A flag indicating whether to run the graph in headless mode. -- **input_key (str)**: The key for the input source (either `json` or `json_dir`). -- **graph**: The graph of nodes representing the workflow for web scraping. -- **final_state**: The final state of the graph after execution. -- **execution_info**: Information about the execution of the graph. - -#### Methods - -- **`__init__(self, prompt: str, source: str, config: dict, schema: Optional[str] = None)`** - - Initializes the `JSONScraperGraph` with a prompt, source, and configuration. - - **Args**: - - `prompt (str)`: The prompt for the graph. - - `source (str)`: The source of the graph. - - `config (dict)`: Configuration parameters for the graph. - - `schema (Optional[str])`: The schema for the graph output. - -- **`_create_graph(self) -> BaseGraph`** - - Creates the graph of nodes representing the workflow for web scraping. - - **Returns**: An instance of `BaseGraph`. - -- **`run(self) -> str`** - - Executes the web scraping process and returns the answer to the prompt. - - **Returns**: The answer to the prompt. - -## Example Usage - -Here is an example of how to use the `JSONScraperGraph` class: - -```python -from json_scraper_graph import JSONScraperGraph - -# Define the prompt, source, and configuration -prompt = "List me all the attractions in Chioggia." -source = "data/chioggia.json" -config = { - "llm": {"model": "gpt-3.5-turbo"}, - "verbose": True, - "headless": False, -} - -# Create the scraper graph -json_scraper = JSONScraperGraph(prompt, source, config) - -# Run the scraper graph -result = json_scraper.run() - -print(result) diff --git a/docs/Graphs/omni_scraper_graph.md b/docs/Graphs/omni_scraper_graph.md deleted file mode 100644 index ff9ccb0a..00000000 --- a/docs/Graphs/omni_scraper_graph.md +++ /dev/null @@ -1,68 +0,0 @@ -# 😇 OmniScraperGraph Module - -The `OmniScraperGraph` module defines a class for creating and executing a graph that automates the process of extracting information from web pages using a natural language model. - -## Classes - -### `OmniScraperGraph` - -`OmniScraperGraph` is a scraping pipeline that automates the process of extracting information from web pages using a natural language model to interpret and answer prompts. - -#### Attributes - -- **prompt (str)**: The prompt for the graph. -- **source (str)**: The source of the graph. -- **config (dict)**: Configuration parameters for the graph. -- **schema (str)**: The schema for the graph output. -- **llm_model**: An instance of a language model client, configured for generating answers. -- **embedder_model**: An instance of an embedding model client, configured for generating embeddings. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. -- **headless (bool)**: A flag indicating whether to run the graph in headless mode. -- **max_images (int)**: The maximum number of images to process. -- **input_key (str)**: The key for the input source (either `url` or `local_dir`). -- **graph**: The graph of nodes representing the workflow for web scraping. -- **final_state**: The final state of the graph after execution. -- **execution_info**: Information about the execution of the graph. - -#### Methods - -- **`__init__(self, prompt: str, source: str, config: dict, schema: Optional[str] = None)`** - - Initializes the `OmniScraperGraph` with a prompt, source, and configuration. - - **Args**: - - `prompt (str)`: The prompt for the graph. - - `source (str)`: The source of the graph. - - `config (dict)`: Configuration parameters for the graph. - - `schema (Optional[str])`: The schema for the graph output. - -- **`_create_graph(self) -> BaseGraph`** - - Creates the graph of nodes representing the workflow for web scraping. - - **Returns**: An instance of `BaseGraph`. - -- **`run(self) -> str`** - - Executes the web scraping process and returns the answer to the prompt. - - **Returns**: The answer to the prompt. - -## Example Usage - -Here is an example of how to use the `OmniScraperGraph` class: - -```python -from omni_scraper_graph import OmniScraperGraph - -# Define the prompt, source, and configuration -prompt = "List me all the attractions in Chioggia and describe their pictures." -source = "https://en.wikipedia.org/wiki/Chioggia" -config = { - "llm": {"model": "gpt-4o"}, - "max_images": 10, - "verbose": True, - "headless": False, -} - -# Create the scraper graph -omni_scraper = OmniScraperGraph(prompt, source, config) - -# Run the scraper graph -result = omni_scraper.run() - -print(result) diff --git a/docs/Graphs/omni_search_graph.md b/docs/Graphs/omni_search_graph.md deleted file mode 100644 index e5f33d56..00000000 --- a/docs/Graphs/omni_search_graph.md +++ /dev/null @@ -1,63 +0,0 @@ -# 🌈 OmniSearchGraph Module - -The `OmniSearchGraph` module defines a class for creating and executing a graph that searches the internet for answers to a given prompt. It combines web scraping and internet searching to generate an answer based on the user's query. - -## Classes - -### `OmniSearchGraph` - -`OmniSearchGraph` is a scraping pipeline that searches the internet for answers to a given prompt. It only requires a user prompt to search the internet and generate an answer. - -#### Attributes - -- **prompt (str)**: The user prompt to search the internet. -- **llm_model (dict)**: The configuration for the language model. -- **embedder_model (dict)**: The configuration for the embedder model. -- **headless (bool)**: A flag to run the browser in headless mode. -- **verbose (bool)**: A flag to display the execution information. -- **model_token (int)**: The token limit for the language model. -- **max_results (int)**: The maximum number of results to return. -- **input_key (str)**: The key for the input source (either `url` or `local_dir`). -- **graph**: The graph of nodes representing the workflow for web scraping and searching. -- **final_state**: The final state of the graph after execution. -- **execution_info**: Information about the execution of the graph. - -#### Methods - -- **`__init__(self, prompt: str, config: dict, schema: Optional[str] = None)`** - - Initializes the `OmniSearchGraph` with a prompt, configuration, and schema. - - **Args**: - - `prompt (str)`: The user prompt to search the internet. - - `config (dict)`: Configuration parameters for the graph. - - `schema (Optional[str])`: The schema for the graph output. - -- **`_create_graph(self) -> BaseGraph`** - - Creates the graph of nodes representing the workflow for web scraping and searching. - - **Returns**: An instance of `BaseGraph`. - -- **`run(self) -> str`** - - Executes the web scraping and searching process and returns the answer to the prompt. - - **Returns**: The answer to the prompt. - -## Example Usage - -Here is an example of how to use the `OmniSearchGraph` class: - -```python -from omni_search_graph import OmniSearchGraph - -# Define the prompt and configuration -prompt = "What is Chioggia famous for?" -config = { - "llm": {"model": "gpt-4o"}, - "max_results": 5, - "headless": False, -} - -# Create the search graph -omni_search = OmniSearchGraph(prompt, config) - -# Run the search graph -result = omni_search.run() - -print(result) diff --git a/docs/Graphs/scrape_graph.md b/docs/Graphs/scrape_graph.md deleted file mode 100644 index cc36369e..00000000 --- a/docs/Graphs/scrape_graph.md +++ /dev/null @@ -1,34 +0,0 @@ -# 🕷️ ScrapeGraph Module - -The `ScrapeGraph` module defines a class for creating and executing a graph that scrapes a single URL and generates an answer to a given prompt. - -## Classes - -### `ScrapeGraph` - -`ScrapeGraph` is a scraping pipeline that scrapes a single URL and generates an answer to a given prompt. It requires a user prompt and a source URL. - -#### Attributes - -- **prompt (str)**: The user prompt to search the internet. -- **source (str)**: The URL to scrape. -- **config (dict)**: Configuration parameters for the graph. -- **schema (Optional[str])**: The schema for the graph output. -- **llm_model**: An instance of a language model client, configured for generating answers. -- **embedder_model**: An instance of an embedding model client, configured for generating embeddings. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. -- **headless (bool)**: A flag indicating whether to run the graph in headless mode. - -#### Methods - -- **`__init__(self, prompt: str, source: str, config: dict, schema: Optional[str] = None)`** - - Initializes the `ScrapeGraph` with a prompt, source URL, configuration, and schema. - -- **`_create_graph(self) -> BaseGraph`** - - Creates the graph of nodes representing the workflow for web scraping and answer generation. - - **Returns**: An instance of `BaseGraph`. - -- **`run(self) -> str`** - - Executes the web scraping and answer generation process. - - **Returns**: The answer to the prompt. - diff --git a/docs/Graphs/script_creator_graph.md b/docs/Graphs/script_creator_graph.md deleted file mode 100644 index 39817823..00000000 --- a/docs/Graphs/script_creator_graph.md +++ /dev/null @@ -1,63 +0,0 @@ -# 🦷 ScriptCreatorGraph Module - -The `ScriptCreatorGraph` module defines a class for creating and executing a graph that generates web scraping scripts. - -## Classes - -### `ScriptCreatorGraph` - -`ScriptCreatorGraph` defines a scraping pipeline for generating web scraping scripts. - -#### Attributes - -- **prompt (str)**: The prompt for the graph. -- **source (str)**: The source of the graph. -- **config (dict)**: Configuration parameters for the graph. -- **schema (str)**: The schema for the graph output. -- **llm_model**: An instance of a language model client, configured for generating answers. -- **embedder_model**: An instance of an embedding model client, configured for generating embeddings. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. -- **headless (bool)**: A flag indicating whether to run the graph in headless mode. -- **model_token (int)**: The token limit for the language model. -- **library (str)**: The library used for web scraping. - -#### Methods - -- **`__init__(self, prompt: str, source: str, config: dict, schema: Optional[str] = None)`** - - Initializes the `ScriptCreatorGraph` with a prompt, source, configuration, and schema. - - **Args**: - - `prompt (str)`: The prompt for the graph. - - `source (str)`: The source of the graph. - - `config (dict)`: Configuration parameters for the graph. - - `schema (str)`: The schema for the graph output. - -- **`_create_graph(self) -> BaseGraph`** - - Creates the graph of nodes representing the workflow for generating web scraping scripts. - - **Returns**: An instance of `BaseGraph`. - -- **`run(self) -> str`** - - Executes the web scraping process and returns the answer to the prompt. - - **Returns**: The answer to the prompt. - -## Example Usage - -Here is an example of how to use the `ScriptCreatorGraph` class: - -```python -from script_creator_graph import ScriptCreatorGraph - -# Define the prompt, source, and configuration -prompt = "List me all the attractions in Chioggia." -source = "https://en.wikipedia.org/wiki/Chioggia" -config = { - "llm": {"model": "gpt-3.5-turbo"}, - "library": "BeautifulSoup" -} - -# Create the script creator graph -script_creator = ScriptCreatorGraph(prompt, source, config) - -# Run the script creator graph -result = script_creator.run() - -print(result) diff --git a/docs/Graphs/serch_graph.md b/docs/Graphs/serch_graph.md deleted file mode 100644 index a892adb7..00000000 --- a/docs/Graphs/serch_graph.md +++ /dev/null @@ -1,56 +0,0 @@ -# 😽 SearchGraph Module - -The `SearchGraph` module defines a class for creating and executing a graph that searches the internet for answers to a given prompt. - -## Classes - -### `SearchGraph` - -`SearchGraph` is a scraping pipeline that searches the internet for answers to a given prompt. It only requires a user prompt to search the internet and generate an answer. - -#### Attributes - -- **prompt (str)**: The user prompt to search the internet. -- **llm_model (dict)**: The configuration for the language model. -- **embedder_model (dict)**: The configuration for the embedder model. -- **headless (bool)**: A flag to run the browser in headless mode. -- **verbose (bool)**: A flag to display the execution information. -- **model_token (int)**: The token limit for the language model. - -#### Methods - -- **`__init__(self, prompt: str, config: dict, schema: Optional[str] = None)`** - - Initializes the `SearchGraph` with a prompt, configuration, and schema. - - **Args**: - - `prompt (str)`: The user prompt to search the internet. - - `config (dict)`: Configuration parameters for the graph. - - `schema (Optional[str])`: The schema for the graph output. - -- **`_create_graph(self) -> BaseGraph`** - - Creates the graph of nodes representing the workflow for web scraping and searching. - - **Returns**: An instance of `BaseGraph`. - -- **`run(self) -> str`** - - Executes the web scraping and searching process. - - **Returns**: The answer to the prompt. - -## Example Usage - -Here is an example of how to use the `SearchGraph` class: - -```python -from search_graph import SearchGraph - -# Define the prompt and configuration -prompt = "What is Chioggia famous for?" -config = { - "llm": {"model": "gpt-3.5-turbo"} -} - -# Create the search graph -search_graph = SearchGraph(prompt, config) - -# Run the search graph -result = search_graph.run() - -print(result) diff --git a/docs/Graphs/smart_scraper_graph.md b/docs/Graphs/smart_scraper_graph.md deleted file mode 100644 index 75b0ff64..00000000 --- a/docs/Graphs/smart_scraper_graph.md +++ /dev/null @@ -1,60 +0,0 @@ -# 👄 SmartScraperGraph Module - -The `SmartScraperGraph` module defines a class for creating and executing a graph that automates the process of extracting information from web pages using a natural language model to interpret and answer prompts. - -## Classes - -### `SmartScraperGraph` - -`SmartScraperGraph` is a scraping pipeline that automates the process of extracting information from web pages using a natural language model to interpret and answer prompts. - -#### Attributes - -- **prompt (str)**: The prompt for the graph. -- **source (str)**: The source of the graph. -- **config (dict)**: Configuration parameters for the graph. -- **schema (str)**: The schema for the graph output. -- **llm_model**: An instance of a language model client, configured for generating answers. -- **embedder_model**: An instance of an embedding model client, configured for generating embeddings. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. -- **headless (bool)**: A flag indicating whether to run the graph in headless mode. - -#### Methods - -- **`__init__(self, prompt: str, source: str, config: dict, schema: Optional[str] = None)`** - - Initializes the `SmartScraperGraph` with a prompt, source, configuration, and schema. - - **Args**: - - `prompt (str)`: The prompt for the graph. - - `source (str)`: The source of the graph. - - `config (dict)`: Configuration parameters for the graph. - - `schema (Optional[str])`: The schema for the graph output. - -- **`_create_graph(self) -> BaseGraph`** - - Creates the graph of nodes representing the workflow for web scraping. - - **Returns**: An instance of `BaseGraph`. - -- **`run(self) -> str`** - - Executes the scraping process and returns the answer to the prompt. - - **Returns**: The answer to the prompt. - -## Example Usage - -Here is an example of how to use the `SmartScraperGraph` class: - -```python -from smart_scraper_graph import SmartScraperGraph - -# Define the prompt, source, and configuration -prompt = "List me all the attractions in Chioggia." -source = "https://en.wikipedia.org/wiki/Chioggia" -config = { - "llm": {"model": "gpt-3.5-turbo"} -} - -# Create the smart scraper graph -smart_scraper = SmartScraperGraph(prompt, source, config) - -# Run the smart scraper graph -result = smart_scraper.run() - -print(result) diff --git a/docs/Graphs/smart_scraper_multi.md b/docs/Graphs/smart_scraper_multi.md deleted file mode 100644 index 4a29cea3..00000000 --- a/docs/Graphs/smart_scraper_multi.md +++ /dev/null @@ -1,58 +0,0 @@ -# 🧚🏻‍♂️ SmartScraperMultiGraph Module - -The `SmartScraperMultiGraph` module defines a class for creating and executing a graph that scrapes a list of URLs and generates answers to a given prompt. - -## Classes - -### `SmartScraperMultiGraph` - -`SmartScraperMultiGraph` is a scraping pipeline that scrapes a list of URLs and generates answers to a given prompt. It only requires a user prompt and a list of URLs. - -#### Attributes - -- **prompt (str)**: The user prompt to search the internet. -- **llm_model (dict)**: The configuration for the language model. -- **embedder_model (dict)**: The configuration for the embedder model. -- **headless (bool)**: A flag to run the browser in headless mode. -- **verbose (bool)**: A flag to display the execution information. -- **model_token (int)**: The token limit for the language model. - -#### Methods - -- **`__init__(self, prompt: str, source: List[str], config: dict, schema: Optional[str] = None)`** - - Initializes the `SmartScraperMultiGraph` with a prompt, source (list of URLs), configuration, and schema. - - **Args**: - - `prompt (str)`: The user prompt to search the internet. - - `source (List[str])`: The source of the graph (list of URLs). - - `config (dict)`: Configuration parameters for the graph. - - `schema (Optional[str])`: The schema for the graph output. - -- **`_create_graph(self) -> BaseGraph`** - - Creates the graph of nodes representing the workflow for web scraping and searching. - - **Returns**: An instance of `BaseGraph`. - -- **`run(self) -> str`** - - Executes the web scraping and searching process. - - **Returns**: The answer to the prompt. - -## Example Usage - -Here is an example of how to use the `SmartScraperMultiGraph` class: - -```python -from smart_scraper_multi_graph import SmartScraperMultiGraph - -# Define the prompt, source (list of URLs), and configuration -prompt = "What is Chioggia famous for?" -source = ["https://en.wikipedia.org/wiki/Chioggia", "https://example.com"] -config = { - "llm": {"model": "gpt-3.5-turbo"} -} - -# Create the smart scraper multi graph -smart_scraper_multi = SmartScraperMultiGraph(prompt, source, config) - -# Run the smart scraper multi graph -result = smart_scraper_multi.run() - -print(result) diff --git a/docs/Graphs/smart_scraper_multi_lite_graph.md b/docs/Graphs/smart_scraper_multi_lite_graph.md deleted file mode 100644 index 82239872..00000000 --- a/docs/Graphs/smart_scraper_multi_lite_graph.md +++ /dev/null @@ -1,33 +0,0 @@ -# 🧚🏻‍♂️ SmartScraperMultiLiteGraph Module - -The `SmartScraperMultiLiteGraph` module defines a class for creating and executing a graph that scrapes multiple URLs and generates answers to a given prompt. This is a lightweight version of the `SmartScraperMultiGraph`. - -## Classes - -### `SmartScraperMultiLiteGraph` - -`SmartScraperMultiLiteGraph` is a scraping pipeline that scrapes multiple URLs and generates answers to a given prompt. It only requires a user prompt and a list of URLs. - -#### Attributes - -- **prompt (str)**: The user prompt to search the internet. -- **source (List[str])**: The list of URLs to scrape. -- **config (dict)**: Configuration parameters for the graph. -- **schema (Optional[str])**: The schema for the graph output. -- **llm_model**: An instance of a language model client, configured for generating answers. -- **embedder_model**: An instance of an embedding model client, configured for generating embeddings. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. -- **headless (bool)**: A flag indicating whether to run the graph in headless mode. - -#### Methods - -- **`__init__(self, prompt: str, source: List[str], config: dict, schema: Optional[str] = None)`** - - Initializes the `SmartScraperMultiLiteGraph` with a prompt, source (list of URLs), configuration, and schema. - -- **`_create_graph(self) -> BaseGraph`** - - Creates the graph of nodes representing the workflow for web scraping and searching. - - **Returns**: An instance of `BaseGraph`. - -- **`run(self) -> str`** - - Executes the web scraping and searching process. - - **Returns**: The answer to the prompt. diff --git a/docs/Graphs/speech_summary.md b/docs/Graphs/speech_summary.md deleted file mode 100644 index c97e63ac..00000000 --- a/docs/Graphs/speech_summary.md +++ /dev/null @@ -1,62 +0,0 @@ -# 🦹🏻‍♀️ SpeechGraph Module - -The `SpeechGraph` module defines a class for creating and executing a graph that scrapes the web, provides an answer to a given prompt, and generates an audio file. - -## Classes - -### `SpeechGraph` - -`SpeechGraph` is a scraping pipeline that scrapes the web, provides an answer to a given prompt, and generates an audio file. - -#### Attributes - -- **prompt (str)**: The prompt for the graph. -- **source (str)**: The source of the graph. -- **config (dict)**: Configuration parameters for the graph. -- **schema (str)**: The schema for the graph output. -- **llm_model**: An instance of a language model client, configured for generating answers. -- **embedder_model**: An instance of an embedding model client, configured for generating embeddings. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. -- **headless (bool)**: A flag indicating whether to run the graph in headless mode. -- **model_token (int)**: The token limit for the language model. - -#### Methods - -- **`__init__(self, prompt: str, source: str, config: dict, schema: Optional[str] = None)`** - - Initializes the `SpeechGraph` with a prompt, source (URL or local directory), configuration, and schema. - - **Args**: - - `prompt (str)`: The prompt for the graph. - - `source (str)`: The source of the graph (URL or local directory). - - `config (dict)`: Configuration parameters for the graph. - - `schema (Optional[str])`: The schema for the graph output. - -- **`_create_graph(self) -> BaseGraph`** - - Creates the graph of nodes representing the workflow for web scraping and audio generation. - - **Returns**: An instance of `BaseGraph`. - -- **`run(self) -> str`** - - Executes the scraping process, generates the answer to the prompt, and saves the audio file. - - **Returns**: The answer to the prompt. - -## Example Usage - -Here is an example of how to use the `SpeechGraph` class: - -```python -from speech_graph import SpeechGraph - -# Define the prompt, source (URL or local directory), and configuration -prompt = "List me all the attractions in Chioggia and generate an audio summary." -source = "https://en.wikipedia.org/wiki/Chioggia" -config = { - "llm": {"model": "gpt-3.5-turbo"}, - "tts_model": {"engine": "Google", "language": "en"} -} - -# Create the speech graph -speech_graph = SpeechGraph(prompt, source, config) - -# Run the speech graph -result = speech_graph.run() - -print(result) diff --git a/docs/Graphs/xml_scraper_graph.md b/docs/Graphs/xml_scraper_graph.md deleted file mode 100644 index 09ad2d37..00000000 --- a/docs/Graphs/xml_scraper_graph.md +++ /dev/null @@ -1,61 +0,0 @@ -# 🐰 XMLScraperGraph Module - -The `XMLScraperGraph` module defines a class for creating and executing a graph that extracts information from XML files using a natural language model to interpret and answer prompts. - -## Classes - -### `XMLScraperGraph` - -`XMLScraperGraph` is a scraping pipeline that extracts information from XML files using a natural language model to interpret and answer prompts. - -#### Attributes - -- **prompt (str)**: The prompt for the graph. -- **source (str)**: The source of the graph. -- **config (dict)**: Configuration parameters for the graph. -- **schema (str)**: The schema for the graph output. -- **llm_model**: An instance of a language model client, configured for generating answers. -- **embedder_model**: An instance of an embedding model client, configured for generating embeddings. -- **verbose (bool)**: A flag indicating whether to show print statements during execution. -- **headless (bool)**: A flag indicating whether to run the graph in headless mode. -- **model_token (int)**: The token limit for the language model. - -#### Methods - -- **`__init__(self, prompt: str, source: str, config: dict, schema: Optional[str] = None)`** - - Initializes the `XMLScraperGraph` with a prompt, source (XML file or directory), configuration, and schema. - - **Args**: - - `prompt (str)`: The prompt for the graph. - - `source (str)`: The source of the graph (XML file or directory). - - `config (dict)`: Configuration parameters for the graph. - - `schema (Optional[str])`: The schema for the graph output. - -- **`_create_graph(self) -> BaseGraph`** - - Creates the graph of nodes representing the workflow for web scraping. - - **Returns**: An instance of `BaseGraph`. - -- **`run(self) -> str`** - - Executes the web scraping process and returns the answer to the prompt. - - **Returns**: The answer to the prompt. - -## Example Usage - -Here is an example of how to use the `XMLScraperGraph` class: - -```python -from xml_scraper_graph import XMLScraperGraph - -# Define the prompt, source (XML file or directory), and configuration -prompt = "List me all the attractions in Chioggia." -source = "data/chioggia.xml" -config = { - "llm": {"model": "gpt-3.5-turbo"} -} - -# Create the XML scraper graph -xml_scraper = XMLScraperGraph(prompt, source, config) - -# Run the XML scraper graph -result = xml_scraper.run() - -print(result) diff --git a/docs/Info/_category_.json b/docs/Some numbers/_category_.json similarity index 100% rename from docs/Info/_category_.json rename to docs/Some numbers/_category_.json diff --git a/docs/Info/api.md b/docs/Some numbers/api.md similarity index 100% rename from docs/Info/api.md rename to docs/Some numbers/api.md diff --git a/docs/Info/stars.md b/docs/Some numbers/stars.md similarity index 100% rename from docs/Info/stars.md rename to docs/Some numbers/stars.md diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 00000000..2f81f45c --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,41 @@ +# Configuration file for the Sphinx documentation builder. +# +# For the full list of built-in configuration values, see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Project information ----------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information + +# -- Path setup -------------------------------------------------------------- + +import os +import sys + +# import all the modules +sys.path.insert(0, os.path.abspath('../../')) + +project = 'ScrapeGraphAI' +copyright = '2024, ScrapeGraphAI' +author = 'Marco Vinciguerra, Marco Perini, Lorenzo Padoan' + +html_last_updated_fmt = "%b %d, %Y" + +# -- General configuration --------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration + +extensions = ['sphinx.ext.autodoc', 'sphinx.ext.napoleon'] + +templates_path = ['_templates'] +exclude_patterns = [] + +# -- Options for HTML output ------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output + +html_theme = 'furo' +html_theme_options = { + "source_repository": "https://github.com/VinciGit00/Scrapegraph-ai/", + "source_branch": "main", + "source_directory": "docs/source/", + 'navigation_with_keys': True, + 'sidebar_hide_name': False, +} \ No newline at end of file diff --git a/docs/getting_started/_category_.json b/docs/getting_started/_category_.json new file mode 100644 index 00000000..b3c262c6 --- /dev/null +++ b/docs/getting_started/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Getting Started", + "position": 2, + "link": { + "type": "generated-index", + "description": "Get started with ScrapeGraphAI by following these guides." + } +} \ No newline at end of file diff --git a/docs/getting_started/examples.md b/docs/getting_started/examples.md index ee6a2cd9..071bb857 100644 --- a/docs/getting_started/examples.md +++ b/docs/getting_started/examples.md @@ -1,5 +1,5 @@ --- -sidebar_position: 2 +sidebar_position: 3 --- # Examples @@ -44,7 +44,7 @@ print(result) ## Local models -Remember to have installed Ollama on your PC [ollama](https://ollama.com/) +Remember to have installed in your pc [ollama](https://ollama.com/) Remember to pull the right model for LLM and for the embeddings, like: ```bash diff --git a/docs/getting_started/installation.md b/docs/getting_started/installation.md index 6e3f0ea8..7b59a5a7 100644 --- a/docs/getting_started/installation.md +++ b/docs/getting_started/installation.md @@ -1,5 +1,5 @@ --- -sidebar_position: 1 +sidebar_position: 2 --- # Installation @@ -21,22 +21,18 @@ The library is available on PyPI, so it can be installed using the following com pip install scrapegraphai ``` -:::important -It is highly recommended to install the library in a virtual environment (conda, venv, etc.) -::: +> **Important**: It is highly recommended to install the library in a virtual environment (conda, venv, etc.) -If you clone the repository, it is recommended to use a package manager like [rye](https://rye.astral.sh/). -To install the library using rye, you can run the following command: +If you clone the repository, it is recommended to use a package manager like [uv](https://github.com/astral-sh/uv). +To install the library using uv, you can run the following command: ```bash -rye pin 3.10 -rye sync -rye build +uv pin 3.10 +uv sync +uv build ``` -:::caution -**Rye** must be installed first by following the instructions on the [official website](https://rye.astral.sh/). -::: +> **Caution**: **uv** must be installed first by following the instructions on the [official website](https://github.com/astral-sh/uv). ## Additionally on Windows when using WSL diff --git a/docs/introduction/_category_.json b/docs/introduction/_category_.json new file mode 100644 index 00000000..c1963257 --- /dev/null +++ b/docs/introduction/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Introduction", + "position": 1, + "link": { + "type": "generated-index", + "description": "Learn about ScrapegraphAI, its features, and how it can help you with web scraping." + } +} \ No newline at end of file diff --git a/docs/introduction/contributing.md b/docs/introduction/contributing.md new file mode 100644 index 00000000..7cdeeb77 --- /dev/null +++ b/docs/introduction/contributing.md @@ -0,0 +1,11 @@ +# Contributing + +Hey, you want to contribute? Awesome! +Just fork the repo, make your changes, and send a pull request. +If you're not sure if it's a good idea, open an issue and we'll discuss it. + +Go and check out the [contributing guidelines](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/CONTRIBUTING.md) for more information. + +# License +This project is licensed under the MIT license. +See the [LICENSE](https://github.com/VinciGit00/Scrapegraph-ai/blob/main/LICENSE) file for more details. \ No newline at end of file diff --git a/docs/introduction/diagram.md b/docs/introduction/diagram.md new file mode 100644 index 00000000..e631b924 --- /dev/null +++ b/docs/introduction/diagram.md @@ -0,0 +1,11 @@ +--- +sidebar_position: 4 +--- + +# Library Diagram + +With ScrapegraphAI you can use many already implemented scraping pipelines or create your own. + +The diagram below illustrates the high-level architecture of ScrapeGraphAI: + +![ScrapegraphAI Overview](../../assets/project_overview_diagram.png) \ No newline at end of file diff --git a/docs/introduction/faq.md b/docs/introduction/faq.md new file mode 100644 index 00000000..241f341f --- /dev/null +++ b/docs/introduction/faq.md @@ -0,0 +1,42 @@ +--- +sidebar_position: 5 +--- + +# FAQ + +1. **What is ScrapeGraphAI?** + + ScrapeGraphAI is an open-source python library that uses large language models (LLMs) and graph logic to automate the creation of scraping pipelines for websites and various document types. + +2. **How does ScrapeGraphAI differ from traditional scraping tools?** + + Traditional scraping tools rely on fixed patterns and manual configurations, whereas ScrapeGraphAI adapts to website structure changes using LLMs, reducing the need for constant developer intervention. + +3. **Which LLMs are supported by ScrapeGraphAI?** + + ScrapeGraphAI supports several LLMs, including GPT, Gemini, Groq, Azure, Hugging Face, and local models that can run on your machine using Ollama. + +4. **Can ScrapeGraphAI handle different document formats?** + + Yes, ScrapeGraphAI can scrape information from various document formats such as XML, HTML, JSON, and more. + +5. **I get an empty or incorrect output when scraping a website. What should I do?** + + There are several reasons behind this issue, but for most cases, you can try the following: + + - Set the `headless` parameter to `False` in the graph_config. Some javascript-heavy websites might require it. + - Check your internet connection. Low speed or unstable connection can cause the HTML to not load properly. + - Try using a proxy server to mask your IP address. Check out the [Proxy](../scrapers/proxy.md) section for more information on how to configure proxy settings. + - Use a different LLM model. Some models might perform better on certain websites than others. + - Set the `verbose` parameter to `True` in the graph_config to see more detailed logs. + - Visualize the pipeline graphically using [Burr](../scrapers/burr.md). + + If the issue persists, please report it on the GitHub repository. + +6. **How does ScrapeGraphAI handle the context window limit of LLMs?** + + By splitting big websites/documents into chunks with overlaps and applying compression techniques to reduce the number of tokens. If multiple chunks are present, we will have multiple answers to the user prompt, and therefore, we merge them together in the last step of the scraping pipeline. + +7. **How can I contribute to ScrapeGraphAI?** + + You can contribute to ScrapeGraphAI by submitting bug reports, feature requests, or pull requests on the GitHub repository. Join our [Discord](https://discord.gg/uJN7TYcpNa) community and follow us on social media! \ No newline at end of file diff --git a/docs/introduction/models.md b/docs/introduction/models.md new file mode 100644 index 00000000..c5c1c399 --- /dev/null +++ b/docs/introduction/models.md @@ -0,0 +1,91 @@ +--- +sidebar_position: 3 +--- + +# AI Models and Token Limits + +ScrapGraphAI supports a wide range of AI models from various providers. Each model has a specific token limit, which is important to consider when designing your scraping pipelines. Here's an overview of the supported models and their token limits: + +## OpenAI Models +- GPT-3.5 Turbo (16,385 tokens) +- GPT-3.5 (4,096 tokens) +- GPT-3.5 Turbo Instruct (4,096 tokens) +- GPT-4 Turbo Preview (128,000 tokens) +- GPT-4 Vision Preview (128,000 tokens) +- GPT-4 (8,192 tokens) +- GPT-4 32k (32,768 tokens) +- GPT-4o (128,000 tokens) +- O1 Preview (128,000 tokens) +- O1 Mini (128,000 tokens) + +## Azure OpenAI Models +- GPT-3.5 Turbo (16,385 tokens) +- GPT-3.5 (4,096 tokens) +- GPT-4 Turbo Preview (128,000 tokens) +- GPT-4 (8,192 tokens) +- GPT-4 32k (32,768 tokens) +- GPT-4o (128,000 tokens) +- O1 Preview (128,000 tokens) +- O1 Mini (128,000 tokens) + +## Google AI Models +- Gemini Pro (128,000 tokens) +- Gemini 1.5 Flash (128,000 tokens) +- Gemini 1.5 Pro (128,000 tokens) +- Gemini 1.0 Pro (128,000 tokens) + +## Anthropic Models +- Claude Instant (100,000 tokens) +- Claude 2 (9,000 tokens) +- Claude 2.1 (200,000 tokens) +- Claude 3 (200,000 tokens) +- Claude 3.5 (200,000 tokens) +- Claude 3 Opus (200,000 tokens) +- Claude 3 Sonnet (200,000 tokens) +- Claude 3 Haiku (200,000 tokens) + +## Mistral AI Models +- Mistral Large Latest (128,000 tokens) +- Open Mistral Nemo (128,000 tokens) +- Codestral Latest (32,000 tokens) +- Open Mistral 7B (32,000 tokens) +- Open Mixtral 8x7B (32,000 tokens) +- Open Mixtral 8x22B (64,000 tokens) +- Open Codestral Mamba (256,000 tokens) + +## Ollama Models +- Command-R (12,800 tokens) +- CodeLlama (16,000 tokens) +- DBRX (32,768 tokens) +- DeepSeek Coder 33B (16,000 tokens) +- Llama2 Series (4,096 tokens) +- Llama3 Series (8,192-128,000 tokens) +- Mistral Models (32,000-128,000 tokens) +- Mixtral 8x22B Instruct (65,536 tokens) +- Phi3 Series (12,800-128,000 tokens) +- Qwen Series (32,000 tokens) + +## Hugging Face Models +- Grok-1 (8,192 tokens) +- Meta Llama 3 Series (8,192 tokens) +- Google Gemma Series (8,192 tokens) +- Microsoft Phi Series (2,048-131,072 tokens) +- GPT-2 Series (1,024 tokens) +- DeepSeek V2 Series (131,072 tokens) + +## Bedrock Models +- Claude 3 Series (200,000 tokens) +- Llama2 & Llama3 Series (4,096-8,192 tokens) +- Mistral Series (32,768 tokens) +- Titan Embed Text (8,000 tokens) +- Cohere Embed (512 tokens) + +## Fireworks Models +- Llama V2 7B (4,096 tokens) +- Mixtral 8x7B Instruct (4,096 tokens) +- Llama 3.1 Series (131,072 tokens) +- Mixtral MoE Series (65,536 tokens) + +For a complete and up-to-date list of supported models and their token limits, please refer to the API documentation. + +Understanding token limits is crucial for optimizing your scraping tasks. Larger token limits allow for processing more text in a single API call, which can be beneficial for scraping lengthy web pages or documents. \ No newline at end of file diff --git a/docs/introduction/overview.md b/docs/introduction/overview.md new file mode 100644 index 00000000..b060c08e --- /dev/null +++ b/docs/introduction/overview.md @@ -0,0 +1,164 @@ +--- +sidebar_position: 1 +--- + +# Overview + +![ScrapegraphAI](../../assets/scrapegraphai_logo.png) + +ScrapeGraphAI is an **open-source** Python library designed to revolutionize **scraping** tools. +In today's data-intensive digital landscape, this library stands out by integrating **Large Language Models** (LLMs) +and modular **graph-based** pipelines to automate the scraping of data from various sources (e.g., websites, local files etc.). + +Simply specify the information you need to extract, and ScrapeGraphAI handles the rest, providing a more **flexible** and **low-maintenance** solution compared to traditional scraping tools. + +# Why ScrapegraphAI? + +Traditional web scraping tools often rely on fixed patterns or manual configuration to extract data from web pages. +ScrapegraphAI, leveraging the power of LLMs, adapts to changes in website structures, reducing the need for constant developer intervention. +This flexibility ensures that scrapers remain functional even when website layouts change. + +We support many LLMs including **GPT, Gemini, Groq, Azure, Hugging Face** etc. +as well as local models which can run on your machine using **Ollama**. + +# AI Models and Token Limits + +ScrapGraphAI supports a wide range of AI models from various providers. Each model has a specific token limit, which is important to consider when designing your scraping pipelines. Here's an overview of the supported models and their token limits: + +## OpenAI Models +- GPT-3.5 Turbo (16,385 tokens) +- GPT-3.5 (4,096 tokens) +- GPT-3.5 Turbo Instruct (4,096 tokens) +- GPT-4 Turbo Preview (128,000 tokens) +- GPT-4 Vision Preview (128,000 tokens) +- GPT-4 (8,192 tokens) +- GPT-4 32k (32,768 tokens) +- GPT-4o (128,000 tokens) +- O1 Preview (128,000 tokens) +- O1 Mini (128,000 tokens) + +## Azure OpenAI Models +- GPT-3.5 Turbo (16,385 tokens) +- GPT-3.5 (4,096 tokens) +- GPT-4 Turbo Preview (128,000 tokens) +- GPT-4 (8,192 tokens) +- GPT-4 32k (32,768 tokens) +- GPT-4o (128,000 tokens) +- O1 Preview (128,000 tokens) +- O1 Mini (128,000 tokens) + +## Google AI Models +- Gemini Pro (128,000 tokens) +- Gemini 1.5 Flash (128,000 tokens) +- Gemini 1.5 Pro (128,000 tokens) +- Gemini 1.0 Pro (128,000 tokens) + +## Anthropic Models +- Claude Instant (100,000 tokens) +- Claude 2 (9,000 tokens) +- Claude 2.1 (200,000 tokens) +- Claude 3 (200,000 tokens) +- Claude 3.5 (200,000 tokens) +- Claude 3 Opus (200,000 tokens) +- Claude 3 Sonnet (200,000 tokens) +- Claude 3 Haiku (200,000 tokens) + +## Mistral AI Models +- Mistral Large Latest (128,000 tokens) +- Open Mistral Nemo (128,000 tokens) +- Codestral Latest (32,000 tokens) +- Open Mistral 7B (32,000 tokens) +- Open Mixtral 8x7B (32,000 tokens) +- Open Mixtral 8x22B (64,000 tokens) +- Open Codestral Mamba (256,000 tokens) + +## Ollama Models +- Command-R (12,800 tokens) +- CodeLlama (16,000 tokens) +- DBRX (32,768 tokens) +- DeepSeek Coder 33B (16,000 tokens) +- Llama2 Series (4,096 tokens) +- Llama3 Series (8,192-128,000 tokens) +- Mistral Models (32,000-128,000 tokens) +- Mixtral 8x22B Instruct (65,536 tokens) +- Phi3 Series (12,800-128,000 tokens) +- Qwen Series (32,000 tokens) + +## Hugging Face Models +- Grok-1 (8,192 tokens) +- Meta Llama 3 Series (8,192 tokens) +- Google Gemma Series (8,192 tokens) +- Microsoft Phi Series (2,048-131,072 tokens) +- GPT-2 Series (1,024 tokens) +- DeepSeek V2 Series (131,072 tokens) + +## Bedrock Models +- Claude 3 Series (200,000 tokens) +- Llama2 & Llama3 Series (4,096-8,192 tokens) +- Mistral Series (32,768 tokens) +- Titan Embed Text (8,000 tokens) +- Cohere Embed (512 tokens) + +## Fireworks Models +- Llama V2 7B (4,096 tokens) +- Mixtral 8x7B Instruct (4,096 tokens) +- Llama 3.1 Series (131,072 tokens) +- Mixtral MoE Series (65,536 tokens) + +For a complete and up-to-date list of supported models and their token limits, please refer to the API documentation. + +Understanding token limits is crucial for optimizing your scraping tasks. Larger token limits allow for processing more text in a single API call, which can be beneficial for scraping lengthy web pages or documents. + +# Library Diagram + +With ScrapegraphAI you can use many already implemented scraping pipelines or create your own. + +The diagram below illustrates the high-level architecture of ScrapeGraphAI: + +![ScrapegraphAI Overview](../../assets/project_overview_diagram.png) + +# FAQ + +1. **What is ScrapeGraphAI?** + + ScrapeGraphAI is an open-source python library that uses large language models (LLMs) and graph logic to automate the creation of scraping pipelines for websites and various document types. + +2. **How does ScrapeGraphAI differ from traditional scraping tools?** + + Traditional scraping tools rely on fixed patterns and manual configurations, whereas ScrapeGraphAI adapts to website structure changes using LLMs, reducing the need for constant developer intervention. + +3. **Which LLMs are supported by ScrapeGraphAI?** + + ScrapeGraphAI supports several LLMs, including GPT, Gemini, Groq, Azure, Hugging Face, and local models that can run on your machine using Ollama. + +4. **Can ScrapeGraphAI handle different document formats?** + + Yes, ScrapeGraphAI can scrape information from various document formats such as XML, HTML, JSON, and more. + +5. **I get an empty or incorrect output when scraping a website. What should I do?** + + There are several reasons behind this issue, but for most cases, you can try the following: + + - Set the `headless` parameter to `False` in the graph_config. Some javascript-heavy websites might require it. + - Check your internet connection. Low speed or unstable connection can cause the HTML to not load properly. + - Try using a proxy server to mask your IP address. Check out the [Proxy](#proxy) section for more information on how to configure proxy settings. + - Use a different LLM model. Some models might perform better on certain websites than others. + - Set the `verbose` parameter to `True` in the graph_config to see more detailed logs. + - Visualize the pipeline graphically using [Burr](#burr). + + If the issue persists, please report it on the GitHub repository. + +6. **How does ScrapeGraphAI handle the context window limit of LLMs?** + + By splitting big websites/documents into chunks with overlaps and applying compression techniques to reduce the number of tokens. If multiple chunks are present, we will have multiple answers to the user prompt, and therefore, we merge them together in the last step of the scraping pipeline. + +7. **How can I contribute to ScrapeGraphAI?** + + You can contribute to ScrapeGraphAI by submitting bug reports, feature requests, or pull requests on the GitHub repository. Join our [Discord](https://discord.gg/uJN7TYcpNa) community and follow us on social media! + +# Sponsors + +[![Browserbase](../../assets/browserbase_logo.png)](https://www.browserbase.com/) +[![Serp API](../../assets/serp_api_logo.png)](https://serpapi.com?utm_source=scrapegraphai) +[![Stat Proxies](../../assets/transparent_stat.png)](https://dashboard.statproxies.com/?refferal=scrapegraph) +[![Scrapedo](../../assets/scrapedo.png)](https://scrape.do) \ No newline at end of file diff --git a/docs/introduction/sponsors.md b/docs/introduction/sponsors.md new file mode 100644 index 00000000..2140f742 --- /dev/null +++ b/docs/introduction/sponsors.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 6 +--- + +# Sponsors + +[![Browserbase](../../assets/browserbase_logo.png)](https://www.browserbase.com/) + +[![Serp API](../../assets/serp_api_logo.png)](https://serpapi.com?utm_source=scrapegraphai) + +[![Stat Proxies](../../assets/transparent_stat.png)](https://dashboard.statproxies.com/?refferal=scrapegraph) + +[![Scrapedo](../../assets/scrapedo.png)](https://scrape.do) \ No newline at end of file diff --git a/docs/introduction/why.md b/docs/introduction/why.md new file mode 100644 index 00000000..a0bbb3cd --- /dev/null +++ b/docs/introduction/why.md @@ -0,0 +1,12 @@ +--- +sidebar_position: 2 +--- + +# Why ScrapegraphAI? + +Traditional web scraping tools often rely on fixed patterns or manual configuration to extract data from web pages. +ScrapegraphAI, leveraging the power of LLMs, adapts to changes in website structures, reducing the need for constant developer intervention. +This flexibility ensures that scrapers remain functional even when website layouts change. + +We support many LLMs including **GPT, Gemini, Groq, Azure, Hugging Face** etc. +as well as local models which can run on your machine using **Ollama**. \ No newline at end of file diff --git a/docs/modules/modules.md b/docs/modules/modules.md new file mode 100644 index 00000000..e08a1899 --- /dev/null +++ b/docs/modules/modules.md @@ -0,0 +1,9 @@ +--- +sidebar_position: 13 +--- + +# API Reference + +This section contains the complete API reference for ScrapegraphAI. The library is organized into several modules, each handling specific functionality. + +For a complete overview of all modules and their functionality, see the [ScrapegraphAI Package](scrapegraphai.md) documentation. \ No newline at end of file diff --git a/docs/modules/scrapegraphai.builders.md b/docs/modules/scrapegraphai.builders.md new file mode 100644 index 00000000..d356ea5f --- /dev/null +++ b/docs/modules/scrapegraphai.builders.md @@ -0,0 +1,23 @@ +--- +sidebar_position: 2 +--- + +# scrapegraphai.builders package + +## Graph Builders + +### Basic Builders + +Functions for building basic graph structures: + +```python +from scrapegraphai.builders import build_basic_graph, build_multi_graph +``` + +### Specialized Builders + +Functions for building specialized graph types: + +```python +from scrapegraphai.builders import build_search_graph, build_script_graph +``` \ No newline at end of file diff --git a/docs/modules/scrapegraphai.docloaders.md b/docs/modules/scrapegraphai.docloaders.md new file mode 100644 index 00000000..b9f903bd --- /dev/null +++ b/docs/modules/scrapegraphai.docloaders.md @@ -0,0 +1,23 @@ +--- +sidebar_position: 5 +--- + +# scrapegraphai.docloaders package + +## Document Loaders + +### Web Loaders + +Functions for loading web content: + +```python +from scrapegraphai.docloaders import WebLoader, HTMLLoader +``` + +### File Loaders + +Functions for loading local files: + +```python +from scrapegraphai.docloaders import FileLoader, PDFLoader, TextLoader +``` \ No newline at end of file diff --git a/docs/modules/scrapegraphai.graphs.md b/docs/modules/scrapegraphai.graphs.md new file mode 100644 index 00000000..a1a4f6ab --- /dev/null +++ b/docs/modules/scrapegraphai.graphs.md @@ -0,0 +1,39 @@ +--- +sidebar_position: 3 +--- + +# scrapegraphai.graphs package + +## Available Graphs + +### Basic Scrapers + +The basic scraping graphs for single and multi-source extraction: + +```python +from scrapegraphai.graphs import SmartScraperGraph, SmartScraperMultiGraph +``` + +### Search-based Scrapers + +Graphs that combine search capabilities with scraping: + +```python +from scrapegraphai.graphs import SearchGraph, OmniSearchGraph +``` + +### Specialized Scrapers + +Graphs for specific use cases like script generation and speech: + +```python +from scrapegraphai.graphs import ScriptCreatorGraph, SpeechGraph +``` + +### Advanced Scrapers + +Advanced graphs with additional capabilities: + +```python +from scrapegraphai.graphs import OmniScraperGraph +``` \ No newline at end of file diff --git a/docs/modules/scrapegraphai.helpers.md b/docs/modules/scrapegraphai.helpers.md new file mode 100644 index 00000000..ea9f2247 --- /dev/null +++ b/docs/modules/scrapegraphai.helpers.md @@ -0,0 +1,39 @@ +--- +sidebar_position: 4 +--- + +# scrapegraphai.helpers package + +## Helper Functions + +### Model Tokens + +Functions for managing model tokens and limits: + +```python +from scrapegraphai.helpers.models_tokens import get_model_tokens, validate_tokens +``` + +### Configuration + +Functions for handling configuration settings: + +```python +from scrapegraphai.helpers import load_config, validate_config +``` + +### Error Handling + +Functions for consistent error handling: + +```python +from scrapegraphai.helpers import handle_error, format_error +``` + +### Logging + +Functions for logging and debugging: + +```python +from scrapegraphai.helpers import setup_logging, log_debug +``` \ No newline at end of file diff --git a/docs/modules/scrapegraphai.integrations.md b/docs/modules/scrapegraphai.integrations.md new file mode 100644 index 00000000..55632fad --- /dev/null +++ b/docs/modules/scrapegraphai.integrations.md @@ -0,0 +1,31 @@ +--- +sidebar_position: 9 +--- + +# scrapegraphai.integrations package + +## Available Integrations + +### Search Engines + +Integrations with various search engines: + +```python +from scrapegraphai.integrations import GoogleSearch, BingSearch +``` + +### Browser Automation + +Integrations for browser automation: + +```python +from scrapegraphai.integrations import PlaywrightBrowser, SeleniumBrowser +``` + +### Proxy Services + +Integrations with proxy services: + +```python +from scrapegraphai.integrations import ProxyRotator, ProxyManager +``` \ No newline at end of file diff --git a/docs/modules/scrapegraphai.md b/docs/modules/scrapegraphai.md new file mode 100644 index 00000000..e966f85f --- /dev/null +++ b/docs/modules/scrapegraphai.md @@ -0,0 +1,59 @@ +--- +sidebar_position: 1 +--- + +# ScrapegraphAI Package + +ScrapegraphAI is a Python library that provides a flexible and powerful framework for web scraping using Large Language Models (LLMs). The library is organized into several subpackages, each handling specific functionality: + +## Core Packages + +### [Graphs](scrapegraphai.graphs.md) +The main scraping pipelines and graph implementations: +```python +from scrapegraphai.graphs import SmartScraperGraph, SearchGraph +``` + +### [Models](scrapegraphai.models.md) +LLM, embedding, and TTS model implementations: +```python +from scrapegraphai.models import OpenAIChat, OllamaEmbeddings +``` + +### [Nodes](scrapegraphai.nodes.md) +Building blocks for creating scraping graphs: +```python +from scrapegraphai.nodes import LLMNode, HTMLProcessingNode +``` + +## Support Packages + +### [Builders](scrapegraphai.builders.md) +Helper functions for constructing graphs: +```python +from scrapegraphai.builders import build_basic_graph +``` + +### [DocLoaders](scrapegraphai.docloaders.md) +Document loading and processing utilities: +```python +from scrapegraphai.docloaders import WebLoader, PDFLoader +``` + +### [Helpers](scrapegraphai.helpers.md) +Various helper functions and utilities: +```python +from scrapegraphai.helpers import setup_logging, validate_config +``` + +### [Integrations](scrapegraphai.integrations.md) +Third-party service integrations: +```python +from scrapegraphai.integrations import GoogleSearch, ProxyRotator +``` + +### [Utils](scrapegraphai.utils.md) +General utility functions: +```python +from scrapegraphai.utils import clean_html, count_tokens +``` \ No newline at end of file diff --git a/docs/modules/scrapegraphai.models.md b/docs/modules/scrapegraphai.models.md new file mode 100644 index 00000000..0f9ce945 --- /dev/null +++ b/docs/modules/scrapegraphai.models.md @@ -0,0 +1,39 @@ +--- +sidebar_position: 6 +--- + +# scrapegraphai.models package + +## Submodules + +### Base Models + +The base module provides abstract base classes and interfaces for all model types in the library. + +```python +from scrapegraphai.models.base import BaseModel +``` + +### Embeddings Models + +The embeddings module contains implementations for various text embedding models. + +```python +from scrapegraphai.models.embeddings import OpenAIEmbeddings, OllamaEmbeddings +``` + +### LLM Models + +The LLM module provides implementations for different large language models. + +```python +from scrapegraphai.models.llm import OpenAIChat, OllamaLLM, GeminiChat +``` + +### Text-to-Speech Models + +The TTS module contains implementations for text-to-speech models. + +```python +from scrapegraphai.models.tts import OpenAITTS +``` \ No newline at end of file diff --git a/docs/modules/scrapegraphai.nodes.md b/docs/modules/scrapegraphai.nodes.md new file mode 100644 index 00000000..ecb62122 --- /dev/null +++ b/docs/modules/scrapegraphai.nodes.md @@ -0,0 +1,39 @@ +--- +sidebar_position: 7 +--- + +# scrapegraphai.nodes package + +## Graph Nodes + +### Base Nodes + +The fundamental building blocks for creating graph nodes: + +```python +from scrapegraphai.nodes import BaseNode, InputNode, OutputNode +``` + +### Processing Nodes + +Nodes for processing and transforming data: + +```python +from scrapegraphai.nodes import TextProcessingNode, HTMLProcessingNode +``` + +### LLM Nodes + +Nodes that interact with language models: + +```python +from scrapegraphai.nodes import LLMNode, EmbeddingNode +``` + +### Specialized Nodes + +Nodes for specific tasks: + +```python +from scrapegraphai.nodes import SearchNode, ScriptGeneratorNode, TTSNode +``` \ No newline at end of file diff --git a/docs/modules/scrapegraphai.utils.md b/docs/modules/scrapegraphai.utils.md new file mode 100644 index 00000000..f77ae784 --- /dev/null +++ b/docs/modules/scrapegraphai.utils.md @@ -0,0 +1,47 @@ +--- +sidebar_position: 8 +--- + +# scrapegraphai.utils package + +## Utility Functions + +### Execution Info + +Functions for handling execution information and formatting: + +```python +from scrapegraphai.utils import prettify_exec_info, get_exec_info +``` + +### HTML Processing + +Functions for processing and cleaning HTML content: + +```python +from scrapegraphai.utils import clean_html, extract_text_from_html +``` + +### Token Management + +Functions for managing and counting tokens: + +```python +from scrapegraphai.utils import count_tokens, split_text_into_chunks +``` + +### Schema Handling + +Functions for handling JSON schemas and validation: + +```python +from scrapegraphai.utils import validate_schema, generate_schema +``` + +### File Operations + +Functions for handling file operations: + +```python +from scrapegraphai.utils import read_file, write_file, download_file +``` \ No newline at end of file diff --git a/docs/scrapers/_category_.json b/docs/scrapers/_category_.json index f5a74393..e048274f 100644 --- a/docs/scrapers/_category_.json +++ b/docs/scrapers/_category_.json @@ -1,6 +1,6 @@ { "label": "Scrapers", - "position": 2, + "position": 3, "link": { "type": "generated-index", "description": "Learn about the different types of scrapers and their configurations in ScrapeGraphAI." diff --git a/docs/scrapers/llm.md b/docs/scrapers/llm.md deleted file mode 100644 index cd119a74..00000000 --- a/docs/scrapers/llm.md +++ /dev/null @@ -1,219 +0,0 @@ ---- -sidebar_position: 3 ---- - -# LLM - -We support many known LLM models and providers used to analyze the web pages and extract the information requested by the user. Models can be split in **Chat Models** and **Embedding Models** (the latter are mainly used for Retrieval Augmented Generation RAG). -These models are specified inside the graph configuration dictionary and can be used interchangeably, for example by defining a different model for llm and embeddings. - -- **Local Models**: These models are hosted on the local machine and can be used without any API key. -- **API-based Models**: These models are hosted on the cloud and require an API key to access them (eg. OpenAI, Groq, etc). - -:::note -If the embedding model is not specified, the library will use the default one for that LLM, if available. -::: - -## Local Models - -Currently, local models are supported through Ollama integration. Ollama is a provider of LLM models which can be downloaded from [Ollama](https://ollama.com/). -Let's say we want to use **llama3** as chat model and **nomic-embed-text** as embedding model. We first need to pull them from ollama using: - -```bash -ollama pull llama3 -ollama pull nomic-embed-text -``` - -Then we can use them in the graph configuration as follows: - -```python -graph_config = { - "llm": { - "model": "llama3", - "temperature": 0.0, - "format": "json", - }, - "embeddings": { - "model": "nomic-embed-text", - }, -} -``` - -You can also specify the **base_url** parameter to specify the models endpoint. By default, it is set to http://localhost:11434. This is useful if you are running Ollama on a Docker container or on a different machine. - -If you want to host Ollama in a Docker container, you can use the following command: - -```bash -docker-compose up -d -docker exec -it ollama ollama pull llama3 -``` - -## API-based Models - -### OpenAI - -You can get the API key from [here](https://platform.openai.com/api-keys). - -```python -graph_config = { - "llm": { - "api_key": "OPENAI_API_KEY", - "model": "gpt-3.5-turbo", - }, -} -``` - -If you want to use text to speech models, you can specify the `tts_model` parameter: - -```python -graph_config = { - "llm": { - "api_key": "OPENAI_API_KEY", - "model": "gpt-3.5-turbo", - "temperature": 0.7, - }, - "tts_model": { - "api_key": "OPENAI_API_KEY", - "model": "tts-1", - "voice": "alloy" - }, -} -``` - -### Gemini - -You can get the API key from [here](https://ai.google.dev/gemini-api/docs/api-key). - -**Note**: some countries are not supported and therefore it won't be possible to request an API key. A possible workaround is to use a VPN or run the library on Colab. - -```python -graph_config = { - "llm": { - "api_key": "GEMINI_API_KEY", - "model": "gemini-pro" - }, -} -``` - -### Groq - -You can get the API key from [here](https://console.groq.com/keys). Groq doesn't support embedding models, so in the following example we are using Ollama one. - -```python -graph_config = { - "llm": { - "model": "groq/gemma-7b-it", - "api_key": "GROQ_API_KEY", - "temperature": 0 - }, - "embeddings": { - "model": "ollama/nomic-embed-text", - }, -} -``` - -### Azure - -We can also pass a model instance for the chat model and the embedding model. For Azure, a possible configuration would be: - -```python -llm_model_instance = AzureChatOpenAI( - openai_api_version="AZURE_OPENAI_API_VERSION", - azure_deployment="AZURE_OPENAI_CHAT_DEPLOYMENT_NAME" -) - -embedder_model_instance = AzureOpenAIEmbeddings( - azure_deployment="AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT_NAME", - openai_api_version="AZURE_OPENAI_API_VERSION", -) -# Supposing model_tokens are 100K -model_tokens_count = 100000 -graph_config = { - "llm": { - "model_instance": llm_model_instance, - "model_tokens": model_tokens_count, - }, - "embeddings": { - "model_instance": embedder_model_instance - } -} -``` - -### Hugging Face Hub - -We can also pass a model instance for the chat model and the embedding model. For Hugging Face, a possible configuration would be: - -```python -llm_model_instance = HuggingFaceEndpoint( - repo_id="mistralai/Mistral-7B-Instruct-v0.2", - max_length=128, - temperature=0.5, - token="HUGGINGFACEHUB_API_TOKEN" -) - -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key="HUGGINGFACEHUB_API_TOKEN", - model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -graph_config = { - "llm": { - "model_instance": llm_model_instance - }, - "embeddings": { - "model_instance": embedder_model_instance - } -} -``` - -### Anthropic - -We can also pass a model instance for the chat model and the embedding model. For Anthropic, a possible configuration would be: - -```python -embedder_model_instance = HuggingFaceInferenceAPIEmbeddings( - api_key="HUGGINGFACEHUB_API_TOKEN", - model_name="sentence-transformers/all-MiniLM-l6-v2" -) - -graph_config = { - "llm": { - "api_key": "ANTHROPIC_API_KEY", - "model": "claude-3-haiku-20240307", - "max_tokens": 4000 - }, - "embeddings": { - "model_instance": embedder_model_instance - } -} -``` - -### Other LLM models - -We can also pass a model instance for the chat model and the embedding model through the **model_instance** parameter. -This feature enables you to utilize a Langchain model instance. -You will discover the model you require within the provided list: - -- [chat model list](https://python.langchain.com/v0.2/docs/integrations/chat/#all-chat-models) -- [embedding model list](https://python.langchain.com/v0.2/docs/integrations/text_embedding/#all-embedding-models) - -For instance, consider **chat model** Moonshot. We can integrate it in the following manner: - -```python -from langchain_community.chat_models.moonshot import MoonshotChat - -# The configuration parameters are contingent upon the specific model you select -llm_instance_config = { - "model": "moonshot-v1-8k", - "base_url": "https://api.moonshot.cn/v1", - "moonshot_api_key": "MOONSHOT_API_KEY", -} - -llm_model_instance = MoonshotChat(**llm_instance_config) -graph_config = { - "llm": { - "model_instance": llm_model_instance, - "model_tokens": 5000 - }, -} -``` \ No newline at end of file diff --git a/docs/scrapers/telemetry.md b/docs/scrapers/telemetry.md index 6b7c5453..cd68a74a 100644 --- a/docs/scrapers/telemetry.md +++ b/docs/scrapers/telemetry.md @@ -45,36 +45,36 @@ For more details, refer to the [telemetry.py](https://github.com/VinciGit00/Scra If you prefer not to participate in telemetry, you can opt out using any of the following methods: -### 1. Programmatically Disable Telemetry +1. **Programmatically Disable Telemetry**: -Add the following code at the beginning of your script: + Add the following code at the beginning of your script: -```python -from scrapegraphai import telemetry -telemetry.disable_telemetry() -``` + ```python + from scrapegraphai import telemetry + telemetry.disable_telemetry() + ``` -### 2. Configuration File +2. **Configuration File**: -Set the `telemetry_enabled` key to `false` in `~/.scrapegraphai.conf` under the `[DEFAULT]` section: + Set the `telemetry_enabled` key to `false` in `~/.scrapegraphai.conf` under the `[DEFAULT]` section: -```ini -[DEFAULT] -telemetry_enabled = False -``` + ```ini + [DEFAULT] + telemetry_enabled = False + ``` -### 3. Environment Variable +3. **Environment Variable**: -- **For a Shell Session**: + - **For a Shell Session**: - ```bash - export SCRAPEGRAPHAI_TELEMETRY_ENABLED=false - ``` + ```bash + export SCRAPEGRAPHAI_TELEMETRY_ENABLED=false + ``` -- **For a Single Command**: + - **For a Single Command**: - ```bash - SCRAPEGRAPHAI_TELEMETRY_ENABLED=false python my_script.py - ``` + ```bash + SCRAPEGRAPHAI_TELEMETRY_ENABLED=false python my_script.py + ``` By following any of these methods, you can easily opt out of telemetry and ensure your usage data is not collected. \ No newline at end of file diff --git a/docs/scrapers/types.md b/docs/scrapers/types.md deleted file mode 100644 index a3a5c5ff..00000000 --- a/docs/scrapers/types.md +++ /dev/null @@ -1,195 +0,0 @@ ---- -id: types -title: Types of Scrapers -sidebar_position: 1 ---- - -# Types of Scrapers - -There are several types of graphs available in the library, each with its own purpose and functionality. The most common ones are: - -- **SmartScraperGraph**: one-page scraper that requires a user-defined prompt and a URL (or local file) to extract information using LLM. -- **SearchGraph**: multi-page scraper that only requires a user-defined prompt to extract information from a search engine using LLM. It is built on top of SmartScraperGraph. -- **SpeechGraph**: text-to-speech pipeline that generates an answer as well as a requested audio file. It is built on top of SmartScraperGraph and requires a user-defined prompt and a URL (or local file). -- **ScriptCreatorGraph**: script generator that creates a Python script to scrape a website using the specified library (e.g. BeautifulSoup). It requires a user-defined prompt and a URL (or local file). - -There are also two additional graphs that can handle multiple sources: - -- **SmartScraperMultiGraph**: similar to `SmartScraperGraph`, but with the ability to handle multiple sources. -- **ScriptCreatorMultiGraph**: similar to `ScriptCreatorGraph`, but with the ability to handle multiple sources. - -With the introduction of `GPT-4o`, two new powerful graphs have been created: - -- **OmniScraperGraph**: similar to `SmartScraperGraph`, but with the ability to scrape images and describe them. -- **OmniSearchGraph**: similar to `SearchGraph`, but with the ability to scrape images and describe them. - -:::note -They all use a graph configuration to set up LLM models and other parameters. To find out more about the configurations, check the LLM and Configuration sections. -::: - -:::note -We can pass an optional `schema` parameter to the graph constructor to specify the output schema. If not provided or set to `None`, the schema will be generated by the LLM itself. -::: - -## OmniScraperGraph - -OmniScraperGraph is designed to scrape both text and images from web pages, with the ability to describe image content. - -First we define the graph configuration, which includes the LLM model and other parameters. Then we create an instance of the OmniScraperGraph class, passing the prompt, source, and configuration as arguments. Finally, we run the graph and print the result. -It will fetch the data from the source and extract the information based on the prompt in JSON format. - -```python -from scrapegraphai.graphs import OmniScraperGraph - -graph_config = { - "llm": {...}, -} - -omni_scraper_graph = OmniScraperGraph( - prompt="List me all the projects with their titles and image links and descriptions.", - source="https://perinim.github.io/projects", - config=graph_config, - schema=schema -) - -result = omni_scraper_graph.run() -print(result) -``` - -## OmniSearchGraph - -OmniSearchGraph extends the search capabilities to include image content analysis. - -Similar to OmniScraperGraph, we define the graph configuration, create multiple of the OmniSearchGraph class, and run the graph. -It will create a search query, fetch the first n results from the search engine, run n OmniScraperGraph instances, and return the results in JSON format. - -```python -from scrapegraphai.graphs import OmniSearchGraph - -graph_config = { - "llm": {...}, -} - -# Create the OmniSearchGraph instance -omni_search_graph = OmniSearchGraph( - prompt="List me all Chioggia's famous dishes and describe their pictures.", - config=graph_config, - schema=schema -) - -# Run the graph -result = omni_search_graph.run() -print(result) -``` - -## SmartScraperGraph & SmartScraperMultiGraph - -SmartScraperGraph is the core scraping component that extracts structured information from web pages. - -First we define the graph configuration, which includes the LLM model and other parameters. Then we create an instance of the SmartScraperGraph class, passing the prompt, source, and configuration as arguments. Finally, we run the graph and print the result. -It will fetch the data from the source and extract the information based on the prompt in JSON format. - -```python -from scrapegraphai.graphs import SmartScraperGraph - -graph_config = { - "llm": {...}, -} - -smart_scraper_graph = SmartScraperGraph( - prompt="List me all the projects with their descriptions", - source="https://perinim.github.io/projects", - config=graph_config, - schema=schema -) - -result = smart_scraper_graph.run() -print(result) -``` - -**SmartScraperMultiGraph** is similar to SmartScraperGraph, but it can handle multiple sources. We define the graph configuration, create an instance of the SmartScraperMultiGraph class, and run the graph. - -## SearchGraph - -SearchGraph combines search engine results with smart scraping capabilities. - -Similar to SmartScraperGraph, we define the graph configuration, create an instance of the SearchGraph class, and run the graph. -It will create a search query, fetch the first n results from the search engine, run n SmartScraperGraph instances, and return the results in JSON format. - -```python -from scrapegraphai.graphs import SearchGraph - -graph_config = { - "llm": {...}, - "embeddings": {...}, -} - -# Create the SearchGraph instance -search_graph = SearchGraph( - prompt="List me all the traditional recipes from Chioggia", - config=graph_config, - schema=schema -) - -# Run the graph -result = search_graph.run() -print(result) -``` - -## SpeechGraph - -SpeechGraph adds text-to-speech capabilities to the scraping pipeline. - -Similar to SmartScraperGraph, we define the graph configuration, create an instance of the SpeechGraph class, and run the graph. -It will fetch the data from the source, extract the information based on the prompt, and generate an audio file with the answer, as well as the answer itself, in JSON format. - -```python -from scrapegraphai.graphs import SpeechGraph - -graph_config = { - "llm": {...}, - "tts_model": {...}, -} - -# ************************************************ -# Create the SpeechGraph instance and run it -# ************************************************ - -speech_graph = SpeechGraph( - prompt="Make a detailed audio summary of the projects.", - source="https://perinim.github.io/projects/", - config=graph_config, - schema=schema -) - -result = speech_graph.run() -print(result) -``` - -## ScriptCreatorGraph & ScriptCreatorMultiGraph - -ScriptCreatorGraph generates Python scripts for custom web scraping tasks. - -First we define the graph configuration, which includes the LLM model and other parameters. -Then we create an instance of the ScriptCreatorGraph class, passing the prompt, source, and configuration as arguments. Finally, we run the graph and print the result. - -```python -from scrapegraphai.graphs import ScriptCreatorGraph - -graph_config = { - "llm": {...}, - "library": "beautifulsoup4" -} - -script_creator_graph = ScriptCreatorGraph( - prompt="Create a Python script to scrape the projects.", - source="https://perinim.github.io/projects/", - config=graph_config, - schema=schema -) - -result = script_creator_graph.run() -print(result) -``` - -**ScriptCreatorMultiGraph** is similar to ScriptCreatorGraph, but it can handle multiple sources. We define the graph configuration, create an instance of the ScriptCreatorMultiGraph class, and run the graph. \ No newline at end of file From bb389f83c1a6944936fcb54a4ce56065e5806466 Mon Sep 17 00:00:00 2001 From: Marco Vinciguerra Date: Sat, 11 Jan 2025 11:35:39 +0100 Subject: [PATCH 5/7] Delete code_generator_graph_anthropic.md --- .../code_generator_graph_anthropic.md | 60 ------------------- 1 file changed, 60 deletions(-) delete mode 100644 docs/Examples/Anthropic/code_generator_graph_anthropic.md diff --git a/docs/Examples/Anthropic/code_generator_graph_anthropic.md b/docs/Examples/Anthropic/code_generator_graph_anthropic.md deleted file mode 100644 index cc164e8e..00000000 --- a/docs/Examples/Anthropic/code_generator_graph_anthropic.md +++ /dev/null @@ -1,60 +0,0 @@ -```python -""" -Basic example of scraping pipeline using Code Generator with schema -""" -import os, json -from typing import List -from dotenv import load_dotenv -from pydantic import BaseModel, Field -from scrapegraphai.graphs import CodeGeneratorGraph - -load_dotenv() - -# ************************************************ -# Define the output schema for the graph -# ************************************************ - -class Project(BaseModel): - title: str = Field(description="The title of the project") - description: str = Field(description="The description of the project") - -class Projects(BaseModel): - projects: List[Project] - -# ************************************************ -# Define the configuration for the graph -# ************************************************ - -anthropic_key = os.getenv("ANTHROPIC_API_KEY") - -graph_config = { - "llm": { - "api_key":anthropic_key, - "model": "anthropic/claude-3-haiku-20240307", - }, - "verbose": True, - "headless": False, - "reduction": 2, - "max_iterations": { - "overall": 10, - "syntax": 3, - "execution": 3, - "validation": 3, - "semantic": 3 - }, - "output_file_name": "extracted_data.py" -} - -# ************************************************ -# Create the SmartScraperGraph instance and run it -# ************************************************ - -code_generator_graph = CodeGeneratorGraph( - prompt="List me all the projects with their description", - source="https://perinim.github.io/projects/", - schema=Projects, - config=graph_config -) - -result = code_generator_graph.run() -print(result) From 85499d535c93c110ce0dd5d922a91d1ef4c172b6 Mon Sep 17 00:00:00 2001 From: Marco Vinciguerra Date: Sat, 11 Jan 2025 11:38:06 +0100 Subject: [PATCH 6/7] add modules package --- docs/modules/_category_.json | 8 +++ docs/modules/scrapegraphai.md | 73 ++++++++++++--------------- docs/modules/scrapegraphai_package.md | 34 +++++++++++++ 3 files changed, 74 insertions(+), 41 deletions(-) create mode 100644 docs/modules/_category_.json create mode 100644 docs/modules/scrapegraphai_package.md diff --git a/docs/modules/_category_.json b/docs/modules/_category_.json new file mode 100644 index 00000000..84aa2335 --- /dev/null +++ b/docs/modules/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Modules", + "position": 20, + "link": { + "type": "generated-index", + "description": "Explore the core modules and packages of ScrapegraphAI." + } +} \ No newline at end of file diff --git a/docs/modules/scrapegraphai.md b/docs/modules/scrapegraphai.md index e966f85f..c9824ea5 100644 --- a/docs/modules/scrapegraphai.md +++ b/docs/modules/scrapegraphai.md @@ -2,58 +2,49 @@ sidebar_position: 1 --- -# ScrapegraphAI Package +# scrapegraphai -ScrapegraphAI is a Python library that provides a flexible and powerful framework for web scraping using Large Language Models (LLMs). The library is organized into several subpackages, each handling specific functionality: +The main package containing all ScrapegraphAI functionality. -## Core Packages +## Overview -### [Graphs](scrapegraphai.graphs.md) -The main scraping pipelines and graph implementations: -```python -from scrapegraphai.graphs import SmartScraperGraph, SearchGraph -``` +ScrapegraphAI is organized into several submodules, each handling specific aspects of the scraping pipeline: -### [Models](scrapegraphai.models.md) -LLM, embedding, and TTS model implementations: -```python -from scrapegraphai.models import OpenAIChat, OllamaEmbeddings -``` +### Core Functionality +- [scrapegraphai.graphs](scrapegraphai.graphs.md) - Graph-based scraping pipelines +- [scrapegraphai.models](scrapegraphai.models.md) - LLM and embedding model implementations +- [scrapegraphai.nodes](scrapegraphai.nodes.md) - Building blocks for scraping graphs -### [Nodes](scrapegraphai.nodes.md) -Building blocks for creating scraping graphs: -```python -from scrapegraphai.nodes import LLMNode, HTMLProcessingNode -``` +### Support Modules +- [scrapegraphai.builders](scrapegraphai.builders.md) - Graph construction utilities +- [scrapegraphai.docloaders](scrapegraphai.docloaders.md) - Document loading and processing +- [scrapegraphai.helpers](scrapegraphai.helpers.md) - Helper functions and utilities +- [scrapegraphai.integrations](scrapegraphai.integrations.md) - Third-party service integrations +- [scrapegraphai.utils](scrapegraphai.utils.md) - General utility functions -## Support Packages +## Installation -### [Builders](scrapegraphai.builders.md) -Helper functions for constructing graphs: -```python -from scrapegraphai.builders import build_basic_graph +```bash +pip install scrapegraphai ``` -### [DocLoaders](scrapegraphai.docloaders.md) -Document loading and processing utilities: -```python -from scrapegraphai.docloaders import WebLoader, PDFLoader -``` +## Basic Usage -### [Helpers](scrapegraphai.helpers.md) -Various helper functions and utilities: ```python -from scrapegraphai.helpers import setup_logging, validate_config -``` +from scrapegraphai.graphs import SmartScraperGraph -### [Integrations](scrapegraphai.integrations.md) -Third-party service integrations: -```python -from scrapegraphai.integrations import GoogleSearch, ProxyRotator -``` +# Create a scraper instance +scraper = SmartScraperGraph( + prompt="Extract product information", + source="https://example.com/products", + config={ + "llm": { + "model": "gpt-3.5-turbo" + } + } +) -### [Utils](scrapegraphai.utils.md) -General utility functions: -```python -from scrapegraphai.utils import clean_html, count_tokens +# Run the scraper +result = scraper.run() +print(result) ``` \ No newline at end of file diff --git a/docs/modules/scrapegraphai_package.md b/docs/modules/scrapegraphai_package.md new file mode 100644 index 00000000..5b222647 --- /dev/null +++ b/docs/modules/scrapegraphai_package.md @@ -0,0 +1,34 @@ +--- +sidebar_position: 2 +--- + +# scrapegraphai package + +## Package Structure + +ScrapegraphAI is organized into several key packages: + +``` +scrapegraphai/ +├── graphs/ # Graph-based scraping pipelines +├── models/ # LLM and embedding implementations +├── nodes/ # Graph building blocks +├── builders/ # Graph construction utilities +├── docloaders/ # Document loading and processing +├── helpers/ # Helper functions +├── integrations/ # Third-party integrations +└── utils/ # Utility functions +``` + +Each package serves a specific purpose in the scraping pipeline: + +- **graphs**: Contains the main scraping pipeline implementations +- **models**: Provides interfaces to various LLM and embedding models +- **nodes**: Defines the building blocks used to construct scraping graphs +- **builders**: Offers utilities for constructing custom graphs +- **docloaders**: Handles loading and processing of various document types +- **helpers**: Contains helper functions used throughout the library +- **integrations**: Manages integrations with third-party services +- **utils**: Provides general utility functions + +For detailed information about each package, see their respective documentation pages. \ No newline at end of file From 833293e41c1c02225568329b1e32241c40882551 Mon Sep 17 00:00:00 2001 From: Marco Vinciguerra Date: Sat, 11 Jan 2025 11:44:31 +0100 Subject: [PATCH 7/7] removed unused --- docs/intro.md | 1 + docusaurus.config.js | 7 ++++++- src/pages/index.js | 37 ------------------------------------- src/pages/index.module.css | 23 ----------------------- 4 files changed, 7 insertions(+), 61 deletions(-) delete mode 100644 src/pages/index.js delete mode 100644 src/pages/index.module.css diff --git a/docs/intro.md b/docs/intro.md index f223e70f..78725ed0 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -1,5 +1,6 @@ --- sidebar_position: 1 +slug: / --- # Overview diff --git a/docusaurus.config.js b/docusaurus.config.js index 7bcb3c3c..9fa9324d 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -49,7 +49,11 @@ const config = { // Remove this to remove the "edit this page" links. editUrl: 'https://github.com/ScrapeGraphAI/docusaurus-docs', + routeBasePath: '/', // Make docs the default landing page + path: 'docs', + sidebarCollapsed: false, }, + blog: false, // Disable blog theme: { customCss: './src/css/custom.css', }, @@ -79,6 +83,7 @@ const config = { sidebarId: 'tutorialSidebar', position: 'left', label: 'Documentation', + to: '/', }, { href: 'https://scrapegraphai.com', @@ -100,7 +105,7 @@ const config = { items: [ { label: 'Tutorial', - to: '/docs/intro', + to: '/', }, { label: 'Official website', diff --git a/src/pages/index.js b/src/pages/index.js deleted file mode 100644 index 7909830f..00000000 --- a/src/pages/index.js +++ /dev/null @@ -1,37 +0,0 @@ -import clsx from 'clsx'; -import Link from '@docusaurus/Link'; -import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -import Layout from '@theme/Layout'; -import HomepageFeatures from '@site/src/components/HomepageFeatures'; - -import Heading from '@theme/Heading'; -import styles from './index.module.css'; - -function HomepageHeader() { - const {siteConfig} = useDocusaurusContext(); - return ( -

-
- - {siteConfig.title} - -

{siteConfig.tagline}

-

You only scrape once

-
-
- ); -} - -export default function Home() { - const {siteConfig} = useDocusaurusContext(); - return ( - - -
- -
-
- ); -} diff --git a/src/pages/index.module.css b/src/pages/index.module.css deleted file mode 100644 index 9f71a5da..00000000 --- a/src/pages/index.module.css +++ /dev/null @@ -1,23 +0,0 @@ -/** - * CSS files with the .module.css suffix will be treated as CSS modules - * and scoped locally. - */ - -.heroBanner { - padding: 4rem 0; - text-align: center; - position: relative; - overflow: hidden; -} - -@media screen and (max-width: 996px) { - .heroBanner { - padding: 2rem; - } -} - -.buttons { - display: flex; - align-items: center; - justify-content: center; -}

L-#sO<1UL z`VRy*{;)fYYr%q{xh;wwSdvQY*ZP_rsL5xg0Mol!SzXm_+Sd{OU+9>tDJP#%#j4t` zF*~UTz*KyFpB^G8gKAk8bDn!rWky-z%}uT>@$G8@el1}`3BLEK;XAzSD2tN;s4SgI z32COICr6Vi6HX9tdwMYLyno=nDtut^Y`14z_<)T)!s$Gwj`;>woq1XS@50*_k^_MvjE;k z?pTSbaZSb5shM2Fd?H`n%nfht?B6DlnNKI#vsa9n_n4N{|+-?}=Fsjd@xzejg+qd1ej_h#nR#~tWTj10I1Xf@@h0#6 z@Er0afK=_sODkSX>rwx`?`*5F@7y0?CPrL8f|u+r+oROw|IE(SJrog$3yXl5Ea8W| z;u!_(2TVV+skzwQtCOjE!#EYd;Y%gd>Es9%RtzX4-jZ1x7!)qj*wkCy2pvYM%+rf7 zY%A$xRgf^JsZB3EIWZKgr5$aKx|VAu(%DPnx5LL&x9L3{=J=YcRIgR&9O^k*WKGES zf>v)|E7!`GP%a!R=8JB>D-gXql103lQs)-MXWhq)4O8V30FSpk_9 zGUoJhoK?lEO^OGwk%FL9h{>0yKu>XbjC5NK&l22DQn0>%pyMr? zVS(j<$hGR%?QfoQw!&_Iw?qAd_+x@A*}U<4Wp)?0kK(ru%dCKI`1+f|F`&sUAcStT z?QzPGlKh{RLz8GAV9LuLonXFxgxx@>L|2el=*~rX=E)_%DBFSwrPmsFv%hAyX3mf; z5i0h*UD5U%fX0!wPSdE!tNsz!A*I;uUAY$aXnJ={^bAmP1P*)uJsuR0#%V{xnV$4` zbm{|$7@}v34I>m+k~@06P9jU#=sF3oy_G8&O20Z^E;K0$nn_rNQVi%9I=4GLpNcCb zBCGFrnDoFwGOrE~KLY+K?6oW=gtha}?9A!XT}{lR1(bthPm-1MX+gx9Q*mQtqx7KF z=E@PW8IKG|88`a}2*W1`Al^1aME{N1U1`%*QpHuTrK!0ySrDB+Z*~j3PPE|OB|!C> z4Injf=M?M7((6|Aw$JJJ^Hg6P4B}`eqYYGLa{aA%Mq9GSqkq5hVRekn6ta;7 z@G^Pk-E(|LSsikF3}@~0;hK)me)xueo?@XiCMAIB5N90?U67n(CmehBZjAsVq%CN| zUh~dYN7RvDYR&K=87ECy6~gcSK-|5?_(8=doNgi-NdF8bVS z9Gi2$t&D~XT38kk;QVIh0&z|)Wl8z`;bcx+oYM?3x5@7D@_^TpjQtyzJtaTio#w4z zcUNd4a_afo(rMXNM~Q`_-^laWsw-0URP2%3?e0GOeyseU?%SXbHKBKkVd&CcY`1qJojJ8SK!mb2h>bT8TjSI z`eTZplp<@tefw5jE0Ez5pa<<-%VZ{6ZE1`aYf^zy`U2j1GR*MjO%Qb@;KiGZC@Lz7 zS^I~~=htGY3%Uq12kkP$;oGSN<;QNCxy!O6QWakprh!QtcWrMLUjFs0vGoH~dS~Ue z+bP%9vF?IASSOs5%z~2&HW7AxD3MHb;V|$&^z=?q8JW2oZyd>^8VLNG@Y!@_9XdRZs1=MQ}yaQEI{?6VWrczRdOdZ zr6<|Mc~5UwLxQ9Lu~47TB%5?zAIW40+2SQIOC)w&{v`{(Iq84oV&m&uk3L+X7{I-b zR2V;EcbCV>-rC+Cx~zBxtFQw9mWgL9(ozlgMR!?J7|**~6+v*W|H>Sljnn`LWkNMM)g`D~q85ubvIxg#@5Jvfb(*YX) z3!(mh(gB{^?0{$arY$R+{^s|5llqHZd0C#Pw^_f-7REZ&Q5&h!lHfSnnZ_Bf>5I8F z)AGSExrLU~4(qJRALwtQA#&!BtD0h3Jt>!7J>Ihgp(!TU1xn~t#k3-a{;W0{p|nVznw<1m3_$1 z9~ePbA5CC9V6OQD0Af*HeLt3TnE=|`&1hkglmlH2!o@2uTV12j1QNd*6`?rV^)xcFBss=6{G#81T@{^GlU_<6Quo6=CCSv5lBAGnb7;q!|R)c z5D(|h2(a?6l!{5uUiS~fsDH|1fp%%WybmW;f&ndhXZ_+A%XFP=!Dr9ZLYgJw|Ar2* zXV%`~qjv@YO~bctDdgAdA;6T|V-B#UAu9{5-hA`m!@5PN_p)xy$KQN10oCjPUCkf~ zUCG;o77hQv{_yG8@6;b?4i%-z5Gk_WzF53Ytz~}OGbc%t=JiJVc}B?QpNu+k`d?B& zm>8|(x|y5Zvz$U6Ja{9R?DADM-urXR%e&@xv$e>|27wI$-Hqi*m%b2g4!OJ!5OD5z z^7wEvtp1g>O|flHXs~sV>}QuURI-jFk>o876Dj@mk5P9YhRe`7I|Un^sN^YE0bBz% zl6>d-&B@iMseJV(z)=f=k*@rN&BpBLfz!BKJZufAlPa){7je1U&}l(gpx0TcBkb1H z{bI|>`D)WbXi`s8L6rbjIniuv-K=SBKMdZrMtx>S*V{G?(d{k*0Edp-Zd5lAP@3Ws zk#yd0y(bx53C=k-guLWKTqZ5$Fb`YqFE3K=yY|v|P8-RX&kr>83byY*)|~8FzdayN zm=c@z7S$IT9{E&tJgkm$#x+^VAz0)x(QqsWq@RjjW^bS;cs)5tIV;-e63}<51qqFOTNg1Kt z9v}#{k8ra4K!R9HCR;L>v|%bNdY{qwL8@;m8(V&Pk{4WQHM4A37E8A9wO}J;_H9Qh zM|ny2Sy#Zy%xC$}a~w932YH>J09p>uMZ(7$4|~u}gPmJsT))>@0}2YH%q}^(|EB}2 zkmWc%rSgZUPR1iZh9va=8p5Woy`88K1PGf1$agmbSL72=8P4WbIby zqz}pA{zOL8-?I~?ToH*5nI`%41nqVj(f~-o4T4#VBhuv&>4N&^G2PnOFYb?$lPk4I zqo)A8XnJSbf!bjR!5peKPkFZuZr}O#xHa4!^>tRvy~Pk6Dd-hdwk=96sFHBlga#b2>H6eYP6G%Q1NHaPgcmu5HCxQhFDp{n zOqx)TZ>oDpZ^vA>4>>=zo>J5C7G9B>9b4jBfNs+cjS_^7`$7Z}8I0i9KGNSo;)8&o zj=VreWJqnsH{|a8;+r8C9~c0!i_&S7T2)MWwf!(jjlkQ5&27LM<2=rXdhAGgz57ci%wlBnbC%5xs`9Jbb0SYrYWK#+9xnqTI{kBw>{4y152j1k zy&+Dtz=xsvc7M1Dkrp3B2R~#Ar+p;0px1rie0?guGFo2>Q<|gJ=Esgle;X=Kfvs3> zvZG}}vctRJLIMP&*SDGROPN-1mB_HAU}HvnD)jrFQxZU3*Vjyoy7-ILM`^!7xG|qzv)60d!?(ffK>;2Lc7h|-nIY)cQbPJVlzyaQVL!QCudmd%jHb1IOpDc zg}-Mvnq%`%fq31Gkt9$JTf_AKCMo-L*h7~Gw1e-7+BE3NX&B_&nzvBx;u>*w9QhOmOm$4LDfv0dcW914=w6S zdUeHaq4$n!ij6#>jJQ;X3(;2RX9~rY4)@rz}`(-c#wATFo!dBOa<-F8(F(o-(trvK~B|7#mlM0K{L8 z6|;12pMRG`DzlC`zD%^YlszS9k4FIqi+D_~{MSvxhcwN2l>D*5xMUJIFWCq}tmQ}- z)!YA2;IGx!+03cx>%Yz>;7@3(bhvF05u+dl6BNi_wXlXPJzW4V28Ozhh+JWf{Uv&q zz+v!O*`uc1c)bB=sg-BtEvZ&!c`mvtKDQ5bYlsxuPAWRnyQIfQbUvz4e=EX^%GvOM&00}AZ-+h6J>44ZU(RaD)tv9+BL)0hOMiYvlWdeZFN>Zf5p7= z2+h9*?$YEI1SJM-%L@_kWb-VUMwhy$wr%*LclKfGSnI##Lz~@!Nso{z)bhuioE&Tm zkI8&xE)Jz>qLI5kA~+jzkf@(GzP!u__#p|~j~_ptx55**N~P&rG8AX?7F*Y-{k-WM z_kk4;<2%{Q!>9Gwor=XwG&)BL2t)eWQz_4x7B4q)&M!fC%8^5HAXFh&94~4Y!!tbu zWLmeEh>(}=!ib}jC9Q{}tFzO%DwVQ*%k>u^TMEcGJ9Z3OOi-9vKjy?S;Q4HmgPH!{7qUteSGzcu9<-2Wxc9Z8qB;!kW( zCES6Ur-b7pO@X1aT~AS1HbCB^=kOUXzRHF?Th%4);tnIi~&tl;ctnkp%fQurt+j>{(8=NdG)*C|f2dmQ$`13xXQ@suh zWy&)dk7VUCUo%=VN0PuTIs)836^S{9LDX=V?nndBtR%k%OUddKQ$qP(4XpM^n}6}DyqK5Ck177uK6!9 zEsTu5m~}JWg&GS%NPnTG)Ye+J(v&%P&#Lkx-wZK;3vb@BsYtyp!bn1)m+aLHC8ee7 zB^@5OPsW%N6Uw%dxgY@4M1hEm+x=_xbCdZqV|)Rxi=uj{EY@3Hx2IU4oYj9I;Ng0j z3817Ix#|I+FZzE{bnHt8o@EOg2Y3u0vui3yposn8ci`efdW(BjZ+56^i&UV!Rb@gf zZam1)gV(9iS%@nbBR_8O!w2pHCmN#pv#9zd5u@$G!BMp)NdYKW4HPY^JuJY#p?jin z4^V8KrNE}rh;fnDjAJ_Ho=Y*z{^d|TuiTK=E4``K1ucL6tc1OqEJNl6cQxSyPVujC zQCkbUb!i;rTn6=&R}@=8`T0AMT3)k0r1k4bXK&9n-$3OTt>il$Gd@Ud_5BVfL)*PC zv;AGP%=){uLq@qM!$5gp5&OBG5?iQbHov~4*fT33XUZCC!8E}ak-1gCcO7ArQg29T z?JIm_ted&6r_VyK7>!!(hR3k?b0*){9iDM6%0Pcd8Y|Qs^MHOn6bP0sV4M;uM{06V zBucSr7rb{o@CnZ;T%&ppBaX@*^IwtWJv@~bHZ!^_M;u4gXtS<& zHdG_Gk+W?UXuQ!rQuJWgsm+f0=Lv+ed!DVHR`kxSu0;6E9VYCH0?YX+{si2{rPn(+ z(@(<+Wht!0xV|iC%_sAI40{R4NA{%ij@6F6o>r0k=k$V*slNIAT)$%OSQ8%!w~PCN z9-xsVEWfqn$a)XYFta$}wo^)MR^0P5WMHwpmb%ypz%FDz)?k)=RE4= z*u9gm2;QJa9vnar_Re)c_-vhE0XL?Gc7*~pU+IQ2Itgh zTrak(f@|n(u(q0NUtNZJu&sKB+9;BJ`(^nJ){EF|ZQAS@rNr$6IZaCp6f{G}7}8TV<0B?|4F5u#lt0WIdK&ULE4!mN9^*eJE+c5*!p(7apIz zu6%HQfid(GJ*d|0{QQ6tggOTx0hNHKqh2$N5SaNRsedo-M(v4l9x#SN3HeuZ=v_>( zTP!V!snq7sPK?$c^ePx}da)^~wZo1)>Bm(&btb7H+U)qSeC%EZaJbxzs-g$WK?~ek zz?(mtghrPmLtsLa!&5IoH0`sm(22ljBlb2sDd=D}(#_146G=dL!BE)R9D%D-$62gP z7Mu4cVfS4>;&>k6gR5&uCme&CvU5riIm1#*Y)j$G?>Ar=-6#B~RVemqa)N8>oRw=T zAY@{yGNy67u^?5mwb@Rcp&!iDF5thF%exK|0=(nE-2fY{TpRwCJ7vt?_$?6duK4#x z3JMjCY>&PFF<^f0-@LmQbdh%;!Gx!FO_j(t+uIg+{jtNgE(CBS>vii-uu)OBeey6|@IYm(p z2A2Kqz|73j2jA^ccpHc2U2TO@nQe?%3xipsqu3)n*Cm^O!Jv6|gw z@&AjeLZB~so12r<1$G`4pE(A44O=M;ogKL-Jq~S>$kO10#i*h-#ZXPx@%K#F*cgPL zWAE@6bZ};n3yM$xS@Av8mWH8TVF$3*Uf6mc47L^Up4vK@xIR6++Su4&NG42KizBGP zQT}z*a-|<05pjm~abdz>cSX^>+>dRv)e8K|>^*b+RYwUJTj!Ih%%6L80DQamkD!s+ z2V7hKMe(WKS5f=>`@fyu9%y+voB=XLs8(-*|gP_EYx+j*~3Xo=g|G$^}_4PIex%zxjS+Fh?nfUz`ZoDZrO7nVic1IFEkGb z(YSl|LPCOSwlL=_T%WE&KQ%n6%{nxB{Jf>1q#I9_4-L{#QW8VMz&*jL@Z$b$)|9A| zy77#Qdv*Q~&~}yU2*&%K-@#j=Ss}5B`iWMy!?x+Q^+WBG%P1GTv1bm9V#xwdjHyn; z0)}uS%Fs)Xv3De60AY{yM#3^&DHJBh-yu>;^KH(q9^2!m!DYC)CoqU>ON#B{R#p~w zNQ!W{vebp^fSEE*FLwDAZw4DJe&A1G_mkC@FX>B9?z%mx#{g@O&hvcNf#AR0F!|3E zfq2t{h*C!z&IjOxiAzTH!i{PL{P<2)_bx_R%SW{Q5m}uREw`}#@1xGg+u-??pkesP9=PPa7RwNR1QYW|94kyZwkeRj0QZ%M^Z+3LY zfhY=r&^^~^^xk?3KA9yDxl3Iev;~S}muXo|&1gxoXvc32hpk598WNgZUHOJ5lVPuv zMf8C3KLl(_lo{ms$R`KIP3)Qe4&r>IZ?jV;jsrCu54gjELm4iOe)r%BA>s;*ssB)W zJcLUMY}3ZPK$o1&)R~S&afVV(8kQAP#1RivF!H9ruGRR|&io-@{X9A-c9ikw@;kuZlhXLXD<{^>taMBLMx5>v9Sq_ zb}syOOeIZ()Y?KXKr&vtWcOv=r04uV{8`f(FdJxxvkIlO1w_Ax`v@l=k_1g`lzP2J;DRx2^%94M1`bMcTio(7pvc zKdPyZVX&V|uMm(0BNea6xw2aOm^fbNrVOO*{I?cGw5uan9JD+&QE;D=o8h9eJWM9~M@G#nYw6+ z;Qi*465iy>zzQAZ-q{d2;F5w)BA*y>OSBTTE4Zf$K?hK-a;d=NHEZ)^bl<#b6+4I) zoyle`00#xqU;`YHM>Jwx2bTli(!*l@EN9J7+xZgydV3HfcFdVvP2BggLBy60T@Gr@ zX2@o?P#l(1qw>vsPDU>uk%XIUMF+NJ0H&xb4tZkj7FNvyZRT!WJiOGSf0LZY9en)` zy13c+1|syBjex!SS3lBU<<4OQlOyd`mXBv5Jeb`Gs5_j-2gFc^;(JDr<1DLa|x2iN=+@emR zUtyuh$dxa<5i0msDP?}+P+^Um3R{H%)hgRTrFemY>bt7a>YH1IYFBNq8Xx`2LYRWP)Sfm6`&QP9cv+ZN?hL`F)1I{nFU8ISf` zzT27PzNMaz?1Mh#CtK8k2KO^@WOe$mFHQORn2#JR;g_6`k>w1`>usXej5cyqd~-Jo z6WznIzxHRg5p*q9fV+fDojS@LuZ3~{CrthKlcOUdUC>?-FqZ6Wri4*)biQMUGa9@QE##vMk!g0j4Zo#} z<_`$Qr~06h`|-4wkS0Uqd{k26r_`ieU31Gys+j1Vci1Ffq`-K+FR0y}^C&m7-`~$2 z2&0Y9Rv3x=eeub{g83dOqCWTPnqQp`qj$4%YvV)C1F|QyP{?spHd)lSHI7jks6Y}B ziAO#qoMdm~`#T?B^K{WD`hHK*_gO>`_JTP5c;9y>uQBJi@?l-qITIp0j&H)&O%Hb^ zPkWQ_!k{>cW(y?6*>SApfJq&UQqx(}u7J!1HjvGwl zjJ3C0fvi2F<=Z9eRT<=bVb^V#-xlg0_=& zfzdy?8|=C9*A3;7%;`%T`Pmy)qCoe>Fy4Ta$-D z?NvJuJM7;YyjE58K@z0i?JrC+*98%UDEz*p0dK$X*zDN$V3_?B(MDx4R(}e=IIBtzJxp7E%f!LLvlnea&)dWZaWo~i)B0@6r5Z|!mzl|iM6zgu}^T7HGHOB7WUM^gs zt`Wfx+>u#LHX!3Svm_-bv)uqD1Tge2w@w3Kvk`wbPGp~}QyV&tId)YsargGL$LFLy z>L%>G3jMf#4hq1fo$`mdzhhLx-}_M1`a#`giY+9bvtJQ9xlyTbJ1@{oy|L~#&*<^m zUsxIS$-990SAF{3gpSjit$N zpvwI9IqPIR#F`j2TFQfXzu?>Nrux6cBb*w?3Qtq>ZN;Af)hmyRpj*|B6^!2`QkCDJ zh98S@Y6GJ}5oWYc_upa+pU_Z?x$Uyj25_+~AnG$cbnSyNElBX;-33%!hUQ*Gp>B3mxl{G8+SRD5dWB~0+aogCtKJg4XM<`6Z$NhQ@7cee;8PiD6_A{2 z{jOkTn*B-7#;mXmAn!HTsh%zW9W_>%Mg0w&2%37SE{kVSAnl*opBhsGz+wAev(JY{UiNdNa^XM(slUWMi)xEW*6|8jw&*_xRB>6^r6C-O`D~$9vIZA zcsnVsw-Br%eWa|o{kCiXLju~lJhHOmQIb%_KHWKy%-jd?YD=qkfjNYoOY65wfYEFJ z%ept@X9VHaUyoiszr*Ug!<6aS@D?yu%M4u5v*PB5+hxlTUpaj4ZQl=6pqi8PcV}{s z#I&H{>Rjo?QxWq$re-J>GImCC*93dpQi5eKch|FE4+DseaP?7XZ1IRgOqi&qOH4y)45d)DkOz z9A&Nn!Skllc?b7_|8K(HySf)FA>4i`CiQqJ5c^?^y7vgkB`Gw*J!s<%l_uFL^+94p ztU}}+y5U7+3Q%|OYb&_O1ac-0xjY0St4*;&p&^VgE=+0J;@iO#1@YZYeZLhFm-Z^FLA z9s=ui*}U_2#4Ry!3XVhE;kP;c=9a1{Rrqq!fZ(1zdSOEY;wSr4V2986bkys)X1JQ-54u1Yj@8z^>LR z>hKyKe?XO$uc{-$Z#>)b^Gj%Hj!Gvt+k6jmt3~b|4jN}ECYF~Ufpem46X!b_nd2FN z%Rh+*ta=>-V76Z!T0VIzZ=@Vwtt_1gsdb=&$ASsGag6!s4+i0ac6K1$kZZeEWH7^E*Ibe}XwLg*F@Kmnp!a1GpdM1hE7| z{UvQ#em>VGpU-Gp&f2cpocym!6%yx+{7LYNYEo zR7Ln`4?4v5UWqT~a_F(%^7CqzlatHRv1^HEluxGjlzBo(xS0v8iz(7(Hu9Qm9od~- z(Q8D=Za@!;tAeUAh=3VJcG|nftxNS;&ZdoS$_`y8I65I-1wL(IMf}rJH8r)$Qe#t7 zPZQMHcpKswDo%~l5IhzZmdyp(df!`k-Ci$U%z6JT)Cf0(+Vhpm(V`Zus=g0$>tBp* zB7&n;HcL7xGu`(=D|0qLHT0G5>oDAnzXBc0fyJS{i8Lp)o@_V%<^#a+7;(dA(XK1n zp&UJIRJ?Xb+03x!zwn&G+2pKmS-^L_I)_hJ>_y=pUSkTqr|7txE@1?yk$ug+dNkn1_qP@qA z`tfomF!~jT5Y*^iHx_i8JE6KUSb!>{1g9*ddt$kx&7Yuysl@-4)-xmueKrW7tGr+4 zKk~e2Xi-|QolH<7^WTf0k$~P{VX8um-SICJsPaT@y&aTX2rOqpLXQvKYPcI+wZC$+ z_J&v_yJLyHZmAar3}{UZ%o)@q8m!UmWi3m@Z(s=~mq+bZnnatg1??@HTxQh32JRd_ zei6h>jUO_x&Myz0#P5)x{2ofa9$HKlLs*b&>%b;SOaKtWC1?FrSPcl@mn&pq2dH+g z5at<6*&Sr7bL?jHGp6S{_AC|+Qz9{Pw&RuhN3ka%bwTqu$nu}s-1tU*L8OT~n{l91 zs6g9KB2u_xPa$t)_ML>waQxv5k!aersoy~;luzPJFz&s5z zcKXTjlPN=hm?f~*x@nyErt_6hg2Rte(F26D_MJ6G32CZ=)rY3h;D%tBW``s2eSpqK zT}9B%vU>inrutxm{<4=idYF8^ltxmH{LL_2&8DIFX}>n6YxPF0$-I$Q?iNaK2zK>d zAU=-)&^!anL8T@ofiSTthB_lId()^kQSwSG+GehyNrB-q4)Tp&{1Z*4o62a#{!B6r zW2LUx*VTw3dbJR9f7UFu4le3C7up?%S%(UCGNSlkCK8`K?B{H9?239JJse{-#d;rf zXj~wkcmr7YJH^E9f`xpOmB1L0DpegCVy&>OX>1%+m5-P^N`~?KZM8QBPl$$o;C|iz z``x2L)(ZpYESCvECs6{_xHi23n5CjdgqkNU_?bSF*y4BD z%#!Q=eCv)4psRWrx*YNW(^f%Mt&F&9@A55OD1XxI_Vr%)PnF8yPhtKKk94V>bRxVDD~8 zJ>2pkGry7H>ID~WiIMiOM9S1>Di5bNF7au8oR-{B>bH>(zs=xxAnz(RcU|g_0`gGn zJk4CoArLV03*dnBob#CPD{D#u7J)|WVammy?U051KC5$uX(G_k@~c~_%q0Kvfm`!g z7$|-%<{=&V6!=d$k;*;J5cWvQJI{7C5TakPr`TckX zp&DfEB&EnoZmtp%0 z{xbOnnnyXs#JhUmZ+ZTJ4&3)nlPrm{o;PlADv0pL_j~2_ff;@}OVmcTIiqBfRJL;Z zRAANyZU6#)@Y~JHX6k*Xr&-0|W387oG|!X?FRE=c+kMzhtZy-Op279DV%`$F=$RQ2aMT*HcC(FoejSuRY&c5mk8Zq#-^V_hUiysT7_*gM@JJwWg+ow17G2(fTiDx-s9S0`B>eau4rUGQf zCkGEICnu}4I0D^80P@`VdSn~n;LoVTNd4v&mQwvlTY7`l>WzsA713-Gi-mY!VjII4 zvGj`Ec)Ebo&rm1*zMa@S!HF^&u(}^?Hu_5WE+Y;dm~*w%;sqjP0(8Ez?Gren5qI~V zYp#E{agR!D%gxAt!;@W`O@aFYCIWKB9%V@h(0vqJdVXA9PD6^BG8`I>dfdGzR-xI6 zK%<}*{~SfYPM^cw?qa>{czII9o zBhlK7oCQkEyrS1?S;b#l|3Q{$@d+DPetSw$w80S0x^@Mcfk1Cj9FK}^a(G``Wb7jc zD>GP0^%r`FQ5JT`zW+)EOFy)0ENgsqbr<7q zkJ}zQ{$Y6A|D*PJw#-|E){aLEL#U)R^juze1IUbO>p3om-r%##Xj*V4JAbr}nH~RN z;Nj2MSc2&oDpWV?dN-;$2T-PeSK4oiTW?)LY$8GkVF5NaBK;o(mg&={PpsS1}{Rgl9;&5Ogzg(ZJIrlLnDt-C#MUx8Uf(BTK+X&%zDPBiL}678CB=;NJ}RyyHRTxGbmkb3mPrO$|8 zs(-c@fC%>VA{)v{dc45UBT!HPyi8VZ<>x5Th zG11M6^Sjgra|T|+TA3 z4fbvWoUHYmA5!m_e92#U^$IB~dj+n{s58uvS=hPC&a2$Cz1Jez5p`Y?;Ed68@mX0M zP-xl<&Ahl;#}J71xQMv_$~dcRU8%S)MCFF- z=1dbck_^9&hUTvpFytfGu$-NyB@vM9V$)dYk;D4uPhG2E5_v*9az^lZhq$H?hL(_VFX1B`8Lpv@2}0^M9IsSc(jRs8F87Am==J11v zGYZP%`FkmG)xZhc7XBkd3ljx@b0E*lEZ*q=7}i|(c<^3dwdEI$LT^3*DiJSlZ=W6j z5bnX$XiHqP)1B(c^x!AcFKguG=t+ALlzWmmG8$H^Q5W#sl6g%?%ekxfYVm-yhG%x| znO35Sk_jm?b_<9X+Xub;#5xeyL*;mr2+&(=tBGrNe!g~H6Ku3HbCWWwP&kq&CitA! z$R4{a3~UQXLYqaOBkex`XQj9h|FjiS(L|H_GaYB6KO?0d;kp;VJU4KB&XR;qI??jH zPVk?N7MG=tHF;{>cZP+crMYQA*}vxgddzM#fdPzw1y6Y3B^HbYiG|5x(MAJf0cGmm zCVe3pfO>b-nh)%mV-3trO%lgB8u`s|Y&^OT{$z1)tuMJci5~zt$6Hc8aRWF8+Ti5h z?Z=!l#-%8vpxzLBM>96th?=kdZ!r$Au&hj}0DmDCGy{mrWjgSuA^&Q7Q*v+4Q%BGJ zti0XA8H2nu4%mk=z@Yv3TfJf9E%3Atkn42-0LvTg)CcWQ7{AGQQuQPqn3oVqaPOxp z83%gz;3~XK-UCcP;LR!+&Hyt4hvb*fJU%aB%?W4vSs)Cnwa+923aO`)Obx91LbT@f z#S00(Jnb0P!sJz4tsBEadius)NR=M7_VSj}eSL-`@YojF@6*r5E{y97iJ}AMSZ4q_ zt{j90*j0@O*c?}+cydslG0?kcTDh^9Bo5rOWrF8XY!!?&`v8!{`pss?zJ?IuX29t_ z$eQKdrX=+Q2U^wMf{N#-wFb1kRMwGyl-tx&ceZrT9bbvm^c@jX%`nR}m3({(0A%YJ zp3izLLl#-xEU}-$7krh)*-WyRAHx1Dd~Y>?=*H-4RW5ASAbETLQ=zcgjjtA4ir2W@mcEfDrr_`zaF>mLI>xezhYO^QVBC8gqLJQf z9aqkrG&~U`A%Yk`c|v=PnsCwq#}W~*Wd z+ItZ+t1Q1?9HSSKuDx)|j(?HGf302_FCf>>*$g20#}BN5G6e7T5$6r%^Gf!_P17sV z7Q3(gyIz}Ui@^{uOCn5j;Di<^CC*O8f|>$(=1eKDUMtC2fgqQT+uxP|bykDBEWS4c zNEr4+UJO&T3F(^+O1pNKzRRW6z*FQX9b9tF_96DHu#x1@-g%kfXsfdfU84i5L%Vij zzez3M&OzCcqosYcqB3cj#2S3s9EMKP{d_qjz%y;7=)4n3BHCDMMq>#C?0V80a;6Ia zJ2-P%JWA$FftTp~gxvM9WEM%*uaisM6A>AXwF`$~;-%RJb3aes4}1q=m>9yv@q~WfidZ z)TIawQeZ=l{vZ|^Xo$S{yK@!%3>u+UYfQDK+kKY9_`W<2F1d|!U@*;7O6Ny4S-pPt zLGJa8^pwL2FPlOp-u04dMpictl0rGhO8dkvV_J&!J1HzUrK2sdbtLT)o);qesJ+ZN z1AVw^?OAc&3uE@K8W!Yd*-sU@2WRpkk7=6tZR`vdZ(d(^SJz#M{+m^@{Qx*GyW%$U z)q9V=k5|4UyjIi2->Uwm_^b)T1=ViTuh6e=(U=}7?3&}GW2og>)r$$ttohB3u@D(9 z=h8X}Fn-fPQgUJUa(<7d``NKjdN1J)B(-@zs*f8AI+m0OY%5+P=v5&46LKu>P)~QD z3MiK(3&hAto1$b%_FB>@>zK75zKU^K3m}3eDSmtc!vV0P5`VoGB|QS_dkuq5^kQyb6@BVn2b?Q>s%oAJT<iH;tuM zo6miaedMm4>}-gb{*y3fqEmOfr`ElqR}ROeteUq3oCJhX5KMY0^g94Vs{mi9%L8n| z_983)o6u*WMUSZwLvv(@&k2Q&fhZdUeLm=w>(!!D3=F*W20yk%X*s$_RMA>skdT07 zL|}(IOAL>#wiaZ6U<%TMfAeg}ZzBr|Wc z?`i!%V*cH!Tk&D7l>YI)={Q3~qqK?q7di3jB|9&#`eg^OiZ%FaB!PeTuZY zXp@OOOdiFOJAZXt%-v*ySRiTq0)U;D-__L3C?FB{$Ut7$6+J$qo9ZAB?e_lNq zX;9nWNtr-jR6JT6IfT1axJnKlXl>}O4hI%neHEU4VCqeCM7 z4dn7>iAlv$C*A9Ln0ngbH1 zqQ?H{!qR{(RsVdSSD0oCq_%X)w|Hjz?)=k*zspaD#$sRzKW#b2uV!Q8!H##iYj&;sFS>W(o0MZAfdd|UUi&=c}Y{kiFQ@_W5} zTm5e^MQh6YVkxP1(wx3n@=Rj>I*m8gc;*2~vnbtN-fKmSy!K>TOr)e}#(yqebZdvz z1m6yfxTsZxyQhtR3-qvNFYr`n^uE1Ep3moF?xtM@kNwtI$)nfDOy2qUds+g@_OiN< zOolx;I`8sn7BE4voayV^f6x&mQ~(>-s+ zh^EcWQqzrG2QR7I!PkTk>=@ga3k?wP-|4BtUtIaX z!r>AC4Vwm_1h0W)59`9yL*b9=rv5l|Iiew&0_dTk*#84Bh>!L7^YK*0>BJ ze9`M6Q916*ZeN^mn3K!KtW{_ly5Fq3`-Z#y@lwOh!pmYvM4Nvz&-ukqce&0nLRA;& zIPUDAFLw};VL#nqHk_6Eux6#bOe)B@)8@RdLO1yqgr^*{>;a0Zzht>t5180HP`MqY zuMM$iX&SB8*X#WT%A+*v3mHuuV?USxLG-UooBqBq(OfaPFV`1u^SK?p!JqT5B_tqt zYCbX>R3l$)wU8iK&Vbq2Y_sx%(W?57lG<8F7c)qNfIxipmxIa6A>V2tcAu!3 zf-kWk732FqV3hJrNjw|ACnKg}($9Z=fBWGOht~?io0kDsE;DI_E|5$c`q?N1o<+8- zFElf~ubzFY^37sTM$ckwB8dmMIs(sD6S&CHc)XQ`3eQy-raJyhb%Qm*s!_z*cEyZo zekAMdsL=Nw!HeaEvhPnKi(5(JEV3dMz|3h1@0Y8|{Q zOQgNZz4A%dXVX%Uxsvv_B{n0d1z0a%j@PQfwf|Tl$4Rw;A$iPH^FJMX&D)4YK?=_` zPQ%m)G3aw-BZ4?+Gt;EQ1HZ_-o2 zF#ZdkS_lM;fOZ_jFXx?KmrrBgIR>P?u{}HN>!qO=Qd#!bV8WFy)rEeu9fV>9v4oRPVh3rV*Nkh56n?A(PRQ6OB>`&p|)YRjYqz_w>4LjD{e9RkhrGczl zW0n^?Y*(H=-64v#A-gW26^wHtE0e#Z47eXlVLsI^-tVt;)2lY|Qwm$_qa-FHeF zV;FXJ#Mp8TI-E@&@rKz-&|9@mtJP#(+}*pxzlX`ABQ;JN-V+`qt9PD}<)O{&eQX=v zZLYL*+!@zeaq)h<9ZLeWUR#%akKT85_@p{11h`LQ+Yc>C-3+pLP-x-D8_r`_|QsxZcs2XkIU%W8*7arwX|xu*!meeV@C$w30y!VvDsR zz{bm#jI|bL36+vY9etz{!KgOddda*pRE2^HC@B4`2B#fQC)4f0Bxm5Fr;_+uuQ~tY zYlm)lo%b@)tl$D#WJjud9SU%7AZH(Bd^4?Mr~K~S z*IjCCDdSBfU3VtcERXdU#dvrrdS(-Zd=a3?GFiPMl9l^+^E^DX)|z?H*hCkyv|OeF z`Un!^Xs3hU=HdwOh>WFXNe}Ta?hg!A;I{1LmjRSlo8J}t(@cpk9|vAHeGILxE%w#7 zeg<3&vvh15-aTmkov*RVkxzLWD<&4cz{%;=FO20kB^8 z)pq~$n}f0eA4B5MgLD`IdkI)L&qSL!a#$h~IR0o|2(pDbd;fV#G71=n$L|^3gHn!|J=h@+K}5hBWxc@Nuiu|Ps@@f3Wqu+4kf}|nMD*foThLY0*^Bv4 zOw4sD5xL_DKj!o-g(&s8}go9!?K4_hvrXQSlt$>|apTo2*8%5SlvwAR7@^?avUw@fE>?hZa(4 zcR^--B=?2vZ+CyJ2@-{MNOL;?)3xKBl2S9WJC5ex2i_2fj}zfpO98cZ8n7c7K{w+? z``c7g{S@hcd7}PPJ@chOeAPOduzixh0{qEAo9KvdkT-8td&18w_*bo;<=wbGNkq>q zyJ_KHIICh%`T7o2xPGGs54F@LU|&i%?|W3fSbXm3^q0Z8i-KcR8QC@I0w^+p|0psO zz#FG+i!J+#NJ+_xi^Uno>;*GSG6GvOM$SIAxOgxmUE|&mA1<1UqiO=Pi^i@#OGy)^nvBfA!XmNfASuzw=vGxUCVl>O#*-#` z)V7(p-8TyS*R+`mC5*%c3^w_O$~xLY%mAxv`D>^y{ z;)S^{6M4nn>W4lnO^~1Nq4NHc2PMYo^pngzgm|Z7@nWxu8P&x)uV~SN_bq?JaXPm= z**<@|#li4!a+Vje<4nsmo27_0%+ujAGW-}69&rkcP97PcJ=fP_YfRqTHGO-n0^od( z9(hgp^7CmX57EG7^x9{LcNU^`)chHvo`>w-_fxbNh?|xlkV&Csxq3*DCk_&qUgF2n z`){@P@0jNK{5|MX3C{Q^u0w{qeSdo*AJvTXWf(_{(w@-`QC(qw0GktbY;fz4G^ywf z>ij-V?H$j^AuQQ%8s&ux*Z>jG`eaPi~(rQ#oTLEG$66l*No;IWF0$D6Voi7x-By~KioP+zKNn(2OI ze+MW!heh$pE61H@?yx$mT?ZrVu#7ys!NK8Wwjw&IpBx{nE%n5OVpH1Fq|VEa{=glG zlW_&J{6yP|-!|U_$BaE){)}l@eM%F)j7V_ZjE^g^S+#us_DxZ*v1tkYF<(h5hT9;y zwB32sE)qb{lYCCuDHuHwo6w1%bOso%qok6>%UsjYA!bK0d?I}=J?_PAqLTkiu|4Aq zGLb{9xoKaYzv8*Kc~8X;jqSgS9))-ZH(w?&&m?-R=B_p!KwkUrp8|Meyeia*#0HM^ zx`7EXqp@di^cTeeuz%+UdPJSaGZk^+n1uJ5K84TsDwF2q@D0tx&i8|cEjw>H8f@qe z`Yt3>1#AjfH0{GK zPKUgOjutdESPZQKvL|jGzg2LrY3<3MgD_?hEO}LxEr)s>)MGI?TCeo#9l9s~EuPI> z34L&zDWct9SY?N6w5eD`3mbkEkGD|=#zv?Qd5K*4l>uN?Lf?!_vOk@_}lq31vFQ$jKT`Qq_lvFlPIrX122cBnQN5oW`km0 z8@_W6)dt>+k_tY|U_!|~EC83)J#8@eZfEp}zC*w}-QXTyl4n*u-3k6W?RT-q^mT!C z_%?LcING`nUcRiyeMT)g+yU_QYmU@ZuNbcHt&CrW7W>COV`%RQlvlQN>GB?~vt^uL zEB_>$h?%_~Pk2rIH6X2bCsYP14k`cJrj>K(2r{Nzqd;$ySY=voj1{J;XoVT)*#yin zWQhT>1!-B{{;;31W9;OO9FP5|t}JlUMbn45QxASj{1tqEOuCGYz+2HU#QP}y(_0VB zoLt;(p}DMCr}UX*mJ5AzpT*7{ihCx8dJ@FL$DW-o>mz>^!iGc{8)61_UEY$ZT~0%h z`|>DN;Tr9a(*{)<8cz$b`^>N6vbP@3|M!7;x1Hir#X6bdH^#nWqG_cx^gpv1yI!s3 z3eY#ix&~&mIbb%c5B|3(d-!iML%-+}Uc9?Q#W)6@|2geXk3PU9Fcm^ONXb-o5}Gi#Ys# zu2fe#B;>!#SXctDhfIeCZ1CBkPTun)Nd;u&{WR0qTrAGk_{ZD1j`!1@rKN0p`HVuc zw|<(47Szmrj8)lhYq9$s9h9ucDs_kL@WndT6~Ok%YribWx%g6{EBwN3JKbW^@bQd< zWrrDe;n<$t_Q5U$nAZ$#+edml932kr)w*L-|%vqP$Bs9X#1-LmK}rQ!|>aN znPj%T5nHKy06RCSZt9B2g`0-j+Q?8cNkIndcY9Fq4}Ty)-_}p!{7lzHt+uBO{ZGKD z%xkQ0-_*~}5eIdjaOeFA-0;y@l`JvF|BO~r%H#%@0lcp$Dn)!>Bq4k>n*-*AeMDe; z(}R+lS}MN;aSs{l^PLwA`0NBT1ieb2d@nZ|`eA|thx)c`u5HTa7kCeUn)i->-9_(y z3;!Im3+0zw1(36(Ztz*VIEKllhrYI_h1DK8Rq+Sc2qZgty6Hv!B|0Epq6S zC4c_>nFlOH6%K~v@>iDr_S@4hjl^M4Lr$b2P?2Ws3b6lX>%UasKg@)?&x`)B|8a%` zc(D6NV4y<-?t=f|V50f&-d>deH2u}+j@==&9+rbKIJ3(VXsU-^FH>(_0pJ zsLXo&O|qJ_(gsGcs1tAEMFeSVVY9s^>^VGNGqi(D4qKAiR;a-c5QuL|7aOk6j~(hX z!lr#Ed+R5uATXZnFQ4O8iPVZF&NNCc^sOxP#F+sT(;q90k20k%PsAwdf3HpBsXUHv zN`F43aQ=wP9NNpx##O*2BoiJm^r&2Wp;l|=hvIuOgK*u@M|ZuioB+t+P~oj4b-Fwy zuEkBF4{)I7J~Y?3EcJenC68g0UKUTgWHQ3{uoIK^VvAV5378F*o)$?6~| zW0RM_w7mD`%c5T|xEE9l<~3#|;NGrY%x$Kc&&n5pGjk)}*+dP5L8Y4nBX~raukGlm zRh|07I#g`Oe3fZl0N_TQonf*$#Vp{Q_%S7bc~jb@A|fKKfo(`(vnNvKgVgt+AmPPe zFwp;6Dh2BD?Kz53P_E6MM9;(Bh&t&+ydkeLsFM@_NJ|F>yI;8o`x6}iHs7vt^tWQU zu9=O;`<0&@&t#0DBmZ{8D@Jj;lY&r6LFBhh3@uBZS`jSNQ^yd!I)kay>WsF6B#KKF zUvBZtr#6N!c*!tJxnpFk;P=$+1gAJyfj;V}$Oh&MZ59VKkC+I@ukr2pPUYsKg0wX5 zRQ!>neupaF>wrMD#>rzM$#Ar=(8W6(_uzG|#2d7Qd6%OdpLxA=IvW}&=35c1>D>wL4PQmhCd;xp2C^B>Q9EofA}v}cZn%*XIgyXQ5( z2D&5MM(I^CI!iF_Gui-;%tceAT@)8NxWYv+>yk)Wr#HojJ9&k*;Zdd2w%gvNIMn;& z!+e*ofS>c8k@r^7&|csjRY6UTXFBfK-8W%T0q8n3Q-Q08SzR=Lsz2r*QDZmwCbWZ%LI57G}B6BHv_Bgj|=sl9Af0!{%vXTkAvW>`5JPu$;YIZ}5paH)FjBj-OccL2?{ zoaM^4vd;Oa_5=l=*j`Y(^BWnY;P&SkKKn9N@E8j5{P>zaxrpl5TpgfQzau@#`0+ga zjYVMfml!i2%Seb|`dy{a8Lh2G&*B%%^25*rD7hkN(ymc=z)|3Ei+ z4Yiy*t)R2@TYun9FO3@t<_Frkb(C_T&6-$7YK{mQ5bxQfcbAYg`4zB5x(A>O)Q!=* zGPCHQR5D=hFi`@1zHk&CS)~A0jie(w^xcEwL9E3^XMh#KZ(tHDa-v>_GOKM`TI0PGYHME<*n8|d6r8BnWi zTf;+1ss;_I_UG-To;4l7N@}y_qWQ$#3ofUG$3t}wOYFff#%QysZyOD zDLnrM(!~Lofl+#YIw_)XIgW*46Q4V4b7Nz3^lwrX;I`oKTL5*hR4W!Q#H0pQ23mal z22Q_;q~1s_WXtL-XoOD-Yz9J11}H>+Jz37xi3>O=wLk9;iSffEd`q}J0>pf1G*)bT z-}&o%t`axe+2W{^RM!F!tdtI4{nhQD)IP&?{8u-8>Q$r>%kFOgYfNlq23k$BP4u2U&o_BWWb zBaf7I2%wl+T2okASylTrPVg9uqobp{ZYIcw5qIr*)jwiI1<<-$7`MgXW-k$jo8F<^g&}tx$@O3ofVna#W84D>urpc zQo!9V{Fl#YZRN4kcCCf(wXzLt$)^CQKPnXL_27vwCoZf$n*-0c4*^Yt0OkeI?TOzR z^C;H;ph_Ex|9QawUubze{xjOq$KSUH;_3b`ML!cJr>SUk9E)ev@x`j?Yt9w{CR1S0 zy%=JzDRH*9PPzO$^W-s&liJXBI62ka;oHq6puC&-u*ca~RFUEGnQ4S;Q`%|xmAnUB zG_xETL%F>f_xr7{;PUmXB<}|yn(5dO{D8)yicy+#gQLDOXH>Nlyw^N8A+kT6tFTU%r7o?eFcF z+{RX^NDGEdVhy?-X6JMnnJ5#A43St|vtC?kSycIUrE5RI=vB6R4Bw|7*^hkZn9e{d zs8`lsjM>Ji8@=R5jD)<4qPkmDq69~QH~tR^1}Rt*Tj1Yk)vv-od@gS%)WBOyvZDxW zijI{ljtHx5<+CfbmACOzC}4DOD-4M1LqwRBsPgV3t)ic$E#g?O31V={Fl|+IJSiO>Z@Za;vfaG~&7gxf+l%BTdwGUBx z&#c6wPS+T#=o#%uhj?<4A(E7VAVMAUGk2UXw@f?M=7MuH_YQdOav%YYdF#B;p3aNt zwaswyDq^DcOYZiKX4V_xx8YUF(-iYn5h8gunf9MvdPk3WQnCaYsQ{o_Ls)b=ZvD;jiBkG!CgL%6C zhpJdqBYBJt9{GIYK?(z=#$G|wzYkgKeHb@2BfbQK&Ta!Se|6IBa_iZZTKx*n((l=j zdPNbBm#cO}?+P{?Fej-IGX|aBltk`mXtCPEWXO}M9Q|;HN?sFW2~RD0>3-y@TO0B>d4Jja_)8~IE*J!i%I9CEXx*(=g9Nb z#C^xHwfPveD^{j>3eh4Q2{S&x@-4B@oz0KSqu+gT%vMVoyx8~X&Qm=jY0ZvvYm z38P-m5g*;C8?s)xx?0MKw|))-VLc*<{;)+RK1sy`_H`;N%jJH1oGTiB@WR?H+1pkcj7{l9uqE+`2{G0Oy!Xs=Al7ZWTZxoSLv3 zAqKpM5GlL_iy{|#m3v~(gx{T`J8%1B_g#(DuOej{+xF_Ueyw85m{n0(*17xCP^Wox z&{Tbrm-wm88&T*M2lEnGdEA|H?W(DmIBg9p=(xuzjJ`=R*WK13eE_`)-dg{LowtFGqIWu`hg=%lAUYvHb^mJw$I8Y$qOVyZ+{O|RHg z)2A+)(@fg}OS0)(9TD^{odYC0P0Lol{Y$EIk&aDxl%-dnB*Vj3qtv&YUt1 zC~=}BL`~b?)q*b|uwZcXFpzMXh#{oR5EhOU=;(XR=G`ZDwOT(N&}JP1b^sE9z|!@i zre`2bFe*9XkX#30Nk-O`29b}2irSIkJ#xn$Kpcnmj+NRGD}R$@pV%tpPqg~OQ0M=s z0vKdPlO8}bYWBu?+9wTfHR}}qdn!hNM9RCWdBV-yj->57=n)C^yS3L?2+ql>wm4_( zY>L}=LqN}f*t^LmVY|-vq7a3ah`N_r(4kW4lNqAN3t>V?S#uJHoVG0Rkqw%>wluVj z%q=1^ky7Qw0`0K=!pb4C(5wj!YVI$ca%i7(V5~wzSjY*1thar~g|-f576!AesLIrJ zkDhA39gvQ+5msanCZ*!YK14Ks9(mbKHF?=%!d$(s!AApGjCzL@dd$`|d78`fCfR_R z4_YEA0!Z2K%wW^a(`Fxr(Ps(5n@cOaXKg4udJu9?a_b(>s)_~8gJw97F`9i_`;rGC zu}#>wzBUcR8+)dvlC(vh2%a_e)X*wKGqkH6yk6`im9p>^s2o zctg#eJk!R)W^l2#ZtFjysa06fr!u|Y)W9s(Z~*Y240!>gIHN^~(0%hYN5&vbtFvLv z7LVECsUxJsVq>v-Jg-IyNFB=cYE>9jbFnBGc>e%BIU0sw#M=L$@v1EN$ z7UZ8`Qq*jR79darex)$(GlJXVEgw7JsLyp2$yiVM%6Y{{I=T%V0LXdy{kvGC&6kRD zM-3-b!fr#fi@PUlJteKJ%Tc!>e3!uPEg93Gq@)C_yYy#t_h}VrI2}lJHy_q7F-+#F zxNHv-5DL&WEmr%~WYJx&I4J4tJj0_>2AY_BAI1}+X|eG2sz&eNNS5SohkoI|U`zrS z4JxI^|5929lx}WrlX&s?lJ*!8D=BrbE+QDp33m26-YcUKIiYwWf`zlwKI&B80hKfo zLH&SItZw=|ba_2f;7962hi5~0cF(;)9`MFj2MZu>>=W$K?8Jd?6&{U{6u!R+J2lSo zStKpPrMtxHeUJYJs5N@Uh2!a0qe)`{BcBA7?JCsNfCd(lOqMqcIv?hluCW+hL?lhPpPKdpGJi^ zqP8za2zS(JKU|K`IK3B$%^~y}h(GAgw&VG@a7tBM!``DUmwKKj8nQ?frn>RBgmO7s zL4Ez+D(eP)O*MC&^zEU|t|$M`gUpE?$^&T;0G$uPg5I;S?R}(2sVcr-NkbA zOX1}0QLi#%fr^=X`-KDkJJXlDXev`68aZ4-sI)FzYayUZi`@= zG747(ozZqE8TGOr#+PQt@>MCPF6a!v#uJd6+T9Gfdp4$ZxS)4m`Hh`Wz%gyOGPh88}Rl!ei z569Iy270HT{9C+S&w6{zCzAhz!-$9C$2)8741YsFSn@Wr2-+ol zFeV%_#SO=suqwh1SmpjvYZ02^`f6#ss#3#GAON|Wqu+KF5*S1F;ioBQqsMj>ZK-vm zyZJx-giec8j*-hfrG5UzjWR&V*dxe-F~@u{fU0TQC0>S*wwo_#n;nKW|p5UZTTzPxivyUaivHNGYkZJZCo>fn&ClE^E z34y#Ru!uIK_`{`&D$fyPG^nHN>CES%GA1AaR}FHTOr5Lo)BWgf!mrXH8uc~=l2+On z7x~F#lnleEA4x_Ec`SQSP)s`uk++jiRS|H^SgnFS6j?!|xA((4o+TB44`Ei(eD1VI zh$)19+NODA5A-9nY6CoyKy15&xe5n(vu0SLgSVAB0Q_v{qKrSzSw8y0TH>$}zdMc) zx3Y*N8n*!fd_KqLrYz;*xc%pt8hAU*iUq6@v*FxSz&3=9>nb$Ty?0~HsZf1oT~+k> zug=)9jh<6B@#k{Bz3{KgxJxes8`U#A&oeZVf6NXmX~CW#8Q$yXVY^A%paKrWMhL`H zeN{)8rXe`v{5D>&R)$jRq^a4q7rtNe1X7_US&NT>fBS9bHu9AdG!^tQNTDn@g18l2`MCeq)4(jil^Kp~`_dfSs6v=KFR+v= zt0QSiZ{QZ7NX%8@K(k~CWnZ3uP{5`U-$lS-rmv4#IfkjG`v0snFV0@J{&nkCRd>)Q|BM5&^Jj<{ zW0HdEX4uQ>grS)y-J+Y8+* zAZle~?1o=}C@Eck7)*nB1Je%{GqGRju&egfVUP1OHQH}MKkBFZxmQoiGLhtPR|Ev}cQ(z_8p$9W0UH%%=+bR2oxZP&@tVVR7*6Sl(6 zC&$Xy7jkH_;Hamrr)ShICz&i;!E!tnNgVK4kh?LM*R$LY_0`_DA;*E4Hc|}gWlHPc zxBm+?m=>Rj0rJ@mTv)2B*s}w?O$P9I_H#%iaPHhj4ju*>@$C*b)28&{V8FmYPz%-N`)=4}CN zjcq>SJu^{^)F@J(E_By>;^Cb(7z(+p7v3#^1noaM7{%Edjo8j0FG4-}v>n$n9e5g5 zP}a12`1N@@cZm(TC|%IGbnT*J)*bGJ+^z40(0aeKGxB@UHG(uovv!KmNW|lzILlqN zu_W8p*c8V(jT{^xYIw$ti2OL$3Q>2<+Wk3c#o#ahl zTJNptI70;vyMyTtG+Nf4hC6S>ZyDUdhOXSDn+8`|7i&y1$0p3%)rPAz&N2v={J&NKF5vwd0-6c)Q?M&d5x{4`=J|IpGG`(C8l&|aUTp7Ai8znyF#+ zh)*}(%B5}8!tddEEIa!K=n!&Wr2AuhbF5f6fM~s>Xw7tbaM zwDH-z2B0KDYU)&bbK;LWCbHhLgo=+%?Q_5d(DGj{&=mYdXmLL@!+sOyr$=e8 zmSZR4eo)We|LdPrsQWoH=JQhkJwcr1zG%hk_*a5fkml@FIBjRjl`#M#vurd)efLF4 zu#4wtWhWa4(zib*TW}nt?hGh^#(N`Pnvc>LgVqp$nEGXlgh7&91n&~cQ$xcud*2IG z8QP2Az7B`KxB2+CSCCmz#p#k)sOH^i$$xR);huHY%;b(ZtTgjwyG|++61eS67Mh^y zBx;v`W^s1}E{|AF3*TyxreTSjEx#NAIO{mD6y)f&iZ8MQC=+?VD%$mC`5Ibh!ZLxF z{zJ%Nqs#NoniYD9S=0$ae`O>y^GtxG!CsA=FjQu9h;FBI*F(g>x2Y?HY~QAEk_umL z;@R5T8ldK@MB|)4TJeCbgfDMB;g;{F+6<-P#fhGU%ZSzPyb=hE*ZJ^4su=2R4XkAB z@SIUfCSpehN5!w*8Es+97S|8k0gnxKODT`1asHkOzno^J3O>gty?ptyt=cdB$Xe!> z<8~_Po~uGqFobfUik7f6C%|$nowy$$egPxlJkQTIc`t^8nx>|v>0-4Uxrw4{Vu{dC zv21e-tpcr(zkwLg?z{fj`|GOz84Bx#{x9jbc;#l#goe|LF~~~4PB&@KSOc-_Z;yB4 zM1Boc+JYiYu=#Y@0^mit1KipmjpNpuWAx%|;s=cm`mx)q`O*fzz4S-;@{PpRKe-5>YIfH*0MuRFd)W(CgU+Lo@1e zy0fKEN0IEp+NQ>Rt8mMjJHYyx!Hl6YOw{}Be>1<>h6h;QncUL*?xUXgd?(o;60#wNgka#!Zx?0KsM znpW-4AVoQGVN?)|z{dai7Y+B!n0Mk^icDRZ)xy0!@7mq@$I-sH5^}lr@>{W|5^Hf= zY(Dwk>MX*@5th8GCet^J4FHgoN>RzT)f4XpWzQ`&nsX*4ECMnRpjA+5>iO2Kb z^5M8%5*YaS@L4;i zPx%gzG5VjMai0Nwul3!deRMN4jvAK6W~U33v$YBc@T6Iqy1&Clob0u3m>XKE-0>8z3vZ_ZXS0qWPJNG;#2Lnouva3A0_o5Y}n@+5m;>2GA4&?wF}S zOj%h4Br2Cj^>Y$j`qXYqkIJouC?VrLALRWBd5so&_0cdvq4w)ejSL74k#MIz6hIGQ zza4=0<;l>}&`oLyBJgj!8|UqT2=R36(4P+mAxzY>T0qc84%+Z@`yI!eo^2^|?76L` zur(p-1WIb{hhF$_ElXd?&Yxx3)YeBPN}<;9xdfVX>N3(n`~7=sCZX zp$|$pT4!I&e z!(?2)LP&y;mO|(Jo>laOpVj%P4mQi?d$VQTY_f>sbUcJQl($^(RfC_re&tE8{vdje z&d9p7lX|~c_1)9!?(4TLMZ|Ab!m~*2-W}pHg?^UL34*S?hVtj$hDkRei|32%7yGqHs_0lR(@zxNc(&($EKjgLrSW*Xowst?B%Z$zDA^kSWHQR7_{y2F-`aff_6~C!+=Vt0S?egWs(LhpS4jN-EqMWQ@-IjtvcB)1GjfG z_RStNU@~I_egTZsCaTm!8y?$r$%S%h_A<;%)z@(6AAmEP|NBx(wO;$@oDS2W;0mtU zShTgnefM$s`!y_(4`6fuoC>*d35PURrCgc-#mZ+oP5cq@;O;9wxhX(i$wPaVEA~r{ ziTVt&-OQHZH_Fr>R;e_f-`S6AiaQro+;KRIwP}6vRrsj&?BXlGW6ClEVmt=28;@t4 zZ}RJ?c|U8QUXRmzRAw@Ysl1BAn$R3iyYBWtU0fh#Ho3l7>-Wl!s~OkFvhF+JDtmSh z{llF$>NEVYKgRsSpbZLUaH0+|4Ry+?7uJplK6-H=TR2Z$0+uUsHl{`b?ImeO>+XCb zy#*iv2oD3gxc=n8Cl{F_nCVYpnDyC-HMp6*i_2U!h*Z4LN@}4|0dr#~P6#)$kyrr)P z15%)*^XRPe*NqTq#(hVF3EH_Hp-DpgHn(w+il3p@_)(I#U-YXtdt?=X!O3S)y=zB) zb&i}t&)w!;5;xCH5dwuP3>CZUeguDeSnSVzC~rE4(iyCEyt3kpbLz zIK9|Pqev3F68?^`B=#n+BN5;A8tN-ab@38S0iTI9o!keJ-Z! zHGj-&jy2AimqPnZ-^r;;=AtJfI@s+ZSsR?|GA5R4Vrp7gUbf?~bB(0betXn%Ec%V` zDvQJrqCuzdRe5vNjn$zcMvQX2#31qEw%!y~@))oqiueL;OK`1n0RT(=#?g8rMfzT#jTA+}I|;NtBq+;%=H@=;TBW5LecoDo3Q#jGxF&AR0Pa`g1{^o!pl zhMt?;@#DZElTqW*v0kUuv+5wfkJ=xS-`r>tO`0mgziAAz-@g+fzp20Ty=&$3?QZrN zVsG%&5I4R%-yV5+cMJsebr#C(eB|jS8*;H){F@L+3P1nxD`=%dJ*FP&e=pQJz}ls}FRslU0$2@G;3!ZFhqLsfXmFc1WvAEw>VmFb#p9u( z{jV?R#uurehYr93 zy}B;UN#3FYJo`yv3h|!vGSeT=+M~Fevql;oD(xJFE+qc~uLOMPQ=js$ZVWKJ zvDbQg#(fNOIcsNkbIB%e;-CgJ@xoT6^L)bCb`T4b4>%1=G=ZN@3 z*kq!?R`NoQF)LwB;e|=Ko5V9NwAevlE|DbL#O*MxW}59h)#>NMju?NI_ew#lNF{=} zzJMqnrz|b!z2TE5KhE8O;r^@u_!D!-h2cIwD#_ywUrk1Z{7Q{4LoNp^^oLEzu;y9y9L)D`N(*jYuRC>?=>O?= z>~k<fp%8|Yny6sH<^wR@EJ~^qTc&DRxl5caN%YS7=q~FtYpdCp zKtnG!Ji^1sW$n{gPovSGoTs8Yr91+g-|Z$cwV8mQ0I6=#8I?J$M}pY?g2xT?u}Cmx z?km8Bqb|>wk4ZVnP(M{B9w9iRjU(FZfv$hA7`z=!ll7Y#Q_Por+JDaqg7b*i}K67)bG9pFJ?IX$ot7}4g3$D7BO}B=+S;BisOfPIY{5x9bNI*wG| ziWZE|(ZCx!`U&^}y?f zGfgO2=bu7KN<=*DT7~4yctnJ(c9EXCh?KDCfD#voo&~n*XmDHlt!|+6Ya<4)xVqiGA!DgZ!LXHo&j{e5Z=oyPQ~JRo0xDf z%I(*0L2r7qn39v9b8lvb(f&p3e9tCK{CohO4Sl?ck)xDE2bvWq=WpCLHq_wGNx{e4XKSBr?xE%ZMI{$I=5R<}NaVBqbzm)w5S);iGZWJ{8mgi&3^l$+G?P$P2bot>{62G5j9W} z4_e&BD2bQ_|1Xm7ifsyHB}++Qq*{U^605N(tVKx}WK%keRT7l7mw-pm6+5;@SU2CV zZmT6-@oUYZ`cLyhEx3CJ8|u}zZ6h{UQn4-uy}o`XBMx5tI))Rb-gBQ)+s+&KiO8*R zG1bd{dEngSU5@yCDAT!++3Prm+W^;$!K+}HIH18YA_Fk7UAO96rC7+R$kEvuLdHg0 zufL`g&IWcSvM5AD9$Ai4O9ly$Z#`*AK9mH`M$BR@zS#R?g?f!5ul>vzmULbD{MnUP zJRTV#0TIJNVzuR;cht_U|(uqf}fn`r$no_8uDrMpt}BSr@TX%WAFC15pU|)|E|eYt>t{srA0<| zi<*!~_G#??WzSWC*d@#~-uKzI$KkoWGDbOxbWb9W57hqlZpf?`Er20GS^Zh4P^9i32eF{3Cf);blsc zOPQIb7DTe{>t~)W#ok5Vu~)GtIhki~-{fjVvQGr6#QkzO(HRq=nUZg-Xvz}!(mU5M~*9{dC za7&S;8q8&9n1A_*DG$ImHse0s+*J!8ao0L;+MqAp-`)FcQGk@F`v3oCwap$AR6l#* z*4dCzkqmiA@W*TI?ZD!A{W6)<#_#R@SW)(2zZqro6O(%}Bm_1_8KYCwOY zd>cN{S5T403G5{zKIc+$#^e|7)Rtts$840dpoR?>{hd`4xSWDqN}Ib18O%!UWLA6D zS9)PLi0%)0psRY(9OyTfcN&g%y6B)67-Fk{*RP2`&)TsbkW1{YY;H`w`o4vPF|VvO z8-;vE+rV=et(@U&>Y;bziTBe_EXXf=T(K;ZykZ})?a%q zzFGHchL`Q^4gYy7N+Y z`Yq8uy@pn|qFDxE@&|kd8I@`jL?zJ#H!byxk}q404F9Zbd=HV>d|T6OTC*^j)crCy z@j_}iK?44o!itDN^3|j^K3nZb@I^W0_~mD=D=JlIKK@xuu!O4%M z-%<*sT&$Z~tf{5?x{OV+&`ncBbLE}^pha^hV6w9D&}K7MvPnoxk4|tP)WyTh*w6Uq zv%p45F&7_t+%IiJ@`&t!L5)=J%J>BkY?A@8h0zOTorOU9UC__b&#ox`pvSgK1wgtt zN4A!KI1-m~va2b9L>V)S44$7ETj-s;i7pxI&j-)@g}e6ubuv;8N71%Gl6Qz+suQUa z+fXR)y8bd6F(qz>-V}9EHhjXtE6=DG1NbljCge5GkM;C_`>q7HQMlYfmFSn~%tJzk zg#oq(tKx#GuOgaO3rhx8hXtxY2{vSD$02e`1a(6vsq+d+ieoIy`ba#F;>>3_Dh6f# z`E4loGM)_Y=U!7J35H+mZY3FWS^MtMv-iV){pPgO-iZF_vHRL6rKDfY_LOJo#Hz(b zuOIWc?|eDjr#5w2(V_TYcpohMDmqu%<llW}Xcf_qqG-Z-5P`{43P@bi(dgXNe`Fc)Q&CqwNnuN2%u_rS%Ti)TbHz=lY6XJc??XsKi z@+j^DLk4Rl*HOA=rH}bXhNPgdTx4uAh0`b;k3_bmR>kJW3U3Hy7q#0TQu5O ze0A_5bh0KoT8w6pD06k;zh|nDZZXB~%sDr1>+NwW#nG>;X%OmH+$H(8e`czZ&TCC$ zXwmF_YYcxnh0Nj|%G*ZK@>@$TG+PN^@>x9V&;@bK%Q- zBhJ=YBbUXi=ReQ9F8oNJ^TQ{j4wt3gj4m;Z zoPRR2C_p$olmiT~2=M1WJGev7-=THk>)HgDk|}ZadkigjKcB#X>%zYt^L-rM*#pZl z9$}gLZ$2Oz?w2<3K0;?B>-|@g-$S2|hjtWU8WY<1FfM5@!6ZM$Dda^Pi#mWXrk?!- zaDFL~mZ8=5x98BgIP)O!=C9(gE7ew<$lulQy0E+V&zI0)5!R$Lzwbqg!sp)8j_O`wa7$bXT&uf<;h=PQ z{gjYk+vI6`H;cTWG0S_q1@lw2a!y#}S z7VM=YuJCyL;E^R%u5=)lO-Bb7h*RN_2RHF&^>OD*1f6xe}O-%A+CcdJI z=M7HpRJMr+m^MVH2L;zlrg`n=hB16dCet(>!mzuB&&8Fu90}j{i9bpLaMU7vPyB}$ z4@mA_JfWc%$LyMhl&w4u>CWz6@qH550j6yc-k4;8GJ)Y9?!9!iftDJV3B0(kNMB|> z!L3``g;1_U109dsyzWq^pSbMOPSg2MC}IyzOm9z6?8x$dKi1j|uD|S!f{OV}4smuI z$oZmZ&;jGy<8{Z=^R+?!YYC%9gyO&=JaTnBjG&TFZ>g7bVddMfEWrQ+9P z9P%Qz1@&qbQn*~?uHnebW}PUW0vh%2zt0 zuazFaMK^etyq?4!uN3R<8`)V~voKJP*aJd&GxW5J&2FqCIpR5gV#rB8j79&Z%E9@k z3_ePbr^;2y`bHw~Q`V{|4v@0dm-EPZFQ!qY4tG}kOLag(KI z)VfLrsiI9c1Dih&be3p3^^pZ6%-0XoRng3BF`2|$5i2Ynd$ftTE z`{%b$s(kcGkRMs0zpLh%LK{bWJuQU1GQ+JoxMYOr>G!b}Xp`3uC=WZI6T6kX`NK$k z)W7#0#wij5&ho`rdANGjeDZs4Z@L(i8#_g;evl+P?L7#w<}=5YRmoOLnA+ATV50t` zmZ@}D?5Ap1JY2Y)NIXT&>??U_0g+4XcwlI2K5-vZ77rV&zMG)3r#402!$Nz*Q?G7e zjdWgqxXYp1@_JpA)eRdN`Ec!}Il&5EY>TKoaJgCjmSrb;-Kt};v|O(`ifWKGjHN5y zgNmC~JcUuY(xdx2c5HmZs6L|W9_-o=N0Q+eOdywcuEH?o`56u7yi=5TcX{b;j0Ru2 z3aK9a#7GDQOpz%v=yd>0pH&*D$s@6-%Ia!tN=MXoS3m!T@_Ky}+yIt1_*qC2kJliV z2<*O6R6xq7|Ad&ab$N49GRV?0SN?!O5iMaqPDY6YAz&&h*6 zx`zs}oEh5$dW?{T2Z<|${U5sCvMs6yZri0pq(PdYTj?Aaxy zZ1)!%+n#~dQ$Uf>;j=tSVC$HAHuEYmU%hc7Qi&&!C((-!tGAR@e<#>-_&DrOzhCw8 zT;!SDoxGmX$#;=R&;B#)QvpzLq2ypOUi2?t>1VEi>1|~&Nd@T`Hy(lzn^K`3${JwD zbBmev^EW+XvI#c_6+O4CEea9um-S@X&fPNUCfNbvt7mWzsjG+EitF3lGLgnS$;*932nW)ZPo+82BHo@ z7AT`@Ae|POE%>Pm)23fZW`NNg79|F3vnxXQ$N&f@0eiM6z%YuJgT&x#1L#s&izAt5 z$O=S^`R$Z-3`_7v46vw>s6zfOCua4olQquE3AU02>Dj_fewaN=(@j=+iZULcVPIvw z5tRY6Y%a96kgR8{#lR$J*Hu-O=)rg4EJ^%mnl>CrdqJq)rOa3r`yEAGFy@1(uIfVVDy zFJm6?#48e|aUtmktf0uG-+WzpS?qKMCMI(gH5Yw&^9EMG>y0LvJbLg#vdK{%b?;bEY)7$Koeh*?S`YvTq;ZdSt)udWXgwjbJ%2Qo83_<297f|M@)Y;CZ4} zDhJ5v5-5whlepXB0ho);;0v-!kQRT_Xj|=>;_}Zmbf4iUUj>N6II5K$vz2*#yM4EA$!Vd+ViosCW|{>w%CJlVsdLKXY--w~wDylrK)pve`+|D(Ey3Y{* za9=*nC$oInJT`vj``8+WNYyTWy=0BPd>SCWoH=p$#5>{5Jk7km;9)X?p+GT!GaQ0< zRYF#LcJQ0JyQb-5aPaUIWw*uWht?M-W!KreDb0WGlNX}znDHRi><3<1KkhN9TgML0 z-k&@&fkxZnxTam>q`shDsbpGd(hQxg{_|m6!H25aoE)vrjV?9iXE#^`P*n^cziNy? zSY&>fofoar5Ps(M@aI>#qEpY#=ogiEkf-LtnM&?LqiIi|Cn*W>VUPd2kq2>VI@u-< zu0b!Zn}7d(<&|QpYr^)+fTbb!|9BBO|7G&6MQmq^LeK0aA29~e7r(ez5sMuh(D^b| z2BTe#^46#o(Qm;V!H)jsU}pq@3x&92s7P`~hWaCLos|2Y?F!*2;-S%MKww5^z|s(b zPHA3V@PFGxL65iV%!IoZyi7T zSgYF99}_z+Ha~+yx_nh>$FBvoZyYwyiLcjH?>vya_T!`L1< zEdRQ&T?!rQVG|TQm4ILU-*2HvDBeHkU>-QH8Fb7i`Lw2uw2oEwvkgOe5YL^%Y_FG> z5RpD^M{XpCzjTzh5%4U}lR`q!WuLzEec@<^yv#C}v6-FH8*O9|+<=zT3;cXhI+RIhLmx)*MR93(qAWL@k*$wO(bG|HBrG=H>vEXK?|N!iB)Rn zZm*hkwow#sBLXu^k4GeNhLd1RB=T5WM7&)d(d$i6z-oV*W%3;uzunTK9CQhgkosOm zr}qTot;q5C-%E1lPQ+Ita)$50&31`4F9He6WT6=;x?9b=jnR_$$@1S zHkeStc9Y4Gex)h)$1{@mRxlh7f>N6o7I?5~8LWjbJl4HUoMZE$&3#_1Vng?C#_xr5 zZU(zk0xBMWpj2Qz?V+I}#3*k#N}q1!2|Qz|6QW{`*(g4IelquM1!LumGyD7 zj)?Q$Sdp#d+rP^TIiaV`{R}Fu+}WE+ zJ6hArSbs~Z_~nC3CeKTrd3XIlu)I}ZCr2Ce6AOYsTo=h^t757}Da-1MJ}G4n?gVr; zpiPxq>Cem*&6vkOjMm<3_{Td_6jdvd0&RV=-Jc%~Era8CJz6}cTbUK``i|D|>qmp} zLg@P~`LcSO{)F6w8d$sCB-&Egirb8~dIY^KclfFeeUnec#`;%poh`^e2}iNAxITZ<4<8y1}(e{6Rp- zSNjrn(rEt9+YsDJSH(D$I)9FMX@BcUUMWA&AJVCc&zyaMPDXktcRVT2)fHA-bkXOZ zu{IR0XM;GD|A2R5HK;WQi9{|lRtjN!XQ-p0x^@aV%sj)s*oL0YtJ19I+V%$zO#+{N zD6!**-sh9I&o7H90~S?O*>vaixl_*Mcqn^l^Bf7x)Y%iB=^a_994dg*~@u_cGQ*rE2W zqnV|lMzs%Biml@kwx`8Wahl0fX+QjC`&9Grw7Ot_>*q*wo>cggBx3u~cPE+ey`Z1& z78^`c>n_N`dB%=`%Hr4tJrB%-WTFZukyv~sk+=gGSs(}K9Yx!1wN9@n?BoDME6p&P z8?Hl_OGciN&d{*-h;^=?>v}|*Ji~0H+>OEOdmFQ?V4yv^m`J?mKO7~I{$$BS*+gaV zCFc{vd1gPIcKkF0yi%&BPuHEh_Z>--gKm($F;t6+vOJr9dXAcC@sO^vmd0|Z&r|gfkus&Zv!Vz{wM*8#9MHj;0O3YrsW2SR@L(*Xi_Fofn7M+=GMU2#@P$Ef^R#Z zCLF;49qR9n+MgZ0bmiE*O6LG=#_5u-0>_op_%&mL^Tb?HYO_kk2% z>FKH-EXskd7PF2apmgZ{gw!C&NN0OM0`jW8gyXo1kd2a1*0epNFPlDNPT9dXDgB`hnT~K-P=K|F_tYWXNmuuYSAaHtXFo ztI)Fv5o3YS&9L-my}3RJP`mG@*)-_YcdQFMNl^Yx!yu86V1}> z@)@E-5&Qgbl{41qA5FD1oJ8pu`;=(fLS97N_H^^72hc%?B$=Ly3t62{#PUB%&>Ty9 zzEcSd15vTfunzl1zKS?svd*0bGIF%+Npv^O$C#75;5Bn;pUCIEaDf*qTCNHc5k zX+%3p2DPpD|LRWv2~dGFU&r44xPk@;Vd^2Bg9)=_(**;xlzwa8Ej>2C!gp^<`}lbn zV3>Nwp06Gr8e4jH5{Zi7y)OwF#}*X*vTp9D=Jo=qzqRvP&y6(N4ycp4DrA+XhB;12 z1~Ab}G|d*fE{30#c$FAvUAXMNB3q1WE~ySNUibPZvZK#nt2#_^{j@wx4C@WYV(DDd z+Dbqx9s@!DH;a90h2jt5DTyiw4M1#AbXM#AvW0h#Ggj!9k$=qkZ(W<%x z|7=UA>^nTvHZ*uUeyCU@!wt=H6PbuFp^a2JM1Nu^IhrByRvrxdQYc6tFHb#!Yg?2m zkI=#rQ!v14PRwy>i}}pQDfWOr{%r5$aQ5+LxsfT?mR%dD(UHd3>XLsLK+#$#OUlK5kgWTDin|v-%*fLoB>|_ZqsRWr zIvf>4_QLd=9Ocrn?ICWq?QHgH1lG4T&WstY5Y{@cv}d^1bIDo0?Yh1yR29pMadybL-;}+{%wCuZZxf(punZ_NT@W}*=*J*b| zLS!yr!;&{|3s?kiIA2<_N!+h&_jisM+bmGw6V(VuH7kR)xX0wcb_76M5{KQ5NzImz zfEiIYK{o$%Qd{lA$?}tG{z^r1E0y6WvXDu%^|s1k0=GR;_#rVVzPucl>1vJ_-?2*O z`i`L1tNbH6j7B?=cm_*FiB4jSzt5R02O3Qr+@*U&_t+)r5U)xKXhs?@wyGOBtGZ%V zxVKK3H{*_QD{(6&O|~!s(?nSl|H-Kl#F4WNS9D@M3`i9ITr!sIv>1>6!6_8d0H$9# zledJW!C(LByqRW z{Au4==IW|rv;cYJV#LC`;>lJ-Ypl#O9aDBc+VrYt0sRkc(nw=qmGt<&8Zdnu(fUPH>;*Y@<=d`rBInil*KztI!f;Zy;Gd5o4+ z^+bB_uVOYXt%y}|J`#MuXmsQgOHML8J_Czv>Xi1 zT-z!r4b(h<3$$;8vW0I7aN%^qJ0lHI6DUig+#`?*8v@R_mM!-5uZle`l4h}opz7~J z>ii`_%O3Y%&QGL~X!wO-$`uI5qvq0DZUk)kNE&|d!Up#syCZ!gp4{h3kZ|!e=80wS z5|wd>z?P27Sh-l`%>e^mq@3hK@n$>yxl@y*s}rjvp2Q zDXVs8^k2^D%ejx(J=znSN^4ebBDVPuH6d)4O9U?#I_Z(fxdbRW zRtR9yFz+HrGyfMA@zI?O){*8r5~ae=SBNQn zJJFG6lH#Or`3$|gkO(e^b3)(%@)zF3-|qi?+paq=iattD+{FbBcN)Kod1cgvwsDR@ zoq^G8!o*rgCD+33*6?Ta-NgpWyPS}+2|JlD-4o!pus`A$fzE`)uLo_>M}dFG@%B-^ zBeZ3)Z;uep7}?HB{eJn7U5~&1Q{x?71y!V>Flt&$--!($S;!XZs;?t`ygZfoa#lAh z3l)&%$$wE;8FZds*`Qq_is?6X&@CO<-B3kaR!|xWZT;v{(ctD1-4MMOYjblWUOcRn zj2$6>$JN#VaZL}Ac8%K%9GtW@lGS|dR$76D!vfh3_)b2@hzz=+Su-w-P?P2Tf-+j$ zA@dEyPrT1M2>o0=M}nQO->AqR7$Pd`fu9`d(^yKVI9Zh+QWLELe=1S#KbEdv*XusT z*!2F~XdPfsF^>3A@2IH7y*?JbbmBTRK6^`c9t&oAU{b1kP$Z5Jgo=MDuAuM!B3R*$ za*71x(a73#^h%Aks8jI#_dA`>WZeXU+wsbvX=;U7>MqSVM1kEE{D$|`77sjv66{#olz=?r&rm`{oR}|(a`s=%X&;!!|MZ%fa z(IPW^(FHCRx9l?WASeLeP_qF|e>rL0B1(U1zWs*k)GR1iOl}bXY2PR)G%Anp0cop5 zn1&aqWF7N(g|P*Fm;#1omCSR1F^s|VI#}c*8B9sHRU1|6liE7D#iw z1bP)OG;^fi7xaY$$CjB~K7>P)u z(U){jX{FiaawD5`3XCY_V1%Fn?qDn+$QhGSlI6JKZ1U9=7K%NKiR&97pFWVI?)Y1h z$;HVDWXkpdi?j&XC)XbiE#bSYzBxxHqh{e^p{-SCGVd>ucT&RAPQlzD@h@(9;KzrN zz(nJk%*c)~baFd94>|ns4G=DvH#K88wSnYhWNe1b%%E=_+$X7?z)D^DRQH!}2(?!7 z<(-7fqa{|IGWo^k$AA5ac*DsHyU$EaHGGVXW`SHAxo`ACkMH$}_J1z|kw0=I>VNIS z|M3y;ga8JtLiZl#9bH~%-M1jz&aqZ+C#B!YxvB$K*CH&tR4Ckr%LV!JZsbMRciv-X zh7PFWA$?_|sRinjWzE`poHT00S@rz)H_>LQD!N~~%3nxS$CO;>Dfia=vb{E_?egdy zQiV(1&h--9UKkB&meN9q7`*9i79^rD-Yobb=IciPdHeHGySv0) zQdfEvJ%|^4 zwf>I7;cKGDWuNRjC78kNu)qRV^B?kyB#KCsaR|r!B7A^JiWvhZ*g892$jMimLGdXm z(p8SfnuD9;Qo#7?qwRg~4?a+<->N!Ac_m*j_=rwk zdfQEu%V1i(@yD733I=y#Lf(tmlr5G@(fxj&%mqB5cevI*!=G11<9C}$B1jTR3$tj? ze;ym`wv@`WaqE4RNqH9FEx9Uth;Ds8>kM|}eBlyUI1<&90ZG>ixFBr5+8VOCOj@zI zs6Q+7&@?TD>f%PV0&|r1au7b-a)*qew-Xl0r}am2e9w@4+uU2$!S9AIONaBzFoU7P z%}qjlq_q5+G4;ej%*!Koj{Z8AqIE{QR`*jE7Z?5}iwT$mqVJX?~`;%<$ z|C}^_k~0|HUq}_Y_1@ZJGwc@{1lhim6j@TI8$?4VU1#=|_c5NwS<8@lB1ZOmtn-#S zSh#Odr^`CVNj1M(SY;{AUL*fvDU$G?actskk;n;End6vz>-}lNa;Z;jj9NjZZ1L+8 zMVYegSc>ItwPfNtYXHZJSgM))s?fyGIJGn>R&i-y75@oD@>TjIv)LtMQ)0QJp25+# zhj#~1uPC<_t#|Np8Z;n{RugBx+#M54i2fWA%gk0nZP!y&AJgs^J^uj?q`cZ2XrS7* zB7iQ-Wqb)42sF?g_2ae+Z^$LBNT07Z>2$g1w`OwGzjgYLAh<@y2CAm+byx9N2;|df zbGDbuQE6uOlV{WE$imn*Kg2F-2{?$@08Xea;DiF!N)+T$9xnWUI}3aQ?0737O6k6< z1e9ZW28rzti%J`j1DiRXr!>84` zy{MU-Ztt_@BCGpk>?xhy1hlG+Gau2wF}G|fkFA{Y$~~!vR>IvrE72opM`h*n1Y+zv zhP@Z-OQgSCQ6%&CfA2a@Ceb;q?RZiHzr9@P(JtwFZ|ocEX_k##jqv=NM2vDOcpyOw z3p)Fiq9P^dDR`KQU{iqnreI@wf=}x0A0X=)(iAR6vKk<~{`tD0o%%3s!PF#+^+Nn~ zHC9%~;&%i_AEha8kf}vJJ!b_0#@Spz);}|o@mcecd(1(17S-l zBK$+<%!#IEOZ9#IaY4(cr_gQCf~o70a_Q>K-uZ^XpvTE?)WS`f^75YVkvbt{sLF%M zljyC~I}6DKufqymgTR2luYa8a{?qxGmL`YhxARQEnY=(<)CAq%Osj&77q{^^L7@_8 zrS~D2xKA>$b*^H<#2|#7>zXEtW?=8IcP%#4EH`7O4`d3kskj+gLkN@Nz`(#1;7!W9 z@~MU@N|FsrmS%f>BcV7#Z7r?vcZZdIR15cNbFn&>P7!6J>Ug@0{)#aerU&5N(J3h@ zN2n9!o?Y+BK5}CbCTJWXA%SZG%@!;84gykAh6REl!4@^e0E!iFX`q?BG33T`sa*U~ zExapD05pu}*6(h7CT?{Y+LC2EWHN+HuvWJy_juhn#!5!d(q)eL5f~ES56D^dLsdp? zZ(!w20p_OY|6;shIM+bTX?FeLQk+)6ELiD{h$C&s*`;Th+2k(*U7R9y5+d_6Vwv*< z626{?8~Y6YZL@+Q79e9~s-|>FPh6};j7?%pqVvVncZc$-Qy3phW^o9Rpy(B}ocQGU zJx7rLv1VOY{SjTv)^xDi+Lgt{cP*7IkY!Qd>+tN*ydI}jsnsVsDk?a}K+|)sL^Cs? zy~pFn{7@VNub(*nEe2j05Rgij6(Ox&%a8On_U~Ew(;@cr=TCgpT0+$XLnHIHBL8cm zkpyD&ZPwKE^fAx|TDd5|-Z=7!W2=4Da!Pw2jp$t9WM>z(pke%p`tN4?FS5rlznx4R z@L%fcf8$rzR%VPAg6n5gBgQ?Rl8;31;JK6VI9P|RlhV=f5@}sFB+lj*7l>a`r2^N} z$O}Xj`HPxv%NBR0i@+!4y%z7K+7051E&OFKe=h3I2Z2kds;GUFNP_?T#>ZgE5^WOp zTqXKdJ=?&;s`YKN%vNz!kao9`Ky7^^OYwqQ&%Z*J>W%hJRGhF8O^otrd)!FA#grr7 zbw@QQD|4lXmUWlddh>yH^VRn;B=yr%ffTkrgj{1EC(NM`Q)?F+-MT*;xRx@FZ4d{S zdJUo>HemWX`83Qrj-)@=#^Qp2)OAi^^bwE#_SB@;vps67r@S9c9#5+b)>r`a2pc(D z$akt4l}rQtCA-8Bx#un3xp^CtKv?Hh#-5UFH88O2fQP{XwA{Zz7o$m|_M@($Q2eGK zs34*5Cyv#t)1JQ_lon+|J;GP{!yjCN2PNjN|L76UXxryl@RnAf5jD7^h}CA7pFXvI zzxA2{O0~HiCrM@db)V5jST=`8+^c9+)}wHuhHWM?Gl|OrZ^d|$O(}79K#>{r<_1mk z2@P4Eem{V*P_VAWl>lkb>})&DhuX`g!BZz}lh8)hAr49_A(1ai^A9!r@8AjeXenFX z03l?>7HRH?>qWk*C3z1t^RnQ~_9-F9E|LcPX@%f|BcF4!M$QlX?a!4VmYGgFDb~L< zA>n*oZti=Gp-i@N9$RS(NK3PcXstXtiMB$=v`nP|fQJv1v5sDX)0_3T`;P^Q3Vydu zTPgtS)y~>34Me{_H&~}AZNwzxk!2v2jKj0Dn|o2M1Vvi$c2G1 zELFu2wGh>RlU!$>&D6&<7}NH0yPxa5_NZ@n)wpuOrJBcElA^-a=OoM@eeTVj5)A0l z^!=B!`!Cx+@@d{4fjl10YNSSz_arqzx1oXe*KefE2kB|=M(I4(RmuO({%p}5tUoKa z)C5^0N-lwC{RS4rfh?#ql{nJX(NG~ciP{@>tHKb}S+fsiNXJhiCe0@;`Xa$-k#$5G ztrmSx;jR*ZU1xk=JQAg4YrlMEtdIbe5Ti#;RhllAEmP&ub&A{nUIk&v`xBmEw=)28 z6vh`jgLC*~?{L(!f5y4Wz>j!jvdwDjh~BwheFLlT2si)1fga@7Yzs~!=zP~KoCbBGYH?eAXa3G? zsGS+g@$^9J`>kiOerag%Vz!VkVtD(a`DKAWJ9rGcfR5dJI-*L0R~AcU=t-r4Hz+JF z?B;3n&WTlMWR~Ev$t!TvEyV}2uQ$VC_sa?OGu~a>in?0Cr$}oqlz?0tap{|p%zS`W z+;(c5H@{Q^r-lpvfV^3tDO^L>C;K@e^Y{~|uEh9FW=OM+GGyBgNHA%9SVJhF;yHk7 zW3C2M8!)dm!pdczbA|qQ2MzvU77${$o{}y#({f%j_Fd`@-o-1BfIA1|8t)bTD@Lu_ zYE5bvnC%+X{ZrqirqO{)J^oonMswA1jBO#@;E(D=`V^%)FY zS8Gb6?Hmz8LyG)-8r|s;NyJUkO(s5Y;GSs}A`9Qg_Uu2z#`~r58utmaC$JoO9`E{5 zGlVP3Iw1{!@Ud(wQUX+r2o1<~N9$VV&K=qNk2MileTT)Pg;WtPemaO$V45fa0f7dB zeRVqdw_a)fY3Lz$oY1OXK381N=G}YBi#pj!JnZTApSm*5o%QcsC@p#M(5&sYON^P+ z^4$7;W#5{FK!gxZZQMJp@4oO1KGnOD6q{KGXIp9OBlc@W{A&x6*5vX4l@Uszl&hFV z^bsO7l>9u6k+?27iRL-5Vqi3Q`4nj`)q>f#Wyc+LI#*2Pw0`H+zi4F4)7q{QfN86` z)3H-bv}X}u&WJYuwg;{FG_bCcKbKh1=V-4~V#&MY&5N44q${7tTb9Jjf2*Bty13o; zjfuB7Cme3LQPn7-G8T{uSk9BQM%;uKiA##ywC`nSz^Koub!sELo2Dfp(U^W#5Q}`D zU0TS9T>6k5*4|0=jJZHGeWQWqDj!gwONCmpbrWY3M`Ganq_N z4{T=$n%gr3@9l>Nvl2|2AjO%7X8UwvgVO4|_BR2Jzfy^c;{Ho)nR-bb0Pt4GB`~ma z6f`b4)agH`qnauPgtoq&^-DeY>Ewo8kg~^ zIG^cD#7Ufjec%@b`Dfb$rj`r3=zU?mOXxNp^l%2c0gS~6A8Q2jAf%7|Xz0J`aRn+E zG_sXeizte0zXyWBwid$nIH#*Uk~KCu8ZKwa3B?t7)c^h#|L+qlXYft_-#r)j#n2B% zarkQ`?NPm%?ReTR@6}%@424l0B|2I~|!po-AGXP3!-HhfX zdWkiDkL_XcXQHKt&J3ZFGTU*|KE_`E&7T`WI8EXeBCW{Ph^Y1vTc22?j)USMg)BV* zjG0F6#-KY}h*f*oLjM&MXKmoH7+ZUq6Lj-`Q<=<$qtJrZ`+G3EKT1o1SuXD;SvLIw zX{Sqm;gTle{@S}y({5%>js+#tHastiY@U60e{Ap#94NQh*?_YqgBX7>eF3S`{@YUM zmsU!wULD!Mg~mDVu@#Qbq>T)7Sr;@aHIZN4p-3ntdGq#))ZG%5G?3J`e>n6%KL+3jRJ1g!}7kw><&4q{5dmn{?ahZQaT7zggnx-~XM2*9kr*`jx zh2VHoHy@J9wo_j;dh7dFEG5aoFXzeH3QEd~C4BmPTVIk#4upKb1G#MClw+cBd}^|8 z2ivTy?d5Oq+^13L=&Z)C zA4~X(<^fM|e9o6*0*1kzNGfav`Kg($?MQRXX!>fEbJBYdaus>DZyi*6t{>KR>{BoS z%PYat5(><5kc6G9@NgScxJ(n2~)+A8<4{ghS`m|HR-Y!Ndl8^ec9M61Cvtxo`X%SDg!$A6CDZ8gewkbyEx;XeiEARPfA>BDF%0DTzs=0U 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νad6HUi$zJWUmt!M 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%0D{tdQh@J`E>@96(#Fbm+Mo685HwTlL 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≥F|hqvU941H`tAAb1yT~FKXykdEUIaF{ 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