From 5431a661ec0fd2385eea6aeaba38ba76b4e95718 Mon Sep 17 00:00:00 2001 From: Vyacheslav Artemyev Date: Wed, 11 Jun 2025 14:22:59 +0300 Subject: [PATCH 01/10] add rag to every step --- app/agents/agent.py | 45 +++++++++++++++++++++++++++++- app/agents/roles/reviewer_agent.py | 35 +++++------------------ main.py | 6 ++-- 3 files changed, 54 insertions(+), 32 deletions(-) diff --git a/app/agents/agent.py b/app/agents/agent.py index e0281c3..92cb617 100644 --- a/app/agents/agent.py +++ b/app/agents/agent.py @@ -10,6 +10,8 @@ from dotenv import load_dotenv import inspect +from app.rag.retriever import KnowledgeRetriever + # Новый, улучшенный системный промпт, превращающий агента в программиста. SYSTEM_PROMPT = """ Ты — автономный AI-агент, способный выполнять сложные задачи, используя доступные инструменты. @@ -55,6 +57,7 @@ def __init__( api_key: str, model: str = "o4-mini", max_iterations: int = 10, + use_rag: bool = False, ): self.name = name self.role = role @@ -67,6 +70,19 @@ def __init__( self.max_iterations = max_iterations self.system_prompt = "Ты — универсальный AI-ассистент." + self.use_rag = use_rag + self.retriever: Optional[KnowledgeRetriever] = None + if self.use_rag: + try: + self.retriever = KnowledgeRetriever() + except FileNotFoundError as e: + logging.warning( + f"Agent '{self.name}' was configured to use RAG, " + f"but the knowledge base is not found. RAG will be disabled. " + f"Error: {e}" + ) + self.use_rag = False + def add_tool(self, tool_func: Callable, tool_definition: Dict[str, Any]): """Добавляет инструмент и его определение.""" tool_name = tool_func.__name__ @@ -79,6 +95,28 @@ def get_openai_tools(self) -> Optional[List[Dict[str, Any]]]: return None return self.tool_definitions + def _enrich_with_knowledge(self, query: str, top_k: int = 3) -> str: + """Enriches a query with context from the knowledge base if RAG is enabled.""" + if not self.use_rag or not self.retriever: + return "" + + logging.info(f"Agent '{self.name}' is retrieving knowledge for query: '{query[:100]}...'") + retrieved_knowledge = self.retriever.retrieve(query=query, top_k=top_k) + + if not retrieved_knowledge: + logging.info("No specific internal standards found for this query.") + return "" + + formatted_knowledge = "\n\n---\n\n".join( + [f"Source: {chunk['source']}\n\n{chunk['text']}" for chunk in retrieved_knowledge] + ) + knowledge_context = ( + "Before you begin, consult these internal standards and best practices:" + f"\n\n--- RELEVANT KNOWLEDGE ---\n{formatted_knowledge}\n--------------------------\n" + ) + logging.info(f"Knowledge context added for agent '{self.name}'.") + return knowledge_context + def _execute_tool(self, tool_name: str, tool_args: Dict[str, Any]) -> Any: """Выполняет указанный инструмент с аргументами.""" if tool_name in self.tools: @@ -126,9 +164,14 @@ def execute_task(self, briefing: str) -> str: """ logging.info(f"Агент {self.name} получил задачу.") + knowledge_context = self._enrich_with_knowledge(query=briefing) + # Системный промпт определяет "личность" агента, а брифинг - контекст задачи. + # Контекст из базы знаний добавляется в начало системного промпта. + final_system_prompt = f"{knowledge_context}\n{self.system_prompt}" + self.conversation_history = [ - {"role": "system", "content": self.system_prompt}, + {"role": "system", "content": final_system_prompt}, {"role": "user", "content": briefing} ] diff --git a/app/agents/roles/reviewer_agent.py b/app/agents/roles/reviewer_agent.py index 200e0b0..168acbb 100644 --- a/app/agents/roles/reviewer_agent.py +++ b/app/agents/roles/reviewer_agent.py @@ -1,6 +1,5 @@ """Reviewer Agent.""" from app.agents.agent import Agent -from app.rag.retriever import KnowledgeRetriever class ReviewerAgent(Agent): """An agent specializing in strict Code Review.""" @@ -13,33 +12,13 @@ def __init__(self, name: str = "CodeReviewer", **kwargs): "free of errors, and adheres to best practices and " "internal coding standards." ), + use_rag=True, **kwargs, ) - self.retriever = KnowledgeRetriever() - - def _get_system_prompt(self, **kwargs) -> str: - code_to_review = kwargs.get("code", "") - - # Retrieve relevant knowledge - retrieved_knowledge = self.retriever.retrieve(query=code_to_review, top_k=3) - - knowledge_context = "No specific internal standards found for this code." - if retrieved_knowledge: - formatted_knowledge = "\n\n---\n\n".join( - [f"Source: {chunk['source']}\n\n{chunk['text']}" for chunk in retrieved_knowledge] - ) - knowledge_context = ( - "When performing the review, pay close attention to the following " - "internal standards and best practices:\n\n" - f"--- RELEVANT KNOWLEDGE ---\n{formatted_knowledge}\n--------------------------" - ) - - return ( - f"You are a Senior Software Engineer acting as a code reviewer. " - f"Your task is to provide a thorough review of the given code snippet.\n\n" - f"{knowledge_context}\n\n" - f"Please review the following code:\n\n" - f"```python\n{code_to_review}\n```\n\n" - f"Provide your feedback in a clear, constructive manner. " - f"If you find issues, suggest specific improvements." + self.system_prompt = ( + "You are a Senior Software Engineer acting as a code reviewer. " + "Your task is to provide a thorough review of the code based on the " + "provided file path. Use your available tools to read the file content.\n\n" + "If the code meets all standards, respond with only the word 'LGTM'.\n" + "Otherwise, provide clear, constructive feedback on what needs to be improved." ) \ No newline at end of file diff --git a/main.py b/main.py index 1f45bcc..32f7606 100644 --- a/main.py +++ b/main.py @@ -43,16 +43,16 @@ def main(): common_kwargs = {"api_key": api_key, "model": "o4-mini"} - coding_agent = CodingAgent(name="CodingAgent", **common_kwargs) + coding_agent = CodingAgent(name="CodingAgent", use_rag=True, **common_kwargs) coding_agent.add_tool(read_file_tool, read_file_tool_def) coding_agent.add_tool(edit_file_tool, edit_file_tool_def) coding_agent.add_tool(list_files_tool, list_files_tool_def) - testing_agent = TestingAgent(name="TestingAgent", **common_kwargs) + testing_agent = TestingAgent(name="TestingAgent", use_rag=True, **common_kwargs) testing_agent.add_tool(read_file_tool, read_file_tool_def) testing_agent.add_tool(run_tests_tool, run_tests_tool_def) - evaluator_agent = EvaluatorAgent(name="EvaluatorAgent", **common_kwargs) + evaluator_agent = EvaluatorAgent(name="EvaluatorAgent", use_rag=True, **common_kwargs) evaluator_agent.add_tool(read_file_tool, read_file_tool_def) reviewer_agent = ReviewerAgent(name="ReviewerAgent", **common_kwargs) From ba8ce034f4cedbb2581b8d4851ef94b452bb4c68 Mon Sep 17 00:00:00 2001 From: Vyacheslav Artemyev Date: Wed, 11 Jun 2025 14:27:43 +0300 Subject: [PATCH 02/10] fix issue --- app/agents/roles/coding_agent.py | 9 +++++++-- app/agents/roles/evaluator_agent.py | 9 +++++++-- app/agents/roles/testing_agent.py | 9 +++++++-- main.py | 7 ++++++- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/app/agents/roles/coding_agent.py b/app/agents/roles/coding_agent.py index 41ba699..a063adc 100644 --- a/app/agents/roles/coding_agent.py +++ b/app/agents/roles/coding_agent.py @@ -6,8 +6,13 @@ class CodingAgent(Agent): """An agent specializing in writing and refactoring code.""" - def __init__(self, **kwargs): - super().__init__(**kwargs) + def __init__(self, name: str = "CodingAgent", **kwargs): + super().__init__( + name=name, + role="Software Engineer", + goal="Write, modify, and fix code according to the given task.", + **kwargs, + ) self.system_prompt = ( "You are a CodingAgent, an elite AI developer. Your task is to write, modify, and fix code." "You will be provided with the full plan, the history of previous steps, and your current task." diff --git a/app/agents/roles/evaluator_agent.py b/app/agents/roles/evaluator_agent.py index 7d65063..ad843bb 100644 --- a/app/agents/roles/evaluator_agent.py +++ b/app/agents/roles/evaluator_agent.py @@ -3,8 +3,13 @@ class EvaluatorAgent(Agent): """An agent that analyzes errors and results.""" - def __init__(self, **kwargs): - super().__init__(**kwargs) + def __init__(self, name: str = "EvaluatorAgent", **kwargs): + super().__init__( + name=name, + role="Quality Assurance Analyst", + goal="Analyze test results and create tasks for the CodingAgent to fix any issues.", + **kwargs, + ) self.system_prompt = """ You are EvaluatorAgent, an experienced QA engineer and systems analyst. Your primary task is to analyze the log from failed pytest runs and formulate a clear, concise, and single task for the CodingAgent to fix the code. diff --git a/app/agents/roles/testing_agent.py b/app/agents/roles/testing_agent.py index e067319..f44d84d 100644 --- a/app/agents/roles/testing_agent.py +++ b/app/agents/roles/testing_agent.py @@ -3,8 +3,13 @@ class TestingAgent(Agent): """An agent specializing in running tests.""" - def __init__(self, **kwargs): - super().__init__(**kwargs) + def __init__(self, name: str = "TestingAgent", **kwargs): + super().__init__( + name=name, + role="Quality Assurance Engineer", + goal="Run tests to ensure the code is working correctly.", + **kwargs, + ) self.system_prompt = """ You are TestingAgent, an automated test-running robot. Your sole task is to call the `run_tests_tool` with the correct path to the tests. diff --git a/main.py b/main.py index 32f7606..7382a91 100644 --- a/main.py +++ b/main.py @@ -65,7 +65,12 @@ def main(): "ReviewerAgent": reviewer_agent, } - default_agent = Agent(name="DefaultAgent", **common_kwargs) + default_agent = Agent( + name="DefaultAgent", + role="General Assistant", + goal="Perform basic tasks like listing files when no other agent is assigned.", + **common_kwargs + ) default_agent.add_tool(list_files_tool, list_files_tool_def) default_agent.add_tool(read_file_tool, read_file_tool_def) workers["DefaultAgent"] = default_agent From feb83d8a3bce45f0ebf6ddf9a12ff183dd7b37ac Mon Sep 17 00:00:00 2001 From: Vyacheslav Artemyev Date: Wed, 11 Jun 2025 14:53:04 +0300 Subject: [PATCH 03/10] fix --- app/agents/agent.py | 45 +++++++++- app/agents/roles/coding_agent.py | 32 ++++++-- app/agents/tools.py | 4 +- app/rag/retriever.py | 49 +++++++---- db/chunks.json | 136 ++++++++++++++++++++++++++++++- db/embeddings.npy | Bin 12416 -> 184448 bytes main.py | 40 ++++++++- scripts/build_knowledge_base.py | 37 +++++++-- tests/test_tools.py | 3 - 9 files changed, 300 insertions(+), 46 deletions(-) diff --git a/app/agents/agent.py b/app/agents/agent.py index 92cb617..6df0167 100644 --- a/app/agents/agent.py +++ b/app/agents/agent.py @@ -5,6 +5,7 @@ import os import json import logging +import re from openai import OpenAI, APIError from openai.types.chat import ChatCompletionMessage from dotenv import load_dotenv @@ -58,6 +59,7 @@ def __init__( model: str = "o4-mini", max_iterations: int = 10, use_rag: bool = False, + rag_config: Optional[Dict[str, Any]] = None, ): self.name = name self.role = role @@ -70,7 +72,9 @@ def __init__( self.max_iterations = max_iterations self.system_prompt = "Ты — универсальный AI-ассистент." + # RAG specific attributes self.use_rag = use_rag + self.rag_config = rag_config or {} self.retriever: Optional[KnowledgeRetriever] = None if self.use_rag: try: @@ -95,13 +99,43 @@ def get_openai_tools(self) -> Optional[List[Dict[str, Any]]]: return None return self.tool_definitions - def _enrich_with_knowledge(self, query: str, top_k: int = 3) -> str: + def _create_rag_query(self, briefing: str) -> str: + """ + Creates a focused query for RAG from the detailed briefing. + Extracts the current task and the last result from history. + """ + task_match = re.search(r"\*\*YOUR CURRENT TASK \(Step .*\):\*\*\n\n\*\*Task:\*\* (.*)\n\*\*Description:\*\* (.*)", briefing) + history_match = re.search(r"\*\*EXECUTION HISTORY:\*\*\n(.*)", briefing, re.DOTALL) + + if not task_match: + return briefing # Fallback to full briefing + + task = task_match.group(1) + description = task_match.group(2) + + query_parts = [f"Task: {task}", f"Description: {description}"] + + if history_match: + history_str = history_match.group(1).strip() + # Get the last entry from the history + last_entry = history_str.split("- **Step")[0].strip() + if last_entry: + query_parts.append(f"Context from previous step: {last_entry}") + + focused_query = "\n".join(query_parts) + logging.info(f"Created focused RAG query for {self.name}: '{focused_query}'") + return focused_query + + def _enrich_with_knowledge(self, query: str) -> str: """Enriches a query with context from the knowledge base if RAG is enabled.""" if not self.use_rag or not self.retriever: return "" - logging.info(f"Agent '{self.name}' is retrieving knowledge for query: '{query[:100]}...'") - retrieved_knowledge = self.retriever.retrieve(query=query, top_k=top_k) + top_k = self.rag_config.get("top_k", 3) + filters = self.rag_config.get("filters", None) + + logging.info(f"Agent '{self.name}' is retrieving knowledge with top_k={top_k}, filters={filters}") + retrieved_knowledge = self.retriever.retrieve(query=query, top_k=top_k, filters=filters) if not retrieved_knowledge: logging.info("No specific internal standards found for this query.") @@ -164,7 +198,10 @@ def execute_task(self, briefing: str) -> str: """ logging.info(f"Агент {self.name} получил задачу.") - knowledge_context = self._enrich_with_knowledge(query=briefing) + knowledge_context = "" + if self.use_rag: + focused_query = self._create_rag_query(briefing) + knowledge_context = self._enrich_with_knowledge(query=focused_query) # Системный промпт определяет "личность" агента, а брифинг - контекст задачи. # Контекст из базы знаний добавляется в начало системного промпта. diff --git a/app/agents/roles/coding_agent.py b/app/agents/roles/coding_agent.py index a063adc..8ae2015 100644 --- a/app/agents/roles/coding_agent.py +++ b/app/agents/roles/coding_agent.py @@ -19,17 +19,31 @@ def __init__(self, name: str = "CodingAgent", **kwargs): "\n\n" "## Operating Principles:\n" "1. **Think Before You Code:** Carefully study the task and context. Plan your actions." - "2. **Follow Instructions:** Precisely follow the given task, whether it's writing a new function, fixing a bug, or refactoring." - "3. **Use Tools Wisely:** Do not call tools unnecessarily. Analyze first, then act." + "2. **Surgical Edits:** Your primary goal is to make precise, targeted changes. Do not rewrite entire files. Instead, identify the specific function, method, or block of code that needs changing and replace only that part.\n" + "3. **Use Tools Wisely:**\n" + " - Prefer `edit_file_tool` with `mode='replace'`. This is the safest and most professional way to work.\n" + " - Use `mode='append'` for adding new functions or tests to the end of a file.\n" + " - Use `mode='overwrite'` ONLY when creating a brand new file.\n" "4. **Code Quality:** Write clean, efficient, and well-documented code that adheres to PEP8." - "5. **Handling Code Review Feedback:** " - " - Carefully review ALL feedback from the ReviewerAgent." - " - **'Read-Modify-Overwrite' Strategy:** Instead of many small fixes, use the following approach:" - " a. Read the file's content (`read_file_tool`)." - " b. Apply ALL necessary changes in memory." - " c. Completely overwrite the file with a single call to `edit_file_tool` using `mode='overwrite'` and the full new content." - " - This approach ensures that all corrections are applied atomically and nothing is missed." "\n\n" + "## Example of a Surgical Edit:\n" + "Your task is to fix a bug in the `add` function in `math_utils.py`.\n\n" + "1. **First, read the file:** `read_file_tool(path='app/utils/math_utils.py')`\n" + "2. **Identify the flawed function:**\n" + " ```python\n" + " # This is the old, incorrect code block you will replace\n" + " def add(a, b):\n" + " return a - b # Bug is here\n" + " ```\n" + "3. **Call the edit tool to replace ONLY that function:**\n" + " ```python\n" + " edit_file_tool(\n" + " path='app/utils/math_utils.py',\n" + " mode='replace',\n" + " old_content='''def add(a, b):\\n return a - b # Bug is here''',\n" + " new_content='''def add(a, b):\\n # Fix: Correctly perform addition\\n return a + b'''\n" + " )\n" + " ```\n\n" "Your goal is to successfully complete your part of the plan, preparing the way for the next agent." ) diff --git a/app/agents/tools.py b/app/agents/tools.py index 899cdd2..8930a05 100644 --- a/app/agents/tools.py +++ b/app/agents/tools.py @@ -37,7 +37,7 @@ def list_files_tool(input_data: Dict[str, Any]) -> str: input_data (Dict[str, Any]): Словарь, который может содержать ключ 'path' с путем к директории. По умолчанию - текущая. Returns: - Отформатированное дерево файлов и директорий в виде строки. + Отформатированное дерево файлов и директории в виде строки. """ path = input_data.get("path", ".") if not os.path.isdir(path): @@ -201,7 +201,7 @@ def run_tests_tool(input_data: Dict[str, Any]) -> str: "type": "function", "function": { "name": "list_files_tool", - "description": "Рекурсивно выводит дерево файлов и директорий по указанному пути.", + "description": "Рекурсивно выводит дерево файлов и директории по указанному пути.", "parameters": { "type": "object", "properties": { diff --git a/app/rag/retriever.py b/app/rag/retriever.py index ec6d5d8..e62bb8d 100644 --- a/app/rag/retriever.py +++ b/app/rag/retriever.py @@ -58,13 +58,18 @@ def _load_knowledge_base(self): logging.error(f"Failed to load knowledge base: {e}") raise - def retrieve(self, query: str, top_k: int = 3) -> List[Dict[str, Any]]: + def retrieve( + self, query: str, top_k: int = 3, filters: Dict[str, Any] = None + ) -> List[Dict[str, Any]]: """ - Retrieves the top_k most relevant chunks for a given query. + Retrieves the top_k most relevant chunks for a given query, + with optional metadata filtering. Args: query (str): The search query. top_k (int): The number of top results to return. + filters (Dict[str, Any]): A dictionary for filtering based on metadata. + Example: {"tags": ["style-guide"]} Returns: List[Dict[str, Any]]: A list of the most relevant chunks. @@ -80,26 +85,42 @@ def retrieve(self, query: str, top_k: int = 3) -> List[Dict[str, Any]]: # 2. Calculate cosine similarity similarities = cosine_similarity(query_embedding, self.embeddings).flatten() - # Ensure top_k is not greater than the number of available chunks - effective_top_k = min(top_k, len(self.chunks)) - - # 3. Get top_k indices - # We use argpartition which is faster than argsort for finding top_k - top_k_indices = np.argpartition(similarities, -effective_top_k)[-effective_top_k:] + # 3. Get a larger number of candidates to filter from + candidate_k = min(top_k * 5, len(self.chunks)) # Get more to filter + top_k_indices = np.argpartition(similarities, -candidate_k)[-candidate_k:] + + # 4. Filter candidates based on metadata + filtered_indices = [] + if filters and "tags" in filters: + required_tags = set(filters["tags"]) + if required_tags: # Only filter if tags are specified + for idx in top_k_indices: + chunk_tags = set(self.chunks[idx].get("metadata", {}).get("tags", [])) + if required_tags.issubset(chunk_tags): + filtered_indices.append(idx) + else: # If tags filter is empty, don't filter + filtered_indices = list(top_k_indices) + else: # No filters + filtered_indices = list(top_k_indices) + + # 5. Sort the filtered indices by similarity score + sorted_indices = sorted(filtered_indices, key=lambda idx: similarities[idx], reverse=True) - # Sort these top_k indices by similarity score - sorted_top_k_indices = top_k_indices[ - np.argsort(similarities[top_k_indices]) - ][::-1] + # 6. Get the final top_k results + final_indices = sorted_indices[:top_k] - # 4. Format results + # 7. Format results results = [] - for idx in sorted_top_k_indices: + for idx in final_indices: result = { "text": self.chunks[idx]["text"], "source": self.chunks[idx]["source"], + "metadata": self.chunks[idx].get("metadata", {}), "score": float(similarities[idx]), } results.append(result) + if not results: + logging.warning(f"No documents found for query '{query[:50]}...' with filters {filters}") + return results \ No newline at end of file diff --git a/db/chunks.json b/db/chunks.json index bcc3e4b..9e915bd 100644 --- a/db/chunks.json +++ b/db/chunks.json @@ -1,7 +1,137 @@ [ { - "text": "This is one chunk.", - "source": "test_doc.md", - "chunk_id": 0 + "text": "Руководство по Написанию Тестов\n1. Структура теста: Arrange-Act-Assert (AAA)\nВсе тесты должны следовать паттерну AAA для ясности и читаемости. Arrange (Подготовка): Подготовьте все необходимые данные и моки. Act (Действие): Вызовите тестируемую функцию или метод.", + "source": "testing_guidelines.md", + "metadata": { + "tags": [], + "full_path": "knowledge/testing_guidelines.md", + "chunk_id": "testing_guidelines.md_0" + } + }, + { + "text": "Assert (Проверка): Проверьте, что результат соответствует ожиданиям. ```python def test_user_creation(): # Arrange user_data = {\"username\": \"test\", \"email\": \"test@example.com\"} mock_db = MagicMock()\n# Act\ncreated_user = create_user(db=mock_db, data=user_data)", + "source": "testing_guidelines.md", + "metadata": { + "tags": [], + "full_path": "knowledge/testing_guidelines.md", + "chunk_id": "testing_guidelines.md_1" + } + }, + { + "text": "# Assert\nassert created_user.username == user_data[\"username\"]\nmock_db.add.assert_called_once()\n```\n2. Именование тестов\nИмена тестовых функций должны быть описательными и начинаться с test_. Следуйте формату test_<что_тестируем>_<при_каких_условиях>_<ожидаемый_результат>. Пример: test_add_items_with_negative_quantity_raises_error()\n3.", + "source": "testing_guidelines.md", + "metadata": { + "tags": [], + "full_path": "knowledge/testing_guidelines.md", + "chunk_id": "testing_guidelines.md_2" + } + }, + { + "text": "Используйте pytest.raises для проверки исключений\nДля проверки того, что код корректно выбрасывает исключения, используйте контекстный менеджер pytest.raises. ```python import pytest\ndef test_divide_by_zero_raises_exception(): with pytest.raises(ZeroDivisionError): divide(10, 0) ```", + "source": "testing_guidelines.md", + "metadata": { + "tags": [], + "full_path": "knowledge/testing_guidelines.md", + "chunk_id": "testing_guidelines.md_3" + } + }, + { + "text": "Принципы Обработки Ошибок\n1. Предпочитайте специфичные исключения\nВсегда перехватывайте наиболее специфичный тип исключения. Избегайте использования except Exception: без крайней необходимости.", + "source": "error_handling.md", + "metadata": { + "tags": [], + "full_path": "knowledge/error_handling.md", + "chunk_id": "error_handling.md_0" + } + }, + { + "text": "Плохо: python try: # какой-то код except Exception as e: log.error(\"Произошла ошибка\")\nХорошо: python try: # какой-то код except FileNotFoundError as e: log.error(f\"Файл не найден: {e}\") except (KeyError, ValueError) as e: log.warning(f\"Ошибка данных: {e}\")\n2.", + "source": "error_handling.md", + "metadata": { + "tags": [], + "full_path": "knowledge/error_handling.md", + "chunk_id": "error_handling.md_1" + } + }, + { + "text": "Используйте кастомные исключения\nДля ошибок, специфичных для доменной логики вашего приложения, создавайте собственные классы исключений. Это делает код более читаемым и позволяет вызывающему коду точечно обрабатывать конкретные сбои.", + "source": "error_handling.md", + "metadata": { + "tags": [], + "full_path": "knowledge/error_handling.md", + "chunk_id": "error_handling.md_2" + } + }, + { + "text": "```python class InsufficientBalanceError(Exception): \"\"\"Исключение, возникающее при недостаточном балансе.\"\"\" pass\ndef withdraw(amount): if amount > current_balance: raise InsufficientBalanceError(\"Недостаточно средств на счете\") ```\n3. Логируйте ошибки правильно\nПри перехвате исключения обязательно логируйте полную информацию, включая трассировку стека, чтобы упростить отладку.", + "source": "error_handling.md", + "metadata": { + "tags": [], + "full_path": "knowledge/error_handling.md", + "chunk_id": "error_handling.md_3" + } + }, + { + "text": "```python import logging\ntry: # ... except Exception as e: logging.error(\"Произошла непредвиденная ошибка\", exc_info=True)", + "source": "error_handling.md", + "metadata": { + "tags": [], + "full_path": "knowledge/error_handling.md", + "chunk_id": "error_handling.md_4" + } + }, + { + "text": "API Design Principles\nРесурсы: Используйте существительные во множественном числе для именования эндпоинтов (например, /users, /products). HTTP-методы: Используйте правильные HTTP-глаголы для действий:\nGET для получения данных. POST для создания новых ресурсов. PUT / PATCH для обновления. DELETE для удаления.", + "source": "api_design.md", + "metadata": { + "tags": [], + "full_path": "knowledge/api_design.md", + "chunk_id": "api_design.md_0" + } + }, + { + "text": "Версионирование: Включайте версию API в URL (например, /api/v1/users).", + "source": "api_design.md", + "metadata": { + "tags": [], + "full_path": "knowledge/api_design.md", + "chunk_id": "api_design.md_1" + } + }, + { + "text": "Python Style Guide\nИменование: Используйте snake_case для переменных и функций. Имена классов должны использовать CamelCase. Константы должны быть в UPPER_SNAKE_CASE. Длина строки: Максимальная длина строки - 99 символов. Докстринги: Все публичные модули, функции, классы и методы должны иметь докстринги в стиле Google.", + "source": "python_style_guide.md", + "metadata": { + "tags": [], + "full_path": "knowledge/python_style_guide.md", + "chunk_id": "python_style_guide.md_0" + } + }, + { + "text": "Импорты: Группируйте импорты в следующем порядке: стандартная библиотека, сторонние библиотеки, локальные приложения. Форматирование строк\nf-строки: Всегда предпочитайте f-строки для форматирования вместо str.format() или оператора %.", + "source": "python_style_guide.md", + "metadata": { + "tags": [], + "full_path": "knowledge/python_style_guide.md", + "chunk_id": "python_style_guide.md_1" + } + }, + { + "text": "Хорошо: user_info = f\"Пользователь {user.name} с ID {user.id}\"\nПлохо: user_info = \"Пользователь {} с ID {}\".format(user.name, user.id)\nList Comprehensions\nПростота: Используйте list comprehensions для создания списков из существующих итерируемых объектов, но только если логика остается простой и читаемой.", + "source": "python_style_guide.md", + "metadata": { + "tags": [], + "full_path": "knowledge/python_style_guide.md", + "chunk_id": "python_style_guide.md_2" + } + }, + { + "text": "Если требуется сложная логика или несколько вложенных циклов, используйте обычный цикл for. Хорошо: squares = [x*x for x in range(10)]\nИзбегайте (сложно для чтения): complex_list = [x + y for x in range(10) for y in range(5) if x % 2 == 0 if y % 3 == 0]", + "source": "python_style_guide.md", + "metadata": { + "tags": [], + "full_path": "knowledge/python_style_guide.md", + "chunk_id": "python_style_guide.md_3" + } } ] \ No newline at end of file diff --git a/db/embeddings.npy b/db/embeddings.npy index 6143736798976f63a9fa60d1d31de6b6c2217d96..44a165928532b7866836766d4e1f2f373e9013d4 100644 GIT binary patch literal 184448 zcmbS!cYGGb6ZcU>suU?d1mpmvD+1C>j^2CkNAD#G0YV@gX|#|)NTG%!jnI2j;5h_D zQKX3oiX2rDP*4E{k$1k|eUA6@{`>OJd}elbc6WAWc6Ro7vZ8CBF5L&@&}L|1RYr{t z9vM`nv0kO=n1)qq>Q%-}4VoS_e9Ew?L8C^4-gfw;;L$=49yfg2Xu+%2u2)m9U9WEa zYBlw_`v2Fz{FKb}1e*JXjSdi~HT*J;c+s>pK*;-2+V%0gVO5e9*OtZ_WpOa^q;&D-b`s8y=6 z2Do16R1(|!51RpKHC~iX{D*=Z-_W}%d86ZrTh*H`CEpr7)hGP!xXRlA&2jBwL3hGB zv)$?V`*zTs$V|>tU!R%?+-jITmGm!0^##9MpmH3b)p=?P;XA!&5>{-#*e7&zSQ6<* zkGAoopKLb>biLtLuG^V7Dh0UPLbm}${yg&SFSh_tZ!vTL=w?-C6`(sMbrSIo^%Bso z4W31P+O@7&9u8=whi(8gbM;yc=xiIybs4p0Mf(Idn%wQc_Q=+mfX3lcy8yKjkEmDe z?SM@1+28z_1gO8C&UG3!4-+>|ok}Nt(7I)S?!^S!fid*5lGk&5U;z5f-mw|b-Pb&e zu%Fci{6>xcBH13_V+x>A_m5=I-3>Ft0rfY#k>6-pwh7v;M>Q7%+8O&6lJB%jeHf+x z$Nh0)hEsof($*Ddw+d%u0GcamZUM9dj%5Kl&*yO*Bgf_aq+iR!eR6uXj|h-qv z%dqm>z}?^`gjTaQlxzGsLG9a;RmAo99-ObSvB)~gpX{pjHXqfU_&$gF5&PN-dFIcv zsUPe6?md7zhZ-ks)esXf7luLt+=3Vgg0{1pY738IIb4Ag7dYs*%tWC>oIk}r|tZl`)bcBwi3Ab z%XqXq31>5ao8l+H^-FbWPtN^5#I2)6XQN&8&2`wro^l-h*d*Gq?zd}G|2hW!-R7fA z%9(IV$=z9na*R&j%p?8$A=2H*O61q?l!=9W=kQa;9WAyL^bV8b8artk z`rG$|s24N5ppx6_D*J1bPOABaFJ_#ub2Ox#>fb$Xhkp8hYiSqy@Dj9B>({DqKdrn|h}+ZN-3Pim{U6T9JXnVDLmN_mDCpYNhkMZ9TDq6^Z5#8lDQD%lV9?#R z{pok+j6IAq_R4nCLAUcvO9G$q`y=j;StgNwXZ}@{`|flfyB&O1y&jyW-S_%B;GUn! zIy2B;uWkeZnq77%zdiS21aPZ`FA@A&@t4Vf`r4c1cfLEvbIYl@hWfGIewX{|#J|n? zxL3cRpE+AMaUbQpNQFFoa-_14;YGPlm!n~ZPf@vk<5U(Z>JdbF~4 zsrA0|9rsj1m>OJbg+^~}8k@m(#wmVB!@!Zz#m7*V8 zfkT%=j`$t-Rjbp3@x|P`f#-(N>grm^m3YGQPxh-n`7eB{;>5vKw0A9LeJJSq=}5|# ze1YqBb3ao3x_(1F8Rr{Nf99%;)sSn~cuqYbZlJ%jKb(5D7ae4Lw7<-tp7k+ZR)F8_ zP@MMb_Q;zIeskNzmY|y#p40&D7H_8PyZt^MU@g3q0iupUtI7{(p_%agPtBWKb=(DfA`*#QErj0VAk zgZt5L;Qzp3SAcrA)3jrA$9N^bSLQg-jW41(PxHVKWv^Gi?(Gx0S-Ca)yUWhAzxZ=J z==%ISoTpi+>IU@Jx^!I#XilBG6z$GF#{`u4whwe~eDg*W?bN+Kx)taW=Q@$^jkDB` z#9_`$OJ8lFU3=7J725T8Cv!bcsgmTA{EYsphd$0GU(3`st85)-Ev>WgVr;-4mmfK-q*g`4nD2^M_iBjVMC7VUig;rL@Urq+3~_MoQHAu3fJlG z`790nB#-2NNPgQdKybU=J~hsm&4iK%(k`sIUo$QldyjG*o?p5z4^f|Po7Eg&FB!`D zn$30Ei}=SN|NMpn>U}lNLvQdK=Ve4iv7f}fO!D<<$$hpzF3Pwg`;*On4+~Eve9(jQ zcMi^Beqlb^o){o<-7azTH}`U&+6T#N!0(o9G9T?)Vu3k;=6@@<0_xKbseSl!0poz( za0%CE1z%O;PPjb(eTVYxT_ZOEm;IytS`(_$F7#XL)jUfzpq*Q8Ys!)M zwv*$D{?X6K_Z81o?|idsmdgRUyYY9W*WOXwKhYES-w2ybdHR`vNbpI%Lc8|jfzh$Z z6wqaS&PU5E$$1*Rs*D6(dnY6d&^Q-LdoxP!p!9z#zVP}s{LAYusry+isQ!vS|9CY+|nv+ zVcc=*o}UT2+>aP{?G=TW`vey|4P?Jf%apw>7{WNH)n2g;?UE;Pf1F7bLxEdU(&!)d z`w^Uv7cWHbM0McTEyGfyP=%w{9FzgCwI)czmoH4FUi+z*ue zltuJs=jj`a<9444vFImx)kr}5Wc6L(Hy-~+`_}(W?FHN{_{K1{4{b;}lE+5?mpDti z_s$>5KV!kK)t#>BkADpVpD|!P$JLvR%RsyP%c?qnuy3^Mi>}bVrMV!vbE zl%IST96|nfCr<{H^M~WOkCui2H*aZCfOg6LYXBwBngJ;BpY~x@Sj=%G&lnXTbO~hf zfZjb;4}6&feyIzjke=0Z32@`dINGQCTl@mx+O8A6dA-qy1b?B~@7 zwAEt*$rlwxeP|aCFdj-=RB^T1`q}93E|2H@+*+5^xzY1yC4cTc#v|9Pqt5kzUob9M zx$1L&>>n1Zbyg@yzm+_eb}RRmD2!{3T$&2`I9Gss_k8n*f@&XQXY~eM;+zFOdtQ6W zcOIXiA6QA*aiB|{LH+6(-=zRI1`lFf6~9z*;@(s0+1~tt%0m{E-%Y+bHNpcRx7|L* z8;OhDHz#R{iXWZ6Sr0z*-Yoj9#4Y**_|VU(bWi!CcYml~SlQ8{E8Ede@*d%olr z@XNhB7|?xklKX_bnfSx=%1%z_pdV`shAaUc_j^EnSShYY?n4`Wf*XC_=eS;-Lh>@s z&-z8!tUOEOAg5Uk>iZ3w&bm(j~&OjDEVtY_W$q`+Lz>u;0Kk;nPF)8<*^Kkx(fqV;J>KD}@&W$#NbDS7ALA)o9k^=?0FqvBRnPU^|@pBLIs zW2sMLNNL)mwJrzu6?Gz?%)|35ZS5=OFXpa0!JvC}0i)z#u2Zks+yve3dY|J<-JvDs z>3+IDiS*MW7*`~(SNeF>m-0lvDd3ZO2jcJ`a^zh2rDASmKIpm$%FIzdacJCj}I*JXmI1Gh4t zP@Y%kk@JUol02Xa`lD_LXclNkd$Q~HqFkeC2K`RX$F-ExrV+ySKo2*%SVM$Z7hK*nQ<oX1 zA9)e@y?BEAKj`pl&`~DkHpQVqBcv7hxHh!x^|1!R8#reuTmGiK+SL@Aw{(6*F z_A%FOJoq>rbg7p&1vKJ6R{L|iDfd(Cd>Y4D){A9E_--fkm;Fot1+7I4Sz~}z7k$RH%7y6m@ zMcP!#P5P2{^E(m4X9OH&$#Hg2G1Y;@Ao3mU*eUHcDcXJ29$aY z_Z@Kz?e6LpbIEtII^(mPj|+)U9zj3QF4yL|jr@z2fNt$h5Ag}~?i*sSw0pU)MWJ2t zFV0`?DU7d@-wp@AcTS)#2VCyc%fRo|!JIEfQE&F&xgtT=8%>BIY%z2d_`P@`=NZ=} z`M-A#Q18aiDe>Spd;Uy0o?h(*O}C=ITmE4t+P(K0{o4?wN3YI4u6hvoa4!dxdjZcC ziR)p&jqB;OYa`^zB#$ou@~Yfm{C6ea0j|q?6`*M?Od=dmE*nt%nENjI0OPLAw;Sm4 zUO>CI3uSTMX8oF-LAMK6q}@r~p5uDwlk;Z>j$=tYBj2rX>R;#_&wF39+BL}Vi5%-} zS;iTu2MqykhILN>bf*qxd_Y|ja`ar6qCnUG+Dv|_yWh7#mwF-BA?up&6I|X0R9y4lue7GwFk8=pd-%) zUGihDSMGJwNPj0p>EHj}Ep>t+>^~uk`{8JRb6rwj7zMi2)0O}_RVzfJzu2|f-(|fx z4|!)?1G?-Fi+?P<6RWcs1n8X zI(>30e~;})`Bs7Iz0l7&yPEbW?GfOYe0(hFvHki0*A9NdeK)80IDg4k8PDYXd?xva z4zR$F_Z#3+$4CIKrMhaoO81t7j(QfLTlfw7qxi)b@QMA<9<0*IN-trZxh`Gu7`8w7 znDdl-1pQO)WvwB{SZ9v`G{2t9yb0es0LMKM(C)X6`>FN%d;$5b{M((X2E zkqT(t$VvT4y@dVU_I;^uV^lZlN$MDF*#G053)#;;METaL1&j+?(w9p?_s&(ke*hPK zaX*nqqQ99{kNYg|{X@{MTU8kUz515KZSIqG_3I4qJJ!9O;6vRE&`E8^eL%cn`=1@! zu-(hM|9Q0zIL>?WJJVJG%DWKv)AWCbVVIYK1B5R1n{j|rf8IqX@t^$nW{qTf>Eukp z@Wo1hP405vwdU_7g6_=8&-~S^XPQ-VW~0CJYYO!u?`Pb1IiHn2syeh=nMVxxWdD*O zN8&~paQCa!CV<|1r@83xbhOJpZ72Qey*NP0d&2>(->1w%yO$?>`o?z>Hm^j)( zM+0gTZgZZ_@tR8iFRzkM+gO}_;Z)94{w{t4etFkmd^OvAN_*GBw`4)CC3*++;*Z&W zrn0x6#*Svcw1H88a!*PDG>Z=%0e&aBLkw{7|B=LhKg)S&zYL(AYwId*0A21~y}^g~ z7T~yF62{J&4(RybMI}GrzREi-=kL`KaSsEZoZB2<>h19Xg4-CXp;b4Ys@xf$bVBeyRFpPVZkPu@{!Z({d6ZzUgGi*{>f zZ??Oo{z)VM(1yd&U+k3ga4T+NeAHgeq&)p$;q~D2_QfhwY!mp6zPBPkm-~qcD0PHh zpj-YrfIJ9rJbAAg1-c#o5#`uzpEUr#KDOMpLFO3_eyRI2KItbrDSah$*-ZMWtWkho{v&l~+MyR`ygbaSS9$iJ z-Mo>E@tsj0a$Zs&9}FDt^nk|pw$zW*g;iXTx+KPt^EVysVviP}Q^XAelygA&W#X?q zKfHH7xzEi*Kk?5jKu79wfO21_9f{sjNYDFVrBCSks>(@#&fvx)0jzCHBZ1?)3gV+aRO63+p!R7_{`F{=^-{lb-w6SZ zdpw}{MNjmT^OF1R)uW^?%XlmI!ujBH|9W#H_>5mZAs^}#pj$=`?xUO8mwJ+W$u#iE zcP-P{e&C0Nfb!jp+W#2|@o2ZsG&uAy+o?Eng zSL%^I^qW+1JlehYS9#YN2V6UKoBJmB3$EK8Hl1++`+{~S<;`*EFLepZmwRU*=<;0> z^<~|3lwKQG<+|`)2K)Kz7TVcnoQGcGQ|i%N(vVQj<=W&svbPl=zOMk3`o?OX0QsJ9 z3ZQd2j&yx|KIV1uJ{Si+OZEj&?5r91+{%^cPg+njo(HeLTiMr~`mp~Tv!49#Z5#>c z?zQMIsKWs_%GZd89H~ooAYY|>TqnLC1zo=5Vt?FsfFlnD^zshF9Ucc<54frJrT?(L z0qA#m2kjK!f1(}VCxY&ben5ZHO1|JcrV-28uuf_3%e|mu6 zQjb;VntVqE+#XVbej?xJF(2~2Yjqb7pgiw=L(bW@kmqhX$MfIbT_Ftpd zcf)FN-{swD0ovu9Gtp1-@L)jEGxaC+lxVbz->A5guZz;xvoW+kvFFL)mwQSN!moT2 zz%O}J6#G3YybN?FB7%Nt{qs{eaPJ(HcVEs=&$E0K_$98a0(2IXj{u+d{x9EG(jM@> z3%WJo_&oBr{U7xr^?t5Hz8A{?-Co^h1lxZZFayvC4h<#U|GpsK!;J=x_g)|P8=MIS z?tND%-^pztfBWE0Z1>xZ++WuLmw3Jg?fC8tQ0k`Chm6a3DD_h%x7L+qXqWF_74+YO z%;h^%K$mkZ%!mH|_bPd}PXjLZ5!wmvHQ>IZzSKrE(R`j66#65m*o1ie_nM# zKYdo+jcAwenI;0a56$NMt#^7R1Gj1%T7h=)C)%5HbH;kmofFSg9GTpn{-Up3MZLSz z7tr4HtsxWGukKT>N9)&&`=GzMl6o_;mZ<)xw{8HR`E%J+$Ti*H_5-*3KBL~;s(m6s zw+m&Yg6=N8GaR^aE}C|#KYft~+}&A*ao=30?n}-mi)MkY?Ni@n+DHGTe(fvgr$LVK zsOU~WXVXL4t(`iJ^Km+2&O_GS8S>oH zqt^ji*FW6@sAtaE3O;MaQLe+>)6oXq9FfdC!3sD{y=fc%jt8IqvYN7|0%aL@oCmkJ zlmF!#++U+?B*(Kp9Lad--gt|+9oAUo9anDBudEGs=$HDUfOPcN8Xe7oe5+F%#t}PG z)!$`5LP0l6w_=>qtBuJ3zp-ThX2NFy+;_d=PL0NRz7av!wQ zKAsQupzU0*arb-18~cw{E74zTHJpB?8xN>I^U4$QyDiFXLAzPJ-)=y+(P3rZ6Q3{+ z*h4FEKdgB->Az-rC;EXqU@q;&82rXm%)=NHJe2*@8y=**%>J}bZSSNA;8uh2YQH=*4=-+zno$vnM=_GbT5gL=@H+uOh|{=qn6ENrm|xN)XP0%7?NXy@j}vrB-xO>2{` z1r=kw*1G*jzp&nO_MzPhND2x7Y;l?T(*AuX9&~%qEyfwkSBvwuCzYU|*@u5ue%33H zxY1OduU612+KDmvTqegY(428!&$*R$1-r#K#)OK>6``z!-2+xjO&h|NzR{(d9MQ}fikdd@MYfCSVZ?0*uJeLuNEzjn)BkpRh@d>o9`QK;8|H5|Xe-&ug&dW|J&UO7{IrwZXmhzp0#kfARO1+Js zi@k4xJnfANYQ6t8Oak2;u#9?gXa39e*p1wA;B&WSao@$h*xx>VgY&gswOd9xL+i() zzqVz}FhHZli)=vq#kU;ap6UxDy=q;~!@U(vy;>a_t_cu6@!ws5PWg8z-)*4sb?w|H zwwq>e+KqPnbN16lKc{}&$#IM`M(b&elXkB9)Q47~8snffC5-m&=KYWM<31Xu?a6h?ezgOxl~Q#`{bq04yYtQHexN&7OJuS=`*0MX z)$qJ(FR_*SGM?|v23?<2mC*X?I{nHGf5LTH+rLozRxw`1-;p}!kMqTce$84&0-EuS z$3l*FsQ(h+-g@-!cO`-@@nAjqb~WR=%x({-1J~2u3`4uKB%SNB|2f5TQ~db<(To26 z%@pvv8;&u)*r9)OKeWL<&eupUnT2*E>d0Wovo02(-mJQJ)VhBw!F3 zO_VcybeVbH*#hg;Ojg?{0Dpz|GBSX zw+n$=H(qj|^t$;tPoqXQ{YuVd`kVISd)zlI`!VB%GvY@TFK;|h@vF^Vo}*T^ne-Fq zWl7FQJM-~k%74!Z0rd9EX#W@WCVC*h+4nBTvvcK0_F+D+<_rMTE>E5YXqPG$j{a`X zDB6SZ!LOw2gJJ_gH-@zt3qCjI0sTqri08NU&Vu!5chah@1GGn%WxJO@8P(RP^*rA| zIiB5ld5Lx3=K8Ixjo4p1R4E8@#6PKj>+mPkw^pbN?L!-Rkn7OuoID6VV@z|dTjDkC z!OZyw_5V6=ZdoP?e5U`rGUm5e^NxsRe31JA=ZE`&5Aqr;WjuF(>_`96TGgZ;C63bn zB>xKqpY`QB?yvYY{nVP6hkTk-R@wV$-z?5A={@d`9l3_bH#<#V{Nuc73%9A~Qff57^iBh`8;45t6# z++urSo6z`V?L3U{eDx@k@+Yafx!&#$_gC^#?yJOwZQygm9j?R3vAr+(S8Ur2Xw=zY zq1};vApM6ylq+$W`)Svon1XhSnl1lzRW0r$o&RL#6X2BX8*#F0Rv@7GnzqCVl!foY8#oLlDenx$1$CvMd9IIb- z+L_s;DD6j&Xd4Z>94 z4-z+kTj#!-OTL>el6`_}JAN$#Xhin00QJ`D|G5~I=5Srs)!d`NudjJ)8~Klaz8KJY z@)q-_*M1jNjDG6eY>@?i$y+;vPx5K*hx7NaUhH?_d(KDhag5JqL_hMoEq>v6cFIip zk>sW1)9ZfAcwqiFnQ>TeqJ==d`Rib%r{s!JkZX*yfH`Tr>1TFUbuFno@SN0hR~iRC ziJ#mj@4h7W3)-JvQGHjZ{~4p~VQ4YhpIs)IdUTry+mNeO?Y9bYG5%N|ewYb9^RtZpfLh1*xqhwmOSONSv<~R!oez=^aG#x;FKM4{e3kBKHzrTo zN;qdQ{YdU7^gr{(ai#BqCg*|sBE~WI`+5NCAC}|%oh#S=$Wz}e8$>x%(JySiEY4V`1NC5G@dnLo5=ISnq7nTXy>oB4*Zg* zE_wIA@Yo9lXMZ4VR=vR{WQtx_j1^SP5u>L)K&*>JMM7_wpb{zU^i6w@i zpTq^FPk;U)c?8$#UbZ7S&V_gB_r^!VIA4AF#0=1#dJUt{-$;6ob}w~@IMB6;rI&&( z{>T1uUke8=@s;z|ZWPG}{Pq1OsV(iv?N&Gibm#4Qv`6jmna-56pw3W0@7`^mT|j-x zx!=eqbjiz`vfu2cDqdVIkpx`wcJ8~=?#=DslY0pF*YMwOaX%+r{0va?E&8d*rF`r8 zGTNQw>5Mm0_eq3YvD+Z<+jG+B=aRpuIDIT)2HGvZU7&tN{xZ{7g5Q1L4FnW_WBf4x zdXCcpFh7Fws+<4S>5$U^!ah}?M zj@(y$U6}~bon-@Q=Vswc9M5^MgLW(TkNE-UpLb&-<+Prr<~d ztAaHbbg^Ihzg8?a$B{ay@&l=tq22oT&6Vh9@1DP&{b$!mB7Kzle_`S;JcrFsXVCxM zODnieW9L6Jz~|L-oaY;s1DE>*&kebUskpFccnIjCw}=3NlBdQ3NBxHMMlQ!k-UZw| zs&56K+-er+`rpkqu>I4~%y-RI z*W!V@mHodr@V+}7xL2n$Zaknq>>t`^`-E;Z&dGhz@2LO(DEXDL({2wl&~CPwNBcF0 zT(^MZUIKagwQ<~kse4QyzOIbYW6?jkKd764?wp#W{Q86PvxyIR#Qnkj7r4Z4#u?;4 zz$K50Bi&zTk@F*g^p*k2juzBmyW|hSpzC|4a6ZP!FNr(V7IOaf@jYsvI?ka!tT~hE z2a?Be-e%`*)UVX><9rymp8AeQ^59J1lIPODg$nc$NL4K zT|I{U5--<*&ziZP<4PW_ytX(CboZPH2~CW7U4YHFT%Kgav!2T^rCsV5AM-I(d1h>DgtuMhHDjH zhlZU<|Dkd+pxl=k-{c(RJiK=kGylDw=qLB?4S>#(FD>vR&I6Zoi+&^LCjHe(`)dX0 z)}m;hA97#eK1;rDqn|NgkcuN^Be@>)WNF4nt!Z6lXD2QtfluyXjPr6oV!YG08Z97K z>N~Vcv3uH^aciXF3;laI+O-;AtGp$&Kq&EC#fJb&o~QIS@;};vJtLCyk$OQ4`TX~J z)W?9^m(_Qf&Sw_=%+34d7|PqByjJ(D|W1<8e3VHV4xJ1eet`Gz0Zmv!J>I>?0MZ4UexW5AXkpJ~ z#>4Y7(chk+eosXI{x0pqT{v^&FIyYJaOj3~5w zbt?1M<8nvb$jDl_J6QrALv@8iPHe>T0!buF&EKa^uCw4PVb)N z+-ppE_NfLo_^mH5(C@8t$<&iq2bX$t7}}-o$~ff3d$+;thybB`dAy8EIg($||K+`G z1mzA?zdvBrQU4EA?)6(JFKQv}Le7h1;P&xfV#$BepuKu^F3FF$f7a4(Ewtm_4k&TM z4#4<7mkkGQR^QD1bk;SS4qW2N0zfMwR;??gCHqU=n0D?aoacFhdolR53;QY0Dsr3l zC2?;C=(ZEg`AQv|@kj1ep#hNlw*ULJGZm;8>t3}Lpc}`M$miwd=F2x|=XOc;J6dv& z?9cJC503(rxbA&|l@gs{A8s z8~xq=V&^*W$vYbN!>C%9^AY=+1-iXBk#SU;x^6t=$U6%8Q6EOTyEcGv+G(A@d5WJ* zA>Y@<*w2k0%=qfvr_Eh?IZruHxsUeQk+f%b@A?qPlRTIDk@q+HlV-M}9*kU%7(cxF zl_~Fw7)N({a9v*A%bb*(a$nzrZ;e zf!lyf{Y?4G#?@)Sz4u&uXn)2>b5*vod=>i1J(v3@?;kBNj+bA^dru_VCI5*8UEY^DzT9spU+Pel|N6b9UX@_*Nq(>d z{ZMxYZvJ(ecHvI%*$cS5uLc21onRcG_D?4FQSycU zzm=FoyvEmDkK|*NEBnhhW`o>iDge#!SHQ$TknbzBXo{dtf@`|KwNNoA(`x z#H*E{OP*zcPmB4D>zDkN>o_f#FnJ>n{_ZXDZe+umuc>-`PrB4cBzr3^;x!)}Zzn0mK{$RwM4n(`$ z3%Y|YbsfeX#B1W;@5%r)59VOI+%Kp{az>UXf5>p7;N{dFC*$$;9Bvp#ej0I zsC|ri&fm~hUTeT7-!agBtQ&O{exUe9ALPY8?}~Q$?vC~+=K<}&t1sEb*G&SSyzkPEz3)-X zO1ro&H#8sp-dn%KSNb2`htUuDALL_vKvUk`K)09XW1N!nuMu#k@p~$+cy)?<)#%^u z;6GB(&wHmdr-sgF|91-v1|4}5pzO;G(B+*}`Lo|&&CRWqKX*Ax`;odnHcZ~%O zJp-byNczEIs{hK6V9+JMW_*$SE*kCL{msk&+-+GZ9{)FxdXxCbc}m{=qL9fwNLV$4BDkW zs?JNPOQ2o8Yh;|X54GuycGt?ubvfs+GVaN{2+vV@7s^Jv+@oo4_|6r$W-sG-+Rz+o z+{^K4q|3PtDEVZ&0D*>A&upDA2e>(XH2p~OM9x#}dnoA-{J;O5(vth^)wSfklJ?`( zQzcGu-fmJ`6_=wnC!xRG-DdS9c|;5`Ov;9B^rFFM*({In%r}?uzyM)#!FYe z!vgN**Y1UTT#xb9H!Da#(>K-!IpGfd9OowJ-hIXTd`LKO)IkBwHNR#6YM0ZL{`+3y z{!9MCeUx_)6}NH~-{uoGdspdn^1r*6dJuhe1TJ-4j*q$n_)sqgUF@p?aQPmZ@zu*? z<$G(&k$2A|w9EOrolw4OML+rOxeW1Mfq}ryzq=*?mpU2si|<5;7kppUEW0l1eG{G3ecSJnL1B$)t?94 z`wl^yUY`1u`zzy(5VRk-`_xtY^;G3W&X*k)fNt(QsQmixOM@u2Hz%~Al(bCnjMpVq!`B5Z7 zyGHGr^lvk72d>kIT}8XF8=Xrd-*+LS0qxQMQ~GTasO;n;^9RBGzh2t+NHYD{@r=gEXcPWUt_$~^Zcyln_isp!u~mxe&OEl zNq@EDd|NrM5A)0dG-kGDyfIguRC;eyXA0#Fuet?LPtUy@&{;NweqyzZ3JSn@zic=F zx*1y`7SQVQT>|-S>!0$dO{T85|V+-Soao`=w6Ft)&v#?sCyqvg-~Ov*fA(K; zVIulzDI?h~>sR{uJzy*7`tM2$B0yjshI>c!ZR$$fJx_o2P(e;-IC|I@PEA3Nr)OyKtEA`yVbxiuVL z{LUhMcVF^Z{f4XfRy@@V5I*fped6XHZU*?YGeKOp>e zAJ~un=B{}=K{x6pQhze<^`INYQ)&0wzB%+;tw&+*qh4e?UmkF_#}am^UEn11F4&gFUIoc?wc8d^qYm`Z>qkB z)T{kTetmJ|67cIMo+ki0-|gBBKI@hG4&80Nnf;7now+Y|!#0`Vb3f|86VQ&Vt^DN1 zDcYU&Q%TBk_p0x~wIL4{L7v@T{hbG`^slkNCH^)9w3Zd+I`x1Q?x#LXy^k1^4^f}m z+lpJhS{>W!HYaxMOON&;Isu2ILusCQ*;totpE(Z`_$hzc98m+ktlN z($B*H%@*~zPsYEu62Yf+Sgq`ET#J@yH#!Dx1YP(l5=L#^1?a4~&v z=dJ?3D{&Z5;^sKY@$wpfo~L)HsP>`Ktl8w3eAS0>rlxaVZlP~!pL*||(?K^U?PvT& zzE1x8>hI8qe8vlRY7N?#%qs!>`iuVbZ}(v>4El-NLw)axJPCA5Te*y|M2NCG ze?DV2@4q$x{gR4upCw=7x{Tw`7+AFZa*= ztrq>mx;Kt`7Ju1={<>X-`)dD}ZzA~h<5QI%ANh;tk$ptHzZrdAQI2+7{T&gzb;Xh7 z_pejCRg(K|44JO<(5^l8=jCDgqzT+dy|@2&V#+t=dYmWA`(qx4*@O12zcF|taPyba zT#s>QFZH7L9Ljl`pSE3rapfMc3D7OIM#YUPqdNh&W^dYn{$lrp=AX5afXm;vAaq*a zRd|i%Yg7-(~LWg+J^-t<@zswF(rV=k#l6o*l z{I2}-=8{>UTj#d$TsQ9KqMb<`-x>h9(PtSK#cwH3&cU7F7yk$Y)S4Y>MZPnQRNP*0 zhx=^*8MY2|YxVb(rw@LA9{c6^ne%ae&9w#Xuk+Y)sho$FwvYSn=2ZVr+1VA(_@w95!*R010;J0gRpxxPlPiRNhtAfGcciR5Tb(w!or2UE= z#DQ+LIMM+9tWoMaJzMSzz|HD;=vU^oQ_I08@sIuNf-i&Fes(bT!5M5bj>|b30lMrz z?a2A%;V|?w88~pd81Y z#q(YKXng?MkABK{;ml2Dd=h@Vjk{lj@LOzFSoIJSFr6PY*t!D%&UCB}0e z^jQID)hNAyaOt$Q7{_i@P|1^e1?Uo=rvchwhp9LH-}34lF`hEsc=ZL_-OF+1e#iZF zACzXCki3Ze`rR!LfV9hfaS!`xgH^n#>i>U|FEZ4+y9Ta7yP5Gr3j05GXQ7{Q=p&wg`uCmJ z0GBvHJz9DF|F6{_51kKN(r*wa!Dsbd&3)2CvPJ_pe{7mTc^%a644UQ@+K1RtB5YkbCJ?pR|kI zMW8#0C%Y3qElYl<&_c##vrbqz==#>&1Ho_Ur?LQL-pbw(k#Ftn6S?^LN?){Swa84*Q#N%ItTAc42gC$nkLR1)phb=6XdBCUEQUfEk3X z3R5p~jw-+GQFt)u#*ee87k9xO=4E<^q3jQP4uHIffdk05at7(n*gpa(FMp-BfO6i< z0G}5xoiXXugV-VUXXpQ!`qbN}&~Nl&C%9iy*BFET?y+ox^QflJ=J3edR`uncmoKWeT6lzfi!^y<{co6l))+Ldm!4`cf~N#x5+ivaZE zf%9tsdWylXl4ug8}6p zs{HxwVPU}K+*=4}oGp?SAkaE=ka?>)!6uY@%qaG|`F1Lx`66RIpqx+i1Ltri>Bg!Y z+$U{Vb3(iyfKRj3-vyBS+F0P$U!RNs#5)9`zfLCk0qs-#Iw=5ra?Syokrkqd7x>jC zztp`*H>RWj+PnM40DAXc<3-uo;KTeumwPAIXFoZk?EK((uFDYd zLO!H^w90Xr=x^~Go9_P)bAX-iyF`#z4Ohz*)!6I{(U;FV}J7s z^ChpYV^^xl{nwJeXWX?)Y8m9~w=Np}fc@bnaTdzV8(0rommmUWj?{^?{ulC^f09AOwi5w zE7W|R_t}AVci+53&|yEs!z)Y!lzSWZ%@{FuC)!c>1YPoI|9;+?0lHUDk~$IXNRN0+ zwSQAc*_po%@7&wFn*G0tW}JC_zsM-X{V`W9q8;c})!*@vy3HK$<6H)mdTSEKle*g^ z;P%w(v=_XW5EuVt`|`ay^7s#18&!^MLX8s*~RsF z^%$q&nZ}fJ?lR{u{zku%cN=vt?7Nt_rRRzQpX_HkQoH@t&1nPPWRTeW$dSAhXtU0m;dkPh`oSr%(N)Sdw-JqnL+y9Ts(Jm)Bpd)+62>Y1AEZ^>_~r?`abn6{z!YU6RL3ia=+ez z{_?KCeX%k|&IK;{@*=|fJ(oa^^q&go-Lp_1M7z^N{eK+ytu-0IjX%ovB)`9&B=N5| z=&(CL(G%w-af*H_?{M5FdB>#v8u>ai9@{P2a36L5K8ZilAGBhc1vyf;;yxL9kI_!7 zQ$KT`a390?5@+WD>ba9*3HvnRx#U*bOM9^8J`Fi?-c3Ne{47m?$5yS z4uE#kf6htXLcf(fI~#Pb{v_uW&wJEK&`;ix)j1UZSrqu(9M6H=w_>cM|m^^{Z*X<$Wj$<9KyCyVMe8f4RS%PkPHl#!s&f?WBG& zjr4~u$MNdLQooo3x;abzF1Gi6DfU1+w@1tz6d>*1JCmGu$-tdKJva{D&(PnhKT+9l z(MFvA>vOy7`^t_h$Ay4T;z%-}*eTa7?gcDYY%2A?)v{XW0jNd0|v z?cf0J=j%MJ$o8@5?<^R?xF+|;H1u;W7FkUw@B3(%_mRHj3u+w%x^{LU?M>odEO5E+ zj0Ti-Q*VZGm--g_;J#TkGjgNd9?*pA*FtVGf04Rvd;t1&isE?Uue5Ld?QRz7_i8G9 z`t{Ag9shkq@{$N5spD=zyYpZEQlE034g_7VaxIB)XcOYdYk_<3I`V$c z_2`fCaQ`IF%0jy~V=~w4UR)XP1OKWnv=^@)qdf}eI=p(B_ns>EV#=5L2IH6bzlu{y z#kqf|<4}I@2kbBB=xpF-@ez!RZiNx^FrL(bXxC;+1LE?%#dOjmhim|}``uedSg;Z0 zT2sE}J~=VTJeTGE)7H<=I3x9Rb#CNanN9k?w=w{A`MZt*81K#JoUh!Y7zd?(&i%0U zC9BByD9=pr*=wqd1CDbTxP0f(6u8uZyAYT6ap3xrj`TbI`I$|i8+{kk-XxD02HY7{ zg7fj-`z3GUx@7;u(cfxNCjor&ZpQdz{&$3Nz%rh$MZ1}&F7@Ls->US`>f#9Sd+&Z` z|4}CRUf1(Ry+J)l9d!o#`|C4em#OF{=K=RY)>|6wa?cwMi26UE)xWCRpD)i7m+y>H z$mh?m^*Xg^HD)W7>MgSf1V>vZ2gofd#`Z^qFdqz=P8 z!K;tS`zGyF-W7s5?xJ9x3vQcwG3aO94Pe~BI|thJvz<9#v0K`M)bA&OZpnKQppnsw z<2rjkiXuJldCIr$)ug^9-gA73b3M^+Pw7p&wM35rz^_+}2E=y(fXJJ`C;2AhmDT@2 z2ynUAO(Q%wp8F(qI;DpK>h~`3?umAJ2cZ8sZMIR4bE$Gt0Q%P}tNiHAh{@oSxJkNq zACfxVT<~ds*P@+z?;SEO^@F-K+TGF*M*)i8&w?EJer5`wo2$cg(B)iL@kH_y;{SZ2 z>_qeqT*l>kyzdB{zw68gUA|KY2K3^dKK{!E>_6zcI6!Azj=nzhuT+!!tHl;&KTp4M zE~))57)||3o~8V^c1`AkuygcBeouMXy*Mwamxh6E{S~hCB;RGReNc%}puhfJBmWv3 zbnpE}-gAP0yO*2N4)o2x#ev`3Pp=*<`4rddj%yKwcFFTOPx&rl1#qoQ(@e;b{Bk+_ zk6NnYW^B3Q%X|N~ytf1Yj>*Y$)?j_&gK1<$7`;vP`N37F+Nb@rKl3EK7gElTO&Oo@o`HUn=dA(6 zy&UagFUtWX9*zgyZdq_8=`k0^0*YVKZ={}0KSlilbcqMtC$IisHF%mx`l1G0r?LH~ zu|DB*?w{sfxINPVR>`bqtBC+M}Og{hjd+tYNdjXes5ynxYUkNKfaJg^q2GpCMOGdkK>;}(M zdH($671i*hs>|17g50elZ8Q>o&(U!OYEalm47yzUk7yW zoe=d(;Ks=gkv{Z0oXK-n-xi+&+{PAtpS>}6 z4BGJ>6YqKm)HMK&KF0~={g?hG^*o--&RdtcACec5ZoHfl z0e)A$&kevh{(GRla<^LN(YlFfx3cy{6aLpm`B~yg>QTN&8wI+=y(#E#z5HYXaLKEw z4{h;_5YqpzALwY8cOm+-yz_Biq`o;7bh&?qg5Uo9b|=Dw`)Q<4tfXa$={-Y zo2%8|$&&MzaaC&q@G=SjEY}*qep}88;yl13>Px78%KzZ+&&vvEI4f!RX zqF&^kdph{!oM=G)aXA_H<^5tkaIv>6K>1#V=RdwTBK=4<{a1ePYl~0Xy?843c%iU7 zqt=4o&W?`+biNvv0O-XxW4O(I^X?b&-SG>604Vh| z6VM&6{vVT;FOc@Dm+wixG72t@3_yGRV@e@&TKCOiv~xYS8tuaUUsdYQ>T^}uU9Ehy59jnp z^c&+)ofVLyIX@~tx!jZUx3VhF2HkzX72}w`_iT5}N8df0=cWGFI_lN=yAkJQB>irH z-^%-#aZnp|dKviLa!a`1Zrj?Mf!kk)Q=iV+6`Y^((K+s;eO3L=t2X`v&d2;9Os!{o zCfm(2`>7}0xkdSI_h(Z$Ud{#FPj_s2Wrr=^QsXr^MnBbZzm<(~wK}DU%RHB{-&~7+ zXMGnnhV50=JCB=ZB-g8byMzAg94$-v#{9C}U)_3(aajMpSTOooCkt7GzxJb^^~_;0 z!1X&Hj3cz(+6L&f_+}&dzKf#2*(KiQK5GdVdHxvlPKEn~PsYy%G+w-Qfc;*?(O;d* zop|nuy=-QC>FkAoTB)n);4{+l?+0!UN!SkP)auT8IY&z{&gjJ&Q14odPucaSr?}7d zy&_7#{cCMSKfP1$>5ylopQl}Eox0EtMZfBNKM{}xKCN)Y4dl!Bn0hr|RbKwd*HVt?iG22%Xxgh& z{z?@1WV|pyeZt4w7xCA0;98IWG5{^VAKA_X?zi3bqn+gM{WkTc7yXF*Mxmv&dna}$ z=a2p(phg_$Ux(|yVO(9-3O3m}( z)?nan(V5H9-)XJ>U#R`~ifM-Gcq`ZzgqJ?XW`>*{wcOUMHxn_XU<6nK_ z!S4)Fe}_r?thVyEpt>AK|8FGYnijTY0{HCj6O=xyhuGlL zp8b)AcHM86?)eSWoAzYgWYFyp^}91hm7>&-HKu=m(z|^`J=leMQ$G^tvMDd{&OSir z_Lv>ull>eD+^AqOej0fy(T?m!eG|z4f0(-R_?(Wff6;2GwM8lFqN=vqm0EHsweR~r z_I*hrL2Oqx#1bK~hZ_kIgxG4At5i|S53SP0RaI5ArK+Xqd%oX!uFw0|`J9r<30K-`*rWUJqP7h`918%*K_y16)V73{3+L0=CK^O>NJ^t z$KKhL_G84)oQ!h&q5d7cYLrGfz;BW7>Mq+*Z(TL%$J|W~*}t1Kf#Wjn>GvP1!ZGTl zopqP`XomhtzpK7`pW|~UT&CTcE&s_0zG_;?Qb40s5ZBE}*1zwz{@K5g<>?zIpkJ@O z&MT`Q8fkx7y7?TI7rU5D*r1r!?_YbSqMcLbLKBor+`x4(C$8nZ?Vi=yk3IFBBA~OX zPNE*!O<&Rd3_abD{C2%cdy{?>K}(Pz^MypMGW0ayvcsb*$y5yAGrId7UhWf5I=D#3efOQ zYx`PtLG#JgGCo_1#h+)Ma6db{9(=4) z&!zxkJwb1UdZAv{ zeJ!BOpX)FBvmN~GH=a|@5?_&@#F5ko@!Km=?-&h20L3qFMtghtCj)_-`OYq8dC1lb zl#8BB0WN-+>+Gy9k&bewZ(GXW?DxfH)O$4taNWG|mzM&!x83BrdF6hiJnczGwLh4f ze-Y}PU-C=>A8SX%MBskh;f@@~{_RtvQc!PZzS$e~#=duSd^aRY^PQWYa<=NvrJaah zr(H`tK)gejmsu}j8OuYeQlC}C7_OI$dkD&9|Ds*Ue$I7MNt?J2 zp*`xIqoX+wiC?Lg)~$w=n|butuxzRK>D)iRo(g(DF0!lE*$doW(lrxw;_o+-zERp% zK<`YG$$%0sr?I|jot{C0`{!z7OCHvXJY!Jq#q65_=+Do(rt=u8@E_Vw6?=<%tsF(BTbnx}2J>dMEyTiDCc6LA7rLk~g80vk$ z;pS`^O}@YA|3S1{Wyi9+?`fLL(C>Qu8@KIN;&<~rNcE1bUEj5GvO1wt>v7dg$xYP@eA5Q+? z^rk%QQJEuwOCE%JVBKy_KP2(;4)AfNe9eBX>HBGCvcGCOcvgzzcADzn;fkN2{@CB% znhSnz>(~giH-c|cZ{4H83Bau*Nz^O%pv&<%wKveu$T;cH|`Fqdv<1Jri`QxqjEJ-aSqIQQND|20!t4?NM)59jEt`vWnx7^KUxpRf^8P zn_s@n`AVEv1oW2GQrmyvd@TE>_Fr;tLpwR&Q%)lP(V!Q(Qr@s@;CAE<>a!|8p7WA@ zG!Et7v03yZcFpDUfIBa*>6VT1%U#G%{5koljA@%$zv6f->Wv=`(Vo5KGpHBHGoaqu z`+a}Z%lc0Plz3|apyUf^f960_uWyO#@hBJn%=NKL9;RPIoPcuiuN<$JXWtay&Z%;1 zgFwG&H~Gl9HUqdd@@K}u*00MIaJR^3>{s$L)OYKkm4x<^hofJUyc_3jraaZ_6o`Ah zkG>;6ugTQq;A2D$p`0Y|76#lKdYa>gK9k?i|5CoPZ%{s7;(L^XoO@_Lc9{~KhvaRx zfnMw-4A81FPRs3=Q_FxO{$YLmO!liz4kj*oO+Idrn-qlh=h{)v-4mBWf&2Rd_7AjI zWk+-dlz47FptY(?D4_j$5!$cOq*m`B&~2}pK)R2<)BH>7_ePQj*o1ml;%C(3oB`a< zh@_qwt@Za8yw(ee+vm;<0G*sm69MHsPI_}?^Rd8XpX^0Ayo~lozvQGGkT*lQ6|$A~ zW`DYa<3N6v^gXw8zcH>I<9dl-;rcnZ4h{^Gc21RhD@Yf$gM8(jLwk1OUrt52do`VU z&;cvN9UQo#}$7uA_(-`Hnc#!5w8D-zu+d zGv(~-ge_()#_X{$7~m zjp#>T#Np#kEdXCx|D~Y!{f-*3j(XwMJ<4iqaBFx1*U9VBj(X%hX}K2Vl8>_i?Zi#%0p07p z)&~jns^z5qiGObk+07BIG+UQ@6+yYp&Ym5ho@vqIqpXQy*gtj zfKKE*8o1~${h_KpZv^oY6KE%H;feHLa(|P?c7gi<)#NejC11| z=bgG8&hiGu$Y0_pwiEfzV0qdKtuLq6bN>}TO8#!a!Sow)E~K37|7s?H9{B|D6?!qf9j|AO>ZrS!2hzyewL2@Bp*TjHy^a(INeFJ zsVBzR$X)DrazU<-Ib%QdUCt-m=Oj-*8|~%%rPpztzR$O2=lOU^~$CwWN9!@q|UebaguxaaW> ze>s-pl6VX4 zI2i3@e~tlkHq{vmzIKzHv@1Ve_BywSBHieRv8YEp2He*}$>(z1V(*!#H{bgGUDCh& z)imJZ|GNVhKc($(#Y>66y{_$Mp2K7_-)Xt3 zZ6m-(ozuTx^ahR?1%9?^lHZH_`oQ?zv8O0!(WkZSKezt>O5=e3ze}-O%0=w60qTvW zbF|*(@0Jd}l8@4I%a@<_I^ zVzmC4eoyYb*=c zKVuGhpLS)up?}|R1^V^#Ozzxnx_uz8?w^O9uNqT-WZkLXVwbVtD{&6}wli{g1jeDB ze9n3L=MLPHaa`?w?1XwJ5Lb!c>kS8V_M$(?euX7#cek_&zPn?}Wepgi_pyc87I^LW_ zyYTlP#GT}S_GJf9@{sdEkNh6n$-MxetC%r z9Z=2-!EFEaOPrUSJ195raZ8R<_Qfr%mwg^k_Djl9-k;E)tF7nzpd9gTwm^wbwEbRB zpgqa^jman%KI~WSX~%-zyi$U46F)eY?P?Snf^ylPrvR68zP68Nr8J-Czfw+WfJb?% zu{rg63_VRcD}CHQN6=3oA185g6#3M-I|_WAQpXbj<^E<3pf@LfDBz1c%ERO(z>UZu z?8n~KbX_*;CEf-Uzc-WhlIH{N-z&*}PdUpy2G`Admf8(;a&99(r`-FLlQFxW?tjlY z#x)Y>v46S0WVyr<><{aN_HrLGmHp*A!S%qs7W$QYCi)q%TlzDJgX@rP#5dF@xp$^q zpF8fO;;rvmwU%9u91upsEBtSPq|L>5! zWuCSpxd$V?+!q8%y~M$^BghNovM;lpyff$lT=J`wliU+d0loMY+J*gGzjK!Jd>YE- zoj?enf$|ZkEy^!}mj0dFMMwH9>h<0NH?*GNVuz$1G+ng8fU%=-@e0p5}e>3i9 z(O%AZjLUE@06NKwuwS#quk>e`&fN1%YqpBb=Z5aGAFIik-Qi`SUXK z=>M6vzdVx)dhg)p9Jjne2avp>n3QEz0w z*M4&DiFNF6$y+@D<(x_Vbw7Aj+t+CQy&tvpGWAiFevR{xdDAWhr+h_THQ3*qSGm4^ zyb69O_xF9LSyA%$&$m{K)MWH4?*+PoPVy$S6XZEj?tQn1^Ot=t5jf6app!U3mp|>^ zg6#r%Fh7qe{*rQ#_cJTVr$9-{S@!4YpqF!cG}{I4cjf(5I_SioO(wm(KSI6eC(F%! zRVY8X_v1SI>uy~fNnG}M_G1)@S&DXU-CYa8#~-)o*%;!1cUhkCxEpY1!rLLB7r(&u zc582?f3g1T!ST7Bn~)FUPSD|A0MKmp59Mb5(Ukh-zb`Zk{kRBx@vapR`7pvC4y^?= z?p)?L<(_;(kf3s3(HKxISw(&K<5oYeLi~<;?=St%-isTo@xZ?CTyfF@Xw%gWByxAz6DB71C)4WC7>}ljB=89KspYPcXZh(ucCjq zC3YGQIzNx#u8&)ddU=-@4(PnTmv(9OyFkB%djpiKJoTf{PV&Tzudtt@T+VTvk2$MA zGt~R<^n@-LxStPl-fuPvxH0zx=c6#ty~wWx;$PXHXQLeF zAkfRcMt^R7k;QfL-x~f42mk|1Lp=7o0`A8e)9C!z}FBk#^K*-r9IfM%tETsOSS0xs_=$WQhK zZQmQKah&pgnD*c-9h4S?cE^LbFU!3U{i>PTnf?fQP4JQTX0$uW_s;>n#BYO8F7FHD z0sXv_852AU^|(Jnx!6DLUf!orZ`_$JY2R`m7(=@AZ-oNld<5w0HRR9oYq>H>H)0*_ z3g@o3tMF{=6kWxE8qa=nnPKc{}i(WU()l%l%$QwhO$Im3zziz(pPk z^`^WV0WSABv}-qm7G6AS>LigE@x_`T!Tom_IDY|`cRt+b%}bw9KfUfLl)s;s_Ve*p^;6NH7r&DQzIYc+er4KF zj$WDn(f-ZJ`#28!bRh42=dK=a(QvMhU08ny#65SFe%86MN9%X9zS^!!pQ8M|VG-=d zc9+p#sZQs1qCeZ}Itu+;B|5AFZuIL(e`tku<@lZJrx^EHMOqIgeQ-|7$9puKdZwN~ zX^8gTzK0u7Z|-RRF>tfmdhH*21+(1xz40El&&dyHy!l85twz19 z2mQD4Lu?9gqg^-JixY8=>t$Ed-{*46)}!8fzc!@*RlC|v1Yema`!lD#spYiA&J8~H z<-*(t+(C)EK&Ps-<^0VJ&REo&iTeIctxTYwP?vK}K)F$_Ir*xZ`n!uxnJWNv=d`;&E3E)H%BI*8(mfFRb)K*TFddi1M<=lun;e72%Kkr1jGgtpVf!Xd`>Z7%! z1pS%nyOHZ)r}Uo-IxFWz%H5c@nC+~*#pxearyg2I!{)1SG8x6%(7 zLt1Hn{ybjWTicHpa$GCxqyu`_LUs`5e2sE)R=&%9!YR{;`l>P#X-{Uu{fmQyUi#Sz zdNr=pQs74JWcowv&+S-dR$r1 zxIzz<+Y7$qJgwkyTo1d@KiYm|T%c3?PLrS0^%3>Wd2pva%AJJk@1woDGLz#s@ATBL zc-bW=_nLR-xYYUALx4M}JvX48m!!V~Y_*D;1Kb&LEf~;k@^ljD?A;HjKVsKmz+JaW z8tSduk({4rtk8N~Y#a5$-92X&=&VCJzbxa@axa}p|7tYU-|H4Ra$H8{Wzrj!>T+4h~pvQN!9>*(wdI{U_FGPJZi*1VnE_6%DXZm>V1I~gWSwT{66kkO>vOA2PP5k_$ zbU^quK&Q@O>ao~A<>QpyzB?QBRtvrEIj?j5>|p~og5G<&gY)vTwsZb6UdmtPwnm_x zF=k;K(76e}(@%OK$EUE}1A89o?RI}_Io$t%^AJ1L{=3mQ>eq{P=$5_{?Tr07Ie)QV z&d;u&v<7@cKW7pyI>7O`jplKD(m(A>>|!(8yT{|$k9p_3_MbH_)4!U}K3+`zzgM42 zx)aZA@RN1mykwuzc02Pr;o z?;H9T(Qn$DxB7j`*(;;t5qF->Q(5B*=<&DfruCq7ow4BKeOiJ0q8+kn8~S$+wV+=y zt5wo^l5&7?i5b^E1NFxKX^DW=*Zt`SREHabfqM!19hG@?8|_35d|8hx;rD4lpx4xRyMRTxtl&>57!dyqgc_3lLA-k|lIx1Ih;SJsbd zLjLX-IoA^JyPNa0)2oM(zUzFhqtz{)dZj8%<+v<&?tIdp2&Y|%opU@+=~H^#>J#?k zWMq-QUF8Dl?A=o-H#_xwY!JrNBroSJaR|pR`!?-U{3_Sg`1@WW={i=Wo*NCaL(#9< zAn-1&sJ`#FPku|g@!Fo%`&+lyN3h-ZQ#7Br6O1d2hWdM|_H82#eB38ZDAyPJ#Dq|- zZ;Q6}M0<%BC|~DEjd{TBCmG~p-I_%^Qf;1bU1cAmUAT{WP8a%h!_>cTwC@cZ zjB+E^qyMyW*NP+En+tk?ugcjc4$$0FITg?f#0L_WlE1a%i%Fn2YDTbMGxO$T;3`>v zAIs}|o_^0uF@o9t!sJjuCuPhAK=B9jNWXnJ?c2FsU^Z}T!?q06tKezWU%SK&`Von1 zx$aK*BJJ0%>F@8_%>w@mGpZi(3_P!snmQB%oj{n8=HO}bow5puf$xpSLNV&_t zv5x(o?8foAg=_c4c$}oq+oD|bg?i!E7)w2qc$oHYRqCA1b}Ne~13I_oaK911r2Tr$ zxk;>VRalSj;+LeC{W5{&_r6KZ#(3*|!FiiCbC9pmbVd!7%erv>>i&_%pf{Ji#(CJ` zuRMd@iafTU-0Hi6e!^-ra2DHDc))cr#J>`+SuhQB>dESHgco8ozi&QGVg0TqQ7E^& zPFMse>q))yj-24U%~1WjKq;StdSg#1&d2H7koyznOFpOfF9TGGZ%ibgob57!dnr@b z0~dMk25zrhHy^lB=@6luUt&?NE(Nol_))HltkWixJCE9Mf3mj}jb!^uKhu6O9=5Ar zfd0a)^bzd=@pKUQt4|z2_rx>uwLZ8$5%gZ~{(AsnPo$G`3UEv00O&+aqTFO39RpmQ zJi8He&b1zTpIP`O*HYxj8Box&BkUmB~Lv48i|H>1h#yRtU;;am%-M%4>vd67>!4!hAb#>-yxuEi|R_%8x< z&Y>gpU-q}RIUeJi-Q?^08TY|sj$6)iL(opnBeMbBqDwN+-u`wX4+i0npq(Puo+08LAOw?)oJ?B6vCF9n^PYdaE(-v*tNoR4}eaTfivoI7WtUba!n zL&ZL&AMzg9qd@Ok6WFiQcQ^YH|4;eLd7tYg_8N`$&dI^+0p;A+3lQgQv^QVx7zQZ& zP9)0J>p$s!uC>x~zOg3;_12Rj)FWB%DWr?&MY|R~;(R5pNFkp_54kQlcag4koXw*w5_^AH|@($ZZD7Rkb6GE6lukIW9k*62C!xlzoDB zjl2QcIX(6JX|<<*7I2A+IbN$;7Uv`91-+g_hEi_IEl9q8oUJ5YLcjjG$s1IX@{_oQ ze$5omKh<#u~2ABdZOIwqVu(K{$x4MK`3{x>Gy-?g+HjjzMi`!?sI(B zt$*f`@4n9C0G(G`%?=VM@iO^H-f1DqeZ7|R&3e>Z8TmJ%+$jDA=kE?Iy8*cPv(|vJ zKC~y}*00(xe0zI7+Ns-9lSo(P0`)}lSHvaW+Jt)NMx#VPZ}hBWKr8WOEtfA7beuS@ z0Oc%p$M$l5Xa|0hKck;@%CBa7W5oN^GyB>(+ND|gUG1;e&DuczN&PCKo#Y?5uSy=0 zeoXA0dg490#_{|1Cg+AlZ1?7ZShVw=d`5Y?Hv+$}Uho~;+e!OLC;pA=EbCMk^pbCz z#&%aq^Z;~645xjmO5yiyvy}d zBaYF2aGnQ$qr%tkv!9ijBMA%FWn-P;VdqYZ;)#OY{q>et`kNopW8e z&ffIDs5f@eXETDNT;fIU=icY3^p~#W@yI8inSgrnN72B&^7?-(CBIF7W;QQ97UdH6 z&1HRp{(YQNVl?G${yk|a+FReWUW|G<|1AV=2K3drxRdrHc~HH6PnvN5cf0EUzpyGi zm;!p)9|?^axu{1**pXr2=Umg@Q}xenW+~fYKe18NL%Vv-9cXV1IL-c@tQ2j>73R^k+R2iC67W}}_Nv9ur2@5#VrU!y-X-^$PRb{gf>`nUBI=OKCM5b~G(2vGEr<=(t~ z$!PC9kLP+yd_g_&O6qrYUj6zTK=0*wO8MD+t8D?jqXNIn4l3mxT$yf<)( z^R#{q8%zJ-WX`ogFaDF`Hn;cE`W)~(YG#wwXs0eb?@YS%W zP9Kf{G?qlC6TUr`^L0k_q91c^t)`sZ=fyZaC+n?&pi|AOP!A=46HHvJpfa0&o*F2d`{d$q_3V*yE?IezvL;51; zwf>*1&-Ie?9pgPGy)nmYe%;a61J2h!7y5Z>Z(w!G!(Sio`~S3_r2fEpyXnUj`tf@H z%Juc_T-JFb#^E)IqCQD}P|M-=)b1#^Z>Dgar^s*17k$!PC%Fk}KViIui_Z*L$KWRsDeqVrc=i}P! z&s~?B<>tY#9Vmys2BBW!RY12w64${j8$*4Q{hssk^Eqbnj|0)p`a3d?3A@QItE*@vPsnC<^qrw*+*D{mFiLs-rEcYev`hY@fYQ9)&0vxz4325t!FFia9%iXlm46Cl)uEIsce@zYzgQk zZ!w#2lzxXN=S{AUS2a=Z7lHi?@d(?67u^hci4*D1RBru0=@M5JM7b(*p6e~^wE^^U zuIobh>!;Kw+0SMZubQ9pk^6$hXoq(MC>K5L1>C=nbCbTBf^x~Pu3`Cv(8<893zMn8 zl0Oe+`EmW77x(0C8}*250L`gsoTu|3q#tm%=McRQo$DIU`qw+MU$6fm%1!)57|Na4 z1j@;5zHFi9QzaoA<+t>EdwX1J3UKk$b6B78ALZib$q*N#T<*n}vfaf79KYPlOam_a z0rzNMTJ3MQEaLc$w{PxX z`=^zA1WCQbdGwcJugih^_V8jK7yT#w>U8R}{iGbn>3*23+x=NS1oe^+;(p>C`+{;4 z|2+=;oDHX=0AHLxB9pmKh@J4<;w7hO`OAG9_^6ttI|E9*oJxHAJ<3($X39(AR_*uV zCUYHy?^Mu9UXlJs?n60GYwtTMNQ%WTcOqQ)Chf}pQoq|5y`dh7o{%1KJ?Pw<_4GRC z3{L|t@srlWKpxr8Lr6Tvd8k8`Sa0NwqP*qaWlpxV^WzPP>nR7hUn76jCYtu{GfaadmG_*529o;~<Q-tHu=x6P|i56t`ee_7?c$$d!dk^6?+x6mH3 zKcl_Vvpek!`6l+Ws|oeZvmViYa8Jx~xhEmK^$+88*@vTv{~h@Kc;N$-i(55zW)Q{| z_aoO?@(8p8vCFk6ch}8|K|6KlF4xb$Pw?+UC2rw*OMF55_O^DSovFW;Ek-+eS3te; zzL>{yi35pCeunbH`3n6=Jh_7Xv??49DCZwNzQDb=pKq4DzYTiiRY52BH}n&dhvE7o zZ-R1(duxKu?Y}J+5cd&;*LKZBy&btl`+?lG`VcSOjO*Z)9t;UZ-y_`SGqTJekjq8qgEWq90R*hx7zptFxMY~mv#%)D8>&d+1CN(|9G~54*MKoY5m;&%9Y zgni45C%p3m^+wJGdi)QD4n(=cBidf`7GF-f5*=m%%KiNEYyqMVQNZ2sqSRAkZ#?Z( z?xk9yT=G5S^CCW%JQ>O*Pe(nGd*gn@tF@R7=zO}E>mlzY$XDK@X@3^TCrCa!A{%tS zEm#M7bw>Yxk$-f!ohtoeC&^W>Plr)1QX|`hLtASDF35UQsUZ z%_x6~Te<#n|4BQNyykT9LB1Mvk`Gw|=#3w?3gtNW1?p2#ZkI1Yxym_-^HDwZcMI&i z@1}uH?!guT%6mfEv*VVgeB>OW_4>E6^GP=>!UjKcYLyf~IhQR4lzc>g)T>*$(*dn^ zgUQE_YmCNkHv^s5u`0(W_q_BI@_vwhO3n+L&<=haQ1av)Kkf<8&cFY0^ZdqjmpE|~ z%H{ng^-A)TwMZAZSC##qdMx<`g>wIWsC8o{=V5eP$^FRB^C9kM`*z*p$XDV+!uqM& z-v#y|>z@8UczKsZ`}OnncrOwp{n%|@<9f<@lJYZFor(k>UtZ3)f79N*q9vw)Ud~UP zC(iMpGyaMoU$^3H%2)JEuV==3>XEUlhF-^uEmwkG&WBOtA2>g#I@`AsZ}9PYKnV^{?4t_d>Z)S{Ta&T zo!(a9=KV^;hzCCmA?(zO^ukxii|NO+KxdC?uIEv$B=>vw)3rbH9nSOQp=f7k=Aa(i zk?(MyllL&xODFY*RJ51(019*xuW()D-NZbU8>RGjEyVv(o>t-l>XF0`^otVLaUHy( z4&^6#F7~IaGnB9CMz9~r^V81$-~E>j{t{1dJd!_YhW?FCyQr_mpNlA8xj$Kna{pW@ z?{&ujm-|fWgZRZU;3MyHiCgDi()+`23ud8Q?w{y~C1218?IeH4@f!ct()#h}fAlxF zM?pRE(17x;I1TN^9!3JXPb+hNvhNN8F8dPKN&Fb)=jZdi10xbqFYzq>C-e}wlednJ z$0aWtB)G&Sy1vkm4Z!7{1@%YvxoyPbE=?v~g#LbaCpLsYi0JH5v7CKi>!Se!L_8g7Y-{5v`}gbi#VXV*N8Xj89Pe|p0gvC}xFtVH z`8t*K_e9*c_tOqkz8o2#b6$?;Iy!TW$2HbK1E_t?^+S`BSvq1Kjc2GK)-KRt*G_2VAdMY*=x>Hu2$aRF~oQ6 z$wkD!2@Q4znL{s%jwdxRlwExi|ohRnJbO>e}i_Tz0>7h3h9k-;$~m{dpsGh zmiMz2%Sm@Go9nIa{l;;);jNR{E_EFB%(ZpC*jzb-{>52+i+r8FPsXCX9a(!EVc4g$ z0oAkz1Bqwo?>Cw67+fcFO;z&uDu?tU-T2v*vo(7w<1Djy39hewVNF-oFC0cYR5$+` zlr4OX53h1RahnBm{_cofn^Ere`=0h;ym4+l+Z{O+3}`>?F&_2KioD$cWt^FSW;y+x zeKjSRdSX1kO8;dH{girSm-~kDaek<{3H0t4PuCM3sh$)BJ_oN+&Q|!>JAhm7e@eMn z*XynWovNnadz<6V&_0!QWg+NP{hj**^^}J#Mw^``Hh9K~ZKc@)G*Q7r) zhVR#UUFwg8p!rV+uDAMd8tul* zvz+^dactOhw6mL!p8+_VGrOZe7oDL0PX(|US(<2=%> z)$h`+15eq`%%#8gCbh=)o{u<44%nU+#o!_a~UXF>} zhuz}~wf+>l-y8MD)lQVJ`$v=Zz-9lTzIw&`?gBrrU2TrrP6>@fy|*nU4(0ZxVO$5< zPbq(^zNhuAua4L3h!2;5&QT#VNME`Z*Hip$82C763UPi$Xl2eDd{J%;`7Rdp-uE{b z0XJ7}q25^U|G{xNBd({CE=ODZx0>a|YVk8Dob;>g(N2BQcNw4+h&NOL{eOgB zZ{rj4{deN>AgMPBRN4>Rd_HpkaG4kN!Tk6r*TwF(e>>{k@&kvW-udfwmOEFzC-fpO zah`V7la#Bq`wac1^IA67L-aoy?Yt>JQEqNhHTp~I(z4CqYwevzzTP+ExK73!DYSR> zqt25l`@~N6yQ|;(q|aHHdg*oiaSL$c=o-d7X6Xdlt8X{vfnLFEw?W^xt7hvr16NC4 zn+<3`PS^AaJ<>>b`Dcw69UY!6^}c<%?FOZw-gsJ=>+jTjy*KJ@SO4zIitVD;|9Khu zGw;X#v?~?xQ|`@?!_eMdH=Xw4J#IAz?aj(HCZOEBoI-iI^}Euqda5b)&wX=BY0ydB zybE-y&8hK#meGp#C;lJ|^|F6a@6_11MWnx*K|42pvRJQTnxvwg)9D@hL$z>NI`P*H z>XjY(1;=fjaqZshe&Jl%z8B?UFQoVV zvC&z-D^lw=Yk$0MI{mA0Qr~kJclGbBy=r9_puIV=8};0q(Qh7bl~#^+EPj=G;f9x_ zpLdhHk&oSB9@ocvFJlYnjqj`NAfLy%I{@0PZ&2RGkCQoWS^or-J9)2c0)$;;1D0Pr zlknzWI{>Yk!P5b~mD!{hyQJOu_Gq7ONq_E^`h#-BxrObA4v7G?ckSyG1U}!s987p; zb_mNKR^JRL&&&3p+#P;)7jUO+AYb-uMLKX}jQ(FD=nd#pi_U8S#ZS;b%l^H9bf28i z^ZUIy$0K^t9du%6v=e98uM0uvpF_;Vm$e*zEM9^9X58ku?W}L3fSZqcu44Q1lZd7Z4ZuQ4SJcYroW5|6at`E4TKyN$AhH^a1tEJiSr-w?@rV!Plzq(XUyXw+#pG zpC8;-DfFkZUi3@Or^nZ!-mEj7a`UbZO#@%?XY~KpKjviA+jFkaZp_vb>BpV+VO%d` zOfKrH#0`uSysP!*qrF$YCL!Wnw70$Xr9XH_FHAUryH_Ur0T3 ze|eMqo!R>To86?ov)NzgD}+Xm#Gci7g=*DHtar-UlE_*nEIze^*bLcZ~ZlBC+7j$ zsq<6JI^c3n;{5F?A8iHhmCVa_l9%8TPA??C@?&|)VosR;&)BhOdFXt$(lRdH26qf(ofpU4_pMHv&1%4uz#i$qk;yl%_ zL2R#9G^9Se>utR{fwA$?sCPr$$`v30X&rvVu zsd=PZufLP1UYSS#<|aqRkp562$6?;TruUD4U&Okh-tLjL0Z{hiS>U6*j%;s_Nu#{Y z?@F+}pTAOn|DgS;_+Pa1;}9$M9qN}=a~@!sc_(h1 zgnoVdu%EXd3S8nRj>r8k=WO(2B^T6ovF)d1;Ocx1>bEg6Qh{E*bTyiA_u6#Si+yn( zl82yPJ1-BS-FOerZ$!OavC|+x>!Y7i(awANx89fDxxn`Bq2bgcId6_fy?+jn{h9Xd zyt#21`K(>G0rlpV#2LVyy`|_!L=Q)@yu$(dCueZO2+}9~ZIiCxtPntR*aq!~yR_5x z*G9jmvWI=#3GLk#-_eh|i}$c!IfsrUpP)b4zr-Iz|kVP%K0eRk1) zfYu+6*`F%%9{nTE)u6NHmZbdryq4IjE^n{j-TCJe-)@XiA2QBzLsuoRpVrN^|BXLL z|K$#SiFSeWE&G33p&Ou_OQ;_bZ;e4a+0O@{+{&I558Nnul6ocavyF0R(ze-vz8*S@ zZz#}79xV;!*3Pf`0GE6!{ipcfSm183zQ0l1-(3zmIaiMY^rkJPKQK3zN(Szq)77ER z`l6jb4)5<-tANWnA)IvIUe&ix(#!3U$M?iAYbpGO*@nQuOHgUc!z-A&$r-Q0^FQ@n|AY7)xa^D6EANx7i+~$TMo$8i{F|0f?qB9-3+_ecq}(Kbwg$Mb@8(;D z9JYHyfA7z1T9R^>eUE%pAWv&Y4vIxP$+s>6y-NQt61e1J-ObJ_vd*0eLy`(q&;9<>?h!V%?kTw62Ett za!@xv*Lu5Z!wU3c-W{R!?&4px4=ewz380sJ3->AWw;CHk=bBlRw@NyY#&-Wc3k99i zpaI)Sp4>*cz47o=lpDLBMF5xc4#(vTt;P0sy#DTj=+%1Ccj!BX@QZ4V0j-9E7W-euD^4*T|DaTEkmd;e%veTM|;CQ1HO)Ndk*Q| zXvTH3oFgqzE_o)-%PLzw5xDGM>`(M*9P3{yGZ5{pcP_BK*+c(7jP*k-^+_cyAbgQ$ z8L=yZd;!i+tOoz4O1h^pBFy$RPit`n%O~zNg%b-PD1ij3U`iA^J%H_U>e%$T%8pk7TZ&QMKbkKDMABDk!*-JAd6>Zj1tE|CvMy~MNBLu*eoOEF1QTD}Oz%f&<%R>7ds)ig-1R2Qy|0eY4;%FhbADF#`Prbud583&mCFR7pO1bD z1$6dZqCfNVwQ7z2UoF{>-$A{cv$D`mZPo8{B`?AL?2wz?Q0^?ctL^T>*-X%zk8=+I zG?p}?yj8zOdOwkQk^WqEEb85kg<1eQ?+@vYa%=3*l)JMtZ86H>uL0HD#i=*gr+}M{ zQgwSdhX8l}oyd7f9*%yrQXVeQd zzN_XV_v+y9F3e565WUrUEaxGVo2{FXPV_Am{NaC5F7`AKxN%m0Zw~j|z-8a!{${$L za9@%0M>Oc&;8e;9c}LLs_Z;GvxqfngFadPtf*+{IPX145mvT;`J-8(%grc3hSAPf6 zJyo0YgTF$#`f4iWX)QfQIby!xC;5e7K&Q@8`XMKABS?u@6Zp*Js0PXdmYqEJkI`&V@t_bbt}quMUtna z-Z%@&YyH{!wO*&|b!UN}@q00@xBK2@+BNc1DEH$;H%)(!+K$LK3gvQM<2uPbOd9%i z>g`*Pa@I76KBSJ-Sq~ifDAdb&o9iz7I_*u)hlI|7Tj1ttFrr`_%r*&lmgeIRfW+KOVJ9*V6jgu_^tE z_<73T4BVrN{!^Y37tjuHE<(TdvD}=WSuW2s^yd~iMSGGwJN<*)OL83kK4LYD=laTd zM31X$t+C)E_avLpUi41uL114u7KhFx-$1_A>(+9*HaxXj&xI1t`IOx@w3-m|+`A71? zdS1iNMuE;hr&{ahP_N9j<+-0pUX=bq&RyDH@BAtP{LI_?k^m)N#Pvjf#3fz?v!fcoYh34H%b z@fR*X7khZKXQ&{zw%yza#i2FM}09%XLJ3Kj|ROp^I3QB^Y0t* zt_J0}pGUda6Z?}q1m`2`I*9cZ-b+Efxlg}e_AWHmcK4|niFy^Ba{}t!`Hi*x*8XrM zaNHN5Uhe5x@5S}h^B5aPdy@FG6X^W>t#w6zUqS9OIUe)yD`BjEoSXVA=R)e4n_X1< z?OpxGqh9ubjp#@A_3gmnmjLCSmG&X`=4q&xcT^m=Ft&JyA{Yk zfnM@!s{utnv|fumfy;id4(*+fVjSS+r?aT~i$dn#yuRAK_{N#1`^UnOt8 z1$5q+7PMR8&vlf1E9EKgOZ5Dw52nAC_YmtqFZp-&gL6+d`mMf6%Qf;6?MUL|fuO@a zPB^y87(j1d>QLf=cU@9X{<8nK%|?B#&*|^nRU5c(iCyaTi^xa6>b%=%HrmU39_|U02|^|H(P$$N+8z~%f;Kj)vz#1BP-Uh>qOuhU?}aNu$-)OJ() zBI69XXVdF^=>zid^IOjA@5h2(@{GmFf6kRmhL_{jojcHrLTV7n>DlQ=W2Oryr7cY}>#`@;YpX{5<)}`$F*b z^AG~lSuXcBDEHRr?_J`31j;2o;QGnEI_K$rufIQ!b!PpL8T1cUsV$*wU*mi{%4NUd z`gj%Iqr7C_pl4s|<<=xy0w3mGIO!7_m+W{_lws1ha=R~>WK?k!usB9LX zp9fQ`YK5U5c7bxq8&eWq%?Utw;5Daz8WMHlUxfM(B6L zvJb?g9o{LRoqujKf6fyLT;5sGo<%PwgU*>hhVzs6Q&WKZ@5kgGZ5HSyPyHdFap)cL zMZ810t4Wlv#7zx>n<;5}Ke*W00lnBg*W16(b_3^LY2P38vj5XR_~%qP|0SVZ=E3%! z`w!Pa-t|zvWiu}kd*cSn<-O2S(21Yr`g+atMUzj1hdWU& z`SjI*M*KnQhyRX8?vK{6d`vF-D`WV4?GFR_CCPKp&&xW7kY7R%t)FYg4?{a^#qvRb zFW&vMt4%*9?<^@-b!3tDYs()|59NL^67>GPoxH=9z0je(f3G0>`B;>Te_Rjfws^3L z@Q)@70p+|q1kmiXgX=7D4*4pxpq6Xk-V^t&pp(26*G24{cHpnC|87w3{X()eU;0<0 z@w^#mhj$4mH^)8E_SRAVZba@Cr=#2{IE(%I`==jI$-57(i{vGCfRDUC83<^nJ>+`2 z1;$X$5-(HFBrnDFa3$}>{^b2Hpxk?pV*B*wjK|flKs_=pRLUa1FSoGVw@1mJbA8>Bb=RWa zId_Zes+PSn8SU-Tvtm&$0VDmnIk5-z-3YtA1NBzBvebJ!`NJgAJq;m0Z_pXa(N56+ z_h#NKxeoPe(-*W$<59sl;MPxT7X#XPJJAlDu|IQtjn3cD?#*Z4Pe8rXXj1oVfku(K z)IXOTWuuW-U^(T{nF6csCQnU$MIMK)d{mz&t;;Sw1&+D(H++b9Vr@M(h81e5{f^C=a_szpbG6K6;yW;gzU8 zKS*%5@>;Hs+MSvJ+*=Vv`MP_z(Voo$+p^G3ZF}El`wFj31)cTx*=4|u|K;rhT=Yrv z%e`(5@ojrK9JEsJKUt-@ZR37?e~_s1$6F;B+B2Y z+K=Vx=6L#NX$7D?wISuHs{auW+$wZ?HQ|XrsMqF+B6{7o?bUuGx@Js}(0NZv5O=Q^ z;y9g?i=$C)AH77s?PPhBn=?Gv0Y7iB{{KZK`oQ)T615%_{WBD}b!F2$(21YoxSV=( zV}aY=x7;t>K_ghMWE`M39>vZ9bg!?Zp348@Qa+*=6H#s->Pk7o&jI(w7o3uf@~gwO zeh;0Q0o;lT)$6-HS3Kyf_sVfUG|K+I1@-Q|V9MKa7ixPLc!lk}b01R9_MTAfm&UBy ziT0{}1lL0?TTDOU#Kh6=?1t4gf}hH$*B{WT^MvbRv@rC1yVc{kjGhf6QEv{&Qy=`y zUH!;c{0QyI%zWG(<*MB4J3y!6s#9*N`Uv_DJ9Yaqlsnyv&j6jHVuA^O-a|VwE*5dEMZCY5q}|eBE(DoQFB49sR7>O=s{ohmPG1 z=q=4jxp~c3Q=hyom8ci$=HJoi$J)JT8R>&^rUA74xo8S-e;u6|{k?R5e>84*QK0kYR8A)SpZ%KxI*)%^&URxy zj01FA@1=d)Q(7(oF6%Udbg9X-cXj_`8@LhJXUuHs_b=^+weh$oBS3{XfHY^d_#e@z#o^;A=)EaDA);#r1xlUS zI27e}%$l_*w=d;d#rm^#S#F+~KNq-H;kA{Zvj*N74=8rYeyr82G`~FsxK75xsJi8P6Sd?^CoZFUJ#(3wnxvtTD&vr+t4Xdf=ek zU2u-&X8g~Yqzg`_+%30QI&f!dCF+yaHSYavjC11I-GCAgP;SQRmNS8SJJwR4WWS(X z%(=Pgmz)kqxqf2*iQp%Goc_}Lb~W`-;wjEk^s6!I?c}fYc=CLb3BFdzYmq3I|9$1S z+&}wM9ugl>9_}f{a`n0XeWQEq*-EsNeRcxcIaj;UzC^Agfm>bjXQAF%QG@zy)zQBf z6#b(AGdg$VIvbxI)N&|wbSm0;HE)EoUF9tLJLBEQp}-}MqFzb-$@v)lE9!MRu#0}s zeo&0|;2F8O&hE=wxIWf^zn7rB#995o-$>uI2vGEn{b4@=?i7BTe#1QQ8RsMZHx}h$ zKa`8zrw;AUs<@ZyDe(;FZ_ljFabRC2-@Q4gf7X?n+@G<2D3`cn44`#?w8n?$+eG?@ zpA5@JKllHn9=U7veXE&Lkp95!9?a&_kPb}Ko4NGc!xmcF^ zAmiFWzH{|=7_1L}-iZF}ke{fhqUYL<1N(%;6SQM*i9Yv9oS6lBx9_NEz!&?q?BBp; zALRTcP7KKgUFdqsA9{{@yIFJxl-mb?VSD$J1FW~6HRHOP4HgntYp!!Wos4;kd~;Rj zJncfC1*5%}|3Vy~Dph|u>YYQ?wLLGLKLfZIn@vCDEhy)J&dKT-&hn)>86VhhZWs&P z-1hBs)EmFLdR*I|Q@@oL&h=MEf1ZnaKc1I!5!X=_x=i^xuVru^M%y8@FWHYGK`;8K z^|}6G>bu0@$>`6Rev19N=LT^6e%xeDULApUYR_`ogpxyp{2+GZ(FJ}PC`EER*#4#&aKRjv!pwsHB7(g@0rQFoBblQXc+#nw} z=6C9cx9+NL_um-Wg?+Rw*VieWl#2E$6zL!!zDMu9_oJ6kQbGTo!z|g z;;E7P2IGzy8EJt}_LW^|m-AQy;Lguam49u&M?IRM(F;H~nhd5MjB7jjU9lJT_s%2s z<*OX86IPw`mU9c&N6#rf2L1JZ6=<)rKT~f)XIzIL}TM|H~_KkfcnE{ zBLR)?nsJ@A5wB985+8T?z!yK2d>AiqbJVVufX*MIXm94wZv37R$XCrMcNXM{zMF&3 zcvgECaEaGS{^0GIpu1g*aNZJ+hoN20b>jdfpW}S>YfYDtPxevJoim-Xft#1!QhD32 z>i085ejMn|N54@oX3we9!0+XIat>E|t9Dq~<;0rZ!EYSPKL=3aW;*yaf4^Kn_%EQf z*i!4zsLfK~&XZ$Ngw`a+KYdjL?rWAia=Z`x+g{wDc+%1fN~yI{jR^l z_$KFBHUH3w^fPZil{{cD<=4(fJCpn&9Q|cKRQlfai1X8~eLEj~+Rh{!?N*C_)wxIN z4#2(hrcvo6?NINrA%XPv>hDOrI)OV#{hhs5^9wbeS}m3RJT-@b->&!_7Ucu)am$B$D?ccpIgLa`uZiz;_bK$d8@_q1B`N13YRsq**?&kcY z4l>yfzKUJjkw5E4>I3H&;seL=yL$bXwg9)Yl4;L4XP_VADCl0^sl8Ta66p9Y+s9uY zg?6j?;#l(i@Q+%rGfil>dPEEA*N7~|yvL~%MgMXC7s2_+{zN{{zJJ2gMA2@e=brjjZLO_>&nCs*`Y1Rq- z#jdD7ebph#mGck%S@gFE?dGVDIA8Ped-Ox|zr-}s3(h6K=vS>{;i_vPU(UA^0X;n# zal=M{-`+ls{q2dzxvo;jT1NVF^*-2KeP7wj;O!ibeK?EpS?UC8Jz~o(gIx2KE`(lw zDsh_gmwIX$$TPk>wgi0I+_D^(=!bgOEA`^{+&Tle?oRY{+Jn>!xNcH6rM}%0Cz*HK zSNx1O7#HM9U5Ve3bAJ!uZmUw*&U#pub3*1Jy7rSZ1>Ap(CscCQm;~1 z97ViL4CRQvIX^r3QWohGZZZB^O|z)CygFZ#^D$_5%3fCS<9NmjAHLgfSp?`(KL`f& z>Kt}-679&VFG@X#-$5M-{bb*aXa95IYF!$ZY!BQ#-GKVh8t)iHd9&^$lm2$8VZfbX z*SJn%uN;TuWgLg`rux5563@u*G<;4wmwFq=E%`O|>})zpeVL=G(O%8PsYlMHyeXlC`qq*3 z8_8e8LHF!K>LQdc=hl%vp?mcjtS@l$bX(=mMtc>{-i@Umq+Yfaa%8_9OgOi2J;GIZd4$~$y@ zHRYv!#PP^EdMfyw>u)Epz51gxKtt;5pu2<4bH4V^x{5n{_H%uWbKNOl;?RfSlY0e@ z+nl|ha*T`uTwm|}Cg(NgX;RNHAs_Wh^pm?G|`&b72FspHK8-QCnw zt&{9az>T)=4*^7;0BE%>M7xx8#5|wia-LfWs9!sp3Ml9AZN!a-v=fO_+#j?O?db=` z>92#>uUi=7sGQe0emPf72i^FqUpU*dk172eo5pciQ@_sgOS?UPq_Tt5sM+8{egG(X zS;Kx}_ke~|knsR{4EX}}Bt3s;(~o|Ce9t&x4*j?V`QQ9(Bk1m?ouh%nPk~FERC(0S zB-))G_muO+JrMXrZ(I-Sc@X2U_2TI$(Cx5K=wEi>s?>u~uq5eHCus?}a&BD+=$=r& z<7J&sN&|8lpl=Cq4Ecbsi!IxKGs8?3SkEnz6FS~MouD|i} z3)DwmUAo}!VU!;_Fcb34%7v*n$?Li9Qm^g@x_v)pKKRV0KI%!%71W2(Bb9MN?q!0& zCwW~6;ri-}!7p*0-*=y6ECXHcgBBCEQ19ox`X}mjq`M=jPsu;1KiTh?hv3|bcBwbf zPNZH&ec>GB6S|l88mSozf$Jlq=*Ln|;kt|7qd}MZKCZvFZ%N)f7Ieu!)p+MEOD6t$ zla}OndoZq9w?1avLR}kleg8))URaN~j{3Sv+{jZs8flK_PU2A{tRempZ0?_qSk+df>s&7;98!7Jw zgD!QiMBvUlJC(krZU)@$)sW+sx-jMFTRO%v0Y`_1Q{w;a=cAvSl6|B){x??|?4n`f=cwydxR7oCl~^xd-EX%%NY*2Hm|ej`OrjzC`(6 zz0lmP{vVT9N7bL5q@LZR`lBFMzC%6REkYB4!!99DkBg_hNqu7h=yLw0eL2wu;(*Kf zgMMKL?ltuNyBN3hnc0l5p8niA6IMW;`P+aPK)KK1ek$YTzGr?mI0Ev_Kz=Xh4`rtk z4@s~8i;B04i)I4%&U@aykmL!9-l`Pic3wSw^>zB2`=Ao-O!jpp=lP8p7>8N#IqlXc zT2$#ZL;X&W)bmQ=JI<3&rU4>u0a}ZT#-X2gujZEep7!NT+@tid`)NG*Bp#?Z(RL=+ zLC#6kvy=6sjdo+*95t>v>UYni-nQ%m^T}r)5 z$q#Oofp)1&GA?Lm-(*~{4h-$#M}PkrO!|x5)2V&p*R3jkU4NV7lsuH{ioBHHDL*y^-;wxe1B$#@K&cmRM!T8u z!xTWT&hLHC9Gw#lKJDRh>c?F>A_%ygCxXE5P6?&H?aDV|fy@1*((|Imv=gWB>x=`) zhtW^&z33lC)lCzC=e2(}neB3aL%(#|e?U8QtibOQ{QPt=RGM^bff%=bCsBdd(e--yHrE-39 zFGPJyz7Pd|Id@XeVkgw2#LsZb+wRVV9K5dpF7aR~aBm;fCO;#;`Awxv&~aV`bdJm! z1St16tNjAy{wp3(;yLZYyN40`QT`ivx#?&<~m3{m2pqji|g#=4d$95v{$*0Yzux}_EX6B{MaZ^i}TlN z{6syJX8Iyeam&WcK^!t7kkX4{J=XZiSr!4 z-1k$TQYSDe_oHVCfKo?c9QN*Yoo1)GPr6#!RD4I`BJEV(ebIm2W_2?__v#=DQ%RS70?_j-@pG=Ty?ozL$Z^K>RC?O=h~JfbX%6`1ekBs^$gkLc{uS;Y zRvGn|9Q!c%#J*Ys_ufm$d5U^5n+E>w zTi$)4-MbfZlG@O}WuKUb{#xUzv>zjJXae|%@2?_n*|CcfJ(+T!VJ&aemTeJRG0gAM-nM zpU(Jc51Ynymij|$zwnEluSGw}FBwPVy(0B4=cBf0mppeEpw#L3UF-bxF~Fr>7X)ZF zIj{U^O%vLa?wc0l6S}-tqMz%5I)P^wl20=Z%l*+(^p|>_+Mja!hoYaJ(YvlXnf2Z?`vSf0F-ag6`dadG|_kZ^(FMHE2$|m;7r1r%x7X~TK1FZ*zTB%WgB;v5qrberO9PZVpL#QlbJVA& zU$fZoc<|@#qm$+k$2&6g!+RsNd*=&xY~^vlorCLRNG~{-aYF7H=$Crqf}D@+k8RNI zou}P74MW&Z@*}^J`!R8OKM7p&2DMK%tW0~5y1a^~2Zqw_AcyHt9|&tVDfKzpZdUiDbVF!f_CWL7rTG&QR^DG&vL&_o(evxt1108 zJ1`QsyffSmd3I>v?@{Njn+F`{bU?lQSn5skT&|y2m-GCMu&~@_rco?0*LK2K3IM5}&xwd++1q zUQOZW?(_qnKJx?RpAwJQ|8Q2eAN^mst?ckrWF+vsxK}Nm^Vdo^?B}hMz2_A5E_np? z?$wVa{?o3cE|LQ|*6GbL_>TVJZ`{Fn+XQnX;bZvhX`oI2u662NabJn20 z-t>JHZ?<=z3_kn2F>2k*IZ96D37f&^Bo?K9^sVEDfzR5jZwJ(hKUxLop0CGo8ty}{ zFJ`>3idR?$T=!@4`({0LpXRjxhyLZHd@&0B^ncaC3PYPrErb{~k zjXwu$@(Z-@)LF;&?my6f&5~!hPdoSjqJH$Fk<^#=ZST$CbKCD-PFTLRii_QUVEl8s z7vlJh%%uI0Yp%V_?_2hPXyE#c#`Dq7h+Y~4+-^BAnDESF>RmS{Wux6)7|(Sz-wdLk zYuipKeU!&~dawYmX)3(zdoVouk0UxzKwCrjITpK)Ql?Jcdgbgo^sZH~bAj30g-0o+(QMA==bGAn?)&N%8_FQeX-nELnh8@*$!+J7$&q8xkbnJmh) zqX@0?MRowUOZ>Oh2l!D)5ODLV`dwXP=!-jnTL+V;0qUbWj|QI=YaSqeqR&=9!*0g) z*EZbPhIV~IjT}Jx+}tI^x6R)GKKqvXzn5;60t-RcD*r*fd+T9#)VQvC!MQca|I}3L zy5L)`t8w;uD*OEq_&bj7>UUtx`O44qCl9mH&+{MA|8($Mzb|VAx|Xcol}kJIrW?0X zKsWAfWL(n&7v>XgxUm+{e0qcN*1ma|_AUB}0^J!FPQAf@{es&^*MtLF$y@2q zdTE>XW_?kU>uHwRs^&ZY4CB9XpvWZh$9&9oDz&RxHl?a#MG0g7MG2DCb?;W}!IM^i6uiBZ&(G5RIO5#zI; z(|y8cuUfwz{QAP{-aKgsMuo3(NS~XZbaUZQu8$S-G3DD|{k{n8Zu%$Gt6ljUj>8^V zi1FJx{ZcmCjjdG`>@_(7xLIVKve$#j%$vln83**9*(xt9+@I@g_4<7X`FE~Z2x#a2 zt^Dys8pki+kM@C{*uh4-yF}$j_7%1NiywDEyS8+q=CT@isEvElm zwg=Wr|EU<)N1J?*_TsGhhVwui2cI_%i7VW{wY^Wc4(`C@$c^=e{m)Z_o`@0{3=(G2V!uOa!hq9X}QPVxNpp66f2IzNXd^K>K0Li){Du zhT5S@?&UkQQ|p1v`6F(FPYZoft-s_O=r8*|^{O9QPP-I;o&-L7bEOQlYa4&(I!V6` zz@0I@RuI<9PyL$Zo(%%OHE#>~++`z|0GIr#Gx$vV=_cT2uMZfPjGL=zU;5kghoN0B za$`84*mDE$xqfGJc9vK1 zsoTtO;8sWfeDpKkcryb~>;L&`&?R20eKiozC7$jeU-F+^N4>(!S-{N&&8Tm^Z{U2s z;3@q_{I3t%?OktofIP_)2LMXmQ=V|HZ!@4f<@;E|+)&1GE%Las>$)GsgRWi5ngr-n z8pXI}*WN`v>z5}fzj-{DaoRdxd=2=F8`C)tL*la^c&onKK(|URoCw_Wf9suwY!|<# zTs`08EohhgYbf~jO_#XNl9#LX?NNpHW}ZDn`w;(~3qHg#^pm`AAfT)#Ko=ek=)?62KlR&hy~Pd)gWDunmY^q#a|`^I$>w2*St7>r9S<@PFkVtaqzVW@VSl3uZJAt z;x+oc`1fw$k|)hayBV4o4csmJkbZ5puEe-&4pYCIEcq4Z?=HU(1b#g}l;iU9LhDxU zHuN`QZ)5_RoomJc+SgN30rl)B>wLgV{Kx&@Fl$a@dwRoowig&pdoVw`Pk%Ds@5uGG ztHi7EcT&GIE9=bp>4laqhCJCfXH(9;d}>|3n6#aAXB_QV;wklGp6<-=8#5k9f!`|h zHTjL;)?5eKFGJa{P$TYV`s^{}GrRx5cYA@n=fB1DN{kC@ z%>MPrG#~g^e!mdVj9nKA=+rN+^qtgiJ#a6-mb{Je-5ZzWM@sL94ypXY>(}+W6u?J)b3gYb_oWY)qraSUCV(#IoH*df;{lzTl{*3&zhB_|j&KEUn2%k?27Zy2Q1<`<<&DH-syqMM*7R>i(c@g2L`d9^QHEJ*#?$4k)PWS>|2)8QRzzD+jK9;}oiTpy{6sQz6_41pZ6 zL+aK1YBJ?ndv?yn_hi1S0TD;|y+A!g;v@abE!2qPcADJbc=ZyWsrd5JG}?{UrZ91% z*JL%X!EbT>Eje#feqbJwFRTP^KfjwxdW+<-{N9}X^n1_VWIu^RyX;Sk2nVlGe)qC^ zUvC}n8bo^I5h>{JUOW;8sMq~h+4ab{bhJzU-3xT*tCYp$`?M+7T?^zPvfs4@pIx+C zDBA5dxyrsS*Hm^ivEF#lt#!vZKli(zI1VF_FKI>9yJyK;sYk7O`*Dyb`#9H0_8m2j zY3e>w;(a8)*K#1+t;c_6K)%$u<^bYchjyu#WdVBmkmN5u;7-@?!oer?C$6tEK64;& zoOjVK{>XJSSNzMks{b#7`jNWPAhf%Q$J4-Xn>`tiw6;|Tu;2O?jCXQAjzYW4D;3bo z6QsVu^*6Tnrr%ob$w`!Rc2+td&O3heYqXc+vbN0TIK|FBM7zZ02=WiS$aT^#n!(^l zodVDpF_Zg6Ufd4UExmf3`}7OyOX|doW7_{drT@D{)q8WP4<$p6=#%ScOx;L5XdNQC zFNoc9ep1h+J(>waLcs3^O{AWj0>#3CJ9TD}Py0Gz74bk^_2%cArLy^*rt0?^jpJuW zP|m>KjEnB|R~Pz3j@MuECMBoPBJLNW55@(jN0sH^a{}iVvxJocIa*pbu8ZVVlPRbB zFck*_^=3IIFCbsYZQ8TG%%Q$f_o2MNIn!;IO8poEy6`*5$Iy;*Dxe;+f%YYK&Gj(! z3e!P1hn|Qh-=g`_V7%HrLO6P5pmzC;h<&(9N)A)F0|t!1dyL7(bmxgBUj? zPN{i3m`;9c#?Va2H@kGD|Kr?)evaOf>n3%VS->UVSr0y`7pw|JNb1aeia^J4S?>ps2@_WWF{o~M2AAF7T zHBbJq0=ReH_w3g@$H;vO?baDEg???mvSm2rOMQX3)cLsHdTeEr^nPt=H{N;IIX@+a z^jkfsH@DtrYw3+LoEt(3^A}M5wD`0|IRh_pT(CE^+wbq>db&?mrV#(op8`HPf6WIjc@p(! zzw=-W=+=U#YCU9MM!U7>ebxT!5!$_Wvtlgh*q;DJ4_t5kqx$5RJYxyyazB#b1AIAw z`fz%GN`Di7$pzgzFG+s29=M$|lJ+R~J{J0$=ey8fr2dzMc8R0$fKt~8K|9U|q(7@R z1vu)EfRZmV9!Py|E^zJLFxt1&Pt<(J4V($Ob#V~a%lK+L{X^=H(@8J2BE%={&h{m% z0L7oC03tr1UB7v?HE_8nQtMr_@(j==Z{<43KF;}>D=V3jFh2cPrMSOjR_udDpA%VOG>9mvO=TP0_+ zJ-s3IBKJtIqrX!xKjV};{XiJnt*<`dex|3rOuImQ0H6EE_sWjGj+jBd|GtW2|4O4) z02e#nNIdI2p^-5@j(jhCOek@Kd5vvdF~KMEYJ+y~p2BT2j`73_twXz&b44+<8xikt zzGh~}t>~v|Wk#^SeSq`z?j2?P9FN?)(jJTr?P(_xrQBZ^ zyYlV@<@`b%_g3Wlrbb;rWBr@`0p0!cIBwi`_ym{p_DIm>{H^Ri_wPQSi`;R9wbgqW zvEM}S<*h@z0elOle~2zVdl+a1|zu@ln?({?P zlUTH4-k?i<&wX2qo1^TeRbS4-i=*b4Z<8snR&pr#?Z7$Rsl0@KEBU#y)6~|~lX3VS z{ZRZ~=_ycWk$XD&q2#T~-%jeZ6LVJ<<)W?+`QAB0^u7SN*(D>NL?)sd{XCK2R^BLtOwLuMvMgAteMSr z#4pgDBTcAh+?N8E`iz=yd>!`F8+2fN*555}qumZG#qr5`cPel6(+;5=Wo&SLACv`>YKQA8+F39=W z>s#alpWJ^eX8&KFDgLwtNx-#M%ejtbt!h!=llm{$SMCLa(JuKc*Teav0{c6q`cdyv z_il-HsVj1w8p0 zX63~C09U`G>|uHt+O6CxQZLrTDRa4EkV7uME zNiy2qF|RWI$+>Ph`f0=OM}zL%xvToGQSSz29xCqK+ej$!iv5j~`v2QMx2&eqg*J)SS=YdPSnaB2(fp>c=mht;;vnP~m=0BVQKCiAP=eB|DC-Dss z_xONL?k?)rSn*Le;NCsEp*uR zC#d)-^?u^}PqqLw@)uY_{QMO9uhe~lfy?<;^$+ONTR*9{l3(6OQE!reyy1tOKL;o~ z)GOoywBs?+(|+t8w1@btCviPi&Wa!kPTO)YAc_zSDv7`n9Fs zX(^RcL3dt0J{t7A`lFop$rq?AYR7(}-RGTiR(GI$^Pe6O=#RJ$e%X)Jejx9VK-a=o zQNHbWHvyM-bn%4VyOII*=r8Us&y=5p`zTl9WEaSjxWI9X-;qxn@!wMRk15M_vknK- z&ZQ0>1G>~rxG%^bBB}ZAuR?w~zph8SoI|^tLw>mT=_?-PiUXk=UO7<;2w?r*XN^ryo&gyFJfi*Lz6!YEAI^Qmt4~Y3%oC}OQ`kFu3F7cm! zC3QlzF5ADMKgm3}Pdl-14TT)ZpBQhQjmcsBULemC|E8U2J#W$ey}V0*;o?GmU-A<0 zi@uK@5-9husgx(@4${l~837#kQo!ATy*B~J`I@+#>xhSy3IZ;CjPve~naXZ|o|4A) zz&)JQ?dad`q-R`j?_SF|_$t3=zHucU{AR$9wf4PfuksFJHRMY@pY~+;Ys>YOyy7^< zE%`rj$rCfdC-s1)kb`$IfLh|H*?``=R=KC59`Qbf^nzQtUQ*}j<^%um``izV2aVYd zy@F5bveYN;Tfisp$rzX2;Svh{GXL0<9muMGzPbS}( zZ>bMCe@_E0_n3+=@J>hWrK3PM#x`!?6R5p(f%Yut(8ZwR+zz__NjuKhdv9yL-GTOm zcOc;N@;~kT*Uc&Cg|ZwU@=M@yzsGoBep7>SPrJNr3Hr%Bms+n9J{3>Lt)^YdeysdS z>U`+$ozL{Y%h0Y+FF}8)M{^w|&)|1Fzp=+1=J>t)9f`O6o|oU+(O++dTzSuw04Vpf zgpyCuPPJPT>qEZWlheQ4swHSg-n%<_*Lmk-d|%GD=&ducO*_rZWoxA(-ox8(^fNqXH$$81W68+n&lX!Ii+$(_JI@6f_ z<=l`CTwByC8~vqj%lIVkHR#7;SJaz!=o0-?-t%z(lY1D>SKpMN{LB5A@z0(*#D+Y( z=IM?6&cfvu40Wr+c|*Nvi7R~#tAv(o7R)-Y`jr}`?9rTKj&{PT(10i;$Lmq z|M>yx-5h$4`m%eh;`fY>Ew-TD7<`NJjDPFXUaX*>C{Hh=$DrMA_*NwOMx@bS^%7sv zPV`m((a+3JgO;)Vz0$M`C#)XV-EOsjalt)PkMnfCQ~x)^m^^Pd_|49L@O#>-i7WlU z7rw9o(D+jQ-(tJqxHZ7_{qweiU%%igJqK{7+W%-TX2REu2X^y2>EN?(4kPYvt3-d% zr*>pNbJ<>w-|Rj+g7W6C6`XG-`1H_~v@7}hw)McRchxb=;5{nJY* zeoxO=vO++&V_uJj;-EbSt~|S|3>}^9H;q_k9yU@t(|Wx){m~p8NxfSC9h(9Q2E!Y{G5-y^b^{vGqr0w$T0@AR(aY-!>C8Q^A9RsHEp`pFYWH$ zFl9f3dq;!c8gzs9shzI8jP1W|qu;neW8%^7I6ltbj8T7AZZ9a11G-lBHO3|L^GnpP zJ@GH<->7qaA>=q$)qRNl^CQLy_r0=ey(iC8>$81NDERF5?K1)Ob=$%qSL|*gaO3a6 zjQ@7OPFxRXL~b4OFa4wu_}m&_wgax08kq>(d3JayaEVJz0A1gG+K-v>9^6M23zwPPgs-SkY= z@0F7a!3TMuJ0XF;+YcJS^)jpK^T@w3nEtO-8bdoX3f!YyXV@azwO#SV49L-H)ZYeZ z7u!UCcf)<29rp#@T{Da8Dsh4RoR-ToKo`FaVZVr$DS&3PQ89kdo2lQ|v}*k_1$3=d zxeNJn=*Fxsm%hFJo*^^66DJE@uC(KdbrdJWRXS%GJ&W-D=y+ z0(2`5%mOq^n$)keU;TZcy{O_&(CuHBr}+iS_(ucRqZTN;?eQ=5j`#&S;wPZ{+cu8R z>fbyU{j9aGt95*35aqaq3y-6mHR|u-t)7c%ALcEK^VdGTok=+}?$X|MiTjWv`v&da z$~wpS8MW`w|IF9lWZW@6z07^b>SM3rcYjIZIv8!d_pPNxKA&cH1l(4}M+#vK%<}JK);%(exkL|HqIocnS6E z)`_>#Ztpr4K{)I`W%tjv@!aCL-8nxk>S-F<#V=;De^|y;Kyztj#sismIB?iE>DNAC z+;+=%q#mpvn)GGAX+Kh*dgU3zqepR6PEEMv#})RX&uRmM^M_+zf4Q+IkIRZ;(v8kav%Mt>?9D+^dc41JT5<_e@T3c^h18n zN;?7Vdn0K#W}VOk;CjpW6@bRLOUXWg?)8gYC&_1405{ry5esOR+ev@4_IyjdxoM}k zP9lf$;pgQ0y3GziFMn|=TnGj3*7=F!wjYd|OuVh1_T%}l#J^n74XwM<|FV-Iz_s9o zJ^g?W6KVs>?+{T>&O7Qp(y05wI?yG)F&vnM-y7`d)qyM&v)~vSrX2ep^?!@3sF&-Yzw@{-?Mf?_vm5-{#ea8#t~pJ)Zr1VXy+L=zU+28V{z8C@ zpDDlob$KNCCH~WY#oq}fzZnfayH6dix9sndv3*2~rH|;>_0Nw4oVH38n4U7NsfR5+YSSUA7> ze(&Wofam4gKmN>h)NcK!y;2CH z7Fghy_@eTzf)7WMKQ^23!TI!e%9FTA`-a_-zvb(U+j{T!sc-Fiixr^DIV%*|+$g^6+OhtcZVl4e!?{x7!ekZLz<(PjoBb0gp?bg1ti}A+vr)>kD*bU`d zk6-IWJdocxBWrWsa-J9qy7uGEcpv!nZ_~-Q=;i5v_U1)OUzyb=p#6rhQdd}oe&QGO6LVfjC~$XH&?4}e6E*71>C}Po%nkU7_Bj70wA9aF7*T8cHq1t=c&!08!4TK6Yd^LeQMj)|GO~Gccee)5ALb>Fm7Nh_?+Jx zFM}LwqB)uUq|O7}8@Kt)7y-IH{2l6FAF1B=Si2ffo}7DCe31N_{YwWkzFF6MtGG7g zSK6gMYA5|tfBzlUBj6w4cTX*ukMBvoqxQ)Ws~FF*-+(SZ_dN!DTIUHia4(J_E`aWw zt`ZNresV=g;O@X{*}%0C>lXu;b2#nK&A!|Nbf;3#TtLY;=Ad2T@-X1o?|?h~nkl>P za8kve%CXd^`|pSAz-Pvmjsl;oPY|GP6;b0Kk;Zw-{=Ei#dHLXX>hEs7aY!A>M7w>k zEbY*^`2(T(Pcg69;?1MVEXz;T;JN(=;!ychkf1))*E?Y19q zJ&cIYlzn~?F`Mlh#;#|3*C*7k)R$c<>Lh-_tu9lPJe%B)K!5?y@zp7@-7v3uCAMa zcBxM>PFTYOzw39cZZ`PEZh8aC`85@MPT(A2ln$N%x}2kwKR+y*jCQxy_;5fkFEaPt z8Uj8ues?bUA3V%KyR);-U_j%=ii-g4H@h-E=uM9^zGwme6uY6`Q8x#lcWy8Td>aN_ z=1030f1usl-+VWU^hb*_0FBRop+7sf^2hoFmwI}4KzIF_fq-((C7-_IL)w$9-#oTE zwa5F>{;0UpYu&^c;MTbwS%CWblPkez*yYGCIQgvxE3(lp=Rn$<*0TcpNj}7R>t{O* zM?Wi&$4Y%T7`XfKM1J3^TWeo!3KZw~o%B*0(4Ln!2kt+N z{_6ivY1@((fzNEUntpBlR&yP2?a%Fu6MEzxj>{?hS`6rtht~zP$6jE3*1Oyz-Of5f z`_y`?_hir)_?!=`&+~&naQ+rQnF-u!Rgv-7OzTfO6}{3wFdI|OFmN-|Cc%Y7rbEyyC z4NXrV{b1QCfRg7>UtWCB^7Y;TK5d#yzp{UtNhtYS6zGV<=;wa$V;pd+>W)}Ig2_4n@MyzyBxCUHJ; z-s60XvrTisFZGOA$k+dD9swx#eLA4n)ha;u_*3fLXi|^%DtRL3k2)y%=Jrwe-Z171 z)+Y7$2jXWOr{Qm8f=|v5v|p!5o8CTr=jr|!_Lq7!aLGTG0r&3rB!A@kSl<<(za#FV z-L0hl@0{JuqJLN)HsScScZzV|)Ae(+z=!)E$kpGvO1Y-bodLR5@z@Ex>oES5c z2loSA?opU8YxlZO2QK-(g?8=1ur7es*;D+E(<_Jer`5VZd3t!$UEsIc9id-&=YA)l z$9nX$pMI2qcAR_3cOr#$;FNuX-;;AH_bVs!1Nx&E|D|5M4*lgmrXQd_xc6lAH$zgx z0iB2HowOUMf695EcIcg(_0~4mTkLl!`+ek7^6z9(-#FJpuH<=K7q@u{j!SE){%@fD zLNV$=&KDd%>O0_5L(v?1y}rxsR=dUN}>v(YYg#`q(3&?xkib2`T-@rVBD z)x*5FVzy3R4L&3Dz-U4voc89egSlxc^;ueTXbx<8Hc^6pWs zpMGPUKwZ`+d{W<}9J9+!%F&M9;d;pZ$6&Nee9HxNqmq*$Pu6`7aQk+t2tdSPKx@(* zw&UI#xYK-Aq+g(S&t%T+6A8N8p!^)t3yhioX!YKd1t{k#`WNamr1!Ba02=#e%mu`K zB?63@;8@#+k?#rlWsmrN2{NNtrs(W-a*TeejTCz{%xbeq#0a_PPqO!;S=jcbc&%t*j-g2Llb3EI{u1Aqx?p@lc{h*KrT$lGBkfX;RWq;>#;CFzo zq%=mm+;1_jG^VWI2;9#3hVjqp_UC5cs4KGnq=F%U?xL5OPvHI&?WjM4F8u}p8ZWh4 z2k7i8!topLmF^2Z`-FP0>yB784!Ep8_3qWR=Q(O=F<(V$CxWd`xnsht3&{z!Yr zK8kj?WEk}$`84fPYg;V=bo1LsveQcs~Ac_+aBTD5&@-@Ejf`G!|Fw%(pR4gK6@Cpiwuzp0PBcL8=e zrAMjH`yszm8_IJ>Z<>XEQU^)_UGAMZPwl-p>esnlK-pu>)Bj+9wVrNLtqkUft%1u@LQYE)FAKAg);l6Bu{p{4fUc^uW1T z>(_V#aN~yhdtqk-GIug9QW?yoWd^UgKLA5TGh zUR;%TacFm9)};{2{)cw>BcPtujs7O}1nSc}FL?J#z`^I8`{bQb8gQf3gJFPj9~t69 zdyx|JNe?NsfOtLi|9`a#XO%t4y%pMJ|DpaR&M+?7pN|g#UGzT_{p5WGzlVGfxZSjA zI@;wvh4I5WS)TKedNA$QSry{>wTho5x^W$lzoWm?^i(Qg<_Bv5SeQu=f>>-zubdz-0~iyI&gWfLb~MlU4eV=Bivs~#G{|~@{tLE zQm3L{xc6>lg3ms*bO`8T-`#;roTS~zIfVAE%e@Kca(}xB(7Ifa>uJ6GZ8-a_oH-nH zBl}zS7klRV7$ed+Kkwa`^LlzW@HtmfIBvW09NLZ4A?Sbd?rjR>Nj{+bGB-}iE2Vxv zO7t1Z_6mpF13Jxqrk!Gc0&ac3VmzQ-<2#PenEQE@A9&zCLGp@7w7V@688=YJK)ci< zxi4A8%8}n#w3>e4J}E`}a$h{G?Du+$ag;Cb)Y$KiJ&iDsC&)dzns?xSz^*-se(t>| z$*XS^R=>L@b;}gU^X{3X4m%F=f*>N0GX_fEhOhX7^2n+v+LRhzr-3D;Iz_1y><$M(lDEIiZLwof86yl3kb3Nq!j?!btZ@3=f zPaLnrSNgFv!QD$TbQR9CC?~73ReH$DDPd$lzl1=$~`*xQI{pG za6#=Gga5H9H>ES@m3MBFI1RcMT68P;y*i!jb7AaXYU}{C%R7VhfO79m`SNa;^77sb zMtr9HXwZ%I=qK+pO0&Pb^CP_1JBaif>UR$0d`o|k`;nU-Vb|8LEedN7c zlX?pH;7;N1%GaywfCN*s*$36yg)?MdDZjRaltZ8d+Z$UwFi4xwGidjslSZ?vQ< z`}?ahp2$6OEcoP}k@BVf#r3nluf{kn^+eje)DKpIPwu@K554^x`xEH;e_zp#&G&2d zBi^Q^veUFpnZUL7U+)C8ez}n02mig!^i%hk`W*_l^F(DQZ98&YM!t%i_pSUk_;y+^ROoBt5cNf8s}8rG437m5K66yOUal_G&!Zyau>_`$xuAyS&MDcarvG zvtQv)xK8%!Q**&*Pb;?w(0KQ|R6sK%a|fVRszDz>?Z@~{egSq+BIAO7q#W(eI{YH_ z>qe{pH)ucW!0~How`0Mt_3lnP(|euY0y*ya-PEUjPu0P-FY9w(*RQ#=(QZu%)EU;Q z--WfCcFEy)n+@T7w2F0U|7Ml9dVntTo6LSE9NMRSbx<7n|LZ~fv{xMsC;o2}uCxA) zde`LEduI;%IUOoaC9M7-_d}<+`hO#O&S!f-*Keu(M;p?b@zQSX=einh75bIyv|A7P z+U@>R0Nt&sUSbxWHHq~3V@=3$-w*sw?4%0mz^%LUIBtDkMXrZ-Bb<8Dn#@=0HgvYq z-`&D0&I~=P`aM5GJvm=>;kujM@~QTl`KD9uMT_~RR>atg@4Np*4gj=YPa@sE``K*L z$2HwS_)-rW&}yRouZ>mo)N1mJ9(_XBC%(3d?FXuGpLXKZ{;U^YyBh7(AKDXm`?Tai8$?Z`DerottA+eNNxIj(W6)d>KUk8N*frx=*5Mw|2XWlp}UM zA9VRH?NYm2xQkCvTYskX+jl?++GU^L321c8n1*)u(_S%vTF_VA|IG3JC1|(CHrW8W zjAJOE)$?=uhx4d5_aWU(qCINct5NUH;nTtBr%hV2g#Gr(OKw4(+7}W)cY3M!G|n4W zXeaJlpN61a-?E0^gFk^!U-==|(+vNR2%MX>r_z~7Bdxf9rLQ4GiLtgEi_l^Rd7@EvP>hjg^tYtGZ|wCeYmZ|SG!(|+`- zqm&qnlnE~9btNzYS(|V->x67`kox*-bDLx zv(^9qGE46_!EZJEGXw2z*LxhdS@I$MOYD|*WqkYwoD^F5qK9Ja#ww)!d8{1 zh3#UT&?f}`zNWg5^RVj;kB5AHWF^K;D>jb%ukpP2GRhm@VJo2VL310>&3B38HA1Iw zAJ#4>?m~Zw_x;c=cCW^{?i%@>Y2CBXZhu-K3DDg)lH)K7PNY8>74C4IE&UknL*ng7 z@ab(kwxhg+8(dGP&ei>tb4tDEbL*6*{>*yzZ1NqwItT6UmYbBPbx`;9vQIFtaDHC2 z9effelwBS=Fc-M>)*;%Xy`l3e;QHH%v=b}oZ`!SsaAPLu=0Eop|A8u8U$O65exYl# zXYW9}_D%`zA9@@0_ZNDB%qeI$v;P}}c6-t~`jK1U_IluYAZ}{0&r`uC_BMn3fpv9e z49f+dws`ScKTBlyfa^_0DeUcl#+ zyGc7nyk`G*z77Ml&A|VK&e*mPxcFO=U!d6g5W;Yu+82)3pgq~W`f)x^-JiCgUC-XZ z^)|NOA#|%9px%rszidXk^}<2UTYk5U@z3y8%JB(ZpxXEQ4X2$TPocd0t76bDaf9>K z6L0dn=7q+z2m8|{{El6;fQpMBEL7ubU66ik7H!_0ay~0Y|J8>rTMpcvY15yKbvbIi zr=`+Q>~Yh!qdiY@=znhcx7Sf_AYYLAaDLWBi|Zlz z2Ipg3>B)IY{LLo6-^lb~JX?QDAS^y$DWKlzEy{BShH;;A?$l@ny0;HX+_3z>hIE#-$9PP z@vMrst>>l_UmW<|nQou3zqvh<`j&jj#`la;VVsv0$Y<<5uhIV8gg2;fv%0SYy%dGi>^N%xa3>Q z0nJtUX$Q`giwf@^#raActc7-GKoITGYTv7uUvTSEA%0h%x^NzFeQP%D7y1Y8{`)iw z{bYZQ1~eY5P5|Bdu_)t{(Xb}_i$AM*k8Q&F*`E}motV+})&8@8!T|QGxQFAiKE6^P zIQC!2HUE5M0Xo0EGYn8$dx7?1CT4Tp-Ch3eY;RGQdXfB$_HE1^&2@K{u3YAaoVV&x zFLtFueaV09_awsF7wBKk-(}Z>Pn-QR$1ibjCh>!tLIIuVnra;PiUgyd{%3=3pzBfN z+0U^nPX}(d`jmQfs~=JEr9(x|%g|n@9l$@y7nI2T)On{@Ja9R$a3032-xmTma$iaD z2{f}Ft|0&3m0^I+7Z12^xuYY=r$w|~3%cy99JibJKJ_eq#QjK@ydLfPFW;|b|A$p4 z02=M)ah%ret6W$2nel6Tb+-~!QnrHr8>ea4to$Kp%dy?rBd9n_i z7veT>Z-3Ovs(0+7SH>x$#nxqL*Lt<@fpIu7%_!Fx^hnWnsNa(?u8!b*tmkLA-jdg< zeIk$-OMHn#e{FEHG|01>kL>}7b1dQQ9~Th@_Cq6Gy?aBxL?F zQ8m)gF7pZ}tQPoPr;l%N{jEu_&-O{XzT_g~gSWrC9S2j7_UV^ZoD0NhvCjqIHy6dk z0!kc72K4F(nsbtI-~DC_*VCBTiF(QNk7DPQod@Es{(6x<=x=N)OMOeePkzapsSnfL z$-GE+@^hYYexFDF7oIQ<>LJ&a{0nuL_%V)&E0`}x-b%lge04GCa^6vT_@F=t`?p`R z3sBDA5rl6ia$h!j76@khX7zvUtZan|K=uEE?cuue1HA?PSv$Cis&#C?^C|5^_TM<*l3#HB+=uG#DWtxTMgCdCIZk)) zp!&cizvDW&+y9*iT-()R8ll7)!m)c&0rl1GBK?5g`8IlQ5b;I+5I`>wY#5u!Es2vjO!+GF%fd?@iA(Ab-%TNn|GhnuH+m=Iaa$))Tgnm;%LZ| zIHdS{o}!=Y{wKkpo82O4xBAcLsV}i}uA}U)Djo;&1j(z^`0muBe@h)8gX73)O~0`h zwG4wi@u&5mJ993N1C%_G`my(}&>ei*?|*O|CC^ZH^@n=Tula_qN4uS|L9KJ3 zz9{dPA|Oxp!6-oE&IXR#-9KR^aI;#Yf#`>QgfJk_&3~Qyi}*F|T!LqB#JF!CPNlu*SHGkFBtCOq66e)Cj-)egn#J1B#&@;x#|8mf)gzYTyXG;Q>*3CC ztn8%y4~syz&)sCZb5;Ewye9TY{>Q)3UfitdGa$#@Hks?I)hfk#+QZ7O1fMlEfpYB< zHpl5q`ffJp+N=8#&`;Kn{bYY)T#)@O0`2x^3#S5_-!^AFG0y!;zjNZx(eB*l>i-WK zm5+0NQkO8mFL@%zC3z6-1oaYpN6sIm&~7#RCIq-0GK%XU>&E$LLpyVS(2JK=`_T9f zYQ08esrlrzW}MgVpWu8XFIDrKU1S90Ngb5-Df>tle8=gX#`QG&4xs(pPwLV?%=x?N zkCK;80iS*1Q8J)AYBJ-g?AJ?xn+NVH|6cc|3Eb%QBG*&=cbQLcr(KC2fMV~FgvmYo z1EP*ZxZ`iG8{`pR`a11c_V;u@`b8F_-p$4{EwoF1!ST6;{$ZZx)p49((*BRC?~c!+ zc>X`7h@c1}NKrUMst6)YA^IFesY($Dog;)6Y7$67NjONQg^+|2O1O|p?;wgk2ci^3 z5J8lB2>1ak6h#n3zVm+XbG&}PzveZwvva#UWoKtMPjb;NcoO=#A;A%VP6PFx$(Y+f zt(VkaLAR%$r~T=d_fRj!w}&}@XU(OTMi_{nB&!~5yU4J!;`;GqBAm(ARU(rrAy)E@@$2_m*+2GUl z;CEYY&~F`5*d`d0}k~a64p?ibF%*SNp||p45YJ>@@9F>R3vj zH3R?GRPs5<)!taZ^$_?TaKuwUu>h-i2qv0O%dG|)fhI*Wr9&|hf-}lam`b(E{ z&|ma49Z;JeLpzrHj5zSwf3LJie>;9HaBaZrDPTiO=ko%bEaS6YZHk$YS(5*n7$h#Mle2wu{>PkUqM|~6!{s?G4 zQ*8{Ocdn50Y75exq(y$AYk~Qg_a{yS-Mc4nv}MY#n-wvR+ChCdf4lozx#%b7Nv@au zVkYU<>q*Qf&F|||4-(%aAkPe(LyW3J)Ows~LOv@YV?5fux}lu&CIOdwvUcoO?vFWu zaxchnx)&NP^9zo;JKHx+SOe(Y&!N7IcDa}1c(t~_<)U5Av$PXA&#wn=2j=azpF%&D zJgpFPGxra!w-uQ@w%N^cZ_xqy=IQA{dIng8wxP3m9 zcA$;i$hhTxIw_WX=Db8esh3dyPNzzfNtgZ12RVWBsu}w#_Zg|jsrf8>f_5+KM7ozZ z7)?j7V*iCl)jW1|p**oa<)^iORQ{H+jD8Hi1HWe7NCT8}z7OA(ydfL7oHHVU%e~o? zfO=FMU+NBOM5`0oW zYDRciy?3xL8?+a%zK?hVez7a+*)Cm%>t;SE#yE!k68-JiU(|Yh){^!mbs8J}%#@Xp zfO?q))PtPIx&H1X_4_r>qlJ{G7wjgVOtz))GO`-K-VAr(1`thYRCDBeltKf zjrwaz?>J{Oa9NM{fa4w>Q10_7N8k56{ZM`{b~NaE&;7JBkxM%gy|P{I1E?pne}o!e z;NDd3#S$Q2Ke~Jdpn3PwEXt93HlUXuTBF<2-;6JMuwDFYGTP<+0_U&QD#`I^Uo24b z_~07tQtHB-j}xfFc=?RnYtX+1=XfQ4%)$31pHHLQ8ci)gi4V%Jq^?i;$3Id(PPJbd zSG{_(8@HL`mG==GpZ0dVibq>pQQyu-$=tW(ewTT&jB_F6N!_8pU!ZgPDE-DByD$rM z>|3DgAJpagxW#XgE_T6r$+`Ihwg>Jd?EiWWBL46z=2>z+$ptQPG}{L`@0{j%MgDBy z;)hXyMzxV);FI$@zh?y3noj;orIJ85>{T)3JGqhTfjSCs^Vio}qh0Q;xNZ{1=>Kvb zNqd)j<<;Qx&H-{iaqnHo3*-qnk1{?Q8#pd^S)7V12Z|IN{_7gZM?DBo%N$sd-zzbm z>n86ura`_lwO=&pR`Ym3spsSY%K3)#k~}CGxDh^<`;p8?>8bzU14y5!{@zdI6te%v zl{juM-;?(WT*t?L!^3)_S@?B9qn6(qS^1}BigN1LA|rbI|tAmdG7%^qNf$W?E>|?80M8E&f8tQ zm3e?(I$7x>kUzLBf*2R&9-nsR)tk(XBMT_^Xde}qzo^Rj*k3=QJgFm$!1v^yZU~^% zFJl0$?cdI4zred4JFUz6z`grktwt-gJ^?*Q9hKjex7SgKb_#hmEf0qQ|58nvM0u(AI?L7a=*a!mwVYv@S*+==p-Db9I3x1 z0Y_b!{1p#zJsU!i}?dzHc z`c%I_>(jamfy=#H6ma87_4|zSeu?9gb0OoB^KotFIZ_YjdP#j!ty`;7oTqo5c8RICA612DN`aTw`=yhpF1(=N;?V>sxJ)%+tr_%?6s0bJq<T=Yh z#9z)Abz;a7yNd;MN{nwqSnhw+kKXz)=c6sX)f;l{@6H%#H^%ph2QKF`wH{J;BRzWo z_2=D}nbTj&0iV=ExIV}W!6)n2AJ7eJw;k=qf$;O#H|1SKD(G@w%X~-n(-^etMTa^8 zN_~s==&US5xyE(%`=Hv0!0+V*`dgQtP;vQuDD72W*`4|p{U<}d?0c&KJ-?9mL0n(2 z9_`gr#6R=F=jGROzTtNzpRPmt|N5@;LEhha)EnNhfR6WJq-R#=_wE1nW!!mu9~4@X zbXgaRd_T7=KtJz2qp@Bmznnuyq5bi_gyfyzllMoA-;#fpMLY5-_TN5JjjxJMJCOUn zbhJA^9UzqRGvl<}-&4PGFPw*d-g`1F)tUl+>{p;mKiZk>pVYIQx2SikT})r_;XWLE zIJW|de~$p&Dfd4$ua_q9d&s*$mv>OgFJ{FTfnW9q(!F>p`4a6@&SkV$uP)$>_-!@% z>w)uxoY#gB59Ez9YFFw5T;8Qj z1~k4JO?}F{+qcl}-5S8&}>uLhr4Vlwl2Yr!+w zz~MKL)cy?x;E zedY6!&3%wl{MH&kqj4uCU*0*PpPai!1DY*99z?#^zTkIp?+IM?jXc6~e=vU7#p=?Y z-NU<;eLpD1eP8lf&PU&swHEw(NO|TjazDlRCG{b$k1P4SU)r_O-K!Hi>i2`?zF);H z=g9=n<(%CeawLzL0qCrmmqGr(y_(c{)H+K&6YcW8cRirQUFrw#hk$$M42g%#JG{Ke z`SjXC$dkN+>mhZaaNyqiC+E*{{GR0Rv7ozweH3*p;=$*i1oZ0b`og2pf&S%uLbtlT zLI08c+5p|F(@S2Z#=Ei;{a5OYTqkq4`o9$N4wC!1+zX6EzsK(>{#L*LD(6-Df!wc# z<2%m8t6`LXIW7mdRcnrl1KzveS&x!HmvhEs@X0$V+P&0Ax!%^m-T9y!KeZbQDCg@p z!Ec4UF%h^srDXwdN9)Xd*^Ta^{3-1m?a;1JVF23QN1s!_M!SPE(NAm9l=fq-`>{K4 zqw*f+cjk8|P4L_QE?*9)ZJST~F|Hp``{1|g?USH>8{tZCYoDUs7(@SIJh1zX z??SoH&*yxM!7r+HZ9Osza?Rm|j34^0)+_kE=UPXC-<>x`+0Cby$>$comj}8tPvbt| ze$brXv0f?8b#s4sn)YrqZaNBb+`+NrcZ;eq572w`r5@cTH@W`$A@zT5&8uBWmmlh$ z$nR&BpdV-@`;pJpcC5yC^?z;UFAvtH0Jp<-Qohl_R`Ypw%39Fny9t2iYK{T#RPdI##$omNZ5nZdD2zpvh$Lisz_EdsRsPi{s(Yt#_6ZohAuK>Ct) z$)w*pNP99r&)Ejtxs~jzI@_z%dpVgmd6BPW~|3hntZ$#)t3h+{}1q zHGhkC0{aA?C3Xd9HaitXzVV|s6ZZFUe9rx<)Tb8Kopx-^`gj2N?FMtGKkKbT$}{?2 zU5$QXFI<1C#;!%+)0b&m0IkE1767`thjHBqdvc9I)UE>DqeRJ+VwiSX8OR_d6o~*ZK2MuZl^(vC+^h_DsJ4k$oaUXjxoP? z^WRo>a$_w0MgM9E{afsScI(XlTiL@)!@2JIoOb-4o4#xczH5$HIiKIV)%RsU{r-09 z-}qJCgXn*U)84HNjpKJq{1JtI#>uvvm%Xb6?LgaaD0|si$zuEUBb^}6*|8%RxK(z7 z8t?aYEzr#-b7)6q*Y@-)v&zf)?DutR_IGAi=l)=o7)*Zc**K0@tFec6Eq0bhxliY$ zL!S5#eAoFS#w z6VF&Q2T*T)igsarxI78C)9)wxgYjlX74N=Wq5Sark$z}5>XlXFKE2oWp?|pgJt5sF z$GBi*w;Kk!7oW{1HZx9mc5VGtF&T37UusZ4`l@d^4zd49=x0XVn1pu2EVdH3wPgk4 zf%%(y2Pb;sysf8mwt~+}FU|Edu3pRsztds4vWwJxv>z>2<)u#h-AZmCzPaDm5Hl~EFq6#-nkcY6@z>GiYJycSmBI=R1QhNE47p=?(` z@#}ej#%gunXdk*jKa};{%=UBY|Db3iVw65!+)KS%7v?PYqu&dcHv>M7qY@`5Z}-FP zfbOYBBLTH7IbFc#e%dV$Q1S+T*KBf!uNrb)EbAL(k4JWKowYAIZ(+OmFXTwR#qVfK)$i~cU$-W1L{FU#KKI8v zv@_#!b}snshEW?q7dxdr8yy#~11|Ba7obtKi185mCx3%E%Ro14bX^DBy495Xqt<#X z?N0pDWc$#gxq#O4YK-GDPWqkJtixvXGm5F-L(nhwh$r8(Q#gNXOdEdB{Glx4tULLy zNbsAnFHrC1uunOEr%9lGd?$+S`akOTMP*$XUz}e*pN@WRL1WHS;xO&js=k+YZ_n;X zzc4@TH4NW(bAP6t85K_}yDc%;M1OtjxDdhy3+U&1kovn2i7$-9`tz@F-tLn*QII41 zHSIalCxI?;h2L=os^7mi zDjmxMUHmea?L99g1Il=!0j+mCQLkP;?JmsY{3U;0;z#?MnX3Vf&(-@kJ7KDtUm&lM zd|dfWa5C-Os&iKPb=USWkndKV(v$tKWbOcz^BK=~dP=Z@l3#$&+IP7(+C?7i$X>FM z_AmRc@}GwzX%|klEZV=l@*Mp}#>e&W>`m)+bS~sc{9OxqdcVjp;KpkMxG#wQ=ugPQ zL3g5N(7)~Sb=7=j{Gh{+2yZu1^Z)c3?HzO@GJhKvjS?ZE!*KCzDD5_?vDKC2e(*P1>%AAHDf$lqsPBB1Qo9Eb66Ed59u z6-qyn^AF>$5x$dt;+DM3?@Ih0hJMzer{e%+eHr((x~H;%OPopb3osXaru0=cHHl{H5w( zALc3Nc|hcafLf{d^3g8#L%VXmZlU&#qq*6j>vh%tGnMnpBJhiS%mCdz@iOhz`B>G< zJbRJzt{U%-&YZuVsQ&(5@(1EL*F%oA{#*9flg8`Z#drd`YLokpPDwpz~e3pC%W z!F4cOd_lcB#TwE+tam=Pd!LpX@f3$WjwTBc$(vp z^D^fx~A;FKCHWUSD>G)%Q(UzrKnHIyLv;uAIpCErtd&E(mP z2hOAnj?0T1`rVOH;Iq2lrk=F8D{9_Fb2&b1<0mSvNE`&8-tP8T^826c?uYzRCzZX4 zK0%jrAN@=Gpf7NH#s9dT+QG`}!0$AAD;jibpZdEZWA1a*qxA;QRb!q=n_hg)McHg7kjccbmpk2H57RPPXJ+AVp3h|+k?{?`F zO?f@frvN%W%K)_hvN&J+@3D!bf73ADhjxkQfYxyJyQFs8yBx3azh85~C;5I6+9iLY zo}_N5=AU{?@s(dfz1zQ3WjyrO!@b^=@y9%&{@&MqkUtu79?!RwQ9$`ME71Ps`^1HB z3i+&{HfXn#MsOdqhSg#GkvfU8{|Przz~|VD7*F+Q{#*!t&!1)A9!Y%WzS)2hr>I}6 zx5II|`a84_*=H2JRXFz(sW(pqzw^QcCGW3_Tu-f>$$i>7H6h0*?e2}Sv@>gTZ;nIq zi)o?eMIz@47t_^`6|9iof)`RcG7b2yHzSD0e5nv)w}}rkjHh2 zK;2wRe~$4`>{H22`a#8sre|sAUfs@(EJgb>H~c|6avqeMgzx-6b&M_ep47`}C)TFT z%s-?K+>PV;DexXGP)F2j_fh&>xQ6~M^{DCSFXv(Ur}3yS+a(WF-;ufj+C>kAfRZm* zgx{u2^a-v_TRIC+&P~+6cg}R$eL+3DjkAWKUGk@~=qLWpbO zbz-(l{IK} zpt14;>fNj3J8eTaKdJjs?@}LB`kGt15dE}UMi*5U2QW|U8i96M*C@2Rdp4($FHjG0fBJO{+lL-i>$v(i6YW~< zUumaO=VH9JjWV=jz12nbm-`|5lf+jQ?_PPD!P2e*;>dnP&envf^=N3>h(<*yflU+T7uH&TC7b{yi+ zFJ!+|dG^iYTrV@adk*-;-jgZk&l-uq<$RY8+{+)Vy?@Y-+(pwlZ~cE2xgVJwpGX3q zJ@a+0n~^(R=_6kKe;1keG{_TsvMKke3vYv8w}SXxqrrWykG;7({aWq`LcwR3xt9j$ zG`PdKByorKEpdMo=#n2%zsCD(8HeOt%XO8yI{V9g^=j}*9h2)J`vdJ>>Ry?kn>R-? zUTXWUaUJYBTj?+Id(H3prQNDoR_QZPr+QqUI?;6=+I2afLXLgGw19j2qLcbtSI}jD zQ~6JW1*3s$rzY9plY6a|>jrNTA_eU@*8)l&5s7x~$FK-Mv2Vsd#1pj3{W$e!{Jx3yY1qqp zfY18-3HJBmI`SCsOT6oacJF>l&RvWvVsF&DT|blGH|CY-3qE_)VT=8)1b+9m-R^|Hb1Ae)8VLY-fM$JIGL{Jm_*?O+S}<=rXk12jl7hO8uPcA@%TK;M1gz#`cC$*}%n)xGsv_*ewNju8Lz5qVC-=W?lucQ4){belp^mAotm)6?o1maeZvY&T5 z4M9J-hf5~i9l&)JzokEW_f2x{Eke6jKh_ovRCX%&oS<9l#&N%K-YiGGO5HOFbSL+NgSnXMmzF6U!qCxP>x?(I2G#P5+epzIgPL{hx8j%U9*TVlnzjoXiE3^C9if zYa)cDet^@(Y_j_Icu{0|S?PUS*%5HJKMmeYzL< z5@vAyoIUFI0VU3=eM8;@q1{~j4EH6u?~U~d?)>vA<(anzasQF{I1_X^Pbj-R@G|43 zybIxcB+icFckXW=0Y0fa<^c+w@zH+GnvQmUYD8sDwG7OWsX?kvh+K z_J6Y??bA3KHw*3Z-bVS`t`;1p#3^OpCo6Nktw6m+yZi5Q@XI?4_Lp}uGl5GTE(mfZ z|D`l9-4^>9!M7Qo<=n&X$^WBV zhJMDeNs|DzS)XxUhSqHf`pG$veu4TW`RW%B0bSOc{xA1OTsL{wl*s;Hbmn~QoE-~* z%e_`%fS>x2a|hQ?^g#OK_fS=*tOmcls|*LfTdBoF;GSJeeihF4Jr`*AQtzX^N?o@A z{9Zn6Eqq}i`0&0Dble93>fe0D`FQUb^Z`Rs!Ds)oI}z=Y_YVW^nEz2Pu6csvk@t05 z(C$9@4E;gg^JTDK;2bOWRBmz4hz1?|H|Tf| z1c*8f`2u;RoV%02XQ%X3c0BdQ(w^kLf%~TR)*RXg@=fqd{GuMc_hhoq5w|jj66zHyQx8&4SN19G z=%+titiId)NMC$M;&dLM({bTgK#4bu7he4E-c87R6y=BYGmF6IK6QF6`47CzeZovv zf3GNY6WW>8qEVs`a*H+02A|gB_u;_hJl!8q54p)!I!BqinUwM^! z@bYf!Y|&)&M_vsmb@VCVlY3E)+gY{B23_{C@qkv3tBV2ct)rA4!IFs^Tvp8R=zcZgj{sKDQ`w&)nnd>TbajvVEPvP9g@2tPa zeZ)Gwhx(R!!BWcg;%DHUsP=bBj>nGpE*1UU?~bYOuRKS)m3Ks(m(-`Z&ay8?L5}l; zq2_U->vZ6fkM%=;?|kaL$I)6vk>8jwWES|m`oB3c;}QOzR?ev$ue>YbI(v0?V`A?F z$dfuC*H_*j(oZEnm;$={NxxbA-lE`bfLhn>9JjoiUPD~o2LZ}E-bH|q>wJ^`<9f*W zsZagLo-Dt#d-W-!{1Wa1df5xKFFofI#vidy+LK+o$71k%_rDUaqJew&WY*2&lkh#S zPAcy~X>XEeGX8jZ74Ff==iOs{^HnnO5s@mM$-7hF$R7Zu9x@Y9>bxWTzytT(QrDq9 z*uIM77duNL-;h!R0p(mA3MlunMS#Zr8nh!PrCyF-a5-;rTxQ^%mE_Z$r^Gw%3-X>$ z9Y{IzXP6+x4bZe7}bNb-JNH3I!v@0z_z3a5EUC2kfJ+IPw^1Xe9`j_@`KF|-|;kpSQ=kLC${_m8T zHIDI5d$^SI(?^$4ezGqk3;oP{*ST(5WOX&JR;dM`>+Mcv1G*PaaGkZ*4VRL?*JQhqbhfc>q^aJBwHO|kTFm5&FHXWqqc`$|Fvztfq zd-~CoXtX;o`nwYr&ttp!e91z{xBvOyLO^{(#t5`)Pb8`Jem;`((d(Av_sxbk`5n7v z9PLBvpx$ZQJ5KXE#^E%^Q8O%_er5a|F^lr*49bIi_j<~5;O3CP-!C29Px;#V>zu#d zqdxuE$`4)*e*K*KzmHmlw)9tb!%^C+@pTyWVFg950-vl;1M)ZQ`2?U{V$)PW=iBSb z|F_*4?gRau9FD^*4C1=F-TT|%(<)BOC4ZYi)VGxtME^AOlAMR$u;&)E+l?aU16rLA z(2vZV4ugGyJ6UDclJ0a(2Xupm)4$B@l+D1Mi5->z+A%fR-#M>-Z{6A!%<<@Z#%(~m zQM~0OA7Jy7jE6>>n;gGeIx81+tCc^Ia*Cg%-FoZfG#j-R?e@;MRlF%G#c^2cgW1pN z71I;_v|oeiU*<7Q`OR-TIe(*sdIw-vh#Ln!nb$@@{rQ%CAlDduI-dB=h&Rt54c^Vlp%8&GxOTn+r{5=#<{FQOf3LV7tG^&(TdVA#@v3mvPP{{m)vN zfOh@$`Jh|do6H8(&WEV={a_8ptEa2q<1h!M(ypz6@h#C$;uF^waRa!UewyFcZpAKz z95X+K?e^Rt#%n#{Xa@Mq%Xiee1lGZZd;(yeSk+??L#lU#RIeqmh%F`~zCZV6XGfdgr z&QisFf?LDX@9kT^?&tSpeDgs!(zBxg^_&>mh4||@^tT7Z(BF(1@!W6CJ!NPwR_0{d ziJ8=sayF_e3+E8~apNecbQtXIqe-E4L^1<)DPkl(e>UQY%t zc96yPqjjqIf!DrCdvO#gE zy3ejx_E7$CF8bNeo=XGNe@x>#xmI=M|9gXJ@813>{+f^P8Yd!@|2$QN{f)oX-%IHw z+S1SA37}tzH zd$mJ9<3Oy^;}iV{SI*Z%vF@O!>`P^1D`1m;qeAOMh{C z_vCksPKUct{@H4UfD#XBm-?;(%F)K$WPi7vdiSMY4yNBo|6P83e@~-{=;yRsyamwR zxJLO~^SoH#W@xJN-}|+OgWtWjv4H%qkD}e!H%c%sG4HD1De$>>V`l@m zw|1o+8kHMTpL*w$Gth2d-XDv0Cup$^DE6=X{>MgKS9esSNJ`NN6FxmKgeSo zGTyF4yK)2Tv;&D_v|pq1Jsa|k*rU{w>?`xZ z=UgnY8Fa1eH0npe4`%-|qb5O~*emC2 z?X43H+!%O;`jLEy{wi^R<280JXS{Jg+1~+tR^2@6%ldbXBCmdDdo!@f^`fGP1=qK)0^*-O8Q8ShO2Hng8w12xD4?eT?Vd@Qe z59r3(u1TO9!?tt%ktc%gG)zqZUG&IxLqForY+46s{@f-5d=d}2Z#sR4(|(1Xi*|R9 zs@ph$_i0*}W}JsxZzAPuL+Y#X9993P#?Vx~$=Ezut>47clORXmF^=;VyP)6dnenSY zm$=BdCwT|`PHW$680e4l>7#e10GIrg{$#c&mhKnaS*20m)~b+1v|~Rb-`#TL)5?qr z1>fU+Fu6hwaM=&JPiWy+RGbRr{SpT_AH72P<&^hC@5$h|vx6DmwV;yp12;$g?xnY% z*tPu}k3D!U`OJEolzj#EZ|m*_`n?m-y=(IOa!yh9cjY#}FZt?Ren0Ls zI{nt|){yfJ55K8^Acf;e7h zetYu6f4~R*0$TGr(B6zW>hF5BoHZ*zccLpPJHEM*`V>1M-M(~P*<)DEF_3SK%I0_E z954g@%(xh?pS654*V8EZ>wNG@p0}Pbd5g0DRa!D|ecl>=NAiv>z_p*%?@Mb*+qr(8 zp6tqpsSkMwp6mzT?ckMwV%I$Y-S{S3(chGOh4kNg@%#3HYFt09n){Y2W~HK9}lPxuf7@3ipmZle5C#^NaAQ5aAWEo`nlLC^`svPnG3po^MbOAVD+w7 zJD0*Z=8mq!amab85PWXp722mc;B<~paPh-wfKF!n2teuM-dZFDqS*-w2@+Iy!&c37b&@Ssqey2K~1r^tC2 z-4&mE1hhk9 z@<2yDhwXFAs5o-91=q6J{vn^) z;mT^XTQ|$?ggkBkH`IsJ)wo|dwNvTGQYYek^`Mi3z%T2O0O*|E9fN-22TK5*ZFllP z*Tz;~NcxO;?jx`-;IeRtL|0w4wYu1pV&FSBj@?Ge#i;QPwGkHM9r^(yE5&-)!V8#)w>ecL-Ld+Xcv7=1=O;R zD*IcNk>?jw^u3wwVKtd|p)Lzt{CXVeQnw}y)a~H^z_kP|gY?bJ>UU5iZ&PvX*Zs6Z zsgKewt@w;Lz^6YP83JgPa7RO)oWlnL8WpQ>T)5vryRj{W`Y;D>UkqHY*f|e;k_T`- zK`fHe{5r`y@IFR5##pr7n>X@GKXLwQESn$+*(dxfmiVQ80g zCjHuc_7nPrQKluwWgj}a0qu6HRIa<_bY*|9ZsJ}Jq28q~F~TQ&-u@%&NxwGQ9#-~p zeK+SV^`j|}=LYwu-FbCb=jO&_^cT5YH*a4t!nbFEF84%)+NwKho(DE^ACfu}^{a2& zoenghk!S?ibapw5JGIJf^d5x843hx}eVmpqUAi`2UofX}TwiuP%L(I^M} zdd>2&fD)gn53OK7{nLsGyl=^@K)-bA%ySA@6~FsgunC-OERH zXQM@YP%8aI>Sz3(*u^IHm--Le&-bEzdHD_O!v}eif1(}hP8g_9c;{oepQAiE$5Mad zZ~UHKn4JZFS&xa3BlU8nuRz`-bqubD_%qBN*-GvJNUg8gU?>@=C-#zbr=G=*jpd)>)SJ;fj_?YYUGu`TF?R5N=w| z^_P8w_H8G3n*_R6BC>-YFjk`-81>cPUzmr7P_7=xPms@$e~O=WB6i5{i(e=`)+|rl z3fu?kbB`+jZ5-}C@o>L1fP&+(s0wB)KfRgXf-;LD;tNoyVwwzGw zR+Dkvtnq+$slD(L`cNqM)rGA@{XQl~w1u?+R154o2CdEWU=?kl-(XmwjsKT;o@&hOn0=DJIL zJQ28@1GygFekFOnh3~s{MsYo*9`FYE#Lq^8Zuc3)I3wqnRltSLaZ28pOujLxoTqmV zaH@X5_+j?mPJ5BOg!1KFI2!%k-PdWS=E96w=r8*-<)W@a`Op5!`FrmZ7hsV(lM34NQA?HT$Tff!H0F?U<8~jq& z9ZNj0U+R&+liwcJlkrjNxYUE(k8>XKK7oFu$DK|>KN-(*Kyz>KVnDZJ!)3(Rr!cO` zxP5-K-&OxNTk?3?t>iOYAN$YSy}<9?^BLd9QoqI^zw)o3leBNy2WEiJj<6;|p5FRF zUqHLwamvx;zJ+omuL0fM7&H*jySK)@72D61B(CCj&UyvT;juA@EaozDEke>BdH_3$9{5O0B8>1!+9Hxn;E3v+Rb@t z+xJHSm%6Un_qN@k-&rL;p?%A}ViqWR;e79u{|UOxbxI5^2xbZ z#p8o_s86?W4davKbIZYp`X~GEz0(pa=70!td3C_4T_K zqQ8DDg!YK@3~+Pe8Woq~u1sZnQA}C%bLUq`2X0-zz6Q|!FSbAN0c%M2;+2sUPrtCQ zmY9ilEx7{s52^R3`vsN#l5gd)oom-ly`SU;IrzVqn_k@ly6jZr-M)Kk9(rsyBC*uKbHN2@|cf!@7wS$4Rkr5 zF>YzUr_rwMlCxD@yxT^_uXDj_{R8`z)VabbU-EcB`%F2G(=1++_9Fhz@yYu>Wha6B z(@5PC4}S5t5PVni`Uv7XPfenn3UMnzmpq$s*KUzRKQNvt&vDB6xB%^5y$|OQ;BL&# z`RFh839h>nUUMFBXO-3gQ0rTtaRKlB$af}!P|hRWebVfmALX6FV&YS_sP8XTe~;me z?ay_VcOdj5)HlH=?;>cQa-T}S)VtlJe)P5vX5%|%_bl2U>T=-M4{W5Jd-Vpbnfl!^ z_h`m)@QWRDp5lL;m%Lv{16}HFTu<3g)cl{CMmh3+N3DCH-lpx#p#R(6xDzXJzmvKl z=OyoV=3^XI;5;JhG@bGr=kx?!@UFm7hX*e2wrCGhhYSVouB*m%@#Gci49N zi_~q>L6>)Av}dWa5AdOXLYXC$vuyhW;BrsG_#}0*R-k+JS^ZvDMgQ!ZnV>t%D{#H# z{v`+fq@K$-Z`C;58@RQh$x`rn`;ojCSpi(`b2&e4=^bTPJ?@2rU*5I!0F?WYp@5Iy zfm}$-1uo~}seV8?w*r@QodsO)68O7=z`GsXQ=nbm8O{Wh{eU-+CcQz zTKcFj?;Zg6XXs~ITNV;Nx;_t3YcZU9^xgwXJ#sPnqy7LWc{bO@>OP8k@zzcJa4P!C zJI_2oX&(=07c^M{DCeE(fb#COv>$MLMj`PhdcOxK`UwVI z_$c`vA?ge4mwuY#^5!S?VzrM1-jSL|>!^L8@+jpWQddAf)cx=s{Y?&0;&0TOGq7h2+U33DD$wzc6}a~v z?{WNy9mjrhU&#Gj^428sZyZOzK)!)~IBx-JB|lJ5&Y6^#*n$4#)z!WFxp!Y8b&$c3 zXT5Vg641L(ko%%2_J3G{{wV%NT;E(U33Ovjs)}FoPM7_M#ZwRV^La`i@-7K<_smAd zYk6P5ad~xVFaAj#el+BX-;rP99p`5kmYGiaf3eh)_b%0tb13NYu9kY$1_YVFwPkA< zU$y({_sG3>15U=3L4IkrWE}vtFV*{R{g3|24k{d{KU?1eZ$YRGiQ3Kv6Ops_;5fY^wVVGr6w%HcZ^T}c^}Zq z8b-UfepmOvX1)JZ9?)n+INCM082!ySJ%H z8K?Bn2iwqYd~k3UQkScxESru*QaO) zdPF+)q5Dq)~E#djOX^plYjl>`NUHV+Jl+$V*zlx)5z^?f29(~WoDn} zIAp##K54gJ2<$_Lj&UD0+Fs%K?DBK_pr5(-BJIR_X(PvHto?)br+@xC`|CA>MuN|+ zlh+H-c+j47`$#s|*Q(t)A9Ve##w!4wHG4ObZ`wxgZ$?UG`iDENIKQJWOM4&fTJJg8 zJ^@BRUuFk$5pZ)x5baCragFO>)`_MZYmWN+8Y4p8b2#qiEtIpTfOhI!Q*~muc|FEu zd&VB_>)OC?av@hMaA}{Wvz_{ISFcxguz1r1$kA7I;ksH^{-ZtVN#9Zbvd+}MzEQo0 zF$SpLhj3nMr1V>Kg5!1il~C)_U!Ci;GEr0TUE@j|^(Vh$L3_5>rSQ9E^pQSj*RKuP zjqkf}sQQQAuQJy`uh=l0<65nLf5aWtiFPdG-b%WW%{c4sUKI^F=Fq2R0~&94qW+E1 zJE>1I>k{>8FKt1;GIxBJi2ho7O=a)xd>^5oe(@&biczZ_=c`Q{&;Hh&8q~9lhqzW$ zm-7%g`RJ#$>$wE-^iHkT16rZ2R{Pk;%N-5ke#&+viPktA63AxUZ!HazY?ewz5C0=u1GEWtb23=qMXcqa_PksluTWZ1_ zK&|T^jBCz2FLM3e)ZeKW<3!{~;5QdH=6CfWS{QJ>?AlGFKfOZfE3HF3W%=vHtDwofKEcR z$|s_9+L!ZYvkcJf|CQi68bdp9{q6tmrJ}#_P4Q$vtNhmyfLh4*BJk_6lhc6fzpPse zT-H(P^W|!jNw1#5?@0Wg3S8pFHu81r#{Eib@FTxxCiUR{?7sJYI@&ekJl7551nz_k zEkb{Na!EDcNcH>kPL-)#cj-^RuyXs&0>9OJ7uUx*vxDobuTt+9jl!u3l=IOW6A2%x z-NT;gw6K-rH}oWFQ;y-!emO5w|a_IZSDVkQE*&05n= zWq+g}7=72xWP47}T%WYtyOvTf=7Zvt=Y04I_2C?7LEOH-MCB*x-_lQHoeI#;eP_uO zKrN|@tJx)l207x+}xigHJE|AN@zKo}%obNmcf@maBK|`csRx zfnV~W>EO4cKcGEX(iUgW$a{)V94o&Dxwv}^O; zR&iJMPtYZAP~UmE8tKlWSt;ZT`AgZ+8;-KOX5Z5PjN%tbm-x>7%^DM%2Yy)}+Obxl z_EzBL6R#IQzCGo{B0#On6UvV+-dq9PxX@=7Vf3@{KC~}8mJVF@qhR3Xh<%JFl1C~0 z^Ve6BzjH5T7h$;r!Dl4q*?@Yjc%{c%)71AuTff2fKTl=?ntwk%%`ecYS$`Oywr+U= z=ytIBKe>9UwHdf`>(d;xOWu=6zAk%niO+rJ9kh%6@OxIqG_`;4-^Xzqd(`>P=pK{^ zKG_df09wU|5{iATV*lA+u4em0^-jtC%^=ytJ?zV!>D$G_8@$WYZ5m& zAIV!8SM>VplwY*Dr{dSHAM^b3UHjPclL3vto*c{X?Y>RFHt(gS1DA6L?LKy9jwXz@6zRd6|^b_pYkmsB{vK3JBE82nJTzBKEmy|vSs^2TnGK;v5`th+Gk1;Rs zdjWedu0ww}M*Y7$qvCIzk2ZYNF3=_4pq;u$&TjxN`vC1g{EGH!@2UR*9&k9su%amg&VMdgI3BZPJ)3+TKcIZ~&wa!te~Kqx zs=DWL8e6mn`|hO(@HE5+e-YzpUco+KXfb& zP|hvGKzDv@^B!UDPqRUneXs}c$96O@P^a$`N;@=vYP1FI#>a`YV<)pW^=&=>G2@{# zyrNpi(mRKP5B>zXa{lBxnM(%F050cqLg%l>)RW|ab3r$2gs63>xrhCn<5dzMM>{Zk z5#>Cr&bTW2Q1*SH679oXk&r{VO{y*clzl%G(0O((<=LNEYTtSN?JS?r%}4nv&nd2c z2g_Zh?v-U6%h7Hhh@w2>y?zCd{pC)dLZA> zmb{b+IkKPe`?CMe2A`Sg%moxZs`wK)hghFZp}jkz7xI1Eg>lMhkT?f&#IGU&^-(Lv zq22D_D!Y6#nQ>b7KNTn58p!YB91A|Fm&B3Z?4O1Ha$eA7y_JLc1NMCj+{B)q4*+eE1aNt%h;^w8`&to|4CM z{Uq)#Wc#y$_YskP+K*OU{au)>2ki{`9{8k=KwRGvPrZ0?NpDh>a>Z^ZfX}YmgX^jt z*`mgMdldaxyR?gZntaD6e3rRPtXp!xKQ2*Nti%m=K~ zXNLGOp5s-xKBn7_{^i+)bv7iJ{HF?OPg=Qf##u99CvrYi>;7K9DDYX~`ONQOPmt?Y z+e=*bxmVF{7k)y&aZCR_6zyiuc*Y5wZ_uutDK!dEzxw8Cv}?tl^8B6pu%^5~x^e46 z(zRh1ec%)Oq~A&0Q*rxPy4pu2UqiclbU4SMZB~D;YR>2Xg^_>5EAzqUq<_nKN?d0i;B0wg8rqG#lB>}!bwt{sb2LAk z^j}BBfUXBGjAi?!yUPi6^>>PT^@Ewf?b?UO`oY(!m4Y3gRqNWcW*q2JU&;kECk*Cz zj3@hZJofP3q}z-3QH~Q~I43 ztWUZw0WRk{`lr)lG40>37dH*F@fxO$> z$IWLS(hi-lW3+p>&Sm11AC+S?b-4`{NTT9+%rP z9{r4M>i>4?m8wh!pR@gPKhUL4F$=gp;XL)^Mm(BC{&%j^E}a+r+@~c@eF(bLZ`HaC z{-{6t$$5z1m%Mv2+I8)tR6wV7+EhTPyHS54w>bDEPg?@0#r?bu(1>_`4fw2!gJ@^A z(~N#6c|!r{$QRlEu*<{%Uycv_XG4@f|Jl1MaI@P{+J__OZ{ogNjGt0RqFl3T;cE0Z zJI?3)^$*qmkMZi}+L{+Op`YM|;IrP{&+kaxY6)jDBd-Bn>SSC8>Xk`4y-~Irmc!&U*F# z!L*vwGuU1*pL)_ix;YHE)Iak9^7ihdZK8Pq_aM&Lm$_d5+8eP0IwI)BpB5 zK&@;8#uxiwF8x*RaS}myOYclXKjY`pGXdTDeffPOzbW-1{u)mDh6O6_++Rz6w`}k# z^cQ;>3upxL1g+-}j59{`vy>zEFw}$dN~K1S1APIS=ILdstf0-eNtl;<(At*KlJtuiFeVUYYm4`4{|^fTtpTLj$tIyf2l}l%n!nM|yls{xw zUje%LeMuWo?t9vxpX3c(AE&*#r`AIL;yOvak9KUgxu@(lE@U0}7wh zNqKhUdfJt#FW~%~YELi@dU=$7sxEP@@%IVnk2)#(OFfhJCiOGMC+tUPM;t{v&dtE3 z9zuIIH@rf>k$A^A?(I`XU_aO7yukiH_F}tJqBX}Q_Y1UJIR~|)+I_*XAbC6 z@90gw(`RTW_L)2Jz$H#`-JMUqNd+$F)y07BsT1sv^Ro~5FMUt)0?SN658V;}Ul z$8VVfXcas=6VRyl?nKCu^^XITd*>8D>x-*XiSJ&;b=B*%uyj`$(VgdG$)Y zv3iFpb%m9nJM(_Y1C;zP5>WC7>Qy_ge(yo*6q$aZ%RR?Bw#&K$cY4N80513O)SuMF z`wMU4Df4uK7pu zw@TkBxw&uD*hIeId@!Am^+!Vg%UtOZ`?u!H`h6VeR^`E&Y`5nQpFkLvZPiz>>weh{ z>Ll`0Z_3tm^1F#$>j=KmWFh%*J~8n=vxe*|jDKY&+wJH+Hu=F$N`f6{S& zF!TOtxZ<+YqJ!)^c>7K1!5z9co_wfR%wj*>r^ybH|F0(<`-J$BHyL{#_K@~D)VtQO z9r>u*-OpFaKK(7#G#~7*>)7tpephl0n*FVKio8Vg5C8fhmEVirPlRnd$&MLMNM}4^ zf9rgyL4@9K9hVZK&M|`R{)e+OhzHl1-%0fAncp)E+b@&6aDSmV;hdj8l6cN+=ozJqeisZ%CyqEhj}ZElUD-e8r>S4NM$(IIm+<1y4nH4GI^JPO?!jX7 z_ldmkCLQrd^TqwCFywI zA$_neK-_I|>P5ov$-b)#**xbxiUE_)49oG!vsKZNM&I5nwJ3J?m9>uFD&-T+|e>aeS zNPg^}+MKNZVI$2G`;EtO5tr7HZf9MRefkwflya59!pfbu}YcWU5n&o{dz@t5$YAo*&lJE z7GZSGLtZ$B{c#T=|BK#JM0p?TF!FEI9i%VlEmi&ROqM^{7e7pAf1GOUc3EF`jXG8v(*1{Sm@5AL&kiBPJ(8Ku9rRFUEw;7S7g(0@}n-UeJ5~c zE6zmkF8oSgO(!4fX5$F4zYSEshil6Yk$1}Ok*_9^4*xWAIn+})&tq|*yYDPje6f33 z>KByC?oT@M>&1e|0|=epj;Dz~mbdUdgy=`l&n`qe>Ur{a>|;i6vHGdI*XhG{+=Iyf zVeg9Les*iqzf-?y90&W}c{w?+?BDGtItIcfv%`{bYSFoIOr zL;Cc;?kBs8^zAzz$p8J#|DmeK$_Z;oSw{}MsA?k?w9`vR4;C`bn>DU)Wi$4~p-4F8S6Sr@E za|0prt9gR|EH`prT`phk3kGQ&$h*c74<}aE`1F6_=N-ipyjwH!STaO@fc#u`Yjt>W zEcp=678e3qJBrOG4ED7)@`&#B1}EjHz4mm?3-ylz;_lVtJVMkRjXrlh+%b;yvi4J? z<2=`oIOD14Kh#epMBXp?;vPr-3xCx<;v7A%{2cxxe+lEv?+qc3h~lW^5anOE*HT>c z(*Dr85f@u?e6MAB*^iw(KEIH7bg#T?Qaaml-zqsqaWL9PxX-D7VmZwx`1~vFA2?S{ zP`{_bHCSLCtFh$D{4j`6Nk^NsE&ac?VsWj@96ac|X! z{K2lFsf4`86FqtSbHouRrEk*Ro9S@_r|05K(!OeKO>Iit z3GR^H_}xC7N<1vnE+LNe-;2n;ycYkN_Uw{cpZ)Wzl1t#_Y8^pdn{4uX)hDkew4OY$ zh%i{RCxa04P`vR$fAkxD2lDSM`Xfig?;Oc(M%=EIuu`zsr?R(jXz5|XW8?W%WB)I> zs`c{&{{0IyFZW{W9OCYvHx?2?560fg z_fg#PM_)>0f5=(;2<%OE9{$xpe((JLo%9BO(s=%|S0|I-Dp^tMh5bs-?)^V$zFz!| zCVnm|qw#_}Hph$qbRFr->h$>-&Lf!gkjAx-&NhBrwz$?6-u=c)-m_7~^5#j-bR;U8unJ3eC? z+p%uR-On!BS$O=W0z$XyWyKwgBRdWseP8xuE%{G+^C~UxFaEXPY5s_7TCcZwTYb?x zPnVp6HMP7rjAv&(VC2~ReHdHKKh z;CRlyO$!L^FNbNJ-po7OsJ*lKdk`ykt=0j1)3{;J$K)TuoP95guhi&Gf-~=QIZn8L zh2p5^UC1Ea3Wi7ze)lxRTYKD6?Gskfley%#+x@kid`_wDMxV)+@L=Z0UD@s*KQmD6 zr}xDZVn2~xgew+`-_1H?;%v#GvJZS${^+)NW+nS$-SgPbTQkeVjWg!|75L>}SN;+V zZLf7Zrz%R0cG3dr-AP$9N&Pdh>)P%T`J3!;wwax#fbvNf3z2y!NzhCQ=<52NRljkK@(9DYe~lbR{nDGbv-g%nLO;Ex z@&>2$Ala?k`YXkOp!qM_Z>&>E!lV7uj`@Mt{%Ng``2okVW{o%g(Qxomjen}*)?KQvfz&foreD_xQfp^DEil1JIosy4Tw!h}*)PGfWiv3xBZ?`-r zKKsCS>Cx_9VI{{6W>hrm7@xI<-wPJ4l79Wy2Jh1M+dn-+^!Danz#Z3U9dT=2W62Tg zQ~YvYPnJK2;oTa?9o$X(IrNx7ez)$4*@DX#$Ucx4$_}jiRwZlvUDIUO;l|VX#GOOG z%3tjhHKix)zmmVdq?N`;+}$3>c^onITlZL6d*aYbBKt#ba|G=trGLgH;?C^7@^ko& z>>KfK1N+&xl$HMMvdmx!*;P z@=a?*%T$i<%p59c1#OJKl(=2;aVlJB!*;*nn~F=;;^rDZ_mszujbOK8~Bznd2fpjv};H{UE;y8@?d^VBZzN@QeLB zIF2`Is_e?^w=Z9~-C+WueQTPD&n0%=!EtQlk)%6^|K22+Uw10$Zk4tZ2@xk2i9XR0 z#QvlCBJZ!j_8@h^9#HDPxcWu*f04b50t#UQ(uhZd;+UlHX-ug4V;hryt!uyZ%>t6+`nh5 z9eIlE!S%nLM}Bv1?@@%#4}0`I=b-t&BmUPtjoh;iNxq0bEjg}ze7?pH)1KT!oaZ;f z;JTcN9LK%Vuz)ZqeCs9B!(&G^j#n*9@!cz3Vj=1NyZt1$DBnl^vX=dL?qa+9n0e;~ zT=I6T&lafP7x#`)`;~?oCm42%8EH_>)H7XU*@WB0tghy^(Da`CXhZXK@@act!FI&m5XbI{irW z@46d%`sz)6ANiq~hx?I{bB((4GyhC+$;C}xH;4Uj{+q#Z?0c3;|A=GrNXNdMEP565 ze`A8xIY!P`n=dEbeWui4@*)1tB*cD_M>_J%HNY)3!I3Fkx2Ke7X- z=;R#nzjs;CZj+&T_-7s%%6>fO5aL`XdqVqs@`vBNu66joZd}iH``90INw;rK(SC1N zi@gVJUTg*1oxJO`E~|6)Z1On`#!60M`9AUktNqX2$j5U(A@YXKg!b~Ewh;#Hza9`r zdMppMwpElqS-&9NdG2Lne+P49KT-aOxRJzmJLmm4LjUf&mlpy;Kl%>#YxTqVPVou( zk>u>Z-9zKzJSjTjsrDnpw`m&ZX7m3!g1zQtymfcu~p4U2@ zZEweO9B0kf#?FhI`#F2X>dvHxS?2#XA}^c7ah$%BjNFHB&1F0EmPdNf=x@yx>^IZkWY!os4S336V#L&)q!H#HBJD zSCQZOFmno_cY2EAR`B}^>gPRa{x63OyJ!D!VEhvCo%%w49sb(R$f3cD(zo5sQ=GxR ztM#CsCBJ4pj{WUnua9Sc?Dn0#t?Z_UF$`@Z@97x&7(0-TpPuG49m_CNpRxeWG)e<^+ir>hCtFI<#7yqVP} zu-#wYaRdALTRu$|9;^SsZkv$qr93~8(AqI`I3e?O@>y@+K8Mg-bY(ta&^BuTA@*0< z1MRJlcuqoVLVy3CCO@R{m_p?9h2we!h-wWjL z$mg}r@bBMbZ;*SU_>LWo7hhyYt8*kDfA@shr2AKYNr~e)h(pA&u4Tl7qKD*nVev9+ zh~r#6i4cBw?R(@$eAhhvqt2pvIi<`yNaVXI9M`V=Onbs8uW~P#dpMpKNw@MdrGL~FQ;7#3 zWh;KU2jb*^r~}HsP#-Y%9y>?b{Y%JR-SioY^_>=ZQ{woY2KTliL_V%~5gz$w4DqN= zZC9<+nEW{Bnf>j7uT~RB9;0>of7e!gv{L?^EIRbg{;)TF2lgwuy303DV7s0EuKYU6 z!&tW$|JnC95@KJG-$v(2>=zSA56*7Y`cPNUIH-5^Aw7zR&f!pTD#(3#U?J$9^YP;e#>K;apHzX#g-|eX*30XH1{_aJy z@6x~+QgBAYsRxb>UPHdgCVlZ=v<3)O*`_lokNcCusiICl!BK9~1qS zvRaS(WvOlC$Np{N8}4z4DIYk9SOs?&F^Kw zFEmfoyESjrZ>29Q=N8S|Z@t>Y-RGB#VL$h#;hI0@BYomNMf$c5*I%Ia-N#xMg3qhI zD3cK9&Fw<5-^^(74!- z%=gpJNblh{$5&`vg;4fuh+nM_QU?Fah!^4jl3EZUB&ibsQx4 zg8X0=`K=;{J<{EVu&0| zxQp@2Zxdwy@F%UuY1~Zn#rb;$$Bphk@!h$?n-?3&{>=M`Bj1oe;Qm(f@!wmTMtYc4 zMDnv=c~5!_nio@lH+%3C?2mk9H2Li1H!UMXUafuDdHG-x+mRp765R2L#xAh~ zMCf)uEqx(xl)pvy)r`~Z?|fT!J)!$+QRxx))YFI~FMgQ)LoX$ZIP$?n;=Dg1&ih>A zI0t4BcZ-e5Cmt3Yk0-R=ZzOrS1=AHrdHy0D^{}PlTmFysx3J;hVZx_;m>P$6=cl*j zKga`R-~QDT(iiT@#;P6ne}s1Ox7sfeZ#S_&>Z_4|Z6h8uT`oC>%bpVqI!~7#yi#4W z+0ME@A?CR{4gmR7b3(sMisB;9J2qQgv*O}kB^Dkc3{BS-pc8GmLd{(vXgx2BqTL|6#ZDp@`S0lUgZhAz1ih8x= zhrFO4`Jy@m?%Nb^yx%j`?)}i$#Gh_+WnbQ>;}_^VrS6gaFrSS>f7G88*YF-gb{pIt zG$Gx4dGuQHhc{M|e*KO03P?vDqj})ni{|B?I3fGsxtsh^{)O@GBESD`3+dJEzbl(K z{?Cl^ZN6_Hj(kS?iS||8M`+(b{bLlz!+xXv4EGI+H@H{UI#{P-f9&Jy$rrtcz`e2j z80Us0wGX^maoH(perJvMtfV7fZpD6x18WF_PUi2s>{t8C-=GKWYmoaaw%Y?I%oS|i zQTqkrh3tjC7u0<2X74=E_k?^;vf9NCC>L4 zzU&J`|4&w$W8Wvdz)UwaW0>y_T4p1JMu>2cz>nwaUa=`IL^283dxT;4srK|h0}#U zySpo4fcF!mTlMekAUN!AeFx{IRPn{$75K02@Y#;Kj*-vAMMH?Q?n6GlS0nEI=I0P1 z9~(wG>kPzUKe7|->uR_6Z;;(u{YF<~JMx@d@<;m@?>B^hHd5=v{-b@$8osrY#*4k5 zy7u1e;;xD04}bbImF)rYIl(@6^(VxBz*$e!0ocjNA(Tsm_m*Oh?RdNmgJ)?E-ekTs&gmtTkANNMG zf8GPBf9%}}?pY=fhn&<8b*mZdhj(#P1(A2L9d^@?(7Ex5xNPQMa9n!!zbS3v+SQ4!_=lOl z6Z3k%8c%-QTMIgWEE}kC%50oM$oEI&cdI;}O&sf2yup4si*&!$Pj$r?tK&M&&TG9< z9R=^}OdQGFuXP}=mH+z%k4R6*gJkEy{Fn3{nxbVf&{Gh)4A>+!xDU+%YSp zAKnvcoV)+ky4}&Oq`zx&M1523vG=3cH(icrZ$8nVbmU{xh~qt@;vml@#IaBGAoMHG z*-D5w`jq(U%xF#M9bPH_W*xNx2aP?R-7334UaxWS z{&Ez@=et(&`;Y!_4RL#5Z$Z@U6u)u4ND#el86!Wuw%-qNDoIZnNR5cb6WG`eV_R8?u9VA zf8#wrar^ZnCeIn&N_G|9Z`d^}r52(+z`YKk^U$blhXKBnSgR{=@OFyq8h@b;}jVK3HEg{O7j|_T4*`e5`vBN4!=$-r?*N{njCU zNcVfrQCzU+zBZq9@58#97uJ=)cATqZhltzS|B#m}?s$IqDc zr5zQH{=-N|9dQ*Q^l#?7{k|OGd$)?t_s)eJ2X!|>H&%ZSp4_{ZIO-I#x9Gf!_j|^l z@gAD(cpjA+M?Ty?iXZ+(hwV(bBVdLi4FJ}Wsy`EGdl5#iQqUv?W@-l4dL_r6*u>|;I0L;fOv@?XC}`oulP z5REr4&iLV;$zzFIi#{wM3}#F=dMNv?;m~*%8_;CbH87zes=pWr9aGf z3EQp8<>a6C9e+vxK`=vjux^9q<=)tSuEuHIc`3)SKW=91C*!2-)lPYBy6Au2Bl%nD zOVWt@znj1B4{xlZb=VWiYW~)P7e{kE_wxeH*DH6+eDVjo*9rRNTgiUh&I9GA-hU=; zI@@~4-ravzjaB~xtF&&X#nolRt%O0^7rfq23tBh7vsvT*GT9d#{NM<|`D+#vx~;x3 z{?)QnMj`wEm}dOs&U=(k1@F`}@u}HsvIA>%Tgk^8V}Ae0>ty1uRbr>?I@s1t{j7Uq z@7jhvt#Q4MV-|4y;4}04oX(L>Tlszeq2rpj+o+Dw_ti23$>$H;B{_sS->)a1>-dT< z;UkaA?(Cn3$X~+}H^{&JX-~<|ysG_n=sRb-B@$Ylzt=e42yYH?yLnC75$r3SS`Hxn9fc=8o_Q{XD2K8mfUVNUh&l!_tuTI6l#Fw83neQKbXrjLN*BH-q2C|1>`3= z`6n-G9^MO8rC0ag#+nb}vDw#N+mp@lt<3dmkG>ZU-=a7hTITQ0V0S6xL;ROs-3hV( zw^h5*M)jX+-pPASlGkWHcMe-idU!{LdBpvTAB`cjn`LPI{=6)czf3>9oOEaV!y5^$ zwo8^20(d`!6N!hv|7G~EwEI>5IOyd}@g3~COzl0*`wVCP$Fg_()dNqke^~Rs?ris8 zd~6+Y*uUbDTl0~Z)bG3HeMR4&F_(~bOlX(voFw{S^E+ih$4lp)0p08Ouk^sU8VB5; zTVW}oz4px&gx=pAND^Jzn|%mN*wXq*v&7W zDSmm+-J|(qUyEmZ@XmGp2<_%QqzAuw4f&1jv{t+d@47Uf?an*3o+z=NIQM_@`vbq8MCcCR zCcm`j1s-wl%gkxy^TJ03gWpO?zCm)w_UiY_AF@mPsiY~you|vnpMj5JKd0R88HAxd zR{97>b(4MCm9`Hc-T$y*mSE0ct$xno}wZq>ePE9vgViL*IQ;8fZreCHjCKYs45My}RGt>6CrgyN(->sQ&g{nKUH ztygQ*Z1#)tIk)d4MvenYzf3yzfiZ;sm3CUU`^X&i3u?W+HV*W#=26*=_2u4t^4Vo- zjwjuVe_Qb|jO8Q2^Nm-LZcj7kZofy?I`KVtL4N11Z!wAe5w8{rCjKM6+o}EK=g~fC z2fO3dez}g~jJ>j#txb`;cCO!`l@Hg4_FQ9sYoZ^1pD! z&?L<#@sPf2?P#ri!kYX1FwvK{SV;)`kv-e|1v!44)Dg5TXxn9X+NgT_yP z+c%3id}qMjU^Kvxe>0;@)#jCyRf=x!r7s9Ze&2syCB8IQ2fL#&+aK z{Yduzr`MPnZW?_5E;UBC8J@?rl?6`r$j4dJzX?{a71u#=8zpV(t8p)+g0?B0L- zM~&kSds_1gvagfhz>gI7agLI{tkM}n;y7;mT9S|ZfO)4D`H5d?YLdRY;k?;rN{-)3 ze#S}C@%R0c36al89?tXrCboyKWhgE<|9dir?d}yzamUH%nnyg?{?8D?u=G~xo%y-w z3(eoZgI{sX+dfhICH)`{{7ylE{EvAHar^C`)IZFf^(y;YcQ)5P?Bw^;e&l-3YX1J) zZy3JLPt0UL>&^AD>*#!hzw^r>9p?!7Ta-82qaNQV`tEgoIX?EkN`f87q!D7h8Ep58 zZB~5si~lNpc~9rbzU;V{O|s4{E!_XZua2!{6CtH)3~1; zmfnGPB^~*#=Ifo<~(Vg-e@9{#( z59cC5@8&$^qi&JbzQ%z)lHdBgn*0;zMadQQ0`a5%G4}tr2ffBlBkuk=OzqIS{1ADh zna97msciS}iT&OFvVz`)z~PUBNe?&7lRZS|wWx05WwuhBqW_EU)Y)vp;N3Nn3+i=g z#8EdJR0wE&Hr?3OsGFrfyUQ%;CmcFd@gca}S^WOuh6~j%rMUdbJ!XFY2Ko31(!FtO z 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 H$Kd|}&HaB9 literal 12416 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 KgEpLF;{O0y1fM7X diff --git a/main.py b/main.py index 7382a91..559c965 100644 --- a/main.py +++ b/main.py @@ -43,19 +43,51 @@ def main(): common_kwargs = {"api_key": api_key, "model": "o4-mini"} - coding_agent = CodingAgent(name="CodingAgent", use_rag=True, **common_kwargs) + coding_agent = CodingAgent( + name="CodingAgent", + use_rag=True, + rag_config={ + "top_k": 3, + "filters": {"tags": ["code-example", "style-guide"]} + }, + **common_kwargs + ) coding_agent.add_tool(read_file_tool, read_file_tool_def) coding_agent.add_tool(edit_file_tool, edit_file_tool_def) coding_agent.add_tool(list_files_tool, list_files_tool_def) - testing_agent = TestingAgent(name="TestingAgent", use_rag=True, **common_kwargs) + testing_agent = TestingAgent( + name="TestingAgent", + use_rag=True, + rag_config={ + "top_k": 2, + "filters": {"tags": ["testing-guide"]} + }, + **common_kwargs + ) testing_agent.add_tool(read_file_tool, read_file_tool_def) testing_agent.add_tool(run_tests_tool, run_tests_tool_def) - evaluator_agent = EvaluatorAgent(name="EvaluatorAgent", use_rag=True, **common_kwargs) + evaluator_agent = EvaluatorAgent( + name="EvaluatorAgent", + use_rag=True, + rag_config={ + "top_k": 4, + "filters": {"tags": ["error-analysis", "debugging"]} + }, + **common_kwargs + ) evaluator_agent.add_tool(read_file_tool, read_file_tool_def) - reviewer_agent = ReviewerAgent(name="ReviewerAgent", **common_kwargs) + reviewer_agent = ReviewerAgent( + name="ReviewerAgent", + # This agent already has use_rag=True in its own __init__ + rag_config={ + "top_k": 5, + "filters": {"tags": ["style-guide"]} + }, + **common_kwargs + ) reviewer_agent.add_tool(read_file_tool, read_file_tool_def) workers = { diff --git a/scripts/build_knowledge_base.py b/scripts/build_knowledge_base.py index a630183..c3a4d0f 100644 --- a/scripts/build_knowledge_base.py +++ b/scripts/build_knowledge_base.py @@ -37,29 +37,47 @@ tokenizer = tiktoken.get_encoding("cl100k_base") def load_and_partition_documents(directory: Path) -> List[Dict[str, Any]]: - """Loads and partitions all markdown documents from a directory.""" + """ + Loads documents and extracts metadata from their file path. + The subdirectories of the knowledge base are used as tags. + Example: `knowledge/style-guide/python.md` -> tags: ['style-guide'] + """ documents = [] logging.info(f"Loading documents from {directory}...") for file_path in directory.rglob("*.md"): + if file_path.name.startswith("."): + continue logging.info(f"Processing file: {file_path.name}") try: + # Extract tags from the path relative to the knowledge directory + relative_path = file_path.relative_to(directory) + tags = [part for part in relative_path.parts[:-1] if part] + elements = partition_md(filename=str(file_path)) text_content = "\n".join([el.text for el in elements]) + documents.append({ "text": text_content, "source": file_path.name, + "metadata": { + "tags": tags, + "full_path": str(file_path) + } }) except Exception as e: logging.error(f"Failed to process {file_path}: {e}") return documents def chunk_text( - doc_text: str, - source_name: str, + doc: Dict[str, Any], max_tokens: int = TEXT_CHUNK_MAX_TOKENS, ) -> List[Dict[str, Any]]: - """Splits a long text into smaller, semantically meaningful chunks.""" + """Splits a document into smaller, semantically meaningful chunks.""" chunks = [] + doc_text = doc["text"] + source_name = doc["source"] + metadata = doc["metadata"] + header_splits = re.split(r'(^## .+$|^### .+$)', doc_text, flags=re.MULTILINE) texts_to_process = [header_splits[0]] if len(header_splits) > 1: @@ -80,11 +98,16 @@ def chunk_text( current_chunk += " " + sentence else: if current_chunk: - chunks.append({"text": current_chunk.strip(), "source": source_name, "chunk_id": chunk_id_counter}) + # Add metadata to each chunk + chunk_metadata = metadata.copy() + chunk_metadata["chunk_id"] = f"{source_name}_{chunk_id_counter}" + chunks.append({"text": current_chunk.strip(), "source": source_name, "metadata": chunk_metadata}) chunk_id_counter += 1 current_chunk = sentence if current_chunk: - chunks.append({"text": current_chunk.strip(), "source": source_name, "chunk_id": chunk_id_counter}) + chunk_metadata = metadata.copy() + chunk_metadata["chunk_id"] = f"{source_name}_{chunk_id_counter}" + chunks.append({"text": current_chunk.strip(), "source": source_name, "metadata": chunk_metadata}) chunk_id_counter += 1 return chunks @@ -106,7 +129,7 @@ def main(): return all_chunks_with_metadata = [] for doc in documents: - doc_chunks = chunk_text(doc["text"], doc["source"]) + doc_chunks = chunk_text(doc) all_chunks_with_metadata.extend(doc_chunks) if not all_chunks_with_metadata: logging.warning("Could not create any chunks from the documents. Exiting.") diff --git a/tests/test_tools.py b/tests/test_tools.py index adc4798..e69de29 100644 --- a/tests/test_tools.py +++ b/tests/test_tools.py @@ -1,3 +0,0 @@ -""" -This module covers various scenarios including valid operations, boundary cases, and invalid inputs. -""" From 1c3f5b526c6429b4d951c59fa3defa585ddd9bff Mon Sep 17 00:00:00 2001 From: Vyacheslav Artemyev Date: Wed, 11 Jun 2025 15:00:17 +0300 Subject: [PATCH 04/10] fix --- app/rag/retriever.py | 117 ++++++++++++++++++-------------- db/embeddings.npy | Bin 184448 -> 184448 bytes requirements.txt | 16 +++-- scripts/build_knowledge_base.py | 14 ++++ 4 files changed, 90 insertions(+), 57 deletions(-) diff --git a/app/rag/retriever.py b/app/rag/retriever.py index e62bb8d..5f857cf 100644 --- a/app/rag/retriever.py +++ b/app/rag/retriever.py @@ -3,12 +3,14 @@ import json import logging import os +import pickle from pathlib import Path -from typing import List, Dict, Any +from typing import List, Dict, Any, Tuple import numpy as np from dotenv import load_dotenv from openai import OpenAI +from rank_bm25 import BM25Okapi from sklearn.metrics.pairwise import cosine_similarity # --- Configuration --- @@ -18,16 +20,19 @@ DB_DIR = Path("db") EMBEDDINGS_FILE = DB_DIR / "embeddings.npy" CHUNKS_FILE = DB_DIR / "chunks.json" +BM25_INDEX_FILE = DB_DIR / "bm25_index.pkl" EMBEDDING_MODEL = "text-embedding-3-small" class KnowledgeRetriever: """ - A class to retrieve relevant knowledge chunks from a vectorized database. + A class to retrieve relevant knowledge chunks from a database + using a hybrid search approach (vector search + keyword search). """ def __init__(self): - """Initializes the retriever, loading the knowledge base and model.""" + """Initializes the retriever, loading all necessary data from disk.""" self.embeddings: np.ndarray = None self.chunks: List[Dict[str, Any]] = [] + self.bm25: BM25Okapi = None self._load_knowledge_base() api_key = os.getenv("OPENAI_API_KEY") @@ -36,12 +41,12 @@ def __init__(self): self.client = OpenAI(api_key=api_key) def _load_knowledge_base(self): - """Loads embeddings and text chunks from disk.""" + """Loads embeddings, text chunks, and BM25 index from disk.""" logging.info("Loading knowledge base...") - if not EMBEDDINGS_FILE.exists() or not CHUNKS_FILE.exists(): + if not all([EMBEDDINGS_FILE.exists(), CHUNKS_FILE.exists(), BM25_INDEX_FILE.exists()]): msg = ( - "Knowledge base not found. Please run " - "'scripts/build_knowledge_base.py' first." + f"Knowledge base file not found. Please run " + f"'scripts/build_knowledge_base.py' first." ) logging.error(msg) raise FileNotFoundError(msg) @@ -50,73 +55,85 @@ def _load_knowledge_base(self): self.embeddings = np.load(EMBEDDINGS_FILE) with open(CHUNKS_FILE, "r", encoding="utf-8") as f: self.chunks = json.load(f) + with open(BM25_INDEX_FILE, "rb") as f: + self.bm25 = pickle.load(f) logging.info( f"Knowledge base loaded successfully. " - f"({len(self.chunks)} chunks)" + f"({len(self.chunks)} chunks, BM25 index, Embeddings)" ) except Exception as e: logging.error(f"Failed to load knowledge base: {e}") raise + def _vector_search(self, query: str, k: int) -> List[Tuple[int, float]]: + """Performs a pure vector search.""" + response = self.client.embeddings.create(input=[query], model=EMBEDDING_MODEL) + query_embedding = np.array([response.data[0].embedding]) + similarities = cosine_similarity(query_embedding, self.embeddings).flatten() + top_k_indices = np.argsort(similarities)[-k:][::-1] + return [(idx, similarities[idx]) for idx in top_k_indices] + + def _keyword_search(self, query: str, k: int) -> List[Tuple[int, float]]: + """Performs a pure keyword search using BM25.""" + tokenized_query = query.lower().split(" ") + doc_scores = self.bm25.get_scores(tokenized_query) + top_k_indices = np.argsort(doc_scores)[-k:][::-1] + return [(idx, doc_scores[idx]) for idx in top_k_indices] + + def _reciprocal_rank_fusion(self, search_results: List[List[Tuple[int, float]]], k: int = 60) -> Dict[int, float]: + """Merges search results using Reciprocal Rank Fusion.""" + fused_scores = {} + for result_list in search_results: + for rank, (doc_id, _) in enumerate(result_list): + if doc_id not in fused_scores: + fused_scores[doc_id] = 0 + fused_scores[doc_id] += 1 / (rank + k) + return fused_scores + def retrieve( - self, query: str, top_k: int = 3, filters: Dict[str, Any] = None + self, query: str, top_k: int = 5, filters: Dict[str, Any] = None ) -> List[Dict[str, Any]]: """ - Retrieves the top_k most relevant chunks for a given query, - with optional metadata filtering. - - Args: - query (str): The search query. - top_k (int): The number of top results to return. - filters (Dict[str, Any]): A dictionary for filtering based on metadata. - Example: {"tags": ["style-guide"]} - - Returns: - List[Dict[str, Any]]: A list of the most relevant chunks. + Retrieves the top_k most relevant chunks using hybrid search. """ - if self.embeddings is None or not self.chunks: - logging.warning("Knowledge base is not loaded. Cannot retrieve.") + if self.embeddings is None or not self.chunks or not self.bm25: + logging.warning("Knowledge base is not fully loaded. Cannot retrieve.") return [] - # 1. Create query embedding using OpenAI - response = self.client.embeddings.create(input=[query], model=EMBEDDING_MODEL) - query_embedding = np.array([response.data[0].embedding]) - - # 2. Calculate cosine similarity - similarities = cosine_similarity(query_embedding, self.embeddings).flatten() + # 1. Get results from both search methods + candidate_k = top_k * 10 + vector_results = self._vector_search(query, candidate_k) + keyword_results = self._keyword_search(query, candidate_k) - # 3. Get a larger number of candidates to filter from - candidate_k = min(top_k * 5, len(self.chunks)) # Get more to filter - top_k_indices = np.argpartition(similarities, -candidate_k)[-candidate_k:] + # 2. Fuse the results + fused_scores = self._reciprocal_rank_fusion([vector_results, keyword_results]) + # 3. Sort by fused score + sorted_doc_ids = sorted(fused_scores.keys(), key=lambda id: fused_scores[id], reverse=True) + # 4. Filter candidates based on metadata - filtered_indices = [] - if filters and "tags" in filters: - required_tags = set(filters["tags"]) - if required_tags: # Only filter if tags are specified - for idx in top_k_indices: - chunk_tags = set(self.chunks[idx].get("metadata", {}).get("tags", [])) - if required_tags.issubset(chunk_tags): - filtered_indices.append(idx) - else: # If tags filter is empty, don't filter - filtered_indices = list(top_k_indices) - else: # No filters - filtered_indices = list(top_k_indices) - - # 5. Sort the filtered indices by similarity score - sorted_indices = sorted(filtered_indices, key=lambda idx: similarities[idx], reverse=True) + final_indices = [] + required_tags = set(filters.get("tags", [])) if filters else set() - # 6. Get the final top_k results - final_indices = sorted_indices[:top_k] + for doc_id in sorted_doc_ids: + if len(final_indices) >= top_k: + break + + if required_tags: + chunk_tags = set(self.chunks[doc_id].get("metadata", {}).get("tags", [])) + if required_tags.issubset(chunk_tags): + final_indices.append(doc_id) + else: + final_indices.append(doc_id) - # 7. Format results + # 5. Format results results = [] for idx in final_indices: result = { "text": self.chunks[idx]["text"], "source": self.chunks[idx]["source"], "metadata": self.chunks[idx].get("metadata", {}), - "score": float(similarities[idx]), + "score": fused_scores[idx], # Use the fused score } results.append(result) diff --git a/db/embeddings.npy b/db/embeddings.npy index 44a165928532b7866836766d4e1f2f373e9013d4..6248f90957adfc0d40aa24543ae3319b82493d2f 100644 GIT binary patch literal 184448 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%0AabBL& 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%0A)uv=691&QbsKhX?0z+?ZcQy;gF=z0_v5 z2S+lr-%E`(e=U>h*Y+X(B^M4xM zpM1{lg301<)LnXmeOW_39IO;ScwQim_pq6w!_Sc4UDH|qAUJzYb_~C3>=5rd*v@!D ze$@Na4|UI##O;meja*{)MaYAsf2bG9Z{vIh($ literal 184448 zcmbS!cYGGb6ZcU>suU?d1mpmvD+1C>j^2CkNAD#G0YV@gX|#|)NTG%!jnI2j;5h_D zQKX3oiX2rDP*4E{k$1k|eUA6@{`>OJd}elbc6WAWc6Ro7vZ8CBF5L&@&}L|1RYr{t z9vM`nv0kO=n1)qq>Q%-}4VoS_e9Ew?L8C^4-gfw;;L$=49yfg2Xu+%2u2)m9U9WEa zYBlw_`v2Fz{FKb}1e*JXjSdi~HT*J;c+s>pK*;-2+V%0gVO5e9*OtZ_WpOa^q;&D-b`s8y=6 z2Do16R1(|!51RpKHC~iX{D*=Z-_W}%d86ZrTh*H`CEpr7)hGP!xXRlA&2jBwL3hGB zv)$?V`*zTs$V|>tU!R%?+-jITmGm!0^##9MpmH3b)p=?P;XA!&5>{-#*e7&zSQ6<* zkGAoopKLb>biLtLuG^V7Dh0UPLbm}${yg&SFSh_tZ!vTL=w?-C6`(sMbrSIo^%Bso z4W31P+O@7&9u8=whi(8gbM;yc=xiIybs4p0Mf(Idn%wQc_Q=+mfX3lcy8yKjkEmDe z?SM@1+28z_1gO8C&UG3!4-+>|ok}Nt(7I)S?!^S!fid*5lGk&5U;z5f-mw|b-Pb&e zu%Fci{6>xcBH13_V+x>A_m5=I-3>Ft0rfY#k>6-pwh7v;M>Q7%+8O&6lJB%jeHf+x z$Nh0)hEsof($*Ddw+d%u0GcamZUM9dj%5Kl&*yO*Bgf_aq+iR!eR6uXj|h-qv z%dqm>z}?^`gjTaQlxzGsLG9a;RmAo99-ObSvB)~gpX{pjHXqfU_&$gF5&PN-dFIcv zsUPe6?md7zhZ-ks)esXf7luLt+=3Vgg0{1pY738IIb4Ag7dYs*%tWC>oIk}r|tZl`)bcBwi3Ab z%XqXq31>5ao8l+H^-FbWPtN^5#I2)6XQN&8&2`wro^l-h*d*Gq?zd}G|2hW!-R7fA z%9(IV$=z9na*R&j%p?8$A=2H*O61q?l!=9W=kQa;9WAyL^bV8b8artk z`rG$|s24N5ppx6_D*J1bPOABaFJ_#ub2Ox#>fb$Xhkp8hYiSqy@Dj9B>({DqKdrn|h}+ZN-3Pim{U6T9JXnVDLmN_mDCpYNhkMZ9TDq6^Z5#8lDQD%lV9?#R z{pok+j6IAq_R4nCLAUcvO9G$q`y=j;StgNwXZ}@{`|flfyB&O1y&jyW-S_%B;GUn! zIy2B;uWkeZnq77%zdiS21aPZ`FA@A&@t4Vf`r4c1cfLEvbIYl@hWfGIewX{|#J|n? zxL3cRpE+AMaUbQpNQFFoa-_14;YGPlm!n~ZPf@vk<5U(Z>JdbF~4 zsrA0|9rsj1m>OJbg+^~}8k@m(#wmVB!@!Zz#m7*V8 zfkT%=j`$t-Rjbp3@x|P`f#-(N>grm^m3YGQPxh-n`7eB{;>5vKw0A9LeJJSq=}5|# ze1YqBb3ao3x_(1F8Rr{Nf99%;)sSn~cuqYbZlJ%jKb(5D7ae4Lw7<-tp7k+ZR)F8_ zP@MMb_Q;zIeskNzmY|y#p40&D7H_8PyZt^MU@g3q0iupUtI7{(p_%agPtBWKb=(DfA`*#QErj0VAk zgZt5L;Qzp3SAcrA)3jrA$9N^bSLQg-jW41(PxHVKWv^Gi?(Gx0S-Ca)yUWhAzxZ=J z==%ISoTpi+>IU@Jx^!I#XilBG6z$GF#{`u4whwe~eDg*W?bN+Kx)taW=Q@$^jkDB` z#9_`$OJ8lFU3=7J725T8Cv!bcsgmTA{EYsphd$0GU(3`st85)-Ev>WgVr;-4mmfK-q*g`4nD2^M_iBjVMC7VUig;rL@Urq+3~_MoQHAu3fJlG z`790nB#-2NNPgQdKybU=J~hsm&4iK%(k`sIUo$QldyjG*o?p5z4^f|Po7Eg&FB!`D zn$30Ei}=SN|NMpn>U}lNLvQdK=Ve4iv7f}fO!D<<$$hpzF3Pwg`;*On4+~Eve9(jQ zcMi^Beqlb^o){o<-7azTH}`U&+6T#N!0(o9G9T?)Vu3k;=6@@<0_xKbseSl!0poz( za0%CE1z%O;PPjb(eTVYxT_ZOEm;IytS`(_$F7#XL)jUfzpq*Q8Ys!)M zwv*$D{?X6K_Z81o?|idsmdgRUyYY9W*WOXwKhYES-w2ybdHR`vNbpI%Lc8|jfzh$Z z6wqaS&PU5E$$1*Rs*D6(dnY6d&^Q-LdoxP!p!9z#zVP}s{LAYusry+isQ!vS|9CY+|nv+ zVcc=*o}UT2+>aP{?G=TW`vey|4P?Jf%apw>7{WNH)n2g;?UE;Pf1F7bLxEdU(&!)d z`w^Uv7cWHbM0McTEyGfyP=%w{9FzgCwI)czmoH4FUi+z*ue zltuJs=jj`a<9444vFImx)kr}5Wc6L(Hy-~+`_}(W?FHN{_{K1{4{b;}lE+5?mpDti z_s$>5KV!kK)t#>BkADpVpD|!P$JLvR%RsyP%c?qnuy3^Mi>}bVrMV!vbE zl%IST96|nfCr<{H^M~WOkCui2H*aZCfOg6LYXBwBngJ;BpY~x@Sj=%G&lnXTbO~hf zfZjb;4}6&feyIzjke=0Z32@`dINGQCTl@mx+O8A6dA-qy1b?B~@7 zwAEt*$rlwxeP|aCFdj-=RB^T1`q}93E|2H@+*+5^xzY1yC4cTc#v|9Pqt5kzUob9M zx$1L&>>n1Zbyg@yzm+_eb}RRmD2!{3T$&2`I9Gss_k8n*f@&XQXY~eM;+zFOdtQ6W zcOIXiA6QA*aiB|{LH+6(-=zRI1`lFf6~9z*;@(s0+1~tt%0m{E-%Y+bHNpcRx7|L* z8;OhDHz#R{iXWZ6Sr0z*-Yoj9#4Y**_|VU(bWi!CcYml~SlQ8{E8Ede@*d%olr z@XNhB7|?xklKX_bnfSx=%1%z_pdV`shAaUc_j^EnSShYY?n4`Wf*XC_=eS;-Lh>@s z&-z8!tUOEOAg5Uk>iZ3w&bm(j~&OjDEVtY_W$q`+Lz>u;0Kk;nPF)8<*^Kkx(fqV;J>KD}@&W$#NbDS7ALA)o9k^=?0FqvBRnPU^|@pBLIs zW2sMLNNL)mwJrzu6?Gz?%)|35ZS5=OFXpa0!JvC}0i)z#u2Zks+yve3dY|J<-JvDs z>3+IDiS*MW7*`~(SNeF>m-0lvDd3ZO2jcJ`a^zh2rDASmKIpm$%FIzdacJCj}I*JXmI1Gh4t zP@Y%kk@JUol02Xa`lD_LXclNkd$Q~HqFkeC2K`RX$F-ExrV+ySKo2*%SVM$Z7hK*nQ<oX1 zA9)e@y?BEAKj`pl&`~DkHpQVqBcv7hxHh!x^|1!R8#reuTmGiK+SL@Aw{(6*F z_A%FOJoq>rbg7p&1vKJ6R{L|iDfd(Cd>Y4D){A9E_--fkm;Fot1+7I4Sz~}z7k$RH%7y6m@ zMcP!#P5P2{^E(m4X9OH&$#Hg2G1Y;@Ao3mU*eUHcDcXJ29$aY z_Z@Kz?e6LpbIEtII^(mPj|+)U9zj3QF4yL|jr@z2fNt$h5Ag}~?i*sSw0pU)MWJ2t zFV0`?DU7d@-wp@AcTS)#2VCyc%fRo|!JIEfQE&F&xgtT=8%>BIY%z2d_`P@`=NZ=} z`M-A#Q18aiDe>Spd;Uy0o?h(*O}C=ITmE4t+P(K0{o4?wN3YI4u6hvoa4!dxdjZcC ziR)p&jqB;OYa`^zB#$ou@~Yfm{C6ea0j|q?6`*M?Od=dmE*nt%nENjI0OPLAw;Sm4 zUO>CI3uSTMX8oF-LAMK6q}@r~p5uDwlk;Z>j$=tYBj2rX>R;#_&wF39+BL}Vi5%-} zS;iTu2MqykhILN>bf*qxd_Y|ja`ar6qCnUG+Dv|_yWh7#mwF-BA?up&6I|X0R9y4lue7GwFk8=pd-%) zUGihDSMGJwNPj0p>EHj}Ep>t+>^~uk`{8JRb6rwj7zMi2)0O}_RVzfJzu2|f-(|fx z4|!)?1G?-Fi+?P<6RWcs1n8X zI(>30e~;})`Bs7Iz0l7&yPEbW?GfOYe0(hFvHki0*A9NdeK)80IDg4k8PDYXd?xva z4zR$F_Z#3+$4CIKrMhaoO81t7j(QfLTlfw7qxi)b@QMA<9<0*IN-trZxh`Gu7`8w7 znDdl-1pQO)WvwB{SZ9v`G{2t9yb0es0LMKM(C)X6`>FN%d;$5b{M((X2E zkqT(t$VvT4y@dVU_I;^uV^lZlN$MDF*#G053)#;;METaL1&j+?(w9p?_s&(ke*hPK zaX*nqqQ99{kNYg|{X@{MTU8kUz515KZSIqG_3I4qJJ!9O;6vRE&`E8^eL%cn`=1@! zu-(hM|9Q0zIL>?WJJVJG%DWKv)AWCbVVIYK1B5R1n{j|rf8IqX@t^$nW{qTf>Eukp z@Wo1hP405vwdU_7g6_=8&-~S^XPQ-VW~0CJYYO!u?`Pb1IiHn2syeh=nMVxxWdD*O zN8&~paQCa!CV<|1r@83xbhOJpZ72Qey*NP0d&2>(->1w%yO$?>`o?z>Hm^j)( zM+0gTZgZZ_@tR8iFRzkM+gO}_;Z)94{w{t4etFkmd^OvAN_*GBw`4)CC3*++;*Z&W zrn0x6#*Svcw1H88a!*PDG>Z=%0e&aBLkw{7|B=LhKg)S&zYL(AYwId*0A21~y}^g~ z7T~yF62{J&4(RybMI}GrzREi-=kL`KaSsEZoZB2<>h19Xg4-CXp;b4Ys@xf$bVBeyRFpPVZkPu@{!Z({d6ZzUgGi*{>f zZ??Oo{z)VM(1yd&U+k3ga4T+NeAHgeq&)p$;q~D2_QfhwY!mp6zPBPkm-~qcD0PHh zpj-YrfIJ9rJbAAg1-c#o5#`uzpEUr#KDOMpLFO3_eyRI2KItbrDSah$*-ZMWtWkho{v&l~+MyR`ygbaSS9$iJ z-Mo>E@tsj0a$Zs&9}FDt^nk|pw$zW*g;iXTx+KPt^EVysVviP}Q^XAelygA&W#X?q zKfHH7xzEi*Kk?5jKu79wfO21_9f{sjNYDFVrBCSks>(@#&fvx)0jzCHBZ1?)3gV+aRO63+p!R7_{`F{=^-{lb-w6SZ zdpw}{MNjmT^OF1R)uW^?%XlmI!ujBH|9W#H_>5mZAs^}#pj$=`?xUO8mwJ+W$u#iE zcP-P{e&C0Nfb!jp+W#2|@o2ZsG&uAy+o?Eng zSL%^I^qW+1JlehYS9#YN2V6UKoBJmB3$EK8Hl1++`+{~S<;`*EFLepZmwRU*=<;0> z^<~|3lwKQG<+|`)2K)Kz7TVcnoQGcGQ|i%N(vVQj<=W&svbPl=zOMk3`o?OX0QsJ9 z3ZQd2j&yx|KIV1uJ{Si+OZEj&?5r91+{%^cPg+njo(HeLTiMr~`mp~Tv!49#Z5#>c z?zQMIsKWs_%GZd89H~ooAYY|>TqnLC1zo=5Vt?FsfFlnD^zshF9Ucc<54frJrT?(L z0qA#m2kjK!f1(}VCxY&ben5ZHO1|JcrV-28uuf_3%e|mu6 zQjb;VntVqE+#XVbej?xJF(2~2Yjqb7pgiw=L(bW@kmqhX$MfIbT_Ftpd zcf)FN-{swD0ovu9Gtp1-@L)jEGxaC+lxVbz->A5guZz;xvoW+kvFFL)mwQSN!moT2 zz%O}J6#G3YybN?FB7%Nt{qs{eaPJ(HcVEs=&$E0K_$98a0(2IXj{u+d{x9EG(jM@> z3%WJo_&oBr{U7xr^?t5Hz8A{?-Co^h1lxZZFayvC4h<#U|GpsK!;J=x_g)|P8=MIS z?tND%-^pztfBWE0Z1>xZ++WuLmw3Jg?fC8tQ0k`Chm6a3DD_h%x7L+qXqWF_74+YO z%;h^%K$mkZ%!mH|_bPd}PXjLZ5!wmvHQ>IZzSKrE(R`j66#65m*o1ie_nM# zKYdo+jcAwenI;0a56$NMt#^7R1Gj1%T7h=)C)%5HbH;kmofFSg9GTpn{-Up3MZLSz z7tr4HtsxWGukKT>N9)&&`=GzMl6o_;mZ<)xw{8HR`E%J+$Ti*H_5-*3KBL~;s(m6s zw+m&Yg6=N8GaR^aE}C|#KYft~+}&A*ao=30?n}-mi)MkY?Ni@n+DHGTe(fvgr$LVK zsOU~WXVXL4t(`iJ^Km+2&O_GS8S>oH zqt^ji*FW6@sAtaE3O;MaQLe+>)6oXq9FfdC!3sD{y=fc%jt8IqvYN7|0%aL@oCmkJ zlmF!#++U+?B*(Kp9Lad--gt|+9oAUo9anDBudEGs=$HDUfOPcN8Xe7oe5+F%#t}PG z)!$`5LP0l6w_=>qtBuJ3zp-ThX2NFy+;_d=PL0NRz7av!wQ zKAsQupzU0*arb-18~cw{E74zTHJpB?8xN>I^U4$QyDiFXLAzPJ-)=y+(P3rZ6Q3{+ z*h4FEKdgB->Az-rC;EXqU@q;&82rXm%)=NHJe2*@8y=**%>J}bZSSNA;8uh2YQH=*4=-+zno$vnM=_GbT5gL=@H+uOh|{=qn6ENrm|xN)XP0%7?NXy@j}vrB-xO>2{` z1r=kw*1G*jzp&nO_MzPhND2x7Y;l?T(*AuX9&~%qEyfwkSBvwuCzYU|*@u5ue%33H zxY1OduU612+KDmvTqegY(428!&$*R$1-r#K#)OK>6``z!-2+xjO&h|NzR{(d9MQ}fikdd@MYfCSVZ?0*uJeLuNEzjn)BkpRh@d>o9`QK;8|H5|Xe-&ug&dW|J&UO7{IrwZXmhzp0#kfARO1+Js zi@k4xJnfANYQ6t8Oak2;u#9?gXa39e*p1wA;B&WSao@$h*xx>VgY&gswOd9xL+i() zzqVz}FhHZli)=vq#kU;ap6UxDy=q;~!@U(vy;>a_t_cu6@!ws5PWg8z-)*4sb?w|H zwwq>e+KqPnbN16lKc{}&$#IM`M(b&elXkB9)Q47~8snffC5-m&=KYWM<31Xu?a6h?ezgOxl~Q#`{bq04yYtQHexN&7OJuS=`*0MX z)$qJ(FR_*SGM?|v23?<2mC*X?I{nHGf5LTH+rLozRxw`1-;p}!kMqTce$84&0-EuS z$3l*FsQ(h+-g@-!cO`-@@nAjqb~WR=%x({-1J~2u3`4uKB%SNB|2f5TQ~db<(To26 z%@pvv8;&u)*r9)OKeWL<&eupUnT2*E>d0Wovo02(-mJQJ)VhBw!F3 zO_VcybeVbH*#hg;Ojg?{0Dpz|GBSX zw+n$=H(qj|^t$;tPoqXQ{YuVd`kVISd)zlI`!VB%GvY@TFK;|h@vF^Vo}*T^ne-Fq zWl7FQJM-~k%74!Z0rd9EX#W@WCVC*h+4nBTvvcK0_F+D+<_rMTE>E5YXqPG$j{a`X zDB6SZ!LOw2gJJ_gH-@zt3qCjI0sTqri08NU&Vu!5chah@1GGn%WxJO@8P(RP^*rA| zIiB5ld5Lx3=K8Ixjo4p1R4E8@#6PKj>+mPkw^pbN?L!-Rkn7OuoID6VV@z|dTjDkC z!OZyw_5V6=ZdoP?e5U`rGUm5e^NxsRe31JA=ZE`&5Aqr;WjuF(>_`96TGgZ;C63bn zB>xKqpY`QB?yvYY{nVP6hkTk-R@wV$-z?5A={@d`9l3_bH#<#V{Nuc73%9A~Qff57^iBh`8;45t6# z++urSo6z`V?L3U{eDx@k@+Yafx!&#$_gC^#?yJOwZQygm9j?R3vAr+(S8Ur2Xw=zY zq1};vApM6ylq+$W`)Svon1XhSnl1lzRW0r$o&RL#6X2BX8*#F0Rv@7GnzqCVl!foY8#oLlDenx$1$CvMd9IIb- z+L_s;DD6j&Xd4Z>94 z4-z+kTj#!-OTL>el6`_}JAN$#Xhin00QJ`D|G5~I=5Srs)!d`NudjJ)8~Klaz8KJY z@)q-_*M1jNjDG6eY>@?i$y+;vPx5K*hx7NaUhH?_d(KDhag5JqL_hMoEq>v6cFIip zk>sW1)9ZfAcwqiFnQ>TeqJ==d`Rib%r{s!JkZX*yfH`Tr>1TFUbuFno@SN0hR~iRC ziJ#mj@4h7W3)-JvQGHjZ{~4p~VQ4YhpIs)IdUTry+mNeO?Y9bYG5%N|ewYb9^RtZpfLh1*xqhwmOSONSv<~R!oez=^aG#x;FKM4{e3kBKHzrTo zN;qdQ{YdU7^gr{(ai#BqCg*|sBE~WI`+5NCAC}|%oh#S=$Wz}e8$>x%(JySiEY4V`1NC5G@dnLo5=ISnq7nTXy>oB4*Zg* zE_wIA@Yo9lXMZ4VR=vR{WQtx_j1^SP5u>L)K&*>JMM7_wpb{zU^i6w@i zpTq^FPk;U)c?8$#UbZ7S&V_gB_r^!VIA4AF#0=1#dJUt{-$;6ob}w~@IMB6;rI&&( z{>T1uUke8=@s;z|ZWPG}{Pq1OsV(iv?N&Gibm#4Qv`6jmna-56pw3W0@7`^mT|j-x zx!=eqbjiz`vfu2cDqdVIkpx`wcJ8~=?#=DslY0pF*YMwOaX%+r{0va?E&8d*rF`r8 zGTNQw>5Mm0_eq3YvD+Z<+jG+B=aRpuIDIT)2HGvZU7&tN{xZ{7g5Q1L4FnW_WBf4x zdXCcpFh7Fws+<4S>5$U^!ah}?M zj@(y$U6}~bon-@Q=Vswc9M5^MgLW(TkNE-UpLb&-<+Prr<~d ztAaHbbg^Ihzg8?a$B{ay@&l=tq22oT&6Vh9@1DP&{b$!mB7Kzle_`S;JcrFsXVCxM zODnieW9L6Jz~|L-oaY;s1DE>*&kebUskpFccnIjCw}=3NlBdQ3NBxHMMlQ!k-UZw| zs&56K+-er+`rpkqu>I4~%y-RI z*W!V@mHodr@V+}7xL2n$Zaknq>>t`^`-E;Z&dGhz@2LO(DEXDL({2wl&~CPwNBcF0 zT(^MZUIKagwQ<~kse4QyzOIbYW6?jkKd764?wp#W{Q86PvxyIR#Qnkj7r4Z4#u?;4 zz$K50Bi&zTk@F*g^p*k2juzBmyW|hSpzC|4a6ZP!FNr(V7IOaf@jYsvI?ka!tT~hE z2a?Be-e%`*)UVX><9rymp8AeQ^59J1lIPODg$nc$NL4K zT|I{U5--<*&ziZP<4PW_ytX(CboZPH2~CW7U4YHFT%Kgav!2T^rCsV5AM-I(d1h>DgtuMhHDjH zhlZU<|Dkd+pxl=k-{c(RJiK=kGylDw=qLB?4S>#(FD>vR&I6Zoi+&^LCjHe(`)dX0 z)}m;hA97#eK1;rDqn|NgkcuN^Be@>)WNF4nt!Z6lXD2QtfluyXjPr6oV!YG08Z97K z>N~Vcv3uH^aciXF3;laI+O-;AtGp$&Kq&EC#fJb&o~QIS@;};vJtLCyk$OQ4`TX~J z)W?9^m(_Qf&Sw_=%+34d7|PqByjJ(D|W1<8e3VHV4xJ1eet`Gz0Zmv!J>I>?0MZ4UexW5AXkpJ~ z#>4Y7(chk+eosXI{x0pqT{v^&FIyYJaOj3~5w zbt?1M<8nvb$jDl_J6QrALv@8iPHe>T0!buF&EKa^uCw4PVb)N z+-ppE_NfLo_^mH5(C@8t$<&iq2bX$t7}}-o$~ff3d$+;thybB`dAy8EIg($||K+`G z1mzA?zdvBrQU4EA?)6(JFKQv}Le7h1;P&xfV#$BepuKu^F3FF$f7a4(Ewtm_4k&TM z4#4<7mkkGQR^QD1bk;SS4qW2N0zfMwR;??gCHqU=n0D?aoacFhdolR53;QY0Dsr3l zC2?;C=(ZEg`AQv|@kj1ep#hNlw*ULJGZm;8>t3}Lpc}`M$miwd=F2x|=XOc;J6dv& z?9cJC503(rxbA&|l@gs{A8s z8~xq=V&^*W$vYbN!>C%9^AY=+1-iXBk#SU;x^6t=$U6%8Q6EOTyEcGv+G(A@d5WJ* zA>Y@<*w2k0%=qfvr_Eh?IZruHxsUeQk+f%b@A?qPlRTIDk@q+HlV-M}9*kU%7(cxF zl_~Fw7)N({a9v*A%bb*(a$nzrZ;e zf!lyf{Y?4G#?@)Sz4u&uXn)2>b5*vod=>i1J(v3@?;kBNj+bA^dru_VCI5*8UEY^DzT9spU+Pel|N6b9UX@_*Nq(>d z{ZMxYZvJ(ecHvI%*$cS5uLc21onRcG_D?4FQSycU zzm=FoyvEmDkK|*NEBnhhW`o>iDge#!SHQ$TknbzBXo{dtf@`|KwNNoA(`x z#H*E{OP*zcPmB4D>zDkN>o_f#FnJ>n{_ZXDZe+umuc>-`PrB4cBzr3^;x!)}Zzn0mK{$RwM4n(`$ z3%Y|YbsfeX#B1W;@5%r)59VOI+%Kp{az>UXf5>p7;N{dFC*$$;9Bvp#ej0I zsC|ri&fm~hUTeT7-!agBtQ&O{exUe9ALPY8?}~Q$?vC~+=K<}&t1sEb*G&SSyzkPEz3)-X zO1ro&H#8sp-dn%KSNb2`htUuDALL_vKvUk`K)09XW1N!nuMu#k@p~$+cy)?<)#%^u z;6GB(&wHmdr-sgF|91-v1|4}5pzO;G(B+*}`Lo|&&CRWqKX*Ax`;odnHcZ~%O zJp-byNczEIs{hK6V9+JMW_*$SE*kCL{msk&+-+GZ9{)FxdXxCbc}m{=qL9fwNLV$4BDkW zs?JNPOQ2o8Yh;|X54GuycGt?ubvfs+GVaN{2+vV@7s^Jv+@oo4_|6r$W-sG-+Rz+o z+{^K4q|3PtDEVZ&0D*>A&upDA2e>(XH2p~OM9x#}dnoA-{J;O5(vth^)wSfklJ?`( zQzcGu-fmJ`6_=wnC!xRG-DdS9c|;5`Ov;9B^rFFM*({In%r}?uzyM)#!FYe z!vgN**Y1UTT#xb9H!Da#(>K-!IpGfd9OowJ-hIXTd`LKO)IkBwHNR#6YM0ZL{`+3y z{!9MCeUx_)6}NH~-{uoGdspdn^1r*6dJuhe1TJ-4j*q$n_)sqgUF@p?aQPmZ@zu*? z<$G(&k$2A|w9EOrolw4OML+rOxeW1Mfq}ryzq=*?mpU2si|<5;7kppUEW0l1eG{G3ecSJnL1B$)t?94 z`wl^yUY`1u`zzy(5VRk-`_xtY^;G3W&X*k)fNt(QsQmixOM@u2Hz%~Al(bCnjMpVq!`B5Z7 zyGHGr^lvk72d>kIT}8XF8=Xrd-*+LS0qxQMQ~GTasO;n;^9RBGzh2t+NHYD{@r=gEXcPWUt_$~^Zcyln_isp!u~mxe&OEl zNq@EDd|NrM5A)0dG-kGDyfIguRC;eyXA0#Fuet?LPtUy@&{;NweqyzZ3JSn@zic=F zx*1y`7SQVQT>|-S>!0$dO{T85|V+-Soao`=w6Ft)&v#?sCyqvg-~Ov*fA(K; zVIulzDI?h~>sR{uJzy*7`tM2$B0yjshI>c!ZR$$fJx_o2P(e;-IC|I@PEA3Nr)OyKtEA`yVbxiuVL z{LUhMcVF^Z{f4XfRy@@V5I*fped6XHZU*?YGeKOp>e zAJ~un=B{}=K{x6pQhze<^`INYQ)&0wzB%+;tw&+*qh4e?UmkF_#}am^UEn11F4&gFUIoc?wc8d^qYm`Z>qkB z)T{kTetmJ|67cIMo+ki0-|gBBKI@hG4&80Nnf;7now+Y|!#0`Vb3f|86VQ&Vt^DN1 zDcYU&Q%TBk_p0x~wIL4{L7v@T{hbG`^slkNCH^)9w3Zd+I`x1Q?x#LXy^k1^4^f}m z+lpJhS{>W!HYaxMOON&;Isu2ILusCQ*;totpE(Z`_$hzc98m+ktlN z($B*H%@*~zPsYEu62Yf+Sgq`ET#J@yH#!Dx1YP(l5=L#^1?a4~&v z=dJ?3D{&Z5;^sKY@$wpfo~L)HsP>`Ktl8w3eAS0>rlxaVZlP~!pL*||(?K^U?PvT& zzE1x8>hI8qe8vlRY7N?#%qs!>`iuVbZ}(v>4El-NLw)axJPCA5Te*y|M2NCG ze?DV2@4q$x{gR4upCw=7x{Tw`7+AFZa*= ztrq>mx;Kt`7Ju1={<>X-`)dD}ZzA~h<5QI%ANh;tk$ptHzZrdAQI2+7{T&gzb;Xh7 z_pejCRg(K|44JO<(5^l8=jCDgqzT+dy|@2&V#+t=dYmWA`(qx4*@O12zcF|taPyba zT#s>QFZH7L9Ljl`pSE3rapfMc3D7OIM#YUPqdNh&W^dYn{$lrp=AX5afXm;vAaq*a zRd|i%Yg7-(~LWg+J^-t<@zswF(rV=k#l6o*l z{I2}-=8{>UTj#d$TsQ9KqMb<`-x>h9(PtSK#cwH3&cU7F7yk$Y)S4Y>MZPnQRNP*0 zhx=^*8MY2|YxVb(rw@LA9{c6^ne%ae&9w#Xuk+Y)sho$FwvYSn=2ZVr+1VA(_@w95!*R010;J0gRpxxPlPiRNhtAfGcciR5Tb(w!or2UE= z#DQ+LIMM+9tWoMaJzMSzz|HD;=vU^oQ_I08@sIuNf-i&Fes(bT!5M5bj>|b30lMrz z?a2A%;V|?w88~pd81Y z#q(YKXng?MkABK{;ml2Dd=h@Vjk{lj@LOzFSoIJSFr6PY*t!D%&UCB}0e z^jQID)hNAyaOt$Q7{_i@P|1^e1?Uo=rvchwhp9LH-}34lF`hEsc=ZL_-OF+1e#iZF zACzXCki3Ze`rR!LfV9hfaS!`xgH^n#>i>U|FEZ4+y9Ta7yP5Gr3j05GXQ7{Q=p&wg`uCmJ z0GBvHJz9DF|F6{_51kKN(r*wa!Dsbd&3)2CvPJ_pe{7mTc^%a644UQ@+K1RtB5YkbCJ?pR|kI zMW8#0C%Y3qElYl<&_c##vrbqz==#>&1Ho_Ur?LQL-pbw(k#Ftn6S?^LN?){Swa84*Q#N%ItTAc42gC$nkLR1)phb=6XdBCUEQUfEk3X z3R5p~jw-+GQFt)u#*ee87k9xO=4E<^q3jQP4uHIffdk05at7(n*gpa(FMp-BfO6i< z0G}5xoiXXugV-VUXXpQ!`qbN}&~Nl&C%9iy*BFET?y+ox^QflJ=J3edR`uncmoKWeT6lzfi!^y<{co6l))+Ldm!4`cf~N#x5+ivaZE zf%9tsdWylXl4ug8}6p zs{HxwVPU}K+*=4}oGp?SAkaE=ka?>)!6uY@%qaG|`F1Lx`66RIpqx+i1Ltri>Bg!Y z+$U{Vb3(iyfKRj3-vyBS+F0P$U!RNs#5)9`zfLCk0qs-#Iw=5ra?Syokrkqd7x>jC zztp`*H>RWj+PnM40DAXc<3-uo;KTeumwPAIXFoZk?EK((uFDYd zLO!H^w90Xr=x^~Go9_P)bAX-iyF`#z4Ohz*)!6I{(U;FV}J7s z^ChpYV^^xl{nwJeXWX?)Y8m9~w=Np}fc@bnaTdzV8(0rommmUWj?{^?{ulC^f09AOwi5w zE7W|R_t}AVci+53&|yEs!z)Y!lzSWZ%@{FuC)!c>1YPoI|9;+?0lHUDk~$IXNRN0+ zwSQAc*_po%@7&wFn*G0tW}JC_zsM-X{V`W9q8;c})!*@vy3HK$<6H)mdTSEKle*g^ z;P%w(v=_XW5EuVt`|`ay^7s#18&!^MLX8s*~RsF z^%$q&nZ}fJ?lR{u{zku%cN=vt?7Nt_rRRzQpX_HkQoH@t&1nPPWRTeW$dSAhXtU0m;dkPh`oSr%(N)Sdw-JqnL+y9Ts(Jm)Bpd)+62>Y1AEZ^>_~r?`abn6{z!YU6RL3ia=+ez z{_?KCeX%k|&IK;{@*=|fJ(oa^^q&go-Lp_1M7z^N{eK+ytu-0IjX%ovB)`9&B=N5| z=&(CL(G%w-af*H_?{M5FdB>#v8u>ai9@{P2a36L5K8ZilAGBhc1vyf;;yxL9kI_!7 zQ$KT`a390?5@+WD>ba9*3HvnRx#U*bOM9^8J`Fi?-c3Ne{47m?$5yS z4uE#kf6htXLcf(fI~#Pb{v_uW&wJEK&`;ix)j1UZSrqu(9M6H=w_>cM|m^^{Z*X<$Wj$<9KyCyVMe8f4RS%PkPHl#!s&f?WBG& zjr4~u$MNdLQooo3x;abzF1Gi6DfU1+w@1tz6d>*1JCmGu$-tdKJva{D&(PnhKT+9l z(MFvA>vOy7`^t_h$Ay4T;z%-}*eTa7?gcDYY%2A?)v{XW0jNd0|v z?cf0J=j%MJ$o8@5?<^R?xF+|;H1u;W7FkUw@B3(%_mRHj3u+w%x^{LU?M>odEO5E+ zj0Ti-Q*VZGm--g_;J#TkGjgNd9?*pA*FtVGf04Rvd;t1&isE?Uue5Ld?QRz7_i8G9 z`t{Ag9shkq@{$N5spD=zyYpZEQlE034g_7VaxIB)XcOYdYk_<3I`V$c z_2`fCaQ`IF%0jy~V=~w4UR)XP1OKWnv=^@)qdf}eI=p(B_ns>EV#=5L2IH6bzlu{y z#kqf|<4}I@2kbBB=xpF-@ez!RZiNx^FrL(bXxC;+1LE?%#dOjmhim|}``uedSg;Z0 zT2sE}J~=VTJeTGE)7H<=I3x9Rb#CNanN9k?w=w{A`MZt*81K#JoUh!Y7zd?(&i%0U zC9BByD9=pr*=wqd1CDbTxP0f(6u8uZyAYT6ap3xrj`TbI`I$|i8+{kk-XxD02HY7{ zg7fj-`z3GUx@7;u(cfxNCjor&ZpQdz{&$3Nz%rh$MZ1}&F7@Ls->US`>f#9Sd+&Z` z|4}CRUf1(Ry+J)l9d!o#`|C4em#OF{=K=RY)>|6wa?cwMi26UE)xWCRpD)i7m+y>H z$mh?m^*Xg^HD)W7>MgSf1V>vZ2gofd#`Z^qFdqz=P8 z!K;tS`zGyF-W7s5?xJ9x3vQcwG3aO94Pe~BI|thJvz<9#v0K`M)bA&OZpnKQppnsw z<2rjkiXuJldCIr$)ug^9-gA73b3M^+Pw7p&wM35rz^_+}2E=y(fXJJ`C;2AhmDT@2 z2ynUAO(Q%wp8F(qI;DpK>h~`3?umAJ2cZ8sZMIR4bE$Gt0Q%P}tNiHAh{@oSxJkNq zACfxVT<~ds*P@+z?;SEO^@F-K+TGF*M*)i8&w?EJer5`wo2$cg(B)iL@kH_y;{SZ2 z>_qeqT*l>kyzdB{zw68gUA|KY2K3^dKK{!E>_6zcI6!Azj=nzhuT+!!tHl;&KTp4M zE~))57)||3o~8V^c1`AkuygcBeouMXy*Mwamxh6E{S~hCB;RGReNc%}puhfJBmWv3 zbnpE}-gAP0yO*2N4)o2x#ev`3Pp=*<`4rddj%yKwcFFTOPx&rl1#qoQ(@e;b{Bk+_ zk6NnYW^B3Q%X|N~ytf1Yj>*Y$)?j_&gK1<$7`;vP`N37F+Nb@rKl3EK7gElTO&Oo@o`HUn=dA(6 zy&UagFUtWX9*zgyZdq_8=`k0^0*YVKZ={}0KSlilbcqMtC$IisHF%mx`l1G0r?LH~ zu|DB*?w{sfxINPVR>`bqtBC+M}Og{hjd+tYNdjXes5ynxYUkNKfaJg^q2GpCMOGdkK>;}(M zdH($671i*hs>|17g50elZ8Q>o&(U!OYEalm47yzUk7yW zoe=d(;Ks=gkv{Z0oXK-n-xi+&+{PAtpS>}6 z4BGJ>6YqKm)HMK&KF0~={g?hG^*o--&RdtcACec5ZoHfl z0e)A$&kevh{(GRla<^LN(YlFfx3cy{6aLpm`B~yg>QTN&8wI+=y(#E#z5HYXaLKEw z4{h;_5YqpzALwY8cOm+-yz_Biq`o;7bh&?qg5Uo9b|=Dw`)Q<4tfXa$={-Y zo2%8|$&&MzaaC&q@G=SjEY}*qep}88;yl13>Px78%KzZ+&&vvEI4f!RX zqF&^kdph{!oM=G)aXA_H<^5tkaIv>6K>1#V=RdwTBK=4<{a1ePYl~0Xy?843c%iU7 zqt=4o&W?`+biNvv0O-XxW4O(I^X?b&-SG>604Vh| z6VM&6{vVT;FOc@Dm+wixG72t@3_yGRV@e@&TKCOiv~xYS8tuaUUsdYQ>T^}uU9Ehy59jnp z^c&+)ofVLyIX@~tx!jZUx3VhF2HkzX72}w`_iT5}N8df0=cWGFI_lN=yAkJQB>irH z-^%-#aZnp|dKviLa!a`1Zrj?Mf!kk)Q=iV+6`Y^((K+s;eO3L=t2X`v&d2;9Os!{o zCfm(2`>7}0xkdSI_h(Z$Ud{#FPj_s2Wrr=^QsXr^MnBbZzm<(~wK}DU%RHB{-&~7+ zXMGnnhV50=JCB=ZB-g8byMzAg94$-v#{9C}U)_3(aajMpSTOooCkt7GzxJb^^~_;0 z!1X&Hj3cz(+6L&f_+}&dzKf#2*(KiQK5GdVdHxvlPKEn~PsYy%G+w-Qfc;*?(O;d* zop|nuy=-QC>FkAoTB)n);4{+l?+0!UN!SkP)auT8IY&z{&gjJ&Q14odPucaSr?}7d zy&_7#{cCMSKfP1$>5ylopQl}Eox0EtMZfBNKM{}xKCN)Y4dl!Bn0hr|RbKwd*HVt?iG22%Xxgh& z{z?@1WV|pyeZt4w7xCA0;98IWG5{^VAKA_X?zi3bqn+gM{WkTc7yXF*Mxmv&dna}$ z=a2p(phg_$Ux(|yVO(9-3O3m}( z)?nan(V5H9-)XJ>U#R`~ifM-Gcq`ZzgqJ?XW`>*{wcOUMHxn_XU<6nK_ z!S4)Fe}_r?thVyEpt>AK|8FGYnijTY0{HCj6O=xyhuGlL zp8b)AcHM86?)eSWoAzYgWYFyp^}91hm7>&-HKu=m(z|^`J=leMQ$G^tvMDd{&OSir z_Lv>ull>eD+^AqOej0fy(T?m!eG|z4f0(-R_?(Wff6;2GwM8lFqN=vqm0EHsweR~r z_I*hrL2Oqx#1bK~hZ_kIgxG4At5i|S53SP0RaI5ArK+Xqd%oX!uFw0|`J9r<30K-`*rWUJqP7h`918%*K_y16)V73{3+L0=CK^O>NJ^t z$KKhL_G84)oQ!h&q5d7cYLrGfz;BW7>Mq+*Z(TL%$J|W~*}t1Kf#Wjn>GvP1!ZGTl zopqP`XomhtzpK7`pW|~UT&CTcE&s_0zG_;?Qb40s5ZBE}*1zwz{@K5g<>?zIpkJ@O z&MT`Q8fkx7y7?TI7rU5D*r1r!?_YbSqMcLbLKBor+`x4(C$8nZ?Vi=yk3IFBBA~OX zPNE*!O<&Rd3_abD{C2%cdy{?>K}(Pz^MypMGW0ayvcsb*$y5yAGrId7UhWf5I=D#3efOQ zYx`PtLG#JgGCo_1#h+)Ma6db{9(=4) z&!zxkJwb1UdZAv{ zeJ!BOpX)FBvmN~GH=a|@5?_&@#F5ko@!Km=?-&h20L3qFMtghtCj)_-`OYq8dC1lb zl#8BB0WN-+>+Gy9k&bewZ(GXW?DxfH)O$4taNWG|mzM&!x83BrdF6hiJnczGwLh4f ze-Y}PU-C=>A8SX%MBskh;f@@~{_RtvQc!PZzS$e~#=duSd^aRY^PQWYa<=NvrJaah zr(H`tK)gejmsu}j8OuYeQlC}C7_OI$dkD&9|Ds*Ue$I7MNt?J2 zp*`xIqoX+wiC?Lg)~$w=n|butuxzRK>D)iRo(g(DF0!lE*$doW(lrxw;_o+-zERp% zK<`YG$$%0sr?I|jot{C0`{!z7OCHvXJY!Jq#q65_=+Do(rt=u8@E_Vw6?=<%tsF(BTbnx}2J>dMEyTiDCc6LA7rLk~g80vk$ z;pS`^O}@YA|3S1{Wyi9+?`fLL(C>Qu8@KIN;&<~rNcE1bUEj5GvO1wt>v7dg$xYP@eA5Q+? z^rk%QQJEuwOCE%JVBKy_KP2(;4)AfNe9eBX>HBGCvcGCOcvgzzcADzn;fkN2{@CB% znhSnz>(~giH-c|cZ{4H83Bau*Nz^O%pv&<%wKveu$T;cH|`Fqdv<1Jri`QxqjEJ-aSqIQQND|20!t4?NM)59jEt`vWnx7^KUxpRf^8P zn_s@n`AVEv1oW2GQrmyvd@TE>_Fr;tLpwR&Q%)lP(V!Q(Qr@s@;CAE<>a!|8p7WA@ zG!Et7v03yZcFpDUfIBa*>6VT1%U#G%{5koljA@%$zv6f->Wv=`(Vo5KGpHBHGoaqu z`+a}Z%lc0Plz3|apyUf^f960_uWyO#@hBJn%=NKL9;RPIoPcuiuN<$JXWtay&Z%;1 zgFwG&H~Gl9HUqdd@@K}u*00MIaJR^3>{s$L)OYKkm4x<^hofJUyc_3jraaZ_6o`Ah zkG>;6ugTQq;A2D$p`0Y|76#lKdYa>gK9k?i|5CoPZ%{s7;(L^XoO@_Lc9{~KhvaRx zfnMw-4A81FPRs3=Q_FxO{$YLmO!liz4kj*oO+Idrn-qlh=h{)v-4mBWf&2Rd_7AjI zWk+-dlz47FptY(?D4_j$5!$cOq*m`B&~2}pK)R2<)BH>7_ePQj*o1ml;%C(3oB`a< zh@_qwt@Za8yw(ee+vm;<0G*sm69MHsPI_}?^Rd8XpX^0Ayo~lozvQGGkT*lQ6|$A~ zW`DYa<3N6v^gXw8zcH>I<9dl-;rcnZ4h{^Gc21RhD@Yf$gM8(jLwk1OUrt52do`VU z&;cvN9UQo#}$7uA_(-`Hnc#!5w8D-zu+d zGv(~-ge_()#_X{$7~m zjp#>T#Np#kEdXCx|D~Y!{f-*3j(XwMJ<4iqaBFx1*U9VBj(X%hX}K2Vl8>_i?Zi#%0p07p z)&~jns^z5qiGObk+07BIG+UQ@6+yYp&Ym5ho@vqIqpXQy*gtj zfKKE*8o1~${h_KpZv^oY6KE%H;feHLa(|P?c7gi<)#NejC11| z=bgG8&hiGu$Y0_pwiEfzV0qdKtuLq6bN>}TO8#!a!Sow)E~K37|7s?H9{B|D6?!qf9j|AO>ZrS!2hzyewL2@Bp*TjHy^a(INeFJ zsVBzR$X)DrazU<-Ib%QdUCt-m=Oj-*8|~%%rPpztzR$O2=lOU^~$CwWN9!@q|UebaguxaaW> ze>s-pl6VX4 zI2i3@e~tlkHq{vmzIKzHv@1Ve_BywSBHieRv8YEp2He*}$>(z1V(*!#H{bgGUDCh& z)imJZ|GNVhKc($(#Y>66y{_$Mp2K7_-)Xt3 zZ6m-(ozuTx^ahR?1%9?^lHZH_`oQ?zv8O0!(WkZSKezt>O5=e3ze}-O%0=w60qTvW zbF|*(@0Jd}l8@4I%a@<_I^ zVzmC4eoyYb*=c zKVuGhpLS)up?}|R1^V^#Ozzxnx_uz8?w^O9uNqT-WZkLXVwbVtD{&6}wli{g1jeDB ze9n3L=MLPHaa`?w?1XwJ5Lb!c>kS8V_M$(?euX7#cek_&zPn?}Wepgi_pyc87I^LW_ zyYTlP#GT}S_GJf9@{sdEkNh6n$-MxetC%r z9Z=2-!EFEaOPrUSJ195raZ8R<_Qfr%mwg^k_Djl9-k;E)tF7nzpd9gTwm^wbwEbRB zpgqa^jman%KI~WSX~%-zyi$U46F)eY?P?Snf^ylPrvR68zP68Nr8J-Czfw+WfJb?% zu{rg63_VRcD}CHQN6=3oA185g6#3M-I|_WAQpXbj<^E<3pf@LfDBz1c%ERO(z>UZu z?8n~KbX_*;CEf-Uzc-WhlIH{N-z&*}PdUpy2G`Admf8(;a&99(r`-FLlQFxW?tjlY z#x)Y>v46S0WVyr<><{aN_HrLGmHp*A!S%qs7W$QYCi)q%TlzDJgX@rP#5dF@xp$^q zpF8fO;;rvmwU%9u91upsEBtSPq|L>5! zWuCSpxd$V?+!q8%y~M$^BghNovM;lpyff$lT=J`wliU+d0loMY+J*gGzjK!Jd>YE- zoj?enf$|ZkEy^!}mj0dFMMwH9>h<0NH?*GNVuz$1G+ng8fU%=-@e0p5}e>3i9 z(O%AZjLUE@06NKwuwS#quk>e`&fN1%YqpBb=Z5aGAFIik-Qi`SUXK z=>M6vzdVx)dhg)p9Jjne2avp>n3QEz0w z*M4&DiFNF6$y+@D<(x_Vbw7Aj+t+CQy&tvpGWAiFevR{xdDAWhr+h_THQ3*qSGm4^ zyb69O_xF9LSyA%$&$m{K)MWH4?*+PoPVy$S6XZEj?tQn1^Ot=t5jf6app!U3mp|>^ zg6#r%Fh7qe{*rQ#_cJTVr$9-{S@!4YpqF!cG}{I4cjf(5I_SioO(wm(KSI6eC(F%! zRVY8X_v1SI>uy~fNnG}M_G1)@S&DXU-CYa8#~-)o*%;!1cUhkCxEpY1!rLLB7r(&u zc582?f3g1T!ST7Bn~)FUPSD|A0MKmp59Mb5(Ukh-zb`Zk{kRBx@vapR`7pvC4y^?= z?p)?L<(_;(kf3s3(HKxISw(&K<5oYeLi~<;?=St%-isTo@xZ?CTyfF@Xw%gWByxAz6DB71C)4WC7>}ljB=89KspYPcXZh(ucCjq zC3YGQIzNx#u8&)ddU=-@4(PnTmv(9OyFkB%djpiKJoTf{PV&Tzudtt@T+VTvk2$MA zGt~R<^n@-LxStPl-fuPvxH0zx=c6#ty~wWx;$PXHXQLeF zAkfRcMt^R7k;QfL-x~f42mk|1Lp=7o0`A8e)9C!z}FBk#^K*-r9IfM%tETsOSS0xs_=$WQhK zZQmQKah&pgnD*c-9h4S?cE^LbFU!3U{i>PTnf?fQP4JQTX0$uW_s;>n#BYO8F7FHD z0sXv_852AU^|(Jnx!6DLUf!orZ`_$JY2R`m7(=@AZ-oNld<5w0HRR9oYq>H>H)0*_ z3g@o3tMF{=6kWxE8qa=nnPKc{}i(WU()l%l%$QwhO$Im3zziz(pPk z^`^WV0WSABv}-qm7G6AS>LigE@x_`T!Tom_IDY|`cRt+b%}bw9KfUfLl)s;s_Ve*p^;6NH7r&DQzIYc+er4KF zj$WDn(f-ZJ`#28!bRh42=dK=a(QvMhU08ny#65SFe%86MN9%X9zS^!!pQ8M|VG-=d zc9+p#sZQs1qCeZ}Itu+;B|5AFZuIL(e`tku<@lZJrx^EHMOqIgeQ-|7$9puKdZwN~ zX^8gTzK0u7Z|-RRF>tfmdhH*21+(1xz40El&&dyHy!l85twz19 z2mQD4Lu?9gqg^-JixY8=>t$Ed-{*46)}!8fzc!@*RlC|v1Yema`!lD#spYiA&J8~H z<-*(t+(C)EK&Ps-<^0VJ&REo&iTeIctxTYwP?vK}K)F$_Ir*xZ`n!uxnJWNv=d`;&E3E)H%BI*8(mfFRb)K*TFddi1M<=lun;e72%Kkr1jGgtpVf!Xd`>Z7%! z1pS%nyOHZ)r}Uo-IxFWz%H5c@nC+~*#pxearyg2I!{)1SG8x6%(7 zLt1Hn{ybjWTicHpa$GCxqyu`_LUs`5e2sE)R=&%9!YR{;`l>P#X-{Uu{fmQyUi#Sz zdNr=pQs74JWcowv&+S-dR$r1 zxIzz<+Y7$qJgwkyTo1d@KiYm|T%c3?PLrS0^%3>Wd2pva%AJJk@1woDGLz#s@ATBL zc-bW=_nLR-xYYUALx4M}JvX48m!!V~Y_*D;1Kb&LEf~;k@^ljD?A;HjKVsKmz+JaW z8tSduk({4rtk8N~Y#a5$-92X&=&VCJzbxa@axa}p|7tYU-|H4Ra$H8{Wzrj!>T+4h~pvQN!9>*(wdI{U_FGPJZi*1VnE_6%DXZm>V1I~gWSwT{66kkO>vOA2PP5k_$ zbU^quK&Q@O>ao~A<>QpyzB?QBRtvrEIj?j5>|p~og5G<&gY)vTwsZb6UdmtPwnm_x zF=k;K(76e}(@%OK$EUE}1A89o?RI}_Io$t%^AJ1L{=3mQ>eq{P=$5_{?Tr07Ie)QV z&d;u&v<7@cKW7pyI>7O`jplKD(m(A>>|!(8yT{|$k9p_3_MbH_)4!U}K3+`zzgM42 zx)aZA@RN1mykwuzc02Pr;o z?;H9T(Qn$DxB7j`*(;;t5qF->Q(5B*=<&DfruCq7ow4BKeOiJ0q8+kn8~S$+wV+=y zt5wo^l5&7?i5b^E1NFxKX^DW=*Zt`SREHabfqM!19hG@?8|_35d|8hx;rD4lpx4xRyMRTxtl&>57!dyqgc_3lLA-k|lIx1Ih;SJsbd zLjLX-IoA^JyPNa0)2oM(zUzFhqtz{)dZj8%<+v<&?tIdp2&Y|%opU@+=~H^#>J#?k zWMq-QUF8Dl?A=o-H#_xwY!JrNBroSJaR|pR`!?-U{3_Sg`1@WW={i=Wo*NCaL(#9< zAn-1&sJ`#FPku|g@!Fo%`&+lyN3h-ZQ#7Br6O1d2hWdM|_H82#eB38ZDAyPJ#Dq|- zZ;Q6}M0<%BC|~DEjd{TBCmG~p-I_%^Qf;1bU1cAmUAT{WP8a%h!_>cTwC@cZ zjB+E^qyMyW*NP+En+tk?ugcjc4$$0FITg?f#0L_WlE1a%i%Fn2YDTbMGxO$T;3`>v zAIs}|o_^0uF@o9t!sJjuCuPhAK=B9jNWXnJ?c2FsU^Z}T!?q06tKezWU%SK&`Von1 zx$aK*BJJ0%>F@8_%>w@mGpZi(3_P!snmQB%oj{n8=HO}bow5puf$xpSLNV&_t zv5x(o?8foAg=_c4c$}oq+oD|bg?i!E7)w2qc$oHYRqCA1b}Ne~13I_oaK911r2Tr$ zxk;>VRalSj;+LeC{W5{&_r6KZ#(3*|!FiiCbC9pmbVd!7%erv>>i&_%pf{Ji#(CJ` zuRMd@iafTU-0Hi6e!^-ra2DHDc))cr#J>`+SuhQB>dESHgco8ozi&QGVg0TqQ7E^& zPFMse>q))yj-24U%~1WjKq;StdSg#1&d2H7koyznOFpOfF9TGGZ%ibgob57!dnr@b z0~dMk25zrhHy^lB=@6luUt&?NE(Nol_))HltkWixJCE9Mf3mj}jb!^uKhu6O9=5Ar zfd0a)^bzd=@pKUQt4|z2_rx>uwLZ8$5%gZ~{(AsnPo$G`3UEv00O&+aqTFO39RpmQ zJi8He&b1zTpIP`O*HYxj8Box&BkUmB~Lv48i|H>1h#yRtU;;am%-M%4>vd67>!4!hAb#>-yxuEi|R_%8x< z&Y>gpU-q}RIUeJi-Q?^08TY|sj$6)iL(opnBeMbBqDwN+-u`wX4+i0npq(Puo+08LAOw?)oJ?B6vCF9n^PYdaE(-v*tNoR4}eaTfivoI7WtUba!n zL&ZL&AMzg9qd@Ok6WFiQcQ^YH|4;eLd7tYg_8N`$&dI^+0p;A+3lQgQv^QVx7zQZ& zP9)0J>p$s!uC>x~zOg3;_12Rj)FWB%DWr?&MY|R~;(R5pNFkp_54kQlcag4koXw*w5_^AH|@($ZZD7Rkb6GE6lukIW9k*62C!xlzoDB zjl2QcIX(6JX|<<*7I2A+IbN$;7Uv`91-+g_hEi_IEl9q8oUJ5YLcjjG$s1IX@{_oQ ze$5omKh<#u~2ABdZOIwqVu(K{$x4MK`3{x>Gy-?g+HjjzMi`!?sI(B zt$*f`@4n9C0G(G`%?=VM@iO^H-f1DqeZ7|R&3e>Z8TmJ%+$jDA=kE?Iy8*cPv(|vJ zKC~y}*00(xe0zI7+Ns-9lSo(P0`)}lSHvaW+Jt)NMx#VPZ}hBWKr8WOEtfA7beuS@ z0Oc%p$M$l5Xa|0hKck;@%CBa7W5oN^GyB>(+ND|gUG1;e&DuczN&PCKo#Y?5uSy=0 zeoXA0dg490#_{|1Cg+AlZ1?7ZShVw=d`5Y?Hv+$}Uho~;+e!OLC;pA=EbCMk^pbCz z#&%aq^Z;~645xjmO5yiyvy}d zBaYF2aGnQ$qr%tkv!9ijBMA%FWn-P;VdqYZ;)#OY{q>et`kNopW8e z&ffIDs5f@eXETDNT;fIU=icY3^p~#W@yI8inSgrnN72B&^7?-(CBIF7W;QQ97UdH6 z&1HRp{(YQNVl?G${yk|a+FReWUW|G<|1AV=2K3drxRdrHc~HH6PnvN5cf0EUzpyGi zm;!p)9|?^axu{1**pXr2=Umg@Q}xenW+~fYKe18NL%Vv-9cXV1IL-c@tQ2j>73R^k+R2iC67W}}_Nv9ur2@5#VrU!y-X-^$PRb{gf>`nUBI=OKCM5b~G(2vGEr<=(t~ z$!PC9kLP+yd_g_&O6qrYUj6zTK=0*wO8MD+t8D?jqXNIn4l3mxT$yf<)( z^R#{q8%zJ-WX`ogFaDF`Hn;cE`W)~(YG#wwXs0eb?@YS%W zP9Kf{G?qlC6TUr`^L0k_q91c^t)`sZ=fyZaC+n?&pi|AOP!A=46HHvJpfa0&o*F2d`{d$q_3V*yE?IezvL;51; zwf>*1&-Ie?9pgPGy)nmYe%;a61J2h!7y5Z>Z(w!G!(Sio`~S3_r2fEpyXnUj`tf@H z%Juc_T-JFb#^E)IqCQD}P|M-=)b1#^Z>Dgar^s*17k$!PC%Fk}KViIui_Z*L$KWRsDeqVrc=i}P! z&s~?B<>tY#9Vmys2BBW!RY12w64${j8$*4Q{hssk^Eqbnj|0)p`a3d?3A@QItE*@vPsnC<^qrw*+*D{mFiLs-rEcYev`hY@fYQ9)&0vxz4325t!FFia9%iXlm46Cl)uEIsce@zYzgQk zZ!w#2lzxXN=S{AUS2a=Z7lHi?@d(?67u^hci4*D1RBru0=@M5JM7b(*p6e~^wE^^U zuIobh>!;Kw+0SMZubQ9pk^6$hXoq(MC>K5L1>C=nbCbTBf^x~Pu3`Cv(8<893zMn8 zl0Oe+`EmW77x(0C8}*250L`gsoTu|3q#tm%=McRQo$DIU`qw+MU$6fm%1!)57|Na4 z1j@;5zHFi9QzaoA<+t>EdwX1J3UKk$b6B78ALZib$q*N#T<*n}vfaf79KYPlOam_a z0rzNMTJ3MQEaLc$w{PxX z`=^zA1WCQbdGwcJugih^_V8jK7yT#w>U8R}{iGbn>3*23+x=NS1oe^+;(p>C`+{;4 z|2+=;oDHX=0AHLxB9pmKh@J4<;w7hO`OAG9_^6ttI|E9*oJxHAJ<3($X39(AR_*uV zCUYHy?^Mu9UXlJs?n60GYwtTMNQ%WTcOqQ)Chf}pQoq|5y`dh7o{%1KJ?Pw<_4GRC z3{L|t@srlWKpxr8Lr6Tvd8k8`Sa0NwqP*qaWlpxV^WzPP>nR7hUn76jCYtu{GfaadmG_*529o;~<Q-tHu=x6P|i56t`ee_7?c$$d!dk^6?+x6mH3 zKcl_Vvpek!`6l+Ws|oeZvmViYa8Jx~xhEmK^$+88*@vTv{~h@Kc;N$-i(55zW)Q{| z_aoO?@(8p8vCFk6ch}8|K|6KlF4xb$Pw?+UC2rw*OMF55_O^DSovFW;Ek-+eS3te; zzL>{yi35pCeunbH`3n6=Jh_7Xv??49DCZwNzQDb=pKq4DzYTiiRY52BH}n&dhvE7o zZ-R1(duxKu?Y}J+5cd&;*LKZBy&btl`+?lG`VcSOjO*Z)9t;UZ-y_`SGqTJekjq8qgEWq90R*hx7zptFxMY~mv#%)D8>&d+1CN(|9G~54*MKoY5m;&%9Y zgni45C%p3m^+wJGdi)QD4n(=cBidf`7GF-f5*=m%%KiNEYyqMVQNZ2sqSRAkZ#?Z( z?xk9yT=G5S^CCW%JQ>O*Pe(nGd*gn@tF@R7=zO}E>mlzY$XDK@X@3^TCrCa!A{%tS zEm#M7bw>Yxk$-f!ohtoeC&^W>Plr)1QX|`hLtASDF35UQsUZ z%_x6~Te<#n|4BQNyykT9LB1Mvk`Gw|=#3w?3gtNW1?p2#ZkI1Yxym_-^HDwZcMI&i z@1}uH?!guT%6mfEv*VVgeB>OW_4>E6^GP=>!UjKcYLyf~IhQR4lzc>g)T>*$(*dn^ zgUQE_YmCNkHv^s5u`0(W_q_BI@_vwhO3n+L&<=haQ1av)Kkf<8&cFY0^ZdqjmpE|~ z%H{ng^-A)TwMZAZSC##qdMx<`g>wIWsC8o{=V5eP$^FRB^C9kM`*z*p$XDV+!uqM& z-v#y|>z@8UczKsZ`}OnncrOwp{n%|@<9f<@lJYZFor(k>UtZ3)f79N*q9vw)Ud~UP zC(iMpGyaMoU$^3H%2)JEuV==3>XEUlhF-^uEmwkG&WBOtA2>g#I@`AsZ}9PYKnV^{?4t_d>Z)S{Ta&T zo!(a9=KV^;hzCCmA?(zO^ukxii|NO+KxdC?uIEv$B=>vw)3rbH9nSOQp=f7k=Aa(i zk?(MyllL&xODFY*RJ51(019*xuW()D-NZbU8>RGjEyVv(o>t-l>XF0`^otVLaUHy( z4&^6#F7~IaGnB9CMz9~r^V81$-~E>j{t{1dJd!_YhW?FCyQr_mpNlA8xj$Kna{pW@ z?{&ujm-|fWgZRZU;3MyHiCgDi()+`23ud8Q?w{y~C1218?IeH4@f!ct()#h}fAlxF zM?pRE(17x;I1TN^9!3JXPb+hNvhNN8F8dPKN&Fb)=jZdi10xbqFYzq>C-e}wlednJ z$0aWtB)G&Sy1vkm4Z!7{1@%YvxoyPbE=?v~g#LbaCpLsYi0JH5v7CKi>!Se!L_8g7Y-{5v`}gbi#VXV*N8Xj89Pe|p0gvC}xFtVH z`8t*K_e9*c_tOqkz8o2#b6$?;Iy!TW$2HbK1E_t?^+S`BSvq1Kjc2GK)-KRt*G_2VAdMY*=x>Hu2$aRF~oQ6 z$wkD!2@Q4znL{s%jwdxRlwExi|ohRnJbO>e}i_Tz0>7h3h9k-;$~m{dpsGh zmiMz2%Sm@Go9nIa{l;;);jNR{E_EFB%(ZpC*jzb-{>52+i+r8FPsXCX9a(!EVc4g$ z0oAkz1Bqwo?>Cw67+fcFO;z&uDu?tU-T2v*vo(7w<1Djy39hewVNF-oFC0cYR5$+` zlr4OX53h1RahnBm{_cofn^Ere`=0h;ym4+l+Z{O+3}`>?F&_2KioD$cWt^FSW;y+x zeKjSRdSX1kO8;dH{girSm-~kDaek<{3H0t4PuCM3sh$)BJ_oN+&Q|!>JAhm7e@eMn z*XynWovNnadz<6V&_0!QWg+NP{hj**^^}J#Mw^``Hh9K~ZKc@)G*Q7r) zhVR#UUFwg8p!rV+uDAMd8tul* zvz+^dactOhw6mL!p8+_VGrOZe7oDL0PX(|US(<2=%> z)$h`+15eq`%%#8gCbh=)o{u<44%nU+#o!_a~UXF>} zhuz}~wf+>l-y8MD)lQVJ`$v=Zz-9lTzIw&`?gBrrU2TrrP6>@fy|*nU4(0ZxVO$5< zPbq(^zNhuAua4L3h!2;5&QT#VNME`Z*Hip$82C763UPi$Xl2eDd{J%;`7Rdp-uE{b z0XJ7}q25^U|G{xNBd({CE=ODZx0>a|YVk8Dob;>g(N2BQcNw4+h&NOL{eOgB zZ{rj4{deN>AgMPBRN4>Rd_HpkaG4kN!Tk6r*TwF(e>>{k@&kvW-udfwmOEFzC-fpO zah`V7la#Bq`wac1^IA67L-aoy?Yt>JQEqNhHTp~I(z4CqYwevzzTP+ExK73!DYSR> zqt25l`@~N6yQ|;(q|aHHdg*oiaSL$c=o-d7X6Xdlt8X{vfnLFEw?W^xt7hvr16NC4 zn+<3`PS^AaJ<>>b`Dcw69UY!6^}c<%?FOZw-gsJ=>+jTjy*KJ@SO4zIitVD;|9Khu zGw;X#v?~?xQ|`@?!_eMdH=Xw4J#IAz?aj(HCZOEBoI-iI^}Euqda5b)&wX=BY0ydB zybE-y&8hK#meGp#C;lJ|^|F6a@6_11MWnx*K|42pvRJQTnxvwg)9D@hL$z>NI`P*H z>XjY(1;=fjaqZshe&Jl%z8B?UFQoVV zvC&z-D^lw=Yk$0MI{mA0Qr~kJclGbBy=r9_puIV=8};0q(Qh7bl~#^+EPj=G;f9x_ zpLdhHk&oSB9@ocvFJlYnjqj`NAfLy%I{@0PZ&2RGkCQoWS^or-J9)2c0)$;;1D0Pr zlknzWI{>Yk!P5b~mD!{hyQJOu_Gq7ONq_E^`h#-BxrObA4v7G?ckSyG1U}!s987p; zb_mNKR^JRL&&&3p+#P;)7jUO+AYb-uMLKX}jQ(FD=nd#pi_U8S#ZS;b%l^H9bf28i z^ZUIy$0K^t9du%6v=e98uM0uvpF_;Vm$e*zEM9^9X58ku?W}L3fSZqcu44Q1lZd7Z4ZuQ4SJcYroW5|6at`E4TKyN$AhH^a1tEJiSr-w?@rV!Plzq(XUyXw+#pG zpC8;-DfFkZUi3@Or^nZ!-mEj7a`UbZO#@%?XY~KpKjviA+jFkaZp_vb>BpV+VO%d` zOfKrH#0`uSysP!*qrF$YCL!Wnw70$Xr9XH_FHAUryH_Ur0T3 ze|eMqo!R>To86?ov)NzgD}+Xm#Gci7g=*DHtar-UlE_*nEIze^*bLcZ~ZlBC+7j$ zsq<6JI^c3n;{5F?A8iHhmCVa_l9%8TPA??C@?&|)VosR;&)BhOdFXt$(lRdH26qf(ofpU4_pMHv&1%4uz#i$qk;yl%_ zL2R#9G^9Se>utR{fwA$?sCPr$$`v30X&rvVu zsd=PZufLP1UYSS#<|aqRkp562$6?;TruUD4U&Okh-tLjL0Z{hiS>U6*j%;s_Nu#{Y z?@F+}pTAOn|DgS;_+Pa1;}9$M9qN}=a~@!sc_(h1 zgnoVdu%EXd3S8nRj>r8k=WO(2B^T6ovF)d1;Ocx1>bEg6Qh{E*bTyiA_u6#Si+yn( zl82yPJ1-BS-FOerZ$!OavC|+x>!Y7i(awANx89fDxxn`Bq2bgcId6_fy?+jn{h9Xd zyt#21`K(>G0rlpV#2LVyy`|_!L=Q)@yu$(dCueZO2+}9~ZIiCxtPntR*aq!~yR_5x z*G9jmvWI=#3GLk#-_eh|i}$c!IfsrUpP)b4zr-Iz|kVP%K0eRk1) zfYu+6*`F%%9{nTE)u6NHmZbdryq4IjE^n{j-TCJe-)@XiA2QBzLsuoRpVrN^|BXLL z|K$#SiFSeWE&G33p&Ou_OQ;_bZ;e4a+0O@{+{&I558Nnul6ocavyF0R(ze-vz8*S@ zZz#}79xV;!*3Pf`0GE6!{ipcfSm183zQ0l1-(3zmIaiMY^rkJPKQK3zN(Szq)77ER z`l6jb4)5<-tANWnA)IvIUe&ix(#!3U$M?iAYbpGO*@nQuOHgUc!z-A&$r-Q0^FQ@n|AY7)xa^D6EANx7i+~$TMo$8i{F|0f?qB9-3+_ecq}(Kbwg$Mb@8(;D z9JYHyfA7z1T9R^>eUE%pAWv&Y4vIxP$+s>6y-NQt61e1J-ObJ_vd*0eLy`(q&;9<>?h!V%?kTw62Ett za!@xv*Lu5Z!wU3c-W{R!?&4px4=ewz380sJ3->AWw;CHk=bBlRw@NyY#&-Wc3k99i zpaI)Sp4>*cz47o=lpDLBMF5xc4#(vTt;P0sy#DTj=+%1Ccj!BX@QZ4V0j-9E7W-euD^4*T|DaTEkmd;e%veTM|;CQ1HO)Ndk*Q| zXvTH3oFgqzE_o)-%PLzw5xDGM>`(M*9P3{yGZ5{pcP_BK*+c(7jP*k-^+_cyAbgQ$ z8L=yZd;!i+tOoz4O1h^pBFy$RPit`n%O~zNg%b-PD1ij3U`iA^J%H_U>e%$T%8pk7TZ&QMKbkKDMABDk!*-JAd6>Zj1tE|CvMy~MNBLu*eoOEF1QTD}Oz%f&<%R>7ds)ig-1R2Qy|0eY4;%FhbADF#`Prbud583&mCFR7pO1bD z1$6dZqCfNVwQ7z2UoF{>-$A{cv$D`mZPo8{B`?AL?2wz?Q0^?ctL^T>*-X%zk8=+I zG?p}?yj8zOdOwkQk^WqEEb85kg<1eQ?+@vYa%=3*l)JMtZ86H>uL0HD#i=*gr+}M{ zQgwSdhX8l}oyd7f9*%yrQXVeQd zzN_XV_v+y9F3e565WUrUEaxGVo2{FXPV_Am{NaC5F7`AKxN%m0Zw~j|z-8a!{${$L za9@%0M>Oc&;8e;9c}LLs_Z;GvxqfngFadPtf*+{IPX145mvT;`J-8(%grc3hSAPf6 zJyo0YgTF$#`f4iWX)QfQIby!xC;5e7K&Q@8`XMKABS?u@6Zp*Js0PXdmYqEJkI`&V@t_bbt}quMUtna z-Z%@&YyH{!wO*&|b!UN}@q00@xBK2@+BNc1DEH$;H%)(!+K$LK3gvQM<2uPbOd9%i z>g`*Pa@I76KBSJ-Sq~ifDAdb&o9iz7I_*u)hlI|7Tj1ttFrr`_%r*&lmgeIRfW+KOVJ9*V6jgu_^tE z_<73T4BVrN{!^Y37tjuHE<(TdvD}=WSuW2s^yd~iMSGGwJN<*)OL83kK4LYD=laTd zM31X$t+C)E_avLpUi41uL114u7KhFx-$1_A>(+9*HaxXj&xI1t`IOx@w3-m|+`A71? zdS1iNMuE;hr&{ahP_N9j<+-0pUX=bq&RyDH@BAtP{LI_?k^m)N#Pvjf#3fz?v!fcoYh34H%b z@fR*X7khZKXQ&{zw%yza#i2FM}09%XLJ3Kj|ROp^I3QB^Y0t* zt_J0}pGUda6Z?}q1m`2`I*9cZ-b+Efxlg}e_AWHmcK4|niFy^Ba{}t!`Hi*x*8XrM zaNHN5Uhe5x@5S}h^B5aPdy@FG6X^W>t#w6zUqS9OIUe)yD`BjEoSXVA=R)e4n_X1< z?OpxGqh9ubjp#@A_3gmnmjLCSmG&X`=4q&xcT^m=Ft&JyA{Yk zfnM@!s{utnv|fumfy;id4(*+fVjSS+r?aT~i$dn#yuRAK_{N#1`^UnOt8 z1$5q+7PMR8&vlf1E9EKgOZ5Dw52nAC_YmtqFZp-&gL6+d`mMf6%Qf;6?MUL|fuO@a zPB^y87(j1d>QLf=cU@9X{<8nK%|?B#&*|^nRU5c(iCyaTi^xa6>b%=%HrmU39_|U02|^|H(P$$N+8z~%f;Kj)vz#1BP-Uh>qOuhU?}aNu$-)OJ() zBI69XXVdF^=>zid^IOjA@5h2(@{GmFf6kRmhL_{jojcHrLTV7n>DlQ=W2Oryr7cY}>#`@;YpX{5<)}`$F*b z^AG~lSuXcBDEHRr?_J`31j;2o;QGnEI_K$rufIQ!b!PpL8T1cUsV$*wU*mi{%4NUd z`gj%Iqr7C_pl4s|<<=xy0w3mGIO!7_m+W{_lws1ha=R~>WK?k!usB9LX zp9fQ`YK5U5c7bxq8&eWq%?Utw;5Daz8WMHlUxfM(B6L zvJb?g9o{LRoqujKf6fyLT;5sGo<%PwgU*>hhVzs6Q&WKZ@5kgGZ5HSyPyHdFap)cL zMZ810t4Wlv#7zx>n<;5}Ke*W00lnBg*W16(b_3^LY2P38vj5XR_~%qP|0SVZ=E3%! z`w!Pa-t|zvWiu}kd*cSn<-O2S(21Yr`g+atMUzj1hdWU& z`SjI*M*KnQhyRX8?vK{6d`vF-D`WV4?GFR_CCPKp&&xW7kY7R%t)FYg4?{a^#qvRb zFW&vMt4%*9?<^@-b!3tDYs()|59NL^67>GPoxH=9z0je(f3G0>`B;>Te_Rjfws^3L z@Q)@70p+|q1kmiXgX=7D4*4pxpq6Xk-V^t&pp(26*G24{cHpnC|87w3{X()eU;0<0 z@w^#mhj$4mH^)8E_SRAVZba@Cr=#2{IE(%I`==jI$-57(i{vGCfRDUC83<^nJ>+`2 z1;$X$5-(HFBrnDFa3$}>{^b2Hpxk?pV*B*wjK|flKs_=pRLUa1FSoGVw@1mJbA8>Bb=RWa zId_Zes+PSn8SU-Tvtm&$0VDmnIk5-z-3YtA1NBzBvebJ!`NJgAJq;m0Z_pXa(N56+ z_h#NKxeoPe(-*W$<59sl;MPxT7X#XPJJAlDu|IQtjn3cD?#*Z4Pe8rXXj1oVfku(K z)IXOTWuuW-U^(T{nF6csCQnU$MIMK)d{mz&t;;Sw1&+D(H++b9Vr@M(h81e5{f^C=a_szpbG6K6;yW;gzU8 zKS*%5@>;Hs+MSvJ+*=Vv`MP_z(Voo$+p^G3ZF}El`wFj31)cTx*=4|u|K;rhT=Yrv z%e`(5@ojrK9JEsJKUt-@ZR37?e~_s1$6F;B+B2Y z+K=Vx=6L#NX$7D?wISuHs{auW+$wZ?HQ|XrsMqF+B6{7o?bUuGx@Js}(0NZv5O=Q^ z;y9g?i=$C)AH77s?PPhBn=?Gv0Y7iB{{KZK`oQ)T615%_{WBD}b!F2$(21YoxSV=( zV}aY=x7;t>K_ghMWE`M39>vZ9bg!?Zp348@Qa+*=6H#s->Pk7o&jI(w7o3uf@~gwO zeh;0Q0o;lT)$6-HS3Kyf_sVfUG|K+I1@-Q|V9MKa7ixPLc!lk}b01R9_MTAfm&UBy ziT0{}1lL0?TTDOU#Kh6=?1t4gf}hH$*B{WT^MvbRv@rC1yVc{kjGhf6QEv{&Qy=`y zUH!;c{0QyI%zWG(<*MB4J3y!6s#9*N`Uv_DJ9Yaqlsnyv&j6jHVuA^O-a|VwE*5dEMZCY5q}|eBE(DoQFB49sR7>O=s{ohmPG1 z=q=4jxp~c3Q=hyom8ci$=HJoi$J)JT8R>&^rUA74xo8S-e;u6|{k?R5e>84*QK0kYR8A)SpZ%KxI*)%^&URxy zj01FA@1=d)Q(7(oF6%Udbg9X-cXj_`8@LhJXUuHs_b=^+weh$oBS3{XfHY^d_#e@z#o^;A=)EaDA);#r1xlUS zI27e}%$l_*w=d;d#rm^#S#F+~KNq-H;kA{Zvj*N74=8rYeyr82G`~FsxK75xsJi8P6Sd?^CoZFUJ#(3wnxvtTD&vr+t4Xdf=ek zU2u-&X8g~Yqzg`_+%30QI&f!dCF+yaHSYavjC11I-GCAgP;SQRmNS8SJJwR4WWS(X z%(=Pgmz)kqxqf2*iQp%Goc_}Lb~W`-;wjEk^s6!I?c}fYc=CLb3BFdzYmq3I|9$1S z+&}wM9ugl>9_}f{a`n0XeWQEq*-EsNeRcxcIaj;UzC^Agfm>bjXQAF%QG@zy)zQBf z6#b(AGdg$VIvbxI)N&|wbSm0;HE)EoUF9tLJLBEQp}-}MqFzb-$@v)lE9!MRu#0}s zeo&0|;2F8O&hE=wxIWf^zn7rB#995o-$>uI2vGEn{b4@=?i7BTe#1QQ8RsMZHx}h$ zKa`8zrw;AUs<@ZyDe(;FZ_ljFabRC2-@Q4gf7X?n+@G<2D3`cn44`#?w8n?$+eG?@ zpA5@JKllHn9=U7veXE&Lkp95!9?a&_kPb}Ko4NGc!xmcF^ zAmiFWzH{|=7_1L}-iZF}ke{fhqUYL<1N(%;6SQM*i9Yv9oS6lBx9_NEz!&?q?BBp; zALRTcP7KKgUFdqsA9{{@yIFJxl-mb?VSD$J1FW~6HRHOP4HgntYp!!Wos4;kd~;Rj zJncfC1*5%}|3Vy~Dph|u>YYQ?wLLGLKLfZIn@vCDEhy)J&dKT-&hn)>86VhhZWs&P z-1hBs)EmFLdR*I|Q@@oL&h=MEf1ZnaKc1I!5!X=_x=i^xuVru^M%y8@FWHYGK`;8K z^|}6G>bu0@$>`6Rev19N=LT^6e%xeDULApUYR_`ogpxyp{2+GZ(FJ}PC`EER*#4#&aKRjv!pwsHB7(g@0rQFoBblQXc+#nw} z=6C9cx9+NL_um-Wg?+Rw*VieWl#2E$6zL!!zDMu9_oJ6kQbGTo!z|g z;;E7P2IGzy8EJt}_LW^|m-AQy;Lguam49u&M?IRM(F;H~nhd5MjB7jjU9lJT_s%2s z<*OX86IPw`mU9c&N6#rf2L1JZ6=<)rKT~f)XIzIL}TM|H~_KkfcnE{ zBLR)?nsJ@A5wB985+8T?z!yK2d>AiqbJVVufX*MIXm94wZv37R$XCrMcNXM{zMF&3 zcvgECaEaGS{^0GIpu1g*aNZJ+hoN20b>jdfpW}S>YfYDtPxevJoim-Xft#1!QhD32 z>i085ejMn|N54@oX3we9!0+XIat>E|t9Dq~<;0rZ!EYSPKL=3aW;*yaf4^Kn_%EQf z*i!4zsLfK~&XZ$Ngw`a+KYdjL?rWAia=Z`x+g{wDc+%1fN~yI{jR^l z_$KFBHUH3w^fPZil{{cD<=4(fJCpn&9Q|cKRQlfai1X8~eLEj~+Rh{!?N*C_)wxIN z4#2(hrcvo6?NINrA%XPv>hDOrI)OV#{hhs5^9wbeS}m3RJT-@b->&!_7Ucu)am$B$D?ccpIgLa`uZiz;_bK$d8@_q1B`N13YRsq**?&kcY z4l>yfzKUJjkw5E4>I3H&;seL=yL$bXwg9)Yl4;L4XP_VADCl0^sl8Ta66p9Y+s9uY zg?6j?;#l(i@Q+%rGfil>dPEEA*N7~|yvL~%MgMXC7s2_+{zN{{zJJ2gMA2@e=brjjZLO_>&nCs*`Y1Rq- z#jdD7ebph#mGck%S@gFE?dGVDIA8Ped-Ox|zr-}s3(h6K=vS>{;i_vPU(UA^0X;n# zal=M{-`+ls{q2dzxvo;jT1NVF^*-2KeP7wj;O!ibeK?EpS?UC8Jz~o(gIx2KE`(lw zDsh_gmwIX$$TPk>wgi0I+_D^(=!bgOEA`^{+&Tle?oRY{+Jn>!xNcH6rM}%0Cz*HK zSNx1O7#HM9U5Ve3bAJ!uZmUw*&U#pub3*1Jy7rSZ1>Ap(CscCQm;~1 z97ViL4CRQvIX^r3QWohGZZZB^O|z)CygFZ#^D$_5%3fCS<9NmjAHLgfSp?`(KL`f& z>Kt}-679&VFG@X#-$5M-{bb*aXa95IYF!$ZY!BQ#-GKVh8t)iHd9&^$lm2$8VZfbX z*SJn%uN;TuWgLg`rux5563@u*G<;4wmwFq=E%`O|>})zpeVL=G(O%8PsYlMHyeXlC`qq*3 z8_8e8LHF!K>LQdc=hl%vp?mcjtS@l$bX(=mMtc>{-i@Umq+Yfaa%8_9OgOi2J;GIZd4$~$y@ zHRYv!#PP^EdMfyw>u)Epz51gxKtt;5pu2<4bH4V^x{5n{_H%uWbKNOl;?RfSlY0e@ z+nl|ha*T`uTwm|}Cg(NgX;RNHAs_Wh^pm?G|`&b72FspHK8-QCnw zt&{9az>T)=4*^7;0BE%>M7xx8#5|wia-LfWs9!sp3Ml9AZN!a-v=fO_+#j?O?db=` z>92#>uUi=7sGQe0emPf72i^FqUpU*dk172eo5pciQ@_sgOS?UPq_Tt5sM+8{egG(X zS;Kx}_ke~|knsR{4EX}}Bt3s;(~o|Ce9t&x4*j?V`QQ9(Bk1m?ouh%nPk~FERC(0S zB-))G_muO+JrMXrZ(I-Sc@X2U_2TI$(Cx5K=wEi>s?>u~uq5eHCus?}a&BD+=$=r& z<7J&sN&|8lpl=Cq4Ecbsi!IxKGs8?3SkEnz6FS~MouD|i} z3)DwmUAo}!VU!;_Fcb34%7v*n$?Li9Qm^g@x_v)pKKRV0KI%!%71W2(Bb9MN?q!0& zCwW~6;ri-}!7p*0-*=y6ECXHcgBBCEQ19ox`X}mjq`M=jPsu;1KiTh?hv3|bcBwbf zPNZH&ec>GB6S|l88mSozf$Jlq=*Ln|;kt|7qd}MZKCZvFZ%N)f7Ieu!)p+MEOD6t$ zla}OndoZq9w?1avLR}kleg8))URaN~j{3Sv+{jZs8flK_PU2A{tRempZ0?_qSk+df>s&7;98!7Jw zgD!QiMBvUlJC(krZU)@$)sW+sx-jMFTRO%v0Y`_1Q{w;a=cAvSl6|B){x??|?4n`f=cwydxR7oCl~^xd-EX%%NY*2Hm|ej`OrjzC`(6 zz0lmP{vVT9N7bL5q@LZR`lBFMzC%6REkYB4!!99DkBg_hNqu7h=yLw0eL2wu;(*Kf zgMMKL?ltuNyBN3hnc0l5p8niA6IMW;`P+aPK)KK1ek$YTzGr?mI0Ev_Kz=Xh4`rtk z4@s~8i;B04i)I4%&U@aykmL!9-l`Pic3wSw^>zB2`=Ao-O!jpp=lP8p7>8N#IqlXc zT2$#ZL;X&W)bmQ=JI<3&rU4>u0a}ZT#-X2gujZEep7!NT+@tid`)NG*Bp#?Z(RL=+ zLC#6kvy=6sjdo+*95t>v>UYni-nQ%m^T}r)5 z$q#Oofp)1&GA?Lm-(*~{4h-$#M}PkrO!|x5)2V&p*R3jkU4NV7lsuH{ioBHHDL*y^-;wxe1B$#@K&cmRM!T8u z!xTWT&hLHC9Gw#lKJDRh>c?F>A_%ygCxXE5P6?&H?aDV|fy@1*((|Imv=gWB>x=`) zhtW^&z33lC)lCzC=e2(}neB3aL%(#|e?U8QtibOQ{QPt=RGM^bff%=bCsBdd(e--yHrE-39 zFGPJyz7Pd|Id@XeVkgw2#LsZb+wRVV9K5dpF7aR~aBm;fCO;#;`Awxv&~aV`bdJm! z1St16tNjAy{wp3(;yLZYyN40`QT`ivx#?&<~m3{m2pqji|g#=4d$95v{$*0Yzux}_EX6B{MaZ^i}TlN z{6syJX8Iyeam&WcK^!t7kkX4{J=XZiSr!4 z-1k$TQYSDe_oHVCfKo?c9QN*Yoo1)GPr6#!RD4I`BJEV(ebIm2W_2?__v#=DQ%RS70?_j-@pG=Ty?ozL$Z^K>RC?O=h~JfbX%6`1ekBs^$gkLc{uS;Y zRvGn|9Q!c%#J*Ys_ufm$d5U^5n+E>w zTi$)4-MbfZlG@O}WuKUb{#xUzv>zjJXae|%@2?_n*|CcfJ(+T!VJ&aemTeJRG0gAM-nM zpU(Jc51Ynymij|$zwnEluSGw}FBwPVy(0B4=cBf0mppeEpw#L3UF-bxF~Fr>7X)ZF zIj{U^O%vLa?wc0l6S}-tqMz%5I)P^wl20=Z%l*+(^p|>_+Mja!hoYaJ(YvlXnf2Z?`vSf0F-ag6`dadG|_kZ^(FMHE2$|m;7r1r%x7X~TK1FZ*zTB%WgB;v5qrberO9PZVpL#QlbJVA& zU$fZoc<|@#qm$+k$2&6g!+RsNd*=&xY~^vlorCLRNG~{-aYF7H=$Crqf}D@+k8RNI zou}P74MW&Z@*}^J`!R8OKM7p&2DMK%tW0~5y1a^~2Zqw_AcyHt9|&tVDfKzpZdUiDbVF!f_CWL7rTG&QR^DG&vL&_o(evxt1108 zJ1`QsyffSmd3I>v?@{Njn+F`{bU?lQSn5skT&|y2m-GCMu&~@_rco?0*LK2K3IM5}&xwd++1q zUQOZW?(_qnKJx?RpAwJQ|8Q2eAN^mst?ckrWF+vsxK}Nm^Vdo^?B}hMz2_A5E_np? z?$wVa{?o3cE|LQ|*6GbL_>TVJZ`{Fn+XQnX;bZvhX`oI2u662NabJn20 z-t>JHZ?<=z3_kn2F>2k*IZ96D37f&^Bo?K9^sVEDfzR5jZwJ(hKUxLop0CGo8ty}{ zFJ`>3idR?$T=!@4`({0LpXRjxhyLZHd@&0B^ncaC3PYPrErb{~k zjXwu$@(Z-@)LF;&?my6f&5~!hPdoSjqJH$Fk<^#=ZST$CbKCD-PFTLRii_QUVEl8s z7vlJh%%uI0Yp%V_?_2hPXyE#c#`Dq7h+Y~4+-^BAnDESF>RmS{Wux6)7|(Sz-wdLk zYuipKeU!&~dawYmX)3(zdoVouk0UxzKwCrjITpK)Ql?Jcdgbgo^sZH~bAj30g-0o+(QMA==bGAn?)&N%8_FQeX-nELnh8@*$!+J7$&q8xkbnJmh) zqX@0?MRowUOZ>Oh2l!D)5ODLV`dwXP=!-jnTL+V;0qUbWj|QI=YaSqeqR&=9!*0g) z*EZbPhIV~IjT}Jx+}tI^x6R)GKKqvXzn5;60t-RcD*r*fd+T9#)VQvC!MQca|I}3L zy5L)`t8w;uD*OEq_&bj7>UUtx`O44qCl9mH&+{MA|8($Mzb|VAx|Xcol}kJIrW?0X zKsWAfWL(n&7v>XgxUm+{e0qcN*1ma|_AUB}0^J!FPQAf@{es&^*MtLF$y@2q zdTE>XW_?kU>uHwRs^&ZY4CB9XpvWZh$9&9oDz&RxHl?a#MG0g7MG2DCb?;W}!IM^i6uiBZ&(G5RIO5#zI; z(|y8cuUfwz{QAP{-aKgsMuo3(NS~XZbaUZQu8$S-G3DD|{k{n8Zu%$Gt6ljUj>8^V zi1FJx{ZcmCjjdG`>@_(7xLIVKve$#j%$vln83**9*(xt9+@I@g_4<7X`FE~Z2x#a2 zt^Dys8pki+kM@C{*uh4-yF}$j_7%1NiywDEyS8+q=CT@isEvElm zwg=Wr|EU<)N1J?*_TsGhhVwui2cI_%i7VW{wY^Wc4(`C@$c^=e{m)Z_o`@0{3=(G2V!uOa!hq9X}QPVxNpp66f2IzNXd^K>K0Li){Du zhT5S@?&UkQQ|p1v`6F(FPYZoft-s_O=r8*|^{O9QPP-I;o&-L7bEOQlYa4&(I!V6` zz@0I@RuI<9PyL$Zo(%%OHE#>~++`z|0GIr#Gx$vV=_cT2uMZfPjGL=zU;5kghoN0B za$`84*mDE$xqfGJc9vK1 zsoTtO;8sWfeDpKkcryb~>;L&`&?R20eKiozC7$jeU-F+^N4>(!S-{N&&8Tm^Z{U2s z;3@q_{I3t%?OktofIP_)2LMXmQ=V|HZ!@4f<@;E|+)&1GE%Las>$)GsgRWi5ngr-n z8pXI}*WN`v>z5}fzj-{DaoRdxd=2=F8`C)tL*la^c&onKK(|URoCw_Wf9suwY!|<# zTs`08EohhgYbf~jO_#XNl9#LX?NNpHW}ZDn`w;(~3qHg#^pm`AAfT)#Ko=ek=)?62KlR&hy~Pd)gWDunmY^q#a|`^I$>w2*St7>r9S<@PFkVtaqzVW@VSl3uZJAt z;x+oc`1fw$k|)hayBV4o4csmJkbZ5puEe-&4pYCIEcq4Z?=HU(1b#g}l;iU9LhDxU zHuN`QZ)5_RoomJc+SgN30rl)B>wLgV{Kx&@Fl$a@dwRoowig&pdoVw`Pk%Ds@5uGG ztHi7EcT&GIE9=bp>4laqhCJCfXH(9;d}>|3n6#aAXB_QV;wklGp6<-=8#5k9f!`|h zHTjL;)?5eKFGJa{P$TYV`s^{}GrRx5cYA@n=fB1DN{kC@ z%>MPrG#~g^e!mdVj9nKA=+rN+^qtgiJ#a6-mb{Je-5ZzWM@sL94ypXY>(}+W6u?J)b3gYb_oWY)qraSUCV(#IoH*df;{lzTl{*3&zhB_|j&KEUn2%k?27Zy2Q1<`<<&DH-syqMM*7R>i(c@g2L`d9^QHEJ*#?$4k)PWS>|2)8QRzzD+jK9;}oiTpy{6sQz6_41pZ6 zL+aK1YBJ?ndv?yn_hi1S0TD;|y+A!g;v@abE!2qPcADJbc=ZyWsrd5JG}?{UrZ91% z*JL%X!EbT>Eje#feqbJwFRTP^KfjwxdW+<-{N9}X^n1_VWIu^RyX;Sk2nVlGe)qC^ zUvC}n8bo^I5h>{JUOW;8sMq~h+4ab{bhJzU-3xT*tCYp$`?M+7T?^zPvfs4@pIx+C zDBA5dxyrsS*Hm^ivEF#lt#!vZKli(zI1VF_FKI>9yJyK;sYk7O`*Dyb`#9H0_8m2j zY3e>w;(a8)*K#1+t;c_6K)%$u<^bYchjyu#WdVBmkmN5u;7-@?!oer?C$6tEK64;& zoOjVK{>XJSSNzMks{b#7`jNWPAhf%Q$J4-Xn>`tiw6;|Tu;2O?jCXQAjzYW4D;3bo z6QsVu^*6Tnrr%ob$w`!Rc2+td&O3heYqXc+vbN0TIK|FBM7zZ02=WiS$aT^#n!(^l zodVDpF_Zg6Ufd4UExmf3`}7OyOX|doW7_{drT@D{)q8WP4<$p6=#%ScOx;L5XdNQC zFNoc9ep1h+J(>waLcs3^O{AWj0>#3CJ9TD}Py0Gz74bk^_2%cArLy^*rt0?^jpJuW zP|m>KjEnB|R~Pz3j@MuECMBoPBJLNW55@(jN0sH^a{}iVvxJocIa*pbu8ZVVlPRbB zFck*_^=3IIFCbsYZQ8TG%%Q$f_o2MNIn!;IO8poEy6`*5$Iy;*Dxe;+f%YYK&Gj(! z3e!P1hn|Qh-=g`_V7%HrLO6P5pmzC;h<&(9N)A)F0|t!1dyL7(bmxgBUj? zPN{i3m`;9c#?Va2H@kGD|Kr?)evaOf>n3%VS->UVSr0y`7pw|JNb1aeia^J4S?>ps2@_WWF{o~M2AAF7T zHBbJq0=ReH_w3g@$H;vO?baDEg???mvSm2rOMQX3)cLsHdTeEr^nPt=H{N;IIX@+a z^jkfsH@DtrYw3+LoEt(3^A}M5wD`0|IRh_pT(CE^+wbq>db&?mrV#(op8`HPf6WIjc@p(! zzw=-W=+=U#YCU9MM!U7>ebxT!5!$_Wvtlgh*q;DJ4_t5kqx$5RJYxyyazB#b1AIAw z`fz%GN`Di7$pzgzFG+s29=M$|lJ+R~J{J0$=ey8fr2dzMc8R0$fKt~8K|9U|q(7@R z1vu)EfRZmV9!Py|E^zJLFxt1&Pt<(J4V($Ob#V~a%lK+L{X^=H(@8J2BE%={&h{m% z0L7oC03tr1UB7v?HE_8nQtMr_@(j==Z{<43KF;}>D=V3jFh2cPrMSOjR_udDpA%VOG>9mvO=TP0_+ zJ-s3IBKJtIqrX!xKjV};{XiJnt*<`dex|3rOuImQ0H6EE_sWjGj+jBd|GtW2|4O4) z02e#nNIdI2p^-5@j(jhCOek@Kd5vvdF~KMEYJ+y~p2BT2j`73_twXz&b44+<8xikt zzGh~}t>~v|Wk#^SeSq`z?j2?P9FN?)(jJTr?P(_xrQBZ^ zyYlV@<@`b%_g3Wlrbb;rWBr@`0p0!cIBwi`_ym{p_DIm>{H^Ri_wPQSi`;R9wbgqW zvEM}S<*h@z0elOle~2zVdl+a1|zu@ln?({?P zlUTH4-k?i<&wX2qo1^TeRbS4-i=*b4Z<8snR&pr#?Z7$Rsl0@KEBU#y)6~|~lX3VS z{ZRZ~=_ycWk$XD&q2#T~-%jeZ6LVJ<<)W?+`QAB0^u7SN*(D>NL?)sd{XCK2R^BLtOwLuMvMgAteMSr z#4pgDBTcAh+?N8E`iz=yd>!`F8+2fN*555}qumZG#qr5`cPel6(+;5=Wo&SLACv`>YKQA8+F39=W z>s#alpWJ^eX8&KFDgLwtNx-#M%ejtbt!h!=llm{$SMCLa(JuKc*Teav0{c6q`cdyv z_il-HsVj1w8p0 zX63~C09U`G>|uHt+O6CxQZLrTDRa4EkV7uME zNiy2qF|RWI$+>Ph`f0=OM}zL%xvToGQSSz29xCqK+ej$!iv5j~`v2QMx2&eqg*J)SS=YdPSnaB2(fp>c=mht;;vnP~m=0BVQKCiAP=eB|DC-Dss z_xONL?k?)rSn*Le;NCsEp*uR zC#d)-^?u^}PqqLw@)uY_{QMO9uhe~lfy?<;^$+ONTR*9{l3(6OQE!reyy1tOKL;o~ z)GOoywBs?+(|+t8w1@btCviPi&Wa!kPTO)YAc_zSDv7`n9Fs zX(^RcL3dt0J{t7A`lFop$rq?AYR7(}-RGTiR(GI$^Pe6O=#RJ$e%X)Jejx9VK-a=o zQNHbWHvyM-bn%4VyOII*=r8Us&y=5p`zTl9WEaSjxWI9X-;qxn@!wMRk15M_vknK- z&ZQ0>1G>~rxG%^bBB}ZAuR?w~zph8SoI|^tLw>mT=_?-PiUXk=UO7<;2w?r*XN^ryo&gyFJfi*Lz6!YEAI^Qmt4~Y3%oC}OQ`kFu3F7cm! zC3QlzF5ADMKgm3}Pdl-14TT)ZpBQhQjmcsBULemC|E8U2J#W$ey}V0*;o?GmU-A<0 zi@uK@5-9husgx(@4${l~837#kQo!ATy*B~J`I@+#>xhSy3IZ;CjPve~naXZ|o|4A) zz&)JQ?dad`q-R`j?_SF|_$t3=zHucU{AR$9wf4PfuksFJHRMY@pY~+;Ys>YOyy7^< zE%`rj$rCfdC-s1)kb`$IfLh|H*?``=R=KC59`Qbf^nzQtUQ*}j<^%um``izV2aVYd zy@F5bveYN;Tfisp$rzX2;Svh{GXL0<9muMGzPbS}( zZ>bMCe@_E0_n3+=@J>hWrK3PM#x`!?6R5p(f%Yut(8ZwR+zz__NjuKhdv9yL-GTOm zcOc;N@;~kT*Uc&Cg|ZwU@=M@yzsGoBep7>SPrJNr3Hr%Bms+n9J{3>Lt)^YdeysdS z>U`+$ozL{Y%h0Y+FF}8)M{^w|&)|1Fzp=+1=J>t)9f`O6o|oU+(O++dTzSuw04Vpf zgpyCuPPJPT>qEZWlheQ4swHSg-n%<_*Lmk-d|%GD=&ducO*_rZWoxA(-ox8(^fNqXH$$81W68+n&lX!Ii+$(_JI@6f_ z<=l`CTwByC8~vqj%lIVkHR#7;SJaz!=o0-?-t%z(lY1D>SKpMN{LB5A@z0(*#D+Y( z=IM?6&cfvu40Wr+c|*Nvi7R~#tAv(o7R)-Y`jr}`?9rTKj&{PT(10i;$Lmq z|M>yx-5h$4`m%eh;`fY>Ew-TD7<`NJjDPFXUaX*>C{Hh=$DrMA_*NwOMx@bS^%7sv zPV`m((a+3JgO;)Vz0$M`C#)XV-EOsjalt)PkMnfCQ~x)^m^^Pd_|49L@O#>-i7WlU z7rw9o(D+jQ-(tJqxHZ7_{qweiU%%igJqK{7+W%-TX2REu2X^y2>EN?(4kPYvt3-d% zr*>pNbJ<>w-|Rj+g7W6C6`XG-`1H_~v@7}hw)McRchxb=;5{nJY* zeoxO=vO++&V_uJj;-EbSt~|S|3>}^9H;q_k9yU@t(|Wx){m~p8NxfSC9h(9Q2E!Y{G5-y^b^{vGqr0w$T0@AR(aY-!>C8Q^A9RsHEp`pFYWH$ zFl9f3dq;!c8gzs9shzI8jP1W|qu;neW8%^7I6ltbj8T7AZZ9a11G-lBHO3|L^GnpP zJ@GH<->7qaA>=q$)qRNl^CQLy_r0=ey(iC8>$81NDERF5?K1)Ob=$%qSL|*gaO3a6 zjQ@7OPFxRXL~b4OFa4wu_}m&_wgax08kq>(d3JayaEVJz0A1gG+K-v>9^6M23zwPPgs-SkY= z@0F7a!3TMuJ0XF;+YcJS^)jpK^T@w3nEtO-8bdoX3f!YyXV@azwO#SV49L-H)ZYeZ z7u!UCcf)<29rp#@T{Da8Dsh4RoR-ToKo`FaVZVr$DS&3PQ89kdo2lQ|v}*k_1$3=d zxeNJn=*Fxsm%hFJo*^^66DJE@uC(KdbrdJWRXS%GJ&W-D=y+ z0(2`5%mOq^n$)keU;TZcy{O_&(CuHBr}+iS_(ucRqZTN;?eQ=5j`#&S;wPZ{+cu8R z>fbyU{j9aGt95*35aqaq3y-6mHR|u-t)7c%ALcEK^VdGTok=+}?$X|MiTjWv`v&da z$~wpS8MW`w|IF9lWZW@6z07^b>SM3rcYjIZIv8!d_pPNxKA&cH1l(4}M+#vK%<}JK);%(exkL|HqIocnS6E z)`_>#Ztpr4K{)I`W%tjv@!aCL-8nxk>S-F<#V=;De^|y;Kyztj#sismIB?iE>DNAC z+;+=%q#mpvn)GGAX+Kh*dgU3zqepR6PEEMv#})RX&uRmM^M_+zf4Q+IkIRZ;(v8kav%Mt>?9D+^dc41JT5<_e@T3c^h18n zN;?7Vdn0K#W}VOk;CjpW6@bRLOUXWg?)8gYC&_1405{ry5esOR+ev@4_IyjdxoM}k zP9lf$;pgQ0y3GziFMn|=TnGj3*7=F!wjYd|OuVh1_T%}l#J^n74XwM<|FV-Iz_s9o zJ^g?W6KVs>?+{T>&O7Qp(y05wI?yG)F&vnM-y7`d)qyM&v)~vSrX2ep^?!@3sF&-Yzw@{-?Mf?_vm5-{#ea8#t~pJ)Zr1VXy+L=zU+28V{z8C@ zpDDlob$KNCCH~WY#oq}fzZnfayH6dix9sndv3*2~rH|;>_0Nw4oVH38n4U7NsfR5+YSSUA7> ze(&Wofam4gKmN>h)NcK!y;2CH z7Fghy_@eTzf)7WMKQ^23!TI!e%9FTA`-a_-zvb(U+j{T!sc-Fiixr^DIV%*|+$g^6+OhtcZVl4e!?{x7!ekZLz<(PjoBb0gp?bg1ti}A+vr)>kD*bU`d zk6-IWJdocxBWrWsa-J9qy7uGEcpv!nZ_~-Q=;i5v_U1)OUzyb=p#6rhQdd}oe&QGO6LVfjC~$XH&?4}e6E*71>C}Po%nkU7_Bj70wA9aF7*T8cHq1t=c&!08!4TK6Yd^LeQMj)|GO~Gccee)5ALb>Fm7Nh_?+Jx zFM}LwqB)uUq|O7}8@Kt)7y-IH{2l6FAF1B=Si2ffo}7DCe31N_{YwWkzFF6MtGG7g zSK6gMYA5|tfBzlUBj6w4cTX*ukMBvoqxQ)Ws~FF*-+(SZ_dN!DTIUHia4(J_E`aWw zt`ZNresV=g;O@X{*}%0C>lXu;b2#nK&A!|Nbf;3#TtLY;=Ad2T@-X1o?|?h~nkl>P za8kve%CXd^`|pSAz-Pvmjsl;oPY|GP6;b0Kk;Zw-{=Ei#dHLXX>hEs7aY!A>M7w>k zEbY*^`2(T(Pcg69;?1MVEXz;T;JN(=;!ychkf1))*E?Y19q zJ&cIYlzn~?F`Mlh#;#|3*C*7k)R$c<>Lh-_tu9lPJe%B)K!5?y@zp7@-7v3uCAMa zcBxM>PFTYOzw39cZZ`PEZh8aC`85@MPT(A2ln$N%x}2kwKR+y*jCQxy_;5fkFEaPt z8Uj8ues?bUA3V%KyR);-U_j%=ii-g4H@h-E=uM9^zGwme6uY6`Q8x#lcWy8Td>aN_ z=1030f1usl-+VWU^hb*_0FBRop+7sf^2hoFmwI}4KzIF_fq-((C7-_IL)w$9-#oTE zwa5F>{;0UpYu&^c;MTbwS%CWblPkez*yYGCIQgvxE3(lp=Rn$<*0TcpNj}7R>t{O* zM?Wi&$4Y%T7`XfKM1J3^TWeo!3KZw~o%B*0(4Ln!2kt+N z{_6ivY1@((fzNEUntpBlR&yP2?a%Fu6MEzxj>{?hS`6rtht~zP$6jE3*1Oyz-Of5f z`_y`?_hir)_?!=`&+~&naQ+rQnF-u!Rgv-7OzTfO6}{3wFdI|OFmN-|Cc%Y7rbEyyC z4NXrV{b1QCfRg7>UtWCB^7Y;TK5d#yzp{UtNhtYS6zGV<=;wa$V;pd+>W)}Ig2_4n@MyzyBxCUHJ; z-s60XvrTisFZGOA$k+dD9swx#eLA4n)ha;u_*3fLXi|^%DtRL3k2)y%=Jrwe-Z171 z)+Y7$2jXWOr{Qm8f=|v5v|p!5o8CTr=jr|!_Lq7!aLGTG0r&3rB!A@kSl<<(za#FV z-L0hl@0{JuqJLN)HsScScZzV|)Ae(+z=!)E$kpGvO1Y-bodLR5@z@Ex>oES5c z2loSA?opU8YxlZO2QK-(g?8=1ur7es*;D+E(<_Jer`5VZd3t!$UEsIc9id-&=YA)l z$9nX$pMI2qcAR_3cOr#$;FNuX-;;AH_bVs!1Nx&E|D|5M4*lgmrXQd_xc6lAH$zgx z0iB2HowOUMf695EcIcg(_0~4mTkLl!`+ek7^6z9(-#FJpuH<=K7q@u{j!SE){%@fD zLNV$=&KDd%>O0_5L(v?1y}rxsR=dUN}>v(YYg#`q(3&?xkib2`T-@rVBD z)x*5FVzy3R4L&3Dz-U4voc89egSlxc^;ueTXbx<8Hc^6pWs zpMGPUKwZ`+d{W<}9J9+!%F&M9;d;pZ$6&Nee9HxNqmq*$Pu6`7aQk+t2tdSPKx@(* zw&UI#xYK-Aq+g(S&t%T+6A8N8p!^)t3yhioX!YKd1t{k#`WNamr1!Ba02=#e%mu`K zB?63@;8@#+k?#rlWsmrN2{NNtrs(W-a*TeejTCz{%xbeq#0a_PPqO!;S=jcbc&%t*j-g2Llb3EI{u1Aqx?p@lc{h*KrT$lGBkfX;RWq;>#;CFzo zq%=mm+;1_jG^VWI2;9#3hVjqp_UC5cs4KGnq=F%U?xL5OPvHI&?WjM4F8u}p8ZWh4 z2k7i8!topLmF^2Z`-FP0>yB784!Ep8_3qWR=Q(O=F<(V$CxWd`xnsht3&{z!Yr zK8kj?WEk}$`84fPYg;V=bo1LsveQcs~Ac_+aBTD5&@-@Ejf`G!|Fw%(pR4gK6@Cpiwuzp0PBcL8=e zrAMjH`yszm8_IJ>Z<>XEQU^)_UGAMZPwl-p>esnlK-pu>)Bj+9wVrNLtqkUft%1u@LQYE)FAKAg);l6Bu{p{4fUc^uW1T z>(_V#aN~yhdtqk-GIug9QW?yoWd^UgKLA5TGh zUR;%TacFm9)};{2{)cw>BcPtujs7O}1nSc}FL?J#z`^I8`{bQb8gQf3gJFPj9~t69 zdyx|JNe?NsfOtLi|9`a#XO%t4y%pMJ|DpaR&M+?7pN|g#UGzT_{p5WGzlVGfxZSjA zI@;wvh4I5WS)TKedNA$QSry{>wTho5x^W$lzoWm?^i(Qg<_Bv5SeQu=f>>-zubdz-0~iyI&gWfLb~MlU4eV=Bivs~#G{|~@{tLE zQm3L{xc6>lg3ms*bO`8T-`#;roTS~zIfVAE%e@Kca(}xB(7Ifa>uJ6GZ8-a_oH-nH zBl}zS7klRV7$ed+Kkwa`^LlzW@HtmfIBvW09NLZ4A?Sbd?rjR>Nj{+bGB-}iE2Vxv zO7t1Z_6mpF13Jxqrk!Gc0&ac3VmzQ-<2#PenEQE@A9&zCLGp@7w7V@688=YJK)ci< zxi4A8%8}n#w3>e4J}E`}a$h{G?Du+$ag;Cb)Y$KiJ&iDsC&)dzns?xSz^*-se(t>| z$*XS^R=>L@b;}gU^X{3X4m%F=f*>N0GX_fEhOhX7^2n+v+LRhzr-3D;Iz_1y><$M(lDEIiZLwof86yl3kb3Nq!j?!btZ@3=f zPaLnrSNgFv!QD$TbQR9CC?~73ReH$DDPd$lzl1=$~`*xQI{pG za6#=Gga5H9H>ES@m3MBFI1RcMT68P;y*i!jb7AaXYU}{C%R7VhfO79m`SNa;^77sb zMtr9HXwZ%I=qK+pO0&Pb^CP_1JBaif>UR$0d`o|k`;nU-Vb|8LEedN7c zlX?pH;7;N1%GaywfCN*s*$36yg)?MdDZjRaltZ8d+Z$UwFi4xwGidjslSZ?vQ< z`}?ahp2$6OEcoP}k@BVf#r3nluf{kn^+eje)DKpIPwu@K554^x`xEH;e_zp#&G&2d zBi^Q^veUFpnZUL7U+)C8ez}n02mig!^i%hk`W*_l^F(DQZ98&YM!t%i_pSUk_;y+^ROoBt5cNf8s}8rG437m5K66yOUal_G&!Zyau>_`$xuAyS&MDcarvG zvtQv)xK8%!Q**&*Pb;?w(0KQ|R6sK%a|fVRszDz>?Z@~{egSq+BIAO7q#W(eI{YH_ z>qe{pH)ucW!0~How`0Mt_3lnP(|euY0y*ya-PEUjPu0P-FY9w(*RQ#=(QZu%)EU;Q z--WfCcFEy)n+@T7w2F0U|7Ml9dVntTo6LSE9NMRSbx<7n|LZ~fv{xMsC;o2}uCxA) zde`LEduI;%IUOoaC9M7-_d}<+`hO#O&S!f-*Keu(M;p?b@zQSX=einh75bIyv|A7P z+U@>R0Nt&sUSbxWHHq~3V@=3$-w*sw?4%0mz^%LUIBtDkMXrZ-Bb<8Dn#@=0HgvYq z-`&D0&I~=P`aM5GJvm=>;kujM@~QTl`KD9uMT_~RR>atg@4Np*4gj=YPa@sE``K*L z$2HwS_)-rW&}yRouZ>mo)N1mJ9(_XBC%(3d?FXuGpLXKZ{;U^YyBh7(AKDXm`?Tai8$?Z`DerottA+eNNxIj(W6)d>KUk8N*frx=*5Mw|2XWlp}UM zA9VRH?NYm2xQkCvTYskX+jl?++GU^L321c8n1*)u(_S%vTF_VA|IG3JC1|(CHrW8W zjAJOE)$?=uhx4d5_aWU(qCINct5NUH;nTtBr%hV2g#Gr(OKw4(+7}W)cY3M!G|n4W zXeaJlpN61a-?E0^gFk^!U-==|(+vNR2%MX>r_z~7Bdxf9rLQ4GiLtgEi_l^Rd7@EvP>hjg^tYtGZ|wCeYmZ|SG!(|+`- zqm&qnlnE~9btNzYS(|V->x67`kox*-bDLx zv(^9qGE46_!EZJEGXw2z*LxhdS@I$MOYD|*WqkYwoD^F5qK9Ja#ww)!d8{1 zh3#UT&?f}`zNWg5^RVj;kB5AHWF^K;D>jb%ukpP2GRhm@VJo2VL310>&3B38HA1Iw zAJ#4>?m~Zw_x;c=cCW^{?i%@>Y2CBXZhu-K3DDg)lH)K7PNY8>74C4IE&UknL*ng7 z@ab(kwxhg+8(dGP&ei>tb4tDEbL*6*{>*yzZ1NqwItT6UmYbBPbx`;9vQIFtaDHC2 z9effelwBS=Fc-M>)*;%Xy`l3e;QHH%v=b}oZ`!SsaAPLu=0Eop|A8u8U$O65exYl# zXYW9}_D%`zA9@@0_ZNDB%qeI$v;P}}c6-t~`jK1U_IluYAZ}{0&r`uC_BMn3fpv9e z49f+dws`ScKTBlyfa^_0DeUcl#+ zyGc7nyk`G*z77Ml&A|VK&e*mPxcFO=U!d6g5W;Yu+82)3pgq~W`f)x^-JiCgUC-XZ z^)|NOA#|%9px%rszidXk^}<2UTYk5U@z3y8%JB(ZpxXEQ4X2$TPocd0t76bDaf9>K z6L0dn=7q+z2m8|{{El6;fQpMBEL7ubU66ik7H!_0ay~0Y|J8>rTMpcvY15yKbvbIi zr=`+Q>~Yh!qdiY@=znhcx7Sf_AYYLAaDLWBi|Zlz z2Ipg3>B)IY{LLo6-^lb~JX?QDAS^y$DWKlzEy{BShH;;A?$l@ny0;HX+_3z>hIE#-$9PP z@vMrst>>l_UmW<|nQou3zqvh<`j&jj#`la;VVsv0$Y<<5uhIV8gg2;fv%0SYy%dGi>^N%xa3>Q z0nJtUX$Q`giwf@^#raActc7-GKoITGYTv7uUvTSEA%0h%x^NzFeQP%D7y1Y8{`)iw z{bYZQ1~eY5P5|Bdu_)t{(Xb}_i$AM*k8Q&F*`E}motV+})&8@8!T|QGxQFAiKE6^P zIQC!2HUE5M0Xo0EGYn8$dx7?1CT4Tp-Ch3eY;RGQdXfB$_HE1^&2@K{u3YAaoVV&x zFLtFueaV09_awsF7wBKk-(}Z>Pn-QR$1ibjCh>!tLIIuVnra;PiUgyd{%3=3pzBfN z+0U^nPX}(d`jmQfs~=JEr9(x|%g|n@9l$@y7nI2T)On{@Ja9R$a3032-xmTma$iaD z2{f}Ft|0&3m0^I+7Z12^xuYY=r$w|~3%cy99JibJKJ_eq#QjK@ydLfPFW;|b|A$p4 z02=M)ah%ret6W$2nel6Tb+-~!QnrHr8>ea4to$Kp%dy?rBd9n_i z7veT>Z-3Ovs(0+7SH>x$#nxqL*Lt<@fpIu7%_!Fx^hnWnsNa(?u8!b*tmkLA-jdg< zeIk$-OMHn#e{FEHG|01>kL>}7b1dQQ9~Th@_Cq6Gy?aBxL?F zQ8m)gF7pZ}tQPoPr;l%N{jEu_&-O{XzT_g~gSWrC9S2j7_UV^ZoD0NhvCjqIHy6dk z0!kc72K4F(nsbtI-~DC_*VCBTiF(QNk7DPQod@Es{(6x<=x=N)OMOeePkzapsSnfL z$-GE+@^hYYexFDF7oIQ<>LJ&a{0nuL_%V)&E0`}x-b%lge04GCa^6vT_@F=t`?p`R z3sBDA5rl6ia$h!j76@khX7zvUtZan|K=uEE?cuue1HA?PSv$Cis&#C?^C|5^_TM<*l3#HB+=uG#DWtxTMgCdCIZk)) zp!&cizvDW&+y9*iT-()R8ll7)!m)c&0rl1GBK?5g`8IlQ5b;I+5I`>wY#5u!Es2vjO!+GF%fd?@iA(Ab-%TNn|GhnuH+m=Iaa$))Tgnm;%LZ| zIHdS{o}!=Y{wKkpo82O4xBAcLsV}i}uA}U)Djo;&1j(z^`0muBe@h)8gX73)O~0`h zwG4wi@u&5mJ993N1C%_G`my(}&>ei*?|*O|CC^ZH^@n=Tula_qN4uS|L9KJ3 zz9{dPA|Oxp!6-oE&IXR#-9KR^aI;#Yf#`>QgfJk_&3~Qyi}*F|T!LqB#JF!CPNlu*SHGkFBtCOq66e)Cj-)egn#J1B#&@;x#|8mf)gzYTyXG;Q>*3CC ztn8%y4~syz&)sCZb5;Ewye9TY{>Q)3UfitdGa$#@Hks?I)hfk#+QZ7O1fMlEfpYB< zHpl5q`ffJp+N=8#&`;Kn{bYY)T#)@O0`2x^3#S5_-!^AFG0y!;zjNZx(eB*l>i-WK zm5+0NQkO8mFL@%zC3z6-1oaYpN6sIm&~7#RCIq-0GK%XU>&E$LLpyVS(2JK=`_T9f zYQ08esrlrzW}MgVpWu8XFIDrKU1S90Ngb5-Df>tle8=gX#`QG&4xs(pPwLV?%=x?N zkCK;80iS*1Q8J)AYBJ-g?AJ?xn+NVH|6cc|3Eb%QBG*&=cbQLcr(KC2fMV~FgvmYo z1EP*ZxZ`iG8{`pR`a11c_V;u@`b8F_-p$4{EwoF1!ST6;{$ZZx)p49((*BRC?~c!+ zc>X`7h@c1}NKrUMst6)YA^IFesY($Dog;)6Y7$67NjONQg^+|2O1O|p?;wgk2ci^3 z5J8lB2>1ak6h#n3zVm+XbG&}PzveZwvva#UWoKtMPjb;NcoO=#A;A%VP6PFx$(Y+f zt(VkaLAR%$r~T=d_fRj!w}&}@XU(OTMi_{nB&!~5yU4J!;`;GqBAm(ARU(rrAy)E@@$2_m*+2GUl z;CEYY&~F`5*d`d0}k~a64p?ibF%*SNp||p45YJ>@@9F>R3vj zH3R?GRPs5<)!taZ^$_?TaKuwUu>h-i2qv0O%dG|)fhI*Wr9&|hf-}lam`b(E{ z&|ma49Z;JeLpzrHj5zSwf3LJie>;9HaBaZrDPTiO=ko%bEaS6YZHk$YS(5*n7$h#Mle2wu{>PkUqM|~6!{s?G4 zQ*8{Ocdn50Y75exq(y$AYk~Qg_a{yS-Mc4nv}MY#n-wvR+ChCdf4lozx#%b7Nv@au zVkYU<>q*Qf&F|||4-(%aAkPe(LyW3J)Ows~LOv@YV?5fux}lu&CIOdwvUcoO?vFWu zaxchnx)&NP^9zo;JKHx+SOe(Y&!N7IcDa}1c(t~_<)U5Av$PXA&#wn=2j=azpF%&D zJgpFPGxra!w-uQ@w%N^cZ_xqy=IQA{dIng8wxP3m9 zcA$;i$hhTxIw_WX=Db8esh3dyPNzzfNtgZ12RVWBsu}w#_Zg|jsrf8>f_5+KM7ozZ z7)?j7V*iCl)jW1|p**oa<)^iORQ{H+jD8Hi1HWe7NCT8}z7OA(ydfL7oHHVU%e~o? zfO=FMU+NBOM5`0oW zYDRciy?3xL8?+a%zK?hVez7a+*)Cm%>t;SE#yE!k68-JiU(|Yh){^!mbs8J}%#@Xp zfO?q))PtPIx&H1X_4_r>qlJ{G7wjgVOtz))GO`-K-VAr(1`thYRCDBeltKf zjrwaz?>J{Oa9NM{fa4w>Q10_7N8k56{ZM`{b~NaE&;7JBkxM%gy|P{I1E?pne}o!e z;NDd3#S$Q2Ke~Jdpn3PwEXt93HlUXuTBF<2-;6JMuwDFYGTP<+0_U&QD#`I^Uo24b z_~07tQtHB-j}xfFc=?RnYtX+1=XfQ4%)$31pHHLQ8ci)gi4V%Jq^?i;$3Id(PPJbd zSG{_(8@HL`mG==GpZ0dVibq>pQQyu-$=tW(ewTT&jB_F6N!_8pU!ZgPDE-DByD$rM z>|3DgAJpagxW#XgE_T6r$+`Ihwg>Jd?EiWWBL46z=2>z+$ptQPG}{L`@0{j%MgDBy z;)hXyMzxV);FI$@zh?y3noj;orIJ85>{T)3JGqhTfjSCs^Vio}qh0Q;xNZ{1=>Kvb zNqd)j<<;Qx&H-{iaqnHo3*-qnk1{?Q8#pd^S)7V12Z|IN{_7gZM?DBo%N$sd-zzbm z>n86ura`_lwO=&pR`Ym3spsSY%K3)#k~}CGxDh^<`;p8?>8bzU14y5!{@zdI6te%v zl{juM-;?(WT*t?L!^3)_S@?B9qn6(qS^1}BigN1LA|rbI|tAmdG7%^qNf$W?E>|?80M8E&f8tQ zm3e?(I$7x>kUzLBf*2R&9-nsR)tk(XBMT_^Xde}qzo^Rj*k3=QJgFm$!1v^yZU~^% zFJl0$?cdI4zred4JFUz6z`grktwt-gJ^?*Q9hKjex7SgKb_#hmEf0qQ|58nvM0u(AI?L7a=*a!mwVYv@S*+==p-Db9I3x1 z0Y_b!{1p#zJsU!i}?dzHc z`c%I_>(jamfy=#H6ma87_4|zSeu?9gb0OoB^KotFIZ_YjdP#j!ty`;7oTqo5c8RICA612DN`aTw`=yhpF1(=N;?V>sxJ)%+tr_%?6s0bJq<T=Yh z#9z)Abz;a7yNd;MN{nwqSnhw+kKXz)=c6sX)f;l{@6H%#H^%ph2QKF`wH{J;BRzWo z_2=D}nbTj&0iV=ExIV}W!6)n2AJ7eJw;k=qf$;O#H|1SKD(G@w%X~-n(-^etMTa^8 zN_~s==&US5xyE(%`=Hv0!0+V*`dgQtP;vQuDD72W*`4|p{U<}d?0c&KJ-?9mL0n(2 z9_`gr#6R=F=jGROzTtNzpRPmt|N5@;LEhha)EnNhfR6WJq-R#=_wE1nW!!mu9~4@X zbXgaRd_T7=KtJz2qp@Bmznnuyq5bi_gyfyzllMoA-;#fpMLY5-_TN5JjjxJMJCOUn zbhJA^9UzqRGvl<}-&4PGFPw*d-g`1F)tUl+>{p;mKiZk>pVYIQx2SikT})r_;XWLE zIJW|de~$p&Dfd4$ua_q9d&s*$mv>OgFJ{FTfnW9q(!F>p`4a6@&SkV$uP)$>_-!@% z>w)uxoY#gB59Ez9YFFw5T;8Qj z1~k4JO?}F{+qcl}-5S8&}>uLhr4Vlwl2Yr!+w zz~MKL)cy?x;E zedY6!&3%wl{MH&kqj4uCU*0*PpPai!1DY*99z?#^zTkIp?+IM?jXc6~e=vU7#p=?Y z-NU<;eLpD1eP8lf&PU&swHEw(NO|TjazDlRCG{b$k1P4SU)r_O-K!Hi>i2`?zF);H z=g9=n<(%CeawLzL0qCrmmqGr(y_(c{)H+K&6YcW8cRirQUFrw#hk$$M42g%#JG{Ke z`SjXC$dkN+>mhZaaNyqiC+E*{{GR0Rv7ozweH3*p;=$*i1oZ0b`og2pf&S%uLbtlT zLI08c+5p|F(@S2Z#=Ei;{a5OYTqkq4`o9$N4wC!1+zX6EzsK(>{#L*LD(6-Df!wc# z<2%m8t6`LXIW7mdRcnrl1KzveS&x!HmvhEs@X0$V+P&0Ax!%^m-T9y!KeZbQDCg@p z!Ec4UF%h^srDXwdN9)Xd*^Ta^{3-1m?a;1JVF23QN1s!_M!SPE(NAm9l=fq-`>{K4 zqw*f+cjk8|P4L_QE?*9)ZJST~F|Hp``{1|g?USH>8{tZCYoDUs7(@SIJh1zX z??SoH&*yxM!7r+HZ9Osza?Rm|j34^0)+_kE=UPXC-<>x`+0Cby$>$comj}8tPvbt| ze$brXv0f?8b#s4sn)YrqZaNBb+`+NrcZ;eq572w`r5@cTH@W`$A@zT5&8uBWmmlh$ z$nR&BpdV-@`;pJpcC5yC^?z;UFAvtH0Jp<-Qohl_R`Ypw%39Fny9t2iYK{T#RPdI##$omNZ5nZdD2zpvh$Lisz_EdsRsPi{s(Yt#_6ZohAuK>Ct) z$)w*pNP99r&)Ejtxs~jzI@_z%dpVgmd6BPW~|3hntZ$#)t3h+{}1q zHGhkC0{aA?C3Xd9HaitXzVV|s6ZZFUe9rx<)Tb8Kopx-^`gj2N?FMtGKkKbT$}{?2 zU5$QXFI<1C#;!%+)0b&m0IkE1767`thjHBqdvc9I)UE>DqeRJ+VwiSX8OR_d6o~*ZK2MuZl^(vC+^h_DsJ4k$oaUXjxoP? z^WRo>a$_w0MgM9E{afsScI(XlTiL@)!@2JIoOb-4o4#xczH5$HIiKIV)%RsU{r-09 z-}qJCgXn*U)84HNjpKJq{1JtI#>uvvm%Xb6?LgaaD0|si$zuEUBb^}6*|8%RxK(z7 z8t?aYEzr#-b7)6q*Y@-)v&zf)?DutR_IGAi=l)=o7)*Zc**K0@tFec6Eq0bhxliY$ zL!S5#eAoFS#w z6VF&Q2T*T)igsarxI78C)9)wxgYjlX74N=Wq5Sark$z}5>XlXFKE2oWp?|pgJt5sF z$GBi*w;Kk!7oW{1HZx9mc5VGtF&T37UusZ4`l@d^4zd49=x0XVn1pu2EVdH3wPgk4 zf%%(y2Pb;sysf8mwt~+}FU|Edu3pRsztds4vWwJxv>z>2<)u#h-AZmCzPaDm5Hl~EFq6#-nkcY6@z>GiYJycSmBI=R1QhNE47p=?(` z@#}ej#%gunXdk*jKa};{%=UBY|Db3iVw65!+)KS%7v?PYqu&dcHv>M7qY@`5Z}-FP zfbOYBBLTH7IbFc#e%dV$Q1S+T*KBf!uNrb)EbAL(k4JWKowYAIZ(+OmFXTwR#qVfK)$i~cU$-W1L{FU#KKI8v zv@_#!b}snshEW?q7dxdr8yy#~11|Ba7obtKi185mCx3%E%Ro14bX^DBy495Xqt<#X z?N0pDWc$#gxq#O4YK-GDPWqkJtixvXGm5F-L(nhwh$r8(Q#gNXOdEdB{Glx4tULLy zNbsAnFHrC1uunOEr%9lGd?$+S`akOTMP*$XUz}e*pN@WRL1WHS;xO&js=k+YZ_n;X zzc4@TH4NW(bAP6t85K_}yDc%;M1OtjxDdhy3+U&1kovn2i7$-9`tz@F-tLn*QII41 zHSIalCxI?;h2L=os^7mi zDjmxMUHmea?L99g1Il=!0j+mCQLkP;?JmsY{3U;0;z#?MnX3Vf&(-@kJ7KDtUm&lM zd|dfWa5C-Os&iKPb=USWkndKV(v$tKWbOcz^BK=~dP=Z@l3#$&+IP7(+C?7i$X>FM z_AmRc@}GwzX%|klEZV=l@*Mp}#>e&W>`m)+bS~sc{9OxqdcVjp;KpkMxG#wQ=ugPQ zL3g5N(7)~Sb=7=j{Gh{+2yZu1^Z)c3?HzO@GJhKvjS?ZE!*KCzDD5_?vDKC2e(*P1>%AAHDf$lqsPBB1Qo9Eb66Ed59u z6-qyn^AF>$5x$dt;+DM3?@Ih0hJMzer{e%+eHr((x~H;%OPopb3osXaru0=cHHl{H5w( zALc3Nc|hcafLf{d^3g8#L%VXmZlU&#qq*6j>vh%tGnMnpBJhiS%mCdz@iOhz`B>G< zJbRJzt{U%-&YZuVsQ&(5@(1EL*F%oA{#*9flg8`Z#drd`YLokpPDwpz~e3pC%W z!F4cOd_lcB#TwE+tam=Pd!LpX@f3$WjwTBc$(vp z^D^fx~A;FKCHWUSD>G)%Q(UzrKnHIyLv;uAIpCErtd&E(mP z2hOAnj?0T1`rVOH;Iq2lrk=F8D{9_Fb2&b1<0mSvNE`&8-tP8T^826c?uYzRCzZX4 zK0%jrAN@=Gpf7NH#s9dT+QG`}!0$AAD;jibpZdEZWA1a*qxA;QRb!q=n_hg)McHg7kjccbmpk2H57RPPXJ+AVp3h|+k?{?`F zO?f@frvN%W%K)_hvN&J+@3D!bf73ADhjxkQfYxyJyQFs8yBx3azh85~C;5I6+9iLY zo}_N5=AU{?@s(dfz1zQ3WjyrO!@b^=@y9%&{@&MqkUtu79?!RwQ9$`ME71Ps`^1HB z3i+&{HfXn#MsOdqhSg#GkvfU8{|Przz~|VD7*F+Q{#*!t&!1)A9!Y%WzS)2hr>I}6 zx5II|`a84_*=H2JRXFz(sW(pqzw^QcCGW3_Tu-f>$$i>7H6h0*?e2}Sv@>gTZ;nIq zi)o?eMIz@47t_^`6|9iof)`RcG7b2yHzSD0e5nv)w}}rkjHh2 zK;2wRe~$4`>{H22`a#8sre|sAUfs@(EJgb>H~c|6avqeMgzx-6b&M_ep47`}C)TFT z%s-?K+>PV;DexXGP)F2j_fh&>xQ6~M^{DCSFXv(Ur}3yS+a(WF-;ufj+C>kAfRZm* zgx{u2^a-v_TRIC+&P~+6cg}R$eL+3DjkAWKUGk@~=qLWpbO zbz-(l{IK} zpt14;>fNj3J8eTaKdJjs?@}LB`kGt15dE}UMi*5U2QW|U8i96M*C@2Rdp4($FHjG0fBJO{+lL-i>$v(i6YW~< zUumaO=VH9JjWV=jz12nbm-`|5lf+jQ?_PPD!P2e*;>dnP&envf^=N3>h(<*yflU+T7uH&TC7b{yi+ zFJ!+|dG^iYTrV@adk*-;-jgZk&l-uq<$RY8+{+)Vy?@Y-+(pwlZ~cE2xgVJwpGX3q zJ@a+0n~^(R=_6kKe;1keG{_TsvMKke3vYv8w}SXxqrrWykG;7({aWq`LcwR3xt9j$ zG`PdKByorKEpdMo=#n2%zsCD(8HeOt%XO8yI{V9g^=j}*9h2)J`vdJ>>Ry?kn>R-? zUTXWUaUJYBTj?+Id(H3prQNDoR_QZPr+QqUI?;6=+I2afLXLgGw19j2qLcbtSI}jD zQ~6JW1*3s$rzY9plY6a|>jrNTA_eU@*8)l&5s7x~$FK-Mv2Vsd#1pj3{W$e!{Jx3yY1qqp zfY18-3HJBmI`SCsOT6oacJF>l&RvWvVsF&DT|blGH|CY-3qE_)VT=8)1b+9m-R^|Hb1Ae)8VLY-fM$JIGL{Jm_*?O+S}<=rXk12jl7hO8uPcA@%TK;M1gz#`cC$*}%n)xGsv_*ewNju8Lz5qVC-=W?lucQ4){belp^mAotm)6?o1maeZvY&T5 z4M9J-hf5~i9l&)JzokEW_f2x{Eke6jKh_ovRCX%&oS<9l#&N%K-YiGGO5HOFbSL+NgSnXMmzF6U!qCxP>x?(I2G#P5+epzIgPL{hx8j%U9*TVlnzjoXiE3^C9if zYa)cDet^@(Y_j_Icu{0|S?PUS*%5HJKMmeYzL< z5@vAyoIUFI0VU3=eM8;@q1{~j4EH6u?~U~d?)>vA<(anzasQF{I1_X^Pbj-R@G|43 zybIxcB+icFckXW=0Y0fa<^c+w@zH+GnvQmUYD8sDwG7OWsX?kvh+K z_J6Y??bA3KHw*3Z-bVS`t`;1p#3^OpCo6Nktw6m+yZi5Q@XI?4_Lp}uGl5GTE(mfZ z|D`l9-4^>9!M7Qo<=n&X$^WBV zhJMDeNs|DzS)XxUhSqHf`pG$veu4TW`RW%B0bSOc{xA1OTsL{wl*s;Hbmn~QoE-~* z%e_`%fS>x2a|hQ?^g#OK_fS=*tOmcls|*LfTdBoF;GSJeeihF4Jr`*AQtzX^N?o@A z{9Zn6Eqq}i`0&0Dble93>fe0D`FQUb^Z`Rs!Ds)oI}z=Y_YVW^nEz2Pu6csvk@t05 z(C$9@4E;gg^JTDK;2bOWRBmz4hz1?|H|Tf| z1c*8f`2u;RoV%02XQ%X3c0BdQ(w^kLf%~TR)*RXg@=fqd{GuMc_hhoq5w|jj66zHyQx8&4SN19G z=%+titiId)NMC$M;&dLM({bTgK#4bu7he4E-c87R6y=BYGmF6IK6QF6`47CzeZovv zf3GNY6WW>8qEVs`a*H+02A|gB_u;_hJl!8q54p)!I!BqinUwM^! z@bYf!Y|&)&M_vsmb@VCVlY3E)+gY{B23_{C@qkv3tBV2ct)rA4!IFs^Tvp8R=zcZgj{sKDQ`w&)nnd>TbajvVEPvP9g@2tPa zeZ)Gwhx(R!!BWcg;%DHUsP=bBj>nGpE*1UU?~bYOuRKS)m3Ks(m(-`Z&ay8?L5}l; zq2_U->vZ6fkM%=;?|kaL$I)6vk>8jwWES|m`oB3c;}QOzR?ev$ue>YbI(v0?V`A?F z$dfuC*H_*j(oZEnm;$={NxxbA-lE`bfLhn>9JjoiUPD~o2LZ}E-bH|q>wJ^`<9f*W zsZagLo-Dt#d-W-!{1Wa1df5xKFFofI#vidy+LK+o$71k%_rDUaqJew&WY*2&lkh#S zPAcy~X>XEeGX8jZ74Ff==iOs{^HnnO5s@mM$-7hF$R7Zu9x@Y9>bxWTzytT(QrDq9 z*uIM77duNL-;h!R0p(mA3MlunMS#Zr8nh!PrCyF-a5-;rTxQ^%mE_Z$r^Gw%3-X>$ z9Y{IzXP6+x4bZe7}bNb-JNH3I!v@0z_z3a5EUC2kfJ+IPw^1Xe9`j_@`KF|-|;kpSQ=kLC${_m8T zHIDI5d$^SI(?^$4ezGqk3;oP{*ST(5WOX&JR;dM`>+Mcv1G*PaaGkZ*4VRL?*JQhqbhfc>q^aJBwHO|kTFm5&FHXWqqc`$|Fvztfq zd-~CoXtX;o`nwYr&ttp!e91z{xBvOyLO^{(#t5`)Pb8`Jem;`((d(Av_sxbk`5n7v z9PLBvpx$ZQJ5KXE#^E%^Q8O%_er5a|F^lr*49bIi_j<~5;O3CP-!C29Px;#V>zu#d zqdxuE$`4)*e*K*KzmHmlw)9tb!%^C+@pTyWVFg950-vl;1M)ZQ`2?U{V$)PW=iBSb z|F_*4?gRau9FD^*4C1=F-TT|%(<)BOC4ZYi)VGxtME^AOlAMR$u;&)E+l?aU16rLA z(2vZV4ugGyJ6UDclJ0a(2Xupm)4$B@l+D1Mi5->z+A%fR-#M>-Z{6A!%<<@Z#%(~m zQM~0OA7Jy7jE6>>n;gGeIx81+tCc^Ia*Cg%-FoZfG#j-R?e@;MRlF%G#c^2cgW1pN z71I;_v|oeiU*<7Q`OR-TIe(*sdIw-vh#Ln!nb$@@{rQ%CAlDduI-dB=h&Rt54c^Vlp%8&GxOTn+r{5=#<{FQOf3LV7tG^&(TdVA#@v3mvPP{{m)vN zfOh@$`Jh|do6H8(&WEV={a_8ptEa2q<1h!M(ypz6@h#C$;uF^waRa!UewyFcZpAKz z95X+K?e^Rt#%n#{Xa@Mq%Xiee1lGZZd;(yeSk+??L#lU#RIeqmh%F`~zCZV6XGfdgr z&QisFf?LDX@9kT^?&tSpeDgs!(zBxg^_&>mh4||@^tT7Z(BF(1@!W6CJ!NPwR_0{d ziJ8=sayF_e3+E8~apNecbQtXIqe-E4L^1<)DPkl(e>UQY%t zc96yPqjjqIf!DrCdvO#gE zy3ejx_E7$CF8bNeo=XGNe@x>#xmI=M|9gXJ@813>{+f^P8Yd!@|2$QN{f)oX-%IHw z+S1SA37}tzH zd$mJ9<3Oy^;}iV{SI*Z%vF@O!>`P^1D`1m;qeAOMh{C z_vCksPKUct{@H4UfD#XBm-?;(%F)K$WPi7vdiSMY4yNBo|6P83e@~-{=;yRsyamwR zxJLO~^SoH#W@xJN-}|+OgWtWjv4H%qkD}e!H%c%sG4HD1De$>>V`l@m zw|1o+8kHMTpL*w$Gth2d-XDv0Cup$^DE6=X{>MgKS9esSNJ`NN6FxmKgeSo zGTyF4yK)2Tv;&D_v|pq1Jsa|k*rU{w>?`xZ z=UgnY8Fa1eH0npe4`%-|qb5O~*emC2 z?X43H+!%O;`jLEy{wi^R<280JXS{Jg+1~+tR^2@6%ldbXBCmdDdo!@f^`fGP1=qK)0^*-O8Q8ShO2Hng8w12xD4?eT?Vd@Qe z59r3(u1TO9!?tt%ktc%gG)zqZUG&IxLqForY+46s{@f-5d=d}2Z#sR4(|(1Xi*|R9 zs@ph$_i0*}W}JsxZzAPuL+Y#X9993P#?Vx~$=Ezut>47clORXmF^=;VyP)6dnenSY zm$=BdCwT|`PHW$680e4l>7#e10GIrg{$#c&mhKnaS*20m)~b+1v|~Rb-`#TL)5?qr z1>fU+Fu6hwaM=&JPiWy+RGbRr{SpT_AH72P<&^hC@5$h|vx6DmwV;yp12;$g?xnY% z*tPu}k3D!U`OJEolzj#EZ|m*_`n?m-y=(IOa!yh9cjY#}FZt?Ren0Ls zI{nt|){yfJ55K8^Acf;e7h zetYu6f4~R*0$TGr(B6zW>hF5BoHZ*zccLpPJHEM*`V>1M-M(~P*<)DEF_3SK%I0_E z954g@%(xh?pS654*V8EZ>wNG@p0}Pbd5g0DRa!D|ecl>=NAiv>z_p*%?@Mb*+qr(8 zp6tqpsSkMwp6mzT?ckMwV%I$Y-S{S3(chGOh4kNg@%#3HYFt09n){Y2W~HK9}lPxuf7@3ipmZle5C#^NaAQ5aAWEo`nlLC^`svPnG3po^MbOAVD+w7 zJD0*Z=8mq!amab85PWXp722mc;B<~paPh-wfKF!n2teuM-dZFDqS*-w2@+Iy!&c37b&@Ssqey2K~1r^tC2 z-4&mE1hhk9 z@<2yDhwXFAs5o-91=q6J{vn^) z;mT^XTQ|$?ggkBkH`IsJ)wo|dwNvTGQYYek^`Mi3z%T2O0O*|E9fN-22TK5*ZFllP z*Tz;~NcxO;?jx`-;IeRtL|0w4wYu1pV&FSBj@?Ge#i;QPwGkHM9r^(yE5&-)!V8#)w>ecL-Ld+Xcv7=1=O;R zD*IcNk>?jw^u3wwVKtd|p)Lzt{CXVeQnw}y)a~H^z_kP|gY?bJ>UU5iZ&PvX*Zs6Z zsgKewt@w;Lz^6YP83JgPa7RO)oWlnL8WpQ>T)5vryRj{W`Y;D>UkqHY*f|e;k_T`- zK`fHe{5r`y@IFR5##pr7n>X@GKXLwQESn$+*(dxfmiVQ80g zCjHuc_7nPrQKluwWgj}a0qu6HRIa<_bY*|9ZsJ}Jq28q~F~TQ&-u@%&NxwGQ9#-~p zeK+SV^`j|}=LYwu-FbCb=jO&_^cT5YH*a4t!nbFEF84%)+NwKho(DE^ACfu}^{a2& zoenghk!S?ibapw5JGIJf^d5x843hx}eVmpqUAi`2UofX}TwiuP%L(I^M} zdd>2&fD)gn53OK7{nLsGyl=^@K)-bA%ySA@6~FsgunC-OERH zXQM@YP%8aI>Sz3(*u^IHm--Le&-bEzdHD_O!v}eif1(}hP8g_9c;{oepQAiE$5Mad zZ~UHKn4JZFS&xa3BlU8nuRz`-bqubD_%qBN*-GvJNUg8gU?>@=C-#zbr=G=*jpd)>)SJ;fj_?YYUGu`TF?R5N=w| z^_P8w_H8G3n*_R6BC>-YFjk`-81>cPUzmr7P_7=xPms@$e~O=WB6i5{i(e=`)+|rl z3fu?kbB`+jZ5-}C@o>L1fP&+(s0wB)KfRgXf-;LD;tNoyVwwzGw zR+Dkvtnq+$slD(L`cNqM)rGA@{XQl~w1u?+R154o2CdEWU=?kl-(XmwjsKT;o@&hOn0=DJIL zJQ28@1GygFekFOnh3~s{MsYo*9`FYE#Lq^8Zuc3)I3wqnRltSLaZ28pOujLxoTqmV zaH@X5_+j?mPJ5BOg!1KFI2!%k-PdWS=E96w=r8*-<)W@a`Op5!`FrmZ7hsV(lM34NQA?HT$Tff!H0F?U<8~jq& z9ZNj0U+R&+liwcJlkrjNxYUE(k8>XKK7oFu$DK|>KN-(*Kyz>KVnDZJ!)3(Rr!cO` zxP5-K-&OxNTk?3?t>iOYAN$YSy}<9?^BLd9QoqI^zw)o3leBNy2WEiJj<6;|p5FRF zUqHLwamvx;zJ+omuL0fM7&H*jySK)@72D61B(CCj&UyvT;juA@EaozDEke>BdH_3$9{5O0B8>1!+9Hxn;E3v+Rb@t z+xJHSm%6Un_qN@k-&rL;p?%A}ViqWR;e79u{|UOxbxI5^2xbZ z#p8o_s86?W4davKbIZYp`X~GEz0(pa=70!td3C_4T_K zqQ8DDg!YK@3~+Pe8Woq~u1sZnQA}C%bLUq`2X0-zz6Q|!FSbAN0c%M2;+2sUPrtCQ zmY9ilEx7{s52^R3`vsN#l5gd)oom-ly`SU;IrzVqn_k@ly6jZr-M)Kk9(rsyBC*uKbHN2@|cf!@7wS$4Rkr5 zF>YzUr_rwMlCxD@yxT^_uXDj_{R8`z)VabbU-EcB`%F2G(=1++_9Fhz@yYu>Wha6B z(@5PC4}S5t5PVni`Uv7XPfenn3UMnzmpq$s*KUzRKQNvt&vDB6xB%^5y$|OQ;BL&# z`RFh839h>nUUMFBXO-3gQ0rTtaRKlB$af}!P|hRWebVfmALX6FV&YS_sP8XTe~;me z?ay_VcOdj5)HlH=?;>cQa-T}S)VtlJe)P5vX5%|%_bl2U>T=-M4{W5Jd-Vpbnfl!^ z_h`m)@QWRDp5lL;m%Lv{16}HFTu<3g)cl{CMmh3+N3DCH-lpx#p#R(6xDzXJzmvKl z=OyoV=3^XI;5;JhG@bGr=kx?!@UFm7hX*e2wrCGhhYSVouB*m%@#Gci49N zi_~q>L6>)Av}dWa5AdOXLYXC$vuyhW;BrsG_#}0*R-k+JS^ZvDMgQ!ZnV>t%D{#H# z{v`+fq@K$-Z`C;58@RQh$x`rn`;ojCSpi(`b2&e4=^bTPJ?@2rU*5I!0F?WYp@5Iy zfm}$-1uo~}seV8?w*r@QodsO)68O7=z`GsXQ=nbm8O{Wh{eU-+CcQz zTKcFj?;Zg6XXs~ITNV;Nx;_t3YcZU9^xgwXJ#sPnqy7LWc{bO@>OP8k@zzcJa4P!C zJI_2oX&(=07c^M{DCeE(fb#COv>$MLMj`PhdcOxK`UwVI z_$c`vA?ge4mwuY#^5!S?VzrM1-jSL|>!^L8@+jpWQddAf)cx=s{Y?&0;&0TOGq7h2+U33DD$wzc6}a~v z?{WNy9mjrhU&#Gj^428sZyZOzK)!)~IBx-JB|lJ5&Y6^#*n$4#)z!WFxp!Y8b&$c3 zXT5Vg641L(ko%%2_J3G{{wV%NT;E(U33Ovjs)}FoPM7_M#ZwRV^La`i@-7K<_smAd zYk6P5ad~xVFaAj#el+BX-;rP99p`5kmYGiaf3eh)_b%0tb13NYu9kY$1_YVFwPkA< zU$y({_sG3>15U=3L4IkrWE}vtFV*{R{g3|24k{d{KU?1eZ$YRGiQ3Kv6Ops_;5fY^wVVGr6w%HcZ^T}c^}Zq z8b-UfepmOvX1)JZ9?)n+INCM082!ySJ%H z8K?Bn2iwqYd~k3UQkScxESru*QaO) zdPF+)q5Dq)~E#djOX^plYjl>`NUHV+Jl+$V*zlx)5z^?f29(~WoDn} zIAp##K54gJ2<$_Lj&UD0+Fs%K?DBK_pr5(-BJIR_X(PvHto?)br+@xC`|CA>MuN|+ zlh+H-c+j47`$#s|*Q(t)A9Ve##w!4wHG4ObZ`wxgZ$?UG`iDENIKQJWOM4&fTJJg8 zJ^@BRUuFk$5pZ)x5baCragFO>)`_MZYmWN+8Y4p8b2#qiEtIpTfOhI!Q*~muc|FEu zd&VB_>)OC?av@hMaA}{Wvz_{ISFcxguz1r1$kA7I;ksH^{-ZtVN#9Zbvd+}MzEQo0 zF$SpLhj3nMr1V>Kg5!1il~C)_U!Ci;GEr0TUE@j|^(Vh$L3_5>rSQ9E^pQSj*RKuP zjqkf}sQQQAuQJy`uh=l0<65nLf5aWtiFPdG-b%WW%{c4sUKI^F=Fq2R0~&94qW+E1 zJE>1I>k{>8FKt1;GIxBJi2ho7O=a)xd>^5oe(@&biczZ_=c`Q{&;Hh&8q~9lhqzW$ zm-7%g`RJ#$>$wE-^iHkT16rZ2R{Pk;%N-5ke#&+viPktA63AxUZ!HazY?ewz5C0=u1GEWtb23=qMXcqa_PksluTWZ1_ zK&|T^jBCz2FLM3e)ZeKW<3!{~;5QdH=6CfWS{QJ>?AlGFKfOZfE3HF3W%=vHtDwofKEcR z$|s_9+L!ZYvkcJf|CQi68bdp9{q6tmrJ}#_P4Q$vtNhmyfLh4*BJk_6lhc6fzpPse zT-H(P^W|!jNw1#5?@0Wg3S8pFHu81r#{Eib@FTxxCiUR{?7sJYI@&ekJl7551nz_k zEkb{Na!EDcNcH>kPL-)#cj-^RuyXs&0>9OJ7uUx*vxDobuTt+9jl!u3l=IOW6A2%x z-NT;gw6K-rH}oWFQ;y-!emO5w|a_IZSDVkQE*&05n= zWq+g}7=72xWP47}T%WYtyOvTf=7Zvt=Y04I_2C?7LEOH-MCB*x-_lQHoeI#;eP_uO zKrN|@tJx)l207x+}xigHJE|AN@zKo}%obNmcf@maBK|`csRx zfnV~W>EO4cKcGEX(iUgW$a{)V94o&Dxwv}^O; zR&iJMPtYZAP~UmE8tKlWSt;ZT`AgZ+8;-KOX5Z5PjN%tbm-x>7%^DM%2Yy)}+Obxl z_EzBL6R#IQzCGo{B0#On6UvV+-dq9PxX@=7Vf3@{KC~}8mJVF@qhR3Xh<%JFl1C~0 z^Ve6BzjH5T7h$;r!Dl4q*?@Yjc%{c%)71AuTff2fKTl=?ntwk%%`ecYS$`Oywr+U= z=ytIBKe>9UwHdf`>(d;xOWu=6zAk%niO+rJ9kh%6@OxIqG_`;4-^Xzqd(`>P=pK{^ zKG_df09wU|5{iATV*lA+u4em0^-jtC%^=ytJ?zV!>D$G_8@$WYZ5m& zAIV!8SM>VplwY*Dr{dSHAM^b3UHjPclL3vto*c{X?Y>RFHt(gS1DA6L?LKy9jwXz@6zRd6|^b_pYkmsB{vK3JBE82nJTzBKEmy|vSs^2TnGK;v5`th+Gk1;Rs zdjWedu0ww}M*Y7$qvCIzk2ZYNF3=_4pq;u$&TjxN`vC1g{EGH!@2UR*9&k9su%amg&VMdgI3BZPJ)3+TKcIZ~&wa!te~Kqx zs=DWL8e6mn`|hO(@HE5+e-YzpUco+KXfb& zP|hvGKzDv@^B!UDPqRUneXs}c$96O@P^a$`N;@=vYP1FI#>a`YV<)pW^=&=>G2@{# zyrNpi(mRKP5B>zXa{lBxnM(%F050cqLg%l>)RW|ab3r$2gs63>xrhCn<5dzMM>{Zk z5#>Cr&bTW2Q1*SH679oXk&r{VO{y*clzl%G(0O((<=LNEYTtSN?JS?r%}4nv&nd2c z2g_Zh?v-U6%h7Hhh@w2>y?zCd{pC)dLZA> zmb{b+IkKPe`?CMe2A`Sg%moxZs`wK)hghFZp}jkz7xI1Eg>lMhkT?f&#IGU&^-(Lv zq22D_D!Y6#nQ>b7KNTn58p!YB91A|Fm&B3Z?4O1Ha$eA7y_JLc1NMCj+{B)q4*+eE1aNt%h;^w8`&to|4CM z{Uq)#Wc#y$_YskP+K*OU{au)>2ki{`9{8k=KwRGvPrZ0?NpDh>a>Z^ZfX}YmgX^jt z*`mgMdldaxyR?gZntaD6e3rRPtXp!xKQ2*Nti%m=K~ zXNLGOp5s-xKBn7_{^i+)bv7iJ{HF?OPg=Qf##u99CvrYi>;7K9DDYX~`ONQOPmt?Y z+e=*bxmVF{7k)y&aZCR_6zyiuc*Y5wZ_uutDK!dEzxw8Cv}?tl^8B6pu%^5~x^e46 z(zRh1ec%)Oq~A&0Q*rxPy4pu2UqiclbU4SMZB~D;YR>2Xg^_>5EAzqUq<_nKN?d0i;B0wg8rqG#lB>}!bwt{sb2LAk z^j}BBfUXBGjAi?!yUPi6^>>PT^@Ewf?b?UO`oY(!m4Y3gRqNWcW*q2JU&;kECk*Cz zj3@hZJofP3q}z-3QH~Q~I43 ztWUZw0WRk{`lr)lG40>37dH*F@fxO$> z$IWLS(hi-lW3+p>&Sm11AC+S?b-4`{NTT9+%rP z9{r4M>i>4?m8wh!pR@gPKhUL4F$=gp;XL)^Mm(BC{&%j^E}a+r+@~c@eF(bLZ`HaC z{-{6t$$5z1m%Mv2+I8)tR6wV7+EhTPyHS54w>bDEPg?@0#r?bu(1>_`4fw2!gJ@^A z(~N#6c|!r{$QRlEu*<{%Uycv_XG4@f|Jl1MaI@P{+J__OZ{ogNjGt0RqFl3T;cE0Z zJI?3)^$*qmkMZi}+L{+Op`YM|;IrP{&+kaxY6)jDBd-Bn>SSC8>Xk`4y-~Irmc!&U*F# z!L*vwGuU1*pL)_ix;YHE)Iak9^7ihdZK8Pq_aM&Lm$_d5+8eP0IwI)BpB5 zK&@;8#uxiwF8x*RaS}myOYclXKjY`pGXdTDeffPOzbW-1{u)mDh6O6_++Rz6w`}k# z^cQ;>3upxL1g+-}j59{`vy>zEFw}$dN~K1S1APIS=ILdstf0-eNtl;<(At*KlJtuiFeVUYYm4`4{|^fTtpTLj$tIyf2l}l%n!nM|yls{xw zUje%LeMuWo?t9vxpX3c(AE&*#r`AIL;yOvak9KUgxu@(lE@U0}7wh zNqKhUdfJt#FW~%~YELi@dU=$7sxEP@@%IVnk2)#(OFfhJCiOGMC+tUPM;t{v&dtE3 z9zuIIH@rf>k$A^A?(I`XU_aO7yukiH_F}tJqBX}Q_Y1UJIR~|)+I_*XAbC6 z@90gw(`RTW_L)2Jz$H#`-JMUqNd+$F)y07BsT1sv^Ro~5FMUt)0?SN658V;}Ul z$8VVfXcas=6VRyl?nKCu^^XITd*>8D>x-*XiSJ&;b=B*%uyj`$(VgdG$)Y zv3iFpb%m9nJM(_Y1C;zP5>WC7>Qy_ge(yo*6q$aZ%RR?Bw#&K$cY4N80513O)SuMF z`wMU4Df4uK7pu zw@TkBxw&uD*hIeId@!Am^+!Vg%UtOZ`?u!H`h6VeR^`E&Y`5nQpFkLvZPiz>>weh{ z>Ll`0Z_3tm^1F#$>j=KmWFh%*J~8n=vxe*|jDKY&+wJH+Hu=F$N`f6{S& zF!TOtxZ<+YqJ!)^c>7K1!5z9co_wfR%wj*>r^ybH|F0(<`-J$BHyL{#_K@~D)VtQO z9r>u*-OpFaKK(7#G#~7*>)7tpephl0n*FVKio8Vg5C8fhmEVirPlRnd$&MLMNM}4^ zf9rgyL4@9K9hVZK&M|`R{)e+OhzHl1-%0fAncp)E+b@&6aDSmV;hdj8l6cN+=ozJqeisZ%CyqEhj}ZElUD-e8r>S4NM$(IIm+<1y4nH4GI^JPO?!jX7 z_ldmkCLQrd^TqwCFywI zA$_neK-_I|>P5ov$-b)#**xbxiUE_)49oG!vsKZNM&I5nwJ3J?m9>uFD&-T+|e>aeS zNPg^}+MKNZVI$2G`;EtO5tr7HZf9MRefkwflya59!pfbu}YcWU5n&o{dz@t5$YAo*&lJE z7GZSGLtZ$B{c#T=|BK#JM0p?TF!FEI9i%VlEmi&ROqM^{7e7pAf1GOUc3EF`jXG8v(*1{Sm@5AL&kiBPJ(8Ku9rRFUEw;7S7g(0@}n-UeJ5~c zE6zmkF8oSgO(!4fX5$F4zYSEshil6Yk$1}Ok*_9^4*xWAIn+})&tq|*yYDPje6f33 z>KByC?oT@M>&1e|0|=epj;Dz~mbdUdgy=`l&n`qe>Ur{a>|;i6vHGdI*XhG{+=Iyf zVeg9Les*iqzf-?y90&W}c{w?+?BDGtItIcfv%`{bYSFoIOr zL;Cc;?kBs8^zAzz$p8J#|DmeK$_Z;oSw{}MsA?k?w9`vR4;C`bn>DU)Wi$4~p-4F8S6Sr@E za|0prt9gR|EH`prT`phk3kGQ&$h*c74<}aE`1F6_=N-ipyjwH!STaO@fc#u`Yjt>W zEcp=678e3qJBrOG4ED7)@`&#B1}EjHz4mm?3-ylz;_lVtJVMkRjXrlh+%b;yvi4J? z<2=`oIOD14Kh#epMBXp?;vPr-3xCx<;v7A%{2cxxe+lEv?+qc3h~lW^5anOE*HT>c z(*Dr85f@u?e6MAB*^iw(KEIH7bg#T?Qaaml-zqsqaWL9PxX-D7VmZwx`1~vFA2?S{ zP`{_bHCSLCtFh$D{4j`6Nk^NsE&ac?VsWj@96ac|X! z{K2lFsf4`86FqtSbHouRrEk*Ro9S@_r|05K(!OeKO>Iit z3GR^H_}xC7N<1vnE+LNe-;2n;ycYkN_Uw{cpZ)Wzl1t#_Y8^pdn{4uX)hDkew4OY$ zh%i{RCxa04P`vR$fAkxD2lDSM`Xfig?;Oc(M%=EIuu`zsr?R(jXz5|XW8?W%WB)I> zs`c{&{{0IyFZW{W9OCYvHx?2?560fg z_fg#PM_)>0f5=(;2<%OE9{$xpe((JLo%9BO(s=%|S0|I-Dp^tMh5bs-?)^V$zFz!| zCVnm|qw#_}Hph$qbRFr->h$>-&Lf!gkjAx-&NhBrwz$?6-u=c)-m_7~^5#j-bR;U8unJ3eC? z+p%uR-On!BS$O=W0z$XyWyKwgBRdWseP8xuE%{G+^C~UxFaEXPY5s_7TCcZwTYb?x zPnVp6HMP7rjAv&(VC2~ReHdHKKh z;CRlyO$!L^FNbNJ-po7OsJ*lKdk`ykt=0j1)3{;J$K)TuoP95guhi&Gf-~=QIZn8L zh2p5^UC1Ea3Wi7ze)lxRTYKD6?Gskfley%#+x@kid`_wDMxV)+@L=Z0UD@s*KQmD6 zr}xDZVn2~xgew+`-_1H?;%v#GvJZS${^+)NW+nS$-SgPbTQkeVjWg!|75L>}SN;+V zZLf7Zrz%R0cG3dr-AP$9N&Pdh>)P%T`J3!;wwax#fbvNf3z2y!NzhCQ=<52NRljkK@(9DYe~lbR{nDGbv-g%nLO;Ex z@&>2$Ala?k`YXkOp!qM_Z>&>E!lV7uj`@Mt{%Ng``2okVW{o%g(Qxomjen}*)?KQvfz&foreD_xQfp^DEil1JIosy4Tw!h}*)PGfWiv3xBZ?`-r zKKsCS>Cx_9VI{{6W>hrm7@xI<-wPJ4l79Wy2Jh1M+dn-+^!Danz#Z3U9dT=2W62Tg zQ~YvYPnJK2;oTa?9o$X(IrNx7ez)$4*@DX#$Ucx4$_}jiRwZlvUDIUO;l|VX#GOOG z%3tjhHKix)zmmVdq?N`;+}$3>c^onITlZL6d*aYbBKt#ba|G=trGLgH;?C^7@^ko& z>>KfK1N+&xl$HMMvdmx!*;P z@=a?*%T$i<%p59c1#OJKl(=2;aVlJB!*;*nn~F=;;^rDZ_mszujbOK8~Bznd2fpjv};H{UE;y8@?d^VBZzN@QeLB zIF2`Is_e?^w=Z9~-C+WueQTPD&n0%=!EtQlk)%6^|K22+Uw10$Zk4tZ2@xk2i9XR0 z#QvlCBJZ!j_8@h^9#HDPxcWu*f04b50t#UQ(uhZd;+UlHX-ug4V;hryt!uyZ%>t6+`nh5 z9eIlE!S%nLM}Bv1?@@%#4}0`I=b-t&BmUPtjoh;iNxq0bEjg}ze7?pH)1KT!oaZ;f z;JTcN9LK%Vuz)ZqeCs9B!(&G^j#n*9@!cz3Vj=1NyZt1$DBnl^vX=dL?qa+9n0e;~ zT=I6T&lafP7x#`)`;~?oCm42%8EH_>)H7XU*@WB0tghy^(Da`CXhZXK@@act!FI&m5XbI{irW z@46d%`sz)6ANiq~hx?I{bB((4GyhC+$;C}xH;4Uj{+q#Z?0c3;|A=GrNXNdMEP565 ze`A8xIY!P`n=dEbeWui4@*)1tB*cD_M>_J%HNY)3!I3Fkx2Ke7X- z=;R#nzjs;CZj+&T_-7s%%6>fO5aL`XdqVqs@`vBNu66joZd}iH``90INw;rK(SC1N zi@gVJUTg*1oxJO`E~|6)Z1On`#!60M`9AUktNqX2$j5U(A@YXKg!b~Ewh;#Hza9`r zdMppMwpElqS-&9NdG2Lne+P49KT-aOxRJzmJLmm4LjUf&mlpy;Kl%>#YxTqVPVou( zk>u>Z-9zKzJSjTjsrDnpw`m&ZX7m3!g1zQtymfcu~p4U2@ zZEweO9B0kf#?FhI`#F2X>dvHxS?2#XA}^c7ah$%BjNFHB&1F0EmPdNf=x@yx>^IZkWY!os4S336V#L&)q!H#HBJD zSCQZOFmno_cY2EAR`B}^>gPRa{x63OyJ!D!VEhvCo%%w49sb(R$f3cD(zo5sQ=GxR ztM#CsCBJ4pj{WUnua9Sc?Dn0#t?Z_UF$`@Z@97x&7(0-TpPuG49m_CNpRxeWG)e<^+ir>hCtFI<#7yqVP} zu-#wYaRdALTRu$|9;^SsZkv$qr93~8(AqI`I3e?O@>y@+K8Mg-bY(ta&^BuTA@*0< z1MRJlcuqoVLVy3CCO@R{m_p?9h2we!h-wWjL z$mg}r@bBMbZ;*SU_>LWo7hhyYt8*kDfA@shr2AKYNr~e)h(pA&u4Tl7qKD*nVev9+ zh~r#6i4cBw?R(@$eAhhvqt2pvIi<`yNaVXI9M`V=Onbs8uW~P#dpMpKNw@MdrGL~FQ;7#3 zWh;KU2jb*^r~}HsP#-Y%9y>?b{Y%JR-SioY^_>=ZQ{woY2KTliL_V%~5gz$w4DqN= zZC9<+nEW{Bnf>j7uT~RB9;0>of7e!gv{L?^EIRbg{;)TF2lgwuy303DV7s0EuKYU6 z!&tW$|JnC95@KJG-$v(2>=zSA56*7Y`cPNUIH-5^Aw7zR&f!pTD#(3#U?J$9^YP;e#>K;apHzX#g-|eX*30XH1{_aJy z@6x~+QgBAYsRxb>UPHdgCVlZ=v<3)O*`_lokNcCusiICl!BK9~1qS zvRaS(WvOlC$Np{N8}4z4DIYk9SOs?&F^Kw zFEmfoyESjrZ>29Q=N8S|Z@t>Y-RGB#VL$h#;hI0@BYomNMf$c5*I%Ia-N#xMg3qhI zD3cK9&Fw<5-^^(74!- z%=gpJNblh{$5&`vg;4fuh+nM_QU?Fah!^4jl3EZUB&ibsQx4 zg8X0=`K=;{J<{EVu&0| zxQp@2Zxdwy@F%UuY1~Zn#rb;$$Bphk@!h$?n-?3&{>=M`Bj1oe;Qm(f@!wmTMtYc4 zMDnv=c~5!_nio@lH+%3C?2mk9H2Li1H!UMXUafuDdHG-x+mRp765R2L#xAh~ zMCf)uEqx(xl)pvy)r`~Z?|fT!J)!$+QRxx))YFI~FMgQ)LoX$ZIP$?n;=Dg1&ih>A zI0t4BcZ-e5Cmt3Yk0-R=ZzOrS1=AHrdHy0D^{}PlTmFysx3J;hVZx_;m>P$6=cl*j zKga`R-~QDT(iiT@#;P6ne}s1Ox7sfeZ#S_&>Z_4|Z6h8uT`oC>%bpVqI!~7#yi#4W z+0ME@A?CR{4gmR7b3(sMisB;9J2qQgv*O}kB^Dkc3{BS-pc8GmLd{(vXgx2BqTL|6#ZDp@`S0lUgZhAz1ih8x= zhrFO4`Jy@m?%Nb^yx%j`?)}i$#Gh_+WnbQ>;}_^VrS6gaFrSS>f7G88*YF-gb{pIt zG$Gx4dGuQHhc{M|e*KO03P?vDqj})ni{|B?I3fGsxtsh^{)O@GBESD`3+dJEzbl(K z{?Cl^ZN6_Hj(kS?iS||8M`+(b{bLlz!+xXv4EGI+H@H{UI#{P-f9&Jy$rrtcz`e2j z80Us0wGX^maoH(perJvMtfV7fZpD6x18WF_PUi2s>{t8C-=GKWYmoaaw%Y?I%oS|i zQTqkrh3tjC7u0<2X74=E_k?^;vf9NCC>L4 zzU&J`|4&w$W8Wvdz)UwaW0>y_T4p1JMu>2cz>nwaUa=`IL^283dxT;4srK|h0}#U zySpo4fcF!mTlMekAUN!AeFx{IRPn{$75K02@Y#;Kj*-vAMMH?Q?n6GlS0nEI=I0P1 z9~(wG>kPzUKe7|->uR_6Z;;(u{YF<~JMx@d@<;m@?>B^hHd5=v{-b@$8osrY#*4k5 zy7u1e;;xD04}bbImF)rYIl(@6^(VxBz*$e!0ocjNA(Tsm_m*Oh?RdNmgJ)?E-ekTs&gmtTkANNMG zf8GPBf9%}}?pY=fhn&<8b*mZdhj(#P1(A2L9d^@?(7Ex5xNPQMa9n!!zbS3v+SQ4!_=lOl z6Z3k%8c%-QTMIgWEE}kC%50oM$oEI&cdI;}O&sf2yup4si*&!$Pj$r?tK&M&&TG9< z9R=^}OdQGFuXP}=mH+z%k4R6*gJkEy{Fn3{nxbVf&{Gh)4A>+!xDU+%YSp zAKnvcoV)+ky4}&Oq`zx&M1523vG=3cH(icrZ$8nVbmU{xh~qt@;vml@#IaBGAoMHG z*-D5w`jq(U%xF#M9bPH_W*xNx2aP?R-7334UaxWS z{&Ez@=et(&`;Y!_4RL#5Z$Z@U6u)u4ND#el86!Wuw%-qNDoIZnNR5cb6WG`eV_R8?u9VA zf8#wrar^ZnCeIn&N_G|9Z`d^}r52(+z`YKk^U$blhXKBnSgR{=@OFyq8h@b;}jVK3HEg{O7j|_T4*`e5`vBN4!=$-r?*N{njCU zNcVfrQCzU+zBZq9@58#97uJ=)cATqZhltzS|B#m}?s$IqDc zr5zQH{=-N|9dQ*Q^l#?7{k|OGd$)?t_s)eJ2X!|>H&%ZSp4_{ZIO-I#x9Gf!_j|^l z@gAD(cpjA+M?Ty?iXZ+(hwV(bBVdLi4FJ}Wsy`EGdl5#iQqUv?W@-l4dL_r6*u>|;I0L;fOv@?XC}`oulP z5REr4&iLV;$zzFIi#{wM3}#F=dMNv?;m~*%8_;CbH87zes=pWr9aGf z3EQp8<>a6C9e+vxK`=vjux^9q<=)tSuEuHIc`3)SKW=91C*!2-)lPYBy6Au2Bl%nD zOVWt@znj1B4{xlZb=VWiYW~)P7e{kE_wxeH*DH6+eDVjo*9rRNTgiUh&I9GA-hU=; zI@@~4-ravzjaB~xtF&&X#nolRt%O0^7rfq23tBh7vsvT*GT9d#{NM<|`D+#vx~;x3 z{?)QnMj`wEm}dOs&U=(k1@F`}@u}HsvIA>%Tgk^8V}Ae0>ty1uRbr>?I@s1t{j7Uq z@7jhvt#Q4MV-|4y;4}04oX(L>Tlszeq2rpj+o+Dw_ti23$>$H;B{_sS->)a1>-dT< z;UkaA?(Cn3$X~+}H^{&JX-~<|ysG_n=sRb-B@$Ylzt=e42yYH?yLnC75$r3SS`Hxn9fc=8o_Q{XD2K8mfUVNUh&l!_tuTI6l#Fw83neQKbXrjLN*BH-q2C|1>`3= z`6n-G9^MO8rC0ag#+nb}vDw#N+mp@lt<3dmkG>ZU-=a7hTITQ0V0S6xL;ROs-3hV( zw^h5*M)jX+-pPASlGkWHcMe-idU!{LdBpvTAB`cjn`LPI{=6)czf3>9oOEaV!y5^$ zwo8^20(d`!6N!hv|7G~EwEI>5IOyd}@g3~COzl0*`wVCP$Fg_()dNqke^~Rs?ris8 zd~6+Y*uUbDTl0~Z)bG3HeMR4&F_(~bOlX(voFw{S^E+ih$4lp)0p08Ouk^sU8VB5; zTVW}oz4px&gx=pAND^Jzn|%mN*wXq*v&7W zDSmm+-J|(qUyEmZ@XmGp2<_%QqzAuw4f&1jv{t+d@47Uf?an*3o+z=NIQM_@`vbq8MCcCR zCcm`j1s-wl%gkxy^TJ03gWpO?zCm)w_UiY_AF@mPsiY~you|vnpMj5JKd0R88HAxd zR{97>b(4MCm9`Hc-T$y*mSE0ct$xno}wZq>ePE9vgViL*IQ;8fZreCHjCKYs45My}RGt>6CrgyN(->sQ&g{nKUH ztygQ*Z1#)tIk)d4MvenYzf3yzfiZ;sm3CUU`^X&i3u?W+HV*W#=26*=_2u4t^4Vo- zjwjuVe_Qb|jO8Q2^Nm-LZcj7kZofy?I`KVtL4N11Z!wAe5w8{rCjKM6+o}EK=g~fC z2fO3dez}g~jJ>j#txb`;cCO!`l@Hg4_FQ9sYoZ^1pD! z&?L<#@sPf2?P#ri!kYX1FwvK{SV;)`kv-e|1v!44)Dg5TXxn9X+NgT_yP z+c%3id}qMjU^Kvxe>0;@)#jCyRf=x!r7s9Ze&2syCB8IQ2fL#&+aK z{Yduzr`MPnZW?_5E;UBC8J@?rl?6`r$j4dJzX?{a71u#=8zpV(t8p)+g0?B0L- zM~&kSds_1gvagfhz>gI7agLI{tkM}n;y7;mT9S|ZfO)4D`H5d?YLdRY;k?;rN{-)3 ze#S}C@%R0c36al89?tXrCboyKWhgE<|9dir?d}yzamUH%nnyg?{?8D?u=G~xo%y-w z3(eoZgI{sX+dfhICH)`{{7ylE{EvAHar^C`)IZFf^(y;YcQ)5P?Bw^;e&l-3YX1J) zZy3JLPt0UL>&^AD>*#!hzw^r>9p?!7Ta-82qaNQV`tEgoIX?EkN`f87q!D7h8Ep58 zZB~5si~lNpc~9rbzU;V{O|s4{E!_XZua2!{6CtH)3~1; zmfnGPB^~*#=Ifo<~(Vg-e@9{#( z59cC5@8&$^qi&JbzQ%z)lHdBgn*0;zMadQQ0`a5%G4}tr2ffBlBkuk=OzqIS{1ADh zna97msciS}iT&OFvVz`)z~PUBNe?&7lRZS|wWx05WwuhBqW_EU)Y)vp;N3Nn3+i=g z#8EdJR0wE&Hr?3OsGFrfyUQ%;CmcFd@gca}S^WOuh6~j%rMUdbJ!XFY2Ko31(!FtO z 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 H$Kd|}&HaB9 diff --git a/requirements.txt b/requirements.txt index 807b75c..3920c96 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,13 +2,15 @@ fastapi==0.111.1 uvicorn==0.30.1 python-dotenv==1.0.1 openai==1.35.13 -tiktoken==0.7.0 -unstructured==0.14.9 +tiktoken +unstructured +unstructured-client markdown==3.6 -numpy==1.26.4 -scikit-learn==1.5.1 -sentence-transformers==3.0.1 -torch==2.3.1 +numpy +scikit-learn +sentence-transformers +torch pytest==8.3.2 pytest-mock==3.14.0 -httpx==0.27.0 \ No newline at end of file +httpx==0.27.0 +rank-bm25 \ No newline at end of file diff --git a/scripts/build_knowledge_base.py b/scripts/build_knowledge_base.py index c3a4d0f..820b384 100644 --- a/scripts/build_knowledge_base.py +++ b/scripts/build_knowledge_base.py @@ -6,12 +6,14 @@ import re from pathlib import Path from typing import List, Dict, Any +import pickle import numpy as np import tiktoken from dotenv import load_dotenv from openai import OpenAI from unstructured.partition.md import partition_md +from rank_bm25 import BM25Okapi # --- Configuration --- load_dotenv() @@ -25,6 +27,7 @@ DB_DIR = Path("db") EMBEDDINGS_FILE = DB_DIR / "embeddings.npy" CHUNKS_FILE = DB_DIR / "chunks.json" +BM25_INDEX_FILE = DB_DIR / "bm25_index.pkl" EMBEDDING_MODEL = "text-embedding-3-small" TEXT_CHUNK_MAX_TOKENS = 128 @@ -135,9 +138,20 @@ def main(): logging.warning("Could not create any chunks from the documents. Exiting.") return chunk_texts = [chunk["text"] for chunk in all_chunks_with_metadata] + + # Create and save vector embeddings embeddings = create_embeddings(chunk_texts) logging.info(f"Saving {len(embeddings)} embeddings to {EMBEDDINGS_FILE}") np.save(EMBEDDINGS_FILE, embeddings) + + # Create and save BM25 index for keyword search + logging.info("Creating BM25 index...") + tokenized_corpus = [doc.split(" ") for doc in chunk_texts] + bm25 = BM25Okapi(tokenized_corpus) + with open(BM25_INDEX_FILE, "wb") as f: + pickle.dump(bm25, f) + logging.info(f"BM25 index saved to {BM25_INDEX_FILE}") + logging.info(f"Saving {len(all_chunks_with_metadata)} chunks to {CHUNKS_FILE}") with open(CHUNKS_FILE, "w", encoding="utf-8") as f: json.dump(all_chunks_with_metadata, f, ensure_ascii=False, indent=4) From a8cdc7c9944237694fc6b48563cbbfb5a7463ae4 Mon Sep 17 00:00:00 2001 From: Vyacheslav Artemyev Date: Wed, 11 Jun 2025 15:09:24 +0300 Subject: [PATCH 05/10] translate kb to english --- db/chunks.json | 115 ++++++++---------- db/embeddings.npy | Bin 184448 -> 147584 bytes knowledge/api_design.md | 14 +-- knowledge/code-example/tool_creation_guide.md | 60 +++++++++ knowledge/error_handling.md | 34 +++--- knowledge/python_style_guide.md | 26 ++-- knowledge/testing_guidelines.md | 22 ++-- 7 files changed, 156 insertions(+), 115 deletions(-) create mode 100644 knowledge/code-example/tool_creation_guide.md diff --git a/db/chunks.json b/db/chunks.json index 9e915bd..cef79a3 100644 --- a/db/chunks.json +++ b/db/chunks.json @@ -1,6 +1,6 @@ [ { - "text": "Руководство по Написанию Тестов\n1. Структура теста: Arrange-Act-Assert (AAA)\nВсе тесты должны следовать паттерну AAA для ясности и читаемости. Arrange (Подготовка): Подготовьте все необходимые данные и моки. Act (Действие): Вызовите тестируемую функцию или метод.", + "text": "Testing Guidelines\n1. Test Structure: Arrange-Act-Assert (AAA)\nAll tests should follow the AAA pattern for clarity and readability. Arrange: Prepare all necessary data and mocks. Act: Call the function or method being tested. Assert: Check that the result meets expectations. ```python def test_user_creation(): # Arrange user_data = {\"username\": \"test\", \"email\": \"test@example.com\"} mock_db = MagicMock()\n# Act\ncreated_user = create_user(db=mock_db, data=user_data)", "source": "testing_guidelines.md", "metadata": { "tags": [], @@ -9,7 +9,7 @@ } }, { - "text": "Assert (Проверка): Проверьте, что результат соответствует ожиданиям. ```python def test_user_creation(): # Arrange user_data = {\"username\": \"test\", \"email\": \"test@example.com\"} mock_db = MagicMock()\n# Act\ncreated_user = create_user(db=mock_db, data=user_data)", + "text": "# Assert\nassert created_user.username == user_data[\"username\"]\nmock_db.add.assert_called_once()\n```\n2. Test Naming\nTest function names should be descriptive and start with test_. Follow the format test___. Example: test_add_items_with_negative_quantity_raises_error()\n3. Use pytest.raises for Exception Testing\nTo verify that code correctly raises exceptions, use the pytest.raises context manager. ```python import pytest\ndef test_divide_by_zero_raises_exception(): with pytest.raises(ZeroDivisionError): divide(10, 0) ```", "source": "testing_guidelines.md", "metadata": { "tags": [], @@ -18,25 +18,7 @@ } }, { - "text": "# Assert\nassert created_user.username == user_data[\"username\"]\nmock_db.add.assert_called_once()\n```\n2. Именование тестов\nИмена тестовых функций должны быть описательными и начинаться с test_. Следуйте формату test_<что_тестируем>_<при_каких_условиях>_<ожидаемый_результат>. Пример: test_add_items_with_negative_quantity_raises_error()\n3.", - "source": "testing_guidelines.md", - "metadata": { - "tags": [], - "full_path": "knowledge/testing_guidelines.md", - "chunk_id": "testing_guidelines.md_2" - } - }, - { - "text": "Используйте pytest.raises для проверки исключений\nДля проверки того, что код корректно выбрасывает исключения, используйте контекстный менеджер pytest.raises. ```python import pytest\ndef test_divide_by_zero_raises_exception(): with pytest.raises(ZeroDivisionError): divide(10, 0) ```", - "source": "testing_guidelines.md", - "metadata": { - "tags": [], - "full_path": "knowledge/testing_guidelines.md", - "chunk_id": "testing_guidelines.md_3" - } - }, - { - "text": "Принципы Обработки Ошибок\n1. Предпочитайте специфичные исключения\nВсегда перехватывайте наиболее специфичный тип исключения. Избегайте использования except Exception: без крайней необходимости.", + "text": "Error Handling Principles\n1. Prefer Specific Exceptions\nAlways catch the most specific exception type possible. Avoid using except Exception: unless absolutely necessary. Bad: python try: # some code except Exception as e: log.error(\"An error occurred\")\nGood: python try: # some code except FileNotFoundError as e: log.error(f\"File not found: {e}\") except (KeyError, ValueError) as e: log.warning(f\"Data error: {e}\")\n2. Use Custom Exceptions\nFor errors specific to your application's domain logic, create your own exception classes.", "source": "error_handling.md", "metadata": { "tags": [], @@ -45,7 +27,7 @@ } }, { - "text": "Плохо: python try: # какой-то код except Exception as e: log.error(\"Произошла ошибка\")\nХорошо: python try: # какой-то код except FileNotFoundError as e: log.error(f\"Файл не найден: {e}\") except (KeyError, ValueError) as e: log.warning(f\"Ошибка данных: {e}\")\n2.", + "text": "This makes the code more readable and allows calling code to handle specific failures precisely. ```python class InsufficientBalanceError(Exception): \"\"\"Exception raised when the account balance is too low.\"\"\" pass\ndef withdraw(amount): if amount > current_balance: raise InsufficientBalanceError(\"Insufficient funds in the account\") ```\n3. Log Errors Correctly\nWhen catching an exception, be sure to log the full information, including the stack trace, to simplify debugging. ```python import logging\ntry: # ... except Exception as e: logging.error(\"An unexpected error occurred\", exc_info=True)", "source": "error_handling.md", "metadata": { "tags": [], @@ -54,34 +36,7 @@ } }, { - "text": "Используйте кастомные исключения\nДля ошибок, специфичных для доменной логики вашего приложения, создавайте собственные классы исключений. Это делает код более читаемым и позволяет вызывающему коду точечно обрабатывать конкретные сбои.", - "source": "error_handling.md", - "metadata": { - "tags": [], - "full_path": "knowledge/error_handling.md", - "chunk_id": "error_handling.md_2" - } - }, - { - "text": "```python class InsufficientBalanceError(Exception): \"\"\"Исключение, возникающее при недостаточном балансе.\"\"\" pass\ndef withdraw(amount): if amount > current_balance: raise InsufficientBalanceError(\"Недостаточно средств на счете\") ```\n3. Логируйте ошибки правильно\nПри перехвате исключения обязательно логируйте полную информацию, включая трассировку стека, чтобы упростить отладку.", - "source": "error_handling.md", - "metadata": { - "tags": [], - "full_path": "knowledge/error_handling.md", - "chunk_id": "error_handling.md_3" - } - }, - { - "text": "```python import logging\ntry: # ... except Exception as e: logging.error(\"Произошла непредвиденная ошибка\", exc_info=True)", - "source": "error_handling.md", - "metadata": { - "tags": [], - "full_path": "knowledge/error_handling.md", - "chunk_id": "error_handling.md_4" - } - }, - { - "text": "API Design Principles\nРесурсы: Используйте существительные во множественном числе для именования эндпоинтов (например, /users, /products). HTTP-методы: Используйте правильные HTTP-глаголы для действий:\nGET для получения данных. POST для создания новых ресурсов. PUT / PATCH для обновления. DELETE для удаления.", + "text": "API Design Principles\nResources: Use plural nouns for endpoint naming (e.g., /users, /products). HTTP Methods: Use the correct HTTP verbs for actions:\nGET for retrieving data. POST for creating new resources. PUT / PATCH for updating. DELETE for deleting. Versioning: Include the API version in the URL (e.g., /api/v1/users).", "source": "api_design.md", "metadata": { "tags": [], @@ -90,16 +45,7 @@ } }, { - "text": "Версионирование: Включайте версию API в URL (например, /api/v1/users).", - "source": "api_design.md", - "metadata": { - "tags": [], - "full_path": "knowledge/api_design.md", - "chunk_id": "api_design.md_1" - } - }, - { - "text": "Python Style Guide\nИменование: Используйте snake_case для переменных и функций. Имена классов должны использовать CamelCase. Константы должны быть в UPPER_SNAKE_CASE. Длина строки: Максимальная длина строки - 99 символов. Докстринги: Все публичные модули, функции, классы и методы должны иметь докстринги в стиле Google.", + "text": "Python Style Guide\nNaming: Use snake_case for variables and functions. Class names should use CamelCase. Constants should be in UPPER_SNAKE_CASE. Line Length: The maximum line length is 99 characters. Docstrings: All public modules, functions, classes, and methods must have Google-style docstrings. Imports: Group imports in the following order: standard library, third-party libraries, local application. String Formatting\nf-strings: Always prefer f-strings for formatting instead of str.format() or the % operator.", "source": "python_style_guide.md", "metadata": { "tags": [], @@ -108,7 +54,7 @@ } }, { - "text": "Импорты: Группируйте импорты в следующем порядке: стандартная библиотека, сторонние библиотеки, локальные приложения. Форматирование строк\nf-строки: Всегда предпочитайте f-строки для форматирования вместо str.format() или оператора %.", + "text": "Good: user_info = f\"User {user.name} with ID {user.id}\"\nBad: user_info = \"User {} with ID {}\".format(user.name, user.id)\nList Comprehensions\nSimplicity: Use list comprehensions to create lists from existing iterables, but only if the logic remains simple and readable. If complex logic or multiple nested loops are required, use a regular for loop.", "source": "python_style_guide.md", "metadata": { "tags": [], @@ -117,7 +63,7 @@ } }, { - "text": "Хорошо: user_info = f\"Пользователь {user.name} с ID {user.id}\"\nПлохо: user_info = \"Пользователь {} с ID {}\".format(user.name, user.id)\nList Comprehensions\nПростота: Используйте list comprehensions для создания списков из существующих итерируемых объектов, но только если логика остается простой и читаемой.", + "text": "Good: squares = [x*x for x in range(10)]\nAvoid (hard to read): complex_list = [x + y for x in range(10) for y in range(5) if x % 2 == 0 if y % 3 == 0]", "source": "python_style_guide.md", "metadata": { "tags": [], @@ -126,12 +72,47 @@ } }, { - "text": "Если требуется сложная логика или несколько вложенных циклов, используйте обычный цикл for. Хорошо: squares = [x*x for x in range(10)]\nИзбегайте (сложно для чтения): complex_list = [x + y for x in range(10) for y in range(5) if x % 2 == 0 if y % 3 == 0]", - "source": "python_style_guide.md", + "text": "Agent Tool Creation Guide\nThis document outlines the best practices for creating new tool functions that can be used by AI agents in our system. 1. Tool Function Structure\nEvery tool must be a wrapper around the core logic and accept a single argument of type Dict[str, Any]. This ensures a unified interface for all tools. ```python\nCorrect\ndef my_tool(input_data: Dict[str, Any]) -> str: #... Incorrect\ndef my_tool(param1: str, param2: int) -> str: #... ```\n2. Mandatory Error Handling\nA tool should never crash with an unhandled exception.", + "source": "tool_creation_guide.md", "metadata": { - "tags": [], - "full_path": "knowledge/python_style_guide.md", - "chunk_id": "python_style_guide.md_3" + "tags": [ + "code-example" + ], + "full_path": "knowledge/code-example/tool_creation_guide.md", + "chunk_id": "tool_creation_guide.md_0" + } + }, + { + "text": "Always use try-except and return an informative error message as a string. python def substring_tool(input_data: Dict[str, Any]) -> str: try: text = input_data['text'] start = input_data['start'] # ... core logic ... return result except KeyError as e: return f\"Error: Missing required key {e} in input_data.\" except Exception as e: return f\"An unexpected error occurred: {e}\"\n3. Detailed Docstrings\nAlways write detailed docstrings in Google-style. Describe the function's purpose, all keys in the input_data dictionary, and the return value. 4.", + "source": "tool_creation_guide.md", + "metadata": { + "tags": [ + "code-example" + ], + "full_path": "knowledge/code-example/tool_creation_guide.md", + "chunk_id": "tool_creation_guide.md_1" + } + }, + { + "text": "Tool Definition (_tool_def)\nEvery tool must have a corresponding _tool_def definition. This is a dictionary that describes the function's signature for the OpenAI API, allowing the agent to understand how to call your tool.", + "source": "tool_creation_guide.md", + "metadata": { + "tags": [ + "code-example" + ], + "full_path": "knowledge/code-example/tool_creation_guide.md", + "chunk_id": "tool_creation_guide.md_2" + } + }, + { + "text": "python substring_tool_def = { \"type\": \"function\", \"function\": { \"name\": \"substring_tool\", \"description\": \"Extracts a substring from text.\", \"parameters\": { \"type\": \"object\", \"properties\": { \"text\": {\"type\": \"string\", \"description\": \"The source text.\"}, \"start\": {\"type\": \"integer\", \"description\": \"The starting index.\"}, }, \"required\": [\"text\", \"start\"], }, }, }", + "source": "tool_creation_guide.md", + "metadata": { + "tags": [ + "code-example" + ], + "full_path": "knowledge/code-example/tool_creation_guide.md", + "chunk_id": "tool_creation_guide.md_3" } } ] \ No newline at end of file diff --git a/db/embeddings.npy b/db/embeddings.npy index 6248f90957adfc0d40aa24543ae3319b82493d2f..d192fff4c621826cde84f3118c2274016fc8688c 100644 GIT binary patch literal 147584 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 literal 184448 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%0AabBL& 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%0A)uv=691&QbsKhX?0z+?ZcQy;gF=z0_v5 z2S+lr-%E`(e=U>h*Y+X(B^M4xM zpM1{lg301<)LnXmeOW_39IO;ScwQim_pq6w!_Sc4UDH|qAUJzYb_~C3>=5rd*v@!D ze$@Na4|UI##O;meja*{)MaYAsf2bG9Z{vIh($ diff --git a/knowledge/api_design.md b/knowledge/api_design.md index 92dbde6..61f8096 100644 --- a/knowledge/api_design.md +++ b/knowledge/api_design.md @@ -1,9 +1,9 @@ # API Design Principles -- **Ресурсы:** Используйте существительные во множественном числе для именования эндпоинтов (например, `/users`, `/products`). -- **HTTP-методы:** Используйте правильные HTTP-глаголы для действий: - - `GET` для получения данных. - - `POST` для создания новых ресурсов. - - `PUT` / `PATCH` для обновления. - - `DELETE` для удаления. -- **Версионирование:** Включайте версию API в URL (например, `/api/v1/users`). \ No newline at end of file +- **Resources:** Use plural nouns for endpoint naming (e.g., `/users`, `/products`). +- **HTTP Methods:** Use the correct HTTP verbs for actions: + - `GET` for retrieving data. + - `POST` for creating new resources. + - `PUT` / `PATCH` for updating. + - `DELETE` for deleting. +- **Versioning:** Include the API version in the URL (e.g., `/api/v1/users`). \ No newline at end of file diff --git a/knowledge/code-example/tool_creation_guide.md b/knowledge/code-example/tool_creation_guide.md new file mode 100644 index 0000000..e8afab2 --- /dev/null +++ b/knowledge/code-example/tool_creation_guide.md @@ -0,0 +1,60 @@ +### Agent Tool Creation Guide + +This document outlines the best practices for creating new tool functions that can be used by AI agents in our system. + +#### 1. Tool Function Structure + +Every tool must be a wrapper around the core logic and accept a **single argument** of type `Dict[str, Any]`. This ensures a unified interface for all tools. + +```python +# Correct +def my_tool(input_data: Dict[str, Any]) -> str: + #... + +# Incorrect +def my_tool(param1: str, param2: int) -> str: + #... +``` + +#### 2. Mandatory Error Handling + +A tool should **never crash with an unhandled exception**. Always use `try-except` and return an informative error message as a string. + +```python +def substring_tool(input_data: Dict[str, Any]) -> str: + try: + text = input_data['text'] + start = input_data['start'] + # ... core logic ... + return result + except KeyError as e: + return f"Error: Missing required key {e} in input_data." + except Exception as e: + return f"An unexpected error occurred: {e}" +``` + +#### 3. Detailed Docstrings + +Always write detailed docstrings in Google-style. Describe the function's purpose, all keys in the `input_data` dictionary, and the return value. + +#### 4. Tool Definition (`_tool_def`) + +Every tool must have a corresponding `_tool_def` definition. This is a dictionary that describes the function's signature for the OpenAI API, allowing the agent to understand how to call your tool. + +```python +substring_tool_def = { + "type": "function", + "function": { + "name": "substring_tool", + "description": "Extracts a substring from text.", + "parameters": { + "type": "object", + "properties": { + "text": {"type": "string", "description": "The source text."}, + "start": {"type": "integer", "description": "The starting index."}, + }, + "required": ["text", "start"], + }, + }, +} +``` \ No newline at end of file diff --git a/knowledge/error_handling.md b/knowledge/error_handling.md index f6bf832..6ad9f3e 100644 --- a/knowledge/error_handling.md +++ b/knowledge/error_handling.md @@ -1,44 +1,44 @@ -# Принципы Обработки Ошибок +# Error Handling Principles -## 1. Предпочитайте специфичные исключения +## 1. Prefer Specific Exceptions -Всегда перехватывайте наиболее специфичный тип исключения. Избегайте использования `except Exception:` без крайней необходимости. +Always catch the most specific exception type possible. Avoid using `except Exception:` unless absolutely necessary. -**Плохо:** +**Bad:** ```python try: - # какой-то код + # some code except Exception as e: - log.error("Произошла ошибка") + log.error("An error occurred") ``` -**Хорошо:** +**Good:** ```python try: - # какой-то код + # some code except FileNotFoundError as e: - log.error(f"Файл не найден: {e}") + log.error(f"File not found: {e}") except (KeyError, ValueError) as e: - log.warning(f"Ошибка данных: {e}") + log.warning(f"Data error: {e}") ``` -## 2. Используйте кастомные исключения +## 2. Use Custom Exceptions -Для ошибок, специфичных для доменной логики вашего приложения, создавайте собственные классы исключений. Это делает код более читаемым и позволяет вызывающему коду точечно обрабатывать конкретные сбои. +For errors specific to your application's domain logic, create your own exception classes. This makes the code more readable and allows calling code to handle specific failures precisely. ```python class InsufficientBalanceError(Exception): - """Исключение, возникающее при недостаточном балансе.""" + """Exception raised when the account balance is too low.""" pass def withdraw(amount): if amount > current_balance: - raise InsufficientBalanceError("Недостаточно средств на счете") + raise InsufficientBalanceError("Insufficient funds in the account") ``` -## 3. Логируйте ошибки правильно +## 3. Log Errors Correctly -При перехвате исключения обязательно логируйте полную информацию, включая трассировку стека, чтобы упростить отладку. +When catching an exception, be sure to log the full information, including the stack trace, to simplify debugging. ```python import logging @@ -46,4 +46,4 @@ import logging try: # ... except Exception as e: - logging.error("Произошла непредвиденная ошибка", exc_info=True) \ No newline at end of file + logging.error("An unexpected error occurred", exc_info=True) \ No newline at end of file diff --git a/knowledge/python_style_guide.md b/knowledge/python_style_guide.md index cc3f9e0..36be205 100644 --- a/knowledge/python_style_guide.md +++ b/knowledge/python_style_guide.md @@ -1,26 +1,26 @@ # Python Style Guide -- **Именование:** Используйте `snake_case` для переменных и функций. Имена классов должны использовать `CamelCase`. Константы должны быть в `UPPER_SNAKE_CASE`. -- **Длина строки:** Максимальная длина строки - 99 символов. -- **Докстринги:** Все публичные модули, функции, классы и методы должны иметь докстринги в стиле Google. -- **Импорты:** Группируйте импорты в следующем порядке: стандартная библиотека, сторонние библиотеки, локальные приложения. +- **Naming:** Use `snake_case` for variables and functions. Class names should use `CamelCase`. Constants should be in `UPPER_SNAKE_CASE`. +- **Line Length:** The maximum line length is 99 characters. +- **Docstrings:** All public modules, functions, classes, and methods must have Google-style docstrings. +- **Imports:** Group imports in the following order: standard library, third-party libraries, local application. -## Форматирование строк +## String Formatting -- **f-строки:** Всегда предпочитайте f-строки для форматирования вместо `str.format()` или оператора `%`. +- **f-strings:** Always prefer f-strings for formatting instead of `str.format()` or the `%` operator. -**Хорошо:** -`user_info = f"Пользователь {user.name} с ID {user.id}"` +**Good:** +`user_info = f"User {user.name} with ID {user.id}"` -**Плохо:** -`user_info = "Пользователь {} с ID {}".format(user.name, user.id)` +**Bad:** +`user_info = "User {} with ID {}".format(user.name, user.id)` ## List Comprehensions -- **Простота:** Используйте list comprehensions для создания списков из существующих итерируемых объектов, но только если логика остается простой и читаемой. Если требуется сложная логика или несколько вложенных циклов, используйте обычный цикл `for`. +- **Simplicity:** Use list comprehensions to create lists from existing iterables, but only if the logic remains simple and readable. If complex logic or multiple nested loops are required, use a regular `for` loop. -**Хорошо:** +**Good:** `squares = [x*x for x in range(10)]` -**Избегайте (сложно для чтения):** +**Avoid (hard to read):** `complex_list = [x + y for x in range(10) for y in range(5) if x % 2 == 0 if y % 3 == 0]` \ No newline at end of file diff --git a/knowledge/testing_guidelines.md b/knowledge/testing_guidelines.md index 55c5b6b..2fd0333 100644 --- a/knowledge/testing_guidelines.md +++ b/knowledge/testing_guidelines.md @@ -1,12 +1,12 @@ -# Руководство по Написанию Тестов +# Testing Guidelines -## 1. Структура теста: Arrange-Act-Assert (AAA) +## 1. Test Structure: Arrange-Act-Assert (AAA) -Все тесты должны следовать паттерну AAA для ясности и читаемости. +All tests should follow the AAA pattern for clarity and readability. -- **Arrange (Подготовка):** Подготовьте все необходимые данные и моки. -- **Act (Действие):** Вызовите тестируемую функцию или метод. -- **Assert (Проверка):** Проверьте, что результат соответствует ожиданиям. +- **Arrange:** Prepare all necessary data and mocks. +- **Act:** Call the function or method being tested. +- **Assert:** Check that the result meets expectations. ```python def test_user_creation(): @@ -22,15 +22,15 @@ def test_user_creation(): mock_db.add.assert_called_once() ``` -## 2. Именование тестов +## 2. Test Naming -Имена тестовых функций должны быть описательными и начинаться с `test_`. Следуйте формату `test_<что_тестируем>_<при_каких_условиях>_<ожидаемый_результат>`. +Test function names should be descriptive and start with `test_`. Follow the format `test___`. -**Пример:** `test_add_items_with_negative_quantity_raises_error()` +**Example:** `test_add_items_with_negative_quantity_raises_error()` -## 3. Используйте `pytest.raises` для проверки исключений +## 3. Use `pytest.raises` for Exception Testing -Для проверки того, что код корректно выбрасывает исключения, используйте контекстный менеджер `pytest.raises`. +To verify that code correctly raises exceptions, use the `pytest.raises` context manager. ```python import pytest From 6fe2fca953500bf19e6317e80bb8ce9ae1530446 Mon Sep 17 00:00:00 2001 From: Vyacheslav Artemyev Date: Wed, 11 Jun 2025 15:18:33 +0300 Subject: [PATCH 06/10] fix --- app/agents/roles/coding_agent.py | 6 +- app/agents/roles/evaluator_agent.py | 6 +- app/agents/roles/reviewer_agent.py | 11 +- app/agents/roles/task_decomposer.py | 81 ++++++++++++ app/agents/roles/testing_agent.py | 6 +- app/orchestration/decomposer.py | 195 ---------------------------- app/orchestration/orchestrator.py | 4 +- configs/agent/coding_agent.yaml | 12 ++ configs/agent/default_agent.yaml | 6 + configs/agent/evaluator_agent.yaml | 13 ++ configs/agent/reviewer_agent.yaml | 12 ++ configs/agent/task_decomposer.yaml | 6 + configs/agent/testing_agent.yaml | 12 ++ configs/config.yaml | 35 +++++ main.py | 122 +++++++---------- requirements.txt | 3 +- 16 files changed, 239 insertions(+), 291 deletions(-) create mode 100644 app/agents/roles/task_decomposer.py delete mode 100644 app/orchestration/decomposer.py create mode 100644 configs/agent/coding_agent.yaml create mode 100644 configs/agent/default_agent.yaml create mode 100644 configs/agent/evaluator_agent.yaml create mode 100644 configs/agent/reviewer_agent.yaml create mode 100644 configs/agent/task_decomposer.yaml create mode 100644 configs/agent/testing_agent.yaml create mode 100644 configs/config.yaml diff --git a/app/agents/roles/coding_agent.py b/app/agents/roles/coding_agent.py index 8ae2015..3476c42 100644 --- a/app/agents/roles/coding_agent.py +++ b/app/agents/roles/coding_agent.py @@ -6,11 +6,11 @@ class CodingAgent(Agent): """An agent specializing in writing and refactoring code.""" - def __init__(self, name: str = "CodingAgent", **kwargs): + def __init__(self, name: str, role: str, goal: str, **kwargs): super().__init__( name=name, - role="Software Engineer", - goal="Write, modify, and fix code according to the given task.", + role=role, + goal=goal, **kwargs, ) self.system_prompt = ( diff --git a/app/agents/roles/evaluator_agent.py b/app/agents/roles/evaluator_agent.py index ad843bb..ea5e4e2 100644 --- a/app/agents/roles/evaluator_agent.py +++ b/app/agents/roles/evaluator_agent.py @@ -3,11 +3,11 @@ class EvaluatorAgent(Agent): """An agent that analyzes errors and results.""" - def __init__(self, name: str = "EvaluatorAgent", **kwargs): + def __init__(self, name: str, role: str, goal: str, **kwargs): super().__init__( name=name, - role="Quality Assurance Analyst", - goal="Analyze test results and create tasks for the CodingAgent to fix any issues.", + role=role, + goal=goal, **kwargs, ) self.system_prompt = """ diff --git a/app/agents/roles/reviewer_agent.py b/app/agents/roles/reviewer_agent.py index 168acbb..c83d1dd 100644 --- a/app/agents/roles/reviewer_agent.py +++ b/app/agents/roles/reviewer_agent.py @@ -3,16 +3,11 @@ class ReviewerAgent(Agent): """An agent specializing in strict Code Review.""" - def __init__(self, name: str = "CodeReviewer", **kwargs): + def __init__(self, name: str, role: str, goal: str, **kwargs): super().__init__( name=name, - role="Code Reviewer", - goal=( - "Ensure that the provided code is of high quality, " - "free of errors, and adheres to best practices and " - "internal coding standards." - ), - use_rag=True, + role=role, + goal=goal, **kwargs, ) self.system_prompt = ( diff --git a/app/agents/roles/task_decomposer.py b/app/agents/roles/task_decomposer.py new file mode 100644 index 0000000..aec223b --- /dev/null +++ b/app/agents/roles/task_decomposer.py @@ -0,0 +1,81 @@ +"""Task Decomposer Agent.""" +from app.agents.agent import Agent + +class TaskDecomposer(Agent): + """ + An agent specializing in breaking down a high-level goal into a step-by-step plan. + """ + def __init__(self, name: str, role: str, goal: str, **kwargs): + # This agent typically does not need RAG, but the option is there. + kwargs.setdefault('use_rag', False) + + super().__init__( + name=name, + role=role, + goal=goal, + **kwargs, + ) + self.system_prompt = """ +You are an expert project manager. Your task is to break down a high-level user goal into a concise, step-by-step plan. +Each step must be a single, clear action assigned to one of the available roles. + +# AVAILABLE ROLES: +- CodingAgent: Writes, modifies, and fixes code. +- TestingAgent: Runs tests and reports results. +- ReviewerAgent: Performs code reviews, checking for quality and adherence to standards. +- EvaluatorAgent: Analyzes test failures and creates bug reports. + +# OUTPUT FORMAT: +Your output must be a list of steps in JSON format. Do not include any other text or explanation. + +# EXAMPLE: +Goal: "Create a function to add two numbers and test it." + +Your output: +```json +[ + { + "step": 1, + "assignee": "CodingAgent", + "task": "Create a new function 'add(a, b)' in 'app/utils/math.py'." + }, + { + "step": 2, + "assignee": "ReviewerAgent", + "task": "Review the 'add' function in 'app/utils/math.py'." + }, + { + "step": 3, + "assignee": "CodingAgent", + "task": "Create a new test file 'tests/test_math.py' with tests for the 'add' function." + }, + { + "step": 4, + "assignee": "TestingAgent", + "task": "Run the tests in 'tests/test_math.py'." + } +] +``` +""" + + def get_plan(self, goal: str) -> list: + """ + Generates a plan for a given goal. + Overrides the base 'execute_task' to return a structured plan. + """ + task_briefing = f"Create a step-by-step plan to achieve the following goal: {goal}" + + # We directly call the chat completion and parse the result here + response_json = self.chat_completion( + messages=[ + {"role": "system", "content": self.system_prompt}, + {"role": "user", "content": task_briefing}, + ], + is_json=True, # Assuming a chat_completion method that can enforce JSON output + ) + + if response_json: + return response_json + else: + # Fallback or error handling + return [{"step": 1, "assignee": "DefaultAgent", "task": "Failed to create a plan."}] \ No newline at end of file diff --git a/app/agents/roles/testing_agent.py b/app/agents/roles/testing_agent.py index f44d84d..0abc5d1 100644 --- a/app/agents/roles/testing_agent.py +++ b/app/agents/roles/testing_agent.py @@ -3,11 +3,11 @@ class TestingAgent(Agent): """An agent specializing in running tests.""" - def __init__(self, name: str = "TestingAgent", **kwargs): + def __init__(self, name: str, role: str, goal: str, **kwargs): super().__init__( name=name, - role="Quality Assurance Engineer", - goal="Run tests to ensure the code is working correctly.", + role=role, + goal=goal, **kwargs, ) self.system_prompt = """ diff --git a/app/orchestration/decomposer.py b/app/orchestration/decomposer.py deleted file mode 100644 index e62e7e3..0000000 --- a/app/orchestration/decomposer.py +++ /dev/null @@ -1,195 +0,0 @@ -""" -Module for decomposing a high-level task into specific subtasks. -""" -import json -import logging -from typing import List, Optional, Dict, Any -from openai import OpenAI - -DECOMPOSER_PROMPT = """ -Твоя задача - разбить высокоуровневую цель на детальный, последовательный план для AI-агента. -Ответ должен быть ТОЛЬКО JSON-массивом строк без какого-либо другого текста или объяснений. - -# Доступные Инструменты Агента: -Агент имеет доступ к следующим функциям, которые он может использовать для выполнения шагов: -- `list_files_tool(path: str)`: Показывает содержимое директории. -- `read_file_tool(path: str)`: Читает содержимое файла. -- `edit_file_tool(path: str, mode: str, ...)`: Редактирует файл. Режимы: 'append' (добавить в конец), 'replace' (заменить фрагмент), 'overwrite' (перезаписать). -- `delete_file_tool(path: str)`: Удаляет файл. - -# Правила Создания Плана: -1. **Конкретика**: Каждый шаг должен быть одной конкретной, осмысленной операцией. Думай о том, как бы ты сам решал эту задачу, используя доступные инструменты. -2. **Эффективность**: Не создавай лишних шагов. Например, не нужно отдельно "проверять существование файла", если следующий шаг - его чтение. Инструмент `read_file_tool` сам сообщит об ошибке, если файла нет. -3. **Никаких фиктивных шагов**: Не создавай шаги, для которых нет инструментов. Например, "закрыть файл", "проверить синтаксис" или "запустить тесты" - это плохие шаги, так как у агента нет для них инструментов. -4. **Целостность**: Думай о всем процессе. Если один шаг генерирует код, следующий шаг должен использовать этот код (например, сохранить его в файл). - -# Пример: -### Цель: -"Проанализируй файл `main.py`, предложи улучшение и запиши новую версию в `main_v2.py`." - -### Хороший план (твой результат должен быть в таком формате): -[ - "Прочитать содержимое файла `main.py` для анализа.", - "Проанализировать прочитанный код и сгенерировать новую, улучшенную версию кода.", - "Записать сгенерированный улучшенный код в новый файл `main_v2.py`." -] - - -# Твоя Задача: -### Цель: -"{main_goal}" - -### План (только JSON): -""" - -class TaskDecomposer: - """ - Decomposes the main task into a list of subtasks using an LLM. - """ - def __init__(self, api_key: str, model: str = "gpt-4-turbo"): - self.client = OpenAI(api_key=api_key) - self.model = model - - def _parse_llm_response(self, content: Optional[str]) -> List[str]: - """Parses the LLM response more flexibly.""" - if not content: - logging.warning("LLM returned an empty response during decomposition.") - return [] - - try: - # Try to load as a full JSON - parsed_json = json.loads(content) - - if isinstance(parsed_json, list): - return [str(item) for item in parsed_json] - - # If it's a dictionary, look for a key containing a list - if isinstance(parsed_json, dict): - for key, value in parsed_json.items(): - if isinstance(value, list): - logging.info("Found plan in key '%s'", key) - return [str(item) for item in value] - - logging.warning("LLM response is not a list and does not contain a list. Response: %s", content) - return [] - - except json.JSONDecodeError: - # Sometimes the LLM returns a raw list without quotes, try to "fix" it - logging.warning("Failed to parse JSON. Response: %s", content) - # This is a very simplified attempt to extract strings, may not always work - cleaned_content = content.strip().replace("`", "") - if cleaned_content.startswith('[') and cleaned_content.endswith(']'): - try: - return json.loads(cleaned_content) - except json.JSONDecodeError: - pass - logging.error("Failed to extract plan from LLM response.") - return [] - - def generate_plan(self, goal: str) -> List[Dict[str, Any]]: - """ - Generates a step-by-step plan to achieve a goal, assigning executors. - """ - # Updated prompt with role descriptions and requirement to assign an executor - system_prompt = """ -You are an elite AI planner specializing in decomposing complex IT tasks for a team of AI agents. -Your task is to break down a high-level goal into a detailed, sequential plan in JSON format. - -# PROJECT STRUCTURE (CRITICALLY IMPORTANT): -- `app/`: All application logic is here. - - `app/agents/`: The agents' code. - - `app/agents/tools.py`: **File with tools used by the agents.** -- `tests/`: All tests are here. - - `tests/test_tools.py`: **Tests for the tools from `app/agents/tools.py`** - -# AVAILABLE AGENT TEAM: -1. **CodingAgent**: - - **Specialization**: Writing, reading, and modifying code. - - **Tools**: `list_files`, `read_file`, `edit_file`. -2. **TestingAgent**: - - **Specialization**: Testing code. - - **Tools**: `read_file`, `run_tests`. -3. **ReviewerAgent**: - - **Specialization**: Checking code quality, finding bugs and inconsistencies. - - **Tools**: `read_file`. -4. **EvaluatorAgent**: - - **Specialization**: Analyzing errors and creating bug reports. - - **Tools**: `read_file`. - - **IMPORTANT**: This agent is used by the Orchestrator automatically when tests fail. You do not need to assign it tasks in the initial plan. -5. **DefaultAgent**: - - **Specialization**: General tasks and analysis. - - **Tools**: `list_files`, `read_file`. - -# RULES FOR CREATING THE PLAN: -1. **Code Review for ALL code**: Immediately after EVERY step in which `CodingAgent` writes or modifies any code (be it main code, tests, documentation, etc.), a "Conduct Code Review" step assigned to `ReviewerAgent` MUST follow. -2. **Full Paths**: ALWAYS use full relative paths from the project root for any files. For example: `app/agents/tools.py`, `tests/test_tools.py`. -3. **Specificity**: Formulate tasks as specifically as possible. Instead of "write a function", write "add function X to file Y". -4. **Logic Before Tests**: The plan must first contain a step for writing or changing the **complete logic** of a function, and only then a step for writing tests. -5. **Focused Testing**: The testing step must specify a particular test file. In the task `description`, you MUST include an example of how to call the tool, for example: `Using 'run_tests', call it like this: run_tests_tool({'path': 'tests/test_tools.py'})`. -6. **Assignment**: For each step, specify the `assignee` (`CodingAgent`, `TestingAgent`, `DefaultAgent`). -7. **Format**: The output must be STRICTLY in the format of a JSON array of objects. - -# EXAMPLE: - -**Goal**: "Add a `multiply(a, b)` function to `tools.py` and cover it with tests." - -**Result (JSON):** -```json -[ - { - "step": 1, - "assignee": "CodingAgent", - "task": "Add 'multiply_tool' function to 'app/agents/tools.py'.", - "description": "Open the file 'app/agents/tools.py' and add a new Python function 'multiply' that takes two numerical arguments and returns their product. Use 'append' mode." - }, - { - "step": 2, - "assignee": "ReviewerAgent", - "task": "Conduct Code Review for 'multiply_tool' function in 'app/agents/tools.py'.", - "description": "Check the code for compliance with quality standards." - }, - { - "step": 3, - "assignee": "CodingAgent", - "task": "Create 'tests/test_tools.py' file with tests for 'multiply_tool'.", - "description": "In 'tests/test_tools.py', write a 'test_multiply' test using pytest that checks the correctness of the 'multiply' function." - }, - { - "step": 4, - "assignee": "ReviewerAgent", - "task": "Conduct Code Review for 'tests/test_tools.py' file.", - "description": "Check the test code for completeness, correctness, and style." - }, - { - "step": 5, - "assignee": "TestingAgent", - "task": "Run tests for 'tests/test_tools.py' file.", - "description": "Using the 'run_tests' tool, call it with the argument {'path': 'tests/test_tools.py'} to verify the work done." - } -] -``` -""" - user_prompt = f"My goal is: \"{goal}\". Please create a plan." - - try: - response = self.client.chat.completions.create( - model=self.model, - messages=[{"role": "system", "content": system_prompt}, {"role": "user", "content": user_prompt}], - ) - - plan_str = response.choices[0].message.content - - if plan_str.strip().startswith("```json"): - plan_str = plan_str.strip()[7:-3].strip() - - plan = json.loads(plan_str) - - for step in plan: - if 'assignee' not in step: - raise ValueError(f"Step {step.get('step')} in the plan is missing the required 'assignee' field") - - return plan - - except Exception as e: - logging.error("An error occurred during task decomposition: %s", e, exc_info=True) - return [] \ No newline at end of file diff --git a/app/orchestration/orchestrator.py b/app/orchestration/orchestrator.py index b83111d..3fc5f01 100644 --- a/app/orchestration/orchestrator.py +++ b/app/orchestration/orchestrator.py @@ -5,7 +5,7 @@ import json from typing import Dict, Any, List, Tuple, Optional from app.agents.agent import Agent -from app.orchestration.decomposer import TaskDecomposer +from app.agents.roles.task_decomposer import TaskDecomposer class Orchestrator: """ @@ -178,7 +178,7 @@ def run(self, goal: str): def _get_plan(self, goal: str) -> List[Dict[str, Any]]: """Gets the plan from the TaskDecomposer.""" logging.info("Getting plan from TaskDecomposer...") - plan = self.task_decomposer.generate_plan(goal) + plan = self.task_decomposer.get_plan(goal) if not plan: logging.error("Failed to create a plan. Orchestrator is stopping.") return [] diff --git a/configs/agent/coding_agent.yaml b/configs/agent/coding_agent.yaml new file mode 100644 index 0000000..c38ff9b --- /dev/null +++ b/configs/agent/coding_agent.yaml @@ -0,0 +1,12 @@ +# Configuration for CodingAgent + +name: "CodingAgent" +role: "Software Engineer" +goal: "Write, modify, and fix code according to the given task." +use_rag: true + +# RAG specific settings +rag_config: + top_k: 3 + filters: + tags: ["code-example", "style-guide"] \ No newline at end of file diff --git a/configs/agent/default_agent.yaml b/configs/agent/default_agent.yaml new file mode 100644 index 0000000..48c2350 --- /dev/null +++ b/configs/agent/default_agent.yaml @@ -0,0 +1,6 @@ +# Configuration for DefaultAgent + +name: "DefaultAgent" +role: "General Assistant" +goal: "Perform basic tasks like listing files when no other agent is assigned." +use_rag: false \ No newline at end of file diff --git a/configs/agent/evaluator_agent.yaml b/configs/agent/evaluator_agent.yaml new file mode 100644 index 0000000..3fc8174 --- /dev/null +++ b/configs/agent/evaluator_agent.yaml @@ -0,0 +1,13 @@ +# Configuration for EvaluatorAgent + +name: "EvaluatorAgent" +role: "Quality Assurance Analyst" +goal: "Analyze test results and create tasks for the CodingAgent to fix any issues." +use_rag: true + +# RAG specific settings +rag_config: + top_k: 3 + filters: + # Evaluator might benefit from error handling guides + tags: ["error-handling"] \ No newline at end of file diff --git a/configs/agent/reviewer_agent.yaml b/configs/agent/reviewer_agent.yaml new file mode 100644 index 0000000..3fa9aff --- /dev/null +++ b/configs/agent/reviewer_agent.yaml @@ -0,0 +1,12 @@ +# Configuration for ReviewerAgent + +name: "ReviewerAgent" +role: "Code Reviewer" +goal: "Ensure that the provided code is of high quality, free of errors, and adheres to best practices and internal coding standards." +use_rag: true + +# RAG specific settings +rag_config: + top_k: 5 + filters: + tags: ["style-guide"] \ No newline at end of file diff --git a/configs/agent/task_decomposer.yaml b/configs/agent/task_decomposer.yaml new file mode 100644 index 0000000..0200e66 --- /dev/null +++ b/configs/agent/task_decomposer.yaml @@ -0,0 +1,6 @@ +# Configuration for TaskDecomposer + +name: "TaskDecomposer" +role: "Project Manager" +goal: "Break down a high-level user goal into a clear, step-by-step plan of action." +use_rag: false \ No newline at end of file diff --git a/configs/agent/testing_agent.yaml b/configs/agent/testing_agent.yaml new file mode 100644 index 0000000..b1424c0 --- /dev/null +++ b/configs/agent/testing_agent.yaml @@ -0,0 +1,12 @@ +# Configuration for TestingAgent + +name: "TestingAgent" +role: "Quality Assurance Engineer" +goal: "Run tests to ensure the code is working correctly." +use_rag: true + +# RAG specific settings +rag_config: + top_k: 2 + filters: + tags: ["testing-guide"] \ No newline at end of file diff --git a/configs/config.yaml b/configs/config.yaml new file mode 100644 index 0000000..b8a805e --- /dev/null +++ b/configs/config.yaml @@ -0,0 +1,35 @@ +# Main application configuration + +# Default model for all agents, can be overridden in specific agent configs +default_model: "o4-mini" + +# API key for OpenAI, will be loaded from environment variables +# This is just a placeholder; the actual key is loaded from .env in the code +api_key: "${OPENAI_API_KEY}" + +# Agent configurations +# The keys here (e.g., 'CodingAgent') should match the names used in main.py +agents: + CodingAgent: + _target_: app.agents.roles.coding_agent.CodingAgent + config_path: "configs/agent/coding_agent.yaml" + + TestingAgent: + _target_: app.agents.roles.testing_agent.TestingAgent + config_path: "configs/agent/testing_agent.yaml" + + ReviewerAgent: + _target_: app.agents.roles.reviewer_agent.ReviewerAgent + config_path: "configs/agent/reviewer_agent.yaml" + + EvaluatorAgent: + _target_: app.agents.roles.evaluator_agent.EvaluatorAgent + config_path: "configs/agent/evaluator_agent.yaml" + + TaskDecomposer: + _target_: app.agents.roles.task_decomposer.TaskDecomposer + config_path: "configs/agent/task_decomposer.yaml" # We'll create this one too + + DefaultAgent: + _target_: app.agents.agent.Agent + config_path: "configs/agent/default_agent.yaml" \ No newline at end of file diff --git a/main.py b/main.py index 559c965..17cfcd0 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,7 @@ import logging import os +import yaml +from importlib import import_module from dotenv import load_dotenv from app.agents.agent import Agent from app.agents.tools import ( @@ -8,14 +10,18 @@ list_files_tool, list_files_tool_def, run_tests_tool, run_tests_tool_def, ) -from app.orchestration.decomposer import TaskDecomposer from app.orchestration.orchestrator import Orchestrator -from app.agents.roles import ( - CodingAgent, - ReviewerAgent, - TestingAgent, - EvaluatorAgent, -) + +def load_config(path: str) -> dict: + """Loads a YAML configuration file.""" + with open(path, 'r') as f: + return yaml.safe_load(f) + +def get_class_from_string(class_path: str): + """Dynamically imports a class from a string path.""" + module_path, class_name = class_path.rsplit('.', 1) + module = import_module(module_path) + return getattr(module, class_name) def main(): """Main function to run the AI agent.""" @@ -26,7 +32,7 @@ def main(): level=logging.INFO, format="%(asctime)s - %(levelname)s - [%(filename)s:%(lineno)d] - %(message)s", handlers=[ - logging.FileHandler("agent_activity.log"), + logging.FileHandler("agent_activity.log", mode='w'), logging.StreamHandler() ] ) @@ -38,81 +44,45 @@ def main(): return try: - # 1. Initialize the agent team - logging.info("Initializing agent team...") + logging.info("Loading configurations...") + main_config = load_config('configs/config.yaml') - common_kwargs = {"api_key": api_key, "model": "o4-mini"} - - coding_agent = CodingAgent( - name="CodingAgent", - use_rag=True, - rag_config={ - "top_k": 3, - "filters": {"tags": ["code-example", "style-guide"]} - }, - **common_kwargs - ) - coding_agent.add_tool(read_file_tool, read_file_tool_def) - coding_agent.add_tool(edit_file_tool, edit_file_tool_def) - coding_agent.add_tool(list_files_tool, list_files_tool_def) - - testing_agent = TestingAgent( - name="TestingAgent", - use_rag=True, - rag_config={ - "top_k": 2, - "filters": {"tags": ["testing-guide"]} - }, - **common_kwargs - ) - testing_agent.add_tool(read_file_tool, read_file_tool_def) - testing_agent.add_tool(run_tests_tool, run_tests_tool_def) + workers = {} + common_kwargs = {"api_key": api_key, "model": main_config.get('default_model', 'o4-mini')} - evaluator_agent = EvaluatorAgent( - name="EvaluatorAgent", - use_rag=True, - rag_config={ - "top_k": 4, - "filters": {"tags": ["error-analysis", "debugging"]} - }, - **common_kwargs - ) - evaluator_agent.add_tool(read_file_tool, read_file_tool_def) + for agent_name, agent_info in main_config['agents'].items(): + logging.info(f"Initializing {agent_name}...") + + # Load agent-specific config + agent_config_path = agent_info['config_path'] + agent_config = load_config(agent_config_path) - reviewer_agent = ReviewerAgent( - name="ReviewerAgent", - # This agent already has use_rag=True in its own __init__ - rag_config={ - "top_k": 5, - "filters": {"tags": ["style-guide"]} - }, - **common_kwargs - ) - reviewer_agent.add_tool(read_file_tool, read_file_tool_def) + # Get the agent class dynamically + agent_class = get_class_from_string(agent_info['_target_']) + + # Prepare initialization parameters + init_params = agent_config.copy() + init_params.update(common_kwargs) + + # Create agent instance + agent_instance = agent_class(**init_params) - workers = { - "CodingAgent": coding_agent, - "TestingAgent": testing_agent, - "EvaluatorAgent": evaluator_agent, - "ReviewerAgent": reviewer_agent, - } - - default_agent = Agent( - name="DefaultAgent", - role="General Assistant", - goal="Perform basic tasks like listing files when no other agent is assigned.", - **common_kwargs - ) - default_agent.add_tool(list_files_tool, list_files_tool_def) - default_agent.add_tool(read_file_tool, read_file_tool_def) - workers["DefaultAgent"] = default_agent + # Add tools based on agent name/role + if agent_name == "CodingAgent": + agent_instance.add_tool(read_file_tool, read_file_tool_def) + agent_instance.add_tool(edit_file_tool, edit_file_tool_def) + agent_instance.add_tool(list_files_tool, list_files_tool_def) + elif agent_name == "TestingAgent": + agent_instance.add_tool(read_file_tool, read_file_tool_def) + agent_instance.add_tool(run_tests_tool, run_tests_tool_def) + elif agent_name in ["ReviewerAgent", "EvaluatorAgent", "DefaultAgent"]: + agent_instance.add_tool(read_file_tool, read_file_tool_def) + + workers[agent_name] = agent_instance - # Planner - planner = TaskDecomposer(api_key=api_key, model="o4-mini") - # The orchestrator now manages the team orchestrator = Orchestrator( - task_decomposer=planner, + task_decomposer=workers.pop("TaskDecomposer"), worker_agents=workers ) diff --git a/requirements.txt b/requirements.txt index 3920c96..c1902a6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,4 +13,5 @@ torch pytest==8.3.2 pytest-mock==3.14.0 httpx==0.27.0 -rank-bm25 \ No newline at end of file +rank-bm25 +pyyaml \ No newline at end of file From d30be396094bac73c873959b7173f92a1489a390 Mon Sep 17 00:00:00 2001 From: Vyacheslav Artemyev Date: Wed, 11 Jun 2025 15:18:57 +0300 Subject: [PATCH 07/10] add cancellation --- main.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/main.py b/main.py index 17cfcd0..c3dc0c5 100644 --- a/main.py +++ b/main.py @@ -94,6 +94,9 @@ def main(): orchestrator.run(goal) + except KeyboardInterrupt: + print("\nOperation cancelled by user. Exiting...") + logging.info("User cancelled the operation.") except Exception as e: logging.critical("A critical error occurred: %s", e, exc_info=True) print(f"\nCritical Error: {e}") From 5962155ce10ab9c8bb57191d99e33703c00b5329 Mon Sep 17 00:00:00 2001 From: Vyacheslav Artemyev Date: Wed, 11 Jun 2025 15:27:54 +0300 Subject: [PATCH 08/10] refactor --- app/agents/roles/task_decomposer.py | 44 +++++++---- app/factory/agent_factory.py | 77 +++++++++++++++++++ main.py | 112 ++++++++++------------------ requirements.txt | 3 +- 4 files changed, 147 insertions(+), 89 deletions(-) create mode 100644 app/factory/agent_factory.py diff --git a/app/agents/roles/task_decomposer.py b/app/agents/roles/task_decomposer.py index aec223b..3c2626c 100644 --- a/app/agents/roles/task_decomposer.py +++ b/app/agents/roles/task_decomposer.py @@ -1,5 +1,7 @@ """Task Decomposer Agent.""" from app.agents.agent import Agent +import logging +import json class TaskDecomposer(Agent): """ @@ -65,17 +67,31 @@ def get_plan(self, goal: str) -> list: """ task_briefing = f"Create a step-by-step plan to achieve the following goal: {goal}" - # We directly call the chat completion and parse the result here - response_json = self.chat_completion( - messages=[ - {"role": "system", "content": self.system_prompt}, - {"role": "user", "content": task_briefing}, - ], - is_json=True, # Assuming a chat_completion method that can enforce JSON output - ) - - if response_json: - return response_json - else: - # Fallback or error handling - return [{"step": 1, "assignee": "DefaultAgent", "task": "Failed to create a plan."}] \ No newline at end of file + try: + logging.info("Requesting plan from OpenAI...") + response = self.client.chat.completions.create( + model=self.model, + messages=[ + {"role": "system", "content": self.system_prompt}, + {"role": "user", "content": task_briefing}, + ], + response_format={"type": "json_object"}, + ) + + response_content = response.choices[0].message.content + logging.info("Received raw plan: %s", response_content) + + # The response is a JSON string, so we need to parse it. + plan = json.loads(response_content) + # Sometimes the model returns a dictionary with a "plan" key + if isinstance(plan, dict) and "plan" in plan: + return plan["plan"] + return plan + + except json.JSONDecodeError as e: + logging.error(f"Failed to decode JSON from OpenAI response: {e}") + logging.error(f"Raw response was: {response_content}") + return [{"step": 1, "assignee": "DefaultAgent", "task": "Failed to create a valid plan due to JSON error."}] + except Exception as e: + logging.error(f"An unexpected error occurred while getting the plan: {e}", exc_info=True) + return [{"step": 1, "assignee": "DefaultAgent", "task": "Failed to create a plan due to an unexpected error."}] \ No newline at end of file diff --git a/app/factory/agent_factory.py b/app/factory/agent_factory.py new file mode 100644 index 0000000..4d09702 --- /dev/null +++ b/app/factory/agent_factory.py @@ -0,0 +1,77 @@ +""" +Factory for creating agent teams from configuration. +""" +import logging +import yaml +import os +from importlib import import_module +from typing import Dict, Tuple + +from app.agents.agent import Agent +from app.agents.roles.task_decomposer import TaskDecomposer +from app.agents.tools import ( + read_file_tool, read_file_tool_def, + edit_file_tool, edit_file_tool_def, + list_files_tool, list_files_tool_def, + run_tests_tool, run_tests_tool_def, +) + +def load_config(path: str) -> dict: + """Loads a YAML configuration file.""" + with open(path, 'r') as f: + return yaml.safe_load(f) + +def get_class_from_string(class_path: str): + """Dynamically imports a class from a string path.""" + module_path, class_name = class_path.rsplit('.', 1) + module = import_module(module_path) + return getattr(module, class_name) + +def create_agent_team(main_config_path: str) -> Tuple[TaskDecomposer, Dict[str, Agent]]: + """ + Creates and configures the agent team based on YAML files. + + Args: + main_config_path (str): The path to the main configuration file. + + Returns: + A tuple containing the TaskDecomposer and the dictionary of worker agents. + """ + logging.info("Loading configurations from %s...", main_config_path) + main_config = load_config(main_config_path) + + workers = {} + api_key = os.getenv("OPENAI_API_KEY") + common_kwargs = {"api_key": api_key, "model": main_config.get('default_model', 'o4-mini')} + + for agent_name, agent_info in main_config['agents'].items(): + logging.info(f"Initializing {agent_name}...") + + agent_config_path = agent_info['config_path'] + agent_config = load_config(agent_config_path) + + agent_class = get_class_from_string(agent_info['_target_']) + + init_params = agent_config.copy() + init_params.update(common_kwargs) + + agent_instance = agent_class(**init_params) + + # Add tools based on agent name + if agent_name == "CodingAgent": + agent_instance.add_tool(read_file_tool, read_file_tool_def) + agent_instance.add_tool(edit_file_tool, edit_file_tool_def) + agent_instance.add_tool(list_files_tool, list_files_tool_def) + elif agent_name == "TestingAgent": + agent_instance.add_tool(read_file_tool, read_file_tool_def) + agent_instance.add_tool(run_tests_tool, run_tests_tool_def) + elif agent_name in ["ReviewerAgent", "EvaluatorAgent"]: + agent_instance.add_tool(read_file_tool, read_file_tool_def) + elif agent_name == "DefaultAgent": + agent_instance.add_tool(list_files_tool, list_files_tool_def) + agent_instance.add_tool(read_file_tool, read_file_tool_def) + + workers[agent_name] = agent_instance + + task_decomposer = workers.pop("TaskDecomposer") + return task_decomposer, workers \ No newline at end of file diff --git a/main.py b/main.py index c3dc0c5..958f25f 100644 --- a/main.py +++ b/main.py @@ -1,33 +1,17 @@ import logging import os -import yaml -from importlib import import_module +import typer from dotenv import load_dotenv -from app.agents.agent import Agent -from app.agents.tools import ( - read_file_tool, read_file_tool_def, - edit_file_tool, edit_file_tool_def, - list_files_tool, list_files_tool_def, - run_tests_tool, run_tests_tool_def, -) -from app.orchestration.orchestrator import Orchestrator - -def load_config(path: str) -> dict: - """Loads a YAML configuration file.""" - with open(path, 'r') as f: - return yaml.safe_load(f) +from typing_extensions import Annotated -def get_class_from_string(class_path: str): - """Dynamically imports a class from a string path.""" - module_path, class_name = class_path.rsplit('.', 1) - module = import_module(module_path) - return getattr(module, class_name) +from app.factory.agent_factory import create_agent_team +from app.orchestration.orchestrator import Orchestrator -def main(): - """Main function to run the AI agent.""" - load_dotenv() +# Create a typer app +app = typer.Typer() - # Setup logging +def setup_logging(): + """Configures the logging for the application.""" logging.basicConfig( level=logging.INFO, format="%(asctime)s - %(levelname)s - [%(filename)s:%(lineno)d] - %(message)s", @@ -37,69 +21,49 @@ def main(): ] ) +@app.command() +def run( + goal: Annotated[str, typer.Argument(help="The high-level goal for the agent team to accomplish.")], + config: Annotated[str, typer.Option(help="Path to the main configuration file.")] = "configs/config.yaml" +): + """ + Runs the multi-agent system to accomplish a given goal. + """ + load_dotenv() + setup_logging() + api_key = os.getenv("OPENAI_API_KEY") if not api_key: logging.error("OPENAI_API_KEY not found in .env file.") - print("Error: Please make sure your .env file contains OPENAI_API_KEY.") - return + typer.echo("Error: Please make sure your .env file contains OPENAI_API_KEY.") + raise typer.Exit(code=1) try: - logging.info("Loading configurations...") - main_config = load_config('configs/config.yaml') - - workers = {} - common_kwargs = {"api_key": api_key, "model": main_config.get('default_model', 'o4-mini')} + # Create the agent team using the factory + task_decomposer, worker_agents = create_agent_team(config) - for agent_name, agent_info in main_config['agents'].items(): - logging.info(f"Initializing {agent_name}...") - - # Load agent-specific config - agent_config_path = agent_info['config_path'] - agent_config = load_config(agent_config_path) - - # Get the agent class dynamically - agent_class = get_class_from_string(agent_info['_target_']) - - # Prepare initialization parameters - init_params = agent_config.copy() - init_params.update(common_kwargs) - - # Create agent instance - agent_instance = agent_class(**init_params) - - # Add tools based on agent name/role - if agent_name == "CodingAgent": - agent_instance.add_tool(read_file_tool, read_file_tool_def) - agent_instance.add_tool(edit_file_tool, edit_file_tool_def) - agent_instance.add_tool(list_files_tool, list_files_tool_def) - elif agent_name == "TestingAgent": - agent_instance.add_tool(read_file_tool, read_file_tool_def) - agent_instance.add_tool(run_tests_tool, run_tests_tool_def) - elif agent_name in ["ReviewerAgent", "EvaluatorAgent", "DefaultAgent"]: - agent_instance.add_tool(read_file_tool, read_file_tool_def) - - workers[agent_name] = agent_instance - - # The orchestrator now manages the team + # Initialize and run the orchestrator orchestrator = Orchestrator( - task_decomposer=workers.pop("TaskDecomposer"), - worker_agents=workers + task_decomposer=task_decomposer, + worker_agents=worker_agents ) - - # 2. Request the goal and run the orchestrator - goal = input("Please enter your high-level goal: ") - if not goal: - print("Goal cannot be empty.") - return - + + typer.echo(f"🚀 Starting agent team to accomplish goal: {goal}") orchestrator.run(goal) + typer.echo("✅ Goal accomplished successfully!") + except FileNotFoundError as e: + logging.error(f"Configuration file not found: {e}") + typer.echo(f"Error: Configuration file not found at '{config}'. Please check the path.") + raise typer.Exit(code=1) except KeyboardInterrupt: - print("\nOperation cancelled by user. Exiting...") + typer.echo("\nOperation cancelled by user. Exiting...") logging.info("User cancelled the operation.") + raise typer.Exit() except Exception as e: logging.critical("A critical error occurred: %s", e, exc_info=True) - print(f"\nCritical Error: {e}") + typer.echo(f"\n🚨 Critical Error: {e}") + raise typer.Exit(code=1) if __name__ == "__main__": - main() \ No newline at end of file + app() \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index c1902a6..3bf24f0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -14,4 +14,5 @@ pytest==8.3.2 pytest-mock==3.14.0 httpx==0.27.0 rank-bm25 -pyyaml \ No newline at end of file +pyyaml +typer[all] \ No newline at end of file From 9817660d0fd27692d2d7db53671364affec732eb Mon Sep 17 00:00:00 2001 From: Vyacheslav Artemyev Date: Wed, 11 Jun 2025 15:49:13 +0300 Subject: [PATCH 09/10] refactor agents --- app/agents/agent.py | 8 +++++ app/agents/roles/coding_agent.py | 10 ++++++ app/agents/roles/evaluator_agent.py | 6 ++++ app/agents/roles/reviewer_agent.py | 6 ++++ app/agents/roles/testing_agent.py | 8 +++++ app/factory/agent_factory.py | 21 ++--------- tests/agents/test_reviewer_agent.py | 54 +++++++++++++++++++++-------- tests/rag/test_retriever.py | 8 +++++ 8 files changed, 87 insertions(+), 34 deletions(-) diff --git a/app/agents/agent.py b/app/agents/agent.py index 6df0167..fddd0af 100644 --- a/app/agents/agent.py +++ b/app/agents/agent.py @@ -12,6 +12,10 @@ import inspect from app.rag.retriever import KnowledgeRetriever +from app.agents.tools import ( + read_file_tool, read_file_tool_def, + list_files_tool, list_files_tool_def, +) # Новый, улучшенный системный промпт, превращающий агента в программиста. SYSTEM_PROMPT = """ @@ -72,6 +76,10 @@ def __init__( self.max_iterations = max_iterations self.system_prompt = "Ты — универсальный AI-ассистент." + # Add default tools + self.add_tool(read_file_tool, read_file_tool_def) + self.add_tool(list_files_tool, list_files_tool_def) + # RAG specific attributes self.use_rag = use_rag self.rag_config = rag_config or {} diff --git a/app/agents/roles/coding_agent.py b/app/agents/roles/coding_agent.py index 3476c42..423f205 100644 --- a/app/agents/roles/coding_agent.py +++ b/app/agents/roles/coding_agent.py @@ -1,6 +1,11 @@ """Coding Agent.""" from typing import List, Dict from app.agents.agent import Agent +from app.agents.tools import ( + read_file_tool, read_file_tool_def, + edit_file_tool, edit_file_tool_def, + list_files_tool, list_files_tool_def, +) class CodingAgent(Agent): @@ -13,6 +18,11 @@ def __init__(self, name: str, role: str, goal: str, **kwargs): goal=goal, **kwargs, ) + # Self-register tools + self.add_tool(read_file_tool, read_file_tool_def) + self.add_tool(edit_file_tool, edit_file_tool_def) + self.add_tool(list_files_tool, list_files_tool_def) + self.system_prompt = ( "You are a CodingAgent, an elite AI developer. Your task is to write, modify, and fix code." "You will be provided with the full plan, the history of previous steps, and your current task." diff --git a/app/agents/roles/evaluator_agent.py b/app/agents/roles/evaluator_agent.py index ea5e4e2..6725bf8 100644 --- a/app/agents/roles/evaluator_agent.py +++ b/app/agents/roles/evaluator_agent.py @@ -1,5 +1,8 @@ """Evaluator Agent.""" from app.agents.agent import Agent +from app.agents.tools import ( + read_file_tool, read_file_tool_def, +) class EvaluatorAgent(Agent): """An agent that analyzes errors and results.""" @@ -10,6 +13,9 @@ def __init__(self, name: str, role: str, goal: str, **kwargs): goal=goal, **kwargs, ) + # Self-register tools + self.add_tool(read_file_tool, read_file_tool_def) + self.system_prompt = """ You are EvaluatorAgent, an experienced QA engineer and systems analyst. Your primary task is to analyze the log from failed pytest runs and formulate a clear, concise, and single task for the CodingAgent to fix the code. diff --git a/app/agents/roles/reviewer_agent.py b/app/agents/roles/reviewer_agent.py index c83d1dd..9c41480 100644 --- a/app/agents/roles/reviewer_agent.py +++ b/app/agents/roles/reviewer_agent.py @@ -1,5 +1,8 @@ """Reviewer Agent.""" from app.agents.agent import Agent +from app.agents.tools import ( + read_file_tool, read_file_tool_def, +) class ReviewerAgent(Agent): """An agent specializing in strict Code Review.""" @@ -10,6 +13,9 @@ def __init__(self, name: str, role: str, goal: str, **kwargs): goal=goal, **kwargs, ) + # Self-register tools + self.add_tool(read_file_tool, read_file_tool_def) + self.system_prompt = ( "You are a Senior Software Engineer acting as a code reviewer. " "Your task is to provide a thorough review of the code based on the " diff --git a/app/agents/roles/testing_agent.py b/app/agents/roles/testing_agent.py index 0abc5d1..6a01ba5 100644 --- a/app/agents/roles/testing_agent.py +++ b/app/agents/roles/testing_agent.py @@ -1,5 +1,9 @@ """Testing Agent.""" from app.agents.agent import Agent +from app.agents.tools import ( + read_file_tool, read_file_tool_def, + run_tests_tool, run_tests_tool_def, +) class TestingAgent(Agent): """An agent specializing in running tests.""" @@ -10,6 +14,10 @@ def __init__(self, name: str, role: str, goal: str, **kwargs): goal=goal, **kwargs, ) + # Self-register tools + self.add_tool(read_file_tool, read_file_tool_def) + self.add_tool(run_tests_tool, run_tests_tool_def) + self.system_prompt = """ You are TestingAgent, an automated test-running robot. Your sole task is to call the `run_tests_tool` with the correct path to the tests. diff --git a/app/factory/agent_factory.py b/app/factory/agent_factory.py index 4d09702..d3e956c 100644 --- a/app/factory/agent_factory.py +++ b/app/factory/agent_factory.py @@ -9,12 +9,6 @@ from app.agents.agent import Agent from app.agents.roles.task_decomposer import TaskDecomposer -from app.agents.tools import ( - read_file_tool, read_file_tool_def, - edit_file_tool, edit_file_tool_def, - list_files_tool, list_files_tool_def, - run_tests_tool, run_tests_tool_def, -) def load_config(path: str) -> dict: """Loads a YAML configuration file.""" @@ -57,19 +51,8 @@ def create_agent_team(main_config_path: str) -> Tuple[TaskDecomposer, Dict[str, agent_instance = agent_class(**init_params) - # Add tools based on agent name - if agent_name == "CodingAgent": - agent_instance.add_tool(read_file_tool, read_file_tool_def) - agent_instance.add_tool(edit_file_tool, edit_file_tool_def) - agent_instance.add_tool(list_files_tool, list_files_tool_def) - elif agent_name == "TestingAgent": - agent_instance.add_tool(read_file_tool, read_file_tool_def) - agent_instance.add_tool(run_tests_tool, run_tests_tool_def) - elif agent_name in ["ReviewerAgent", "EvaluatorAgent"]: - agent_instance.add_tool(read_file_tool, read_file_tool_def) - elif agent_name == "DefaultAgent": - agent_instance.add_tool(list_files_tool, list_files_tool_def) - agent_instance.add_tool(read_file_tool, read_file_tool_def) + # The logic for adding tools has been moved to the agent classes themselves. + # The factory is now cleaner and only responsible for instantiation. workers[agent_name] = agent_instance diff --git a/tests/agents/test_reviewer_agent.py b/tests/agents/test_reviewer_agent.py index d537d1d..3347f02 100644 --- a/tests/agents/test_reviewer_agent.py +++ b/tests/agents/test_reviewer_agent.py @@ -9,7 +9,7 @@ def mock_retriever_fixture(): """Fixture to create a mock KnowledgeRetriever.""" # Создаем мок для всего класса KnowledgeRetriever - with patch('app.agents.roles.reviewer_agent.KnowledgeRetriever') as mock: + with patch('app.agents.agent.KnowledgeRetriever') as mock: # Настраиваем мок-экземпляр, который будет возвращаться при создании объекта mock_instance = MagicMock() # Настраиваем метод retrieve, чтобы он возвращал предсказуемые данные @@ -24,29 +24,53 @@ def mock_retriever_fixture(): mock.return_value = mock_instance yield mock_instance -def test_reviewer_agent_uses_rag_context(mock_retriever_fixture): +def test_reviewer_agent_uses_rag_context(mock_retriever_fixture, mocker): """ Tests that the ReviewerAgent correctly uses the context from the KnowledgeRetriever. """ # Arrange - # Инициализируем агента. Благодаря нашему фикстуре, self.retriever будет моком. - agent = ReviewerAgent(name="TestReviewer", api_key="test_key") + agent = ReviewerAgent( + name="TestReviewer", + role="Test Reviewer", + goal="Review code", + use_rag=True, + api_key="fake_api_key", + ) code_to_review = "my_variable = 1" + # Mock the model's response to stop the execution loop after one turn + mocker.patch.object(agent.client.chat.completions, 'create', return_value=MagicMock()) + # Act - # Получаем системный промпт, который должен быть обогащен контекстом - system_prompt = agent._get_system_prompt(code=code_to_review) + # Запускаем execute_task, который теперь содержит логику обогащения промпта + agent.execute_task(briefing=code_to_review) # Assert - # 1. Проверяем, что метод retrieve был вызван с правильным кодом - mock_retriever_fixture.retrieve.assert_called_once_with(query=code_to_review, top_k=3) + # 1. Проверяем, что метод retrieve был вызван с правильным запросом + # _create_rag_query вернет сам брифинг, если не найдет шаблон задачи + mock_retriever_fixture.retrieve.assert_called_once_with(query=code_to_review, top_k=3, filters=None) - # 2. Проверяем, что информация из мока попала в системный промпт - assert "RELEVANT KNOWLEDGE" in system_prompt - assert "Всегда используйте snake_case для переменных." in system_prompt - assert "python_style_guide.md" in system_prompt + # 2. Проверяем, что информация из мока попала в системный промпт в истории диалога + assert len(agent.conversation_history) > 0 + system_prompt_from_history = agent.conversation_history[0]['content'] + assert "RELEVANT KNOWLEDGE" in system_prompt_from_history + assert "Всегда используйте snake_case для переменных." in system_prompt_from_history + assert "python_style_guide.md" in system_prompt_from_history - # 3. Проверяем, что если ретривер ничего не нашел, используется дефолтный текст + # 3. Проверяем, что если ретривер ничего не нашел, секция RELEVANT KNOWLEDGE отсутствует mock_retriever_fixture.retrieve.return_value = [] - system_prompt_no_knowledge = agent._get_system_prompt(code=code_to_review) - assert "No specific internal standards found" in system_prompt_no_knowledge \ No newline at end of file + mock_retriever_fixture.retrieve.reset_mock() # Сбрасываем мок + + agent_no_knowledge = ReviewerAgent( + name="TestReviewer2", + role="Test Reviewer", + goal="Review code", + use_rag=True, + api_key="fake_api_key", + ) + mocker.patch.object(agent_no_knowledge.client.chat.completions, 'create', return_value=MagicMock()) + + agent_no_knowledge.execute_task(briefing=code_to_review) + system_prompt_no_knowledge = agent_no_knowledge.conversation_history[0]['content'] + assert "RELEVANT KNOWLEDGE" not in system_prompt_no_knowledge + assert "You are a Senior Software Engineer" in system_prompt_no_knowledge \ No newline at end of file diff --git a/tests/rag/test_retriever.py b/tests/rag/test_retriever.py index 7335e8f..a51c7ba 100644 --- a/tests/rag/test_retriever.py +++ b/tests/rag/test_retriever.py @@ -2,6 +2,7 @@ import numpy as np import pytest from unittest.mock import patch, MagicMock +from rank_bm25 import BM25Okapi from app.rag.retriever import KnowledgeRetriever @@ -29,6 +30,10 @@ def mock_retriever(mocker) -> KnowledgeRetriever: ] retriever.embeddings = np.random.rand(4, 1536) # 4 чанка, 1536 измерений retriever.client = MagicMock() # Нам не нужен клиент, так как мы мокаем cosine_similarity + + # 4. Инициализируем BM25, как это делается в методе load() + tokenized_corpus = [chunk["text"].split(" ") for chunk in retriever.chunks] + retriever.bm25 = BM25Okapi(tokenized_corpus) return retriever @@ -60,6 +65,9 @@ def test_retriever_ranking_logic( 'app.rag.retriever.cosine_similarity', return_value=np.array([mock_similarities]) ) + # Мокаем BM25 так, чтобы он не возвращал результатов и не влиял на фьюжн + mocker.patch.object(mock_retriever, '_keyword_search', return_value=[]) + # Так как `retrieve` вызывает `_get_embedding`, который вызывает `client`, # нам достаточно замокать вызов клиента. mock_retriever.client.embeddings.create.return_value = MagicMock( From 97ba8c15adbdd049310ae7e45777efc9b4b11463 Mon Sep 17 00:00:00 2001 From: Vyacheslav Artemyev Date: Wed, 11 Jun 2025 15:52:42 +0300 Subject: [PATCH 10/10] fix readme.md --- README.md | 168 ++++++++++++++++++++++++++---------------------------- 1 file changed, 81 insertions(+), 87 deletions(-) diff --git a/README.md b/README.md index c9a9f3f..b9e5ef3 100644 --- a/README.md +++ b/README.md @@ -1,138 +1,132 @@ -# 🤖 Autonomous Multi-Agent System for Software Development +# 🤖 PyAgentX: Autonomous Multi-Agent System for Software Development -**Autonomous Multi-Agent System** — это продвинутая система на базе LLM, предназначенная для автоматизации полного цикла разработки программного обеспечения. Она использует команду специализированных ИИ-агентов, которые совместно работают над решением задач: от декомпозиции высокоуровневых целей до написания, проверки, тестирования и оценки кода. +**PyAgentX** — это продвинутая система на базе LLM, предназначенная для автоматизации полного цикла разработки программного обеспечения. Она использует команду специализированных ИИ-агентов, которые совместно работают над решением задач: от декомпозиции высокоуровневых целей до написания, проверки, тестирования и оценки кода. -Ключевой особенностью системы является **интеграция с корпоративной базой знаний (RAG)**, что позволяет агентам генерировать код, соответствующий внутренним стандартам, архитектурным паттернам и лучшим практикам вашей команды. +Ключевой особенностью системы является **гибридная RAG-система**, которая совмещает семантический и ключевой поиск по базе знаний. Это позволяет агентам генерировать код, соответствующий внутренним стандартам, архитектурным паттернам и лучшим практикам вашей команды. -## 🚀 Основные возможности +## 🚀 Ключевые возможности -- **Многоагентная архитектура:** Система включает в себя различных агентов и компоненты: - - **`TaskDecomposer`**: Планировщик, который анализирует высокоуровневую цель и разбивает ее на выполнимые подзадачи. - - **`CodingAgent`**: Пишет код для реализации конкретной функциональности. - - **`ReviewerAgent`**: Проверяет сгенерированный код на соответствие стандартам и наличие ошибок, **используя данные из базы знаний (RAG)**. - - **`TestingAgent`**: Запускает тесты для проверки кода (в будущем будет создавать их). - - **`EvaluatorAgent`**: Оценивает общее качество решения и его соответствие первоначальной цели. - - **`Orchestrator`**: Управляет потоком задач между агентами, обеспечивая их слаженную работу. -- **Интеграция с Базой Знаний (RAG):** Агенты используют Retrieval-Augmented Generation для доступа к внутренней документации, гайдам по стилю и примерам кода, что обеспечивает консистентность и высокое качество результата. -- **Надежное тестирование:** Встроенный набор модульных тестов с использованием моков позволяет проверять логику, не затрагивая реальные API. -- **Работа с файловой системой:** Агенты могут читать, создавать и редактировать файлы прямо в вашем проекте. -- **Модульность и расширяемость:** Легко добавляйте новых агентов и инструменты для расширения функциональности. -- **Простота настройки:** Использует `.env` для конфигурации и `requirements.txt` для зависимостей. +- **Динамическая команда агентов**: Система гибко настраивается через YAML-конфиги. Вы можете легко добавлять, удалять или изменять роли агентов. +- **Продвинутый RAG с гибридным поиском**: Использует комбинацию векторного поиска (семантика) и BM25 (ключевые слова) с Reciprocal Rank Fusion для максимально релевантных результатов из базы знаний. +- **Динамическая конфигурация**: Все параметры системы, от моделей LLM до настроек RAG для каждого агента, задаются в YAML-файлах в директории `configs/`. +- **Интерфейс командной строки (CLI)**: Удобный запуск и управление через `main.py` с использованием `typer`. +- **Самостоятельная регистрация инструментов**: Агенты сами определяют и регистрируют свой инструментарий, что делает систему более модульной и инкапсулированной. +- **Работа с файловой системой**: Агенты могут читать, создавать и редактировать файлы прямо в вашем проекте. +- **Надежное тестирование**: Встроенный набор модульных тестов (`pytest`) с использованием моков позволяет проверять логику, не затрагивая реальные API. -## 🧠 Архитектура с Базой Знаний (RAG) +## 🏛️ Архитектура -Система использует подход Retrieval-Augmented Generation (RAG) для "заземления" ответов и действий агентов на основе релевантного контекста из вашей собственной базы знаний. +Система построена на модульных принципах, где каждый компонент имеет четкую зону ответственности. -Это решает ключевую проблему LLM — отсутствие знаний о специфике вашего проекта. - -### Как это работает? - -1. **Наполнение Базы Знаний:** Вы добавляете внутреннюю документацию (стандарты кодирования, архитектурные гайды, примеры кода в формате `.md`) в папку `knowledge/`. -2. **Индексация:** Вы запускаете скрипт `scripts/build_knowledge_base.py`. Он обрабатывает документы, разбивает их на смысловые фрагменты (чанки), векторизует с помощью OpenAI API и сохраняет в локальную векторную базу данных в папке `db/`. -3. **Извлечение контекста:** Когда агент (например, `ReviewerAgent`) получает задачу, он сначала делает семантический поиск по базе знаний, чтобы найти наиболее релевантную информацию. -4. **Обогащение промпта:** Найденные фрагменты документации добавляются в системный промпт агента. -5. **Генерация с контекстом:** Агент выполняет свою задачу (например, пишет ревью на код), основываясь не только на своих общих знаниях, но и на предоставленных ему внутренних правилах и стандартах. +``` +PyAgentX/ +├── app/ +│ ├── agents/ # Логика и роли специализированных агентов +│ │ ├── roles/ # Классы для конкретных ролей (Coding, Testing, etc.) +│ │ ├── agent.py # Базовый класс Agent с основной логикой +│ │ └── tools.py # Определения инструментов (read_file, edit_file) +│ ├── factory/ # Фабрика для создания агентов +│ │ └── agent_factory.py +│ └── rag/ # Логика для Retrieval-Augmented Generation +│ └── retriever.py # Гибридный ретривер (Vector + BM25) +├── configs/ # Конфигурационные файлы YAML +│ ├── agents/ # Конфиги для каждого агента +│ └── config.yaml # Главный конфигурационный файл +├── db/ # Локальная база данных (создается автоматически) +│ ├── chunks.json # Текстовые чанки +│ ├── embeddings.npy # Векторные эмбеддинги +│ └── bm25_index.pkl # Индекс BM25 для ключевого поиска +├── knowledge/ # Исходники для базы знаний (документация в .md) +├── scripts/ # Вспомогательные скрипты +│ └── build_knowledge_base.py +├── tests/ # Модульные тесты pytest +├── .env # Файл для секретных ключей +├── main.py # Точка входа в приложение (CLI на Typer) +├── poetry.lock # Файл зависимостей Poetry +├── pyproject.toml # Конфигурация проекта и зависимостей +└── README.md +``` -Этот механизм гарантирует, что генерируемый код и ревью будут соответствовать принятым в вашей команде практикам. +**Логика работы:** +1. Пользователь запускает `main.py`, передавая задачу через CLI. +2. `agent_factory` читает `configs/config.yaml` и конфигурации агентов, создавая команду. +3. `TaskDecomposer` получает задачу и разбивает ее на последовательность шагов. +4. `Orchestrator` (в `main.py`) последовательно передает каждый шаг соответствующему агенту. +5. Каждый агент перед выполнением задачи может обратиться к `KnowledgeRetriever` для получения релевантного контекста из базы знаний. +6. Агент выполняет шаг, используя свои инструменты (`tools.py`). +7. Цикл повторяется, пока все шаги не будут выполнены. ## 🛠️ Быстрый старт ### 1. Клонирование репозитория ```bash -git clone -cd <название-папки-проекта> +git clone https://github.com/your-username/PyAgentX.git +cd PyAgentX ``` ### 2. Настройка окружения -- Создайте и активируйте виртуальное окружение: +Проект использует [Poetry](https://python-poetry.org/) для управления зависимостями. + +- Установите Poetry (если не установлен): ```bash - python -m venv .venv - source .venv/bin/activate - # Для Windows: .venv\Scripts\activate + pip install poetry ``` -- Установите зависимости: +- Создайте виртуальное окружение и установите зависимости: ```bash - pip install -r requirements.txt + poetry install ``` ### 3. Конфигурация -- Создайте файл `.env` в корне проекта. -- Откройте файл `.env` и вставьте ваш ключ OpenAI: +- Создайте файл `.env` в корне проекта, скопировав `.env.example` (если он есть) или создав новый. +- Добавьте ваш ключ OpenAI: ``` OPENAI_API_KEY="sk-..." ``` ### 4. Создание базы знаний -Перед первым запуском необходимо проиндексировать вашу документацию. +Перед первым запуском необходимо проиндексировать вашу документацию из папки `knowledge/`. + ```bash -python scripts/build_knowledge_base.py +poetry run python -m scripts.build_knowledge_base ``` Этот шаг нужно повторять только при изменении файлов в папке `knowledge/`. ### 5. Запуск -Запустите главный скрипт: +Запустите главный скрипт, передав ему задачу. + ```bash -python main.py +poetry run python -m main --briefing "Создай новую функцию в 'app/utils.py' для сложения двух чисел и напиши на нее тест в 'tests/test_utils.py'." ``` -После запуска система попросит вас ввести высокоуровневую цель. +Система начнет выполнение, и вы увидите логи работы агентов в консоли. -## ✅ Тестирование +## 🧩 Расширение системы -Проект содержит набор модульных тестов для проверки ключевой логики без реальных вызовов к API OpenAI. Это достигается за счет использования **мок-объектов**. +### Добавление нового агента -Для запуска тестов выполните команду: -```bash -pytest -v -``` -Все тесты должны пройти успешно, что гарантирует работоспособность `ReviewerAgent` и `KnowledgeRetriever`. +1. Создайте новый класс агента в `app/agents/roles/`, унаследовав его от `Agent`. +2. В `__init__` нового агента зарегистрируйте необходимые ему инструменты с помощью `self.add_tool()`. +3. Создайте для него YAML-конфиг в `configs/agents/`. +4. Добавьте нового агента в главный `configs/config.yaml`. -## 🏛️ Архитектура проекта +### Добавление нового инструмента -``` -agent-ai/ -├── app/ -│ ├── agents/ # Логика и роли специализированных агентов -│ │ ├── roles/ -│ │ │ ├── reviewer_agent.py -│ │ │ └── ... -│ │ ├── agent.py # Базовый класс агента -│ │ └── tools.py # Инструменты, доступные агентам -│ ├── orchestration/ # Управление взаимодействием агентов -│ │ └── orchestrator.py -│ └── rag/ # Логика для Retrieval-Augmented Generation -│ └── retriever.py -├── db/ # Локальная векторная база данных (создается автоматически) -│ ├── chunks.json -│ └── embeddings.npy -├── knowledge/ # Папка для внутренней документации (источник для RAG) -│ └── ... -├── scripts/ # Вспомогательные скрипты -│ └── build_knowledge_base.py -├── tests/ # Модульные тесты -│ ├── agents/ -│ │ └── test_reviewer_agent.py -│ └── rag/ -│ └── test_retriever.py -├── .env # Файл для секретных ключей (необходим для запуска) -├── main.py # Главная точка входа в приложение -├── requirements.txt # Список зависимостей Python -└── README.md -``` +1. Определите функцию-инструмент и ее JSON-схему в `app/agents/tools.py`. +2. Добавьте вызов `self.add_tool()` в `__init__` того агента, который должен использовать этот инструмент. + +### Добавление знаний -## 🧩 Как добавить новый инструмент +Просто добавьте новый `.md` файл в папку `knowledge/` и перезапустите скрипт `scripts/build_knowledge_base.py`. -1. **Определите функцию:** Откройте `app/agents/tools.py` и создайте новую Python-функцию, которая будет выполнять нужное действие (например, `run_command_tool`). -2. **Создайте определение инструмента (`Tool`):** В том же файле создайте словарь (`tool definition`), описывающий ваш инструмент (имя, описание, схема аргументов). -3. **Зарегистрируйте инструмент:** Откройте `main.py`, импортируйте вашу функцию и ее определение, а затем добавьте их к нужному агенту с помощью метода `add_tool()`. +## 💡 Следующий шаг: `PROJECT_CONTEXT.md` -Готово! Агент автоматически сможет использовать ваш новый инструмент. +Для дальнейшего улучшения согласованности действий агентов планируется внедрение файла `PROJECT_CONTEXT.md`. Это будет "конституция" проекта, содержащая глобальные правила и стандарты, которая будет автоматически добавляться в системный промпт каждого агента. ## 📄 Лицензия -Этот проект распространяется под лицензией MIT. Подробности смотрите в файле `LICENSE`. \ No newline at end of file +Этот проект распространяется под лицензией MIT. \ No newline at end of file