diff --git a/.github/workflows/link_check.yml b/.github/workflows/link_check.yml new file mode 100644 index 000000000..d74d4eb4f --- /dev/null +++ b/.github/workflows/link_check.yml @@ -0,0 +1,47 @@ +name: Check Links + +on: + pull_request: + branches: + - main + push: + branches: + - main + schedule: + - cron: "0 5 * * *" + workflow_dispatch: + +env: + POETRY_VERSION: "1.7.1" + +jobs: + markdown-link-check: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Check links in Markdown files + uses: gaurav-nelson/github-action-markdown-link-check@v1 + + notebook-link-check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python 3.x + Poetry ${{ env.POETRY_VERSION }} + uses: "./.github/actions/poetry_setup" + with: + python-version: "3.x" + poetry-version: ${{ env.POETRY_VERSION }} + cache-key: core + + - name: Install dependencies + shell: bash + run: | + python -m pip install --upgrade pip + poetry install --with test + poetry pip install -U pytest pytest-check-links langsmith langchain GitPython + - name: Check links in notebooks + env: + LANGCHAIN_API_KEY: test + shell: bash + run: poetry run pytest -o python_files=non_python_only --check-links --ignore="*.py" -k .ipynb --check-links-ignore "https://(api|web)\.smith\.langchain\.com/.*" . diff --git a/.gitignore b/.gitignore index 1ecf510a6..214a9de48 100644 --- a/.gitignore +++ b/.gitignore @@ -171,3 +171,7 @@ docs/api_reference/*/ docs/docs_skeleton/build docs/docs_skeleton/node_modules docs/docs_skeleton/yarn.lock + +# Any new jupyter notebooks +# not intended for the repo +Untitled*.ipynb diff --git a/Makefile b/Makefile index 29a0f5c91..418703a74 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ test: poetry run pytest test_watch: - poetry run ptw --snapshot-update --now . -- -vv -x tests + poetry run ptw . ###################### # LINTING AND FORMATTING diff --git a/README.md b/README.md index 173831445..e5f7f2164 100644 --- a/README.md +++ b/README.md @@ -135,7 +135,7 @@ The path that is taken is not known until that node is run (the LLM decides). 1. Conditional Edge: after the agent is called, we should either: a. If the agent said to take an action, then the function to invoke tools should be called - + b. If the agent said that it was finished, then it should finish 2. Normal Edge: after the tools are invoked, it should always go back to the agent to decide what to do next @@ -454,6 +454,43 @@ We also have a lot of examples highlighting how to slightly modify the base chat - [Force calling a tool first](https://github.com/langchain-ai/langgraph/blob/main/examples/agent_executor/force-calling-a-tool-first.ipynb): How to always call a specific tool first - [Managing agent steps](https://github.com/langchain-ai/langgraph/blob/main/examples/agent_executor/managing-agent-steps.ipynb): How to more explicitly manage intermediate steps that an agent takes +### Async + +If you are running LangGraph in async workflows, you may want to create the nodes to be async by default. +For a walkthrough on how to do that, see [this documentation](https://github.com/langchain-ai/langgraph/blob/main/examples/async.ipynb) + +### Streaming Tokens + +Sometimes language models take a while to respond and you may want to stream tokens to end users. +For a guide on how to do this, see [this documentation](https://github.com/langchain-ai/langgraph/blob/main/examples/streaming-tokens.ipynb) + +### Persistence + +LangGraph comes with built-in persistence, allowing you to save the state of the graph at point and resume from there. +For a walkthrough on how to do that, see [this documentation](https://github.com/langchain-ai/langgraph/blob/main/examples/persistence.ipynb) + +### Human-in-the-loop + +LangGraph comes with built-in support for human-in-the-loop workflows. This is useful when you want to have a human review the current state before proceeding to a particular node. +For a walkthrough on how to do that, see [this documentation](https://github.com/langchain-ai/langgraph/blob/main/examples/human-in-the-loop.ipynb) + +### Planning Agent Examples + +The following notebooks implement agent architectures prototypical of the "plan-and-execute" style, where an LLM planner decomposes a user request into a program, an executor executes the program, and an LLM synthesizes a response (and/or dynamically replans) based on the program outputs. + +- [Plan-and-execute](https://github.com/langchain-ai/langgraph/blob/main/examples/plan-and-execute/plan-and-execute.ipynb): a simple agent with a **planner** that generates a multi-step task list, an **executor** that invokes the tools in the plan, and a **replanner** that responds or generates an updated plan. Based on the [Plan-and-solve](https://arxiv.org/abs/2305.04091) paper by Wang, et. al. +- [Reasoning without Observation](https://github.com/langchain-ai/langgraph/blob/main/examples/rewoo/rewoo.ipynb): planner generates a task list whose observations are saved as **variables**. Variables can be used in subsequent tasks to reduce the need for further re-planning. Based on the [ReWOO](https://arxiv.org/abs/2305.18323) paper by Xu, et. al. +- [LLMCompiler](https://github.com/langchain-ai/langgraph/blob/main/examples/llm-compiler/LLMCompiler.ipynb): planner generates a **DAG** of tasks with variable responses. Tasks are **streamed** and executed eagerly to minimize tool execution runtime. Based on the [paper](https://arxiv.org/abs/2312.04511) by Kim, et. al. + + +### Reflection / Self-Critique + +When output quality is a major concern, it's common to incorporate some combination of self-critique or reflection and external validation to refine your system's outputs. The following examples demonstrate research that implement this type of design. + +- [Basic Reflection](./examples/reflection/reflection.ipynb): add a simple "reflect" step in your graph to prompt your system to revise its outputs. +- [Reflexion](./examples/reflexion/reflexion.ipynb): critique missing and superflous aspects of the agent's response to guide subsequent steps. Based on [Reflexion](https://arxiv.org/abs/2303.11366), by Shinn, et. al. +- [Language Agent Tree Search](./examples/lats/lats.ipynb): execute multiple agents in parallel, using reflection and environmental rewards to drive a Monte Carlo Tree Search. Based on [LATS](https://arxiv.org/abs/2310.04406/LanguageAgentTreeSearch/), by Zhou, et. al. + ### Multi-agent Examples - [Multi-agent collaboration](https://github.com/langchain-ai/langgraph/blob/main/examples/multi_agent/multi-agent-collaboration.ipynb): how to create two agents that work together to accomplish a task @@ -464,22 +501,11 @@ We also have a lot of examples highlighting how to slightly modify the base chat It can often be tough to evaluation chat bots in multi-turn situations. One way to do this is with simulations. -- [Chat bot evaluation as multi-agent simulation](https://github.com/langchain-ai/langgraph/blob/main/examples/chatbot-simulation-evaluation/agent-simulation-evaluation.ipynb): How to simulate a dialogue between a "virtual user" and your chat bot +- [Chat bot evaluation as multi-agent simulation](https://github.com/langchain-ai/langgraph/blob/main/examples/chatbot-simulation-evaluation/agent-simulation-evaluation.ipynb): how to simulate a dialogue between a "virtual user" and your chat bot -### Async +### Multimodal Examples -If you are running LangGraph in async workflows, you may want to create the nodes to be async by default. -In order for a walkthrough on how to do that, see [this documentation](https://github.com/langchain-ai/langgraph/blob/main/examples/async.ipynb) - -### Streaming Tokens - -Sometimes language models take a while to respond and you may want to stream tokens to end users. -For a guide on how to do this, see [this documentation](https://github.com/langchain-ai/langgraph/blob/main/examples/streaming-tokens.ipynb) - -### Persistence - -LangGraph comes with built-in persistence, allowing you to save the state of the graph at point and resume from there. -In order for a walkthrough on how to do that, see [this documentation](https://github.com/langchain-ai/langgraph/blob/main/examples/persistence.ipynb) +- [WebVoyager](https://github.com/langchain-ai/langgraph/blob/main/examples/web-navigation/web_voyager.ipynb): vision-enabled web browsing agent that uses [Set-of-marks](https://som-gpt4v.github.io/) prompting to navigate a web browser and execute tasks ## Documentation diff --git a/examples/agent_executor/base.ipynb b/examples/agent_executor/base.ipynb index 1e2077740..6a40577ed 100644 --- a/examples/agent_executor/base.ipynb +++ b/examples/agent_executor/base.ipynb @@ -26,7 +26,7 @@ "metadata": {}, "outputs": [], "source": [ - "!pip install --quiet -U langchain langchain_openai tavily-python" + "!pip install --quiet -U langchain langchain_openai langchainhub tavily-python" ] }, { @@ -133,17 +133,17 @@ "\n", "\n", "class AgentState(TypedDict):\n", - " # The input string\n", - " input: str\n", - " # The list of previous messages in the conversation\n", - " chat_history: list[BaseMessage]\n", - " # The outcome of a given call to the agent\n", - " # Needs `None` as a valid type, since this is what this will start as\n", - " agent_outcome: Union[AgentAction, AgentFinish, None]\n", - " # List of actions and corresponding observations\n", - " # Here we annotate this with `operator.add` to indicate that operations to\n", - " # this state should be ADDED to the existing values (not overwrite it)\n", - " intermediate_steps: Annotated[list[tuple[AgentAction, str]], operator.add]\n" + " # The input string\n", + " input: str\n", + " # The list of previous messages in the conversation\n", + " chat_history: list[BaseMessage]\n", + " # The outcome of a given call to the agent\n", + " # Needs `None` as a valid type, since this is what this will start as\n", + " agent_outcome: Union[AgentAction, AgentFinish, None]\n", + " # List of actions and corresponding observations\n", + " # Here we annotate this with `operator.add` to indicate that operations to\n", + " # this state should be ADDED to the existing values (not overwrite it)\n", + " intermediate_steps: Annotated[list[tuple[AgentAction, str]], operator.add]" ] }, { @@ -187,23 +187,26 @@ "# It takes in an agent action and calls that tool and returns the result\n", "tool_executor = ToolExecutor(tools)\n", "\n", + "\n", "# Define the agent\n", "def run_agent(data):\n", " agent_outcome = agent_runnable.invoke(data)\n", " return {\"agent_outcome\": agent_outcome}\n", "\n", + "\n", "# Define the function to execute tools\n", "def execute_tools(data):\n", " # Get the most recent agent_outcome - this is the key added in the `agent` above\n", - " agent_action = data['agent_outcome']\n", + " agent_action = data[\"agent_outcome\"]\n", " output = tool_executor.invoke(agent_action)\n", " return {\"intermediate_steps\": [(agent_action, str(output))]}\n", "\n", + "\n", "# Define logic that will be used to determine which conditional edge to go down\n", "def should_continue(data):\n", " # If the agent outcome is an AgentFinish, then we return `exit` string\n", " # This will be used when setting up the graph to define the flow\n", - " if isinstance(data['agent_outcome'], AgentFinish):\n", + " if isinstance(data[\"agent_outcome\"], AgentFinish):\n", " return \"end\"\n", " # Otherwise, an AgentAction is returned\n", " # Here we return `continue` string\n", @@ -259,13 +262,13 @@ " # If `tools`, then we call the tool node.\n", " \"continue\": \"action\",\n", " # Otherwise we finish.\n", - " \"end\": END\n", - " }\n", + " \"end\": END,\n", + " },\n", ")\n", "\n", "# We now add a normal edge from `tools` to `agent`.\n", "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge('action', 'agent')\n", + "workflow.add_edge(\"action\", \"agent\")\n", "\n", "# Finally, we compile it!\n", "# This compiles it into a LangChain Runnable,\n", diff --git a/examples/agent_executor/force-calling-a-tool-first.ipynb b/examples/agent_executor/force-calling-a-tool-first.ipynb index 49dccc319..74ca4664d 100644 --- a/examples/agent_executor/force-calling-a-tool-first.ipynb +++ b/examples/agent_executor/force-calling-a-tool-first.ipynb @@ -138,17 +138,17 @@ "\n", "\n", "class AgentState(TypedDict):\n", - " # The input string\n", - " input: str\n", - " # The list of previous messages in the conversation\n", - " chat_history: list[BaseMessage]\n", - " # The outcome of a given call to the agent\n", - " # Needs `None` as a valid type, since this is what this will start as\n", - " agent_outcome: Union[AgentAction, AgentFinish, None]\n", - " # List of actions and corresponding observations\n", - " # Here we annotate this with `operator.add` to indicate that operations to\n", - " # this state should be ADDED to the existing values (not overwrite it)\n", - " intermediate_steps: Annotated[list[tuple[AgentAction, str]], operator.add]\n" + " # The input string\n", + " input: str\n", + " # The list of previous messages in the conversation\n", + " chat_history: list[BaseMessage]\n", + " # The outcome of a given call to the agent\n", + " # Needs `None` as a valid type, since this is what this will start as\n", + " agent_outcome: Union[AgentAction, AgentFinish, None]\n", + " # List of actions and corresponding observations\n", + " # Here we annotate this with `operator.add` to indicate that operations to\n", + " # this state should be ADDED to the existing values (not overwrite it)\n", + " intermediate_steps: Annotated[list[tuple[AgentAction, str]], operator.add]" ] }, { @@ -192,23 +192,26 @@ "# It takes in an agent action and calls that tool and returns the result\n", "tool_executor = ToolExecutor(tools)\n", "\n", + "\n", "# Define the agent\n", "def run_agent(data):\n", " agent_outcome = agent_runnable.invoke(data)\n", " return {\"agent_outcome\": agent_outcome}\n", "\n", + "\n", "# Define the function to execute tools\n", "def execute_tools(data):\n", " # Get the most recent agent_outcome - this is the key added in the `agent` above\n", - " agent_action = data['agent_outcome']\n", + " agent_action = data[\"agent_outcome\"]\n", " output = tool_executor.invoke(agent_action)\n", " return {\"intermediate_steps\": [(agent_action, str(output))]}\n", "\n", + "\n", "# Define logic that will be used to determine which conditional edge to go down\n", "def should_continue(data):\n", " # If the agent outcome is an AgentFinish, then we return `exit` string\n", " # This will be used when setting up the graph to define the flow\n", - " if isinstance(data['agent_outcome'], AgentFinish):\n", + " if isinstance(data[\"agent_outcome\"], AgentFinish):\n", " return \"end\"\n", " # Otherwise, an AgentAction is returned\n", " # Here we return `continue` string\n", @@ -257,14 +260,15 @@ "source": [ "from langchain_core.agents import AgentActionMessageLog\n", "\n", + "\n", "def first_agent(inputs):\n", " action = AgentActionMessageLog(\n", - " # We force call this tool\n", - " tool=\"tavily_search_results_json\",\n", - " # We just pass in the `input` key to this tool\n", - " tool_input=inputs[\"input\"],\n", - " log=\"\",\n", - " message_log=[]\n", + " # We force call this tool\n", + " tool=\"tavily_search_results_json\",\n", + " # We just pass in the `input` key to this tool\n", + " tool_input=inputs[\"input\"],\n", + " log=\"\",\n", + " message_log=[],\n", " )\n", " return {\"agent_outcome\": action}" ] @@ -321,16 +325,16 @@ " # If `tools`, then we call the tool node.\n", " \"continue\": \"action\",\n", " # Otherwise we finish.\n", - " \"end\": END\n", - " }\n", + " \"end\": END,\n", + " },\n", ")\n", "\n", "# We now add a normal edge from `tools` to `agent`.\n", "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge('action', 'agent')\n", + "workflow.add_edge(\"action\", \"agent\")\n", "\n", "# After the first agent, we want to take an action\n", - "workflow.add_edge('first_agent', 'action')\n", + "workflow.add_edge(\"first_agent\", \"action\")\n", "\n", "# Finally, we compile it!\n", "# This compiles it into a LangChain Runnable,\n", diff --git a/examples/agent_executor/high-level.ipynb b/examples/agent_executor/high-level.ipynb index 1922e5ab7..ec3082221 100644 --- a/examples/agent_executor/high-level.ipynb +++ b/examples/agent_executor/high-level.ipynb @@ -192,7 +192,7 @@ } ], "source": [ - "s['__end__']['agent_outcome']" + "s[\"__end__\"][\"agent_outcome\"]" ] }, { @@ -226,10 +226,15 @@ "source": [ "from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder\n", "\n", - "prompt = ChatPromptTemplate.from_messages([\n", - " (\"human\", \"Respond to the user question: {question}. Answer in this language: {language}\"),\n", - " MessagesPlaceholder(variable_name=\"agent_scratchpad\")\n", - "])\n", + "prompt = ChatPromptTemplate.from_messages(\n", + " [\n", + " (\n", + " \"human\",\n", + " \"Respond to the user question: {question}. Answer in this language: {language}\",\n", + " ),\n", + " MessagesPlaceholder(variable_name=\"agent_scratchpad\"),\n", + " ]\n", + ")\n", "agent_runnable = create_openai_functions_agent(llm, tools, prompt)" ] }, @@ -327,7 +332,7 @@ } ], "source": [ - "s['__end__']['agent_outcome']" + "s[\"__end__\"][\"agent_outcome\"]" ] }, { diff --git a/examples/agent_executor/human-in-the-loop.ipynb b/examples/agent_executor/human-in-the-loop.ipynb index d52ad06e2..ea3cf4705 100644 --- a/examples/agent_executor/human-in-the-loop.ipynb +++ b/examples/agent_executor/human-in-the-loop.ipynb @@ -138,17 +138,17 @@ "\n", "\n", "class AgentState(TypedDict):\n", - " # The input string\n", - " input: str\n", - " # The list of previous messages in the conversation\n", - " chat_history: list[BaseMessage]\n", - " # The outcome of a given call to the agent\n", - " # Needs `None` as a valid type, since this is what this will start as\n", - " agent_outcome: Union[AgentAction, AgentFinish, None]\n", - " # List of actions and corresponding observations\n", - " # Here we annotate this with `operator.add` to indicate that operations to\n", - " # this state should be ADDED to the existing values (not overwrite it)\n", - " intermediate_steps: Annotated[list[tuple[AgentAction, str]], operator.add]\n" + " # The input string\n", + " input: str\n", + " # The list of previous messages in the conversation\n", + " chat_history: list[BaseMessage]\n", + " # The outcome of a given call to the agent\n", + " # Needs `None` as a valid type, since this is what this will start as\n", + " agent_outcome: Union[AgentAction, AgentFinish, None]\n", + " # List of actions and corresponding observations\n", + " # Here we annotate this with `operator.add` to indicate that operations to\n", + " # this state should be ADDED to the existing values (not overwrite it)\n", + " intermediate_steps: Annotated[list[tuple[AgentAction, str]], operator.add]" ] }, { @@ -192,6 +192,7 @@ "# It takes in an agent action and calls that tool and returns the result\n", "tool_executor = ToolExecutor(tools)\n", "\n", + "\n", "# Define the agent\n", "def run_agent(data):\n", " agent_outcome = agent_runnable.invoke(data)\n", @@ -218,18 +219,19 @@ "# Define the function to execute tools\n", "def execute_tools(data):\n", " # Get the most recent agent_outcome - this is the key added in the `agent` above\n", - " agent_action = data['agent_outcome']\n", + " agent_action = data[\"agent_outcome\"]\n", " response = input(prompt=f\"[y/n] continue with: {agent_action}?\")\n", " if response == \"n\":\n", " raise ValueError\n", " output = tool_executor.invoke(agent_action)\n", " return {\"intermediate_steps\": [(agent_action, str(output))]}\n", "\n", + "\n", "# Define logic that will be used to determine which conditional edge to go down\n", "def should_continue(data):\n", " # If the agent outcome is an AgentFinish, then we return `exit` string\n", " # This will be used when setting up the graph to define the flow\n", - " if isinstance(data['agent_outcome'], AgentFinish):\n", + " if isinstance(data[\"agent_outcome\"], AgentFinish):\n", " return \"end\"\n", " # Otherwise, an AgentAction is returned\n", " # Here we return `continue` string\n", @@ -285,13 +287,13 @@ " # If `tools`, then we call the tool node.\n", " \"continue\": \"action\",\n", " # Otherwise we finish.\n", - " \"end\": END\n", - " }\n", + " \"end\": END,\n", + " },\n", ")\n", "\n", "# We now add a normal edge from `tools` to `agent`.\n", "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge('action', 'agent')\n", + "workflow.add_edge(\"action\", \"agent\")\n", "\n", "# Finally, we compile it!\n", "# This compiles it into a LangChain Runnable,\n", diff --git a/examples/agent_executor/managing-agent-steps.ipynb b/examples/agent_executor/managing-agent-steps.ipynb index d509d8f8d..31847fe67 100644 --- a/examples/agent_executor/managing-agent-steps.ipynb +++ b/examples/agent_executor/managing-agent-steps.ipynb @@ -138,17 +138,17 @@ "\n", "\n", "class AgentState(TypedDict):\n", - " # The input string\n", - " input: str\n", - " # The list of previous messages in the conversation\n", - " chat_history: list[BaseMessage]\n", - " # The outcome of a given call to the agent\n", - " # Needs `None` as a valid type, since this is what this will start as\n", - " agent_outcome: Union[AgentAction, AgentFinish, None]\n", - " # List of actions and corresponding observations\n", - " # Here we annotate this with `operator.add` to indicate that operations to\n", - " # this state should be ADDED to the existing values (not overwrite it)\n", - " intermediate_steps: Annotated[list[tuple[AgentAction, str]], operator.add]\n" + " # The input string\n", + " input: str\n", + " # The list of previous messages in the conversation\n", + " chat_history: list[BaseMessage]\n", + " # The outcome of a given call to the agent\n", + " # Needs `None` as a valid type, since this is what this will start as\n", + " agent_outcome: Union[AgentAction, AgentFinish, None]\n", + " # List of actions and corresponding observations\n", + " # Here we annotate this with `operator.add` to indicate that operations to\n", + " # this state should be ADDED to the existing values (not overwrite it)\n", + " intermediate_steps: Annotated[list[tuple[AgentAction, str]], operator.add]" ] }, { @@ -213,23 +213,25 @@ "# Define the agent\n", "def run_agent(data):\n", " inputs = data.copy()\n", - " if len(inputs['intermediate_steps']) > 5:\n", - " inputs['intermediate_steps'] = inputs['intermediate_steps'][-5:]\n", + " if len(inputs[\"intermediate_steps\"]) > 5:\n", + " inputs[\"intermediate_steps\"] = inputs[\"intermediate_steps\"][-5:]\n", " agent_outcome = agent_runnable.invoke(inputs)\n", " return {\"agent_outcome\": agent_outcome}\n", "\n", + "\n", "# Define the function to execute tools\n", "def execute_tools(data):\n", " # Get the most recent agent_outcome - this is the key added in the `agent` above\n", - " agent_action = data['agent_outcome']\n", + " agent_action = data[\"agent_outcome\"]\n", " output = tool_executor.invoke(agent_action)\n", " return {\"intermediate_steps\": [(agent_action, str(output))]}\n", "\n", + "\n", "# Define logic that will be used to determine which conditional edge to go down\n", "def should_continue(data):\n", " # If the agent outcome is an AgentFinish, then we return `exit` string\n", " # This will be used when setting up the graph to define the flow\n", - " if isinstance(data['agent_outcome'], AgentFinish):\n", + " if isinstance(data[\"agent_outcome\"], AgentFinish):\n", " return \"end\"\n", " # Otherwise, an AgentAction is returned\n", " # Here we return `continue` string\n", @@ -285,13 +287,13 @@ " # If `tools`, then we call the tool node.\n", " \"continue\": \"action\",\n", " # Otherwise we finish.\n", - " \"end\": END\n", - " }\n", + " \"end\": END,\n", + " },\n", ")\n", "\n", "# We now add a normal edge from `tools` to `agent`.\n", "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge('action', 'agent')\n", + "workflow.add_edge(\"action\", \"agent\")\n", "\n", "# Finally, we compile it!\n", "# This compiles it into a LangChain Runnable,\n", diff --git a/examples/async.ipynb b/examples/async.ipynb index 7d4a8081c..7c9381db9 100644 --- a/examples/async.ipynb +++ b/examples/async.ipynb @@ -265,9 +265,10 @@ "import json\n", "from langchain_core.messages import FunctionMessage\n", "\n", + "\n", "# Define the function that determines whether to continue or not\n", "def should_continue(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " last_message = messages[-1]\n", " # If there is no function call, then we finish\n", " if \"function_call\" not in last_message.additional_kwargs:\n", @@ -276,23 +277,27 @@ " else:\n", " return \"continue\"\n", "\n", + "\n", "# Define the function that calls the model\n", "async def call_model(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " response = await model.ainvoke(messages)\n", " # We return a list, because this will get added to the existing list\n", " return {\"messages\": [response]}\n", "\n", + "\n", "# Define the function to execute tools\n", "async def call_tool(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " # Based on the continue condition\n", " # we know the last message involves a function call\n", " last_message = messages[-1]\n", " # We construct an ToolInvocation from the function_call\n", " action = ToolInvocation(\n", " tool=last_message.additional_kwargs[\"function_call\"][\"name\"],\n", - " tool_input=json.loads(last_message.additional_kwargs[\"function_call\"][\"arguments\"]),\n", + " tool_input=json.loads(\n", + " last_message.additional_kwargs[\"function_call\"][\"arguments\"]\n", + " ),\n", " )\n", " # We call the tool_executor and get back a response\n", " response = await tool_executor.ainvoke(action)\n", @@ -320,6 +325,7 @@ "outputs": [], "source": [ "from langgraph.graph import StateGraph, END\n", + "\n", "# Define a new graph\n", "workflow = StateGraph(AgentState)\n", "\n", @@ -348,13 +354,13 @@ " # If `tools`, then we call the tool node.\n", " \"continue\": \"action\",\n", " # Otherwise we finish.\n", - " \"end\": END\n", - " }\n", + " \"end\": END,\n", + " },\n", ")\n", "\n", "# We now add a normal edge from `tools` to `agent`.\n", "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge('action', 'agent')\n", + "workflow.add_edge(\"action\", \"agent\")\n", "\n", "# Finally, we compile it!\n", "# This compiles it into a LangChain Runnable,\n", diff --git a/examples/chat_agent_executor_with_function_calling/base.ipynb b/examples/chat_agent_executor_with_function_calling/base.ipynb index d6dd885e1..a76a06ae3 100644 --- a/examples/chat_agent_executor_with_function_calling/base.ipynb +++ b/examples/chat_agent_executor_with_function_calling/base.ipynb @@ -242,9 +242,10 @@ "import json\n", "from langchain_core.messages import FunctionMessage\n", "\n", + "\n", "# Define the function that determines whether to continue or not\n", "def should_continue(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " last_message = messages[-1]\n", " # If there is no function call, then we finish\n", " if \"function_call\" not in last_message.additional_kwargs:\n", @@ -253,23 +254,27 @@ " else:\n", " return \"continue\"\n", "\n", + "\n", "# Define the function that calls the model\n", "def call_model(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " response = model.invoke(messages)\n", " # We return a list, because this will get added to the existing list\n", " return {\"messages\": [response]}\n", "\n", + "\n", "# Define the function to execute tools\n", "def call_tool(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " # Based on the continue condition\n", " # we know the last message involves a function call\n", " last_message = messages[-1]\n", " # We construct an ToolInvocation from the function_call\n", " action = ToolInvocation(\n", " tool=last_message.additional_kwargs[\"function_call\"][\"name\"],\n", - " tool_input=json.loads(last_message.additional_kwargs[\"function_call\"][\"arguments\"]),\n", + " tool_input=json.loads(\n", + " last_message.additional_kwargs[\"function_call\"][\"arguments\"]\n", + " ),\n", " )\n", " # We call the tool_executor and get back a response\n", " response = tool_executor.invoke(action)\n", @@ -297,6 +302,7 @@ "outputs": [], "source": [ "from langgraph.graph import StateGraph, END\n", + "\n", "# Define a new graph\n", "workflow = StateGraph(AgentState)\n", "\n", @@ -325,13 +331,13 @@ " # If `tools`, then we call the tool node.\n", " \"continue\": \"action\",\n", " # Otherwise we finish.\n", - " \"end\": END\n", - " }\n", + " \"end\": END,\n", + " },\n", ")\n", "\n", "# We now add a normal edge from `tools` to `agent`.\n", "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge('action', 'agent')\n", + "workflow.add_edge(\"action\", \"agent\")\n", "\n", "# Finally, we compile it!\n", "# This compiles it into a LangChain Runnable,\n", diff --git a/examples/chat_agent_executor_with_function_calling/dynamically-returning-directly.ipynb b/examples/chat_agent_executor_with_function_calling/dynamically-returning-directly.ipynb index 0b42ce534..b83c06c30 100644 --- a/examples/chat_agent_executor_with_function_calling/dynamically-returning-directly.ipynb +++ b/examples/chat_agent_executor_with_function_calling/dynamically-returning-directly.ipynb @@ -100,12 +100,14 @@ "source": [ "from langchain_core.pydantic_v1 import BaseModel, Field\n", "\n", + "\n", "class SearchTool(BaseModel):\n", " \"\"\"Look up things online, optionally returning directly\"\"\"\n", + "\n", " query: str = Field(description=\"query to look up online\")\n", - " return_direct: bool = Field(\n", - " description=\"Whether or the result of this should be returned directly to the user without you seeing what it is\", \n", - " default = False\n", + " return_direct: bool = Field(\n", + " description=\"Whether or the result of this should be returned directly to the user without you seeing what it is\",\n", + " default=False,\n", " )" ] }, @@ -289,14 +291,16 @@ "source": [ "# Define the function that determines whether to continue or not\n", "def should_continue(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " last_message = messages[-1]\n", " # If there is no function call, then we finish\n", " if \"function_call\" not in last_message.additional_kwargs:\n", " return \"end\"\n", " # Otherwise if there is, we check if it's suppose to return direct\n", " else:\n", - " arguments = json.loads(last_message.additional_kwargs[\"function_call\"][\"arguments\"])\n", + " arguments = json.loads(\n", + " last_message.additional_kwargs[\"function_call\"][\"arguments\"]\n", + " )\n", " if arguments.get(\"return_direct\", False):\n", " return \"final\"\n", " else:\n", @@ -312,7 +316,7 @@ "source": [ "# Define the function that calls the model\n", "def call_model(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " response = model.invoke(messages)\n", " # We return a list, because this will get added to the existing list\n", " return {\"messages\": [response]}" @@ -337,7 +341,7 @@ "source": [ "# Define the function to execute tools\n", "def call_tool(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " # Based on the continue condition\n", " # we know the last message involves a function call\n", " last_message = messages[-1]\n", @@ -381,6 +385,7 @@ "outputs": [], "source": [ "from langgraph.graph import StateGraph, END\n", + "\n", "# Define a new graph\n", "workflow = StateGraph(AgentState)\n", "\n", @@ -412,14 +417,14 @@ " # Final call\n", " \"final\": \"final\",\n", " # Otherwise we finish.\n", - " \"end\": END\n", - " }\n", + " \"end\": END,\n", + " },\n", ")\n", "\n", "# We now add a normal edge from `tools` to `agent`.\n", "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge('action', 'agent')\n", - "workflow.add_edge('final', END)\n", + "workflow.add_edge(\"action\", \"agent\")\n", + "workflow.add_edge(\"final\", END)\n", "\n", "# Finally, we compile it!\n", "# This compiles it into a LangChain Runnable,\n", @@ -522,7 +527,13 @@ "source": [ "from langchain_core.messages import HumanMessage\n", "\n", - "inputs = {\"messages\": [HumanMessage(content=\"what is the weather in sf? return this result directly by setting return_direct = True\")]}\n", + "inputs = {\n", + " \"messages\": [\n", + " HumanMessage(\n", + " content=\"what is the weather in sf? return this result directly by setting return_direct = True\"\n", + " )\n", + " ]\n", + "}\n", "for output in app.stream(inputs):\n", " # stream() yields dictionaries with output keyed by node name\n", " for key, value in output.items():\n", diff --git a/examples/chat_agent_executor_with_function_calling/force-calling-a-tool-first.ipynb b/examples/chat_agent_executor_with_function_calling/force-calling-a-tool-first.ipynb index 05096c966..56cca9ce1 100644 --- a/examples/chat_agent_executor_with_function_calling/force-calling-a-tool-first.ipynb +++ b/examples/chat_agent_executor_with_function_calling/force-calling-a-tool-first.ipynb @@ -246,9 +246,10 @@ "import json\n", "from langchain_core.messages import FunctionMessage\n", "\n", + "\n", "# Define the function that determines whether to continue or not\n", "def should_continue(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " last_message = messages[-1]\n", " # If there is no function call, then we finish\n", " if \"function_call\" not in last_message.additional_kwargs:\n", @@ -257,23 +258,27 @@ " else:\n", " return \"continue\"\n", "\n", + "\n", "# Define the function that calls the model\n", "def call_model(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " response = model.invoke(messages)\n", " # We return a list, because this will get added to the existing list\n", " return {\"messages\": [response]}\n", "\n", + "\n", "# Define the function to execute tools\n", "def call_tool(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " # Based on the continue condition\n", " # we know the last message involves a function call\n", " last_message = messages[-1]\n", " # We construct an ToolInvocation from the function_call\n", " action = ToolInvocation(\n", " tool=last_message.additional_kwargs[\"function_call\"][\"name\"],\n", - " tool_input=json.loads(last_message.additional_kwargs[\"function_call\"][\"arguments\"]),\n", + " tool_input=json.loads(\n", + " last_message.additional_kwargs[\"function_call\"][\"arguments\"]\n", + " ),\n", " )\n", " # We call the tool_executor and get back a response\n", " response = tool_executor.invoke(action)\n", @@ -304,20 +309,21 @@ "from langchain_core.messages import AIMessage\n", "import json\n", "\n", + "\n", "def first_model(state):\n", - " human_input = state['messages'][-1].content\n", + " human_input = state[\"messages\"][-1].content\n", " return {\n", " \"messages\": [\n", " AIMessage(\n", - " content=\"\", \n", + " content=\"\",\n", " additional_kwargs={\n", " \"function_call\": {\n", - " \"name\": \"tavily_search_results_json\", \n", - " \"arguments\": json.dumps({\"query\": human_input})\n", - " }\n", + " \"name\": \"tavily_search_results_json\",\n", + " \"arguments\": json.dumps({\"query\": human_input}),\n", " }\n", - " )\n", - " ]\n", + " },\n", + " )\n", + " ]\n", " }" ] }, @@ -343,6 +349,7 @@ "outputs": [], "source": [ "from langgraph.graph import StateGraph, END\n", + "\n", "# Define a new graph\n", "workflow = StateGraph(AgentState)\n", "\n", @@ -374,16 +381,16 @@ " # If `tools`, then we call the tool node.\n", " \"continue\": \"action\",\n", " # Otherwise we finish.\n", - " \"end\": END\n", - " }\n", + " \"end\": END,\n", + " },\n", ")\n", "\n", "# We now add a normal edge from `tools` to `agent`.\n", "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge('action', 'agent')\n", + "workflow.add_edge(\"action\", \"agent\")\n", "\n", "# After we call the first agent, we know we want to go to action\n", - "workflow.add_edge('first_agent', 'action')\n", + "workflow.add_edge(\"first_agent\", \"action\")\n", "\n", "# Finally, we compile it!\n", "# This compiles it into a LangChain Runnable,\n", diff --git a/examples/chat_agent_executor_with_function_calling/high-level-tools.ipynb b/examples/chat_agent_executor_with_function_calling/high-level-tools.ipynb new file mode 100644 index 000000000..55d5e933f --- /dev/null +++ b/examples/chat_agent_executor_with_function_calling/high-level-tools.ipynb @@ -0,0 +1,136 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8bcd1a3d-7c50-4f58-be4e-1ed654aa33be", + "metadata": {}, + "source": [ + "# Chat Executor: with tool calling\n", + "\n", + "This notebook walks through an example creating a chat executor that uses tool calling.\n", + "This is useful for getting started quickly.\n", + "However, it is highly likely you will want to customize the logic - for information on that, check out the other examples in this folder." + ] + }, + { + "cell_type": "markdown", + "id": "e130cf70-a30e-47d7-8fd5-464f1a92e374", + "metadata": {}, + "source": [ + "## Set up the chat model and tools\n", + "\n", + "Here we will define the chat model and tools that we want to use.\n", + "Importantly, this model MUST support OpenAI function calling." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "efb7e3c0-c63f-40f6-93ce-19681d650fc2", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_openai import ChatOpenAI\n", + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langgraph.prebuilt import chat_agent_executor\n", + "from langchain_core.messages import HumanMessage" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "a7025f33-3160-41cf-868b-17ebc916fb1d", + "metadata": {}, + "outputs": [], + "source": [ + "tools = [TavilySearchResults(max_results=1)]\n", + "model = ChatOpenAI()" + ] + }, + { + "cell_type": "markdown", + "id": "43064805-2ac9-4b5a-850c-a68dd7282350", + "metadata": {}, + "source": [ + "## Create executor\n", + "\n", + "We can now use the high level interface to create the executor" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "32b4ae66-f667-4a8b-a602-503fd0effcd9", + "metadata": {}, + "outputs": [], + "source": [ + "app = chat_agent_executor.create_tool_calling_executor(model, tools)" + ] + }, + { + "cell_type": "markdown", + "id": "d63dbfc7-a5c1-4a03-991c-f0789ba52c52", + "metadata": {}, + "source": [ + "We can now invoke this executor. The input to this must be a dictionary with a single `messsages` key that contains a list of messages." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "0abc5655-d772-450c-832f-1fee1111a5f6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'messages': [AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_eI2B853W8Jrm8IvmwEafikFv', 'function': {'arguments': '{\"query\": \"weather in San Francisco\"}', 'name': 'tavily_search_results_json'}, 'type': 'function'}, {'id': 'call_Aky1m2Z5dvUcHKyha7r5s3Wj', 'function': {'arguments': '{\"query\": \"weather in Los Angeles\"}', 'name': 'tavily_search_results_json'}, 'type': 'function'}]})]}\n", + "----\n", + "{'messages': [ToolMessage(content=\"[{'url': 'https://www.wunderground.com/forecast/us/ca/san-francisco', 'content': 'Get the latest weather information for San Francisco, CA, including temperature, precipitation, wind speed, and humidity. See the hourly and 10-day forecast for the South of Market station and other nearby weather stations.'}]\", tool_call_id='call_eI2B853W8Jrm8IvmwEafikFv'), ToolMessage(content=\"[{'url': 'https://www.accuweather.com/en/us/los-angeles/90012/hourly-weather-forecast/347625', 'content': 'Get the latest hourly weather updates for Los Angeles, CA, including rain alerts, air quality, wind speed and direction, humidity, and cloud cover. See the forecast for the next eight hours and plan your activities accordingly.'}]\", tool_call_id='call_Aky1m2Z5dvUcHKyha7r5s3Wj')]}\n", + "----\n", + "{'messages': [AIMessage(content='The weather in San Francisco can be found [here](https://www.wunderground.com/forecast/us/ca/san-francisco), which includes information on temperature, precipitation, wind speed, and humidity.\\n\\nFor Los Angeles, you can check the hourly weather updates [here](https://www.accuweather.com/en/us/los-angeles/90012/hourly-weather-forecast/347625), which includes details on rain alerts, air quality, wind speed and direction, humidity, and cloud cover.')]}\n", + "----\n", + "{'messages': [HumanMessage(content='what is the weather in sf and la'), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_eI2B853W8Jrm8IvmwEafikFv', 'function': {'arguments': '{\"query\": \"weather in San Francisco\"}', 'name': 'tavily_search_results_json'}, 'type': 'function'}, {'id': 'call_Aky1m2Z5dvUcHKyha7r5s3Wj', 'function': {'arguments': '{\"query\": \"weather in Los Angeles\"}', 'name': 'tavily_search_results_json'}, 'type': 'function'}]}), ToolMessage(content=\"[{'url': 'https://www.wunderground.com/forecast/us/ca/san-francisco', 'content': 'Get the latest weather information for San Francisco, CA, including temperature, precipitation, wind speed, and humidity. See the hourly and 10-day forecast for the South of Market station and other nearby weather stations.'}]\", tool_call_id='call_eI2B853W8Jrm8IvmwEafikFv'), ToolMessage(content=\"[{'url': 'https://www.accuweather.com/en/us/los-angeles/90012/hourly-weather-forecast/347625', 'content': 'Get the latest hourly weather updates for Los Angeles, CA, including rain alerts, air quality, wind speed and direction, humidity, and cloud cover. See the forecast for the next eight hours and plan your activities accordingly.'}]\", tool_call_id='call_Aky1m2Z5dvUcHKyha7r5s3Wj'), AIMessage(content='The weather in San Francisco can be found [here](https://www.wunderground.com/forecast/us/ca/san-francisco), which includes information on temperature, precipitation, wind speed, and humidity.\\n\\nFor Los Angeles, you can check the hourly weather updates [here](https://www.accuweather.com/en/us/los-angeles/90012/hourly-weather-forecast/347625), which includes details on rain alerts, air quality, wind speed and direction, humidity, and cloud cover.')]}\n", + "----\n" + ] + } + ], + "source": [ + "inputs = {\"messages\": [HumanMessage(content=\"what is the weather in sf and la\")]}\n", + "for s in app.stream(inputs):\n", + " print(list(s.values())[0])\n", + " print(\"----\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "87f147e3-f96f-4b96-a3cc-ec7affd7a57f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/chat_agent_executor_with_function_calling/human-in-the-loop.ipynb b/examples/chat_agent_executor_with_function_calling/human-in-the-loop.ipynb index e2c9d4ac2..91b2af705 100644 --- a/examples/chat_agent_executor_with_function_calling/human-in-the-loop.ipynb +++ b/examples/chat_agent_executor_with_function_calling/human-in-the-loop.ipynb @@ -263,9 +263,10 @@ "import json\n", "from langchain_core.messages import FunctionMessage\n", "\n", + "\n", "# Define the function that determines whether to continue or not\n", "def should_continue(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " last_message = messages[-1]\n", " # If there is no function call, then we finish\n", " if \"function_call\" not in last_message.additional_kwargs:\n", @@ -274,9 +275,10 @@ " else:\n", " return \"continue\"\n", "\n", + "\n", "# Define the function that calls the model\n", "def call_model(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " response = model.invoke(messages)\n", " # We return a list, because this will get added to the existing list\n", " return {\"messages\": [response]}" @@ -301,14 +303,16 @@ "source": [ "# Define the function to execute tools\n", "def call_tool(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " # Based on the continue condition\n", " # we know the last message involves a function call\n", " last_message = messages[-1]\n", " # We construct an ToolInvocation from the function_call\n", " action = ToolInvocation(\n", " tool=last_message.additional_kwargs[\"function_call\"][\"name\"],\n", - " tool_input=json.loads(last_message.additional_kwargs[\"function_call\"][\"arguments\"]),\n", + " tool_input=json.loads(\n", + " last_message.additional_kwargs[\"function_call\"][\"arguments\"]\n", + " ),\n", " )\n", " response = input(f\"[y/n] continue with: {action}?\")\n", " if response == \"n\":\n", @@ -339,6 +343,7 @@ "outputs": [], "source": [ "from langgraph.graph import StateGraph, END\n", + "\n", "# Define a new graph\n", "workflow = StateGraph(AgentState)\n", "\n", @@ -367,13 +372,13 @@ " # If `tools`, then we call the tool node.\n", " \"continue\": \"action\",\n", " # Otherwise we finish.\n", - " \"end\": END\n", - " }\n", + " \"end\": END,\n", + " },\n", ")\n", "\n", "# We now add a normal edge from `tools` to `agent`.\n", "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge('action', 'agent')\n", + "workflow.add_edge(\"action\", \"agent\")\n", "\n", "# Finally, we compile it!\n", "# This compiles it into a LangChain Runnable,\n", diff --git a/examples/chat_agent_executor_with_function_calling/managing-agent-steps.ipynb b/examples/chat_agent_executor_with_function_calling/managing-agent-steps.ipynb index c0b7089a3..e21431101 100644 --- a/examples/chat_agent_executor_with_function_calling/managing-agent-steps.ipynb +++ b/examples/chat_agent_executor_with_function_calling/managing-agent-steps.ipynb @@ -246,9 +246,10 @@ "import json\n", "from langchain_core.messages import FunctionMessage\n", "\n", + "\n", "# Define the function that determines whether to continue or not\n", "def should_continue(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " last_message = messages[-1]\n", " # If there is no function call, then we finish\n", " if \"function_call\" not in last_message.additional_kwargs:\n", @@ -277,7 +278,7 @@ "source": [ "# Define the function that calls the model\n", "def call_model(state):\n", - " messages = state['messages'][-5:]\n", + " messages = state[\"messages\"][-5:]\n", " response = model.invoke(messages)\n", " # We return a list, because this will get added to the existing list\n", " return {\"messages\": [response]}" @@ -292,14 +293,16 @@ "source": [ "# Define the function to execute tools\n", "def call_tool(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " # Based on the continue condition\n", " # we know the last message involves a function call\n", " last_message = messages[-1]\n", " # We construct an ToolInvocation from the function_call\n", " action = ToolInvocation(\n", " tool=last_message.additional_kwargs[\"function_call\"][\"name\"],\n", - " tool_input=json.loads(last_message.additional_kwargs[\"function_call\"][\"arguments\"]),\n", + " tool_input=json.loads(\n", + " last_message.additional_kwargs[\"function_call\"][\"arguments\"]\n", + " ),\n", " )\n", " # We call the tool_executor and get back a response\n", " response = tool_executor.invoke(action)\n", @@ -327,6 +330,7 @@ "outputs": [], "source": [ "from langgraph.graph import StateGraph, END\n", + "\n", "# Define a new graph\n", "workflow = StateGraph(AgentState)\n", "\n", @@ -355,13 +359,13 @@ " # If `tools`, then we call the tool node.\n", " \"continue\": \"action\",\n", " # Otherwise we finish.\n", - " \"end\": END\n", - " }\n", + " \"end\": END,\n", + " },\n", ")\n", "\n", "# We now add a normal edge from `tools` to `agent`.\n", "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge('action', 'agent')\n", + "workflow.add_edge(\"action\", \"agent\")\n", "\n", "# Finally, we compile it!\n", "# This compiles it into a LangChain Runnable,\n", diff --git a/examples/chat_agent_executor_with_function_calling/respond-in-format.ipynb b/examples/chat_agent_executor_with_function_calling/respond-in-format.ipynb index ea61b18a4..2e64f0fba 100644 --- a/examples/chat_agent_executor_with_function_calling/respond-in-format.ipynb +++ b/examples/chat_agent_executor_with_function_calling/respond-in-format.ipynb @@ -177,8 +177,10 @@ "from langchain_core.pydantic_v1 import BaseModel, Field\n", "from langchain_core.utils.function_calling import convert_pydantic_to_openai_function\n", "\n", + "\n", "class Response(BaseModel):\n", " \"\"\"Final response to the user\"\"\"\n", + "\n", " temperature: float = Field(description=\"the temperature\")\n", " other_notes: str = Field(description=\"any other notes about the weather\")\n", "\n", @@ -264,9 +266,10 @@ "import json\n", "from langchain_core.messages import FunctionMessage\n", "\n", + "\n", "# Define the function that determines whether to continue or not\n", "def should_continue(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " last_message = messages[-1]\n", " # If there is no function call, then we finish\n", " if \"function_call\" not in last_message.additional_kwargs:\n", @@ -278,23 +281,27 @@ " else:\n", " return \"continue\"\n", "\n", + "\n", "# Define the function that calls the model\n", "def call_model(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " response = model.invoke(messages)\n", " # We return a list, because this will get added to the existing list\n", " return {\"messages\": [response]}\n", "\n", + "\n", "# Define the function to execute tools\n", "def call_tool(state):\n", - " messages = state['messages']\n", + " messages = state[\"messages\"]\n", " # Based on the continue condition\n", " # we know the last message involves a function call\n", " last_message = messages[-1]\n", " # We construct an ToolInvocation from the function_call\n", " action = ToolInvocation(\n", " tool=last_message.additional_kwargs[\"function_call\"][\"name\"],\n", - " tool_input=json.loads(last_message.additional_kwargs[\"function_call\"][\"arguments\"]),\n", + " tool_input=json.loads(\n", + " last_message.additional_kwargs[\"function_call\"][\"arguments\"]\n", + " ),\n", " )\n", " # We call the tool_executor and get back a response\n", " response = tool_executor.invoke(action)\n", @@ -322,6 +329,7 @@ "outputs": [], "source": [ "from langgraph.graph import StateGraph, END\n", + "\n", "# Define a new graph\n", "workflow = StateGraph(AgentState)\n", "\n", @@ -350,13 +358,13 @@ " # If `tools`, then we call the tool node.\n", " \"continue\": \"action\",\n", " # Otherwise we finish.\n", - " \"end\": END\n", - " }\n", + " \"end\": END,\n", + " },\n", ")\n", "\n", "# We now add a normal edge from `tools` to `agent`.\n", "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge('action', 'agent')\n", + "workflow.add_edge(\"action\", \"agent\")\n", "\n", "# Finally, we compile it!\n", "# This compiles it into a LangChain Runnable,\n", diff --git a/examples/chatbot-simulation-evaluation/agent-simulation-evaluation.ipynb b/examples/chatbot-simulation-evaluation/agent-simulation-evaluation.ipynb index 0510118be..c7ce3b83e 100644 --- a/examples/chatbot-simulation-evaluation/agent-simulation-evaluation.ipynb +++ b/examples/chatbot-simulation-evaluation/agent-simulation-evaluation.ipynb @@ -84,7 +84,10 @@ "\n", "# This is flexible, but you can define your agent here, or call your agent API here.\n", "def my_chat_bot(messages: List[dict]) -> dict:\n", - " system_message = {\"role\": \"system\", \"content\": \"You are a customer support agent for an airline.\"}\n", + " system_message = {\n", + " \"role\": \"system\",\n", + " \"content\": \"You are a customer support agent for an airline.\",\n", + " }\n", " messages = [system_message] + messages\n", " completion = openai.chat.completions.create(\n", " messages=messages, model=\"gpt-3.5-turbo\"\n", @@ -234,8 +237,7 @@ " # Call the chat bot\n", " chat_bot_response = my_chat_bot(messages)\n", " # Respond with an AI Message\n", - " return AIMessage(content=chat_bot_response[\"content\"])\n", - " " + " return AIMessage(content=chat_bot_response[\"content\"])" ] }, { diff --git a/examples/chatbots/customer-support.ipynb b/examples/chatbots/customer-support.ipynb index f1e7edaf3..1ad0759d6 100644 --- a/examples/chatbots/customer-support.ipynb +++ b/examples/chatbots/customer-support.ipynb @@ -32,6 +32,79 @@ "# !pip install -U scikit-learn" ] }, + { + "cell_type": "code", + "execution_count": 24, + "id": "35abc013-2613-4a49-a806-939dcf13ccf3", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: langgraph in /Users/harrisonchase/.pyenv/versions/3.11.1/envs/permchain/lib/python3.11/site-packages (0.0.24)\n", + "Collecting langgraph\n", + " Downloading langgraph-0.0.26-py3-none-any.whl.metadata (34 kB)\n", + "Collecting langchain-core<0.2.0,>=0.1.25 (from langgraph)\n", + " Downloading langchain_core-0.1.26-py3-none-any.whl.metadata (6.0 kB)\n", + "Requirement already satisfied: PyYAML>=5.3 in /Users/harrisonchase/.pyenv/versions/3.11.1/envs/permchain/lib/python3.11/site-packages (from langchain-core<0.2.0,>=0.1.25->langgraph) (6.0.1)\n", + "Requirement already satisfied: anyio<5,>=3 in /Users/harrisonchase/.pyenv/versions/3.11.1/envs/permchain/lib/python3.11/site-packages (from langchain-core<0.2.0,>=0.1.25->langgraph) (3.7.1)\n", + "Requirement already satisfied: jsonpatch<2.0,>=1.33 in /Users/harrisonchase/.pyenv/versions/3.11.1/envs/permchain/lib/python3.11/site-packages (from langchain-core<0.2.0,>=0.1.25->langgraph) (1.33)\n", + "Collecting langsmith<0.2.0,>=0.1.0 (from langchain-core<0.2.0,>=0.1.25->langgraph)\n", + " Downloading langsmith-0.1.8-py3-none-any.whl.metadata (13 kB)\n", + "Requirement already satisfied: packaging<24.0,>=23.2 in /Users/harrisonchase/.pyenv/versions/3.11.1/envs/permchain/lib/python3.11/site-packages (from langchain-core<0.2.0,>=0.1.25->langgraph) (23.2)\n", + "Requirement already satisfied: pydantic<3,>=1 in /Users/harrisonchase/.pyenv/versions/3.11.1/envs/permchain/lib/python3.11/site-packages (from langchain-core<0.2.0,>=0.1.25->langgraph) (2.4.2)\n", + "Requirement already satisfied: requests<3,>=2 in /Users/harrisonchase/.pyenv/versions/3.11.1/envs/permchain/lib/python3.11/site-packages (from langchain-core<0.2.0,>=0.1.25->langgraph) (2.31.0)\n", + "Requirement already satisfied: tenacity<9.0.0,>=8.1.0 in /Users/harrisonchase/.pyenv/versions/3.11.1/envs/permchain/lib/python3.11/site-packages (from langchain-core<0.2.0,>=0.1.25->langgraph) (8.2.3)\n", + "Requirement already satisfied: idna>=2.8 in /Users/harrisonchase/.pyenv/versions/3.11.1/envs/permchain/lib/python3.11/site-packages (from anyio<5,>=3->langchain-core<0.2.0,>=0.1.25->langgraph) (3.4)\n", + "Requirement already satisfied: sniffio>=1.1 in /Users/harrisonchase/.pyenv/versions/3.11.1/envs/permchain/lib/python3.11/site-packages (from anyio<5,>=3->langchain-core<0.2.0,>=0.1.25->langgraph) (1.3.0)\n", + "Requirement already satisfied: jsonpointer>=1.9 in /Users/harrisonchase/.pyenv/versions/3.11.1/envs/permchain/lib/python3.11/site-packages (from jsonpatch<2.0,>=1.33->langchain-core<0.2.0,>=0.1.25->langgraph) (2.4)\n", + "Collecting orjson<4.0.0,>=3.9.14 (from langsmith<0.2.0,>=0.1.0->langchain-core<0.2.0,>=0.1.25->langgraph)\n", + " Downloading orjson-3.9.15-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl.metadata (49 kB)\n", + "\u001b[2K \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.5/49.5 kB\u001b[0m \u001b[31m3.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: annotated-types>=0.4.0 in /Users/harrisonchase/.pyenv/versions/3.11.1/envs/permchain/lib/python3.11/site-packages (from pydantic<3,>=1->langchain-core<0.2.0,>=0.1.25->langgraph) (0.6.0)\n", + "Requirement already satisfied: pydantic-core==2.10.1 in /Users/harrisonchase/.pyenv/versions/3.11.1/envs/permchain/lib/python3.11/site-packages (from pydantic<3,>=1->langchain-core<0.2.0,>=0.1.25->langgraph) (2.10.1)\n", + "Requirement already satisfied: typing-extensions>=4.6.1 in /Users/harrisonchase/.pyenv/versions/3.11.1/envs/permchain/lib/python3.11/site-packages (from pydantic<3,>=1->langchain-core<0.2.0,>=0.1.25->langgraph) (4.8.0)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /Users/harrisonchase/.pyenv/versions/3.11.1/envs/permchain/lib/python3.11/site-packages (from requests<3,>=2->langchain-core<0.2.0,>=0.1.25->langgraph) (3.3.0)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /Users/harrisonchase/.pyenv/versions/3.11.1/envs/permchain/lib/python3.11/site-packages (from requests<3,>=2->langchain-core<0.2.0,>=0.1.25->langgraph) (2.0.7)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /Users/harrisonchase/.pyenv/versions/3.11.1/envs/permchain/lib/python3.11/site-packages (from requests<3,>=2->langchain-core<0.2.0,>=0.1.25->langgraph) (2023.7.22)\n", + "Downloading langgraph-0.0.26-py3-none-any.whl (44 kB)\n", + "\u001b[2K \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m44.4/44.4 kB\u001b[0m \u001b[31m3.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading langchain_core-0.1.26-py3-none-any.whl (246 kB)\n", + "\u001b[2K \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m246.4/246.4 kB\u001b[0m \u001b[31m3.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m[31m5.9 MB/s\u001b[0m eta \u001b[36m0:00:01\u001b[0m\n", + "\u001b[?25hDownloading langsmith-0.1.8-py3-none-any.whl (62 kB)\n", + "\u001b[2K \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.2/62.2 kB\u001b[0m \u001b[31m5.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading orjson-3.9.15-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (248 kB)\n", + "\u001b[2K \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m248.6/248.6 kB\u001b[0m \u001b[31m14.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hInstalling collected packages: orjson, langsmith, langchain-core, langgraph\n", + " Attempting uninstall: langsmith\n", + " Found existing installation: langsmith 0.0.87\n", + " Uninstalling langsmith-0.0.87:\n", + " Successfully uninstalled langsmith-0.0.87\n", + " Attempting uninstall: langchain-core\n", + " Found existing installation: langchain-core 0.1.22\n", + " Uninstalling langchain-core-0.1.22:\n", + " Successfully uninstalled langchain-core-0.1.22\n", + " Attempting uninstall: langgraph\n", + " Found existing installation: langgraph 0.0.24\n", + " Uninstalling langgraph-0.0.24:\n", + " Successfully uninstalled langgraph-0.0.24\n", + "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "langchain-community 0.0.19 requires langsmith<0.1,>=0.0.83, but you have langsmith 0.1.8 which is incompatible.\n", + "langchain 0.1.6 requires langsmith<0.1,>=0.0.83, but you have langsmith 0.1.8 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mSuccessfully installed langchain-core-0.1.26 langgraph-0.0.26 langsmith-0.1.8 orjson-3.9.15\n", + "\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.3.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.0\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpython3.11 -m pip install --upgrade pip\u001b[0m\n" + ] + } + ], + "source": [ + "!pip install -U langgraph" + ] + }, { "cell_type": "markdown", "id": "9431e7f1-07fa-49d9-ac45-29613703dcc1", @@ -42,7 +115,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "61f7ef9c", "metadata": {}, "outputs": [], @@ -54,7 +127,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "fd816e9f-fc94-476d-84eb-0e2a3c370c5e", "metadata": {}, "outputs": [ @@ -82,7 +155,7 @@ " 'Track']" ] }, - "execution_count": 3, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -104,7 +177,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "d9ea4e80-30e6-4d46-b480-35f0be2fb055", "metadata": {}, "outputs": [], @@ -132,7 +205,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "ea958e9f-ab1f-49b5-bd85-16332055297c", "metadata": {}, "outputs": [], @@ -154,7 +227,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "975b039a", "metadata": {}, "outputs": [], @@ -168,7 +241,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "1d5fa446", "metadata": {}, "outputs": [], @@ -200,7 +273,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "a8604a3b-b484-4b2b-a914-4236cb98c524", "metadata": {}, "outputs": [], @@ -232,7 +305,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "0a2a2b74", "metadata": {}, "outputs": [], @@ -255,7 +328,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "da533f50", "metadata": {}, "outputs": [], @@ -278,7 +351,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "id": "b3c07010", "metadata": {}, "outputs": [], @@ -299,7 +372,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "id": "72a14d5c", "metadata": {}, "outputs": [], @@ -318,17 +391,17 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "id": "cff15eb0-62c7-451d-a5f9-4576b24c879e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "AIMessage(content='', additional_kwargs={'tool_calls': [{'index': 0, 'id': 'call_85nJNoDaYBhgTLtl6opmSoSb', 'function': {'arguments': '{\"artist\":\"amy winehouse\"}', 'name': 'get_tracks_by_artist'}, 'type': 'function'}]})" + "AIMessage(content='', additional_kwargs={'tool_calls': [{'index': 0, 'id': 'call_LxRLQdYKVzGHMGgwGTIIMvBO', 'function': {'arguments': '{\"artist\":\"amy winehouse\"}', 'name': 'get_tracks_by_artist'}, 'type': 'function'}]})" ] }, - "execution_count": 13, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -350,7 +423,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "id": "73e74268", "metadata": {}, "outputs": [], @@ -378,7 +451,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "id": "ddf27314", "metadata": {}, "outputs": [], @@ -388,17 +461,17 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "id": "3c896f34", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "AIMessage(content='', additional_kwargs={'tool_calls': [{'index': 0, 'id': 'call_sRsolYD2ynqYbgGWqnNDfH4r', 'function': {'arguments': '{\"choice\":\"music\"}', 'name': 'Router'}, 'type': 'function'}]})" + "AIMessage(content='', additional_kwargs={'tool_calls': [{'index': 0, 'id': 'call_RpE3v45nw65Cx0RcgUXVbU8M', 'function': {'arguments': '{\"choice\":\"music\"}', 'name': 'Router'}, 'type': 'function'}]})" ] }, - "execution_count": 16, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -410,17 +483,17 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 16, "id": "40d86f59", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "AIMessage(content='', additional_kwargs={'tool_calls': [{'index': 0, 'id': 'call_b7iY3Kff2kV0VVQ6JgUrimd7', 'function': {'arguments': '{\"choice\":\"customer\"}', 'name': 'Router'}, 'type': 'function'}]})" + "AIMessage(content='', additional_kwargs={'tool_calls': [{'index': 0, 'id': 'call_GoXNLA8goAQJraVW3dMF1Uze', 'function': {'arguments': '{\"choice\":\"customer\"}', 'name': 'Router'}, 'type': 'function'}]})" ] }, - "execution_count": 17, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -432,7 +505,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 17, "id": "bd6ddd8b-7500-46a7-811d-3bcb937bda51", "metadata": {}, "outputs": [], @@ -447,7 +520,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 18, "id": "27494de5-8345-4c23-bc0e-81e0dd5d47d8", "metadata": {}, "outputs": [], @@ -493,7 +566,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "id": "8aec704a-46fe-4fb3-bdee-11c3bbffc370", "metadata": {}, "outputs": [], @@ -508,7 +581,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 20, "id": "4d5b75c6-73e0-4922-a765-a15be63f869e", "metadata": {}, "outputs": [], @@ -525,7 +598,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 21, "id": "fd4dbf98-dbb3-411a-bad6-2bb334072aaf", "metadata": {}, "outputs": [], @@ -539,7 +612,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 22, "id": "9a1d7243", "metadata": {}, "outputs": [], @@ -581,7 +654,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 23, "id": "dcade924", "metadata": {}, "outputs": [], @@ -602,13 +675,13 @@ "workflow.add_conditional_edges(\"tools\", _route, nodes)\n", "workflow.add_conditional_edges(\"music\", _route, nodes)\n", "workflow.add_conditional_edges(\"customer\", _route, nodes)\n", - "workflow.set_entry_route(_route, nodes)\n", + "workflow.set_conditional_entry_point(_route, nodes)\n", "graph = workflow.compile()" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 24, "id": "ac65d6d2", "metadata": {}, "outputs": [ @@ -635,7 +708,7 @@ "name": "stdin", "output_type": "stream", "text": [ - "User (q/Q to quit): do you have any greenday songs?\n" + "User (q/Q to quit): what songs do you have?\n" ] }, { @@ -644,25 +717,44 @@ "text": [ "Output from node 'general':\n", "---\n", - "content='' additional_kwargs={'tool_calls': [{'index': 0, 'id': 'call_DEivnvJFmiaX8o55r5yhdQRM', 'function': {'arguments': '{\"choice\":\"music\"}', 'name': 'Router'}, 'type': 'function'}]} name='general'\n", + "content='' additional_kwargs={'tool_calls': [{'index': 0, 'id': 'call_1IfQfrOHQXRuqz20GBr0GB7p', 'function': {'arguments': '{\"choice\":\"music\"}', 'name': 'Router'}, 'type': 'function'}]} name='general'\n", "\n", "---\n", "\n", "Output from node 'music':\n", "---\n", - "content='' additional_kwargs={'tool_calls': [{'index': 0, 'id': 'call_U4CNjjevWrB3XtELp2mYYeGN', 'function': {'arguments': '{\"artist\":\"Green Day\"}', 'name': 'get_tracks_by_artist'}, 'type': 'function'}]} name='music'\n", + "content=\"I can help you find songs by specific artists or songs with particular titles. If you have a favorite artist or a song in mind, let me know, and I'll do my best to find information for you.\" name='music'\n", + "\n", + "---\n", + "\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "User (q/Q to quit): anything by t swift?\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Output from node 'music':\n", + "---\n", + "content='' additional_kwargs={'tool_calls': [{'index': 0, 'id': 'call_HLdMla4vn6g3SZulKZRtNJdp', 'function': {'arguments': '{\"artist\": \"Taylor Swift\"}', 'name': 'get_albums_by_artist'}, 'type': 'function'}, {'index': 1, 'id': 'call_ZtC6LQpaieVentCQaujm5Oam', 'function': {'arguments': '{\"artist\": \"Taylor Swift\"}', 'name': 'get_tracks_by_artist'}, 'type': 'function'}]} name='music'\n", "\n", "---\n", "\n", "Output from node 'tools':\n", "---\n", - "[ToolMessage(content='[{\\'SongName\\': \\'Maria\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Poprocks And Coke\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Longview\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Welcome To Paradise\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Basket Case\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'When I Come Around\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'She\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'J.A.R. (Jason Andrew Relva)\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Geek Stink Breath\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Brain Stew\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Jaded\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Walking Contradiction\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Stuck With Me\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \"Hitchin\\' A Ride\", \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Good Riddance (Time Of Your Life)\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Redundant\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Nice Guys Finish Last\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Minority\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Warning\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Waiting\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \"Macy\\'s Day Parade\", \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'American Idiot\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \"Jesus Of Suburbia / City Of The Damned / I Don\\'t Care / Dearly Beloved / Tales Of Another Broken Home\", \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Holiday\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Boulevard Of Broken Dreams\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Are We The Waiting\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'St. Jimmy\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Give Me Novacaine\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \"She\\'s A Rebel\", \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Extraordinary Girl\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Letterbomb\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Wake Me Up When September Ends\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \"Homecoming / The Death Of St. Jimmy / East 12th St. / Nobody Likes You / Rock And Roll Girlfriend / We\\'re Coming Home Again\", \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Whatsername\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'In Your Honor\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'No Way Back\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Best Of You\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'DOA\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Hell\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'The Last Song\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Free Me\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Resolve\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'The Deepest Blues Are Black\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'End Over End\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Still\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'What If I Do?\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Miracle\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Another Round\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Friend Of A Friend\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Over And Out\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'On The Mend\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Virginia Moon\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Cold Day In The Sun\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Razor\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'All My Life\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Low\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Have It All\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Times Like These\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Disenchanted Lullaby\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Tired Of You\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Halo\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Lonely As You\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Overdrive\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Burn Away\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Come Back\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Doll\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Monkey Wrench\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Hey, Johnny Park!\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'My Poor Brain\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Wind Up\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Up In Arms\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'My Hero\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'See You\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Enough Space\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'February Stars\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Everlong\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Walking After You\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'New Way Home\\', \\'ArtistName\\': \\'Foo Fighters\\'}, {\\'SongName\\': \\'Speak To Me/Breathe\\', \\'ArtistName\\': \\'Pink Floyd\\'}, {\\'SongName\\': \\'On The Run\\', \\'ArtistName\\': \\'Pink Floyd\\'}, {\\'SongName\\': \\'Time\\', \\'ArtistName\\': \\'Pink Floyd\\'}, {\\'SongName\\': \\'The Great Gig In The Sky\\', \\'ArtistName\\': \\'Pink Floyd\\'}, {\\'SongName\\': \\'Money\\', \\'ArtistName\\': \\'Pink Floyd\\'}, {\\'SongName\\': \\'Us And Them\\', \\'ArtistName\\': \\'Pink Floyd\\'}, {\\'SongName\\': \\'Any Colour You Like\\', \\'ArtistName\\': \\'Pink Floyd\\'}, {\\'SongName\\': \\'Brain Damage\\', \\'ArtistName\\': \\'Pink Floyd\\'}, {\\'SongName\\': \\'Eclipse\\', \\'ArtistName\\': \\'Pink Floyd\\'}, {\\'SongName\\': \\'Lucky 13\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Aeroplane Flies High\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Because You Are\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Slow Dawn\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Believe\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'My Mistake\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Marquis In Spades\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \"Here\\'s To The Atom Bomb\", \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Sparrow\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Waiting\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Saturnine\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Rock On\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Set The Ray To Jerry\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Winterlong\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Soot & Stars\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Blissed & Gone\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Siva\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Rhinocerous\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Drown\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Cherub Rock\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Today\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Disarm\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Landslide\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Bullet With Butterfly Wings\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'1979\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Zero\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Tonight, Tonight\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Eye\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Ava Adore\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Perfect\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'The Everlasting Gaze\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Stand Inside Your Love\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'Real Love\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}, {\\'SongName\\': \\'[Untitled]\\', \\'ArtistName\\': \\'Smashing Pumpkins\\'}]', additional_kwargs={'name': 'get_tracks_by_artist'}, tool_call_id='call_U4CNjjevWrB3XtELp2mYYeGN')]\n", + "[ToolMessage(content=\"[{'Title': 'International Superhits', 'Name': 'Green Day'}, {'Title': 'American Idiot', 'Name': 'Green Day'}]\", additional_kwargs={'name': 'get_albums_by_artist'}, tool_call_id='call_HLdMla4vn6g3SZulKZRtNJdp'), ToolMessage(content='[{\\'SongName\\': \\'Maria\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Poprocks And Coke\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Longview\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Welcome To Paradise\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Basket Case\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'When I Come Around\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'She\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'J.A.R. (Jason Andrew Relva)\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Geek Stink Breath\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Brain Stew\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Jaded\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Walking Contradiction\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Stuck With Me\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \"Hitchin\\' A Ride\", \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Good Riddance (Time Of Your Life)\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Redundant\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Nice Guys Finish Last\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Minority\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Warning\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Waiting\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \"Macy\\'s Day Parade\", \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'American Idiot\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \"Jesus Of Suburbia / City Of The Damned / I Don\\'t Care / Dearly Beloved / Tales Of Another Broken Home\", \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Holiday\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Boulevard Of Broken Dreams\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Are We The Waiting\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'St. Jimmy\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Give Me Novacaine\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \"She\\'s A Rebel\", \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Extraordinary Girl\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Letterbomb\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Wake Me Up When September Ends\\', \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \"Homecoming / The Death Of St. Jimmy / East 12th St. / Nobody Likes You / Rock And Roll Girlfriend / We\\'re Coming Home Again\", \\'ArtistName\\': \\'Green Day\\'}, {\\'SongName\\': \\'Whatsername\\', \\'ArtistName\\': \\'Green Day\\'}]', additional_kwargs={'name': 'get_tracks_by_artist'}, tool_call_id='call_ZtC6LQpaieVentCQaujm5Oam')]\n", "\n", "---\n", "\n", "Output from node 'music':\n", "---\n", - "content='Yes, we have a variety of Green Day songs available! Here are some of them:\\n\\n1. \"American Idiot\"\\n2. \"Basket Case\"\\n3. \"Boulevard of Broken Dreams\"\\n4. \"Good Riddance (Time of Your Life)\"\\n5. \"Holiday\"\\n6. \"Longview\"\\n7. \"Minority\"\\n8. \"Wake Me Up When September Ends\"\\n9. \"Welcome to Paradise\"\\n10. \"When I Come Around\"\\n\\nAnd many more! If you\\'re looking for a specific song or album by Green Day, feel free to ask!' name='music'\n", + "content='It seems there was a mix-up in the search, and I received information related to Green Day instead of Taylor Swift. Unfortunately, I can\\'t directly access or correct this error in real-time. However, Taylor Swift has a vast discography with many popular albums and songs. Some of her well-known albums include \"Fearless,\" \"1989,\" \"Reputation,\" \"Lover,\" \"Folklore,\" and \"Evermore.\" Her music spans across various genres, including country, pop, and indie folk.\\n\\nIf you\\'re looking for specific songs or albums by Taylor Swift, please let me know, and I\\'ll do my best to provide you with the information you\\'re seeking!' name='music'\n", "\n", "---\n", "\n" diff --git a/examples/code_assistant/langgraph_code_assistant.ipynb b/examples/code_assistant/langgraph_code_assistant.ipynb new file mode 100644 index 000000000..d9ee03375 --- /dev/null +++ b/examples/code_assistant/langgraph_code_assistant.ipynb @@ -0,0 +1,1010 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "10291bbc-be96-4d65-8b57-e39950332a21", + "metadata": {}, + "outputs": [], + "source": [ + "! pip install langchain_community tiktoken langchain-openai langchainhub chromadb langchain langgraph faiss-cpu" + ] + }, + { + "attachments": { + "15ffc4e1-0f2b-49fb-99c9-2bbda7643172.png": { + "image/png": "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EEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAgTjOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRCIEAgLgSoFIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBABAS5S8DhcBgNtsvhSPkYM8b/uZYZf53fjd/dU/Jv7m/MIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQwwRMkvF/zsmUPOP8bsyZnH2VnH8vzRvfvZclb8D/IPA3BUxGEMYZhWG6wgSch9XhsKV87K6/zgCbV5DtCmszzUEAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIEsEkoNyFiMwZ3zMzgDdpXkjaMeEQGYECMRlRitM13UH3dwBN2tyAC5Mq0u1EEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBDIkQIpgbkIIzhnkdlkDDqYHLAjOJcjD2Y2VZpAXDZBZ+VukjsxGkNL2u1JxscIuhl/mRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCC7BYxhLc0RMjs/lsjknnPZXQP2F94CBOLC+/i4a5fc6+1S4M0ZgDOib+7fmEEAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIF/XiClx1ykEZQzes0ZPeac+eeYcrcAgbgwPv7u4JvN2fPN2euNdH5hfLioGgIIIIAAAggggAACCCCAAAIIIIAAAggggAACXgImIyAXZfSWM3rKGT3mCMp50eSiWQJxYXawU4JvVtltiUbwLTHMakd1EEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIPMCl4JyyYE5I7ccU64RIBAXJofa4cz5ZgTfbLYEhp0Mk2NCNRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQyGoB5/CVyT3ljKCcyWTO6uIpL8wECMT9wwfEbjd6v1kT6P32Dx8Hdo8AAggggAACCCCAAAIIIIAAAggggAACCCCAQHYLmC15Lg1fSS+57LbPrv0RiMsuaa/9OIefdA476QzAORw2r1+YRQABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgdwm4MwhZzGCciZnPjmTKbc1/4puL4G4bDy8yQE4Y+hJm/WisVdHNu6ZXSGAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEDYCxhDVVoiomU2O4etJCAX9scrAxUkEJcBpL+7SkoAzsj/lhyAs//d4tgeAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEErmQBIyAXERFDD7kr4BgTiAvhQXQNQZkcgHMQgAshNUUjgAACCCCAAAIIIIAAAggggAACCCCAAAIIIHDFCZhMluQecgxZmXMPLYG4EB07uz1JtqR4csCFyJdiEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBDILQLJOeSMHnJmI5ccU84SIBCXxcfLYbfJajUCcEYgjgkBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQyCoBsyXK6CFnDFlpDF3JlDMECMRl0XFyDkPpHILSbruYRSVSDAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQWsAZjDNb8hgBOVPqH1kSVgIE4rLgcDiHobQmxcnoBpcFpVEEAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIJC2QHL+uMi8DFeZNtM//iuBuL9xCFJ6wcUbveAS/kYpbIoAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIXJ6A2RJtDFcZTe+4y+ML+VYE4i6TmF5wlwnHZggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIJClAvSOy1LOLC2MQFwmOckFl0kwVkcAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIFsESB3XLYwZ2onBOIywWW3W2UzcsE5HLZMbMWqCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggED2CJhMEYqIymsMVWnJnh2ylzQFCMSlyeP50WbkgXMG4ZgQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgfAWMCkiMp/MlsjwrmYuqB2BuHQOcspQlPGyG4E4JgQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgpwgwVOU/f6QIxKVxDBwOu6xJF+QwhqRkQgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRymoDZHCVLpHOoSlNOq/oVUV8CcUEOozMfnDXxgvGrPcgaLEYAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEwl/AmS8uIiofeeP+gUNFIC4Aut2WmNwTLsBPLEIAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEcqCAkTcuKr/M5ogcWPecW2UCcX7Hzma9KJs13m8pXxFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBnC8QEZlPZktUzm9IDmkBgbhLB8rhcCQH4Oy2hBxy6KgmAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIJB5AUtEjCwR0ZnfkC0yLWDO9BZX4AYE4a7Ag0qTEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIKCAc2RA5wiBTKEXyPU94pKDcElxstsTQ6/NHhBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBMBEwW6KTe8aZTKYwqdGVV41c3SOOINyVd0LTIgQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEMiYgN12MblnnDNewhQagVwbiCMIF5oTilIRQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAg5wgQjAvtscqVgTiCcKE9qSgdAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEco6AKxiXc2qcc2qa6wJxyUE4IwkhOeFyzklKTRFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCC0AgTjQuObqwJx7iCcLSE0mpSKAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCORQAZvRkclmvZhDax+e1c5VgTi7EYBzfpgQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRSCziDcXZbYuofWHJZArkmEOc8aZwnDxMCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEBwAWvSBSPFlzX4CvySYYFcEYhznizOk4YJAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgfQFr4nk5HPb0V2SNNAWu+ECc8yRxnixMCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACGRVwJMdXHA5HRjdgvQACV3QgznlyWBOdPeE4SQIcexYhgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAkEFHA6bbElxRs844ixBkdL54YoOxDlzwjkcjGGazjnAzwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAQAG7PVF2W0LA31iYvkBE+qvkzDVs1gROjJx56Kg1AggggAACCCCAAAIIIIAAAgggkCxgTzipTWvX6PfNO7XvyCldiE9SRExBXVW2kuo0uF7NGlZQviv6NXNOBAQQQAABBMJDwNnxyWSyyGyJDI8K5aBamIzuhFdcf0K73WoMSXkuBx0GqooAAggggAACCCCAAAIIIIAAAgggkCJg1/EtczX+3Yma9sMK7T6TFATGrILlGqjHPQ/rmcd6qUbhnBCRS9TCV25V7zHrZHO3KlIdhs3Wl0/XcS/5p2Yc9iN6+9aOenXJcXcVTJZyGvr1Qj3XKp97WaAZR+JR7TgYpWqViygnHIlAbciaZYk6sOOQClatqIJmk1+Rdv358f1qOfRHec5qixrdP1lz32otHm37cfEVAQTCUMCkyDwFkgNyYVi5sK3SFffvYnJeuCRnXjgmBBBAAAEEEEAAAQQQQAABBBBAAIGcJOBIPKAvX+qr65rfozemLE4jCOdslV1nD6zT5DceVLPGt2nMooPGkvCfbImJiouPV7z7E6eERE9Y7p9tgUNJCYledYtXXFy8kuxpvcd/QRtnvaNbm96op6bszRHHIFTGp3fM10t3tlPL/p/paJBD6rAGPv5pCYeqvpSLAAIIZF7AISv54jLNdsUF4pzdI+XICZddmT5WbIAAAggggAACCCCAAAIIIIAAAghcsQK2s3/ojT49NWDUTzqakLmwxPkDi/Xcrb304jf7cnUgKHtPDruO/jFDT3Rtoxt6v6rZW09n7+7DaG9Jpzdr4vN91ej6vnrrm43K5OkbRi2hKggggED6Ag5jRELyxaXv5L3GFZUjzm5L4gTwPrrMI4AAAggggAACCCCAAAIIIIAAAjlAwJG4S+MeeECv/bjzsgNp9vgdGjPoYVWrNlP3XROdA1qdk6to04ZPH1GXx7/WsaTMBU1zcqsD1T1+1xfq0+FpzT8QF+hnliGAAAJXpEByvjhzhMzGhyl9gStGyWH0grMyJGX6R5w1EEAAAQQQQAABBBBAAAEEEEAAgbASSNTqccM04vu/UgXhTJEl1abvfRrYt7Oa1auiEvmNXli7/tDPMz/XmPFfa/NJT6YtZ5Ossav15rBJav/NgyoX4Z+fK6waHZaVMZnzqkGnHrq/ijHilGsyF9O1Zfyzl9l0cs9+ncjlQTgnUdKpA9p11MvL5Rbwr1mF67TWwIFXeeUINKt889KyBFyfhQgggED4CtiMISpNUc58cfx7m95RumICcclDUip3v4GT3sHmdwQQQCDnCJzS2Ntv1os/HQ1aZec/8iazRRaLRVF5ohWTN78KFyuucpVq6YYOvXRX7+YqHc2FQFBAfriiBRIOTFW3ps9rTZzV3c58Fe7SD6tHqmEe/rtwozCDAAIIIIAAAmEhkHDge732zmJd8KtNVInmRp64T/XojVfJO7dKuZrN1X9Yc93ap50evO1JzdgW67WlQ3sXT9S0Nf30TPP8XsuZzZhAIXV87A11zNjKrHUZAqVvvF//d+NlbMgmCCCAQJgJOBy25BEKLRH0Qk/v0FwRgbiUISkT02srvyOAAAII5BABh5EI3GokMHcmL8/MtH/PX9r42yrNnfE/vf1mZ/3747c1sJnvTXtmymNdBHKsgCNJF+PjjP+GPBniTfFJshn/bUkE4nLscaXiCCCAAAIIXJECVv06eYoWHvd9rmOKrKFhkybpsRuLBW11/mo9NG7CHm3r8Jo2xdnd6zmsu/Tdl6uNQFxb97JAMw77Of25fL5m/bxKG/7cq+On42Sz5FXxshVV99pm6tStvRpWyFwwz55wTGvm/aDvf1qtHfuP65w9r0pWrKlWnXqqV8c6KnyZ3Z6cdd22Yr6+nbNMG3ce1PEzCYrIX1QVq9XRDTd1Vrd2tVXIkhXXeYk6+OcmHYj1XEfKlEdlatZV+YLOcGiC9m/ZpEPnrNpx1D906tDZY9u1dnVScuDUHFNCdepVVN4A+H+/PXYd37VRu7zOG5OlkGo0rK7C5jhtmjNFH36xRDuOJalYpXpq3/tO9WlbTTF+dUmK3aVFs3/UkrWb9NfeIzp1Ll42U4SiYwqqeOlyurpuI7Xr2kFNKhXw21K6cHibNu07q/gdR+R79hq95OKOafPatTrlPCamaJWtVUflCqSEk+OPbtfGPbFe3QlMylequupWLJRqH74L7Dq5a5Vmf79Iqzds174jpxVvNSt/0VKqWqeBWrXrrHZNK6Rqo28ZRr2PbNfmvV77N+VV+dq1VSa/8/yx6djWxfriy7n69c/9OnbGqgLFy6hWkzbqdWsnNSjrL+hfuvN7gvb+tlCz56/U71t36/DxWMUn2WSJyqeiJUurWs0Gatmho25qUFr+/SwDlcYyBBAIbwFnBymzOTL5Zfnwruk/WzuTw5j+2Sr8vb07q5+UeFYyhqZkQgABBBC4MgQc9pMac2srDZ136G81yFLwWr3x9Vd6omXwm/e/tQM2RiBMBRL2T1K7Bk9rdZznAUreCvdq/vpRahzj/T55mDaAaiGAAAIIIIBArhFwJK7Xv27opfGbzni12aTat72vRVP6qLDX0kCzDvspfdK/gx79eqcR2LCoUJlqqt/wWjXvcJdeub95oE2MZXH649txGv7qx5q/5USq4TBdG5kiS+jGOwbr9VceVOPSUa7FQf7atXfZR/rX46M1e+tJryCLa/UIVWjcVyPHDVfBL+7ULW+v9dpvhDq9tEDfDqvnWtnrr12H107Ti8++qWmrDngNZ+i1ihH2uurqTho66jUNurmi/s5b9w77Yb3Zta1eXnTEswNzOb046xe91Ca/HLa/NLxtZ721+oTn9yBzBao+oAW/jVQDnxEZsqo98ZoysJXun/qXe+/mvJ30zZ4xSvrvQA0YtUznfJ545tfdY5fpo4EVk4OEDnusln44XI+//qW2nvQPo7mLTJ5xngdtB7ykd1/vq+r5XdfSNq39bx+1Gr4oyDHxlGGyVNaIeUv1XIt8xkK7tr5/jxr9a448Y1eY1eShL/Xzu20V7Cw7s32O3nzpLX08e4POeS7xPTtJnotUxUa3augbL+jelmWDDHVp07p3+qrFsAXuepsirtabCxfqkWrbNfbZp/Ta5+t03scuZTfmvBV1+9B39PbTrVTUHDjoe+bP7/TiE//WpCW7UwUnfSubRzVa3adR419UhyoZCe75bs03BBAILwGT8QJDRFR+hqhM47C4/vVIY5Xw/slmvUgQLrwPEbVDAAEE/jEB29nf9crAl7T4hOcW5x+rDDtGAAEEEEAAAQQQQACBVAIXd63Ush3GC9bek6m40YOpXbpBOOcmJnNRdX3sBb336ZdavXWHDu9cqZ+mjw8ahHMk7teUIb3U5s7/aF4aQThn2Y6kY1oyZbg6trpbn6w57VwUZLLpz29eUJdeL2pWwCCcczOr9q2donu73K2Jf6QfxErZkU3bZ72izl2f0GdBg3DONY3eYdtm65leXfXIhxuM/kjhOoW6PQ5tmTpUD7+93C8IZ5wnERXV4LoSl4Y4Pa+fRw7UrU9NSTcI55R0ngcLPnpcPe+eoN3ZnhMvUVtmvqDWN/bX29+nFYRz1jRJe3/9Qo926agHxqxONdSrc41gU8KpRRrSqbee+yxwEM65nT1ur6aN6K9Bo38PGGQ7u2mS+nR5WB+nG4Rzlpag7UveV9+OD+nbnWkHQp1rMyGAQHgLOBzW5CEqw7uW/2zt/s5LMv9szY292+3OA2wE4pgQQAABBHKBgEllGnRWp+uKuwfWs1mtSky4oNjjh7Tl9/XadSr1BXzc/pkaM+FhtXyuXpA3AnMBHU3MdQIRBWqo2z136xqvBwWRxZvpqsjAb67mOiAajAACCCCAAAJhI3B6w2btSvAd5ciUp46aXl8ww3Us2aSHHmiS/urOkTdmPnefBn38mxGyyPh0fv9Perz3fYqc/Znuruvs1eQ7nd3wse57ZKJ2nPdth+9aKd8Sj6/SNz8H+iX1shOrxujO+8Zpy7n0y3Vu7Ug6qMnPDFDJcnP0SpeSl4JOqcv9p5aEuj2OhBV6c/gFnbGl7s5VqEZbta2TksPoxLIxGvzmolTBurRd7Nrx42iNm9VLo3oWT3vVLPvVrn3zX9dtAz/UzosZOwecu3aeB58Pu1u2iK/18aP1gvayc1XTYTuqCUMe1b593rkWXb/6/XWc06y3/6u5/SarexnPwJIO6zaNGjJSSw5lLgx8Yb8RQB78sRr88IgqRXCv4qfNVwRylEDyEJWWKKNXXI7v+xUS9xwbiHMOSek8uEwIIIAAArlFwKyqrR7WmJE3BBxH3n5hl6aOeFxPjFvhd0OVqDWz5mrv09eoChf2ueVkyfXttBRupmfeaZbrHQBAAAEEEEAAgXAXsGr/roPyf8U6pmRllS+U1Q/l7To45y099dG6VEG4AuWa6+4Hblfb68rLHLtPK2dP1YSvjPxeVk9AJ/HYEg178B1d+/Mw1fUa6ts5lOP/XvlQ64xcWr5TpKq2uF0P9e+oumUidGTLcn32gZELb2cGgh1GQY7EjRr1zIfa6BeEiyxcV/0G369uTcvLdniDZnz4kab/etg9zKUjabfeHzpK3Vu9qUbuYRR9a/b3vkWrXK2aamSL0/nD2/XnwfNexZlUqFwtVS+VEvCKKVdO+S49j82O9jhs53TGr3NlSuUsqtehvaoZL6U57Ic0efRX2p3oObYyBvOs0uIuPTqgneqUK2j0/DqlXRuXaPIHn2uNd2DJcVIrF65XYs+bk4Nb+cpUVaNGsbLGH9WmzQd9eiJa8pVWnVqlk9czWcqoVIHMJwdMOrVQwx7/JFUQzpSnjNr3G6DbO1yrUnnOa/va+frk46+14ZjXi6n2E/pq+BA1avyDHmuSOr+d10EzTrYz2rvPucSs4tVv1oAHeqppzeKK37dGU8dO1Nw/T/kMtWo9s1xzfzql7v1LuouJXTVdU9cec393zhQo30L9B/bSDUaewGL5IhR3cq9Wz/tCH09bqRPuFwYd2rf0A326yBhKtl16OfJ8iucLAgiEoYBz9MKIyECZQcOwstlcpZwbiLMnGf94+l/kZLMeu0MAAQQQCBsBc74q6jfyQyN5dRcNnbPX50bh1PaN2h7nUJWCKTfzznwA29fv0Bn3xb9JkUUrqUF1483G87v17YQJmr5ki07bCqjatTfq9nv6qGXV1G/k/v0E45nlO6+dG7bpRLznbciIguVUz7jBc76LaL+wTz9+8YVmr9yqvQfPKKJwCVW7poV63H6Lbqia1k1N1iQ6T2lN1iQQ95exXzyilXNn68el6/Tn7kM6fSFRZmP88WJlKqpOg6bq3L2jri2X0Ys9o467V2v2N/O0bP0uHT52RonmfCpRvorqN22l7t1vUo2inrc7/evi+z3rE5FfOPyH5s5aoJXr/jSO4wnFxifIbs6jAoWLq3zVq9Wo+c3q0r6+ikcFfzjlSDyuzX/s0QXPqSJz9FWqXb+SvN/htl88pi0b93qtZ1KBMlerdvmUm/XE09s158sZ+nHNNh08fFqO/EVVvvp16tijhzo2KZfu27Uuq/ijGw3vWVpgnJsHjsbKXKiEqtRuql59b1WLGoWT39Y+s2+zth2Oc21iPAfIr8r1aqqET04Rz8/MIYAAAggggMCVIGDX0aPGNYZfU2KKFFVhS/BrHb/VM/TVYd2qsSNn6rBPbymTSl83SNNmjlCzEp5HZJ173ak7O7+gnvcbQxFe9NTu2PqP9N9Jd+iTh6u5R9uI3/atpvy8368NkWpyzwf6elwPlXS9DHhTe/W+o6Oe6TFAH/x2PN06H5r9iSat813PUrCx3vzuSz3axJU5r4269Wyv6n1u1+sLD7jrcG7XdE2c8bga9i+X5b3iTJZyeuj97/WQMTjhopd7qPNbq9xBQBkq1989Vt8Mb5AqT112tscUYeT2u72ful5fRhcPbtDcr37XzZ3rJ98zJR5drp9+PerjX6LhEH397TDVcUUNjV/bduymLnUi1LTPxzrqPmfsOrZvr5zdAqKMttbu95aW9pPO/jpKzW76j/5y319Khav31dSFL6j6ZY9IYdWqD94zct5d8KmrpWADjZg6VU+3LeU+tm073KJ77+6kB7sP1lfbPIFee9xGvffK5+r13UMq6zoPfUrz/mJWjU6vauaUh1Td7dBW3bvUU79WD+r7fd6dIS7qr61/GQHtkpdekrXpwPotOuQVuJa5vB7/8HMjr6B3ELClOvXso04171WnYfM8Q2faj2nxnLVKaHez8nhXiXkEEMhxAnab8fzC6BVnNnv+Tc1xjQhRhXOkiLM3nJXecCE6JSgWAQQQyLkCzjcNe/W6Xi8ZgTjvATEcF0/o2Enj5Y2CKamvHRdX6aUe/fXdcc8bg1VuGas1Yyvq5dse0Pg1R9w3sYt+mqVPPpinKb9N063lXMGZ9BKMf69P3nszyxKmu46IPWGz/tuvjz7965xrkUrdMFy/zHtQx2aO1ODnJurXw943SMZq307Xe2+OVJdH/q23X+6litGBHmgkaN7rD2Qs0fmShfp60gQt80p07qpMugnEv/tKY994OQMJxF0lGi9nGkHTlZNHaujrU7TmgFeQxrOKZnw2Qa8OK6Wb731eb7/WTzUKBB8GIenUen0wfLhGTl7h9Ramp7Dpkz/QiOer644nXtVrT7VT6TRunDOWiHyK/jtiWIYSkdsv7NDkEc/r5QmLdMTrgY+ndilzH73zRvLbpU++OVrP9qwesIdo4tE5eqTj01od58nknrfCvZq/fpQae73BnbD/O93f/nn97h7qJkJtnvlBs0ZcrZUTRuiRlz/X9jOeMlJq8J0mvvMfXdPlCY0f/6SaeD208q+rw3gTd8F7L+upkV9pm38538/QB6PeUsfBb+q9lztq49ghuvW9390PckwRDTVu3WwNrM7tuL8r3xFAAAEEELhyBByKu5jovvZ2tcsSFaU03jlyrZapv2eWT9dX60/5bGPO30Qvf/SiTxAuZYUI1bp1uMas26Ceb6+W+2rIcV7zP52mnQNfVI3k60Sbdv68TFv8htaMKX+b3hjZ3ROEu7TXqOLNNfzN/vqx0+h0co2d1Y/fLNNpr5eqnL22Wtz/sjEEpysIl1KoOV8tPfH6QM1o/aq2uurhOKvF3y/Qmbv7q6g50PW/D0M2fMnG9pjy65aXpmrKsw3dQZ1nhiUoKSrlmjKqdB/N2dtNxw7s1a7de7RnzwHlrdPLJwjnAilWt6Yq5THrqNc19cXY04o1Ak6F0g1suUq5vL/2i2s0aervRmZB7ymfbhk6Rv/yCsK5fo2p2EXvjN+g341za0ei68Rx9jb7XN9s6q/BDWJcqwb8a87XXMNGD/QKwqWsFlWqne7qVE2zPtzovk535iQ8feKE13cp3vjv2Gcy7gOWz1qofU1uUYV83udglBo/+KLez9tRKl1OlSpVVKXKFVSygOte26cUviCAQA4UcPaKc744zeQrEPxJle96YfXNGVk1nsyFVZ2oDAIIIIBAeAhE54tJfdNuvMDhfIkjzclxWBMee1LvewXhXOsXqlRf15R0vbsS6gTjrr1m9G+iVo99WF0HjksdhLtUhCPxsGa9O0jd7/pQ27y7SKW5i4wmOncWEpoE4g7rQX025DZ1HvRh0CCcqwmOxCP66aMn1bXXm/r9TOBrhItGbo/BXW/XMxOXBwzCucqyxu7QZ6/crS79PtKO+MDnTVYnIrdf3KbRd/XVoLEL0wzCuep4bv9yvXpPLz05ebvnwZDrx7/512E/rZlD71DXxycHCMK5Co/XxtkjdWe/MdoWJGjosB3W1Cf6qfdz01IH4S4V47Ae19x3H1SP+6bqUJL7EZdrJ/xFAAEEEEAAgVwg4P2I3tVcu9XmF4Bw/XK5f41r5nkrUvWGq9FxgG6tnTKMYuqS86mVMVxlo/y+Qwqe3rJES3a6gg4JWv/7X37XYxY1uKWPmhYJ/MitaOMu6nR1WqNVGGGOhE1a8esxnwClyVJJ7bvVDzgiQf66N+lmvzIP/LZam4Ncp6Vua2iXZGd78pTsqEEPNHAH4ZwtMxlBuJRXMlPaabLEqGTFmmrWuqP63nu/ujcu6gZwWM9oyy+zNPa1f6nXrW/qN68gnHMlW2JiqqFN3Rtn4cy53xZr6T7f3nCRxdrqvv61U/U2dO222PV36c7mnuEincududt+nrfT7xx1beH5W/ya1mpZPlAwzKIqVcu487SnbOFQohF489x1WVS2Yhn5hvritXj8ANWp1kgd+j6lkR99q1XbTiTbmfPV1u0P3aPbb7lJ19erShDOcxiYQ+CKEHAYIxnabZnJxHpFNDvdRgS+Kkh3s39uhZTccP6jh/9z9WHPCCCAAALhJJCoDcZwfhf8YycRBVWkkCuQFri++5eO1Wvf/+V1M+FaL0L1O3RQlUs9o9wJxs9mLGjgSpj+2uyjAcp27ePy/57a9j8NGT5bJ7yHAQlYnFVbZxtv0D43T7F2f6DUG6QkOv9OJ9zDsHjW8U507nwb0pVAfGtsxkycJbkSiD8yboMRxgs0ndeC1x/R4Im/JQ/9EmiN1Mvs2rv8HT069Hud9Ku3/fw6vdTvMf3v9+M+DzRSl+FakqTNPwzXfU/P1hk/r7+biHxPqmNl1Zr3XtSr83Zl6hxxBio/ffZpfbHNu/+nq/6X+9emzdOHatC4NalytaQu0aH9K97TO18eCFDvRK0a86SGTFibgeNn1aZvhumFL/7K4LFJXROWIIAAAggggEBOFTApf75ov4f8UsK5WJ3P+KVluo132E9q/YaDftcskWpwQ1Ol9c5+nnKN1LSab9DMYd2ujRtSRmpw2E4aQ4mf87uGyaPaDeoEHLXAWVFTVDXVr+0J/ASqvPXULu086jfShaW8qlUPHDQ0RVRW9creQwBKSSf/0o6D4fEgNDvbU65JKzUKEgQNaH3hkH75YbJefXawbml7gyqWrqFr296jp17/nxZsOprFAeFANQi0zK5DG7bqoNdQl861StZrqoaFgz/KNVlKq8UNVdzDpqaUbNVfG7cEuedy7dukIuUr6KqAvfwsKlQov3sYTNcWdrsnDOdcVrx1O7UqlXoki8Qzu7X420/18uP3qVWDmipTpZk63/m0Rk9epF2p8iq6SucvAgjkdAGbMZphui/E5/RGZrL+aT+VzGRh2bF6cm84v0uc7Ngv+0AAAQQQCH+BY2s/1isT1/ndYBtJoivUUOV0EpUnxcYGfLPRZKmsdp3rJL91mB0JxjOrnHjiiJIzRxhDsDTsdq/uu62lqhRO1M41s/XB+BnafMr75jtJa/73b33c90Y93TytRw5GoCwDic6ddQ1VAvHY3ybomTEr/IJBJhW/uoMeeOjW5OTh9lM7teirTzXhh80yUgBemqxaN3Wk/nfvzXqqmauNiVr2f6/oA7/k4TIXVPPeD2mgMZxpSctxrfz+fxo/dY1OuwNlSVo7+WWN691CL7T2DAGU1YnI7QnrNGnKGp/hVE15yqnjPfeoR6u6qnBVAZkuntKO3xbq04++1LojnheSrLG/aPx7i9VrbAe/N1BdHpn969DxffuTN4ooWFU97r1Xt7SsqYJG0G/JlxP04XebvKyN1Yxhj5b8sFDn+veX9yOqhP3f6t/vLNZ593FJqYcpT1l1uvcB3dH+GhXVSf2xcIY+/PQn7YtL1JkzgUOymW0B6yOAAAIIIIBAThKwqFTpYqkCcXHHDuloonEhkcFcsfaEC4q35FW+gIEEw8N6VEeOe66hkoVMhVW2Qkqu2mBipojyKl/G6Oez3nuNBB07dNJYUMS4FopVbKz39bax2LjGLFo8dUDCU0KkSpZK2a9vKMOzRuLRE0a+at8LKYd1o97o21PjA3UhNDY9tuOopwBjzmE/qgMHjLqFwTDf2dce43yqWFGBw5U+PIo7sELjRr6rCV8v1R7/Y+i7qs83k8mc6nz1WSFLvlh1+LDv0I9GCFdFy5dXgTRzJ0aoUoWSyUEz7zj2OeO/J+f5FBN0WyNPdKFCQduVJypQTznfhkZd1UnDX+qq1UNmBnyZM2Vtu84eNnrofeP8fKLhT1dWp7sG68Xn7laDNIa7990T3xBAICcIOBw249+hJJmMfHFMKQI5KhBHbzhOWwQQQCB3C1w8d0x7jHH8XYPD2K0Jijsbq6MHdmrd8tn636Qfteuc9y2H08tIot22na7O4E18TKmG6tu/h64tLe1Zt1Dfra+httfmTYbPzgTjmTrSpiLq9e9pmvh0E6XU1Egu3q6L+nS/3hju4zktPuzpMeWw7tDUj+bpoea3yfed2cB7TCvRufFEI0QJxGP17dhp+jPe+9GESWWbPqmZRs+pBu63QFsZyb67q8kTfdT/49/dw6042zht4gINatYj2cN2ZqHGTlzr+xaoEbjsOuwLTXmhqdusXZdualfrQXUbNkfnLj33cFj3aOr47/RQy3tUPPnGNesTkSce2ayNPvnvzGp87zv68t22PkPqtGnfTX1vqa0u7V7Q6tOubBF2bVs4Xxvj2qlJ3uBvxwY+usGX5il1s97/foL6XVPQvVLHWzqq5v09NGjanz7B7uPbt2lvgkP13P+NWbVh2pdacsI3sGbKU11DP5+hl7uUc79R265zL93ZfbS6935LGzLRo9JdKWYQQAABBBBAIIcLWFShZmUVNC5jvPOh2S9s06atCWrXxHewu2CN3ff102o69Hc16dhJPXr0UPf29VTMJ8mcTUnul60ulWKKUky610+Rion2f3RmDMuXcOn62m4MoWn1vmZ1lm2WxX8Tv4rHxKQVqHMOTZmgBL9RGWTk3Ppj2XK/ktL46jins0GGbE9jq5D8lH3tMalwsbSDq84Gnlw3QX37DNeSg37B2Qy03mQ2u69lM7D6Za+SlGrYdpOiY2KCBstcO8oTHZ2qftaERDnj2sEnk6Ki8wQt29nmIPFfryIj1OC+dzTTXFiDXpyizSd97wW8VnTPWs/t1g/vP6XFsxfpg+8/0G1Xu+5m3aswgwACOVjAmSvOZI6UyZT+/wfJwc3McNXTuTTIcDnZsiK94bKFmZ0ggAACYSpg09pPBqruJ5mrnqVgE93/UDOfnADBSrAUvF5vfTNdDzZw9aQarBHGTXBUcoAhGxOMB6tgkOVlbxiiN59o7A4ouVYrXPcujX5+sVoN+U7nXQuNXuXbF/6o3871UusC6QRu0kl0HqoE4rYzy/Ttz/t8+r+bLFU16PUnvIJwKQ0ymYup6xN3qtHXe3SgcAmVLlta5cqWVaWro5KTqOc13oo+8tNcLTrse5Nd6Or+GvHU9X5medX0kec1cPoqvbvu1CUxh3YtnqMVJ+5U95Ipb4JmdSJyR7z/gxa79qyep6W7mqhdFd9waYE6/TRqXIS2JFylCsbbvs7k5hVKFwyaJ8J92DM1k1fdn3lDfb2CcM7NTeYS6nFPO434aptPfpWLZ05eemM75eLaYTukH3/e4g6MpuzarEZ3/VvPegXhXMvLtHxcowcvU8fXl/ttk7IG/4sAAggggAACV7ZAoYYNVTd/hJaddb1oZPTmsu7Sovnb9ViT+ule5ziHnfxpzlqdOblLP36+3fiM0ZPFaqh9v2c1/c1eKXjmvCqQ1+8RmCNe58/5B9F8rR32OJ274NfjzQhJ5Ctw6X7BnEfR0a7XBC9ta5Qb5z8sgG+xio/zvTb1+1nmqChFJj+4TDN64r+Z73ejN0JiUtrt890gdN+yrz0m5c2fP82gkf38Gr384BsBg3CmiAKqek1DNbz2WjVu2lhNr96rZzq9pFVeeeJMZlOqQFfWy5lVoID/kK0O47w673OPlHq/dp0/H5fqmjoyb37lS+c5uNkItv39Kb+uv/e/Wt3jQf3w+ef64pu5Wrj6L53zD4L77ejcvlkaOvgjNZr7uCoF69Xqtw1fEUAg/AWcveLs9kRZLGm/fBL+LcmaGvpdhWRNoaEohd5woVClTAQQQOAKFzAV1W3D/6M7rs7IP/pm1e72kPq6g3ApNlF5Ura9vATj/6etG067kVMSpt+jlnnTuQtyb5GRmby6qe9tKhfwhsWimrf20A3/nqMfT3geIFhPb9T6PxPUunHabxinl+j88hOIf6ZXFh92N86VQHxQg7rJvR3P/fGr1p/yfYMyX8U2uvm6fO5tvGdiqgzU0kMDvRd5zSfq1xXr/fIGWlTPeFu6ZnTq42CKulqdO1yt99atdN/A2s//oVW/xqt7F2cgzpOI3BPcvJSIfGplNW/dWm3atFTrVi103dXFFZmciLy2V31Sz0aVKa9yBSK0wXhT1TUdWz9R3epPV80mN6ptmxvVqlVLtby+hopE5VWTngPUxLViCP6aImqpbYfyAR8wRBuBv3KRZiMQ5+l5ak+4KO9nPI6LW7V+q+e8d1bRZOQ06dKnhQIfwSg1vr2rrhn9i9ZfDI+HRSFgpUgEEEAAAQQQCCIQWaKl2jcuoWU/H/Jaw6rln03Q6kfH6IZ08n3Fb/tan/y01ydAcfHkDu0+6QksmCKMl7VK+137GsNK7vnLmce5YMDrnuTKWPfqrz2eq77kZclDWhrDUjonc3GVKOZ3r+E4r8MHT6VRboIOHjztM8JASmGe/428qpiKOa/vPZeHiijSRZOXvqHGPj39PNukmjOGUMxfzHvw8FRrZNuC7GxPVJ7UPcI8DbVr97efaNrmM55FxpylYG09MPxlDbmztaoW8QzDmLBvks95lbxRhnqH+RR/GV8iVK58qeR7I89VtzGE/O5dycM+lg06xKSRD277fr9zy6RixpCWBYNucxnVS2eTyMLV1evREcmf+BPbtfznRVq8bJVWrv5Nv289IK+4prukg6tmavbmh/Vo/YwMLOrejBkEEAhzAWevOLM5il5xxnHKMYE4esOF+X9VVA8BBBAIMwFnjq07XvpAYwZdEzRRum+V8+r6Ni2CDtd42QnGvQJxroTpLS/laUg4/Id+Wrtfab8gaFKpOi2NJPGeIQK9622KqKj61xYN+vDAUqiO6lUtZATiTrg3c1gPafduYziddAJxaSc6/5sJxI1AnOem0pVAvK6R58yuk3/t1TG/nBhFqtZQFffQh+6mpDvjsJ/W9r/88yuYVal61SDnRYRqVK9o3PR6AnFyGPnZthyUrUvB5JvhlETk0zX7iGfIT2dFUhKRpyQjdw5JVLB0deNN2hvUtmMX9bzFmbsv8GWXOX9TdW1TQXOn/+Vzo++wntXWX2Ylf8a+bjwgyFtSda5rotY33azuvbqpeY30h91JFyjACpZ85Yxedp4HEN6rRBYqqHyRxkMhr5e4HcawSd7vaiceO6jDfkPEmvLU0DV1g99U56lQR3VKxWj9ngveu2MeAQQQQAABBHKBgMlSWr3vbqO3F33uMzzlhb1f6umnW+jrD/qorPP6I8Bkj9uq0U+N0+9+1x4yl1bn29t4bZFXda8xXjSafcArSGHV74sW68SQaioRJEgRt22FfvELxJljauu6a1OCeiYjH1yNaiVk/vGQT7lbfltnXC5V8ht9IaU69rgNWrnec23uVUn3bORVVVWlRLRWel0b2c4dUayjhCpU8Av8GVs57Ge1Z/sJxZQuq1KFUv/uLjirZwIcFu/rQtfusrM9ZosnAOvav+dvklYtNV7S8yww5qLUdegEvf1ozeRrfe+frOfO6pzffUmwYRr9KRyBILwLT2e+cO2rVdE473ckeQo6vmGpVh5+VLeVC3yt7rAaObSX7/E6F507idY1jesHufdJpxKX9bNd8aePav9xm8rVKKe8xWuo3e3Oz0PJpcWf3K6fZ3ysl4dP0qZY716wu7XtT+Mmg0DcZamzEQJhK+Cwkyvu0sEJ/EQozI5ccm84m+/DrjCrItVBAAEEEAgTgcgC5dSs/W0a8txj6lb30puqGaibyWIM9VfJ7y1Zr+1CkWD87KpPdc+dk/1uBL12mjwboa6vLNGMZwMH4mTkhyt+VfB/zp3tKn2VfwAkQWdOO9/sLey/M6/v6SU6D1UCcbtOHD/jE9hxJibPV6RQhpKuezUgZdbIpXH8lP81hE0Lxw1U+y8D36TbTu/yChI6i7HryIFDxrJayTfnWZ2I3Dm8Zt+XntSMFU/p50NeES6/xtjijmrDsh+SP//36guq2+Z2PfXS07rj+pSE7H6rX/bXyIIFld//ScKl0kzOYZLSHOzHyBx4JlZn/XKaRBQoqkIBeiC6KmmyFFWJosZ56vWwyfUbfxFAAAEEEEDgShcwXpLq+bDuG/+TRq855tVYq9ZNHaJuxrXZqFFDdFMV3771Z/f8rP8MflZjFh3wu3aUSl53t+5p7X39HKUGbZuq7KhV2u/1Fty+xRP16YrbNPTG1PcNDvtxzRjzpf5M8O2xX65ZR7Us5br+jtK1zeupwPvrFetezaFtc6dqzp5uuq2Sf8DErh3fOn/z62Xn1WrnrDlPXbVsXEpT9+x0t81h3aBvpm3S3cOvSxVUids8Sb1avmIMXy7FFCquMmVKGbn3emrUJ0NUN41rML/dZvKrkQvPCHr5Xzbajbx5/lN2tiftIRYvGPcaF9ymyfU05VHp8iVTBeFkXP3vWrZWu/yOv8NuPFT2a6DZYrnU28Pzi8Nm9wuI+W2Uztf8dVuqRaX82rHjnHtN+/kV+nDsL+o8slWAIK8xvP0PH2vqetcQ+ymbmfM3VqcOpYO+uOku/G/MJJ1aqOcHjNaSPcYLeUeO6MTZRJlimuqjtd/o7qq+geEYY9jYrg+O0JElP+vRmXu89mqXzS/o6fUjswggkIMFbLZEmS1RObgFWVN115VD1pQWolIcduMNCSN6yoQAAgggkJsFzKra+gE90KmccRORcrvnTPhqicyjmHz5VbhwMeMGqpJq1KyiYpdzs2kEtIoVC/7PYvYlGM/sMXbeAKe1TZTyRKVewWb1vH0YeOv0E52HKoF4QpJnGE1X3Zw3t5c1GeORX7zo/zDAroNbftHBDBfo0PmzsV433FmfiDxv9b6a8o1J/3r4FX31u3OIpHQm+3lt+nmi7ls2XyvenaZ3B9RO9UAmnRKC/myJjFakkfsi4GQMcZRe+gi7MWylPdUrwEHKc+/EInPA4VXdKzCDAAIIIIAAAlewgCmqjp4Z/agWdP23/oj1vnZL0ua5/1XnBR+rzvXN1aB6GRXKk6BDO9Zr+YpNOn7RE/hw8Zgiq+qhEQ+oml8vukJNb1Pva6fo7bWe3miOpO168/7HVH76WN1Z3/OSWnLeuTcf17Nf/Ol7XWYuo96DblUprx50Jdt2UpvSX+nbg54XqqxnFmnYg6NUZdozauh1j3F07cd65IUZOpXuxV4htb+tlYrNMIYidL/glKQFYx7X6w0/14tdK7qHuHIk7tRHr/xPWy8FjOJjj2ln7HHF1H9MFS/nvsgFmYG/0cZLWr6TXbGnAg27GS7tyaN8ef2Co8ZQovMnT9PuWwapsnsEDqv2LBmrR9/40XsgiOSm2i4mKNHvtDPliZL/iKEXY0/prDPo63ce+noF/2bO01D39G2oKf9eIs+dW5KWjRusf1WeotEPNfAa9t2u/Sve031PTNVRn2CWWfV73a9OFf3aHHy3l/VLRMFyynNmhzYYvTJdkyN+jd7818dq/NkjqumXmzzhyHItXn/ctWryX1NEeVWr5v8Cqc8qfEEAgRwq4LAnGaEdm5F3/jKf6+TQdvtXO/gTR/81/8HvNnrD/YP67BoBBBAIFwGTytTvqsHNf5jGAABAAElEQVRDbsiygINPy0zRypc/cA8p53rZl2Dcp1bpf3HE6azz9dvSwVZNUFy859bNtVZ0TPDefynrpJfoPHQJxGOMG1nfyaGLRtLxdJ9X+G6U8s0cGTAQGWjV4MscsiVa/faf9YnIi9W7Q/9b3klPzp2uyV98p9kL1mrPGa/EIAEq6Ejcr0+efVpNmn2j/jV93zYNsHqGFjmH2wn+X0L6RVjyxig6OZDneUJhvXBWcalPQ09h9nOKjU27rZ6VmUMAAQQQQACBK1GgSKNH9L8xu9Xj4Una6xdgcySd0ablc4xPOi035Vf7f72jJ24qmmpFZx7cwcN6a3rvD3x6xV3YP0cDjRy/k2/pqpb1yiriwgGtmTdLc9c5R0Twnsyq0/MFPd6xmPdCWQq10SP3NdacV5d5pXRzaO+y/6p908Xq3rONapWO0rGty/T110t1MN5zjeRTkN+XMh0H6t7GszRqtaeXoD1ui0be0UY/drhFnZpWVz7rEa2aPVOzfjvs9dKYMZ5EdH0NfLxz0GH3/XZ1mV/NKlK0gF+POLvWfzVCg4ttVlXTIW3YWVJDP3pS9YwAV3i0J1r1G1SRxeiJ5Tm2Du1aMEI3t1mrO25pqELWY9qyaoG+W7hNcQEOVULsGWP0B1+yyCKFU+Vgiz/wjZ4eVMwYpSVCuzfsUr1B7+qhZr69On1L8f8WoesfHqLen6/TtJ2eXnEO60F9+kRnLf+qs7redI1K5InXzt8W6tvZv+mE1zCWztKiS3fRSy92CPF5YJxvEdV03yMd9Mmvn3sFmY3en/OH68ZGs9Wla0vVqVhYEUnndeivPzR/1kJtPeE7aknhmp3U4VoCcf5nAd8RuFIEnPGdCHPeK6U5l9WOsA/EOaOlzqgpEwIIIIAAAiEVMEUpOjp4+CE7E4xnpp0O2wHt2mncxAQJwjish3XwaLxvkaZCKl4ivUCckS0hzUTnoUogHqESpYolDw3juTmWzh0+qKPGG6WVMttrylxcxYv5BfaM9g8cP0/P3ZTRG2GTIvIVNvLXpZ6yOhG5yVxIDbrcn/wZnXhKG1cu0c+Ll2vFL2u19vc/deRc6miW/fyvmv7VFvUbfq37zejUNc2+JdFlyqhUjEWbvIbxcVzcre3GedrhUj4V/9okndquPw/F+S/mOwIIIIAAAgjkKgGLat8+Ut9FF9Tdj4zXxlOpr3vS5DAV1M1DxmviSzd49RTy3aJsx6Ea/+wW3fGfJbrgFWSxxx/Uoi8/ND6+63u+mVSywUMaP6a3Snr1hkv5PUotHhuuh+b203u/eoJmzt/OHVirz95b6ykmec6iCvVr6+KmTanyInuvaIqqpadGPaqfu72q3894LBy2M1o3Z7Lx8V7bez6fOjz5mgY0CHT16r3e3503q0TtGipj9Pja5xUAssZu0aSRryQXbs7bUXclOJIDceHRHouu6d1Tzd9dpmWnvJ81WnXg9+80yvj4TlGKibEpPt5zZxJ3dI/2n7Pr2jyenh2Rxa5WrXL59Mv2s57NHee06st3jI9zUYwGth8pZSoQZ+SILtJGb370uLbcOlJ/eJ0DzoTNO36ZqXeMT7DJUuAaDZvwX3UqH9recCn7N6vKbc/p30YwcMh0316ksftWa+r41cGqmbzcFFlZD77ysGpeZu/BNAvnRwQQCAsBuxGIc0TEXBrGNyyqlO2VCP7EMdurEniHzjFEmRBAAAEEEAi9QNpD7rkSjHvXw5MwvZyRNN33U75cQdniEhVVyMg95/qtfBkVzesZoq/QDQ9r5pyZmmO8xRr887Ve6lPRe7e+846TWr10g7xvI71XSDqxUX/s8rohNH40WSqqxtXp955KO9G5kWHuUgJx7/2lJBD3PCjw/s05n5EE4oWrV1VZv5uw0zs2aKsn8YZPsQ7bQX38eD/1uWewnhz2hkaNm6yvflipfecdxtAHRVWj2lW+PbwcF3TsuF1lXcfF528Z48FNnGyRBVTavbysyhQLFLRzJiI/rO3bDxhbGLfXyYnIH9LrYz/VwrUbdGjvKiOvyEDVLeT73pPDeikRuU8rUr7YEmK1f8cOHTpn1D2qqOq16qknXx6tr39cqj0HtmnND+/ozoYl/N48tmr3n9uDngMBdhPSReb8NVW3cgGffTisO/TT7O1ew+p4/2zTju/m6dcAQUbvtZhHAAEEEEAAgdwgEKVa3Udo0fKpeqaHkXvNE+tIo/EmFal8k0Z8Nldfj+ysq1IFyrw3Lah2L3yqL1/trrIZHrYxQlVvfFJffjNCTb2GmfQu1VLgOr029f90dz3f3nLe66TMW1S1zfOa9FYXFU6znilrFzV6CX5u5HmrV8T3ejJ1uZeWmPKpxf1j9MGwZgFfIgu63WX+UOC6zupS0zOkp38xjsRjOnDIc6cSDu2JrtRbI1/uomLp+ZsK6ObHJ+jzp5v75I+zx6/X0mVnfJpqirpGvbrX9lnPZwXjSv3wgcNevfB8f03rW8nmT+jbGa/o5kq+19dpbRNT+ga98cU0PXNTCd/7oLQ2+pu/mSxljZcdJ+i1nrUyNYKNKaq87h39qV7onLV5r/9mc9gcAQRCIOAMxuXmKawDcQ4jv0huP0C5+eSk7QgggED2CjhzrXmCZP77diUY917DlTDdc2vp2So5YXrTJqpYqqwKl6qp2g1bq+OdY7TJa5idqBI11bpNa7W9Ka3PjWpQKa3u+zat/WqCFnjd4HpqYdPGr77VSp+3J6X8Fa/TdRX8eol5NnLPpZ3o3CjnUgJx9wbGjCuBeOC+TRlLIF6gXhM1Kuk7LIn1rDGUz8w9fsNDpuw5Yf8CffbFfH03farGvzNKLzz9hAY8ME6bk3tkRalxywbyHXXUqpUzZ+gv4+1c/8lh3aZRd3ZRzSqVVahwRVWu1VTN2/XXhNXnk1d1JiJ/unsXNa7fQOVKllGRMnVUv+mDmmH09vKfXInIB7Ut5/eTJxG5w35G01++S62aNVX1ipVUsEhlVavXSk99siPVjbopqojq39xf/xlys/zDqM68bOEymSKq6qZWVfxu+q1aPMF4wz2AU/zub/XC6AWp8m+ES3uoBwIIIIAAAghkv0CByjfrtWnG8HW/fq13hg1Q1xvrqVKpQoqOMLJFmyIUU7C4KtdupG79HtW7n8/Xpg3T9XyvWhkKPpnMhdXuqYlavexTPdW7iUoEDciZVbhicz329kwtmf2CmpVKu2dRdPn2et8YYnzUgGYq6vdSmVMwslBV9Rk6UT/ONIZqzJ/BwJoR2qna6UUtWDJFz9zaUEX9E5G5D41ZRSu30nMfzdK37/VS6cyOIuEuJ3Mz5uhr9eL7L6pz9WDBuDM6dcL7Jb1waE+UGj04VrM+elgNSwfqNWhSoYqtNHzyHCOwawxX2ra5KngfT+NFyHlfzNVJn1xsedTmmZF6pVdd+d7FeDwD587z/B58zqwyzQfp25U/aoIxtGq90sHvDSPylVeH+97QTytmGMOzlvG7Hg++h6z6xZy/tv712WzN+2CI2lxdLO39m/OrVqt79NHceRr3QL1U9zdZVSfKQQCB8BGw5/IOVxn9l/8fOWIpQ1Kmfkj2j1SGnSKAAAII5HKBcEkwnvowJByZpacffE9lp3i/LWvX4V/G6vG3fvYLcESoQbdbVNudiDx1eRldEqoE4uZ8zdSnaw3N+OAPT+DNGNrlq9eeUvMGn2pg4yLuKjoS92nS8A+15qx3IMqkKm06q1mxlFeoS9/cWW3LTNc3By66tzux/n0Nfq6+Pnurq0q6b6wTtX7SaH36+8nk9WwJ53RozzmdiK+jStVTbnizOhG5ybgBrZA3Tr+u9+4tdlGz33len7eaqHsa+D7UcNiOGUNVbvDKP+KsaoQqVK+SqTdP3RAhmTGGZ+pnnGMfrtOmeE8CjYSjP2pQtwE68OYw9e9UR/kTj2r1D5P06ohxWrTfb/jUkNSLQhFAAAEEEEAgZwmYdVXNm/TIS8YnyytulF33Fr0x+RaNOL1Tyxev1G+bduroqQuyGUNnFStTWfUat1Cb5lVVIDn3bcYqEFm0gR4bP1sDXlyn2bOXaevuY4qLKKxKNRqq4y2tVKXgpcdwDf+ljbH/ylihxlqFqnfQa5910LCjW7XUqOv6bXt1/HS8HJF5VbRUxeS6tr6hmgpmoq7Bdm4yl9Zzc7bouWAr+C0vft0AzVjbVb8t+FE/r92uo2cSFFmgqMpXraXrb7xRjaqkHlkia9oTo7snrjE+fhXK0Ne8anjn61rRfZBWzF+g5UYOtxPG/UT+YqV1daM26tK2tgpdekkz5vqh+vPs0HRLtRSop2c+X6C+fyzW7J9+1c7DZ2S15FPxspVUr1EL48U71/W6WbUGfaYLg9It0meFyMI1dfdLH+quYbHa8stSrfh1i3YfPqW4JIvyFy2l6nUaqfVNTVSpcHqPei1q+ORXinvSp/g0v5ToM1bnjE9GJmegu0X/EZrX/3nt37BSy1Zv1I69R3XqnHG+mvOoQNESquA8N1o0V70KBdIO1mVkh6yDAAI5RsDhsMlut8psTu//T+WYJmWqomHdaoalzNSxZGUEEEAAgRALhEeC8UCNtOuvn1/TTdfPV89ebVWrpEmHNi3R9Jm/6IhXDzznlhGFW+jBBxtlUdAmVAnEY9TusYFqPv0pLT/p6W+YeGypBndspZk9b1GLuqVlObdfK2d/p3l/HPUE7Iw2miKqqN8gY7ifS1SWwm005P6mmjNisTz91uK19IP71GRpW/Xs5rxhtWvfb/M17dvfdNoTOzJKyKOb7n9UrYumDCKQ9YnII3Rt/3vV/sOVmnPYU7uEo4v0UNsbNbVLJ91Qr4IKRdl05sgurXU+4Njo397q6ty9fljkh7tErry179Kzd07XvRM3+hyb2N3z9GyfeRpqiZDZuAD3eZHYtTF/EUAAAQQQQACBbBSIKmL05u/p/GTdTvOXaajbH2iYdQVeKilvyVrqeLvxyfKS/16B5jxXqXGXu4xP5sr5p9tjzldOLXvea3wyV+/ga0epXP32esj4hGoyWQqpTstuyZ9Q7SNrys2j8vVa607jw4QAAgi4BJy94gjEuTTC5K/DYVdKj7gwqRDVQAABBBDI9QLhkWDc/zBYFGGxyWp0CDu3f40mj1njv4Lnu6mIbn3xFfWqnP6wlJ6N0p4LVQLxmCp3aPSrS9XlsRk64RWtsccd0ILPx2tB0GpF6voB/9agFgW91ohS08Eva/D8bXr7l8Py9LW36ciW+Xrf+ASbSjV6VK8+0cAryJX1icijSnXRG2/cpnUPTNURq6d2zrYumv6x8QlWO+fySDW51+hhdl2wQXDS2jZ0vznfhO312n/0y+8D9MG646l25LAZQTj30gjV7tpPFTd/pbm76RnnZmEGAQQQQAABBBBAAAEEEEAAgStIwBmIcxg9z00m78QvV1AD02hK2OaIs9s8b8CnUX9+QgABBBBAIFsFwiHBuHeDTZEN9dw7D6tOoXQy2ZsKq+vzn+i9QXW9gkreJV3+fGgSiBtDaA4Yran/6a5S7qEj06tjlOr3+o8mvtVRhfyG5THnq6+Xp7yn+xuXUsYu90zGcEX36OPPnjVyePheLmV9InKLat0xUl+M6q3ymRoyNFLXdH/NaG9nFfZrb3pS2fF7ZOHmemv6hxp8Y4XgietN+dX4jv9o6od3qEykf94VI2+jL312VJt9IIAAAggggAACCCCAAAIIIIBASAQcRucr79yhIdlJWBYato837HYCcWF5xlApBBBAINcLhEOCce+DYFbldiM0Z9a76ntdqYBj7Bco31IvTfpBU15qlSpA5V3S5c+HKoF4AbV67GMtmztKd7WspOigETSzilS6QU/83zeaN2WAqgVZMU+Zm/R/82Zp0ou9Veeq4D3IIgpUUrfB/6cFP72t9hUD9x7M+kTk+dTsofFatmCcHuxQWwXSjKuaVbRSCz3+7jf68fP7VT0mKMzlH9Is2jJPmdYaNWeB5k8Yqt6t66ls0byKiIhW0dKV1bTzfXrnq3ma/+lA1cwfoMGmSEVGhO2lahYJUQwCCCCAAAIIIIAAAggggAACuUcgt8Z9TA5jCrfD7ByWMikhNtyqRX0QQAABBBBIJRCXDQnTXTu1J6zWI4366NO/zrkWyRR5vSZs+E53VYoy3io6r+0r5mveiq06eCJO0UVKqUZDI9l4uzoqEpF9wRqH7e8mEHc3z2vGpmPbV2vh0l+1dedhnYlLkiW6oK5yJj9v3EKtr6+ifJmI2dgTjuuPFcu08rft2nfstOJtESpQpISqOpOct7lelYtkJo1uQpYnIr9wZLOWLl2jjdv26dip80qwmxSdv4hKla+setc11w3XVVDeTLTXCzIsZ+0JK/Xwdbdr0s7z7vqZotvp6z3T1LXQFdRQd+uYQQABBBBAAAEEEEAAAQQQQCA3CpgUmadQrhueMiwDcTZbgmxJcbnxLKTNCCCAAAIIBBVILxAXdEN+QCBbBRK1aOR9GjrrlK4qVVKlSpRQqdLG39LV1LZnZ9UuljrIaT8/T71r3atZJxLdNY0u008/bhqjpjEE4twozCCAAAIIIIAAAggggAACCCCQwwUiovLLbPZPT5HDG5VO9VM/CUlng+z42WHLneOEZoct+0AAAQQQQAABBEIucPGUNv62SnbvHZkK6v6YJhrXr5T3UmPerp0//KBfTnmCcM4VilarqUpR2deT069SfEUAAQQQQAABBBBAAAEEEEAAgRAI2I34D4G4EMBmpkjnSJm5dZzQzDixLgIIIIAAAgggEJ4CUbq6Xg0VMK9SrHckznFW0155TJXyPKWeN1Q3hktN1LF927Vq3lSN/r+ZOuW9riJ17U036ioLgbjwPMbUCgEEEEAAAQQQQAABBBBAAIHLE3DYk4wNYy5v4xy6Vdj1iHM4bAZl2KWty6GHl2ojgAACCCCAAALZL1CqfR/1qPatJm0/67PzC/t/1ot3Gx+fpam/RBa/WQPuqilL6p9YggACCCCAAAIIIIAAAggggAACOVjAGQNyOOxGnrjck4oi7FpqtzmjoUwIIIAAAggggAACOVXAnL+pXn77ftXMn/lLTVNEGd37+gh1Lpu7xovPqceaeiOAAAIIIIAAAggggAACCCCQWYH/Z+88wKMqvjb+7m56QkiDBAKBQEgoofcqoigqKnYRuyJWPhWx/VUUe8EKiIBIL0rvCNKk995rCBBCIL1u+2Zu3JsEEkhINtveeZ7A7t25M+f8Znbu3XvmnONqdqCyPx0pK9Ey1s93SyzjSaxOAiRAAiRAAiRAAiRgRwS0CL/lfcybOQS9GgSitAEm/SO64aNJs/H9kw3oDWdHo0lRSIAESIAESIAESIAESIAESIAESKAiCbhaejLdx6JUJMDytCXzwxkN2eVpgueSAAmQAAmQgPMS0HoisGY9dLntDtx99535f71vQcdWUQj2KK2pw3nxUDN7I6BBQN32eLT/47izVT1UC/aHr7cXPNzd4eHpCW/fKggMDkXdmFh0vvUe9B80FCN+fBO9YkNohLO3oaQ8JEACJOCABHJzc7Fu3SZcvJiE8PAaqgbz5i/G33//g81btiElNRVR9eupn82aPR8rVqxCixZN4eaWn8nj2LETmDxlBrRascmkUDtjf5+Anbv2olXL5ur5W7Zsh2wjODgIQUGByvGcnByM/HUszp47j0aNYtS6S5etwOIlf6NBg/rw9s7PkXL+fAL+GD8Z2dk5qFs3Qq07ddpMrFq9Fu3bt1GP7d9/ENNnzBLneiE0tLp6fMTIMTh8+BiaN4tVj/27biPmzVuEmjVroGpVf+V4amoaRo/5A0mXLiG6QZRa18InNrYRPDw8lOOnTsVh4qRpMJlMqF07XK07fsJUbNq8BW3atFKP7dixG3/NnKv0ExISrBw3GAwYPmI0TsedQZMmjdS6fEECJEACpSEwc+Y8NG7cUK369/JVWLR4GerVj4Svj49y/MKFRIz7YxIyM7MQGVlHrTvjzzlYuXKNWKdaKuu4/ODgoSOYNu0vZY2rUSNUrfvrb7/jwIHDaNG8qXps/YbNmDt3IULDqiMgoKpyPCMjE6N+G4fExIuIiWmg1l24aBnk2t6oUTQ8xe8dWeLi4jFh4lTo9XpERNRW606cNB3rN2xE27at1WO7du/Fn3/NQZUqfqhWLUQ5LtfdX4b/hpOnTiM2trFad+WqtViwcAki6tRGFT8/5XhS0iWM/X3iVdeQDRu34OzZc+IaVlOEAeRzAxUiX9iegLAFaXWeLjMv7SpHnNlssP0EoAQkQAIkQAIkYKcENNpq6HJfX3SxU/koFgkUR0DjFozWvZ9S/or7nMdIgARIgARIoKwE5INJaRizlDniIal8UPp/A19Ey+ZNoDEZkJuRjvc/+AStWsSibZO6IhW9zEVvxuqVK7F5227l1Ntu7ozbOzezNIOVK/7Bzj0H8MxDveBZxVc5fubYAcXgVdVLi7aNCx6izp0zHxohw3OP9FLP379zm1K3WYPaiKpRRTmel56pHGst5Lr/tg5q3Y3//ovlqzfgnls6IMgz/1lI0pnjSl19Vhq6ty1ktFuyBMdOxGHgsw+o5x8/uFepWzO4CprVL3iQ/Odfs1EjtBqeuK+HWnfXlk2YPnsxOrVsiNpB+ca1zKRE5fybOrfFXTcVGNLWCD6bBJ/H7u0BX+QbE8+dOKTU9dQY0bFZpNrugvkLkCb0e/Hxe9Rjh/buVOrG1AlFw9r55xtz85RjTRpG4eE7/7uT9a2mnsMXJEACJHAtAiuWL8eDd3RSq2xevw5LVqzFHTe1QTVvk3I8+exJZZ25p9dl9GhfYPD/e+lSHDxyAi8/eS/EDgul7slD+etntareaBldsFFjlthEEBjgj6ceuFXta8+2LZj+53y0axqFuiH5myayLl1W+urUriXu7lGwQeLf1avw78bteOium+Cvy1XauHD6qFJXZ8xFl5YFmx4WLVyExIuXhFx91L6O7tul1K0XHozGdfI3MogdEMqxmKi6eLR3N7Xutk0bMHfRP+jRoRlqVMm/HqaeP6PU1Weli2uIYKDY3LQYNuwnpKalY8Wi6eKYDmatG1avWY/ZcxbgkUceQJfOBdcmtQO+IIFKISDvzeR32DWyw2uEF5rU2C6K0ZBDjzi7GAkKQQIkQAIkQAIkQAIkQAIkQAIkQAL2RUAa4PoPGAit2NE/ZsQ3gMwxb8zD1D/nYvjvMzBk0HO44+aOitDyUce4aQtQp3YN3Nq1rarIEWHQksYj6RUQJB64RkbUVD87fPw0MjKz0bxxA/G8Nv+h0OWUNJyMOyeMWyGoKf4sZfeBo8pLWddSzl1IwnnxV69OOAKr5hviDAYjZN0qfj6Irlfg5Xbi9DkkC6+0xtGR8PbK95yQfUsZqgUHIiK8wLh24MhJZOfkonWzAo+Qi5dSEHc2AbVqhiI0JN/gJeXYsfcwPD3c0SSmwNPvzLlEJCZdRoN6teHvl29gzBHGsf2HTyBAyFlfyGspR09KPllo2qi+4sUuj6ekZeD4qXiEVg9GrbACA9reg8dgFGPSokm05XQkJF7G2YREhXtIYL73iNFowq79R4TnihcaiofJlnLqTAIuJacox+RnsmRm5eDQsVMIFufWFWNnKfKY/Ez2pdPlP3S+lJyGU2eEl4fwVAmrHmSpqvSlE0bSpo0KHnrHJ1zEhcRLQtdaQud875E84aGy9+Bx+FfxQYPIgrE5fvqs8JZMVxh6eeYbLtOEB8zRE2dQXbCuLZhbimSYk5eH1k0LxibxUjLOnL0gxjBMjGWApSq27zmkjLUcc0uJE/Uuivpybsg5IoscaznmgcJ7sV6dgvkp5256RlaR+Zks5Dwh5C12foqnfc2bFMzP80L/c4KDnPNy7stiMIr5uf8o/Hy9EVO/jnJM/iPnvJz7jRrUhY/wupQlI0vMz2OnERIUgDq1wpRj8p+DR08iKzsXrZrGqF4NSZdTcTr+fLHz08PdDbEN66vnW+ZnVGRtVP3PAJ6bp8e+Q8cR4C/mZ92C+XnsZDxS0zOU8+U8l0Wdn9XE/KxRMD/l+XrhjdkytsConXBRzM/zReenXFd27jsi9PQU+haMzen4BCRdTkFMVB34+fxngBHeqgePXj0/JRfJR/J20+WvHZb5WVN8Z2qI746lSN4arQbNCs3PswlJ4ruTVGR+6vUG7BHfsZLWjibR9eDllT8/5byQ8+Oq+SkMUPK7Xtz8rC3WmOpirbGU7XsPQc532a6lnDl3QawdRednTo5YO0S7Ja0dUi93McaypKSKteN0vPh+hojvacH6KfUym8zFzs+6tWuK73/+/LSsHZK/HAdLOXXmvFg7Uoudn8GBAWLtuHp+toyNVjdwJIlzT4s2wmuItaNawdqxc99huAtjXeH5GX9erB3CYFa/rlg7/IuuHVWF51pUZC2LWGKdFGuHMHjJ8y3zM1Vcb46dlGtHkFg7CryX5fzME2MsvzeWckGwjhfM69SqIb5n+eunvJbJdb3E+Sm+t/L7K0uWmJ9yTaomvLILM/hr4UplHjzxQC9LVxgzZR5+F9fIoe+8iltvEQY+Nw+YhIHuiadfQRPhEf3+u4PUunxBAtYkoHP3Edf1/Psga/ZjD23blSFOn5chFmK9PXChDCRAAiRAAiRAAiRAAiRAAiRAAiRAAjYicE6EcpThH6Oi6uOxh+4WFoM8YXTLxdMvvweTMB5M+mWI+tBfGi6kcUaGP2YhARIgARIgARK4NgFp4JOGfGl8tRjb5fsH+7+PNs0b48tP3hbGOU+Yxd/EyX/BKK67jzxyvxoK9Nqt81MSKD0Brc4Lbu75xuTSn+WYNe3KEJeXkyIo2o2DnmOOKKUmARIgARIgARIgARIgARIgARIgAQcjEB9/VuTFqaLkFjMLT7fkixfQ+8FnFG+WX78arGojPXgsHifqQb4gARIgARIgARIoNwHpISo9XC1edtJgd/dTg4VHcjaWzp8Kd2/h7S08ytOFZ6qnMOJZcomWu2M24LIENBo3uHvmRxFwdgh2Y4gzm03Q56Y6O2/qRwIkQAIkQAIkQAIkQAIkQAIkQAIkUIjAzFnz8P0Pw/HGy8/god7dof0vUo4MeRdVt7Ya5qzQKXxJAiRAAiRAAiRQCQRkSFcZarZ9yybCfUYDs/BeGvnHTMxZsBRffP4x2rZpWQlSsAtnJuDuGaBGOXBmPfMDa9uBhmaT0Q6koAgkQAIkQAIkQAIkQAIkQAIkQAIkQALWIiBzpq3fsFkJcyU93zTZKWgTUwNNRU6dalW9VCOc7F/ma7LkGrKWPGyXBEiABEiABEigZAIyj540wskizHDQ6rPgqdHDQ+RSjarhB3NelghwZ0Z2djYuXEgsuSF+QgIlERAOWq5QdB+LYg+KmsSON7PJYA+iUAY7IyDjEMtE2vJPlrX/bsKLrw5WkprGxsaKH3BmkWAY6P/im/j+x1/R574HYDJpRVJeDdb8uxk//DQK/lWDERwShjPxF/DNsOEiGXIq6tWLFnWg/I0ZNxmz5y5G6zbtxbk65djO3QcwfOTv4hLjjrCwWmrdL7/5ERs370CrVm3VY8v/WYtx46eJPkLh7x+sHE9OycBnX36PkyJZa8OGsWrd6SKR+DTxFxPTRImBK2U4ejxOkT09IwcREfXUur+MHItFS/5Bhw6d1WOy71GjJ8DTyw8hQieLDh9/+g32iASuzZq1VI8tWLRcieUcHl4HPr5VlePnEy7hq29/hvw/KqqhWnf8xOn4a/ZCNG/eSlxZ3ZXj+0RC7Z+GjxGsgZrhEWrdb78fgdVrN6GN4GXpf9WajRg7booIJROMgMBqyvGMzFx88tl3OCoSFzdu3EytO1P0M2X6bGUMPDx9leOnRLJy2e7l5AzUjYxS644aPR5z5i9Fu3YdxTjLcQW2bd+DEaP+gFYk86weGq7Wlby3is9atGijHluybBXGT5yB6tVrwq9KoHI86VIaPv/qB2U+REc3VutOnjoTM2bOV2SVbcu+DolEtz/8/JtwzTegVu26at0fxbFlK9YqclkYrNuwFb+NnaSwDgoOVerm5BoxZOg3OCCSEcc2baGeP1foNEn0J8fbS7j2yzbizybi6+9+QeLFFNSrXzA/x/4xBbPmLFbmnMnsptTdvecgfhHz02TWIaxGbbVdObbrNmxD69bt1GMrVq7D7+OnIiiouvJdkH2lpGXh0y+G4YRIdt2wUcH8nPHXPEybMRfR0Y3E/PRR2jgukpIPE9+t1LRs1KlTX213xK/jIOdY4fm5eesu/PrbeMhxDalWQ637yWffYJeQWc4vC69FS1ZgwqQ/UaNmBHz/m58yufuX3/yEc+eTENWgYH5OmDQDf81aqMxvaDyUNvYfPIqffhmD3DwT5By3tDvsx5FYuXo92rbtoB5bI9aNMb9PRhX/IAT+Nz8zs/X45NNvcfjoKTRpUjA/Z81dhCnTZiOyXgMRasFPaUMmcv522AhcupyOyMgGaru/jZ2IOfOWKH0ZlXUH2L5zHyQbjdYDoYXm5xdf/4DNW3ejZcuC+bls+Wr8MWG6wkrKJnW4nJwu1o4fRPLoBLFOFMxP+Z2R49NIjJfOzUupK2WXa1xmVh5q145U5fpp+Ggs/XsV2rfvpB5bv3EbfhszEd4+/gj+b37m6c346JOvsV/Mz6aF5uf8hcswccpMZc7L+lKucyJJ9Vff/iKSiF9G/foxartybs2as0jRy4z8+blHJLn+ecRYSCY1Cs3Pb4b9grXrtoj5WbB2yLEa+8dUZd2oGhCitJuWno2hnw/DMTH3GjVqqvb156z5mDp9jjI33D3y5+eJU/H47oeRypwuMj9HjcO8BcvQsWMX9fwt23Zj5G/jxQM9H1SrXjA/h37+HXbs2i/mZ2u17uKlKzFezLuwGrXg6xegHJffzS++/lH5rjYQ3xHLnJs45S/8OXMBYmNbKOMujx8Qybd//GW0SIptRHitgrXj+59+hfxOtm3bUT1/7brNGC3mp5/oJ1B8T+X5WWJ+fizmp1yDmsQ2V+vK+TZ56izUrRulXAdk3RKvbb9PEte2JUWubVLP4WJ+Fndt27R5J1oWurb9Lda4cROKv7bJNTumYRNVrmkz5mD6n/OKXtvE2v+9mJ/pGblFr21iblx1bdskrm1jrr62DRn6NfaKa9GNXtv+EPLPnL2o2GubvE+oKdYfyziW9tom9ZFzRl67GzcumJ9/zVqgzE/5/bjy2packqmMmaWvX8W1TV4Hiru2ye+3vGZZ6sq1etuOvcVe2+QaY7m2yXubL776scRrm1znrry2ZeeIa1uh+Vnma5uY53LeW2S1XNvkd/FGrm3yOlHStU2uYa1aFXNtE+uZvM+TMqSkZopr2/c4ceW911/i3muGuLaJNVXmH5B1j52IU65tcr2JKHRtG/7r7+LatqLItW3Tlp34Vdx7FXdt2733kJifN3Ztk2vMlde2fQfEtW24vPcyi3uvote2VWs2iHuv61zbxPXgk8+KubaJdbrEa5u47hS+tsnv4px5S4u9tl157/X5V99Drq2Fr23TBW95vZHrd/53wSyuf7vwxFMvirU6U4xjS/GsRjzGERkJBr39kbiHnopuXTuKEEi+yr2+DIFkue9XDvAfpyMgPd9+/mUUYuuFISLYExqR9y3Q3w/33NYVkRE1nU5fKkQCJEACJEACzkagdbOG6NvnNvh6uimGOeRlYLF4/jbwzf+J3zLVEBMd5WwqUx8rEtBq3cSzFJ0Ve7CPpu0mNKUhL1MYQETyZRYSKERA/jCXD7ZGjfhePMwNE0YHYO++g/js829w9913oe8jD6m1ExIuiIc+Xqjq788f7yoVviABEiABEiABEiABEiAB2xIwGAxISrqkeDYFBwerwnz08ac4ePAgZkwThk53N+i0GixZtlwYTmdj4CvPo0P71mpdvnBcAufPJ4jNSdWVXfSa3Azs37MTf81fgScfvANRkbUcVzFKTgIkQAIkQAIkoBJYvnYLxkwRoaY/fxc1xUY3iA2GMq+r9KNzE95zLCRQEgGtzkvZMFnS585y3M1eFDGb5ReTxVUJyJ2vK1evw4kTp/D8s08IoyxgEFY3rc5DLNbuOHvuouIxIvk0atgIUyePvwpVWFjoVcd4gARIgARIgARIgARIgARIwLYE3NzcRISJq+/Vh378objvN0Gr1SoRLmSUiwuJyTh//oLqWaoTyRSysjJFRIk56N6tExpE1bOtMuy9TARmiHH7ZfgofP7B6+jerrF4FAc0jYlE08H9y9QOK5MACZAACZAACdg3gZ7d2uHWrm3znSMyE2HWuWPR8k2YPGMe3n9vEFq2aGbfClA6mxFwFbuQXRjipBHGVYDbbEbbfccaJdTW8eMn0avXXSKEXpCQWIM+996LBx94oIiHG0PV2P1gUkASIAESIAESIAESIAESKBUBaYQrXPo++jDu63Ov4j0nw6PLsm7jTkya/BfS0zPxxsAB4rdB/nH+a98EZP63ZlE1ERoSCK0IP8lhs+/xonQkQAIkQAIkUF4ChZ/ZasR9QPypE5ARzIKreCl55HgTV17Cznm+q9iF7CI0pVkk5NPnpjrnTKJWVxFITk5R8tO4u7tj0Buvid2vZsUDbvuOXcL7zQ2xTRpDp6PL8lXgeIAESIAESIAESIAESIAEXJBAWloaNm3eivr1IkWe0kjI6EYajRlvvzcEbVo1R7++RTfuuSAiu1A5IyMTEyZORZfO7dE8KhwafYZifDMaTeL3XVGDq10ITCFIgARIgARIgASsTuBSchqCA/1h1rrD5BWAPQePi+fAZpFjmB5yVofvQB24ewYUccRxINFLLaqdeMSJOIQsLkFAJmX39PLFxk3b4ePjg+wco2p0ay0St7OQAAmQAAmQAAmQAAmQAAmQQGEC/iIH9G09b1EPyRCWJ0+dxq5d+8QPdh0ee/RBbrBW6djuxfbtOzFl6p84dfQQWg4ZqApCI5yKgi9IgARIgARIwOUISCOcLBqTCHWQfgHffP0dTsadw8TxvyGKIcddbj6UrLAwGjh5/AS78IgzGfNg0GeWPA78xGEJpKam4ffxU+Hj7Y1nn3lSyf1gNmtwOi4OtcLDVSOcwypIwUmABEiABEiABEiABEiABGxC4PLlZGRmZqJ2bfG7QjhcyaAaX3z1PVq3aoq77ujp9LtqbQL9ik5lmgkl5GReFpB9GbMX/YPbb2qPKn4+V9TkWxIgARIgARIgARIANu/cjy07D+CVAU/B7B0IjdYu/IQ4NDYm4OZRReSNdu65YBeGOKMhB0ZDto2Hm91bg0BWVi4e6vscvIUhbtzYUTS8WQMy2yQBEiABEiABEiABEiABEsAp4SX30isD0UqEq/zh26H0krPinMjLy8Mf4ycjTWy8fPulvtCI3/QsJEACJEACJEACJFAWAmaNFmavQIyZNBNdu3RCw4bRZTmddZ2IgJu7L7Q6DyfS6GpV7MIQZ9Bnw2TkjfvVw+N4R07HxYswMXHoJhbPPIMZRqMGR44eRUTtCHh5eTqeQpSYBEiABEiABEiABEiABEjAYQiciY+HwWBAZN068HDXKPnkVq/dgE4d28DTw7l/3FfmIElPxCeeeB65ubmYPuozVK3iW5ndsy8SIAESIAESIAEnIXDgyEk8++bn4t4tApMmjhFeUcwr6yRDWyY1dG7e0Ll5lekcR6tsJ4a4TGGIy3M0dpT3CgLZ2Tm4/+FnRMJNE8aPGw1//6pX1OBbEiABEiABEiABEiABEiABEqg8Avv27cPgd/6HDu1b45svP6q8jp24J7NRD60IQ3n0yBFUDw5CQFU/J9aWqpEACZAACZAACVibwD/rtyE0JAiNW7QBPMR9hUYJfG3tbtm+HRFwBUOcXQTelHHlWRybgBxCrc4TTz7RT3i+ecHXlz/GHHtEKT0JkAAJkAAJkAAJkAAJOD6BsLAauP3220S4ow5KvmqZS47Pdso+rheTLuG7737C/734JMIDPEReODOi60WUvSGeQQIkQAIkQAIkQAJXELilszDAySI2+pj1WTh9KRv7DxzFHSLnL4trEDCbTU6vqF0Y4kBDnENOtE1bduCvmfMxdMh7wgonw7xocM/dvR1SFwpNAiRAAiRAAiRAAiRAAiTgfARCQoLx+sBXFMVyRRAWrdaMpIsXMHnqDAx4/ikEBQU4n9JW0GjVyjX4d91G1AzyxRsvPGqFHtgkCZAACZAACZAACQgCIoXV5599jb0HjyEoOBDt2/1npCMc5ybgAvYhuzDEmeH8Fk9n/KYsWrICW7ftxMYtu9CxQ3tnVJE6kQAJkAAJkAAJkAAJkAAJOBEBk0mDKdPmYMnSlagXWRePPHSvE2lnHVVkKMqHbm+PAA89enZtZ51O2CoJkAAJkAAJkAAJCAIaEbrg3VeewOKVG9CuaRQUBx6GM3D6ueEK9iG7yBGXl5MiJhPDUzrKN0oaqPP0ZiReTMa58wmIbdLYUUSnnCRAAiRAAiRAAiRAAiRAAi5OIE+vx7Jly3HXHbfB29sNbjoXB1KM+rnCfXDr1u3o0r45NFlJEA8OiqnFQyRAAiRAAiRAAiRgXQJmd2+YfUJw8VIyqolIByzOSUCj0cHd0985lftPKxEh3x4Kb+rtYRSuJUN6egaGDP1WhCPZjOxcs8ivoBFhXIJohLsWNH5GAiRAAiRAAiRAAiRAAiRgdwQ83N1xd+87RY5rN8hwlbl5ZuElNwvLlq8Sm67521QO2AcfDsXb736EjWtW0ghndzOYApEACZAACZCA6xDQiFCVa5YuxIMPPY7lK1a5juLU1OkI2EVoSqej6oQKnTodjzVrNyA5JQ2tWjMMpRMOMVUiARIgARIgARIgARIgAZckkHQ5DeMnToeXlxc6dWiLKlX8XJKDqrQwRva7vxd0xlw0byxCQrGQAAmQAAmQAAmQgA0JaGCEp4c7QgKd22PKhoht3rXZBaIl2kloymSbDzYFKJmASaTwyxG7RGU+uGZNY+Hh4VFyZX5CAiRAAiRAAiRAAiRAAiRAAg5G4MTJU0hPS0Pr1k3h4aYR+UkcTIGKEtdsgibzIjSGnIpqke2QAAmQAAmQAAmQQLkJZGRmw9fXByYRplLj4VPu9tiAnRHQaOHhWdXOhKpYcewkNGXFKsXWyk8gIyMTf4hdobl5RiUUpdmsQZvWrWiEKz9atkACJEACJEACJEACJEACJGBnBOpF1kXz5s1gMGiUTYgyEsjKVevsTErribNv30F8+tnXMKacpRHOepjZMgmQAAmQAAmQwA0S8PP1hkZ4TWmzLsKYnYY5cxeK+zbjDbbG00ig8gnYPDQlY/BX/qCXpsefho/Bsr9XCcObL/rce3dpTmEdEiABEiABEiABEiABEiABEnB4AiaTBl9+8ws2bdoCjVaLm2/q5PA6XUsB+Zt85K+jsWv3PtzeKRYdWsVeqzo/syMCq9dvFQ8hDYpE1UOC0KxJTLHS5YpkiP9u2q5+VjeiFqIia6vvC7+4nJyKHXsOqIeaNGyAGqEh6vvCL86cTcDhYyfVQ+1aNYV/CaFdDx09ifhzCWrdm7u0g06nU98XfiH7l3LI4uXpiS4dWhX+uMhrqZfUT5agwAC0ataoyOeWN3q9AWs2bLW8Re3wGoiJqqu+L/wiJTUd23btUw81iq6P8BrV1feFX5w9n4iDR46rh9q0iEVA1Srq+8Ivjhw/jbj4c+qhmzq1hbt78Y/ldu49iEuXU5S6HiIcW7eObdTz+IIESIAEXJmADFowbuwf+GPGQiQkJOClF593ZRzOo7sLpGm2eWhKedOvz82/uXCemePYmoghQcKFZMyYORdPPdGPXnCOPZyUngRIgARIgARIgARIgARIoIwEjh0/jpmz5uK9twfCx9u9jGc7VnWzyYi088ewY+c+3NKFD/sdafRCorsiNT1DEbnPHT3w17hhxYp//kISIlr0VD97b+BzGPreq+r7wi9WrduC2x4aoB6aMPxzPPbAner7wi9+HTcDA//3lXpo87KpJRrCBr73JX4d/6daN+3ERnh7e6nvC7+47cEXsEoYGWWJCA/D8W1LCn9c5HXt5j2RkJikHLu9eycsnDaiyOeWN6lpGQiJ6Wp5i//r3w/fDX1LfV/4xaZtu9H17qfVQ6O++wjP9btPfV/4xR/T5uKFNz9RD62ZNw6d2rVU3xd+8c4n3+P7UZPUQxcOrBbGw+LDcN37+EAs/udfpW614ECc27dSPY8vSIAESMDVCSSLDRPDRk3F/w18GcE1ark6DifRX4Sm9Cr+mugkCqL4rTfOoh31KBOBrOxssdvMWwnF4l81EP2fe6ZM57MyCZAACZAACZAACZAACZAACTgDgaj69fHu24OUtPF5ejPcRd44kzBYleTB44g6K9FpRE44bWYiAn29aIRzxEGkzCRAAiRAAiTgggQChefxZ+8MEPdpRphzxYYUTz8XpECVHY0Ac8Q52ohZSd7pf87Bk8+8ijNnkyDzwbGQAAmQAAmQAAmQAAmQAAmQAAkAepE3bvfew3j6+YGIO3PWKZCcOh2HFwYMRMKJ/dAY88P6OYViVIIESIAESIAESMBlCMgn2JrsS0g6fwZTp80Uz7RdIL6hy4yu8ylKjzjnG9MyayQXqfMJF5GVlSPisCcjJCSkzG3wBBIgARIgARIgARIgARIgARJwVgIbN2/H6dPx2Lf/ECJqhzu8mkuW/I39Bw5hg8iv9VDvHg6vj6sqMPqHIZC5z2SpVSO0RAwB/n6Y/OuX6ueNo+upr6980TimfpG67Vs3u7KK+v7W7h2L1K1bu6b62ZUvnu57Lzq3LwjZWFJuNHne+2/0x3OP36804evjfWVTRd4P/+p95OTmKsdKymUnP/T28iwia3T9OkXaKfwmKrJOkboy71tJ5aZObYrUbVC/bklV0VeE+GzVvLH6+bV0e+vVp/DYg/khQT09PNRz5POb+HMX1PeyjZLCW6qV+IIESIAEnJiANMZ98uk32L7nEGrWCEP37l2cWFuq5sgEmCPOkUevgmQ3GIHsHCOSki6jevVqFdQqmyEBEiABEiABEiABEiABEiAB5yAgH34fOnwETRpHw8tDA40jBxGRu8UzL2LTpi3o1KapcwwQtSABFyEgDa8+EW1Vbfs//gBGfvuB+p4vSIAESMAVCcSdvYCFy9ej/0sDoPP0cUUETqCz8+eIY2hKJ5imN6KC/CF5/MQpSCNcbp4ZWq2ORrgbAclzSIAESIAESIAESIAESIAEnJ6ARljeGjWMEXniNML7xixCHwHJySkOqbcmJwVaQzaNcA45ehSaBEiABEiABEjgSgIR4aF4+en74ZZzGWZTvqf4lXX4ngRsTYCGOFuPgI36H/37JDz3whtYu26LkMCRt3PaCCC7JQESIAESIAESIAESIAEScEkCJpFTe8Lkmej31Ms4dvyUwzAY+/sErF6xHJrcNIeR2dUEnbVwOf5Zu6lCc9ys3bgN02YvcTWU1JcESIAESMAFCWjMRmiF1/+OHbtw4UKiCxKgyvZMgDni7Hl0rChbTHQD4QFXHXUiSo6LbsXu2TQJkAAJkAAJkAAJkAAJkAAJOCwBnc5dRBXRwmBwjF3XZ8+ex4SJ0xAc6I9Ooz6Hl1dBzimHHQQnFLxzu5Zo0O4utGrWGB+9NQA9urYXYVBvbOOsNMAN/fY3bNi6Cwc3zndCWq6pklarwUeDBqjKF845px7kCxIgARJwYQIHDh7CwLe+RExMNMb89rNyv+bCOKi6HRFgjjg7GozKEsUowlHmiHCUMra4u7t7ZXXLfkiABEiABEiABEiABEiABEjAaQikpaUhIKCKQ+SMM5uM2Ld5Ddx1WjSOjnSaMXBGRd766Dv8NGaKolqnti2uMshtFIa1t4Z8r6r+2fuv4uYu7dT3FgPcGmGIk4U5xFQ0fEECJEACJOACBEwmE4b+MA4333wTuva41QU0dhYVnT9HHA1xzjJXS6HHmfhzqFmjhjDCyco3tquuFN2wCgmQAAmQAAmQAAmQAAmQAAm4DAGdzgydxqh4x3l7e9mf3iKhnSYzERpDjv3JRomuIpCQmKR4xeXkKj/clc+bxNTHsKFvKR5yy1atx939XlPPmz7mGzzQuyekAe6dT37Ett371c/c3dwUb7g6tWqox/iCBEiABEiABFyBgEjnC7NvdcDd2xXUdQIdnd8QxxxxTjBNS6OCzF0gc8J9PWyEqE4jXGmYsQ4JkAAJkAAJkAAJkAAJkAAJXI9AWloWBr3zCT7+7DsYZfgROypr1q6HMeMSjXB2NCbXEyWseggGPPlQkWr7Dx9Hr0deQvd7n8WuvYeLfHbg0HHcen9/3CL+ChvhZKWnH70XNMIVwcU3JEACJEACLkJAPv3WZCXBZDQgIyPTRbSmmvZMgIY4ex6dCpTN09MTISHBaBDVoAJbZVMkQAIkQAIkQAIkQAIkQAIk4NoE3ITXUVZWNtLTM5GdbT9eZ/+u24j33v8YQ7/8wbUHyAG1f+vVp4uVWuZ7+/Cr4fD28hT5/gLgIzwwhw77DZYwlFee9M7/PXflIb4nARIgARIgAZchkCvuy95/90O8/uY7InKBfW2WcplBoKIqATf1FV84NYHq1cMw4pcf4eHBpNxOPdBUjgRIgARIgARIgARIgARIoFIJyE2PQz/+CD4+XvD2sZ/fW40aNkC3Dq3wyD23VCoPdlZ+AtIr7v/691NzxV3ZYnZOLuTftcrzj99Pb7hrAeJnJEACJEACTk/A09Md+rwcmPR6pKamIjg4yOl1poL2S4A54ux3bCpEMoMIjWI265Cnr5Dm2AgJkAAJkAAJkAAJkAAJkAAJkEAJBDQaM7w9NdDYQzaArEvQ5mWUICkP2zsBmSsuun3v6xrcitODueGKo8JjJEACJEACrkggTYSl9PbygjYoAhotfZLsdw4wR5z9jg0luy6Bf9dvxrP9X8fxE2euW5cVSIAESIAESIAESIAESIAESIAEykfAbNZg+64DeHPwEJuFqTSbzYA+h0a48g2lzc8uLldcaYVibrjSknK8eiaTCX+v2qD+HRD5A1lIgARIgARKJuDv5wt3Nx20YoOS8FYpuSI/IQErE2COOCsDtmXzm7dsR1xcvMhVwF2QthwH9k0CJEACJEACJEACJEACJOA6BBYvWYFt23dh3YbNla50ZmYmXhgwEOtXr6j0vtlhxRMY9MpTSj64srQsveGYG64sxByrrtFowl2PvaL+DR87zbEUoLQkQAIkYCMCGkMOjh7cj1Wr/7WRBOzW1QnQH9OJZ8ArL7+IXr3uRGTduk6sJVUjARIgARIgARIgARIgARIgAfsh8PKL/XFTt87o0rF1pQu1fsMW7D9wCFt3hKNr26aV3j87rFgCFq+4H0dPLnXD9IYrNSpWJAESIAEScCECmVk5ePn/3oMZGjRvHougwEAX0p6q2gMBGuLsYRSsIIPBAJhMWhrhrMCWTZIACZAACZAACZAACZAACZBASQS8vb3RpnVr5OpFvjht5eaL69mjC2r6vYt6dcJLEo/HHYyA9Ir7beJfpcoVJ73h3v2/5x1MQ4pLAiRAAiRAAtYn4OvjhZefeRCePn4IqFrV+h2yBxK4ggANcVcAcfS3p0UoymMnTqFD+85CFXvIEO7oRCk/CZAACZAACZAACZAACZAACZSdgMwXl5tnwo6dO9CxfWtoNNb/fabNSUazRlFlF5Zn2C2BsnjFPdO3DyJqhdmtLhSs/AR0Oi2mjf5GbYhGdxUFX5AACZDAdQk8cGd34REnU8UJDxZ4XLc+K5BARRLQiETONs1SKLvX56ZUpE4u25Zk+drr72PP3gP4/LNP0KplC5dlQcVJgARIgARIgARIgARIgARIwNYERv02FvPmL8CH/3sTPW+5yWripKWloYqXG3RZF63WBxu2HYGExCREt+99Ta846Q13aOMCGuJs1UyQpQAAQABJREFUN0zsmQRIgARIwEEImN28YPYLdRBpXUVMLTy8nNtTUesqQ+kKesodlgNeeBq9e9+Jli2au4LK1JEESIAESIAESIAESIAESIAE7JbAbbfditjYJqhfL9JqMppMJrzy2ltiU+a7yMnNs1o/bNh2BCxecdeSgN5w16LDz0iABEiABEiggEByUiKGffcj1q3fVHCQr0jAygRoiLMy4MpsXvo21qsXjVdeGlApYU8qUzf2RQIkQAIkQAIkQAIkQAIkQAKORqBeZF18+/UXCK9V22qip6SkwtPdDT5eHvDyZJglq4G2ccMyV5y3l2exUkhvuHcGPlfsZzxIAiRAAiRAAiRQlMC5hIuYNXcRZsyYWfQDviMBKxJgaEorwq3spnPzzDAYrZ93oLL1Yn8kQAIkQAIkQAIkQAIkQAIk4NgEzPD21EBrja2wYkemOe0csjPT4efj7diYKP01CQweMgw/jp58VZ0XnngQI77531XHeYAESIAESIAESKB4Aiv+3YoO3W6GT9Xg4ivwaCUTYGjKSgbO7m6EwOEjx/DG4CE4fvLMjZzOc0iABEiABEiABEiABEiABEiABKxKQIN9B4/hx19Go8LTtOuzoDMbaISz6vjZR+Nvvfo0PD3crxKG3nBXIeEBEiABEiABErgmgVu7toWvNhfixuya9fghCVQUAWvsx6so2dhOKQnMX/g3tm/fhTNnzpbyDFYjARIgARIgARIgARIgARIgARKoTAJjxk7A7DmLsGXbzgrpVhr0Tp06DU1OaoW0x0bsn0BotWC8/MyjRQSV3nARtcKKHOMbEiABEiABEiCB6xPQGPWAPvv6FVmDBCqAAENTVgBEWzeh15vw74btaNe2DXPD2Xow2D8JkAAJkAAJkAAJkAAJkAAJFEPgxImTOHvuLG67pbMIUVn+lAKbNm/Dm4Pew/N978bz/e4tpkceckYCFy5eQoN2dyE7JxcyN9yhjQtoiHPGgS5BJ6PRiOFjp6mfxjaKwi3dOqjv+YIESIAESKD0BAxiTR09dSFOxF/EN19/WvoTWdMKBJw/NKWbFaixyUokIL1nZV649u3aVmKv7IoESIAESIAESIAESIAESIAESKAsBOrVi4T8M5pQIbnidDodGtSvgxax0WURg3UdnID0invxqYfxw2+T8EzfPjTCOfh4llV8k8mMtz4epp7W//EHaIhTafAFCZAACZSNgJu4l9qx+wBOnD6Hi0mXUC2E+eLKRpC1y0KAHnFloWVndQ0GA6BxQ26enQlGcUiABEiABEiABEiABEiABEiABIoloNGY4e2pEdFMiv241AfNxjxo084p9TXlbazUvbKiPRCQXnGxXfpg+z9/0RBnDwNSiTLo9Qb4RBRsxJaGuJHfflCJErArEiABEnAuAnFnLyCgWij8qtdxLsUcTht6xDnckLmKwCaTCQNeeRuRdeti4GuvQO6GZCEBEiABEiABEiABEiABEiABErBvAhcuJGHylMlo1SIWd93Z84aF1eSm23VqAoPRjIvpBqRmmqAXrw1GQAR0YakQAr744YefkaQPQNLJnAppkY3kE5A2bTct4CH+CfTTIcRPWyGhZMmXBEpDwCg8HpPSjbgs/vLEuqmX6yYXztKgY50bIGBZ79zEI+VAXx2q+buJta+cu4RuQA5bnxIRHqrcn5hMRmi0fL5u6/Fw5v4ZmtJBRzcxMQkpKam4nJxCI5yDjiHFJgESIAESIAESIAESIAEScD0CMrLJin/WIPFi0g0Z4nJFSJTz588jMsC+HpblGsw4EJ+Lk4l6nL5oQGKakQ+QrTq9a2Pfxgyr9sDGAZ0wyoUF6FCnmhuiQj0QU9NDHLPdd89NPDHfvXqmOjQBVf3V13zheATkhoUj5/NwNCEPp8S6eSHFCGGLYyEBmxEIrqJV1rt61T3QpJYHvD3EIugCRa7qmjxxTfWq6gLaUkVbEWBoSluRr4B+0zP0SE3LRGBgQAW0xiZIgARIgARIgARIgARIgARIgAQqg8CevfvQsllDeHmVfW/s38tX4eNPvsBrzz6EfvffXhniXrOPs8l6rD+cjb1xeRBR85Qid9kH+vsgKMAP/n5ecBPWDJ20aLCQgAMQMIpEjnrhwpmclo3k1EykpmerUvt4aNAi0gOdY3wQLDzmWEjgRghcyjBiw+Es7DyZh6y8Astb1SreYt30RaD4393dTfHG1DL08I0g5jmlIGAWfmAy76TBYEJqRo5Y7zJwOSVLGIPz56T0lGtSW6x30d6ICHEvRYuOW8UsdP514lwcOHEWP/34jV1HHHBcyteTnKEpr0eIn9uIgJLgW+dOI5yN+LNbEiABEiABEiABEiABEiABErhRAs2axorHXwUPX8vSjnw4G1knHC1jo8tyWoXXPXNJjyU7M3EiMd/65uXpjkb1Q1G3VhBCg/3hLp/gsZCAExDIydMj4WIaTpxJwvG4RGFAycVG8Se9RXq19EVIFc51JxjmSlFBGuCWinVz35k85QogNynERFZH/YgQhFWrCi8P5zZ2VApkdlIuAgaxCSHxcjpOxV/C4VMXsPtUnvJXV3gF92rui7rVnXOOyly7h4+dwo7dBxEffw61a4eXiyNPJoHiCNAjrjgqdn4sOzsHGp0njEbbhUOwc0QUjwRIgARIgARIgARIgARIgATsnoCXJ6DVmMu089ps1EObdlbRTT44quySozdh6a5MbD6aqzxIrhbkhxaNaqN+7WrMpVXZg8H+Kp2A9JQ7fPICdh08gzThQSIdPXvEeqN7Yx+bhqysdBDssEwEZO63tQez8M++bCVfZhVfLzRvVAsNI8Pg4U5DbplgsnKlEZDecifjk5T17sKldKXftvU9cafYgOCMIStPxyfALygEgTXrVxpjdlSYgPN7xNEQV3i8HeB1ssgL1/fxAejV63b0f+4ZB5CYIpIACZAACZAACZAACZAACZAACVxJIC0tDWN+HwdvLw8MfvPlKz8u+X12KrS5KSV/bsVP4pL0mL4hHZczTPDz8UDXNg0QWSvEij2yaRKwTwIyjNmB4+excecJ5OmNqBWkw6Od/ekdZ5/DZVOpLgsvuOkb0hCXZBSewlq0b14PsQ1qcuOCTUeFnZeVwOmzl7Bm61FkZOWiqo8Wj3byQ6TII+dsxSw2OJn9a4uEcZW/0cnZWJZdH+c3xJU9IH3ZKfKMCiRw9ux5+Pn5iR9rXhXYqv03JROa79u3D5s3b1b+P3z4sHAVjkdOTg7y8oRL/3/xi+1fE0roaATkLmNPT0/4+goX/Lp1ERMTg+bNm6NDhw6oX79+mXYvO5rulLdsBEwmEw4dOoRNmzZh7969yuszZ84gKyuL61TZULJ2GQlY1ilvbxG7PyICDRs2RNOmTZV1Sq5ZWi1z8pQRqUNVl/dA8p5I3iPt2LED8h7p2LFjytoj75Pk2sRCAtYi4OHhIXKceSEsLEy5R2rSpAnatWuHFi1aKPdP1urXWdr18fHB9u07BUNP4SFhFHnUru8VIX8XuRuybIJg24kczN6cIXLHiJwx4iFyp5b1GH7SJiPBTu2BgLz/ahJVUzFEr9p8BPIh9c9LkvFkN39EhTnfw2l7YO6IMpxMzMOENenI0ZtRKywAPTo2hJ+3cIVmIQEHI1AnPBh9QwOUzQf7jp7D6BVpuK+dL9pFeTuYJtcWV3gswWwQeUHdfa5dkZ+SwA0QoEfcDUCz5SnS3pSRZYBe7LiSxgFnLvLB0tatWzFt2jTMmTMHcsdo4RIUFKQYR+QDAD5kLEyGryuSgHyAKR9kyvmXnp7vim9pPzw8HA8//DAee+wxxShnOc7/XYuANLpNmTIFM2fOxOXLl4soHxAQoGyekOs116kiaPimAgnIdSo3N1dZo1JTU4u0HBISoq5TjRs3LvIZ3zg2gXPnzmHGjBnKfZI0vBUu8uG+XH+kgURXigf7hc/laxIoLQF5ry43xMkNJ0lJSUVOk3Ovd+/e6Nu3L2666SZeA4vQKfrmjDCk142oAS/P6xvhLicn4+FHnsL9vbrh1WcfKtqQld+tO5yFhduzFG+OWzo1Qj16wVmZOJt3NAK7D8djw47jItQs0K9LFTSu5dzPaxxtfGwh7+FzeZj0b5oSirJDi0i0FCF8bRFO2Ba6s0/nJnDqbBKWrz8IvcGEO1r64KZGzmO0yszKwaI12+HmUxV97r3LuQfS7rRzfo84GuLsbtJdWyCxURI5edeu4+ifGoWS8+bNw/Dhw7Fr1y5FnapVq+L2229Hly5d0KZNG8iHifIYCwlUFgH5sCkxMVH1zFy3bh1WrFghjOJ6RYTbbrsNAwcORKdOnSpLJPZjQwJyPixbtgy//PILNm7cqEgivSZ79uyJrl27om3btpBeAXLDAAsJVCYB+TB8//792LJlC+Q6tXz5cmRnix19osi5+eqrr+LWW2/lQ4DKHJQK7ksa/+XaM3v2bMXbTT7QkYaObt26KV6Q0htSbhThg54KBs/mrkkgMzNT8QTftm0b1q9fj7///hsXLlxQzomKisIrr7yCRx991Ok3El4T0jU+1Igccd6eGvG9vUYl8dGu3Xvx3ntDcP8dN2HAE32uXbkCP910NBtzt2YqeYx639wMYSH+Fdg6myIB5yFwPO4ilm84CBHYTPGMi6lZ8Z5x0iv25bc/V6F169Qajz/YW33PF/ZB4PiFPIxblaZ4EPfoEIMYkQuOhQSciYDMGbdw1R7k5hlwd2sfdI5xDmNcRlY2bu/7OsJCq+PPGRP4m6pSJy0NcVbHLR9m6m0U397qylmhg5w8M4zG6/xCs0K/ldXk7t278cYbb6gGuJtvvhkvvvgi7rnnHmVXd2XJwX5IoDQEpPfT9OnTMWLECBw4cEA55e6778aXX36JmjVrlqYJ1nFAAkeOHMGgQYOUB41S/Pbt2+Pll1/GAw88oHjpOqBKFNmJCUhP3r/++gsjR44U4c+2K5p2794d3333HerVq+fEmjufaikpKfjkk08wYcIERbnatWsrxo0nn3wSNWrUcD6FqZFDE5APiqUxbvTo0coGO6mMDOk9bNgwxWjs0MpZSXgRnRK6UkQSNqWehz47XaQqqBxvm71xOZi6LgPu7jrcc0sLVA/ysxIBNksCzkHgZHwSlv67X/k+v9izqsgd516hiun1BvhEtFXb7P/4Axj57Qfqe76wPYHzKXr8+ncqhH0Ct3ZqiOi6obYXihKQgBUIXEzOwLwVu5Q8mX07+6F5HedIo7R09SZENmyOKJHmgZsbrTBxSmzS+Q1xpbjVL5EOP6hEAtJL7Jn+r2P02ImV2GvldSW9ij7//HP06NFDMcLdcccdygPDlStXKiG1ZHgbFhKwNwLS20kaYKR3wqJFi9CsWTMsWLBA8UiQ4cLkRgMW5yEgw/9JLxTpVSR3+8v/pceR9IiTD8KlRxwLCdgbgSpVquDZZ59VQj2vXr1aWZ/k/507d1YekHOdsrcRK14e6YEtjf7SCFenTh1MnToVJ06cwDvvvEMjXPHIeNTGBNzc3HDnnXdi7ty5St7Cxx9/HMePH0efPn3w+uuvQ3rQsRQQSE5OwagxEzB3/pKCg8W9MpugM+srzQiXnGnETJETTiti7d15UyyNcMWNCY+RwBUEIkXY1puFB5RBRDOaui4duSI3GIvrEMgzmDFNbF6QRriubaJohHOdoXdJTasF+uGu7rHKfcIscb9wKUMsfE5QenXvgAZ1wmiEc4KxtDcVaIiztxEpQZ7TcfGIizsjQrwkllDDcQ+fP39e+aEud8jKXDZy5740arRq1cpxlaLkLkVA5v6SD5tkOKavv/5ayZfy0ksvYcCAAUp+OZeC4aTKJoucLA8++CCGDBkCb29v/P7777AYM7hDykkH3cnUsoQvlEbkX3/9FfIh+bvvvqvkb7oyB6uTqe7Q6siNWB9++KGyKenixYsYPHiw4oEt827JMWQhAUcgEB0djUmTJuGff/5BZGQkJk6cCBn14vDhw44gfqXIKDdFzJgx+/qGOEOOEvKuMoRSZNogjQjC+1/kNqpZPaAyumUfJOAUBBqKMISNo2rgcoYJC3ZkOIVOVKJ0BJbuzkBimhFRdaojtgGj5JSOGms5MoEa1QLQoUU9xfg8Y4MMx+ocmw804p6LhQQqmgBzxFU0USu2l5yShdS0TFSrVs2KvVRu06dOnVJ2xsbFxUF6wf3xxx8IDaXbfuWOAnuraALSQ07mQZHhKmVewylTpkB6pbA4JgGZ40aGnbSM5+TJkxWPFMfUhlKTQD4B6ZnSr18/bN68Gc2bN8fMmTMRHBxMPHZEQEYLkF7Xs2bNUnK+yWuJzAXHQgKOTECGy5U5dcePH4/AwEBlfrdo0cKRVaow2Tds3IyWzWMQEly8wWvBgiXYu2snnrz/VkSEW//30maRF26OyAtXKywAd4u8cNx4VGFDzYZchIBeuMTNWLwNaRk56H+LP+qHVky+uOKiGfD7aR+T6swlPUYsS4WvtwcevastPD24aco+RoZSWJuAXJcWiHxx8Qkp6NPWFx0aeFu7S6u3fzE5FbtOXEL37t2g0+ms3h87kAQYmpLzwE4IyA0FHp7eTmWEO336NO666y7h6ReHV199FQsXLqQRzk7mG8UoH4GmTZti06ZNym5vGbpQelIxBFP5mNrq7MTERPTu3Vsxwj322GOQ4XJlWDgWEnB0AjJX05o1a3D//fdD5meV+S1l3ksW+yAg82vJkKLSCCevKdLjmkY4+xgbSlE+AnJjktx4JyMISG9zmQd6586d5WvUSc7u1LE9/P2rlqjNuvUbsXDZKshQ2dYuWXkmLNmVJXJcadCtXTSNcNYGzvadkoC7mw7d2zVQdJsrjNoV5SUijW5X/jklQAdTShoi5mzJ936UISlphHOwAaS45SIg1yR5vyDvG5bsykRmrvXvVcolcClOHjZyCj4c8oVIB3CqFLVZhQRKR4ChKUvHyea1TIpnr8bmclSUAAkJCYonnAxLKfOb/PzzzyKmMKdjRfFlO7YnIB80LV68WAlZuXXrVjzxxBPIzc21vWCUoNQEUlNTFU846Tn0/PPPK2G13N0rNtl6qYVhRRKwAgFPT08RCm0GZO6mQ4cO4aGHHoL0VmGxLQH5kF16DMkw3a1bt1YMpmFhYbYVir2TQAUTePvttzFy5EhkZGQoG5bkGsQCiGi0JZZPP/kfxnz3HurUsv56sOlINnJEXqvmjWojwM/xd7WXCJUfkICVCdQKC0K92tVwUYQq3H+GvwWtjNumzR9N0ONcslHxIpZjzkICrkZA3i+0EPcNMqS19Kp39NKrRwc88/hD8Kvi5+iqUH47IkDLhx0NRkmirFqzAePGT0NS0qWSqjjUccsub+kR98orr+DLL7/kLkuHGkEKW1oCXl5eSri3bt26KfnEPv7449Keyno2JiB3NMqQcPv378cjjzyCUaNGcbOAjceE3VuHgMwzJr1T7r33XsUr5c0330RxIY+s0ztbLY6AXG+mT5+ORo0aYenSpUr4vuLq8RgJODoBmU/X4hknNwRIo5yrl/iz5zFz9gJkZ1+dl8RDREVq2rC+1X83GcUO0I1HcpRd7c1iwl19SKg/CZSbQMvGtZU21h50/AfT5YbhxA2sPZilaNfqv/F2YlWpGgmUSKCpuG+QXnEbDudAb1Q8Skqsa+8fdO/YCi880Qc1wqwfDtzeWVC+iiNAQ1zFsbRaS0uWrsCkydORkZlptT4qs+EffvhBCdt3yy23KJ5wjGdemfTZV2UT8Pb2xty5c1GrVi389ttvWL58eWWLwP5ugIDMXbNkyRK0atUKEydOZEzwG2DIUxyHgDTGTZs2DbGxsUooxD///NNxhHcySfft24dPPvlEySsqPeJCQkKcTEOqQwJFCUjPuGeeeUaE/TmB999/v+iHLvhu5uy5+Hn4WOzZd+Bq7Q15Vx+zwpED8blIzzGjQd1Q+HhVTE4rK4jJJknAYQiEBldBWIg/zlwyIiHV4DByU9DSE0jONOJYggFBVX0QHhpY+hNZkwScjIC8b5D3Dxm5Zhw66wRewAYn0MHJ5pijq0NDnAOM4KA3Xsbbg99EnYj8nVQOIHKJIh44cADffPMNgoKClIfbDEdZIip+4EQEAgMDMXXqVGUH8+uvv87Qb3Y+tvHx8fjwww8hjahy3Dw8+BDKzoeM4lUAgcLzXYaMlvkRWSqXgIwYICMF6PV6xQs3MjKycgVgbyRgIwIyRL3MWzl58mQlF6uNxLCLbnvc3B0DXngWdesU/d337zqRH27xMqRn5HtcWFPY7SfyHzo1qs8d4NbkzLZdi0DD+vkhZbeduNrb1bVIOKe22/8b14b1a1jda9k5CVIrZyLQyLLeHXf89U5jNiFNpCwxGK4RO9yZBo+6WJ0ADXFWR1z+DoKDQ3Bz95sc/oIuc54MGjRI5D4w4qeffkLNmjXLD4ctkICDEOjatStee+01yLyIMhwri/0SePfdd5GVlYXPPvsMMTEx9isoJSOBCibQtGlTxQidlpaGDz74oIJbZ3PXIzBmzBjs3btXCRP62GOPXa86PycBpyHg5+eHcePGKfq89dZbIiyj64Zvi23SGPf1uQeh1YvmF5o9Zz6++P43ZGRZl41BhJGSeY78fD1Ro1qA08wxKkICtiYQFVENWo0Gh+NF8iQWpyNw6Gy+x3J03epOpxsVIoGyEpAewPI+4tgFg8OHpxw2aip63fUgjh07XlYMrE8CxRKgIa5YLPZ10CTi9DtDWbFiBTZv3oybb74Z/fr1cwaVqAMJlInAp59+irCwMIwdOxbnzp0r07msXDkEduzYgcWLF6NZs2YYOHBg5XTKXkjAjggMHjwY0dHRSn5L6cXOUjkEpPH/22+/VTxxpXcQCwm4GgGZT/fpp5/GqVOnFG90V9O/sL5ms0bk6ix8BHjw/nvxXN97EFYtqOgHFfwu/pIBRhNQszqNcBWMls25OAEPdzeEBPnhYroRmbniS1aOIj3ou/Z+Sv37bsT4crTGU8tLIM9gxrlkIwL8vRnOt7wweb5TEJDph+R9hLyfOCvuKxy51Ayrhsg6tYrN3evIelF22xGgIc527EvV8+atO7Bv/yHFi6xUJ9hxpV9++UWRTuY+YV44Ox4oimY1Av7+/pAPueWPp9GjR1utHzZ84wSGDx+unPzRRx9B5s1iIQFXI+Dp6al6w40YMcLV1LeZvjIMbkpKCvr374+IiAibycGOScCWBGRYaPkbQa49MoKGqxazsMKdOZuAlNQ0FUGnDq3Rv989Vv8NFXc531unRjV/tW++IAESqBgCNapVVRo6k1Q+rzhpqN+0fY/6d+JUfMUIyFZuiMBZsW7KvfNhIfnje0ON8CQScDIClvuIuEvlW+9sjaVvn56YMvpbtGzZzNaisH8nIUBDnJ0PpEzWPWjw/8ROgvLtmrK1mgcPHsT69evRtm1bdOnSxdbisH8SsBmB559/HlWqVMGECROQk+P4MbNtBtIKHSckJGD+/PmQeZn69OljhR7YJAk4BoFHHnlECR89c+ZMXL582TGEdmAp5UN3GZZSFplHlIUEXJVAvXr18MADDyhecf/884+rYsDCRUvw+JMDsHL1vyoDjalyHmQlpuYbQIOq+qp98wUJkEDFEAgKyP9eXfjve1YxrbIVWxOwrJvB/42vreVh/yRgDwQs9xEXUh3bI06y1JgdXwd7mBOUIZ8ADXF2PhMee/R+PP74Y/Bwd7dzSa8t3rRp05QKL7zwgtV3cl5bEn5KArYlIL3i+vbti1SR8HXJkiW2FYa9FyHw559/QuaylB4pOp2uyGd8QwKuRMDDwwPPPvss9Ho9Zs+e7Uqq20TX7du34+jRo7j99tuVjQA2EYKdkoCdEJC/FWSx/HawE7EqVYyGMdHo3LmjyBOXn2tIGuvFDUqlyHCRhrhK4cxOXJNAoL+PonhiWvkf6sZE1YXlL6x6sGsCtROtLeMZWDV/fO1ELIpBAjYlYDHEXUxzgggHJifQwaazgZ0XJkBDXGEadvj69ttuxaMPP2iHkpVeJPnjUT7I8/LywsMPP1z6E1mTBJyUgMyBIsusWbOU//mPfRCwGByeeOIJ+xCIUpCADQlwnao8+Ja1x8K88npmTyRgfwR69OiB8PBwJV+rzJ3oiqVBgyh8+L930LljW0X9mbPm4fZ7H8fK9dutjiNHbxabJgFPD4bntjpsduByBLy88jdX5+SVT3V3kW9u379z1L+PBr9UvgZ5drkI5P5nV/XydOzN8+WCwJNJ4AoCHu75G5tzK8eh/4reK/btzPl/Y/jw3yq2UbbmsgRoiLPzoTfJYNMOXuLi4nDu3Dl07doV0huIhQRcnUD79u0REBCAjRs3Qtnl7OpA7ED/tLQ07N27Fy1atECtWrXsQCKKQAK2JVC/fn1ER0dDemtlZ2fbVhgn733Dhg2KhtIjjoUEXJ2A9Ei/4447FI/cHTt2uCwO6QQn/2QxGU1wd9PB28sj/4AV/9UbzXDT8RGBFRGzaRcmYPluGcR3msV5COgN+Yu1jmun8wwqNSk3AZnzV6558r7C0cvC5esxdfpM5d7U0XWh/LYnwLts249BiRLIB/ROYIfD5s2bFR07d+5coq78gARciYBWqxUhhzojOTkZx44dcyXV7VbXbdu2KUZRrlN2O0QUzAYE5PfBYDBg9+7dNujdNbrMyMhQNgHExsYiMDDQNZSmliRwHQKWa7HlN8R1qjvpxxr1d+Ajj9yPRdNHomPrplbXVf72lA/PWEiABCqegPa/75YTPJeueDgO3KJl04RWy7XTgYeRoluBgPxOOMMz7df7P4zhP3wp7o9oQrHCNHG5JjmL7HjIP/70Ozz59ABcTEqyYymvL9r+/fuVSq1bt75+ZQevkZe4HsM//RhDhgxR/r4cuwap3PDm4KNqHfHbtGmjNGz5flinF7ZaWgKWcXCFdaq0TFiPBLhOWX8OHD58WNkEwLXH+qzZg+MQ4NoDrFq9Fm+89QEOHDySP3Bm/qBwnBlMSUmABEiABEiABJyFQMvYGLRq0RhuIjoBCwmUlwCDv5eXoBXPz83LRVLSJVR18HCO8iGTLE2aNLEiLftoWn9hPX774lPsy8n/sRzawR39nu6Gqk65OyoTu+f+iE8nGjBk2kdo6skdYGWZhY0bN1aqW74fZTmXdSuegGUcXGGdqnh6bNFZCVjWqUOHDjmrijbXi2uPzYeAAtghgQYNGkBGD7B8P+xQRKuLdPnyZezatRenTsehcaNoEafSaPU+2QEJkAAJkAAJkAAJkEAxBJzBta8YtXio8gnQEFf5zEvd45effoCMLKP4IerYVneZH06WOnXqlFp3VrRnAiYkbJ+Koe8Oxbh/jsIr+nV8ZM/i2qlslu/D+fPn7VRC1xLLMg4RERGupTi1JYFrEOA6dQ04FfQR154KAslmnIqAp6cnwsPDlRzTTqVYGZTpeWsPdL+pE2rWCMbEidNgzk7GM4/cVYYWWJUESIAESIAESIAESKC8BDKzckSkujMIDK2FKlX8ytscz3dxAgxNaccTQMaadnQjnMSbm5sLDw8PZWerHeOmaKUkYM7dgP89+gp+XXEUuY6fd7WUWld8NW9vb6XRnJycim+cLZaZgGUcfHx8ynwuTyABZyVgWafkdZzFOgS49liHK1t1fAJy/XHltcdfRESpXq0a3HQ6zJw1FzPmLXf8QaUGJEACJEACJEACJOBgBBauWIdHn34Na9audzDJKa49EqBHnD2Oyn8yOYuNw2KIs2PUFK2MBMxwltlZRsUrsLqXl5fSmis/ZKpAnOVuKi8vT2lD7sJnIQESyCdgWacsxiJyqXgCXHsqnilbdA4C8nrs6muP3JQpyxefD4ExJT7/Df8lARJweQJ6vQE1mtyscnjq0XswbOhg9T1fkAAJkAAJVByByIiauP2WrqhRI7TiGmVLLkuAhjg7HfoLiRexZNkqxMQ0RrOmsXYqZenF0miYPwzIwNY5U7ApPv+Bv1ftbniqT3OYErZi6pg/MH/tXpxNNiAgvCG63vk4nn+qB2p6FeWmT9qGGX9uQrJR/DLXeKBJz2fQI0aPfUsmYNTERdh9PBFmv3A079YH/V/qhxah7kUHyZSMdX/NwM5EvXJc59cIfZ64BTXdCvdTVE6tRz3c/dydiHAz4cjKyVi2Zw+OpBV4R+Sm7sWfv/6CNTo3RN30OO5o5l+0T74rlgC/E8VisflBjovNh4AC2BEBfh8qbzDIuvJYsyfHIODq3wmzsMLt3LMXnuJWvnXLWGhTfR1j4CglCZBApRBITc9Q+8nOLvhtrh7kCxIgARIggQoh0K5FY7Rt3wFm78AKaY+NuDYBGuLsdPzj4s5i3B9TcP/9fZzCEGenmCtXLGEE+3vEJ/jgn/ycYLV7/og23vPx6rNfYeO5rAIfs+2bsGLBJIwdPxgzF32OdkEFEWRz45bji0Ef4GCOSRjifPHC7y1w4POX8PbknchWndS2Yf2q+Rg/ejw+n/onBnavDksLZtM5zP/+Q3y7JUnR3bvm02j+qDTEFUJxhZy6KvehQb87EOFnwI7p3+L1MfsheldLTsI/+PyNf8R7dzz60524XRjiLP2plfiCBEiABEiABEiABEiABEigVASkIfLDj4YiNLQapk4YUapzWIkESIAESIAESIAESKDiCViiFFR8y2zR1QgUfvzuarrbtb7169XFkA/eRvXQmnYtJ4W7cQLJR8eh32MHcfByvndakZbMRpzZPAzvfnUHln3TTZi4iit6rPiqL/44ehJ61QhnqWdG1vk1ePuBh+G/ajGebca8VxYy/J8ESIAESIAESIAESIAE7J3AIw8/iICqPti//xC89cmIiqxl7yJTPhIggUogIIMN9bmjh9pTy6YN1dd8QQIkQAIkYA0CVz10tUYnbNMFCNAQZ6eDHBQUgK5dO0FvKBwy0E6FpVg3RCDj1B4c0lZFx75vYOCTPVDL7QzmfDcEP/99DAa5xpv12LFgDg5+2hXNPIuZB+Y8nDhyEm7+jfHc2++j3y31kXdyJX4Z+h0WH0pWPOz0l//FF+9PwJ3zXkSYrpg2yiS5DvW63I1njfWxbtZiHEo1KGe7BzZHn/vawF/jhtaxfvSGKxNTViYBEiABEiABEiABEiCBqwn0e+xR+IiUwjfdfAfCw0IwY9RnV1fiERIgAZcj4Obmhr/GDXM5vakwCZAACdiCwPptezBi/Bz0fewR3HXn7bYQgX06EQEa4pxoMKmKoxFwQ9vnxmPJqD6o+l8sx46tfHGyWV/MOZutKJNx5gTO5pmLN8SJGhpdLbz2+1J892DtfANYhw64qWMd3NfpeSw9nyNqmHByxSQsPv4sno32LCcgN7R78ku0fWQdnlu7Shji0pX2fKrfjA9Gfl+ijOXslKeTAAmQAAmQAAmQAAmQgMsSuPfuOxAgDHIsJEACJEACJEACJEAClUsgIzMbp+LikZKSVrkdszenJMBUTnY6rOkZGTifcAE5OdKYwuKMBDRu9XDfUz1VI5zUURfQBm0aFyQANRmykJVTsgt0cLMn8eK9tYp4oXnVfQivPiqSuv8HzZS3GxvWpTgjQupEAiRAAiRAAiRAAiRAAk5LQP4KePONV9C/371OqyMVIwESIAESIAESIAF7JXD7Te2xbul0kVroIXsVkXI5EAF6xNnpYC1avBwjR43HW4PewC09utuplBSrXAS0tRBZz6NoE9oABFQp9LU0G6DPM4k6uqL1lHdahDdvjbruV4ac9EDLtrHw0mxD1n8hLuOOn4IRoapxrpjGKu+QKRHLxozBhnN5xfSpRZ2uz+DZWyOK+YyHSIAESIAESIAESIAESMA1CLzz3gc4dOgwFs2dBG/XUJlakgAJkAAJkAAJkAAJkIDTEij0xN9pdXRIxepE1EaPHt0QFhbqkPJT6OsT0Lr5wr/KlQY2LdzddJCmtZL94Cxta1GlaoBS13LE8r+XyDHop9Ugy6hY4pCRli6CVOJqQ5y5mF7MJhhNxRy3NF7O/83CELd8zI8Ytj2pmJbc0eOdW2mIK4YMD5EACZAACZAACZAACbgOgaCgIISH14Dmyj13roOAmpIACZAACZAACZAACZCA0xCgIc5Oh7JjhzZo1bo1DAb+8rLTISq/WDrd1YaxMrVqRnZWdvEGO4MRhkJtubkX/1U3SaObYowrPM/ykKt44RVqgC9JgARIgARIgARIgARIgAQqjcA7g9+Et0jxPODF11A9wBdfvv9SpfXNjkiABEiABEiABEiABIAz5y5gy75NaNKyNaIbRBEJCZSLQPFP58vVJE8mARIoHQFNsd5spTtX1jIh8cRxpBmBkCKOdSZcPnseGapXmwYhYWHFBrc0ihyE+is6NBvTkJZ25dErKpXrrRbe/n4IDBSCX1Xc4OftftVRHiABEiABEiABEiABEiABVyRw+MgxZISFuKLq1JkESKAYAmaxkfb8hYLoMj7eXgioWqWYmjxEAiRAAiRQXgIHjpzCtz+PxSsva2iIKy9Mng8a4jgJSMBhCZhxbutC/BP/Eh6pU9h4lYyVK3fD8F90SY2uGho3r5XvfafxgLu7VtXYmHUJSanCIOZTcMyQegSHz2WqdYp7oSkcI0f8EJBhL0tbNG6N8enKk/i0tCewHgmQAAmQAAmQAAmQAAm4KIGVy+dBl3bWRbWn2iRAAlcSMIjoN3Va3qYe7v/4Axj57Qfqe74gARIgARKoOAKNo+ti8MDnhUdcq4prlC25LIGCp+8ui8A+FV+5ah0GDf4AO3busk8BKZVdEDCmr8TQgaNwNNOS082I4/M/xTfzjqvGMa/QW9Gzo0++vMIoV6Oat+qJZ9ZvxazJ+5H3nzbmvDOY+r9hWH3ZcqQYNYUxz6OQMS8vIx1ZZbHEFdMkD5EACdwoASMu7FuEHz94Eff17IxmDRugTu3aqBvVCG0634bHBnyIcYv2IZ3f0RsFzPNIgARIgARIwCYEZs+Zh59HjFb61un4s90mg8BOSYAESIAESIAEXJpA7ZqhuK93T3rDufQsqDjl6RFXcSwrtKXEixexZ88+3H5bzwptl405GQGzEQcWvI6OzWai583R0CXuwtJlO3DJkuNN441bRF6JLv6WH+9+aNO2AXTzTud7zJnTMet/t+LU6l5oFpqHQ+tWYOOxFJiFx5tGeLpZzHuFqWl0QQgO8lAPZSfMxMCHjYj1uoDAXr9g2HNR5cx9pzbNFyRAAtcgkJvwL74dNAjfztgmQtRe/W09ffwQtm9YjmljvsaQlv3w7Zgf8GirgGu0yI+uTSATu+f+iE8nGjBk2kdo6lk4t+a1z+SnJEACJEACJFBWAmv/XYfDh4/gpf5PlvVU1icBEiABEiABEiABEiABErAzAjTE2dmAWMS5v09v9BRGOJ1WZOhmIYFiCWhRPSYWXnH7EHdiLaaLvyJF44aYXp9j2ODWhfLDuaHlE8/htpHrsPhsjlLdpL+ErYunYKvyTgPf8F54rkciRk7aDkORBv97o6uDTu3qQLcuEUqWN1Mati+cgO0i0m3nmqfFMRriisPGYyRQkQRS9o3HE/f9HxYdSyvWYF6kL7Me8TvG48nbjuHSggV4pSONcUX4XPeNCQn/z95ZwEWR9nH8t7ssICLdISK2YmCgiF3oiXl296mv7RnnGWf32d2toNiiiCAKdmAgICYGIFJKszvvM5uzsJRnoDzz+Sz7zMyT32Wffeb5150DmDttLnb4PoV2hfGYlW8ZmoESoAQoAUqAEvhvBMaMHgmRKAU+F/1Qip+KZi61/1uFtDQlQAn8EgT4fB7+GjdUMZY6taoq0jRBCVAClAAlQAlQAkWXgNxMpuj2sJj2TFNTCN2SJUk8L27sr2IKgw47FwI8lG46F+c856CJna7C3SSbmS80R+s/tuKUx3hU0Fa12tCy7Y5tR5bBvaoZBJxbPEEpOLpNgqf/IXQrl1ewZyFajJ+J/k7mIM8AnEOEuJhoqXCOc5UmKQFK4OsSyIg6g9HdxqsK4Yjg3di+Hjr1HYZxEyZg5MAuqGOnr/IdzfwYiL8HzcQt6qeyUB8Ikx6EGT1HY+PFp0jPaXhYqLpoZkqAEqAEKAFKoKAEHBzKooZjNSxdvgab9ngVtBjNRwlQAr84AYFAgH+mjVa83Ns0/cVHTIdHCVAClMCPI3D+8g24uvXE/gMeP64TtOVfhgC1iPtlPko6kKJAoKTjFDxMnaK+K3xbzLj4DjPU35VdLYFhh5+TV56ZODeFKNduJvxCh+GGry/uP4+HhqEd6jRtgZo2srhwnNzSJB+WLv/DyQf9EXLVFzdD3iG9hDmq1msGl8rGUreSs/yQmYfJh5atO7bfeIxx/hdxnZRP09CHbYWacHWtBe0c7dELlAAl8NUIiOPhMfMvHA5LVFjCCXSrYNSyrZgz1AVGnF91Nuaj55whGL7UBwkS81UGCeG7sHrPOOwZTS1XC/OZqHfUW5gaaF5KgBKgBCgBSuDLCIz93wiUEkg9WXxZDbQUJUAJUAKUACVACVAClMCXENAtWQJlStvAwEDvS4rTMpSACgHOlp3KdXrygwm8jnyLsKcvUc6hAszMTH9wb2jzRZ0AT9sC9X/rg/qF6ShfD1UadyavwhRS5uVpGKNGyx7kpbxGU5QAJfBtCaSG78OqQyGQh4TjCx0wed95LOxokyM2I0/TFt3m70HS6xYYvj8EYrZrTDICvM4g9o+xMOOaxLL3xAm45bUTe718ERwRjRReSZiXroLGbXugX6/GsFQTE+3jg5M4fJl1SQvwBDZoM6gTygljcOXQduz2uozQ1x+BUlZwbNAWA4YPRAO7EmxLao/M+Efw3L4LJ/zu4EX0J2iUMkGZKi5w79kfXRuVQQ77cNF7XNx/HE8SWSe6PBhX+w09GvJxbMlcbD73GJn69mjUYRjGDGoGc5llsDjlFXwO7sUx3xsIexGFxNQsaGjpwtiaWB04t0afAd1R3ULekgjhl/bh/IMHCE9KV/Q5PfEhjmxci8sCDZRr0hdtq3MX5GLEECbbdx3D5btPEfsZ0DO1RQ0XN/Qa0Bv1SlNVBQVImqAEKAFKgBLIk0BMzAfy256Bzp1+g/Dzuzzz0puUACVACVAClAAlQAlQAl+fQMM61dHApSGgY/T1K6c1FjsCVBBXRD/yoGs3sWHTLvw5eQKamzUtor2k3aIEKAFKgBL4fgSycNfDC/c/y6M38lHB/W9MaZ9TCKfoE98CPScNx7HX52Faozbq1quPBg0bwCSbEC4j5jJm9BmC1b7PkMl1v3j9Ms54bMG/K3ph9cFN6F6tpKJqIrlD1OXtGD/2JDLJVZ5mC+x2LYlNE/7AGr8XyFLUcwdBfqexc9NuLPA8hcnNsiuXiPH60mIiBFuIwDfJCks/tqEg//M4uHklGvRZgt2bhqNcCaU/XCbrGQ7On4YdT5NITgGchpTA591rMHrPA1nbN3D18ntUbtsIfcoI8TnsEIb+PgZHHsWqtMG2A1zFea+9WLNyI+bt98DElpZk85PwPrQM47c+lgoxpRmRFuWLBRN8yZkQPVe3QxsiiJP4+RZ/wKm5gzBs8TlEp0vEnrIS1+Hn7Yn1K1fij2X7sHxoTWjK7tA3SoASoAQoAUogNwILFy9FWFg4fM4ezqmMklshep0SoAQoAUqAEqAEKAFKgBKgBIokASqIK5IfC+DoWBWDBvZBWXv7ItpD2i1KgBKgBCiB70pA/B5+l0OVcRj5+mjZzR1Ggrx7UbLWOJwJGJdrJlHSNUzt0BOrb0SpEVCRYowIUY/2Y7BbMoQBh9C5bC5iJHEEVvTtg4cPY1UEV9KGGWTE3cTC/y1G67vLUZ1jXRdzdQE6dJmLYIllW85uMqJEBO0dg87JGvA+NBjWGkphnDI3gxcX5mLqu9ccASAPlnXboamNBpi0u5jTf3wuQjh5LQzSYoLwz7DZcH24CfV15dcL8p4E71k90HOhH1IUAkhuOQaZCY+xflR7ZGj4YcPA8jksGLm5aZoSoAQoAUqAEqhVqyYsLc3AVw3KTMFQApQAJUAJUAKUACVACVAClMBPSECixP0T9vuX73LVyhXQu1c3lClj98uPlQ6QEqAEKAFKIH8CTEY4QiOSFMIynqA8atQslLRITSMZ8F82FetvyoVwfFhU74u1nn4IunISS4Y0gJ5kpcAg+e0JzJ5xBHGSeHM5q2KyXiH4URzMqvfAkj1ncSXwIrbNcIeFpnypwcaoO4Nzd1IUhZn0O1g4bg0eyIVwxGVuw/5LcMI/CP4n1qFPbQupwIrJxCOvv7HE850aIR9bnRjxka9lsfBk1fOEqPebOyw1GLw8ugbb7kRL2fE0Uc19JjwuXsPtW0HwPrwCXaoaEueW7EHG+eYy/INTSVqAsq7uGDy4AyrpK/WWhIY10G3wEAwZMhiNq+lK+pd4cw0mrgxQCOE09B0xcvkRBFy7Ao/VI+BoJHV3Kc58i13TZ+BCtNyqUdIo/UMJUAKUACVACeQgMKBfH8z5+0+0c++O/mPn5rhPL1AClAAlQAlQApQAJUAJfFsCoREv8e+GXbh1+963bYjWXiwIKHeWisVw6SApgZ+bgKaFMwZPmoJYic83smFeryzol/jn/kxp7ymBghJgshIQl8g6gZQdfGOYWcrjmckvAkk3tmHK1uvEsaL6g6dRBn1nT0MTSw2IP1/Clt13FO4otczdsfH0DnSyldbbwKUuDJOb4Y9DoUTUJUbIqR3wjuyB3sTVo7qjlP1AHPLdjCYm0pnJ1cUJvFcuGLaPLc8a10XixfMMwEXq4jLmwk4cCP4oEy7yUbnjShzbMVgWv64BGtS1QFK9fjj1hgjGxNE4sc0D07uNg2U215rSvvCgW7oDVu37F12r8RHs7QtRfQciKGOQqueIQUP64eXr14jKcMaq/XPgXEomIKzTAJVT7+DsoANII9ZsjCga796wnEuiXv9FqNvjKoYE+CE08ZOkGR2zZvh7w0qOVd9nnN58CGGpMgkl3wyDV53AuoH2UiFifRfUNMuES9+d+ECC+6VHn8GeIy/Rekw56X1p5+lfSoASoAQoAUpALQFzEi/cxJAbj1RtNnqREqAEigkBsVgMv6s3FaO1tjRHpfLUk5ICCE1QApQAJfAVCbx6Ew2P4+dgZmWDunVqfcWaaVXFkQDdwy+Onzod809LQNOqOSbPb/7T9p92nBKgBL6cAJOViUzy4K08eFDnrSrt+RXs3L4HRNyl9uAJ66LeuD8lgrikW8Ty7T1r/cUeAlRtPwjtZEI4ySUSY67r4HaY7RmG90QBQJRyC5cvxxFBnLnktuofDdTq1B8uMiGc9J4+6jtXgkAmiAOThZTPbHuG5JWBGz5B+EiEU+zBE1ig45BuMiGc5BI0LdtjgHsFnNkYTAR5DN7e9MOdhLFob6zGPSWxpus5Zy0GNbKVCLia9BosrYT8reI+Cf+6K04ViZSYJ7jq6w2vA7c4gss0pKaq9S+pKMdNMOn34RsQKRE0stdLWLRD/+52HCEbHw6d+sKttAf2viDCPCYVty4F4DMRxNFtVS5JmqYEKAFKgBJQR2Dv7s0QJL1Rd4teowQogWJIQCQSw63HSMXIh/Xtig3L/lac0wQlQAlQApTA1yNQt2ZlbFjxD6zsy3+9SmlNxZYAFcQV0Y/e68RZ7Nh1CP8b/QdcG7oU0V7SblEClAAlQAl8LwI8zVLQ1SY/20kyWzcmCXEfiRWW1HfkF3RDjA/hzxAtsbBli/NhVdoKnxMSOEIkQGRtB1viXvJ9FmmLSUPYozCSV50gjgebsmWJOI978GFkWErm9pG9ziArU2bVJ45H2NMYhQALfGvYWqUjgbSvPBjY2tuQ/rCCOGIUlxqGkLBUtJdZ1Cnzkd4La6FlG5krS+4NTjor4SkuHD8G70tXcf3mHTyKiEKqTBCoyMYwpJcFPzLjnyIiSulus5RtaRilJiIhgyMsZCxhb6cDsII4UvuH0Ed4mc5wrOoK3h7NSQlQApQAJVA8CGzYtAVv30Zi6YIZ2X5bi8f4v2SUDPMBV/ZtxZ0o6VqDJ7BBy0EDUc1QdXXyJXXTMpQAJUAJfF8CYry9tgtHr0bKYoQTt/lNRqBjPdPv2w3aWpEjkPbWF/sPXUWSTEeXJ7BEs36DUcM0ry1++v/0pR+kkYEeDMysAR2jL62ClqMEFATy+pYqMtHE9yfABuUWCPikYc5G3vfvBm2REqAEKAFKoIgQ4GnawcGWxISLSZP2SPQcYaEkba/qJlJDzwpVq1blWMSlI+rZc3xM41rTsVWIiSAvkSN0ysTp2fVgPDuvAYvxMSpKfQaeBnT1SqkI8diMfA2B1HIvm3SLIYK4uASl3R6TeQujncwwWn3tkquMOBZRUeqD1GnoW8PCILeNtkQErJ+IEbP2IiwukzNmNY3xWEvDgv/2ZsXFITFLyTbmxlxUMZmrpmLlpdTYKJklYMHbUZamKUqAEqAEKIHiQCA8/CnCwsJB9EPoUVAC4hhcPbAa2+/HS0rwNOrCulM/NYK4ZDw+txrrPUQYt/FvVNT6OX+PxSnhOLVhLq4IRmLRhIZQXREWFBrNRwlQAkWTgBjvru3HupVXZII4DbTS6qpWEJfw9BQ2L90LyxG70b9OiaI5nHx79WvMy/kO8z9nyMKDQwuwZPlV2f8FW6Emnmq5Ys3oKnko7hT8/+k/d5FWQAlQArkSoIK4XNH82Bsd3dvCzc0NWVk/50PBj6VHW6cEKAFK4NcjwNNwQN3axOLrTqzEOowRxeCKz21ktG1Glt7Kw+i3RbhLXvKDybiFMbXbYP0j6aaU/Dqr6MEqfRTuIDHOUmWCwBwFBUSBJMdFcoGnVqWEx+OjEPIuacXEIi8th0BRekuzpB5Kqq1QjKeHJqL7+F3E+k8uMCPKLtpGqFC9NurWrQ9H4TXMWu0DqUdK0i9WD6aAB49f+HGI0lKRIe9KAduh2SgBSoASoASKF4EF8+ZAKBBh2/bdMNQG+nZ1K14AvsloxYh+cBBrF8yDZ8BzaDuMw7hv0s63rZRh4nD7yBIsX74Ft9+kwXnkH9+2QVp7kSLAKmzv26hc6zuUsSlS/aOd+X4EMuPv4ci/M7F+rw9iMsth6oifUXPj15iXv9enLibP9sdP3OcI4diWM3DNYx+eD1+A8sLCPt9/r57/vO18TknFxw+foW+uAT09Glzi5/0ki0bPqSCuaHwOtBeUACVACVAClEA+BEqgcfsmMNn+GDESd4pZuHlgDbwnuqKDzZfoQAtgZm4MAVmrS71TCtFl0XWsHWCpVnAm7RwR3mnr59pPtXKw3HILTGFuoi1pi31k5Gm6YvOtg2hvqlaaJ2ueBx0D9e0LNLUgVCNAY7LCsGP1KcTIhHB8rXIYumwTZg5sCptS0rZiDg8mgjh5R4ngsBDPL5pmZjAWknpSpZI1q8bzcfHAYBio6YuiBZ4WjHTzyCDPSN8pAUqAEqAEii2BkiVLooQWcNjjOKwtTKgg7iv8J4gzgrBixGgcfSl1KU3kmz/lkXRtKcZNWoVoyXowj3XTTzk62un8CPCJEliPTlQwnx+nX/9+BvxXDMWc7Q8lSpq8n3Qq+FXm5e/1//bxymH4Pk/O0VziUw+cuzYN5RtTQVEOOP/xQuDNB5i9fCtGjxqGPr27/8faaPHiToAK4or7fwAdPyVACVAClMBPQ8Ci9QB0r3oQ6x/ESdwrpkefxPh+C2FzdAacjNT9pGfhVdBF3I3KuVhnB23oWBV2RHoVLjHPEuFZSAT0LJ1AHGAqjvc+KzDLMxLmNjawtbVDzca/wdxQcfs/JHRRvXpp8E9J4x4wWREIjdDCsOrcuAeJOLF4GryjDWHDtm9XDc1/M4c6URxrmaZOtMWkhSA4TOmC07LBSMwb1RxmrARScojwJvI9MjkKpNkFcTzuBeIjjGvMxtetgmr2pXApOE5S28fwEAVQYWUAAEAASURBVLzXMUdlQ2VvRAl+mP/nISQR3/I2NrYoW60R2lpQH/OyD4C+UQKUACVACeRBYMWy+dDJ4sZPzSMzvZUPARIHlvN7n0/mIny7cPFsi/BAaNcoAUrgPxBgfokJ7VeZl//DB1ngovG46HlOFuIgWyHxa5w/7I3BjburPMtny0VPv4CAhakRWjRpALvStl9QmhahBFQJqNu1U81Bz34IgUePQ3H95n3Ur18f9mXK/JA+FPdGxSnB2L3SCy+5u7MsFLIhy7pUEwg0INQqgVL6RrC0qwKXRnVgoSPf2P1B9ESv4bVuN+7HZUk6oGnqgmEj25AN54L3J/bWAWw4HSY1decJ4dRlMjpW/1n1RQs+bpqTEvgZCPC0amPynJ441mMT3mWy4iAxXvj/g9bONzDqz/+h12+NUMFaB6kfXuFuwFl47NuBPafuI0miMZ1zhKWqu6F1xZUIfxgvqeuh51ws6VYf/7gTARl7Jfke/p2zHNuDoiSCP76wEhZfbgfnsjnrKvwVIWq7t4b9siBEZJBdMXE09syeifbOa9HMWmrhF3d7E/5ZtA33ktg5jQeDyhMQ4N4Iah3wsHOzuk6Q+ZrrgjMu/BpuR41BO1kbCU8O4p+NXB/7ImRy/UbyNKHJMbXL+PwJKRxJHE+zGtzbVcL64CDJvJkefQz//N0Njqs7wlSD7VEKAtYsxJLtF6WuL8m82nSyL9o1Kqeut/QaJVCsCSQFe2DVsUfZ3O0okbDrLz5Zf2mV0IWRmRUcKjkRl70OkBm3KjP+8JQIET5bsf/qe6ngnm+EZgNGomkZriPhH95J2oEiTuDBw0fISP+MhvWdoJn8voj3tqh3T4TngftxJeQhXn5WxqdN//QQp/dswDW+APYufdCkcinOQMSIfXIShw8dx62HEYgnOk26xjaoXLct3Lv3QA3rnM9H6VGBOHnuPpLJOoHH04Vj696oKL6IjcvX41rEZxiWrot2A8bCvYGtLJ5bKp4FHcHxUxfxKPwlPiamghFoQtfACnYV66F5l35oUdNSEfOHEUfi8uHTCHvyEGmKDXgGMY9PYv/2YPAEVmjUrRPKllSuiBgmAcFnd+H4GT88eRWNNLJFa2JTGfWad0Pnzo1gpqnMyxl8gZJs3Y8vHsQpb388Dn+NpAw+dA2tUa5mU7Tu3AuuFdVrbsURrmeCpIpYPIE1mvTsSBTDYnDz+A4cO3sFz94S5SZdS1Sq3RZd+vWDk83PGvOqQBhpJkqg0ATSIi/juE8wmTekyplsBQyThLvntmJXsAa0rVzRqW0NcGepzMRHOHdgD3yu3sPb2E/g65rAtkJ9NCdxNN2c7XLEmGTE7xF49AQiktj43DwYVWqHdvV4OL92Pg5eCoFIrwzqthmGfj2bwFQWZ1Oc+gpXj+/D+YBbePY6Cp/TRBBo6cLQogwqO7VGxx6/o5Kp3JPL95mXCwM3M/EJEXQdxKXA23jx7iMyBWS9aVkOTg3bw71re5TRyzlfipIJV4/LiJWEMWd/S/qR3xItvLnniSMHvHA37DU+iXRhXcEZLX8fCveGZXKwLmgf06NO47Tfa0W881IOJA5q3F2ExrONMwj32YfAqC5oY0G3+gvKtCD5alQtD8daToAOVaQtCC+aJ28C9NuZN58fdvfR4yfYs/cgzM0tQAVxP+ZjYNIeYd+yBbgk2QDOrw88aBs7YsDfa7FkbGPoKw0h8iv4Ve8zWa9xev1y7HiaJKnXoMokdBzWmmP5kV9zYny87Yn5c72QyWbllcBwh/9RQVx+2Oh9SuC7EeDDruMCbP7zCXot9sNniUCIwceIc5g3grzIQxIrdGIYcS4a3zwYlq2FCiZS6TxPsxZGTWiL/cMOIp4I68Spj7GwqxPONW+NmjY8PL16HlfDP8oW+3yUazse/erpfLXR6tUZjDHt9mDC8Wdks5pB7KMtaFfzKlq2doYpE4mAs354Lp+DyUZ214mjUFX2oFfQTvC1q6FmJQOcDYyWjCP13VH0cHaBW0tHCOMew4/E2Yvixp0j7BI+snH4jCTCSJ7ACMZGys3z1ChPjO0uQjXtaBi6rcWKIeXg+scotNhxBxei08kzUBoCNnZHzYBmaOFsi7SX13DO74ks/hwJpW3cBv8bXf+LH8AKOm6ajxL4GQl8enACC+buJ5EuCngQwZy+rStGzVuDmf1roOhs1Yrx/OJuzFt6XSJU5GmUhWbToVQQV8CPlWaTEtixczfCwsLhc/YwRfKfCWThkddSzNsfLlvTSCvMiLmEDbMukRMh3Oe1RSMiiGMf4xjmAy4uH4K/151HLKsspDhu4rrfMezd9C/6ztqDqX2qq8TpTXt+Cqtm/osoVgGKb4UhugJsXzUG3i9kngnuBSE01gauR8bBJOspDkzpg0WH7xPhWM7jZsBJeO5YhRZjdmPpn60kz5dM5hMcWzYFZ96T9YbiIEpZAaswL4A8ugkb49827kQQJ93myYi9jBXEldauKy8hVdOUFbobAP+TW7FjY0/M3rge7SqXVNRW0ER86AHMnzgdJ+/JFA4UBW/hxuXjOLBhMZoMXI75RDnJUkXYJ0ZM0HZy/ZykTzxhc+iTteX+WaOwO/C1iiLGvcAz8NyzB39uO44hDU0ULdAEJVDcCaSEHcPymRsRL3kWlNEgSo0XNvyJC+TUouFytGpDBHGSfSkx3lxdjIljl+DO+1QVdPeCLuDknlVw6roYy5cOgZ22UtDEZD3DyX+n4egL1pUvH9V66eDTkdX458hj2ff0Fm5di0a55iRMgq0GPj87hOlDxuFsGKvgmf0IxJVz+7F782ZMXH+IWG2RuOdkBvge83L2nqg/T8a9w9Mxc94OPPmYfRV6BQFndmLzaqLkPn8bRrUvp/IclxUXiJ1zJ+G+JEyBEB0X1Efqyb8xc70P4jhK/Y/uXsb5I1twdsxBrJrW4gus1kQIP3EEdxIlEj8yDCEadF+JVi+HYurBMInil/iTH04di0DLUZUUChzqx0uvUgKUwI8i8IPEBT9quD9Pu64N62POrGlwrFb15+l0se4pg7SPD7B5kjv6zPaHeidwxRoQHTwlQAl8LQJ8A7Sf5wGPBd1gWyL7zzgRponVC+H4WpZoPWI9/APXo4mpXA9HgMr9l2LloFqQy7fEmR9x5/xBbN9+AAFhHyGW7D/xoO/QEytXD4KFwqXjVxiQwAYj1qxAj8qGRITIHmQujX2M0wd2YOdBHzxLzJJumBGrtDp9yCbTwLKSDbJCtSxwwJDxnWChIWfF4PPb2/DcvRMHT91EVDoPdi5uqGWk1M4MD76n3BQT2MGlnp3yYUachDund2O350XcevBK8iCqXbon1qwbirI6MvNjJhPvHl3A3u3b4eEbQgSm0k08vlZZjFqzCp3t5G0VaiQ0MyVACWQnQATnia8DsGRIO4zbES7ZhMiehZ5TAj8rgbZurTFwQC/ExHxAzEd1G5s/68iKer+T4L+kJ8av9M4mhFP2OyspBLundcC8wxEqgiNlDpIi1ilnl07GebkQTnJTE7VatoUxPx3X1vyBhbkI4eT1MKJY+K4diZ1XpEqW8usFeRd9uobF/XtjW3YhnKIwsfgLO4ApfQbhwiuJCqbiTn6Jz2FbMarHcBzPIYRTlmQyo+C/dSCG/LENkSrCTGUeSUocga2j+2NnNiGcPFdmwk2s/2spwtK5AlH5XfpOCVAC+RH4cGMBhg+am0MIpyhHnm3ueozFyP/tJnEnFVezJRhEXp6HZR5yIZz0tlnNtqhnpQFx+h2sHjMxFyGcsqr02CCsnvwPgpML+33+SvOysiucVAbu7RiIoZM2qRHCKbOlRgdh7chWmLPvsVRpXXmLkxLj/v7BmLL6gooQTpFBnAD/9RNw8LY0TqniegESjOgJTnrdULTNL1EfbTrUQtPObWGqeD4nvy2ee/GKIwAsQNU0CyVACXxHAvJdqe/YJG2qIARsrC3RkAjjTE25sXIKUpLm+VYEeAJt6BsawpC8DAz0UUpHEwJu3CC2YbKIObdsPLbdLPwP67fqN62XEqAEfkECfGO4TTuEOzeP4u8BzVHGUEsmyFIdK4+vBZsqTTHwzzXwexSK85tGwtFYLoST5SUugQZuOguvZYNQw6JEjnr4Gvqo3elvHPfdgd++gVs1LduO2HnpBOb2dYGJVvZlCQ+aBpXQd/ZRnNzeB5YSV4+qY8z/jA/735fi0Kr+KK8vVBkfX8sKbUdvh4/3bgxtaiO7J0b4xeMIjJOrmArRYvxM9HcyBzE25BwixMVEyzbgBKj4+2r4nlmJbnVtIFTJR4rwNGBeuQOWeflgeS+HwgsTOa3SJCVQfAjwoKFVSrLuYtdekpeBAQz0S6GEkK/yXRZnvcPeGbPhGyv/3hYfSnSkvy6BNq1bYWC/nujTfzjGzFjx6w70u4xMgNL1OqB7r/Yoy/Flq6FfHW17DUS33gNQt6Ku5Pc56d4aLNx0VaGQIyhVjaxDDuAgce24dv4QVDCQKt0wZN7xXDgTgR9UbM2Uo2E+4z1xscjdbuZpOqFJmzIQxZ7E9l3XIbdrK2nTDlM3nMPR80E4dOQAxndRWtoxore46R8s2XzladjAuWM/dG5VHSUUaw0ezKq6kzGQcfRsC1uJUlAGrm2Yhv33Psj6w4NJ5d6Ys80HHieOYkqvepB7r0x9fwKrFnkisYDTJ5P5GBv+nIObMXKrET6savbHrM3e8DxzHivmDENlY7nCURbCzk3Bwo33VS3ylJTAkNAKoaHxpH/dMHXtSRw6dQ4LxrWDKWcxlfTsLAIeqlrycKqgSUqg2BHQsqmPjmTuaqRQZiQIePqo6TZAMhe4tagC9rFKnHEHG4jXpjCpGxWSpxTqdFuEzccCsH/XKriT2NzSqYR8V8/OxJZT2S1c5WgZJL6LxCfuhEYssmq1/I0IgYjF3el1OHI/VpZZiIqtZmDdkQAc976MHZuWoHUFfXlFSH0XgFsh7Pf5B8zLil4oE5+erMPsRaeQIBdCEi8sDXotxAaPABzxOIiJfVygJ3tEZbLe4sicP3A0RD57K+uRpkR4FfIIaeR3o/uU7dh93B/b1/5FhJVKJ6EMsYb2P3tXIVDLXkNu50l3DuPC40TFbWvn3+FaWhOG9X9HCwdlhPfE8CM4c52aBihAfYXErfshGDNlHnx9L3+F2mgVxZ1Att244o6Djp8SyJ1ACat+OB+2Gc7Kpx5kxIXh9I75+HPOQTxPlv5yi9Mf4/DeIIyq11LFZD33mukdSoASoAS+hAAfptU6Yd6uTpib/gEhd+/gQegrfExKA7+kESwsrVG2Sm1Ut9fPX/AjMEfbSTvg9r8lCA66inuhkUhI50PPrAxqujRGrTJ6aurgo+qYE8gYk3ffzXrsQAp55XVoWTTC33sDMXH5YwQSn/xPI+OIT/6SsLB3RMPG9WDD2TST18PTcsX28ERsl1/I810PjUfvxKNe0xFwKRBh75KJO+EycG7eEtUspQ9G5Y8+x6hc6tCydcf2G48xzv8iroe8QxoRTtpWqAlX11qc2AsClGk6Fkdu/oG3j4IQdDsU7+LToKFrinKOLmhUzx462eWMubRHL1MClABLgI/qfffh2rYOKq7f2DtMejQu755BrF134XmqdP2VFn0OXuc/olUfqsTGMqLHr0OgsWsDGOvKBRu/zri+70g0ULP7QlTvdAVTgy7h+Sep0mQJk2YYs2gpKsrdAuAzfPccwgu59RXPFD3meWF2DzvpOsipAREyZaDb6L0Sl3AZMUSR6eRruA7JzWJfAxXbLsSiuQNgy4Qj4MoHNCAbp6I3JVHr9wHQi4zEe+JmsuW0XRjW2ECGpA6cHDNx02cwgj6x85sIH9+/lSj+CAVViPeVDWgfNBWBlx4iVRIDmCgcNZ6AebNcFc+eomRfHDp8VyH8Epq4Y8G+bWhJLFfYo1bduiiV0hyzTkQQQSGDpz47EfC2G9yJe7n8jmjf9ThyRy7gA0xrTsYWj3morCvdzq/l1AyNiFJS/+7/IJQNlkd8xfhtW4pr/fajkZH6hZBO6QFY47kB9Yyk7det4wTem4aYcZTtH5nzRZGIfEUEf3W+nnv0/MZZlO+LRCJs3HFE0cWqlR3QzLWe4pwmfn0CJSv1wszlXXFhxm0EPomXfE94fDO4jV6NYZzvSYz/TpwKSZAB4aGc2wqsXzUQJpKvYn041TTHZyK884si3y+GuLbc74kRHcbATP1XFTrWHYjLxeVoU4mPJ36+EDs5EHEa8WhCBE+/9+mNt28jEZvpjJkbZqGGbE5AjQZwSLsN//EeEtfjjCgaUe9YK1ydHzQvc/8/EnFh0w6EyAWVxMl507GeWDvVlfROetR2bYMa5p0wfGWARHlCnHwTu9d44bdNPcGNKiqvlScogxHrvDGhlZn0d4OERCin9Q4d/9iFBInCgwhRL1+QOV05Z8vL5v6ejADPk3iXJZOE8vTQsGMHsFMqj++E39o74vBKabxyVrnB+/BZDGrU/QvcX+beg+J8Jy7hE+7cf4T6Lg2KMwY69q9EIP+V1ldqiFZTOALp6elI/JwGoVAHmkL64FU4et8vt6ZRRXSZvAMWae/RZJYvpL+LWXgVfBcfRC1gRUzE098F4oDXXWksJxK0u457H1QX+2LRnLXwDf0EY4d6+H3EOPRuUlploykznpie79uP0/63EPY6VhIo1sSmPBo0c0evPu4ob5DL6ijH8EWIvH4Ym7YfQ+DD10gR6MG+WiN0GzwCXZwt1Wyu56hA7YXM+Efw3L4LJ/zu4EX0J2iUMkGZKi5w79kfXRvlDEDL+hg/sc0bkZns6oNsWDfsCXcnXUT478PmXSdw88lbpAqNUbVBB4wcPwz1rKUxmZJfXca2DTtx7loIPqQIYVm+LjoOGoMBrR1UeKntJL1ICRQTAjwtU/LdcSOv/zZgtp6azTqT13+r50tL65hXRasu5PWlFeRTTtOoAgmSTV755FN3m6dhjBote5CXurvca5qwrtYU3ciLHpQAJfBtCPC0zNF0+ArMCLiCYSTmk2Rfg0nBs9CXZGPDlKwylIc45RV8Du7FMd8bCHsRhcTULGJppwtj67Ko4dwafQZ0R3UL1bW2+PNjeO71Q7RkYSdA+aYD4Oaohdc3PLBtB1lPPX6FJFFJlK7cAB37DUPPZvaFXJMQzXPf/fAJSZJsnrG9FehUQPu+rVFaIRBQjoGmijeBeXNnQJD0pnhD+E6jF2fcQ9D1N4rvpZZ5W3TqUJrzvERi9bbtg8bWnjgRyVp0pOLB1QCkEEGc0h5B2VmBnhsmLv4fapix2y7O6NRbds+uHcbMaafMKEuJMz4g9KYf/C8cQAQnfm1GauGswT4H++Mux2KtYqsBaCwTwrFN8XgWxBKwLVYTK5ZYNkZwConrdi2OCOLMcvRJ9cJnXD19SbaZTO7wLdB53CSFEE6e19hpDIZ2OIA/Sdwidts48+NFXApIQKNORvIsnHcBHNv1Iy7CWUbyQx+1nCpCQARxUnvDLKQkq4ukJ89fvN7FxOX5hFlLFYMe1rcrFcQpaNCEkkAG7l++prR2Jd/XVr1/lwnhpLk0zdujS+tyuLwnRLKWirrnj8eJo2FmqGaviQh/Okxejd+drSVzYv1OgxRNVWg9CTNbK04VidTYJ7h15TwuHLsrUSaQ3khDeppMoKTImXvia8/L3JZEyQG46P+SM+d3xvBRDRVCOGleXTQYNQktDt3A2XesJRyD5/5eCP7UA66lpAoI3Dp1y3TAb41NOb8bRGHBqQ7stfbgniSOHJCRkiwRSirt5Lg15EyLEkgsP282prr00DBsgTZt5Ht5GkTJpBMqbriOEMnvBqtcsR9B0V3Q2pw7r+asl14pGIFmDZ3gXH8btAwtClaA5qIE8iBAv5V5wPmRt7xOnMWGTbvw5+QJaN6s6Y/sCm07XwJCVGlYG+aCS3gr01BJT4zHJ6m8CanhpzB7/FJEkns8gRUmkKDd/y4cA8+nss2Xm4EIjrJGG58JsJT4dk7Gzd3TMWLKFgTHpCsWBZJu3AiA99EdWLrQBZNW7cTf3corNB/VdZMhPqjPzW2PZct98CFD/rMN3CKaoJ47N8J96h7smNMGRtwdK3UVqVwT4/WlxWTjaiEC3ySr9C/I/zwObl6JBn2WYPem4SjHsR5kMoKxZfpEnEsg2lak1x0XVETi/vkYs+YyEmTc2GZuBRKXKQfPYfO5g6j7fAF6DP0XwbEZynbuBOGsx16c/vso9s9pqvahV6W79IQSoAQoAUqAEqAEfkECJWBiVFJlXDwVh5XA57BDGPr7GBx5FKtcRyhKXMV5r71Ys3Ij5u33wMSW8g0NdtM4EP/+OR7XJd4OhOiztgFSPWbgjyXnEcNZT92+7g+vPZtwZOoRHFjQEnqKuvNKiBF5YRY6d12KJ5+l1nx8oS2Gbz6PEVQIlxe4Yndv1px5eP78GQ7t3UR09OnxPQhkJUTgdbTS5ZiuZWnopyUikRtCjbGEjQ2xlZAI4oCPEY/xlljQKa3qlD01dWwOJ5Pct1wYJhFhV07hwkVf3L1zG4+fRCBOZuWrrIVs+xZ8z5oUE5M+PcNHibUcWwsf5jZWSElKIGJD5SGysIMVcfnNCuJAHHG+CAsn73kL4hjRUzwOVc6nfG0n1HFWupxT1q6Lus41oEkEcRKaxE3nU+IiPbOTi5pnVz4sSturKFCwfdYnboi5hyiTfYakByVACRSUAMPE48XzaIXwhse3hoVFGhKTuO50GVjase75QyTVMmlhiHiWhmYcqzp5ezxhLbg0I6765RfUvGcmhePqueO4fCUI9+/dRfjLKKQrt6FkJVg73IIfX3te5rac+jQY4fHKCd68emNUVSNcE5RsgNrVTYgg7q2kuOhzCELD0+BaO+evs66VPcw5rnXZAkLiYl1HstcnbV2clYkslkteMKVZyV8xXp49gmsf5HMgD+Wbd0MdjrC0hENntKmzAiFXoyWlREmXcOrYM7QYSRQaFPXQxJcSYI1jNEqS3yQtrS+tgpajBBQEcl8VKrLQxI8gYG5mhlq1qkviYfyI9mmbhSEgRtzrt0hUPOwQreYSOtDOqRxDHqI+wWP2RLx9rdSABk8T9X/7jQjy2AIZuLF+ANqP90Ks5JdZXT8YJBMru/l9muNdwjlsGFZNzQONtFzS012YvkgETtcUFYozY3BiYQ8M1fHBoel1C6zJHXN1ATp0mYvgRO4CTlEtcR2SiKC9Y9A5WQPehwbDWm1MJzFubB6E88QdS05lKDK+t2cxtmsjGEY9wjOJSxZl/WyKEcXh9KIx2NL2BiY6y50GqOahZ5QAJUAJUAKUACXw6xLIiPHDER+ldjB4OihTobRiw4FJu4s5/cfnIoSTcyHulGKC8M+w2XB9uAn1ddXtiDC4sW0ATj18iKQcm0nsmiSexAcei82/3cKfLqqCQXkr3Pekh1vQd8BKhRCOJzBF90VH8e+gyoq+c/PTdPElIBaLIRKp+acrvki++cgz4+OIMqVyi/jjvfloU2V+nu2mxkUpLcRUcvJgYGUFtdMKyffh/lbMnjSbWMbGKjbKVYpzTniqQWo5d9QlxUiIT+RsdGfBdxnZRF6mLq/8mhjx0VHyk1zfGVECEjlSSaGeCQw5ipfcgiVNTVCSTKnSTXgGn+I+cm9z0gKULFUqx340X6ghmRPVP3FyitMkJUAJqCcgjkdCklLIxGTdxuxWVpitPrfkKiOOxYcYqZJQ9mwaelYw1ctNrJOI6zsmYuZSErIll30iZX08EndbzWaZMoNK6uvOyypVI4so0Cu8UpJZSM/EDOpFLSVgbFJKou7F/kKwShTx8ep/nzWJwKZE9uUkiReuwRHEqfYi7zNG/AKnjwZwFCn4SH5+BNNHenEKMoj/KFL0j8y8CPLch1dD56JsNqEgpxBNUgKUwA8gQAVxPwB6QZps1rQhXBq6ICur4D9QBamX5vn6BBLDPTGNBHdNVjyz8WFZuSrM1QmgxJ8Q+Vq1D3wStLtdB3vJw8enh+sxavoJhRCOJzBG0wF/YkyfxjDHW1w+tAbLdl5FPLEgE2e+wc5Jw1Cnnh9G1FBv1M4Q//FigRGaDpyOCX0bwijjGU5tXIw1Jx5LBWDiRJxeOhMnep9CNztVt0yqvZSeMel3sHDcGjyQL674xDd13xmYMrgR9BPvYuvc+Th4JwpiJhOPvP7GEk83rOopdV2gWh/xi/36DbRM62Lc9MnoXN8KMdc2Y+qMA3ghM6ePI9pJcTwtVGs3GdPGtEdphGLLjL+w/+4HyYOlOCMM504+JII4Z9Wq6RklQAlQApQAJUAJ/AIEGMSEnMLKZWFKARUjQkZaCtkwjkDgmdO48eqTYpxa5q3RyU3u9oxoDx9dg213oqWb0UTpqVr7qZg9rh3s9RnEPr+GLWTN4vWYjatCFIDeXIZ/cCrqN1QnSMtCRPAjCA0cMWTiJPRoVh6il+ex5K8VuBwp9QwgznyKM8fuYDyJqZnXairj3WmM6jEdV6JkFjdkHeU25SA2T6jLiTepGBJNFHMC8+fORgmyIzht+t8wKaWFaf/rX8yJfPvh8/j8bHa1+bcpTksDx1CWU4AHnVJ6autLjzqKv4ZMwqV3HHeLZJ4yLeOIajXqoqaTFvyWrcN9mUIij5d9V5fTTI4k2eQulOCOrYAhc6vSEjBHlYoLWtDUVPZFnJUlC82gyKBIMJnE4kNxRhRVhdKwA5xLsqSA9DfnVXoldwIaGgLc9T2syGBooM4qUXGbJoorATJv8Aoh8JJgYli3keoFTBol9KBe7i7G8+OTMHbWPo4lLjH20jKCfeXacKzljIoaQVi19ZLUQpbsfBVmSvu687LqPwNPU5OzbmOI8gvHE5NqVmRmKIWagAaZC7NlkJ3yBeqFlV+6s5sSehTnbnMVGUR4ffc4ealvX341MewIzt2citEN1TlOluei7wUhEPUhDk9ehMC+kiNKl7YpSBGahxLIlQAVxOWKht6gBFQJZCQEYvHoYTCWPCgwyEz7hNi3T3H35gNEpSgXKzyBLYmT1iz3DRWeEI6dFmPbvwNRlnkK74sxaGbPbtsk4vjKbeSBS/bIQjS73aYdg8f8xpBvC7k0d0M9q05oP9dXIkgTfbqJdYuPoueBPtBX98tO2mo4ch9Orm0rCyTbAA2bN4RJp+aYdualRPsyM9EfRzyfo+ukihJhoOqoVc9iLuzEgeCP0k0tkrtyx5U4tmMwzCTaPQ3QoK4Fkur1w6k3xPGJOJrEhPPA9G7jZC43VeviCawxduspLO1oLr3hXBFv/QMw8dRrWf08WNSdiqPH5qCCxFWTKyoxj3DBfQ1iJCZ+Irx/9ZKUpYI4VbL0jBKgBCgBSoAS+BUIiPHm2jZMv5b/WPhCGwxZsgCtTeWPNgxS9RwxaEg/vHz9GlEZzli1fw6cS8l2e+s0QOXUOzg76IBkPcWIovHuDXeDRbVNnkYZTN7rg/ntZS6ZXF1QVTsKtXpulW06ifD2+XOy6Zy7IC4rmWii9x6Jg08SpOscnjYaDt2B3fNaQI9uQqsCp2cqBK7fuANrCxOVa/Tk2xDQJNYQ+qz1gEwmZV5/LvZsHAD51KGuVR75LhuUVPsgBqGmOtuKLDw6vAmXFUI48mzYcRFm/zUINUpLLcPEqV64t2K9ornCbaYLYGxqLHmuk9q1COH2VyBm9ZA9cylq5SZ4EGjmL8zhaVjBwpwogD5PlhTOSnyJNzFZqJdDoZMoXb58hWTFIzJxP2lrl+uzZmFlBdyeF8c0+//gWKVCcRw6HXMhCPD4pjA2VM5BPGFDLPDei6Ym6gVFbNXs/5Y2USBQd2iQ+UydcRUjCoMH2deRu8PlaTqg1yyiYN6zCSxLStv6cHIwEcTJayWOxNVNmfLb2d6/7rysWrmmlS1MiAL9e8n+EoOPr56DNXQzz7YuY8Tv8TpStn4jVbBuPq1t1ateFW6+Vu1PzrMM3PTwwjP12h45s3OuMKKXOHfIGwMb/q7YT+Tc/mmTWUQB5H10LGytv1+8tuDHTzF7+VaMHjUMfXp3/2nZ0Y4XDQLyp9Wi0RvaC0qgCBPI+hSC4zulvrNz7SYRfNXsuQBjWhrmmkWo74Z568egniX7w+2MvkOlWcWfr8Dr/AuFa5ISFl0w5U/XbD+aumg2eTI67ryOw6/ZByAxws574UZSL7TWz7ZaIHf5wjoYPK6FTAgnbYenYY+BI92x3HudVKDFZOBB0HWkEkGcXOAnzZn9L3Gb6ROkXGAJLNBxSDeZEE6aV9OyPQa4V8CZjcGkZwzekmDjdxLGor1xzpWWtnkrdGptpmyEr4+yZYyJ1qhcEKeBht36oBwnXoqugwNsiRZmjCR2AnEnlUwEfvSgBCgBSoASoAQogeJJgCeASblWmLh0NSZ3Ks/Z5BWgivsk/OueE0tKzBNc9fWG14FbHGuNNKSmKlwb5Cik59ARPVqZceonkZSc66Ci9nYESeLIEWuS5GSQMFFqtcXZmL1HpvZD+OM3snWeAFU7rcaBdV1gmvt+WI5+0AvFk8DRI3ugmSqN+1I8CXzNUZMNYM4jE8OIFc9ebCsC3SqoULokboQkSRqNfx6CDyXMUY7znCVK9MPaeR5INiZCKUtblK7siiam6p/9+AJOY4phpOPJw2eQO3/jCetj8KxRqGWl3JpJf/8GMVyrlBy71sTqTVEfsWcjbky5h36lqrASHsOrTHZey8Kr8AjomtVUedaLurwSq06/gZmVDSysSqNK/XYwMeDWkjPNbj7XqFEa/GsfJdyYzDvwORmGjmOqKS2XSTFG9Aznzt5VjlHggFr1la6Dc9ZMr1AClMCXEFC1liVek1SmAl1Uqkq+rxffS7+vWRF4/rIEelQx5jSVgAtr/8KVD0ZkHrCBpXVVNGhlrj7mbS4Ww0w6iZcWofRQYF7nD4wb1BwmikmKKFC/ieKsuUjzKttD33de5gwe2lZOqGqrg4cRnyWXPwSfwOWIseheQdXcLfXZCVwKjlcU1bVvAEcr9YI4RaavkBCnBODEmRDl7xRPD/aOFaCXi5tLcUYMIkJeQbqkZRB+YT+CYjqhlZny9+UrdOuHVMEK4A56ncOSNTtwfM+a79qHcmVsMLR/Nzg6Vv2u7dLGfk0CP/+38df8XBB47Ra8L/ijPYkdVq1qlV90lL/WsPgahnDtvxTb1vQmwqncxsaDuVMLNDTL+aOdEhqMkDi5SxAeLOs0gRPnoU9eI1+3PlydTHCECOIkj1afHiP4SSpa188pRtO2cEQV65xt6TvVQgXiuDrmM/sIyCDhzUvEEHeX9nnNCMTHeNjTGOUigDyI2VqlIyEhQd41SV229jbkwZAVxBExYWoYQsJS0V5NzJRS1naQyCIVpXkooaOlXJMRwZydg4XKQ6ZAl8Te47BlChe5XNESTVAClAAlQAlQApRAUSdALDSEWtDSIEKu9AwS1J4rKOPBsHxXLNowH72bV8zTWiUr4SkuHD8G70tXcf3mHTyKiEJq9uC5ZD3BrT07GT1be9hkczkuNDSArmSTXbqdLs7KRCa7+OGsUxT1iOMQ8ihOcSpxA0cyCxWbVJxbNEkJyAhc8PEl8bg+om/PTsQFVgrl8hUI8IjSpCZx6yc/MlM+qcSr5gmroUWLitgfckvyLJMR44U1i7uiwvyOMJYUSyExIxdhy35/mdGcBhqM9kFTZwd5lSrv6i0jyNzGcR3JiCJw/8Z7tO9sK3nuEaeE4fCyrQiVBleT1CfKzOYujbh5VE5JxAL4s3ITnC1QqqobGjmswqtQVqDIIPT0fGxxr4+xrW0kU5Q45S52Ll8Bj9sfJPXzNCpiqlc71LSTnObxR4jaHdxht+M+XmSws2Y6Lq0fhd21PTHQRaqswDBx8P93HHbfilXUY167H9xqlVCc0wQlQAl8DQI8YnWr3MBhmGQkf+auZoi1betWsNlwE69ZoTwTjaNLZ6FZ7VWoby7dI4q/vxlriWAjRBYoTa/8eBxq7QpLNd1TP5+xGfkk5puyQDxx//0oZjSaWkj7lhB+EOv2BCoE8yCpLI6F1/eel5U9JfJAYW20bV8NHquuS/rHpN3E2snzUXHXbNQwkv5WZMYHYtWUFQhReMEqgYY9+qsojHPr/Jrp9xcPI+CtUvncsMpIbDmde9w3ccYNzGrVDgfDpb8JoiRfnPJ6juYjKqhdnn7Nvn6rulgB3KHj3liwcgsiXkSi7+/tUc7e9ls1p7ZehzLWsK9QCdAxUnufXqQECkNAOWsXphTN+80JREa+weXLV1Gvbl2ACuK+Oe+CNMAXEh/X5S2hTRYZrOYRXyCENgnEamRqibKV66Ftt55o52SpIjjKWS8PRjbWRIMl5x02CG2iYmOIDwMzs1zcW5aAmZkyUCxIoNiPH1VUnxSVaxG3ArpqvuUa+oYwkCzapJtHWSnJMq0ZRdEcCYYI4uISMhTXmcxbGO1khtGKKzkTbLDfqChpG9nvCkvq5tAa53MCBPCIa07d7H5gCHfOGi97lfScEqAEKAFKgBKgBH4ZAnzU6H8Y17Z1gCD9A4LP78SMSQtwPiKJbCuToPQRXpg33QIOR1egZWlVzWUpgkQErJ+IEbP2IiwuM09BG+sjiZ/D4kQOkgdN3VKQeVeSXyT7ThrQyEUjWZkpt5QYEecWYfXZrljsbppbJnq9mBM4e84bYWHh6NWtQzEn8RWHT2JnGxgqlRTTo49iznARymtFw6DpavzVxwF1+49Cg4PDERjLuqtNx81dveB+rRka1LZGeuR1+F8NlXuuhIZRG/Qb6MyJMVSQvmqhco3y0DgVKbUQIS7P9ox3xeOTzWGnk4jH13wR+l658crWmJ4UhyTyuEf0KCWHppGx1CKCKFKyHlJCTk7H2CwvIIqHjks3wq10LfQZ4YaTk45IyjFpIVg/pA78XVuhshXw8sYF3H4mt+7gwb75OHRy0pFWns/fUjX/wOjfj2LKgccSYWVW4nUs7FkLpxu1QEULPt498MP1R+8V1i98HScMnTkStl88X+bTIXqbEii2BPgwNDZU7o+Io3Don96IOqWDeF4LLFg+FKY1B6N/i73EJeUryTooPmwrBjcPhEuTejBiInHT1x+RMiEceEZwGzGSzIeF23HhaVdD5Qr68L8ljWOWHnUM/2vbCE0aVYNGwmPcCLiDD6zLAMXB4FN8LJk/DKV7Zz90Xhai3pCpaOvVB6dfsQovDN7dWozeTc6iYWMnGPFiEBzgi/APcoV5wLTGWIwZVPWbC7YYJgrenkQhR7HVJ0TdDj1hp84/qIwtX7M2OndxwpHFl2WCzzQEeezFq8Gs8E7xAfwUCVYAt8/zDBav3oZnL99I+syu1f+aMOyn6D/tJCWQGwE1W/S5ZaXXvyeBdm4tUYcI4fT0qMT9e3LPqy1ti67Yf3sznNVHqM2rKOceDyVz8bnN0yLBrxVrHgZZWUqhF6cCSTIjgxv6mg0UqyioklWUToLtsnKw7D+6rBsWjjUZXyjMkUWlInLCCh9z3aPKnll+ToL9pnHdqsivs++sMFO5bOTekaX5RFtUzWV6iRKgBCgBSoASoASKFQGBlimcOkyBZyULdG3xB86zsWgZEpft9nr06aiJU5eWoZ4hd9EgxtNDE9F9/C5EZ8l3MIgVirYRKlSvjbp168NReA2zVvvIFJHIioRbPBtdgUCNBhXJU7h1EQ96dhVh/PEpXhCPBIwoEjtmr0S/VgtJvDn167hs3aCnxYzAwAH9kE5iUt+5cw8lmU+oVa1iMSPw9YfL45eBUy3iqu1mnESIBML1kc9ePCJbqnUsXpONSwdo2/TE7EXXMHjMVrxJYzePsxAd5oPjYar94Wnao/98oghgU9gtFeI6t/soNN8VhAtv0iSVMhnvcdt7P27LmhAa14dz6WcIvPdBunn+LBjPUxiY60rnCu3SdeFoo4OQZ1J3aqJPobhwOBQ8QVk4viXPkKV1UL77Evx1KxQzDzwAK1JksuLwyP8wGavqoWvXA3/NHwDTPOZAbgkezwQd5m5HZFQvrLv0QmpFkkmUJS4dIj5RVA+BriOG/3sA/euUUr1BzyiBIkTg1Zv3RLFGAGtLTtiMItS/3LsiQJnaTjDXuIR3EqE8iXEWfg5Hw4GSZczxgVjBmWnZoNf85bgfMQSniSITe6THhcDPKyRbtUJU77oSE3ra56NYnq0YOeXxHdBteEd43N2JWJlieWrUHXh73JFl5sO6TivoR/giJIHdnMrCs8f3iUJDebB2sj96XtY0+Q2zNs1HzOC/cPO9dE5Oi30A32MPZP2Xv/FgUmUQlm6ZhUo6337dlvbaC2eC3skbB1/HBW07VcxHAKiBql16oOaGq7iTJFWITwj1wLlb0zDaRRkvUFFpEUyIRCKFBdzT569VetirSzuUL1ta5Ro9oQR+NgIFXG79bMP6+furp1cKtsRyqqROwTTTfv4RF5cREPcBROCm7mdb28YG5gofRQxinz9TLGRU6IjeE42QBOnDI3uDuIgsUya7pE1aIjmKBNBO5mofSa+nv32L6DS5pRoPOsSqz5jrT0CaTfWvwBTmJtqKvvM0XbElOBLv3r3L4xWBRV30VeuhZ5QAJUAJUAKUACVACXwBgZIV+mLjuiEoTeLFSg8GMcFrMXrSMcTJlzXkBpMVhh2rTxG321IhHF+rHIav8cHLmGiE3DiP3ev+Qf/6NpwekPgk6hZn8hx53pRnyuudrLWs2mPzmavYMKqezKUcgw/BG7F4e5hyTZdXFfResSNQs0Z1NG3cENNmzMXidXuL3fi/zYCFcBk2E52qmSqeaaTtiJDwIVpmQSCAQ/vV2Ld/GdxqWCGnmI3Epizvjuk7vDG1c9l8NkXVj0LTtAPmbVuBVhWMsm16C1HGeQTWeJ7GvEEtFN5RMj/64ZKf1NqErZEndMaQvwahvL6qkgAjisXHD6zYjd3ctsbvy85g46x+qGSqLbnG/cMT6KGa2wxs8dyGZrbqnyW5+blpQUknjNnjjy3zR8K5nHFOBnwiCHQdjX89z2Ni+y9jxG2PpimBb0nA3MQIzToNxri/FuPt+5hv2dRXr1uv3ihM6FsP2eVCaXHRSJTpbmtbd8TSo14Y38UZBmqsqYR6FdFp8hFs/jevECt5dZ0Pu/ZLsWZeH9iVUp0xeZqWaDp4K/Yc2onfGxBzXMnB4HnACdxNkCtK/fh52bjm/7Dz7BlM6e8GO4OcXhYEOmXQcugm7Dm6Ho1LF26+zItc7vey8OioJx4lyxkR/YqGPeFaAMUPLZtOcG9so/iNY0Qv4X3YG0XdwTUrgDtw9CyqN+mKgf/7G9mFcCyrH2UN53/tLtx7jsDRYydz/8joHUqggARUZ8kCFqLZKAFK4MsJqA/aDWjZ1IaTXSncesLGXGMQdfs4zoaNx9AqqporKeEnceq20ue+fjkX1FXrkol43065RgJlv0P7fmzcNvkhxku/AIQoBHEC2FWthlKqz3HyzJx3XVSvTjRIiRsVdq+LIcF+QyO0MKw616VSIk4sngbvaEPYEMGirV01NP/NHFQUx8FIk5QAJUAJUAKUACXwhQT4sHefi5UjbqDnuluQKoBn4u7eiVjk7oIlna0k6x3WDVtwWKLEkoRtyLLBSMwb1ZzE8JVL20R4E/kebMgU+fGfZW3yitS88wSWGLluG3pWNUbGxElou78fTrExP8SJOLpoPgZ234UWpvSxTA06eokQ6NenOwy0lJtxFEruBHiCqvjrXDT+yj0LtK3dsdTbBYMCL+Fe+DtkaOjDqmwN1K5XUyH4YoM92rqMxXrvPxAVeg13g8MQnZgGDR1T2FVugDq1ykBH+XClaE3fZTEC3yxWnOeVMKkxDBv9fkfoNT8Ek35kkjAIZWo0RX1HK6mnkkp78KjbnlyqIMLCditwwnkorl8JwvOYZGiWsoKDYwM4VVM+efH45mg2cjuaDFmEJzcD8fjZG3zOEEDX2A6V6zZGVdtSnGfEXJrK5TI7rzUdspq8FuH1g+sIiXiJ6PhMlDS2RsXaTfKom49KQ04gbEguFcsum3YgcavIix45CbAb1mOmLVLccK3vhN5d2ynOaaJwBLS1tTB+eF+M+3sJNuw8jFGDemDKmMFFwEJOA3UnEreIE3MfDytw77LID64DAxB06wniUgUwMHdANWdXVCgpX/OQvSazRhiz/gqG/vMYt2/cxcv3ccjil4SpbTXUcakLixz+t4m+N1G8XhqUgKW5N8+5owfnQTvg3Xkqbl65hufRKdAyskMt15aoYCbdzyqz4xkGcEpwk99yXua2k1da26IRRixphGGz3+DBnbt48fotkrK0YWxZGXUaqmfE1qdlSwQ0z0fkVTX4JTpje2hhRGH5f/a5NchaLffb+hT91GTI7/9JTZFvfomdz46cuID5Kzcj/NmrXNtr0cgZFRzscr3/LW8wxJuYWCwG+04PSuC/EqBPfP+V4DcqH/MhFq8jo2BpaQMDA4Nv1Aqt9kcQyC3ILU/TCd27OmL7giuSjSVx6k3MGz4X1Y//g3om0q9qZlwQ5oxchnufZepNJI5a84EDUDU3P97iOOydMQ4t6uzF75Wl1pWfnx3B1MXnFIHJeRq2aNm+Tr6uKVn/lrXdW8N+WRAi2ODc4mjsmT0T7Z3Xopm1VCso7vYm/LNoG+4lsf3jwaDyBAS4NwJX5/xHMKdtUgKUACVACVAClMAvQoBviE5zF6Pfxa7YRZSX2EdicdYbbJ48i2gAb0FjY7I7zrq/5lj6x4Vfw+2oMWgnW68kPDmIfzZelVm/sFxEyMz4hoIOnjYMjUpKPgBN846YMbYJfKZ5S9Ziqe88sHDZMDRa2gQ5dbAlReifYkogJSUFWZliDBncDxqf3hZTCt9m2DyBMao07kZe+dWvCYtKTdCOvL7FwSPzWeWGXcjry2rXMq6MJp3IK5/ifE0zVHXtTF75ZPyi2zooXb05eX1RYVroCwiIxQy27juqUpIK4lRwFPpkcJ/OEkEcW5AVxm3dexTD+nUtIgK5/IajAbOKzdGJvPI7SphURaPfyCu/jF94X9OgIlzdyesLyheVeZmvY4OajcjrC8ZAixScACuA8zjJCuC2IIwocuR1sLHhVi+clleWb3qvmUttNGnaFNAx+qbt0MqLBwEqiCuin/MlvyvYsGkX/pw8Ac2bNS2ivaTd+roEhGg0dhp+P3gfh599IhtLYrwOXIRm1c6gZcs6MOVF4+ZFXzyKSpVpePNgUXscZo12zEWTUepmKSXSC70b1MCWNo2JK6f3uHqWaFXFZSjqsG34B/o1lm4O5TcevTqDMabdHkw4/oz0jrjPfLQF7WpeRcvWzjAlwX4DzvrhuUQIR2riG6HrxFG5Cwnza4zepwQogTwJxN89jLUnQjgbydLsrLCfxxdAoCGEdgldGBibw75KfTSsY8vR9M6z6p/k5mdc2bMWF59JffnzhRXRe2ovlJe5XEl7eQHrdwciSbK3zkdp10EY1IpY9RZ4dHnXX+BqaEZKgBL46gQEBs0xb+Vg+HVahZfp7JecwacXezFzXg+cW9UKOtrVULOSAc4GRkvWO6nvjqKHswvcWjpCGPcYfj63EcWNYUti5yZ8jCVrm+xu4r5610mFRMt51DT02nkNu0KJ1R6TgcubZ+HA4AsYWEnVC8K3aJ3W+fMQ+Ovv2QgLC4fP2cNq3CP+POOgPaUEKAFKoKgTYK3iVs+fqhDGZWZl/YQCuaJOmfaPEiCqb0QA53nKB/NXbCYetl4WCEnPzm6oWK5MgfLSTJRAUSdABXFF9BMqX84BnTr+Rtz7WRfRHtJufQsCQtN2WHtwIaK7ToV/ZArZPGKQEh2Mk/uzh77mw6LGYOz0mIMaHJcDqn3io3LHkagatg+eTyLgcyRC9TaxWCtp445lG8fCXkPptiBbJtVTgQ1GrFmB62GDcOhJvKR/abGPcfrAY9V8PE3U6bMK8waWLcSmt2oV9IwSoATyJpAUfBwL5h5CRt7ZpHd5QlhV74p/1q/G4IZmv8b3UvwJQfvXYe4FaRBrgY476o3vyRHEXSIP1EsRKfFdp4FmU1qgf2EEcfnUXxDsNM+vTyAzMxNC4feIFfHrsyzsCK1b/41FA/3Qd8s9iFizOCLQurr5T2zqcRUTGzhgyPhO2HFjK95L4sQx+Pz2Njx335Y2wyNuuV3cYBTqi3txmeSaCOHB95CGCpD6DyhsbwqXn6/bCFOmtofX0P1IIP6+RUmBWPmPB9z39YVxvq7CC9cWzf3zEihHnge1tTXzjl/48w6P9pwSoAQogSJFgLWKW7RmO6JilGFAqECuSH1EtDM/MQFWAHf09EWJAO7J0xcFHgm7Uzl9/LAC56cZKYGiTqDgiuFFfSS/WP9qO1XH6FHDUKF8+V9sZHQ4+REwqfs/nL3ujSUj26GckZYiyKq0HA9CXXt0GLcZPpc2wq1M3k6MSpi0xjYfL0zvWA0lOS6aQARl5RqPxiGfA+heOWfw7rz6qGXbETsvncDcvi4w0co+hfCgaVAJfWcfxcntfWBZUAFfXg3Se5QAJfDfCTCZeBd8CCN/c8fqq/H/vT5aAyVACUgIJCcno3///rh+/Tol8r0JEJduXecvRA8HPcVaSZz2ACsmrkD4/9m7Criqki/8vfco6QYJsTAQCxsVRcWANdfGjrVdXTt2df2vimIrNna3oGIBigEqqBjYQQki0tK895/7ivfg0SHIzP6u7947M2fOfHe5d2a+OeeksVBr4Fqc2DQK5hry4nxGRbaiEXpNc8WNqwcxobMomD0Xb29ewL2YMnRPKYUPG/WHz8fElvpC3bLw8uz/sPMOEyeYJoqAAIHpUydj8/qVGDl6MmYsWU9hoQhQBCo5AjHfv2H7P79j7qS+MGjYCSs37MmzR3f9HkOjdjuo12oLtZptcPych7isnBwHKaGPxMdWp0XiPHpSfAQYq7hFM2UHLxQRcuatHfDnYieER0QVvyFakyJQhRDgkdhqpy5eQ3PbQXCcvBBFIeEYmNgcNtr0GA6tOtb5otapz1io1GgFZdNWaNF1SL5li5r5ITgcB4+dw/MXQUWtSstTBHIhQC3ickFCb1AEBAhwtB3hGe9YYjg0OzshJKNwQbtFjSkZdcS87R0xxzkM/n4BePMxDPEkUKyeqQXad2oNEzXZ26VZih3g+jYeriJBwt+VF55iZtBteN5/jTieOsxb2KKTlbGMWCRkYWjKOaRPySEgx6UiCWS79PA9/LXuJe7d88e70BhkcFRgWKsx2tvI1o+tPABXYtNySJK8lEfXVfeQuUrynvS5QvWxuJM4VvomvaIIUAQIAizIKalCrRrzWSe2tNwspKUkIzUji7g9ywYoM/4RVs1wRne/lb+A21g2FNVUoKWlxe8gR1mtELEus7GgZxSB0kCAiePbsGFD2NvbQ1VVFadOnULbtm1LQ3SVlGE88gjSyFHYJK/bE0ffxeOozArqsJm2Hy+GLYKP1z28+fIDSjo10aZLN1hWF2xCMj/7EVNl1FU0+wO+SX/IyMm+xVbuj0vf8xrXyKP7Gl9krskun/OMpdAEa/2+Ym3ODHpNEciBQFJSEpKVqdvSHLDQS4pApUOAWZBO+ZHA1/sH+ffrt+g8CZ3Ib9+RnCJwv85U+BYdk2dZvkD6T6kg0KNrB+hv2oMogresJCLkmBhyE0YMwAI+cVe0jc2y5NJ7FIFfEYE3gXdJaBxXREUEF7t7WVlc/ruwIB9eGRmZSCcHkxiPJaWZ3n8isagPnMQ0ZXU0trQoTdFUVhVEgBJxVfCh0y5XHgTYKiZo3ZU5SqozBwYWXTCcHKWZlA0awW4AOUpTKJVFEaAIFAMBNpqPOYm7O3pJEOyZiHrliZ3L52P16WdI5RNyPHx/cQLnfJegUefCxYYshjLlU4VtgFln3mJW+bRGW6EI5InAlClT4OzsDGaxnCHkbGxssHDhQkqQiEpRAABAAElEQVTI5YlY+WYoaNdDt4HkKN9maWsUgVJD4JLbSXASwkpNHhVEEaAI/BwEmDjOkmnHgVNgjsKkOcvWgTloqhgIMIQc8+z2Hj2HTt36oFEn2ZZ0FUNbqgVF4OcgYGhaFzXqNkbst3AwfzNlmXK+X0uzraYW5vhv6SzUsWhSmmKprCqKACXiKuiD97jmieMnL2LM6JFo07pVBdWSqkURoAhQBCgCFRcBOeg37IG/D5vgR4gtnP2+EVs5Yi+XGYZnASSuWufcro8zYl/B7chRXLr1CG9Coomlqyp0TczRzrY3hjn2hrlmTne02b3PSngL98NH4HabWMkGf0ViKhfyKpowrmWBtl0HYuSwzjCuJr0AIapdvLrJ8L9wGL6hgih5bPlacBjvgJrystvgt5X1DbeP7MSBC7cRFBpPXOmaolnHvhg/eTiaGciL1CniLxdRz9zgeuAcbj9+h+gkQF3PFE1J/Klho4ejdQ26S7aIgFa64oxV3Ny5c7FunWCBzMfHB8xBCblK9yipwhSBCoXAoSPHEPU1AovnT4dsXxgVSl2qDEWAIlAAAvKKiqhh3hyxXz+jmgILhvq6MDUykFkr8Ucy3n0MFueZmRhBR0tDfE1Pyg6BJy9e40vkt0I10KeHLXG59xtiJbZCFqoiLUQRqAIIaGgboq/jbJzcMA1rSPzF3YfPFLnX2prq6NKxDYmXm88cn0jt3rkt6tYy4cs3ri79Xn387BVCwiLEbfftZVugPHFhcmKorw19EzNAWVvyNj2nCBQLAUrEFQu2sq8Un5CIkJBQJCcnl31jtAWKAEWAIkAR+GURYCmYw7oViYMkJOKYjsbH5owT9wMPDy7CpPm7ERiVxifsxIA88MHVs/uwdpU15mzaj6WDzHO5gPzuvwOOQxbg+sdE6bpEiL/vLVw8thObNo2G64UdcKgt7V6r2HW58fDcsQILrxNSkSSOcm/UHmGfJxGXFueLBd1HYqv3Z2SK3XX6467nBbju2IsVR07ir25GyJtq5Dcj/Q/3G9xXjMVEJw98TZOMLeUH76tn4LJhAyY7H8G6Cc3o9FwauV/uaurUqdi5cyffKk7UOUlCbsGCBWjXrp0oi/5SBCgCFIECEXj8+AnevHmLhXOnFViWFqAIUAQqPgJqahoYNHkt6hrKYUIXzYqvcBXU8P2nUDTq0K/Anv/+mx2W/jURlg3NcexuAmJDBBsDC6xIC1AEqiACNUwM4bJ2Cd+V69qt+7Dv2PlCW8jFxCVg1JDe6NW1Y77ILZsvy9m8oMpOYr26//gFcf30L4/F5/SEIlDeCBRpvam8lavK7Q0d1A/XPM7BtnOnqgwD7TtFgCJAEaAIlBQBQliFhsZJEWTVlJUlpKbjgctoOExwwdOcJJy4FA8/vtzDf45dMHXPC0h6Xc+K88Rsx0UySThxdXDx9fkB/DF8NV6liVkwlKRutuzCnGXhgesibPKSJOFE9XhI+XoXiwcNxp4nTMSOwqYEXP1nCIauuJyDhBPV5yEj7iVcpv6GmQfeEQRo+pURYKziGBeVshJDyDk4OKBfv37w9fWVVYTeowhQBCgCuRBYOH8uDrhuw7nzbnC/cTdXPr1BEaAIUAQoAqWLwKqNe8AlsfzySgwB98TrFE7sWcsn4fIqR+9TBCgCuRFgCLltaxbjta87Jo0aBAX5wtkGrXDeReLeZ68h5JZctneY+HNJST+QlkYJ97JFumpIp0Rc1XjOtJcUAYoARYAiUCURSEHgib+x3iM4m4hja6O+pcBtAwNJ4nMXTF10EdGZgkkni6MD23FOOOd5H/c8T2PVxI7QkhO4guBmhGH/nInYFygKHs9FqNsBnHsXL5DP1kXP6Vtwwes+/P39cOPsFoxsVV1oZcbDl0cu2H4+SvgkSlK3qA+TBybQs7xOC8zYcAq3fe/h0qF/0dNcEyInFxnEYs55yUFEZhVukB//cAv+2uCDZGFxOY3GmLLuFHx87+D05klorC1wdcnNCMeBRUtw/WvZ+sUvKiK0fOkjwBBxqqqqeQqmhFye0NAMigBFQAYChoYGqGlmih279uPI2asyStBbFAGKAEWAIlBaCDDWcEfPXpYpjhJwMmGhNykCxUJAkpCbPLpgQs4/8CWuev28DUle9wLQfcA4nDmbbVVXrI7TShQBgkDh6GcKFUWAIkARoAhQBCgCFRgBHoLvbMOUCWcFxBIvEykJMQh99xSPnoUiVYJbUqnRG/07qwv7Eo8LG/biaaKQJGIpo+fCczj9nw1UhCWsu/REa6N++G2FJ19OVuJDbHM6i6HHHKHB4uLz+2CIjNw41awwbtFk9DUSxltr0QY2rQ3AHbIZX7WNYGpqhgZqScQ6zICQcyWpW/RHwZY3x+LjHlhmpyeo3NYaXaxN4NBuKry/pZF7XHzyPo5rnydgdB2FAhpIwqVdJ/AmJUtQjq2PcZsuYtuYWgLSkchupp8B6xH78Y0Qe2lfL+PQqc/oPqNu0VxfFqBFeWUHBQVhyJAh5dVcpW5HT09Pyj2lrM5IuqzU1dWVVYTeowhQBCgCYgT+XjIXKryiWGyLq9ITigBFgCJAESgkAv9btzOXNZykC8pCiqHFKAIUgUIiYGpsiK1Oi8UuK12PnkM6sT6TlSbNWYHgJ9eLFNtNJGfGhGHoZ99FdFnkXy1NNTRvYgF9feE6QpEl0AoUgWwEKBGXjUWFOnv//hOePn+NJo2bwtjYqELpRpWhCFAEKAIUgYqGABdRL69g38v89WLLm2LC6qVooy4wiOcm3cH5a5/EbhOrGQ7A/HkdxCScQJoqbOfORd/9fjgZwiwEcvHm2nk8SBiG7hos6OhokAExuU3IvqwfNzC+tTXO9uuNHnbd0MWmFcxMBuPIvcEyFCtJXRni8r3FgkHrMRhvK016VKszFBP7bsTtvS/4GHDTAuHnl0iIOJ18pfHSnsLTJ1QCN3uMGmwmQbKxUaffCPSscRqHPyUSbFLwyMsHSYSIE1Gg+TZQwTJjSUzBGzduVDCtKr86d+/eRb169Sp/R2gPKAIUgTJB4OOnz+BlpaCLrQ3kkwTxUMukoQopNAUB5zbD5wOzUUYysfiLcBwOBxw5RSipqENLvwYatOiAhtVFW4gky5f8PDXkOo6c9kUi33EAG8ZtxmCgjanEN7+gNpLw4PQ23P8s6Atbvj76Th+CmkJvA1k/AnB6z2VEZDC7plhQNe+Dsf2alemO6aiAIzjh9QHC7UQFdUAqnyVnTvQfhlryIp8CUtn0giJQKRFgrOGOnbsi1p0ScGIoCnVC3ymFgokWygMBEyMDbFm9CPNnjIPztv3Ye+RsLkIu4ms0PDzvwr5b/rHiZDXR2KIemKO4qXUzC7Rs3QZQ1i6uCFqPIiBGgBJxYigq1on/46fYvvMA5s2dTYm4ivVoqDYUAYoARaASIsCConZTTF23H6uGZhNGya8DERQjWuRioXrLTrDSyO21mq3aFh2sdHGKEHHMMlFm4ksEvkpB97YqqNvTHi2XX4VvHLN7jYfEcH+cdGGOZWDLq6GmZVt06dEHQ0cNh21DbYmFK04J6hb1EbBh2qQZ9IWLXtm1ldCiRT1whEQceKkI+xROCDYdCT2zS4vOMmLf4X1ksugSaqY1oJ0Sj7h0iUUpXnXUMiOx+BgijuDy7fULfCamg00UJcqIJVTsk5YtW+LgwYMVW8kKoB0Tu2DgwIF4/fp1vtqw2WwMGjQI8+bN4+NaUPl8hdFMigBF4JdFYMtWF7x58xY3rpyE0M78l+1r7o6l4un57dh2MzJ3low7LDktWPVehGUrZ6CRFkdGieLfSgvzwv6NG4Wuqzmwnt4V/YtAxPF4iXh8dhu23Ra45mZX643mExkiTqBTZuJTnN2yGo+FVvZmPWtiZJkScVmIDjiJbRuuFY+IU3BAsz8YIq74mJa0Jjf5Ldy3r8AdzhSsnt2+Cv59lBRBWj8nAkxsOCbVqmGMcwc20vhvOQHK95q+U/KFh2YWGgGGkNu8aiHmTR/LJ+S27z8pVXeF80706tqhWFZxUoLoBUXgJyJAibifCH5+Tbe0aoY/Z05GfbpTOj+YaB5FgCJAEaAI8BFgQUnHDLUNVcheavIfWeiXk1eEirom9KvXROPW3TBoWH9YGkivmmTExiBeHBONDU19fSjJRLQaccWgxnd7yfdyyYvH9++CmHLV6k8gizkPMWDaIQSnSAc352Yk4uOTG/xj3/rlsBm9Bnu2jEPdagIyqiR1ZaqZ5002VNXVkXtpjvRZWxMMP8ffiE7qp/xI4pONeYoiGZkxBDdhTD2mXNSDFbDQXZFfFaRER+I7H+vKR8QpKiqievXq+faPZgIeHh75knAMATd48GDMJRamtWvXppBRBCgCFIF8EejQ3hoN6tdBRkY62OkZUFSQ/obnW7mKZfIyYxFwfgEmfv6OvafIN1m18n1rq9gjK1Z3ebwY+J9ag3XrdsM/LBVtpkwulhxaiSIgicCHz2HkPZuBJ16nKAEnCUwVOKfvlIr5kEWEnKSFXBoZBwU8Cyq2VVzF7CnVqioiQIm4CvrU69atBVOzmsjMpJOICvqIqFoUAYoARaACIcBG40HbcXdHLxQU3UxSaRYhWBTEnxke+eakS2ZLnaenS/prl4OCuKI8rMa64lHr/ti5zRWn3bzwMoLEgeMzdtkiuBnfcct1CkYrVsf1bfZC95clqZstu+AzEqctJZXvSjInGcfjcqWIN3lCYBaUGKKT746zoIIS+VmpKUiX5iklculpZUeAsYZzcnKS2Q1KwMmEhd6kCFAECkBg4O/9UY18kjp36QVjQ12c3PlfATV+5Ww2FFXVoch8xMn7lpuVjtSUFEjsiWEy8PXJBji7OGD3graVxkqKxWY2TmlAXYEZJLCgolqUkVxxnjkLHAUVaGhoQnJkx0jKSI5HimhnEtFFQUUDSjlWjNiKymXqNjO/HiX4rsWfczbhK39jU84RXX41aR5FIG8EzEwMcXjH6rwL0JwCEKDvlAIAotnFRMC4uj42rVwgdlm55/AZ/AyruMCgdzjjcRd2PXuiQ/u2xewNrUYRECCQY1hFYaEIUAQoAhQBigBFoKogoGRiAgN5NkIymCghPER//IBosrhhxBGzcwIosiLw4XOcOCYa2MaoWVNyZz4beo364O8d5HBJwgf/27jpdRv3fH1x794jfPqeJiC7eBl4dOIAfFf1RDdhnDoQJ5DFr1vYJ5WFyM+fkEKKS2pNotohPCwSmSLSkLBrutUN+JZ/+UlWIJaDOvJkAUhoAWhk8x9uHhsHzdxePcViWCxFaKvmU0Bckp5URgQYa7jnz59Lqc4QcEOGDMGcOXOoBZwUMvSCIkARKAoClo0aQl+TuDquyoldHZNcX+BPm+w4cLysWLy6dRAbl/0Hrw8JQnQy4H/uGN7MagPLSuIKWkF/BA48HVGOT5eN+mNO4NGYnE2m4NjERvj7Upggg6WPcTteYZ6das6CP/GaJ7V56icqQpv+hRCQk6PLoiV7nPSdUjL8aO2CEDAy1MPG/+bzXVauc9kP77sP0aUjidlWTikyKgY3vO+hXkMLSsSVE+a/cjP0i/MrP13aN4oARYAiQBGgCOSDgKJJC1iZqeHRqzhSiodI/wu48mYWJlhIW4Ulv3WDu3+0WJJGXWu0qkF2bHO/4p7bTTz7HIKwsDDEKHbE3/8OQZ3WDvxjEqnBTQrEAjs7rPf7xl88yUz8gvBoQvypfit+XTGJJ1apgBMeQu9fhk/kaPxmKEHFcSPh5fVSHCOFxakBi8Za+caHYxpiq1rAspYavAJj+O1+fxuECGUDNNTKJtqy4rzx37wTSNA3homJKWpbdkQvQxrguYAHVSmzGWu4ESOyF1EpAVcpHyNVmiJQYRFw2eoMToKQHKmwWpa/YiyOFiy6zsIGowwM6fU33qQJzM5TIp7h3ddMWNaQJ8ZzMXjkdhpB0QLbL45yA3Qf3BUGUsZUSQj0OIYnXzL4nWAr1EK34fZkU1LefeJlfYPf2d04e8UHHyISIKdugkZt+2DQqKGw0JMYZ+QtQpzDTX4Jj1O38I3ZE8VYxJnZon+3hrmszni8WDzzOIpL133wirjSS0jmQknDGHUatUf3QSNh00hPhgtucTNlcsLjxSHwygFcuOyNV8FfkQpV6Jo0ROsug9C/f0foi70n5Gw+AUGex+HucRsv3wcjNjEVkFOGpoEZ6jfrCodBQ9DcNJt85nFDcfvkJbx59Ryp5JsrSDxEvXTDUddAsDhG6DioH2qriDaSFU1+Tu3oNUWAIvBzEKDvlJ+De2VplSHkNvxvPrKy+B/MclO7fasmOLZ3A7Sqm5Vbm7ShXxcBSsRV0Gd74vQF7Nh5APPmzoZt504VVMuyVYv74wkObLyIYLF7DIn2iNUCmy0HxWqq0DEwRf0mbdC6mUkesY0k6v2yp0m4c2grbn4gkxiS2PL1MXzBMJjLiyYj5dHxiqBDefSTtkER+HUQYClYYfDvjeG68g7fKoyb8hD/+2MFmlz4F611BUOEjJj7WD7FGU+ShA6MWMroMmY0GpGd5rzMOFxx/gur70fxSTa2vAeUm7WG86Da2WQWsQqS3L7MVtKFnhYHPG7x6xbnCaR/v4QlMw6g0eEJqKXEvBvT8fzoUmy8ES5WT7WGHexaZC/85NUOS8ESve0bwCXwPp/ES/t6Dv8uHYTGm/tCjwk4h2T4bFmFNa43kcKsF7Hk0XmuJ+w71s1LJL1fiRFgrOFEadiwYb+kBVx6TBDcjh6Fu5cfXr4LRXRCCnicatAiY7AGjduhx++OGNKzIQr+6xEhVbTf6EfHsP3SGwFpTv6erAbMRd8mSkUTUsLSFUGHEnaBVq9kCDiv34Tg4M/Ytc2p3AmWygSVSp02aGSohDfByQK1eQlIiBf6guZG4ObOf+D6NJafp2g4Chb9uxAiLnuOxBBcd/b9i413v/HLsFUIoTOgF4zEpI40Gmlxvlg7ZCQO3QsVb+QBAhBw9yJOHtiHv1yOYZxN9exxkHT1XFcZCX44sGIuHqcIFhbNeu5F7xxEXEqIG/6b9idO+4dLtMmIekzadcdp1/XoMmU3nBY6QDt7T1CutkrzRnr0bayfOhEH7nyWdnH52Ae33PZg346hWLbDBfYNs60YmfazyBx/5/SR2HL1rXQ9vnIPcP/GKRzasQXjnU9jTr+6fEKSl/EK55zn43JEmkQXuPjkswn/82GGWTbY2KM3IeLkiiVfQig9pQhQBH4SAvSd8pOAr4TNcjj57JSR0Z8rN+8g8MUbcc7CP8eTMBPZ4wBxRh4nqirVoKylDyir51GC3qYIFB4BSsQVHqtyLamhrgYzsxpQVi6rJY1y7U6xGsv88QwH16yEj2jxNz8pLDno17fDtGVOmDe0CarlV/ZXzOMm4v7RbVhx/Qu/dxzl3mg9a2iZEHGxr92x9p8DMJp9CDPaSUysylGHX/ER0j5RBH4OAvLoOHMhBh5/ipMfEgkhxUXIvdWwtbyMbt1aQo/1FQ9veuJFJFl05yvIgmGLP/HPtMaCBSY5c4yb+Rv2PNhPdnKT2hmfsMmxJTx3dkXLerpg/fiK5/du4dGnWGF9Nhr0HIC2xKKNxSl+3SJjRQbaLLJ09ezsFLQJPIpuNuZA+ENcufkC8aIAMyw19Jw6GVbVCjMol0eHyVPRdV8Arn8li0K8VPjsGIxmPrbo2sYUqZ994eH9SkDCEWUVdHpg+rTKE6+myPhW4QqMNdz69evxqxJwDGEdeHIhxs7cjqdRQhezEs875PM7BD7wwklXZzjZzsaugyvQ2aS04xtx8d3/DP5bcR58exVWNfxRZ3qZEHHcpLc4uX45rrCnYt/fHSRc2ZafDhLw0tMqjkB4eDg+fPjEhESjKR8EMhPCERkvGeNWCUqF+pbnIzTPrCw8ObYEASS+rKyUFn0PaycOg+rZKxhqWTrz+PSvblg4bAwufUyS1ST/Hi/zGzy3jcZS1WvYPLOFxLsrzyolyshK9IXTqOE4+ERAXuYWxkX0m2OY75gMufNH0d1MZCUYB48VE7GZkHD52TNkJb3E3rmjYVz7JkY0KcrMvqzl5+4pvUMRoAiUHAH6Tik5hlRC3ghcuOKF/ccviAswRBxNFIGfhUA57Zf6Wd2rvO326tEVe3ZtRpvWrSpvJ8pTc14mol57YJmjDfrPv4KY/Eb25anXL9RWRsxT7PzLHo2t+mHN+RdIposCv9DTpV2pygjI69lj6/FV6ExcAAkoKB6SvwYS6xdXuB65hOdiEo4Nw6bjsf/0cjQV7xJno86g1dg6rR2UhfwVNyMWgV5n4LpzJ/YePo8HH2PB5b8vWFCvNRirnYZCm7+JrSR1i/bEWCS2zOAZI1CbGNB8e3cbx1334vjVZxIknDws+67F2plCgrEQ4pVqDMWWbRNQW1m4I4/Ev/vy4joOu7ritGcQkgSdBluxNqZu2YT+4kWoQginRSoNAjExMdizZw9cXFx+wThwXHx2m49+ozfjiQwSTuoh8dLx1msthvRehEdxsheopcpXtAtuLO4dXIDOjVvCcflphIqsaSqanlSfKoXApg3OuHXzIjZucsGOg+eqVN8L21luynuc+d86PIgTWu2TinJa9VG7uoj4KaykwpfjEhJOXssKo/89huOXb2PPln/QkbirFqWsBF/sWn0Y30rlVUi8B6z9G1fEJBwLBo1HYdmeazhz+SY2/TsO9TRF45AEeG5fAa8v2ViIdCrd33T4bl+Io2ISjsTXbTgcy/fewOmLZzF/WGuIhokpERexafUZiF6p6d+v4pRbkJCEY8G41SSs3HsVZ6/54tSZk5jn2BaqovHkD38c2X4BDP3IkjNBm74j0d+ObLgV75diQb9RbwwaPgaDhvaCKRmPFVd+6eJDpVEEKAJFQ4C+U4qGFy1d3gjExifi+cu3+PYtO1RHeetA2/t1EKAWcb/Os/zle8LiKEFdvRrfCoPHy0J6agpS0zKEC7zC7nPjcW39KMwyu40D0xoV2iVI5QePDUU1FWhpafG7wlFWK+WdkOm4+u94TNvymNjLMJMhWYiVtQ6y2izbe+lffeCy1QNfMwmLwFJBh5Hz8JtF+brCKtseUukUAQECuq2m44pfU2z9zwm7T3riQ4yk5QsL8qo10Wv8Yqz8ZwwstXO8ANj6GLLxEgwbLccSp4Pw/Rwv/V4mTbDlddC6zzSsXr8Ync0krGVKUreID69Ozy1Y1ccS06auwfV3MWId2QpG6DVlLbauHo6aRXLny0H9gZvhqVsP8+c744J/GKQ8KZMXpUEDe8xfvxF/9pJw1VlEvWnxio2Ajo4OmONXTLz0x1j/92EEC+MukQ8hlHTqo1PX9mhgSsYbPyLxwtcTt59F8F3bMj5oowK3YYnzAFxe2b6UxyFli3CczxoMneCMMOZ7nysyk6BtjoJgnCWyylORDqVZtgpS6VUagStXb8LYUBdTRg+oujiQWGTee/5ExEXBPmJeZhoSYyPw8flDvIsUuqTko8NGo56DYSligsoAMRbxBjBt5yXMsNEVSLdqh7atjDDBYQYexDBvCBKX9t4J3A0Zi/41JcY8xdAl/StxO3n5LX/+xVRXMnbEhuM70VZHMBZrbtUedeWiMHDJJRKfjbSc9hh3bkXAbrhpmc2Ds3544sTJx2K3kvK6vbHyyF50MxLq1KoV1JK74J+L7wkSPLy7sR8+4YPQ21QO6WEf8CVZtGNWCW0GzsdgB5GuJG6xdWuo8UbhQogaqhsZo0YDNfwgxVU5FnBcth2/3V+Ae17PkUK8MJDRJWrZzMb//sm2Xk4KLK58Bl2aKAIUgZ+BAH2n/AzUaZtFQeDhkyAsW7eHrCNMhOPwwUWpSstSBHIhkGM1LVc+vUERqDAIqNQYi5svXdAyexscUmI+wu/6CWz83wZcCvpOhvokcb/j5L9LMLDfafQxLrvdkBUGGEYRtgFmnXmLWWWoFON+K99UDjrk234ZZGZEP8SB9WvxLJXQj4Qw4Lb9kxJxZYAzFVk8BMzGHkcaOUorKRl1xLztHTHHOQz+fgF48zGMWIwpQc/UAu07tYaJmnDHtawG2Vro9Mdm3J2wEh8e+8L/xSdExSUhi6NM6tdHy3ZtUd8gD9dCxa1LrNwWXAvHAln6kHuanZ0QkuGUI3c+PIImIND7Jh6++Qa2phla23ZFYyMZuhUgXyCYg5qdZ+LUw8kIf3Ef9/1f40tsKuRU9VC3sTU6tq4FZep7IMczoJeVBYHEp1dw9bXIrSwL1VvPh9vl/9BSGD+S3w9uNC7O748hG+4ijRkmEMu4+8eOIHCptdR4rcL3mYxx8h/lsFF3/GF8HV/he0IV/AURcN29BYpp33/BnhWhS7wfeH7zEJ4XUEXZeCBmzrYr0zAFes1HY2B7IQkn1Ee55lASJ3MjHh57w3+X8NIC8eRxEiHitAvQOP/s2Ac+eB4vIq44aOwwGi2EJJygJgd1B63D0WbLoG1cC0YG6nlsJci/naLkJgXewuMokStQNurbjYaNkIRj5LBYhug1rBc2X9qGaMZtefIjPPCNIUScPrFW1IYamzFpY964KTi/rANCbvWBbZduaN/RBg3NjOG43hOOjKBipLKWXwyVaBWKAEWgAAToO6UAgGh2iRFYuWQmFs2aUGw5pkb6+L1PD9Qzr1tsGbQiRUCEACXiREhUsN+Ax89w644futjakj92EsuGJpkIVNOuDduhi8kisSVG2IzAmfdMjCMS0STaA3sPBOG3JU1z7wbkxuHR+f04fN4Tge+/IplYOhnUsIBNryEYOcwG1RXF/i5ytJmAZ1eO4egFbzx5HYzohBSyaVoZ2tVroXGrrhgyahja1swvFgAXX5+549Axd9wNeIcvMUlgKWmiRr2m6OwwAiP6W0HkWUTUcNqXezh2/jFxcUbusFTRsrcjmnA9sXr5Vni+ToROndYYOOlPDO+ki2cXDsM3VDApYsvXgsN4B7F1R0a0P06e8kMss3uQpYBGdmPRpX4GXngcxM5DlxH4IQo8VWM0temHiVMc0cwgm8BMDb6NI+5P8PilhBk2CYL+4MIubA2Qh5JJR6J7MzLhTYZ/PjqI+sT/Jc/gyWXizsXNCwFBIYhLY0NdxxgWrWzRb9hw2DWSNWlNIs/tKPzCBH1UMrXB6H5NwY18hGN79sPN5znCYzOhadwAHe1HYMLoLjBSyutZSmlDLygCFAEJBNgqJmjdlTkkbhb2lK2KOi3tyFHYChLlSlJXQkyBpxxtNO02mBwFlixCAQUYW3bGIHLQRBH4VRBICwtHFN9CjOmRHJo7DIWVJAnH3Gbr4relc9HrWAAuRJBxEUnJ4U8QSMYjLevJMBkr1vefLzbPfzJiAnDqhC9xS86MAFnQbmSPYV2krVC5JN7QmcPeAgt3Uka1jh1G29cHOysUVw+64/nzQAmX2zx8eXYR27cGgsMxRvdR/VGP+EqLfe6O47c+C1yqseRh0W0sujYovT5+f+aGk7eD+fJZHBP0GNsPdeWjcOeEKw6ev43XIYSIUTNC43a9MPqPMWhnJmMDAUHg++trOHzkPO74v0Lot3ikceWgpmWIOhat0GPQSAzsVBsls9HJ81HQjFJGwNfvAZJ/xMG+hy0UftCnlj+8HBhYOmLp1k3oVL0slzjYMLJoCt1ce5OUYNmkHjiEiBM4hkzF15Av5O9ZO/dcNP+OSORmIuzjJ76lm+Am2fxT3yKXtbG8Wm00s5KoVqanJF7m+w/4zn/fMg2xYWBihOSEOEKrZacsQzMYybH4RBxIDz69eUsy9aFo0g22LfTx7F4kvzAvNQL+Hrv4hzP5zmgYNyJWcXaw6zMCv3WxgEoRNzOVtfzsHtIzigBFoHQQoO+U0sGRSskPAT0dLTBHcZNFvVpoYNkEUJa1TllcqbReVUWgLEepVRXTUun3OzLAvXjxMiHh6lEirhCIKlR3wD+zu+Hy9POChRQSq+fR5UsIW9AENcgkQJTSo25jieN4bPb8IO1CzO82Lp/ejY3rh2Ezcfcx2FJFVIX/y016AqeRjvj34iukM+s8UskPnpeOY9v6TZi96yxWDyWTMKl8sucvMwRH54/FbJdbiE6XDhjw6L4Xzh7chg0dZmH/iZXoZJRNgqW8dceyWWsRShbCWBwjzFblYOOqGTjzLoFPOOLhPQRGGqPHtWHw3LECC69/4bfMUe6N2iPsxURcWsgNrJqzFK8Yyy5CPP7h2gxBK6dg/pEnSBH3xx/3vN1wYPcBrDx2CjM76/Mnjskvz5HdI1uFEylBx3hZkTjvPAfnyaWx7Qb07UOIOFZ8vjqIIIl5fhSzJyzA0UfhEM/hhJm3rp/DTudV6Dl1A3Y5DYGJJClK4rdcd/kXSz0j+KVN7TaR3fZumD7OCb5fkgV4MDkBfrjpfpgQsfNI7ISVaK1dxBmcUBf6QxGgCFAEKAIUgaqMgLymOlSJ5UICP95hJh6d24u7EzfCJkfsJY66Df5ctQxWws1AYOugoYzV02J//wt4COnhnnCaswgvmDEOGYFZjTfFIELESdIWGd/vYeO8WfBjfJwRIq7ewIMYRog4xYzXOLR8Po6H/pBoJYu4UtuAWTeYvUudcLRPb0LEcRB1dz9mzTwPkWvKPw4OzUXEFb+PXETediXy3fjyWQpdcbCDCnbOnowt3p+Erj8ZFQNw3/sS9u88iJVn3DHXVk9C7yT4bCYucxaeQhgfC4kscnrP+zIO7ViPHeN24Pj24TApkiteaVn0qnwQOHnqDN4QAqNHt07l02CFbkUOOjXqQrsaGdezWGCzOJBTVIaahh4MTBugRacBcOjVItemxlxdkuXhg8dFljCua67yuW6woaymTt4iORPZVKilyZ8DiiK0pSQnZc9PchYv1DUPCfGSMpSgrCL5ZiuUkFIuxEVcbLxEvzLh6dwOLZzza4aL2K8C4o3FNsc4p1V4PvJPeH1OzFEpE/HhgfA+zRybsLXJCCzdvBE9G0jPy3NUkrosa/lSjdELigBFoBQQoO+UUgCRiqAIUAQqEQKUiKugD6uLbUfUrWuO6tVNKqiGFU0tDsx790Kz+e64/4OZ/vAQHeSPoB881NAQTJWYwNkL+gzF5geREpMHiX6QuHORL45iXM8fkPc5gf61RROdeJydPwHLCAkn3hguUU10mpnwAhv+GIma5t6Y2kLCMo4bicNT+mGC6xNp8k9UkfklxOGnO+sxcog6btxYgvoyLLl4vEScXvYXwkOEJBxTj1i3tXVwgH5O5o/JyzNl4KbTMOx/90mGPjwkR9zG/N8HQ937CsY1kehHnvIKn5H4Yg9+7zETtyNSZT8DIoqbHoErm0ehV3Ac3I5PQi1JMk6iqdh3+4h/5ld4xY/FIJHBnJJnGfpgPRY69cK1tTa5do7mKE0vKQIUAYoARYAiQBHIgYCalQ3a6rvg3BfGzoGHb4HbYWdxDV37DUb/33rCzrYtamqTzUPEvWznMQvQOUd9ycvS/P5Lyq1I56XaR+57rB/hSCz1osWxobL7ykN6zEOsmu6E7o/XoYlwnPTl6j8YtYCQcOKYftk1xGfcRNx1nYyphNA4+3cbOj4SA1MxTwb+3h9JibH48OETlDPjUNvMqGIqWh5aERf4js6++NOm8KSMLLW4XC5yc3HpSM+Q3igpq67gHvn7S5U9j+ER2ZJJTk40l5S8W7RzjpzkhsJ0ZEgFoy2arNIpTUhQvmvJokhjMEsTV1CtOwLbr7WAx6EdOHvRHQ9fhsvY6JqJiGcHsGCcAgyubUVztdzUp1hgjpOylp+jOXpJEaAIlAgB+k4pEXy0MkWAIlDpEJAc2VU65X9lhfX1dNG4cSNoamr+yt0s1b4p6NdBLb1sF0FZyaH4HMbft0zaScct5wVweSgi4dgwJLvstp7xxv07blgzvh3U+X8NPPwIv4hlS04RF0cC9TIYN5enXghJODZqtp+K3Wduws/fH/e9zsFpYntoCImwrER/uDifQ4JEz8KvrMLCA0/FpJe8VnNMX3cSt/2IJd3ZzRjewlDosoSL0PvrsfbIZxmLLkQgWTwJJW6JJKd4bAUr2PeplcsCT6L53KckfsvHt5/AU7PA+P+OwMvXF1ePrYRDAy3x7s6MmDtYtfggIonJmmKNNhgxbix6NtbJdq3C1kTbfmMxfvx4DLS3RLVCEIG89JdwmvJPNglHdrKathqDLSdvwtfXC0fWT0ZzPQWBDoSYfHFhHmavfyxwAZW7F0j6/Ayv45TRbthyHPfwwZ0bR/FXj7oQG0ASGY/dz+MVP2iNDAE5bqWF+WDXemc4O2cfWw7fQ7SIfeWlIMB9q1S+s/NGXHkuGSA+h1B6SRGgCFAEKAIUgUqKAEezJ+b82RnEK6MwkcXUuPfwOLAKfwy0QR0DbdRq1gWjZzvhzJ2PEu7TROUFv6X9/ZeWXsIrOWN0GjICo3s3l3CBRlzPNevLH+OMH2uP2ioFD3JKu4+8zGAEvoiBfpMhWHPoCu7cu4m9S3rDUEE0deMh7u1leAQIxyAkPvL53RcQIiThFPSsMW/bKdzyfYRHft44vmkKmuoIPS7wknBt6zp4fZccUZYQR1q9TBDo0N4a/fs6YPK0v7Bo9fYyaaOqCeWmpZJZYY6UlUAIT5EdW468XJdZ+BbyCdm0kqgA2dD55avQLSVzj7jJNTDInjuJihXplw09fV3x/AxEelQ48SiSS0YGUtNy381VrFRucKCjJzEnJHR+z8UPcT8wOJ8jBCfWDZBqXV69IfpM34KDNz7A9+F9uKxfiTFDeqNpbR2peW3S59O45B0nVbcwF2UtvzA60DIUAYpAYRCg75TCoETL/FwE7vs/x+gp83HlyvWfqwht/ZdAgFrE/RKPkXaCjwBLDZqqzM5DoXshXjxiYphJlSK4SV7YfTBATIYpGvTGjkv70M9UsCjRzroVtH7YYvKJ14To4iLIfR+uhg7B8JrySAv+iBC+lR0RxVKCzYgFGP97DeHEqgXadWoDTZ4jDn9UgYmpKWpbaiCJkDfqDCNErOFO7XJDpJDMYXFMMWvfFTj1E5FvbWDdXBkhVlNxNy6DeFpJhZ/HDXwf+wf0ZK37kJgkjfs5Ye/GMajNe4erN6NgWyvblSUfh0L8w8QemeF6FesGmgr60bYtOrUzQ3/rCbhKrNWI4vh08zCufBiHcZbDsXH3QLjNfILrzwWB4llsffSbtxULrAu/KzXCwwV7fL8KLeFYMGw5D243V6KZgAFF27a26NG+BrrZ/YNAZjJMFoqublmDm3+cQA9d0cKTZOfk0Gr8AXjs7AcNYXY7KxV8ajIM58MFUQqSQj8inPgSFe0Wl6yd8zzl4zWsWrQaIXntNCUWiV6uS+ElVVEBozWHw75x6VoOSjVBLygCFAGKAEWAIvBTEJCH9Zzd2B48BFN33hfEq5XQg5uZhM+B3vzj0OZ/YNx0ABatW4spXUVjJEHh0v/+SyhRwlOWnAUmOe/EEO8FuOnxFD/47unYMO/6F3ask7Soz5+0Kos+qtUagxOeu9BJGJevg7UVWMHWmHiEGasyxv+h+PSRUApkLMbjhuL9Z5HHBBaMWgzH/MmDxHGsWraxQXMylhrjEgR9E1OYmllCgRlr6ZTcYqeEj4BWLwQCvzn0gLYMbxmFqEqLEO8h8hJuWLkpMYhLJKRVtexlkIz4t/gYUfiNdeH+V/EoahRs9bNl8HiR8Lv7UkySsTg1YN5Qiz/PEkcBKPLT4MCokQWZE17jb45kiLjXfncQN6MRdCSmRinBezDMdj4+KetB39AUTfuuwuoZHcrM4lWjQSMYyZ9DMH/OlIngt++hqt8MkrPCyNsbsOlSGPSNTGBoVAMWbe2hq8lF+NNL8HsejIgvYYiMUoDdn/+gU42W6DmcORiAfsBvfT+MWndbgCWZD0aFM3HKRbF9iPWMBI7SVoilIV9COD2lCFAEygUB+k4pF5hpIyVAIDEpGe8+BCM2rugbQ0rQLK36iyKQPXr8RTtYWbuVkJCIqOh4qGtoQ0WZLvIX7jnKgcMRb9smKxSZyBSSKgmPiOVbhCiENAeNfhsLeyEJx5fNNsTv4+yx7MwbRBDSLCv5EW7fjiFEnAHktLWhzmGG/GTZg5eMI3+1w8fr/eDQ0w7dupKFjTpGmLTHG5NkKMlNfoBbYis8QK12fwzvJb07UslsMPZet0S6Vg3UrmkElXz+KuU1euJ/LjPQmh+fhViqTRA2mv/6UC7NdJqMwuS+JlITGaWagzB96CZc3+jPX+Dhpgfi/t04jKtnkKt+0W8k4cZZL3FgbxbHECMWzxWTcCJ5um1mYN7goxjl+pKvQ9q3G7h0MxY9huqIioh/WXK10X+0nZiEYzI4mi3R0kJLTMRxM5ORnEqmv2riavSEIkARoAhQBCgCFIHCIkA27ox0uYHm9juxZt1uXLjzFkk5A7wysogVevjTk5hp74eXu65i65gGQquG0v/+F1b18itXFn2UQ/N+o2AtJOEEfdFA2zYEVyERx4xzk5OYsS3xaMDSgramPN9yhke2PH2+Nhet291E397EhWi3rujQqi7qO26Dr2P5oUJbKj0E5s2ZAU5CWOkJrEKSWGw96GkriXvMy3gEjzNBsJvahE9U8TJC4Oa0AQ/jC2sRR+iwGHesW3IIdbeNhSnfNWw6Xp/9G/t8BHHQmMaqGXeDdZNq4naLe6LW/Dd0MNuFMx8FG03D727ATvfuWNC3NpgpI48XjZvbDyAoJR1ZKeFI+p6AFmNrSlmVFbftvOqpNeqJjnU2Ifg14wOGh9eX/sPu3m0xs7sJv11u8mPsX7cep/2/8UWw5OpjwXl7NDPjIuqOCxav8hZaDsrhRYYlLDYOkdiAyibzU0nqUhFaeiISjoiTV8j2fkLKpSRJxpkrBfl5dZrepwhQBMoMAfpOKTNoqeBSQqBH5zaw694NUNYuJYlUTFVGgBm/0VQBEbhy9Sa27zyAeXNno4tt5wqoYUVUKQ0pknExyA5IRf7kiItvbz/gq8jFIBneG9UwQhLZzSC5oy7L2AymxOVPRCbZJclLxZsXb0gnDaBUoxt+a2OIR15h/GkBN+UL7p7fzj8WEQs1bdNGsO7cA30Hj8SQXo2gJiE0JfgdPiWI3GOyoFOvEerkjHnGVkf9Vm0LASgLBlZd0V6/6BZw0sLZZNd6C9SU2B0qyFdA81aWUGL5I5mZ/5BFtZAPn8luRIMST+Z4me/w5Pk3PrnGtMVWskLHjhKTKoEC5F9Vcr8ZFPa9BMOfEVNGvHj8ChlDZezqZJugljiOn1AAcZmpqSbxWiOLVBnpDEspy7xQWEf4w+LIoxohvZUlLeJI/bRUMrFldCGB4eUVqkFeSpQCFMS+MKXl0SuKAEWAIkARoAj8Gggow9LhLxx2mIWEkABcu3qDbFa6Q9wlPkBQSKxU/FxuejD2zp4G6/YeGGGuQLiiMvj+VzBQy6aPLJjUrp1j9MKGtpaahJs6HtlwJhxjEsLUvk8rON1yF47hUvHp0QVsYo5/WFBUN0HTtp3Rq88gjHS0Rx1NqcFMBUOUqiNCYO78RXjz5i083I6i5JSOSGpV+1VF4+bm4Fz7IrRWS4LH6u4Iu98D9fXS8eGBJ558igOP2cspyf/kC1MWIZ+mYsDLY2jfrg54Xx7h1p0XZJOCqJIqOo+dBItSsGJkV2uHMZO649rC80gk+vEyP2P/tLbwO94dlqZK+PbSG3eehIot8VRrDsXQvsZSc1yRVqX1y5JvDsdJPeE25xQSmH2qqUFwGd8StzrYoaER8PnBdfh/iBU2x0KtLn+in5VgY3GjIZNgs+8evCLTSX4mnp8ei9+euKJtK3Myh05G5Ds/+D36IO6PvK4duthkh+pQ0NYhG2TJw+LP64kXG7dFmJl5Hohkoe/aHehSQvmlhRGVQxGgCBQeAfpOKTxWtGTxENh7+Cxu3/cXVz60fRVZ3pMw4hDn0BOKQNkjILFiXfaN0RYKj4CpqQk6deoAfX39wleq4iV5Gd/wLYZxqyhMLF0YGDKkFRcx3+Ml5lYZuLSsNXSWiQrK+uXie6RwVyOnLma7rIJ/nxlwfycph9QjZFVMyFNcOkSOwxvwr9VIbDqwBb9bCpxzZMbFE1dO2bM6RRWVErgJIbEGTIzJ5EOWvkW5x4aahqbEQk52XSVtTaiSANzJfOaJhyRimVk4GitbhsyzrDjExDMTLkFS0NCDrrLsD5+qgS6J18dCqlCH+O/fJZ6dSAIh8+RUoK6WEww25OU4wh3h2WULc6bRfjmJObdcquiPl+tg3XIBnqUSFFh6mHXyHdb2VZcqQy8oAhQBigBFgCJQNRBgQ71GKwz6gzmYHmcgIugWzhxwwXoXdwQnMyMGcjfuDo4cCsSw/7UCuwy+//xG8vmHlz3sEpficbMgMRwT3y+Vk7LoI0sOqupquRbT2WSMQ4ZIMggDDqymrofTg8+Yd/I5pMPj8pCWEIqH1w+T4wjWLG+Oac77sGpMU1DHlKXyf0CZCdHV1UFioiGzF4ymYiMgB8uB49Fhvy9ufxXMRXiZMXjmeRzPhDKrGfbEoPaROHr2qZgAyrM5dnX8NtYWgUeOI/STD9zJIZ3kUK/nGiyY0CgHkS5dqvBXHDQYsQH/vAzB0kMB/Nh0PPLOCbp9CkE5hHDUmL/tf9EsO7BnjhKldcmB+eA1WPzoNf4+9ox8CRiCMAYvbp3EixxNqJoNweL/RkNPuFFVQb8f/l47DcFTN+NDEvPNyET0+1u4RI6ciSVvBsd/V6GjhAtQJfINamyijKAPSfziWYmvcf3ka7A4tdE4PB0925VMfk4d6DVFgCJQHgjQd0p5oFyV23j45AVOXLgqhoAh4miiCPwsBCRsd36WCrRdWQi0b9cKS4nrPkviF56mwiGQ/OYFXidkkz1KuuYwN2KIOOJLnr9qUTg5glJk0SIlm9RTbTASZx/64qjTNHRvbgolWfIIKRcWsB/jB8yFb7xgMYrFkZNaRMlIT5dJKhVOMxZU1EqDBCJuPJJTZOtBrAElHbPIyZcWV68IBfns101WJrFUk7VSRoDgpWfwJ3QiTOQV8lgm4pDFKFEh+ksRoAhQBCgCFAGKQOkhkPUZbtvX4u/5MzHO8Xf0Ge6Ml9LsDmlLHtUt7DBj7Vm4O/eDipgsyMTbJ0+EEXvL4Pufby954BLSLWfipaXlOe7IWbbo12XRRw5xty5LE5bMjVRMSZaCOWYcvYP7Z9ZhvENLGCgLNiZJS+EhNfoxNv4xEKuux0hn0asKh8DC+XNxaJ8LZvy5AEucdlY4/SqLQorGg7F67xrY1teRnjuwVVHf9i9sP3cEvWpJRjjLr2csmHXZjIOH/4eOtaU3NrLkq8N2wj7s3jEBJqXoMYPFNkZ/J3fsXvkHLA2y3WyKtSQxzM1ajcWaE5cwoYOu+HZZnjA6DXS+jB3/jEQDvdw6sTjqsOy5BLvP7IWtZDgI8gRq2K3G4VM78Lt1HeKJRZaWcjBo2A+L91/HogF1pAhNlnwbjF88FuYa0i9IXlY0vn9jKMGSyZelDb1HEaAIlD0C9J1S9hjTFoqPQOiXKLh5eOL9+4/FF0JrUgSECJTWKjsFlCLwkxFIx/1T7njHWC7xExtm7W3RuBozuudA30AHYi8WZOFowGo/bB1dPc/FDD55p6QhlCX4kdNsiGELtpFjC+JCHsPrhidxy+QL33v3EfDum9A1Ew/xH07hxLWVaDdYGwqGBtCVY+NDOrMoxENiRBjfRWbNHJOz9NRUyCkpSU8OpVpnLohrREXFfHTOVSGPG8R//scPSCAq6UrNYYjlYHiEhAUfC7qGhlKTnzwEFnibJWcEUyPikuQtE0uA7H2M+4TPkVnoVDsnlZaFMBIENVEcf4a4Ea1Zkx8DIXcjeS9G5S5L71AEKAIUAYoARYAiUFgEeJnhcNu8Eq7C7zZL/i26kDhVjVrkXnBlxlk1mjSELnF5/SOdMUfjIf1HIt+6Xr1Mvv/59YK0TcZUOVNGQoLE2CJnbsmuy2aMQ0Z9MheoC9CVrQGrAXOwlxyZiaF4cOsmvH3uwtf3Pu4/fIu4DME4mZvxEaf3X8X87sNBI1EXgGkFyH71+i0SDMuHYKkA3RWqoIXxh0MwvlQUYsOg5TTs8R6Jd35eCHz3BRlKBjBv3hktzIXk3BxvvJ0juzENayfcC3PKkTkf++9MwKu7RN6Hb2Br1EDz9l1RTwZRxmJVx5QTYZiSQ4LoUtFwPE5/zL+nLOLppcO4bWg/+n9489AHLz9+QQIJEamsbYL6Ta1hWUcnj/mSqJXC/FbD8D0fMbwwRUkZFtsAtlNc0Wn8arx6eA8vP4QhKZ0DVR0zNGxlg0amua16BaLJ82g+FmvPjsbi0Cd4+jQI4d9ikZrJIf0xhrllOzRtYJCHFxkO6tivx8U2E+B35z4+Rv2AgpoR6jRuBytL0dy9JPIL2XlajCJAESgEAvSdUgiQaJFyQEBeTg5Kinls8C9E+0FvP8Fp4x5MmzoRdevWLkQNWoQikDcClIjLGxuaU2kQyEKw10rM3/lI7E6ExTFE31G9IbIf02rcCGbEIustP15YFj4EvYd6dSsSkSw7RdxYj3/OhMLAxASmpmZoZuMAAy0uQh5dgvfjTwgNC0N4hDz6LF2OXjVbYgDxhT+AP2f6AZ8VfdF1uafQXX0iwkOiiWBtKFa3hKWxCh68ExBQ31/ewaPITNQ0kYjzlvUJq3u1xyr/DFQ3MkbNhoOw+cRiNJWxRZDNyUlcZetf+DMevpA+eYZNwRAzCT0QCy+vQHGsFxZHDxZNTcTkoLQPZWbHeeFbBMcYbVrWAOdWJP8ZcTMCcOHUK4xc2EQsn5HGy/yAM+cDsp+jXB1Y29SQKlOEVmlRigBFgCJAEaAIUASKgQBL0RLtWhpgPyHimM89LyMIu1YcwMAzk2CSK8ZsEu67eSNcHGOVuMDWNxTE8UHZf//Z8grIVom41Y6OJqQboCPebETcjb96iwixfjIAIayX5AiLW5RBTgUY46RHBsD9RgCCQ8MQFhYBXdsFWDioLtr3Hss/mB7HPF6DLh2WIDCF2RzGRVx4KOLIxidlZqcaTRUagZvXzoOTEF6hdawMyrFY6qhHXBfWa1c62rLY2rCwGUiO0pFXGCksjhYatOtLjsKULp8ybAV9NOrQnxxFbY8NTdMW6EyOoiZFnYbo1I8c+VYsvvx8xdJMigBFoEwRoO+UMoW3Sgp3WbsEzFHc1NC8JuZMHwdLK6viiqD1KAJiBCgRJ4aiYp1437qH825XMXjQQDRv1rRiKfeTtElPeokzO7fCV2hNxstKR1JsBNmBdxOXvZ4jlk+yMcoRlxQ2f2FyLy2xpmpNeqJ7/Q14+zyW3OPi+ZkVWDOoLf7tLSB5uD+eYOPydXC9H8l32ciWbwCn2/ZoU5uLSM9tmLj4BnFpRKqy5OGf0RjNXYfCUGzVxpZavAFxD6JrIGibpdgCfe3rYf9mf/5CVtaPW1iz+DTauw6DEX/ViBB917bioO9XpKdxEfz2O+TqTYFx9oqSuA/MiTQZJpVVpIusRC+smLkTVsemw5zvS4qQk27/w9qLH/h6MsKUDLrBrp1onzQLCory2dZ4vB9ISiwKEycP68F9YL4tAK9TyQIQLxWX107GprbnMauzgQA/biyurpyJLfcEz4D0FkZtR2FgK5EOReoiLUwR+CUQSI8JgtvRo3D38sPLd6GIJtufeZxq0DIwRQOy+7fH744Y0rNhmVk0RD86hu2X3gjIcfL+syKud/s2kWURU3ZwVwQdyq53VDJFoKIioAEHx17QP/UekZnMAIiL1+6z4TAgBH8vHI8ebepAjZ2GiDf3cXb3aqxw8RNv5AFbDe172EDwpij777+CgSF0FMmUJkXgnvzLw7O48Go8xgvj9SYHu2Pp2stIZrqRR2ITN9jEgYEw8ZCcmCjbhbeoiNRv2fdRg6+RtAAAQABJREFUqjkZF5mxPvhv8jw8TWZINhbUr6XAqvU+9DTL3v3LJv3L9gpO3J3rGgjJUhkC6a0KgcD5i24kznUUpv4xCvKl5i6+QnSNKkERoAhQBCgCFAGKAEWgUiBQw9gAJrXqMmbolUJfqmTFRoAScRX0+XyNiiJuGp7BrlvXCqph+auV/s0Ha/7yKaBhFpSN7LFm+3RIun9kKTTH1Nm9cHTiccSS3b/clJdY9bsVPLp0RzMTFt7dvYa7hAQTrNGwUbfXLIxszRBALDQbMxm9XO7CLYz4/yBx4PwPj0bzh3vQ2boeNDgpCH/lC+/778ULUIr63dHHTkQCVoPdzKnodHwKvKPS+PUDjoxGi4AD6GZdC6zvz3DD4yEiCQnHJLZ8bTjOHJzDZSQ/q3T/4WUhyH0W2jU5AzvbeuBEPcXVa4/xXURmsqqh6+QZ6KAuWpViQ1c3Ow4CLysSe+cOQ8RpZXxjdcOu3RNhVMCGavUWk7BkxGmMcQ0E43kyI9YX83o0wcmu3dDEmIOQAC94Pw0XEJ6ktxxVK8xdMw21xIRn6UJQGGkqDWfhwfcpfH0ZH1EKipQULAxutExpIJCOwJMLMXbmdjwl746c68chn98h8IEXTro6w8l2NnYdXIHOJtkLrqWhAbPw/t3/DP5bcV4Qt5G8F/6oM71MiDhu0lucXL8cV9hTse/vDhLuiMpPh9LBjEqhCPw6CBj2mIW5PS9h/qWPgk06ZBPNs0urMYgcLLYccfmdhSzyQZd+PxG31pYTMX1ItkV9WX//2WpN0bKBBjz9vvF1yUq4g+m27eDesxU0Uz/D57oPPhMTOWYzEy+biZJ6UPI6OtAiXgc+8bcdZCHw9AIMzTwP1hdg2M5dGFhLbF4nVU90UdZ9FLWT169y/eGY1nc3Jh1/TZ4VDwkfj6G/lT86dbVGLR05JEa+xh0vX4Qym6GYxNZD94HdymwTh6AR+m9JEbh9+w7evHmLSeNHlFQUrU8RoAhQBCgCFAGKAEWAIkARoAj8ZAQoEfeTH0Bezffva48uXbuQ3Y904T8vjHLdZ3Fg2NgRmw5vxZAGijmyOWg4ai023H+Nya6PkUZWjbgZ3xFw7TgCpEqyoFFnKDZsHgtDoaseBcN+2LxzBt4NX49XTGA1QsZFvvbGCXLkTGyFmpi03gk9DbP/tJRqj8LOnc/QZ/RWvGF8JfEyERl0A0eCctRmq8Purx2YIybxcuSX2iUb+vUtoRTyAiEffXCCHFKJJYf6PVdi/bwWEvHhOKjbriWMFa4jmB//hcSZC7qM/aQP6nUNEEliYxsVxAGwdTF84z58+jIUKzze8YlLbnoUHnocw0MpBQA59SaY63oCM61FzkVzFCivS7LQqKSc/SzLq1naTlVHgIvPbvPRj7wzPgtJ+jwR4aXjrddaDOmdgUvezmilKSLP86xRsTKIJey9w05YtHwH7n5Ogc2cyRVLP6oNRaAqI8CphRl7d+FDn1HY9TBCQMYJ8eBxM5GZCxtiZWXigA2HlqEZ39peWKCMv/8sufoYPbUX9j46jGhmpw8holKjn+PikecCBYg1b0P7GWgcehCnnsXn0pq5oVSrNVqYqeHx6zh+fmb8K5w/8Aos4iLbKoRY2tWqJrOe+GYZ91HcTl4nJFbTqI2b4Pd6JPY9YQhJgkHMG1w7/SZ3DZYCrIY5Y/FgY2mPDrlL0js/GYFpUycjK+MHvLxvQ5WVgk5tm/9kjWjzFAGKAEWAIkARoAhQBCgCFAGKQHERqGQrdsXtZuWrp6ioCA11dSjIS8bwqnz9KEuNWSw2FJTUUb1mI3TuMxFrD93Bc/8DGNIkD/KGxPAYs/MKzjuPRVPDatluFoVKsuU00KLfUlzw3AeHmpKsEhs1HVbD88ZujLU1RzW2DNMvsshj3KQ/nC94YoNj3RwLGxzU678eN6+6YKS1mUQcE2HDpB/qJtaY7eKBk6vsxHHtyg47Fmp0XgGPM8vRyUxVCge2vAG6T94D99OzUC9HjDoN6yn438R2xBWVdP+To78ihu+2qmCN2cTKbenF23DfPAO2DfSQ09iNxVGBRdcZOOLpiZUDc+JYsHxagiLwKyDAS3+M9X8fRrCYhGNBSacBegwejz/nzMWfk0ega9PqEn8/PEQFbsMSZ1+B5VolAiHOZw2GTnDGnc95u4HjKKhAS0tLfKjk3GdRifpLVaUIVDYEFIib6m2et3BomSOaGqkwxuEyEguKmnXh8McGeD08h5FNJSPwCoqX7fefjQaOm3DC2RH1tCTcaJMRjrx6HQycfxQex8ejhkLeY2qWQmvMXTUOjaTqE0ovKxpRX8luo0Kksu1jwQooGPTAjpse2DjFDiaqHKnxnaA2+ZboNsao5Wdxaf9IGOUchBXcBC1RzgiY161DQhQ0weo1m7D9wNlybp02RxGgCFAEKAIUAYoARYAicN3nIWzsh+P4iTMUDIpAiRFgERctzNbRn5aY5jPSBLtPf5oSFbThNBKULDNT5opHBdVYtlrNmjVDbGwsEhISZBf4CXd5ad8QeP8unrwmgerTCBGmXxPNrG3QvKZ6DhItp3IkuH3wE/g+fIHgr7FIzuBATdcEFs3boZWlISTpu5w1BdeZiHrjhzsPXyMi5gfYyjqo2bAl2retD40yXBBJerwardsvxatUxgUmBy0nueHeTnvIp0biASG9nn6MhZyWGVp27kpcdeZnhZmJiCAfeN17iagfHGgb10WL9h1gaZRfHdlIAMn49NgPT159xJeYDKgSHBu361SIZ5CXvMp1/927d6hXrx769u2L/fv3Vy7lf0Ft7ezsEBAQgLS0NCiQWEE/MyU8XIEWHZfjPd/6lIXqrefD7fJ/aKkrYZ3JjcbF+f0xZMNdvoUvo69Kzcm4FbQdLauV1neDizc7BqLxVAnXlAe/YNdIzVKDJ857ASy7OyOcT+bLodMcT9xYZyPhmrLUmqKCioFAfHw8NDU10b59e7i7uxdDAq1SEALLli3D1q1bcf36dTDvoQqdshLw4ckDBLz8hMiYJGSyFaCqoQcz88Zo1bIhtBUL++4pu+9/ZsIH+Ny8hzdffkC1ej20s+2EutoS784CAE6LfgVvUv9tRBIUNI3QoFl7WDc3LsT4LqfgsutjzpZkXWcmhsDf9xFefYpE/I90yKnowKx+c1i3syTx9Ar7nGRJLr97TZs2xbNnzxATE1N+jVbAlqqRzSdnzpyDGicNDsTVaFknp4sxSE5nYcKgDmXdFJVPEahyCCSnpuPAOV/UJd5zJnQpvfF0lQOygnX42N0EPCPW88N6t4KWWnHWRSpYh6g6FIFSQmDv6btQVuBhYd/KHVvt3qNn2Lr/LIYNH4rev/UsJXSoGNkIMAY3GrKzfpG7hZ+Z/iIdrizdCA37grfvg1Gndl3o6elVFrUrjZ4sRT00s+1PjqKqzIamWQv0IkfxkhxxC9kBv5OjIiSWkiHaOjiibaGVkUN1iy5wJEfJkzJqWXXhHyWXRSVQBH4dBNLCwhEltjKVQ3OHobCSJOGYrhI3aL8tnYtexwJwIYLEryQpOfwJAkPT0bKeDJMxbhyeXD6G425eCAgKEWxA0DGGRStb9Bs2HHaNij44zogJwKkTvojhu4JjQbuRPYZ1qS21mYGb9BJnDnvjK78/LKjWscNo+/pgZ4Xi6kF3PH8eiGTxdiAevjy7iO1bA8EhFszdR/VHPVUWYp+74/itz/zITSDWxxbdxqJrLvfDBIBi9vH7MzecvB3Ml8/imKDH2H6oKx+FOydccfD8bbwO+Q6oGZGNAr0w+o8xaGcm20Xd/9m7C/gmzj4O4L8kdeotBYoUd3cKw53xAhuuG0yQwWCDsbENBhs2ZIpsA4brkOEMd3ctDkUKhVKjmrbvPdcmbaEtlSSN/I5PSHL33CPfa67p/e95nufXdmDJ0vU4eOoq/ANDEB1vBSe3/ChRvhZademDzo2KZ+Nivnxo+R8FjENA5YwSNVtIj5xWR3+//62kHnBN35Ee2ayirWc5tO4uPbK5f/Ju+mtjchnpv7JyKoK6LaVH+km4xQQEAp89k+ZijEXnd/8Hq7CHJlBjVpECFKAABShAAQqYl0D9WpVRT7oxFQ5Zv2ZiXhJsjS4EGIjThaIe8jh85Dhmz12IUSNHoGmTxnoogVlSgAIUoIAxCli7OsNRGgI2NF5EqNQ4uW4eDn34ExoWSD2smsq5IT6dNA7VpeCbvCg9UC7P6yNOB11chhEfjMaykw8hx8xSNHrff+swd9oktB48E39M6YZCWegpEfNwN6Z8/hUuJfW0rT6gMLpIgbiU/Qljnx/GT6OG49hLaX5MaaC00p0XoYcUiLONvYbF332BFf4vU9QmDjd2zsTwnVJKm0ZY9r/2UiBOhaeH/sbwYSl75XV/LRCX/TbGI2D/fCn/jfKwngqbZljUIA/mjhiIX/fekeeyTKzgaRzZuxl/z12Eif9swsgmKW+QCceBXz5Ery9X44FskaJJ0svDe7dg8ZwZmNN/DlbM7olC1qbRGyV1K/iOAhSgAAUMLTBx0lT4+V3Hzq2rwD/aDa3P8ihAAQpQgAIUMAeB76fPxYZte7VNObVrpTTcPv8m14LwhUEF+J3eoNyZL6xihXLo27cHihUrmvmdmJICFKAABUxewKl6Q9T1moV1j0RPtwQEnp+NFuV3oFnHrugkDYXQokldFHWXgnJKNzR+bzQaZ9DisEt/4d1Ww7D/cZSUU9pLfMxjbP2lL9rcC8bGFR+jWBaCcWnnaNi1Om1j/E3M6N1L6qn3DGIg39RLAmKCTmDSJ1PQ8sx0VE5yerR9LPqOloJw2jn9Uu8lv4sPw6H5AzG4SEms/bYOh95Mg4irKEABClAgtUDVKpWRz8sDylfmZ06diu8oQAEKUIACFKAABdIT8H/0BBeuXE9vM9dTwKACr986b9DiWVh6AhUrlEWfXt1QrGjR9JJwPQUoQAEKmKGAyrU1Pv+0MaRRGZMWKQAUfBPbFk7CR50bokQ+dxSr2hT9RkzBPwdvI0qT7JXnhJjLmDJobHIQTqFC4Vrv4ddVu3D06B4snTEQ1fLaSP3UpCUhFpc2jMKIGWcSh4B8JS+dv7UqiEbdeqNf+2pI7sSnhHfVDhgwYAAGvN8WxfOo3lisrtuYoL6H85eC4FW5G6Yu3oqDh3dh3tftkd9G83UpAcHXt2Db6YjEusU/x/o/N+B+UhDOJq8vRv2+GvukuZlOHtuLFT8PQhWPpJ6MCeHY8dt07Hn+eojvjQ1lAgpQgAIUsDiB9/r1wYRxX+LtDt3R79PvLa79bDAFKEABClCAAhTIbQE/adqoX+cuxukz53K7KizfDATYI84MDiKbQIE3Cdjkr4P+n3+BZ/I8TUrkr12cQ9y8CY3bKZBrAtbw/fxPzL7XDYPnHkH4K3GbeHU47p7fKz8W/zIWBau8g6+m/4hBzYqkmp/t8bZZ+Ovok6SecArkrzkKG3dNRFXnxKBS3bpN0Kp+ETRvMRbnw9RSMC4c23+dil0frUQrT03gST8ICqvy+HjaXHTbOxq7tp3DS3kYTiVKNfsMc6Y3TNFj7JXGv1IdfbTRqdh7WLn7DzRKmpevgW91KO754sOl1+RecgnS/HZ3bkvDgfrmQUK8P27eDdUae9foiS8GdoFnUgyxZp2GqCZZvjfrCrwKFUZhn4qwEdYeKQfwfKVRfEsBClCAAhRIIeDu7gZXZ8cUa/iSAhSgAAUoQAEKUCAzAj6FvFGtUrnMJE0zzd0HAVi5bgs88nujRvWqaabhSgpkVoCBuMxKMR0FTFjAxrspRv7Q1IRbwKpTwMIEVIXQZ9ZOVGs7F1On/4kNB68j/NUJ3gSJ1JPt4blVGNb2GC7/sR2/vVcWiTGgcOxcuwfPk/ZRqPKj95iR2iCcRtOzzlCM6roMfedfloNM0YE7sXnXC7Tq7qFJYsTP+mijFap17AvfpCBcYuNdULeO5JoUiEOCGhHhYthQN2lseTe4u1rLvQoTpHDc3R0jUbveLnRoLw0h2rwZGtQqiTK9fsfRXkbMyKpRgAIUoIBRCyxf8hdUoQ+Muo6sHAUoQAEKUIACFDBGga8/+xDikd2lZpVy+H3aOHgXK53dLLgfBbQC+r3lXVsMX2RVYMPGbejW430cOnw0q7syPQUoQAEKmIWAAyq2+wxL9l7Bw9vHsfqPiRjSszUq+7jBSjtsZWJD42PuYd6IIVhxQ+qpJS0J6hs4ezFQO8+Z0q463nrLLTFxqv8dpfVVYaPJLz4cl85cRWyqNMb5Rj9tVKBQ8eJJwUxNu5Vwd3NKHMJTXpUAdWySkBQwbfu/WrDX+CVE4c7JDfh57EC08y0NL48iqNOqL76btQm3guM0GfKZAhSgAAUo8EaBuX/Mw8gvv0Os5nfOG/dgAgpQgAIUoAAFKEABXQp4uDmjepXyyJ/fS5fZMi8LFWAgzkgPfEJCAuLjxZBcCUZaQ1aLAhSgAAUMI6CEc5Fa6PLRGPy+bBvO332C+5f+w6+jOsDHIfnXeGzwQSxdfD5xjre4YASFJAblRB1tXPLC00ETLUpda8d8nnBWarYlIOT582z95pF+bb22JMTHQR518rUtOlihjzYqrODo7JRqiE9RU6WVClqiVFVXofrgGZjSrRJsNYTa7QmIDvXHif+WYPwnHVCxVG2MXHgeyUdFm5AvKEABClCAAq8JXPPzw6lTZ5HW79fXEnMFBShAAQpQgAIUoAAFKGDUAhya0kgPT6cObdG2bRuo1a9d2TPSGrNaFKAABSiQY4G4u9j4x2qcvPsADx8+xLOEupj890hUSBXlsUaB8i0w9MemaFy0K+p9sg4v5SCYGtfPnsVL1IITbGFjnRyki1OrEStfyXv9d0pCTGyqHnDWNtmZv0zcPPJ6j6+E6OikcnMsk0YG+mijCqqk+d1SF6hI0SPulS02pTB02UHU7zIPsxesxOa9Z/E0Iu6VYGYCop6dwU8fdYaj93F819I9dSZ8RwEKUIACFHhF4PvxY2GtisOCv5fAzQ7o2anlKyn4lgIUoAAFKEABClBAnwIvI6IQ9DwCzl42cHLinL36tLaEvJOv0llCa9lGClCAAhSggBELJKgfYuMvE/HDtN/w9/J12PzPYuy8FJ1OjVUoUrkcPK01wbUExLwMQ4Q0L5zCyhuFvR20+6mD7+BuwOuBMkj95x7cuocw7fxzSngXLYqs36UjlR0VpS1P8yI2NDRF3pq1unnWVxsVGs6sVFPpgurvfI55m0/iQcAdHNy4AN+P7I+29cvCNUVAND72Ntb8vR0RWcmbaSlAAQpQwCIFnJyc4ObmihWr1uHfHQcs0oCNpgAFKEABClCAArkpcOjEeXTpNwwbN23NzWqwbDMRYCDOTA4km0EBClCAAqYvoLCtiHo182mHRkyIvYI/JizEg9g0xn1EOI5s3IuH2m1KOHnlh7NKiiSpCqJOzSLauc7iY09jw+qr2jnjNFIJ6lv4Z/3pxOEspZUKqxLwbVhEW74mXVrPSmsbaGOAUv+v8GfPpKBbypTxeH71Oh5r65dyW9JrKeqV8otI4pDMaaRLa5UB2phWsSnXxQScxtolf2LmpLH4bPCHmLTmJpROhVG//fv4Ztp8bDl0FbeOTUIVe003u3gEP/RHsDbwmTI3vqYABShAAQq8LvDjlPEYM7Tf6xu4hgIUoAAFKEABClBArwL58rqhyVt1UbhwIb2Ww8wtQyDrN71bhkuut/LyFT8cP3kedWrXQdGiPrleH2OswIszq/Dbv1e0F5A1dVRIF3YVSml4MStr2Nk7wtUjH4qVr4v6NQtDGtVF50vU3f8wa9FhhIop/aRLykUavI/3W2TuQramMs9OLsfszX6JbVFYSz0rRqJD5cTaxoefxoKfN8FfvpitgGO5DvisezXtBXZNHrp8jgs+gfm/bcVDdVoX/99UkhWqvTMKHavoQ/tNZXM7BUxdwAXterWB1+qbCJA/f/G4tmkE2r1zH99+OQCt6pSAkzIaj/2OYO2fkzFh1jFoP6ZKJ9Rv1TDpPGcN367/Q6nfT+NalBQdS4jClh8H4ue66zG8cVKgL/4Ftk8chl8PByQNo6iAd92+6FwruSddRpo2+fLDw1b6GhGZOOvZoxNrseHqAAyomEfeLeLeJnzz4xZEZHAaUUrDYFppI3EJiAgLe2VIx4xqoP82ZlS62KZ+cQA/DByFc9JQlFIYE847IlG99gK09kke3lMptS95fh8F8njmSwyWvilzbqcABShAAYsWuHT5CmKiw1GvdlXYvHxs0RZsPAUoQAEKUIACFMgNgaoVSqNytRqAA6eXyA1/cyuTgTgjPaIXL13BwkXLkDevFwNx6Ryj0PMbMHHCSiReAk4nkWa1FNzyrvwuxs/6Bf3re6XqgaFJkt3nqLt78MsPP8JfvhpuhSZfNEPfLAXipF4jp/7BDxPWJ87TpLDHRyU+0Qbi1KHnsXDqDzgcnniht0RHHwzVcyAu9sVpzJ/yA07IF5ezKmODD4oPzeVA3Euc3/Azvl+sxrgVY1Ep1fxaWW0P01PAsAL5Ww3HyNab8cXm24k92KQg2oXNk9FFeiiUVlAp4hAn9ahKHd9SwLPih/ikWyHt+c25xsf4uvcavDf/PEQHrNgXRzGqVWWsatYclQuqcP/0Huw991Cawy2xfSrH6hg5dQiKWWVubEalUxXULOuC3ccC5brEhR7EJ03qYVPrWnCNuosD/x3AXamLnLg5IiE5EpUK09rDA24qJe7ItyHE4fya0eiuXg/FI6DH3D/QuZimJ1mq3bRv9N1GbUHpvHAo0xNDOvyJj1dck45VAkJvL0en6qfQqJkvinlYISzgGg7uOQp/EQwVizIvWnZujsyFOhN34f8UoAAFKGCZAvPm/w0/v+vYuXWVZQKw1RSgAAUoQAEKUCCHAoNGfY9FKzdqc3l5/4R8jUK7gi8oYEABBuIMiJ2Vonzr1YaHpxdKliidld2YNj2BhFg8Or8Sg9rdRtjm7RjRwC29lFxv0gLxCDi9HBO+nIAFu2/ArvRwjDXp9rDyFimgKoah8/7Arf/1xR8nHqcaTjIhXg31ayhSL6tC7TBz8ThUzZMiiKb0RM+fFuDOo+6YsO2G3HMuPuYpTmxbjhOv5GHlXBkj56/EMF/nV7ak/1ZhVQb9BrfBvJNL8EweajEBUc8u4t+lFxN3km6AKNd2KCr5L8LqCyFpZmRXrDZq+DjhzLVgebs65CrWL7wqD5FZ/b50m0Ux+zT3067Ucxu15aT3QpkPfX/6Gceu9cGCsyIgKRkE+WHHGr/X91DYoHqPaRjTtaA2WPp6Iq6hAAUoQAEKJAq0atkcdWpVxbNnz2EfEwJPdxfSUIACFKAABShAAQpkQSAuLh6x6tevomQhCyalgM4EtANC6SxHZqQTgSKFC6LhW77w8sqrk/zMPxMFrOzEhOZu8qTmri5OsLdRSXc5pG65OuQkJg2dhsvRqfuSpE5lZO+UNnB2Ee1KfDg62eq9ggqlLZxck8vUlO3qaCsNvqZZFFDZOmrrpUnj5uYOh+RR2TSJDfKcEH0EX3cfgjm7bsCUDrFBcFiISQnY5GuO33fvw+JxvVDFO89r57LExihg61oS7T6aiT0n1qFPFcfX2qiUerl98+9+bPplKJqUzYtXO7spVHlQvtlQLN29GxM7l8xigEiJsr1+xsppvVDazTrVucHauQQ6f7EM21YMQBEb69fqpVmhsKmNkZP6o0Kq/aWhHOOe4emTWE2yDJ/128YMi5Y32uRrJZ1ztuGnQS1QyFH6vfPaLgrYeVZC3+/WYvPffeD96kF4LT1XUIACFKAABYA2rVuh/3u90KP3BxgyZhpJKEABClCAAhSgAAUMLHD6wjUM/2oS9uw5YOCSWZw5CrBHnDkeVYtskxLV3luFQ3PaIDkGpMbTq7sx97svMHnNBUTJsbcEPL+0EuuOfo0KjRPnMTJ2Lpv8vbH1QW+DVtPWpz92Pez/WplPV70Pnx4LkywVqNxrCY7N75jC/LVdDL7i1QH7DF4BFkgBHQkoHUuj13dL0evbUNw6exynL99BQFA41FJw3tElL3xKVUKtmuXg/oahVxVWBdB66K/SYwrunDmGs1dv41FQLBw9C6FSvUaoVtQ5nQCcEmUGrUPMoAwapHRDsxFLcHnAdziw6zD8Hr2EY4HSqNekEUq6J37FmHYyEOlfPlShdKcZOP3WB9gr7X/9cThsXL1Rtmp9+FZzlQt+Yx2kVDlpY4Wh/yJmaAZtlDZ5dVuACOmR3mLtXgOfzv4PQ6bex6mjJ3H1TgBCXsbAKo8HfMpUg2+9itJ8eq+H6NLLj+spQAEKUIACGgExUoqnU/JfOJr1fKYABShAAQpQgAIUyFigTo3KiI7O1KRGaWb0LCgEJ06fR606tdPczpUUyIoAA3FZ0TJg2uiYGIS/jIZKZQdr6/R7ExiwSiZYlBW8yrXCt0sK4eX9JpiWNI9RgvoBLpx+BDQuJbUpHo+lniTrjicN/6bIgxpv94Zv0dR/7D6/sBGr9t+TZzGCNLxYhVbvo2mp1GlSAcUFYv/SuVi4YT+u+IdIF5YLo+pbHTBgYE9UzZe14xn/8grWLt6DAHkOOmkIuuJN0a9debw+c1I8nlzYhMXLN+HQ6RvShfZwKOxcUaR0FTRu1xu9O1WH6+s7paq27t/E46lkN3/hOuw/cwPPwgHnvIVRxbc1evTridpF7NIt8vm1HViydD0OnroK/8AQRMdbwcktP0qUr4VWXfqgc6PiKQKAcbi+Zyl2XLiA66HR2jyjQy5i9ZzfsF9lhZKNeqNN5eRh97KWvzZLvqCA4QVUzihRs4X0yGnRDihWvan8yGlOr+5vJfWAa/qO9Hh1Qybf23qWQ+vu0iOT6dNPpr82pl9m8hYrpyKo21J6JK/iKwpQgAIUoECOBCZPHAtV6IMc5cGdKUABClCAAhSggCUKDOjVCeKR3aWxb3VsWf0n7KTrkVwokFMBBuJyKqin/ddv2ILZcxdi1MgRaNqksZ5KsYxsFTal4FurEBRJgTjR6pAXL5IaH487O+Zg+Ng98rxLCpU3Rhfr8kogTpp3bP98DB+2EfJAaQpHDF7WLd1AXHTwUYxu2Qe/7b0rz8mUWNApHNq9AfPnzMOEpavwWXPvdHqgJFUrxZM65Bh++WI4DofHSWsVKNFxPnq+EohLUN/Hsi/ex4hZ+/AsJj7F3sDJI3uwdtHvmNlgOP5eORGNvLMWCEyVWVbexAdi04T38eGUbXgSnbJOx7B3+z+YNXMmBk5biukfVE0RUBMFhOPALx+i15er8SAq5X6JhR/euwWL58zAnP5zsGJ2TxSyFr1M1DizchqG/3U51XxaUQHScHsjdkvbrdH9l7ZoJQXilNnKP7Fs/k8BClCAAhSgAAUoQAFDCIz/fiJu3bqN5Ytm4Q0zphqiOiyDAhSgAAUoQAEKWJyArTTVhrWjE2DPb2MWd/D10GDOEacHVF1k6ZU3L6pUqQhX18ShuXSRp8XmER8Cf/9gpJwVzt7BQU8ccTg+/yv8vCdlEE5TVAIinxzCmC5d8dfZl5qVOX+OD8CSQR3R/+c9rwXhtJknxOLOwRno020q/BLH6NRu0s+LUGwf2w3dJ2x5JQinKS0BscGXMWvw2xi28Eaq4Nmj7WPRd3TaQTjN3ogPw6H5AzF4yonE4Kh2w5tf6Dv/N9eAKShAAQpQgAIUoAAFKJCxQExMrDSUUvJIDxmn5lYKUIACFKAABShAAQpQwJgFGIgz0qPTtEkDTP/xB1SvVtVIa2gq1YrE+ZXfYsa2e8mBOKU7ylQspKcGJCAuLh7WHjUwdOZq7D96GJsXj0frUq5SX7bEJVbqMTft60UIiEsZGsx+dR5unYQvF55DbFJ21m7V8Mn0Vdh/7Bh2r/0FPWvkT+p9Fw//IzPw49K7qQJf2S85/T1DTvyKz2YeQERSnaxcKmHQ9NU4cPQg1vzyMSq5J/bKi499iIVffY3/nqgTM4t/jvV/bsD9pB50Nnl9Mer31dgnzbl08therPh5EKp4JPXoSwjHjt+mY89z0WtOheIN2qN///+hrEtyR19rtyro0n8ABgzoj4YVHaHMdv7pt5VbKEABClCAAhSgAAUooGuBid9/h43rlmLc+Mn4cfZSXWfP/ChAAQpQgAIUoAAF3iDw5NkLHDp6Cg8ePHxDSm6mwJsFkq9YvzktU1DAiAUScO/g7xj0wdrEgFeCGpGhQfC/cQ4nL/gjZSewPEXao1Pj5LnCdN0opXUpjFmxDeNa5E3Muq4vmvoWQrt6g7E3UNzVKg2HuXcFdtz9AP1KZDDPXGYqJvWGW/3HxqT546SBK1WFMXzBVkzpqAm+1YFvNQfcrz4Yh4JjoVBE4di2nXj+/kfIq7f54sKx+Y+V8IsUQ2lKi9JL6q33L35/r1hiQFDyqOoVC9/efyNQCkZGP5GGmlx9Fy2HloQi3h8374YmBU0V8K7RE18M7ALPpLrWrNMQ1TyVeG/WFXgVKozCPhVhEyYF8TxsULvvZNTqdggDDuzFtZAwuWgHryb4ZvZMVLZNDIMmqM9lO385Q/5HAQpQgAIUoAAFKEABAwocOXoCBfN7GrBEFkUBClCAAhSgAAUoIATOXbqOcdP/wpDB0hQ6PbsShQI5EmAgLkd83Nl4BOLx9PJWLLiccY2U1oXxweRvUMdZX51BFchX+z0MaJL6j2X7Et3xYYefsH/eJbk3Wnz0eRw7FiYF4jwyrvAbtsZHHMe+EwHa3n5OxTuhZ5t8ST3gEne28+mKef9VRIxbERQv6o08ev7UJ0Sfw+4D/tped/b526JvV58UdVJK89z1Rusia7DkjhQwS4jEyT0HEC4F4pwVbnB3tZaDqQlSq+7uGIna9XahQ/vWaNG8GRrUKokyvX7H0V5vgElns0LP+adTLFdTgAIUoAAFKEABClAgWwJrVv4N68in2dqXO1GAAhSgAAUoQAEKZF+ghE9B9O/1LipVLJ/9TLgnBZIE9BWNIHAOBY4cO4VJU2bi8pWrOcyJuycKKGDrXhWfSr3HpnRPGRTStY8ShStXhZeVZiBKTf52qFGjtDSAYtKSEIUHdx5qg1Wa1Vl9jrx3A3dCY5N2U8CjdAWUSOr9pc1L6YwyteqiUkn9B+FEmbEvbuBmQIS2eKfCReAeGYLg4GDtIySyAIr5aObpS0DgtUu4Gy2NY6kqhLb/qwV7DZ/kdOfkBvw8diDa+ZaGl0cR1GnVF9/N2oRbwUk97rQlZeKFvvPPRBWYhAIUoAAFKEABClCAAm8S2LV7L5at/AceHu7wdHN5U3KdbNd8BddJZsyEAhSgAAUoQAEK5LLA02dBuHlHGn0r6ZGQkLVpgkoWK4QP+nVF5coVc7klLN4cBPTcN8YciHKnDffv+2Pv3gOoWaMGKpQvlzuVMKlSFbDz8EHx/Hmk3lTSP6USVta2yOPsCq8CRVGpdnN06dEJFfMlzS+WbttEP6xXl8R5315f/2o68V4JR2fn5ICbNokSru6uEPE5zVxukS/D0yhLu0OmXqiDQxAen1wz2zx58KYWZirjHCRSBwUhRC3mbUtcnh6fgPKeEzRv03yOfBaA5/KceSpUHzwDU47fxahVFyFic8mLNIxlqD9O/LdEeizF1O+qYci0BZj0XhVkfoBPfeefXFu+ogAFKEABClCAAhSgQHYFNm/ZCj+/6+j6ztvZzSLL+6mk23TjUvxtkeUMuAMFKJCuQFx84t/IVkqGvNNFMsENqqS7rePikq+BmGAzWGUK6FxAfCaspWuzub18M+k3/L1ig7YaMY/OaF/zBQUMLcBAnKHFM1lem1bNUF0Kwrm65GzowkwWZwbJlKjUZTYOzWmThaDM681OSIhHvBwQSr0tJjom9Yp030nBosgouaebtvdbUtoE6Yt3yriStRQozOmiUFmlGPJRCvLFxKQqI6f5Z2d/EQRVZPFvi7ioSMQkfW9V2JTC0GUHUb/LPMxesBKb957F04i4V9qVgKhnZ/DTR53h6H0c37V0z3RV9Z1/pivChBSgAAUoQAEKUIACFEhHoG+fXtLfFaE4feYcnBLCUaVCqXRS6m61lUqBuDjpe7d0t7giq1/odVcN5kQBsxRQJwVqbF4bPccsm2sxjRLnTbGo1dkYscdilNhQSxMQ3yPEjT2aQLWltZ/tpUB6Arkfmk6vZha+3sXFGT5FCiOP1MOJiwEFpKEQo6NeLS8eISGZ7b0Wh4C7dxD5ahaIw8MHAVBrInHSH7aeBfLJc6G9ljQLK2zy54OnleZjnICwxw/wRFtIckYxUYnBweQ1+ntl4+UFD+vkMKR3wx9w5cEjPHqU/uPBjflo4qhph1Q3pQuqv/M55m0+iQcBd3Bw4wJ8P7I/2tYvC1fr5HTxsbex5u/tSB4IM5Pt0nf+mawGk1GAAhSgAAUoQAEKUCAtgerVqqJpk4b4csx4TPptUVpJdL7OOWl8+LDIaJ3nzQwpYOkCYeGJFxqctPMwWLqIebTfxT7x+kTYS543zeOIshW6EAiNSPw8aL5X6CLP3Mpj/9Gz6NhrENZv2JxbVWC5ZiTAHnFmdDDZlOwIKGBjk+JjkBCBZ4EhUo825+SeZvEhuHr1USbnc0uA/5EtOBDQD2/nTzFIZHwA9uy5LIXjEheFqgjKV3JLLiM7VZf2sS1QERUL5sHxG6FyDs8vH8TJADWKFkpRdtwdTG5TH5NOxaKAd0EULdcFv6wcgyp2Wey2lsk6Kh3Lo2IxJ+w5H5RYp+tX8NghH8q5JQfQ4oL34odRKxHqVRCFChVG8YpvoU1+d8QEnMamnadxz/8BHjx4DM8mo/Fll5Ko3/59+SEyDDozFU0bfI3zkUIzHsEP/REs9WJ0SLoTLdXdu9JdOCkHiNBF/nKj+B8FKEABClCAAhSgAAUMINCrR2e42mru5tNvgV4uVrj+WI0XwS/h7GCn38KYOwUsTCAoJPH20XzS54yL+Qh4uSTehBwU8tJ8GsWWUCCHAuJ7hFi8XHP/fNepXVOUKFo42y0SwwpHRcUgjr1es23IHZMFcv8TkVwXvkohEBj4HP4PnyBf/oLS8JSGmZw7RfEW9FIFr/ye8txtiR3J1Dj0zzLcGTAaJeRAVSyurR+Pn7bff2VoxPSJYp5vxtdDF6LCkg9QTM4jBheXfYOfdj7U5uFYpAVa1HBIP5NMblHY1kCHtqXx9y+n5IBT3Mt9mDpmDerP7wFvaxFoi8f9Hb9h0dEniImOx73rz2FVehAKytsyWUgWkylsKqJ927KYdf6IHHiMfrIO47/pgkq/dEBeeRiOCBz4dRKmzt+FSHFNQWGNxiN3o+1bJRH74gB+GDgK56ShKKUNcN4Rieq1F6C1T/IscGKI6eS5VRXI45kPzklBOChsYJOix1xMeBgiUkTi1DnNP4sWGSXP6gSxGeXFbRSgAAX0IcDzlD5UmScFKJAZAZ5/IF30iYYY2v7DD/rBKuxhZthynKZA0gWzwKBw+HhzioQcgzIDCqQQCAwKk9/lN4IL0ymqxZc5FCjglngTtDhvcqEABRIFNOe7AkZw40GbZtKN/9Iju0vT+jXQuEljwCHzU+JktyzuZ/4CDMQZ6THevfcAZs9diFEjR0hDkjQ20lpmrloqaVBgtVqducS5kMqjZnWUtl2FC1Ei+JOA+/vHolGdA2hWKz/Cbh3Ffwf8EJGgkOc9Sw4ApVNRachJaWYFXFg7CHXOL0PzhqWAhyewddclhKg1k6A5ofXggaiukyEp7NFi2GA0WjEIe59KXb8TYnF6aT/UOL0QzX2LQfH8AnZuO4EAKQgnFqV1cfQa1hWeySNHptOQnKy2RoOBg9FswWn890TUKQoH5nRF1QNN0KxOYUTdPYpte68mBuGkYmw8WuGTIXUhvr5al+mJIR3+xMcrrkkhxASE3l6OTtVPoVEzXxTzsEJYwDUc3HMU/vKxknZQ5kXLzs2hCWkqVO7wcE8O2kUG/INhXeNQ0e4J3Fr/hhnv5yz/nKi8uq/mM2FlxdPwqza58V6cp8QijouNTfLPUG7UhWVSwFgEeJ7S/5FIee7Rf2ksgQKmIyDOP5b+HenLMd/Az+86dm5dBUN9W/TJm3hB+bE0QggXClBAtwLic2Ul/clR0N1Qn2jd1p+5pS3gKU2x4WCrQIB0fMVNJKlG6El7F66lgNkLaL5HFPVK/F5h9g1mAymQSQF+A8gklKGTlSxZHO3bt0HBggUNXbTOy7O3t5fu6Iwy2i8lecp1x8ft/8TQNdcThzGUglkPL2zD4guJFEprb7w7pDkuzlkKv6SAVnpICmUBdB3SDCf/Wo7bN/ZjhfRItUi9vyp2+BE/DquU42EpNfnaFe+LuXMv4H/9foNfmBRMTFAj4MpOLL2iSZH0rHRGi8/m4PMWbq9s0P1buyLd8evvR9G231zcFr3bJNNHl/7Dkkupy1LaFsfgX39GJ5+kX87KfOj70884dq0PFpwNlEJxCYgK8sOONX6pdxTvpN5v1XtMw5iuBZMtVT7wre0D1aGnicOAxksT3G9ehNPS5Yv63vcQp2yWs/xfr0W210RGJs4kaGfHYX+yjajDHTXHQRwXBwdNaFeHBTArCpigAM9T+j9oKc89+i+NJVDAdATE3w7ibwhLXkoULy6N9GAl3wxoKAdPJxWcpfmOHj8NQUxsnFS+Xu/eM1SzWA4Fcl0gKDQC4dIcYsW9rKBS6meKiFxvpIVWQATeikk3MVx+EIOAZ6EokJcjWlnojwKbnSQQHavG48BQ+fuEe57kKWoIRAEKSP1JiGCcAjWrV8GwTz5GmdKljLOCWaiVs7OzHIQLCTHSOyuVBfHh3MWY0LVa8hCHon0KFTxKtMSEFXvwR7/y0Ix++Kaml2j9K3ZumoTWpd2R8ju20sYb7Yb9jY3LP0ZRnQ4NqULpTjOwa/ss9PH1wWtZK5RwLuSLEbO2YdWkFtLsd4ZYVCjT+Rfs3jITXWoVSqNOVshX7n+Ytn4npvcokepEZJOvFebs2oafBrVAIUeV1MPw1UUBO89K6PvdWmz+uw+85eEuNWms0Wz4t+hbPV8qe0hhuaCnT+TgXM7y15ST8+fnz5/LmTg5OeU8M+aQYwHNcdAclxxnyAwoYAYCms+D5vNhBk0yuiaI70hi0VgbXQVZIQrkgoDoUfDs2TNY+rln6CeD8NvPk9Gv/2B8+u1PBjsSlaQh4dVx8bjlH2iwMlkQBcxdwO92gNzEKj625t5Ui2xflaSpNK7dfmKR7WejKZBS4Oa9QMRJ3yMqF7Uxix6it+89wpKVG3D58tWUzeRrCmRLgD3issXGnbIiUKpUKRw7dgxXrlyBr69vVnbNMK3P+ysQLT10sVi718HXq05h4I0j2HPkMp5G2KJgmdpo2rg8nOVw9WhcjhydZlGujafgfuyUV7Z9gW1XPsD5vbtwwi8QSlcf1G7SDJW807qzV4kyg9YhZtArWSS9tfHuj0Nh/dPeqF2rRCHfj7H48ABM9zuGgyeu4XHQSygdPFC0XE3Ur1sGLqkCVtods/TCq9vfiJQemVtUKNp4GFafGIiHl47gyKlrePQiClaOeVGyki/eql0MDuncCmDtXgOfzv4PQ6bex6mjJ3H1TgBCXsbAKo8HfMpUg2+9ivCQhn9Ia7Et3B7zj1/Gp/t24diVR4iyckHh0lXRoEE1aPqe5ST/tMrMzrqrVxN/iZcuXTo7u3MfHQuI85RYxHHhMdExLrMzWQHNeapMmTIm2wZjr3jKc4+x15X1o4ChBB49eoSwsDDUqFHDUEUadTkvXgTD3oA902oWt8Xha1G4cuMRyhXPb9Q2rBwFTEFAXJC+JgXixLCUlRmIM4VDluU6litkC3ubl7h57wl8qxWHrQ0vtWYZkTuYhYC4merKzUdyW2oW11yBM+2m3bjjjzkLVmCInSMqVChn2o1h7XNdgL8dcv0QmH8FypYtKzfywoULOg3E6V5OCY9SDdBFeuhkkeYrq9K8q/TQSW6ZzMQKXmUa4F3pYTyLDQpWbIwu0iOri5VTEdRtKT2yuKPCykNy7/ZG++zmn8XqpJlcfB7Eovl8pJmIKw0mUK5c4hcqcVw6dOhgsHJZEAWMWUBznmIgTn9HSWOrsdZfScyZAqYjoPk8aD4fplNz/dR02+Y1UIU+0E/maeRawNUaRfNa4W5gmDS0VLA0zJprGqm4igIUyKyA390niIyKRa0SIliTzp2omc2M6YxSwFoaPqlWSTscuBKJK7ceo1q5wkZZT1aKAvoWEHPDBQaFy8Pw5ncxj5BD5fIlMWHMpyhZobK++Zi/BQjwW4CRHuTt/+3Bx4NG4MTJU0Zaw8xXq3r16nLiI0eOZH4npqSAmQuIz4NKpULlyvxlbgyHWnPXPc9TxnA0WAdjEdB8HjSfD2OplznVQ8wFnC9fPnnkALVabU5NY1sokG0BnnsS6ZYtX4mJU35CbpwbGpZLHMXj5MV72T6O3JECFIA8zOuZy/dlirfKcR5qc/6ZqF/aTp4e49xVf0TH8DudOR9rti1tAdEb7sSFu/JGzfeItFMadu25S9ewacc+7UPUMytLAS8PNG/si6I+RbKyG9NSIE0BBuLSZMn9lcHBIbh9+w7Cw8NzvzI5rEHVqlVhY2ODffv2yXPF5TA77k4BkxcICAjAtWvXUKVKFTg48A8yYzigxYoVQ968eXH48GHExMQYQ5VYBwrkqkBERASOHz+OIkWKoECBArlaF3MuXKFQoG7dunj58iXOnDljzk1l2yiQaQHxN4NYxGfDkpeTp05j5659iI/P2gUjXZiVK2iDIp4qPAgIxg2pNw8XClAgewIiCBcaHoVqxWzg5SyNTcnFbAVcHFSoV9pW7v14/MIds20nG0aB9ARE799HT0Pg42mF0t426SUz+PrZC1bhnfdGaB8GrwALpEAKAQbiUmAY08vuXTth544NaNqksTFVK1t1sbW1RePGjeHv7y9f5M5WJtyJAmYksGJF4tyGLVu2NKNWmXZTxMVwcTzEnDRbtmwx7caw9hTQgcD69esRHR0tfy50kB2zyECgVatW8tbly5dnkIqbKGAZAvfu3cOhQ4dQvnx5FCpUyDIanU4rvxj1Geb/+Qs2/LsFW3YfSSeVflaL70WdajvKvTsOnr6FiCjepKQfaeZqzgKBL8Jx9sp9aThKBd6unsecm8q2JQm0rOwIZ3slLl1/hIdPXtCFAhYjEB4ZjcPS9wWlAuhUR3x/kF6YyaJWxyEiIhKxsbFm0iI2IzcFGIjLTX0LKrtnz55yaxcsWGBBrWZTKfC6gOgGr/kc9OjR4/UEXJNrAjxP5Ro9CzZCAc15qlevXkZYO/OqUvv27ZEnTx4sWbIEUVFR5tU4toYCWRRYuHChvIfmd3IWdzer5N5Sb+QSxYti1px5WLxmq8HbJuaKa1LRHlHRsdh99BpHNjH4EWCBpiwgLtzuPHwFcVKP1g418yCPLXvDmfLxzGzdba0VeFcKQohl15Fr8vkzs/syHQVMVUBc49ot/byLIVmbVbKHucwNpzkeuw+dQvOO72H1mvWaVXymQLYFGIjLNh13zIpA69at4eXlhWXLluHJEw5vkhU7pjUvgT179uDSpUto2rQpChfmJM7GdHTFEFilSpXC5s2bcf36dWOqGutCAYMKXLhwAeJcValSJc5jaQB5EYTr3LkzgoKCwF5xBgBnEUYrIALRs2fPloe079Kli9HW09AV+/rLzzDk/c6GLlYur1kFB3mISv/HL3D4zK1cqQMLpYCpCYjhZHccvorg0Eh5SMqqRe1MrQmsbw4EykhD8vmWscXLyBhsPXAJsVJQlgsFzFVABOEOnLop9QANhk9eKzQpb3xTrwzu3w3rFv6kfWT1WLi6OKJKxbLyVCZZ3ZfpKfCqAANxr4oYyftbt+9i67b/8OjRYyOpUc6qIeaI++ijj+S5l3799decZca9KWDCAlOnTpVr/8knn5hwK8yz6mIYpiFDhsiNmzZtmnk2kq2iQCYEfvzxRznV0KFDIT4XXPQvMGjQILmQ6dOnQ61W679AlkABIxRYvHgxnj59iu7du/Nih3R87t67jytX/dC8eWM0rFM1V46YUhpjqvdbznDNo8QFv4c4fp7zHuXKgWChJiMggnC7pB6k9x4+R2EPFTrWcjKZurOiuhNoW9URJfNbISAwFNsPXpK+2zEYpztd5mQsAiIId/TcHVy+8Qhu0veEXg2cIL43GNtSVQqitW/VWPvI6t+3dapVwJyZ49GyRRNjaxrrY4ICDMQZ6UE7eeosfvp5Nq75+RlpDbNerffffx/Ozs4QF5lu3ryZ9Qy4BwVMXGDDhg3YuXMnqlatikaNGpl4a8yz+l27dkUBaSioefPm4dSpU+bZSLaKAhkIHDx4UO697uPjgw4dOmSQkpt0KVC6dGmIISqvXr2KWbNm6TJr5kUBkxAQPUK//vprqFQq8GalxEP28y+/YfDQL3L9Aq6zvQofNHWBk50Cpy/fxyFpDhhx8Y0LBSiQWkAdF4/th67g5r2nyO+qwvtNXGBrZXwXpVPXmu/0IWClUqBPQxepR7EV/B8HY/O+i4iO5Y1W+rBmnrkjoOkJd+6qvzwv4gfNXKRnDsGbO0eDpZqSAANxRnq0alSvIv0R+hFKly5lpDXMerXc3Nwwbtw4uVfcwIEDER8fn/VMuAcFTFQgJCREvrAk7r6ZMWMGe5kY6XG0s7ODpteiphevkVaV1aKAzgXEsHDi97NYRK9Qa2trnZfBDNMXmDhxIhwcHORgxL1799JPyC0UMEOBkSNH4tmzZxA9cUuWLGmGLcx6k3zr1cXb7VohLk6N2Fy+gOvppMLHLVyTesY9kIZbu4xIae44LhSgQKJAcHgkNuw6i7sPnqGQuwofShelHWx4uc2Sfz5EEHaAFIwtkc8Kj56GYO2OMwh8EW7JJGy7mQhERMXIwWVNT7iPW7jAw5FBODM5vGyGngVU30mLnst4Y/bxcZyY/lUkD3c36Y/QUnB0dH51k0m/r1KlCg4cOABxx72rqyvq1atn0u1h5SmQGQFxt5DoEXr06FF8/PHH6N27d2Z2Y5pcEhDzxIl5/MR5SgwR17x581yqCYulgGEFPv/8c3mOxHfffRfDhw83bOEsTR41wN7eHtu3b5d75Pbr108a3oUX8fijYf4Ca9euxZgxY1CsWDG5RzpvAkg85hUqlEejBrXQvFUH7Dp4Al3ebpqrPwwOtkpUKmKDO09j4f/0Ja7ffQJnRzu4ueTJ1XqxcArkpoD4O+/yzcfYcfAywl5Go6y3Nfo1coE9g3C5eViMpmzRM66yjy2CI+Jw90k0rt0OkG/IzecpDeHH4d+N5jixIpkTEOe7m/cDsXX/JQQFv5SH3x0g9Zh3y2PeQbiLV29i7qK1sLK1Q5HChTKHxVTZFFBAZWXe86oqpA9Sro4rIYqPjQ7O5gEy792iYxOki8DmN5SBuMu7YcOGEHfe7969G2+99ZZ5H0i2zuIFZs+eLc89Vq5cOezatQviQisX4xYQd+U3aNBAnqtm48aN8pBxxl1j1o4CORNYs2YNxNCshQoVkm+YETfLcDG8gBgtQARC9+/fj1GjRkEzX5/ha8ISKWAYATEcq6+vL8LCwuQgdI0aNQxTsImUYm8LDB4yHF6uDvhh9MdGUes4aQ6s/y5E4MCVSIgLCT4FPVC7clHkdXM0ivqxEhQwlMDDJy9wTJof6cnzMFhJ16HbVnOAb2kHQxXPckxM4OydKKw/GY4YaYRKNxcH1KtaDD7eHhwpx8SOo6VWV5znTly4Iw21+kL6mQWaVLBHs4oOUBnhnHC6PkY79h3HuOl/YcjgD9GrZ1ddZ8/8UgkoYWPnkmqNub1hIM6Ij6i5BuIE+b///iv3EHJycsK+fftQvXp1Iz4SrBoFsi+wfPly9OrVC+Jnfdu2bShfvnz2M+OeBjBQpusAAEAASURBVBUQvXfFBXExX43oodKkSRODls/CKGAoAfHzLeYnE72vxFyWdevWNVTRLCcNgcePH8s9ccXzlClTMHr06DRScRUFTF/g7t27qF+/Ph49eoTvv/9evmnJ9Ful2xaIQJwCcVCFPtBtxjrI7UFQLNYeD8fjF3FyboXyu6JCKW8UlQJzKvbm1YEwszBGgZjYONzyD8Sl6w8RGJQ4zGCp/FboWNuJQ7MZ4wEzsjqFRsZh06mXuOgfI9fM1dkeFUsVRKmiXrC35ZDwRna4LL46Yt7LO9Jwu2IISjG8qlgKSkPvvlvHEd5ulvPzGhYegYCQaLh7F4WbG29W1e8Hg4E4/fpKubNHXNrEq//5F3P/XIzPRnyKJo0bpp3IxNfOnz9fvttb3HUvLgLWqVPHxFvE6lMgtcDixYvlgLMYYmndunUcijU1j0m8W79+PQYMGCD3YhQ3ELRo0cIk6s1KUiCzAps2bULnzp3lYViXLFmCNm3aZHZXptOjgJ+fH9q2bYsXL15g0qRJ+PLLL3nHtB69mbXhBW7cuIFmzZrB398fn376qTyPtOFrYdwlzvjpF4iRROb8Ogl2kU+MsrLxUu+48/eiceBapDYgZ2tjhcIF3FEgrzO8PJzh5uwAG2vzHrbKKA8OK6UTgaiYWHkINtEb5HFgKB48DoK4OC0WMfdXw3IOKONto5OymInlCNx5GoMDV6Nw9WFiQE4MU+mdzwXeXq4Qw1a6uzrCQQrMifnluVDAUALifPciJAJPNee7gCCImw/EIgJwjcpJgePCttLNm6b1c7lt90FcvHJTyzjqk/ey/NmKt3ECHNy1efCFvgTMPxBnpS865pszAUfHPPD2zg8HB/Mdwk5c3I6NjZXnhGjatClEz6EOHTrkDI57U8AIBMTQYtOmTZMvnIphKJcuXcognBEcl+xUoVOnToiJiZHv0hcXxefNm4e+fftm+YtbdsrmPhTQp4C4Eeqvv/7CoEGD5J5w4mebQTh9imct7zJlysi9E9955x35e1JAQID8e8XGhhf7sibJ1MYocPjwYYjfr4GBgRg8eDDGjh1rjNXM9Tr5+z/AjRu3pBtXc70q6VZAXIyrVsxOftyV5o47JQ29dkEKzN2891R+aHa0ky4oW6mU0igDSuk7lGYtnylgnALiMxcnBdti1XGIFuMIplgcbRWoUsoONYvbooCr5fQISUHAlzoQKOZlA/F4FhaHM9J58/TtaDwICJYfmuytrZSwksY8FedOBuQ0Kmk/h4e+wPwfB2k31mrUCb4tumnf80X6AuIrhjjfqaXznSbopkltJ53i6pSyRQ3p93xhDyuT/Tlcv2UP/l6xQdMsiEAcFwrklgCHpswt+UyUa85DU6Zs/rJly+Q7YUXwQlwQFAGMPHk46XdKI742HYGHDx/KveB27twJZ2dnrFq1ir09TefwpVvTLVu2yD3jRFCuR48emDVrljQsgVu66bmBAsYsIOZAHDhwINauXQs7OzssWrSIvT2N9ICJXkMiGCd+t4i5s8SNHWXLljXS2rJaFMhYQNyAN3HiREyYMEEeFeWrr77CyJEjTfbCTsatzfnWuLg4aagyYOZPv8LDXomP+nTMeaYGyEHMIfc4WA0RmHskPT8NjkNIhBTUiJPmP5c6EhlzYNEAPDotQtxUc3LfP6jdpItO87X0zESwWIqBwEb6zy2PEvlcVdIwbFYo6mWNfM4qnrMs/QdED+0Xn+Xn4fG4GxiLh9Kwv09D4uT3anUCYqRzpxHfj6EHjaxnGR7yHL+P7a7dsXCJyug1bIb2PV+kLyDujbFWKaSArwKuDkp4uahQwE2Fonmtkd/FyuR6v6XV0o8+G58qEBfz6EyWzuPBIeHwfxYOL5+SyOvpkVYRXKczAfPvEcdAnM5+WHSfkaUE4oTciRMn8NFHH+H+/fsoUqSIfJG7Xbt2WTo56v4IMEcKZF5AXCyZM2cOxEWl8PBweY6lP/74A4ULF858Jkxp1AKXL1/GBx98ADFkXN68efHzzz/LQTneoWjUh42VSyEgbngRw09+9tlnCAoKQsWKFeVecaL3FRfjFRDHatiwYdi6dSvEUMdjxoyRe1yLICoXCpiKwJEjR/Dxxx/j0qVLcHd3l7/rt2rVylSqn2v1FIG4xk3boGB+T6ya+0Ou1YMFG6fA5v/2451+w3HhwDqULVXMOCvJWlGAAhTQs8CjgED4VGupLaV+rWrYt3GB9j1fWLZATgNxO/Ydx7jpf2HI4A/Rq2dXy8bUe+sZiNM7MeeIS5/YkgJxQiE0NFS+Q3bBgsRfmGLOuM8//xwdO3aULzylL8UtFMg9gbCwMLk3ycyZM3Hnzh25d8no0aPloQytrDj6b+4dGf2UHBkZialTp+L333+HCGpUqlRJvpu/a9eu8rHXT6nMlQI5ExA/tytWrMCMGTNw5coVaZgbK7knuuiJYmsrXeXlYvQC4vuyGML722+/RXBwMPLly4ehQ4fKgQ1PT0+jrz8raJkC4vekGCFAnHvEs1jEMPRTpkyRf4YtUyVrrRaBuOvSDUB2MUEo7uOdtZ2Z2qwFxO+FvGUbIiQ0HG2bvYV/l/5q1u1l4yhAAQqkJ/DseTC6Dvgcz4NDcMXvFs+J6UFZ6Pqnz4IQGvZS2/oSRQtlqdPH5eu3sWn3CTSS5jauU7umNh++0IcAA3H6UE2VJwNxqTi0b86eu4j9B4+jcaPGKFWqpHa9Jbw4efIkxo8fD3HnrFhEz5M+ffqgffv2qF27tjRvnoMlMLCNRiwgeieI+U3++ecfrFmzBuIit1KplIPGYp4T0auTi3kLiGDGd999h127dskNdXV1Rc+ePeWfgbp168LJSZrMlwsFclEgJCQEx44dw/r16+UgnLjZRSytW7fGuHHjwF5wuXhwclC0GFZ08uTJEMN6i6FyRVBVBDa6deuGBg0aoECBAjnInbtSIOcC4ufy9OnT2L59OxYuXCiPdiFyrVy5Mr7++msOg5sF4uMnTiLiZQhat2gIm5ePs7Ank1qCgOgN10nqDadZLrJXnIaCzxSggIUKbNl5AB37fooxn36A8V8OsVAFNlsfAvE20vUdB3d9ZM08UwkwEJeKQx9vGIhLW3Xl6vWYPXchRo0cgaZNGqedyMzXnj17Fn/++Sc2btwoBzpEc1UqlTyUVoUKFVCsWDE5KCeGZhJBEC4U0IeAGHIyKioKoufb9evXIYYnFM+aRfREEBdAP/zwQwbgNCgW9Hz16lX5PLVu3Tr5Z0Q0XQxVKc5R5cuXR8mSJeU5L3mesqAfilxoquh1Im4IePnyJW7evCmfp0SwWLOI+So7d+4s954qVaqUZjWfTVggMDAQYgQBEZB78OCBtiVFixaVvyeJeeRcXFzknrrsna3l4QsdC4i/48R3JHH+EcPLi/POhQsXEB0dLZckfvZE8F98RxKBYg7lnLUDMPyzUdJw2Nexc+sq2Ec9ydrOTG3WAuKzV7tlT5y7dE3bzu4dW2PJnMna93xBAQpQwNIEGIiztCNuuPYyEGcoawbi9C7NQFzaxE+eBuLu/cco6F0Ebm6uaSeykLUiALJt2za5h5y4u//GjRvyBO8W0nw208gExPw8Yl4l0eupYcOGaNq0KYdONbJjlBvVERchd+zYgUOHDsm9kK5duyYPXZkbdWGZFBA3rZQrV04+T7311ltyDxTOJ2aePxciCCt6aO/du1c+95w7d04OjJhna9kqUxDw8fGBGF6+Xr16ePvtt+HhwUnts3vc9h84hPCwF6hcoRQc1MEoWpg9XrNraW77vdobTtM+9orTSPCZAhSwRAEG4izxqBumzQzEGcYZYCBO79IMxKVPbGlzxKUvkXqLuOB969Yt+Q5wcReuuOtW/BxxebPA5s2bsXXrVgwcOFAeIujNezCF6G0p5lCyt7dH8eLFIXobsHcBfy7eJCCG5hI9k/z9/eWeAjxPvUksebsYQnHSpEkQw7xyKOJkl4xeiV4mItAmzlNiaFxxrrKxscloF24zUwERmBPnHXH+iYiIkINyomc3lzcLPHz4EBMnTpSDSP369XvzDkwhC4jvSOL8kz9/fmk4/VJwdHSkjA4FxBxxjZu2QcH8nlg19wcd5sysTFUgrd5wmrawV5xGgs8UoIAlCjAQZ4lHXf9tPnr6Iv5YuhFdunZBmzYt9F+gRZdg/oE4K4s+vmy8SQqIC42iR5J4cMmawJ07d+RAnOjJJYYK4kIBCuhHQARBxNCU4sElawIjR46ECMbdu3dPni80a3szNQUsW0DcPCJ6JIkHl6wJiGEVRSBO3HDTvXv3rO3M1BTQo0Db1s3hZs9h+PVIbFJZiwvNKYekTFn5lRu24+vPPkLZUsVSruZrClCAAhSgAAWyKRAaFoFrN+4g6MWLbObA3SiQLMBv9MkWRvUqLCwcDx8+lu9mNqqKsTIUoAAFKEABPQk8ffpUnvdKZP/bb78hODhYTyUxWwpQgAIUoIBpCIz+YjgG9XvHNCrLWupVQPSGGz9tboZl/DDjjwy3cyMFKEABClCAApkXaNmoNg5tX4GePbpkfiempEA6AgzEpQOT26u3bNuJ9/oPwrHjJ3K7KiyfAhSgAAUoYBABEXxLucyZMyflW76mAAUoQAEKWIzAqNFj0LJtF8TExFpMm9nQjAXE3HDp9YbT7Lnq3x24ev225i2fKUABCpi9gDzlUawaanXicOxiqHYuFNAILFi+Hu998o32kdWpjcQ0EGLUEfHMhQI5FWAgLqeCetq/cKGCaNCgHvLmzaunEpgtBShAAQpQwHgERG+4efPmpaqQCMSxV1wqEr6hAAUoQAELEXBzc4WXl6d04cdCGsxmZigg94abnrnebhNn/plhXtxIAQpQwJwEHj95BocitdC5/2dysw4eO2tOzWNbcihw7NQFLFu7RfvIYXbcnQI5EmAgLkd8+tu5vm9tjPt2NCpVrKC/QpgzBShAAQpQwEgERG+46OjoVLUJDw8He8WlIuEbClCAAhSwEIExX36BpQvnYPhnYzB22l8W0mo2Mz0B0Rvu/KVr6W1OtZ694lJx8A0FKEABClAg2wIPHgdi8469uHXrTrbz4I4U0AhYaV7wmQIUoAAFKEABCuSGQFq94TT1EIG4QYMGwdXVVbOKzxSgAAUoQAGLEbh0+SoK5ve0mPayoa8LpNcbztraCrHScGxKpQLx8QmpdhS94pbOnZJqHd9QgAIUsFSBPxauwclzl+Tm29na4vepY9KlGDdlFh4GPJW3FytSCF9/9mG6aT8c8R00Qx361q6K/j07pZk24OkzfDMpeRqGd9s3R5tmb6WZ9uzFq5g1f6V225AB3VGtUjnt+5Qvtu46iHWbd2lXTfx6GPLl9dC+T/li/rL1OHrynLxKDLX458xxKTenej1x5l+4c/+BvK5gfi+M/3JIqu0p33wyehKikm6orVW1Ij5+L+251IJehOCL8TO1u7Zv1Rgd2jTRvk/54orfLcycs1i76qO+nVG7eiXt+5Qvdh84hhXrtmlXjR05CEUK5de+V6mUsLbKfvjjst9tTJrxF4YM/hAlShTT5ssXFMiOQPZ/ErNTGvehAAUoQAEKUIACrwik1RtOk0T0ips9ezbGjEn/jyVNWj5TgAIUoAAFzE3gv21roQp7ZG7NYnuyICAuMKbsDZfHwQ5DP+gJhfRv8q/z8csPo3H+ynX8vWID4uIS50YSveJGD+uPSuVLZ6EkJqUABShgegIO9nb4qE9n3H/wGNv3HkaBNG5e2Xv4JNZu3ik3ztHBPsNA3L/b9+KyFAgSS80qFTIMxC1etRHxCYk3QogbItILxIWGvcQiKa1mKVOyaLqBOP+HAanSimBVeoG4S1dvpko7etiAdANxh46dwdJ/NstVUL0hECd6YZ86f1lOW6FMiQwDccukPMMjIuW04S8j0w3ERURGpaprYe986QbiHkmB0JReLRrXSzcQd9XvTqq0wz7smSoQN2fatxCP7C5lS/pgxOD3ULlGtexmwf0ooBXg0JRaCuN6sXf/EYz+6jucO3/BuCrG2lCAAhSgAAV0KJBRbzhNMXPnzsWLFy80b/lMAQpQgAIUMHuBfzduxuw//oaVdBe3rY212beXDUxbQPS0+PG3BdqNX0rBtVsnt+H7r4bCwd5eXp83r7t8kfHa0U34oPc72rSTf5mvfc0XFKAABcxVwNXFCbN+/BoD3+8qN7F0cR9zbSrblQsCPlLvui4d26BMmVK5UDqLNDcBBuKM9Ig+efIEZ86cQ1BQkJHWkNWiAAUoQAEK5Fwgo95wmtw5V5xGgs8UoAAFKGApAnv37cfqNck9nCyl3WxnagHRK+Ge/yOMGvIeAi7vlQNwHu5pD9ddtLC3HJDzO7YJA3p1wkapV8fV67dTZ8h3FKAABSxQQKGA1Ic46SHeZLAopO3ZS5tBptImbZ4ZJ5O36iNt9tuVFa+MG5eyXaI+GS0p02aUTmzLSto35cXtFNCngEK6wyr1YOL6LC2NvEXxsdHBaWyx7FVRUdEIDouQ7n7MAxsbG8vGYOt1JjB58mRMmzYNy5cvR+vWrXWWLzOiAAUokB0B0RuuSpUqiE4aUz6jPBwdHXH+/Hm4ublllIzbKEABCmRL4MqVK2jQoAG6desGMTclFwrktoDf9RuIi43Ai6BAOCICDWpXye0qsfxcEBBDqTX2rYW0gm9Tfp6Pb6f+jpV//Yh3327xWu3uScO0XbtxG62a1H9tG1dQgAIUMDeBLTsPoGPfTzHm0w8yHErR3NrN9uhfIN7GCXBw139BFl+CEjZ2LmatwB5xRnp47exs4ebqyiCckR4fVosCFKAABXIukJnecJpS2CtOI8FnClCAAhSwBIEypUuhRvUq+GHSDPy2YI0lNJltTENABNjSCsKlkfS1VT6FCjAI95oKV1CAAhSgAAUyL7DzwAk0ebs3Vq5am/mdmJIC6QgwEJcODFdTgAIUoAAFKKA/AdEbbtasWakK8PDwQLt27eR1b7/9NlylG1JSLtOnT+dccSlB+JoCFKAABcxeYPDA/uj9LkeyMPsDzQZSgAIUoAAFKGB0AvZSR5l8Xp7I4+BgdHVjhUxPgIE4Iz1mDx4+xpGjJxD47JmR1pDVogAFKEABCmRfYMqUKdqdRQBuwoQJOHfuHBo2bCivb9GihTwU5dixY1MF5H766SftfnxBAQpQgAIUMFeB59Jc4Y8DnqBrl05o36KBuTaT7aIABShAAQpQgAJGKyCGBl+54Ge0b9/GaOvIipmOAANxRnqsDh0+hnHfTcLFi5eMtIasFgUoQAEKUCB7AqI33MqVK+Wdv/jiCzkA98knnyBPnjypMnRycsLw4cPlgNzQoUPlbYsWLWKvuFRKfEMBClCAAuYo8P0Pk9Gj90eIjVWbY/PYJgpQgAIUoAAFKEABCliUAANxRnq4K5Qvi169uqJo0aJGWkNWiwIUoAAFKJA9ARGEGzNmDPz9/fHll1++FoB7NVcRkBs/fjzu3buHESNGYPXq1a8m4XsKUIACFKCAWQlUqlQRDerXgVKpMKt2sTEUoAAFKEABClCAAhSwRAErS2y0KbS5UsVyKF2mLNRq/uFlCseLdaQABShAgcwLDB48GFZWWf8Koukhp1azd0DmtZmSAhSgAAVMUWDA+/1gbwu0/19neHt5YP7MMabYDNaZAhSgAAUoQAEKmKyA36172HHwLHwbNkb16lVMth2suHEIsEeccRwH1oICFKAABShgMQLZCcKlxMnp/inz4msKUIACFKCAMQs4OjrCQUTkuFCAAhSgAAUoQAEKGFTgrn8Alv+zGVev+Rm0XBZmngJZvx3dPB3YKgpQgAIUoAAFKEABClCAAhSggFEJrFw+H6rQB0ZVJ1aGAhSgAAUoQAEKWIJAjSpl8evUb1CwRFlLaC7bqGcB9ojTM3B2s9+4eTt69BqAw0eOZjcL7kcBClCAAhSgAAUoQAEKUIACJijw518LMHrMBGmqAg7HbIKHj1WmAAUoQAEKUMAMBDzdXFCzWiUUyJ/PDFrDJuS2AHvE5fYRSKd8tToO0dExiI+PTycFV1OAAhSgAAUoQAEKUIACFKCAOQpcuXoVfn7Xpb8HE8yxeWwTBShAAQpQgAIUoAAFLEqAgTgjPdzvdGyHdu3aSndAKoy0hqwWBShAAQpQgAIUoAAFKEABCuhDYPy4b2GtUmPR4uVwtY1H9w4t9FEM86QABShAAQpQgAIUSEcgIjIKL15EwSmvLRwd86STiqspkDkBDk2ZOSemogAFKEABClCAAhSgAAUoQAEKGETAxcUZHh7uWLp8DdZv22+QMlkIBShAAQpQgAIUoECywMHj5/Fun0/w78YtySv5igLZFGCPuGzCcTcKUIACFKAABShAAQpQgAIUoIA+BaZO/g4OcSH6LIJ5U4ACFKAABShAAQqkIeDl6YqG9WujUKGCaWzlKgpkTYCBuKx5GSz1lavXceLUBdSqVRtFfYoYrFwWRAEKUIACFKAABShAAQpQgAK5K3DlylXExLxEnZrVYPPyce5WhqVTgAIUoAAFKEABCxSoVrEMqlSvCTi4W2Dr2WRdC3BoSl2L6ii/CxcvY8HfS3D79m0d5chsKEABClCAAhSgAAUoQAEKUMAUBP6ctwBfff094uLiTaG6rCMFKEABClCAAhSgAAUokIEAe8RlgJObm3zr1oabuydKlSyTm9Vg2RSgAAUoQAEKUIACFKAABShgYIEWzZuhVo3KCHrxAvbRoXB3dTZwDVgcBShAAQpQgAIUoAAFKKArAQbidCWp43yKFCmIfAW8oVYrdJwzs6MABShAAQpQgAIUoAAFKEABYxZo17Y17G2Bxk3boGB+T6ya+4MxV5d1owAFKEABClCAAmYncPriNSxdtxtvd2iPJo3fMrv2sUGGFWAgzrDeLI0CFKAABShAAQpQgAIUoAAFKJApgbp1asDTSYrIcaEABShAAQpQgAIUMKjAs+chOHryLKrXkuaJ40KBHAowEJdDQH3tHhsbi4iIWCiVNrCy4mHSlzPzpQAFKEABClCAAhSgAAUoYKwCUyePhyr0gbFWj/WiAAUoQAEKUIACZivQqF41bFo5F/bu3mbbRjbMcAJKwxXFkrIisHb9ZnTo1AMHDh7Kym5MSwEKUIACFKAABShAAQpQgAImLjDhh8no1utDxMTEmnhLWH0KUIACFKAABShgmgJ2tjbwcHeDg4O9aTaAtTYqAQbijOpwJFcmb15PVKxYHq6urskr+YoCFKAABShAAQpQgAIUoAAFzF4gMjIS4eEvzb6dbCAFKEABClCAAhSgAAUsQYBjHhrpUW7W5C00aNAAarXCSGvIalGAAhSgAAUoQAEKUIACFKCAPgQmT5wAe2lquG+/HQ8PR2uMHNRLH8UwTwpQgAIUoAAFKECBdASePn+B6/434FOqAgoWLJBOKq6mQOYE2CMuc05MRQEKUIACFKAABShAAQpQgAIUMKjAwcPHcPL8VYOWycIoQAEKUIACFKAABYCzF69j5DdTsW//QXJQIMcC7BGXY0JmQAEKUIACFKAABShAAQpQgAIU0L3AymXzYRP1VPcZM0cKUIACFKAABShAgQwFivsUQL8enVChQrkM03EjBTIjwEBcZpRyIc2x46exY9cBtG3dGuXL88OeC4eARVKAAhSgAAUoQAEKUIACFMgVgT179yEsNAhd330bNi9jc6UOLJQCFKAABShAAQpYskCpYkVQokwFwMHdkhnYdh0JcGhKHUHqOpu79+5j9+59CHjyRNdZMz8KUIACFKAABShAAQpQgAIUMGKBjZu2YO6fixAXF2/EtWTVKEABClCAAhSgAAUoQIHMCLBHXGaUciFN61bNULVaNbi5euZC6SySAhSgAAUoQAEKUIACFKAABXJLoE/vnoiMCMG58xfgGB+GSuVK5lZVWC4FKEABClCAAhSgAAUokEMBBuJyCKiv3V1dnGHv4AS1WqGvIpgvBShAAQpQgAIUoAAFKEABChihQI3q1WBvCzRu2gYF83ti1dwfjLCWrBIFKEABClCAAhQwX4H9x87i579WoU/f3ujYoZ35NpQtM4gAA3EGYWYhFKAABShAAQpQgAIUoAAFKECBrAl079oJrrYJWduJqSlAAQpQgAIUoAAFciygVschLDwCMTExOc6LGVCAgTgj/Rl49jwIDx4FwitvAbhIveO4UIACFKAABShAAQpQgAIUoIBlCMTExkKJeAz8uD+swh5aRqPZSgpQgAIUoAAFKGBEAs0a1ESTpk0AB3cjqhWrYqoCSlOtuLnXe9fu/Rj26Rc4feaMuTeV7aMABShAAQpQgAIUoAAFKECBFAJfjB6DVu26IjZWnWItX1KAAhSgAAUoQAEKUIACpijAHnFGetRKliiOdu1aoaC3t5HWkNWiAAUoQAEKUIACFKAABShAAX0IFC1aFCqVEgpOGa4PXuZJAQpQgAIUoAAFKEABgwowEGdQ7swXVrNGFVSqXBlqNf/yyrwaU1KAAhSgAAUoQAEKUIACFDB9geHDhsDeFujTdwDyezjjp/HDTb9RbAEFKEABClCAAhQwIYG7/o9x6Mw+VK1VB+XLlzWhmrOqxijAoSmN8aiwThSgAAUoQAEKUIACFKAABShg8QKBz54jKDjM4h0IQAEKUIACFKAABQwt4HfrPn7/aynOnrtg6KJZnhkKsEecGR5UNokCFKAABShAAQpQgAIUoAAFTF9gx9a1UIU+MP2GsAUUoAAFKEABClDAxAQqlSuB774cilIVqphYzVldYxRgjzhjPCpSnXbs3IvBn3yOk6dOG2kNWS0KUIACFKAABShAAQpQgAIU0IfAipWrMWXaL9JUBWp9ZM88KUABClCAAhSgAAXeIOCdzxMtmzZAsWI+b0jJzRR4swADcW82ypUUL14E48aNWwgL4zAkuXIAWCgFKEABClCAAhSgAAUoQIFcEjh+4iS279iD+PiEXKoBi6UABShAAQpQgAIUoAAFdCXAoSl1JanjfLp16YgOHf6HuDjGSnVMy+woQAEKUIACFKAABShAAQoYtcDIz4cD8dHYuGkbnK2i0aZJPaOuLytHAQpQgAIUoAAFzE1AHReH2OgYqGzUsLJiGMXcjq+h28Moj6HFM1meQqGAUqmEeOZCAQpQgAIUoAAFKEABClCAApYjUKhgQZQqWRy/zfoTC1dtsZyGs6UUoAAFKEABClDASAR2HzyFJu37YNXqdUZSI1bDlAUYyjXlo8e6U4ACFKAABShAAQpQgAIUoIDZCnz1xXDkUUSYbfvYsP+zdx9wVZVvHMB/cNlLBEQUEFTcorhHbs1NjsyRmWaZqZWa+i/bpVa2zGyolVmWe5Vm5t6KeyvugYKDKRsu93/ew1QvCHLHuff+zudDXs55z/s+7/fA6XKf874vBShAAQpQgAIUUKqAu5sLgmtXh5eXp1JDZFwmJMBEnEIv1qXLV3Hi1HnUrl0HFStUUGiUDIsCFKAABShAAQpQgAIUoAAFdC1w/XoENFmp6Ny5A2wTb+q6etZHAQpQgAIUoAAFKPAIgWYN66BJ8+aAk8cjSvIwBR4twKkpH21klBL7DxzGV1/Pwtmz4UZpn41SgAIUoAAFKEABClCAAhSggHEEvpoxEyNHT0Bmpto4AbBVClCAAhSgAAUoQAEKUEBnAhwRpzNK3VbUsEF9jB71EqpVC9JtxayNAhSgAAUoQAEKUIACFKAABRQt0Lx5M1StEgCNJgtqdRZUKj5Dq+gLxuAoQAEKUIACFKAABShQhAATcUXgGPNQ9WpVEBBYWXoC0sqYYbBtClCAAhSgAAUoQAEKUIACFDCwwMD+/eBoD7Tr0A2+Pl5YMnuqgSNgcxSgAAUoQAEKUMCyBU6evYiVG/ag45Od0aJFU8vGYO9LLcDH6kpNyAooQAEKUIACFKAABShAAQpQgAK6F6hZIwhVA/x0XzFrpAAFKEABClCAAhQoUuBG1F2s27Adly5fKbIcD1KgOAIcEVccJZahAAUoQAEKUIACFKAABShAAQoYWGDOj99AlRBh4FbZHAUoQAEKUIACFKBAi8Z18dsP0+HpX5kYFCi1AEfElZpQPxUsW/E3eoT2x7btO/TTAGulAAUoQAEKUIACFKAABShAAUUKzJg5C6+8OhEZGRmKjI9BUYACFKAABShAAXMXcHNxRrWgQHiULWvuXWX/DCDAEXEGQH6cJpwcHeHt7QUHB4fHOZ3nUIACFKAABShAAQpQgAIUoICJCly9eg3h4eeh0ZhoBxg2BShAAQpQgAIUoAAFKJAnwERcHoWyXvTo/iQ6PdkJmZlWygqM0VCAAhSgAAUoQAEKUIACFKCAXgW+/PxTONhpMGvWDyjraIURg3vptT1WTgEKUIACFKAABShwv0BcQiJuxtxGOX/A09Pj/oP8jgIlFODUlCUEY3EKUIACFKAABShAAQpQgAIUoIA+BWxsbGBra4u/167Hpp0H9NkU66YABShAAQpQgAIU0CIQdvgUhr/6Ntb/t0nLUe6iQMkEOCKuZF4sTQEKUIACFKAABShAAQpQgAIUMIjAj99/Bcf0WIO0xUYoQAEKUIACFKAABfIF/CqUQ2jXDqhatUr+Tr6iwGMKMBH3mHD6Pu3IsZPYufsA2rRuIy0KWVXfzbF+ClCAAhSgAAUoQAEKUIACFFCIwP4DB5GSnIDOHVvBLilSIVExDApQgAIUoAAFKGA5AnVqVEGt4PqAE6eltJyrrr+ecmpK/dmWqmaxMPfy5atx/fr1UtXDkylAAQpQgAIUoAAFKEABClDAtAQWLlqCzz6fCbU6y7QCZ7QUoAAFKEABClCAAhSgwEMCHBH3EIkydrRr8wQCAivDzzdAGQExCgpQgAIUoAAFKEABClCAAhQwiEDvXqG4lxCLq1evwSkzDpV8yxukXTZCAQpQgAIUoAAFKEABCuhegIk43ZvqpEYfH2+U9SyHzEwrndTHSihAAQpQgAIUoAAFKEABClDANATatW0DR3ugXYdu8PXxwpLZU00jcEZJAQpQgAIUoAAFzERg3+GTmPvnGvTr3w9du3Qyk16xG8YSYCLOWPJslwIUoAAFKEABClCAAhSgAAUoUIRA184d4OGkKqIED1GAAhSgAAUoQAEK6EMgPiEJp8MvIjo6Rh/Vs04LE2AiTqEXPDExCdGx9+DsXAaOjo4KjZJhUYACFKAABShAAQpQgAIUoIC+BCa/9QZUCRH6qp71UoACFKAABShAAQoUItCpdRO0a98O1i6ehZTgbgoUX8C6+EVZ0pACa9dtwJChI7F3X5ghm2VbFKAABShAAQpQgAIUoAAFKGBkgTcnv4uuPQcgPT3DyJGweQpQgAIUoAAFKGCZAiqVNWxtbaBScXYCy/wJ0G2vmYjTrafOavP1rYiWLZuhnJeXzupkRRSgAAUoQAEKUIACFKAABSigfAEXFxeULeuu/EAZIQUoQAEKUIACFKAABSjwSAFOTflIIuMUaP1EMzRt2hSZmVbGCYCtUoACFKAABShAAQpQgAIUoIBRBN575y042gNjx02El5sjPpr4klHiYKMUoAAFKEABClDAUgUiou7gaPhh1AxugCpVAi2Vgf3WkQBHxOkIktVQgAIUoAAFKEABClCAAhSgAAV0KXDs+CmcvXBFl1WyLgpQgAIUoAAFKECBYgicOnsJU7/4QVo6an8xSrMIBYoW4Ii4on14lAIUoAAFKEABClCAAhSgAAUoYBSBf9cug03iTaO0zUYpQAEKUIACFKCAJQvUqBqA10cOQf2GIZbMwL7rSICJOB1B6rqa7Tv24u9/NuLpPr1Rv349XVfP+ihAAQpQgAIUoAAFKEABClBAoQJr1q5DbMwdjBg+CHaZ0hyV3ChAAQpQgAIUoAAFDCoQ6O+DSlWrAU4eBm2XjZmnAKemVOh1jYyKwoEDhxAdE6PQCBkWBShAAQpQgAIUoAAFKEABCuhDYPOWrVi0ZCXU6ix9VM86KUABClCAAhSgAAUoQAEDCnBEnAGxS9LUU6Fd0aZNGzg4uJTkNJalAAUoQAEKUIACFKAABShAARMXGPnyS8hMT8LOXXvhgiS0bBxs4j1i+BSgAAUoQAEKUIACFLBcASbiFHrtnRwdobJxQGamlUIjZFgUoAAFKEABClCAAhSgAAUooA+BWjVrwFGakbJdh27w9fFiIk4fyKyTAhSgAAUoQAEKFCGwaecBTJs5Hy+PGI4BA/oWUZKHKPBoASbiHm3EEhSgAAUoQAEKUIACFKAABShAAYMLjBwxDG42GQZvlw1SgAIUoAAFKEABSxews7OFR9kycHB0sHQK9l8HAkzE6QBRH1XcvBmF85euIzCgCry8PPXRBOukAAUoQAEKUIACFKAABShAAQUKxMbG4Z51BgYNfBo2924oMEKGRAEKUIACFKAABcxboE2zELRq3Rpw8jDvjrJ3BhGwNkgrbKTEAjuktQDee38qjp84UeJzeQIFKEABClCAAhSgAAUoQAEKmK7AR1Omof+zLyEjI9N0O8HIKUABClCAAhSgAAUoQAFZgCPiFPqDULtWDQwa1E8aEReg0AgZFgUoQAEKUIACFKAABShAAQroQ6BOndryVEjW1lwzXB++rJMCFKAABShAAQpQgAKGFGAizpDaJWirXnBt1KhZC5mZ/MOrBGwsSgEKUIACFKAABShAAQpQwOQFRrz4AhztgV59+qNCOQ/8/OVkk+8TO0ABClCAAhSgAAVMSeDcpWvYsOsoWrRuiwYN6plS6IxVgQKcmlKBF4UhUYACFKAABShAAQpQgAIUoAAFHOwdYG9nSwgKUIACFKAABShAAQMLXL4WiT+W/o3TZ84auGU2Z44CHBFnjleVfaIABShAAQpQgAIUoAAFKEABkxdYuvhXqBIiTL4f7AAFKEABClCAAhQwNYFG9Wpixidvo1K1WqYWOuNVoABHxCnwooiQ/l77HwYPGYE9e/cpNEKGRQEKUIACFKAABShAAQpQgAL6EPjpl18x+d2p0lIFmfqonnVSgAIUoAAFKEABCjxCwMujDJo1ro8KFXweUZKHKfBoAY6Ie7SRUUpkZGQgKSlZ+sNLbZT22SgFKEABClCAAhSgAAUoQAEKGEfg1KnTCA8/h6wsjXECYKsUoAAFKEABClCAAhSggM4EmIjTGaVuK3q6T0/07NlDSsRZ6bZi1kYBClCAAhSgAAUoQAEKUIACihb48P13oLLOxB9/LoG7fRae6dlB0fEyOApQgAIUoAAFKGBuAimpaYiPT4ezlz2cnZ3NrXvsj4EFODWlgcHZHAUoQAEKUIACFKAABShAAQpQoCgBd3d3eJfzwm8LFmP52i1FFeUxClCAAhSgAAUoQAE9COzYdxS9B4/G6r/+0UPtrNLSBDgiztKuOPtLAQpQgAIUoAAFKEABClCAAiYh8OnU9+GUlWASsTJIClCAAhSgAAUoYE4C5Tzd0ap5Y/j5VjSnbrEvRhJgIs5I8I9q9szZ8zhw+AQaN2qMgEqVHlWcxylAAQpQgAIUoAAFKEABClDATATOnA1HZnoSmksf/tgm3jSTXrEbFKAABShAAQpQwHQEGgbXQIj02TycPEwnaEaqWAFOTanQS3Ps+En8/PNvuHjxkkIjZFgUoAAFKEABClCAAhSgAAUooA+BOXN/xv8mfyStGa7WR/WskwIUoAAFKEABClCAAhQwoABHxBkQuyRNNW/WGG5lyqJGjVolOY1lKUABClCAAhSgAAUoQAEKUMDEBTp17ICGDeoiPiEBaamJcHdzMfEeMXwKUIACFKAABShAAQpYrgATcQq99oEB/qhQ0U96AtJKoREyLApQgAIUoAAFKEABClCAAhTQh0DPHt3gaA+069ANvj5eWDJ7qj6aYZ0UoAAFKEABClCAAoUIHD4Rjj//2oIePXuiXbtWhZTibgoUT4CJuOI5sRQFKEABClCAAhSgAAUoQAEKUMCgAs2aNISnq5SR40YBClCAAhSgAAUoYFCBO9Fx2L3vEEIaNjRou2zMPAWYiFPodc3MzERqaiasrGyhUqkUGiXDogAFKEABClCAAhSgAAUoQAF9CXw+/WOoEiL0VT3rpQAFKEABClCAAhQoRKBt8wZYvfAHOHv5FlKCuylQfAHr4hdlSUMKLF+5BqG9BmD7jp2GbJZtUYACFKAABShAAQpQgAIUoICRBaZM+wyDhoxEenqGkSNh8xSgAAUoQAEKUMAyBRwc7ODt5QlnJyfLBGCvdSrARJxOOXVXmaenB2rXrgk3NzfdVcqaKEABClCAAhSgAAUoQAEKUEDxAomJiYiLi1N8nAyQAhSgAAUoQAEKUIACFHi0AKemfLSRUUo82bEt2rRpg8xMK6O0z0YpQAEKUIACFKAABShAAQpQwDgC0z+dCkdpabgPPpwCT2dbvDFykHECYasUoAAFKEABClDAQgXuxsTjfMRF+AfVQsWKFSxUgd3WlQBHxOlKkvVQgAIUoAAFKEABClCAAhSgAAV0KLB9xx6EHTmlwxpZFQUoQAEKUIACFKBAcQQOHT+L8W9/iq3buHRUcbxYpmgBjogr2odHKUABClCAAhSgAAUoQAEKUIACRhFYuGAu7FLuGqVtNkoBClCAAhSgAAUsWaBypQoYMqCXvHyUJTuw77oRYCJON446r2Xf/sPYuHknunbpgtq1auq8flZIAQpQgAIUoAAFKEABClCAAsoU2LZ9B+4lxKJfn26wS8pSZpCMigIUoAAFKEABCpixQPUqlRBUsw7g5GHGvWTXDCXAqSkNJV3Cdq5cuYqNG7cgKiqqhGeyOAUoQAEKUIACFKAABShAAQqYssDqv9bgh9nzoFYzCWfK15GxU4ACFKAABShAAQpQQAhwRJxCfw66PNkewfXqwdPDW6ERMiwKUIACFKAABShAAQpQgAIU0IfA4GcHIiU5HsdPnIJLVgLq1Kiij2ZYJwUoQAEKUIACFKAABShgAAEm4gyA/DhNlC3rDieXMsjMtHqc03kOBShAAQpQgAIUoAAFKEABCpioQJPGjeBoD7Tr0A2+Pl5YMnuqifaEYVOAAhSgAAUoQAHTFNgRdhQzf16K54YMRq+nuptmJxi1YgSYiFPMpWAgFKAABShAAQpQgAIUoAAFKECBfIH+/XrB3SH/e76iAAUoQAEKUIACFDCMQHp6BmLjEpCammaYBtmKWQswEafQyxsdE4sbkXdRzqs83NzcFBolw6IABShAAQpQgAIUoAAFKEABXQtkZmYiw1qD0aNegs29G7qunvWZgUB0bJzci8PHzsDRwQFtWzaGs5Oj1p4dOXEGkbfuysesra3QtUMrreXEzl37DiMhMUk+7ubijFbNGxZadv2WXcjK0sjHK5T3QoPgWlrLJienYtueA3nHqlUJQLUqlfK+L/ji9t0YHDx6Km+XqFPUrW27dDUCZ89fzjvUWorVVYpZ23bi9Dlcv3kr71C3jq1gZaV9BqK9B44iNv6eXNbZSdg2yTvvwRcbt+1FhvT7Krby5TzQqH6dB4vI36elpWPzzrC8Y1UC/FCzWuW87wu+iI6JQ9jhE3m76tWuDr+K5fO+L/jiakQkTp29kLerZZMQuJdxzfueLyhAAQpQ4PEFOrVugg4dOwBOHo9fCc+kQI4AE3EK/VHYuGmbtDj3fEyaOB4d2rdTaJQMiwIUoAAFKEABClCAAhSgAAV0LTDxf5MRHn4OG9ct4cLuusY1k/pO5iRfPv/uV0D6Ort3DaoG+mnt3TezF2Dhyn/lY3a2Nki6lp8Ue/CEN97/EiJxJzaRADq0ecmDRfK+7//iRKTkjBIY0KsL/pj9Wd6xgi/uSA8a9xryet6uDya+gncnjMz7vuAL0XbBsovmfo5+oU8WLJL3es36bZj44Vd53x/dugx1agblfV/wxffzFuOXP1fl7UqNOAiVSpX3fcEXk6d+i937j8i7gir748yevwsevu/1kNGTER0bL+8L7dwWK3/75r7jud/E30u8r1//e/UFTHsn3yS3nPj3VPiF+8rO+/ZjDHkmtGCRvNf/bd6FMW99kvf93n8XoHFI3bzv+YICFKAABShAAWUIMBGnjOvwUBRVKgeiW7cnUbFChYeOcQcFKEABClCAAhSgAAUoQAEKmK9AQEAlabSORvoy3z6yZxSgAAUoQAEKUIACFLAUASbiFHqlmzZpgPohIcjM5F9eCr1EDIsCFKAABShAAQpQgAIUoIBeBMaPfQ2O9sDQYS/Dx9MVX32gfeSMXhpnpRSgAAUoQAEKUIACuHI9CnuObkf9Js1Rq2Z1ilCgVAJMxJWKjydTgAIUoAAFKEABClCAAhSgAAX0I3AzMhLIytBP5azVpAVq16iCTTv24Y1XnkeLJvXl9ckK69DrLw9Gnx6d5MNijbiits8/GI+4nPXRyri5FFUUf0pTUarVWXIZv4rehZYt51EWy37Jn0KysLXRRAUhdWveV7ZJg8KnWewhTQUZ4F8xr11/X5+81w++GDn0mfvWxrO2tn6wSN73UyaPQXRM9nSTLs6Oefu1vZj37RSkp2f/jvp4e2orIu8r4+pyX7+qVw0otGzt6kH3lW1Yr3ahZZ9s3/K+slUDta+9V2gFPEABClCAAoUKhF+8im/nLMAYlQMTcYUq8UBxBZiIK64Uy1GAAhSgAAUoQAEKUIACFKAABQwosOm/1VAlRBiwRTZlKgLlPDzkUJs2qove3TsUGXaj+nUgvoqztXuiSXGKyWVCu7QrVlknJ4dHxphbUflynsUuK9ZvE1/F2RoE14L4Ks7Wunmj4hSTy3Tv1LpYZe3t7YrdLy9P92KXrVzJF+KLGwUoQAEK6F6gbs2qeO9/Y1CjbojuK2eNFidQ+CNAFkehrA5v2LQNr74+CQcPHlZWYIyGAhSgAAUoQAEKUIACFKAABfQqsHjpcnz+1XfSUgWZem2HlVOAAhSgAAUoQAEKaBfw9fFCt05tUKVKoPYC3EuBEggwEVcCLEMWjYmJRXj4eSTcSzBks2yLAhSgAAUoQAEKUIACFKAABYwssG9fGNb9uxFZWRojR8LmKUABUxKIT0hETGy8/CVec6MABShAAQpQQBkCTMQp4zo8FMUzTz+Ff/9ZjnZt2zx0jDsoUJTAzp07H/vJ2YSEBBw4cKCo6nmMAhSgAAUoQAEKmKTAqVOnEBMT81ixazQa7Nq1C+JfbhQwhMCE8WMx54evsPaf9fhvW5ghmmQbFKCAGQh0eWYkytduJ3+16/WCGfSIXaBAvsDBoyeRmJScv6MEr9RqNXbuO1SCM1iUApDXQc3IyJT+VZODAqUWYCKu1IT6qUClUsHGxgZFLSCsn5ZZq6kLXLx4EU2bNsXChQuLnZATCbivvvoKISEhsLOzM3UCxk8BClCAAhSgAAUeEnB3d5ffI02ZMqXYCTmRePvvv//QoUMHbNmyBVZWVg/Vyx0U0IeAv78falQPwsxZczBv8Rp9NME6TVTgbnQcNu/YhwtXrsk9iI/nqCcTvZQMmwIUKKGA+Iy0WtMe+PL7+cVOyIkEysIV6xDcpi9On71UwhZZ3NIFNu08gLY9BmPxkhWWTsH+60CAiTgdILIKCihJ4Nlnn0VGRgZeffVVeHt7F5mQy03ABQYGYtq0aWjevDnq16+vpO4wFgpQgAIUoAAFKKATAV9fX/Tp0wczZsxAUFAQPv74Y0RHR2utOzcB17hxYwwaNAinT5/GmDFjtJblTgroU2DShNfw8pDe+myCdZuYwMFjJ9F1wCj8tuRvOfIz5/nBsoldQoZLAQo8pkDDerXRvFE9TJ46E2WDnigyIZebgHMJbIahr76DpOQUDBvU6zFb5mmWKlDGzRl1agbB09PDUgnYbx0KMBGnQ0xdVnX58jVs2LgVkZFRuqyWdVmAgBjR9sIL+VNQiIRc7gi5rKwsWSA5OVkeASeSbiIBl7tNnDgx9yX/pQAFKEABClCAAmYnMG7cuLw+ffPNN/IDSCIhFxcXJ+/PTcCJEXAiAXf58mV5f48ePaQ/wD3zzuULCuhbIOLGDZy/cAnduz2Jjk801ndzrJ8CFDATgcFP98AbrwyRv54f8JSZ9IrdoEC+wNvjX8r7RiTkgpp0lxNyKalp8n7xuZcYAVe3dR85AZeZmT2l4Ijnnoa9PWeAysPji2IJNG9YFz99Ow1du3QqVnkWokBRAlbSH5tGXehANJ+Rlv2Hb1GBWtqxxUtX4YfZ8zFp4nh0aN/O0rrP/pZSID09HY0aNcIN6Q/4gluZMmUQHx8PJycniGRcwa1r167y6LmC+/iaAhSggKEFfvrpJ7z55puYOXMmhgwZYujm2R4FKGABApMmTcIvv/xyX08dHByQmpoKMX1lblIut4CjoyOOHz/ORFwuCP81iMC4NyYhPPwcNq5bAsfUWwZpk42YhsD6LbsQOvi1vGDHjXwOX3w4Ie97vqAABShg7gJ9nh+LtRt33NdNVxcn3EtMhoe7G2LiEu47VtGnHM7tW8tE3H0q/Ka4All2roATR8QV1+vxy1nDzqHM459uAmdyRJxCL1KDkGC8MnI4qknT5nCjQEkFxKi4CRMe/mNMJOHE9mASTuwTH3xzowAFKEABClCAAuYuIEbFibWYC24iCSe2B5NwYt/IkSOZhBMQ3Awq0KxpE+np6w7SmuFcl9Cg8CbQWL3aNbDgh0/QL/RJOdqgwEomEDVDpAAFKKA7gfcmjnyoMpGEE9uDSTix7+2xI5iEExDcKEABowowEWdU/sIbFwtzP933KYhFurlR4HEExFpxYi2U4mxiNBzXhiuOFMtQgAIUoAAFKGDqAuL90dChQ4vVDTEajmvDFYuKhXQsMGhgf7w1aSw6du6NAa+8q+PaWZ0pC4iRHQP7dEN9KSEnNi8vd1PuDmOnAAUoUGIBsVZczyfbFOs8cc/k2nDFomIhLQKnwi/h06/nYF/YQS1HuYsCJRNgIq5kXixNAZMRKGxUnLYOcDScNhXuowAFKEABClDAXAW0jYrT1leOhtOmwn2GFKgWVAWBfhUM2STbogAFKEABCiheQNuoOG1BczScNhXuK65AROQdrFm/BRcvXiruKSxHgUIFmIgrlIYHKGD6AmJUnJ9f0aMqORrO9K8ze0ABClCAAhSgQMkEijMqjqPhSmbK0voR+Hnut5j+7hj9VM5aKUABClCAAiYqUJxRcRwNZ6IXV0FhN29UF/O++1SaLryTgqJiKKYqwEScQq/cspVrENprILbv2KnQCBmWKQgUZ1TcW2+9ZQpdYYwUoAAFKEABClBApwJiVJytrW2hdXI0XKE0PGAAgW++/R6jX38TGRkZBmiNTVCAAhSgAAVMT+BRo+I4Gs70rqnSIi7j6oya1atI60V7KC00xmOCAkzEKfSiOTrYw8PDHSKRwo0CpREYNGhQoaPiunXrhnr16pWmep5LAQpQgAIUoAAFTFJAjIp7/vnntcbO0XBaWbjTgAJXrlzB6dNnodEYsFE2RQEKmLzA0ZNnsTvsiPx1+PgZk+8PO0CBogSKGhXH0XBFyfEYBShgDAEm4oyhXow2e3bvjN9+nY0WzZsVozSLUKBwgaJGxXFtuMLdeIQCFKAABShAAfMXKGxUHEfDmf+1V3oPP5/+Cf77Zym+/2Eu5i1ao/RwGR8FKKAQgVcmTEG73sPlrxfHvq+QqBgGBfQnUNioOI6G05+5JdWckJiE8xeuICY21pK6zb7qSYCJOD3BsloKKElA26g4joZT0hViLBSgAAUoQAEKGENA26g4joYzxpVgmw8K2EnTptrb22P13//iv+1hDx7m9xYscOX6TXz30yLsPXhMVoiKumvBGuw6BShg6QLaRsVxNJyl/1Torv97D57E0NFv4t9/N+quUtZksQJMxFnspWfHLUlA26g4joazpJ8A9pUCFKAABShAgcIEHhwVx9FwhUlxvzEEvp/1Bab872VjNM0M17G5AABAAElEQVQ2FSpw9vwljH//c6zbnL2e/JWImwqNlGFRgAIUMIzAg6PiOBrOMO6W0Iqvjxd6dG6HKpUDLaG77KOeBWz0XD+rf0yBo8dOYdfeg2jdqhWCqlZ9zFp4GgXyBcSouPHjx8s72rZty7Xh8mn4igIUoAAFKEABCxYQo+KGDBmCefPmyQpjxoyxYA12XSkChw4fQUpyPDq2awm7pEilhMU4KEABhQu8O+FlRMfGy1GWLeOq8GgZHgV0IyBGxbV/ogm27j4gVzhsUC/dVMxaLF6gbs2qqF0vBHDysHgLApRegCPiSm+olxrOhp/D0qUrce3adb3Uz0otT0CMipsxY4bc8Y8++sjyANhjClCAAhSgAAUoUIiAeFjJVpoKUIyO8/T0LKQUd1PAcAIL/liIaZ/OgFqdZbhG2RIFKGDyAj07t8XQAU/JX091bW/y/WEHKFBcgc/eHycX/e7Tt6Wpne2KexrLUYACFDCYgJVG2gzWmpaGRPMZaXFajlj2rsioW7h05Qb8/QPh6cGsu/hpiIuLw/79+3Hq1CmcPXsWERERSEtLk7+M/GNsMj+swunWrVvw8fExmZiNHaiVlRUcHBzg5OSEwMBA1KhRAyEhIWjQoAHEGjLcKFBQICEhAQcPHsSJEycQHh6O69evIyUlhfepgkiPeB0TE4OoqChUqFABZcuWfURpHhYCufcpca8KCAiQ71P16tVDo0aN4OLiQiQLEEhPT8fx48dx9OhR+T3SxYsXkZycLN9/srL4IX5xfwTEeySRhLOx4aQhxTUTa5iJL3HPrl69OurUqYOmTZvC29u7uFWwXCECW7Zuw72EGDRtVA+OGbHwr2hepsnpWbh2JwORcZm4laBGfGIWMtQaZEq3LON+QlHIBVHQ7tSUJMTejULYzn+wZ8tq9B/+PzRu2VVBESo3FOlPO9hIj6Pb2VjBw1UFbzcVfMvawN/LVt6n3MgZmbkLpGdqEBGdgYjYTNyOVyPmnlq+J2aoeU8sybVf9edMhPYfBRtbJuKK45Z7T7RRWaGMszXKS/fECtI9MaCcLZzsOHYn1zDLThpdzBFxuRx6/Ncadg5l9Fi/8atmIs7416DQCNIypD9EMqV3iha8iQ9jly5dimXLlskJuMIoxIeQ3CigD4HCkrziQ7pmzZph4MCBeOqpp+Dqymk/9OFvCnVGR0djxYoV8r3qyJEj0odH2p9v4X2qeFezoB/NSm5W8Axra2s5GTdgwAD07dsX7u7uBQ/ztYkLpKamYv369Vi8eDF27NgB8b22jb9H2lS07xP3H3ppt9G2t+D9+sHjVaWp9cV9R0yNHig9yMTt8QQc7YF2HbpBrE+yZPbUx6tEQWfdS1Xj8OU0HJW+IuOkT5e5lUogIy0F6empsHdw5ofOpZIErKWPEyp52aBhZXsEB9jD0ZYfQJeSlKcXQyA1IwsnrqVL98VUXL2TiSztf0YWoyYWyRXQSA+gWUl/A3ErvYCPuwohgfbyfdHNUVX6Ck20hrDDp/Dz4n/Qt19fdOnc0UR7YSphMxGn9ysl/oDjiDjtzJaciBMfZn///fdYvXo1cp/kFk/2t5LWzGvcuLH8tG3lypXlUUpiGiF+aKL9Z4h7Sy8g7lFipIEY6XT+/HmcPHkSYWFh2LVrF86dOyc34OzsLK8tM2rUKGkUq3/pG2UNJiFw5swZ/PDDD3ICLiMjQ445ODgYrVu3RpMmTeT7lPggUoxI4n3KJC6pyQaZe59KTEyEGAkl7lNiBLm4T4lR5GITI1bEgwOjR49GtWrVTLavDBy4c+cOfv75Z/krNjZWJvHz84NY/7V58+YQ9yExelskXsW01CIhy40C+hIQ//8TI7+vXbuG06dPy6PCd+/eLb9XUquzEy1PPvkkXn31Vfl9PN+zl+xKiETctE+mw8NJhdeGP1OykxVU+kZsBnacScGJq+l5HzR7lXVGhXLuKOfpAo8yLnBzsYetSiXds6z4t52Crp25hSLeM6mlbEeGNMwo7l4yYuKTcTs6ATdvxyP+XorcXRvp8+YmVe3RqqYTPF0s98Nnc7v2SupPbJIaO88m48DFNGRkZkfm5uqAitI9sbyXq3RPdEYZV0fY2dpAxXuiki6d2cUi7olZ0j0xU5oGOz4xFbHxibgdk4ioO/G4I/0rNjHuIdjfDm1qO8LPw9bsDB7Vof+2heGDL3/CmNEjMPjZ/o8qzuOlEmAirlR8xTlZ/NIzEfewVFKS9KYwLlFKNLnJ0+I9XMI890RGRuLtt9/GX3/9JXdQPEH78ssvy0kO8SETNwooSUBMPzh//nzMmzdPnjpVJX14MGbMGEyaNAkiOcfNPAXE1Ikffvgh/vjjD7mDYjquESNG4Pnnn4dIvHGjgJIExAMDv/32m5y0uX37thza8OHD8d5776FMGfOe9kFJ10EXsYiEx48//ojp06fLiQ8xPfJzzz0HcT3FCG0mOHShzDp0JXD37l0sWrQIc+fOlR8OEPW2adMGX375JYKCgnTVjNnXIxJxVlBDlRBhkn0VI+DWHkrCMSkBJzYXJ3vUDqqAGlXKw9XJwST7xKDNVyA6PgnhF6Nw5lIU0tIz5Q+fW9ZwQOdgZ9jbSp9Ec6NAKQXE9JObTiZjl/Rgghj9ZmerQs0qFVCzqg+83Pn5QSl5ebqOBe6lpOHcpVs4feEm7iWlybWLhFxoY2dY0gi5TOnBsgxrJ6hcvTh9vY5/xh6ujom4h010vIeJOO2gi5euwg+z52PSxPHo0L6d9kJmtFf8HIg/1idPnox79+7JI0nEB919+vSBSG5wo4CSBZKSkuRk3JQpU+SRCmJU3OzZs9GiRQslh83YHkNg7dq1GDduHEQyTozKFfcpMcpIjDrhRgElC4hpC//880989NFH8tqFYv2mb7/9Fp07d1Zy2IwtR0CMNBo5cqQ8wlGMsn3zzTfl0Y0eXEeYPyMKFxDv8Tdu3Cjfe/bs2SOPEBfv919//XWO1nzEtZv8zvvSbAwXsHrZPDim3npEaeUdFlOt/X0wEanSpAHu0siOJvUCUdW/nDziTXnRMiIK5AtkZKpxVkrGHTx5FSnSD3AZJ2v0a+6Caj58v5+vxFclFbh0Kx1L9yUiLikLDva2aFS3EmpJSTiRjONGASULiBFzlyLu4MCJq9KIuWRpPU0gtJELGlext5gHAblGnKF+Qs0/EaeSPkT80FCchbWTpda+pkVh5S1hf0xsPJKlpw8aNWyI8uXNa2HuB6+fSLyJKf2+/vpr+dC0adPkp/fF1EqcTulBLX6vRAGRhBGjEV566SWIacK2bt0qJ5bFtKpPPPGExbw5UeK10VVMaWlp8khH8b9M8Vp8iLhkyRJ5qlw+LKArZdajTwGxrmVD6T2FGL0pRlZt2rQJy5cvl5PK7dq140Mv+sQvZd1i1LUYcSvWzRVrbv3zzz/o2bMnxIg4bhRQuoAYqSlGi7/wwgvy9N3iPdKGDRsgknIdO3bkDAJFXMA9e/dBPOzVt3d32GYmFVFSWYfEiI+l++5hy0lpxIc0nq9JcCA6tqyFcmVd+J5YWZeK0RQioJKmdC7v6YbaVSvIU1hev5WAI9K6hhlqDap6K39ZjNXrtmDXvsM4fPwMLl+/gdrVOWNHIZfaILuzxAMpJ5KxIixJejBBg1rSz1X3tnXgV76s9P6b04cb5CKwkVIJiPdyYrpUMaLdVpq7NyIqHqci0nE7Xo3qFW1hozL/EcMalTRFgS3/9irVD1KxTraCysa8Z0ywkp5SNOpyoKJ5Tk2p/afREtaIE0mL/v3749ChQ/KaJmJUXJ06dbSDcC8FTERg3bp1GDZsmDw6bsCAAZg1axaHsJvItdMWpvgQbMiQIdi2bZs8Ck7cp0TilRsFTFlg586dGDx4sDw6rkuXLvKoXiZ2lHVFxXvkqVOnYsaMGXKyQqxJKe5FnIJSWdeJ0ZRMQKwlJ36Od+zYIf8/VawHzfV1CzcUU1OOf+N/KOfmiPffGF54QYUcSUnPwq/bEnDtbibKSjF3eqK2nIBTSHgMgwKPJXAtMgab956VR8fVC7DDgBau8rpdj1WZAU5q3mUwDh0/LbdUt2YQjmxdZoBW2YQ2AbEe4fKwe1IiN10eBdexeQ0E+HpqK8p9FDAZATGN78Zdp+U1Nv08VHihfRk425tvUvnmrbs4di4C1euGSO9dA0zmOplmoOY/Is58f1NM8yfOoqIWSbjQ0FA5CSee7A4LC2MSzqJ+Asy3s927d8eRI0dQq1YtedSUGCmXmZmzCrP5dtsseyaScM8884ychGvdurV8XZmEM8tLbXGdKvjz/N9//8lTrIrpK7kpQ0Ak4d599105CSfWoRTvkcSoOCbhlHF9GMXjC1SqVAlbtmyR14C+fPkyxHsmkZzjVrjAkaMncOrcpcILKORIspSE+2lzvJyE86/gjn5dGzEJp5BrwzBKJ1Cpggf6d28sjQhxwnFpvcMFOxIgEizcKFCUgPgZWbw7OwnnLj2Y8Ez3RkzCFQXGYyYj4CmNjuvXpaH88xwRo8bcTfFISssymfhLGuiJMxfx0fTvsGdvWElPZXkKPCTARNxDJNxhCAExHaX4cFuseSJGDK1cuZJTLBkCnm0YTMDX11d+2rtBgwb4+++/MXbsWIipKrmZjoCYglJ88L1v3z6IEUPr169HmTJlTKcDjJQCjxDw9PSUp6gUU1OKEXLDhw+Xp618xGk8bACB6dOn48cff4RIWuzevZsPKhnAnE0YTkBM6SzW0p0wYQJu3LiB3r17y1OvGi4C02rpn7+XYN7X7yo66DRpOsr50ki4m7FqBPp5oXubYHn6KkUHzeAoUAIBZwc79H4yBN6eLjh7MwNL996DmHKQGwW0CYifjRX77+HE9XR4ujujT6cGcBVDnLlRwEwEbKQpKru2ro2gAG/ckqaonLc1Xpp61Tw/76pRtRJeHfEcGoTUM5Orx24YU4BTUxpTv4i2d+zahzX/bEKf3r1Qv15wESVN75B4ynvo0KFYu3atPCJuxYoV8sLtptcTRkyBRwvcuXMHYuRJeHg43n//fYwbN+7RJ7GEIgQmTpwoT9cnrp9Iwjk5OSkiLgZBAV0LiIdjOnXqhP3792P06NHydIi6boP1FV9AvC8Sa/mVL18eu3btQlBQUPFPZkkKmJCA+JtA3HNEUq5Ro0YQU3vb2tqaUA/0G+radf8iLuYuXhw2AHZJkfptrBS1i+u4aM89eaSQf4WyUhKuLtc9KoUnT1W2QGpaBlZtOorY+GR0CpamXw12VlzAp8MvIik5WY7L0cEBdWtVU1yM5h7QttNJWH80Be6ujnIC10lK5HKjgDkKqKWHzdfvPI2rN6JRx88Oz7V2NcsZPLLsXAEnD3O8hArrE6emVNgFsZxwbt6MlKYhOoDo6Giz6/SCBQvkJFz9+vXlafv4B7fZXWJ2qIBAuXLlsGHDBri7u2PatGny1IYFDvOlQgXEh4Hz5s1DYGCgPKKRSTiFXiiGpRMBV1dX+QNwMZJXrEMmpo3jZhwBMUWfGCVkY2ODf/75h0k441wGtmogATHV6vfff49u3brJU9V//vnnBmrZNJrZtGkL/ly0HGq1sp8wP3w5TU7ClXVzkp6Or8MknGn8eDHKxxRwsLdFaId6sLezweaTKbhyO+Mxa9LfabVrVEWTBsHyF5Nw+nMurOaImAxsOJYCO1sVenasBybhCpPifnMQUFlbo0ur2vLIz1MR6ThwkUsdmMN1ZR/0J8ARcfqzLVXNyckpiIlLlKZrdIODg/kMYY+IiEDz5s3lKfoOHz4sr6FVKiieTAETEVi+fLk8HWuNGjWwfft22NnxqTilXrq4uDg0bdoUMTEx8pRw4p7FjQKWILBt2za0b98eYk0yMSWrSNBxM5yAGFXSt29f+f8RX331Fd544w3DNc6WKGBEgVu3biE4OBh3797F5s2bERISYsRolNP06dNnkJ6ehLTkRLhYJaF5w7rKCS4nkoQUNb5cEyutl2WFp7s2hJe7i+JiZEAU0IfA5Yi7+HfHKXi6WGNcj7KwVVnpoxnWaWICmWoNvv03DrcT1OjcqhaCKnmbWA8YLgUeTyAmIRnL/j0Ia2gwoWdZuDurHq8ihZ7FEXGGujAcEWcoabbzgICTkyPKlfMyqySc6OJbb72FZGmahKlTpzIJ98A157fmLdCvXz8MHDhQnqJSPP3NTbkCH330kfxhoJiakkk45V4nRqZ7AbFW3GuvvYbIyEh8+umnum+ANRYpIKakFA9qtGzZktMYFynFg+YmIKZhFWsiimS0SECr1Wpz6+Jj9ad27Vpo0awxPpwyHTPmLn6sOvR90tpDSUjPBBrVDWASTt/YrF9RApWltRCrVy6P6MQsbDuVPQ2kogJkMEYR2Hk2WU7CVa1Ujkk4o1wBNmosAQ9pVHzTepWRIb2F+/tgkrHC0Eu7m3cdxJO9h2HpslV6qZ+VWpaAtWV1l701poB4ul5M9yampBw7dqwxQ2HbFDCKwIwZM+Dm5gYx0iE2NtYoMbDRogXOnz+P3377DQEBAfjggw+KLsyjFDBDAfGgjBgRN3fuXFy/ft0Me6jMLmVkZEA8BKBSqTBnzhxYS9O8cKOAJQmI0aA9evTA0aNHsWoVP+goeO1HvPg8BvZ+suAuRbwW068dv5YOMSVlg1r+ioiJQVDAkAItG1SRp6jcdjoFial8gMCQ9kpsKzk9C1uk6UptbVRo1Zjr+yrxGjEm/QrUr+EnT1F5+kY6Lt9O129jBqzdRvqddnN15qxWBjQ356b4V75Cr25k1C0cOHjYrNaI++6772TtKVOmyGufKJSeYVFAbwI+Pj5yElqMCp0/f77e2mHFjy8g1scS23vvvQeuC/f4jjzTdAXEwwKTJ0+Wp5CePXu26XbExCL/66+/cOPGDQwePBh16ypv+jkT42S4Jigg1osTa+mKbdasWfLoOBPshk5DjouPl0box2Dws8+gT9e2Oq1bF5XtkJIPYmtSL4DrwukClHWYnIBY+6t+TT9palZg73mui2RyF1DHAYedT5FHA9Wr4Qtn6WeDGwUsTcDa2koaFRcod3vnGfO5J7Zt3gArFnyP3r16WNolZX/1IMBEnB5QdVHl9h178PY7H+PY8RO6qM7odVy7dk0eDVe9enX5aVejB8QAKGAkgTFjxshP0vz000+ceslI16CwZsXacIsXL4a3t7f8YXhh5bifAuYu8MILL8Dd3R2///47kpLMa2oRpV47MQpObFwXTqlXiHEZQkDMmtGpUyecOHFCXqfSEG0quY0PP5qKfgNfQEaGNPejwjaxNtwJaTScq7M9qviVU1h0DIcChhOoU60ibFTW2HsuFWJ9MG6WKZCVpcGe8FRpRgMrBEuJOG4UsFSBQF9PuLs5QoyKi0nkSGFL/TlgvwsXYCKucBujHqlVszoGDOiLgEqVjBqHrhoXH26L7ZVXXuF0S7pCZT0mKSDWQXn66acRFRWFLVu2mGQfzDXolStXIi0tDS+++KK0PqeDuXaT/aLAIwVcXFwwdOhQOQm3Zs2aR5ZngdIJnD17FocOHZLXhhOJCG4UsGSBUaNGyd1fuHChJTPIfa9dqxaaNW0kf7CrNIxDl1IhUg61gyoqMj6leTEe8xVwtLeFWA8sOU2DszfTFNHRGbMXYPy7n8tfX3z3qyJiMvcgzkdl4F6qBlX8y0GMlORGAUsVEDMciPcGYjt82XxGxVnq9WS/dS/ARJzuTXVSY/16dfDS8OdRtWoVndRn7EqWLVsmr3siplziRgFLFxg2bJhMIH4vuClHYPny5XIwIgHBjQKWLpB7n1q6dKmlU+i9/7n/L8g113uDbIACChbo2bMnPDw8sHr1aqSnm8/6Io9D/vKI4Zj+yfvoN2AYRv5v+uNUobdzjl7JvjY1qpTXWxusmAKmIlAz5/fgyGVl3LOWrFqP735ZJH8tXLHOVBhNOs4jV7ITDrk/CybdGQZPgVIKVA/0hpSPw5HLyng4oZTdwfnL1zBn3iIcPWYeM9aV1oPnl06AibjS+fHsYghERkbi4sWLaNGihTzlWzFOYREKmLVAhw4d5PXHdu3axTVQFHKlxbp9Bw8eRI0aNeQvhYTFMChgNIGQkBD4+fkhLCxMmhYtw2hxWELDu3fvlrsZGhpqCd1lHylQpICdnR26desmj8g9duxYkWUt5aBKmvZOTHemlC0pTY1b8WqU83CBi6O9UsJiHBQwmkBFb3fY2apw+XYG/7Yz2lUwXsMajQaXbmXKU5T6lS9rvEDYMgUUIiBGhfp4uSE6MQtiKmtT3y5djcRvi1fj1Kkzpt4Vxq8AASbiFHARzD2E/fv3y11s1aqVuXeV/aNAsQRsbGzkxLSYnvL69evFOoeF9Ctw5MgRZGZmgvcp/TqzdtMSaN26NVJSUuT1mkwrctOJNjU1FeL+ExQUBB8fH9MJnJFSQI8Cuf8v3rdvnx5bMZ2qVyz9HT9+9j/FBHz1TvaadRXKuSsmJgZCAWMKiKnYfMqVQXK6BnfuZRkzFLZtBIG4ZJFsyEJ5KfGgpIcmjEDBJimQJ1BBuieKTTygYOpbg+Dq+HLqm2jXtrWpd4XxK0CAiTgFXARtIaxdtwHPD3sFe/aGaTtsUvvEgutia9KkiUnFzWApoE+B3N+HkydP6rMZ1l1MAd6nignFYhYlwPuU/i/3+fPn5RGHudb6b5EtUED5Arm/D5b+HumXefPxzvufyA8KKemq3YzNTsR5e7ooKSzGQgGjCnh7uMrtR8Ya/0PnLat+QeyF3fLX7n8WGNXFEhqPzLsnZv8MWEKf2UcKPErA2zPnnhhn+iPivD3LomXThvD1rfCobvM4BR4pwETcI4mMUyA1NQ1xcXHShzPKmGe8NArh4eHy6XXq1ClNNTyXAmYlkPv7kPv7YVadM8HO5F6H3Otigl1gyBTQuUDu70Pu74fOG2CFyLXNtSYJBSgA1KpVS2bI/f2wVJMTJ09h954wZGVpFEVwW5qWUmwe7s6KiovBUMCYAh7uTnLzub8fxozFyckBLs5O8pd4zU2/Arfisx9O8CiT/TOg39ZYOwVMQ6BsznuE22aQiDMNcUZpKgI2phKopcXZr28oQkN7Sk9AKmc9gMe9BrlT71WtWvVxq+B5FDA7gdzfh9zfD7ProIl1KCIiQo64SpUqJhY5w6WA/gR4n9KfbW7Nuf8P4L0nV4T/UgDyOrq+vr4WP333e+9OhsoqAwsXLUMZOzX69WiviB+P2KTsRFwZF0dFxMMgKKAEATeX7CRMbLLpj/5QgqcpxRCblD0dqRvviaZ02RirngXKOGe/R8h9z6Dn5vRafWpqOhISY+AER+k9Kt/76BXbAirniDgLuMjG7qJY/8TW1hZiXSxuFKBAtoCTU/Yfa2L9JW7GF8i9Ds7OfLrb+FeDEShFIPc+Jf4/zk0/Arz36MeVtZq+gLj/WPq9x9PDAxV8yuPX3xZi2ZrNirmoGTl5BhsVP0pQzEVhIEYXsLHJ/n2QlpzmZmECGersUcs2NioL6zm7S4HCBcR6ieIr0wyWzdy+7wieGjgKq1avKbzDPEKBYgowM1JMKBZ7fIG0tDTY2dk9fgU8kwJmKODgkD1NiPj94GZ8gfT07GmA7e3tjR8MI6CAQgRy71OW/mG4Pi8H7z361GXdpiwg/n/Me0/2FZz28btwykpQzOVUSx+qiQ/XrKxMf+YWxaAyEJMXyE1M5yaqTb5D7ECxBdQ5Dyeo+HBCsc1Y0DIEVNbWyMxJVJtyj708y6BFkwaoWJFrxJnydVRK7EzEKeVKPBBH+LkLOHjkFBqGNESlSv4PHDWtbzUajfTHGp+YNK2rxmj1LZD7OyF+P7gZXyD3OuReF+NHxAgoYHyB3N+H3N8P40dkfhHk2uZam18P2SMKPJ6A+J3I/f14vBpM/6zwc+eRmZ6Eli2bwjbxpnI6JL11ZQpOOZeDkShDIDcvben3LWVcDeNEkfszYJzW2SoFlCcgfifM4dOuRsE10aBRE2nudA/lITMikxNgdkShl+zI0ROYM2ceLly8qNAIGRYFKEABClCAAhSgAAUoQAEK6EPgx9lzMfHND6Q1w3OGW+ijEdZJAQpQgAIUoAAFKEABChhEgCPiDMJc8kaaNW0MF9cyqFmjZslP5hkUoAAFKEABClCAAhSgAAUoYLIC7du1Rf16tZGYmIjM1GS4umSvL2yyHWLgFKCAQQRee+sTnL90TW4rsFJFzP7yfYO0y0YoQAEKUIACFChagIm4on2MdrRyoD8q+vpJT0By4g+jXQQ2TAEKUIACFKAABShAAQpQwAgCvZ7qCUdp6dp2HbrB18cLS2ZPNUIUbJICFDA1gQPSEieHjp+Ww65bM8jUwme8FKAABRQlcORkOBb9vQ3devZA2zZPKCo2BmN6AkzEmd41Y8QUoAAFKEABClCAAhSgAAUoYAECjRuFwMtVyshxowAFKEABClCAAhQwqMDtu3HYsecAgkNCDNouGzNPASbiFHpdM9VqpKerpUXKVVCpVAqNkmFRgAIUoAAFKEABClCAAhSggL4EvvpiKlQJEfqqnvVSgAJmJlC+nCf8KpaXe+Xj7WVmvWN3KEABChhWoE3zEKz84zu4ePkZtmG2ZpYCTMQp9LIuX/E3fpg9H5MmjkeH9u0UGiXDogAFKEABClCAAhSgAAUoQAFdC3zy2ee4fPky5v80A3wsU9e6rI8C5ivw1x/fmm/n2DMKUIACBhZwdLCHvZsr4ORs4JbZnDkKWJtjp8yhT54eZVGjRjW4ubqZQ3fYBwpQgAIUoAAFKEABClCAAhQopkBsbBxu374rzZBSzBNYjAIUoAAFKEABClCAAhRQrABHxCn00jzZqR3atG2LzEwrhUbIsChAAQpQgAIUoAAFKEABClBAHwJfTP8EjtLScB9P+QSezjYY+9IAfTTDOilAAQpQgAIUoAAFChG4GxuPizcuw69qTVSo4FNIKe6mQPEEOCKueE4sRQEKUIACFKAABShAAQpQgAIUMKjAlq07sefgCYO2ycYoQAEKUIACFKAABYBDx85i7FvTsGXrDnJQoNQCHBFXakJWQAEKUIACFKAABShAAQpQgAIU0L3AH7/NgV3qHd1XzBopQAEKUIACFKAABYoUCPT3weBnQlGrZo0iy/EgBYojwERccZSMUCbswGFs2rIbXTp35i+7EfzZJAUoQAEKUIACFKBA4QLpMafx96LFWLc1DKfOX8Pd+ESka+zh5umNgKC6aNk+FAMHdkNQWf65Ubgij1CgcIHtO3Yh8V4s+vbqArskLhRXuBSPUIACFKAABShAAf0I1KgagGq16gJOHvppgLValACnplTo5b58+Sr++28TIiMjFRohw6IABShAAQpQgAIUsDgB9S38+9ULCKkWgv6vTsGvKzZg//GzuHQ1AhHXLuL0kb34d9lPeG90LwRXb4rxPx9AksUh6bbDsWfXYHL/pzFrLyV1K6vs2lat/gvf/fAz1OosZQfK6ChAAQpQgAIUoAAFKECBRwrwEdVHEhmnQOdO7VGnbl14eZY3TgBslQIUoAAFKEABClCAAgUEspLPYOaw/nhr+Ulp9FuBA1pfapB69wi+GdkVV6P+wh/vtoKT1nLcWZhARsxR/DL1bUyd/R9uZgTh03GFleR+cxQYNLA/UpLjcer0GbhkJaBmUKA5dpN9ogAFdCwQ+uyrOHY6XK61VrUq+G/ZHB23wOooQAEKUIACFHgcASbiHkfNAOd4eLjD2bUMMjOtDNAam6AABShAAQpQgAIUoEARAlm3sHDcc/iflITLzEvCWcGuTACatn4Cdap4w1EdhwuHt2Nz2GWkZOUUyorBXx+/iK9b7sO7HcoW0QAP3S+QjvUfvYgx3x6GGA9lxb/a7uexgO+aNW0CR3ugXYdu8PXxwpLZUy2g1+wiBShQWoE70bGIvHVXrsazrHtpq+P5FKAABSxaYGfYUXw7bzkGP/csngrtZtEW7HzpBfgnXekNWQMFKEABClCAAhSgAAXMWCALEWun4a1fj+Yn4ayc0eL56fjh85cR4m1boO8ZOLduKp4b9hkO3EmX92dlnMcvny3Ai21fQwUVHzIrgFXkS40mL+NZZDkeNG+Bp/uEoqyjefeRvaMABShAAQpQgAJKFEhNS8ftuzHSLAUpSgyPMZmYABNxCr1gMTFxuHkrWpqa0huurq4KjZJhUYACFKAABShAAQqYvYD6IuZ+tQw3M3PWqrKyRbPhv2HNnKfhqXqw97ao3v0DLPruJp4Y/AtuycPnNLi2azW23xyFgf4Fk3bi3CzcPv43fpm/EtsPn8fdRMCtnD/qt+yKQUOfRdNKDg82gKzEU1i+YGtO3SpUazcUXYPtcS1sGX6etxK7T11FgtoZlWq1QK8hIzCwfWXYPVRLzo6sOBxY9SsWrNqMYxduIVlKMJavVBttug3AkEFtUMH+wcShGpd3LMa6YzHySDWVa230ea414tZ/jSmz1uJSsgtqNgvFqHHD0cwvO3uSlXwVGxctwMrNYQi/HIX4lEzY2LvA07cK6jfrjMFD+6OeT75L6tXt+GPNERw+lT2iQY5Uk4Cw1XMw65AtHPxa47k+ISiYm8mIPYnlv8zHX1sP4fKte7Bx9UJg7ZYIHfg8nm4diPzaC4PgfqUJqNVqaX044LVXX4bNvRtKC4/xUIACChVo3rgePD3KyNEF+vsqNEqGRQEKUMA0BJ5s0xQdO3UEnDxMI2BGqWgBJuIUenk2bNqKH2bPx6SJ49GhfTuFRsmwKEABClCAAhSgAAXMXSDp1Cqs3H8bueOz7Dx74N2pT2lJwuVKWKNK39fwSs8LOOxcB02aNEXz5k+gWcUH0kFZd7Dm4xcw4rN/cSstJ8knV7EPW9cvx/dff41XvvgDX74Ucl8iLSN6N2ZMGod9SVKWQkoxDZ7VAinL3sEr0//D7fT8eg7u24ZVv8/G0jeXYuG0TnDLDS/n3/Tb2/HO4Bcxc/NFZOR2Thzbtx3/LJuLGV8NwsxFs9G/rnOBM9U4ueJrvJ4zZaSj7zC4qJbgvZd+wbWctsN2b0eqfxcsHhuExPDFeKnfa1h68m6eX35lu/DfqgX49usfMeXPZXijUwVYSweTT63E5HGzcFedH5RGHYVVX0zAKum4b/uv0espKREnJ0GzcG3LZ1Iy7xPsjki6r4092/7Dojlfo8Xg6fht9ssIcnwwqZgfCV8pT2DCpLcQHn4OG9ctAf9oV971YUQUUKrAN9PeVGpojIsCFKAABShg0QJ8T6/Qy1+5cgA6d+4AHx8fhUbIsChAAQpQgAIUoAAFzF8gC5e37ca5vESZNap2fBrtC4zg0mZgZVMPH67aqu1Qzr4ErH9/AAZ+shXJ+fmmAuU1yIg7he9H90S6jfSA2rBqcpKqQIGclxqE/TwUa06cQEJ+Di6vmEYdi3+/eB1zehzApJb5CTV1wl68+dRAzAyLui95VeBERJ38E8O7JsFWGgHXp4r2MXUZ9zbhnfFRiCiQALS2b4xuPStBk3oYHz4/rpAkXG5LGqTe3oOPRnyAVidmo7mLSMUVf7u9axqe6vsxjsVnaj1Jo47HngWvoU+SDdYvHg5fGybjtEIpcKe/vz80GjWseMkUeHUYEgUoQAEKUIACFKAABUomULK/9EpWN0uXQqBZk4aYNOF11K5VsxS18FQKUIACFKAABShAAQqURiADZ05fRv7gLBWq179/WsTHqT1+/7d44+sdeUk4mzLBGPXlUuzYuxPLZo5EsEf26LmsjBuYP/kdbLilPdEEZOLCsZNIcQvGix/Px4adu/HvgvfRzt8ZufkLsUbdPysPISMv0HRs++JNfL8/NwlnDZ96z2HW8q3Ys/NvTH+xBdzkv5I0SLrxFz54ZylixOA7LVtmQgQiogvGZoXyjbqjQ4AKV1Z8i58P3cpO9FnZoW7oe1i2aS8OHtiD9Uu+Qt86ZXNilNqJ2I5tx7LXnrCv1AzPDX9Bmm7TMz/5aO2O5r1fwIsvvoh+3evKo+E0aYfwydhvcTw3CWfthiekdfv+2rYH2/76DoMb+WSfr8nAyVXvYvrym/J0mlq6wV0KFJgw/nXM/eFrvPzKOEz6eJYCI2RIFKAABShAAQpQwLwFrkZEYemqdTh79px5d5S9M4gAR8QZhJmNUIACFKAABShAAQpQwBQFMhEdfa/AqDEreHjnJHgKdEeTfhAzxs/B6TStw9ukkjYI7vseXuvuKyWHErF2zmKEp+Rkt6y9Mfybv/DdsMrZiaPmLRHinYGWz/2KO1IGMO3WP/h96RV0fi0oPzFVoG0rm0BMXLARU3uWzz7eqiXqOEShwcCfEC1nENW4cemSlLJrI6+VlpW4BXN/kxJzOaHalw/Fj2vnoXfO+nUtWjZB2aT2eGXxWSlxlYXTa+Zh/fUBeDbwgak1c2KwtvXH0M9/x5Sh9ZFydiN2RzeURp4BZ6Xk4AsvDsGVa9cQld4M3/z5IZq55jwH2bgFaqUcwroXFiJVikOjvoWbEdmpQue6z2LG3H74+/Uj2HAiWm7FSjLqPWkW3iwwqu/Whl+x8Fh0zrWxRq1eX2PlvOHwVokUZAu0aOKDhKZDsCZCSvBl3cJfPy/D5GfGooJ8vAAgXypa4MrV68hM81J0jAyOAhSgAAUoQAEKmKPA2QtX8c2Pv2HMaDvUrFndHLvIPhlQgIk4A2KzKQpQgAIUoAAFKEABCpiWQCYyM7MKJOIAK+uHJ9XQZF7Fxj9/w/r4/HFn9/fTFk9VGSMn4jRpR7F5x/W80VmOPt3xfP+AAkk2afrL3s+ha6VlWHD5npSlSsGBLTuQKCXiHlznTbThVrUXBjzpXeB8wLtZY9Rw+AV75HXkNEhPSoLIEYpl0hIOSCPfIrNHnwEq1On5ArrnJOHkmK198PTw7vhgeTgiMzVQJx/A9u0xUiKu/P1dyi6Mqt3fxxevtcteM69FfwTllKodOgEzQh8+Jfn2GezavB6rFh6QkoO5WypSUgpLYuaWKfhvOsI27slJNErXROWDXi8+k5OEyy5nV6EnhoZWxz8/HpOsNbixfysOxb2Onp65YwUL1sfXShXYuulvqKSRl9woQAEKUIACFKAABQwrUKdmFbwzYRRq1m9g2IbZmlkKMBGn0Mu6cfN2LF/5D54dNBCNGzVUaJQMiwIUoAAFKEABClDAvAXs4OpiL0+hmJ0m0iAhJlpK7Hjcl/gqiUFG7HlciErOO8XVvxI8UuIRl14gQaSpgMoBToBIxElJpDtnT+KKlEmrZ1+gTE4Nbv6V4ffA2me2Zd3hohIJw+xRd1mZGcgQa8ipsnDn3EXckhJs2Zs1KlaqiMS4uPv6o/YNgL+dtZSIk87XpCL8ZLhUXEsizsoGjTt1RllVTnVa/smMO48Nq1di/ZZd2Lf/EE5eiEJK/lyf2WdoNPclO7VUc/+urFiEn7+dl8yEtS/8K6YhTupH/qaBf2U/qV8iEScNiksJx+nwFPQsMKouvyxfKU1g6bIVuHPnFsa/9qKULuZGAQpQgAIUoAAFKGBoAT+fctLfClUAJw9DN832zFCAiTiFXtTo6BicOROOhIQEhUbIsChAAQpQgAIUoAAFzF/AFlWDKkqJgPM5o7eycPnsWel1NdgV6LyVtSv8q9dCneT8xdSS71zCldspDyWYMmNiEC+Nssvdbod9jNpeH+d+q/XflLtROaO/HkzEWcHOxRXOD2YqrG1go3UKxizERMcXiCkDaz9oCs8PtDabszML0VFR2gtYlUFFP/f7knj5BeOx4/s3MPL9BQiPySjQZn6JvFdWVrCWvoq7aaREXExcel5xTcYBjGnojTF5ex5+ocm6i6io/OvzcAnuUZLAnr37EB5+DmPHDFdSWIyFAhRQuEBiUjLU6uz/x1pbW0kP0zgrPGKGRwEKUIACFLAMASbiFHqd+/UNRffu3aTotK9FodCwGRYFKEABClCAAhSggFkJ2KBm0xB4qHbgds56axd2bMbp1J4IcchPHFk5dMbc/Z0L9DwDGye3RbfP9uaMScs/JKa2LEHOST5RnZqC9PzcXX5l0iuV6sEsXPZh7W1ICS/pg8mSbdI6dSmpWk+xsnKGm5sYeffgloXzi99A/3HzpdF3uYFbQeXgger1GqFJk+YItt2L92duRPaMlJKJtmoerDbneyupsPb+FXKC2C2N7EtNzY2liHI8pAiB8eNek9YOTMW6fzfATZWGJ9s0VURcDIICFFC2QKe+I3Do+Gk5yLo1g3Bk6zJlB8zoKEABCihYICsrS364wUr611rL9PwKDp2hKVCAiTgFXhQRko2NDeztVdKaHCX9oEChHWJYFKAABShAAQpQgAImKVD2iS5o5/sTll7Lnk4y/sIizF46Dj88H1jISLCiu2nn7Q1PWyl5lpKdFKrYZio2LRwO9yISUVZW9vBwKaRAiTJSKniX94QYLJc9O6Ut+n66D7OGVpCn39QeuZS8cyhTyCE72GmZLlOTGY55M9fgdk4Szto+CC99MRvvDWsHP9fsxOHtJcOlRFxutVYlS6ypyqG8l0PelKFWdq0w58Ai9CynPSkptyI5ObkX0o/cMPivYgQCKlWCoz0wavRY+Pp4MRGnmCvDQChAAQpQgAIUsBSBjTsO4IMvf8KY0SMw+Nn+ltJt9lNPAkzE6QmW1VKAAhSgAAUoQAEKUMAcBFRuHfHS4BCs/GxPdvIq6zZ+nTgUdaosx5hW5bQm41Kj9mFjWITW6RitXWqjbmVXbDkWI/NEnzuNSKfyqFU2P9GmjtuKqZMWI8HbF35+/qhStzW6+ehmbYaywXUQYGuNc/IQOzUunr4AtwoN4VLgYkVu/ArvL7+O8n5+8PcPQEibHihftkCBvJfWkJeiy/s++4Um9TSOhedPgVmhxShMGd0B3nnTZaoRcT0SGblL1UmnPZhPtLpvhwbSg7gFNhfUq1cJ1muuyyMONZkXcPaCPUbUK1egTDz++uwtrL9VVjKU+hFQFx16lAdTcQWITODlhPFj4GKVYgKRMkQKUIACFKAABShgXgJurk6oWa0KPDx083eIeemwNyUVYCKupGIGKn/l6nWcOnMRNWvUgo+PloXhDRSHJTeTlXwMv329ClcKfkIiQKQPRcR0QCqVDWztHeFaxgMVAmqjZevG8HEy8ghG9TWs+u43HI3JlC+dXbmWGDGqi/ShT/Gv5N0DC/HD2vDsaaSsbNGw70T0qudQ/ApYkgIUyBOIPbwEs/46/fC0bOI+Yq2CysYWDo4ucPcsj8q1m+OJxv7Qy2+b3u8Nidj5+yxsupg9dZu1bQ08++YgVLPV3z1RHbcfv8xahxvZQ1ryzIv3wgYN+k5C7/p60S5eCCxFAZMSsEO78ZPRd/GzWHb5npxcS7+zA+O7tcDOURPxynM90by2H+zS7+LCsZ1Yu3whfvn1L4THal8XzcquLkK718T3x/bI98e0Wyvx0bvPIHhmL5SzEfeNZOz49hNM/2VT9rSN0vuRdhM3o3vrIJ2oudbris41vsa5E7FSfVk4sfxjTH+mOT4KlRJbYk/SEcz48Ev8sidK7qu1bU18tr07mlXR1nwhI9mk94oFp8CMObcXB6NeQ3ff7Gnn484swkc/7irw/wc1Mu6be1Na+87eNn+UniYJifcKZuJs0Si0Myp/sQcX0qVsXtYt/P7Be+jZbBba57QRc3A2Pvr0ZxxJEO8LreBeazx2hLaGn7ZucJ/iBG5GRkrXNQ09e3SBbeJNxcVniIA0mjvY+cdPOBSVITdnpfJDpxeGoW7ZEvxxU2SgiQhb9h32XEmTS4n3L71eHYBA+T5U5Il5B9VJh7Dsp38QKf/NaAWXak/hhd4hKP0HLaWPLS9I6UV63BlsWbUEm3fuxblL1xBzLwO2zu7wrFANIc27oEf/AQjxdSx4isFfp17bgAXL9iJRvtVZw6/5MDzT2t/gcZh6g4P6dkOrZg3kblTwKfhwhqn3jPGbioBGfRorZi3H9Qc/SyuiA2Lmg/qh49G+hjQUHLq9/xXR7GMdij6yCAs3nZPXTraS3qPW7TEBnWqJuLmZo0CLRsFo1qIl4MREnDleX0P3qfTvDw0dsYW0ty/sIH6YPR+TJo5nIs5I11yTehJ/fDENW+QPLx4VhBUcPIMx9N1ZmP56G5TJf6D7USfq9Lgm8xrWfv8l5p1PkOt1rz0BvUZ0LvD09aOay0L0weWY+vEqyH/uWjni5aqvMhH3KDYep0AhAgnHVmPax4uRXsjx+3ZLb+Ir1nsaH30/E8Of8NY6wuS+8iX4Ru/3hqx72PPnd/h4Q/YHhSqnUDQdN1CvibiM2EP45bOp2J+sLoFEblE7vFTlNSMn4pJwbPU3mPJ7Jj5Y9D6CtUxtlxst/6WAEgRsy3XHN/MmIrzPVByLy/5QXJ14Ecu+GCV/yeu+aaRRW9KXtk3lVBnBwbkfCNqi1Suj0XHeIWy4JX0ALq1dtuPH/gjZ0R4dm/kj9cpe/Lv1TM7aaYCdZxe8Oqa5zlZOtrJrgNHju+HPEYsQK617l5VyCp883RD/duiMED8rnN/1H3adi84ZzWeNoG7jMKSpk7ZuFbrP2qEuQmq6Y93uW3I9KTdXYECzlujaKRi2MaewdeNBRBVcr02Thbjou1Ja0CPn/m8NLy/3vEScRh2FnycOQuQyJ9yx6oQ5c0egYuPheK377xi/+qJ0ngZ3T85F95Bd6NS5GcpprmPHuq24lPs+1toDT78xGnV4ryn0mintwOdffI3w8HPYuG6Jzn72ldbHR8Yjjb7dtXAmfjkqkuZSOtmmCXx7D9FZIk6juYfDK77Dd9tvy/VbO4aiwQiRiJO/LfCfJJz6dya+X6bG2B/fRY0Cv0eZ945ixbef4nBK9vuRgK6BGKKDRFzxYysQppaXGk0M9sx7C1O+/BPnc+7d+cWu4er54zi8YwXmz5qGbq/MxAcTusNTV3nO/IaK9SotYjPmzfgmZz1SG7R8tRMTccWSu7/Q2JHP3b+D31HAwAKa9DPS51KfYWdi9gPixWveDUOrjZITcbq6/xWv3ZKWykLssWX47uu1ciIO0mO0zwaOYSKupIwsTwELFTBSusBCtUvQ7ZD6wXh5xDAEVa1agrNY1HgCGqRGH8ecCaEY/ME2JBkvELZMAQqYqoAmAzePLcaoHqGYuSv7AydT7QrjLkogC1GH/sDoJxugWd//s3cVcFEtX/jbXbobQRSwCwMRFLsTu7HzqX996vPps33qs7sLUVEROzEQTMLAQFGxlRAQkEZq9z/bwdKLhHP9XffGzJlzvrvM3plvzjmLcPNVvGCyP6869B5FoCwgwIRZu0W4fHENulTTERFEQs04JG6iXBKOoYJqjhNx+PZ9LHeqJFpkoFZ1KLbtmIBqGoIZX24f+JJ4Q7i44JT3K+IRwSf0mKrVMHXbFvSz5HuSCdsr3icLdUetw6axTSCcT2dnxiLwujtcXI7jbkgssYXbAgO61Ydi09axqCQKKVnAllnVMX5mX1RSEg63OEgOf4zTh13hfukhItMZsHTshiYGQruy8fb5U/D9irltsFCjhR0qqwg9i9mIfnUFrq6ncPfuC/AchIh30ORtGzGkrr7geZD30ZhgXD5+EK7uXviQkMXvX8gzsHMmxP+YaiL8C2gFLVaKCDSza4oundtJeVaWojq/adNsRAUdw6IhTTFg3DL4veUvdiwvYHDYoTg9twcmLjokh4STtoKd9gVXNg/CuP8dQWRR1jhJi6NnFAGKAEWAIkARoAhQBCgCMggIR4Yyl+lpaSNQp3YNDBrYF1WrViltVWj7AgQYLDXo6utDn+x6JNG9toYKWFK5O0hBdiKurp+JAw9TKW4UAYoARUAGAQaU1LR5fYi+vh70dLWhrsLKkRMoK+ERVk1fj+B0+V4lMkLLyCkTqtqaAtu4/aR2ia/eZzBVoa3H75O5/bJw19NSlSAIGGCpaonuCcvo6xuAdOGlsnHS/bBw6DTsvvkO5eoRlwpatNGyhwAJFdZ6Nq4E+sNtxTi0qGEIuRHcSFhGLdO66DpsDg5ce4EXvvvg3Ew2lxwLtQduhfeVTRjUzAI5ItkylGBatzfWn/PChmHVFU8gsSpjzB5PnFs/Fo0qqUv0G3zUmUq6aNp3Ec57H0RPq6J0GExYD1yHE1tGoaauRIhJIp6pao7u01zgde0wJrSzELTNxtub5+EbJw4/qetI8spNbAFtppCM4+uWGhOFOEFYXtUqfeDqcwHLRzjCSFV2aEfCW+rVwYilZ3DRxRlmch9W2fuWUY34CDgPH4oF82ahc7d+GDZ1CYWlRBBgQkVTCzq6erxdV1dTKqQkO8MPGydPg/vdj/xoIXJ04L6PaOroCmToQ1OrKP2FHMHFvpQKv83jsOzoE/ADb/IFapjYoH3f8Rgz6X8Y3KcDqpL+Sbxl4uWF2VjtEiwRNld8lx5RBCgCFIEiIUAWBGkJ+llhf5vjU08PamRszN/y7puLpAOtRBEoIgLBbz9i3db9ePDwcREl0GoUATECOYIuiG/RI4oARUASAXXzkbgeshcO6uLJkIy4EFw+uBJ/L3PHxxT+0kF2ejA83Pww1b5TiU9ES+pHjykCFIGyjgATTcZ44P7u7hBP0WQh+rU39iybi9WngvCTx71xEPvyBM76L0T9dppl3Si+fkxTzDz9FjN/obaqluNwM3xcjhajPcbCctghAZYMNHR2Q4BLXwnMc1T55Rc41Aful2NOG1QsAkp69eC8yIXsu/Et5AkCn71B6PcEZDI0YGhqBgurerBrUg2awvmUXJtnwardDJx8+AfCX/rB7/EbRPz4CSUtY9SwcURre2toyHJLRJaq5ST4J0/KVSr3BlOjHy7HSk4/yynOMkX3vw6i2//W4rnffTx9E4r4dCZ0TKzQ2LENmljpyCEAVeC0NRDZW+XIy3FJB22mueLlsPm46+OLkIgUEsrcCg4dOqGBGT9HZc0zHzE1Rz3BBUIWjtxxB52m3oWPbzCiU1gwqFwDTVu2QgMtMTCqlVpjkZsvZm8Ihq/vY7wLjUMmSxOVrG3Qso09LLTzfRC5aUCvlwEErKyqohJZ4EI3xSPAYJhivMsbjM9VNPnFzmddlIrJCBx6VvZCAaaE7MPa3ffEXrYMLTiM2I7VS4fDUlM8nk3/fg+bp42By71QEuKWbJxE3Ny7BU+H74OdlrhcrhDRGxQBigBFIB8ElI0Gw+WBC+wk5tLyqpJ/35xXbXqPIqBYBMIivuP8lZuobGkNB3s7xQqn0n47BCgR99s9cmqwIhFQMaiN/nMOotLPb2i7xBv8xclZ+PL8Cb5nd4Q5CWOUHuGL4+ee8JNOkwGQnZMzGrK9sXrZdni/SYJhdXsMnPwnhretKjVRnPnjNS4ePYbLtx8h5GsMmVDRgpFFTbRo74Rhzk6oqSeegMnbpmyEBnhgj8tZ+L74ilSWDqwbtMagcZPR38FMzgRT3tKEdzN/vMRpl0O4cCsQn6KSoKRtBKt6jnAaOgoDWlvlICE5WR9w4cA1krCXO8QjE28th8LJVgvvbx/F3kMX8PB1ONKUDVG/RW9MmTkR9pX5VEXKlzs4sMsVV/1f4XuqMsxqNkOfsdMxukt1KbyEetFPikD5QkAJJnW7YrGbBVK+tsf6gO88ioaTFYagwAigXU1iDhvfHp7F2Qff+BMkDE007TUCjlZiOo9rc2zQRXjc+cJfwUxWHdbvOhYdakqXkcZGkX1DKh6fd4N/KD8bHlPZGj3H94RVDhcXboinSzhy/BLuB75DRFwyGGp6qFqrEdr1HIER/Wyh98vni0m4N4Kdy6GzuPPkHWKSAR3jKmhEQsYNGz0c9lX5k+XS2PHPYt9ch9vRc7j3+DWPhEhnK0FbvxKq12uGroNGYmDbahL9FAk753MU14OC8DZRTA6kJ7zAyd3bcYelhBptR6B7Qx1RU4WTL6pGDygCvxABFZjVTQDflQAAQABJREFUbo5eZC/epoLKDdphENlLY2OoGqNx+35kL5nWVQxqodNAshdJvBLM6nWAM9nz2zRM66Nzf7LnV5DeL1cIuB7YCVZiWLnS+Vcpm53yEldP3UEMbz0kC9aOI9G2rirCnp7GyePn8CTkK5KytVC5lgP5G5wAp5ayY5RUBF07iifh/LyXTGUrdBjeAxZKbHz0PYZ7r17gc7I402960gtcPrIL/kxuW86kLW2wU4Nx9eRtMvbjWs2ApmV79OtUV8qzDkjDB7+TOH/pJl6+/YzYhDRwWMRDRM8clrXt0aH/SHRsbEZGSIraUnGbjNNepwg9bBmo3nUDNq92hqlMI6rGrTF712Z86TYCN8L5wXF/fruCa7d+kHGrQQ6FOJx4BN90x6VrtxH89isSM4gHtH5l1GjcDl36DUOr2vo56khe4GRGwu/0fpy/cR8fIxLA1LFAgxb9MXTsEFSSLJjrMRsxr8k774nzePTiPX6QnBBahhao26w7nAYPQaPKub+35SqS3qAIUATKGAK59c38xQHF7/uF5v7qvlnYLv0sTwg42NbHgW3/waRq9fKkNtW1jCJAibgy+mDOnLuM/S7HMGP6NLRt06qMaknV4iOgjHotm5JBjQ/CBWGC0hN+IInPNyHt7SUsnbkOoeQeg2WOWVosbF41HaffJfJ9Ih764nlkZXT1mgUzXv6RFDw8PB+T5+7D8+h0ab+JB3dx7cxBrFvliL+2uGLRoJo5CC/Jp8Jhx+Pq8l5Yv8EL3zOEAzHgkZ8PTrvuhtO8Izi4rCsMZAZkkjJyHrPx1WcNnEevgm9YipR+frevw33vJrRwXovDeyahhsSKJ07Gc+ybPxtX47mDWWX0+a82Eo6txPRtdxAvwI3b1iNfL5xyv4q9V93R7ON/GDJhM57HZIjbCfSD5yk3XF50BseWtYNWTgXpFYpAuUOAoVITjiQ0G0NAxHENSPghzBPHxqfruzFziQ8vITS3H5lnPUiGiCN5x+64YOaMi/zQSYT0n3psSK5EnML7BnYCvHcvxz83CHlINpaGE6qN6CFFxHGyvuLY3LGYtfM2YiT6I255bp905vAObGo1E64n/kNbc8kwSdwSJbSxv+PS8rGYuOYqotLFfSQQgFvXTmPnpk34Y/1RbJjQWIJQ4+qSjLtbJ8L5n5MI+ylZj6+n760rOLJ7I3aP2w33XcNhwSMks/DkxHrM3B/MJ1QFJv2M9MZ/s7zJmTKGbu2BroSIYxZJvkAg/aAIUAQoAhSBCoHA9h27ERr6FZvXL1UgQVMhoBEZkRXnC9flf+FZGve3mDu+aI60i4uweKcX4jLFrmwvn9zB9ZP74DndHVv+6SgaP3A4CfA9tBwb7kTzZDLVnWA1gEvEZeHluXVYceyteAxCSmRE+2AXeR/jtuW0ojtaEyIuMzEAh5bPwZM0HhMHy24H4CRBxLEz3uH4XGes9ngm9k7jtcb/7+Hdizh9cAs6Tj+MdX93hm5B11pKyJA9ZKcH4OatT6L3DQarJgZNG5qDhBPWUzHqDucRXZEQqIkGjZuhkV0L2NnpCm+LPn+8OY6Vs+fj4lPB4jDRnUd4cOc8ju9ag7ZjNmDlokEwE+W3FBVCeuRVrJwwGScCI0W6AU/w5D7BgCxAnTzeTApvcU3+EYfzHTc3jMeiHdfJu6T4+QIPEXDrLNz2bMaIJUcwz7mhzHubrCR6ThGgCJRlBHLvm/laF7fv50opjb65LGNOdcsdAT0dEsLayAzQyLk4Jfda9A5FQD4CCnjNky+YXi0eAioqytDW1oKy8i+ajCyeur95bTbivoYjIVs8GGCpa0BNTiQPDicJp5bOxhkhCcdFjniuNO/ZkwyMuBUy8GDnaPScsBPPZEk4EcocpET4YqVzB0zd/zLXfAXc4onvDmH+6utSJJxQDDszGhdWDcGEdY9IqwXfou//h979l+K+DAknlMDJToCf23T0G3lQREwK74k/2Xiwl0x+b74tRcLx7xP7wj0xY0Br9Bi5Ac8kSTiBAE52HC6vno59D2guPjGm9KhcI0CIrNDQeKnJB3UNjRIzqST6hjyVZUfCbUpfjNvik4OEE9XjZOLTvY0YOWQtQvgxOkW3SuYgEdeWDMHQ5VdkSDhhaxxkxgdj59RemHHoncSEERBxbQlGzZNPwglrg52E+y5/YOqah3n206LyEgclLV+iKXpIEaAIUAQoAmUUgQ8fP+LFy1f5hkYso+qXglpsPDs2DnO33pAi4USKkAWKt3fOgvvjXzl+SIf/tj+wKhcSTqgbJzsG3tunwPVeovBSsT7TPj7GazKWFG6qldrAvoG68FTOpzJazTyF426HsOCvaejZ1hamMrGFk0P2Y+qQSTifg4QTi+N6u93ePwbj/ziAUCmijEx6pz7ChnHjcVyKhBPXTf3mRRarHkWsxJhafJd7lIjba4di5qZrMiScuFRW4isc/qc3Vni8/61z3L149RYBj5/z9qDgEDFA9IgiUCERKErfXzp9c4WEnxpFEaAIFAoBSsQVCq5fV9ipZ1ccPbIPji0cfl2jtKUiIZDw9jT+WX0JKSIejgmzuvVhqiSHiSMTs6FfY6UmdJkqtujR25oXIjLpxU5MnX8BMVl8DwsGyxDtx63BWW8/+HqfwqqJraEvkMvODIPrXxNx8Dk/hIg85TnZ2WAzDdBu/HoSQtIP9667YW7f+mKSkEz+X163GBe+8MOxyJMheY2THohVf25DUEIW/zJTBy1HrcWF2364fWEHnJtW4oe6JBPqL88twtrTEVK2imVlI/JrGDhGzfDnJg/c9ruHkxtHwFpN2CVxEPfuOT4kK6FBj3k4evUe7l7djxG2xiTgC39jZ4Tg6sUXYpH0iCJQbhFIw/MTi7Hx6hcxEUf+bms3sCgxixTdN+SnaLjnKvxz6BmEi9OV9Zvgfxs8cCcgAN5ntmK4sO8gPUao30asO/o5l74jv5YKfj/h4TbM3nQXqYK+W0nXBlM2nMRd/3s4tXUybAz4C2HYmeE4NH8hbkQJ+j12LM7tO4+vAg86FWNH/L3jJG77P8KjgFtw3zIFjQwFi2g4ybi+fQN8Yrl9OgvVWjlh3LjeqKMrDkigrN+IhAoej/Hjx6FNAy0wiyy/4LbTkhQBigBFgCJQ9hFYs2olPC+dwK49B4i3+OWyr3Cpa5iNL69e4qd2Awye64LD52/DZfsC2JuLQxVyst7htueTAiyQYaGqfW8MHtYL1SRyLCrpNkT3YWMwaPhoNKtNfrPzsTkjhhv6OgBCSkzTogfm7bqKM9f9cOLkcczsL/bc4mSH4+Ht5wXQLZ9Gye30z5/wjZcOgF9Wz7I2KsvxUMtfEr8EJzMYu/5ehofRwuWbTJg3HoUle6/h9JXr2LhsIuoK331I/IaQq3OxavczXiQHvoRsBB9diWNPY0RNMjVqYsDfrjh6+S4O7VmNbvWMwGCzc33/S3y6Dav23Bd5FbLIcx6x9Djcr9zC9pXjUUsQ25yTFYHTqxbD97vgvU3U4u9zMHHWv2jtNIa3j/7fot/HcGppmUUgK+4CZnaoh/Yt6srdO7adAL9k0YRaIe0ofN9fWn1zIQ2jxcsIAknJqfjw6St+/IgvIxpRNcozAuKZoPJsBdWdIvALEMiI98WaaRNhyBtxEU+Jn0mICX+HJw+DEJnKJ864ajBYVUietPYQD/lklGMow6bvGhzYPAbVOO9w7WY02ltzJ20TcH7TATxLEgwaGBro9s9ZnFrZBpoCEY4dupHBZF/0Wu4NrsNIdtJD7FhzBkOPO0NXyFBJNkfaajnlKC5u7w5+ivcWaNmhJYz6dsA/V/gT3ZkJt3Hy9EcM+Kt2voPJ6BuuOP48VkAWMFG3zyacPTgOJjxvvhZo0awSEu1H4lJYGln2GEVywp3C/EF/CkJuSirGxakyZuy/hHV9TPk3HGoj/PZdzL70VSCfgUrN5uHM2WWopco1rhXqcF7ihtM2RPNWSmbj25fP5Dolq/kA0v/LPgIcfLm3A1MmnOETypwspCXGIfTdMzwKCuX9TQtt0KzqhH7txLnChNcV9qngviFPvYg33Mm9FxEpCEHL7SNnHvTEmr4C4p78DTs20cBX26m4H58JBuMnAq56IXbsJBgXKmxunlrI3EzG5b0nECIIIwWmCfHWu4AdY/iLItDcEY1NMuE4wpXkfOEgPYqEmjz5GV2m1yCTRKF4/1kQWpg8SfOmwzH3j0EwEuhq59AGTYyYGLPzFUwsqqCKZQOocPt1QxXYj1qNZkPuY/zdW3iTkMTTScOkPRbt2oSGvH4O4GQ9K7J8GSPpKUWAIkARoAiUYwTU1FShrgqcO38FlSsZYezQXuXYml+jOoNlhck7rmFWZxP+uMbBETVUI9Dnj0OI5w3XyGJAQlJlk3FF3nFnlNB48Co07HsP80j47I9JfC86daP2mL56HWoLfrPzsyo7RRNNBo6GTmgovn1LR6d/DmFiGz1BNTvY2mTiodc4+CVxw1pmI/ZbOPmfG/iyeFtqYoLUe6WKlg4082MN82gyynsnTgZ+F5UwbjwH+06tQF0t/gC0iW17tCYh1kcN/hdveHnpUnDrwDr4jzyG1gZMcLLfwfOCmJAEsxKGrbmMZYME711Nm8PBsSZm9hiB62HyFpkmw/vICXxKF0zUM4wxZMU5LB1iyX/Oti0IEZhBwm+64Qd5zhnRnjh38Staja+W7/hWZBQ9oAhQBEoMAU52Er595o995DXCTdOQxpvjkTepJa+G9LXC9v2l1TdLa03PygsCfo9fYOmG/Zg2laSmGD64vKhN9SyjCFAirow+GKpW2UMgK+kVzru+ylsxMrndeOh/mN4p9yTVyrrdsGLndNibcYdYDhgxgS+SnXwP566LY/mrV+qPuX+3EpFw/FJaaD9nDvq4BsDjK8lMTdYMhlw/hweJw9BFTkIBprIdxv3ZUUDC8SUwlKwxZooTNlzbwSe0OBkI8gtAGiHihIQfv6Ts/yRsppefKFwIg1UJfcYPEpBw/LIqZr0w2qkWrux+TjTjIPzhLQTGz0Avw5wvVGqmndG3i4m4EaYuqlkZkmltIRGnhJaDnMngWVxXq3p1VFFhIpo3ec7BzxRC+NGNIlBuEGAjOtgTB4PzVpipXAUTVi+Cg04xZkzybgKK7Rvyboyd+gC3H0YKCHZAu1o/DO9uKjUxomY5GAduNECGflXSD5hDs4TfTjjpz+B9N1S06lq9Ug8yeSSYzOGZw0T1viPQreopuH0ig0ZOGh753EUyIeJ0GPow0FPmkakcYtXn63Ng3+Im+jh1Q+dOHdGqWQ3Udt4Bf+e8ccntLqOE5efWLr1OEaAIUAQoAmUTgW1b1kAji67CLsjT0bLqjZ5tjKXeMYxt7WCtegRPeXnkCEmTmsILy5/rosmCNFTAMuqWPTB9WY8cpdkZ3/GGjJNu3ziO9xK5ZjPSFDO2yc7i56sTNszhcN9Yirol4/5lHwGRSWQQEq3fn3+JSDihVEPb6ZjQ+zj+dg/htZUZexM+d+PRuq8Bsn8E4jlJzSDctKwGYVhvK6nnpGLcHcP72cBr+yPR+5mwPDvjKfwCSDQVwQVV0+7o27uqRH0mLLs7o03l07gQysUwDUH3SdQDQsTRfOJCFOknRaDiIlDYvr+0+uaK+wQqtmXmpobo3qkNrK2tKrah1LpfgkAJT3X9EhsqZCNBL17hvn8gWjm2RPXq1SqkjRXNKKaSPlqNWocD24YTcio36xgwte2IliY51zmmvnmOV3HCwCUMmNm1ha08ck2rOVrZGuEkIeK4g5GspGA8f52GLs1z0mhqlWxQr3LOtnRtm6CWOiG0krmDNA7iwz4jmnirWOfVI7B/IORdtHhgxKyMKubpiI+XnBjgoIq1BRkUcYk4QhOmheBVSBp6OebUTbuyJXhcpAgqBtQ1VPmeQtxrhJizrC70mOEXYmmR3HsS2HIHlXSjCFQcBBhQNWiEqRtcsWqoJCmkeAsV2jfko17al3f4lCgMf8uAYa36qC5BsPOqkzC3tZs1z0eS4m5n/niH95H81e1cqdpVqsIgLQHxGWLiHxwzWFuSPH1cIo70k9/fvMRnshK7oaoFCSfcDGtuX+KHteT8xKdH57GFuy8hz1DHAo2at0P33oMw0rkHqgtCJRVYe1YJyy+wIrQgRYAiQBGgCJQmAk+ePkN6WiLatWkOlZRvpalKuWlby9wapsoSv+VEc2V9fWjwonfwzWBnZYKXBaDk1jvlwIvDSUDIvUu4cdMbTwIfI/j1e8QJvfIlSitqaKOmqUECYpNxokB2ZkoiuAFcNIpgM9ebLfhNjIgEY6rZws5BV0Jr4aEWmjk0ggoh4ngjWhKe+93LN8js64j08M9S+XiN69rCSvZdkPgB1rapR6LKPIL4DY0vOyv+Pb5GCcfJgJZZVej+TECC8PWSW4y8t1lYkPc2HhEHxL4PRjh5byuo96LQiorwOX/mBMTE8cfo+nr8uDgVwS5qQ/lFgKlRD92HdgAJGiJ3YyjXQeUcfYLconIvFrXv/9V9s1zl6cUyj4BN3Rqo36gJ+RE1KPO6UgXLPgJ5TbuXfe0rsIavXofgxInTqELCWlEirmw8aKayAaxrmvHyqzEYTDBZylDT1IaBsRmq1bVH90FD0cPWTGJlnjy9GTCwqAwdCTJJWCrzRxwSRMmpmdAzMcklvKU6TEy0Bd4YpDYZ2MXy8g8JJYk/VbV1oCXnr1xJVx96Ktwb/NWSWWRlaFo+nBaHEHFx8cK8AKTZzEeYZmuCaeLmchxx2DGIjJRekSkspKypBXXpcTKYTPGbGYOE5tTSFp/z6hHcZaoIxdFPikA5QIABNUNLVKukSb7H5B/5vispq0JTRw8mZlawse+EQcP6oYFpTvJc2jh5q5o5yM7m+qEWbFNk35Bfi1nxCUhmizVT1dQsdsil/NrM735WHOlvBbk4uWWjHyxHPaPleVZLi4kUeASzYDt1I9Y8+Iy/PV5AGCWJX5mEsUwMxcMbbmQ/irXLmmDa+oNYNYZMTOUpXfJmScuXbIseUwQoAhQBikBZReCI2zGEhLxF65YeZVXFMqeXChmbkbWG0htDCUoSRJz0zZI/+/5sP5b+tRRer2LECxpzaZbBVMxIR828MoxIXvFwQVjwhK/vEJHBgZFa7vK/B7ji7AczdO3REVb64ndRTnY8EiQYL2UdI+jLDuIE9mgaG/FCYPLT6HKQFBfLu5OdkoR00ZCQAQ0dbR5RKAuDsoE+tMizShWNifkluOPkJIl3ydinK9G13krZ6lLnaXGRYi8+qTsV/6RP9/YV30hqYblCgKVpi1GLNsIul76juMYUpe8vjb65uHbS+hQBikD5R0DOFH35N6oiWNCmtSMqExLOsqp1RTCnQtigVmkAjj3eC4divTwwoEnIMXkbQ1UV4hzaHGRliUkv2fIZGcL1jdw7SlARV5Qqmp3+kz/oEY+l+Pc5JBG2xJJLprJyvhPjXPKRkfvYTapd0QnxFPkpEW5FdJ17wCUz86TVmGDJDqSlBNATikB5Q4AJm0G7cH9390KQMjlt5HD/fmUmKLilMtJz7zNkpSiyb5CVLXvOYClJLVDIzMgoMGEoK0tR51wStLD9WfbPNGTw8suQ7ovkMZh+7B4Jn3sAuw6ewOVbTxGdmi1jFwmfG/MEmycNhJb5AyzrUvAVdCUtX1E4UjkUAYoARYAiUHII9OrZA21aOyAiIgJqGT94eeJKrrWKIZnJkrPakZhW2CGMotBIjzyDBeP/gk+ERN4zhgqMrWzQoFEzNLZVxa31O0iOcD5LxR1vKWLTqm2LmroshMfyx4w/IwPw9F0GGtqQpINytwTcProe68+8x4aFJrBp2QtDZyzHYAduGgEyRiWpAYQbOysLAn5PeEn0yckk3oaiM4ClLFiGpKQMSS40M13s3SZRnLjwZcslK3nvbVIF8z9h//wpem/LvzQtQRGgCJRnBArb95dW31yeMaa6UwQoAopBgBJxisFR4VLMzUxhaGRCyJjSGjYo3CQqkIcAA8qEcJP3VNUsLEgoFSa+ZnIHYhzEfPyAGDLZbi45auHKyP6GD5/jxYMUEiLSykqWaeM1hpTIzwhL4cBWZvVjeng4on4KlyWSVYnEq8+QtwJT7LXClyDxP8sYpkZqPN25pRgqrbD3kTt6Gcsf8PJqkpluDT15oUsk5NJDigBFoHAIEIKbcOwyG5usVk6WIYJkikicKrRvkJAr71ClkilZlc3Ehwx+35b0LQxRZAbHiqzUltwyyISJkpqaFGkneV+RxyrE49hQmfRdgnwx5m1W4ubxcdATzzPlaI7BUIWBlkQBEj7Xtv9fOED2rKRQPLh9E7fu3oe/vx/8Hr5FfCaftWNnfsQp12uY22U4SMCkgm8lLb/gmtCSFAGKAEWAIlAKCHTq2B7qhDdp16E7j4Tz2JO3B1ApqFjmmmQUdpVNiVqQhZcee3BHRMIpw6bPaixdMBaNqmrz3nfYaefwdONOkRaK0p+p0xptHcxxx5Ofe5uTFYyzBy6j7+YBkJP5AGkf3eHh9Yn3HslJj8bz29fReuIGnl4MJXNUMiUZ9T5y85MTriyBjC+js2BvKTv+zEbk5y9IESxaInkGUKkKP9S6irEJiQhD3vt4DB4HiZHhSCDljCVeq7iyEyK+IVHOYjMVMi+iyw05KuDvTJsvx5HdoyEbPIUrQ7gxGGrQ05R+1xTeo58UAYpAxUKgcH1n6fXNFQv138eaB0+DcdDjKvoN6I8undv/PoZTS0sEAZlXnxJpgwqlCFAEJBBg5uLmpWrRFLaWwhjuHEQ+Pg/PkJweLqlvL+LS4xiRRN0ajmhWVX7Qs+xUf1z1jBCTdrxabHy+dRevREQcC5b1G0A7Dz6N35gWGjYUJ8XmZL3Hm/eqMDMzk9g18PDwcixftx0Hj5+D1/23SMqD2xMZQQ8oAhSBPBBgkJXIEutmOKmI+Z4g/XfNTsDr17J/67mLVGzfkHs73DuqZg3QoLI4T2Rs8D08ipRcL00KZX/C6u7VoK5tDKvajdGu7394/rPkOg+mVj00sBb2tySPyNtX+KZhKtGXmcFE/Q32LVmGDTv248T5a3jwLo5naEZkIM647cOmVUswe+pErDr1HkztKmjpNBaL1rvgyv3X+BCwCo3UhZ0qG/HhoYiXmFiSGiwS72TRnBVpQRHyeYrS/ygCFAGKAEWgQiDQoX1rONrZVAhbyp8R3FDiYq15UQnEp/kcpeP1iw+CRABkEaNyc4xbMhVNBCQct3I6WZwULRk9REFEIoNhjO5j+sFMtKCTjZen/8Si7Xd4BJik4unRPlj75394lihcpAno1hiE7oL84wyy6LNRI4kxYGYgvC6GiOwSyuJkfyDjziei6wxWdTRpXpUXglLVnOQHNhZ7431/eRvPvku/C3I433HH+xEk074JZbPIe1utquJ3yR8fX+G7uilMTcxEu5HqG7ivW4EDLi647HkDzz/y39uEMugnRYAiQBHgI1B6fTN9AuUTgXiy4Pk5yXn6/fv38mkA1bpMISDxWlmm9PrtlUlNS0NMbBwJ65dL2IbfHqHyC4DUBKyEGQwVWwweYAOhkwg77SFWTFqOhzHiQUpmnB+WTVmPp8mCaySPWocxo1E/t8S27Di4LfwTZ1+LU14nfziJeWuuQjjHzVCqgk697PINTUlSnaOpUxdYC8NgsqNwZOli3AoXD5fiHu/Bv6sPYM+W1Vg053/4c8kF/KC9jMRTpocUgaIgwIJJJSNR30CWE+P+6WP4JPwjJlMWb879i83X+KueC9SCQvuGvFtkqDZFnx61RJ5u2Sm3sXbBKURkCok2Nr5e347D/lHISI7Bl7dBCMs2QmXuyucS2hgqDeDUo44oP0l61Fn8u+givotiLaXi7rZVWOvCJdyWYva0ydhy6RvPIzjrx12s/GMq/lq4Apt3u2DtP8tw44v0ogluuktx9F8SktjIlL8SnGsPCUmlQryfhVtGchJSJZi4YssXCqafFAGKAEWAIlAhEFi6eB7+nDCkQthS3oxgMJShoiRcWANkpiaJxlD528IgYfbF7zKc7Pd49uCbaPENOzUEHuv34w0/oRpPXHam4sJ3G7X6GzMH1hW9f4EdDc813dG9U18sXbUa+/duwIYFQ9G3Y2+4PY4SR1VgVkKfP6ejliiiChkD9naCpXAMSNzSfHZOxWG/aJEtHE4cbm/+E4cfiReLmjYdiW5N1Hl2MVXt0a413zuOeyE78Tq2LjmKcFGi3Uy8Pb8Q+27If5dlKDdAx461RbZkRJ/DtjWXSO5ennjyXyoeHFiNfccO4OC25Vg1fwoOe0XKjUIjrEE/KQIUgd8VgdLtm39X1Muz3R1b2cH7wmEMHtSvPJtBdS8jCEgssS8jGlE1eAhcvHQNu/Ycwt9zZqFD+3YUld8CAWW0nvEPBro/g8eHJDIYIpPTvqvRvsEVdOpkB2NGFB7e9MbLyDTBQImBSk3/xJJpNqJBiTRMZAUnGfulhp7D8BaNsK9rG1RV+Yb7nt54Gycc5DFQpeUfGNlGvMJQWob0mY7dOEzvcQSzzn8g2pHwmS/3oUfj++jUxQHGnFDc9byFj4kCkpBpgAGzp+ZOEkqLpmcUAYpAHggY2tmilqoHgnierBx8vbOEhBy6i47NKiHpgz9u3A1BKof/Ny8mgHITqPi+IbeW+NfV0XnGVLR1n4Jb0WRxCScTgUdHo2ngIXRytAYjNgheVx8iUjARxVSuBucZg2EknvfKW3yR7iqjFSHTOh4MxI0ork4/cXf3YDS+2x4dHarg52fiTXzrNdIEXKGKYVf8b1pz3oIF5drDMa3PPkx2f8PrBxM/Hkc/28do29ER1oZKSIp8g3s+/ggVeh0zjdFlYCdRWEoGywCGBmIv5rTI05gxOBsN1KKg3207No4tnvwiwUErVUwEssNxcfdBBIq8Dlio3n4CRrQzz+W9oTAwZOPN1d3wCPjOn4jlfs8nTEbLyrKhynKX+fPzDew87ItEHhHNhGXrsRjXqaqgQjLuHdmOmx/4cXiZyrUxfN4w1CwEQR/z6Dh2XRZ4bZDJdNv+c9CnIQmvViG24uMjBUMRvysZ0b7Yt9dLtIhBrUoHTB3XVm7oO6n26EmBEFi4eBnev3+PMycOgE9nFKgaLaRIBMhvtp6+uF9LjzqDZZOyUVM1CnrttmKBc/U8WlNF3UY1oXQplJ83jf0NR2a2QvDFDrDUSECwvzfefEuTqp+eGMfrE9XF63Wk7hfmhMEwQd//DuDLtyHYfTeU31cTTaJee+Io2eVvqmjqvBUz+laR+p3QbvwHpg08g7nHg3lyshICsGpoE1xu3RG1KzEREXQLAS+/8e0kgpkatpiweAqqiDzytNBxwmjUvrQQr5O5nX42Xl+cgn7Bx9HSwQrZEY9x595LJIuINVntlNFs1FS0cJ8E3xjuItB0PDw0DE7+7dGiaWWkhwbg9v03wsiVUDLoipFjHAqw0FS2HXpOEaAIVHwESrdvrvj4VjwLlciCHKYKGUMoi98HKp6V1KJfhQAl4n4V0oVsx5yE+7O3bwpDQ8NC1qTFyzMCysY9sN19FaIGzMPt0FRCdXGQGvUcF489lzGLxNxvNA6up5ahUa6x75mo22cK6occxenX7+F18r2MDOKlYeGE9btnwFrohidTIscpywKTt21EQMhYnHj9g6ffz5hgXCaDMqmNeHzYOW/BijHVpAZxUmXoCUVAgQhwCPuUm7epApspNVGadYdistM+TD/1lj+RQsis8KCrOBLEV4mpbI4B0zrhxe6jCJFYWS1f4RLoG+Q3JLqqVm0U9uwJQu/R2xGSRGZZOFmIfOWFo69ERfgHTB10nr0bf3XWl7mh+FO1qkOxbYc/eozeg4+pXJ0yEfHyBtxeSrfFVK2Gqdu2oJ8wFwrTFKM2b0HAm5E4+PQ7vx+MC8H1UyHSFblnpC+0HbYeCwZXFveFLEs42luCdT+aH76JnYjAy4cRCCW0NP+CbGbH4snPqQW98psikPLyKBb8/S+ChaQw8Q0w91ZG29v/wLKgv/u5YpeNt1cPYvn2p7w+iaFcDzrdxheOiPvkjc0r1yOc54mqjA7zOomJOHYS/I7twPIbETwNWBpOsJ85NAcRx05+C4+Ny+DJnIqDi1tJTLqyEfv4NFYuP8cPc8ZQx6Tq/6s4RFwB8cn18cncKOp3JTPKF3tXrcBLQWg90+bKcB7ThhBxYi8gmaboaSEQUFFRhirJLU230kOAwbSCbRMSlvFhnOD9KwkvvdzwkvjU21X6Sn7H8yLiWKg3eCo6HPLDjTD+ogJOxjc8vnYMjwUmKRs2h0PVD/DlvU8APz48J+8kHJhqKeZviKVph5muV2C2chrWu91HgsjzPyemDJXK6PzHNqyY6wR9GSKQwTBC7+UuCI0chh0+n3jvL5zM73jucwKyo1SWlg0mbT6OUXbiEODc1rTr/Q/LFzzEH0vOI5anRzZiP9zGxQ9CXdTI+HEMlDwPIOCHYGGn8Bb5VLMYiqWr/TFu+n6E8aJCEFIxxAvnZV6/GCrWGLVyIzpZ/L5TXRev3UJMXDwPPX09HfTr0VECSXpIEfjdESj9vvl3fwLUforA74yAzCvW7wxF2bK9Tevm+G/FYjRqSPMBlK0nU/LaGDX7HzwDrmHtlB6oYaAqE1KDAWUta/T+cy+8fHajm5XYq0KeZupGXXDA6xzm92kATclJETI5XKPNNJzwOo7BdQu3Oly1Sh+4+lzA8hGOMFKV7UJILiu9Ohix9AwuujjDrNgTffKsotcoAjkR8Pf3x5YtW5CUlJTzZkW4QvJzTNxzBMsHNxGHOOTaxWDBsHoXLHf3wd7R9SBaeJyPzSXRN+TdJAu1+m3EzWs7MdLREjmcWkgCFh0LR8zaeRUeqzpDJ29hCrrLQu2BW+F9ZRMGNbOQo5MSTOv2xvpzXtgwrLqYSCOtq5h2xe6bV7F5SmdYaLFk+mmuegyoGdlg1LIzuOw6EuZSfaEyOs5cjFG2ppDslrmrw+Oio3iTW8WTryB4qJhyjkAG7rqdxRsRCcc1h+SffXgMZ5/wJ4TLtYHsH/A9PA/tbOzgvOwUQhMk4ruWa8NKQ/kK/l0pDUgV1ObSxQtxyt0F/yxYhhVbXBUkFbhxyw87D7jTFAgFQlQZjhMXo28DY5nf+mzEf+f/ZuclRsW4N1Yc2IjOtQyk3iO4If+tHCZj2+nLWDG2I4SjsczYW/C5FZuXyELfY2rUwbBVN3D9xknMnjAITetYQk9DBUymEtR1TGDdsB36TVwPV68n2DnfKdeIBCxNW0w/chv7Vk6BQw1DUXhvkUJMDdRsNQ2bT1/H7F7Vct6HKmzHusJly3Q0kMgXx62vpF0TAxacw85/O0Nb+uVIJB5EYvVeW3H02Hp0a2ROli/JbiwY1XTC/IPXMK+fvPZly1fc81WbD2DyX8t5+/L1eyquodQyikARESgLfXMRVafVSgGBb9GxuHnbD5+/fC2F1mmTFQ0BBvEiECZpKRXbuM1npvNX65SKAmW40XSSPycrSzGr4UrTzMaNG+PHjx9ITEwsTTXKZdvslDA8DghEyMcwsoJRDcZV6qFlW3tYaLMKaU82ol7dgbffG8RzdFCzaXu0ta2MvGm8/JtIjQqGr+9jvAuNQyZLE5WsbdCyTVH0y7+tilbi3bt3qFWrFvr0IcSmq+ImVyoaTgW1h81mo02bNggLC8OgQYOwZMkSaGtLr8TNS1bnzp0RGBiI9PR0qKgU9y8jr5aKe494ebzzg49fMKJTVVG5tj06tCOeKLKceIGbKZm+Ie/msxAdEoB7D9/gW1wKCV9kCKu6dmjZvDZ0pQirvKUo9m4Gwl/6we/xG0T8+AklLWPUsHFEa3traOSDbVbSVzz2f4TXnyKRkJIBJU1DWNZuAscWDWCYW/5OojwnKxZBt28i4FUEfirpokqtxmjVqglMRDlZ+BYWVb4i8ElISICenh5atmyJS5cuKUIklSGDwNKlS7F9+3bcuHED3H5IURs72Qsjbfrj+OdkGZEsNJ96Gbd2dhNN/MoUKOBpBi7OaI5+Eh5x6+89xl8OBQ+gF39rHhp0kfSIuwXvNS357ZM8tFsGt8ZyH36+IZZGd7i/cUMnLf4fZDzx6rPpvA5hPK8KJbT9yxteG9pIecS9dxmNln9fEXnEjdkdjE2D9QpoXxkvRkLcre1uh38kPAYvRZ1HdwE+hdG+ON+VlBfr0Nx+voRH3Ao8vLcQVRXQlzdq1AhBQUGIi4srjDkVrqw6cYhr16E7KpNcsR57VirEvszMLNRr2QcpqWmY4NwfC2ZNhJpawT3vNl76gbgUNiYPbaMQfcqDEE52LF77+uDp2whkkN9s82qN0NS+MYxkfrNzs4VDFg+88b+F56R+prIBrBq1Q3Mbc4k+K7eaZfV6Kr4GBeDV+8+I+pEJTcPKqN20LepX0ZYhHOXrz07/hid3biEkLAFqhrVh164tLHULM77NQOQbfzx5HoKoBPLepmEMy7otYNfEKt/3NvkaFf9qUupPuJ1/gDrmyhjTTrf4AoshoXlXZwQG8cNONKhTA09vnSqGNFo1PwSO309E0NcMDHNqBn1tjfyK0/tlCIGK1zeXIXCJKgdO3YeGCgf/9DEoW4oVUpvrtx9g6Yb9mDZ1IpyHDy5kbVq8cAgwoaJWur+hhdO38KVzLiQqvAxagyJAESghBJiaFrDvyN2L2wALpvU6YDjZFblpmNZH5/5kV6RQKosiUAQEmEwm5s2bh9GjR8PFxQVnzpzBjBkzMH78+EIRckVo+hdXYcKwZisMIrtitpLpG/LWTQkmtVthANnLzqaCyg3aYRDZC7spaVdF8y5kL2RFhpIhGnUaQva8KxZVft5S6d2KjkC4pweuhqbIMTMbT88exv0VXdDJIB+WWU7tX3aJhICdefotZubWIFnIl/dKQiZqjHdD1PjcBNDrQgTK/XdFaEgF/rx03h1Kyd8UZqGyshLmz5zA85ZZvc0FB93PY/6M8Rg/on+hCDmFKVQOBDFYhqjXZhDZi6Ysg6mPui37k71o9cteLQ1UbdiB7EXTjKlqBrsuw2FXtOqklgoq1WmLHmSnG0WAIkARKCoCFa9vLioStF5eCNSqVgVTxw9H40Y0Yl1eONF7BUOAEnEFw+mXl7rn+wBXrnqjT+/eaGjT4Je3TxukCFAEKALlDYGePXvC2NgY379/R3x8PJYvX45t27ZVUEKuvD0dqi9FgCLwyxAg3lKn3W4iPptPVTGVa6FZo3g8ehzNy3GUHuWJ42dC0WGiZb6eC2nfAnB4jyuu3n+JcBL+0aCqDToNHE88YRoXyBxORiRuHdsHt0t38eZrPFi6VdCk7QBMmjYUVfKUkIrH593gH5rBK8VUtkbP8T1hxQzDtcOX8OLFc5A0SoKNg4igC9i1/TlYrMroMqofapH8Sj9eXIL77c+8cK9gKKNep7HoWEee1w8b0cHXSLizC7j7KBjhcT+hrG2AqjWboVPvoRjqZAMtYVMSn7FBF+Fxh+R1JNcYJIdu17F9UUM5GvdOuODwuTvEXhJeTtscNi26Y/SkMWhhmZu3YBre3vbAkVNeCHz1CdHxJEcwSxU6BuaoXt8BvYaPQp9m5vk+KwnVCn6owO9KwRulJQuKwNVr1xH/IwZjRg4itINivSxGDnLClL9XghtRIOp7LGYuXgcuKUcJuYI+HVqOIlB2Edi/eSnP45WroYa6MPBp2dWXakYRoAhQBMoyAtZVzWFZozbpUMu3Z19Zxvh30o0ScWX0aYeHR8DP7wFaOjqWUQ2pWhQBigBFoGwhwPWK27BhA88rTqiZkJDbunUrj5CbMGFCBfOQE1pKPykCFAGKAB+BtA9nCUEULvAYY8DEbiS2zP2GvoN2I4obypGThBtu7ggbOy+PEILZ+HB5CQaP3YCnMRli77PAAHidPwxXt/kYbpqeJ+TpEdcwa+AE7AsIh4ATJOUD4UvyzB7a74Z/pluI5cpKYifAe/dyqdCL1Ub0gKXSGxxZNhfuUt5+2XjntQkzvQghptIWx3o7ESKOhej7rpg545woNOWkw0NzEHHs5FfYO+cPLDroi7hM6Txz/ne84OGyAWtaTsb2w2vRvZokkcZG5B0XIv8iTz5DpSMOt9LEnll/YNutT+BFzOTZFAi/W5fhuucw/jt9CXPaG0tZykl/h71ThuOvQ48liEVxkTte53Foxyb0/McNh5Z1hUFhIreJxeR6pJjvSq7i6Y1iInD9xk2EhLzFyOEDiikpZ3WuV9yeDYsxafa/opuUkBNBQQ8oAuUaAZt6tcq1/lR5igBFgCJAEaAIVFQEynBMmooKecHscurZFUeP7EOL5g4Fq0BLUQQoAhQBigC4XnH169fPgQQ319WKFSvQsGFDbN68GUlJSTnK0AsUAYoARaD8I5CFJ+5nEJicxTeFoYY2JG+mXZfB6G4l9Ovi4FvAcZx9njuRFhewFv2d1+GJJAknBIeTgTfXluPfoyG5EmnslEdY0H8M9vhLknAiAUgOu4HFCw4jSszQCW/+sk9O+musG9Ib0/fdy0HCiZQgtn64vwOD2w3Dyddposs5DtjvsXGEM7b4SJJwwlIcZMQ9xKr/rUFQusiNj9xMx601kzErFxJOWJud9R1XSLkt3gnCSwr6VMx3RUHKUDFyEJgwfiz+W7EQ/v4P8fAZP9+TnGJFvjRiYC9YVjHLUV9IyNWw74mdB9zx82fufUWOyvQCRYAiQBGgCFAEKAIUAYoARYAiIBcBSsTJhaX0L2pqasDU1ATq6pKrb0tfL6oBRYAiQBEoywgIc8XlpiMl5HJDhl6nCFAEKgICnPRAuHk8FXlksbRIPsaB1aCk4YhhJKer0KGKnfkaHq53wA/8KGN59gfsXLgLLxIFZB4YMKrdH2uP3iCEwC24rRmLuvosZGdn50LEZePZ/hXY/TBKdJ+lVQuj/z0CH39/3PBYj0GNTMAg9QvNwylVRtshIzDaqQk0RaMYJswb9+HlBB0/tgeqaQqtlLFL6jQT/ptm4t+rHwQ6MKBqZIf/rXfHba6OJzdjpIM5WAxuJQ6SQy9i9oQNeJcpSaSJBXKyvuD5yziYNByCtUc8cc/3Jg4sdEIlFaGSHMS/vYKrgamiSpnfL2LjLn/85IlkQNuyJ9Ye98KDx49wz+sklg9vAjVe+wA7Kxx3rj/je/eJJBTvQCHfleKpQGvng0CD+vXQsoU9lvy7Ghv3HM+ndOFvc73iFs6alGtFSsjlCg29QRGgCFAEKAIUAYrAb4KAj28gug0Yj9OnL/wmFlMzSxIBGpqyJNGlsikCFAGKQD4IvHjxAv/8808+pejtwiDA4XBgYGCAuLi4XKsJCTmul9zixYt5E8q5FqY3KAIUAYpAOUHgu88JXHgr9Jxiolr7wehkrszTvuXQPqi97RFe/eRmNcvC0zOHcXd5Z3QyEJJFfCNTQ87jtF+kiERTN+uLA9dPoI8lX07z5m3QsoYqWg7di2/iGIwihDhZ73DKI0BAMHHzp5lh4s6r2DmqGj/PWfPmaNu2FjjNh+P05xRRvYIcMJTqYfL6PRhyax5uXn2GFDaXxWKiZsfZ2L2hDfgaciVJh5mUlZ0d74XNu++LdGRpNsXqCzcwy1GfX5To2LF7K5h07oVNAVxCkYPwgB3YfnYitg2pJCuOd65tPQYnvPeirRF/eNXK0RaML46YePQNTxtOdig+fSTUp6Mmr3x2kiZajBwDvU9fEBr2E73+c8PcToL2YYcWTbNw13MMbsZz6dJsRIeH8fLRiW2Uq0aBLyriu1LgxopRcNGiRcWoXf6rKrE40NbSQHpqCv5eulHhBmWTHHE6WppITM79b1FIyHHzyG1ZMReZBu2JHor6JircJCqQIkARoAhQBCgCFAGKgMIQYJEUKGpqKmApFWSxn8KapYIqKAKUiCujDzYyMhofv0TAwqIqDMmEMt0oAhSBionAx48fsW/fvoppXDmxauXKlTA2ls7bU05Up2pSBCgCFAEJBOJx0c0T0UJyjKmPLkOdRHnFNBv2R9+mm/HaN5pHsqVHe8L9bBg6TKjKJ8gEkqIePMLbdC5Zx92UYDd0BnoISDj+NSasnCZgQF0P7Hjxg39J4v/sH4F4+DpeROTpVB+MyUOspdpQMe2OP4Y1wrnVfjxySaL6Lzn8fusivCOEoSZZsBk4D5OEJJxAA6aWHf5eMAhu/XYimuu6x46B19mbSCEeeXwqTVJVJTTpOwqOAhKOf0cXzR3qgCUg4sDJQmoyt00+2aZWrQcWbeghKYR3zEn/jiA/H3heOIrXqUKvRCAj7acI0xyVCn1BMd+VQjdbhAq7du0qQi1apaQQmLVkPdp0/Qr7LuNLqgkqlyJAEaAIUAQoAhQBikCZQaBtiyZo3bYNoEHn5svMQynHilAirow+vNt3fbFrzyH8PWcWOrRvV0a1pGpRBCgCxUWgVatWmD9/fnHF0PoSCKSkpGDs2LHgfua1MRgM9O7dm4f/tGnTEB0dnVdxeo8iQBGgCJRpBDIiLuHEjc8iXzBVk67o30NikQGrOoYOaYFNfhf4nmDsRFx3c0f4mLmooiSIgUg85b58CheFtgRDHQ3sGubwfWGo1EUTG0MwCBEnG6zx59cvCOd53XHhYsDUxha1VIXyhRAqw8a2HjQYfkiSFSAsUmKfWXj9JBiJwriYDFU0bdtaDrkGGLVqiUba++DF80pjI/LFU3xKd0YDVVnlGLCoVk0U+pN/lwkDfW2CgHDjICszU3gi/mQn4IXPBZz39IFvwAM8CXqPmJQsGVyJT54CcVLMd0VsQkkenT9/viTFl2nZO3fvRWhoGDasXgyVjJyktyKUj09Mwsgp85GeIee7KdEA951poFNn/DtvGi4GayMuJW+vU4mq9JAiQBGgCFAEKAIUAYoARYAiQBEgCFAirox+DerUroVBA/uiSpUqZVRDqhZFgCKgCAQMDQ3RokULRYiiMgQIbNiwIU8SjjuZNGDAAMyZMwe1atWiuFEEKAIUgQqAQDaCPU7ifpww6xsDLOYH7P7DGfslrMtO/ApVEomSz5Nx8M3/OM4F/YkZtmqCUmwkJ6aJyDwwNKGjI2+4oEQiNvBJJll+KCs5CWm8kJFckQxo6urIHXCoGOpDhyRhSxJ68EnoWbKHbMTFJoqILgZTD8amGnKbZKobw1iXhODjEXFAenwsEuTxDwwlaOloS3n9cQUySQgbJpeJkwVJ0Fr0o32YOmExzr+IzidfHgMMIkhM6gkEFOlDUd+VIjVe6Ept2pAVyL/p9ur1W4RHhJFQrq2glhZVIigsWLk1TxKO+87kPKAnFsyaiJrVqvJ1CC4ZUrBEDKRCKQK/IQJb9x5DWEQkz3KzSsaYPWXUb4gCNZkiQBGgCFAEKAJlDwF5I+uyp+VvqFHjRvVRt149ZGUpZsj9G0JITaYIUAR+QwQSExOxc+dOuZZTAk4uLPQiRYAiUAEQ4GS9hrt7ADJEhA8HqREPcPrEgzytY2e+gofrPfxh2xkqvJIMKCkrSRA+GUhPly8iK1sYvlL6PkNJCYRfE20ZuQjgZGWXSlhKrmJqquL8VhxOJrLEwIn05h9kICNDzLwxlFXkkoogvnAsuWkjcifPMiLOYOLAWbj0NVXE0zGYqjCt3hB2ds3g4KCGK0u3ISCBH56S+xumiE1x3xVFaENl5IXAH5MnQJ14Xw4c5IxKRnrYs3ZuXsULfe977A/sPHhCbj25BJzckvQiRYAiUNYQcD/ricCgVzy1GtSpQYm4svaAqD4UAYpAuULg/acweAcEwd6xNRo1alCudKfKlj0EpLOzlz39qEYUAYoARYAiQBEoMALcfHsJCQlS5bmTSQMHDoS/vz8vHx/1gpOCh55QBCgCFQCBxAceOPM8VkToFNykLASePoT7P4RkExMmpvpiIo6dhIjQ72IPOZHgRISFi/PAiS6TAxUTE5KXTjjEYCM+PAxxwjCQEgXjwyIQL+e6RJESOmTBomolsfcaJwGf3kfKsZF4wEV8wpcEoZchoGNhBXMxhyelX+F4siw8ObQHnqECEo6hgqZDN8P3fTTC3z7EpeM7sWBiKxiKcCS+hYVrQEo3yRPFfVckpdLjkkSAzWGT0KQill1hTW3efQSpJPeg5Mb9no0Y2AvB98/DdfsKsRecZCF6TBGgCFAEKAIUAYoAReA3QeDDl3C4HjuLl8H8BQ6/idnUzBJCgHrElRCwVCxFgCJAEaAI/FoEuN5wq1atEjXKnUyiIShFcNADigBFoMIikEJyvV3EZ5FXFxNG1RujmmFur/mZ+BbyAqECT6v06Cs4fi4c7cZVIeQUC1YN68BI6ToieSEjs/HExxtx06vDSMLjKyPaB9cDouUSf2pV6qOOqToCPyfzEI9+dgv+UTPQT5LBYn/HNc9HEh58hXw4pH8XUn3cmmy2kEgsiBxio30TWKh48jEjHnF+507hy8wFsBblyuPKycKLM5cQlCb0/FNCnZatUYlXprikSDqePX0vCkfJUG6O2eumoUUVMcuXHhaGSFHbiiLiFPldKQjWtIwiEDh3+ihYiWGKECWSwfWGW7/zkOic+86UIwSl6C49oAhQBCgCFAGKAEWAIvB7ItC4QS2s+/dvWNWu/3sCQK1WKAK5jdAV2ggVVngErnh64aj7WYwfNwYtmjsUXgCtIReBxOensOXsy1xDITEYTDBZSlBV14KBiTmq17FFs6bVoS0x+SRXcFEvsn/g3tEt2Hn0Kp69j0I6U4O0WxX17Xrhz2UjkXp5N25+4K9UZSrXxvB5w1BTWTGhiYqqckHqsZMDcXDLJYRmcieqGNCq2wezhzYh03t0owiUHAJcbzjhxvWAKy854DjpL3F4/Wl84v29CC2Q+OROODNZUFJRh46+MSyq1UHTZk1RVY/+hEugVOxD2m8VG0IqoJQQyP7hheMX34k8upjKNlh8yhczmgjzvskqloHrc9ui5/oA/vsQOxHXj5xAxKg5sCAkk55jN7StfAAeX7hEGhsfr67EErfW2DKmLi98JSfjMw7N+Q9e36U9aYStMNTs0aOjFdxdXvJ0yky4jn9nHYHt4XGwVOO+w2Ti5YmFWHPxk0hnYd2CfjJVSIhIERNHwnAmJcklBXOTp9OsH/rU341tT7lehCRXXsAG/Plvcxz5tyP0eHLZiLi3Hv9b64N0AefG0rTHiDH2EFNluUkvyHVuDj+RAUD2e/jf/4ahw6ryCEZ2Sghclu3DM34yP57ArMzMIuMl1EjR3xWhXPpZMggcOuyGb9/CsXThLIW/Q3O94YQb1wNOKgec8EYF/syIf4WbZ9zhfe8B3n0ORXzST7BZ6tA1roJqdRzQttdw9GxfB+olhEHsU3ccv/mW0P1ckl0ZDXr+hU51SRzSX7iVBR1+obm/VVM3z+5HdjZ/gQqTl6j0tzKfGqsABGgfCdA+UgFfpAoiwtRIH8bmVQENgwpiETWjNBGgs3iliX4ebaempSEmJobk5cglMUcedemt3BFICrqA/5YfgzjIUO5leXcIMadbpRWmrtiGxaMaKXYwRki407O7Y+S2B/gpsbD684c3CHqlgWH/9kfQsR1YfiOCpwpLwwn2M4eWISIuBc/Pb8GKI1lY6r4ENqpigjAr8TkOrV0J32TuKnIGqve1xHRKxOXzZaO3i4MA1xtuz549vBCU5YWAE9rLTg/G8fWr4JWYKbyUzyeZwNWwQNdxy7Fl9WjU1BL/7eVTkd7OAwHab+UBDr1VhhEgRNlZD3hHpgl0ZMDEbiB62+Q1oauCVqMHov72RwjiET0cRPgdw9kX03nkHVOrA6ZPaoELi7x47yfsrFDsndgCvm5d0cxaBZ8CbuDOq2hCCpH8ZwxCY0m8w/CV0ILTjLFoeHIeniWRaWZOFp6f+gP2z4+hU6tqYIc9wlXvl15ihZkAAEAASURBVEggYSm5XjhFCbmnbGgIfRK28ROPSswm8udhaNY5MMgr07A9ezHQOu+lPwyVxpi1dBjODNqFsEwyWcmOx6X/eqDh5Q5ob2eBzG9PcfPmU3xPF3jaMTTRZdZqONfLC9fCfE1U0aRpDSid+gjuGgxOdgR2jW2BZyc7oaZmPJ7e8cbzsBQJcpGD9PhYXihPDckEfIVpkjwxRX9XCtU8LVxoBJ49D0JIyFvi8Tmz0HXzqsD1htt35DQvBOX8mRNQq7plXsUr2L0MvLowH3MX7sXr2Jwjwm+h7/HmyS14Ht+IPS1n4r9ty+Ag6c2rEDTY+EEWh+7YdJlHxJGslRhuNa1EiDh26ltc2rUc91hTsHpWS4mFBL9OB4VARoUUCgEtTY1ClaeFKQJiBGgfyceC9pHi7wQ9oghQBBSJgMRSTEWKpbKKi8CgAb1x+eJJtGvbpriiaP3iIEByMiR8vYu143vgz4NkIFwcWTJ108PPYMvBQCkSTlhEr7oNamqU1cl1NiIDj2Jq5yZw6L8IN1/JzxEjtIV+UgR+BQKfP3+Gp6fnb5IDjoPs1FB47pyIviMPIJwXPu5XoEzboAhQBMocAtlfcOL4XaQIyTCGOtoNHYKqUiEWc2qtWWcwhrUxI1Qaf2NnBuOk633BQiVlOM7egn971YSQ82FnJSDI5yRcXI7CJzgaUK+PSdN6QiunaN4V7YbTsGdNf5goC4YahIyLDrmF4y4uOHE9iJBwqmg1YSraGxbNv0zN2h5NLbVFrWclvMa5Q64453MXIV9zTq6LCooOmLDssxpH1/aFqYpQxwyEPruGIwcOwP1KoJiEY2qjzSQXHFjamkyXK2pjoeHoqehtqSl+BukRuH/+CMlBcRHPwlKhYtwCXRxMRSE4Y0Ke443oQRdBjxL5rhRBD1qlwAgsXDAPx47swQmPMzh79U6B6+VX8CPxAPO/doyXA+73IuHYCL0+F5On75BLwknjlolPvusxfdRCBCUKO1jpEmX5jMOJwyOPeRjW1gGzN55BRFL5s6Es40t1owhUTARoH1kxnyu1qrgI/EzPQFx8PNKIwwzdKALFRYASccVFkNYvxwgwoKSqDX19ffGupwc9XW2ok4kj4eQU10B2VgTcFi6Fd4ziqLjUkDf4IMr9wUSVVgtw5/UXfHz1GOddJsK6jIag5KT7YeHQadh9850oXFOOLwFTBTq6Yly1tBW1gjxHS/QCRYCHQMOGDVGrVq0KgQaDpQpdyX5Jn/RLerrQ1lCBVHQZMrH9+tISbDgXVSHsLnUjaL9V6o+AKlB4BFJencJJvyiR55SSbnsMHmglIm9ylciqjCGjOkJH5DiWhSenD8M3gf+ew1CrhznuF7H7fx1gLCSquMIYLBjX7oOtl6/h3w6ViUdbbi2owmGqKzxdZ6KZmbrEOxUDyrq1MGrVBZzZ1A26xKutKBtDxR5zVo1DfX1lCdlcz7IYREcV1LtYC21necD/+g6M69IAukLSUKgQsdXAugMWHPAiHiVDYJ4PuSmsVtBPFdM+2H1qE/rWNxIRnry6DBXUaD0F7j5XsWdaFwjXZWXE+ODS9ZiCis9RrqS+KzkaohcUhoCxkREqm5vBxfUoPC54KUyuQ9OGqFmtqsLklRdBnMwnOLD2GCIkQoGr6tdGm95jMOaPWRgzajha1DOVCgMaG7wTm3YGkIC65WtL9F+HP//agsfEsza3jaWiRcZrevxdTx/qKrmVpNcpAhSB3wEB2kdKP2XaR0rj8Tuf3fF/il6DJ+PsuUu/MwzUdgUhQENTKghIKqY8IsBEwxFH4X+gNy/niaQFnPQo3Dm8EONnHsJHAVn2M+oqzl2PRWdnY8miRT5mJ6cgTRTPiYXG3YagVR1ubpCqsOZKZX8rsuySrsjNp5LXplJpBDzDRuRVhN6jCFAEckFAzXQ4PN+7wFFddoY7A18DjmL2uL9w9jXfE5WTHYWrHtexYtDoXD1TcmmGXpZBgPZbMoDQ03KBgKbNXLxIm1sEXZmwdj6EeLLntjE162DiNm8M/ycQXj6BCEtgwbxuC3RuVw/aPP5sD/Fs25NbdXJdA02dN+LBgDnwv+mDoM/xUDOpg9ad26K6Pn8IclYUUlNGDNMM866HY57MZfEpC7X6bURg6wm4ddMXb78lQ0XPHHUat4RjEz1esdpTziJjiriG/CMlWLebAheybw59ioDA1/gcFgu2hiGs6rVAG3traMjlCpmoP/0CMqbLlyq8ajLkIFLJnttmbDcJZ58Pwot7PngQHI50FQPUatoe7Wwr80PINTiCpJFHclbPF5+cVUrku1Lk719O/eiV3BFYsWw+NNjcnI10Kw4CSS89cfd9okiESZO/se/octgYiFYkkFC5MfAi6QFm7BWSb5l4fO4Y3sxqDhtejktR9TJ+kN9ojfwGDD+CR8PLuBlUPYoAReCXIUD7SEmoaR8picbvfmxkoAv7po1gVqnS7w4FtV8BCFAiTgEgloSIkLcf8OT5KzRp1ARVqliURBNUZh4IMFRN0W7SRiy8ew8TjwlCUnJS8eHNZ5KNxFhqpSRXTOaPlzjtcggXbgXiU1QSlLSNyASOI5yGjsKA1lYS8fiB5NdXceTmeyS9CoYw9QhZw43QJ6exY/sdMJg6sO/rDAezPBSUusVGdNBFuBw6iztP3uH/7J0HXBTHF8d/d0evIghIsXexYQd7l9h7L2hiS4wmmqZ/W4yx996NsWvsBXtFLNgLYBdEQLr0cvef3asgSpGDu+PN57Owtzs78953b+d25s28F8766RYs0Hgttw7oP3QAGpT6siOl1MhHOPDPTpy4zGQPCkeCxBDWTpVQt4kHBg/tjmo2crdR6Qg4/y+8HjxAQKwydmFyzEPsXbMCl0R6qNB8EDrWtIA4/gkr8zxCeJd5ApiWa4Wh31T7hJuU3VMc+XcHjl28xdxJhSNVZAYbp4po3LIz+g/sjIrFshoBi8Mt1in2CZK6nzJyboah3WpBHHILOzdswZHLD/EuKg3FHNmAn8cgjBzaCg5a1XnOcIPpAxGQETBAqUaeWDbLB+f7bUQUi6/EtR3hz/352d2VMq+iZTGPbh3cgu0HWayh56FIYDGO7EpVQ7OOfTG4fzOUVInrmBlx7Osr2LltLy7ceow3IVFIShfByNwKzuWqw719fwzu3QDWn1kdEuHnhe3/HsSV208R+CGGtXN6MLeyR/lq9dG+92D0al7uk8kPGepnct89vhO7jpyH75O3iE4WwsLaEdXqt0S3/gPQtnpWQZK/vk34crv19eUrdUzDG+/dWL/1MLwfvUa8wAJla7TAwNFj0Kl2MTw+uRWXnify0x0MbOqidx83qIwRKouhPSJQQARMHeqi26C6ea5NYFQSbp0Gwi3PJXz+QkObqujQj22fz5LjMxbOddCObQWeRFao0aIn2wq8ZqpQwwk8e/YcaWkJaNKkMfTjpDGjNVxkjRYvJfgdIhSr4fRQvU1fVMv0AysQ2KD1xJ/R/OBAnA2T9jOS3t+DX3AqapTLasmYGOF+p3Do4BHcuuuHkOgk6JsVR8myddGkfV90YqttTXNJhXcreWQfnoSzGJssiUyqoF2f1rBT2gvZ0TjcP7kTd5lcXBIalEWbAR4oKQjEpT3H4P/0IQt/IJ84KUHY4yPYsek+W9TsgKa9u6GcqQDRfkdx9NpbPtKmQKCPCs2Gwb1C/umYHv8IJ/ddQjgXMpz1Asu6DUbzqoYIursfe3cexB3/t/iYbgbHSg3RptdIdHbP2GfmrqJEBIhAwRFQRxspkUTj8dldOHrqIh4HvEVsihBmVo6oULsF2nXvjyaVrXKtoK60kZFPj+C4d6C0DWaeKpr364rS+mG4eWgz/jtxBS/eRQJmJVGlbkf0GDwYrk7GuWZFF+QPgbo1q6BOvfpsjmFW4xD5UweVUnQIkCFOQ+/13XsPsGbtVkyeNJEMcYV2j4xhUzxj10mQwQESJ5gYb8/PxcChc3CNuf6Qd3e4M94XvbBr3WI0HjgP29Z+hwqy1S3RN//FxPE7ZXFYuJxcSsO9//7Ej/9xXp/KYEbVnjkzxIk/4Ois4fh27kmEKq16rDwfXDi1H6sWL8boBf9i4cjaWQx8M7d2B6diyNjl8GUz0lVlx+3rOMPilCxb4I5pm3fiFw9ntlKPua3avQATNjzOECsvKeQc/pp4jtWpj37LPNCeGeLSYnyw7JcJuBbH9bwEKN9tEwZ8YoiLx81tv2PUL+txPyw5Y/03LuPUgc2YP8cNPy/dgqm9K2YwZkIchdOrZmLqOemqQee2S1HP+Ai+95yL68EJyrJ8fXD26HZs3DoZ+4//hQbFszLqMREpEQEtImBqbQU2foIoucyZF86x4ylhlzBl4AgsO/cCijEnLr/PJRzftx5LFvXHsl1r0cclYxvHrsS97T+iz/cb8CyWHzmR18L/v3HlLPb/swrLV0/GjgOz0NhW9TUiDpeXfYuBv+1FUJI4w3Xch2sXjuOfNYuwxnMNdq0eAKfMhkOWJ/LhDkwcyWLi3HoH3s6oUsrF0/9h7YI56DB2MdbN7QsnVUNiPrQJX2y38qF8XpX0EOyfMhijFp9HZKqS0S3v84zrFgxf8A9qX/oL4/e95tsx65q/oUWvxswQl8VNVmFDu0SACBABIqB7BFatWQd//wCcObEn43uw7qlaIBrpWVrAhP2exvMvGGm4f3wT7gxaiPq28kmHUjGEFs0w7I/pcAmWGuIEQhuUz2JprDjhMXZMH4clu68jJlO83rvXz+LETva+0uA7TF/2N5qX+fLEyAwAmFeUs2unYdM96Zueof0QVOveihnilO8CEkkUrmyeiSVXP/CXCk2Zca1HR9jrPcV/C37B8ffKSZNcf/XV5aX48zLrlek3w5L2nZkhTohwny2YPfUY6+FxyQgDVvT9xBD3NTqmRV7Dllk/414i976jj65/NULikan436oz7B1I2fN8dOcSvPaux4kfdmHpb63JwwN/P+gPESh4AvndRkb57cTsn37HkbvvM4wfAbdw49Ih7Fw9F82HLWTtUG+UNFC2b9lqrhNtJJtM772J6X6Sb4MF+q1g2cAEO6aNxTbZBAk5h7vXjrN+4j+YvPEQRrjbyA/TfyJABLSUgOoImpaqoJtiN6jvChNTc1SpUlk3FdQCrVLCLmDvmRfKlwaBCcpUKpVhVVfY1b/Qpccs3I+RdmEyqyVJj4H39h/QPV4Pp3Z7wvEzK0gyX5ezz7E4Na0v+s25wFaxZXWFBKnRj7FqbCek6F3A6mEVmTFNnsR48d9EeAxcjddZDJhLc0mQGHoV0wb2g9X50xhVJz+bixTcWDUUnSYcRHiacjBaLp28/vjga5g9sBWCo09i9bcunx2EiHq2GQMHPMXTyCwiOEjSEXhjEX6b2xFe85t9toyMddMnIqChBJjx/dSec3ivGPARwLpsJZRUMWqlx17Hr136YdmNEKVRWlUd9kyEPNoBzw7x0L+8G91VZnjH3FqMIeOYEe7jp0Y4RREsNt2rawswcXoTXFzjwYZupCn41DQM+ZUZ4TJMClBcJd0Rf8TVTaMxtlQFHPhfwwzP48dHG9Cz/Xhcep+UtdysBHHKe5xYNgQd30TjyK5RKKtqjFOpSt1tQt7KT8C5Pwdi6PzzWbbZ4sRX2DKxH5xtI1Q0oV0iQASIABEoqgSaN2+KGi6VkZCQgPSkRJiZ0Gz4r/kumNdohjo2a3E6VGqkinyyBoObnoZ7x15o27Y9mrg3hFMxFndSYIXGfSej8RcqE6c8xdpvu2HJ+TfKvuIn+VPx5uYqfN8zEPN2b4dHRe26f/mroxj3dnji7NNHiM+q38q8IVxcNRG72vjg23omn5CkA7kjMGHKPDx/+Za/qLSzA1bNn5K7Aih3kSSQn21knP8GjO07ETdlK4uzAipJDcHFDcMwIigG69aOhHNujHFZFVjAx/K1jRQ/x4ZxQ+DvF5llPzg1+iZW/TEfTU7PQ+XP9H8LWH2qjggQgTwSUI7L57EAukw9BMqVLY327VrDoWRJ9VRApTICzE3Hk6NYvGABFsi3+XPx16xpmDRuAJo36I2dfrEKUoZ27dCtg3IpsiTZF3N+XI4HciMccynpPmQeDl/0xsXDKzGwrr3U8CVJxSO28mze/mC+o2ZSsRmGjxiBIe2rQfmuwdx1NOqDEey4p2df1HLIyi2IQhR+J+bmcvy0+LJiQFfPsgbGLNyLy9evYN+yUSzegXR2pzj1Hbb+PoV1OpXGwvTo05g6aavSCCcshuae83Do/HVcv/gf5ng2hoWsdUiN9sHCaf8ijLmmK9ekM5OvC6pYKo1y+la10NtzBJPdE81czFSMfRnlVf308eEqjP39sMIIJxBZoyVbzfbfOW9cO7cPc75tCiuZ0VKcGoQtP3+LzfeTVIvIsB/3+gH8ok3QuP8M7Dp5GVfO7MBP7StAYfdk9+DO0YN4mpxVzy9DUfSBCBQ6gbSEp9izVKVdWjAfc+fMwtRfvkevFo0wfL0v78KCF1Roi/Z92qu4PUrBxQW/YtVNuRFOCPuag7Bi/wV4XzmCeSPkz7YE8e8OY/qUvYiU29zE4di1YCMey4xwQoNSGDBjOy743MLNa2exff5QVDCV+UVixji/C2fgL3+mxBE4uP4Q3sqMcAYl3DB55V5cvH4Lt3wuYNfSMahlLZtxLomD14qFOB+hNMJLUh5j7phpSiOcQATn+sOwfM9ZXL9+Hv8uGo06JQyka5K5NvXQZExcdEfJIdNdU3ebkJfyEwO2YepSZZsNoTka9puF/We5dm8vZg5pANP0d3jz7vOGyExq0kciQASIABHQYQLdu3bB92NGomuPgRjx0186rGnBqCay7IARI5tC1RyWGvsCF/fMw5SRrdDCxRbNW7fDpGnzcfLGK3y+58H6FWsnYqWKEU6/eF0MZv2lnccuY+u6hejqKusHMtUSgo/gr5+W4LViEpX69BXoOaFh18Ho3rYmlKGGBbCt3hm9BwxD734d4WySwcflZ4TJbx3T8ebJIySZu6DPL5uw7dBFbFrxBxo4yKdzsZ552jNcPHEHWUyr/IyMdPhzBHxuP4AXG5PgNu9b9z6XjY4TgQwE8quNlKQ+xurJM1SMcEI41B6CaetOMS9FXlg041tUlfcL2Xow/5O/YM6ae7LVuRlEyvcPmtpGStLfws8vCjZVe+PXFUew++hJ/PWjB0qoTLaNfcHinD5MzHcmVGD2BO49DsAfsxbj8hXv7DNTDiKQDQHlaHo2Gek0EdA9AmIEXd+I369nr5lQ3wkj5v2FdiWUj0zY6S3YeT9CNmNFiKpdF+O/zZ6w5d2GNEbj+vaIbTAYR4PYj6U4FIc37sPvvX9ESbdRWMu2DwdH49CZJ0jhbUNC1Oo2A+t/rao0ZCnHqLMQMA7H1u2Gf6JsBJ0NxnsuPYyVw8pKr2/khtq2qXAbtAUfmPuV5FDmEm7va7T7oQI7L8bL/Vtx9LU86LsIdYduwKENvSAPx9aoiSsEQU3xx+lASAQChPqewrUQT3Qf8jfq972KEZcvwC/mIy+XiW1LTF29GDVzPDMnBocWb8S9jzLDIFtp2OG3/7BvdjOFMcGtVQfWMeuGTrPOsfgGQPrHm1g59wD67RwIyyy9Fuih/oitOLm2GyxlBsTGrqZ4VbM/Dr6TvqzEBb7EOwY753JmgZ0OEYECIMAZv5f/4ZN9TSyeR81ef+PXXsrBHnHceazf5qtwR2lo1xlrjm1GN2epEayxW31YxbfE6N1+rCUQ48nRzTgV2BcDyrDzzEBmXbcHPA1f4u3bIJi4z8SG6e0hn5dc360uoq5dwI+H3/LtXnxoEMI410Ls2ZeIA/H8daysPRTAoe4A/DK6N2xkYz31GnKz0IUYtuoJbJ2c4VzaBQZcG2AtnXTw/uQqbLgeqrjevt5kHDn7F2rLZgQ0atQS7d1LoU3babjPXcdkPbV8Hs5+txvtWbmfJnW3Cbktn7nA2ncAt2PlEyJEqNF7JY7+OwQlZIzcWrREBcO2GLLx3iduOT/Vj44QASJABIhAUSHgWqcmbCyUBouionf+66mPumPXY1ZQP0z75yYSM83Pk6THI+jJRX47uGEG7Kt3x5hpc9G/mXMGjyjpsaexZes1SNfVsfhsJnXx67aTGF6vmFTkuo3g1roxbPp0xaY74fyxEN9V2H58JP7X1Tb/1VIpUSCqhoHTV6OT96+4dv4hEnk3nEKUbTYRf05rouKJIJPyKmVwu+rQkQu/MGrlKUxsayvtrzZ0Y+89weg6eiui+X4v89jw+hWbZKUqZybB6CMRIAJqJJA/bWTouVXY6yt1m8sJW6L2JKzf9yeqmkkHcuq4tkTT+k4Y0mcm/OK5hz8eFzbOx/XBO9BUzaFENLmNNCk1FMv3r2bhVKRjjvXrcWNy7phy4DnfR5akByLwDXOZTKuG1fgMZF106IcoXLx6A9Vr1sw6Ax0lArkgkNXoVS4up6zqIiAWi5Geng7uP6VCJMBWZdhU7IDZe89h6RBV147MteIZb0TIghgJRPboOqK3zAgnldegZCcM7VxJZliT4N3NC/CN/nKnJ6eaSpLv4dzlQH6FHXeNsb0He5EpLauLOyJkcdkGoUMpM+4DG7ROxK3zl1lYby4l4PJ5X8VKOoFeWfQY3lFhhOOziJzx7er/4HMvACExiYgNPojujrLVLHyGvP8Rx13BQa9XKrL3wC+TmyiMcNKSzdBy0iR0dZbHrxLD3+sgbsRm/TwI9Mqh+9C2CiMcV4aoWD3Uq6YM/itmwe4TOKseJSKg9QQE0LeogD6/7cKxf4ZlcHkbe4utfHsvnyknQvVOw+EhM8Lxagvt0dPTA3ay5aLpCbdw6RILBM0lNkDS+9f52LB9P7wu+eDgHLkRLgXBTy7hn0V/4gCbfCBP4qQk2UQCFnOEuXEqzrlz4k9K8NprEho07o6Jf67DievPEZsmROWBK3GdxUI7vHcbVi6YjJZl5Ct/43DmwPkM7emgPyYpjHDy+mwa/oDJfSor2rnkD2dw7KwiUp48G/9f3W1CrstnMeauXw9QGNi4drffuJ4KIxwvNItB0/2nIXAxolezDDeTPhABIkAEijiBJYvmYNpEzyJOIX/UFwid0GPuaezfNhdd3CrC+LM/uWkIebwPMwa1xKw9/hlWaoRfPQpvmXtLrs9VpdNk9JUb4WRiikzrY+SPPaEYU5aE4+qJc6wXph1JHTqalemCb5qVULzHcSRKuNZjbsaVNyElIT5THHXt4KVpUpZg8aRL2tnwm62N0qOPpslJ8mgega9vI+Nw9dh5mXGd6cf6nt1//FlhhJNrbO36A0Z2qSjrOwKpEWdx/nK0/LTG/8//NpJN0vQYjDoyI5wUgCXquFZWmQiShoT4z6/V1nhoWixgkwa1sG/bcnTp7KHFWpDomkJA+dajKRKRHDyBvfsPo4NHT1y8dJmIqI2AACJ9I5gYG0JPmHmZlQBWFXth7enHeOl3Er93q6Qyg5AJxAZV/Z+FKYxJEDrC2SEZ0dHRKlsCnMs6KTob4kR/PPGXD5B/nVKpUc/wPETZlTN3LoXiiTEqdUcjJrEkypaWr2WR4IPfI7xmbuQkaYF49jJGtvKEDaDrVUT16qpOWjjZhLAuXw8NalWEnXn+GODkGif43ceTSPkcUgFK1msOV/kyNnkmTgKzRmjiaqN4OUv7+Bj3n36GH+tUl1WJc8UXw9xtFjNXrmBkiiM1JWtDnkq1tEsECp2AQKgPIxYHxkBPqPj+y4USGlfAyEUnEfDGD3vm9IRzhpWoYnwIeIFQhesj5gaklAPiMrRL0Uh3LM188Mt+/iVJ8H/kLy9e9l+McP/z2PD3JAzo5I6KJa1RyqUFhk5ajEuv4xVth0SiYtgWOcGjS32lGyRW7qtbh7B02mh841YJttal0LD9EMxYdRQvouW+MKXVca6I7j78oGhPhUauaNpUaURXCmfGjtdWuvQVx+HRnadZuzBSd5uQy/IlaUF4HaRkJzSqhlo1M7e7gFHZWqhhJ2+3lZrTHhEgAkSACBQ9An/PW4ghnuOQmkrO+vL37pugStufsOTAQ3jfuIbl82diULe2qOxkqTLgKa1RkvoWu6aNx/FXbBUCn9Lw/OETxCm6FIao0biJwnuALBP/z7qBO6qYyfsiEoQ+vYtAuUtv1Ywat68eHc0cysJOxc0ap7a+lRVMeG8yUgjitFR8Nny4xnHSXIGO7lyJt/fO8JvXvnWaKyhJpqEE8t5GStKf4bFfuKK/yPXr6jW0zEJPM9RvWAvyaZmct5Nnj/yy7tdlcXXhHlJHG8nCSZQqm+k3SAhLS/MMqqanyn+LMhymD2omYGpiBMeSdjA3ly10UHN9VLxuEyBDnIbeXyurYqhYsTx70DM2vBoqrpaKxdxBDtmDqIQkJCWEwvfwPHSoYKFY0RH1/CD+/H0lbgR9+mMnYYa4yGjlcUnqLYxztYUV60wot+Jo+MtxxQxKCYu/FBKScQA6r+DSIiMRo9JLCbsxC9XYbDdl3UyO4lUx62KooorE8BDpihNxLKI/Kjv0QiMTmCjegBTZ1baTGsVkl60k5Ax+xWxtkbWzHWPY2porDRGSGESoxJRSFVCoZwoL88zxDoTQ1xMpr1e9gPaJgAYTMLIfhHPh8UhOTkTQw2OY2k0ZT1Kc+AL/zJ6CrRffKgxXSlXEiIxQGtnZ3EIcm94A1hnaJSsWJ+RH3EyQt0ViRISEKIpIj76DBYMboXz1Nvjuj0XYddybGf3jFCu5FBnZjkDADIWKOQwiuI5dhLl9a3CeKjMl5h43NhA3T2/HzO+7wqViA0zael854zk9GpExyvbUwLIEbEw+KYQv04zN7rVQTJyQICZC7h44Y5XqbhNyXb4kAfGJcreUbPGhiTnMsprjILBEMYusTmTUjz4RASJABIiA7hOIYL9xwcEs5qvKvBfd17ogNRTCwqk+vhn8O2auOY4Tt4Jx9eJx/G9sJzgoA6wxN41XcGjvA1mfToyYyBilkGziX/EScg8eysPcnsDYBsUVhjggJTYCcXm5l1l9ASTMe444L4VllDHrT+rR0cDU/NMViAI96KkY4rKWh44SASJQOARy30ZKWL8uJkY51qRvYQMrlfZUVQ/TEjYwVYxIS/AxUul5RTVftvs60UaKYMrGfhU4ZEoL9fUyGeeypUEZiAAR0HAC8ilaGi5m0ROvfduWaNGiBdLSsh6MLHpE1KuxyLAEXLv8gv1VmNu21qPhxcV1k6Tj3e1VGNjVAEfPL0ADK+XPYsYB6BzKxlaIJCUppk/m8KKsswmEqgPgWefJfDQ9KRHSBWHCDCsAJSkpUCygyXyRGj4LDA2VK1rYXKm0NOUAfObqUlKUA9eAHgwMPvM8iESfvLRkLos+EwGtIyA0gIPLN8wlUmVY9/sGPx8MYMY3CVKifDF7UHcYHTmD31qVUFFLAKHCSKVy+Iu7zEiWKHNxIX6PzWMH4ffdT5WGN2ZsM7Uuh1r12ArZhg2QdGk+1l1kg4KsTHYqg6FbYFARP+y4AvfeG7F6824cu3AXYczgl3GYSIKk8DtY8l0vmDncwIx2nLsc1iboK9vX9DS2epXvUH36vEtSUjPMlNQ3+MwsAnW3CbktX2AEYyPlZIH0xHgkyW2hqveHuRFOUBhJVU/QPhEgAkSACBQ1Agvn/w3muAOz/5oLa1M9/ODZu6ghyDd9JeLXOPvPPjwMfIeQ98GIkjTCL0snomKG2UP6sK3cFsP+1woNnfqg9x9HIfXFkYZXj+4jCfXAzYU3NFR595CkIp2Ll5tlSkGqSidLoGfAejO5T1yoik/HmVOQkpo//cqsJFKHjkL27pRV+vRtL6tcdIwIEAF1EsivNtKE69fJPa8wgcWsX6fSDGZQQcJWe6uO9oj0VdrWDDm//EE32kg2nqXsDn9ZYTpb4AQiomLx8v0bOJarAnt79cZ6LXDlqMICJ5CXd8ECF5IqJAIFRcC00iCsWXkLLfqsxlveaiVB2P0VGPdzY3ht6IXi8v6DqATsbIz4QWh+QNqgCdbd2oVOJeQZspCYLR0xKZbVsvws8mZzyICtIrPWZ3UlSjtgDs1m4+xOz4xx3jKVIRAYslmZzICXbgc7W9arlyVxagiCgtisparKY9wpSQqL/yQyguEXVJKXkZv/Rk5OzC2JEG9TuVFoCcJfvkA4WyHnkHk2ZPp7vHgdrVz1w9x/linzuZUiggwGgdzIQ3mJgKYTEBhUwNg1S3DzUX/sfhbLG7bS4x9gzohJqH99E1rby3/KRbC1swb3KEk7PPro8bcPVgwt+YXngxnvjKTtUvzTnVjJjH3SBasCFKvYGwvXz0H/ZuVhwncMErGh7wolLtamfTJ4IrSEa4+fsZFtaR8DcePiWVy4fJXFR/OG980ARMsGjcSpL7Fvyyn80m4ATPQcmGtf5o4xIJYvOy36FV6z1cPNy2XujaQj6MUbfFRZUetQpsxnBrWykE0peT7s5a58AdPRyd4EggdR/P0TJ71k7o1T0N4143rglJAnePpe6XY4HwSlIogAESACREDLCZw9dwmO9jZkiPuK+yhJe4dzG+Zg38t4vhSB3jM0GTMOFWtm7P9IqxDBoVoVWOkdQ6JsBDk14SPf7TITilDS0U75/sM8dgS9es/6K6qxxKWlJIe8RrDKyhDzkmVgy7tm/JzhLmsFxcmsT5b5VHos4j6qDmFnzvA1n/NDx0/rFyjdKHx6ko4QASJQqATyq400ZX0eezvWv5G1tWkxrxEUloYGpTOP46Qj5PUbxCvmEzDXjM6l8zS5WjvbyE9/B6iJLNRH4IuV377/FNMXbsC4sd9i4IA+X8xLJ4lAdgQyj3Jll5/OEwEdJyBE2c6zsHhUXejJR5jZTMc723/C30eClUYhNh+yZs1SihcFSdpz+D03RMmSJVU2E9zcNguz5q/A5p0HceZqAD5++nubJ55Cs2pwKat0WxoR8ATvTexU6i4JW2M/rJ82AwtXbsDuQ6dw41mktC6RPWrXcFCR/QmuXOI6kKopHQ9W9YKlsRnzVV0Jdd27YvW1OEWGDB0pNkUz47WKbFnuGDrVhWtpuewShNw+hBP+n3QvkRBwBEdvhyvKsKzghvql8jZLSlEI7RABLSVgYNeBPcujVALaM/cdb3bil98PIlJlZZVVjeoorVhdlo4XT57DIkO7VBJ4tBPTZszDqo07cMTrCl5HSRumjw8eIiBZXpge2o+bi+Et5EY4Bi49GIHMSKRsxuSNJHO3FOKLA9vXY/GcafiJvaDO2fccQnNnuHcejqkLNuH41ad44TMHtYzlln0xot8FIpozqokc0bBeKYXbDXGqL3MB9fSTdkWS9gL7D/pCLqFArzzcminbYY2+tUIbNKhfRqXdfYoD/3rLZtrLJU/A5fX/4naCugbW5PXQfyJABIgAEdAmAv9sWYNF03/UJpE1TlahgQtq17JVGNAkaU+wY9E/eJ/lUo04+HpdVIm5K4CpjT3YfEaWRHCsUwf2io5iKm6fOIB3iklCctXT4H/sKPyS5b0kESo0bAIb+WuQPFtW/wUG0FeJpSZOjGRhBeRvP9ILUmMC2Oz8L03cYROtVMqWsFV1OU8FoGPOhaGcRIAIFACB/GojBWzydK1ayv6ZhPXrzhzxV/Tf5KpI0l/g5Ik7iuMCUXnUaaTsD8rzZfmf2sgssdBB9REo42SPfj2+QZUqldRXCZVcZAjIp9EXGYW1RdFbt+/h3EVvtG3dmj3slbVFbN2QU2iFbrPmYvDZntj6NFq6eiEtCOsmTUPnZuvRzJrr1uijbud2KLuAxU9KYQPJ4lD8M/1/6NRwBVo6Smf7RN5ei5l/b8TdWG5Qla0uqToRlzs3hVM+UBKwzmRnjypYdd+bf3lJDv0PM6f2Ro1lXVGC7xiyAd3lczBv01kkcqPmAn20mHQOHk0rsA8GcOvWDk6r77JVaewki110eMEUnOqwGR5lpLNCUz+cw6INV5nLk3iEBj5DRGxF2JeVzRhlLz6qbuRS4j4iIRd9O4GBK/r0rIFNf13hV+2IE2/iz+9moeahmWhgI22SUiO9MWPMAtyNkw1IC0zQathQVM/gPiYfQFIRREBrCAjh0G4K5n93Ef3Yql1+3EiShnv//opFvZrjr29seU3Ma3ZAu8qLEfAwin0W4+H+WZjXuxFmdpZ2iMTxd7FkxkJs8pa6lxTqV8HcSx5oWI5FbGT+MJSDNmI8uX4VEd+XhXShbwJ8/5mNLT4fFMQk6czViOzZT4u6jNmjJ+Me71ZRAAuvRLg22IwOpZXGc87dhtK1EjeoZQcLfiWsPtz6dEHFlb7w4/w1Mje+x+ePxtJGBzGhhZ1UJhaX89Rf47H8mlRurk11aDQEveqzlXRakfTRoE9XVFvig4ccIzbB4+qq4RhluxZ/jWsHOzaZ4+CK3zBx4TXmllMrFCIhiUC+EUiPvolNK07gXZYD4tlVo4c6PSajW62Mq0uzu4rOEwFtIHDl6jXEx0Wja6e2MIhXTn7RBtk1T0ZLtOzRAdZH1vKeONgPMV6c/gkjPd/ihx+GoUmd8jAVJSPsmTdO/jsPK7fcVgwQQ2COei2aModr0mRRpztaV1mLfx5JY8WF+S7C7EUNsGBSKxbHlssjxnufBZi58pLCnbbQpAG69qnPepDZJ4GwBEoUV7ZpXCzyk/ufoO3Ymvz1ktS3ODJ3MW7GfGHiDnPxprAVMl0TWX8tN0ndOuZGFspLBIhAQRDIrzaSjZN16YzSm+/hFTdOhmScXzUW2+ruxzA3W75fJ5FE4uKSH7HtlnLStV3dwehQxzhHilIbmSNMlCkfCVSuUBoVq7kAJlxYDUpE4OsIkCHu6/ip7eoXL1/hxAkvVK9WjQxxaqP8+YJFxVrhz8WeuNBtKV7zMxnZ6pNX2/G/P/vi5NK24IZ+Lep54gePfzDx0AvW3WIuFh+th0ftq2jTriFKSAJx+cQFvOSNcCyzsDh6/jQ2Hw1J+mgyeixab/bF6dBkfuD68po+qH25JVo3dEbS6+s4eeGp1AjHqjewbo/vxzVSdP6sm47CD+324Nfjr3jZY1/uQo+6d9GmvRscDKNw+6wX7gXFM61YYka8+gO/RwcHaddRICoO6+LKwfXEkP0Y3ycdLkahsOqwAotGcMa+LyV9NB3/G3rtuoc9Lz6yOsR4e+1vtHQ5jjZt6qGEIBQ3z57Do5BEaf1swN2+7o+YNq6GipHgS+XTOSKgqwQs0W3mHAw40wvb/WL450Oc9hprJs1Gt2ZLUd+cuZ41qIOxEztix7e7EMVmZ4sTH2NOT1ecbNUOtZ0EeHbVC1cDImTPlhAVOk7A4AZSY5Z5rVqozFas3eWNael4uHckGr48gOY1zBHy4ArO+74B35+S4ZWIoxERzoxKbNTJpPIAjOu6HqN2+cnalJ3o7nobzVu7oay1Hj6G+OHK+esIlAdGY4NM7Xq14dtSrjiLuqMwZdA+DNt0n3eNmRp1HZPb18Se1m1Q01GEt77nceHeO4WRSmTmiknzxqGscpRJ42+6qctITBmyG4PW3ZFOQkh5i+2/e+DfKSwmgETM9JZAIDKEoX4Kkskap/H3kwTMPwKpLO7lprmzcZNve3JbrgFGlvuhkA1x8bh/aCn+/CcN03dNQw2aNJTbm0j5P0PgwH+H4O8fgE4dW38mBx3ODQHbVhMwsuVxzDv7VvYelAy/M/Mwjm3sB5i59k5HehaTC62qjMCgrkpvIgL92vCc1A9eI9dLV80x95Rnl3SGx2kWW66WA9JC7+HalXuIUrw0maDZd3+hcyVl/+nLcpuhRp2KEHkFy4yBcTj5dzsEebdH5RIpeHHjHO6+YpNFOdvsZybvGBS3lk524ic4sMlVR37H+LSDQIgAXeevQYdSyqlXWcmifh2zqpWOEQEiUJgE8quNNK89GuN6HcAvOx+zfiELmRDjgzn96uBY09aobC9E8IML8Hn0XhEfTmjiipH/GwPnzKFKPguD2sjPoqETRIAIaDwBMsRp6C1q07o5qlathhIlmBsxSoVCwLHdVPw97AIGrb8rjZkkScHVdZOxtu9V/NSYheoWOWHU8kXw8R+O3U+5uD8SJIU/xjH2wpEhsRVk9QayAZph5fLVkGRUqh+Wr7wOj6Fr8ZIbvGIrLIIfncb2Rxlqh9CwHMYuX4ruqn65RWXww5pleNjJE9sfhPOyJ0c+xfFdTzNezCR2cJ2AJX+2VwyYQ1Qabg1KQ3Q1TNo5FMfC99g2+LJITe4Ob9ix7AxxbD1hCQ+s2DUHoT1/xcVAztWdBAmh93Fkx/1P6rev5Ykt+2aglinNBM4Ehz4WQQIiq1b4a+EwXOqxAm9kcSyj/Ndj6tzeOPpXU7beVYSqQ+ZjsbcfRm+6g2Q2QCNOjWAulnaxZ1Q1CWBZvh8WLxsOe1mnx7hSf4zvtREjWSPCe1hibd6rW4fZJr1OILJBs3YVcM/LB7GsVyVJC8D9u2yGdTk2M0xohyFLlsLHbzA23/3AP9NJkf7w2uevWqmsIAO49l+AP/o4KttE5rpxwJLNeBXcD7NOPpMZqsJw8+RO3MxUgp5FTUzatBvj3SwyndHwj2y1de8FG+D3ug9me72QrmpkIkvEbOCP/Rfq26PPzEkQr5+Bva9lroApWICG31QSr2gTECPEdydm/TYLm889g1GlCZhWtIGQ9vlMoG+fXkiIj8ZTvwCYpkejcvnS+VxD0SpOICyLoYvX4M1QT+y+G8reVVSShP0WZzggPWfs8A2mrpyGaiaq/RAhnNv/jUVT32PCX0cRzk+eScX7x144lKkbCIEZGg5ahzmTmkC5xk2l3ix39eDSawSabLmOS6FS9/2StEg8OLcLD2T5je07oLd7CHYcuCcz1mUsyKhUfdRwMsGTF9L3ifSPfji9x4/ZG8uhxjtWZqnspFG3jhnlpU/5S6DroPF48DSAL7RKhbI4uWdN/lZApekkgfxqIwUCG3SZtQmBIf2x8vwrvo2SpH7A/fO7kXm0R2RWA98t2Ykh9eShS3KCltrInFCiPESACGgmgS9PhdJMmYuEVDbWxXn/s5aWWjbQqEt3hw2a9pw9B33LW7A1WdIkTnqART8tYnGUpD01Q+eu2HL+MGYNcoONYebHSQCDYlUwaPoBHNk0ECXzfeWGCJV7LcO544vRu74TVEIJSIUV6MGuahcsOHgGC/uXVw54y3QxdO6MjWePYf63zWGXhewiE0e0+3Y5TnjNQcPiqrrpo/WE/2GIK3MZJwfDl5mOyLDQLDuDsioz/LOp/z1O+JzCvDEeqFDcUMFYmkkAfbOy6PLjOpw5z2ZtlsnpDNIMVdAHIqCDBIRw6vg/NkmgJpu5LVNPkoxzyydh0z1ZrBAWc23Y2hM4uGA4atkbZ3q2mMFHzxJ1u03FoXOb8Y3qsyW0xeAV/+Dv/nVgpiicq0MAM8cm+G3LWRzdOgGN5StixRE4e9BLwdjArj3WnD2JJWPawslM9Em9XDlGNjUwZMYBHNsyGA6Z2kQhW+U29fAlHF32A1pWKaHiUklahUBkimqtf8C/587hr14VPmnTFIJo8A6n47TDF3Bw0Ti0qV0GVqaGMCnmANc2w7HyuDe2/+QK1cU0Qj29TzhosHokGhHIEwGB0BDmxaxgZZVxK2am+m4ggMjQ7JM8VlbFYVJIrwiSZG9M6TeOtXvP+EkPeVKeLiICXyDQuFFDdPJoj/ETfsU0NpGD0tcTMCjRFrP2n8PCn/qhit3n3VsbWJRHy0ELsePkXnSrZppFxWZoPGo39u5eil7Nq8Es0zsNe9uCZakWGLv4FNaxyVJ2OYkNp1KLoWMf/L1xHlpWts74viM0Q+WWP2H1f/+iY9ms5JIWItBviBF/DEdFy4wVS9LDEfEhVaWmL+2qV8cv1Uznvo5A6IcIBAWH8ltImNL939eVSlcXBQL51UaKTF3xwz8XsX72GDSsYK2IBa5gKDRBxSbjsGS/F37qVO7T84qMWe9QG5k1FzqqHgJXb95H/xETcfTYKfVUQKUWKQICCUuFqTFXfWpydGGKoLF1c66p0tLkI60aK2a2gtWuXRtRUVGIjY3NNq82Z0gIfYxr127jWWAkUtmAsX3ZGnBv1gBO5hk7QOrRMQXvHnnD+7YfgqOSoGdWAhVquKFpg7IwUbWhfabylMgAXL18E8+DIpAkMIZtqapo4NYI5aw/H8lAkhaBBxfPwudJMJLYwL5zpdpo0qQObI1y/50Vxwfhto8v/F8GISbNCCWcq8G9eUGx+wwUNR9+9uwZKlWqhK5dmTF3yxY110bFZ0egbdu28PX1RXJyMgwMCmlUNzsh83BeksxmH3pfxV2/QEQnC2FhWwa13ZqhThmLjAM7GcpOR5jfNVzwfoTQBD3YlquL1q1dUULVQpQh/6cf0j6+xe3rt/D0VQhi4lOgZ2qN0pXrwK2xC6xzVE4CXt3xwd2nLxEcmQozGyfUaNw8G7k/lUOTjqREvUdYmjlKljD7bGdTknQa/St2x54gqVHVscVC5ir4J8WqxYLWJyYmBsWKFYO7uzuOHj1a0NUXifqmT5+OFStW4PTp0+DaIUpKAmF7hqN0/61I4nsqQtTxPACfTd3Yyl/NSJLkqxjh4oEtz6WxlywrT8Dl+4tRM0dtnGbooMlS1GLukh88eIDIyEhNFlPtshmzwGTLl69EMfbfs39ntdeXkwoWHY1CZLwYo/o1y0l2jc0jYV493jy4gccBb/AhOg7pQgOYmJeAYzkX1KxZhTHPeZ8m9t1d3HvozwwfEYCRNZwqN0K9OmVy1A/7EiCJJBbPfM7j/rNgpBrZoWKdFqhbMZNx7gsFJEc8hc8Vb7wMi4eBuQPK12gMVxfHPLWj6tLxC+Jr1amPCUnYfugGqrBwDsNaWBaq7I3aD4Tvgye8DC5VKuDuhX2FKo+uV77zaiwevE1B/871YWX+eQO/tnHIvzYyAW8f+ODJ89cIjUqFqbUjKtdtjurO5l/oj+aMFrWROeNUWLk27rvKJsxJ8FtX7Y6tdpqNlc5avAljRo9E/369CgtnEalXCAOjwv0NVTdock2pbsJ5LD8qOgYhoZFs5m8JmJszN4iUNJ6AiV11tO3BtkKR1ACOLi3Qm215SQbFK6FVN7bl4mKBnjVqtenLtlxc9JmsQlMnNGjNbZ/JQIeJABHIEwGBYQnUbtmdbbm5XATbKs3Ql215TXrmpdCoHdvyWgBzhlvWtRW/5bkIjbpQjNe7x8Fl3CHA0AI2dnZskK4/1h+ZjtoqA31JgQF4ESF1Q8XNprdyLoXiGVYnapRSJAwR0CwCLG7lrYNbsP3gOdx/HooEgSnsSlVDs459Mbh/M5RUedYyCx7h54Xt/x7EldtPEfghBsliPZhb2aN8tfpo33swW/FSTmXgOh0B5/+FFzMSBcSyOL2ylBzzEHvXrMAlkR4qNB+EjjWVXi1yV768RPpPBKQEfhw/BqLYIMKRzwQEQguUqd2WbV9fsIVjHTRjW34ngcAClRp3Y1veSja0rorm3diWt8szXKUuHTNUQh/yhUD9OtVRzFLq6q9MKYd8KZMKKXoE8q+NNEGpmq3Ylv8MqY3Mf6ZU4qcE2rEFFm3asMFKE+02KH6qGR0pDAJkiCsM6jmo0+v0eaxeuxWTJ01Eq5YtcnAFZSECRIAIEAEiQAQ0k4AQNiy2jzVbIB2SFIP3b9gWuAqz5rhi7phmsDdIxJtH57B22nzcSUyTqiAwQV33Biz6JiUiQASyI5ASdglTBo7AsnMvwIdrkl/gcwnH963HkkX9sWzXWvRxyezKLQ6Xl32Lgb/tRVCSWH6V4v+1C8fxz5pFWOO5BrtWD4AT7wc8DXd2L8CEDY+hekVSCHObO/Ecu1Yf/ZZ5oD0zxAmRl/IV1dNOEScw4afJ8PcPwJkTe2BcxFmQ+kSACOScwIq5f+Q8M+UkAkSACBABIkAECoxADpzWFZgsVJEKgTKlSzGLewvYs1nzlIgAESACRIAIEAHtJmDVbCD61rRWxs4Th+PgrK6oXNIKltYOqNl8MFZfCpQN7LO4fKV6w7O381e7bNFuaiQ9EcieQHrsdfzapR8Wnc1khJNfKklHyKMd8OwwGAdfylecSk8Gn5qGIb9mbYSTXw7xR1zdNBpj595ETiMrya9Vd/nyeui/bhJwdHRE+fJlIci5h0TdBEFaEQEiQASIABEgAkSACBABHSBAhjgNvYmNGtbFr5MnoFq1qhoqIYlFBIgAESACRIAI5JSAwKgeZmydB48KFkpjXJYXC2Dq2BJ/b5+PZsXpNS1LRHSQCCgIpODigl+x6mYIpEGvhbCvOQgr9l+A95UjmDeiMSz4x0iC+HeHMX3KXkSmyy4WR+Dg+kN4myxd12ZQwg2TV+7FRRbf8pbPBexaOga15LFyJXHwWrEQ5yO4vCKUa9IZnp5dUMVSuWZV36oWenuOwIgRnmjmYgZhnstXKEc7RZzA5J8nYNO6pRgz7mf8OntVEadB6hMBIkAEiAARIAJEoOAJvH0Xiv2HT8E/4HnBV0416hwBZe9R51QjhYgAESACRIAIEAEioDkEitXwxGFfdxzashUHz3rjYcBbfIj+iBQWj8rYvDicy7vAvW0veI7ogarW9IqmOXeOJNFUAuK481i/zVfhjtLQrjPWHNuMbs76vMiN3erDKr4lRu/2Y6tNxXhydDNOBfbFgDL6kIgD8fx1rMyAJ4BD3QH4ZXRv2DAXslyq17AZ6tgIMWzVE9g6OcO5tAsMPjLXsdYGaDDkb9TvexUjLl+AX8xHPr+JbUtMXb0YNWWx6CRp9/JcPl8g/SECMgLPnr9Egr0N8SACRIAIEAEiQASIABEoYAJPn73G4lVbMG6sHipXqlDAtVN1ukaARnl07Y6SPkSACBABIkAEiIDGEhBZVEbPH/9mm8aKSIIRAa0hEHuLrXx7nyiTV4TqnYbDQ2aE4w8K7dHT0wPT9/vjfZoE6Qm3cOlSJDPE2TF3f1YoXkyfX6EqYea4116T0KDxWXTt3AFtWUD2JvUroPLAlbg+MG841F1+3qSiq7SRwKXzxyCKDdJG0UlmIkAEiAARIAJEgAhoNYHqlcvht4mjUK2Wq1brQcJrBgHyeaQZ9+ETKc6ev4IJP/0O3zt3PzlHB4gAESACRIAIEAEiQASIQNEmIMaHgBcIZQY2aRLCoZQD4qKjEa2ypTuWhrOBrMsjSYL/I39pdpETPLrUh7E8/hY79+rWISydNhrfuFWCrXUpNGw/BDNWHcWLaLk/y1wQV3f5uRCFsmongf0HDmLJ8rVIS2MrMSkRASJABIgAESACRIAIFDgBp5Il0KVjK1SoUK7A66YKdY8AGeI09J6Gh4fj8eOniImJ0VAJSSwiQASIABEgAkSACBABIlBYBMSIjIiRuZbkZEjFsekNYG1lBSuVzbb6j7iZIDekiREREiITWATXsYswt28NyLxJqigiQXJsIG6e3o6Z33eFS8UGmLT1PlJUcmS/q+7ys5eAcmg3gavXvHH4yEmIxXJjs3brQ9ITASJQMAQSEpIQF5/Ab9w+JSJABIgAESACREAzCJAhTjPuwydS9OzeCUcO7UKzpk0+OUcHiAARIAJEgAgQASJABIhA0SYggFAoX86WUxLMwJaoHJQUGFTEDzuuwHv/Qoz4ph7sTES8q8qMpUmQFH4HS77rhTmnIzOeyuaTusvPpno6reUEfhw/DiuXzYXX6XM4d+22lmtD4hMBIlBQBFp1HwGrCu785v7N4IKqluohAkSACBABIkAEsiFAhrhsABXWaX19fRgbG0NPj8L4FdY9oHqJABEgAkSACBABIkAENJWACLZ21hApbHH66PG3L94FByP4C9uVDb0zKiS0hGuPn7Hx2C0EhbzClSOb8eckT3i4V0ExfWVXSZz6Evu2nEJCxquz/6Tu8rOXgHJoKYGyZcqlDUePAABAAElEQVTApXpVLFy8Euu3H9JSLUhsIkAEiAARIAJEgAhoLwGvizfg1q4vduzcq71KkOQaQ4CsPBpzK0gQIkAEiAARIAJEgAgQASJABHJKwKpGdZRmxrKAFDG7JB0vnjyHRUlXmKkU8P7MIkzbHwg7Jyc4O5dG7WbfwM4KSAnxxdEzvngTGISgoPewafkrfutdAe6dh/MbV0TknXlo1WQK7idyri3FiH4XiOh0CUxk1j+BQGEFBCQSlkOZ8qN8ZWm0V5QJTBg/BuYi5UrOosyCdCcCRIAIEAEiQASIQEESMDczQcXyZWBVrFhBVkt16SgBMsRp6I198zYIT/1fomLFyrC3s9NQKUksIkAEiAARIAJEgAgQASJQOATMa3ZAu8qLEfAwigkgxsP9szCvdyPM7FwK3Fo2cfxdLJmxEJu8Q/hYckL9Kph7yQMNywFpUZcxe/Rk3OPjxwlg4ZUI1wab0aG0gUIZISuE2ddkSQBTGztYyJfgCQxgoLJiLiXuIxJULHFfXb68WvpfZAmEhIQyV6kp6NqlI/TjgossB1KcCBCB3BHo270DGtevxV/kYF8idxdTbiJABIgAEchAwK1eDTRycwNMimc4Th+IQF4IkCEuL9QK4JrrPreweu1WTJ40kQxxBcCbqiACRIAIEAEiQASIABHQLgICgzoYO7Ejdny7C1FspZo48THm9HTFyVbtUNtJgGdXvXA1III3woGZ5ip0nIDBDUx4JU0qD8C4rusxapcfM+FJEPtyJ7q73kbz1m4oa62HjyF+uHL+OgKTuNVwLAlLoF2vNpBeDQhExWFdXGm0SwzZj/F90uFiFAqrDiuwaPjXlS+tlP4WZQJz5y+Ev38AzpzYA/2iDIJ0JwJEIFcEJo6muHC5AkaZiQARIAJEgAgUEAEyxBUQ6NxWU5O52hnhORjlyrEpu5SIABEgAkSACBABIkAEiAARyERAhKpD5mOxtx9Gb7qDZLZ6TZwaAV+vXfDNkFMAy/L9sHjZcNjLV7QJ7TBkyVL4+A3G5rsfmClOgqRIf3jt889wJf+BrX5z7b8Af/Rx5Ffa8cdEpeHWoDREV8OYU0yWxLHwPbaN1asHd4c3SBe2/rry+UroT1EmULeuK5yc7CEUqrhALcpASHciQASIABEgAkSACBABIqDFBDivLZQ0kEC1qpXQr29PlCldSgOlI5GIABEgAkSACBABIkAEiIAGEBA5YtjaEzi4YDhq2RszV34Zk1DPEnW7TcWhc5vxTRnlCjYul4Fde6w5exJLxrSFk5nok2vZujcY2dTAkBkHcGzLYDjoqZauj9YT/ochrnbIaCdJR2RYKG+c+7ryM+pBn4oegcED++N/v/+MDt/0wsDvZxQ9AKQxESACRIAIEAEiQAQKmcCTgFdYuGITbt7MOM2vkMWi6rWUAK2I09IbR2ITASJABIgAESACRIAIEAFdJWDbdwsS2ZajJLJDx59ZfLfv5+G+91Xc9QtEdLIQFrZlUNutGeqUsVCuZMtUoH7xuvhx9WmMm/cWt6/fwtNXIYiJT4GeqTVKV64Dt8YusDZUNcApCzB07oxNNx7jx4tn4fMkGEnM6OdcqTaaNKkDI1m2rylfWRPtFWUCjg4lYVfcvCgjIN2JABEgAkSACBABIlAoBAKDw/Df0dMo6VwaDRrULRQZqFLdIUCGON25l6QJESACRIAIEAEiQASIABEosgQEhiVQu2V3tuUegZ55KTRqx7ZcXirQs0atNn3Z9uUL81r+l0uls0WBwLYtayCKDSoKqpKORIAIEAEiQASIABHQKAIN6lTD+qV/wq50BY2Si4TRTgLkmlJD79t/h46jR69BuHzlmoZKSGIRASJABIgAESACRIAIEAEiQASIgDoIrFy9Fj/+PAWpqanqKJ7KJAJEgAgQASJABIgAEciGgJWlOVyqVUKJEjbZ5KTTRCB7ArQiLntGhZJDT08EIyMjiERkKy2UG0CVEgEiQASIABEgAkSACBABIkAEConA8+cv4O8fAImkkASgaokAEdBKAk/8XyA+IYGX3ZiNKblUraiVepDQRIAIEAEiQAR0jQAZ4jT0jnbp1AHt27dHWlrWMSk0VGwSiwgQASJABIgAESACRIAIEAEiQAS+ksDff82CgZ4Y69ZvRnFjAYb09vjKEulyIkAEigIBz/HT4PvgCa+qS5UKuHthX1FQm3QkAkSACKiFQFx8IkLfx8CqpAjFilmqpQ4qtOgQoOVWRedek6ZEgAgQASJABIgAESACRIAIEAEioAUEjI2NYWZmiv3/HcXxc95aIDGJSASIABEgAkSACBAB3SJw7dYDDPz2Zxw/4aVbipE2hUKAVsQVCnaqlAgQASJABIgAESACRIAIEAEiQASIwJcJLF08B8Zp0V/ORGeJABEgAkSACBABIkAE8p1ASTtrtGvVBGXKlM73sqnAokeADHEaes8fPHqK6z534NbYDeXKldVQKUksIkAEiAARIAJEgAgQASJABIgAEchvAvfuP0By0kc0c68Pg/j3+V08lUcEiICOEvj1R0+Eh0fx2llZkRs1Hb3NpBYRIAIFRKBm1QpwqVUHMCleQDVSNbpMgAxxGnp3nzzxw46de+Hg4EiGOA29RyQWESACRIAIEAEiQASIABEgAkRAHQS2btsOf/8AnDmxRx3FU5lEgAjoKIHuHq11VDNSiwgQASJABIiAdhMgQ5yG3r+m7o1gX9KBLX0tr6ESklhEgAgQASJABIgAESACRIAIEAEioA4C33h0RBO2Gu79+xAYp0aipK21OqqhMokAESACRIAIEAEiQASIABEoAAJkiCsAyHmpwtGxJGxs7ZGWJsjL5XQNESACRIAIEAEiQASIABEgAkSACGgpgbZtWsHYEGjRqiMc7W2wZ+1sLdWExCYCRIAIEAEiQASIgHYSuHnvCbbsPYVuPbqhbZuW2qkESa0xBMgQpzG3ggQhAkSACBABIkAEiAARIAJEgAgQASKgJNCimTuszfSVB2iPCBABIkAEiAARIAJEoEAIREV/xN0HT+DWxL1A6qNKdJsAGeI09P4mJiYh5mMiDAxMYGjIpkJSIgJEgAgQASJABIgAESACRIAIEIEiRWDmjN8hig0qUjqTskSACBABIkAEiAAR0AQCrdzrws3dDfqWtpogDsmg5QSEWi6/zop/+OhJ9Ok3DNe8r2u9jiKRiLnYTNN6PUgBIpCfBOTPBPd8UCp8AvL7IL8vhS8RSUAECp+A/HmQPx+FL5HuSSBnK2etexqSRkQgbwS4Z0L+fOStBO2/auq0mejWawhSUlI1ShkBi5wglkg0SiYShggUNgH5MyHkHhBKRYqA/JaLxdQuFqkbT8pmS0DC3hWEOtAk6uvrwdTUhC2UMchWZ8pABLIjQCvisiNUSOft7e1Qr14dFC9evJAkyL9qjYyMkJycnH8FUklEQAcIJCYm8lpwzwelwicgX3mclJQEExOTwheIJCACGkCA2in13wTVtkf9tVENREB7CHC/x8bGxtojsBokFQqFzBipefNm9dgcMs4Oxw06C3VhhE0N946KLHoE0tLEvNJsvLbQ07HTlxARFcPLYWVpji4dKKaROm8K1yZyKT2dDHFSEvSXCEgJpKWLoSekief0fSACqgQ04DVBVRzalxNo0cwNjRs3ZivJtH/6gKmpKeuoiREXFwczMzO5ivSfCBRpAjEx0s4R93xQKnwC8vsQHR2tExMgCp8oSaALBOTtFP12q+9uqrY96quFSiYC2keA+z2WPx/aJ33+SDxrxv9gzCIU/PLrH7AxN8If44fmT8FfWYqhnrR/mpyaxuSj2HVfiZMu1xECKSlSD0AG+oU/fjN70Xr4snhGXHKpUoEMcWr+jhnI2kRNW72sZrWpeCLwRQKpaen8pB0DHbA6hIRF4tHLRyhfrSZKl3L+ot50kghkR0DzpthlJzGd1zoC5cuX52X28/PTOtlJYCKgLgLy56FChQrqqoLKzQUB+X3w9/fPxVWUlQjoNgF5OyX/HddtbQtHO2p7Coc71arZBD58+IDIyEhQ2yO9Tzdv3cX9J8805qbZWEhnt0fHxmuMTCQIEShsAlGxCbwINua0+qOw70VB119C1ibKvwMFXT/VRwQ0kYD8ebCx1P42kXsHmzp7Ka5e1f7QUZr4XSlqMpEhrqjd8ULQt3LlynytDx8+LITaqUoioJkEHj16xAsmfz40U8qiI5X8PlA7VXTuOWmaPQFqp7Jn9LU5qO35WoJ0vS4SkP8WV6lSRRfVy7VOBw/8i3Xzf8v1deq6wFY2qBYRLTU8qKseKpcIaBOBSNnzYCczymiT7CTr1xGwtZAu+YmMoTbx60jS1bpEIDJaOllHF9rEimWdMWp4P9SqWUOXbhHpUkgEdGCRaCGRU3O1V6/dxAmv8+jSqRNq1HBRc23qLd7V1ZWv4Pr16xg+fLh6K6PSiYCWEPD29uYlrVWrlpZIrNti1qlTh1eQa6coEQEiICUgfx7kv+PEJf8JlC5dGsWKFYOPjw/vxpuLCUWJCBR1AvK2R/7bXFR5eJ0+g+joCAwZ0AMGojiNweBUXDqEEBIeC5eKDhojFwlCBAqTQEi4NOyAk3XhD7GtWTgV8fHSeOQmJhSPXN3fC0dZmxgq+w6ouz4qnwhoAwHuHYFLTtba78K6XGkHlKnIFpiYFNcG9CSjhhOg3r6G3qCgd+/4Za8fwsM1VMKci1W3bl0WyFuIy5cv5/wiykkEdJgAF/fk/v37qFatGiwtLXVYU+1RjZt1b2FhgStXrrBA2+naIzhJSgTURCA1NRXXrl2DnZ0dOGMRJfUQ4N6PGjZsyLvhe/r0qXoqoVKJgJYR4H6LudSoUSMtkzx/xT156jS2btvF3kvE+VvwV5bGDaqJ2CjC+7BoFv9F8pWl0eVEQPsJcLGQwiPjWCxHIcyMCt8NW50aVdGkkSu/udaspv2ANVwDYwMh7IuJEB4Vj2RZrEANF5nEIwJqJxDM3hEELGRmKRvtN8SpHRZVUKQIkCFOQ2/3Nx5tsW3rWjRq2EBDJcy5WFyg9caNG4OLvXTv3r2cX0g5iYCOEti/fz8/cNGqVSsd1VD71OIGw7n7ERERgQsXLmifAiQxEchnAidPnkRcXBxatmzJOlGsF0VJbQRat27Nl71792611UEFEwFtIRAWFoazZ8/C2dkZ5cqV0xax1SKn5/Ch+HPm7/C+fgPXfTXHxb++SICytnr4GJ+M0IiPatGdCiUC2kTgReAHiJlRumJJGnDWpvuWn7JWKmnAF/f87Yf8LJbKIgJaSSA8Og7RsYkoY6MHQz1d6Ufqih5a+ZXSKaHJEKeht9PczAwOJe1hYmKioRLmTqz+/fvzF2zdujV3F1JuIqCDBLZs2cJrJX8udFBFrVSpX79+vNzy+6OVSpDQRCCfCMifgwEDBuRTiVTM5wj06NED+vr64N6RaEXu5yjR8aJCYMeOHfxzwLU9RX0SQE0WnqCpeyPM/HM+Fq3dpVFfgbrlpO7u/F6GaJRcJAwRKAwCfi+kz0G98tLnojBkoDoLl4BrOUNeAL+X7wtXEKqdCGgAAXmb6Cp7V9AAkb5KBK+LN9C6y2Ac+O/IV5VDFxMBjgAZ4uh7UCAEunTpAnNzc2zevBmxsVJfwQVSMVVCBDSMwO3bt8HFh6tXrx6qVq2qYdIVbXG4FXEODg7Yu3cvgoODizYM0r5IE3j16hUOHz6MMmXKwM3NrUizKAjlixcvjk4sJnBQUBDPvSDqpDqIgCYS4AzRK1as4A1wNFlJeYe+H/stPPt3Vh7QgL3qToYwNhAg4FUokpJTNUAiEoEIFA4BbuVHcFgMSjLXhI5WtCKucO5C4ddqb6kHZ2sRQsM/0krhwr8dJEEhEkhOTcNTNjnBgIXLrFlKaqAuRHHypWojIwO2UMYOZmam+VIeFVK0CZAhTkPv//uQUFz3uYmwMN1Y2m7GVvgNGzYMHz9+xIYNGzSUOolFBNRPYOHChXwl48aNU39lVEOuCOjp6WHUqFFIS0vDsmXLcnUtZSYCukRg8eLFvPtcrp3i3LZSUj8B+W/CggULKOaS+nFTDRpK4ODBg+AmAnTt2hWlSpXSUCkLTiwuVngIc9XZs0cXeLRqXHAV56AmA+ZqqlFFI6Sx+HWPntHkpRwgoyw6SuDe0yBes6ZVjXVUQ1IrpwTk34F7TwNzegnlIwI6R+DJ8/fg4mY2ZO8Ihvq64c6xeaM62L5+Edq3k4YT0LmbRgoVKAEaXSlQ3Dmv7Jr3TUybPgd37upOTLXvvvsOBgYG+PPPPxEaGppzGJSTCOgIgatXr2LPnj0oW7Ysv/pBR9TSKTWGDh0KCwsLLF26FM+fP9cp3UgZIpATAo8fP8aaNWtgbW0NubvWnFxHeb6OgKurK9zd3eHj4wOKFfd1LOlq7SSQmJiIX375hRf+hx9+0E4l8lnqGTNno9+Ab/lSJflcdn4U51bZCHoi4O6Tt4hLTM6PIqkMIqBVBELCY/lVoZYmQtQqrRsrP7TqBmiYsC5spXBxMyFesDhxwWHRGiYdiUME1E8gISkFvo/eQMQsDe6VdWxyAsVMV/8XqIjUQIY4Db3RNVyqYsTwwahUsYKGSph7sRwdHfHzzz8jJiYGEydOzH0BdAUR0GICycnJGD16NK/BvHnzIBKxkQtKGkeAM8JNnz4dKSkpGDNmDK1M0bg7RAKpkwDnFo5rp7j/s2fPhqkpud9QJ+/MZct/GyZMmIDIyMjMp+kzEdBpAtxEPW413KBBg1CnTh2d1jWnytWr64rWrZpBwFYmJ6Wka9w7ibmRCG1qGLOZ72JcufVc4+TLKWfKRwTyQiBdLMalmwH8pV3rmbKBZ81Z+bFywy78NmsJvy1dtz0v6tE1eSAgZN+BrvXM+Csv3XzGrxjOQzF0CRHQWgJXfV8gJTUdLasbo5iJjo13CXRMH639lmm/4AIJS4WpBld9ajLNFsnqHqSkMjZpmvNCl5WMuT3GGSOaN2+OgIAA7Nq1i2bb5xYg5ddaApwRmnP31qNHD2zcuFFr9SgKgotZx9rDwwM3b97E8uXLQTPzi8JdJx05Apwh6LfffkOzZs3AuYgT0My/Av9izJw5k3eN27NnT+zbt4/uQYHfAaqwMAhcuXKF7x9w8RJv3LgB7j8lKQETI2DyL1Pgff0mjm9fDGsrC41Cky6WYPnJaITGpKNVo8qoUs5eo+QjYYiAugj43HuJO08CUc3RAEOaa9Zz2aj9QPg+eMKr7lKlAu5e2KcuDFRuFgR2Xo3Fg7cpqFXFCe6u5bPIQYeIgO4RePY6FGe8/VDCQoTxHYtBX6Q7Y9kHTlyE3+swjBg5DLa2JXTv5mmURkIYGFlqlET5LQytiMtvovlYni4OgBkaGmL9+vXgYjFxrir9/PzykRgVRQQ0k8CRI0d4I5yDgwO4+D+UNJsAFxOLc83HrQaaNGkSbt26pdkCk3REIB8IcK5zp0yZAktLS6xcuZIMQPnANC9FcIZQFxcXHDhwAKtWrcpLEXQNEdAqAiEhIRg4cCC/mor7zpMRTvX2SefLlirlDJeqFZGamqZ6UiP2uVVA/dzNeDdUV24/Q0RMvEbIRUIQAXUSeBMcwRvhzIwE6NGQvAeok7U2lt21vhksjIW47xeEl0Hh2qgCyUwEckUg6mMCLt16Bm5hMPdOoEtGOA6Ez+2HOHriNNLSNO89LFc3ijJrBAEyxGnEbchaCG4iOrcyQ9dSzZo1MWvWLHz8+BFt2rTBmzdvdE1F0ocIKAhcunQJffr04V1Rrlu3DlZWVopztKO5BLg4fkuWLOFdVLZv3x5c3CxKREBXCdy9e5dfBcq5pORWgTo5OemqqhqvFzdhacOGDTAzM+NX41K8OI2/ZSTgVxCIiopCu3btEBgYyLvF5fYpKQlwc8m5/uD4H0Zj/dKZsLfVzJWCJYvpo3NdU95F5ZFz9xEdl6hUgvaIgI4ReP8hGqeuPOafzT6NzWHGXLRSIgKqBEwNhejrZsYbJc5cfYJ3oVGqp2mfCOgUgY8JSTjKfvs5l5Qd65jA0Upfp/TjlPn1+yFYv2YxrYbTuTtbOAqRIa5wuGdba3BwCL7p0hd/z1uYbV5tzDBq1CiMHz8e7969Q4sWLfDy5UttVINkJgJfJHDhwgV888034FyyckY4d3f3L+ank5pFoFevXuDcxHEDha1atcKDBw80S0CShgjkA4Hbt2/zk2K4yTHz589H586d86FUKuJrCFSuXJl3380Z5bh4WZwrb0pEQNcIhIeHo23btnj48CHvtpuLEUdJSSCaxdQe8/0ErFm3lT8oEOopT2rgXqOKxmjlYozEpFQcOXsP3Ox4SkRA1wgEh0Xj2IVHLJauBL0amqFSSQONVNFr3zqEPrnIbxcPb9FIGXVdqPJ2BujT2Ayc+97jFx8hiIxxun7Li6R+MfFJOHTmPuISUtC0qhGaVDbWSQ7WxS15jyWcZzdKROBrCZAh7msJqul6cwszmJubw8LCXE01FG6xnNvN6dOn49tvv8Xr1695A8WdO3cKVyiqnQjkIwEutk+HDh2QkJCAFStW8INM+Vg8FVVABLj4cL///jvCwsL4uFncCkdKREBXCJw5cwYtW7ZEZGQkZsyYgZEjR+qKalqvBzdxY/v27bwr7wEDBvArFQs5rLPWMyUFNIcANwGvadOm8PX15Scsce6gRSJaVaJ6h2KYIe716zcIj4jkD0sEmj/407aGCZqwgThuQO7g6XsICY9VVYn2iYBWE+BcDB698ICt/ExHt/qmqFuOBXDU0GTJxpKKW1nyG7dPqXAI1C5jhJ7MYJueLsbxCw/x/G1Y4QhCtRIBNRAIi4xjv/V38ZEZ4xpVNIRHbVPdDW0gYO+oFDtdDd+iolmkiA28zChs1cXpSYUtgsbVb2hggN49u8DVtb7GyZZfAnHGOM41JednlxsM3Lx5Mx+TqVGjRrrbgOcXPCpHYwnEx8fz7sS4OD/cd3zjxo28a0qNFZgEy5YANyBuYWGBEydOYNu2bXybxQ0g0qBhtugog4YSSElJwR9//MG7guP2Fy1axO9rqLhFVqxy5crBzc0NXJxRbrt//z7/3mRiYlJkmZDi2k3g/+zdBWDcRtbA8bdghnAcZmYsXvGK114pxSulkHJ7ZWZuyphemZnyNWW8MkOoYWZ0wOzd/d7TZmU7sXOOceGvu9T27Ega/WZW2tXTzFgw+YUXXnB63i5ZskSOPvpoZ8SApKT4G8aotjXVVOfrPO5fh8tOOw6TjRvz5NHHn9UhPBfJgN7darvpelvfPvf2bJPk3KuasaRIps1ZJjbvbpuW2Xy3qzd1NlzfAqUaePvmt9ny3W/hEXysl9PI7vHZ66O+LRNx++2b+6V1tlcmLyzWQNwqySsolvY5TXVeTfpEJGJ7iIdjts9yf+j8h59++5czHOXu/dPkgKHxG4TbmFcg02YvkrTsZmKjlbDUt4BHfP7ofdClLo6eQFxdKNbTNizgXlJqk3TbDAHxudgXtl133VW6d+8un3/+uUyYMMEJym233XaSk5MTnwfNUcWtgAVqbChKa8udO3cWm9vn73//e9webyId2MiRI2Xo0KFiw41+9NFH8s4778iQIUOkY8eOicTAscaBwFdffeWcp8aPH+9cZ63X1aGHHhoHRxafh2DnmAMPPFB+/PFHsbp7+umnpW3btmLz7dpnKBYEYkXARsCwoVZtCFy7iXPzzTfLNddcw0MtW6nAJL9HUlOSnAeArrj6RsnTm0EH7bPLVtZo/JfsvNRNh2Rr3cQrM5cWy/wlufpvtbRqni0ZadE5jF/jq1GCaBVYsHSNvPffybJw6Vppku6VE3fLkn4duBEbrfUVreXKaeqXnm2TZNayElm4fIPMmLtcmmalSdNsHqyK1jqjXJULrMrN0zkyJ+uDNsslSTvqH75DpuzSJz2uv5P8MnGanHvlWAkGg7LddiMqhyG1DgXiPxDn0S9CFulptMV2X1KU22j7j/YdFxSGJBhKjBstCxYskPPPP1++/PJL5+lJe0r2oosu0l6Bw6K9mihfAgvYOezDDz+Uu+66ywnAGcWJJ57ozC1mvahY4ktg+fLlcskllzgPDdiRHXLIIXLxxRc7vVa4KR5fdR1PR2PnKQvi2HnKHnix5bDDDpM77rhDWrRoEU+HGrfHYnONWgDjgQce0CGOAjJ8+HDn3GNzWTJfQdxWe1wc2IwZM+Tee+91gsjWju0hFhuyu3///nFxfPV5EMnaUdBudNnyzTffS1ftWdGxXetwQgz8NzcvIG/9pDedl5Y6pe3eqZUM6dtRclrE59QLMVAlFLEaAvaZaeGytfLHXwtl0bLwfarh3ZLlgGGZkp5ML6ZqEJKlCoHCkqC8/3ue/DSryMnRrnUTGarnxE7tmsd1IKMKDpJjSMCGobRz4mwdXlVPkdI9x6/DrmZJ88z4H1Z8yvQ58sp7X8meOprbbrvuHEO1FqtF9UpyapNYLXy1yk0grlpMjZPpjz+nyBdffS/77LW3dOnSuXEK0cB7tQ++b731ltx44406/MpCZ+/WE2X06NHOMDb0PmngCmF3lQrY0zDTpk2TN954Q5555hmZO3euk896TN16662y/fbbV7oeifEjYL3irr32Wpk5c6ZzUAMHDnTOUxaY69q1K1+m4qeqY/ZI7Ho6a9Ysp/emnaemTp3qHEufPn2cnih77rlnzB5bIhf8r7/+kquuusp5aMkc2rRpIyeccIIcddRRMnjwYHoXJXLjiKJjt3lV7SElO/dYT3JbWrZs6TzIcvLJJ9NOq1FX333/owbhgrLTDiMk2SJyung2LBFPoKQaa0dPFrsWTVpQJB/8kS9r84JOwVo1z5TeXdtIl44tJCsthc9M0VNdCVsSa6drNxTInAUrnSFV128MT53StplP/jksw+nlmbA4HHidC8xbUSLv/rZRFq8JONvOykiVPt1ypJs+rNBce8nxcGedk7PBGghsyC+SeTo3pg0zvVIDcbZYz+D9hqTLkM6Jde0OpLcSTzI9WGvQjGqwCoG4GqBt2yr2oYcecZWbvfbGeHnokafkvHPPkv3327fyTHGaavPGvfvuu/LYY485wzFFDtMCcRaYs6do7Wa3zZOSmprq9KCL5OEnAnUpYD0PCgsLZcMGfaJXn+qeMmWK/PDDD7J27VpnNzZP2L777itnnXWW7Ljjjnxwrkv8KN+WBWRtfstx48Y5vY0ixbUb4xaM7devn/To0cOZ+5LzVESHn/UhYG2xoKBAhy3Lc4JvkfPUypUr3d1Z4O2MM85whsvlC77LErO/TJw4UR555BGxIUatl5EtmZmZzrlnwIABYgHXJjrHlJ176DEXs9Uc9QW373H2GcnOPzayhQX8f/31V/chFTsA+8w+ZswYZ75ca48s1RM446zzHNNPPnjdDcRJ3krxluRXbwNRlisYDMmURUXy7fRCmbcy3EPOimjDVbZqkS0tmqRLdqadr3waqPXG8cQMdVsxhQX5kprGzcFtUbXzViAQlGKd+22dBt/WrMuX5avWS1FxuF3aqM+9dRjBv/VJ014fNudhYoxOtC2G5K29gLXDuRqQ+2ZaoUxbUqyjYIW3mZKsc8ppr+EWTTKkSXaaJEfOibTD2qOzhUoFrOnZOdHmw1yfV+icE1eu3iAbNRAXWTq39MtOvVNlQMcUnd8w8c6Jgax24vGFH4qKmPCzvgQIxNWXrLtdAnEuxRa/LF68VKbPnCs9evaRFs2bb/F6oiTMnj3b6Xn07bffyi+//OJ84U+UY+c4o1OgadOmssMOOzjzG44aNUpatWoVnQWlVA0mYD14rYfkN998Iz/99JMTEGmwnbMjBCoRyMrKcoIyf/vb38TOU+3bt68kF0mxLrB+/Xqn16P1Ovr+++/FeiKxINCYAhb4tWHl7eEkGwLXeoyzbLvAhx99LLm5q+SU0f9yVrYHLhbOni6ewnXak6zttm8witZYtSEgf8wrdG5Cz19VKnrvj6UGAkF9WPD1/1wqo8bcJv4k5t+rAaG7SqreX+3cKkm6t0mSodrTIysttodbu+jaO2XWnPDoQp31fPHAbVe4x8ov0SewsVDPifOLZNbSEpm/qkQKiqOvjJQosQQ0/iudWvilqz6MMKRLqrTKiu1zYm1qL6RB8FB2Rx2WIPECkLVxq/m6BOJqblfNNQnEbR1Kv3NJQdmDCFvPnACvlpSUyJw5c2T69OmyaNEiKS4udgJz1o5YEKgPAa/XKykpKZKWlub0wrReBh06dKAXZn1gx8k2rRflvHnznOFLrYeA9VaxHgOcp+KkgqPwMOxpbetpYv86d+4svXv3dn5aj12WxBGwc8zSpfoQl35GsoeYrIeknXvsBj4LAvUlYOed5ORkZ5hU+4zUvXt351xUX/tLlO16vSFJSym76TNr1hw5YfTpssdOw+W2K8+MG4aAdgNZtTEgK3JLJTdfn8gPhJzAHN/s/ncVf/rxe3Lv3bfJmWdfIAceNOp/r0AOR8Dupfp1qrckv0daZPikdVO/NMvwijeObrLusO+x8uvE8JDkA/r0kN+/eJ3ajxGBoH6Wy9VhfFesK3XOjSWlek7Uj3Hc7oqRCozBYtonDQu8+XweaaZDT7Zu4peWGnhLxJ5vm1ffzLkL5IpbH5XDjzxcjjzi0M1f5u96EYj/QNym6Z/rRY+N1oFA+POgfRUp+yJWB5uN2U0kJSU5NxjtJiMLAgggEI0CFvywG5H2jwUBBBBoKAELyLZr1875t8ceezTUbtkPAgjUg8DmIz/ZfOF7/X032a5/13rYW+Nt0m705WT7nX+NV4rY27NN43Duac87BR//5gsy9uKjNACeEnsHQokRQKCCgAWEm2f6nH8VXuAPBBBocIGlK9bI6rXrpKSkbEjtBi8EO4w7AQJxUV6lpaUlOt/LPMnJaStZWZlRXlqKhwACCCCAAAIIIIAAAgggUFOBDRs2SvNmGRVWt7nTbrzhavFsWKKTuZRUeI0/Ek/gxTfflznzFzkHvmTZSnn6pXfkzJOPSjwIjrhSgRbNm0jrluGpTVo0a1ppHhIRQAABBLYusOv2Q+Sjd1+WUg/zw21dile3RcCjw9g06sgPtvuSotxtKXNC5X3y6Rfl2edfk8suvUh2323XhDp2DhYBBBBAAAEEEEAAAQQQSCSBCy++zBmC/7WXHpeMjPSKh563WrwlGyum8VdCCVhvuD47HiTzFy11j7tVi2Yy55cP6BXnivALAggggAACtRcIZHcQj5fpHmovWd0txP/QlDo6Nks0CwwfNkT22XsPad2qVTQXk7IhgAACCCCAAAIIIIAAAgjUQsAeUm3TJkc6deywZRBOtxvyp0juegJxtSCO+VVfeOO9CkE4O6CVq9c6veJi/uA4AAQQQAABBKJEIORLIggXJXURT8WgR1wM1GZQJ2ctKIqBglJEBBBAAAEEEEAAAQQQQACBGgv4vCFJTdlyfvCgfik87vgxkp+3QcY/PVZsXkiWxBKweWr6/+0Qmbtg8RYH3q5NK5n+/bv0ittChgQEEEAAAQS2TeDTr3+WXybPliP/dYx06dxp21Ymdy0E6BFXCzxWrSsB+47lkUYdQbSuDoXtIIAAAggggAACCCCAAAIIVCHgrWLMGq++0LFje+nUoZ3k5RdWsTbJ8Szw4pvvVRqEs2OOzBUXz8fPsSGAAAIIINAQAp99/Yu8896nUljA562G8E6kfdAjLkZqu6AwIBvyiiQjfbN5AmKk/BQTAQQQQAABBBBAAAEEEECgagEbmjIt1SO+KoJx9rqncL14mWO9asQ4fWVrveEih0yvuIgEPxFAAAEEEKi5QEFRifw2Z41sv/0IsQehWBpKgB5xDSXNfrYiMHvOPDnymNHy2ONPbiUXLyGAAAIIIIAAAggggAACCMSiQF5+vow+eYw8/cyLVRbfGY4yOa3K13khfgW21hsuctT0iotI8BMBBBBAAIGaC6RkNpEdd9yOIFzNCVmzCgHCulXARFNyBx1+xOv1SFJSUjQVi7IggAACCCCAAAIIIIAAAgjUgcD8efNl3bp1Ouxk/ta35k2SkNcv1juOJTEErDfcrfc+Xq2Dve2BJ6SwkAnmq4VFJgQQQAABBCoTSMqoLJU0BGotwNCUtSZsmA0EAgEpLvVKMMik3A0jzl4QQAABBBBAAAEEEEAAgQYUCBVJaUmRNGmSXeVOp06dJvfd+4Dsu9tIOeLAPavMxwvxI/DMK+NlzAXXV/uA7r/5MjnrlKOrnZ+M8SVw2Inny6S/ZjoH1bt7F5nw8sPxdYAcDQIIIFBPAqWlAXnqlQmyx34HSPce3etpL2y2agGGpqzahlcaVMDn84nfRxCuQdHZGQIIIIAAAggggAACCCDQIAIhSU9L2WoQzoqRlZUlk/Um+18z5jVIqdhJ4wpsS2+4SElvf/BJesVFMBLwpw1ROm/hEuff4mUrElCAQ0YAAQRqJvDj71M0EPeuvPTqmzXbAGsh8D8E/P/jdV6OIgGNxUmoODwEiTM/QBSVjaIggAACCCCAAAIIIIAAAgjUTMCnk0Z4qvHcZceO7eXVl56WTk11hWBJzXbGWjEjUJ254TY/mKXLV8lTL75Nr7jNYfgbAQQQQACBrQj0791NLjh3jPQbMHAruXgJgZoL6Kf3xl0IKFXf/4svv5bTzzxHZswIDzNQ/TXJiQACCCCAAAIIIIAAAgggEI0Czz7/orzw0iuSX1BQreJ17NRBQsmZ1cpLptgVqElvuMjR0isuIpF4P4cP7ie77zTS+Tdy6IDEA+CIEUAAgRoK2NDgRxx5hPTv37eGW2C1WglU44G0Wm0/ClamR1wUVEJ1i1BaWioLFy6SqdOmSe/evaq7GvkQQAABBBBAAAEEEEAAAQSiUKC4pETGj39XkpL8Mvr4I6pdwlByhoQK10oC3LOotkm8ZaxJb7iIAb3iIhKJ9/PhsVcl3kFzxAgggEAdCISS9CGn6gxPUAf7YhOJKeAJ6dLYh16sXyBY/rdAYWGRrFmbK02attbMfOX632LkQAABBBBAAAEEEEAAAQSiW2DNmhWybOkSGTliSLULOmvWHHnq8Sdl/z1Gym47DK32emSMDQHrDZfeaWStC7th7g+SmppS6+2wAQQQQAABBOJVwEIjb3/4ley+7wHStHmLeD3MqD8uj8cnSSnZUV/O2hSw0YemDBeeoFJ1KtE+QLdrmyN+nSuOBQEEEEAAAQQQQAABBBBAIPYF2rVtvU1BODvigsJC+fLbn+TrH/6IfQCOYAuBF96YsEWaJfh14viT/3WozPhxgpQs/V1m//yBnH7CEZLkr3ywI5srjgUBBBBAAAEEqhb4deI0Gfvw83LrHfdVnYlXEKgDgSjpEZerh9LoHfPqgLNhNhEIiBQWN8y+2AsCCCCAAAIIIIAAAggggED9CHg9IUlN8WzzSEj29PbEiVNkcNfm4g2W1E/h2GqjCFhvuH47HyzzFi6psH8LwF3+71Oka6f2FdLtjwWLlsnYB5+S/zz3eoXX2ua0lBk/TKBXXAUV/kAAAQQQQKBMIHfdRnnzs59l8JChMmzY4LIX+K1BBegR10DcHk+UdMxroOOt7W5+/vU3ueCiS2X+ggW13RTrI4AAAggggAACCCCAAAIINILAa6+/KR98+KEUl2z7U5YencNk8OABInE+hE8jVEuj79J6w0WCcOV7wP3n7msrDcJZgTt1aCMP3XHlFj3kInPFNfpBUQAEEEAAAQSiVKBJs2Zy0kknEoRr7PpJgPhQlETAGJpyW9r66tVrZNq06fKLBuRYEEAAAQQQQAABBBBAAAEEYkugqKhIXnn1dXnqmRd1cJhajA6TnCEhnVMjGAzGFgClrVTAesPdeu/j7hCUU78bL5sH4L7+4VcZsMuh7r+Pv/jO3VYkIDft+3fdIStvf/BJsfnmWRBAAAEEEEBgS4FQSpZs89AEW26GlFoK6PgQtdxC9K8eFUNTlhRvlBDDaVS7tRQVF8uCBYulXfsuuk78N9Jqw5ARAQQQQAABBBBAAAEEEIgRgZUrl8rSJYtlxx1G1LjEq1atljvH3iOtm2XIJWceW+PtsGJ0CFhvuK+//63KISitlB9+/o3889hz3QK/8vhYGXXg3u7f5X+JDFk5ZEBvOfX4UeVf4vc4FbCgqw1da4v1nE1NTYnTI+WwEEAAgdoJLFm+Sj74/AcZdezxkp2dXbuNsXatBby+VPEnpdV6O9G8gcpn9G3gEtvQlLV4BrCBS9v4u0tJTpaePbrqECYh0QfmWBBAAAEEEEAAAQQQQAABBGJKICSdOraVLp3a1qrUWVmZMmXaTFneLFtKdTJxG8qQJXYFDv3H3+W4ww+sswOI9JDLyy+os22yoegW2P3gk+XXiVOdQg7o00N+/6LivIHRXXpKhwACCDScwAtvfihvvf+lZOd0lFGHHdRwO2ZPlQrYwyPxvkRFII5eXTVrZkl+jwbjghIIBMXvj5KqrNmhsBYCCCCAAAIIIIAAAgggkDACfo2XeevgfkNKSoqMe/head8yU/xFuQnjF68HmpH+v58Eb5qdJTsMH+QStGjW1P29ql+qs92q1iUdAQQQQACBeBQYc/xh0jSngxx4wH7xeHgxeEx18ME4yo86KqI31iOOZdsF5i9YKLfcfr+MGD5cjjv2mG3fAGsggAACCCCAAAIIIIAAAgg0mECxTjNw1TXXy8EH7iP77rN7ney3Y8f2zjxzoZKN4gkyZEqdoEbxRnYYMVi+nvBsFJeQoiGAAAIIIBD9Ak1ad5RTT+kb/QVNkBImQnyIQFwMN+amTZvI/PkLpUWLljF8FBQdAQQQQAABBBBAAAEEEEgMgYkTJ8vkyVOka5f2dRaIc+R0OJ9QajNZPn+6tGnVPDEwOUoEENhC4PCD9pbthg1w0tvltN7idRIQQAABBPT5JV+ySHIGFFEkkAiBOI9O4tro07OFggEpKV4fRVUfO0VZtmyFNG/RSueKi//um7FTK5QUAQQQQAABBBBAAAEEEKhMICRLly4QG16wZcu6DZi9/PIb8vC4x+T+Gy+QkUP6VbZz0hBAAAEEEEAAgYQVCAaDcvktj8gOO+8sBx1ykHi9jNIXLY0hKaWpxPs8cdHR2hiassZtvk2b1mJzxenzjzXeBisigAACCCCAAAIIIIAAAgjUv0CSjknTo1vnOg/CWcl79+4pTZo0kfzCovo/EPaAAAIIIIAAAgjEmMCMOQvk258nyudffRf3QZ/YqhqNbejoDvG+REWPOEMuLrSJpQkm1bTBlehUADNnL5DOnTrVdBOshwACCCCAAAIIIIAAAgggUA8Cefn5kp6aIhnpPr3RUA872LTJoqIiSSndIN6SvPrbCVtGAAEEEEAAAQRiUMAiD7NXl0pScqo4c+zG4DHEY5E9Hp8kpWTH46FVOKbo6BGnRTJwlpoLPPnUs3LGmefKn39OrPlGWBMBBBBAAAEEEEAAAQQQQKDOBe6593654OLLZPXqNXW+7fIbTElJkVBaMwkx6kx5Fn5HAAEEEEAAAQQkpMMfduvenSBclLWFRIkLRU8gzksgrjbvgREjhkj79u3E68OxNo6siwACCCCAAAIIIIAAAgjUpYD1UsvLy5Pi4mJp2qxJXW660m159Lv1hkCKvDL+E4mCKeErLSOJNRewOt38X823xpoIIIAAAgjEv8DSFaulVHR88NT473UVi7Vpn10TYYmaoSkDpYUSKC1IBPN6O8bSQEACAa+UBupxrJN6Kz0bRgABBBBAAAEEEEAAAQTiUSAkKckiGzasl2ZN6z8QZ4JXXHm9/Perb+X6i0+V/XbfIR5RE/aYPvz8G/nnsee6x//K42Nl1IF7u3/zCwIIIIAAAgiUCeQXFMpx51wvzVq0kIcevEdS7EMZS1QJ+JMytXNRUlSVqT4Ko6Hg6Fg83qgpSnSA1KAUfu0N59M+joGAPiEnBONqQMgqCCCAAAIIIIAAAggggECdCiTpV12/z9NgQTgr/BlnnCJt27SW3XYcXqfHwsYQQCC6BabNnCv5BeGH3NNSU6Vvr27RXWBKhwACCNSzQHFxqXTu3Ela5eQQhKtn65puPlF6xEVN9CtRxgKtaYOs7no28Xdu7ip57c0JcvLoE8THUJXVpSMfAggggAACCCCAAAIIIFBnAtOnz9DRSkpk5LD+dbbN6m6oc6eOct55Z0moOF8kf2V1VyMfAgjEuMDoc66WXydOdY5iQJ8e8vsXr8f4EVF8BBBAoHYCTZo3l7vuuk1KSktrtyHWricBj3gSZG7jKArEGbpPxzoP1FOlJs5mx/3nSR2G5Hvp2qWz7PX3PRPnwDlSBBBAAAEEEEAAAQQQQCAKBEr1Zs/Yu+6RJUuWynNPPyRdOndslFJ5ktMlWJIhuSuXSvOmzIvSKJVQxzvt0DZHTjrmEHerXTq2c38vLi6R51+f4P49oE932X74IPfv8r+sWLVG3v3ov27SztsNkT49u7p/l/9lxuz58vUPv7lJB+y9i7Rp3dL9u/wvP/8+SSZOneUmHTvqH5KamuL+Xf6XT778XhYsXuYkpaYmy7GjDij/coXfXxv/kWzYqIFlXdrmtJR/7LVLhdcjfwR0yo5nXvm/yJ/St2cX2Wm7oe7f5X9ZvSZX3vngCzdpxxGDpF/v7u7f5X+ZPW+RfPntz27SfnvuLO3btnb/Lv/LbxoI+33SdDfp6EP3k4z0NPfv8r98/vWPMnfBEicpSbvPnnDkP8u/XOH3t977VNbmbnDSWrVoKgftt0eF1/kDAQQQQKCigI0YF0xvKR6vV5KTGZKyok50/JVIoyRGTSDOqt66IYb0QxNL7QTOO3uMDOjfV/bcY9fabYi1EUAAAQQQQAABBBBAAAEEtlnA7/fLufq9bNLkyY0WhIsU+oOvfpOxd94nd1x9tuwwbEAkmZ8xKjCgb0957J7rKi19QWGRnHHxje5r/x5zbJWBuLnzF1XIO+7Oa6oMxH338x8V8n75zlNVBuLefPdTuXvcc24ZDtl/jyoDcQ8/+bK89+nXTt6WzZtuNRB39a0PasBqsZN31x2GbyUQF6xQ1tOOP7zKQNzipcsr5L33xkurDMT98sfkCnk/eOWRKgNx7374pdx87+Ouwb577FRlIO6x596UNyd84uTN1GDd1gJxN975qEyZPtvJO2JwfwJxrjC/IIAAAhUFSksDcuVt4+Sggw+QnXbtVPFF/ooqAW8CTVcWXYE47RHHUnuBVq1ayFFHHKxzxYkUFod0g57ab5QtIIAAAggggAACCCCAAAIIVEvA6wnJThos2DkK5mhr1bqV+DQwmFdQVK2ykwkBBGJX4OJzRsuqVWudA2jevEnsHgglRwABBGoh8MeUGfL1T39Kkfhlx11201H4uDdeC856XTWRpiuLrkBcAkVA67UFb9q4TQ9nE4NPnTZbenTvxkmnIdDZBwIIIIAAAggggAACCCSsQO66dZKdlSlpaT79/hUdDCOGD5W33nhRslL1CyLzxUVHpVAKBOpJ4PB/7l1PW2azCCCAQOwIDB82RB68f6x069aV++FRXm02QmKiLJ6QLtFysFaUkqLcaClOXJRj/Lsfyt33jpPTTjtFDj34oLg4Jg4CAQQQQAABBBBAAAEEEIg2gcLCQjn/wkulVavmcuuNV1Q5HF9jlttToN+3C3N1bvaQeHW+FJb4ErC5CX/9c6p7UDk6j1v5OeTcF/SXDRvzZOqmYQ4tvUun9pKjo+tUtth8cjaUZWTp26ubE3CO/F3+5/xFS2XZ8pVu0rBB/cTmPqtsmTZzrqxbH57zzO/3yXAdbrGq5fdJf4nNgWeLBbutDJUtwWBQfv59svtSq5bNpVvnDu7f5X/Jyy+QyX/NdJM6dWjnzD/nJpT7ZdXqXJk9b4Gb0rtHV2naJMv9u/wvC3XeuyXLVrhJQwb0kZSUyucmsvn31uauc/J6vR4ZOXSgu97mv0ycMl1s+FFbbM45G6aUBQEEEECgokBIR9wLZrXRKbAqv/ZUzM1fjSrg0bn7UhKn93ZUBeKs4kuKN0ooGP5w1agNIU52vnDRErn0ihvl3+edLQMHVP2BLk4Ol8NAAAEEEEAAAQQQQAABBBpFIDc3V268+VZpk9NKrr/m4qh8ArtIb+Lfdstt0rZlEznzxMMaxYmdIoAAAggggAACdS2wZPkqnXf0OzlpzKniTU6r682zvXoQ8PpSxJ+UXg9bjs5NRl0gLlBaKIHSgujUitFSBXSyOBtvtaCI+eJitAopNgIIIIAAAggggAACCES5gM8b0tm5S7W3WTAqe8MZ38qVq+TkU8+W7IxUefqeq7WclffSiXJqiocAAggggAACCFQQOO+ae+Wn36fIjTdcJXv9ffcKr/FHdAr4kzLE60ucz6JRF4gLBQPaK259dLaOGC9VaUAkL79EioqKJSMjI8aPhuIjgAACCCCAAAIIIIAAAo0vYMMBJif5JDXFEzXzwm1NZe7c+dKieVNp4tkonmDp1rLyGgIIIIAAAgggEBMCyzYGZcIn38pJo4+NylEJYgKxgQuZlNI0oeoq6gJxVt/FRTo+tj5FyFK3AvkFBXLVtbdLYWGx3HrzDZKcnDgR57qVZGsIIIAAAggggAACCCCAgMikSZPlnvsekJt1TrheOmdULC2hQIl4Ny4X5yfzxcVS1VFWBBBAAAEEECgnELR5xtKalkvh12gX8HiTJCk5M9qLWafli8rZmb1eAkR1WsubNpaclOQ8oWmTFxcXF9fHLtgmAggggAACCCCAAAIIIJAwApMmT5Fly5bLkiVLY+6YPb4kWbxR5Lhzb5DfJk2PufJTYAQQQAABBBBIXIGSklK5/4lXZXWBTsWUqoE4lpgS8Hr9MVXeuihsVB6x1+cXHaGSpY4F/H6/3Hz95RqM8zrjr9pQlSwIIIAAAggggAACCCCAAAI1EQjJySceJXvstr306N6lJhto9HWmzZgjc+Yvlq9+/FOGDezd6OWhAAgggAACCCCAQHUE3nz/C3n5nU9krQbirr3msuqsQp4oEvDqA2GJtkTl0JShUEhKbHhK0Yg2S70IKLEUlYRkxYo10qxZM/EyFEm9OLNRBBBAAAEEEEAAAQQQiC+BwsIiSU1NltRkj/h8sX9skyZPlX69u4k/f5V4QjytGfs1yhEggAACCCAQ/wIlvgx55rX35KijDpfMzIz4P+A4OkKPxydJKdlxdETVO5SoHJrS4/E4PbaqdwjkqomAEsuypYvl3H9fKA8+PE4s+MmCAAIIIIAAAggggAACCCBQtcDixUvktDPOks8+/zQugnB2pAMH9BNfUqoEM3MkpDdGlq9aWzUAryCAAAIIIIAAAo0kYNMt2RLSOeF8mS3klFNOJAjXSHVRm916fYk5LVlUBuKsIhNxnNDaNOCarJuRniZpaanSrGm2DlepkTkWBBBAAAEEEEAAAQQQQACBKgVy1+XK+vXrdU64JVXmidUXbM64byYtkFGnXi5vvv9lrB4G5UYAAQQQQACBOBSwB4VOvvBW+XnaIgmlNRW9mR2HR5kYh+T1Jt6wlFazUTlHnBXM41SIvaHoqWUe9bG0atVCnnj0HklPT5eS0pCUBjiB1Ycz20QAAQQQQAABBBBAAIF4EAjJ8CH95JknHpB27drEwwFtcQzpGZnO98OcNjlbvEYCAggggAACCCDQWALTZs0T+/fZ1z/L8B12bqxisN/aCni8GveJg7Hda+AQlXPERY6jtCRfgoGiyJ/8rEcBG5myWOeM+/KrH2TwoIGSlZVZj3tj0wgggAACCCCAAAIIIIBAbAhMmfqX9OrZXbIykuNmOMqtyefl5UmGPqwp+avFW5K3tay8hgACCCCAAAII1LtASIM3oYxW8seUmTJoYH8dSS9qB/mrd4tY34HPnyY+f2qsH0aNyh/VrTZRxwutUU3WciXrzTtlymS55dbb5drrVy9ZZgAAQABJREFUb2TOuFp6sjoCCCCAAAIIIIAAAgjEvsD3P/wol152pTz8yLiECMJZjWVkZISHe0pvIaXJ2XL/E6/J/EXLYr8yOQIEEEAAAQQQiBkBmw/uk69+kqCOmhfM1JEINHgzZPBAgnAxU4OVFzSR4z1ROzSlVZXNE+fRyaJDoUDlNUdqnQoMHNBH/rH/XrLH7rswzG6dyrIxBBBAAAEEEEAAAQQQiEWBQQP7Sa9e3WWvv+8Si8WvXZn1ac2vf5kqL7/zscycu1AeuuWi2m2PtRFAAAEEEEAAgWoKPPTUG/KSfgZZVeiVo44cVc21yBbNAl5vssYcorpfWL3yRfXQlHbkgdJC/VdQrwhsfEsBfehACotDUlRUIklJSfomYf64LZVIQQABBBBAAAEEEEAAgXgTsCewbcgjvy8kyUnhecsT9ftQSOcwGD/+Pdlu5BBpn+0TT6A43qqb40EAAQQQQACBKBPQGZRk8dpiufvhp+Xyyy6UVq1aRlkJKU5NBPxJmeL1JdVk1bhYJ+oDcfbBv6QoNy6wY+0gAoGgXHrlzTpZd4acf945kpqaEmuHQHkRQAABBBBAAAEEEEAAgWoLTNX54B54aJzccuOV0qmjDoPEUiYQ0qc1C3Jl2pSJkuT3Sc+uncpe4zcEEEAAAQQQQKAWAiUlpbJ81Vpp376dhHR4bPFzH7oWnNG3qvaES9IhzxP14TarkKjvC2iV4/XxxmuMd8/69etlxYoVsmzZUvHrFy0WBBBAAAEEEEAAAQQQQCCeBaZO+0vmz58vP//ySzwfZs2OTW+gFPky5Ko7HpeTLrhFlq5YXbPtsBYCCCCAAAIIIFBOoKi4RE69+DY575p7ZIM3iyBcOZt4+dWn8Z1EDsJZPUb1HHGRhmYVFQwURf7kZwMJNGvWVB575C7Jy8+XzHS/FJWEdL4+j/4LJfwbp4GqgN0ggAACCCCAAAIIIIBAAwn4dCjK444+RIYN7isDB/RtoL3G1m5SUlLk9NNOkRkzZ0pOe+0RV5IXWwdAaRFAAAEEEEAg6gSSU9Okb79+siZ3nQQCNjAlS7wJeH3J8XZI23w8UT80ZeSISoo3SihYEvmTn40goPE3+e3PqfLU0y86Q1W2a9e2EUrBLhFAAAEEEEAAAQQQQACB2gvYA4Yff/KpLF26TE4/9XgdBaT220y4LZTofO75q+WtCZ/KfnvsoA9wpiUcAQeMAAIIIIAAAtsuMGX6HOnbq6tISrZIWlMp1SmSfD6dj1ZHx2OJLwEb7dCflB5fB1WDo4n6oSkjx2S94lgaV8DOg59++rlMmjRZlixZ0riFYe8IIIAAAggggAACCCCAQC0EioqK5MWXXpG33h4vublrarGlBF41KU0+/3WW3DXuRbnhricSGIJDRwABBBBAAIHqCjz50v/JKRfdKh/+ME0kvbmIDn/t1yeiCMJVVzC28hHXCddXzPSIs6cVS4s36LCIgdhqaXFW2mAwKL/9MUmGDx0sxTpUZWnAo12GA84TC3F2qBwOAggggAACCCCAAAIIxJlA2TD7IUlJ8ojNCZedlSldOneMsyNtuMPJy8uTJ558TvbacxcZ0DVHPCX5Dbdz9oQAAggggAACMSUQ8vhk2sLVcvOdD8tFF54rQwYPjKnyU9htE/B4kyQpOXPbVorT3DETiDP/YKBYShmDPqqaosbg5Job7pCkpCQ564zTJDOTN1ZUVRCFQQABBBBAAAEEEEAAAUfgx59+lhdefFluvekayWndTJ+6BqZeBEoLZfqk3+XRp16Vs048THr36Fwvu2GjCCCAAAIIIBD9Ann5hfL6hM9k2MA+MmDIMJFUHYpSe8CVPRwV/cdACWsu4E/OEq+X8d9NMGaGprTCWgTVo1FzlugRKCjIk3nz5slMnaw7NZXhQ6OnZigJAggggAACCCCAAAIIlBeYPXu2zJo1W3799ReCcOVh6vp3f6p88NXv8uPvU2TRirV1vXW2hwACCCCAAAIxJPDnX7Pk0efelidf/9iZC86CcLYwDGUMVWINi+r1JhOEK2cXUz3irNzBQIn2ittY7hD4tbEFSkpKZMWKVdKuXVspKQ3pP5Fff/tD+vXtI2lpTNbd2PXD/hFAAAEEEEAAAQQQSESBOXPnSbu2bSQ9LUVH8PBISXGhzJ23QL+n9EpEjgY9ZnvK/aeff5WRw4eKJ1Ak3qJ1Mn/efJm7cInsuv1Qndogpp4JblA7doYAAggggEAsCyxZvkpKSwPSsX0bCemQhMGUbHntjfGyz957SvPmzWL50Cj7NgokJWdr3JVOVRG2mPv069GujB4P3RkjFRgNP21Yyvbt2zpPlSbrF9wN61bJddffJBddcrnTzTgaykgZEEAAAQQQQAABBBBAIHEEPv7kUzn7nH/Le+9PkNQUj/j1HkBaWipBuAZqAvaU+/bbjRCvzyee5HQJZbWVp9/6TK64dZx888vEBioFu0EAAQQQQACBhhSYNXeRjDr1Cnnw2Xck1KSDSHpz/Szgl6OPGkUQriErIgr2Zb3hCMJVrIiYi2jZB3pfUpqUFm+oeCT8FTUCKanJcsjB+0vHju31yVPRpyBCWjaPrF+/XrKzdRxgFgQQQAABBBBAAAEEEECgDgUCOnl1IBiUZP0C4vWEZKfth8m7PbpKl04dGIayDp1rs6kjjhglGZlZssMe++lINwXiKd4o8xcskgVLlsuOwwbod8eYuz1RGw7WRQABBBBAIOYFFi1bKSH9/NWhXY6I3q/v2n+I7LzT9jJSH8YJ6b1gpuON+Squ8QH4klJrvG68rhhzQ1NGKqK0OE+CweLIn/yMYgEdlURWrFwr/zp+jOy7z95y9lmnR3FpKRoCCCCAAAIIIIAAAgjEksDUv6bJ2DvvloMPOkCOOfIQnYvC5h2JpSNI0LLqF8U7xt4j49/9UK698BT5x547JigEh40AAggggEDsCfw2abqcdcWdstcef5MbbrhKez/xQE3s1WL9lNjrSxW/BmZZKgrE3NCUkeL7dAJoltgQsC/Ba9askjZtWus8cq3E57UecvZPZPWaNc5P/oMAAggggAACCCCAAAIIVEegWOeoLi4OP5Tp0e8VHfQ7xtq1uZK7drXOPUYQrjqGUZFHvyjut9++cuCB+8nf9jlAgmktJaQ3bRYtXSnX3fWE/DpxWlQUk0IggAACCCCQ6AILFi+XJ14cL7PnLZagN0lCKU2k3/CdZPiwwTJ0+HCCcIneQCocv45m6E+pkMIfYYGY7RFnxS8tKdAhLQqpyxgRsAm7S0tLdcgRPWFrHG7d+nw5/KgTpV+/vnLbLTfGyFFQTAQQQAABBBBAAAEEEGgsgf9+9bU8+NA4Oe3U0fLPA/fRh/zCgbeNG/MkMzOjsYrFfutQ4NVX35T7H3xUzhlzrBx76N7iCZY6W//ht8nSq1snad6U6Q7qkJtNIYAAAgggUEGgtDSgAbdF0rNbRx1lwOt0pZjw2U9yy72Pyejjj5bTTj+lQn7+QKC8gM+fpoE4OlCVN4n8HtN9Ri26GgwU6bGEe1dFDoqf0Slg8/tZEM4W6yW3YUOu9O7dQzp3aidJ/pDotA4SDHnEvlxnZGTIkMGDxO+P6SYanRVBqRBAAAEEEEAAAQQQiAGBlStXyi+//S577r6bpKQkO73dOnZo7ZS8uLhA/Nr7LbIQhItIxP7PUaMOlp49e0iHDu0klNVSp6QokdXLl8n5194nIwb3kwdvudCdc2b6rPk671y6tGvdwrlZGPtHzxEggAACCCDQcAIb8wpk1Zp10qVjG3entzzwrHzw+Xfy/GN3S3e9HosGVXbcI1uuSM6UHXfczs3HLwhsIeDxitdHb7gtXDYl+K7XpaoXoz3dAjsW0QnpB3OW2BNokp0lB+y/l+yw3TANuHk1GKddV30hueyK6+Szzz6Xww8/TP8Of7tevXq105suJYU3c+zVNCVGAAEEEEAAAQQQQGDrAsFgUFasWFmhV9tTzzwrL7zwsj6g11e6dbGH9zzSulULOeqIg2XQwH5b3yCvxqyAPX3ftm0b5+FM+77v8fokr7DEeZhz2IgR0nvQMAnpTcGQL1nOv+p2+c9zb8lRB+8jKcnhhz7nLlgib733hfN365bNXAcb8rK4pFTS08qe0t6YXyB5+YX6wKjfDeRZT4B1G2xO+pAka3pkWa+9LvMLiiQttew7aWFRsWzIy9eyefQ7bVlkeO26Dc6+UjWAHFnyCwrF9ufX77g+68qpSyAQ1H1tdH4mbyq/pduN0TzNn6wPsnq94QkPbUjW9Rvz7WV9L5SVK3f9RiksLJbU1LJ92d9WLrO0/dliI9RY3hIdpSYluSyvHX+elsu2afltKdWnZLdmYMfl3I/RvEXFJbJBy6U1VcEgd52WS4eQLW9QUFjkHJsdf+S7vr33rVzmHqlDK0NlBiVaf1YPdixWZ5HFymrbrm3dVGYQ0PJZPUQWO1arSytrxKAmdVMtgxq0z+rUTX20z63VTX21z6rqpjoGtW6fldTN1gzqon1Weu6op/ZZnXNHTc6fta2bSg30PPq/zp81qZvqGGzt/FlV+6zWuaOW509r36ty10lmepp7npq3cKm8//n3znWtZfOmzinNyrj3UefJF9/9KsccfbgON5klwdQmkl8cPscOGT5CmrfUB6D0GpeWlqadKXpKenp65HTITwS2EPAnZ+hnibLPQ1tkSPCE8KesGEbwevUDoI5NyxK7ApEP+84RhIJywXmny2ljTpCmWcn6oV30IiHyyquvyVHHHC8zZs50D7SwsFDmzJ2nXzoYntRF4RcEEEAAAQQQQAABBKJYwG6g2zzRFnQrv1x48aUy5vSz9FZ+id7gFr2hLrLv3rvKKSf9S7p07mD3gJzFbnxHRtkovz6/x7dAq1Yt5dxzzpCD/rm/3hDU2xg6l5ykZsuuu+0q++y9p2S27y2B7A4SzGwjk+etksdf+j/5Y/pCCerT+6GkdCdwd+zZ18oF19/vBPBCviRnjpuxD78o+x97gSxYutr52+a9mTJroZP28LNvuWmWfvaVdzvp9nvk30f//cVJ+79PvnPT7LWDR18iYy65rULa4y9NcPL+Pm2um7509Ton7ab7nnHTbP1r7nzcSV+zId9N/2niTCft6dc+cNMs78kX3CyjxlxRIe2ND/7r5P3829/d9OKgx0m74LoH3DRb/74nXnPSZ8xf6qbPWrDcSbvnsVfdNMt74Q0POukFJUE3/Yvv/3TSXn/vSzfN8h5x+pUy+vybKqQ9+8aHTt4f/5zupq/ZUOCk2THbepF/N9//rJO+ZFWum/bn9HlO2n9efNdNs/ynX3qHHHjCxRXSJnz2g5P3gy9/rpBu9X3WFXdWSHvkuXecvJNmznfTFy1f46Td/tALbprt64rbHnXS1+UXu+nf/fqXk/bi25+4aZb3uHOul6PPvKZC2ivvfu7k/erHyW56XnHASbvk5ofdNFv/rkdfdtLnLV7ppv81Z5GT9uDTb7hplve8q+910kvF56Z//NWvTto7H3/jplneQ06+TE696JYKaU++8r6T99eps930FWs3OGnX3/OUm2brX3f3k076Sr3Zb3/bv58nz3LSnnr1fTfN0k+58BY59JTLKqS9/dHXTt5Pvv7NTbdyW92cd819bpqt/8BTbzjp0+ctcdPnLFrhpN396CtumuW9+KaHnPR89bS/7d9XP05y0sw9kmY/jzrzajn+3BsqpD3/1sdO3u9+neamr8srctKuvP0/bpqtf9uDzzvpi1asddMnzVzgpI17frybZnnPvHys/OO4Cyukvf/FT07e9z7/sUL6gcdfJGdo/vJlte2ZzcQZ89z0xSvXOmm3PvCcm2brXHXHY0762o2FbvqPf0x30p5782M3zfKecN4NcuTpV1VIe00fYrB9/feHiW66vd8t7aIbHnLTbP179fxg6bMXLnfTp89f4qTd/+Trbprl/fe19zvpdh6yv+3fZ9/87qS99eFXbpqlH3bq5XKytptIPvtp7cr29dOkmW76qnV5Ttq1Oqdo+bw33vu0k758zXo3/Tdt17b+4y9PcNNsnVMvvk0OOenSCmnjP/7WyfvxV7+46QGP30k756p73DRb/6Fn3nLSp+r7MlKGeUtWOWl3PvKSm2avXXrLI056XlGpm/71T5OdtJfHf+amWd5/6fXq2LOvq5D24jufOnm/+Xmqm76hoMRJu/zWcW6aPaRygxocfuoVkqd1Z3OvBpMyZMrcZfLAk6/JT1P1PJfRWgJZ7cTTrIvssceusv0O20lpsg77rEEUj66///57y003Xi3du3eN7w8XHF2dClhPOK+2X5aqBcoeIao6T1S/4jx5ph+sS4rWRXU5KVz1BOypuN123dHN7NMv3PawYCftIt2vX2/p07OTPuliQ1iKTJo0XS69/FrZf7995Lxzz9J1wt/O33jzbX2iL1+OP/YY94m+JUuXyqJFi6VXr57StEkTZ/tFRUUyecpUadIkW3p07+7uc9bs2bJu3XoZOKC/7iv8pKD9bek5Oa2lQ/v2bl5bv0SfTBw6ZLCbtnz5Clm0eLHeMOgkLVq0cNLtKb/f//jTeXKkb5/ebt75CxbIqlWrpU/vXuEnPvWVfC37X9OmS/PmzaRrly5u3unTZ+hTgXnOkJ2RpwfXrFkrc+fNk/bt2kmbNjlu3j//nKjfT736pPAAN80Mli5dJt27dZWmTcNPv1jZJ06aLNlZWc7wL5HMc+bMlbW5udJf5+9LTQ0/MbpBn9S0QGjrVq2kY8cOkawydepf+vRhoU7QOtRNW7lqlSxYsFDrrYO00vyR5bff/9DgaoozL2AkbeHCRbJChx3q1bOHZGk5bCnUpxmnTJ0qzbSc3bS8kWXmzFmyfsMGGajHFXkqMVfLOVvL27ZNG2nXrm0kq7YP/WKj7oN1iNPIsmzZclm8ZIl06dJZWjRv7iQH9GnPP9QrU4dD7a31EFnmzZvv3CSy+oo88ZOn/tO0HqxerX4jyzStL2tz1g4igWXrxTlv/gJp317rJqesbqwd2JCr1r4iy+LFS2TZ8uVOO7T2aEuxPj06afIUyc7Olp49ytrn7NlzJHfdOhnQv58O0RR+Gnf9+vUyc9Zsad1a66ZDWd1Y+7TtDBs6JLIr56bXwkWLdEjYTtKyZbh92g0xqxt7wqlf3z5u3kj77K3vm8zMTCe9oKBApv41bcv2OWOmbNy4UQYPGugcn2VeuzZXg+VzpV3bts5TzZEN/zlxkvNUVmXts1vXrtKsWbh92pySljcrK1PbR8/I6k4Afu3atU5Zrcy22L6naxlatWwpnTp1dPNaWa3MlbVPszKzyGIGZmrtPrKYld0otDqwurAl0j7tXNK9e7dIVqcOrC4qtE+tK6szawPWFiKL1a21PRuCN7JYG7C2UFn7zNCnzvqUO3dY27I2Zmn2mi3WBq0tVtU+bV+Rc4fdALU2vnn7tPeCT88ddgyRZckSPXcs03OHHmvk/GlP/dp7bPNzR6R99u/XT88d4fa5Qd+zM/S9u3n7nKLnDjsPl2+fNgTZAj0nWB1aXUaWX3VYss3bp51j7FxjbcPaiC32YIZtt1mzZtKtaxdLchY7d9k5rLL2aU/cWxuNLHZOtPeE5Y0sdu60c6idk+3cbIt77tD3hr1HIoudk+3cXP7cEWmf9p6z915ksXO9nfPNIPJEtV0T7L1n1xq75kQWO3fYjWd770cWu9bYNad8+6zJta2y9mnvv+pe26psn5Vc2+zca208skTzta2wqva5Tde2StpnFdc2OydGggvRfm2rrH1uy7Wtqs9elV3btuWzV2XXNruGV/bZK1qvbZV99tqWa1tln72qurZV9tmrNtc25/y52WevH378yfmsOerQg93PxXZOPv+CS2T33XaRq6+8SLwaWNNLj553+2meplJUmKc9lsKfBYYOHiD2jwWBqgTGnDrafcnj0Sew9SnsEdtvLzffdE34BmJ6C2ciC7u27/y3HfUzWWsd7rLsut+tT38ZqQGV1JZ6bcoOX3czWhfLyJHDpHNP/UyYXfb5bcCgQdK0hX4+KZfWqlMPJ2/rzvpZoFz6iBHDwp8ZyqV17NFH866Q7DZd3LwpJanO+j366neDcnl79esvpXrj199MP9du+gzatO16J2+H7vp5vVzeQfodJF9755RPa9Oll5O3ecceZen6+c2Oy/keU279Lr36ysi1GyW9lRmEjzddKSxv1976uaNc3n4DBkhaZrZ4muh3jk29/Zp36ObktX2Wzzts+FD97qffJcut375bb827WJq00c/Qm9L9kuWs36tPxfXNxG4iJ7fQz07Z4e8tWTkFTt5OahlZ3xrAQP2c26b96gpprTfVjdVR+bzbjRwubdvpEGzlymXbGzlyjWTmlKubFn5nX921jZTP27v/APEkp2rdqIF+h7Slabs1Tt52enzl8w7Rz3j2mbF8Wtuu4bpppm6RdG9S+Ljsu3okzbbbTf1HbiiUNKduwsPGZeSUOvvq3LNi3fTX9pnVTL/j2nFt6gXZslN3J2/OZnUzQuumid0XKWcQbp/LJLucQVIgzVm/Z9+K7wVrn8UhHdXIaZ/h83WTthudvB03a58DtX1uWL+hwr5yOocNWnQsM1AoZ/1OndS1XLm66Ptw5Or1kt66rH2mtfQ4ebv1qWjQd8BASU7PFG9Ta5/h7yLN2ofbp7mX3+4wvX/ht16V5fbVvpu1g4XStH1ZPfi8TZx99e5VsR1Zu1hfWCqpTvsMf6fMyikKH8MW7XOwtMqp2OYi547N2+cIfd/l2HfUcuWyc9HIkaslK6esXClFyc6+tmyf/fXBg+TwuWPTd6Qmbdc5eTts1j4Ha/u0+wXl99W2i71H9fzVQe9BbCqDJyV8TuzatawOrH126aXtc13+pvYZPndktAo663fV1yLrW95++jk3s0lTPXfo/TS9H2JLi46Vt8/h2j4zbM7XcgZ23hs5cqk0aVtmkBTMcPbVq1/F80GPvv2kQN924XNH+Ltbdps8J2+nHhXb8mBtn3bfovy+7HxuBi3Knz/1842ldeyg5S9XLuf8uTJXMlt3cdPTWnqdvJufP/vq+dOfmh5un5vuYzTd1D7bdd3s3DFMvx/q/8rvK3z+HCbWpiPpXn++sy/nntGmcoXUdsCQoRpTy5Rgeo6E9Kctg0dsr5+70qVff/XS4Jxu3Vmuv+6KTb/xA4HaCGhPd39abTaQEOt69AOpvUdjfgmUFkqgVD98siSMwF/TZsqrr78jO2w/XJ+W3XPTFyyR404807lx/sGE18OzB2oLf+mVN+TpZ16QW/QLmX3wtmW53lw/7oQxssMOI+Wm669y3a6+7hb58cef5aXnn9AgUvhG8M+//CZXXn2jHHnEYTLmlBPcvCecdIZz0X73nVfctDff/j959D9PycUXneeUy16wD9/7HTBKA4E95OEH7nLz3nv/I/L+Bx/Lg/ePdYJx9oL18jv9zPNlr7/vLpddcr6b94KLr5TJk6fK+Lde1sBQ+OT25X+/kVtuu0tOPul4OeaoUW7eUUce7wQRX37hSTft2edflhdefFWuv/YK2Xmn7Z10CzAeftQJMnToYBl72w1u3ptuvVO++upbeeqJh8MfNPSVSZOmyIWXXCWHHHyAnH3mGDfvmDP+LfM1KPDxB2+7aRPe/0juf2CcnKdPrf7zwP3c9H3/cZgG8drLE/950E175NEn5e133pW7xt6sN2DCN1oW643/0SefKbvsspNce9Wlbt7LrrxefvvtD3ntlWecIJ298P0PP8m1198qx/7rSBl9wr/cvMccd6pzU/7tN15w01597S154qnn5MrLL5I9dt/FSbcg4kGHHK3BwT5y/z23u3nH3v2AfPLJ5/LoI/c6wUt7YfqMWXLOeRfLfvvtLRedf7ab95x/XyLTp8+U99993b2J+smnX8jYu+7X3p0nyRGjDnbzHnTo0c6Xnuef+Y+b9uTTz2uvzzfllpuvle30S7stdjP+mONOke22Gy633HiNm/faG26T77//UV549jH3Jv2vv/0pl195nRw+6hA5fcxoN+9Jp56l74VV8t7/veamvT1+gjwy7gm58IJzZP9993LS7TKwz/6HSo8e3WTcQ/e4ee9/8FGZ8N6Hcp+69LcPt7rMn79QTj39XNlTn5q64rIL3bwXXXq1TJw4Wd5+80UnqGkvfPX1d3LTLWNl9InHyrHHHOHmPeLoE52A5asvPe2mPa9t8zlto9defZnsojdJbLHAyWFHHKfB1IFy1x03uXlvuf1u+fLLr+WJxx7UoEZHJ92CL+dfeIX8U5+SPu/s0928p591gcyZM1c++fAdN+2DDz+Re+57WM456zQ5+KB/uOn/+OfhGtBuI089/pCb9uhjT8mbb/2fjL39Rg1KhINmSzWge8Lo02XnnXeQ66+53M17hZ4jftFzxSsvPqU3EsOB3h9/+kWuvvZmZ5iHk0cf5+Y97sTTnOMb/9ZLbtrrb74jjz3+jFx26QWy1567Oen2xeiAg47UgFsvefC+sW7eu+59SD766FN55MG7NYiuX5J0mTlrjpx1zoWy7z5/l4svPNfNe94Fl8lff02XCeNfdYO3n33xX7n9jntlzKknypGHH+rmPWTUsXo/IV1efO5xN+3pZ1+Ul15+XW664Wo9345w0i3QdNS/ThL7En/bLde5eW+46Q755tvv5dmnH9XgVvhmwR9/TpJLLrtGDjv0n3Lm6ae4eU857RxZsmSZfDDhDTdt/Lvvy0MPPybn//ssHbp4Hzd97/0Oka5du8hj4+5z0x7UfP+n+e+9+zYNTukXKl0siHfKmHNkt93+JldfcbGb9xJ9aOOPPybKm68/7wQP7YVvvv1Bbrjpdjnh+GP0wY2j3Lx2XDZM1BuvPuum2fGbw9VXXqIPi+zspOfpcE+HjPqXBi37yz133uLmvW3svfL55/+Vxx69X7puCjj9NW2GnHf+pXLAAfvK+eee6eY985yLZNas2fLR+2+5QfwPP/5M7r7nQTnzjFPlsEMOdPMeePCRGjxvKc88+Yib9tgTz8jrb7wjt996vQabhzjpkWubjd1/43VXunmtHVp7rOzadtSRh8mpJ1fv2nbJxf+Wffbaw9muBev2P/Bw5yGXhx+4092Xvb/sffbg/XfqtS0cpJwzR69tZ50ve+u6l+o2Isv5F10hU6b8Jf/39stOsNXSv/jv13LrbXfLKScfL0cfWXZtO+yI47UNJ0tl17Yb9Fh32jRfQa4Ow2LnmaqubU+rYYdNgfGJem27qJJr26mnnyf2oIjVTWSx86GdF/997hly4AGbX9s66LXtgUhWefjRJ+SddybI3do2BmkbsWWRBtpPOuWsKq9tr7/yrD4oozfFdPnu+5/kuhsqv7ZZsPUtbcuR5ZXX3pQnn3q+0mtbf31v3Kfvkchi1yW7Pv3nkfv0QZcuTvI0vX6dq9ex/fXadmG5a9vZ510iM/QBB3uPWpDNlo913Tt1G6efdrIcfthBTpr9x65t9pDPc/rejyx2vbXrbmXXtu23GyE361O2keVaPdbv9Zgru7YdcfghctqpoyNZZbQartIg/ITxZde2t9R6nJpfpOe+/fQcaIs9jGOfO3rogxTjHrrbXf++B8fJe+/p55R779AHOvSmhy7z5i2QMWecJ3vqufcKPQdHFvvcY59/Kru2naTXtn+Vu7YdftSJzlBzlV3brtNrxd/0mmGLPVA0StvyEL2m3KnXlshys36e+69+rntSr0EWTLNlsr43LtD3yEH//Iece/Zpkaxymn5OnDt3XoVrm32etM+V52i+gzV/ZLH3qD1wUNm17U69tg7Ra6wtS/SBgxP1c21V1zY7rsiDCD/8+Itcc92W1zb73GIPfFg92qLxNXnokcflnfHvaTu8RfelN681zR7QuO7GsTJixBA59uiy97izEv9BAAEEEEAAAQQQQACBmBLwa69Lr/amZNm6gO96XbaeJTZetaffQqGADnwejI0CU8paC7Rq2UKfpN1ZexF1db7U2xd7Gz5/gD7dscvO2+tNjLY6Hr6OU6//rF20aNFMRgwbpD2hsp00r1cjdPr/IYP7643Cbm7eQKBE122vAbvB+jSuPklk62tG690xbOgAfYKwnZvXepT16tVdgyeD3LSQ7stupI0YPlCfZGrhpNu+LK896TtwQG83rwXo2rZpLSN1/SbZGZvyWi9Ar970H6C9HDq7eW39rl06yfYjh+jDhz4n3cplN82HDxuoNxVz3Lx2875f315a3v5umpXLMRg+WFq2aOKk29PHdqNq6JD+0q9PDzdvoLTEuUk5csRgDaro035m4NE5EnSc0KFDBmpPkw5u3pKSYr3J1VXn+hviptm+bA5AK1fbNi3d9CItl83nMXhQHzctGAyoU0sZOXyQBteynHSP7st6h1i5evfs6uYt1XJZ4MXqJi01yUk3gzQdu2j40IEV6twM+vbtqXWuPbQ2tYOglqu59raydtC6VTMn3Xpc2s1kq5sB/XuV5dW6adc2R+tmsN64T3fSrVx2M9Lqpke3Tm5eK1c3fTpsOzVITrJ5GHTuSt1Xlj7FZQbt27V281q5Bgzoo09393PTAmpg7Xlk+fap+7IAmbXPvr27l+XV9mlPYTntMz3FSddadHoahttnezevtZmePbtp+xzspjnts0m2U642OeH2aQ9MWrnMYFD59qnlsqeGrW6aNsl0tmEG1utviBr0Ktc+zcCert1eDVKS9eld530TdHprDdO66dihjVuGcN300jrTJ8Lcugnoe1Pfo7qvVi2bOunWPu09Ygb9+5a1T9tXh/ZtnePKzExz8qq4EwS1fVVon5q3h95s3rx9ZuvTgVY37dq2cstg5Ro4sK8MGdTXTbP3R2sNyFu5mjcLt0+vGtjitM9e5dtnqbbPDuH2We7ckaa9Sq1uOncqf+4o1vOOPkGt23UNdF/Nmum5Q9tBTuvmTrq1TxvPfrC2l4Hl26fWTVvtBeu0z+xN7VMNbG4Se4/26F7WPktKi532aXWTnBQ5dwSdgOnwoYPUslz71PfzgP69nWMrK1dAA0DNnfNUi+bhc4eVy2yc9tmnrH2WOu2znXNOzNh07tDBR5zgyVCtm65dytqn9arrqcHf7fX9HNmXc+7Y1D4rnDt0/pUhajBoYNm5w943bXJaOeWKtE+rG2ufVje9enZxtxtunx2d82dqSln7tIcahmk76FS+fapBvz49tX2UtU8rV3MdR394uXOHDXse0LlMbF/99VwTOYZAoFTf822cusmq0D79Mkzrpnu3jm5eO3921/ZpBkk6V6ptw65X1sPPOXeUa592/hyo5w5ziOwrqO+PsvZZ8do2dLNrmxnYzf3Kr20DpUuF9rmVa9sW7bPEaQcV2mcl1zY7d9gNejMo3z6tXHZt2678tU0NnGubtpkK1zb16l/ltW1QuWtbaKvXNjOIXNusXJVf2+z82dVpMxFvPSuHr236vq3QPrVutri2qYE9zWzv0WZNw+dPO6dty7XN5jCq7NrWR9tn+WtbSN8LVV3b7D06oF9Z+7Q2E762DSp3bQs68wJt3j6tbuza5rTPTdc2p33atU3PaVtc2/TzV/lrm50jqr629at4bdPrsD2oU+m1Ta83XTqXnTvsfWMPIFR2bbPzp3ttU+/i4vBnr/LXNjNoo5+9bP0mTTZ99tK3XvjcUfGzl30mrOraZueDjh3KPntZufpq+6z82jbQvbbZ+TN8beunn9XKrm127ghf2wZpL/RN1zZPeF6ioepd/tpmdWOff7e4tm367FX+2lak589Bel2r7NrmfPYqd21z22cl1zb7/Bn57GXvm8qubVauvvrgSKQd+PScZufpXf62g/Yc7ubMX2Wf162H3n777KmfOfo511P+gwACCCCAAAIIIIAAArEpYENS+nTuXpb/LRA3PeLsUO1GWUnRevvtfx85ORBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBLZNQOftTdL5BSNTbWzbyomXW5/JjJ/Fo5Xv03FuWRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBOpewJ+UThBuG1jjKhBnx+3T7pBeL2OSbkMbICsCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggg8D8FvL5UjcEk/c98ZCgTiLtAnB2a0ytOe8exIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAII1F7A4/EzL1wNGOMyWmVDVCYlZdaAg1UQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQqCnjEn5zBkJQVUar1V1wG4uzIPV6f+JMyqoVAJgQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgcoF/MmZGoSL25BS5QddR6lxreb1JYuNV8qCAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCw7QI+f5rOC+ff9hVZwxGI60CcHaHPn6q945g4kPaOAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCGyLgNeXwrxw2wJWSd64D8R5PDpuqQ5R6fH4Kjl8khBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBDYXsE5O1huOpXYCcR+IMx4nGKfjl+pvtdNibQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgzgWsc1O4kxNxldpWdUIE4gzJJhG0yQRZEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEqhLQkQaTbaRBgnBVCW1LesIE4gzFJhP0JxGM25YGQl4EEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBIFAELwmUy3VcdVndCBeLMzetLcrpT1qEhm0IAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEYl7AgnDWqYml7gQSLhBndF5fMsG4umtDbAkBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRiXIAgXP1UYEIG4ozSgnG+pPT6UWWrCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggECMCNi0Xl5vUoyUNraKmdD9C32+FKe2AiX5sVVrlBYBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQqAOBcE84gnB1QFnpJhK2R1xEw4Jx/qSMyJ/8RAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQSQoAgXP1Xc8IH4oyYOePqv6GxBwQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEIgWAY/4k7MYjrIBqoNA3CbkcDAuU//yNAA7u0AAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEGkPAgnA2J1xCz17WYPCekC4NtrcY2FEoGJCSko0ioWAMlJYiIoAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALVE/B4fE4QzuOhn1b1xGqfi0BcJYYhDcKVFudJKFRayaskIYAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAKxJeDxJok/KUM8HkYGbMiaIxBXhbZ1FAyU5EswWFxFDpIRQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgegX8PpSxedPJQjXCFVFIG4r6BaMCwaKJFBasJVcvIQAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIRKeALyldfL6U6CxcApSKQFw1KjkYLHGGqtSJ46qRmywIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQCML6DxwNhSl1+tv5IIk9u4JxFWz/sPzxm3UeeMC1VyDbAgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAwwuE54NL16EovQ2/c/ZYQYBAXAWOrf/hzBtXWqjDVRZuPSOvIoAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAKNIODzp4lXh6L0eDyNsHd2ubkAgbjNRarxdzBYKqUleTpSZbAaucmCAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCNSvgMfjc4ai9Hh99bsjtr5NAgTitomrLHO4d1yB9o4rKkvkNwQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECggQW8vlTx+VPpBdfA7tXZHYG46ihtJU8wUCKlpfn0jtuKES8hgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBA3QtYLzhfUrp4vf663zhbrBMBAnF1wMjccXWAyCYQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECg2gLMBVdtqkbNSCCuDvlt7rhASb6EQoE63CqbQgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQTCAh7t/eb3pwtzwcVGiyAQV8f1ZL3jgsFiDcgV6paDdbx1NocAAggggAACCCCAAAIIIIAAAggggAACCCCAAAKJKOAMQ2nzwHmTmAsuhhoAgbh6qiwnIBcokkBpQT3tgc0igAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBA/At4xKcBOK8vhQBcDFY2gbh6rrRQKKjBuCIJBqyHHAsCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggUB0BAnDVUYr2PATiGqiGwgG5Qg3IFTXQHtkNAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIxKKA15eqveCsB5w3FotPmcsJEIgrh9EQv4ZCgU095AjINYQ3+0AAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIDYEPM7wkwTgYqO2qltKAnHVlarjfNZDLhgoloD1kNPfWRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCDxBDwenwbgkpkDLk6rnkBcI1dsKBTSOFyJE5ALBUsbuTTsHgEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBpCwONNEp9Ph5/0+nUISk9D7JJ9NIIAgbhGQK9ql6GgDlupveTC88iFqspGOgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCMSigM75ZsE36wHH/G+xWIHbXmYCcdtuVu9rRHrJBQMlEgwW1/v+2AECCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgjUl4DN/ZYkXq8G3+j9Vl/IUbtdAnFRWzXhgrlBOR2+0gJzOqFclJeY4iGAAAIIIIAAAggggAACCCCAAAIIIIAAAgggkOgCFnzTed90+EmCb4ndFgjExVD9O0G5UKkG5EqdeeVCoUAMlZ6iIoAAAggggAACCCCAAAIIIIAAAggggAACCCAQvwIejy885KTT683HvG/xW9XbdGQE4raJK7oyh0JBp5dcyIJzwVLtLBeMrgJSGgQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE4lTAAm9ObzevBuCs55vO/8aCwOYCBOI2F4nhvy0wFwoGxHrKWWDO6TFHcC6Ga5SiI4AAAggggAACCCCAAAIIIIAAAggggAACCESFgAbZvB6/Bt4s+Ga93fR3jycqikYholuAQFx010+tSxcZzjIcoNP55SxYp4E6C9ox31ytedkAAggggAACCCCAAAIIIIAAAggggAACCCCAQNwIeJ1ebU7PNg282c9w0I1hJuOmihvhQAjENQJ6tOzSgnQWjHOCcvp7SDQ4Zz+d9PKltHwsCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgjEokBZzzW3F5v2ZvOIDiVpP50hJe1nWb5YPErKHJ0CBOKis14oFQIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQIwLMHNgjFcgxUcAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEIhOAQJx0VkvlAoBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCDGBQjExXgFUnwEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIHoFCAQF531QqkQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRiXIBAXIxXIMVHAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBCITgECcdFZL5QKAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgxgUIxMV4BVJ8BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACB6BQgEBed9UKpEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEYlyAQFyMVyDFRwABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQiE4BAnHRWS+UCgEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIMYFCMTFeAVSfAQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgegUIBAXnfVCqRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBGJcgEBcjFcgxUcAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEIhOAQJx0VkvlAoBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCDGBQjExXgFUnwEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIHoFCAQF531QqkQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQRiXIBAXIxXIMVHAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBCITgECcdFZL5QKAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgxgUIxMV4BVJ8BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACB6BQgEBed9UKpEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEYlyAQFyMVyDFRwABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQiE4BAnHRWS+UCgEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIMYFCMTFeAVSfAQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgegUIBAXnfVCqRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBGJcgEBcjFcgxUcAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEIhOAQJx0VkvlAoBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCDGBf6/vfsAt6K4/z8+FjSWBEUFeyH2jgWwaxSxkNhiwxo1ltiiWFESI2JXBHtFAbEEEVsQCxawY0GwYFcsiAWJmkjU7G8+k//sf3bvOeeee87ee3cv73kecnb37M7OvmZ3r5nvmRkCcQWvQIqPAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQTwECcfmsF0qFAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQcAECcQWvQIqPAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQTwECcfmsF0qFAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQcAECcQWvQIqPAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQTwECcfmsF0qFAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQcAECcQWvQIqPAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQTwECcfmsF0qFAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQcAECcQWvQIqPAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQTwECcfmsF0qFAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQcAECcQWvQIqPAAIIIIAAAgjkXWD27Nl5LyLlQyAhUNR7tjXK3RrnTFTWHLDSmPF//vMfE0XRHCBR2yX+/PPP5t///nfJg3/66Sej70kIIIAAAggggAACCDSnwLzNmTl5I4AAAggggAACc5LADz/8YPr162dWW201c9hhh9V96Wo43Guvvcxxxx1nevToUXd+PoPp06eb1157za9m9rnhhhuaRRZZxOWnc9x///1m5MiR5tFHHzUffPCBWWaZZTI7FxkhkLXAZ599Zu677z5z1113mXHjxpm3337brLjiilmfJs7v8ccfNxdccIG58cYbzdJLLx1vb+qCnuUHHnjAlf2ZZ54xs2bNMgsttFBTs2nS/kV5vt9//30zduxYM3HiRKMyf/XVV86mY8eOZqmlljLdu3c3W265penUqZO7fr2rTj/9dHPnnXc2a91Xg13t/di3b18zePBg0759e/e5xx57VJN9m99HwTW5qP6feuop891335nOnTubrbbaymyzzTZm8cUXd8+6nnftd8ABB7R5Ey4QAQQQQAABBBBAoPUECMS1nj1nRgABBBBAAIE2JPDqq6+avffe26jhd8SIEZlcmXo4fPvtt6Znz57mz3/+szn//PPNfPPNV3feY8aMMYccckjd+aQzeOihh8yUKVPMrbfeal566SV6aKSBWM+dgJ6xU0891Tz88MNm0qRJLXrPXnjhhebBBx80V155pRkwYECTbCZMmOCOUzBPAaaWSgMHDizE8/3mm2+6HzCoXqtJq666qll99dXNk08+ab755hszc+bMVgnENfV+fOedd9zfBR33/fffmxNPPNEQiDPu76b+Hutv3brrrmuOOOIIF1x97733jP4NGTKkmtuCfRBAAAEEEEAAAQQQyEyAQFxmlGSEAAIIIIAAAnOqgH5Rr1/T/+IXvzCPPPKI2XzzzTOhWHDBBY2CW2pEVAP4W2+9ZUaNGlV3MK7UEF3qHdKhQwez6KKLmnbt2pnJkyebL7/8Mr4O9WZTY7WGQFMj9ddff90gAKB855prLte7R0ENDflFQiDvAp9//rmZf/753b2rgEZLJPW2UxBO6dprrzVnnnmmWWCBBao+9RdffOF6dqknXUsG4vL+fCsY1b9/f3PppZeaH3/80XnOM888ZrvttjO77767WWWVVeL328svv+x67arnmd6t+ueT8mmt1JT7ccaM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OeUEpYIUdijKwl1+W7mOwsEXoMDcGwWoJIqIAAIIIIAAAggggAACbVJg7jZ5VVwUAggggAACCCDQzALqQaBgmHqk2SG2zPDhw5v1jHaOG3PCCSe4c/zpT38iCNes2mSOAAIIIIAAAggggAACCCCAAAIIZCNAIC4bR3JBAAEEEEAAgTlQwM535YaJtPN5GTuPixk7dmyzKGhov169ehk7/44LwF1xxRXNch4yRQABBBBAAAEEEEAAAQQQQAABBBDIVoBAXLae5IYAAggggAACc5iA5oZ75JFH3JxtGqLytttuy1RA82htv/32ZsKECeaII44wN954YzyfT6YnmsMz09w/YdLcTUVMbeU6imif9zJzb+S9higfAggggAACCCCAAAIItFUBAnFttWa5LgQQQAABBBBoMYG11lrLTJw40XTr1s307t3bXH311ZmcW8NRbrLJJmby5Mlm6NCh5pprrjHzzDNPJnmTSVJg+vTpiQ3Tpk1LrBdlpa1cR1G8i1RO7o0i1RZlRQABBBBAAAEEEEAAgbYkMM9ZNrWlC+JaEEAAAQQQQACB1hBo3769OfDAA13POAXmOnfuXHcxFHT76KOPzLBhw8wWW2xRd35k0FDghx9+MOPGjTP9+vUz3333XbzD1KlTTZcuXcyiiy5q5ptvvnh7XhfaynXk1bfI5eLeKHLtUXYEEEAAAQQQQAABBBBoCwJzRTa1hQvhGhBAAAEEEEAAAQQQaIrAjz/+6AJt33//fcXDBgwYYPr27Vtxn9b8sq1cR2sattVzc2+01ZrluhBAAAEEEEAAAQQQQKBIAvMWqbCUFQEEEEAAAQQQQACBrATatWtn3n333URPuFJ5d+jQodTm3GxrK9eRG9A2VBDujTZUmVwKAggggAACCCCAAAIIFFaAHnGFrToKjgACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggkGeBufNcOMqGAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEFCMQVteYoNwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQK4FCMTlunooHAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFEF/g8eUWaCBBv09QAAAABJRU5ErkJggg==" + }, + "fb3f0be0-4884-4ad2-b9b3-cf92cfc51273.png": { + "image/png": "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eGlmOlBpeGVsWERpbWVuc2lvbj4xMDM2PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CmRPDiAAAEAASURBVHgB7J0JnI3VG8cfZgaDsQxjH8a+889OCNGisrUQ2UoqlRIilb0oCaWEIpStUiokZUt2su/rWAYzjJmxzZjhf37nzrnu3DvLnZk7++/5fO7c9573vGf53jvvvec5z5LtrhKhkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIANgew2xzwkARIgARIgARIgARIgARIgARIgARIgAU2ACgN+EEiABEiABEiABEiABEiABEiABEiABBwIUGHggIQFJEACJEACJEACJEACJEACJEACJEACVBjwM0ACJEACJEACJEACJEACJEACJEACJOBAgAoDByQsIAESIAESIAESIAESIAESIAESIAESoMKAnwESIAESIAESIAESIAESIAESIAESIAEHAlQYOCBhAQmQAAmQAAmQAAmQAAmQAAmQAAmQABUG/AyQAAmQAAmQAAmQAAmQAAmQAAmQAAk4EKDCwAEJC0iABEiABEiABEiABEiABEiABEiABKgw4GeABEiABEiABEiABEiABEiABEiABEjAgQAVBg5IWEACJEACJEACJEACJEACJEACJEACJECFAT8DJEACJEACJEACJEACJEACJEACJEACDgSoMHBAwgISIAESIAESIAESIAESIAESIAESIAEqDPgZIAESIAESIAESIAESIAESIAESIAEScCBAhYEDEhaQAAmQAAmQAAmQAAmQAAmQAAmQAAlQYcDPAAmQAAmQAAmQAAmQAAmQAAmQAAmQgAMBKgwckLCABEiABEiABEiABEiABEiABEiABEiACgN+BkiABEiABEiABEiABEiABEiABEiABBwIUGHggIQFJEACJEACJEACJEACJEACJEACJEACVBjwM0ACJEACJEACJEACJEACJEACJEACJOBAgAoDByQsIAESIAESIAESIAESIAESIAESIAESoMKAnwESIAESIAESIAESIAESIAESIAESIAEHAlQYOCBhAQmQAAmQAAmQAAmQAAmQAAmQAAmQABUG/AyQAAmQAAmQAAmQAAmQAAmQAAmQAAk4EKDCwAEJC0iABEiABEiABEiABEiABEiABEiABKgw4GeABEiABEiABEiABEiABEiABEiABEjAgQAVBg5IWEACJEACJEACJEACJEACJEACJEACJECFAT8DJEACJEACJEACJEACJEACJEACJEACDgSoMHBAwgISIAESIAESIAESIAESIAESIAESIAEqDPgZIAESIAESIAESIAESIAESIAESIAEScCBAhYEDEhaQAAmQAAmQAAmQAAmQAAmQAAmQAAlQYcDPAAmQAAmQAAmQAAmQAAmQAAmQAAmQgAMBKgwckLCABEiABEiABEiABEiABEiABEiABEiACgN+BkiABEiABEiABEiABEiABEiABEiABBwIUGHggIQFJEACJEACJEACJEACJEACJEACJEACVBjwM0ACJEACJEACJEACJEACJEACJEACJOBAgAoDByQsIAESIAESIAESIAESIAESIAESIAESoMKAnwESIAESIAESIAESIAESIAESIAESIAEHAlQYOCBhAQmQAAmQAAmQAAmQAAmQAAmQAAmQABUG/AyQAAmQAAmQAAmQAAmQAAmQAAmQAAk4EKDCwAEJC0iABEiABEiABEiABEiABEiABEiABKgw4GeABEiABEiABEiABEiABEiABEiABEjAgQAVBg5IWEACJEACJEACJEACJEACJEACJEACJECFAT8DJEACJEACJEACJEACJEACJEACJEACDgSoMHBAwgISIAESIAESIAESIAESIAESIAESIAEqDPgZIAESIAESIAESIAESIAESIAESIAEScCBAhYEDEhaQAAmQAAmQAAmQAAmQAAmQAAmQAAlQYcDPAAmQAAmQAAmQAAmQAAmQAAmQAAmQgAMBKgwckLCABEiABEiABEiABEiABEiABEiABEiACgN+BkiABEiABEiABEiABEiABEiABEiABBwIUGHggIQFJEACJEACJEACJEACJEACJEACJEACVBjwM0ACJEACJEACJEACJEACJEACJEACJOBAgAoDByQsIAESIAESIAESIAESIAESIAESIAESoMKAnwESIAESIAESIAESIAESIAESIAESIAEHAlQYOCBhAQmQAAmQAAmQAAmQAAmQAAmQAAmQABUG/AyQAAmQAAmQAAmQAAmQAAmQAAmQAAk4EKDCwAEJC0iABEiABEiABEiABEiABEiABEiABKgw4GeABEiABEiABEiABEiABEiABEiABEjAgQAVBg5IWEACJEACJEACJEACJEACJEACJEACJECFAT8DJEACJEACJEACJEACJEACJEACJEACDgSoMHBAwgISIAESIAESIAESIAESIAESIAESIAEqDPgZIAESIAESIAESIAESIAESIAESIAEScCBAhYEDEhaQAAmQAAmQAAmQAAmQAAmQAAmQAAlQYcDPAAmQAAmQAAmQAAmQAAmQAAmQAAmQgAMBKgwckLCABEiABEiABEiABEiABEiABEiABEiACgN+BkiABEiABEiABEiABEiABEiABEiABBwIUGHggIQFJEACJEACJEACJEACJEACJEACJEACVBjwM0ACJEACJEACJEACJEACJEACJEACJOBAgAoDByQsIAESIAESIAESIAESIAESIAESIAESoMKAnwESIAESIAESIAESIAESIAESIAESIAEHAlQYOCBhAQmQAAmQAAmQAAmQAAmQAAmQAAmQABUG/AyQAAmQAAmQAAmQAAmQAAmQAAmQAAk4EKDCwAEJC0iABEiABEiABEiABEiABEiABEiABKgw4GeABEiABEiABEiABEiABEiABEiABEjAgQAVBg5IWEACJEACJEACJEACJEACJEACJEACJECFAT8DJEACJEACJEACJEACJEACJEACJEACDgSoMHBAwgISIAESIAESIAESIAESIAESIAESIAEqDPgZIAESIAESIAESIAESIAESIAESIAEScCBAhYEDEhaQAAmQAAmQAAmQAAmQAAmQAAmQAAlQYcDPAAmQAAmQAAmQAAmQAAmQAAmQAAmQgAMBKgwckLCABEiABEiABEiABEiABEiABEiABEiACgN+BkiABEiABEiABEiABEiABEiABFKNwMGDB+Xzzz+X0NDQVOuTHSWNABUGSePGq0iABEiABEiABEggSQQiIu/IkYBrEnozMknXx3XRhz8dlt6f75DTgTfiqpKs8jt3RW5F3InzcVvNK7PKHv8QeWzUvzJm8aF0O8WQG5H6c2X/PqzcdVF/LpZuC0jVsS/ZfF73+/eeS6naLzvLGAR69+4tn3zyiWzYsCFjDDgLj9I9C8+dUycBEiABEiABEiCBVCOw8XCQjFl4WK5c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" + } + }, + "cell_type": "markdown", + "id": "16dc0e41-80bd-4453-b421-dcf315741bf4", + "metadata": {}, + "source": [ + "# Code Generation\n", + "\n", + "## AlphaCodium and flow engineering\n", + "\n", + "Recent works, such as AlphaCodium, have shown that code generation can be [substantially improved by using a \"flow\" paradigm](https://x.com/karpathy/status/1748043513156272416?s=20).\n", + "\n", + "Rather than naive `prompt:answer` paradigm, a `flow` paradigm constructs an answer to a coding question iteratively.\n", + "\n", + "[AlphaCodium](https://github.com/Codium-ai/AlphaCodium) iteravely tests and improves an answer on public and AI-generated tests for a particular question. \n", + "\n", + "![Screenshot 2024-02-20 at 3.32.58 PM.png](attachment:15ffc4e1-0f2b-49fb-99c9-2bbda7643172.png) \n", + "\n", + "--- \n", + "\n", + "## LangGraph self-corrective code assistant\n", + "\n", + "We wanted to test these the general idea of iterative code generation in LangGraph, making a few simplifications relative to the AlphaCodium work:\n", + "\n", + "1. We start with a set of documentation specified by a user\n", + "2. We use a long context LLM to ingest it, and answer a question based upon it \n", + "3. We perform two layers of checking: we check imports to see if hallucinations were introduced\n", + "4. We check code execution to determine if the code is able to be executed without error\n", + "\n", + "Checking for valid imports and execution is a reasonable stating point for code testing on open-ended questions related to a codebase.\n", + "\n", + "![Screenshot 2024-02-16 at 11.43.52 AM.png](attachment:fb3f0be0-4884-4ad2-b9b3-cf92cfc51273.png)" + ] + }, + { + "cell_type": "markdown", + "id": "38330223-d8c8-4156-82b6-93e63343bc01", + "metadata": {}, + "source": [ + "## Documentation\n", + "\n", + "As a test case, let's load docs related to [LangChain Expression Language](https://python.langchain.com/docs/expression_language/) (LCEL)." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "c2eb35d1-4990-47dc-a5c4-208bae588a82", + "metadata": {}, + "outputs": [], + "source": [ + "from bs4 import BeautifulSoup as Soup\n", + "from langchain_community.document_loaders.recursive_url_loader import RecursiveUrlLoader\n", + "\n", + "# LCEL docs \n", + "url = \"https://python.langchain.com/docs/expression_language/\"\n", + "loader = RecursiveUrlLoader(\n", + " url=url, max_depth=20, extractor=lambda x: Soup(x, \"html.parser\").text\n", + ")\n", + "docs = loader.load()\n", + "\n", + "# LCEL w/ PydanticOutputParser (outside the primary LCEL docs)\n", + "url = \"https://python.langchain.com/docs/modules/model_io/output_parsers/quick_start\"\n", + "loader = RecursiveUrlLoader(\n", + " url=url, max_depth=1, extractor=lambda x: Soup(x, \"html.parser\").text\n", + ")\n", + "docs_pydantic = loader.load()\n", + "\n", + "# LCEL w/ Self Query (outside the primary LCEL docs)\n", + "url = \"https://python.langchain.com/docs/modules/data_connection/retrievers/self_query/\"\n", + "loader = RecursiveUrlLoader(\n", + " url=url, max_depth=1, extractor=lambda x: Soup(x, \"html.parser\").text\n", + ")\n", + "docs_sq = loader.load()\n", + "\n", + "# Add \n", + "docs.extend([*docs_pydantic, *docs_sq])\n", + "\n", + "# Sort the list based on the URLs in 'metadata' -> 'source'\n", + "d_sorted = sorted(docs, key=lambda x: x.metadata[\"source\"])\n", + "d_reversed = list(reversed(d_sorted))\n", + "\n", + "# Concatenate the 'page_content' of each sorted dictionary\n", + "concatenated_content = \"\\n\\n\\n --- \\n\\n\\n\".join(\n", + " [doc.page_content for doc in d_reversed]\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "131f2055-2f64-4d19-a3d1-2d3cb8b42894", + "metadata": {}, + "source": [ + "## State \n", + "\n", + "Our state is a dict that will contain keys (errors, question, code generation) relevant to code generation." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "c185f1a2-e943-4bed-b833-4243c9c64092", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Dict, TypedDict\n", + "\n", + "from langchain_core.messages import BaseMessage\n", + "\n", + "\n", + "class GraphState(TypedDict):\n", + " \"\"\"\n", + " Represents the state of our graph.\n", + "\n", + " Attributes:\n", + " keys: A dictionary where each key is a string.\n", + " \"\"\"\n", + "\n", + " keys: Dict[str, any]" + ] + }, + { + "cell_type": "markdown", + "id": "64454465-26a3-40de-ad85-bcf59a2c3086", + "metadata": {}, + "source": [ + "## Graph \n", + "\n", + "Our graph lays out the logical flow shown in the figure above." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "b70e8301-63ae-4f7e-ad8f-c9a052fe3566", + "metadata": {}, + "outputs": [], + "source": [ + "from operator import itemgetter\n", + "from langchain_openai import ChatOpenAI\n", + "from langchain.prompts import PromptTemplate\n", + "from langchain_core.runnables import RunnablePassthrough\n", + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "from langchain.output_parsers.openai_tools import PydanticToolsParser\n", + "from langchain_core.utils.function_calling import convert_to_openai_tool\n", + "\n", + "def generate(state):\n", + " \"\"\"\n", + " Generate a code solution based on LCEL docs and the input question \n", + " with optional feedback from code execution tests \n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): New key added to state, documents, that contains retrieved documents\n", + " \"\"\"\n", + " \n", + " ## State\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " iter = state_dict[\"iterations\"]\n", + " \n", + " ## Data model\n", + " class code(BaseModel):\n", + " \"\"\"Code output\"\"\"\n", + " prefix: str = Field(description=\"Description of the problem and approach\")\n", + " imports: str = Field(description=\"Code block import statements\")\n", + " code: str = Field(description=\"Code block not including import statements\")\n", + " \n", + " ## LLM\n", + " model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\", streaming=True)\n", + " \n", + " # Tool\n", + " code_tool_oai = convert_to_openai_tool(code)\n", + " \n", + " # LLM with tool and enforce invocation\n", + " llm_with_tool = model.bind(\n", + " tools=[code_tool_oai],\n", + " tool_choice={\"type\": \"function\", \"function\": {\"name\": \"code\"}},\n", + " )\n", + " \n", + " # Parser\n", + " parser_tool = PydanticToolsParser(tools=[code])\n", + " \n", + " ## Prompt\n", + " template = \"\"\"You are a coding assistant with expertise in LCEL, LangChain expression language. \\n \n", + " Here is a full set of LCEL documentation: \n", + " \\n ------- \\n\n", + " {context} \n", + " \\n ------- \\n\n", + " Answer the user question based on the above provided documentation. \\n\n", + " Ensure any code you provide can be executed with all required imports and variables defined. \\n\n", + " Structure your answer with a description of the code solution. \\n\n", + " Then list the imports. And finally list the functioning code block. \\n\n", + " Here is the user question: \\n --- --- --- \\n {question}\"\"\"\n", + "\n", + " ## Generation\n", + " if \"error\" in state_dict:\n", + " print(\"---RE-GENERATE SOLUTION w/ ERROR FEEDBACK---\")\n", + " \n", + " error = state_dict[\"error\"]\n", + " code_solution = state_dict[\"generation\"]\n", + " \n", + " # Udpate prompt \n", + " addendum = \"\"\" \\n --- --- --- \\n You previously tried to solve this problem. \\n Here is your solution: \n", + " \\n --- --- --- \\n {generation} \\n --- --- --- \\n Here is the resulting error from code \n", + " execution: \\n --- --- --- \\n {error} \\n --- --- --- \\n Please re-try to answer this. \n", + " Structure your answer with a description of the code solution. \\n Then list the imports. \n", + " And finally list the functioning code block. Structure your answer with a description of \n", + " the code solution. \\n Then list the imports. And finally list the functioning code block. \n", + " \\n Here is the user question: \\n --- --- --- \\n {question}\"\"\"\n", + " template = template + addendum\n", + "\n", + " # Prompt \n", + " prompt = PromptTemplate(\n", + " template=template,\n", + " input_variables=[\"context\", \"question\", \"generation\", \"error\"],\n", + " )\n", + " \n", + " # Chain\n", + " chain = (\n", + " {\n", + " \"context\": lambda x: concatenated_content,\n", + " \"question\": itemgetter(\"question\"),\n", + " \"generation\": itemgetter(\"generation\"),\n", + " \"error\": itemgetter(\"error\"),\n", + " }\n", + " | prompt\n", + " | llm_with_tool \n", + " | parser_tool\n", + " )\n", + "\n", + " code_solution = chain.invoke({\"question\":question,\n", + " \"generation\":str(code_solution[0]),\n", + " \"error\":error})\n", + " \n", + " else:\n", + " print(\"---GENERATE SOLUTION---\")\n", + " \n", + " # Prompt \n", + " prompt = PromptTemplate(\n", + " template=template,\n", + " input_variables=[\"context\", \"question\"],\n", + " )\n", + "\n", + " # Chain\n", + " chain = (\n", + " {\n", + " # \"context\": lambda x: docs,\n", + " \"context\": lambda x: concatenated_content,\n", + " \"question\": itemgetter(\"question\"),\n", + " }\n", + " | prompt\n", + " | llm_with_tool \n", + " | parser_tool\n", + " )\n", + "\n", + " code_solution = chain.invoke({\"question\":question})\n", + "\n", + " iter = iter+1 \n", + " return {\"keys\": {\"generation\": code_solution, \"question\": question, \"iterations\":iter}}\n", + "\n", + "def check_code_imports(state):\n", + " \"\"\"\n", + " Check imports\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): New key added to state, error\n", + " \"\"\"\n", + " \n", + " ## State\n", + " print(\"---CHECKING CODE IMPORTS---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " code_solution = state_dict[\"generation\"]\n", + " imports = code_solution[0].imports\n", + " iter = state_dict[\"iterations\"]\n", + "\n", + " try: \n", + " # Attempt to execute the imports\n", + " exec(imports)\n", + " except Exception as e:\n", + " print(\"---CODE IMPORT CHECK: FAILED---\")\n", + " # Catch any error during execution (e.g., ImportError, SyntaxError)\n", + " error = f\"Execution error: {e}\"\n", + " if \"error\" in state_dict:\n", + " error_prev_runs = state_dict[\"error\"]\n", + " error = error_prev_runs + \"\\n --- Most recent run error --- \\n\" + error \n", + " else:\n", + " print(\"---CODE IMPORT CHECK: SUCCESS---\")\n", + " # No errors occurred\n", + " error = \"None\"\n", + "\n", + " return {\"keys\": {\"generation\": code_solution, \"question\": question, \"error\": error, \"iterations\":iter}}\n", + "\n", + "def check_code_execution(state):\n", + " \"\"\"\n", + " Check code block execution\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): New key added to state, error\n", + " \"\"\"\n", + " \n", + " ## State\n", + " print(\"---CHECKING CODE EXECUTION---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " code_solution = state_dict[\"generation\"]\n", + " prefix = code_solution[0].prefix\n", + " imports = code_solution[0].imports\n", + " code = code_solution[0].code\n", + " code_block = imports +\"\\n\"+ code\n", + " iter = state_dict[\"iterations\"]\n", + "\n", + " try: \n", + " # Attempt to execute the code block\n", + " exec(code_block)\n", + " except Exception as e:\n", + " print(\"---CODE BLOCK CHECK: FAILED---\")\n", + " # Catch any error during execution (e.g., ImportError, SyntaxError)\n", + " error = f\"Execution error: {e}\"\n", + " if \"error\" in state_dict:\n", + " error_prev_runs = state_dict[\"error\"]\n", + " error = error_prev_runs + \"\\n --- Most recent run error --- \\n\" + error \n", + " else:\n", + " print(\"---CODE BLOCK CHECK: SUCCESS---\")\n", + " # No errors occurred\n", + " error = \"None\"\n", + "\n", + " return {\"keys\": {\"generation\": code_solution, \n", + " \"question\": question, \n", + " \"error\": error, \n", + " \"prefix\":prefix,\n", + " \"imports\":imports,\n", + " \"iterations\":iter,\n", + " \"code\":code}}\n", + "\n", + "### Edges\n", + "\n", + "def decide_to_check_code_exec(state):\n", + " \"\"\"\n", + " Determines whether to test code execution, or re-try answer generation.\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " str: Next node to call\n", + " \"\"\"\n", + "\n", + " print(\"---DECIDE TO TEST CODE EXECUTION---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " code_solution = state_dict[\"generation\"]\n", + " error = state_dict[\"error\"]\n", + "\n", + " if error == \"None\":\n", + " # All documents have been filtered check_relevance\n", + " # We will re-generate a new query\n", + " print(\"---DECISION: TEST CODE EXECUTION---\")\n", + " return \"check_code_execution\"\n", + " else:\n", + " # We have relevant documents, so generate answer\n", + " print(\"---DECISION: RE-TRY SOLUTION---\")\n", + " return \"generate\"\n", + "\n", + "def decide_to_finish(state):\n", + " \"\"\"\n", + " Determines whether to finish (re-try code 3 times.\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " str: Next node to call\n", + " \"\"\"\n", + "\n", + " print(\"---DECIDE TO TEST CODE EXECUTION---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " code_solution = state_dict[\"generation\"]\n", + " error = state_dict[\"error\"]\n", + " iter = state_dict[\"iterations\"]\n", + "\n", + " if error == \"None\" or iter == 3:\n", + " # All documents have been filtered check_relevance\n", + " # We will re-generate a new query\n", + " print(\"---DECISION: TEST CODE EXECUTION---\")\n", + " return \"end\"\n", + " else:\n", + " # We have relevant documents, so generate answer\n", + " print(\"---DECISION: RE-TRY SOLUTION---\")\n", + " return \"generate\"" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "f66b4e00-4731-42c8-bc38-72dd0ff7c92c", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import END, StateGraph\n", + "\n", + "workflow = StateGraph(GraphState)\n", + "\n", + "# Define the nodes\n", + "workflow.add_node(\"generate\", generate) # generation solution\n", + "workflow.add_node(\"check_code_imports\", check_code_imports) # check imports\n", + "workflow.add_node(\"check_code_execution\", check_code_execution) # check execution\n", + "\n", + "# Build graph\n", + "workflow.set_entry_point(\"generate\")\n", + "workflow.add_edge(\"generate\", \"check_code_imports\")\n", + "workflow.add_conditional_edges(\n", + " \"check_code_imports\",\n", + " decide_to_check_code_exec,\n", + " {\n", + " \"check_code_execution\": \"check_code_execution\",\n", + " \"generate\": \"generate\",\n", + " },\n", + ")\n", + "workflow.add_conditional_edges(\n", + " \"check_code_execution\",\n", + " decide_to_finish,\n", + " {\n", + " \"end\": END,\n", + " \"generate\": \"generate\",\n", + " },\n", + ")\n", + "\n", + "# Compile\n", + "app = workflow.compile()" + ] + }, + { + "cell_type": "markdown", + "id": "744f48a5-9ad3-4342-899f-7dd4266a9a15", + "metadata": {}, + "source": [ + "## Eval\n", + "\n", + "[Here](https://smith.langchain.com/public/ea1f6ca5-de52-4d36-bd7b-fde3faa74a70/d) is a public dataset of LCEL questions. \n", + " \n", + "Let's create a custom LangSmith evaluator [here](https://docs.smith.langchain.com/evaluation/faq/custom-evaluators) to test them with:\n", + "\n", + "* Base case: context stuffing chain without LangGraph\n", + "* Our self-corrective coding assistant" + ] + }, + { + "cell_type": "markdown", + "id": "86411645-98f8-4d19-889f-c78f3c026380", + "metadata": {}, + "source": [ + "### Base Case\n", + "\n", + "Here is context stuffing without LangGraph." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d73dfd70-d266-4be7-9fd7-ed1f5cd432c6", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.runnables import RunnableLambda\n", + "\n", + "## Data model\n", + "class code(BaseModel):\n", + " \"\"\"Code output\"\"\"\n", + " prefix: str = Field(description=\"Description of the problem and approach\")\n", + " imports: str = Field(description=\"Code block import statements\")\n", + " code: str = Field(description=\"Code block not including import statements\")\n", + "\n", + "## LLM\n", + "model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\", streaming=True)\n", + "\n", + "# Tool\n", + "code_tool_oai = convert_to_openai_tool(code)\n", + "\n", + "# LLM with tool and enforce invocation\n", + "llm_with_tool = model.bind(\n", + " tools=[convert_to_openai_tool(code_tool_oai)],\n", + " tool_choice={\"type\": \"function\", \"function\": {\"name\": \"code\"}},\n", + ")\n", + "\n", + "# Parser\n", + "parser_tool = PydanticToolsParser(tools=[code])\n", + "\n", + "# Create a prompt template with format instructions and the query\n", + "prompt = PromptTemplate(\n", + " template = \"\"\"You are a coding assistant with expertise in LCEL, LangChain expression language. \\n \n", + " Here is a full set of LCEL documentation: \n", + " \\n ------- \\n\n", + " {context} \n", + " \\n ------- \\n\n", + " Answer the user question based on the above provided documentation. \\n\n", + " Ensure any code you provide can be executed with all required imports and variables defined. \\n\n", + " Structure your answer with a description of the code solution. \\n\n", + " Then list the imports. And finally list the functioning code block. \\n\n", + " Here is the user question: \\n --- --- --- \\n {question}\"\"\",\n", + " input_variables=[\"question\",\"context\"])\n", + "\n", + "def parse_answer_to_dict(x):\n", + " return x[0].dict()\n", + "\n", + "chain_base_case = (\n", + " {\n", + " \"context\": lambda x: concatenated_content,\n", + " \"question\": RunnablePassthrough(),\n", + " }\n", + " | prompt\n", + " | llm_with_tool\n", + " | parser_tool\n", + " | RunnableLambda(parse_answer_to_dict)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a980b398-ad4c-4b21-8e6d-77ab03130526", + "metadata": {}, + "outputs": [], + "source": [ + "answer = chain_base_case.invoke(\"How can I write a RAG chain?\")" + ] + }, + { + "cell_type": "markdown", + "id": "2901bdef-a78c-4831-81f2-927c35503fd9", + "metadata": {}, + "source": [ + "### Eval w/o LangGraph" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "ebcebf05-d455-4057-bf4c-6cc134bf62c9", + "metadata": {}, + "outputs": [], + "source": [ + "### No LangGraph\n", + "\n", + "import uuid\n", + "from langsmith import Client\n", + "from langchain.smith import RunEvalConfig, run_on_dataset\n", + "from langsmith.evaluation import EvaluationResult, run_evaluator\n", + "from langsmith.schemas import Example, Run\n", + "from typing import Union\n", + "\n", + "@run_evaluator\n", + "def check_import(run: Run, example: Union[Example, None] = None):\n", + " model_outputs = run.outputs\n", + " imports = model_outputs['imports']\n", + " try:\n", + " exec(imports)\n", + " score = 1\n", + " except:\n", + " score = 0\n", + " return EvaluationResult(key=\"check_import\", score=score)\n", + "\n", + "@run_evaluator\n", + "def check_execution(run: Run, example: Union[Example, None] = None):\n", + " model_outputs = run.outputs\n", + " imports = model_outputs['imports']\n", + " code = model_outputs['code']\n", + " code_to_execute = imports +\"\\n\"+ code\n", + " try:\n", + " exec(code_to_execute)\n", + " score = 1\n", + " except:\n", + " score = 0\n", + " return EvaluationResult(key=\"check_execution\", score=score)\n", + "\n", + "# Config\n", + "evaluation_config = RunEvalConfig(\n", + " custom_evaluators = [check_import,check_execution],\n", + ")\n", + "\n", + "client = Client()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9f81e316-94f1-47cc-93f2-bd6fa2d55870", + "metadata": {}, + "outputs": [], + "source": [ + "# Run eval on base chain\n", + "run_id = uuid.uuid4().hex[:4]\n", + "project_name = \"context-stuffing-no-langgraph\"\n", + "client.run_on_dataset(\n", + " dataset_name=\"lcel-teacher-eval\",\n", + " llm_or_chain_factory= lambda: (lambda x: x[\"question\"]) | chain_base_case,\n", + " evaluation=evaluation_config,\n", + " project_name=f\"{run_id}-{project_name}\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "50742bc3-7351-414e-942b-e40bb258ddff", + "metadata": {}, + "source": [ + "### Eval w/ LangGraph" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "959b473a-15d4-4b61-a319-32bd33f6a7fb", + "metadata": {}, + "outputs": [], + "source": [ + "### LangGraph\n", + "\n", + "@run_evaluator\n", + "def check_import(run: Run, example: Union[Example, None] = None):\n", + " model_outputs = run.outputs[\"keys\"]\n", + " imports = model_outputs['imports']\n", + " try:\n", + " exec(imports)\n", + " score = 1\n", + " except:\n", + " score = 0\n", + " return EvaluationResult(key=\"check_import\", score=score)\n", + "\n", + "@run_evaluator\n", + "def check_execution(run: Run, example: Union[Example, None] = None):\n", + " model_outputs = run.outputs[\"keys\"]\n", + " imports = model_outputs['imports']\n", + " code = model_outputs['code']\n", + " code_to_execute = imports +\"\\n\"+ code\n", + " try:\n", + " exec(code_to_execute)\n", + " score = 1\n", + " except:\n", + " score = 0\n", + " return EvaluationResult(key=\"check_execution\", score=score)\n", + "\n", + "# Config\n", + "evaluation_config = RunEvalConfig(\n", + " custom_evaluators = [check_import,check_execution],\n", + ")\n", + "\n", + "config = {\"recursion_limit\": 50}\n", + "def model(input):\n", + " return app.invoke({\"keys\":{**input, \"iterations\":0}},config=config)\n", + "\n", + "run_id = uuid.uuid4().hex[:4]\n", + "project_name = \"context-stuffing-with-langgraph\"\n", + "client.run_on_dataset(\n", + " dataset_name=\"lcel-teacher-eval\",\n", + " llm_or_chain_factory=model,\n", + " evaluation=evaluation_config,\n", + " project_name=f\"{run_id}-{project_name}\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "5caa3a37-5fd2-4e4c-b310-577c239f9d61", + "metadata": {}, + "source": [ + "## Consolidate Eval Results\n", + "\n", + "Compute standard error across 4 trials." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "14f8484b-9d57-4132-8801-74a4067f97db", + "metadata": {}, + "outputs": [], + "source": [ + "langgraph=[\"80db-context-stuffing-with-langgraph\",\n", + "\"060c-context-stuffing-with-langgraph\",\n", + "\"93cd-context-stuffing-with-langgraph\",\n", + "\"60ef-context-stuffing-with-langgraph\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "d19deeb6-9fc3-46b0-affb-5baaef4e9bba", + "metadata": {}, + "outputs": [], + "source": [ + "no_langgraph=[\"b493-context-stuffing-no-langgraph\",\n", + "\"eb8a-context-stuffing-no-langgraph\",\n", + "\"b88c-context-stuffing-no-langgraph\",\n", + "\"0aaa-context-stuffing-no-langgraph\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "d6340773-ca0b-4320-b841-093bbfb1161a", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd \n", + "\n", + "def prepare_dataframe(project, trial_number, chain):\n", + " df = client.get_test_results(project_name=project)\n", + " df = df.dropna(subset=['feedback.check_execution', 'feedback.check_import'])\n", + " df = df[['input.question', 'feedback.check_execution', 'feedback.check_import']]\n", + " df['trial #'] = trial_number\n", + " df['chain'] = chain\n", + " return df\n", + "\n", + "# Prepare each dataframe\n", + "dfs_chain1 = [prepare_dataframe(project, i+1, 'LangGraph') for i, project in enumerate(langgraph)]\n", + "dfs_chain2 = [prepare_dataframe(project, i+1, 'No LangGraph') for i, project in enumerate(no_langgraph)]\n", + "\n", + "# Combine all dataframes\n", + "final_df = pd.concat(dfs_chain1 + dfs_chain2, ignore_index=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "30dd9b44-b23f-4709-a993-f1e6873ff3f2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "chain\n", + "LangGraph 78\n", + "No LangGraph 79\n", + "dtype: int64" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "final_df.groupby(\"chain\").size()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "2c4e226c-511b-41fa-b850-2a0a3f67a44d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Fraction Imports CorrectFraction Execution CorrectImports Correct Std ErrorExecution Correct Std Error
chain
LangGraph1.0000000.8076920.0000000.044625
No LangGraph0.9873420.5569620.0125780.055888
\n", + "
" + ], + "text/plain": [ + " Fraction Imports Correct Fraction Execution Correct \\\n", + "chain \n", + "LangGraph 1.000000 0.807692 \n", + "No LangGraph 0.987342 0.556962 \n", + "\n", + " Imports Correct Std Error Execution Correct Std Error \n", + "chain \n", + "LangGraph 0.000000 0.044625 \n", + "No LangGraph 0.012578 0.055888 " + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def group_standard_error(group):\n", + " \"\"\"\n", + " Calculate the standard error for the 'correct' column in a given group.\n", + "\n", + " The function assumes the 'correct' column contains binary values (0 or 1).\n", + " It computes the standard error based on the formula for the standard error\n", + " of a proportion, which is sqrt(p * (1 - p) / n), where p is the proportion\n", + " of successes (1s) and n is the total number of trials.\n", + "\n", + " Args:\n", + " group (pd.DataFrame): A DataFrame group with a 'correct' column.\n", + "\n", + " Returns:\n", + " pd.Series: A series containing the standard error of the 'correct' column.\n", + " \"\"\"\n", + " # 3 trials x 20 questions per trial = 60\n", + " total_trials = len(group) \n", + " std_errors = {}\n", + " for column in [\"feedback.check_import\",\"feedback.check_execution\"]:\n", + " # Number correct\n", + " occurrences = group[column].sum()\n", + " # Total trials\n", + " fraction = occurrences / total_trials\n", + " # Standard error\n", + " std_errors[column] = (fraction * (1 - fraction) / total_trials) ** 0.5\n", + " return pd.Series(std_errors)\n", + "\n", + "# Calculate standard errors\n", + "std_errors = final_df.groupby([\"chain\"]).apply(group_standard_error)\n", + "\n", + "# Calculate the fraction of correct answers\n", + "grouped_frac_correct = final_df.groupby('chain')[[\"feedback.check_import\",\"feedback.check_execution\"]].sum() / final_df.groupby('chain')[[\"feedback.check_import\",\"feedback.check_execution\"]].count()\n", + "\n", + "# Concatenate the fraction correct data with the standard errors\n", + "correct_frac_and_errors = pd.concat([grouped_frac_correct, std_errors], axis=1)\n", + "\n", + "# If you want to rename the columns for clarity\n", + "correct_frac_and_errors.columns = [\"Fraction Imports Correct\", \"Fraction Execution Correct\", \"Imports Correct Std Error\", \"Execution Correct Std Error\"]\n", + "correct_frac_and_errors" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "b737b809-04dc-49f1-b070-f0609898e9d3", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB8YAAAN5CAYAAAB61FHjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB1dUlEQVR4nOzdebyWc/4/8PfpdDonJy1opalEkq3mWCYxiVSW0GAsQ8sYYoQKM5ahsjWDki/ZicgwY/uONSKMEUaUZUSRZWgjFa3qXL8//M797XZOdY7O6ejq+Xw8zuPR/bm293Xd93X3+Nyv6/pcOUmSJAEAAAAAAAAAKVWjugsAAAAAAAAAgKokGAcAAAAAAAAg1QTjAAAAAAAAAKSaYBwAAAAAAACAVBOMAwAAAAAAAJBqgnEAAAAAAAAAUk0wDgAAAAAAAECqCcYBAAAAAAAASDXBOAAAAAAAAACpJhgHoMLuvPPOyMnJiY8//jjT1rJlyzj00EM3aB0ff/xx5OTkxNVXX13l2+rbt2/UqVOnyrfzQ/vtt1/svPPOG3y7VI2yzp0NJScnJwYMGLDBt7s2lf29UfKdcOedd1baOgEA2LTo7244+rtrNnTo0MjJyanuMn6SqrPf91P8zFbF+duyZcvo27dvpa4T4KdCMA6wkSjpnJf1d95551V3eRutZcuWxTXXXBN77bVX1KtXLwoKCqJNmzYxYMCA+OCDD6q7vPVSXT9uVJYlS5bE0KFD4/nnny/X/M8///waz5Fjjz22aov9gSuuuCIeeeSRDbrNn5I5c+bEOeecE23bto3NNtssCgsLo6ioKC677LJYsGBBdZcHAMBPjP5u1Uh7f3dNn5mCgoLqLq9cKtrn3VDWdFybNGmyQeu49957Y9SoURt0mz8laT5/AapTzeouAICKueSSS6JVq1ZZbT+1q1U3Fl9++WX06NEjJk+eHIceemgcf/zxUadOnXj//ffjvvvui1tuuSVWrFhR3WVuspYsWRLDhg2LiO+vyi6vM888M/bYY4+stpYtW1ZiZet2xRVXxFFHHRVHHHFEVvuJJ54Yxx57bOTn52/Qejakf//733HwwQfHt99+GyeccEIUFRVFRMTrr78ef/7zn+PFF1+Mp59+ukq23aJFi1i6dGnk5eVVyfoBAKha+ruVZ1Po7+bn58dtt91Wqj03N7caqqm4tfV5//SnP1XrRSEHHnhg9O7dO6utdu3aG7SGe++9N955550YOHBgVvum0O+r7vP3/fffjxo13FMJpJNgHGAjc9BBB8Xuu+9e3WWkQt++fePNN9+MBx54II488sisaZdeemlceOGF1VTZpq24uHi9Onj77rtvHHXUUeWad+XKlVFcXBy1atX60duriNzc3I3mR5ofY8GCBdGrV6/Izc2NN998M9q2bZs1/fLLL49bb721yra/Md0dAgBAafq7lWdT6O/WrFkzTjjhhOouo0rUrFkzatasvp/u27RpU+5jmyRJLFu2bIMF55tCv6+6z980X8wP4LIfgJR58sknY999943CwsLYfPPN45BDDol333231HzTpk2Lo446KrbYYosoKCiI3XffPf7xj3+Umu/dd9+N/fffP2rXrh3bbLNNXHbZZVFcXLzG7T/99NPRvn37KCgoiHbt2sVDDz2UNX3+/PlxzjnnxC677BJ16tSJunXrxkEHHRRTp04tta5ly5bF0KFDo02bNlFQUBBNmzaNX/3qV/Hhhx+ucftJksQpp5wStWrVKrXt1b366qvx+OOPx0knnVSqkxHxfSegrGe5ff7553HEEUdEnTp1omHDhnHOOefEqlWrsuYpLi6OUaNGxU477RQFBQXRuHHj6N+/f3z99del1vfkk09G586dY/PNN4+6devGHnvsEffee+8a6474/hhvttlmcdxxx8XKlSvXOu8PlTwb7/nnn4/dd989ateuHbvssktm6LaHHnoodtlllygoKIiioqJ48803s5YvGZ79o48+iu7du0dhYWE0a9YsLrnkkkiSJGvexYsXx9lnnx3NmzeP/Pz82GGHHeLqq68uNV/Js6/HjRsXO+20U+Tn58dNN90UDRs2jIiIYcOGZYZuGzp0aIX2d3WrP6Nv1KhR0bp168jPz4///Oc/sWLFirj44oujqKgo6tWrF4WFhbHvvvvGxIkTS62nuLg4rr322sxxatiwYfTo0SNef/31zP4sXrw47rrrrkzdJc/mWtMzxm+44YbMvjdr1ixOP/30UkOOlzzL7D//+U906dIlNttss9h6663jyiuvrNBxGDduXOywww6Z9/jFF1/MTJs4cWLk5OTEww8/XGq5e++9N3JycmLSpElrXPfNN98cn3/+eYwcObJUKB4R0bhx4/jTn/5Uqv2ll16KPffcMwoKCmLbbbeNsWPHZk0v7/dGWc+aK/nMlufcBQDgp01/V3+3IpIkiS5dukTDhg1j7ty5mfYVK1bELrvsEq1bt47Fixdn2u+5554oKiqK2rVrxxZbbBHHHntsfPbZZ6XW++qrr8bBBx8cDRo0iMLCwth1113j2muvzUzfb7/9yhz1rG/fvpnRzD7++OO19nnLesb4ypUr49JLL830ZVu2bBkXXHBBLF++PGu+kn7/uvpZP1bJ+sePH5/5XeHmm2+OiIgxY8bE/vvvH40aNYr8/Pxo165d3HjjjWWuZ22fj/322y8ef/zx+OSTTzLHZvVjV9Yzxp977rnM90P9+vXj8MMPj/feey9rnpLjOmPGjOjbt2/Ur18/6tWrF/369YslS5aU+xhMnjw59t5776hdu3a0atUqbrrppsy0b7/9NgoLC+Oss84qtdx///vfyM3NjeHDh69x3VV5/l599dWx9957x5Zbbhm1a9eOoqKieOCBB0qt64fPGC/5LeNf//pXDB48OBo2bBiFhYXRq1evmDdv3hr3BeCnSDAOsJFZuHBhfPnll1l/Je6+++445JBDok6dOvGXv/wlLrroovjPf/4T++yzT1YQ9+6778YvfvGLeO+99+K8886LESNGRGFhYRxxxBFZgdjs2bOjS5cuMWXKlDjvvPNi4MCBMXbs2KwO3+qmT58exxxzTBx00EExfPjwqFmzZhx99NHxzDPPZOb56KOP4pFHHolDDz00Ro4cGeeee268/fbb0blz5/jiiy8y861atSoOPfTQGDZsWBQVFcWIESPirLPOioULF8Y777xT5vZXrVoVffv2jbFjx8bDDz8cv/rVr9Z4HEt+FDnxxBPXfsB/sP7u3bvHlltuGVdffXV07tw5RowYEbfcckvWfP37949zzz03OnXqFNdee23069cvxo0bF927d4/vvvsuM9+dd94ZhxxySMyfPz/OP//8+POf/xzt27ePp556ao01PPbYY3HYYYfF0UcfHffcc8+PuoJ8xowZcfzxx0fPnj1j+PDh8fXXX0fPnj1j3LhxMWjQoDjhhBNi2LBh8eGHH8avf/3rUj8MrVq1Knr06BGNGzeOK6+8MoqKimLIkCExZMiQzDxJksRhhx0W11xzTfTo0SNGjhwZO+ywQ5x77rkxePDgUjU999xzMWjQoDjmmGPi2muvjT322CPTee7Vq1fcfffdcffdd6/1PS3xzTfflDpHVt+HMWPGxHXXXRennHJKjBgxIrbYYotYtGhR3HbbbbHffvvFX/7ylxg6dGjMmzcvunfvHlOmTMla/0knnRQDBw6M5s2bx1/+8pc477zzoqCgIF555ZWI+P48zM/Pj3333TdTd//+/ddY79ChQ+P000+PZs2axYgRI+LII4+Mm2++Obp165b1eYmI+Prrr6NHjx6x2267xYgRI6Jt27bxxz/+MZ588sl1HpeIiBdeeCEGDhwYJ5xwQlxyySXx1VdfRY8ePTLn1H777RfNmzePcePGlVp23Lhx0bp16+jYseMa1/+Pf/wjateuXe479iO+/zweddRRceCBB8aIESOiQYMG0bdv36wfOMv7vbEm5T13AQCoXvq7+rsV7e/+8PPy5ZdfxqJFiyLi+4uW77jjjli2bFmceuqpmWWGDBkS7777bowZMyYKCwsj4vvRrXr37h3bb799jBw5MgYOHBjPPvts/PKXv8y6aPmZZ56JX/7yl/Gf//wnzjrrrBgxYkR06dIlHnvssXId5xINGzascJ/3d7/7XVx88cXx85//PK655pro3LlzDB8+PI499thS85ann7U2y5YtK3VcVw/g33///TjuuOPiwAMPjGuvvTbat28fERE33nhjtGjRIi644IIYMWJENG/ePH7/+9/H6NGjs9a/rs/HhRdeGO3bt4+tttoqc2zW9rzxCRMmRPfu3WPu3LkxdOjQGDx4cLz88svRqVOnUhemR0T8+te/jm+++SaGDx8ev/71r+POO+/MDGu/Ll9//XUcfPDBUVRUFFdeeWVss802cdppp8Udd9wRERF16tSJXr16xf33318qmP7rX/8aSZLEb37zmzWuvyrP32uvvTY6dOgQl1xySVxxxRWZ77HHH3+8XNs544wzYurUqTFkyJA47bTT4tFHH40BAwaUu06An4QEgI3CmDFjkogo8y9JkuSbb75J6tevn5x88slZy82ePTupV69eVvsBBxyQ7LLLLsmyZcsybcXFxcnee++dbL/99pm2gQMHJhGRvPrqq5m2uXPnJvXq1UsiIpk5c2amvUWLFklEJA8++GCmbeHChUnTpk2TDh06ZNqWLVuWrFq1KqvGmTNnJvn5+ckll1ySabvjjjuSiEhGjhxZ6lgUFxdnlouI5Kqrrkq+++675Jhjjklq166djB8/fu0HM0mSXr16JRGRfP311+ucN0mSpE+fPklEZNWYJEnSoUOHpKioKPP6n//8ZxIRybhx47Lme+qpp7LaFyxYkGy++ebJXnvtlSxdurTM/UuSJOncuXOy0047JUmSJA8++GCSl5eXnHzyyaWO4ZpqLiwszGoreZ9efvnlTNv48eOTiEhq166dfPLJJ5n2m2++OYmIZOLEiaWOwxlnnJFV7yGHHJLUqlUrmTdvXpIkSfLII48kEZFcdtllWds/6qijkpycnGTGjBmZtohIatSokbz77rtZ886bNy+JiGTIkCHr3NckSZKJEyeu8RyZOXNm5vNSt27dZO7cuVnLrly5Mlm+fHlW29dff500btw4+e1vf5tpe+6555KISM4888xS21/9fSssLEz69OlTap6S87jk3Jk7d25Sq1atpFu3blnv6fXXX59ERHLHHXdk2jp37pxERDJ27NhM2/Lly5MmTZokRx555DqPT8mxeP311zNtn3zySVJQUJD06tUr03b++ecn+fn5yYIFCzJtc+fOTWrWrLnO96JBgwbJbrvtts5aSpR8Hl988cWsbeXn5ydnn312pq283xsl7/GYMWMybeU9dwEAqD76u/9Hf7f8/d01fWa6d++eNW9J3/aee+5JXnnllSQ3NzcZOHBgZvrHH3+c5ObmJpdffnnWcm+//XZSs2bNTPvKlSuTVq1aJS1atCh1bH+4X507dy6z5hYtWmRer63PO2TIkMznP0mSZMqUKUlEJL/73e+y5jvnnHOSiEiee+65TFt5+1lrsqbjWtLPKln/U089VWrZJUuWlGrr3r17su2222Zel/fzccghh2QdrxJl9fvat2+fNGrUKPnqq68ybVOnTk1q1KiR9O7dO9NWclxX7+cnyffnzJZbbln2AVlNSb98xIgRmbbly5dntr9ixYokSf7vd5Ynn3wya/ldd921zM/GD2upivM3SUq/PytWrEh23nnnZP/9989qb9GiRdZvGiXf0V27ds16jwYNGpTk5uZm/X4A8FPnjnGAjczo0aPjmWeeyfqL+P6q5QULFsRxxx2XdUVvbm5u7LXXXpkhoefPnx/PPfdc5urYkvm++uqr6N69e0yfPj0+//zziIh44okn4he/+EXsueeeme03bNhwjVe2NmvWLHr16pV5Xbdu3ejdu3e8+eabMXv27Ij4fsinGjW+/+9n1apV8dVXX0WdOnVihx12iDfeeCOz7IMPPhhbbbVVnHHGGaW288PhxFasWBFHH310PPbYY/HEE09Et27d1nkcS64g33zzzdc57+pWv8o84vvnWX/00UeZ13//+9+jXr16ceCBB2a9D0VFRVGnTp3M+/DMM8/EN998k7nbeG37F/H9VcXHHHNM9O/fP26++ebMMfwx2rVrl3XX71577RUREfvvv3/87Gc/K9W++v6VWP2K4JKh0FesWBETJkyIiO8/O7m5uXHmmWdmLXf22WdHkiSl7nDu3LlztGvX7kfv0+ouvvjiUudIkyZNMtOPPPLIzJB1JXJzczPPGS8uLo758+fHypUrY/fddy/1uczJycm6O75EWe/bukyYMCFWrFgRAwcOzHpPTz755Khbt26pq7br1KmT9Zy3WrVqxZ577lnme1SWjh07RlFRUeb1z372szj88MNj/PjxmSvZe/fuHcuXL88aTu3++++PlStXrvMZc4sWLarwOdWuXbvYd999M68bNmwYO+ywQ9Y+lfd7Y23Wde4CAFD99Hf1dyvS3y0oKCj1eXnmmWfiz3/+c9Z8p5xySnTv3j3OOOOMOPHEE6N169ZxxRVXZKY/9NBDUVxcHL/+9a+z9qtJkyax/fbbZ/brzTffjJkzZ8bAgQOjfv3669yvyvTEE09ERJQage3ss8+OiCjVdyxPP2ttDj/88FLHtXv37pnprVq1ynpdYvXnjJeMANG5c+f46KOPYuHChRFR8c/HusyaNSumTJkSffv2jS222CLTvuuuu8aBBx6YOXarK+uz/tVXX2XOnbWpWbNm1qhwtWrViv79+8fcuXNj8uTJERHRtWvXaNasWdZobO+880689dZb5epXR1T++RuR/f58/fXXsXDhwth3333L3a8+5ZRTst6jfffdN1atWhWffPJJhWoFqE4VH38VgGq15557xu67716qffr06RHxfbhZlrp160bE98NpJUkSF110UVx00UVlzjt37tzYeuut45NPPsmEo6vbYYcdylxuu+22K9WJadOmTUR8/wyoJk2aZJ7PfMMNN8TMmTOzhpXacsstM//+8MMPY4cddijX0GnDhw+Pb7/9Np588skyn+NVlpLj8c0335Tq0K5JyfOkV9egQYOsZ6lNnz49Fi5cGI0aNSpzHSXPNSt5btzOO++8zu3OnDkzTjjhhDj66KPjuuuuK1eta7N6+B0RUa9evYiIaN68eZntP3xWXI0aNWLbbbfNalv9fY6I+OSTT6JZs2alOnI77rhjZvrqWrVqVdHdWKNddtklunbtusbpa9rWXXfdFSNGjIhp06ZlDQG4+vwffvhhNGvWLKuzvT5KjsMPz6latWrFtttuW+o4bbPNNqXOsQYNGsRbb71Vru1tv/32pdratGkTS5YsiXnz5kWTJk2ibdu2sccee8S4cePipJNOiojvh1H/xS9+Edttt91a11+3bt345ptvylVLiR9+HiNKn1fl/d5Yk/KcuwAAVD/93dL0d9csNzd3rX2/1d1+++3RunXrmD59erz88stZAeH06dMjSZIy+0sREXl5eRFRsf2qbJ988knUqFGjVJ+sSZMmUb9+/VJ9x/L0s9Zmm222+VH96n/9618xZMiQmDRpUqlndi9cuDDq1atX6cdxTf3qiO9/gxg/fnwsXrw4M2x+ROnj06BBg4j4/vePkvNnTZo1a5a1rojs74Jf/OIXUaNGjfjNb34TN954YyxZsiQ222yzGDduXBQUFMTRRx+91vVX1fkb8f3jCi677LKYMmVK1tD45b0gYW3HDWBjIRgHSImSZyjffffdWXfHlijpcJfMd84555R5dW9ErDP8Wh9XXHFFXHTRRfHb3/42Lr300thiiy2iRo0aMXDgwFLPsi6v7t27x1NPPRVXXnll7LfffqWuOC5L27ZtIyLi7bffzrqKem1yc3PXOU9xcXE0atSozGc0R0Spjkp5NG3aNJo2bRpPPPFEvP7662X+UFQRa9qPNbUnSbJe2yuP1X+UqI5t3XPPPdG3b9844ogj4txzz41GjRpFbm5uDB8+PNNp/ynYUO9R796946yzzor//ve/sXz58njllVfi+uuvX+dybdu2jSlTpsSKFSsyd+CvS3n2aX2/N8pz7gIA8NOlv6u/u76ef/75TBD49ttvZ42iVlxcHDk5OfHkk0+WeRzq1KlToW3l5OSU2Uf74fOmf4zyBphV3Xcsq1/94YcfxgEHHBBt27aNkSNHRvPmzaNWrVrxxBNPxDXXXPOjz4GqsCH61r17946rrroqHnnkkTjuuOPi3nvvjUMPPTRzE8KaVNX5+89//jMOO+yw+OUvfxk33HBDNG3aNPLy8mLMmDFx7733rtd2NsTvRgCVRTAOkBKtW7eOiIhGjRqt9arekjt98/Ly1nlldYsWLTJX5q/u/fffL3P+kqvzV++offDBBxER0bJly4iIeOCBB6JLly5x++23Zy27YMGC2GqrrbL259VXX43vvvsuc3X2mvziF7+IU089NQ499NA4+uij4+GHH17nlfc9e/aM4cOHxz333FPujkZ5tG7dOiZMmBCdOnVaa9hb8n6988476/xhpqCgIB577LHYf//9o0ePHvHCCy/ETjvtVGk1V1RxcXF89NFHmSuiI0q/zy1atIgJEybEN998k3XX+LRp0zLT16Wqh6Jb3QMPPBDbbrttPPTQQ1nb/eGQ6a1bt47x48fH/Pnz13rXeHlrLzkO77//ftZd+CtWrIiZM2eW++6H8irrfP7ggw9is802y/oR69hjj43BgwfHX//611i6dGnk5eXFMcccs8719+zZMyZNmhQPPvhgHHfccZVWd3m/NwAASCf9Xf3d9TFr1qw444wzolu3blGrVq3MhRMl/bHWrVtHkiTRqlWrrH7uD62+X2v7fDVo0KDMIct/eFd3Rfq8LVq0iOLi4pg+fXpmJLaIiDlz5sSCBQvK1ceuao8++mgsX748/vGPf2TdWVwyFH2J8n4+fky/+oemTZsWW221Vak7vNfHF198UeoO9B9+F0R8f0d8hw4dYty4cbHNNtvEp59+Wq5REarq/H3wwQejoKAgxo8fH/n5+Zn2MWPGVNo2ADYGnjEOkBLdu3ePunXrxhVXXJE1DHSJefPmRcT3PyTst99+cfPNN8esWbPWOF9ExMEHHxyvvPJKvPbaa1nT13R1+BdffBEPP/xw5vWiRYti7Nix0b59+8xV/bm5uaWuJP373/+eec5biSOPPDK+/PLLMu9SLetK1K5du8Z9990XTz31VJx44onrvBK5Y8eO0aNHj7jtttvikUceKTV9xYoVcc4556x1HWX59a9/HatWrYpLL7201LSVK1fGggULIiKiW7dusfnmm8fw4cNj2bJlWfOVtX/16tWL8ePHR6NGjeLAAw+s9ruYV39fkiSJ66+/PvLy8uKAAw6IiO8/O6tWrSr1/l1zzTWRk5MTBx100Dq3sdlmm0VEZI5ZVSq56nn1Y//qq6/GpEmTsuY78sgjI0mSGDZsWKl1rL5sYWFhueru2rVr1KpVK/7nf/4na/nbb789Fi5cGIccckhFd2WtJk2alPXssM8++yz+93//N7p165Z15fdWW20VBx10UNxzzz0xbty46NGjR7kC6FNPPTWaNm0aZ599duaHgdXNnTs3LrvssgrXXd7vDQAA0kl/V393fZx88slRXFwct99+e9xyyy1Rs2bNOOmkkzK1/OpXv4rc3NwYNmxYqfqSJImvvvoqIiJ+/vOfR6tWrWLUqFGl+nurL9e6deuYNm1a1udt6tSp8a9//StrmYr0eQ8++OCIiBg1alRW+8iRIyMiKr3v+GOU1a9euHBhqeC1vJ+PwsLCzHPJ16Zp06bRvn37uOuuu7KO5TvvvBNPP/105thVlpUrV8bNN9+ceb1ixYq4+eabo2HDhlFUVJQ174knnhhPP/10jBo1Krbccsty/RZSVedvbm5u5OTkZI1c8PHHH5e5DYA0c8c4QErUrVs3brzxxjjxxBPj5z//eRx77LHRsGHD+PTTT+Pxxx+PTp06ZTrdo0ePjn322Sd22WWXOPnkk2PbbbeNOXPmxKRJk+K///1vTJ06NSIi/vCHP8Tdd98dPXr0iLPOOisKCwvjlltuiRYtWpT5TOM2bdrESSedFP/+97+jcePGcccdd8ScOXOyOkGHHnpoXHLJJdGvX7/Ye++94+23345x48aVemZ17969Y+zYsTF48OB47bXXYt99943FixfHhAkT4ve//30cfvjhpbZ/xBFHxJgxY6J3795Rt27drI5KWcaOHRvdunWLX/3qV9GzZ8844IADorCwMKZPnx733XdfzJo1K66++uoKvQ+dO3eO/v37x/Dhw2PKlCnRrVu3yMvLi+nTp8ff//73uPbaa+Ooo46KunXrxjXXXBO/+93vYo899ojjjz8+GjRoEFOnTo0lS5bEXXfdVWrdW221VTzzzDOxzz77RNeuXeOll16KrbfeukL1VYaCgoJ46qmnok+fPrHXXnvFk08+GY8//nhccMEFmbuOe/bsGV26dIkLL7wwPv7449htt93i6aefjv/93/+NgQMHZq4QX5vatWtHu3bt4v777482bdrEFltsETvvvHOVPM/t0EMPjYceeih69eoVhxxySMycOTNuuummaNeuXXz77beZ+bp06RInnnhi/M///E9Mnz49evToEcXFxfHPf/4zunTpEgMGDIiIiKKiopgwYUKMHDkymjVrFq1atSrz+YUNGzaM888/P4YNGxY9evSIww47LN5///244YYbYo899ogTTjihUvdz5513ju7du8eZZ54Z+fn5ccMNN0RElBn09+7dO4466qiIiDJ/+CpLgwYN4uGHH46DDz442rdvHyeccELmh4E33ngj/vrXv2YNWVhe5f3eAAAgnfR39XfLsnLlyrjnnnvKnNarV68oLCyMMWPGxOOPPx533nlnbLPNNhERcd1118UJJ5wQN954Y/z+97+P1q1bx2WXXRbnn39+fPzxx3HEEUfE5ptvHjNnzoyHH344TjnllDjnnHOiRo0aceONN0bPnj2jffv20a9fv2jatGlMmzYt3n333Rg/fnxERPz2t7+NkSNHRvfu3eOkk06KuXPnxk033RQ77bRTLFq0KFNjRfq8u+22W/Tp0yduueWWWLBgQXTu3Dlee+21uOuuu+KII46ILl26lPt9rCold+T37Nkz+vfvH99++23ceuut0ahRo6wLVcr7+SgqKor7778/Bg8eHHvssUfUqVMnevbsWea2r7rqqjjooIOiY8eOcdJJJ8XSpUvjuuuui3r16sXQoUMrdT+bNWsWf/nLX+Ljjz+ONm3axP333x9TpkyJW265pdQIEMcff3z84Q9/iIcffjhOO+20dY4QUaIqzt9DDjkkRo4cGT169Ijjjz8+5s6dG6NHj47tttuuzO88gNRKANgojBkzJomI5N///vda55s4cWLSvXv3pF69eklBQUHSunXrpG/fvsnrr7+eNd+HH36Y9O7dO2nSpEmSl5eXbL311smhhx6aPPDAA1nzvfXWW0nnzp2TgoKCZOutt04uvfTS5Pbbb08iIpk5c2ZmvhYtWiSHHHJIMn78+GTXXXdN8vPzk7Zt2yZ///vfs9a3bNmy5Oyzz06aNm2a1K5dO+nUqVMyadKkpHPnzknnzp2z5l2yZEly4YUXJq1atUry8vKSJk2aJEcddVTy4YcfJkmSJDNnzkwiIrnqqquylrvhhhuSiEjOOeecdR7XJUuWJFdffXWyxx57JHXq1Elq1aqVbL/99skZZ5yRzJgxIzNfnz59ksLCwlLLDxkyJCnrv9NbbrklKSoqSmrXrp1svvnmyS677JL84Q9/SL744ous+f7xj38ke++9d1K7du2kbt26yZ577pn89a9/zUzv3LlzstNOO2UtM2PGjKRp06bJjjvumMybN2+N+1ZWzSXv0w9FRHL66adntZV1fEvW+eGHHybdunVLNttss6Rx48bJkCFDklWr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48dn1KhRWbp0adasWZORI0fu81qaWE8BOHz0yX+gTwagMdAj/4G1FA6cYByOErfffnv+/u//PsuXL6833q1btyxbtqze2LJly3LyySenSZMm+3ydzZs357XXXsvNN9+cCy+8MN26dct77723z+c55ZRT8tJLL9Ub++z28OHD8+yzz+aVV17Z5/Mnf/jcuNra2tx99905++yzc/LJJ+f3v//9TvM+/fTTrFq1qm77tddey5YtW9KtW7f9ui4A7MnerlG706pVq1RVVdVbP2tqavLyyy/Xbbdt2zaDBg3Kvffem23btu1XrcuWLcs555yT0aNHp3fv3uncuXPeeOONneb927/9Wz7++OO67RdffDEtWrRI+/bt9+u6AHCg9Mk70ycDcCTSIwMHS9OGLgA4PE4//fRcdtllmT17dr3xH/zgBznzzDNz6623ZtiwYVm+fHnuvffe3Hfffbs9X01NTdasWVNvrFmzZjnllFPStm3b3H///TnxxBOzYcOG/PVf//U+13vttdfmvPPOy6xZszJkyJA8//zzefrpp+v+Yj5JbrjhhvziF7/IhRdemClTpuRrX/tajj/++PzmN7/J008/vcdfWHTu3DmffPJJ5syZkyFDhmTZsmWZP3/+TvOOOeaYXHvttZk9e3aaNm2aMWPG5Oyzz96rV9YBwJ68//77O62pJ5xwwl6tUXty7bXXZsaMGencuXO6du2aOXPm5L333qu3nt53330ZMGBA+vbtm6lTp6ZHjx4pLy/PSy+9lHXr1u3xtXJdunTJT37ykzzzzDPp2LFjHn744bz00kvp2LFjvXk7duzIqFGjcvPNN2f9+vWZMmVKxowZk/Jyf6sLQMPQJ+9MnwxAQ9Mj65HhUPIvDI4it9xyy06vWjnjjDPy2GOPZdGiRenevXsmT56cW265JSNGjNjtuT788MP07t273teQIUNSXl6eRYsWZfXq1enevXtuuOGG3Hnnnftc64ABAzJ//vzMmjUrPXv2zJIlS3LDDTekoqKibk5FRUWqq6szceLEPPTQQzn33HPTrVu3jB07NgMGDMjixYt3e42ePXtm1qxZmTlzZrp3755HHnkkM2bM2Gle8+bNM3HixFx66aUZMGBAWrRokUcffXSf7wkAduWFF17YaU19+OGH92qN2pOJEydm+PDhufzyy9O/f/+0aNEigwcPrreefvWrX80rr7ySgQMHZtKkSenZs2f69u2bOXPmZPz48bn11lt3e43vf//7+e53v5thw4alX79+2bx5c0aPHr3TvAsvvDBdunTJeeedl2HDhuXb3/52pk6dus/3BAAHkz65Pn0yAA1NjwwcSmWlffmABYAGdNVVV2XdunX553/+58N2zQULFmTs2LHZsmXLYbsmABwqtbW16datWy6++OI9NvMH04gRI7Jly5Y9/jIeANg3+mQA2H96ZDj6eJU6cMS66667MmjQoFRWVubpp5/OwoUL9/jqOgDg//3Xf/1Xli5dmvPPPz/bt2/Pvffem9/97ne59NJLG7o0AGA/6JMBYP/pkQHBOHDEWrlyZe6444588MEH6dSpU2bPnp2/+qu/auiyAKDRKC8vz4IFCzJ+/PiUSqV07949zz33XLp169bQpQEA+0GfDAD7T48MeJU6AAAAAAAAAIVW3tAFAAAAAAAAAMChJBgHAAAAAAAAoNAE4wAAAAAAAAAUmmAcAAAAAAAAgEITjAMAAAAAAABQaIJxAGCflJWVZfHixQd0jhEjRmTo0KEHpR4AAABoKHpkAGg8BOMAQD0bN27Mtddem06dOqVZs2Zp3759hgwZkurq6oN2jXvuuScLFiw4aOcDAACAQ0GPDADF0bShCwAAjhzr16/PgAED0rp169x55505/fTT88knn+SZZ57JNddck3Xr1h2U67Rq1eqgnAcAAAAOFT0yABSLJ8YBgDqjR49OWVlZVq5cme9973s5+eSTc9ppp2XcuHF58cUX6+a98847ueiii9K8efN06dIlf/d3f1e3r6amJqNGjUrHjh1z3HHH5ZRTTsk999xT7zqffU3cBRdckOuuuy4TJkxImzZt0q5du0ydOvVQ3y4AAAB8Lj0yABSLYBwASJK8++67WbJkSa655ppUVlbutL9169Z130+bNi0XX3xx/v3f/z1//ud/nssuuyzvvvtukqS2tjZf/vKX8/jjj+fXv/51Jk+enJtuuimPPfbYbq+/cOHCVFZWZsWKFbnjjjtyyy235Nlnnz2o9wgAAAB7Q48MAMUjGAcAkiS//e1vUyqV0rVr1z3OHTFiRIYPH57OnTtn+vTp+fDDD7Ny5cokyTHHHJNp06alb9++6dixYy677LKMHDlyj01/jx49MmXKlHTp0iWXX355+vbte1A/sw0AAAD2lh4ZAIrHZ4wDAEmSUqm013N79OhR931lZWVatmyZt956q25s7ty5efDBB7Nhw4Z8/PHH2bFjR3r16rXX50ySE088sd45AQAA4HDRIwNA8XhiHABIknTp0iVlZWVZt27dHucec8wx9bbLyspSW1ubJFm0aFHGjx+fUaNGZenSpVmzZk1GjhyZHTt27Pc5AQAA4HDSIwNA8QjGAYAkSZs2bTJ48ODMnTs327Zt22n/li1b9uo8y5YtyznnnJPRo0end+/e6dy5c954442DXC0AAAAcOnpkACgewTgAUGfu3LmpqanJWWedlSeeeCKvv/561q5dm9mzZ6d///57dY4uXbpk1apVeeaZZ/Kb3/wmP/zhD/PSSy8d4soBAADg4NIjA0CxCMYBgDqdOnXKyy+/nK9//ev5wQ9+kO7du2fQoEGprq7OvHnz9uoc3//+9/Pd7343w4YNS79+/bJ58+aMHj36EFcOAAAAB5ceGQCKpaxUKpUauggAAAAAAAAAOFQ8MQ4AAAAAAABAoQnGAQAAAAAAACg0wTgAAAAAAAAAhSYYBwAAAAAAAKDQBOMAAAAAAAAAFJpgHAAAAAAAAIBCE4wDAAAAAAAAUGiCcQAAAAAAAAAKTTAOAAAAAAAAQKEJxgEAAAAAAAAoNME4AAAAAAAAAIX2fzQA0BrNzT3TAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "def plt_combined_bar_graph(df, fraction_fields, error_fields, titles, ylabels):\n", + " \"\"\"\n", + " Plot bar graphs with error bars for specified fields in the provided DataFrame as subplots.\n", + "\n", + " Args:\n", + " df (pd.DataFrame): The DataFrame containing the data to be plotted.\n", + " fraction_fields (list[str]): List of column names in the DataFrame to be plotted on the y-axis for fractions.\n", + " error_fields (list[str]): List of column names in the DataFrame to be plotted for standard errors.\n", + " titles (list[str]): Titles of the plots.\n", + " ylabels (list[str]): Labels for the y-axis.\n", + "\n", + " This function does not return any value but displays the bar graph.\n", + " \"\"\"\n", + " n = len(fraction_fields) # Number of plots to create\n", + " fig, axs = plt.subplots(1, n, figsize=(10 * n, 9), sharey=True)\n", + " \n", + " for i, (fraction_field, error_field, title, ylabel) in enumerate(zip(fraction_fields, error_fields, titles, ylabels)):\n", + " barplot = sns.barplot(\n", + " x=\"chain\",\n", + " y=fraction_field,\n", + " data=df.sort_values(\"chain\", ascending=False), # Sort the DataFrame to reverse the order\n", + " ax=axs[i],\n", + " capsize=0.1,\n", + " errorbar=None \n", + " )\n", + "\n", + " # Add error bars manually\n", + " for j, bar in enumerate(barplot.patches):\n", + " # Get the error for the current bar\n", + " error = df.sort_values(\"chain\", ascending=False)[error_field].iloc[j]\n", + " # Add error bars to each bar\n", + " axs[i].errorbar(\n", + " x=bar.get_x() + bar.get_width() / 2,\n", + " y=bar.get_height(),\n", + " yerr=error,\n", + " fmt='none',\n", + " capsize=5,\n", + " color='black'\n", + " )\n", + "\n", + " axs[i].set_title(title)\n", + " axs[i].set_xlabel(\"Chain\")\n", + " axs[i].set_ylabel(ylabel)\n", + "\n", + " plt.tight_layout()\n", + " plt.show()\n", + "\n", + "# Define the columns and labels for the plots\n", + "fraction_fields = [\"Fraction Imports Correct\", \"Fraction Execution Correct\"]\n", + "error_fields = [\"Imports Correct Std Error\", \"Execution Correct Std Error\"]\n", + "\n", + "titles = [\n", + " \"Feedback Check Import Fraction by Chain\",\n", + " \"Feedback Check Execution Fraction by Chain\"\n", + "]\n", + "ylabels = [\"Fraction Correct\", \"Fraction Correct\"]\n", + "\n", + "# Call the function with the specified arguments\n", + "plt_combined_bar_graph(correct_frac_and_errors, fraction_fields, error_fields, titles, ylabels)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "50c26dac-6825-4001-9cb5-4a4691a9685d", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/human-in-the-loop.ipynb b/examples/human-in-the-loop.ipynb new file mode 100644 index 000000000..aaeef496e --- /dev/null +++ b/examples/human-in-the-loop.ipynb @@ -0,0 +1,508 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "51466c8d-8ce4-4b3d-be4e-18fdbeda5f53", + "metadata": {}, + "source": [ + "# Human-in-the-loop\n", + "\n", + "When creating LangGraph agents, it is often nice to add a human in the loop component.\n", + "This can be helpful when giving them access to tools.\n", + "Often in these situations you may want to manually approve an action before taking.\n", + "\n", + "This can be in several ways, but the primary supported way is to add an \"interupt\" before a node is executed.\n", + "This interupts execution at that node.\n", + "You can then resume from that spot to continue." + ] + }, + { + "cell_type": "markdown", + "id": "7cbd446a-808f-4394-be92-d45ab818953c", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "First we need to install the packages required" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "af4ce0ba-7596-4e5f-8bf8-0b0bd6e62833", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.3.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.0\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n" + ] + } + ], + "source": [ + "!pip install --quiet -U langchain langchain_openai tavily-python" + ] + }, + { + "cell_type": "markdown", + "id": "0abe11f4-62ed-4dc4-8875-3db21e260d1d", + "metadata": {}, + "source": [ + "Next, we need to set API keys for OpenAI (the LLM we will use) and Tavily (the search tool we will use)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c903a1cf-2977-4e2d-ad7d-8b3946821d89", + "metadata": {}, + "outputs": [ + { + "name": "stdin", + "output_type": "stream", + "text": [ + "OpenAI API Key: ········\n", + "Tavily API Key: ········\n" + ] + } + ], + "source": [ + "import os\n", + "import getpass\n", + "\n", + "os.environ[\"OPENAI_API_KEY\"] = getpass.getpass(\"OpenAI API Key:\")\n", + "os.environ[\"TAVILY_API_KEY\"] = getpass.getpass(\"Tavily API Key:\")" + ] + }, + { + "cell_type": "markdown", + "id": "f0ed46a8-effe-4596-b0e1-a6a29ee16f5c", + "metadata": {}, + "source": [ + "Optionally, we can set API key for [LangSmith tracing](https://smith.langchain.com/), which will give us best-in-class observability." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "95e25aec-7c9f-4a63-b143-225d0e9a79c3", + "metadata": {}, + "outputs": [], + "source": [ + "os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n", + "os.environ[\"LANGCHAIN_API_KEY\"] = getpass.getpass(\"LangSmith API Key:\")" + ] + }, + { + "cell_type": "markdown", + "id": "21ac643b-cb06-4724-a80c-2862ba4773f1", + "metadata": {}, + "source": [ + "## Set up the tools\n", + "\n", + "We will first define the tools we want to use.\n", + "For this simple example, we will use a built-in search tool via Tavily.\n", + "However, it is really easy to create your own tools - see documentation [here](https://python.langchain.com/docs/modules/agents/tools/custom_tools) on how to do that.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "d7ef57dd-5d6e-4ad3-9377-a92201c1310e", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "\n", + "tools = [TavilySearchResults(max_results=1)]" + ] + }, + { + "cell_type": "markdown", + "id": "01885785-b71a-44d1-b1d6-7b5b14d53b58", + "metadata": {}, + "source": [ + "We can now wrap these tools in a simple ToolExecutor.\n", + "This is a real simple class that takes in a ToolInvocation and calls that tool, returning the output.\n", + "A ToolInvocation is any class with `tool` and `tool_input` attribute.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "5cf3331e-ccb3-41c8-aeb9-a840a94d41e7", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.prebuilt import ToolExecutor\n", + "\n", + "tool_executor = ToolExecutor(tools)" + ] + }, + { + "cell_type": "markdown", + "id": "5497ed70-fce3-47f1-9cad-46f912bad6a5", + "metadata": {}, + "source": [ + "## Set up the model\n", + "\n", + "Now we need to load the chat model we want to use.\n", + "Importantly, this should satisfy two criteria:\n", + "\n", + "1. It should work with messages. We will represent all agent state in the form of messages, so it needs to be able to work well with them.\n", + "2. It should work with OpenAI function calling. This means it should either be an OpenAI model or a model that exposes a similar interface.\n", + "\n", + "Note: these model requirements are not requirements for using LangGraph - they are just requirements for this one example." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "892b54b9-75f0-4804-9ed0-88b5e5532989", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_openai import ChatOpenAI\n", + "\n", + "# We will set streaming=True so that we can stream tokens\n", + "# See the streaming section for more information on this.\n", + "model = ChatOpenAI(temperature=0, streaming=True)" + ] + }, + { + "cell_type": "markdown", + "id": "a77995c0-bae2-4cee-a036-8688a90f05b9", + "metadata": {}, + "source": [ + "\n", + "After we've done this, we should make sure the model knows that it has these tools available to call.\n", + "We can do this by converting the LangChain tools into the format for OpenAI function calling, and then bind them to the model class.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "cd3cbae5-d92c-4559-a4aa-44721b80d107", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.utils.function_calling import convert_to_openai_function\n", + "\n", + "functions = [convert_to_openai_function(t) for t in tools]\n", + "model = model.bind_functions(functions)" + ] + }, + { + "cell_type": "markdown", + "id": "e03c5094-9297-4d19-a04e-3eedc75cefb4", + "metadata": {}, + "source": [ + "## Define the nodes\n", + "\n", + "We now need to define a few different nodes in our graph.\n", + "In `langgraph`, a node can be either a function or a [runnable](https://python.langchain.com/docs/expression_language/).\n", + "There are two main nodes we need for this:\n", + "\n", + "1. The agent: responsible for deciding what (if any) actions to take.\n", + "2. A function to invoke tools: if the agent decides to take an action, this node will then execute that action.\n", + "\n", + "We will also need to define some edges.\n", + "Some of these edges may be conditional.\n", + "The reason they are conditional is that based on the output of a node, one of several paths may be taken.\n", + "The path that is taken is not known until that node is run (the LLM decides).\n", + "\n", + "1. Conditional Edge: after the agent is called, we should either:\n", + " a. If the agent said to take an action, then the function to invoke tools should be called\n", + " b. If the agent said that it was finished, then it should finish\n", + "2. Normal Edge: after the tools are invoked, it should always go back to the agent to decide what to do next\n", + "\n", + "Let's define the nodes, as well as a function to decide how what conditional edge to take." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "3b541bb9-900c-40d0-964d-7b5dfee30667", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.prebuilt import ToolInvocation\n", + "import json\n", + "from langchain_core.messages import FunctionMessage\n", + "\n", + "\n", + "# Define the function that determines whether to continue or not\n", + "def should_continue(messages):\n", + " last_message = messages[-1]\n", + " # If there is no function call, then we finish\n", + " if \"function_call\" not in last_message.additional_kwargs:\n", + " return \"end\"\n", + " # Otherwise if there is, we continue\n", + " else:\n", + " return \"continue\"\n", + "\n", + "\n", + "# Define the function that calls the model\n", + "def call_model(messages):\n", + " response = model.invoke(messages)\n", + " # We return a list, because this will get added to the existing list\n", + " return response\n", + "\n", + "\n", + "# Define the function to execute tools\n", + "def call_tool(messages):\n", + " # Based on the continue condition\n", + " # we know the last message involves a function call\n", + " last_message = messages[-1]\n", + " # We construct an ToolInvocation from the function_call\n", + " action = ToolInvocation(\n", + " tool=last_message.additional_kwargs[\"function_call\"][\"name\"],\n", + " tool_input=json.loads(\n", + " last_message.additional_kwargs[\"function_call\"][\"arguments\"]\n", + " ),\n", + " )\n", + " # We call the tool_executor and get back a response\n", + " response = tool_executor.invoke(action)\n", + " # We use the response to create a FunctionMessage\n", + " function_message = FunctionMessage(content=str(response), name=action.tool)\n", + " # We return a list, because this will get added to the existing list\n", + " return function_message" + ] + }, + { + "cell_type": "markdown", + "id": "ffd6e892-946c-4899-8cc0-7c9291c1f73b", + "metadata": {}, + "source": [ + "## Define the graph\n", + "\n", + "We can now put it all together and define the graph!" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "812b4e70-4956-4415-8880-db48b3dcbad2", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import MessageGraph, END\n", + "\n", + "# Define a new graph\n", + "workflow = MessageGraph()\n", + "\n", + "# Define the two nodes we will cycle between\n", + "workflow.add_node(\"agent\", call_model)\n", + "workflow.add_node(\"action\", call_tool)\n", + "\n", + "# Set the entrypoint as `agent`\n", + "# This means that this node is the first one called\n", + "workflow.set_entry_point(\"agent\")\n", + "\n", + "# We now add a conditional edge\n", + "workflow.add_conditional_edges(\n", + " # First, we define the start node. We use `agent`.\n", + " # This means these are the edges taken after the `agent` node is called.\n", + " \"agent\",\n", + " # Next, we pass in the function that will determine which node is called next.\n", + " should_continue,\n", + " # Finally we pass in a mapping.\n", + " # The keys are strings, and the values are other nodes.\n", + " # END is a special node marking that the graph should finish.\n", + " # What will happen is we will call `should_continue`, and then the output of that\n", + " # will be matched against the keys in this mapping.\n", + " # Based on which one it matches, that node will then be called.\n", + " {\n", + " # If `tools`, then we call the tool node.\n", + " \"continue\": \"action\",\n", + " # Otherwise we finish.\n", + " \"end\": END,\n", + " },\n", + ")\n", + "\n", + "# We now add a normal edge from `tools` to `agent`.\n", + "# This means that after `tools` is called, `agent` node is called next.\n", + "workflow.add_edge(\"action\", \"agent\")" + ] + }, + { + "cell_type": "markdown", + "id": "bc9c8536-f90b-44fa-958d-5df016c66d8f", + "metadata": {}, + "source": [ + "**Persistence**\n", + "\n", + "To add in persistence, we pass in a checkpoint when compiling the graph" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "6845ed6a-d155-4105-9160-28849877248b", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.checkpoint.sqlite import SqliteSaver\n", + "\n", + "memory = SqliteSaver.from_conn_string(\":memory:\")" + ] + }, + { + "cell_type": "markdown", + "id": "cc7fa795-b3f8-4731-b37e-db7a802558ac", + "metadata": {}, + "source": [ + "**Interrupt**\n", + "\n", + "To always interrupt before a particular node, pass the name of the node to compile." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "79d29875-8aa8-434c-9f20-1c58346a6249", + "metadata": {}, + "outputs": [], + "source": [ + "# Finally, we compile it!\n", + "# This compiles it into a LangChain Runnable,\n", + "# meaning you can use it as you would any other runnable\n", + "app = workflow.compile(checkpointer=memory, interrupt_before=[\"action\"])" + ] + }, + { + "cell_type": "markdown", + "id": "2a1b56c5-bd61-4192-8bdb-458a1e9f0159", + "metadata": {}, + "source": [ + "## Interacting with the Agent\n", + "\n", + "We can now interact with the agent and see that it stops before calling a tool.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "cfd140f0-a5a6-4697-8115-322242f197b5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "content='Hello Bob! How can I assist you today?'\n" + ] + } + ], + "source": [ + "from langchain_core.messages import HumanMessage\n", + "\n", + "inputs = [HumanMessage(content=\"hi! I'm bob\")]\n", + "for event in app.stream(inputs, {\"configurable\": {\"thread_id\": \"2\"}}):\n", + " for k, v in event.items():\n", + " if k != \"__end__\":\n", + " print(v)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "08ae8246-11d5-40e1-8567-361e5bef8917", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "content='Your name is Bob.'\n" + ] + } + ], + "source": [ + "inputs = [HumanMessage(content=\"what is my name?\")]\n", + "for event in app.stream(inputs, {\"configurable\": {\"thread_id\": \"2\"}}):\n", + " for k, v in event.items():\n", + " if k != \"__end__\":\n", + " print(v)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "273d56a8-f40f-4a51-a27f-7c6bb2bda0ba", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "content='' additional_kwargs={'function_call': {'arguments': '{\\n \"query\": \"weather in San Francisco now\"\\n}', 'name': 'tavily_search_results_json'}}\n" + ] + } + ], + "source": [ + "inputs = [HumanMessage(content=\"what's the weather in sf now?\")]\n", + "for event in app.stream(inputs, {\"configurable\": {\"thread_id\": \"2\"}}):\n", + " for k, v in event.items():\n", + " if k != \"__end__\":\n", + " print(v)" + ] + }, + { + "cell_type": "markdown", + "id": "1bca3814-db08-4b0b-8c0c-95b6c5440c81", + "metadata": {}, + "source": [ + "**Resume**\n", + "\n", + "We can now call the agent again with no inputs to continue, ie. run the tool as requested." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "51923913-20f7-4ee1-b9ba-d01f5fb2869b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "content='[{\\'url\\': \\'https://www.sfexaminer.com/news/climate/san-francisco-weather-forecast-calls-for-strongest-2024-rain/article_75347810-bfc3-11ee-abf6-e74c528e0583.html\\', \\'content\\': \"San Francisco is projected to receive 2.5 and 3 inches of rain, Clouser said, as well as gusts of wind up to 45 mph. Bay Area starting Wednesday at 4 a.m. and a 24-hour wind advisory in San Francisco starting at the same time. One of winter\\'s \\'stronger\\' storms to douse San Francisco On the heels of record-breaking heat to open the week, heavy rain is slated to pound the Bay Area on Wednesday.A series of historic storms last winter led to one of the wettest water years (Oct. 1 to Sept. 30) in The City\\'s history, highlighted by a 10-day stretch last January in which San Francisco...\"}]' name='tavily_search_results_json'\n", + "content=\"Currently, I couldn't retrieve the exact weather information for San Francisco. However, there is a forecast of heavy rain and gusts of wind up to 45 mph in San Francisco starting Wednesday at 4 a.m. You may want to check a reliable weather website or app for the most up-to-date weather conditions.\"\n" + ] + } + ], + "source": [ + "for event in app.stream(None, {\"configurable\": {\"thread_id\": \"2\"}}):\n", + " for k, v in event.items():\n", + " if k != \"__end__\":\n", + " print(v)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/lats/img/lats.png b/examples/lats/img/lats.png new file mode 100644 index 000000000..79e96a304 Binary files /dev/null and b/examples/lats/img/lats.png differ diff --git a/examples/lats/img/tree.png b/examples/lats/img/tree.png new file mode 100644 index 000000000..6b3dd0c02 Binary files /dev/null and b/examples/lats/img/tree.png differ diff --git a/examples/lats/lats.ipynb b/examples/lats/lats.ipynb new file mode 100644 index 000000000..bac0515b8 --- /dev/null +++ b/examples/lats/lats.ipynb @@ -0,0 +1,837 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9e0c1743-8775-4de2-a599-78b050551489", + "metadata": {}, + "source": [ + "# Language Agent Tree Search\n", + "\n", + "[Language Agent Tree Search](https://andyz245.github.io/LanguageAgentTreeSearch/) (LATS), by Zhou, et. al, is a general LLM agent search algorithm that combines reflection/evaluation and search (specifically monte-carlo trees search) to get achieve better overall task performance compared to similar techniques like ReACT, Reflexion, or Tree of Thoughts.\n", + "\n", + "![LATS diagram](./img/lats.png)\n", + "\n", + "It has four main steps:\n", + "\n", + "1. Select: pick the best next actions based on the aggreate rewards from step (2). Either respond (if a solution is found or the max search depth is reached) or continue searching.\n", + "2. Expand and simulate: select the \"best\" 5 potential actions to take and execute them in parallel.\n", + "3. Reflect + Evaluate: observe the outcomes of these actions and score the decisions based on reflection (and possibly external feedback)\n", + "4. Backpropagate: update the scores of the root trajectories based on the outcomes." + ] + }, + { + "cell_type": "markdown", + "id": "db28668b-5491-4c93-a961-bd339f09202c", + "metadata": {}, + "source": [ + "## 0. Prerequisites\n", + "\n", + "Install `langgraph` (for the framework), `langchain_openai` (for the LLM), and `langchain` + `tavily-python` (for the search engine).\n", + "\n", + "We will use tavily search as a tool. You can get an API key [here](https://app.tavily.com/sign-in) or replace with a different tool of your choosing." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dcc9159b-cc8c-426d-9670-3e8ada06723f", + "metadata": {}, + "outputs": [], + "source": [ + "# %pip install -U --quiet langchain langgraph langchain_openai\n", + "# %pip install -U --quiet tavily-python" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "a177ecc9-0c96-460f-9b39-9c1ce54754f1", + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "import os\n", + "\n", + "\n", + "def _set_if_undefined(var: str) -> None:\n", + " if os.environ.get(var):\n", + " return\n", + " os.environ[var] = getpass.getpass(var)\n", + "\n", + "\n", + "# Optional: Configure tracing to visualize and debug the agent\n", + "_set_if_undefined(\"LANGCHAIN_API_KEY\")\n", + "os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n", + "os.environ[\"LANGCHAIN_PROJECT\"] = \"LATS\"\n", + "\n", + "_set_if_undefined(\"OPENAI_API_KEY\")\n", + "_set_if_undefined(\"TAVILY_API_KEY\")" + ] + }, + { + "cell_type": "markdown", + "id": "f857eacb-af4a-47d1-b45f-da74941125c2", + "metadata": {}, + "source": [ + "## Graph State\n", + "\n", + "LATS is based on a (greedy) Monte-Carlo tree search. For each search steps, it picks the node with the highest \"upper confidence bound\", which is a metric that balances exploitation (highest average reward) and exploration (lowest visits). Starting from that node, it generates N (5 in this case) new candidate actions to take, and adds them to the tree. It stops searching either when it has generated a valid solution OR when it has reached the maximum number of rollouts (search tree depth).\n", + "\n", + "![Tree Diagram](./img/tree.png)\n", + "\n", + "Our LangGraph state will be composed of two items:\n", + "1. The root of the search tree\n", + "2. The user input" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "54c6f319-3966-4f66-aa7b-50e249189111", + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import annotations\n", + "\n", + "import math\n", + "from typing import List, Optional\n", + "\n", + "from langchain_core.messages import AIMessage, BaseMessage, HumanMessage, ToolMessage\n", + "\n", + "\n", + "class Node:\n", + " def __init__(\n", + " self,\n", + " messages: List[BaseMessage],\n", + " reflection: Reflection,\n", + " parent: Optional[Node] = None,\n", + " ):\n", + " self.messages = messages\n", + " self.parent = parent\n", + " self.children = []\n", + " self.value = 0\n", + " self.visits = 0\n", + " self.reflection = reflection\n", + " self.depth = parent.depth + 1 if parent is not None else 1\n", + " self._is_solved = reflection.found_solution if reflection else False\n", + " if self._is_solved:\n", + " self._mark_tree_as_solved()\n", + " self.backpropagate(reflection.normalized_score)\n", + "\n", + " def __repr__(self) -> str:\n", + " return (\n", + " f\"\"\n", + " )\n", + "\n", + " @property\n", + " def is_solved(self):\n", + " \"\"\"If any solutions exist, we can end the search.\"\"\"\n", + " return self._is_solved\n", + "\n", + " @property\n", + " def is_terminal(self):\n", + " return not self.children\n", + "\n", + " @property\n", + " def best_child(self):\n", + " \"\"\"Select the child with the highest UCT to search next.\"\"\"\n", + " if not self.children:\n", + " return None\n", + " return max(self.children, key=lambda child: child.upper_confidence_bound())\n", + "\n", + " @property\n", + " def best_child_score(self):\n", + " \"\"\"Return the child with the highest value.\"\"\"\n", + " if not self.children:\n", + " return None\n", + " return max(self.children, key=lambda child: int(child.is_solved) * child.value)\n", + "\n", + " @property\n", + " def height(self) -> int:\n", + " \"\"\"Check for how far we've rolled out the tree.\"\"\"\n", + " if self.children:\n", + " return 1 + max([child.height for child in self.children])\n", + " return 1\n", + "\n", + " def upper_confidence_bound(self, exploration_weight=1.0):\n", + " \"\"\"Return the UCT score. This helps balance exploration vs. exploitation of a branch.\"\"\"\n", + " if self.parent is None:\n", + " raise ValueError(\"Cannot obtain UCT from root node\")\n", + " if self.visits == 0:\n", + " return self.value\n", + " # Encourages exploitation of high-value trajectories\n", + " average_reward = self.value / self.visits\n", + " # Encourages exploration of less-visited trajectories\n", + " exploration_term = math.sqrt(math.log(self.parent.visits) / self.visits)\n", + " return average_reward + exploration_weight * exploration_term\n", + "\n", + " def backpropagate(self, reward: float):\n", + " \"\"\"Update the score of this node and its parents.\"\"\"\n", + " node = self\n", + " while node:\n", + " node.visits += 1\n", + " node.value = (node.value * (node.visits - 1) + reward) / node.visits\n", + " node = node.parent\n", + "\n", + " def get_messages(self, include_reflections: bool = True):\n", + " if include_reflections:\n", + " return self.messages + [self.reflection.as_message()]\n", + " return self.messages\n", + "\n", + " def get_trajectory(self, include_reflections: bool = True) -> List[BaseMessage]:\n", + " \"\"\"Get messages representing this search branch.\"\"\"\n", + " messages = []\n", + " node = self\n", + " while node:\n", + " messages.extend(\n", + " node.get_messages(include_reflections=include_reflections)[::-1]\n", + " )\n", + " node = node.parent\n", + " # Reverse the final back-tracked trajectory to return in the correct order\n", + " return messages[::-1] # root solution, reflection, child 1, ...\n", + "\n", + " def get_best_solution(self):\n", + " \"\"\"Return the best solution from within the current sub-tree.\"\"\"\n", + " all_nodes = [self]\n", + " nodes = deque()\n", + " nodes.append(self)\n", + " while nodes:\n", + " node = nodes.popleft()\n", + " all_nodes.extend(node.children)\n", + " for n in node.children:\n", + " nodes.append(n)\n", + " best_node = max(\n", + " all_nodes,\n", + " # We filter out all non-terminal, non-solution trajectories\n", + " key=lambda node: int(node.is_terminal and node.is_solved) * node.value,\n", + " )\n", + " return best_node\n", + "\n", + " def _mark_tree_as_solved(self):\n", + " parent = self.parent\n", + " while parent:\n", + " parent._is_solved = True\n", + " parent = parent.parent" + ] + }, + { + "cell_type": "markdown", + "id": "cdd3111f-b860-471f-8784-1d5e3783910d", + "metadata": {}, + "source": [ + "#### The graph state itself\n", + "\n", + "The main component is the tree, represented by the root node." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "e10c94ba-9daa-4899-97ce-4f28428c2c38", + "metadata": {}, + "outputs": [], + "source": [ + "from typing_extensions import TypedDict\n", + "\n", + "\n", + "class TreeState(TypedDict):\n", + " # The full tree\n", + " root: Node\n", + " # The original input\n", + " input: str" + ] + }, + { + "cell_type": "markdown", + "id": "2e8ddf25-d040-4e1f-87bd-5837ff105845", + "metadata": {}, + "source": [ + "## Define Language Agent\n", + "\n", + "Our agent will have three primary LLM-powered processes:\n", + "1. Reflect: score the action based on the tool response.\n", + "2. Initial response: to create the root node and start the search.\n", + "3. Expand: generate 5 candidate \"next steps\" from the best spot in the current tree\n", + "\n", + "For more \"Grounded\" tool applications (such as code synthesis), you could integrate code execution into the reflection/reward step. This type of external feedback is very useful (though adds complexity to an already complicated example notebook)." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "48738896-42ac-47eb-b482-0d4d4dd86c87", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_openai import ChatOpenAI\n", + "\n", + "llm = ChatOpenAI(model=\"gpt-3.5-turbo\")" + ] + }, + { + "cell_type": "markdown", + "id": "5d460856-e26d-4430-910e-0aac58563612", + "metadata": {}, + "source": [ + "#### Tools\n", + "\n", + "For our example, we will give the language agent a search engine." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "55c2aff3-f454-43da-8f45-1a3d46523cd5", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langchain_community.utilities.tavily_search import TavilySearchAPIWrapper\n", + "\n", + "from langgraph.prebuilt.tool_executor import ToolExecutor, ToolInvocation\n", + "\n", + "search = TavilySearchAPIWrapper()\n", + "tavily_tool = TavilySearchResults(api_wrapper=search, max_results=5)\n", + "tools = [tavily_tool]\n", + "tool_executor = ToolExecutor(tools=tools)" + ] + }, + { + "cell_type": "markdown", + "id": "1c611f1e-74b4-4157-997c-face8ad409a4", + "metadata": {}, + "source": [ + "### Reflection\n", + "\n", + "The reflection chain will score agent outputs based on the decision and the tool responses.\n", + "We will call this within the other two nodes." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "ddfd1750-c265-4b29-b505-83b1c5e2d30e", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.chains import create_structured_output_runnable\n", + "from langchain.output_parsers.openai_tools import (\n", + " JsonOutputToolsParser,\n", + " PydanticToolsParser,\n", + ")\n", + "from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder\n", + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "from langchain_core.runnables import chain as as_runnable\n", + "\n", + "\n", + "class Reflection(BaseModel):\n", + " reflections: str = Field(\n", + " description=\"The critique and reflections on the sufficiency, superfluency,\"\n", + " \" and general quality of the response\"\n", + " )\n", + " score: int = Field(\n", + " description=\"Score from 0-10 on the quality of the candidate response.\",\n", + " gte=0,\n", + " lte=10,\n", + " )\n", + " found_solution: bool = Field(\n", + " description=\"Whether the response has fully solved the question or task.\"\n", + " )\n", + "\n", + " def as_message(self):\n", + " return HumanMessage(\n", + " content=f\"Reasoning: {self.reflections}\\nScore: {self.score}\"\n", + " )\n", + "\n", + " @property\n", + " def normalized_score(self) -> float:\n", + " return self.score / 10.0\n", + "\n", + "\n", + "prompt = ChatPromptTemplate.from_messages(\n", + " [\n", + " (\n", + " \"system\",\n", + " \"Reflect and grade the assistant response to the user question below.\",\n", + " ),\n", + " (\"user\", \"{input}\"),\n", + " MessagesPlaceholder(variable_name=\"candidate\"),\n", + " ]\n", + ")\n", + "\n", + "reflection_llm_chain = (\n", + " prompt\n", + " | llm.bind_tools(tools=[Reflection], tool_choice=\"Reflection\").with_config(\n", + " run_name=\"Reflection\"\n", + " )\n", + " | PydanticToolsParser(tools=[Reflection])\n", + ")\n", + "\n", + "\n", + "@as_runnable\n", + "def reflection_chain(inputs) -> Reflection:\n", + " tool_choices = reflection_llm_chain.invoke(inputs)\n", + " reflection = tool_choices[0]\n", + " if not isinstance(inputs[\"candidate\"][-1], AIMessage):\n", + " reflection.found_solution = False\n", + " return reflection" + ] + }, + { + "cell_type": "markdown", + "id": "4e47dfb2-4ab3-4a31-b117-f07786b357cb", + "metadata": {}, + "source": [ + "### Initial Response\n", + "\n", + "We start with a single root node, generated by this first step. It responds to the user input either with a tool invocation or a response." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "72fc5363-f0f3-4362-8499-14eb583bd75b", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import List\n", + "\n", + "from langchain_core.prompt_values import ChatPromptValue\n", + "from langchain_core.pydantic_v1 import BaseModel, Field, ValidationError\n", + "from langchain_core.runnables import RunnableConfig\n", + "\n", + "prompt_template = ChatPromptTemplate.from_messages(\n", + " [\n", + " (\n", + " \"system\",\n", + " \"You are an AI assistant.\",\n", + " ),\n", + " (\"user\", \"{input}\"),\n", + " MessagesPlaceholder(variable_name=\"messages\", optional=True),\n", + " ]\n", + ")\n", + "\n", + "\n", + "initial_answer_chain = prompt_template | llm.bind_tools(tools=tools).with_config(\n", + " run_name=\"GenerateInitialCandidate\"\n", + ")\n", + "\n", + "\n", + "parser = JsonOutputToolsParser(return_id=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "7207f913-a6db-4ef9-a98d-ecb8612b23d5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_APBQsd15wnSNPhyghCvFrNC8', 'function': {'arguments': '{\"query\":\"lithium pollution research report\"}', 'name': 'tavily_search_results_json'}, 'type': 'function'}]})" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "initial_response = initial_answer_chain.invoke(\n", + " {\"input\": \"Write a research report on lithium pollution.\"}\n", + ")\n", + "initial_response" + ] + }, + { + "cell_type": "markdown", + "id": "7a7d34a6-cee0-4321-989a-963ca4b2caeb", + "metadata": {}, + "source": [ + "#### Starting Node\n", + "\n", + "We will package up the candidate generation and reflection in a single node of our graph. This is represented by the following function:" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "5b6b173c-78f5-4ae1-80b3-28c80e68f5c5", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "\n", + "\n", + "# Define the node we will add to the graph\n", + "def generate_initial_response(state: TreeState) -> dict:\n", + " \"\"\"Generate the initial candidate response.\"\"\"\n", + " res = initial_answer_chain.invoke({\"input\": state[\"input\"]})\n", + " parsed = parser.invoke(res)\n", + " tool_responses = tool_executor.batch(\n", + " [ToolInvocation(tool=r[\"type\"], tool_input=r[\"args\"]) for r in parsed]\n", + " )\n", + " output_messages = [res] + [\n", + " ToolMessage(content=json.dumps(resp), tool_call_id=tool_call[\"id\"])\n", + " for resp, tool_call in zip(tool_responses, parsed)\n", + " ]\n", + " reflection = reflection_chain.invoke(\n", + " {\"input\": state[\"input\"], \"candidate\": output_messages}\n", + " )\n", + " root = Node(output_messages, reflection=reflection)\n", + " return {\n", + " **state,\n", + " \"root\": root,\n", + " }" + ] + }, + { + "cell_type": "markdown", + "id": "34452e88-e33a-474c-9623-075d1f434dda", + "metadata": {}, + "source": [ + "### Candidate Generation\n", + "\n", + "The following code prompts the same LLM to generate N additional candidates to check." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "550bff9a-86aa-43ad-ad98-506e97c122d2", + "metadata": {}, + "outputs": [], + "source": [ + "# This generates N candidate values\n", + "# for a single input to sample actions from the environment\n", + "\n", + "\n", + "def generate_candidates(messages: ChatPromptValue, config: RunnableConfig):\n", + " n = config[\"configurable\"].get(\"N\", 5)\n", + " bound_kwargs = llm.bind_tools(tools=tools).kwargs\n", + " chat_result = llm.generate(\n", + " [messages.to_messages()],\n", + " n=n,\n", + " callbacks=config[\"callbacks\"],\n", + " run_name=\"GenerateCandidates\",\n", + " **bound_kwargs\n", + " )\n", + " return [gen.message for gen in chat_result.generations[0]]\n", + "\n", + "\n", + "expansion_chain = prompt_template | generate_candidates" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "e368e61f-8150-4fd6-b3fd-208d1f0ddc9c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_5DMq9O6BIden7lLraFH0NuYZ', 'function': {'arguments': '{\"query\":\"lithium pollution research report\"}', 'name': 'tavily_search_results_json'}, 'type': 'function'}]}),\n", + " AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_5DMq9O6BIden7lLraFH0NuYZ', 'function': {'arguments': '{\"query\":\"lithium pollution research report\"}', 'name': 'tavily_search_results_json'}, 'type': 'function'}]}),\n", + " AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_5DMq9O6BIden7lLraFH0NuYZ', 'function': {'arguments': '{\"query\":\"lithium pollution research report\"}', 'name': 'tavily_search_results_json'}, 'type': 'function'}]}),\n", + " AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_5DMq9O6BIden7lLraFH0NuYZ', 'function': {'arguments': '{\"query\":\"lithium pollution research report\"}', 'name': 'tavily_search_results_json'}, 'type': 'function'}]}),\n", + " AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_5DMq9O6BIden7lLraFH0NuYZ', 'function': {'arguments': '{\"query\":\"lithium pollution research report\"}', 'name': 'tavily_search_results_json'}, 'type': 'function'}]})]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "res = expansion_chain.invoke({\"input\": \"Write a research report on lithium pollution.\"})\n", + "res" + ] + }, + { + "cell_type": "markdown", + "id": "88ecf775-29ed-4ebd-8297-d1aa3cda3f9b", + "metadata": {}, + "source": [ + "#### Candidate generation node\n", + "\n", + "We will package the candidate generation and reflection steps in the following \"expand\" node.\n", + "We do all the operations as a batch process to speed up execution." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "d32af859-53e8-46be-8182-7d522be31f54", + "metadata": {}, + "outputs": [], + "source": [ + "from collections import defaultdict, deque\n", + "\n", + "\n", + "def expand(state: TreeState, config: RunnableConfig) -> dict:\n", + " \"\"\"Starting from the \"best\" node in the tree, generate N candidates for the next step.\"\"\"\n", + " root = state[\"root\"]\n", + " best_candidate: Node = root.best_child if root.children else root\n", + " messages = best_candidate.get_trajectory()\n", + " # Generate N candidates from the single child candidate\n", + " new_candidates = expansion_chain.invoke(\n", + " {\"input\": state[\"input\"], \"messages\": messages}, config\n", + " )\n", + " parsed = parser.batch(new_candidates)\n", + " flattened = [\n", + " (i, tool_call)\n", + " for i, tool_calls in enumerate(parsed)\n", + " for tool_call in tool_calls\n", + " ]\n", + " tool_responses = tool_executor.batch(\n", + " [\n", + " ToolInvocation(tool=tool_call[\"type\"], tool_input=tool_call[\"args\"])\n", + " for _, tool_call in flattened\n", + " ]\n", + " )\n", + " collected_responses = defaultdict(list)\n", + " for (i, tool_call), resp in zip(flattened, tool_responses):\n", + " collected_responses[i].append(\n", + " ToolMessage(content=json.dumps(resp), tool_call_id=tool_call[\"id\"])\n", + " )\n", + " output_messages = []\n", + " for i, candidate in enumerate(new_candidates):\n", + " output_messages.append([candidate] + collected_responses[i])\n", + "\n", + " # Reflect on each candidate\n", + " # For tasks with external validation, you'd add that here.\n", + " reflections = reflection_chain.batch(\n", + " [{\"input\": state[\"input\"], \"candidate\": msges} for msges in output_messages],\n", + " config,\n", + " )\n", + " # Grow tree\n", + " child_nodes = [\n", + " Node(cand, parent=best_candidate, reflection=reflection)\n", + " for cand, reflection in zip(output_messages, reflections)\n", + " ]\n", + " best_candidate.children.extend(child_nodes)\n", + " # We have already extended the tree directly, so we just return the state\n", + " return state" + ] + }, + { + "cell_type": "markdown", + "id": "84bad5da-645d-4c6a-83dd-8c852f21f622", + "metadata": {}, + "source": [ + "## Create Graph\n", + "\n", + "With those two nodes defined, we are ready to define the graph. After each agent step, we have the option of finishing." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "8aec0f20-f978-4df0-8900-e3a1f0544f6d", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import END, StateGraph\n", + "\n", + "\n", + "def should_loop(state: TreeState):\n", + " \"\"\"Determine whether to continue the tree search.\"\"\"\n", + " root = state[\"root\"]\n", + " if root.is_solved:\n", + " return END\n", + " if root.height > 5:\n", + " return END\n", + " return \"expand\"\n", + "\n", + "\n", + "builder = StateGraph(TreeState)\n", + "builder.add_node(\"start\", generate_initial_response)\n", + "builder.add_node(\"expand\", expand)\n", + "builder.set_entry_point(\"start\")\n", + "\n", + "\n", + "builder.add_conditional_edges(\n", + " \"start\",\n", + " # Either expand/rollout or finish\n", + " should_loop,\n", + ")\n", + "builder.add_conditional_edges(\n", + " \"expand\",\n", + " # Either continue to rollout or finish\n", + " should_loop,\n", + ")\n", + "\n", + "graph = builder.compile()" + ] + }, + { + "cell_type": "markdown", + "id": "1383d69c-1d90-43f5-987e-c7fc4c3a24f8", + "metadata": {}, + "source": [ + "## Invoke" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "92392fb3-8431-4649-9e78-2cc160e96ec1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start\n", + "rolled out: 1\n", + "---\n", + "expand\n", + "rolled out: 2\n", + "---\n", + "expand\n", + "rolled out: 3\n", + "---\n", + "__end__\n", + "rolled out: 3\n", + "---\n" + ] + } + ], + "source": [ + "question = \"Generate a table with the average size and weight, as well as the oldest recorded instance for each of the top 5 most common birds.\"\n", + "for step in graph.stream({\"input\": question}):\n", + " step_name, step_state = next(iter(step.items()))\n", + " print(step_name)\n", + " print(\"rolled out: \", step_state[\"root\"].height)\n", + " print(\"---\")" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "37a9e785-9909-4b56-b9be-da484e3711e1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The search results have provided detailed information on the average size and weight, as well as the oldest recorded instance for each of the top 5 most common birds: Northern Cardinal, Dark-eyed Junco, Mourning Dove, Downy Woodpecker, and House Finch. Now, I will compile this information into a table format for easy reference. Let's create the table with the average size and weight, as well as the oldest recorded instance for each of these birds.\n", + "Here is the table with the average size and weight, as well as the oldest recorded instance for each of the top 5 most common birds:\n", + "\n", + "| Bird Species | Average Size | Average Weight | Oldest Recorded Instance |\n", + "|---------------------|--------------------|------------------|--------------------------|\n", + "| Northern Cardinal | 21.5 cm (male), 21.25 cm (female) | 42-48 g | 15 years and 9 months |\n", + "| Dark-eyed Junco | 14-16 cm | 18-30 g | At least 11 years, 4 months old |\n", + "| Mourning Dove | 22.5-36 cm | 96-170 g | 19 years |\n", + "| Downy Woodpecker | 14-18 cm | 20-33 g | At least 11 years |\n", + "| House Finch | 13-14 cm | 16-27 g | 8-11 years |\n", + "\n", + "This table summarizes the average size and weight, as well as the oldest recorded instance for each of the top 5 most common birds.\n" + ] + } + ], + "source": [ + "solution_node = step[\"__end__\"][\"root\"].get_best_solution()\n", + "best_trajectory = solution_node.get_trajectory(include_reflections=False)\n", + "print(best_trajectory[-1].content)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "1e084037-42e7-4f8e-962d-aaa3f04ab54c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "start\n", + "rolled out: 1\n", + "---\n", + "expand\n", + "rolled out: 2\n", + "---\n", + "expand\n", + "rolled out: 3\n", + "---\n", + "__end__\n", + "rolled out: 3\n", + "---\n" + ] + } + ], + "source": [ + "question = \"Write out magnus carlson series of moves in his game against Alireza Firouzja and propose an alternate strategy\"\n", + "for step in graph.stream({\"input\": question}):\n", + " step_name, step_state = next(iter(step.items()))\n", + " print(step_name)\n", + " print(\"rolled out: \", step_state[\"root\"].height)\n", + " print(\"---\")" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "d403c1c8-b26b-4d79-87b1-d2d16c1a7673", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "In the game between Magnus Carlsen and Alireza Firouzja, Magnus Carlsen started with the move C4, and Alireza countered with H6. To propose an alternate strategy for Magnus Carlsen, focusing on positional play, creating strong pawn structures, and leveraging his endgame skills could be highly effective. Magnus could aim to control the center, develop his pieces harmoniously, and look for opportunities to gradually improve his position. By maintaining a solid pawn structure and maneuvering his pieces strategically, Magnus could aim to outmaneuver his opponent in the later stages of the game, utilizing his renowned endgame skills to secure a favorable outcome.\n" + ] + } + ], + "source": [ + "solution_node = step[\"__end__\"][\"root\"].get_best_solution()\n", + "best_trajectory = solution_node.get_trajectory(include_reflections=False)\n", + "print(best_trajectory[-1].content)" + ] + }, + { + "cell_type": "markdown", + "id": "f1b5140d-f51e-4032-8bc8-d7153252e3bf", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "Congrats on implementing LATS! This is a technique that can be reasonably ast and effective at solving complex reasoning tasks. A few notes that you probably observed above:\n", + "1. While effective , the tree rollout can take additional compute time. If you wanted to include this in a production app, you'd either want to ensure that intermediate steps are streamed (so the user sees the thinking process/has access to intermediate results) or use it for fine-tuning data to improve the single-shot accuracy and avoid long rollouts.\n", + "2. The candidate selection process is only as good as the reward you generate. Here we are using self-reflection exclusively, but if you have an external source of feedback (such as code test execution), that should be incorporated in the locations mentioned above." + ] + }, + { + "cell_type": "markdown", + "id": "6130dff9-4753-4556-a39e-330ac65ba9c6", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/llm-compiler/LLMCompiler.ipynb b/examples/llm-compiler/LLMCompiler.ipynb new file mode 100644 index 000000000..e77331bda --- /dev/null +++ b/examples/llm-compiler/LLMCompiler.ipynb @@ -0,0 +1,966 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0c8b472b-f3fb-46c2-841f-930a4692697b", + "metadata": {}, + "source": [ + "# LLMCompiler\n", + "\n", + "This notebook shows how to implement [LLMCompiler, by Kim, et. al](https://arxiv.org/abs/2312.04511) in LangGraph.\n", + "\n", + "LLMCompiler is an agent architecture designed to **speed up** the execution of agentic tasks by eagerly-executed tasks within a DAG. It also saves costs on redundant token usage by reducing the number of calls to the LLM. Below is an overview of its computational graph:\n", + "\n", + "![LLMCompiler Graph](./img/llm-compiler.png)\n", + "\n", + "It has 3 main components:\n", + "\n", + "1. Planner: stream a DAG of tasks.\n", + "2. Task Fetching Unit: schedules and executes the tasks as soon as they are executable\n", + "3. Joiner: Responds to the user or triggers a second plan\n", + "\n", + "\n", + "This notebook walks through each component and shows how to wire them together using LangGraph. The end result will leave a trace [like the following](https://smith.langchain.com/public/218c2677-c719-4147-b0e9-7bc3b5bb2623/r).\n", + "\n", + "\n", + "**First,** install the dependencies, and set up LangSmith for tracing to more easily debug and observe the agent." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "16bd5497-35ad-44f2-94d9-19ff39a5ffed", + "metadata": {}, + "outputs": [], + "source": [ + "# %pip install -U --quiet langchain_openai langsmith langgraph langchain numexpr" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "abbd6948-e9a3-47ca-89c7-7ac2fc5eca8b", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import getpass\n", + "\n", + "\n", + "def _get_pass(var: str):\n", + " if var not in os.environ:\n", + " os.environ[var] = getpass.getpass(f\"{var}: \")\n", + "\n", + "\n", + "# Optional: Debug + trace calls using LangSmith\n", + "os.environ[\"LANGCHAIN_TRACING_V2\"] = \"True\"\n", + "os.environ[\"LANGCHAIN_PROJECT\"] = \"LLMCompiler\"\n", + "_get_pass(\"LANGCHAIN_API_KEY\")\n", + "_get_pass(\"OPENAI_API_KEY\")" + ] + }, + { + "cell_type": "markdown", + "id": "a61b48ee-8c6f-4863-913a-676f659287de", + "metadata": {}, + "source": [ + "## Part 1: Tools\n", + "\n", + "We'll first define the tools for the agent to use in our demo. We'll give it the class search engine + calculator combo.\n", + "\n", + "If you don't want to sign up for tavily, you can replace it with the free [DuckDuckGo](https://python.langchain.com/docs/integrations/tools/ddg)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "e7476bb2-1a51-42f6-b7ae-82a0300bbf84", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_openai import ChatOpenAI\n", + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "\n", + "# Imported from the https://github.com/langchain-ai/langgraph/tree/main/examples/plan-and-execute repo\n", + "from math_tools import get_math_tool\n", + "\n", + "_get_pass(\"TAVILY_API_KEY\")\n", + "\n", + "calculate = get_math_tool(ChatOpenAI(model=\"gpt-4-turbo-preview\"))\n", + "search = TavilySearchResults(\n", + " max_results=1,\n", + " description='tavily_search_results_json(query=\"the search query\") - a search engine.',\n", + ")\n", + "\n", + "tools = [search, calculate]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "152eecf3-6bef-4718-af71-a0b3c5a3b009", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'37'" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calculate.invoke(\n", + " {\n", + " \"problem\": \"What's the temp of sf + 5?\",\n", + " \"context\": [\"Thet empreature of sf is 32 degrees\"],\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "1abdedbd-d81b-4ee9-b46f-f29439ed1350", + "metadata": {}, + "source": [ + "# Part 2: Planner\n", + "\n", + "\n", + "Largely adapted from [the original source code](https://github.com/SqueezeAILab/LLMCompiler/blob/main/src/llm_compiler/output_parser.py), the planner accepts the input question and generates a task list to execute.\n", + "\n", + "If it is provided with a previous plan, it is instructed to re-plan, which is useful if, upon completion of the first batch of tasks, the agent must take more actions.\n", + "\n", + "The code below composes constructs the prompt template for the planner and composes it with LLM and output parser, defined in [output_parser.py](./output_parser.py). The output parser processes a task list in the following form:\n", + "\n", + "```plaintext\n", + "1. tool_1(arg1=\"arg1\", arg2=3.5, ...)\n", + "Thought: I then want to find out Y by using tool_2\n", + "2. tool_2(arg1=\"\", arg2=\"${1}\")'\n", + "3. join()\"\n", + "```\n", + "\n", + "The \"Thought\" lines are optional. The `${#}` placeholders are variables. These are used to route tool (task) outputs to other tools." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "15dd9639-691f-4906-9012-83fd6e9ac126", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "================================\u001b[1m System Message \u001b[0m================================\n", + "\n", + "Given a user query, create a plan to solve it with the utmost parallelizability. Each plan should comprise an action from the following \u001b[33;1m\u001b[1;3m{num_tools}\u001b[0m types:\n", + "\u001b[33;1m\u001b[1;3m{tool_descriptions}\u001b[0m\n", + "\u001b[33;1m\u001b[1;3m{num_tools}\u001b[0m. join(): Collects and combines results from prior actions.\n", + "\n", + " - An LLM agent is called upon invoking join() to either finalize the user query or wait until the plans are executed.\n", + " - join should always be the last action in the plan, and will be called in two scenarios:\n", + " (a) if the answer can be determined by gathering the outputs from tasks to generate the final response.\n", + " (b) if the answer cannot be determined in the planning phase before you execute the plans. Guidelines:\n", + " - Each action described above contains input/output types and description.\n", + " - You must strictly adhere to the input and output types for each action.\n", + " - The action descriptions contain the guidelines. You MUST strictly follow those guidelines when you use the actions.\n", + " - Each action in the plan should strictly be one of the above types. Follow the Python conventions for each action.\n", + " - Each action MUST have a unique ID, which is strictly increasing.\n", + " - Inputs for actions can either be constants or outputs from preceding actions. In the latter case, use the format $id to denote the ID of the previous action whose output will be the input.\n", + " - Always call join as the last action in the plan. Say '' after you call join\n", + " - Ensure the plan maximizes parallelizability.\n", + " - Only use the provided action types. If a query cannot be addressed using these, invoke the join action for the next steps.\n", + " - Never introduce new actions other than the ones provided.\n", + "\n", + "=============================\u001b[1m Messages Placeholder \u001b[0m=============================\n", + "\n", + "\u001b[33;1m\u001b[1;3m{messages}\u001b[0m\n", + "\n", + "================================\u001b[1m System Message \u001b[0m================================\n", + "\n", + "Remember, ONLY respond with the task list in the correct format! E.g.:\n", + "idx. tool(arg_name=args)\n", + "None\n" + ] + } + ], + "source": [ + "from typing import Sequence\n", + "\n", + "from langchain_core.language_models import BaseChatModel\n", + "from langchain_core.prompts import ChatPromptTemplate\n", + "from langchain_core.runnables import RunnableBranch\n", + "from langchain_core.tools import BaseTool\n", + "from langchain_core.messages import (\n", + " BaseMessage,\n", + " FunctionMessage,\n", + " HumanMessage,\n", + " SystemMessage,\n", + ")\n", + "\n", + "from output_parser import LLMCompilerPlanParser, Task\n", + "from langchain import hub\n", + "from langchain_openai import ChatOpenAI\n", + "\n", + "\n", + "prompt = hub.pull(\"wfh/llm-compiler\")\n", + "print(prompt.pretty_print())" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "45689d40-d8df-4316-a121-6ea9c87d2efe", + "metadata": {}, + "outputs": [], + "source": [ + "def create_planner(\n", + " llm: BaseChatModel, tools: Sequence[BaseTool], base_prompt: ChatPromptTemplate\n", + "):\n", + " tool_descriptions = \"\\n\".join(\n", + " f\"{i}. {tool.description}\\n\" for i, tool in enumerate(tools)\n", + " )\n", + " planner_prompt = base_prompt.partial(\n", + " replan=\"\",\n", + " num_tools=len(tools),\n", + " tool_descriptions=tool_descriptions,\n", + " )\n", + " replanner_prompt = base_prompt.partial(\n", + " replan=' - You are given \"Previous Plan\" which is the plan that the previous agent created along with the execution results '\n", + " \"(given as Observation) of each plan and a general thought (given as Thought) about the executed results.\"\n", + " 'You MUST use these information to create the next plan under \"Current Plan\".\\n'\n", + " ' - When starting the Current Plan, you should start with \"Thought\" that outlines the strategy for the next plan.\\n'\n", + " \" - In the Current Plan, you should NEVER repeat the actions that are already executed in the Previous Plan.\\n\"\n", + " \" - You must continue the task index from the end of the previous one. Do not repeat task indices.\",\n", + " num_tools=len(tools),\n", + " tool_descriptions=tool_descriptions,\n", + " )\n", + "\n", + " def should_replan(state: list):\n", + " # Context is passed as a system message\n", + " return isinstance(state[-1], SystemMessage)\n", + "\n", + " def wrap_messages(state: list):\n", + " return {\"messages\": state}\n", + "\n", + " def wrap_and_get_last_index(state: list):\n", + " next_task = 0\n", + " for message in state[::-1]:\n", + " if isinstance(message, FunctionMessage):\n", + " next_task = message.additional_kwargs[\"idx\"] + 1\n", + " break\n", + " state[-1].content = state[-1].content + f\" - Begin counting at : {next_task}\"\n", + " return {\"messages\": state}\n", + "\n", + " return (\n", + " RunnableBranch(\n", + " (should_replan, wrap_and_get_last_index | replanner_prompt),\n", + " wrap_messages | planner_prompt,\n", + " )\n", + " | llm\n", + " | LLMCompilerPlanParser(tools=tools)\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "bbdcb57b-5362-4b9e-88db-fb3fae443fb0", + "metadata": {}, + "outputs": [], + "source": [ + "llm = ChatOpenAI(model=\"gpt-4-turbo-preview\")\n", + "# This is the primary \"agent\" in our application\n", + "planner = create_planner(llm, tools, prompt)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "730490c6-6e3a-4173-82a1-9eb9d5eeff20", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "description='tavily_search_results_json(query=\"the search query\") - a search engine.' max_results=1 {'query': 'current temperature in San Francisco'}\n", + "---\n", + "name='math' description='math(problem: str, context: Optional[List[str]] = None, config: Optional[langchain_core.runnables.config.RunnableConfig] = None) - math(problem: str, context: Optional[list[str]]) -> float:\\n - Solves the provided math problem.\\n - `problem` can be either a simple math problem (e.g. \"1 + 3\") or a word problem (e.g. \"how many apples are there if there are 3 apples and 2 apples\").\\n - You cannot calculate multiple expressions in one call. For instance, `math(\\'1 + 3, 2 + 4\\')` does not work. If you need to calculate multiple expressions, you need to call them separately like `math(\\'1 + 3\\')` and then `math(\\'2 + 4\\')`\\n - Minimize the number of `math` actions as much as possible. For instance, instead of calling 2. math(\"what is the 10% of $1\") and then call 3. math(\"$1 + $2\"), you MUST call 2. math(\"what is the 110% of $1\") instead, which will reduce the number of math actions.\\n - You can optionally provide a list of strings as `context` to help the agent solve the problem. If there are multiple contexts you need to answer the question, you can provide them as a list of strings.\\n - `math` action will not see the output of the previous actions unless you provide it as `context`. You MUST provide the output of the previous actions as `context` if you need to do math on it.\\n - You MUST NEVER provide `search` type action\\'s outputs as a variable in the `problem` argument. This is because `search` returns a text blob that contains the information about the entity, not a number or value. Therefore, when you need to provide an output of `search` action, you MUST provide it as a `context` argument to `math` action. For example, 1. search(\"Barack Obama\") and then 2. math(\"age of $1\") is NEVER allowed. Use 2. math(\"age of Barack Obama\", context=[\"$1\"]) instead.\\n - When you ask a question about `context`, specify the units. For instance, \"what is xx in height?\" or \"what is xx in millions?\" instead of \"what is xx?\"' args_schema= func=.calculate_expression at 0x10f354ea0> {'problem': 'raise $0 to the 3rd power', 'context': ['$0']}\n", + "---\n", + "join ()\n", + "---\n" + ] + } + ], + "source": [ + "example_question = \"What's the temperature in SF raised to the 3rd power?\"\n", + "\n", + "for task in planner.stream([HumanMessage(content=example_question)]):\n", + " print(task[\"tool\"], task[\"args\"])\n", + " print(\"---\")" + ] + }, + { + "cell_type": "markdown", + "id": "5d0e795f-61ff-4553-9823-23e7624ca180", + "metadata": {}, + "source": [ + "## 3. Task Fetching Unit\n", + "\n", + "This component schedules the tasks. It receives a stream of tools of the following format:\n", + "\n", + "```typescript\n", + "{\n", + " tool: BaseTool,\n", + " dependencies: number[],\n", + "}\n", + "```\n", + "\n", + "\n", + "The basic idea is to begin executing tools as soon as their dependencies are met. This is done through multi-threading. We will combine the task fetching unit and exector below:\n", + "\n", + "![diagram](./img/diagram.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "c1fbafdd-42d4-4575-8466-e5951cee71f4", + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, + "outputs": [], + "source": [ + "from typing import Any, Union, Iterable, List, Tuple, Dict\n", + "from typing_extensions import TypedDict\n", + "\n", + "from langchain_core.runnables import (\n", + " chain as as_runnable,\n", + ")\n", + "\n", + "from concurrent.futures import ThreadPoolExecutor, wait\n", + "import time\n", + "\n", + "\n", + "def _get_observations(messages: List[BaseMessage]) -> Dict[int, Any]:\n", + " # Get all previous tool responses\n", + " results = {}\n", + " for message in messages[::-1]:\n", + " if isinstance(message, FunctionMessage):\n", + " results[int(message.additional_kwargs[\"idx\"])] = message.content\n", + " return results\n", + "\n", + "\n", + "class SchedulerInput(TypedDict):\n", + " messages: List[BaseMessage]\n", + " tasks: Iterable[Task]\n", + "\n", + "\n", + "def _execute_task(task, observations, config):\n", + " tool_to_use = task[\"tool\"]\n", + " if isinstance(tool_to_use, str):\n", + " return tool_to_use\n", + " args = task[\"args\"]\n", + " try:\n", + " if isinstance(args, str):\n", + " resolved_args = _resolve_arg(args, observations)\n", + " elif isinstance(args, dict):\n", + " resolved_args = {\n", + " key: _resolve_arg(val, observations) for key, val in args.items()\n", + " }\n", + " else:\n", + " # This will likely fail\n", + " resolved_args = args\n", + " except Exception as e:\n", + " return (\n", + " f\"ERROR(Failed to call {tool_to_use.name} with args {args}.)\"\n", + " f\" Args could not be resolved. Error: {repr(e)}\"\n", + " )\n", + " try:\n", + " return tool_to_use.invoke(resolved_args, config)\n", + " except Exception as e:\n", + " return (\n", + " f\"ERROR(Failed to call {tool_to_use.name} with args {args}.\"\n", + " + f\" Args resolved to {resolved_args}. Error: {repr(e)})\"\n", + " )\n", + "\n", + "\n", + "def _resolve_arg(arg: Union[str, Any], observations: Dict[int, Any]):\n", + " if isinstance(arg, str) and arg.startswith(\"$\"):\n", + " try:\n", + " stripped = arg[1:].replace(\".output\", \"\").strip(\"{}\")\n", + " idx = int(stripped)\n", + " except Exception:\n", + " return str(arg)\n", + " return str(observations[idx])\n", + " elif isinstance(arg, list):\n", + " return [_resolve_arg(a, observations) for a in arg]\n", + " else:\n", + " return str(arg)\n", + "\n", + "\n", + "@as_runnable\n", + "def schedule_task(task_inputs, config):\n", + " task: Task = task_inputs[\"task\"]\n", + " observations: Dict[int, Any] = task_inputs[\"observations\"]\n", + " try:\n", + " observation = _execute_task(task, observations, config)\n", + " except Exception:\n", + " import traceback\n", + "\n", + " observation = traceback.format_exception() # repr(e) +\n", + " observations[task[\"idx\"]] = observation\n", + "\n", + "\n", + "def schedule_pending_task(\n", + " task: Task, observations: Dict[int, Any], retry_after: float = 0.2\n", + "):\n", + " while True:\n", + " deps = task[\"dependencies\"]\n", + " if deps and (any([dep not in observations for dep in deps])):\n", + " # Dependencies not yet satisfied\n", + " time.sleep(retry_after)\n", + " continue\n", + " schedule_task.invoke({\"task\": task, \"observations\": observations})\n", + " break\n", + "\n", + "\n", + "@as_runnable\n", + "def schedule_tasks(scheduler_input: SchedulerInput) -> List[FunctionMessage]:\n", + " \"\"\"Group the tasks into a DAG schedule.\"\"\"\n", + " # For streaming, we are making a few simplifying assumption:\n", + " # 1. The LLM does not create cyclic dependencies\n", + " # 2. That the LLM will not generate tasks with future deps\n", + " # If this ceases to be a good assumption, you can either\n", + " # adjust to do a proper topological sort (not-stream)\n", + " # or use a more complicated data structure\n", + " tasks = scheduler_input[\"tasks\"]\n", + " messages = scheduler_input[\"messages\"]\n", + " # If we are re-planning, we may have calls that depend on previous\n", + " # plans. Start with those.\n", + " observations = _get_observations(messages)\n", + " task_names = {}\n", + " originals = set(observations)\n", + " # ^^ We assume each task inserts a different key above to\n", + " # avoid race conditions...\n", + " futures = []\n", + " retry_after = 0.25 # Retry every quarter second\n", + " with ThreadPoolExecutor() as executor:\n", + " for task in tasks:\n", + " deps = task[\"dependencies\"]\n", + " task_names[task[\"idx\"]] = (\n", + " task[\"tool\"] if isinstance(task[\"tool\"], str) else task[\"tool\"].name\n", + " )\n", + " if (\n", + " # Depends on other tasks\n", + " deps\n", + " and (any([dep not in observations for dep in deps]))\n", + " ):\n", + " futures.append(\n", + " executor.submit(\n", + " schedule_pending_task, task, observations, retry_after\n", + " )\n", + " )\n", + " else:\n", + " # No deps or all deps satisfied\n", + " # can schedule now\n", + " schedule_task.invoke(dict(task=task, observations=observations))\n", + " # futures.append(executor.submit(schedule_task.invoke dict(task=task, observations=observations)))\n", + "\n", + " # All tasks have been submitted or enqueued\n", + " # Wait for them to complete\n", + " wait(futures)\n", + " # Convert observations to new tool messages to add to the state\n", + " new_observations = {\n", + " k: (task_names[k], observations[k])\n", + " for k in sorted(observations.keys() - originals)\n", + " }\n", + " tool_messages = [\n", + " FunctionMessage(name=name, content=str(obs), additional_kwargs={\"idx\": k})\n", + " for k, (name, obs) in new_observations.items()\n", + " ]\n", + " return tool_messages" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "052f6b16-103a-40e9-94dd-8fcc37e77ba4", + "metadata": {}, + "outputs": [], + "source": [ + "import itertools\n", + "\n", + "\n", + "@as_runnable\n", + "def plan_and_schedule(messages: List[BaseMessage], config):\n", + " tasks = planner.stream(messages, config)\n", + " # Begin executing the planner immediately\n", + " tasks = itertools.chain([next(tasks)], tasks)\n", + " scheduled_tasks = schedule_tasks.invoke(\n", + " {\n", + " \"messages\": messages,\n", + " \"tasks\": tasks,\n", + " },\n", + " config,\n", + " )\n", + " return scheduled_tasks" + ] + }, + { + "cell_type": "markdown", + "id": "9efa15ae-817a-48c6-86ed-16bc112fedc5", + "metadata": {}, + "source": [ + "#### Example Plan\n", + "\n", + "We still haven't introduced any cycles in our computation graph, so this is all easily expressed in LCEL." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "55142257-2674-4a47-988e-0d2810917329", + "metadata": {}, + "outputs": [], + "source": [ + "tool_messages = plan_and_schedule.invoke([HumanMessage(content=example_question)])" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "a98e0525-2fcf-4fa1-baf6-79858bb8a6bd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[FunctionMessage(content='[]', additional_kwargs={'idx': 0}, name='tavily_search_results_json'),\n", + " FunctionMessage(content='ValueError(\\'Failed to evaluate \"N/A\". Raised error: KeyError(\\\\\\'A\\\\\\'). Please try again with a valid numerical expression\\')', additional_kwargs={'idx': 1}, name='math'),\n", + " FunctionMessage(content='join', additional_kwargs={'idx': 2}, name='join')]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tool_messages" + ] + }, + { + "cell_type": "markdown", + "id": "563d5311-55f0-4ca1-afbd-01fd970cf3e3", + "metadata": {}, + "source": [ + "## 4. \"Joiner\" \n", + "\n", + "So now we have the planning and initial execution done. We need a component to process these outputs and either:\n", + "\n", + "1. Respond with the correct answer.\n", + "2. Loop with a new plan.\n", + "\n", + "The paper refers to this as the \"joiner\". It's another LLM call. We are using function calling to improve parsing reliability." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "942dab42-ad42-4ba2-90d5-49edbe4fae68", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "from langchain.chains.openai_functions import create_structured_output_runnable\n", + "from langchain_core.messages import AIMessage\n", + "\n", + "\n", + "class FinalResponse(BaseModel):\n", + " \"\"\"The final response/answer.\"\"\"\n", + "\n", + " response: str\n", + "\n", + "\n", + "class Replan(BaseModel):\n", + " feedback: str = Field(\n", + " description=\"Analysis of the previous attempts and recommendations on what needs to be fixed.\"\n", + " )\n", + "\n", + "\n", + "class JoinOutputs(BaseModel):\n", + " \"\"\"Decide whether to replan or whether you can return the final response.\"\"\"\n", + "\n", + " thought: str = Field(\n", + " description=\"The chain of thought reasoning for the selected action\"\n", + " )\n", + " action: Union[FinalResponse, Replan]\n", + "\n", + "\n", + "joiner_prompt = hub.pull(\"wfh/llm-compiler-joiner\").partial(\n", + " examples=\"\"\n", + ") # You can optionally add examples\n", + "llm = ChatOpenAI(model=\"gpt-4-turbo-preview\")\n", + "\n", + "runnable = create_structured_output_runnable(JoinOutputs, llm, joiner_prompt)" + ] + }, + { + "cell_type": "markdown", + "id": "fb50c4cd-947c-4a5d-a9f7-f0d92a10600f", + "metadata": {}, + "source": [ + "We will select only the most recent messages in the state, and format the output to be more useful for\n", + "the planner, should the agent need to loop." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "951a33cf-2a05-4a33-899a-0ab1d97122fa", + "metadata": {}, + "outputs": [], + "source": [ + "def _parse_joiner_output(decision: JoinOutputs) -> List[BaseMessage]:\n", + " response = [AIMessage(content=f\"Thought: {decision.thought}\")]\n", + " if isinstance(decision.action, Replan):\n", + " return response + [\n", + " SystemMessage(\n", + " content=f\"Context from last attempt: {decision.action.feedback}\"\n", + " )\n", + " ]\n", + " else:\n", + " return response + [AIMessage(content=decision.action.response)]\n", + "\n", + "\n", + "def select_recent_messages(messages: list) -> dict:\n", + " selected = []\n", + " for msg in messages[::-1]:\n", + " selected.append(msg)\n", + " if isinstance(msg, HumanMessage):\n", + " break\n", + " return {\"messages\": selected[::-1]}\n", + "\n", + "\n", + "joiner = select_recent_messages | runnable | _parse_joiner_output" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "1e49d4b1-8266-4520-a566-1448b1c31c8f", + "metadata": {}, + "outputs": [], + "source": [ + "input_messages = [HumanMessage(content=example_question)] + tool_messages" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "31854dfd-b82f-4c24-9b58-6bae66777909", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[AIMessage(content='Thought: The search did not return any results, and the attempt to calculate the temperature in San Francisco raised to the 3rd power failed due to missing temperature information.'),\n", + " SystemMessage(content='Context from last attempt: I need to find the current temperature in San Francisco before calculating its value raised to the 3rd power.')]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "joiner.invoke(input_messages)" + ] + }, + { + "cell_type": "markdown", + "id": "b099e5ee-2c23-47d9-9387-0f64e02627d3", + "metadata": {}, + "source": [ + "## 5. Compose using LangGraph\n", + "\n", + "We'll define the agent as a stateful graph, with the main nodes being:\n", + "\n", + "1. Plan and execute (the DAG from the first step above)\n", + "2. Join: determine if we should finish or replan\n", + "3. Recontextualize: update the graph state based on the output from the joiner" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "768b5f11-e3d2-47be-8143-a7dcd8765243", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import MessageGraph, END\n", + "from typing import Dict\n", + "\n", + "graph_builder = MessageGraph()\n", + "\n", + "# 1. Define vertices\n", + "# We defined plan_and_schedule above already\n", + "# Assign each node to a state variable to update\n", + "graph_builder.add_node(\"plan_and_schedule\", plan_and_schedule)\n", + "graph_builder.add_node(\"join\", joiner)\n", + "\n", + "\n", + "## Define edges\n", + "graph_builder.add_edge(\"plan_and_schedule\", \"join\")\n", + "\n", + "### This condition determines looping logic\n", + "\n", + "\n", + "def should_continue(state: List[BaseMessage]):\n", + " if isinstance(state[-1], AIMessage):\n", + " return END\n", + " return \"plan_and_schedule\"\n", + "\n", + "\n", + "graph_builder.add_conditional_edges(\n", + " start_key=\"join\",\n", + " # Next, we pass in the function that will determine which node is called next.\n", + " condition=should_continue,\n", + ")\n", + "graph_builder.set_entry_point(\"plan_and_schedule\")\n", + "chain = graph_builder.compile()" + ] + }, + { + "cell_type": "markdown", + "id": "9f8c9849-8531-463d-a0ef-dcc3d9888b2d", + "metadata": {}, + "source": [ + "#### Simple question\n", + "\n", + "Let's ask a simple question of the agent." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "5bc4584a-e31c-4065-805e-76a6db30676a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'plan_and_schedule': [FunctionMessage(content='[{\\'url\\': \\'https://www.governor.ny.gov/programs/fy-2024-new-york-state-budget\\', \\'content\\': \"The $229 billion FY 2024 New York State Budget reflects Governor Hochul\\'s bold agenda to make New York more affordable, FY 2024 Budget Assets FY 2024 New York State Budget Highlights Improving Public Safety GOVERNOR HOME GOVERNOR KATHY HOCHUL FY 2024 New York State Budget Transformative investments to support New York\\'s business community and boost the state economy.The $229 billion FY 2024 NYS Budget reflects Governor Hochul\\'s bold agenda to make New York more affordable, more livable, and safer.\"}]', additional_kwargs={'idx': 0}, name='tavily_search_results_json')]}\n", + "---\n", + "{'join': [AIMessage(content=\"Thought: The information provided does not specify the Gross Domestic Product (GDP) of New York, but instead provides details about the state's budget for fiscal year 2024, which is $229 billion. This budget figure cannot be accurately equated to the GDP.\"), SystemMessage(content=\"Context from last attempt: The search results provided information about New York's state budget rather than its GDP. To answer the user's question, we need to find specific data on New York's GDP, not its budget.\")]}\n", + "---\n", + "{'plan_and_schedule': [FunctionMessage(content=\"[{'url': 'https://en.wikipedia.org/wiki/Economy_of_New_York_(state)', 'content': 'The economy of the State of New York is reflected in its gross state product in 2022 of $2.053 trillion, ranking third Contents Economy of New York (state) New York City-centered metropolitan statistical area produced a gross metropolitan product (GMP) of $US2.0 trillion, of the items in which New York ranks high nationally:The economy of the State of New York is reflected in its gross state product in 2022 of $2.053 trillion, ranking third in size behind the larger states of\\\\xa0...'}]\", additional_kwargs={'idx': 1}, name='tavily_search_results_json')]}\n", + "---\n", + "{'join': [AIMessage(content=\"Thought: The required information about New York's GDP is provided in the search results. In 2022, New York had a Gross State Product (GSP) of $2.053 trillion.\"), AIMessage(content='The Gross Domestic Product (GDP) of New York in 2022 was $2.053 trillion.')]}\n", + "---\n", + "{'__end__': [HumanMessage(content=\"What's the GDP of New York?\"), FunctionMessage(content='[{\\'url\\': \\'https://www.governor.ny.gov/programs/fy-2024-new-york-state-budget\\', \\'content\\': \"The $229 billion FY 2024 New York State Budget reflects Governor Hochul\\'s bold agenda to make New York more affordable, FY 2024 Budget Assets FY 2024 New York State Budget Highlights Improving Public Safety GOVERNOR HOME GOVERNOR KATHY HOCHUL FY 2024 New York State Budget Transformative investments to support New York\\'s business community and boost the state economy.The $229 billion FY 2024 NYS Budget reflects Governor Hochul\\'s bold agenda to make New York more affordable, more livable, and safer.\"}]', additional_kwargs={'idx': 0}, name='tavily_search_results_json'), AIMessage(content=\"Thought: The information provided does not specify the Gross Domestic Product (GDP) of New York, but instead provides details about the state's budget for fiscal year 2024, which is $229 billion. This budget figure cannot be accurately equated to the GDP.\"), SystemMessage(content=\"Context from last attempt: The search results provided information about New York's state budget rather than its GDP. To answer the user's question, we need to find specific data on New York's GDP, not its budget. - Begin counting at : 1\"), FunctionMessage(content=\"[{'url': 'https://en.wikipedia.org/wiki/Economy_of_New_York_(state)', 'content': 'The economy of the State of New York is reflected in its gross state product in 2022 of $2.053 trillion, ranking third Contents Economy of New York (state) New York City-centered metropolitan statistical area produced a gross metropolitan product (GMP) of $US2.0 trillion, of the items in which New York ranks high nationally:The economy of the State of New York is reflected in its gross state product in 2022 of $2.053 trillion, ranking third in size behind the larger states of\\\\xa0...'}]\", additional_kwargs={'idx': 1}, name='tavily_search_results_json'), AIMessage(content=\"Thought: The required information about New York's GDP is provided in the search results. In 2022, New York had a Gross State Product (GSP) of $2.053 trillion.\"), AIMessage(content='The Gross Domestic Product (GDP) of New York in 2022 was $2.053 trillion.')]}\n", + "---\n" + ] + } + ], + "source": [ + "for step in chain.stream([HumanMessage(content=\"What's the GDP of New York?\")]):\n", + " print(step)\n", + " print(\"---\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "b96efd08-5314-44f0-a694-3073b638adad", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The Gross Domestic Product (GDP) of New York in 2022 was $2.053 trillion.\n" + ] + } + ], + "source": [ + "# Final answer\n", + "print(step[END][-1].content)" + ] + }, + { + "cell_type": "markdown", + "id": "33c65ef5-b4b2-4ab2-8c78-a551da7819b9", + "metadata": {}, + "source": [ + "#### Multi-hop question\n", + "\n", + "This question requires that the agent perform multiple searches." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "0b3a0916-d8ca-4092-b91c-d9e2b05259d8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'plan_and_schedule': [FunctionMessage(content=\"[{'url': 'https://a-z-animals.com/blog/discover-the-worlds-oldest-parrot/', 'content': 'How Old Is the World’s Oldest Parrot? Discover the World’s Oldest Parrot Advertisement of debate, so we’ll detail some other parrots whose lifespans may be longer but are hard to verify their exact age. Comparing Parrots’ Lifespans to Other BirdsSep 8, 2023 — Sep 8, 2023The oldest parrot on record is Cookie, a pink cockatoo that survived to the age of 83 and survived his entire life at the Brookfield Zoo.'}]\", additional_kwargs={'idx': 0}, name='tavily_search_results_json'), FunctionMessage(content=\"HTTPError('502 Server Error: Bad Gateway for url: https://api.tavily.com/search')\", additional_kwargs={'idx': 1}, name='tavily_search_results_json'), FunctionMessage(content='join', additional_kwargs={'idx': 2}, name='join')]}\n", + "---\n", + "{'join': [AIMessage(content='Thought: The oldest parrot on record is Cookie, a pink cockatoo, who lived to be 83 years old. However, there was an error fetching additional search results to compare this age to the average lifespan of parrots.'), SystemMessage(content='Context from last attempt: I found the age of the oldest parrot, Cookie, who lived to be 83 years old. However, I need to search again to find the average lifespan of parrots to complete the comparison.')]}\n", + "---\n", + "{'plan_and_schedule': [FunctionMessage(content='[{\\'url\\': \\'https://www.turlockvet.com/site/blog/2023/07/15/parrot-lifespan--how-long-pet-parrots-live\\', \\'content\\': \"Parrot Lifespan the lifespan of a parrot?\\'. Parrot Lifespan: How Long Do Pet Parrots Live? how long they actually live and what you should know about owning a parrot.Jul 15, 2023 — Jul 15, 2023Generally, the average lifespan of smaller species of parrots such as Budgies and Cockatiels is about 5 - 15 years, while larger parrots such as\\\\xa0...\"}]', additional_kwargs={'idx': 3}, name='tavily_search_results_json')]}\n", + "---\n", + "{'join': [AIMessage(content=\"Thought: I have found that the oldest parrot on record, Cookie, lived to be 83 years old. Additionally, I've found that the average lifespan of parrots varies by species, with smaller species like Budgies and Cockatiels living between 5-15 years, and larger parrots potentially living longer. This allows me to compare Cookie's age to the average lifespan of smaller parrot species.\"), AIMessage(content=\"The oldest parrot on record is Cookie, a pink cockatoo, who lived to be 83 years old. Compared to the average lifespan of smaller parrot species such as Budgies and Cockatiels, which is about 5-15 years, Cookie lived significantly longer. The average lifespan of larger parrot species wasn't specified, but it's implied that larger parrots may live longer than smaller species, yet likely still much less than 83 years.\")]}\n", + "---\n", + "{'__end__': [HumanMessage(content=\"What's the oldest parrot alive, and how much longer is that than the average?\"), FunctionMessage(content=\"[{'url': 'https://a-z-animals.com/blog/discover-the-worlds-oldest-parrot/', 'content': 'How Old Is the World’s Oldest Parrot? Discover the World’s Oldest Parrot Advertisement of debate, so we’ll detail some other parrots whose lifespans may be longer but are hard to verify their exact age. Comparing Parrots’ Lifespans to Other BirdsSep 8, 2023 — Sep 8, 2023The oldest parrot on record is Cookie, a pink cockatoo that survived to the age of 83 and survived his entire life at the Brookfield Zoo.'}]\", additional_kwargs={'idx': 0}, name='tavily_search_results_json'), FunctionMessage(content=\"HTTPError('502 Server Error: Bad Gateway for url: https://api.tavily.com/search')\", additional_kwargs={'idx': 1}, name='tavily_search_results_json'), FunctionMessage(content='join', additional_kwargs={'idx': 2}, name='join'), AIMessage(content='Thought: The oldest parrot on record is Cookie, a pink cockatoo, who lived to be 83 years old. However, there was an error fetching additional search results to compare this age to the average lifespan of parrots.'), SystemMessage(content='Context from last attempt: I found the age of the oldest parrot, Cookie, who lived to be 83 years old. However, I need to search again to find the average lifespan of parrots to complete the comparison. - Begin counting at : 3'), FunctionMessage(content='[{\\'url\\': \\'https://www.turlockvet.com/site/blog/2023/07/15/parrot-lifespan--how-long-pet-parrots-live\\', \\'content\\': \"Parrot Lifespan the lifespan of a parrot?\\'. Parrot Lifespan: How Long Do Pet Parrots Live? how long they actually live and what you should know about owning a parrot.Jul 15, 2023 — Jul 15, 2023Generally, the average lifespan of smaller species of parrots such as Budgies and Cockatiels is about 5 - 15 years, while larger parrots such as\\\\xa0...\"}]', additional_kwargs={'idx': 3}, name='tavily_search_results_json'), AIMessage(content=\"Thought: I have found that the oldest parrot on record, Cookie, lived to be 83 years old. Additionally, I've found that the average lifespan of parrots varies by species, with smaller species like Budgies and Cockatiels living between 5-15 years, and larger parrots potentially living longer. This allows me to compare Cookie's age to the average lifespan of smaller parrot species.\"), AIMessage(content=\"The oldest parrot on record is Cookie, a pink cockatoo, who lived to be 83 years old. Compared to the average lifespan of smaller parrot species such as Budgies and Cockatiels, which is about 5-15 years, Cookie lived significantly longer. The average lifespan of larger parrot species wasn't specified, but it's implied that larger parrots may live longer than smaller species, yet likely still much less than 83 years.\")]}\n", + "---\n" + ] + } + ], + "source": [ + "steps = chain.stream(\n", + " [\n", + " HumanMessage(\n", + " content=\"What's the oldest parrot alive, and how much longer is that than the average?\"\n", + " )\n", + " ],\n", + " {\n", + " \"recursion_limit\": 100,\n", + " },\n", + ")\n", + "for step in steps:\n", + " print(step)\n", + " print(\"---\")" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "6c65c414-7668-4fdf-ba97-f42f659b1317", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The oldest parrot on record is Cookie, a pink cockatoo, who lived to be 83 years old. Compared to the average lifespan of smaller parrot species such as Budgies and Cockatiels, which is about 5-15 years, Cookie lived significantly longer. The average lifespan of larger parrot species wasn't specified, but it's implied that larger parrots may live longer than smaller species, yet likely still much less than 83 years.\n" + ] + } + ], + "source": [ + "# Final answer\n", + "print(step[END][-1].content)" + ] + }, + { + "cell_type": "markdown", + "id": "1b859bc7-1a85-4d35-b57b-f67c87282403", + "metadata": {}, + "source": [ + "#### Multi-step math" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "38d3ea91-59ba-4267-8060-ed75bbc840c6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'plan_and_schedule': [FunctionMessage(content='3307.0', additional_kwargs={'idx': 1}, name='math'), FunctionMessage(content='7.565011820330969', additional_kwargs={'idx': 2}, name='math'), FunctionMessage(content='3314.565011820331', additional_kwargs={'idx': 3}, name='math'), FunctionMessage(content='join', additional_kwargs={'idx': 4}, name='join')]}\n", + "{'join': [AIMessage(content=\"Thought: The calculations for each part of the user's question have been successfully completed. The first calculation resulted in 3307.0, the second in 7.565011820330969, and the sum of those two values was correctly found to be 3314.565011820331.\"), AIMessage(content='The result of ((3*(4+5)/0.5)+3245) + 8 is 3307.0, the result of 32/4.23 is approximately 7.565, and the sum of those two values is approximately 3314.565.')]}\n", + "{'__end__': [HumanMessage(content=\"What's ((3*(4+5)/0.5)+3245) + 8? What's 32/4.23? What's the sum of those two values?\"), FunctionMessage(content='3307.0', additional_kwargs={'idx': 1}, name='math'), FunctionMessage(content='7.565011820330969', additional_kwargs={'idx': 2}, name='math'), FunctionMessage(content='3314.565011820331', additional_kwargs={'idx': 3}, name='math'), FunctionMessage(content='join', additional_kwargs={'idx': 4}, name='join'), AIMessage(content=\"Thought: The calculations for each part of the user's question have been successfully completed. The first calculation resulted in 3307.0, the second in 7.565011820330969, and the sum of those two values was correctly found to be 3314.565011820331.\"), AIMessage(content='The result of ((3*(4+5)/0.5)+3245) + 8 is 3307.0, the result of 32/4.23 is approximately 7.565, and the sum of those two values is approximately 3314.565.')]}\n" + ] + } + ], + "source": [ + "for step in chain.stream(\n", + " [\n", + " HumanMessage(\n", + " content=\"What's ((3*(4+5)/0.5)+3245) + 8? What's 32/4.23? What's the sum of those two values?\"\n", + " )\n", + " ]\n", + "):\n", + " print(step)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "a6cf5fe0-f178-4197-950f-257711bff8d2", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The result of ((3*(4+5)/0.5)+3245) + 8 is 3307.0, the result of 32/4.23 is approximately 7.565, and the sum of those two values is approximately 3314.565.\n" + ] + } + ], + "source": [ + "# Final answer\n", + "print(step[END][-1].content)" + ] + }, + { + "cell_type": "markdown", + "id": "c647d5f3-5e00-4449-9cec-5a9f438c9cff", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "Congrats on building your first LLMCompiler agent! I'll leave you with some known limitations to the implementation above:\n", + "\n", + "1. The planner output parsing format is fragile if your function requires more than 1 or 2 arguments. We could make it more robust by using streaming tool calling.\n", + "2. Variable substitution is fragile in the example above. It could be made more robust by using a fine-tuned model and a more robust syntax (using e.g., Lark or a tool calling schema)\n", + "3. The state can grow quite long if you require multiple re-planning runs. To handle, you could add a message compressor once you go above a certain token limit.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "431217e6-4c00-409f-a2bd-40ebff902489", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/llm-compiler/__init__.py b/examples/llm-compiler/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/examples/llm-compiler/img/diagram.png b/examples/llm-compiler/img/diagram.png new file mode 100644 index 000000000..01655a5ec Binary files /dev/null and b/examples/llm-compiler/img/diagram.png differ diff --git a/examples/llm-compiler/img/llm-compiler.png b/examples/llm-compiler/img/llm-compiler.png new file mode 100644 index 000000000..3c9ec7a57 Binary files /dev/null and b/examples/llm-compiler/img/llm-compiler.png differ diff --git a/examples/llm-compiler/math_tools.py b/examples/llm-compiler/math_tools.py new file mode 100644 index 000000000..74e7a0736 --- /dev/null +++ b/examples/llm-compiler/math_tools.py @@ -0,0 +1,142 @@ +import math +import re +from typing import List, Optional + +import numexpr +from langchain.chains.openai_functions import create_structured_output_runnable +from langchain_community.chat_models import ChatOpenAI +from langchain_core.messages import SystemMessage +from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder +from langchain_core.pydantic_v1 import BaseModel, Field +from langchain_core.runnables import RunnableConfig +from langchain_core.tools import StructuredTool + +_MATH_DESCRIPTION = ( + "math(problem: str, context: Optional[list[str]]) -> float:\n" + " - Solves the provided math problem.\n" + ' - `problem` can be either a simple math problem (e.g. "1 + 3") or a word problem (e.g. "how many apples are there if there are 3 apples and 2 apples").\n' + " - You cannot calculate multiple expressions in one call. For instance, `math('1 + 3, 2 + 4')` does not work. " + "If you need to calculate multiple expressions, you need to call them separately like `math('1 + 3')` and then `math('2 + 4')`\n" + " - Minimize the number of `math` actions as much as possible. For instance, instead of calling " + '2. math("what is the 10% of $1") and then call 3. math("$1 + $2"), ' + 'you MUST call 2. math("what is the 110% of $1") instead, which will reduce the number of math actions.\n' + # Context specific rules below + " - You can optionally provide a list of strings as `context` to help the agent solve the problem. " + "If there are multiple contexts you need to answer the question, you can provide them as a list of strings.\n" + " - `math` action will not see the output of the previous actions unless you provide it as `context`. " + "You MUST provide the output of the previous actions as `context` if you need to do math on it.\n" + " - You MUST NEVER provide `search` type action's outputs as a variable in the `problem` argument. " + "This is because `search` returns a text blob that contains the information about the entity, not a number or value. " + "Therefore, when you need to provide an output of `search` action, you MUST provide it as a `context` argument to `math` action. " + 'For example, 1. search("Barack Obama") and then 2. math("age of $1") is NEVER allowed. ' + 'Use 2. math("age of Barack Obama", context=["$1"]) instead.\n' + " - When you ask a question about `context`, specify the units. " + 'For instance, "what is xx in height?" or "what is xx in millions?" instead of "what is xx?"\n' +) + + +_SYSTEM_PROMPT = """Translate a math problem into a expression that can be executed using Python's numexpr library. Use the output of running this code to answer the question. + +Question: ${{Question with math problem.}} +```text +${{single line mathematical expression that solves the problem}} +``` +...numexpr.evaluate(text)... +```output +${{Output of running the code}} +``` +Answer: ${{Answer}} + +Begin. + +Question: What is 37593 * 67? +ExecuteCode({{code: "37593 * 67"}}) +...numexpr.evaluate("37593 * 67")... +```output +2518731 +``` +Answer: 2518731 + +Question: 37593^(1/5) +ExecuteCode({{code: "37593**(1/5)"}}) +...numexpr.evaluate("37593**(1/5)")... +```output +8.222831614237718 +``` +Answer: 8.222831614237718 +""" + +_ADDITIONAL_CONTEXT_PROMPT = """The following additional context is provided from other functions.\ + Use it to substitute into any ${{#}} variables or other words in the problem.\ + \n\n${context}\n\nNote that context varibles are not defined in code yet.\ +You must extract the relevant numbers and directly put them in code.""" + + +class ExecuteCode(BaseModel): + """The input to the numexpr.evaluate() function.""" + + reasoning: str = Field( + ..., + description="The reasoning behind the code expression, including how context is included, if applicable.", + ) + + code: str = Field( + ..., + description="The simple code expresssion to execute by numexpr.evaluate().", + ) + + +def _evaluate_expression(expression: str) -> str: + try: + local_dict = {"pi": math.pi, "e": math.e} + output = str( + numexpr.evaluate( + expression.strip(), + global_dict={}, # restrict access to globals + local_dict=local_dict, # add common mathematical functions + ) + ) + except Exception as e: + raise ValueError( + f'Failed to evaluate "{expression}". Raised error: {repr(e)}.' + " Please try again with a valid numerical expression" + ) + + # Remove any leading and trailing brackets from the output + return re.sub(r"^\[|\]$", "", output) + + +def get_math_tool(llm: ChatOpenAI): + prompt = ChatPromptTemplate.from_messages( + [ + ("system", _SYSTEM_PROMPT), + ("user", "{problem}"), + MessagesPlaceholder(variable_name="context", optional=True), + ] + ) + extractor = create_structured_output_runnable(ExecuteCode, llm, prompt) + + def calculate_expression( + problem: str, + context: Optional[List[str]] = None, + config: Optional[RunnableConfig] = None, + ): + chain_input = {"problem": problem} + if context: + context_str = "\n".join(context) + if context_str.strip(): + context_str = _ADDITIONAL_CONTEXT_PROMPT.format( + context=context_str.strip() + ) + chain_input["context"] = [SystemMessage(content=context_str)] + code_model = extractor.invoke(chain_input, config) + try: + return _evaluate_expression(code_model.code) + except Exception as e: + return repr(e) + + return StructuredTool.from_function( + name="math", + func=calculate_expression, + description=_MATH_DESCRIPTION, + ) diff --git a/examples/llm-compiler/output_parser.py b/examples/llm-compiler/output_parser.py new file mode 100644 index 000000000..02ea60284 --- /dev/null +++ b/examples/llm-compiler/output_parser.py @@ -0,0 +1,177 @@ +import ast +import re +from typing import ( + Any, + Dict, + Iterator, + List, + Optional, + Sequence, + Tuple, + Union, +) + +from langchain_core.exceptions import OutputParserException +from langchain_core.messages import BaseMessage +from langchain_core.output_parsers.transform import BaseTransformOutputParser +from langchain_core.runnables import RunnableConfig +from langchain_core.tools import BaseTool +from typing_extensions import TypedDict + +THOUGHT_PATTERN = r"Thought: ([^\n]*)" +ACTION_PATTERN = r"\n*(\d+)\. (\w+)\((.*)\)(\s*#\w+\n)?" +# $1 or ${1} -> 1 +ID_PATTERN = r"\$\{?(\d+)\}?" +END_OF_PLAN = "" + + +### Helper functions + + +def _ast_parse(arg: str) -> Any: + try: + return ast.literal_eval(arg) + except: # noqa + return arg + + +def _parse_llm_compiler_action_args(args: str, tool: Union[str, BaseTool]) -> list[Any]: + """Parse arguments from a string.""" + if args == "": + return () + if isinstance(tool, str): + return () + extracted_args = {} + tool_key = None + prev_idx = None + for key in tool.args.keys(): + # Split if present + if f"{key}=" in args: + idx = args.index(f"{key}=") + if prev_idx is not None: + extracted_args[tool_key] = _ast_parse( + args[prev_idx:idx].strip().rstrip(",") + ) + args = args.split(f"{key}=", 1)[1] + tool_key = key + prev_idx = 0 + if prev_idx is not None: + extracted_args[tool_key] = _ast_parse( + args[prev_idx:].strip().rstrip(",").rstrip(")") + ) + return extracted_args + + +def default_dependency_rule(idx, args: str): + matches = re.findall(ID_PATTERN, args) + numbers = [int(match) for match in matches] + return idx in numbers + + +def _get_dependencies_from_graph( + idx: int, tool_name: str, args: Dict[str, Any] +) -> dict[str, list[str]]: + """Get dependencies from a graph.""" + if tool_name == "join": + return list(range(1, idx)) + return [i for i in range(1, idx) if default_dependency_rule(i, str(args))] + + +class Task(TypedDict): + idx: int + tool: BaseTool + args: list + dependencies: Dict[str, list] + thought: Optional[str] + + +def instantiate_task( + tools: Sequence[BaseTool], + idx: int, + tool_name: str, + args: Union[str, Any], + thought: Optional[str] = None, +) -> Task: + if tool_name == "join": + tool = "join" + else: + try: + tool = tools[[tool.name for tool in tools].index(tool_name)] + except ValueError as e: + raise OutputParserException(f"Tool {tool_name} not found.") from e + tool_args = _parse_llm_compiler_action_args(args, tool) + dependencies = _get_dependencies_from_graph(idx, tool_name, tool_args) + + return Task( + idx=idx, + tool=tool, + args=tool_args, + dependencies=dependencies, + thought=thought, + ) + + +class LLMCompilerPlanParser(BaseTransformOutputParser[dict], extra="allow"): + """Planning output parser.""" + + tools: List[BaseTool] + + def _transform(self, input: Iterator[Union[str, BaseMessage]]) -> Iterator[Task]: + texts = [] + # TODO: Cleanup tuple state tracking here. + thought = None + for chunk in input: + # Assume input is str. TODO: support vision/other formats + text = chunk if isinstance(chunk, str) else str(chunk.content) + for task, thought in self.ingest_token(text, texts, thought): + yield task + # Final possible task + if texts: + task, _ = self._parse_task("".join(texts), thought) + if task: + yield task + + def parse(self, text: str) -> List[Task]: + return list(self._transform([text])) + + def stream( + self, + input: str | BaseMessage, + config: RunnableConfig | None = None, + **kwargs: Any | None, + ) -> Iterator[Task]: + yield from self.transform([input], config, **kwargs) + + def ingest_token( + self, token: str, buffer: List[str], thought: Optional[str] + ) -> Iterator[Tuple[Optional[Task], str]]: + buffer.append(token) + if "\n" in token: + buffer_ = "".join(buffer).split("\n") + suffix = buffer_[-1] + for line in buffer_[:-1]: + task, thought = self._parse_task(line, thought) + if task: + yield task, thought + buffer.clear() + buffer.append(suffix) + + def _parse_task(self, line: str, thought: Optional[str] = None): + task = None + if match := re.match(THOUGHT_PATTERN, line): + # Optionally, action can be preceded by a thought + thought = match.group(1) + elif match := re.match(ACTION_PATTERN, line): + # if action is parsed, return the task, and clear the buffer + idx, tool_name, args, _ = match.groups() + idx = int(idx) + task = instantiate_task( + tools=self.tools, + idx=idx, + tool_name=tool_name, + args=args, + thought=thought, + ) + thought = None + # Else it is just dropped + return task, thought diff --git a/examples/multi_agent/agent_supervisor.ipynb b/examples/multi_agent/agent_supervisor.ipynb index 53c0d6b30..8f2d01fa4 100644 --- a/examples/multi_agent/agent_supervisor.ipynb +++ b/examples/multi_agent/agent_supervisor.ipynb @@ -107,10 +107,7 @@ "from langchain_openai import ChatOpenAI\n", "\n", "\n", - "\n", - "def create_agent(\n", - " llm: ChatOpenAI, tools: list, system_prompt: str\n", - "):\n", + "def create_agent(llm: ChatOpenAI, tools: list, system_prompt: str):\n", " # Each worker node will be given a name and some tools.\n", " prompt = ChatPromptTemplate.from_messages(\n", " [\n", @@ -255,7 +252,11 @@ "research_node = functools.partial(agent_node, agent=research_agent, name=\"Researcher\")\n", "\n", "# NOTE: THIS PERFORMS ARBITRARY CODE EXECUTION. PROCEED WITH CAUTION\n", - "code_agent = create_agent(llm, [python_repl_tool], \"You may generate safe python code to analyze data and generate charts using matplotlib.\")\n", + "code_agent = create_agent(\n", + " llm,\n", + " [python_repl_tool],\n", + " \"You may generate safe python code to analyze data and generate charts using matplotlib.\",\n", + ")\n", "code_node = functools.partial(agent_node, agent=code_agent, name=\"Coder\")\n", "\n", "workflow = StateGraph(AgentState)\n", @@ -369,11 +370,7 @@ ], "source": [ "for s in graph.stream(\n", - " {\n", - " \"messages\": [\n", - " HumanMessage(content=\"Write a brief research report on pikas.\")\n", - " ]\n", - " },\n", + " {\"messages\": [HumanMessage(content=\"Write a brief research report on pikas.\")]},\n", " {\"recursion_limit\": 100},\n", "):\n", " if \"__end__\" not in s:\n", diff --git a/examples/multi_agent/hierarchical_agent_teams.ipynb b/examples/multi_agent/hierarchical_agent_teams.ipynb index a4794a319..37c9e46bf 100644 --- a/examples/multi_agent/hierarchical_agent_teams.ipynb +++ b/examples/multi_agent/hierarchical_agent_teams.ipynb @@ -291,9 +291,7 @@ " return {\"messages\": [HumanMessage(content=result[\"output\"], name=name)]}\n", "\n", "\n", - "def create_team_supervisor(\n", - " llm: ChatOpenAI, system_prompt, members\n", - ") -> str:\n", + "def create_team_supervisor(llm: ChatOpenAI, system_prompt, members) -> str:\n", " \"\"\"An LLM-based router.\"\"\"\n", " options = [\"FINISH\"] + members\n", " function_def = {\n", @@ -374,10 +372,18 @@ "\n", "llm = ChatOpenAI(model=\"gpt-4-1106-preview\")\n", "\n", - "search_agent = create_agent(llm, [tavily_tool], \"You are a research assistant who can search for up-to-date info using the tavily search engine.\")\n", + "search_agent = create_agent(\n", + " llm,\n", + " [tavily_tool],\n", + " \"You are a research assistant who can search for up-to-date info using the tavily search engine.\",\n", + ")\n", "search_node = functools.partial(agent_node, agent=search_agent, name=\"Search\")\n", "\n", - "research_agent = create_agent(llm, [scrape_webpages], \"You are a research assistant who can scrape specified urls for more detailed information using the scrape_webpages function.\")\n", + "research_agent = create_agent(\n", + " llm,\n", + " [scrape_webpages],\n", + " \"You are a research assistant who can scrape specified urls for more detailed information using the scrape_webpages function.\",\n", + ")\n", "research_node = functools.partial(agent_node, agent=research_agent, name=\"Web Scraper\")\n", "\n", "supervisor_agent = create_team_supervisor(\n", @@ -388,7 +394,7 @@ " \" task and respond with their results and status. When finished,\"\n", " \" respond with FINISH.\",\n", " [\"Search\", \"Web Scraper\"],\n", - ")\n" + ")" ] }, { @@ -417,17 +423,14 @@ "research_graph.add_conditional_edges(\n", " \"supervisor\",\n", " lambda x: x[\"next\"],\n", - " {\n", - " \"Search\": \"Search\",\n", - " \"Web Scraper\": \"Web Scraper\",\n", - " \"FINISH\": END\n", - " }\n", + " {\"Search\": \"Search\", \"Web Scraper\": \"Web Scraper\", \"FINISH\": END},\n", ")\n", "\n", "\n", "research_graph.set_entry_point(\"supervisor\")\n", "chain = research_graph.compile()\n", "\n", + "\n", "# The following functions interoperate between the top level graph state\n", "# and the state of the research sub-graph\n", "# this makes it so that the states of each graph don't get intermixed\n", @@ -438,11 +441,7 @@ " return results\n", "\n", "\n", - "\n", - "research_chain = (\n", - " enter_chain\n", - " | chain\n", - ")" + "research_chain = enter_chain | chain" ] }, { @@ -474,9 +473,8 @@ ], "source": [ "for s in research_chain.stream(\n", - " \"when is Taylor Swift's next tour?\",\n", - " {\"recursion_limit\": 100}\n", - " ):\n", + " \"when is Taylor Swift's next tour?\", {\"recursion_limit\": 100}\n", + "):\n", " if \"__end__\" not in s:\n", " print(s)\n", " print(\"---\")" @@ -539,7 +537,6 @@ " }\n", "\n", "\n", - "\n", "llm = ChatOpenAI(model=\"gpt-4-1106-preview\")\n", "\n", "doc_writer_agent = create_agent(\n", @@ -551,7 +548,9 @@ ")\n", "# Injects current directory working state before each call\n", "context_aware_doc_writer_agent = prelude | doc_writer_agent\n", - "doc_writing_node = functools.partial(agent_node, agent=context_aware_doc_writer_agent, name=\"Doc Writer\")\n", + "doc_writing_node = functools.partial(\n", + " agent_node, agent=context_aware_doc_writer_agent, name=\"Doc Writer\"\n", + ")\n", "\n", "note_taking_agent = create_agent(\n", " llm,\n", @@ -560,7 +559,9 @@ " \" taking notes to craft a perfect paper.{current_files}\",\n", ")\n", "context_aware_note_taking_agent = prelude | note_taking_agent\n", - "note_taking_node = functools.partial(agent_node, agent=context_aware_note_taking_agent, name=\"Note Taker\")\n", + "note_taking_node = functools.partial(\n", + " agent_node, agent=context_aware_note_taking_agent, name=\"Note Taker\"\n", + ")\n", "\n", "chart_generating_agent = create_agent(\n", " llm,\n", @@ -569,7 +570,9 @@ " \"{current_files}\",\n", ")\n", "context_aware_chart_generating_agent = prelude | chart_generating_agent\n", - "chart_generating_node = functools.partial(agent_node, agent=context_aware_note_taking_agent, name=\"Chart Generator\")\n", + "chart_generating_node = functools.partial(\n", + " agent_node, agent=context_aware_note_taking_agent, name=\"Chart Generator\"\n", + ")\n", "\n", "doc_writing_supervisor = create_team_supervisor(\n", " llm,\n", @@ -578,7 +581,7 @@ " \" respond with the worker to act next. Each worker will perform a\"\n", " \" task and respond with their results and status. When finished,\"\n", " \" respond with FINISH.\",\n", - " [\"Doc Writer\", \"Note Taker\", \"Chart Generator\"]\n", + " [\"Doc Writer\", \"Note Taker\", \"Chart Generator\"],\n", ")" ] }, @@ -618,20 +621,21 @@ " \"Doc Writer\": \"Doc Writer\",\n", " \"Note Taker\": \"Note Taker\",\n", " \"Chart Generator\": \"Chart Generator\",\n", - " \"FINISH\": END\n", - " }\n", + " \"FINISH\": END,\n", + " },\n", ")\n", "\n", "authoring_graph.set_entry_point(\"supervisor\")\n", "chain = research_graph.compile()\n", "\n", + "\n", "# The following functions interoperate between the top level graph state\n", "# and the state of the research sub-graph\n", "# this makes it so that the states of each graph don't get intermixed\n", "def enter_chain(message: str, members: List[str]):\n", " results = {\n", " \"messages\": [HumanMessage(content=message)],\n", - " \"team_members\": \", \".join(members)\n", + " \"team_members\": \", \".join(members),\n", " }\n", " return results\n", "\n", @@ -664,9 +668,9 @@ ], "source": [ "for s in authoring_chain.stream(\n", - " \"Write an outline for poem and then write the poem to disk.\",\n", - " {\"recursion_limit\": 100}\n", - " ):\n", + " \"Write an outline for poem and then write the poem to disk.\",\n", + " {\"recursion_limit\": 100},\n", + "):\n", " if \"__end__\" not in s:\n", " print(s)\n", " print(\"---\")" @@ -720,6 +724,7 @@ " messages: Annotated[List[BaseMessage], operator.add]\n", " next: str\n", "\n", + "\n", "def get_last_message(state: State) -> str:\n", " return state[\"messages\"][-1].content\n", "\n", @@ -727,6 +732,7 @@ "def join_graph(response: dict):\n", " return {\"messages\": [response[\"messages\"][-1]]}\n", "\n", + "\n", "# Define the graph.\n", "super_graph = StateGraph(State)\n", "# First add the nodes, which will do the work\n", @@ -746,8 +752,8 @@ " {\n", " \"Paper writing team\": \"Paper writing team\",\n", " \"Research team\": \"Research team\",\n", - " \"FINISH\": END\n", - " }\n", + " \"FINISH\": END,\n", + " },\n", ")\n", "super_graph.set_entry_point(\"supervisor\")\n", "super_graph = super_graph.compile()" @@ -814,13 +820,15 @@ ], "source": [ "for s in super_graph.stream(\n", - " {\n", - " \"messages\": [\n", - " HumanMessage(content=\"Write a brief research report on the North American sturgeon. Include a chart.\")\n", - " ],\n", - " },\n", - " {\"recursion_limit\": 150},\n", - " ):\n", + " {\n", + " \"messages\": [\n", + " HumanMessage(\n", + " content=\"Write a brief research report on the North American sturgeon. Include a chart.\"\n", + " )\n", + " ],\n", + " },\n", + " {\"recursion_limit\": 150},\n", + "):\n", " if \"__end__\" not in s:\n", " print(s)\n", " print(\"---\")" diff --git a/examples/multi_agent/multi-agent-collaboration.ipynb b/examples/multi_agent/multi-agent-collaboration.ipynb index 8afa66194..bad5669a8 100644 --- a/examples/multi_agent/multi-agent-collaboration.ipynb +++ b/examples/multi_agent/multi-agent-collaboration.ipynb @@ -118,9 +118,7 @@ " )\n", " prompt = prompt.partial(system_message=system_message)\n", " prompt = prompt.partial(tool_names=\", \".join([tool.name for tool in tools]))\n", - " return prompt | llm.bind_functions(functions)\n", - "\n", - "\n" + " return prompt | llm.bind_functions(functions)" ] }, { @@ -162,8 +160,7 @@ " result = repl.run(code)\n", " except BaseException as e:\n", " return f\"Failed to execute. Error: {repr(e)}\"\n", - " return f\"Succesfully executed:\\n```python\\n{code}\\n```\\nStdout: {result}\"\n", - "\n" + " return f\"Succesfully executed:\\n```python\\n{code}\\n```\\nStdout: {result}\"" ] }, { @@ -251,8 +248,8 @@ "\n", "# Research agent and node\n", "research_agent = create_agent(\n", - " llm, \n", - " [tavily_tool], \n", + " llm,\n", + " [tavily_tool],\n", " system_message=\"You should provide accurate data for the chart generator to use.\",\n", ")\n", "research_node = functools.partial(agent_node, agent=research_agent, name=\"Researcher\")\n", @@ -286,6 +283,7 @@ "tools = [tavily_tool, python_repl]\n", "tool_executor = ToolExecutor(tools)\n", "\n", + "\n", "def tool_node(state):\n", " \"\"\"This runs tools in the graph\n", "\n", diff --git a/examples/persistence.ipynb b/examples/persistence.ipynb index 98edfb1b0..9272e5079 100644 --- a/examples/persistence.ipynb +++ b/examples/persistence.ipynb @@ -227,6 +227,7 @@ "import json\n", "from langchain_core.messages import FunctionMessage\n", "\n", + "\n", "# Define the function that determines whether to continue or not\n", "def should_continue(messages):\n", " last_message = messages[-1]\n", @@ -237,12 +238,14 @@ " else:\n", " return \"continue\"\n", "\n", + "\n", "# Define the function that calls the model\n", "def call_model(messages):\n", " response = model.invoke(messages)\n", " # We return a list, because this will get added to the existing list\n", " return response\n", "\n", + "\n", "# Define the function to execute tools\n", "def call_tool(messages):\n", " # Based on the continue condition\n", @@ -251,7 +254,9 @@ " # We construct an ToolInvocation from the function_call\n", " action = ToolInvocation(\n", " tool=last_message.additional_kwargs[\"function_call\"][\"name\"],\n", - " tool_input=json.loads(last_message.additional_kwargs[\"function_call\"][\"arguments\"]),\n", + " tool_input=json.loads(\n", + " last_message.additional_kwargs[\"function_call\"][\"arguments\"]\n", + " ),\n", " )\n", " # We call the tool_executor and get back a response\n", " response = tool_executor.invoke(action)\n", @@ -279,6 +284,7 @@ "outputs": [], "source": [ "from langgraph.graph import MessageGraph, END\n", + "\n", "# Define a new graph\n", "workflow = MessageGraph()\n", "\n", @@ -307,13 +313,13 @@ " # If `tools`, then we call the tool node.\n", " \"continue\": \"action\",\n", " # Otherwise we finish.\n", - " \"end\": END\n", - " }\n", + " \"end\": END,\n", + " },\n", ")\n", "\n", "# We now add a normal edge from `tools` to `agent`.\n", "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge('action', 'agent')" + "workflow.add_edge(\"action\", \"agent\")" ] }, { @@ -377,6 +383,7 @@ ], "source": [ "from langchain_core.messages import HumanMessage\n", + "\n", "inputs = [HumanMessage(content=\"hi! I'm bob\")]\n", "for event in app.stream(inputs, {\"configurable\": {\"thread_id\": \"2\"}}):\n", " for k, v in event.items():\n", diff --git a/examples/plan-and-execute/img/plan-and-execute.png b/examples/plan-and-execute/img/plan-and-execute.png new file mode 100644 index 000000000..829f2aee8 Binary files /dev/null and b/examples/plan-and-execute/img/plan-and-execute.png differ diff --git a/examples/plan-and-execute/plan-and-execute.ipynb b/examples/plan-and-execute/plan-and-execute.ipynb new file mode 100644 index 000000000..c681480ba --- /dev/null +++ b/examples/plan-and-execute/plan-and-execute.ipynb @@ -0,0 +1,525 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "79b5811c-1074-495f-9722-8325b5e717d3", + "metadata": {}, + "source": [ + "# Plan-and-Execute\n", + "\n", + "This notebook shows how to create a \"plan-and-execute\" style agent. This is heavily inspired by the [Plan-and-Solve](https://arxiv.org/abs/2305.04091) paper as well as the [Baby-AGI](https://github.com/yoheinakajima/babyagi) project.\n", + "\n", + "The core idea is to first come up with a multi-step plan, and then go through that plan one item at a time.\n", + "After accomplishing a particular task, you can then revisit the plan and modify as appropriate.\n", + "\n", + "\n", + "The general computational graph looks like the following:\n", + "\n", + "\n", + "![plan-and-execute diagram](./img/plan-and-execute.png)\n", + "\n", + "\n", + "This compares to a typical [ReAct](https://arxiv.org/abs/2210.03629) style agent where you think one step at a time.\n", + "The advantages of this \"plan-and-execute\" style agent are:\n", + "\n", + "1. Explicit long term planning (which even really strong LLMs can struggle with)\n", + "2. Ability to use smaller/weaker models for the execution step, only using larger/better models for the planning step\n", + "\n", + "\n", + "The following walkthrough demonstrates how to do so in LangGraph. The resulting agent will leave a trace like the following example: ([link](https://smith.langchain.com/public/d46e24d3-dda6-44d5-9550-b618fca4e0d4/r))." + ] + }, + { + "cell_type": "markdown", + "id": "a44a72d6-7e0c-4478-9d20-4c09000420a8", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "First, we need to install the packages required." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b451b58a-89bd-424f-8c06-0d9fe325e01b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m23.3.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.0\u001b[0m\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpython3.11 -m pip install --upgrade pip\u001b[0m\n" + ] + } + ], + "source": [ + "!pip install --quiet -U langchain langchain_openai tavily-python" + ] + }, + { + "cell_type": "markdown", + "id": "35f267b0-98db-4a59-8b2c-a23f795576ff", + "metadata": {}, + "source": [ + "Next, we need to set API keys for OpenAI (the LLM we will use) and Tavily (the search tool we will use)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "ce438281-08d5-4804-afe7-e4089f7b016b", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import getpass\n", + "\n", + "os.environ[\"OPENAI_API_KEY\"] = getpass.getpass(\"OpenAI API Key:\")\n", + "os.environ[\"TAVILY_API_KEY\"] = getpass.getpass(\"Tavily API Key:\")" + ] + }, + { + "cell_type": "markdown", + "id": "be2d7981-3737-4134-8bef-d00d18d4e91d", + "metadata": {}, + "source": [ + "Optionally, we can set API key for LangSmith tracing, which will give us best-in-class observability." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "01f460d1-f26f-47d1-ae76-de74d5d851de", + "metadata": {}, + "outputs": [], + "source": [ + "os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n", + "os.environ[\"LANGCHAIN_API_KEY\"] = getpass.getpass(\"LangSmith API Key:\")\n", + "os.environ[\"LANGCHAIN_PROJECT\"] = \"Plan-and-execute\"" + ] + }, + { + "cell_type": "markdown", + "id": "6c5fb09a-0311-44c2-b243-d0e80de78902", + "metadata": {}, + "source": [ + "## Define Tools\n", + "\n", + "We will first define the tools we want to use. For this simple example, we will use a built-in search tool via Tavily. However, it is really easy to create your own tools - see documentation [here](https://python.langchain.com/docs/modules/agents/tools/custom_tools) on how to do that." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "25b9ec62-0675-4715-811c-9b32c635b22f", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "\n", + "tools = [TavilySearchResults(max_results=3)]" + ] + }, + { + "cell_type": "markdown", + "id": "3dcda478-fa80-4e3e-bb35-0f622fe73a31", + "metadata": {}, + "source": [ + "## Define our Execution Agent\n", + "\n", + "Now we will create the execution agent we want to use to execute tasks. \n", + "Note that for this example, we will be using the same execution agent for each task, but this doesn't HAVE to be the case." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "72d233ca-1dbf-4b43-b680-b3bf39e3691f", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain import hub\n", + "from langchain.agents import create_openai_functions_agent\n", + "from langchain_openai import ChatOpenAI\n", + "\n", + "# Get the prompt to use - you can modify this!\n", + "prompt = hub.pull(\"hwchase17/openai-functions-agent\")\n", + "# Choose the LLM that will drive the agent\n", + "llm = ChatOpenAI(model=\"gpt-4-turbo-preview\")\n", + "# Construct the OpenAI Functions agent\n", + "agent_runnable = create_openai_functions_agent(llm, tools, prompt)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "a3ea9bd3-87d9-4a78-aec6-8ab4bf34479b", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.prebuilt import create_agent_executor" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "998aebde-c204-494f-930c-14747ed34861", + "metadata": {}, + "outputs": [], + "source": [ + "agent_executor = create_agent_executor(agent_runnable, tools)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "746e697a-dec4-4342-a814-9b3456828169", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'input': 'who is the winnner of the us open',\n", + " 'chat_history': [],\n", + " 'agent_outcome': AgentFinish(return_values={'output': 'The winners of the US Open in 2023 are as follows:\\n\\n- **Golf:** Wyndham Clark won the 2023 US Open in golf, holding his nerve against Rory McIlroy.\\n \\n- **Tennis:** The 2023 US Open tennis tournament details include information about the event and its prize money, but the winner has not been specified in the provided information. As of the last update, Carlos Alcaraz won the 2022 US Open tennis title.'}, log='The winners of the US Open in 2023 are as follows:\\n\\n- **Golf:** Wyndham Clark won the 2023 US Open in golf, holding his nerve against Rory McIlroy.\\n \\n- **Tennis:** The 2023 US Open tennis tournament details include information about the event and its prize money, but the winner has not been specified in the provided information. As of the last update, Carlos Alcaraz won the 2022 US Open tennis title.'),\n", + " 'intermediate_steps': [(AgentActionMessageLog(tool='tavily_search_results_json', tool_input={'query': 'US Open winner 2023'}, log=\"\\nInvoking: `tavily_search_results_json` with `{'query': 'US Open winner 2023'}`\\n\\n\\n\", message_log=[AIMessage(content='', additional_kwargs={'function_call': {'arguments': '{\"query\":\"US Open winner 2023\"}', 'name': 'tavily_search_results_json'}})]),\n", + " '[{\\'url\\': \\'https://en.wikipedia.org/wiki/2023_U.S._Open_(golf)\\', \\'content\\': \\'Contents 2023 U.S. Open (golf) was selected to host the 123rd U.S. Open in June 2023. The USGA had made overtures to the club for at least 26 years. Final round[edit] Sunday, June 18, 2023 Third round[edit] Saturday, June 17, 2023Rory McIlroy falls short as Wyndham Clark holds nerve to win 2023 US Open. The Guardian. Archived from the original on June 19, 2023. Retrieved June 20, 2023.\\'}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2023_US_Open_(tennis)\\', \\'content\\': \"The 2023 US Open is the 143rd consecutive edition of the tournament and will take place at the USTA Billie Jean King The total overall prize money for the 2023 US Open totals $65 million, 8% more than the 2022 edition.[4] Contents 2023 US Open (tennis) Wheelchair boys\\' singles Dahnon Ward Wheelchair girls\\' singles Ksénia Chasteau contract with ESPN, in which the broadcaster holds exclusive rights to the entire tournament and the US Open Series.Carlos Alcaraz defeats Casper Ruud for 2022 US Open title, world No. 1 ranking. US Open. Archived from the original on September 12, 2022. Retrieved September\\\\xa0...\"}]')]}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "agent_executor.invoke(\n", + " {\"input\": \"who is the winnner of the us open\", \"chat_history\": []}\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "5cf66804-44b2-4904-b1a7-17ad70b551f5", + "metadata": {}, + "source": [ + "## Define the State\n", + "\n", + "Let's now start by defining the state the track for this agent.\n", + "\n", + "First, we will need to track the current plan. Let's represent that as a list of strings.\n", + "\n", + "Next, we should track previously executed steps. Let's represent that as a list of tuples (these tuples will contain the step and then the result)\n", + "\n", + "Finally, we need to have some state to represent the final response as well as the original input." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "8eeeaeea-8f10-4fbe-8e24-4e1a2381a009", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "from typing import List, Tuple, Annotated, TypedDict\n", + "import operator\n", + "\n", + "\n", + "class PlanExecute(TypedDict):\n", + " input: str\n", + " plan: List[str]\n", + " past_steps: Annotated[List[Tuple], operator.add]\n", + " response: str" + ] + }, + { + "cell_type": "markdown", + "id": "1dbd770a-9941-40a9-977e-4d55359eee21", + "metadata": {}, + "source": [ + "## Planning Step\n", + "\n", + "Let's now think about creating the planning step. This will use function calling to create a plan." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "4a88626d-6dfd-4488-87f0-a9a0dd6da44c", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.pydantic_v1 import BaseModel\n", + "\n", + "\n", + "class Plan(BaseModel):\n", + " \"\"\"Plan to follow in future\"\"\"\n", + "\n", + " steps: List[str] = Field(\n", + " description=\"different steps to follow, should be in sorted order\"\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "ec7b1867-1ea3-4df3-9a98-992a1c32ec49", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.chains.openai_functions import create_structured_output_runnable\n", + "from langchain_core.prompts import ChatPromptTemplate\n", + "\n", + "planner_prompt = ChatPromptTemplate.from_template(\n", + " \"\"\"For the given objective, come up with a simple step by step plan. \\\n", + "This plan should involve individual tasks, that if executed correctly will yield the correct answer. Do not add any superfluous steps. \\\n", + "The result of the final step should be the final answer. Make sure that each step has all the information needed - do not skip steps.\n", + "\n", + "{objective}\"\"\"\n", + ")\n", + "planner = create_structured_output_runnable(\n", + " Plan, ChatOpenAI(model=\"gpt-4-turbo-preview\", temperature=0), planner_prompt\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "67ce37b7-e089-479b-bcb8-c3f5d9874613", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Plan(steps=['Identify the current year.', 'Search for the Australia Open winner of the current year.', 'Find the hometown of the identified winner.'])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "planner.invoke(\n", + " {\"objective\": \"what is the hometown of the current Australia open winner?\"}\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "6e09ad9d-6f90-4bdc-bb43-b1ce94517c29", + "metadata": {}, + "source": [ + "## Re-Plan Step\n", + "\n", + "Now, let's create a step that re-does the plan based on the result of the previous step." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "ec2d12cc-016a-44d1-aa08-4c5ce1e8fe2a", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.chains.openai_functions import create_openai_fn_runnable\n", + "\n", + "\n", + "class Response(BaseModel):\n", + " \"\"\"Response to user.\"\"\"\n", + "\n", + " response: str\n", + "\n", + "\n", + "replanner_prompt = ChatPromptTemplate.from_template(\n", + " \"\"\"For the given objective, come up with a simple step by step plan. \\\n", + "This plan should involve individual tasks, that if executed correctly will yield the correct answer. Do not add any superfluous steps. \\\n", + "The result of the final step should be the final answer. Make sure that each step has all the information needed - do not skip steps.\n", + "\n", + "Your objective was this:\n", + "{input}\n", + "\n", + "Your original plan was this:\n", + "{plan}\n", + "\n", + "You have currently done the follow steps:\n", + "{past_steps}\n", + "\n", + "Update your plan accordingly. If no more steps are needed and you can return to the user, then respond with that. Otherwise, fill out the plan. Only add steps to the plan that still NEED to be done. Do not return previously done steps as part of the plan.\"\"\"\n", + ")\n", + "\n", + "\n", + "replanner = create_openai_fn_runnable(\n", + " [Plan, Response],\n", + " ChatOpenAI(model=\"gpt-4-turbo-preview\", temperature=0),\n", + " replanner_prompt,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "859abd13-6ba0-45ad-b341-e652dd5f755b", + "metadata": {}, + "source": [ + "## Create the Graph\n", + "\n", + "We can now create the graph!" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "6c8e0dad-bcea-4c9a-8922-0d820892e2d0", + "metadata": {}, + "outputs": [], + "source": [ + "async def execute_step(state: PlanExecute):\n", + " task = state[\"plan\"][0]\n", + " agent_response = await agent_executor.ainvoke({\"input\": task, \"chat_history\": []})\n", + " return {\n", + " \"past_steps\": (task, agent_response[\"agent_outcome\"].return_values[\"output\"])\n", + " }\n", + "\n", + "\n", + "async def plan_step(state: PlanExecute):\n", + " plan = await planner.ainvoke({\"objective\": state[\"input\"]})\n", + " return {\"plan\": plan.steps}\n", + "\n", + "\n", + "async def replan_step(state: PlanExecute):\n", + " output = await replanner.ainvoke(state)\n", + " if isinstance(output, Response):\n", + " return {\"response\": output.response}\n", + " else:\n", + " return {\"plan\": output.steps}\n", + "\n", + "\n", + "def should_end(state: PlanExecute):\n", + " if state[\"response\"]:\n", + " return True\n", + " else:\n", + " return False" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "e954cea0-5ccc-46c2-a27b-f5b7185b597d", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import StateGraph, END\n", + "\n", + "workflow = StateGraph(PlanExecute)\n", + "\n", + "# Add the plan node\n", + "workflow.add_node(\"planner\", plan_step)\n", + "\n", + "# Add the execution step\n", + "workflow.add_node(\"agent\", execute_step)\n", + "\n", + "# Add a replan node\n", + "workflow.add_node(\"replan\", replan_step)\n", + "\n", + "workflow.set_entry_point(\"planner\")\n", + "\n", + "# From plan we go to agent\n", + "workflow.add_edge(\"planner\", \"agent\")\n", + "\n", + "# From agent, we replan\n", + "workflow.add_edge(\"agent\", \"replan\")\n", + "\n", + "workflow.add_conditional_edges(\n", + " \"replan\",\n", + " # Next, we pass in the function that will determine which node is called next.\n", + " should_end,\n", + " {\n", + " # If `tools`, then we call the tool node.\n", + " True: END,\n", + " False: \"agent\",\n", + " },\n", + ")\n", + "\n", + "# Finally, we compile it!\n", + "# This compiles it into a LangChain Runnable,\n", + "# meaning you can use it as you would any other runnable\n", + "app = workflow.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "b8ac1f67-e87a-427c-b4f7-44351295b788", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'plan': ['Wait until the 2024 Australian Open concludes.', 'Identify the winner of the 2024 Australian Open.', \"Research the winner's biography to find their hometown.\", 'The hometown of the 2024 Australian Open winner is the result found in the previous step.']}\n", + "{'past_steps': ('Wait until the 2024 Australian Open concludes.', \"I can't wait for real-time events. However, I can help you find out the schedule, expected dates, or any other information regarding the 2024 Australian Open. How can I assist you further?\")}\n", + "{'plan': ['Identify the winner of the 2024 Australian Open.', \"Research the winner's biography to find their hometown.\", 'The hometown of the 2024 Australian Open winner is the result found in the previous step.']}\n", + "{'past_steps': ('Identify the winner of the 2024 Australian Open.', \"The winners of the 2024 Australian Open were Jannik Sinner in the men's singles and Aryna Sabalenka in the women's singles. Jannik Sinner defeated Daniil Medvedev in the final, while specific details about Aryna Sabalenka's match are not provided in the information retrieved.\")}\n", + "{'plan': [\"Research Jannik Sinner's biography to find his hometown.\", \"Research Aryna Sabalenka's biography to find her hometown.\", 'The hometowns of the 2024 Australian Open winners are the results found in the previous steps.']}\n", + "{'past_steps': (\"Research Jannik Sinner's biography to find his hometown.\", 'Jannik Sinner was born in San Candido (Innichen), Italy, on August 16, 2001. This is considered his hometown.')}\n", + "{'plan': [\"Research Aryna Sabalenka's biography to find her hometown.\", 'The hometowns of the 2024 Australian Open winners are the results found in the previous steps.']}\n", + "{'past_steps': (\"Research Aryna Sabalenka's biography to find her hometown.\", 'Aryna Sabalenka was born in Minsk, the capital of Belarus.')}\n", + "{'response': 'The hometowns of the 2024 Australian Open winners are San Candido (Innichen), Italy for Jannik Sinner, and Minsk, Belarus for Aryna Sabalenka. No further steps are needed as the final answer has been reached.'}\n" + ] + } + ], + "source": [ + "from langchain_core.messages import HumanMessage\n", + "\n", + "config = {\"recursion_limit\": 50}\n", + "inputs = {\"input\": \"what is the hometown of the 2024 Australia open winner?\"}\n", + "async for event in app.astream(inputs, config=config):\n", + " for k, v in event.items():\n", + " if k != \"__end__\":\n", + " print(v)" + ] + }, + { + "cell_type": "markdown", + "id": "8bf585a9-0f1e-4910-bd00-65e7bb05b6e6", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "Congrats on making a plan-and-execute agent! One known limitations of the above design is that each task is still executed in sequence, meaning embarassingly parallel operations all add to the total execution time. You could improve on this by having each task represented as a DAG (similar to LLMCompiler), rather than a regular list." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ad8f7955-2cc9-4ebb-8c41-13abb3351a24", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/rag/langgraph_agentic_rag.ipynb b/examples/rag/langgraph_agentic_rag.ipynb new file mode 100644 index 000000000..07ca74be3 --- /dev/null +++ b/examples/rag/langgraph_agentic_rag.ipynb @@ -0,0 +1,557 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "625868e8-46cb-4232-99de-e95aee53c3a3", + "metadata": {}, + "outputs": [], + "source": [ + "! pip install langchain_community tiktoken langchain-openai langchainhub chromadb langchain langgraph" + ] + }, + { + "cell_type": "markdown", + "id": "425fb020-e864-40ce-a31f-8da40c73d14b", + "metadata": {}, + "source": [ + "# LangGraph Retrieval Agent\n", + "\n", + "[Retrieval Agents](https://python.langchain.com/docs/use_cases/question_answering/conversational_retrieval_agents) are useful when we want to make decisions about whether to retrieve from an index.\n", + "\n", + "To implement a retrieval agent, we simple need to give an LLM access to a retriever tool.\n", + "\n", + "We can incorperate this into [LangGraph](https://python.langchain.com/docs/langgraph).\n", + "\n", + "## Retriever\n", + "\n", + "First, we index 3 blog posts." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "e50c9efe-4abe-42fa-b35a-05eeeede9ec6", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.text_splitter import RecursiveCharacterTextSplitter\n", + "from langchain_community.document_loaders import WebBaseLoader\n", + "from langchain_community.vectorstores import Chroma\n", + "from langchain_openai import OpenAIEmbeddings\n", + "\n", + "urls = [\n", + " \"https://lilianweng.github.io/posts/2023-06-23-agent/\",\n", + " \"https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/\",\n", + " \"https://lilianweng.github.io/posts/2023-10-25-adv-attack-llm/\",\n", + "]\n", + "\n", + "docs = [WebBaseLoader(url).load() for url in urls]\n", + "docs_list = [item for sublist in docs for item in sublist]\n", + "\n", + "text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(\n", + " chunk_size=100, chunk_overlap=50\n", + ")\n", + "doc_splits = text_splitter.split_documents(docs_list)\n", + "\n", + "# Add to vectorDB\n", + "vectorstore = Chroma.from_documents(\n", + " documents=doc_splits,\n", + " collection_name=\"rag-chroma\",\n", + " embedding=OpenAIEmbeddings(),\n", + ")\n", + "retriever = vectorstore.as_retriever()" + ] + }, + { + "cell_type": "markdown", + "id": "225d2277-45b2-4ae8-a7d6-62b07fb4a002", + "metadata": {}, + "source": [ + "Then we create a retriever tool." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "0b97bdd8-d7e3-444d-ac96-5ef4725f9048", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.tools.retriever import create_retriever_tool\n", + "\n", + "tool = create_retriever_tool(\n", + " retriever,\n", + " \"retrieve_blog_posts\",\n", + " \"Search and return information about Lilian Weng blog posts on LLM agents, prompt engineering, and adversarial attacks on LLMs.\",\n", + ")\n", + "\n", + "tools = [tool]\n", + "\n", + "from langgraph.prebuilt import ToolExecutor\n", + "\n", + "tool_executor = ToolExecutor(tools)" + ] + }, + { + "cell_type": "markdown", + "id": "fe6e8f78-1ef7-42ad-b2bf-835ed5850553", + "metadata": {}, + "source": [ + "## Agent state\n", + " \n", + "We will defined a graph.\n", + "\n", + "A `state` object that it passes around to each node.\n", + "\n", + "Our state will be a list of `messages`.\n", + "\n", + "Each node in our graph will append to it." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "0e378706-47d5-425a-8ba0-57b9acffbd0c", + "metadata": {}, + "outputs": [], + "source": [ + "import operator\n", + "from typing import Annotated, Sequence, TypedDict\n", + "\n", + "from langchain_core.messages import BaseMessage\n", + "\n", + "\n", + "class AgentState(TypedDict):\n", + " messages: Annotated[Sequence[BaseMessage], operator.add]" + ] + }, + { + "attachments": { + "7ad1a116-28d7-473f-8cff-5f2efd0bf118.png": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABk8AAAJNCAYAAACY1uLnAAAMP2lDQ1BJQ0MgUHJvZmlsZQAASImVVwdYU8kWnluSkEBCCSAgJfQmCEgJICWEFkB6EWyEJEAoMQaCiB1dVHDtYgEbuiqi2AGxI3YWwd4XRRSUdbFgV96kgK77yvfO9829//3nzH/OnDu3DADqp7hicQ6qAUCuKF8SGxLAGJucwiB1AwTggAYIgMDl5YlZ0dERANrg+e/27ib0hnbNQab1z/7/app8QR4PACQa4jR+Hi8X4kMA4JU8sSQfAKKMN5+aL5Zh2IC2BCYI8UIZzlDgShlOU+B9cp/4WDbEzQCoqHG5kgwAaG2QZxTwMqAGrQ9iJxFfKAJAnQGxb27uZD7EqRDbQB8xxDJ9ZtoPOhl/00wb0uRyM4awYi5yUwkU5olzuNP+z3L8b8vNkQ7GsIJNLVMSGiubM6zb7ezJ4TKsBnGvKC0yCmItiD8I+XJ/iFFKpjQ0QeGPGvLy2LBmQBdiJz43MBxiQ4iDRTmREUo+LV0YzIEYrhC0UJjPiYdYD+KFgrygOKXPZsnkWGUstC5dwmYp+QtciTyuLNZDaXYCS6n/OlPAUepjtKLM+CSIKRBbFAgTIyGmQeyYlx0XrvQZXZTJjhz0kUhjZflbQBwrEIUEKPSxgnRJcKzSvzQ3b3C+2OZMISdSiQ/kZ8aHKuqDNfO48vzhXLA2gYiVMKgjyBsbMTgXviAwSDF3rFsgSohT6nwQ5wfEKsbiFHFOtNIfNxPkhMh4M4hd8wrilGPxxHy4IBX6eLo4PzpekSdelMUNi1bkgy8DEYANAgEDSGFLA5NBFhC29tb3witFTzDgAgnIAALgoGQGRyTJe0TwGAeKwJ8QCUDe0LgAea8AFED+6xCrODqAdHlvgXxENngKcS4IBznwWiofJRqKlgieQEb4j+hc2Hgw3xzYZP3/nh9kvzMsyEQoGelgRIb6oCcxiBhIDCUGE21xA9wX98Yj4NEfNheciXsOzuO7P+EpoZ3wmHCD0EG4M0lYLPkpyzGgA+oHK2uR9mMtcCuo6YYH4D5QHSrjurgBcMBdYRwW7gcju0GWrcxbVhXGT9p/m8EPd0PpR3Yio+RhZH+yzc8jaXY0tyEVWa1/rI8i17SherOHen6Oz/6h+nx4Dv/ZE1uIHcTOY6exi9gxrB4wsJNYA9aCHZfhodX1RL66BqPFyvPJhjrCf8QbvLOySuY51Tj1OH1R9OULCmXvaMCeLJ4mEWZk5jNY8IsgYHBEPMcRDBcnF1cAZN8XxevrTYz8u4Hotnzn5v0BgM/JgYGBo9+5sJMA7PeAj/+R75wNE346VAG4cIQnlRQoOFx2IMC3hDp80vSBMTAHNnA+LsAdeAN/EATCQBSIB8lgIsw+E65zCZgKZoC5oASUgWVgNVgPNoGtYCfYAw6AenAMnAbnwGXQBm6Ae3D1dIEXoA+8A58RBCEhVISO6CMmiCVij7ggTMQXCUIikFgkGUlFMhARIkVmIPOQMmQFsh7ZglQj+5EjyGnkItKO3EEeIT3Ia+QTiqFqqDZqhFqhI1EmykLD0Xh0ApqBTkGL0PnoEnQtWoXuRuvQ0+hl9Abagb5A+zGAqWK6mCnmgDExNhaFpWDpmASbhZVi5VgVVos1wvt8DevAerGPOBGn4wzcAa7gUDwB5+FT8Fn4Ynw9vhOvw5vxa/gjvA//RqASDAn2BC8ChzCWkEGYSighlBO2Ew4TzsJnqYvwjkgk6hKtiR7wWUwmZhGnExcTNxD3Ek8R24mdxH4SiaRPsif5kKJIXFI+qYS0jrSbdJJ0ldRF+qCiqmKi4qISrJKiIlIpVilX2aVyQuWqyjOVz2QNsiXZixxF5pOnkZeSt5EbyVfIXeTPFE2KNcWHEk/JosylrKXUUs5S7lPeqKqqmql6qsaoClXnqK5V3ad6QfWR6kc1LTU7NbbaeDWp2hK1HWqn1O6ovaFSqVZUf2oKNZ+6hFpNPUN9SP1Ao9McaRwanzabVkGro12lvVQnq1uqs9Qnqhepl6sfVL+i3qtB1rDSYGtwNWZpVGgc0bil0a9J13TWjNLM1VysuUvzoma3FknLSitIi681X2ur1hmtTjpGN6ez6Tz6PPo2+ll6lzZR21qbo52lXaa9R7tVu09HS8dVJ1GnUKdC57hOhy6ma6XL0c3RXap7QPem7qdhRsNYwwTDFg2rHXZ12Hu94Xr+egK9Ur29ejf0Pukz9IP0s/WX69frPzDADewMYgymGmw0OGvQO1x7uPdw3vDS4QeG3zVEDe0MYw2nG241bDHsNzI2CjESG60zOmPUa6xr7G+cZbzK+IRxjwndxNdEaLLK5KTJc4YOg8XIYaxlNDP6TA1NQ02lpltMW00/m1mbJZgVm+01e2BOMWeap5uvMm8y77MwsRhjMcOixuKuJdmSaZlpucbyvOV7K2urJKsFVvVW3dZ61hzrIusa6/s2VBs/myk2VTbXbYm2TNts2w22bXaonZtdpl2F3RV71N7dXmi/wb59BGGE5wjRiKoRtxzUHFgOBQ41Do8cdR0jHIsd6x1fjrQYmTJy+cjzI785uTnlOG1zuues5RzmXOzc6Pzaxc6F51Lhcn0UdVTwqNmjGka9crV3FbhudL3tRncb47bArcntq7uHu8S91r3Hw8Ij1aPS4xZTmxnNXMy84EnwDPCc7XnM86OXu1e+1wGvv7wdvLO9d3l3j7YeLRi9bXSnj5kP12eLT4cvwzfVd7Nvh5+pH9evyu+xv7k/33+7/zOWLSuLtZv1MsApQBJwOOA924s9k30qEAsMCSwNbA3SCkoIWh/0MNgsOCO4JrgvxC1kesipUEJoeOjy0FscIw6PU83pC/MImxnWHK4WHhe+PvxxhF2EJKJxDDombMzKMfcjLSNFkfVRIIoTtTLqQbR19JToozHEmOiYipinsc6xM2LPx9HjJsXtinsXHxC/NP5egk2CNKEpUT1xfGJ14vukwKQVSR1jR46dOfZyskGyMLkhhZSSmLI9pX9c0LjV47rGu40vGX9zgvWEwgkXJxpMzJl4fJL6JO6kg6mE1KTUXalfuFHcKm5/GietMq2Px+at4b3g+/NX8XsEPoIVgmfpPukr0rszfDJWZvRk+mWWZ/YK2cL1wldZoVmbst5nR2XvyB7IScrZm6uSm5p7RKQlyhY1TzaeXDi5XWwvLhF3TPGasnpKnyRcsj0PyZuQ15CvDX/kW6Q20l+kjwp8CyoKPkxNnHqwULNQVNgyzW7aomnPioKLfpuOT+dNb5phOmPujEczWTO3zEJmpc1qmm0+e/7srjkhc3bOpczNnvt7sVPxiuK385LmNc43mj9nfucvIb/UlNBKJCW3Fngv2LQQXyhc2Lpo1KJ1i76V8ksvlTmVlZd9WcxbfOlX51/X/jqwJH1J61L3pRuXEZeJlt1c7rd85wrNFUUrOleOWVm3irGqdNXb1ZNWXyx3Ld+0hrJGuqZjbcTahnUW65at+7I+c/2NioCKvZWGlYsq32/gb7i60X9j7SajTWWbPm0Wbr69JWRLXZVVVflW4taCrU+3JW47/xvzt+rtBtvLtn/dIdrRsTN2Z3O1R3X1LsNdS2vQGmlNz+7xu9v2BO5pqHWo3bJXd2/ZPrBPuu/5/tT9Nw+EH2g6yDxYe8jyUOVh+uHSOqRuWl1ffWZ9R0NyQ/uRsCNNjd6Nh486Ht1xzPRYxXGd40tPUE7MPzFwsuhk/ynxqd7TGac7myY13Tsz9sz15pjm1rPhZy+cCz535jzr/MkLPheOXfS6eOQS81L9ZffLdS1uLYd/d/v9cKt7a90VjysNbZ5tje2j209c9bt6+lrgtXPXOdcv34i80X4z4ebtW+Nvddzm3+6+k3Pn1d2Cu5/vzblPuF/6QONB+UPDh1V/2P6xt8O94/ijwEctj+Me3+vkdb54kvfkS9f8p9Sn5c9MnlV3u3Qf6wnuaXs+7nnXC/GLz70lf2r+WfnS5uWhv/z/aukb29f1SvJq4PXiN/pvdrx1fdvUH93/8F3uu8/vSz/of9j5kfnx/KekT88+T/1C+rL2q+3Xxm/h3+4P5A4MiLkSrvxXAIMNTU8H4PUOAKjJANDh/owyTrH/kxui2LPKEfhPWLFHlJs7ALXw/z2mF/7d3AJg3za4/YL66uMBiKYCEO8J0FGjhtrgXk2+r5QZEe4DNkd+TctNA//GFHvOH/L++Qxkqq7g5/O/AFFLfCfKufu9AAAAVmVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAADkoYABwAAABIAAABEoAIABAAAAAEAAAZPoAMABAAAAAEAAAJNAAAAAEFTQ0lJAAAAU2NyZWVuc2hvdNqyY5cAAAHXaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjU4OTwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xNjE1PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CisSdn8AAEAASURBVHgB7N0HfBTl1sfxo0DovfcmKEhVmkoTe+9y8Vqu2HtFRa8N8VpfsTdQrIhiF1REugUpUgUE6b0HCBCq7/wnPrOzm03YJBAC/J7PZ91n+sx3J5jM2fOcQ/72mtEQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQR8gUNxQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQiAgQPIlY0EMAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEjOAJNwECCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggEBIgeBLCoIsAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIEDzhHkAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEQgIET0IYdBFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABgifcAwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASIDgSQiDLgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBA8IR7AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAICRA8CWHQRQABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQInnAPIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIhAYInIQy6CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggADBE+4BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAkQPAkhEEXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEECB4wj2AAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCIQECJ6EMOgigAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgRPuAcQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgZAAwZMQBl0EEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgOAJ9wACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggEBIgeBLCoIsAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIEDzhHkAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEQgIET0IYdBFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABgifcAwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASIDgSQiDLgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBA8IR7AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAICRA8CWHQRQABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQInnAPIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIhAYInIQy6CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggADBE+4BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAkQPAkhEEXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEECB4wj2AAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCIQECJ6EMOgigAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgRPuAcQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgZAAwZMQBl0EEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgOAJ9wACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggEBIgeBLCoIsAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIEDzhHkAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEQgIET0IYdBFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABgifcAwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASIDgSQiDLgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBA8IR7AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAICRA8CWHQRQABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQInnAPIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIhAYInIQy6CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggADBE+4BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAkQPAkhEEXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEECB4wj2AAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCIQECJ6EMOgigAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgRPuAcQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgZAAwZMQBl0EEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgOAJ9wACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggEBIgeBLCoIsAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIEDzhHkAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEQgIET0IYdBFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABgifcAwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASIDgSQiDLgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBA8IR7AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAICRA8CWHQRQABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQInnAPIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIhAYInIQy6CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggADBE+4BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAkQPAkhEEXAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEECB4wj2AAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCIQECJ6EMOgigAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgRPuAcQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgZAAwZMQBl0EEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgOAJ9wACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggEBIgeBLCoIsAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIEDzhHkAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEQgIET0IYdBFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABgifcAwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBASIDgSQiDLgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBA8IR7AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBAICRA8CWHQRQABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQInnAPIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIhAYInIQy6CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggADBE+4BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAkkD/Up4sAAggggAACCCCAAAIIIIAAArkk8N5779n48ePt0EMPtWeffdby5897f6Lv2LHD7r77btu1a5c1a9bMunbtmks6uXOYjRs32gMPPBD3YHfddZfVrFkz7jJmIoAAAggggMCBL3DI31478C+TK0QAAQQQQAABBBBAAAEEEEBg7wssXbrUPvvsM5sxY4ZNnTrV1qxZY0ceeaT/OvHEE61t27bBSdx00002cOBAf3rmzJlWuHDhYFle6Wzbts3q1avnn85pp51mr7/++l49tVmzZlnPnj3jHuOQQw6xKlWqWO3ate3MM8/0+3FXzMLMFStWWKtWreJu8eWXX1rz5s3jLmMmAggggAACCBz4Annvay0HvjlXiAACCCCAAAIIIIAAAgggcAAKDBo0yLp162abNm2KurqxY8eaXn379rV7773XbrjhBlMggJZeYP369TZy5Mj0C2LmPP744/bwww/nOBOmaNGidsUVVwR7nzRpkk2ePDmYpoMAApkLzF2+yT7+ZbHNWLjRFixLse3bd1mVCkWsfrXidupRFa19w3KZ74ClvsD2nX/bzzNW+/0qZQpb/SrFkEEAgTwgQPAkD3wInAICCCCAAAIIIIAAAggggMD+LfDuu+/aQw89FFyEsjWOPfZYK1u2rI0ZM8Z++eUXf1mfPn2sc+fO/vxgZTpxBRo0aGBVq1YNlimLZ+LEicH0o48+ag0bNrQ2bdoE87LaKVasmPXo0SPYTJk1BE8CDjoIZCrQb/Qie+GzWenWWeQFVPQaOn65de5Uw+44q54XME63GjNCAms3brV7+0zx5xzbpJz16to0tJQuAgjsKwGCJ/tKnuMigAACCCCAAAIIIIAAAggcEALJycn21FNPBddy55132s03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IECgh8MffvihValSJdOzGzRokHXr1s02bdoUtZ6CB3r17dvX7r33Xrvhhhu8bw3vv18brlChQmBTunTpqGuNnVi3bp116dLFn33ppZfa448/HrvKbqezcrzd7mwfr6AH+gpOuTZp0iSbPHmym9wr7wsWLLCRI0cmtO+KFSsmtF5eWil//vx2/vnn+6/777/frrvuOhs9erT/c/jwww/7wcy8dL6cy+4Flq1LtUufHWspm7b7K+c79BBr4gUMWniv1vXLRO3g2ld+t+R/1rvyxJp22lHRgZUXB/1lP/2xxqqVL2zPXdkkats9PbF5606bPHudv9uSRQt4wZOcH+GkphUsJXW7TZidbNPmJJuycXSMi5781d67q5WVLZaU84OwBwQQyJYAwZNssbERAggggAACCCCAAAIIIIDA/iywatUqv26CrkFDEqnmSZky0Q/sYq9PdRYeeuihYHa9evXs2GOPNQ0pNGbMGPvll1/8ZX369LHOnTv784OV97POE0884QeClH1z1VVX7fWzz+3j7c0LKlasWFRWz+uvv77Xgyfh6+nQoYMVKFAgPCuqv79naSg49fbbb5syovRzN378eP+ljDHa/iPw3Fezg8BJMS8I0ffOllajbOG4FzB93nrb/k9NkNe/nZsuePLn4o22YGmKrduwNe72eX1mhZIF7bqTvYy9k81mLUmxa14cb6lekGb1uq32xuB5dv8Fh+f1S+D8EDhgBQieHLAfLReGAAIIIIAAAggggAACCCCQkYACIa5pCKPdBU6Sk5PtqaeecpvYnXfeaTfffLPly5c2pIrqpgwYMMAUBPj000/368CJLlKZOI899lhwvXu7k9vH29vXsy/3/+qrr5oCOAdyS0pKsptuuskPnug6X3vtNb/+yYF8zQfSta1ITrVRk1b6l1TIG5bq4/taW7niBRO6xOWrt9g0b5ivRjVKJLT+/rZS/arFrN+9re2inr/6GSgDf15iN59e10oU5hHu/vZZcr4HhgA/eQfG58hVIIAAAggggAACCCCAAAIIZEHg+++/D9a+8MILg35GHWUPuKG6lImhYElsUwH28847zzTEUGxT8EU1KaZPn24aYkkF2JUBcMEFF5i+SR/bvvrqK39dFa6/8sor/ToPymzR9nXr1rWTTz7ZOnXqFLuZP71r1y6/PoS+ka+6LPXr17czzjgj01okf/31lx/8ibfDs88+26/nEl6mOi9vvvmmPyslJSVYpHNUACm2de3a1cLDRWX1eLH707T28d133/nXqKHDGjZsaM2aNfOv9dBDD43aJHy++owKFixow4YNs59++sm0buPGje0///mPlSpVKmo7TUybNs2/VgXK9NkqG0c1bo4++mirUSPn9Q7SHXAfzFAGx4gRI/wMmeLFi/uGJ510UqZnktF9pmysl19+2f95kZHu1dimnyX9PMycOdNmzZrlZ38dfvjh/s+D6uYk0lRbSP6qyfLjjz+a6qLE+9lLZF+sk7sCb/wwPzjghR2qJxw4cRu9N3yBPX1FYzd5wL1XLVPYTmlT2b79ZakfQHnXu95bvAAKDQEEcl8g/W90uX8OHBEBBBBAAAEEEEAAAQQQQACBXBWYPXu2fzwNcRTvgXnsyajWiWvXX3+966Z7j/fwduLEif7QV3qA75rqo3z88cfWu3dv/8F8gwYN3CL//YcffrCBAwf6GSwlSpSwe+65J1iubT/66CO79dZb7a677grmq7N582a7++67LXy+CqL069cvasixqI28ifnz55sCRPHaEUcckS54snr16rjrz507N+78s846Kyp4ktXjxZ5X//79/doy4flu2DQ9lH/uuecsXKtF9u769MD9pZdeCoqOax96+P7ee+/ZN998Y1WrVg3v1g/OKJgVr6nGy4MPPmiFChWKt3i/mKdMlXBWlU568ODBmQ7Xltl9Juf/+7//869dtV9igycKRqkmkIIesU11iJ5//vl028Sup2kFvU4//fTgc125cuVuaxbF2w/zcl9g9JS0rBMd+ZL21bN8AiMnrrSUzjutWKG0zL/d7WBNyjbrP3qRTfcyVpZ4mSvVKxSxRjVL2CXtaljxDDI6vLIj9vHPi23c7LU2xxtKq3blonZWy8pWr2rx3R3O5q3YZF+MXWozF220lV5tlxoVi1pj73gqLl84KbFzvuL4mn7wRAcbOWUVwZPdqrMCAntHgODJ3nFlrwgggAACCCCAAAIIIIAAAnlUYP369cGZJfItd32j3T3obdeunam4eaJN37D/97//HWStKMukadOm/jf8tUz7vfbaa/0siHh1KvTQv1evXn52Sng7Hf/FF1+0c889189Ecefz1ltvRQVOlDWiwvUKDrgH2m7d8LvqtnTs2DGYtWTJEnMBpmBmqKPsBPdQfMuWLX7x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yodqiVQtGwmkL1gVGc7LnePO6H9W3WyrUykyVJ6Kw//yXKcMXy9d0yzYLqPOmpRttnpd2rBjZUtxb2fkxHwE9rYAmSd7W5j9I4AAAggggAACCCCAAAII5DmBq666yj744AP/vPr06WNnnXVWpt+Cb9KkiZ199tn29ddf+9vceOONdsopp1iHDh1MBdw3b97sP8j//fff7aSTTrJLL73UX++6666zL774wu/36NHDL5CtQMmECRNMx3XtP//5j+tm+/2II47ws030jX5lSdx999128cUXm7IH9G3/1157Le6+FWRRBk44MyWc1aEH/uH6Ii1atLDwkE/a6VFHHWXKAlAwqnPnzta1a1e/4LiOrQLrumYNeaWWneNpO3fM22+/3VxGiI7VvXt3UwBHzrp2NWUWqQh6Tppq0ihQoACKPAcMGGDHHHOMaQg2BU6ef/75YPdarswH3Se1atUK5qsTDjb07NnTX3b44Yfb6tWrbdq0af69ovPdU02ZUZllUimo1L59e79A/LXXXmu9evXyD6179p577jFlEukz/+ijj+KeUnbvM+1MPzfar+6T3r172+DBg+344483BTPlpyLy8+bNs3/9619BYCfuSXgz33777WDRTTfdFPTp5H2BJnVL2i9TVvvBiy/HLrVL2mU9S6yhV3ukcvnCtmzVlmB4rtgrr12lmE2elVak/d0RC+zm0+oGq/QeMj/o16sayVypXSEynNxnPy32z02BGNe+HLPEdaPelQ2jYI2GAJvsFYbXdZ3bqkrUOlmZ+Gj0omD1o+qXDvp0EEAgdwUO8X5pySBmmrsnwtEQQAABBBBAAAEEEEAAAQQQyE2B66+/3lRcW+20006zF154IdNvrycnJ9sjjzwSBEMyOtd27doFgRmt89hjj0UFSmK3u+uuu+zWW2+Nmq2HwQMHDvTnzZw5M+phuOq0tG7d2l92xRVXmIIyro0bN84uvPBCNxn1ruCFy3wIb7dt2zZ/eLGolTOZGD58uB+cCK+iIMAZZ5wRnhXVv/POO81l72TneNqZCzBoe12jyzqIOtA/E8rqUYDANdUnUVBLTeeh8wm3//73v+YygWToskUUcMooQ0JBJNVV0XBurt1www123333ucngXYG3jM739ddf9++/YOVsdHTvPvfccwltqYDaM88846+rYIWCTBkNt+aGt9O7PnfXMrvPwnVN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irglARIgARIggWgToHgSbXS8kARIgARIgARIgARIgARIgARIgARIgATijoARUFatWiV16tSJu4F4qOemTZtqy+PGjQvVQ4YMGfT4zJkzcvPmTds5E9IsU6ZMtjLukAAJkAAJkEB0CVA8iS45XkcCJEACJEACJEACJEACJEACJEACJEACcUwAAkpAQIAmV69UqVIcj8a93SOHSdWqVW3J4E3ryP2SMmVKPVy4cKFuEcYLieJh+fLl0y3fSIAESIAESCAmBCiexIQeryUBEiABEiABEiABEiABEiABEiABEiCBOCZw+PBhSZUqlZw6dUpM6Ko4HpLbum/ZsmWYthIkSCC9evXS8h49esirr74qpUuX1mTxEFxq1aoV5hoWkAAJkAAJkEBUCVA8iSox1icBEiABEiABEiABEiABEiABEiABEiABLyOAvCAIZ3Xnzh3JkSOHXL9+3ctGGPlwIIrAEib8Z7mqcuXKAk8Tx3KIKr1791YPlJ07d+r5ChUqyJQpUyRx4sR6zDcSIAESIAESiAmBf34bxaQVXksCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACfkIgwRPL/GQunAYJkAAJkAAJkAAJkAAJkAAJkAAJkAAJxGsCL774ophE8mvWrJFs2bL5NQ8sa50/f15Sp04tyZMn9+u5cnIkQAIkQAKxS4CeJ7HLm72RAAmQAAmQAAmQAAmQAAmQAAmQAAmQgMcI/P7771KoUCFt//nnnxeE83LVOnXqJCNHjnS1ulfUQ6ivTJkyUTjxirvBQZAACZCAfxGgeOJf95OzIQESIAESIAESIAESIAESIAESIAESiOcEFi9erAnUgaF27dqydu1al4js2LFDvvjiC1mxYoVL9VmJBEiABEiABPyZAMUTf767nBsJkAAJkAAJWATwBCGShtJIgARIgARIgARIgATiD4E5c+bIc889pxNu0aKFQFCJzHr16qVVhg4dqonnI6vP8yRAAiRAAiTgzwQonvjz3eXcSIAESIAE4jWBZcuWSYECBeSXX37RJw7jNQxOngRIgARIgARIgATiIYHJkydLtWrVdObvvPOOTJs2LUIKr776qhQrVkxDff3vf/+LsC5PkgAJkAAJkIC/E2DCeH+/w5wfCZAACZBAvCJw7949wVOGeK1fv17nHhAQIIcPH45XHDhZEiABEiAB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EaIrPJEQizoQT9AvBEXjSYDrkZPiypUruvCDfjAubGPTwARzhUCA8YVn8JhAPHnk08A4w5tveNdHt9zV8UXWPoQe5IHBE8q4J2CPe4EX7o2joT5CvSGRu73njmM9V48hKEEsAmd8xhz7hOM9PicQsOxDpzm272o9c50rn1FTl1sSIAES8GYCeDAHeczgjWJv+J2NhyLsDWIKwjTSSIAESIAESMAfCVA88ce7yjmRAAmQAAn4PAF74WTmzJlStmzZMHP6+eef9elvnEDcaTyxTyMBEiABEiABEiABEiABdxCApyT+3lywYIF69TlrE96YyHdGIwESIAESIAF/JEDxxB/vKudEAiRAAiTg0wTshZOJEydq7H5nE0LYHPxDW716dc2J4KwOy0iABEiABEiABEiABEggpgTgiYJcVwgja2/wKjQhIu3LuU8CJEACJEAC/kAgrN+8P8yKcyABEiABEiABHyVgL5wgnwmSdDozhOpasmSJnqpbt66zKiwjARIgARIgARIgARIgAbcQaNCggYwbN05z7XXq1MkW+hJhEvv06eOWPtgICZAACZAACXgbAYon3nZHOB4SIAESIIF4S2D06NEycuRInT/24VESniGBNvI/IFFx/fr1w6vGchIgARIgARIgARIgARJwGwEkle/Zs6ccOHBASpcure1CQKGRAAmQAAmQgD8SSOSPk+KcSIAESIAESMDXCMDLZMiQITrs4cOHS506dSKcggmZ0Lhx4wjr8SQJkAAJkAAJkAAJkAAJeIIAQnnBazpBggSeaJ5tkgAJkAAJkECcE2DOkzi/BRwACZAACZBAfCcwYcIE+c9//qMYBg0aJC1btowQyeXLl6VUqVISEhIiixYtktSpU0dYnydJgARIgARIgARIgARIgARIgARIgARIgASiRoCeJ1HjxdokQAIkQAIk4FYCM2bMsAkniBcdmXCCzpMnTy5FihTRsF4UTtx6O9gYCZAACZAACZAACZAACZAACZAACZAACSgBep7wg0ACJEACJEACcURg/vz58u6772rvH3zwgXTu3DmORsJuSYAESIAESIAESIAESIAESIAESIAESIAE7AkwYbw9De6TAAmQAAmQQCwRWLp0qU046dq1K4WTWOLObkiABEiABEiABEiABEiABEiABEiABEjAFQIUT1yhxDokQAIkQAIk4EYCq1atkrff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O27cuFA0MmTIoMdnzpyRmzdv2s7t27dP9zNlymQr4w4JkAAJkAAJkAAJkAAJuJMAPU/cSZNtkQAJkAAJOBKgeOJIhMckQAIkQAIk4GECAQEBAgElV65c2pMvCCjIYVK1alXZs2dPKDrBwcEa0guFCxcu1HMI47VixQrdN142esA3EiABEiABEiABEiABEnADAeN54oam2AQJkAAJkAAJhEuA4km4aHiCBEiABEiABDxHIHHixJpcPSYCyvr16z03QCctt2zZMkwpnvbr1auXlvfo0UNeffVVKV26tCaLh+BSq1atMNewgARIgARIgARIgARIgARiQsCIJ/Q8iQlFXksCJEACJBAZAYonkRHieRIgARIgARLwEIFkyZLJggULbMnj4YHy+PFjl3qbPXu2NGvWTCZPnuxS/ahWMv+IJkz4z58KlStXFniawOzLIar07t1bPVB27typ5ytUqCBTpkwRiEQ0EiABEiABEiABEiABEiABEiABEiABEvA1Agkstf6Jrw2a4yUBEiABEiABfyJw/fp19dg4fvy4Tmv37t22UFjhzfPy5ctSqlQpKVasmAow4dWLzXL8SXH+/HlJnTq1JE+ePDa7Zl8kQAIkQAIkQAIkQALxiECHDh00DG7hwoVl0aJF8WjmnCoJkAAJkEBsEvjncdLY7JV9kQAJkAAJkAAJ2AhAbJg/f76EhIRoGf4JRN6QiCwoKEjatm0rO3bs8Jj3SUT9OzsHbxUkiKdw4owOy0iABEiABEiABEiABNxFgM8Bu4sk2yEBEiABEoiIAMWTiOj8fe727dvStWtXjen+8OFDF64Q+fbbb+Wjjz4SPBlMIwESIAESIIHICKRLl04FlKxZs2pV5A05ffp0hJfVq1dPz8+dOzfCejxJAiRAAiRAAiRAAiRAAv5EwIgnJtSsP82NcyEBEiABEvAeAl4vnkCsQAx480IM9Xbt2skPP/wgrgoZMcW9efNmmTdvnsZu37dvn0vNLV68WCZOnCg3b950qb4nK125ckVj0X/99dee7MZv2541a5by279/v9/OkRMjARLwDgLIJwIhJEuWLDqgihUryuHDh8MdHMJ24bVhwwZZs2ZNuPV4ggRIgARIgARIgARIgAT8iQDFE3+6m5wLCZAACXgvAa8XT+zRlShRQhAX/tdff5V+/fpJw4YN5erVq/ZVPLJftmxZady4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q9/RaOsFFKlAMiOAAALlVEDTYfqk/6eTEEg0gUfenR8JnKQHQYiXbuhlLeulRW3m3OVbbcnKre6atpef3Npq18gJKCgQ46/v2rvPMqz4fweM2pBSOtmwVqr9f/3bmvU3m7ci6N/jU2xnEKRZv3GXPTNmkd16DiPFSomeYhFAAAEEChBg2q4CcLiEAAIIIFBsgYRf8fGTTz6xVq1auY+mAVm5cqVddNFFdthhh7kpPl5//fUIgl78a5op5evRo4fbDhw40M2p7jOdcsopriyNOlHSNFy+fG2/+uorn9XVE76mfb28DyetgeLzXHXVVTZp0iQ76aST7PDDD7cLLrjAHfv8O3bscHO+t2nTxo488khr166dXXnllaZAj0+aFz5vO3Tt008/dec1J7xPK1assIsvvtjat2/vymvdurU98sgjpmDKgSQt6KspyY466ijn+8EHH0QtRvPVaxFfTadyxBFHOGe55/3GhwIIt912m7uufMp/xhln2Pjx4yPl+v4uX748ck7tkMGLL77ozqk+HWuKNT13fZ5//nk75phjrFu3bpF59H0BGinSr18/15fu3bu734V///vf/rLb6lmpTP1+9enTx/VDjg8++GAkX1F+VxRIuvvuu11fNc9/7969rWfPnm5U08yZMyNlsoMAAgggkCPQuHHjyEH4zwF/koCKl2BbFgJrsnbaF9PXuqqrBdNSvTnsqHwDJ9HaN/LrFdFOl4tzHZul2/CbjzKNxFF6/6sVpunNSAgggAACCMRLwL9/IHgSL3HqQQABBCqmQMIHT/RiRS/q69Wr50YcPPPMM6ZRHb/+9a9Nc6ffeuuttmTJEvf0RowY4V7Wa/FZvbjWXO2zZs1y92uEgtKJJ57ojps0aeKO9QJe5ftPeB53BRHOOuss93GZgx/+D2h/rGCD7lVasGCBPf7449aiRQv38vybb74xvaT36eabb7ZXXnnFHfbt29eNilGA4rrrrvNZTMEeJU2VEk4ff/yxO9Q0Y0q7du1yC/BOmDDBlaPylB577DF77rnn3H5Rfig4c/vttztj9Ud2f/3rX/crQgGgs88+2yZPnuyudejQwd2jIMk777wTya8g04UXXuiCWf55KO+MGTPcosDaKvlAT9jVvyzbt2+fy+OPx40b5567TipQcf7557vrMtUIE6V58+a58wsXLrS2bdu64IqCU1dffbVN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gAACCCCAAAIIIIAAAggggAACCCCAQL4CBE/ypeECAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIVEQBgicV8anTZwQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEMhXgOBJvjRcQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgYooQPCkIj51+owAAggggAACCCCAAAIIIIAAAggggAACCCCAAAL5ChA8yZeGCwgggAACCCCAAAIIlH+B7du327XXXmvDhg2zvXv3lv8O00MEEEAAAQQQQAABBBBAIAaBKjHkIQsCCCCAAAIIIIAAAggEAgsWLLATTjghl0W9evWsW7dudtVVV1nPnj1zXUuGgylTpti7777rmjpkyBA75JBD9mv23//+d8vKyrI777zTUlJS9rvOCQQQQAABBBBAAAEEEECgvAkc9N8glbdO0R8EEEAAAQQQQAABBEpDYN68eXbyySdbjRo1rH379q6KGTNmRKoaPXq0de/ePXKcDDs7duywv/zlL1atWjW76667rHLlyvs1u3fv3rZq1SqbPXu26/t+GTiBAAIIIIAAAggggAACCJQzAabtKmcPlO4ggAACCCCAAAIIlL7AgAED7L333nOfWbNm2Xnnnecqfe6556JWvmHDBtu2bVvUa/E4uXHjxnyrSUtLs4cfftjuvffeqIGTfG/M58KePXtszZo1xne08gHiNAIIIIAAAggggAACCCSFAMGTpHhMNBIBBBBAAAEEEEAgUQUyMjLskksucc3TyBSfFDx47bXXrEuXLtajRw+3HThwoP3www8+S8xbldGvXz+X//7777dWrVrZxx9/7NYo0b5Ghijdc8897prOaRqxSZMm2UknnWSHH364XXDBBe7YZQx+XHTRRZG8yq9PeM0TBXz8eY06UVI7/DltNWrFpxUrVtjFF1/sRuQceeSR1rp1a3vkkUdMwRQSAggggAACCCCAAAIIIJBsAqx5kmxPjPYigAACCCCAAAIIJJyARlootW3bNtK2ESNG2G233eaOtRbK2rVrzY9S+eabb6xmzZqRvIXtaF2VhQsXumxad0Vp8eLFtn79erffokULt9V6JRoFM3LkSLc+y+OPP266pvtVpwIq3333nct71FFHWf369d3+O++847bh0SKaxsuPqFF5SoMGDcq15kmVKtn/nNi1a5edc845bmovTWmm/k6YMMEee+wxNx3YlVde6e7nBwIIIIAAAggggAACCCCQLAIET5LlSdFOBBBAAAEEEEAAgYQR0KiMadOm2c8//2zff/+9vfDCC65tfgSIghAPPvigO/fmm2+6kSH79u2zW265xXSsKb808mP48OH24osv5tuv6tWru7wa5bF06VI39ddPP/3k8it4sm7dOrffrl07tz3rrLNMHwU75syZY5dddpndcccdproV2FG7N23aZLVq1bJrrrkmUu8nn3yy37RiCoI89NBDLs+XX37pAiP33Xdf1DVPtOC8Rqf07dvXnn/+eRdgUft0/M9//tMInkSo2UEAAQQQQAABBBBAAIEkESB4kiQPimYigAACCCCAAAIIJI6ARlXoE06nnnqqmxpL5zIzM12gokmTJqbPkiVLXFZNn6XgyaJFi9yxpsnaunWr24/2Q0EPpaZNm7qtgiUagXLuuee6MnzwRFNkRUuDBw92p7UI/BtvvGFbtmyx1NTUaFmLde7HH3909ytY4qf4Ouigg1zARu2VR926dYtVBzcjgAACCCCAAAIIIIAAAvEUIHgST23qQgABBBBAAAEEECgXAh06dLAzzjjD9eXpp592ozY0qkSjNZR8UEOBhOOOO86dC//Q6A8lrRGiT2GpWbNmLotfL+WEE06w22+/PVKPRqZESy1btoycPuaYYyL7Jb2zevVqV+Rdd91l+uRNCtoQPMmrwjECCCCAAAIIIIAAAggksgDBk0R+OrQNAQQQQAABBBBAICEFunbtatdee61rm0aHPProo/bEE0/YAw884M5ptIlPmr4rJSXFH7ptfsGOXJlCB748rVeiAM1hhx3mRrb4dVDCQZLQbSU+ykSjZHyAKFxP8+bN3eGAAQPstNNOC19y+w0bNtzvHCcQQAABBBBAAAEEEEAAgUQWIHiSyE+HtiGAAAIIIIAAAggkvIBGjih4oum4tLaHptDSmiIKaGidEo3KuPrqq61SpUoH3JfGjRu7e7XouxaF98GUSZMmufM+eHHAFRRyoxad1yiasWPH2oUXXrhfbgWTlLQ2yj333GMES/Yj4gQCCCCAAAIIIIAAAggkmQDBkyR7YDQXAQQQQAABBBBAILEE6tWrZ5dffrk999xzbnF0v8j6vffea0OGDLGHH37YNLVX//79LT093QVUnnrqqagjOPLrWaNGjdylWbNmuYXm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" + } + }, + "cell_type": "markdown", + "id": "dc949d42-8a34-4231-bff0-b8198975e2ce", + "metadata": {}, + "source": [ + "## Nodes and Edges\n", + "\n", + "We can lay out an agentic RAG graph like this:\n", + "\n", + "* The state is a set of messages\n", + "* Each node will update (append to) state\n", + "* Conditional edges decide which node to visit next\n", + "\n", + "![Screenshot 2024-02-14 at 3.43.58 PM.png](attachment:7ad1a116-28d7-473f-8cff-5f2efd0bf118.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "278d1d83-dda6-4de4-bf8b-be9965c227fa", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import operator\n", + "from typing import Annotated, Sequence, TypedDict\n", + "\n", + "from langchain import hub\n", + "from langchain.output_parsers import PydanticOutputParser\n", + "from langchain.prompts import PromptTemplate\n", + "from langchain.tools.render import format_tool_to_openai_function\n", + "from langchain_core.utils.function_calling import convert_to_openai_tool\n", + "from langchain_core.messages import BaseMessage, FunctionMessage\n", + "from langchain.output_parsers.openai_tools import PydanticToolsParser\n", + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "from langchain_openai import ChatOpenAI\n", + "from langgraph.prebuilt import ToolInvocation\n", + "from langchain_core.output_parsers import StrOutputParser\n", + "\n", + "### Edges\n", + "\n", + "\n", + "def should_retrieve(state):\n", + " \"\"\"\n", + " Decides whether the agent should retrieve more information or end the process.\n", + "\n", + " This function checks the last message in the state for a function call. If a function call is\n", + " present, the process continues to retrieve information. Otherwise, it ends the process.\n", + "\n", + " Args:\n", + " state (messages): The current state\n", + "\n", + " Returns:\n", + " str: A decision to either \"continue\" the retrieval process or \"end\" it\n", + " \"\"\"\n", + " \n", + " print(\"---DECIDE TO RETRIEVE---\")\n", + " messages = state[\"messages\"]\n", + " last_message = messages[-1]\n", + " \n", + " # If there is no function call, then we finish\n", + " if \"function_call\" not in last_message.additional_kwargs:\n", + " print(\"---DECISION: DO NOT RETRIEVE / DONE---\")\n", + " return \"end\"\n", + " # Otherwise there is a function call, so we continue\n", + " else:\n", + " print(\"---DECISION: RETRIEVE---\")\n", + " return \"continue\"\n", + "\n", + "\n", + "def grade_documents(state):\n", + " \"\"\"\n", + " Determines whether the retrieved documents are relevant to the question.\n", + "\n", + " Args:\n", + " state (messages): The current state\n", + "\n", + " Returns:\n", + " str: A decision for whether the documents are relevant or not\n", + " \"\"\"\n", + "\n", + " print(\"---CHECK RELEVANCE---\")\n", + "\n", + " # Data model\n", + " class grade(BaseModel):\n", + " \"\"\"Binary score for relevance check.\"\"\"\n", + "\n", + " binary_score: str = Field(description=\"Relevance score 'yes' or 'no'\")\n", + "\n", + " # LLM\n", + " model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\", streaming=True)\n", + "\n", + " # Tool\n", + " grade_tool_oai = convert_to_openai_tool(grade)\n", + "\n", + " # LLM with tool and enforce invocation\n", + " llm_with_tool = model.bind(\n", + " tools=[convert_to_openai_tool(grade_tool_oai)],\n", + " tool_choice={\"type\": \"function\", \"function\": {\"name\": \"grade\"}},\n", + " )\n", + "\n", + " # Parser\n", + " parser_tool = PydanticToolsParser(tools=[grade])\n", + "\n", + " # Prompt\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are a grader assessing relevance of a retrieved document to a user question. \\n \n", + " Here is the retrieved document: \\n\\n {context} \\n\\n\n", + " Here is the user question: {question} \\n\n", + " If the document contains keyword(s) or semantic meaning related to the user question, grade it as relevant. \\n\n", + " Give a binary score 'yes' or 'no' score to indicate whether the document is relevant to the question.\"\"\",\n", + " input_variables=[\"context\", \"question\"],\n", + " )\n", + "\n", + " # Chain\n", + " chain = prompt | llm_with_tool | parser_tool\n", + "\n", + " messages = state[\"messages\"]\n", + " last_message = messages[-1]\n", + "\n", + " question = messages[0].content\n", + " docs = last_message.content\n", + " \n", + " score = chain.invoke(\n", + " {\"question\": question, \n", + " \"context\": docs}\n", + " )\n", + " \n", + " grade = score[0].binary_score\n", + "\n", + " if grade == \"yes\":\n", + " print(\"---DECISION: DOCS RELEVANT---\")\n", + " return \"yes\"\n", + "\n", + " else:\n", + " print(\"---DECISION: DOCS NOT RELEVANT---\")\n", + " print(score.binary_score)\n", + " return \"no\"\n", + "\n", + "\n", + "### Nodes\n", + "\n", + "\n", + "def agent(state):\n", + " \"\"\"\n", + " Invokes the agent model to generate a response based on the current state. Given\n", + " the question, it will decide to retrieve using the retriever tool, or simply end.\n", + "\n", + " Args:\n", + " state (messages): The current state\n", + "\n", + " Returns:\n", + " dict: The updated state with the agent response apended to messages\n", + " \"\"\"\n", + " print(\"---CALL AGENT---\")\n", + " messages = state[\"messages\"]\n", + " model = ChatOpenAI(temperature=0, streaming=True, model=\"gpt-4-0125-preview\")\n", + " functions = [format_tool_to_openai_function(t) for t in tools]\n", + " model = model.bind_functions(functions)\n", + " response = model.invoke(messages)\n", + " # We return a list, because this will get added to the existing list\n", + " return {\"messages\": [response]}\n", + "\n", + "def retrieve(state):\n", + " \"\"\"\n", + " Uses tool to execute retrieval.\n", + "\n", + " Args:\n", + " state (messages): The current state\n", + "\n", + " Returns:\n", + " dict: The updated state with retrieved docs\n", + " \"\"\"\n", + " print(\"---EXECUTE RETRIEVAL---\")\n", + " messages = state[\"messages\"]\n", + " # Based on the continue condition\n", + " # we know the last message involves a function call\n", + " last_message = messages[-1]\n", + " # We construct an ToolInvocation from the function_call\n", + " action = ToolInvocation(\n", + " tool=last_message.additional_kwargs[\"function_call\"][\"name\"],\n", + " tool_input=json.loads(\n", + " last_message.additional_kwargs[\"function_call\"][\"arguments\"]\n", + " ),\n", + " )\n", + " # We call the tool_executor and get back a response\n", + " response = tool_executor.invoke(action)\n", + " function_message = FunctionMessage(content=str(response), name=action.tool)\n", + "\n", + " # We return a list, because this will get added to the existing list\n", + " return {\"messages\": [function_message]}\n", + "\n", + "def rewrite(state):\n", + " \"\"\"\n", + " Transform the query to produce a better question.\n", + " \n", + " Args:\n", + " state (messages): The current state\n", + " \n", + " Returns:\n", + " dict: The updated state with re-phrased question\n", + " \"\"\"\n", + " \n", + " print(\"---TRANSFORM QUERY---\")\n", + " messages = state[\"messages\"]\n", + " question = messages[0].content\n", + "\n", + " msg = HumanMessage(\n", + " content=f\"\"\" \\n \n", + " Look at the input and try to reason about the underlying semantic intent / meaning. \\n \n", + " Here is the initial question:\n", + " \\n ------- \\n\n", + " {question} \n", + " \\n ------- \\n\n", + " Formulate an improved question: \"\"\",\n", + " )\n", + "\n", + " # Grader\n", + " model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\", streaming=True)\n", + " response = model.invoke(msg)\n", + " return {\"messages\": [response]}\n", + "\n", + "def generate(state):\n", + " \"\"\"\n", + " Generate answer\n", + "\n", + " Args:\n", + " state (messages): The current state\n", + "\n", + " Returns:\n", + " dict: The updated state with re-phrased question\n", + " \"\"\"\n", + " print(\"---GENERATE---\")\n", + " messages = state[\"messages\"]\n", + " question = messages[0].content\n", + " last_message = messages[-1]\n", + "\n", + " question = messages[0].content\n", + " docs = last_message.content\n", + "\n", + " # Prompt\n", + " prompt = hub.pull(\"rlm/rag-prompt\")\n", + "\n", + " # LLM\n", + " llm = ChatOpenAI(model_name=\"gpt-3.5-turbo\", temperature=0, streaming=True)\n", + "\n", + " # Post-processing\n", + " def format_docs(docs):\n", + " return \"\\n\\n\".join(doc.page_content for doc in docs)\n", + "\n", + " # Chain\n", + " rag_chain = prompt | llm | StrOutputParser()\n", + "\n", + " # Run\n", + " response = rag_chain.invoke({\"context\": docs, \"question\": question})\n", + " return {\"messages\": [response]}" + ] + }, + { + "cell_type": "markdown", + "id": "955882ef-7467-48db-ae51-de441f2fc3a7", + "metadata": {}, + "source": [ + "## Graph\n", + "\n", + "* Start with an agent, `call_model`\n", + "* Agent make a decision to call a function\n", + "* If so, then `action` to call tool (retriever)\n", + "* Then call agent with the tool output added to messages (`state`)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "8718a37f-83c2-4f16-9850-e61e0f49c3d4", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import END, StateGraph\n", + "\n", + "# Define a new graph\n", + "workflow = StateGraph(AgentState)\n", + "\n", + "# Define the nodes we will cycle between\n", + "workflow.add_node(\"agent\", agent) # agent\n", + "workflow.add_node(\"retrieve\", retrieve) # retrieval\n", + "workflow.add_node(\"rewrite\", rewrite) # retrieval\n", + "workflow.add_node(\"generate\", generate) # retrieval" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "b2158218-b21f-491b-853c-876c1afe9ba6", + "metadata": {}, + "outputs": [], + "source": [ + "# Call agent node to decide to retrieve or not\n", + "workflow.set_entry_point(\"agent\")\n", + "\n", + "# Decide whether to retrieve\n", + "workflow.add_conditional_edges(\n", + " \"agent\",\n", + " # Assess agent decision\n", + " should_retrieve,\n", + " {\n", + " # Call tool node\n", + " \"continue\": \"retrieve\",\n", + " \"end\": END,\n", + " },\n", + ")\n", + "\n", + "# Edges taken after the `action` node is called.\n", + "workflow.add_conditional_edges(\n", + " \"retrieve\",\n", + " # Assess agent decision\n", + " grade_documents,\n", + " {\n", + " \"yes\": \"generate\",\n", + " \"no\": \"rewrite\", \n", + " },\n", + ")\n", + "workflow.add_edge(\"generate\", END)\n", + "workflow.add_edge(\"rewrite\", \"agent\")\n", + "\n", + "# Compile\n", + "app = workflow.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "7649f05a-cb67-490d-b24a-74d41895139a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---CALL AGENT---\n", + "\"Output from node 'agent':\"\n", + "'---'\n", + "{ 'messages': [ AIMessage(content='', additional_kwargs={'function_call': {'arguments': '{\"query\":\"types of agent memory\"}', 'name': 'retrieve_blog_posts'}})]}\n", + "'\\n---\\n'\n", + "---DECIDE TO RETRIEVE---\n", + "---DECISION: RETRIEVE---\n", + "---EXECUTE RETRIEVAL---\n", + "\"Output from node 'retrieve':\"\n", + "'---'\n", + "{ 'messages': [ FunctionMessage(content='Table of Contents\\n\\n\\n\\nAgent System Overview\\n\\nComponent One: Planning\\n\\nTask Decomposition\\n\\nSelf-Reflection\\n\\n\\nComponent Two: Memory\\n\\nTypes of Memory\\n\\nMaximum Inner Product Search (MIPS)\\n\\n\\nComponent Three: Tool Use\\n\\nCase Studies\\n\\nScientific Discovery Agent\\n\\nGenerative Agents Simulation\\n\\nProof-of-Concept Examples\\n\\n\\nChallenges\\n\\nCitation\\n\\nReferences\\n\\nPlanning\\n\\nSubgoal and decomposition: The agent breaks down large tasks into smaller, manageable subgoals, enabling efficient handling of complex tasks.\\nReflection and refinement: The agent can do self-criticism and self-reflection over past actions, learn from mistakes and refine them for future steps, thereby improving the quality of final results.\\n\\n\\nMemory\\n\\nMemory\\n\\nShort-term memory: I would consider all the in-context learning (See Prompt Engineering) as utilizing short-term memory of the model to learn.\\nLong-term memory: This provides the agent with the capability to retain and recall (infinite) information over extended periods, often by leveraging an external vector store and fast retrieval.\\n\\n\\nTool use\\n\\nThe design of generative agents combines LLM with memory, planning and reflection mechanisms to enable agents to behave conditioned on past experience, as well as to interact with other agents.', name='retrieve_blog_posts')]}\n", + "'\\n---\\n'\n", + "---CHECK RELEVANCE---\n", + "---DECISION: DOCS RELEVANT---\n", + "---GENERATE---\n", + "\"Output from node 'generate':\"\n", + "'---'\n", + "{ 'messages': [ 'Lilian Weng mentions two types of agent memory: short-term '\n", + " 'memory and long-term memory. Short-term memory is used for '\n", + " 'in-context learning, while long-term memory allows the agent '\n", + " 'to retain and recall information over extended periods.']}\n", + "'\\n---\\n'\n", + "\"Output from node '__end__':\"\n", + "'---'\n", + "{ 'messages': [ HumanMessage(content='What does Lilian Weng say about the types of agent memory?'),\n", + " AIMessage(content='', additional_kwargs={'function_call': {'arguments': '{\"query\":\"types of agent memory\"}', 'name': 'retrieve_blog_posts'}}),\n", + " FunctionMessage(content='Table of Contents\\n\\n\\n\\nAgent System Overview\\n\\nComponent One: Planning\\n\\nTask Decomposition\\n\\nSelf-Reflection\\n\\n\\nComponent Two: Memory\\n\\nTypes of Memory\\n\\nMaximum Inner Product Search (MIPS)\\n\\n\\nComponent Three: Tool Use\\n\\nCase Studies\\n\\nScientific Discovery Agent\\n\\nGenerative Agents Simulation\\n\\nProof-of-Concept Examples\\n\\n\\nChallenges\\n\\nCitation\\n\\nReferences\\n\\nPlanning\\n\\nSubgoal and decomposition: The agent breaks down large tasks into smaller, manageable subgoals, enabling efficient handling of complex tasks.\\nReflection and refinement: The agent can do self-criticism and self-reflection over past actions, learn from mistakes and refine them for future steps, thereby improving the quality of final results.\\n\\n\\nMemory\\n\\nMemory\\n\\nShort-term memory: I would consider all the in-context learning (See Prompt Engineering) as utilizing short-term memory of the model to learn.\\nLong-term memory: This provides the agent with the capability to retain and recall (infinite) information over extended periods, often by leveraging an external vector store and fast retrieval.\\n\\n\\nTool use\\n\\nThe design of generative agents combines LLM with memory, planning and reflection mechanisms to enable agents to behave conditioned on past experience, as well as to interact with other agents.', name='retrieve_blog_posts'),\n", + " 'Lilian Weng mentions two types of agent memory: short-term '\n", + " 'memory and long-term memory. Short-term memory is used for '\n", + " 'in-context learning, while long-term memory allows the agent '\n", + " 'to retain and recall information over extended periods.']}\n", + "'\\n---\\n'\n" + ] + } + ], + "source": [ + "import pprint\n", + "from langchain_core.messages import HumanMessage\n", + "\n", + "inputs = {\n", + " \"messages\": [\n", + " HumanMessage(\n", + " content=\"What does Lilian Weng say about the types of agent memory?\"\n", + " )\n", + " ]\n", + "}\n", + "for output in app.stream(inputs):\n", + " for key, value in output.items():\n", + " pprint.pprint(f\"Output from node '{key}':\")\n", + " pprint.pprint(\"---\")\n", + " pprint.pprint(value, indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "189333cc-5d34-4869-9f9b-741210e1096f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/rag/langgraph_crag.ipynb b/examples/rag/langgraph_crag.ipynb new file mode 100644 index 000000000..921fc1152 --- /dev/null +++ b/examples/rag/langgraph_crag.ipynb @@ -0,0 +1,611 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "459d0bcf-7c60-495e-91c3-85b0b8c67552", + "metadata": {}, + "outputs": [], + "source": [ + "! pip install langchain_community tiktoken langchain-openai langchainhub chromadb langchain langgraph tavily-python" + ] + }, + { + "attachments": { + "5bfa38a2-78a1-4e99-80a2-d98c8a440ea2.png": { + "image/png": "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P15mzZqVN50l2GijjaRv3752mfV40kknydSpU7PGxyPWXXddOfbYY+PBGdennXaa/PXXXxnh2QLWXHNNOfnkk7NFp8PPOuus0I/TAXlOVllllZx9yG7/5z//KUOHDrXLvMdu3brJBRdckDfdhRdeKD///HPedJaAMTLXO2rpLr30Uvnhhx/sMu9xySWXlP/+979501111VXy1Vdf5U1nCRZddFG59dZb7TLrkbI/+uijrPHxiDZt2si9994bD864vummm+Ttt9/OCM8W0LRpU3n00UezRafD+V688sor6etCTp555pm8ye677z55+umn86aLJnjiiSekWbNm0aCM8//973/yyCOPZITnCnj44Yelbdu2uZIIZRfyHKKZ0MbFF188GpRx/txzz2XtN0njLxncddddsswyy2TkFQ3gmV177bXRoLzn9N8VV1wxZ7q33npLrrjiisQ02ep7/fXXy2qrrZZ4jwV+8MEHOb+dli56/Pe//y29e/eOBmWcf/7553LmmWdmhOcKuOyyy4TvRi7q16+f8M0ohhgnt9xyy5y3DBw4UJjLFUPMN/N96wcPHlzQ9zVa7umnny577bVXNCjjfNSoUbLbbrtlhOcKOPHEE+Xggw/OlSR8M7fddtucaeKRRx11lBx99NHx4ArXfOM32WSTCmH5Lg499FD5xz/+kTPZ3Llz8/bFeAb77bdfQd/kddZZp6g5z+677y58b/NRnz59ZNKkSfmSpeO33357ufrqq9PX2U622GKLouYmpL/xxhuzZZcOpz/Aa+SiAQMG5Ioub5wOgDVO2kK4l8Tfe++9l7d++vFOvDdbnoTrxyZvvq+99lrR+d59112pUSNH5vzpJKLofB966KG89f3yyy+LzlcnS3nzVea+6Hyvu+66vPkOGTKk6Hz1Q543X2WWi873/PPPz5vv5MmTi85XP0h589WBuOh8jzvuuLz5kqBFixZF5a0fjoLybdeuXVH57rPPPgXlu9RSSxWVr04iCspXmb6i8tUBvqB811hjjaLyVUFPQfmSLtf4FY/r1bNnQfluvvnmReULboXQjjvuWFS+nTt3LiTb1N57711Uvu3bty8oX/p5HMNc17xHhRDvZa58kuJUeJk3axXKFJ2vCuHy5nveeecVne+YMWPy5quCkKLz5XuQj/iuJGGYK4zvVz66/fbbi85XhS35sk09+OCD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" + } + }, + "cell_type": "markdown", + "id": "8889a307-fa3f-4d38-9127-d41e4686ae47", + "metadata": {}, + "source": [ + "# Corrective RAG (CRAG)\n", + "\n", + "Self-reflection can enhance RAG, enabling correction of poor quality retrieval or generations.\n", + "\n", + "Several recent papers focus on this theme, but implementing the ideas can be tricky.\n", + "\n", + "Here we show how to implement ideas from the `Corrective RAG (CRAG)` paper [here](https://arxiv.org/pdf/2401.15884.pdf) using LangGraph.\n", + "\n", + "## Dependencies\n", + "\n", + "Set `OPENAI_API_KEY`\n", + "\n", + "Set `TAVILY_API_KEY` to enable web search [here](https://app.tavily.com/sign-in)\n", + "\n", + "## CRAG Detail\n", + "\n", + "Corrective-RAG (CRAG) is a recent paper that introduces an interesting approach for self-reflective RAG. \n", + "\n", + "The framework grades retrieved documents relative to the question:\n", + "\n", + "1. Correct documents -\n", + "\n", + "* If at least one document exceeds the threshold for relevance, then it proceeds to generation\n", + "* Before generation, it performns knowledge refinement\n", + "* This paritions the document into \"knowledge strips\"\n", + "* It grades each strip, and filters our irrelevant ones \n", + "\n", + "2. Ambiguous or incorrect documents -\n", + "\n", + "* If all documents fall below the relevance threshold or if the grader is unsure, then the framework seeks an additional datasource\n", + "* It will use web search to supplement retrieval\n", + "* The diagrams in the paper also suggest that query re-writing is used here \n", + "\n", + "![Screenshot 2024-02-04 at 2.50.32 PM.png](attachment:5bfa38a2-78a1-4e99-80a2-d98c8a440ea2.png)\n", + "\n", + "---\n", + "\n", + "Let's implement some of these ideas from scratch using [LangGraph](https://python.langchain.com/docs/langgraph)." + ] + }, + { + "cell_type": "markdown", + "id": "a21f32d2-92ce-4995-b309-99347bafe3be", + "metadata": {}, + "source": [ + "## Retriever\n", + " \n", + "Let's index 3 blog posts." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "3a566a30-cf0e-4330-ad4d-9bf994bdfa86", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.text_splitter import RecursiveCharacterTextSplitter\n", + "from langchain_community.document_loaders import WebBaseLoader\n", + "from langchain_community.vectorstores import Chroma\n", + "from langchain_openai import OpenAIEmbeddings\n", + "\n", + "urls = [\n", + " \"https://lilianweng.github.io/posts/2023-06-23-agent/\",\n", + " \"https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/\",\n", + " \"https://lilianweng.github.io/posts/2023-10-25-adv-attack-llm/\",\n", + "]\n", + "\n", + "docs = [WebBaseLoader(url).load() for url in urls]\n", + "docs_list = [item for sublist in docs for item in sublist]\n", + "\n", + "text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(\n", + " chunk_size=250, chunk_overlap=0\n", + ")\n", + "doc_splits = text_splitter.split_documents(docs_list)\n", + "\n", + "# Add to vectorDB\n", + "vectorstore = Chroma.from_documents(\n", + " documents=doc_splits,\n", + " collection_name=\"rag-chroma\",\n", + " embedding=OpenAIEmbeddings(),\n", + ")\n", + "retriever = vectorstore.as_retriever()" + ] + }, + { + "cell_type": "markdown", + "id": "87194a1b-535a-4593-ab95-5736fae176d1", + "metadata": {}, + "source": [ + "## State\n", + " \n", + "We will define a graph.\n", + "\n", + "Our state will be a `dict`.\n", + "\n", + "We can access this from any graph node as `state['keys']`." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "94b3945f-ef0f-458d-a443-f763903550b0", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Dict, TypedDict\n", + "\n", + "from langchain_core.messages import BaseMessage\n", + "\n", + "\n", + "class GraphState(TypedDict):\n", + " \"\"\"\n", + " Represents the state of our graph.\n", + "\n", + " Attributes:\n", + " keys: A dictionary where each key is a string.\n", + " \"\"\"\n", + "\n", + " keys: Dict[str, any]" + ] + }, + { + "attachments": { + "3b65f495-5fc4-497b-83e2-73844a97f6cc.png": { + "image/png": "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eaXBgwfbP//5zyLThQQ05F944QWbOnVq2JW19y1btthNN91krGBb1gy3h4MOOqisFUvlEQERSILAxIkTrX379gmFxDnnnGNt2rSxESNGJJGTkohA5gisW7cuc5krZxHIAgGJiCxATuUSNGRZiIaVXV988UWbNGlSLLtvvvnGxo4da/n5+f714YcfGr1r7GP7yy+/9GlJx+elS5faxx9/bFOmTPH7yfejjz6yyy+/3AuVWMZuY9WqVf6ay5cv97t/+uknGz16dCzJ7Nmz/XXCjnnz5vlrMHpSlG3YsMHefvttI494o+zROnKc+o0bN84QVcuWLfOnMHIS6rFw4cJYWagnZZkwYYKva3SEJb5OZDR+/HjPl7wRDtiMGTPss88+85/JL7Dj2KZNm+zzzz+3l19+2f71r395puyXiYAIlC0C/Lbttttu2wmJWrVqGUKCzpPo70PZKr1KUxEIaCSiItzl8l3HquW7euWndq1atTKG6Gkws8LlqaeeakuWLPEVbN68uT3xxBO+YY4wYHSBxm7r1q2tT58+vqE8bNgw69mzp9HIHzVqlL355pu2ePFi/84UibfffrsdccQRPj8a0H/84x+tb9++dskll/i8mzVrZieeeKJvzDdq1MjuvPNO22GHHWz33Xe34cOHGy5RzJJy2WWX+cZ7nTp1EsJHyBx88MHWuXPn7dyYyH/BggV+Fc/999/fB0fi6nTYYYdZlSpVjOsiED744AO/uBSCYsiQITZmzBh7+umn7bnnnrMzzzzTmPbxq6++so4dO1rt2rXtjTfe8KIgvk7UDy7Tp0+3Dh062MiRI30+sAuzvSB2sJYtWxo+17feeqvPj3OrV69uu+yyi9+fsLLaKQIiUKoEEPtnnXWWFxL89jDyiR199NF+xJaOGTpRZCJQGgQkIkqDuq6ZVgKul1dWRgm8/vrr+c6dKf/cc8/NHzBgQP6+++6bv2LFivyZM2f6/Wzzco33fCcufC3OPvvs/CeffHK7Gp1yyin5F110kd//8MMP53/xxRexNL/+9a/zuVYwJwTynSjJdw34fDfvev61117rDx177LH5zz//fL774ct3s6Hku1GPfOeS5Mvy7bff+vRu9dh8J1BCVtu9cx3nk+z3cz75zJ8/P9/1/vvttWvX5juh4Ledm1O+6+3PP/zww/11uBbnYHfffXf+Nddc47dfffVVn6cTT/4858rg391IjC8biQqq06BBg/JvvPFGn48TJLFtrgPXeOM+OJexfBfA6csUf1yfRUAEyh4Bvv/81vB9D8ZvkesEyXedKWGX3kUgqwT4X8xzKROBXCWgkYi0SrL0Z0YP+DHHHONdbo477jirV6+en8qQXjX2Y4wS0IPPe2HG0D7mhEZhyfwMJ/T2OzHi04XzTjjhBHP/eK1p06a+l79r164+noGynH/++X60gBPCCEmii/zwww+24447+kPhnQ+4FVBXXA3o4cdwd3KNeWNGlUqVKvl9XDPecI+KWuXKlY2RkHAOx5i1JVGdOEb+GGwXLVrkt/mzevXq2HbYuP/+++3RRx817gXlZfSDEQqZCIhA2SCA2yW/M0ceeaQ1aNDAF+qOO+6whg0b+sXoBg4caO+8844feX3qqaf8iASjlDIRyDYBRiIY7ZeJQK4SkIgo43euRYsWxj89GsRXXnmluREF69evn28kE2jdv39/X4OqVbfeyp133tnHLtDgr1atmoX9JCrIxSgeAf98cRHCxYkGcpgZ6tBDD7WrrrrKN/J/+9vf+tNoeLveee/WhDhBAEQb7/F54/7kRhDMjaDY3LlzY4dxQUIIEftAQ56y4vLEj+zpp5/uXbJ23XVXQzDUqFHDmjRp4utJnMNI54ZEkHZhVlCdCjoHVzCM8hDcjosYLlUEa7KYFeXfe++9vduTG6EpKBvtFwERyDIBvpuffvqpMckEbksHHnig/41iRWuEBC6JPXr0MIKvjz/+eHv88ce9+2aWi6nLiUDsf7tQiECuElBgdY7cOf4R1q9f3/d8M40hDfz77rvP9+rTo++GwnxN6CHnn2OXLl1iPf6IDnz86fEgZiHYGWecYe3atfPxA+edd56PteAY/1gRL/vtt58/HkYkiElA0BDkHeInSE+e4ZrEIcQHRpMmGGIBIUEsgXOTCrv9KADxDfgv33zzzd53GQFEA965SPlASMpKPAV2yCGH+IY8jQHEEjEQTBdbkBVUp4LSI45ggkDgusRcICSI++Az5eflXMwKykL7RUAESoEAv1F/+9vffOcCcWBss4+1I/gdYFVrOh/ocGE0l+91cWa0K4Uq6ZLllADPYBgJL6dVVLXKOYFK+GGV8zqW6+rxz5Ce+eACRGW5pfTGsR/3oJIaIxAENiNekjGmq2NEIC8vr8jkjDAghghiRgQE45qMZNDrHzXyZSpYRiiioysEipOW4+wvbBSE/EpSJ65BUDtuUmy7uA3/Ob6M0fJqWwREoOwQwMUJ1yVmf2NElRHWu+66y0/WgCsTo5m4JspEQAREQASSJyARkTwrpRQBERABEchhAm5SCnOTMvjZ3Yj1chNC+FHXta6zZPgDD3gXxRyunoouAiIgAlklIHemrOLWxURABERABEqLADFN9957r7322mvenYlyMNX1RjciykiFTAREQAREIHkCGolInpVSioAIiIAIlCMCzOLEGjvPPvusd3UkfoJ1aWQiIAIiIAJFE5CIKJqRUoiACIiACJRjAizSSdA1C3mGiSTKcXVVNREQARFICwGJiLRgVCYiIAIiIAK5TIBJF9wClbbXXnvlcjVUdhEQARHIGgGJiKyh1oVEQAREQAREQAREQAREoHwQUGB1+biPqoUIiIAIiIAIiIAIiIAIZI2ARETWUOtCIiACIiACuU6ANXhwfQq2YcMGv4ZN+Kx3ERABEagoBCQiKsqdVj1FQAREQARSJnD11VfbsGHDYvkMHjzYTxsb26ENERABEaggBBQTUUFutKopAiIgAiKQOoHp06fb0UcfbaNGjbLly5fbfvvt51fCbtKkic/8m2++8SMVLGZXqVIlv2/u3Lk2YcIEv9p969atrV+/fqkXRDmIgAiIQCkTkIgo5Rugy4uACIiACOQWgcsuu8zatm1rCxcutEaNGtmll14o116VAAAlPklEQVTqK3DqqafakiVL/Hbz5s39dLHjx4+3Y445xgYMGGDs69ixo51zzjm5VWGVVgREQAQSEKiaYJ92iYAIiIAIiIAIFEDgwgsvjC1Kx4gExloTkydPtpEjR/rPTBW7aNEimzdvntWpU8fOOOMM22OPPaxevXr+uP6IgAiIQK4TkIjI9Tuo8ouACIiACGSVAKMQBx54oLVq1crq16/vrz1jxgxbunSpH3VgR7NmzWzBggV2yCGH2Pz58+2+++6zr7/+2m644QYbNGiQP0d/REAERCCXCcidKZfvnsouAiIgAiJQKgSuv/56a9GiRcw1af369bb77rvb8OHDrX///r5MVatWNfbzXrlyZXv00Uft8ccft9GjR5eozA+8Pd3Wb9pii1dusgN6Nbf6NSpZ68a1rHWjWiXKTyeVHoEvpi2zl79YYG2a5tmWzVtc/IxZnx3rW99OjUqvULqyCBSTgEYiiglMyUVABERABEQAURACp6FRs2ZNu/322/2IA65L2MyZM+2pp56ym2++2X9u166dnX/++X472T9TF6y2d8cvts++W2I/LVlnzRrn2eZ8s6nzZlolN7/inHnLbd9dW9igA9pYjzZylUqWa2mlGz31Z3tu1AL7atJia9a0rruP62JFeeGjOU5QbLb+TiAesXsz26fL1mD9WAJtiEAZI6CRiDJ2Q1QcERABERCB3CawatUqq1GjhlWvXt1XZOXKlValShXLy8tLumJ//2ievff1Ivth9s/WplVD696pme3Wufl25/8wd7mNGjfb5i5wM0W5xueRfZrb/t2bbpdOO0qXwGtfLbBXxvxkM+evtl26trLdu7a0urWrbVOoLU4cTpm51N3zJTZ91s/WsklNu+LXnW3XDltd5rZJrA8iUAYISESUgZugIoiACIiACIgABMbNWG7D3phl301fYt13bm49OrWwHVsX3Ygc9/1CG/3NHFu2fK0NOaOHDdx1e8Ehwtkn8I27n/e8Nt3mLF5rPXduaXt0a7WdeEhUqqUr1tsbH0+zpctW29UndbZDnECUiUBZIyARUdbuiMojAiIgAiJQIQlMnLPSzrr7S2vVooHts1tb67RDg2JxWLx8nb347iQJiWJRy1xiYliefGem7eKEw/67tUtKPERLw8jEqyOn2HfTFtmfjulkpw1oGz2sbREodQJVXHDY9aVeChVABERABERABCowgTUbNtvFj3xrtWrWsN8fu6s1rlez2DTyalaz9q0b2gwXJ/HWmHnWtkWe7dSiTrHzKW8nrFu3zs+a9e6779rq1auNhQEzPdXuBxMW2d0vTrUTj9jF+vVoZTWqVSk2VoKtu3ZoYlvcxkv//tE6talr7Zsl7xJX7AvqBBEoJgEXliUTAREQAREQAREoTQI3v/i9LXSB04fu2ymlYjRtUMt+c0h3tzZFdRvx8ZyU8iovJ9eqVcv+8Y9/2M4772y33nqrn3b3yiuv9KuOZ6qOz4ycY/v2be9c0Yo3mpSoPPu7UakObRraSy4gWyYCZYmARERZuhsqiwiIgAiIQIUj8LoLuv3AvQ7YZydr3TT1kQOERM/OLe27GSvcrE5LKxzPRBVmZfHBgwfbpEmT/Pu0adPs5JNPthNOOMEee+wxvyhgovNKsu/VL+fbT8s2uhGINiU5PeE5/Xq1sy8mL7aRblYnmQiUFQKKiSgrd0LlEAEREAERqJAErv6Hi2NYX9kOdSIiXbZq7SZ74p9jrfdODezOM3umK9tylQ+rjb/55pv+tXbtWjv00ENjr1QqevJdX1qb1k1sn147pJLNdueO+Wa2rVq1xu47e5ftjmmHCJQGAa0TURrUdU0REAEREAER+A+BMVN+tmMO6p5WHkwf2tNNI/rJ2Fm2ev1mq1Oz+D75iQpEDz4Nb9bJYBE9pq4N27zzOewL29H3RGmj620kumam9lGWI4880gYMGGDjx4+3cePG2aWXXmq33HKL7b333tanTx9r3bq19evXL+kiLFq+3n6cu9J27d4u6XOSTZhXt5Z9MGamrXXxM7VrpOd+JnttpROBRAQkIhJR0T4REAEREAERyAKB8W4K0NVrNjo3prppv1q39k3scyciuEb/ro1Tzv+ee+6xe++91y+yFxUQQSREBUJ0O3o8uh1W8t60aZNt3LjRou9hO+zn85YtW1KuQzIZEHw9a9YsGzFihE8+dOhQ+93vfpfMqbZ41UafLh1uafEXbNl46zOyct0miYh4OPpcKgQkIkoFuy4qAiIgAiIgAmasYNzCxUFUzUCEYnO3unWNalVtlWt0psMuueQS41VahojglZ+f79/jP292qz0XdpxjpAnn8x79zPEpU6bY2LFj/QsXp06dOiUtIOCywI1E5NWuUezpXJNh2rh+TTd7VzVbue4Xc7MAy0Sg1AlIRJT6LVABREAEREAEKiqBWjX4N+zm8syQNWmUZyvW/pKh3LObLaMbvNJtuDGNHDnSPv74Y/v666/97E0XXHCBHXXUUcW+3ryfN1jtuJWo01neVk5wLl+9dbQjnfkqLxEoCQGJiJJQ0zkiIAIiIAIikAYCec63ff2GzDXymzXJczERmcs/DQhKJYuvvvrKPvnkk5hwaN++vQ+qHjJkiPXsWfJA9DUbttjyZWszVqelK9ZZAzd9r0wEygIBiYiycBdUBhEQAREQgQpJgIDnDRsz18hfv36T5dVMf7xFLt6s0aNH2zvvvGOffvqpTZ061RAOBFVfdNFF/j0ddeq+Q13btHmLLVy2zpo3rJWOLGN5LFu5wX75ZYvt3DL1aYBjmWpDBFIgIBGRAjydKgIiIAIiIAKpEGCWnY0ZHIn4ce4y2/fk1BawS6V+ZeXck046yb788kvr37+/HX300darVy/bb7/90l68zq1q+zwXLV2ddhGxwOXZurkEYdpvmjIsMQGJiBKj04kiIAIiIAIikBqBNk1q22YX4PvD3OW20w7pjZad5vKs71xfdmic3h7x1GpcOmcz2tC3b18//WwmS9CiQU2rW7eGLVmefpemRT+vsSYNamSy+MpbBIpFIP0RSsW6vBKLgAiIgAiIQMUl0KFZnnVqW9/GT1mQdggz5y21XTumV5ikvZBZynCvvfbKuIAIVdmxZV375rsFxoJ/6bRv3TOy+06N0pml8hKBlAhIRKSETyeLgAiIgAiIQGoEjurbwqb+uNiWrlifWkaRs6fPW27jJvxkR/VpEdmrzWwQOOugNrZ23Ub7avL8tF1u9MT5Vr1qJTu8l0RE2qAqo5QJSESkjFAZiIAIiIAIiEDJCRy3ZytrVK+GTfhhUckziTvznU+m2gkHtLW+nRrGHdHHTBPo26mRHdK3dVpHIyZN/clOP7i9NcyrluniK38RSJqARETSqJRQBERABERABNJPoLpbae7i4zrZqLEzbeTY2Slf4Kl/jbflK9fbxUd0TDkvZVAyAn88uJ07Md/e+GSabdiU2krbH34505o3qmkn79O6ZIXRWSKQIQISERkCq2xFQAREQAREIFkCA3dtbkPO6JGykHh71I8296eVdu2p3ZK9tNJlgECbJrVs6KAetmLlGnvu7Ym2Yk3xF4hDfLz04RQbPW62XXxkhwyUUlmKQGoEKrll3/NTy0Jni4AIiIAIiIAIpIPAO+MX2rVPTrT2OzSyXbo0tx4dmyaV7RIXT/HK+5NsjfPFv+n0brZ35yZJnadEmSWwaMUGu+G5KTZn8Xo7pP/O1qZZcms8zFu82t4dNd02btxgQ37XzfbYSW5pmb1Tyr0kBCQiSkJN54iACIiACIhAhgjMXrLO3v92sT302jRr2by+7dK5ubVuWtfq161ptapXiV117cbN9sPsn23W/GU2YcpPNnDPljbkJI1AxACVoY1bX5lmb46eb7VrVbcObRrZTrwSTOmLeBg7eYFN/H6Bde3QwG50AoJRDZkIlEUCEhFl8a6oTCIgAiIgAiLgCNz71gwbPWWpLV2+wVa6OIcaNatZXu3qlr8l3+1bay2a1rGe7evZ0W4WJgVRl+1HZqNbbfrVsYvtlc/n2Q+zlvnC1qhW1arXqGo1nDisVbO6zXGCsJcLzN6/RxP77d6trZqLl5GJQFklIBFRVu+MyiUCIiACIiACEQKbnXBYvHKDLXSConLlSrZTi7xtRiYiSbVZxgnMWrzWpi9cYz+v/sVWrvvFNm3a7BYFrGH7dW9qdWtqHeAyfvtUvP8QkIjQoyACIiACIiACIiACIiACIlAsAhonKxYuJRYBERABERABERABERABEZCI0DMgAiIgAiIgAiIgAiIgAiJQLAISEcXCpcQiIAIiIAIiIAIiIAIiIAISEXoGREAEREAEREAEREAEREAEikVAIqJYuJRYBERABERABERABERABERAIkLPgAiIgAiIgAiIgAiIgAiIQLEISEQUC5cSi4AIiIAIiIAIiIAIiIAIaEUTPQMiIAIiIAIikCUCM2fOtA8++MDmz59v9erVs/PPP9+qVtW/4izh12VEQATSSECLzaURprISAREQARHIPoG7777batasaeedd172L16MK44ePdpOPPFEf0bjxo2tevXqxj5Z2Sbw3Xff2WeffWa//vWvrVGjRmW7sCmUbuTIkTZnzhw77bTTUshFp1YkAnJnqkh3W3UVAREQgXJI4M0337R///vfZb5md9xxhy/j888/b2PHjpWAKPN3bGsBv/nmG7vxxhttyZIlOVLikhXzn//8p916660lO1lnVUgCGkOtkLddlRYBERCB3Cfw6aef2o8//mg///yzrV692p566qlYpX7729/60Ymnn37a8vPzbYcddrDevXvbW2+9ZZUqVbIjjjjCuxNxwmOPPWYbN260Zs2a2UEHHWT169eP5bNixQp79dVXrX///kaP9PTp0+3ggw+2rl27xtKwMWnSJBszZowvy+bNm61BgwZ21llnxVyVtmzZYl999ZXtu+++tueee25zLh9++eUXe/31123atGnWsmVLO+yww4zRCmzChAk2btw4v025Z8yYYaNGjbL99tvPdt11V5s3b553kerUqZN98cUXduSRR/prbdiwwX7zm99Y7dq1/blF/aFu7733nlHWo48+2r788ktfln79+tnChQvtnXfe8dds3769z+q1116zatWq2aGHHhrLmvuBoINb9+7d7ZBDDvG8SVDYveCevPzyy/6c3XffPZZfqDt1Ks+jALEKa0MEcoiA3Jly6GapqCIgAiIgAv8lcP3119u//vUvW7p0qd8ZGt18+PDDD70YoEHK8V69elnz5s3t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ZgHRx326/PLLvVBgPwIRkRfiUFgg7pxzzjFGrjC2maL1tttui82mRVwEgu/rr7/2afjzl7/8xcIid1zjiy++8EKDe85oRNSFKnaSNkQgTQQkItIEUtmIgAiIgAiIQDwBGvYzZ870MQmJ1oOIT5+tzzQyaXDSiI0GaGfr+rl4He4lC/fRuMeYGSl+Vqyi6sV0vJs2bdrOpSyct2LFCi86ECekrVmz5najCcRBIBg4Vr9+/XCq/epXv/IjTdxPpvYNAiWWQBsikGYCEhFpBqrsREAEREAEREAEyi8BGvqMMNBYb+9mUyor9uGHH/pYGspU2IJ4ZaW8KkfuE5CIyP17qBqIgAiIgAiIgAiIgAiIQFYJKLA6q7h1MREQAREQAREQAREQARHIfQISEbl/D1UDERABERABERABERABEcgqAYmIrOLWxURABERABERABERABEQg9wlIROT+PVQNREAEREAEREAEREAERCCrBCQisopbFxMBERABERABERABERCB3CcgEZH791A1EAEREAEREAEREAEREIGsEpCIyCpuXUwEREAEREAEREAEREAEcp+ARETu30PVQAREQAREQAREQAREQASySkAiIqu4dTEREAEREAEREAEREAERyH0CEhG5fw9VAxEQAREQAREQAREQARHIKgGJiKzi1sVEQAREQAREQAREQAREIPcJSETk/j1UDURABERABERABERABEQgqwQkIrKKWxcTAREQAREQAREQAREQgdwnIBGR+/dQNRABERABERABERABERCBrBKQiMgqbl1MBERABERABERABERABHKfgERE7t9D1UAEREAEREAEREAEREAEskpAIiKruHUxERABERABERABERABEch9AhIRuX8PVQMREAEREAEREAEREAERyCoBiYis4tbFREAEREAEREAEREAERCD3CUhE5P49VA1EQAREQAREQAREQAREIKsEJCKyilsXEwEREAEREAEREAEREIHcJyARkfv3UDUQAREQAREQAREQAREQgawSkIjIKm5dTAREQAREQAREQAREQARyn4BERO7fQ9VABERABERABERABERABLJKQCIiq7h1MREQAREQAREQAREQARHIfQISEbl/D1UDERABERABERABERABEcgqAYmIrOLWxURABERABERABERABEQg9wlIROT+PVQNREAEREAEREAEREAERCCrBCQisopbFxMBERABERABERABERCB3CcgEZH791A1EAEREAEREAEREAEREIGsEpCIyCpuXUwEREAEREAEREAEREAEcp+ARETu30PVQAREQAREQAREQAREQASySkAiIqu4dTEREAEREAEREAEREAERyH0CEhG5fw9VAxEQAREQAREQAREQARHIKgGJiKzi1sVEQAREQAREQAREQAREIPcJSETk/j1UDURABERABERABERABEQgqwT+H8glSqY2vticAAAAAElFTkSuQmCC" + } + }, + "cell_type": "markdown", + "id": "f81239f2-314d-41fe-9af9-d19b5b193b53", + "metadata": {}, + "source": [ + "## Nodes and Edges\n", + "\n", + "Each `node` will simply modify the `state`.\n", + "\n", + "Each `edge` will choose which `node` to call next.\n", + "\n", + "We can make some simplifications from the paper:\n", + "\n", + "* Let's skip the knowledge refinement phase as a first pass. This can be added back as a node, if desired. \n", + "* If *any* document is irrelevant, let's opt to supplement retrieval with web search. \n", + "* We'll use [Tavily Search](https://python.langchain.com/docs/integrations/tools/tavily_search) for web search.\n", + "* Let's use query re-writing to optimize the query for web search.\n", + "\n", + "Here is our graph flow:\n", + "\n", + "![Screenshot 2024-02-04 at 1.32.52 PM.png](attachment:3b65f495-5fc4-497b-83e2-73844a97f6cc.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "efd639c5-82e2-45e6-a94a-6a4039646ef5", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import operator\n", + "from typing import Annotated, Sequence, TypedDict\n", + "\n", + "from langchain import hub\n", + "from langchain.output_parsers.openai_tools import PydanticToolsParser\n", + "from langchain.prompts import PromptTemplate\n", + "from langchain.schema import Document\n", + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langchain_community.vectorstores import Chroma\n", + "from langchain_core.messages import BaseMessage, FunctionMessage\n", + "from langchain_core.output_parsers import StrOutputParser\n", + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "from langchain_core.runnables import RunnablePassthrough\n", + "from langchain_core.utils.function_calling import convert_to_openai_tool\n", + "from langchain_openai import ChatOpenAI, OpenAIEmbeddings\n", + "\n", + "### Nodes ###\n", + "\n", + "\n", + "def retrieve(state):\n", + " \"\"\"\n", + " Retrieve documents\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): New key added to state, documents, that contains retrieved documents\n", + " \"\"\"\n", + " print(\"---RETRIEVE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = retriever.get_relevant_documents(question)\n", + " return {\"keys\": {\"documents\": documents, \"question\": question}}\n", + "\n", + "\n", + "def generate(state):\n", + " \"\"\"\n", + " Generate answer\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): New key added to state, generation, that contains LLM generation\n", + " \"\"\"\n", + " print(\"---GENERATE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + "\n", + " # Prompt\n", + " prompt = hub.pull(\"rlm/rag-prompt\")\n", + "\n", + " # LLM\n", + " llm = ChatOpenAI(model_name=\"gpt-3.5-turbo\", temperature=0, streaming=True)\n", + "\n", + " # Post-processing\n", + " def format_docs(docs):\n", + " return \"\\n\\n\".join(doc.page_content for doc in docs)\n", + "\n", + " # Chain\n", + " rag_chain = prompt | llm | StrOutputParser()\n", + "\n", + " # Run\n", + " generation = rag_chain.invoke({\"context\": documents, \"question\": question})\n", + " return {\n", + " \"keys\": {\"documents\": documents, \"question\": question, \"generation\": generation}\n", + " }\n", + "\n", + "\n", + "def grade_documents(state):\n", + " \"\"\"\n", + " Determines whether the retrieved documents are relevant to the question.\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): Updates documents key with relevant documents\n", + " \"\"\"\n", + "\n", + " print(\"---CHECK RELEVANCE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + "\n", + " # Data model\n", + " class grade(BaseModel):\n", + " \"\"\"Binary score for relevance check.\"\"\"\n", + "\n", + " binary_score: str = Field(description=\"Relevance score 'yes' or 'no'\")\n", + "\n", + " # LLM\n", + " model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\", streaming=True)\n", + "\n", + " # Tool\n", + " grade_tool_oai = convert_to_openai_tool(grade)\n", + "\n", + " # LLM with tool and enforce invocation\n", + " llm_with_tool = model.bind(\n", + " tools=[grade_tool_oai],\n", + " tool_choice={\"type\": \"function\", \"function\": {\"name\": \"grade\"}},\n", + " )\n", + "\n", + " # Parser\n", + " parser_tool = PydanticToolsParser(tools=[grade])\n", + "\n", + " # Prompt\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are a grader assessing relevance of a retrieved document to a user question. \\n \n", + " Here is the retrieved document: \\n\\n {context} \\n\\n\n", + " Here is the user question: {question} \\n\n", + " If the document contains keyword(s) or semantic meaning related to the user question, grade it as relevant. \\n\n", + " Give a binary score 'yes' or 'no' score to indicate whether the document is relevant to the question.\"\"\",\n", + " input_variables=[\"context\", \"question\"],\n", + " )\n", + "\n", + " # Chain\n", + " chain = prompt | llm_with_tool | parser_tool\n", + "\n", + " # Score\n", + " filtered_docs = []\n", + " search = \"No\" # Default do not opt for web search to supplement retrieval\n", + " for d in documents:\n", + " score = chain.invoke({\"question\": question, \"context\": d.page_content})\n", + " grade = score[0].binary_score\n", + " if grade == \"yes\":\n", + " print(\"---GRADE: DOCUMENT RELEVANT---\")\n", + " filtered_docs.append(d)\n", + " else:\n", + " print(\"---GRADE: DOCUMENT NOT RELEVANT---\")\n", + " search = \"Yes\" # Perform web search\n", + " continue\n", + "\n", + " return {\n", + " \"keys\": {\n", + " \"documents\": filtered_docs,\n", + " \"question\": question,\n", + " \"run_web_search\": search,\n", + " }\n", + " }\n", + "\n", + "\n", + "def transform_query(state):\n", + " \"\"\"\n", + " Transform the query to produce a better question.\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): Updates question key with a re-phrased question\n", + " \"\"\"\n", + "\n", + " print(\"---TRANSFORM QUERY---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + "\n", + " # Create a prompt template with format instructions and the query\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are generating questions that is well optimized for retrieval. \\n \n", + " Look at the input and try to reason about the underlying sematic intent / meaning. \\n \n", + " Here is the initial question:\n", + " \\n ------- \\n\n", + " {question} \n", + " \\n ------- \\n\n", + " Formulate an improved question: \"\"\",\n", + " input_variables=[\"question\"],\n", + " )\n", + "\n", + " # Grader\n", + " model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\", streaming=True)\n", + "\n", + " # Prompt\n", + " chain = prompt | model | StrOutputParser()\n", + " better_question = chain.invoke({\"question\": question})\n", + "\n", + " return {\"keys\": {\"documents\": documents, \"question\": better_question}}\n", + "\n", + "\n", + "def web_search(state):\n", + " \"\"\"\n", + " Web search based on the re-phrased question using Tavily API.\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): Updates documents key with appended web results\n", + " \"\"\"\n", + "\n", + " print(\"---WEB SEARCH---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + "\n", + " tool = TavilySearchResults()\n", + " docs = tool.invoke({\"query\": question})\n", + " web_results = \"\\n\".join([d[\"content\"] for d in docs])\n", + " web_results = Document(page_content=web_results)\n", + " documents.append(web_results)\n", + "\n", + " return {\"keys\": {\"documents\": documents, \"question\": question}}\n", + "\n", + "\n", + "### Edges\n", + "\n", + "\n", + "def decide_to_generate(state):\n", + " \"\"\"\n", + " Determines whether to generate an answer or re-generate a question for web search.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " str: Next node to call\n", + " \"\"\"\n", + "\n", + " print(\"---DECIDE TO GENERATE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " filtered_documents = state_dict[\"documents\"]\n", + " search = state_dict[\"run_web_search\"]\n", + "\n", + " if search == \"Yes\":\n", + " # All documents have been filtered check_relevance\n", + " # We will re-generate a new query\n", + " print(\"---DECISION: TRANSFORM QUERY and RUN WEB SEARCH---\")\n", + " return \"transform_query\"\n", + " else:\n", + " # We have relevant documents, so generate answer\n", + " print(\"---DECISION: GENERATE---\")\n", + " return \"generate\"" + ] + }, + { + "cell_type": "markdown", + "id": "fa076e90-7132-4fcf-8507-db5990314c4f", + "metadata": {}, + "source": [ + "## Build Graph\n", + "\n", + "The just follows the flow we outlined in the figure above." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "dedae17a-98c6-474d-90a7-9234b7c8cea0", + "metadata": {}, + "outputs": [], + "source": [ + "import pprint\n", + "\n", + "from langgraph.graph import END, StateGraph\n", + "\n", + "workflow = StateGraph(GraphState)\n", + "\n", + "# Define the nodes\n", + "workflow.add_node(\"retrieve\", retrieve) # retrieve\n", + "workflow.add_node(\"grade_documents\", grade_documents) # grade documents\n", + "workflow.add_node(\"generate\", generate) # generatae\n", + "workflow.add_node(\"transform_query\", transform_query) # transform_query\n", + "workflow.add_node(\"web_search\", web_search) # web search\n", + "\n", + "# Build graph\n", + "workflow.set_entry_point(\"retrieve\")\n", + "workflow.add_edge(\"retrieve\", \"grade_documents\")\n", + "workflow.add_conditional_edges(\n", + " \"grade_documents\",\n", + " decide_to_generate,\n", + " {\n", + " \"transform_query\": \"transform_query\",\n", + " \"generate\": \"generate\",\n", + " },\n", + ")\n", + "workflow.add_edge(\"transform_query\", \"web_search\")\n", + "workflow.add_edge(\"web_search\", \"generate\")\n", + "workflow.add_edge(\"generate\", END)\n", + "\n", + "# Compile\n", + "app = workflow.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "f5b7c2fe-1fc7-4b76-bf93-ba701a40aa6b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---RETRIEVE---\n", + "\"Node 'retrieve':\"\n", + "'\\n---\\n'\n", + "---CHECK RELEVANCE---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "\"Node 'grade_documents':\"\n", + "'\\n---\\n'\n", + "---DECIDE TO GENERATE---\n", + "---DECISION: GENERATE---\n", + "---GENERATE---\n", + "\"Node 'generate':\"\n", + "'\\n---\\n'\n", + "\"Node '__end__':\"\n", + "'\\n---\\n'\n", + "('Short-term memory stores information needed for complex cognitive tasks and '\n", + " 'lasts for 20-30 seconds. Long-term memory can store information for a long '\n", + " 'time and has explicit and implicit subtypes. Sensory memory retains sensory '\n", + " 'impressions briefly after stimuli end.')\n" + ] + } + ], + "source": [ + "# Run\n", + "inputs = {\"keys\": {\"question\": \"Explain how the different types of agent memory work?\"}}\n", + "for output in app.stream(inputs):\n", + " for key, value in output.items():\n", + " # Node\n", + " pprint.pprint(f\"Node '{key}':\")\n", + " # Optional: print full state at each node\n", + " # pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")\n", + "\n", + "# Final generation\n", + "pprint.pprint(value[\"keys\"][\"generation\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "2bee03de-a32c-4bbe-b37a-a13bb825e4cb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---RETRIEVE---\n", + "\"Node 'retrieve':\"\n", + "'\\n---\\n'\n", + "---CHECK RELEVANCE---\n", + "---GRADE: DOCUMENT NOT RELEVANT---\n", + "---GRADE: DOCUMENT NOT RELEVANT---\n", + "---GRADE: DOCUMENT NOT RELEVANT---\n", + "---GRADE: DOCUMENT NOT RELEVANT---\n", + "\"Node 'grade_documents':\"\n", + "'\\n---\\n'\n", + "---DECIDE TO GENERATE---\n", + "---DECISION: TRANSFORM QUERY and RUN WEB SEARCH---\n", + "---TRANSFORM QUERY---\n", + "\"Node 'transform_query':\"\n", + "'\\n---\\n'\n", + "---WEB SEARCH---\n", + "\"Node 'web_search':\"\n", + "'\\n---\\n'\n", + "---GENERATE---\n", + "\"Node 'generate':\"\n", + "'\\n---\\n'\n", + "\"Node '__end__':\"\n", + "'\\n---\\n'\n", + "('The AlphaCodium paper uses a test-based, iterative approach for code '\n", + " 'generation. It employs a multi-stage, code-oriented flow that addresses the '\n", + " 'specific challenges of coding problems. Unlike traditional models, '\n", + " 'AlphaCodium actively engages in problem self-reflection, reasoning, and '\n", + " 'iterative code solution generation.')\n" + ] + } + ], + "source": [ + "# Correction for question not present in context\n", + "inputs = {\n", + " \"keys\": {\n", + " \"question\": \"What is the approach for code generation taken in the AlphaCodium paper?\"\n", + " }\n", + "}\n", + "for output in app.stream(inputs):\n", + " for key, value in output.items():\n", + " # Node\n", + " pprint.pprint(f\"Node '{key}':\")\n", + " # Optional: print full state\n", + " # pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")\n", + "\n", + "# Final generation\n", + "pprint.pprint(value[\"keys\"][\"generation\"])" + ] + }, + { + "cell_type": "markdown", + "id": "a7e44593-1959-4abf-8405-5e23aa9398f5", + "metadata": {}, + "source": [ + "LangSmith Traces - \n", + " \n", + "* https://smith.langchain.com/public/7e0b9569-abfe-4337-b34b-842b1f93df63/r\n", + "\n", + "* https://smith.langchain.com/public/b40c5813-7caf-4cc8-b279-ee66060b2040/r" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/rag/langgraph_crag_mistral.ipynb b/examples/rag/langgraph_crag_mistral.ipynb new file mode 100644 index 000000000..502498cfa --- /dev/null +++ b/examples/rag/langgraph_crag_mistral.ipynb @@ -0,0 +1,778 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "id": "19969669-b47f-47f3-b6d4-f7b155434840", + "metadata": {}, + "outputs": [], + "source": [ + "! pip install --quiet langchain_community tiktoken langchain-openai langchainhub chromadb langchain langgraph tavily-python langchain-mistralai gpt4all llama-cpp-python" + ] + }, + { + "attachments": { + "a65940f9-5c51-4d7c-9ca1-ae576e4bb51a.png": { + "image/png": "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9WPuJCABCUhAAn1NAAXeaqutVv41U0r2ohAogb///e8XF198cbHmmmtWXoI4Sy21VIHf8JGWZorqNC9vv/12sdtuuw2UwYMy5lxHpWXP7U855ZS54K6HhZkbuYTTBafjkfZDLVdseGC9k1ia5SWOl26naz2kx0d7v2qGRqt8BUMA8VJWrc5Nj4+F/iLNc6v9SSaZpBYlHT1fO/DuBn1LLPF5cXi6PVQldppOP+wPpQ2mTNP9TsoV9x2dnJebOdHq/NiI0CpuN4/HC653km6/91+dlMW4EpCABCQgAQn0DwFnevRPXZgTCUhAAhKQgASGQIAZJvx95zvfKV2G3HHHHeWCsbj9iAV/53fffXeli5w47nCUW3E6U001VbzbdPvaa6+tc9fFotb4bGctA9JBMcTIYxZzTsvWNOHk4EgrmHDLFAsjnOeee+44KLudnpeN1OPA2CUNMyjitSHmnXfegsWJEdy3pAuQV2UtdsWUjs5nBHh8vCqNNBy3Z0FGaoZMuF4vf1kHhDUokGYj3jvJQy/6i06u38243COBT+wiKL1Guth4M5du8bm4bRvPkt6fL7300pBxpH0eC5m3YySI13BKL447wB122CENLk455ZRyHSDWAhoLMqj911hgbx4lIAEJSEACg0xAo8cg165lk4AEJCABCYwjAiiQWDScv+2226549tlnCxaLvf/++0sKKIMxGuTWNUhH0zZTIPYK6X333VdLGmXvOeec06AUQwmXrhFRO6liI50xgT//kZRYocV1MR5sv/32I5mFIV0LheIVV1xROzf15x8vzM2MhC996UvFNNNMU4vfzkbqioqF6auMHulo/Tj9OB3aOG64cqP0hztbIr7mSGyzTkJQ6j/wwAOVl+z0niCh4fQXlRkZ4QPxOhL0b6ztgJE0lXSWW65tpOe4XzTcQxg511lnnSyaN998MxseAlMj7ic/+cly7alwfCi/hx9+eHY9D9Laeeedi1/84hd1i6IP5Rojcc6g9l8jwc5rSEACEpCABCRQTUD3VtVsPCIBCUhAAhKQwBgmgD96ZkvEUjVSFwVorCxEWTQURWp8rU63H3vssdopKM9zo4BZ4PzWW2+txWtnI13IHcX6SApuXRZaaKHaJU844YTilltuqe3368ZZZ51VW0yYPLKQdizpouPM9Gil+IzPZzsdcY8rtpwwO+fee+/NHSrD0kWaL7nkkmzcePH1bIQ+C5xjjjlqOULhHAyYtcD/vxFm3KThnex30l90km4v4zLbKBYMpalgTP31r39dC8YoPBRXT7UExtEGnGLjJvcnxtCcPPTQQ7ngWlg602PvvfcuhuOG6uqrry7dO4YLsHYV63sEwQjGNcaCoXNQ+69QF/5KQAISkIAEJDA6BDR6jA53ryoBCUhAAhKQwDAIoMjBHRTKzpwh4/nnny8uuuiicqH1+DJVo+iJEyulGDG9yy67lKNoY1dXr776ahEvSBunPdztOG8oKVMlN4sWb7DBBnWXYc0JDCHNXFbheom/IKeffnpx5ZVXFpwLR2YGMBL8xhtvDFG6/nvQQQfVpbnJJpsULCyN+6hYKcc25YndStWdOAI7r7zySrmY/IQJE2pXQymXLsC+wgorFEsvvXQtDi7HGAWOMvJf//pXLZwNFKWPPPJIg1GEdSbi9Wiuv/764qijjqqrT9ryvvvuW2eAqUv83Z3ll1++bkQ3I8DJRywY1dp1wRWfN5rbG264Yd3lv/KVr9RmfnCAe5O2e+ihh9bFS3d60V+k1xiNfRY8j9cNOvfcc4tjjjmmePHFF8s29Ktf/aqcgRTnbccdd4x33W5BABeDQZjRRRuM1/rh3sbYdOmll4Zo2V/qCZdWQeh3ufepM+orFvpz+vsqV3UYS1j/KQgzJfbbb79ijTXWKNZdd90QXD4jzzvvvNp+v24Mav/Vr7zNlwQkIAEJSGC8ENC91XipacspAQlIQAIS6AMCd911V4PymGzFCxaz/4UvfKFOUU/YbbfdVnMfhDJo6623JrgmKPZZJLpKUYSCqdkaG6R3zTXX1NLDMMAfgsIqpMt1Hn744Vo83IhggEHScqDcjw0OpB8bN2qJvLux8MILx7slA5TtjObGCMMfsuSSSxa33357uY1hJPh8P+644ypdr7COBsq1IDk/8IsttlipPA9xuvlLHnH/9IMf/KCW7Kmnnlrwh1BOZtagCERWWmml4swzzyy3e/3v61//esGsjkknnbRgJkTO4PLtb3+7SF2gMQocw81yyy1XyyKjvbfddttynzbDjB2McqHt4C4rdZO100471bnROvHEEwv+cH+DASbUe+0imQ1m07BmzYEHHlg7Sj5oe7QfDEmBbS1CxQZKXtbFSSVu2xjIFlxwwboo3D977LFHXdhwd+abb75SkRvuQ8pA26C9TDfddMXjjz/ecM/lrtmL/iJ3nZEOo00ymn+fffapXZq1jfjLCW0KfrF86lOfKt54440yKK5jAuaff/5a/8VMmBtuuCE+tSfbzJZK+8LchY444oiCPi8WZjqgQO+mrLfeegX3f7iHMW5yDy+wwALlZTqZZYTB5Cc/+UnNcEeaGIT5416FcdxfEJ4+5zCIYJCP6woO4TlDf8azMtzv9AmsYxPyG9jQ9x5//PFht/Ybp0tgep+TTtVMsloiHW50s//q8NJGl4AEJCABCUhggAk402OAK9eiSUACEpCABPqNACPgUaqkf7l8pnHi2Qw5tyDED4qpND0UNYygbyYYEzbeeONslDhdrhPPLkExHfKaOzkc47eZ+6O11167wR0XCngMKrHiu2qkdlBc5vLw5S9/ORdcF9aJ8q7uxDZ3DjjggKIqH5QzKOlILi5vm8kPORrXxmUYyszU4MEI6rPPPrtYfPHFs+njfulHP/pRnWu0EJE2QznitpObJUTbhE0quHIKHMgH7muayUYbbVTQhmKhzWEYC2yZmYJ7o2bCKPa4zYbt9JwQHn5fe+21NEpX9vfff/8GhS31BB+ujaRu7CaeuP4Tpxf9RVcK14VEMGiydlEroZ2h5E5dW9E+Qx3m0gjH4j4vF69bYaxdE66Z/qbXSI+nM6zS+EPZx5COETIYFUIa9Jdxn4khopWg3MfAmjPMUJa0v3jqqacakmSR8jvvvLMWjlGEZ1cQDPu4EIwFI3fqlov7NeXHfippnF61g3b7rzh/6X0eH3NbAhKQgAQkIAEJ1H8RyEMCEpCABCQgAQlkCEwyySS10Hi7FhhtxGtRoOSJJT4Wh7ezHV83di/S7FxGNh922GHFBRdcUKQLeufOY+T+scce26BkTeOySHqQTsoUlyGcH345xujb3XffPQTV/bIuxvnnn1/nUqkuQpMdRsZfd9115eyBqmisUdFsseyq89oNR2nIqOOrrrqqHG2eKhHjdGK+hKeK2sA8VnrF6cWcmcERS3xOHB5v48efWQuMbF9xxRXjQw3bKBxxJYV7mdj/f0PEdwNYYDwnKK1po7nzUZDiPodR981k8sknL5XajA6PXR5xDvu4vUF5O8ssszRLpmiHTy6BmDnHURYHCfUV9sNveq1cPNY9wXUQM4XiOiYN1uHBZVdqEGLEfCy96i/iawxnO2aVcmyVLswwmmGcw7CRCnVP+2KGAUa6fpe0TXSS37T9xFzTYyHd9Hq5eBgLucdT4xppYESk31599dVDkk1/6YuZdffd7363pQHyhRdeqEsLo8jRRx9dCyOtvfbaq7YfNpjZEbuy4zyMJbF02s7CuSmfeL9ZmvG9G58T0m2n/+JZHsvMM88c77otAQlIQAISkIAE6ghM9K6P2//UhbgjAQlIQAISkIAExgAB/Pn/7W9/K5577rlyBgWzKDCyYNyYdtppy7/UJVEnxWJEKyNtcbvEHwo03BWhNEZB00thVguKf8rGqxrKHUb7B3n66adLd0yUN/ylyv0QN/1lZgr+4gMvRgbjciuniErP7fY+ymhG7YdZKijGKCf110th9DJ+9PmDQxghDgdYD4cFdcfMCtbiIF3aCopn2k076TICGzdbKGMxgoRzyDN1ByPadQiv4sQIfmaW4AZq9tlnr0XD8IJxi/uEdFKlby1iH25wLzzzzDMF7R82wbjD6Pl4XQ/cz8VKVorS6/6iX3DRnp944omyz6I9Tz/99P2StYHIB/c3fOHMOlDhGUM4zyPaHfdWu/0xbZq+gtlIzMagv6BPxtgX0h4IcB0Wgv4LzhgwQ/+F+0DWLQnCeiXLLrts2PVXAhKQgAQkIAEJ1BHQ6FGHwx0JSEACEpCABCQgAQlIYKwQwICDIjS4GkLpHK+5M1bKYT4lIIHmBA455JByRlOIxUw8ZnspEpCABCQgAQlIIEfAhcxzVAyTgAQkIAEJSEACEpCABPqaAKPrWaciGDzI7CqrrNLXeTZzEpBA5wRY2woXbkGYETjbbLOFXX8lIAEJSEACEpBAAwGNHg1IDJCABCQgAQlIQAISkIAE+oEALn9w+RV+2cb1DbM5WB8GlzexsBaLIgEJjC0CuJDEhV98r+Ni8tFHHy1uv/324pprrqkr0P7779+2C7G6E92RgAQkIAEJSGDcENDoMW6q2oJKQAISkIAEJCABCUhgbBFggWgWYm5Hdt11V0d/twPKOBLoMwJHHHFE3UyOZtlbfPHFizXXXLNZFI9JQAISkIAEJCCBQqOHjUACEpCABCQgAQlIQAIS6EsC00wzTct8saA5StPVVlutZVwjSEAC/Ufg/e9/f1uZ2muvvYptt922mGiiidqKbyQJSEACEpCABMYvAY0e47fuLbkEJCABCUhAAhKQgAT6msDUU0/dkD8WK//Upz5VzD///MW8885bMBukXaVpQ2IGSEACo06g6v5dZJFFio997GPlfb7CCisUH/nIR0Y9r2ZAAhKQgAQkIIGxQWCi/7wrYyOr5lICEpCABCQgAQlIQAISGE8EXnjhheKdd94ppphiimKyySbTj/94qnzLOm4IsJ4H6/Zwj08++eTlr7M5xk31W1AJSEACEpBATwho9OgJVhOVgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhgpAlMPNIX9HoSkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIoBcENHr0gqppSkACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkMOIENHqMOHIvKAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQQC8IaPToBVXTlMAYIPDmm2+OgVyaRQlIQAISkED3CAzis+/tt98u/v3vf3cPkimNGwK2nXFT1QNf0LfeequvyjiIz5q+AmxmxiUBn1njstottASGReA9wzrbkyUggTFH4Nlnny0OPfTQ4sorryyWW2654uCDDy7mmmuuMVeOfsjwYYcdVjzzzDOVWdltt92K+eabr/J4Px/42te+VrzwwgtlFldZZZVi3XXX7efs9k3eXnrppeL8888vHnnkkeKxxx4rfvvb3xbve9/7iplmmqmYeeaZi+OOO67c7psMD3BG7r333uK0006rLOG8885b7L777pXH2z1gnTcndcsttxTXXntt8fjjjxcPP/xw8fe//734wAc+UMw666zFmmuuWWy77bbFK6+8Uuyzzz7FO++8k01s4oknLo4//vjiPe8Z+mvr3XffXdBn0y422mij8tnHvTnW5cILLyyOOeaY4uWXXy6++tWvFttvv/1YL5L575DA6aefXtC+kbnnnrvYc88920rBttMWJiP1OQGUoEceeWRxxhlnFPPMM0+x3377FSuuuOKo5drvrFFD74UHnIDPrAGvYIsngR4RmOg/70qP0jZZCUhgCAT4cL3tttvqzvzc5z5XLLDAArUwRnSizItv32mmmabYbLPNanGqNiZMmFCcdNJJtcPrrLNOqYitBbjRNoEVVlihePLJJyvjo/xeZpllKo+PxAEUsijeUcA/+uijpTIe5TvtKfzNMsssDVlZcMEFi3/+859l+DbbbFMccMABDXEMqCdw/fXXl8omlLpV8uCDDxZTTz111WHDu0gAw+4OO+xQmeJiiy1WXHLJJZXH2zlgnVdTou/ByHDRRRdVRkJBv++++xYoiRZffPHKeBzAkPje9763aZxmB9dee+3i/vvvr0XhWYjxYyzLP/7xj2KRRRapK8INN9xQfPSjH60Lc2ewCWA4vPrqq8tC0h4uu+yylgW27bREZIQxQuDGG28stthii1puMarfeeedwzKS1xIbwobfWUOA5ikSaEHAZ1YLQB6WgAQqCQx9yFxlkh6QgASGQ+DWW28tjj766Loknn/++eKQQw6phaHE5qU6Fl7y2zF6hNGA4dx0P4T38nfLLbesKZ/WWGONUjHWy+uN17QvvfTSYtddd80W/4orrqiFb7rppuXIuLEw6rlf2w4f3eStmcBXg0czQmPrmHVeXV8Y5HkexUaGXOycwTUXb7hhr7/+ekNeHnjggRE1erz22mt1RvADDzywYNDBcOR3v/tdw+kPPfSQRo8GKgakBGw7KRH3xyoBBpPEwsCTv/3tb0U7z5eTTz65nCHC+dNPP305KzFOayjb6XdVuj+UND1HAmOJgO87Y6m2zKsEBp+ARo/Br2NLOAAErrvuujqjRzoTpJMirr/++sXtt99eO2WDDTaobY/UBh8jYTQ8IzfGqpx66qkFL3ZBmE2x9957h91R+2WENTMzfvrTn7aVh+9///vFX//61wIXGbiR6Wfpx7bDzKvDDz+8DtsnP/nJUumLq5HJJpusoE7eeOONujju9JbAZz/72YYRz7j2w73RcMU6b07wZz/7WYORYccddyyYXfOhD32ovBeee+652gzGGWaYoaGuMNqee+65zS/U5lFmiPDsu/jii2tnrLXWWrXtkdjABUt47nG9MJNuONdedNFFS55/+ctfasmMpluXWibc6HsCtp2+ryIz2CYB+vJ4sNiSSy7ZlsGD5HELGPrlbr2j9cN3VpvojCaBnhDwfacnWE1UAhIYIgGNHkME52kSGEkCf/zjH4s///nPtZf4m2++eciXZ2TptNNOWzBKGXciq6666pDTGu8nput1oNzuB9luu+0KZgzFgrKR+mYdg6effrqgDTH9Xxk+ARS88ahZZi+xdke/tIfhl3BspsCsmtT1z4wzztiVwljnzTF+85vfrIuAu520LuIIk0wyScPxVrNE4vPb2cbgRR4wTq+++urFEkss0c5pfR2H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mzx8X2t72gQ7v28fG/74XwNr7ljyoP7A8MdtwCX9bOcr77DHLuxjYz+fZSPHPG8PPfSQ9e7dOxCfEQQQQAABBBBAoJgC6hvCDyrIeOqpp6xv377+5MjD1Uqa9FTBxeTJk5PzDB482Jo2bZocL+ZARabP78si6jaPGTMmEPWOO+6wE088MTDNjahT8I8++siNlvkZ7rRe+1oFKLVq1SpzXj9Cu3btAgUz6sj+qKOO8qMwjAACCOQsUNJeAgEBBBBAAAEEEECgUALHH3+83VtS4NFx200SBR5az+u37mjffzvdHrp/WKnVttl6a7vrnj/b8lVr7JwH/mpjXn7F9ABLgUcpKiYggAACCCCAQJEFVNPj5JNPDqRi2LBhNmvWrMC0bEa23377QPS7777bwh2WByJU8Eic06eCDD/07NnTHw0M//3vfw+MRxlRgYUfvv76a3800vB2XvOumuHee++1pUuXRpqXSAgggEBUAQo9okoRDwEEEEAAAQQQyFJg33272gsvPG/dOtW3d+7pkpy7XasG1r9nI3vy8eH2yMMPJKdr4JOJE6zv2WeUdFxZw2qVVPV/6aWX7OCDDw7EYQQBBBBAAAEEEIiLwEUXXRRIijqbVpNUb731VmB61JFevXoFoqrJrBtvvNFWrFgRmF6skTinL9xfxi+//JKS6bHHHrMZM/6//7iUMVJPbN++feCLW2+91dauXRuYVtbIgQceGGj+bOrUqYk+7+bNm1fWrHyPAAIIRBaocW1JiBybiAgggAACCCCAAAKRBHbcob19WtI0w2mHbG6PDdyt1Dx77dDEJkydY8+++J59M/0bO+Sww+3xR4fbbTffYNWrVzO9OammHbbZZptS8zIBAQQQQAABBBCIi0CjRo1syZIlNmnSpGSS1qxZY2PHjrWvvvrKfvzxx8T36mRbNUAmTJhQ8lLIC8m4HTt2TBSSuAmtW7e22bNn2xdffOEm2SeffGKPPvpoojmlX3/9NVEzQIUr3377bWJ5L7/8csn9U3ULd6yuBahGg7+sE044wbSOVOG5555LpNd997//+78W7lsjX+lT01Affvhhon+LH374IWHl175Qvye6D9R3+lOhQLgPFZdO96nt9JsG07B8t9hii0ShkcaHDx9ud911l5sl+al99vPPP5tcFT9VPxval++9915yHnVcr30pe82nP9X+ULNZb775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Y61Pnz6Bzb/xxhvtsMMOs6233jownREEEECgGALVi7FS1okAAggggAACCBRTQG+pNWrUwNasXmGTH94rcoHH+E8XWPdLJ9uCX9cl3vqjwKOYe5F1I4AAAggggMDGLqDaBY8++mhgM1W747HHHotU4BGY0RvhHs7DKMfgIYccYqNGjSrVTJgKPggIIIBAHAQo9IjDXiANCCCAAAIIIFBhAur8cs8997DqG9bYrNH7W/PN60Ra9+C/fm0nXz/Vlq9ab9dcc40NGTIk0nxEQgABBBBAAAEEECifwMiRIwMzqkmre++912rXrh2Ynu2ImmeaP39+trMR3xPYa6+97Pbbb/emmL3++uv2008/BaYxggACCBRDgEKPYqizTgQQQAABBBAoisDQoUPtoIO625aNzGaOPiByGu4cNcPuGjXb1m+oZvfff79deeWVkeclIgIIIIAAAggggED2AqtWrbLRo0cHZjznnHOsZs38tNQ+ZsyYwLIZyV5AzVmpLw8/vPTSS/4owwgggEBRBCj0KAo7K0UAAQQQQACBiha4+OKL7eKLL7Ltmte0KY/vF3n1f3zwS7vlqZlWt179RKeNetgmIIAAAggggAACCBRWYMKECYEOyLW24447Lm8rfeSRR2zdunV5Wd6KFSvs888/T9wrjh8/3mbNmmUbNmwo17KXLl2a6HNEhTJaVrg/k/IsVH2VfP311/bqq6/aK6+8Yl999ZWtXr26PIsKzKO+Ps4666zAtHHjxgXGGUEAAQSKIZCf4vFipJx1IoAAAggggAACEQV69uxpL7zwgu21Yx177bbSnVamW8yRf/zIPvl6jW266eb2xhtvJDpwTBeX6QgggAACCCCAAAL5E5gyZUpgYepAu3HjxoFp2Y60a9cukfmv+WbPnm3vv/++HXBA9Nq/4fVNmjTJrrjiClPfI+FQv359O+mkk2zgwIFWp07Zzal+9tlndumllybT5y9PNSruvPNOf1KkYRV0DBo0KFGIkmqGAw880AYPHmytWrVK9XWkadrGO+64IxlXhT9r1qwxFYgQEEAAgWIJUNOjWPKsFwEEEEAAAQQqRGC77bYreevuBTu6S6OsCjx6XfOpTZq+1pq3aJl4G26XXXapkPSyEgQQQAABBBBAAAFL1JzwHfbZZx9/tFzDWkaHDh2S8/71r39NDmczsH79envggQcSNU9SFXhoWcuWLUt0wn700Ufb9OnTMy7+xRdftGOOOSZlgYdmVF8ZAwYMyLgM/0vVMlFn7epw/KOPPvK/Cgyrr7t999038XJQ4IssRpo2bWoqTPJDWdvrx2UYAQQQKIQAhR6FUGWZCCCAAAIIIBALgR122MG+/XaGHdu1iT05qFPkNHW79BP74IsV1mbrbey7774rqemxaeR5iYgAAggggAACCCCQu8C0adMCC9lqq60C4+UZqVatmp155pnJWV977bVEU1TJCREH1NeIakhECaptodoQK1euTBn9iy++sAsvvDDld/7EbDoJVxNTquERNagZ2G+//TZq9FLxWrZsGZj2/fffB8YZQQABBCpagEKPihZnfQgggAACCCBQIQItWzQveVtumt1+Xlt7bOCukdY5b9Eq63TuBPvyh1V24IHdLPywHWkhREIAAQQQQAABBBDIWWDRokWBZWy55ZaB8fKO9OjRw9T0lAujRo1yg5E+VXhxyy23lIqrZq6eeeYZGzZsmHXr1i3w/YIFC+ypp54KTHMj9913nxtMft5666324Ycf2sSJExPzudopUfr3UF8dt912W3JZGlBn45qmwhD9adg3UByts7yhefPmgVmXLFkSGGcEAQQQqGgBCj0qWpz1IYAAAggggEDBBTZt0th+/nmuvXJzR+tzVJtI6/v4q8W2T79JNmvBWuvZs5fpzT8CAggggAACCCCAQHEEfv3118CK81HTQwtUZv8pp5ySXPbjjz9u6ug7alDhhQox/KC+48477zxT81lHHXWUDR8+3Hr16uVHSfR7oSav/KDaFeGOv9UsldLXokULU0GPmp8aO3asde3a1Z817fDTTz8d6PxcTU+99dZbdvLJJ1vHjh0TfxpW01YqDHFBnZyrVkp5QrjQI7yd5Vkm8yCAAAK5CFDokYse8yKAAAIIIIBArATmzZtn9erVsZUrltiUx/exvXeK1izVix/MtWOv/NyWLF9v5557ro0cOTJW20ViEEAAAQQQQACBqiSgPinCGef16tXLG4Ey/V1QAYYKBaKG8ePHB6KquaxOnYLNqNasWTPRwbkfUdvz73//259k7733XmBcBRv77bdfYJpGtDx1iB4lvPnmm4FoqsHRpEmTwDSNqEBFtVP8UN6+OMK1cKjp4asyjAACxRCg0KMY6qwTAQQQQAABBPIuMGnSJGvZsoVV27DGZj93gG3ZuFakdTz40vd29m3TbNWaDXbVVVfZ0KFDI81HJAQQQAABBBBAAIHCCKjvjUKG7bff3vbYY4/kKrLp0Dzc/Kn660gVVDNFTWn5YebMmf6ozZ49OzCeblmKtOuu0ZprnTFjRnKZ2267rXXu3Dk5Hh7o3r17YNKPP/4YGI86Eq4pU6NGjaizEg8BBBAoiEDNgiyVhSKAAAIIIIAAAhUo8Oijj1rfc86xzRtVs6+e3D/ymq9/fJoNfWGu1ahR0wYMGJAo9Ig8MxERQAABBBBAAAEECiagZqj82h6LFy+2xo0b5219qqGhPjMU1NTTd999Zw0bNsy4fGXuhwsq2rZtm3ae9u3b28svv5z8Plyo8NNPPyW/04AKKTKFHXfc0aZOnZo2itLn9/uxYsUKe+mll9LGV40aP/jz+tPLGp4zZ04gSoMGDQLjjCCAAAIVLUChR0WLsz4EEEAAAQQQyKuAqvqrM8a2zWrYxw/uG3nZF977uT07frHVrVs/0UHk0UcfHXleIiKAAAIIIIAAAggUVkD9TfiFHj///HNeCz0OP/zwRP8ebh3qhPyckpdoMoVw5r7ihjsE9+cPN/sULvQI1/zYYost/NlLDW+6aeamW8PpUwFNv379Si0n3YSFCxem+yrj9Llz5wa+p9AjwMEIAggUQYDmrYqAzioRQAABBBBAID8C6uRR7RR3alcrqwKP026abKPf/dWabLqZvfvuu0aBR372B0tBAAEEEEAAAQTyJRDO4FffbfkMtWvXNtX2cEEdmq9cudKNpvysXj27bLRwTYpws13h9YW/T5mIDBM32WSTDN+W/VXdunXLjpQixqxZswJTU/UhEojACAIIIFBgAWp6FBiYxSOAAAIIIIBAYQQOPPDARIHF4Xs2sqevDnYemWmNRw2aZJO+XmWtWm9t//rXv2yzzTbLFJ3vEEAAAQQQQAABBIogsPPOO9vkyZOTaw7XJkh+kcOAOjS/7777EktQjY9XX30149LUT0c4qNPudM1ihdPcpk2bwOytW7e2zz//PDlNTXi1aNEiOZ7tQKr0HXLIIZEXE7XfkPACs22mKzw/4wgggEC+BSj0yLcoy0MAAQQQQACBggt06NDBpkz5ws46Yku76/c7RVrf6rXrrfuln9q3s1fbLrvsmijwiDQjkRBAAAEEEEAAAQQqXED9V/jh73//u/Xs2dOflPPwNttsY3qRRn16KKi2R6ZQs2ZNU8GF3/fF9OnTrVOn1C/gTJkyJbA4FXL4oVWrVv6oqbmr8HYHIpQxopoiKrjwC4sGDx5sTZs2LWPO8n/9zTffBDy0pHDhTvmXzpwIIIBA+QSyq5dXvnUwFwIIIIAAAgggkDeB5s2bl3TgOMWuP3vryAUe02cus059J9qM2Wtsv/0PoMAjb3uDBSGAAAIIIIAAAoUR6NixY2DB6hA83GdFIEI5R04//fTknH5hhiaGm6fStHBn4yNGjNDkUkEFGG+88UZgeriQIzw+ZsyYQPzwyLfffhueVGp8++23D0y7++67U25HIFIOI0899VRg7q5du1q2zYAFFsAIAgggkAcBCj3ygMgiEEAAAQQQQKBiBLbYfDObP2+uPXhpO+t33DaRVjp+0nw7eMBnNv/Xdfbb3/7WXn/99UjzEQkBBBBAAAEEEECgeAKqsaDOzP2gzsbzHQ466KBS68m0jiOPPDLw9ahRo2z8+PGBaeqr4+qrrw5M07aEC3L22GOPQBwV7Hz66aeBaW7kvffeM3VMXlbo1atXIMrIkSPtxhtvtBUrVgSm52NETYJp+X445phj/FGGEUAAgaIIUOhRFHZWigACCCCAAALZCtStW8eWLl1k00d0seMPbB5p9ptHTLf/ufFLW7F6gx133HH29NNPR5qPSAgggAACCCCAAALFFVBtgVNPPTWQCDU/le/MezVZ5XdoHlhhipETTjihVPNNml8FC6qp8eSTT9opp5xSqpbHH//4R6tTp05giWqyVYUuftBLOk888URJzeapieauJk2aZLfccouddtppfrS0w126dDH1VeKHhx9+2Dp37myq9fHaa68lCla++OKLRO3n559/3u644w775z//6c8SafiFF14wFXz44YgjjvBHGUYAAQSKIlCtpKrehqKsmZUigAACCCCAAAIRBNRO8E477Wi1aqy3H5/dL8Ic/4ly16gZNnjEzJKRanbllVfatddeG3leIiKAAAIIIIAAAggUX0BNRKm5JD8ce+yxdu+995r6r4gStt5662S0M844w2644YbkuBuYNWuWqbAgHAYOHGjnn39+eLKpRsYFF1xQanq6Cerj4u233zYVsITDxx9/bOHaGeE4bly1RRYsWOBGEzVM2rZtmxx3A4sWLUq4hQsk3PepPvv162eXXXZZqq9STlOhTLiA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gAACCCCAAAIIIIAAAggggAACEqCmB8cBAggggAACCORVYM6cOVa3bh1bs2qpfTOia+QCj4EPfmkj3lhoVq26/eEPf6DAI697hYUhgAACCCCAAAIIIIAAAgggUDUEKPSoGvuZrUQAAQQQQKBCBEaPHm2tW7eyOjVW26zR+1vDetEqlZ5z+2f2xN8X2oaS9zHuvvtuu+GGGyokvawEAQQQQAABBBBAAAEEEEAAAQQ2LoFqG0rCxrVJbA0CCCCAAAIIFEug1iY1bf36dTZ/7IGRk9Drmk9twlerrXqNTeyRRx6x448/PvK8REQAAQQQQAABBBBAAAEEEEAAAQR8AWp6+BoMI4AAAggggEC5BX7++eeSlqmqWb26tazn1RMjLefgyybZxK/XWsNGTey1116jwCOSGpEQQAABBBBAAAEEEEAAAQQQQCCdAIUe6WSYjgACCCCAAAJZCZx37lm2605tbMjNZ9nn36238+76d9r55y1ebXv//hObPmuDNWvWwiZMmGD77LNP2vh8gQACCCCAAAIIIIAAAggggAACCEQRoNAjihJxEEAAAQQQQCCjwLx58+xvr79pp/bqaod128X++sDFNv7zVaa+OsLhk68XW7f+k23OIrPf/KadTZs2zVq2bBmOxjgCCCCAAAIIIIAAAggggAACCCCQtQCFHlmTMQMCCCCAAAIIhAUuvvA827bNlnbicV0SX3XYobU9/VB/e/ffq+zUGyclo7/4wVzredUUW7KyhnXuvId9/PHHye8YQAABBBBAAAEEEEAAAQQQQAABBHIVoCPzXAWZHwEEEEAAgSousHTpUtu6TUu77epT7IiDdw1ofPbF99bn4vus83Y1bf9dNrWrH/nBataqY4cffrg999xzgbiMIIAAAggggAACCCCAAAIIIIAAArkKUOiRqyDzI4AAAgggUMUFDjm4m82f+529PPLylBKz5iy0I08ebL8sWmG1a9e23r1724MPPpgyLhMRQAABBBBAAAEEEEAAAQQQQACBXARo3ioXPeZFAAEEEECgigts2LChpBPyidarx55pJKrZ8Gc+s9p1m9imm25qu+++OwUeaaSYjAACCCCAAAIIIIAAAggggAACuQvUzH0RLAEBBBBAAAEEqqpA375nW9OtGluf07uXIrj8xnH25jsfW4MGDe2oo46yhx56qFQcJiCAAAIIIIAAAggggAACCCCAAAL5FKB5q3xqsiwEEEAAAQSqmECTJg2t3fa72G1X9rD22zSxxb8ut5uHvmkvv/5P22yzze3444+3W2+9tYqpsLkIIIAAAggggAACCCCAAAIIIFAsAWp6FEue9SKAAAIIIFDJBU499VSrVbOGbdWild3x8Ee2Zuls+3zq99aqVRu7//4H7KSTTqrkW0jyEUAAAQQQQAABBBBAAAEEEECgsglQ06Oy7THSiwACCCCAQEwENtussbX7zba2bu0q+2LqDNt7733s3HPPNRWGEBBAAAEEEEAAAQQQQAABBBBAAIFiCFDToxjqrBMBBBBAAIFKLtCzZ09btbKksOOLr+zAbt3t4Ueest12262SbxXJRwABBBBAAAEEEEAAAQQQQACByi5AoUdl34OkHwEEEEAAgSIIdO60s82cOdOee+45a926dRFSwCoRQAABBBBAAAEEEEAAAQQQQACB0gI0b1XahCkIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQCQWqV8I0k2QEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoJQAhR6lSJiAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAClVGAQo/KuNdIMwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCJQSoCPzUiRMQAABBBBAAAEEEEAAAQQQQAABBBBAIHeBJYvW2oR3F9rPs1bbsiXrbdniNbZunVmzNrWtWava1rTlfz4326pW7itjCQgggAACCQE6MudAQAABBBBAAAEEEEAAAQQQQAABBBBAIE8CKuh4Y8wv9u20pfb5xKWRllqvfg3bsVN967RvI+uwRyNrtCnvKUeCIxICCCCQQoBCjxQoTEIAAQQQQOD/2DsP+CiKL44/SkIJvffeewdBBAERpVuxUFSwIBbEBlZUFEHEiv7tDQVBmhRBujRBlI703kMPvf3zmzjL7ObucpfcJVd+7/NZdnZ2Znbmuxtud96890iABEiABEiABEiABEiABEiABHwhcDrukvz40T5Z/scxOXfussRki1dk1MopJcpml+jo9BKdKUP8ll6i4rdTJy5K3MkL8dYfF+O3C7Lg94O2S5Uqn1Uq1oyRGg1zKGWI7SQPSIAESIAEPBKg0sMjHp4kARIgARIgARIgARIgARIgARIgARIgARIgAc8EZk88Kr9+v1+O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CZAACZAACZAACZBAahCg0iM1KPMaJEACJEACJEACJEACJEACbgmUKVNGLl26pM5v3rxZoqKi3JblCRIgARIgARIgARIgARIgARLwRIBKD090eI4ESIAESIAESIAESIAESCBgBK5cuSKlS5cW7CFbtmyRjBn5iRIw4GyYBEiABEiABEiABEiABCKAAL8oIuAmc4gkQAIkQAIkQAIkQAIkEGwELl++LOXKlbMUHtu3b5d06dIFWzfZHxIgARIgARIgARIgARIggRAjkD7E+svukgAJkAAJkAAJkAAJkAAJhDiBixcvCmJ4wKVV+vTpZdu2bVR4hPg9ZfdJgARIgARIgARIgARIIFgIUOkRLHeC/SABEiABEiABEiABEiCBCCAAhUflypUF+wwZMsimTZuU4iMChs4hkgAJkAAJkAAJkAAJkAAJpAIBKj1SATIvQQIkQAIkQAIkQAIkQAIkIHLhwgWpWrWqnD9/XsXu2LBhA2N48MEgARIgARIgARIgARIgARLwKwEqPfyKk42RAAmQAAmQAAmQAAmQAAm4InDu3DmpUaOGnD17VqKiomTdunVq76os80iABEiABEiABEiABEiABEgguQSo9EguOdYjARIgARIgARIgARIgARLwigAUHXXq1JHTp09LdHS0rF69WjJlyuRVXRYiARIgARIgARIgARIgARIgAV8IUOnhCy2WJQESIAESIAESIAESIAES8InAmTNnpF69ehIXFyeZM2eWFStWSJYsWXxqg4VJgARIgARIgARIgARIgARIwFsCVHp4S4rlSIAESIAESIAESIAESIAEfCJw6tQpadiwoZw8eVIpOpYvXy4xMTE+tcHCJEACJEACJEACJEACJEACJOALASo9fKHFsiRAAiRAAiRAAiRAAiRAAl4RgMKjSZMmcvz4ccmaNassXbpUsmXL5lVdFiIBEiABEiABEiABEiABEiCB5BKg0iO55FiPBEiABEiABEiABEiABEjAJQG4smratKkcPXpUWXYsXrxYcuTI4bIsM0mABEiABEiABEiABEiABEjAnwSo9PAnTbZFAiRAAiRAAiRAAiRAAhFO4MSJE9KsWTM5fPiwsuxYsGCB5MqVK8KpcPgkQAIkQAKRRgCK/5IlS0rFihUjbegcLwmQAAmkOQEqPdL8FrADJEACJEACJEACJEACJBAeBODKqmXLlhIbG6ssO+bPny958uQJj8FxFCRAAiRAAiTgJYHVq1fLsGHDVOmzZ8/K9u3bvazJYiRAAiRAAv4gQKWHPyiyDRIgARIgARIgARIgARKIcALHjh2T1q1by8GDByVnzpwye/ZsyZs3b4RT4fBJgARIgAQikcAbb7wh33//vTX0uXPnWmkmSIAESIAEAk+ASo/AM+YVSIAESIAESIAESIAESCCsCRw5ckRuuukm2b9/v3Jl9fvvv0v+/PnDeswcHAmQAAmQAAm4I3Du3DnbqcmTJ9uOeUACJEACJBBYAlR6BJYvWycBEiABEiABEiABEiCBsCaA2B3t2rWTvXv3KldWv/32mxQsWDCsx8zBkQAJkAAJkIAnAojnoSVbtmyybNkymTNnjs7ingRIgARIIMAEqPQIMGA2TwIkQAIkQAIkQAIkQAK+EkAw8LFjx8rTTz8tr732mqxbt87XJlKlPBQeHTt2lD179ihXVlOmTJHChQunyrV5ERIgARIgARIIVgKwgNRSqFAhlcRvJIUESIAESCB1CKS7Ei+pcylehQRIgARIgARIgARIgARIICkCS5YskX79+snu3bttRRs1aiSvvPKKVKlSxZafVgeHDh2SW2+9VXbs2CH58uWTiRMnSrFixdKqO7wuCZAACZAACQQFgRUrVqgFAbozTZs2lT/++EOyZs0qcP/I30pNhnsSIAESCBwBWnoEji1bJgESIAESIAESIAESIAGfCIwZM0buvPNOS+GRPXt2qz6UIYibAcuPtBYEK7/99tuVwgOxO8aPH89JnLS+Kbw+CZAACZBAUBCYOXOmrR9QcmDBwunTp4XWHjY0PCABEiCBgBGg0iNgaNkwCZAACZAACZAACZAACXhP4L333lPurFCjcuXKMnr0aFmzZo1SLLzzzjtStGhR1diXX36plB9OSxDvr5SykgcOHFCKmW3btkmBAgWUG64SJUqkrFHWJgESIAESIIEwIQBrDlOioqKkTZs2KotKD5MM0yRAAiQQOAJUegSOLVsmARIgARIgARIgARIgAa8IDBw4UIYPH67KPvnkk4Jg4HBnpQVWFYsWLZKXX35ZYP2BGB+w+pg+fboukir7ffv2yd133y1bt24V+Cj/+eefpVSpUqlybV6EBEiABEiABIKdwLx58+Tff/+VjBkzWl01lR4rV65kQHOLDBMkQAIkEDgCVHoEji1bJgESIAG/Ejh57Io4t0sX/XoJNkYCQUcgNjZWFi9ebNvmz10kc2YsU+5/Lly4EHR9ZodIwFcCcGn11VdfqWqw6Ojbt6/bJh544AFLIYJg5w8++KBV120lP53Yu3evdOvWTTZv3qyClf/4449SunRpP7XOZkiABEiABEgg9Alo11Zw/agFSo+KFSvKDTfcoLJo7aHJcE8CJEACgSNwVfUcuGuwZRIgARIggRQQgN90rKjdsmWLLFu4SXbs2ibp0qWTrFli4rfskit3NsmRO7PExZ2SkydOSdzJODl1Ok6iojNKw2tqSO3ataVZs2Yp6AGrkkDqEcDqdcQtwCq4FStWyvbt25K8eK5cuaVgwYJStmwZufHGG9WWJUuWJOuxAAkEAwE8808//bTqChQesOhISuAbHK6v4OYK8T1gJYJ2UD9QAoXHfffdJxs3blRutr755pv4v7mygboc2yUBEiABEiCBkCOAmB3atRXeTWEdCdFWH3hPxXkoPWDVyYDmIXeL2WESIIEQIpDuSryEUH/ZVRIgARIISwJHjhyRPHnyqLHpAHd4Gd6wYYNgoimlgkk0rCzClj49jfxSypP1/U/g6NGj8u2338sPP/wghw4dSNEFMmXKLC2ubyU3tmklnTt3TlFbrEwCgSQARQWClsNiw1uFh7M/aKNnz56yZ88e5Q7r888/lxw5cjiLpegYsUNwjfXr1yuFB6xSKlWqlKI2WZkESIAESIAEwo3AxIkT5fHHH1cLzjJkyCCzZ89WQ3zqqafkiSeekJMnT0rLli0FsbGwYKFHjx7hhoDjIQESIIGgIUClR9DcCnaEBEggUgn0799f4CJkx44dyp87Atm6knx5C0vRQmWleJGyUjR+Kxa/mVK4YCnZf3C7rF73p6xev0TWbVhqnlbpKlWqyB133KG2mJiYROeZQQKpSeDixYvy08ixMmnSZFn61x+JLt2l8+OJ8uJOHZdjx2MTthMJe+S5k6xZY6RmzRpqMhiBoTFRW7JkSXfFmU8CqUYA/9frGB7JVXjozkJp0q9fP5kxY4bg//lhw4apvT6fkv2uXbvkoYcekrVr16oVqVCq4BoUEiABEiABEiABO4GHH35Ypk2bpn7fJ0+eLLNmzVIFnn32WXn00UdV+qWXXpLvvvtOmjdvHr/g51t7AzwiARIgARLwGwEqPfyGkg2RAAmQgO8EevfurcybnTWjoqKlZrUmUq1SI6lasX68kqOcZMmc1VksyeNNW1fK3yvny6jx79vKwgc7lB9YYZw3b17bOR6QQGoQ+PqLkfLp/z6OV9TtSXS5hnVvkK63P62Ue4lOusi4cOG8HIrdIwdj98qhw7vj09jvkX0HdsqGzX8nqgHLJ7oUSISFGalEAJYZUFBgD0mpwsPsNtodO3assvRAu3CjkRLZuXOn4Hdq9erVUqJECfn000+latWqKWmSdUmABEiABEggLAkgeDl+dytUqCDTp0+XXr16iY7v8eKLL6pjDByBzhEfS6dLlSql0vyHBEiABEjAvwQY08O/PNkaCZAACXhNAGbOziB2rZvfKXVrtpDqVRvFKzlSbolRvkxNwSZyRWrXuE6mzPhO5i+eJNu2bZO3335brS7CJBkUIBQSSA0Cxw9fUTEIxk5ICNqsr1m+bE2pW6N5/PPfTMqVqaGzvdpDSVikcGm1OSscOLhbxk3+VGbMHWWdQtDoW2+9lX6ULSJMpBYBPHs6fgeu6U+FB9qDhQcEig8EOEdAdCj4kiPbt29XCg9YeMA66uOPP6bCIzkgWYcESIAESCAiCOA3HtKpUyflTth0KYxA5loQa7F8+fKyadMmmTt3Ll1caTDckwAJkICfCVDp4WegbI4ESIAEvCHQtWtXmT9/vlW0WeOOclOre6ViudpWnj8Td/7nJqjCI7WkWeNOMvn3b+WfVfNk//798swzzwjcl0D5QSGBQBFAbJpvvhotU6dOkV17NqnLwCVbwzo3SIO6raRyhboBuXTBAsXkkfvfkOubdpaRY96VNf/+KYUKFlHBmK+55pqAXJONkoArAgg4jsDjWqCM8CZouS7v7R6KD7i7gqsruM9CPA4oV3wRKMZh4QFrFFgGfvTRR1KtWjVfmmDZECGA5wOuBuHyMn/+/CHSa3aTBEiABIKPwIQJE9T/pVB6QNKlS2d1Ugcy1xktWrRQSo85c+ZQ6aGhcE8CJEACfiZA91Z+BsrmSIAESCApAt27d1erelDumvpt5KaW90j1Kqk/+Tpv0SSZEq/82LRlpepynTp1VBBpxvpI6g7yvC8ENm7cKD///LP8PHqMHD9xTFXt2OYBaXpNOylburovTfml7NCPHpNFS6epth555BF5/vnn/dIuGyEBTwRg3aFXgKLcbbfdZllleKqX3HNQesCCD4HHIVCueKv42Lp1q1J4oG6ZMmWUhUckxPBAXK3Tp09byCtWrKhW6loZYZg4ePCg1K9fX42sXbt26l6H4TA5JBIgARIIOIGpU6cK3iu7dOmirOlxQVhcws0VZOjQoTbL+iVLlig3wzgHd1d0cQUSFBIgARLwL4H0/m2OrZEACZAACXgiAKsKmDGXL1tdXnzqC3n2sY/SROGBPjZr3EGGvPKLtGx6m+ry33//rYLT/vXXX56GwHMk4BWBc+fOyYABA+Tmm28WBD7WCo+X+n0lPe7unyYKD3T8mT4fSuMGN6kxfPLJJ/LCCy96NR4WIoHkEIDyAbGTUlPhgX7myJFDKRsrV66suu10q+VuLFu2bFGTNlrhMWLEiIgIWn758mXp3LmztGnTxtrg1ivc5cqVK+E+RI6PBEiABFKFwMiRI9V1oPjQ4snSo1GjRpYFJb4NKSRAAiRAAv4nQKWH/5myRRIgARJwSeCxxx5Tk1CYcH2p39dSt1Zzl+VSO7NPr8HS6aae1mUR6+D48ePWMRMk4CuBQ4cOyX333Sf4ACxbOmHSFW2M/26z1Kl5na/N+b08FB/Nm3RW7f7ww/fSrl17v1+DDZKAVnhgNaeWQFt46Otg70rxAQUM+uVKNm/erBQeCMRarlw5gcJDK01clQ+nPCh5Dh8+bBsSVt5SSIAESIAESCApAqtXr5YFCxZI8+bNbRYbptLDjOmh24OLK8jSpUt1FvckQAIkQAJ+JEClhx9hsikSIAEScEcAq0cnTZoktao1lSceGibZs+VyVzRN8rvf9bw81H2gde327TkJbMFgwicCK1askHr16snChQvlkV7PxLtPW6fqfz58gU/tBLrwEw8NlTs7Pa4us3r1KhWoOdDXZPuRQ0ArPBATQ0tqKjz0NZ2KD9Odhi6DPYKpYnXqhg0bVHDVSFJ4YPxmjC249ILMnDlT7fkPCZAACZAACXgiADeukJdeeslWzFulB6ztKSRAAiRAAv4nQKWH/5myRRIgARKwEShZsqTyq16hbK14hcdQiY6Ktp0PloM28bFF3h80RXUHvs3hh5ZCAr4S6Nixo6oyfuxMmTDpZ7l06aIMfnmM5MtbyNemAl6+yy2PS63qTa3r3HxzWyvNBAmkhABieJgKD1hMIMB4WohWfGTPnl1dHv1C/0wpX768NG7cWFl3QOGBeBaRJFrBUbNmTYG1I+Sff/5JZP3hiQmCge/fvz/+/7xLnoql6Tn0UQcu97UjcAGG8cF1oa+CugcOHJCzZ8/6WpXlSYAESCCoCZw/f16mTJkiVatWVVaSZmeTUnrUrl1b1du3b5+sWrXKrMo0CZAACZCAHwhQ6eEHiGyCBEiABNwRQDwDSOGCJeXxXkMkV8587ooGRX6J4hXlx88SApsj8N57770XFP1iJ0KDgJ4sXLZwm7z66quy78AOeebRD6ViudpBO4AXn/pcsmbJpvq3du0aee6554K2r+xYaBCAQkEHLkWPofDQq0DTagROxYerGB8DBw6Utm3bSoUKFdKqm2ly3aNHj4qOZQXXJE2aNLH6AYs1V9KhQwepU6eOUh7pwO81atSQhg0bquDvffv2FbRryuuvv67qoJ4n/+34fxRlsMXFxZlNJDsN911wbVa2bFk1PvQVK5JPnjyZZJtQ/qBu6dKl1fjwfLRq1Uq+//578RQTBAqW7777Tj1TqNugQQOlTAM7sNi1a1eS12YBEiABEgh2AhMmTFAKcleLxUylR8aMGV0O5brrEty+0trDJR5mkgAJkECKCFDpkSJ8rEwCJEAC7gkgaDkCoaZPn14e7PaqFC1Sxn3hIDqTJXOMDHzuO9Wj4cOHe5ycCaJusytpTOCDDz5QE4cvvzBYhr3znqxcs0Duu2uANG6YEDQ8jbvn9vIZMmSUF+IVH1pGjRqlJur0Mfck4AsBKDzMoOUIVAqFB5QOaS1VqlRRfdEWH+jnl19+mdbdSvPrL1q0yOoDrF2qV68uMTExKm/OnDnWOTNx8OBBNcm1ceNGZcGDVb6nTp2yiowbN07uvfdem9VHy5YtVR3EDvnxxx+tsmZi79696v9RlClcuLBky5agkDXL+JrG+OBi04wtg75CIYHNk+DZ7dSpk60uysMd2osvviiPPvqowIrDKYjrdMsttyjFypo1a2ynV65cKV988YXcfvvtgvFSSIAESCCUCUycOFH9xrdu3TrRMPANqCU6OlonbfumTRMsjqn0sGHhAQmQAAn4hcDV/4X90hwbCRcCWLmFD7iPP/5YYG5JIQES8I3At99+a63s7dX1FZsLHd9aSpvSNao2lntvT3B/Mnny5LTpBK8aMgQQx+Ojjz6SfPnyScHc1WXU+Pflums6SIeb7g+JMVSpWF+63fGs1df333tfuYCxMpggAS8IQIFgKjwQw2P06NFBofDQ3XcqPl577TVbn3W5SNqbig24GsFqXL3yFhY7sFhwJ5jAx28kLB9eeOEFtddlMdn/+++/60OBAqxEiRLqGO1CMeCUP/74w8pq166dlU5uAgqJl19+2aqOPsCC85133lGWF3hXcSexsbGCxRtaUHfAgAHK6kPn4Vth2rRp+tDaDxo0SMBGCyxFoCTBXiuU8H3Rq1cvXYR7EiABEghJAghg3rlzZ8maNWui/ntj6QHrQsSSgvKEQgIkQAIk4F8CEaH0wEs1zKjvuusugSa9d+/eKjihJ5Ns/2IOvdawKgychgwZIm+99VboDYA9JoE0JAA3GfrvptNNPQWxMkJRbm3/sNSrdb2aEJs9e3YoDoF9TiUCUJDDz/uzT74lv80YIzFZc8it7R5Opav75zKd2z0o9Wu3VI3FHo6Vb775xj8Ns5WIIABlBxQIWtIiaLm+dlJ7p+LD6Y4rqfrhdB7xN6ZOnaqG1KJFC8mUKZNKa6UHLCJWr17tccgPPfSQspiBaxMovh577DGrPKw9tWDFb9euXfWhwCWKU2bNmmVlQZGSUsFkHKwyIIhXApdUmJyDlQWs2vQKY1fXMa2AbrzxRhk5cqRgrPg2GDx4sFUFChRT4A5r/PjxVhYUI6gDBQf2eJ+A8qdatWryySefWOWYIAESIIFQJIDFDebvv7sxREVFuTulXCXefffdbs/zBAmQAAmQQPIIhL3SA5P3MCeHGTXSO3fuVBYMDzzwgCDYKnzcUhITuHDhgpWJVQdOv8TWSSZIgAQSEfjss8/kzJkz0iB+ArX7Xc8nOh9KGc0ad1LddTU5E0rjYF8DRwB+2WfMmCE3tGwjuWMqy68zvpFb4hUeJYpXCNxFA9Tyza26WS1//fXX4nTLYp1kggQMAggMbk54BLPCQ3fbleLDDLyuy4X7Hn/j2i1Vs2bNrOFec801Vnr+/PlW2lUC3xSmQEGgxRm3AgoHLXBxZS7AguJYx4KBUgDB5VMqpsKmZ8+eYrpXyZAhgyDPnZiuVvr06aMsYHRZKE3y5s2rDhHT5MSJE/qUFR8FGU8++aRSblgn4xOFChVS1jFwAaYtX8zzTJMACZBAKBGAFZw7MS09PCk9EE9LL5hz1xbzSYAESIAEfCcQ1koP+ImFdYf+mHHigdk1fNz+8MMPzlMRf4yVb6bAxN1bQVntJ9hfARi9vTbLkUBaE1i6dKk1adHxZveTCWndT2+vf22jtlK2dHVlcv3vv/96W43lIoiAnhDs8+AgGTS8l1St1CBe6fFgSBKoVb2JNG+SoOiDSxtae4TkbUzVTmOyt1+/ftakbygoPDQgU/HhHIcuE+57/f8XxmlOXCHwNmJqQKDU9SQFCxa0nS5QoIB1bC4iQmb+/PlFu62CsgCuAbWYSgYszPKHmDEzEKvEKZ6UDtpCBHXwrJgCF2D16tWzsvbs2WOlt2zZYqVN5ZGVGZ/ImTOnZVVj5jNNAiRAAuFEwFulRziNmWMhARIggWAiENZKD9Ms2xN0+OCFq/eBnQAAQABJREFUK6fjx497KhZR55xKj7Nnz3o9fgRufOmll9SG4IfulE5eN8iCJBBCBMaOHat62751D0GcgHCQ5v9Ze9DXbDjcTf+PYebMmVK8eHH5YeQXsn3n+ni3Vo/4/yKp2OLNN1x1PwOXRXAPQyEBdwTgGkpbSISSwkOPB5PZw4YNU4cYR6TFWDBjbowYMUL69u1rbTqmHaxBELjclWhrB1fn3OVhQZYWBArXMm/ePJ20xQaxMpOR2L9/v1ULigan6PgaznzEAkEwdQjKQMnhFChwtJjxSUxFS+7cuXUR7kmABEgg4ghQ6RFxt5wDJgESCDICYav0gDk5XFqZAl+9iO3x8MMPJzK1hr9ZBNfjBH0CMXzsmLJ8+XIV1BUuwn755RfBhyF8uMOiA8f6wwh1TJdhWCWGD0inEsVsm2kSCBcCeN7x95AzR+74AM6hb+Wh70vzaztLvjyFZfy4CXLy5Emdzb0HApggmzt3rjhX+XqoEpKnMNEF/+wTfp4vE6Z9Kc0ad5TaNZqG5Fh0p8uXqSltW11VfMDNFYUEXBEYPny4ZdkXigoPPSa4Y9JxGZYsWSIDBw7Up8J6D8tkM9g2FPtwuaQ3c/ALFy40D1OUhvWDtiKBiyv97aFdW0GRUqNGjRRdQ1fOkSOHToovC5gQf0QrdNA/V+/xputbXRYXg/sqLVpxpI+5JwESIIFIIkClRyTdbY6VBEggGAmEpdIDH2ymP10NftCgQdKtWzfp37+//PrrrzJ06FB9Su0xWQ/fs6Z/XVuBCDk4ffq0FfRQD/mVV16RJk2aKHdhTz31lLz99tsqGCEsOnCMDQJ2lStX1tXUHh9xH330kS2PByQQjgRg5QGXOHVqXC/58l796A/1sWaLyaGsVvbt3+sy8Gqojy8Q/X/88cele/fuKkgs/n/87bffAnGZNG9Tu31ZtHB5vILnfHzg+xZp3id/dODmG7qpYOxoC+8U+F2k2AksXrxYItnlHd5t3nvvPQXl/vvvt6wl/s/eWYBZVXVvfNEhIUg30ooCIoJ0SCPwAQYqioiYKKJiYfE3PuMjRMUAFCxCFJCSUEBBUqSVkO5GOmb+593DPu45c+/MnZlb59x3P8+ZUzt/586N/e61VmJK7jlDjAYtfIwcOVJg5eT1ZFpxYdIerp6cm2YAcTdYCbE0unfvbleHzwcs1oK7K6T27dsLRIdgJFjh6bR161Z9aO8RR8RfKleunH3LdHWFixBBTHdcxYsXt/Oa5X7++Wf7Og9IgARIINYIUPSItSfO8ZIACUQbgeB8o46iUWF1li+LDZhm586d2+4pfkzceuut8tVXX9nXcIAJHK9OTiUa6KUTrEbGj9x+/foJAjE2aNBAiRb6h6+vMr6u6RVg+GD/5ptv5KGHErs3gcjERAJeJoAVlLDyQKplBTD3WipVIiEo9YoVK7w2tJCMZ+DAgUpkxypXvC4eeOABNZEFt4umZVxIGg9jpZMnT5ZmzZrLG+88KfkvLySIAeOFVKxoWWlzydoDsalMv/teGF8wxnD77berBSY33HCDmvyHCHD06NFgVB31dcANFNxaIeH7EhaGeCGZwgcCs2u3XV4Ym68xmELG9OnT5ZdffkmyVa1aVRWdM2eOWtTgq560XHMGNEfbOrVo0UIfpnt/5ZVX2nX4imH4/fff2/edB6a1yccff5xoUdi0adNEW3HAauXyyy+3i1erVs0+RlykYFrJ2BXzgARIgARcQMAUPXy5CXTBENhFEiABEnA1gaQOWl08HEy+wJWSM+FHXO/evROJHjpP/fr1lcsrWCzo9Pbbb0vz5s19+q/VeaJ5j0kHuFWBD+INGzaofdasWQUBDBG/pEyZMqr7mMjBajL9oyU1Y4KIBPP8ChUqCH5QtW3770QX/Pc+++yzSvjADx34Ey5dunRqqmdeEkiRAMRNvPbgtg6vxVy5cqVYJpQZtmzZInD1U/CKonJjrZahbCoidZe+JHqsXbM+Iu27rdFixYqpzxbEOIIbQEwQwY0KNrgHRLwjCO+VKlVy29AS9Rcrh7XP+BaNb090z+0nTep3kvGTP1DDgNhXt25dtw8pqP2fMmWKcm2G7xtw84SEic/GjRtLkyZN1N6cCA1q4xGszAz4DcED3zG9lPR4IOrgcxZj9GU97fYxwyoT8YiQ8F3CGYxcjw+vZXyfhosnvA/UqhWcWF1or3Xr1gKxZdmyZXL48GHVJL5fQ0gMVmrVqpVyUwWxHa588Vzx+QPXVBBzna6AzXaxGErfx6Ky06dPWyJ3M8H7vmnB/eSTT5rFVEB4vGa0u6477rhDOnXqpAKfI8g7FomgPzt37pSnn36aAc0T0eMJCZCAlwiYVnuYj2EiARIgARIILwHPiB4wUYewYSasNMIPcdPM2ryvj+HyavHixYIf8EgwL8cPkDp16ugsYdvjRxXiZ8DMPUuWLOqHjxYpkusEfohgUg3+iM1AiGYZiBs5cuSQ9957T13+66+/AhY8sIoLQlDNmjWlevXqSsQwVy6Y7ehjBExs06aNPg1ojx+hXAUREKqYzwSXM9jgDxsJE20QMWvXrh00X9ipgazdUtSu6T3BAxyuLJOw2vXPv9ap1dxenMxMzfMONC9EDbhWhFvF+fPnqw0rejGRhA3CMzZMrLntvQ8TV1rwAI+mDTsFisUV+YoWKW25qmskv6+aJ3Dl9Mgjj7ii3+HqJBZSYHv88cfVpDDED7zGJ06cqDa8R+B1jUlSiNOYzHV7guABIQAWEHCHqgUCt4/L2X89LkyQ9+rVSwkf+pozr1vPIUDrWBp4jfpLcO06dOhQdRvfr4MleqBCiAEQPZD0dwh8bw7mZ0H27NnVgifthhZuy0zXZRAjIGj4ShDv+/fvL6+99pq6jb7q/ur8EINNqxV9/ZVXXlGucvW4fMVJQd4777xTypYtq4txTwIkQAKeJRDM93bPQuLASIAESCDIBDwhemDCH/7TzQTfvHAjUrBgQfOy32P8qNOiBzLBB61T9IBoAN+3JUqUCOoPErSHyf5x48apH5ZO1ycQHO69917lHgV5zYRVZ5j0xeot/ePNvO88zpkzp33JdPdlX7x0gMkJsz5M2HXo0MGZLd3n4IkfUIiFAN/Auk34VL7++usFgUHxHOD/OLUJ4hGsdsATliZYrQgrFCZvEMAKTbx2IPYhHg8m3LAhlS9fXm666SZp166dmpRTF0P8R/+wr3uDN0WP/PkKWVYsxeTAod3Kj7/z/THEeF1fPSyRMJmFDe4A8VqFWxG4U4SVYv78+dVrFpNvcDPohgliWDfpVLzolVKp/HX61DN7LXosXLhQ4uLiguZn3zOALg0ELoCwPfroo+r9AZPD2PAax4ZV7Vr8wN5c+egmFhABIHjA/ZAvy2I3jSWlvkLkQDyInj17KusALA7C9yivJCya0AkLJvylGjVq2Lcg6uE1kJqU3MpeCCr4jm9aXEMED3bq3LmzsvaAFbbZFj7H4ZoNFhn6+7ez7fvvv19ZdSO4vf6egzz4jILbRojBvibyIJigXrjFgiths12zDVi4UPQwifCYBEjASwTMRaJY0MpEAiRAAiQQXgIZrMDT8eFtMvitYcWS80cIBAysQAw0YTIDk+xacEAwbjO2B1aEmT9E4KMd+ZNLEGMwsXX11VerwIj+8mLCFqLL9u3b/WVR1yF84MeJ/vBEOZitJ5cg/kCkyZMnj9qeeeaZRK6mMBmB1YqYrMBKedSHY/w4gcsgnfCjJaW2dN5A9/CljPGkNG78IISLGPy4cn5ZwDPC6jU8L6xE00HUIXhg9ZqZYPmDlWa+fpyZ+XjsPgJaAMHe6VMeFkoQP7CF8tk//FBvmTptsnzzySrJnv1fcdF9NP33+PWBvWTZHz/JSy+9pGIA+c/JO4ESwPsfxDsI1/icQYIAghXyjRo1UhZ2plgdaL3hyIf3X7wvIzWo0076PpwQ1DkcbYerjRMnj0u3hxLEnDFjxiT6XAxXH9zczqZNm5T4oUUQjAWLECAaYHU4vh+5JeF7Jr5vImAzXvv4XhULCSIPXPH9888/6vui18WecD/Tc+fOKUEQnwX4zr5kyZKQfleBWytY6MGlV7Zs2dRw8dsHx7AGT26REYQR9LNAgQIBLyrTPE+dOqV+W2CPtvD/g4VpybWny3JPAiRAAm4lALEZ8U4xf7N161a3DoP9JgESIAHXEvCEpcesWbMSPQC4b0qN4IHCWHWIlV5wD+UrYbLDTPCDm5Lo8c477yhrE5TDZCziXzgTJgSwAsvfCisz/2effaZcKehJAu3Wx8yDY1hJIJA4JhXwwyS5hEkHX2bpTt/GgfTP2Q4mn/HjyrmCCz+2MGmqff06yznPIcCAJVblffDBBwK3WTrBjQb6BndkCNAINzIIzt6tWzedxd5jQhEBFbFqkclbBGDVgU3Hs4GlFgRHnOP9AduQIUNU7BmIH5UrVw46ALiLK1v6Ks8KHgBWvmxVJXr8sWJV0PnFaoV4v4ZwgA2vW4gf2CCsY4NojZhJ2MzgsNHAy/zxVrhgqWjoUtD7kOuyPHJ99SbW6/7noNcdCxXC6g4bYgNs3rxZiQUzZ86UTz/9VG1YXIHXNvz/w9d/tCZYDmuXQHBLFyuCB57HVVddpVzxwa3X4MGD1XuS11xdRep1hwVX+D6sF//AUiqUizMwTlg8O62eIbYEkmDdoRcXBZLfzAPxPiV3w2Z+HpMACZCAFwjoxarOhZteGBvHQAIkQAJuIJDRDZ1MqY+rVv07AYeJ/pTcMEGwwI84/NBGoG2dTBN05w8Csw3kT+kHLwxoTKHEtBrR7WHCCKvnTEEBPzwwwQ9XT5jQx3jMNGfOHPvU3+ooBBeEn+CUBA+7Ih8HqNt0rwIhITUJrkDg5xfWI3DBpRNWCsK3tz/B45577lHjh7m8c4IPfvARfBHxTnQy3ZdhpRqsa1DWZKrzYm8+E/M6j71BAD7k8RqBwIGVxdjjHK6F4JYBfrkxuQZR0N9rMK0kNm3+Sy7LkTutxV1Vbs/uva7qr1s6C+sOuI+BSPf888+r90AEeoWlHSwNu3fvriZesVI2GpLp3qpQwRLR0KWQ9KFR3Y6qXtMdTkga8nilmPDE5zMWl+D7DYS+bdu2qZgBiJPw8MMPK1dv/j6/I4UHnxUDBgxQzWOCGt8fYy3BDZJ2bQWLF7wvMaWdwO7du5Xoh+/4WAGMhIVR+O7ORAIkQAIk4B0CFD288yw5EhIgAXcScL2lx4kTJxL5iUUQ45TSCy+8oCbF16xZI/BVCzdLEDHgr1gn05oAAobTFy1WlSeXYMFh/nA3j1EOdT799NO2Oy1cww+eL774Qvn3xTkEEAQCxKpInTZu3KgP5cEHHxSIIHqFmL6ByTG4RYErK20Vou+lZo/gh7rfEBNSkzCRocvChZb2iQzxRF8364PAMnr06ETWM/369VOCCYLRYwIbCRPX+FGIcUOkMt2+HDt2TE2iwDWATqjXbA/8IDYFEhxe18G9OwloAQSiB153+D/CZDIsQBAHBBveLxA3BtZW/kREd44+tL22FqcmSXBZ49aEZ4/VtViFhb15bF7De46+l5qxohzceWBvbuY1HOM9V+9h4YEA0XBjCEs2TLjDEgTbW2+9JRUrVlSWf74s9VLTt/Tkxfu8TkUKeVf0qFQ+waf/wYMH9XC5TycBfCfABnFPWzfpPb77QJzG96zkAkynswsBFcfkvnafiglqWKzEaoJ1B3jA2gPfy/73v//FKoo0jxuW6L644fv/2LFj1WdAmitnQRIgARIggagjQNEj6h4JO0QCJBBjBFwvejgnIWBJkFIyV6diQhwrDzGBZIoHpoUFVtXqWB+oG4ICfK4nl+Cj3UxOV1iYgDUn55EXk68QcZAgisBaon///upc/zHd8hQpUkSt+oW4MdeayDWT9p+NCTHEvIALlUglc2LMtMzQ/UHfsNINk3zOhEkRiCFvvvmmfPTRR+o2nhNWicJKxrRAAS8zYeIEAdIhlJgTFbA8oehhkvL+MdymIC4MNvgnh/iB/0EIndjgrkSLH3jdpDbt27cvtUU8lx/iEv4v3ZgQWBzb2bNnXdH9AwcOCDZ8hkRS9DA/BwsViNxnTKgfWsECxVQT+/cFX/SAy6ClS5faYpsW1vQeIps+hgCnRTh9rPdajPN137wXSH7EGDh//rza8D+hj7E3z5EP59g7N339zJkzgg3n+ljv8T/nK+H7Ftx3YoMQCNeBkUpPPvmkHD9+XHLnzu1zsjpS/YpUu4jnAcsXfLfC96pYtHpJD3u89p0J4t7bb7+tFjo57/GcBEiABEjA3QQoerj7+bH3JEAC7ifgetGjWLGEyQj9KJxuqPR1c29aMOA6VtFi0wnWAa1bt9ancuHCBfsYBymtaMYkv7mSC/XBzZNOmBxA0G1nwsQ+tuSS2S/kg/AxatQo5RICgbJMqwbch5UFNkz2Ilh6Sn1HGZ3MH2dOBjqPv73p/guig07mdX0NE86+BA99H3tYxWBlvhamfv31VyV6HD582MxmH2PiGv63EagRAgfOtXCFyUK3JTw3rEbXK9Kxx+SVeY6JLec5rvm6bubTk2TmNWcZ/YUtLdwg4JkbfFjrcxwj6Wt6r+9jb14LZn64f7v22mvV5DEssxAPBq7lIJDA4gqvnUCTKb4FWsbV+TLEJ+k+XImBHWLnYHIUE5p439B7HJvnuO7M528SNEljvKAIQETGhKyv99VwIDJFj8IetvTQLPfvD67osXr1alU1XvfYIAw4P8N127G6h0sscEptnLZg8MLkvnZphu90kfo/C8ZYglkHhA98nwQfih6pIwvr665duyqLbsS7w4Io5++Y1NXI3CRAAiRAAtFMQP+Gxu9tJhIgARIggfATcL3ogRWQsBTQk+FwVQUBw2lZYaKFcICg1/7SvffeKzly5LBvOz+kUvKn/sorr9hlcYAfyphE1gk/FHV/9bVA9rD68DcRC5dWzZs3lylTpqjg6XCJYiaMFxvcE8Bvtr96zDLmMSZjfCVYYcAkH1YXiMehk7laHmP1NzGH51SpUiVdzO8egeZNhtrdlr8V9gg6qgMmoixcZejA726coO7Tp49yKYGJMYhmTKEhALZw34GVlxBFnNZY/lqFYBRLSX+Bd44ZrgPTkyByBSKO6DwpiSipyYf/LYhqegIafdHH+jr2+ljn1+fmXh/7y4PrZv3Oc7wO8TmD913c0wnvZZo9yuPc33urLhPKvfk+f/bsGcs1V/ZQNhfxug8cSF1sq5Q63K5du5SyJHsf33+0izTnHvewaVFb7/E5qo/13ryG1xf+byBI6r157Lxmnut8KV3DazfQtHbtWhWL6ZNPPgm0SNDyjRw5UtWFeBb4DsGUQEC7f9WCELkETgCxBLExkQAJkAAJxAYB/b0d37mYSIAESIAEwk/g35n48LcdtBYhYiDQq06PPvqo/Pe//5XGhnWFvoc9LCLmz5/vV3gwJ++RH3EjzNgQcF0FAcIZ7Bx50Q8IL2Zyfsj98MMP9m3Ui/gUX331lfphb98wDpDn1VdfVYKFcTnJIYQaiBrYsNr6s88+U1YeZkZYP2CDr3is1tMfxGYefQwxSYsnviwqjhw5Ii+++KLKjvgoWL2GSRYkczIM5wjM7ut5FC9eHLdTTHBHZFqMwB0Zki8BAxOvOoaIrrhKlSr6UDZs2GAfu+UAzwo/lH09h2gfAyaAMQmGyVvn3rnS33lfT575KqvzBlIH8ur85h5lMbGMDRPN5uQzBDVYfsDKKKWkLZUCn8pLqcbovL9j1ybVsQwh6h7ej/B+6XzPDFFzUVetdumjLQDQQawGbtq0qRK1b7zxxqjqs/k+f/bcKc+KHufOJwjNh48E19IDgaEhWkFghdWMr9c9PlPx2Q5RA3tYqup9VL0YAuwM3AvOnj1bfe/5448/7FLVq1dXn9tNmjRRFmP6PRvv0TfccIOdL5wHelK/R48e4Ww26tuCEIVEy5eof1TsIAmQAAmQQIQJ6LkWc/FmhLvE5kmABEggpgh4QvSAX2FT9EDQcQgXWK2NoNf4MY3JGayc3b17t5r092dpgYl7uGhxpvr16ytTflyH+wkE2R42bJhtfYC6hw4dKh9++KGzqBJXEGRbr44zXWndfvvtyswdgTJ79uypgtTiByVilWCyCzE8EEMEEx2pSdWqVVOWAb1791Z9gv9lM8EVDdw9QUzx9yEMQUKLHr5cQv35559mlYlWJJuTYciEMWvRo2jRonZgeLipgnjiS0DSlcM9l3MFOSxbYO2hXVbpvA0aNFAc9bnem5YtiHeCCRV/49Zlom2vhZ5o65cb+4NJNx3YHK8/M+F1iok37OEaLZCEyZ/cufIGktXVeTZvXaP6nyFjqGQPV+NJdefx2sN787hx4xKJsbB+a9iwoXrvx3tatCbzff7MmdOSJ3e09jR9/TpwYKeqAAsggpmwQCEW0ubNm9ViECzw+O233+wh16xZU7kSRbBy8zPazhDhA3wH2rVrl0Sb2BhJLBDpTAuYSPaFbZMACZAACZBAtBPQoodeGBrt/WX/SIAESMBrBDwhehQuXFi5bHIKDpjYxJaahB/nvpIO3qjvYcIUE6NwzwTXNrDucE7A67zYww0UBAhMtpv5cK7T5ZdfroLSpjYwLdw+wHLl5ptvls6dOyeazIeLJ/iiRrB2iDLfffedbk65u4LYAMHFV4I4oRMsNbBiH+5UkOCeQgcWxzkmLLD6VCeMxUw6QDuudevWTQVtxDFYQGhCLBMIPLoOiCw///yzslRxBih/6623lEusrVu3oopECSKO7qN5w7T0wHUERoVvZabYIYAA9vi/xYYYHmZKi9Bhlsdx0SLFZeclSwjnPS+cHzl6QPbu366GUqJEYBZaXhh3sMewZcsWmTp1qvpswmtSJ8QsgMANsaN27dr6clTvzZgeZ8+eiuq+pqdz+w/uUsUrV/rXYjA99cVCWSwEwescGz7LdcKiklatWimxo27duvpyVO4hSg0ePFi5DMV3QCaRQYMGKReQCOweK6IdnzsJkAAJkAAJpJWAFj3cttgyreNlORIgARKINgKeED0A9cknn1QrZVMrcjgfCHz4w5US4mOYCZPm+NGLH3w6wVrEn8UIBAH0SQclhVXIgw8+qNxXmK6ysMr3ueeesyf7dd2p2WPVHaxbfvnlF7ViGEHSnZP8ECXQd8Qr6du3r2zcuFE1ASHkoYceUu67nG2aFi8YB1xwIXYHJow//fRTmTt3rl0E9ZoJwoMZa8W05Ljtttts0QNlYE3SsWNHVdy0AjHr08cQR2Adg+T0C37//ffbcTx0fr3HiuQKFSrY48aKU4oemo5394jPMWPGDPU/rV2V6NFilTGswfC/jtdGehNWBW/YtE5279kqxYqWSW91UVd+w6Z/XdFUqpx+XlE3wBB2CK9DvOfg8wkCtU5wwwfBDWKH0yWfzhPNe6yAv+yyXNbn3Ak5e+50NHc1XX3bfzDB0uOqqyl6pAQSrjW12IHXvU6w5tBiBybM3ZAwqY/4YBA+ELA71uN64DNUW3m8/PLLUe/eChbWENzgHs3twcLhenPHjh0+/23w/dYt/1M+B8CLJEACJOBhAlr08OXC1MPD5tBIgARIIGoIeEb0gHo+fPhwmThxonKFpMWG5EhjohNBveG+AL61dXrmmWfUhLjzRxKCSUM8gMWGv1S1alVlWQGrBVgr6JgX6A9+sKD8ddddpwQK1IHr+PEI6wX9oeivbn/XzcDWcCOFiQW4RGnTpo1y6wXXOxAIYFWB+1rw0PUhdgH65Uw6ELi+jjgm2JwJQgWEDGe69tprbVHIFFDgvxzPCu68nAnija/UokULJRpholonuP+C26vXX39diTYQb5JLaA/PFsn0mZ9cGd5zJwFMLk+bNk1tOug9RgIXYRA6sJmvpWCMsmSpkqqaPzf97knRY8v29Tam8uXL28c88E0ArqvwOtRiB2ITIIXyNei7J6G92qxpc5n8w/dy5qyHRY9L7q0qVqTY5+/VhO8WWOyBRSM6wU0bYq7hO4lzIYbOE817xGrC9zNYw2IrWbKkEj+iuc+h6hsELCwsQerSpUvUW3mcOXNGuSXTvwXg1jRQd5WhYpieeiHgQBz3lbAYCK58mUiABEiABKKPgJ7foegRfc+GPSIBEogNAp4RPfC48KEC11CY0ERAWEw4IT4GfvTAugKroTBRjkknuBBBnA7tCgkBseGCCgniwN13360ElFy5cqlr+g9iScBCAJYb2qUVLBrg6goiA9yS6A831AF3TWPGjFF9KF26tKoGE++wytBp7NixKogpflSnZPr4zz//CNw6oY8QKtB2r169lHsoXR/2qN9sw7znPHa6otL3ITSkZHkBrlgJiSCrzoTxT5kyRV12TjBjdT1+hH755ZfKYsQpxKAQ2sbzxI85TDb4Shg7nicmYU3/8r7ywkpl0qRJAndZcAXG5C0CCHSPFcYQOxAsVyeIbHgtY8P/aahSnTq1ZPQXI2Xj5pXStEGnUDUTsXq37fg3ho+bJ4/CBRCrxPX7GkRfvOdhC+VrMFxjM9tp0qSREj1WrJonVavUNm955lhbevhaHOCZQaZxIHCZibhb2oIJ8ccgdGDzgmUE/o9h4QCrXCzuwPc1WH3EUkIcDwge2EO8ghAU7QkLW7Tggb4ifhw/t6L9qQWnf3Dpq78Dwu2xr98nwWmJtZAACZBAygT0vBBFj5RZMQcJkAAJhIJABssCID4UFbutTsTWQEB002VT06ZNlRunlISItIwVFhNffPFFoqKYUIHlQq1ateyg5+gXfMAvWLBAiTimkAGrEkzyIk2fPl1ZmOhJtkQVJ3OS0gqxyZMn+7RsgdgBN1OIFZKc2IDVaXv37lUxOJLphhw9elQFb8d4ESMF1imI1RLshNXWcBOQ2sDwwe4H6wseAW3RgT2erU5a6MA+b97QBxnHa7dSpcpSpmRleefV73U3PLHff2CXPPZ8KzlrrebPni2HrF23JkWB1hMDT8cgMEGK90a8/uDax6vuR3bv3q1WVBcpVEqGvftTOohFb9FHn2kuu/ZsEcRgMeOYRG+Pw9MzWMrq7yCw6kBMMSz+8LdIITy9Ck0rcFcK4QPfTV566aWot3QIJgUsLvnxxx8FLhzhLhIMoj3h8xgLm7T18G+//eZqF1cYj/n9HouG8P0dKaXv8dH+rILdv7vuuste9AX3uTlz5gx2E6yPBEiABAImALfjcAsOd7ajRo0KuBwzkgAJkAAJBIeApyw90oMEwsYHH3ygYkvoHxaw5MCPelwPtjqPOB5wK4WgyjphpTqEFyRMlkFY8BczBHkQKFQnrKrE5Bp+kOKD1QyQq/PoPerFCky4g4KVRHIJli0QCuDHGeJLvXr1FCNM4gUiHGCyOZAJZ1ib+LM4Sa5/qb2H5xjsZ5naPjB/cAhgBR8sd/78818LhOrVq6v/A7hTcbpnC06r/mvBe0jL5u1l6vQJ/jO59M6CJdOU4IHuX1muPAWPAJ4jVoTHQoIbyBtq1ZUlSxfKocP75Ir8wRerI8lx/YZlSvBo27YtBQ/HgwATWJ0iXpnXLJgcQ1WLSuDuCvE9YJWLFAuBvDFWCB6w8IBbUjcIHng2+DzGIqbly5cLFggF8j0U5aI1YTymizj9OyVa+8t+kQAJkAAJJBDQXkWyZs1KJCRAAiRAAhEgQNHDgA5XVrC+0D/kcQs/9mDNgAlW/OgIVoLw8PHHH8uQIUPUj2hnvZhIwOYvQRQZOHBgotuwkEDfsWHFO1a4wRUWVohhlTFEBfxgRVn9AZyoAj8nWL2JjYkEooXAoEGD7P8bxMjBBsssiHKRTM2bN1Wix7RZX0ib5t0i2ZWgtr1w6XS7viZNGtrHPCABEKhXv7YSPWb+/I107dzHU1B+mp8gYmIBAFNiAvr7RuKr3j174oknlGsrWH1ADMAqclh9eDVhjOPHj1eT7ePGjXON4KGfBxbmpPc7Ab6HwzVJai284FoL7mjh2jCQ79uwisZ3dXw/D0dCW3DrW7BgwZAtBMLvEDgTwPgDYZDcuNHfgwcPqv7itw4TCZAACbiFAN1bueVJsZ8kQAJeJRC8WXyPEEIcCazQRbBy/KBFgvABF01Y5RfMhB8B+BGNVemwpMCPyuRStWrV1GrKGjVqqB9yyVks4EcB+hvsPifXP94jgXARuPfee9Xk07XXXqtiv4Sr3ZTaualFI8mTO59Mm/2lZ0SP5X/MlU1/r1JDx3tWx44dU8LA+zFGAHGXvhj9tYyb9L60a3mv5M4Vendy4UAcF3dRFiydJhUqVFCf0+Fok21ENwFYycJ9V9++fVU8MwT4fvfdd10nCCRHGbE7BgwY4DrBAxZHS5Ys8Tk0uGHD93tnevrpp2XOnDmJLqMOuI/CPb34CGIEBC79+YffCW+99Vaicohvh4VFEMVMa2tYVeOa8zv7kSNH5I033lDt63awIApWU2grFC5eYQ2ORVwrV660+473twceeCCJ5dI777wj33zzjcoHl7ydOiWNVYbfRnBph4SYiRMm/Gvpinbwv6ETGCK+H9yOIcYeYh76ShCY8X+FhSywtkcdsNrRMVrQD/DJly+fXRyxHA8fPqzONUucoC1nwm8oPCsmEiABEggHAS16BHPxbDj6zTZIgARIwCsEKHr4eJL4AYAfSAjQiQ2BkEO5+gom6/hx8eyzzypXPdu2bVNWGvhwhOsQBEBHn8wv+D66zUskEDMEYLUUjUFyYVHVrEkr+X7yNwKxoGb1xq5/Jgst11Y6tWvbMUWXeDov97FDAKuZW7ZoLV9987l8Oe4deajHa54Y/LwFk+T06ZNJJgM9MTgOIs0EEMgci1QwcYtFMTt27FBuRb2wyASTzQhajkDQ+G7qJgsPiAjmhLf5gOPi4sxT+xgWFs4yED169Ohh58EB8jz++OOC2HtYbHHmzJkk5TZt2qQsuJ2up4YNG6Z+R/Ts2dOuE4uq7rzzziR1YGJ/ypQp8vPPPyvR6eqrr7bLpPcAQoEvf/LoL6x6Fi9enEikaNCggbz//vuqWfwW8iV6QDDS/Jz34cLXTMgHl77YYOUOgQRCiTPBAgV5N2zYoNzK6bhBOh/6gnuIOaitPhBbSosiOh/2um/mNcQQZCIBEiCBcBHQogfdW4WLONshARIggcQEKHok5mGf4Ys0/DWH02czhBWY4qfXHN8eBA9IgATCTuDNt19WosfIr19zveiBAOYLDNdWXW6hlUfYX1AuafCubl1l/LdjZObcMdKuxT1SskQFl/TcfzfnL/pO3YxGgdV/r3knHASwoh+CAFbwYxIXcdUQT61OnTrhaD4kbUDouO222wSWHm4TPACke/fu6jloOHDNtWbNGn3qcw9xo2HDhsryQVtbaysAWGhgUn706NF2PcgD0QNlXn/9dTlw4IDtahNWFBAQ4PYN1hoQLvSEPcQGU/SA5YSekAfrLl26KBdQENEWLVqkJvBhbROs2FALFixIJHjAWrZ8+fJqgZUWNsAL/dCv4Vq1aqkFX+jnL7/8ovrrXAA2ffq/ri/btWuXiDFEE1irnDt3To0H4qCOY4g6ISJBwPC3+hnWKNhgxVG7dm0lysyePVu1gec6a9Ys2wIPC8cgeiHB9a9m+/LLL4tzohEL2ZhIgARIIFwEtOjh770uXP1gOyRAAiQQqwQoesTqk+e4SYAEQkIALhtefem/8vKAZ+WbCYNdHeMAMRrOnj2tONW+oa40atQoJMxYqfsJXHV1ZenU4W4Z8+0nMmXmKNdbe3w/9VP5Y/UiadGihZQpU8b9D4gjCDoBCB8QOiB8fPvtt0owgCuecC6WCdag3C54gAOEJzNhwjwl0QMT/Ni0iIXymFg3nyNEDrihRUKcPCSIIdgQOw/B7ZFQDs8eE/CY5IKAoN0ybd++XcXswKTX/PnzZdmyZaoM3NbC4kG7voJw8+ijjyqxBOLHqlWrlMiiMqfjD/qkE16zeF/TCe6ptIsqU7jD4i+4Lhw6dKjK+tNPPyV6bUNkgBiCVKpUKcFYzASx2CkYwxoDYhLch+H5/PHHH3L99debxRIdw+3W888/r6716tVLPRfdn7Vr19rPBUKTThCfdL9uv/12yZkzp77FPQmQAAmEnYAWPfT7fNg7wAZJgARIIMYJZIzx8XP4JEACJBB0Ah07t5YihUvIDz9+Jjt2bgx6/eGo8O+ta2XyjJF2U11u+Y99zAMS8EWg1wM95Ip8hZW1x+p1v/nK4oprW7etl++mDpNs2bLJI4884oo+s5ORI/C///1PTXCjB3AThM1NCSv83WzhEWzWsGYwXTXBvSzcWmFiH+JIcgkxKPQEF/YQYlAO5c+ePauKYrJfp27dutmCB64hbpb5nqNFFp0/LXsEAdcxRhDXpFmzZomqgQstLU7AbZSZbr75ZvsUbrfMBEFHJwg8etz6mq89YpY89thj9i2nKzD7xqWD++67L9El3U9chOUIEwmQAAm4hQBFD7c8KfaTBEjAawRo6eG1J8rxkAAJRJwAYo688sqL8uBDD8j4yR9I34cTVoJGvGOp6AAEj/MXzqkSzZq2UP7rU1GcWWOQQLmKReWWzvfIR8Pflq++HSQDnqspWbNkdR2JcT+8JydOHFcr+KtXr+66/rPD4ScA4QMJFh8QEXScj5QmycPf08QtwsIDbpTc6tIq8WiCcwahQseKQI2wzoCrqpSSFjfMfPp1YV5D3D6dYPmA14uZTp06ZZ+aee2LqTzYtWuXXQKCDlxKOZNu07RIQZ5KlSopV2eIQQKRA/Ew8P0GKTnXVrgPsQXWL7C6QKwYxPjImzdvohiJsJRJLjmDuSN+lE7nz5/Xh9yTAAmQQNQS0IIwRY+ofUTsGAmQgMcJUPTw+APm8EiABCJDoHWbVpYriNusCY2xkjtXPrn/7pcj05E0tLr09zkyb+EkVTJ37jzyf6+9koZaWCQWCTz8SA+ZMXOS/LXpd/n624HSveuzrsIwefpI+W3JLOVyxVxx7apBsLMRIYAJbgQzh7sjuCaC9QSuIfB5NCYvuLQKBVfnRHugbRQrViygrAjUrRNiTiSXEDA9vengwYN2FXD3lZIlEixSTN/zcBGl+wkXV7CCgViD+CNIVatWlXLlytlt4ODEiRMCK5G///470fXUnDjjh6SmLPOSAAmQQLQQgAUfkvm+Gi19Yz9IgARIIBYIUPSIhafMMZIACUSEwLvvvi1LliyWabO/kDy588tt/+kdkX6kttFJhlur/v1fkOLFi6e2CuaPUQJ58+eQHt0flpcGPC6Tpg+XyuVrSJ1aLV1B4+8ta2XU2P+qvsKvvrna2xUDYCcjTuCJJ55QwgcmlrWogGDU0SZ86L7RwiPpSyZfvnxJLwZwJdBJelMcQRBzZ6Bts6nSpUubp2k6LlKkiF0O7qUQwDy5lD179kS3YfmiRY8ffvhBiR6//vqrnadz5872sT54++23bcEDFjCI21GxYkW5ePGiwGrE6SpLl+OeBEiABLxGQFt6JPde77UxczwkQAIkEE0EKHpE09NgX0iABDxHYNKkiQIXOWO+H6LGFu3Cx4QfPpa1fy5WfW3Xrp1glScTCaSGwD33dZQD+w7K0I//T94a+oiMfO83yXd5wdRUEfa8O3ZukqEjnpS4uDiBX/4mTZqEvQ9s0BsEdCBzCB8QFWDxgcDYZjyCSI6Ugkfy9NO6GjfQcqZVBESytLwuTGHi8OHDyQ7IFD0guEyaNCmg+Bu6Uli+NG7cWLm3gqXHsWPHBMHCddJB0PU53GmNGjVKnSKWyaxZsxKtcEZ8kVCKHjly5NBdkUOHDjGQuU2DByRAApEgoC096N4qEvTZJgmQAAlYMfMIgQRIgARIIHQEsGp08uTJqgEIH2O/Hxq6xtJZ89xfJ8qX499RtVye93L54IMP0lkji8cqgaee7yl33pIQsPbJlzpENQYIHu9++Khs3b5JHnzwQXnmmWeiur/sXPQTgPABoQMJwkevXr2SxG6IxCjQl/vvv58xPCIB/1KbNWrUsFt/7rnnJC3BygsW/FdE1kHK7UodB7BYa9CggbqKwOGwwoiPj3fkSv7UtOaA4KFdW9WtW1dMUQW1QGjQqXbt2okED1z3FVNE5w/GvmzZsnY1EFyYSIAESCCSBLTVMC09IvkU2DYJkEAsE6ClRyw/fY6dBEggLASqVasm8KXdtk07ZfGxYfMf8uJTI8LSdqCNrF73m3w48nmVvVSp0lbw0fmBFmU+EvBJ4I13n5QLVqzZsRPfk24P1VSv+YrloisweILg0Vu2W8JHnz59BCuvmUggGARMiw/Up2Mp6OvBaCM1dWirEwSVzp07t4wbN06iPdB6oOND7Ii//vorUXYE5dYJFgoFChRQp9myZZOmTZvKP//8I9pN0x9//KGzyqpVq+xg3bDKgFsmZ0KAbgTSNq0sYOGgg3tjsUOdOnWcxdQ5XD116NBBWVxAIGjUqJHcc889UrNmTYH7KaTdu3erZ/Sf//xHnTv/wGWUTugLXls33nijslRbvXq1CkB+55136izy4osvSosWLdT5hx9+qAKzd+3aVTHBa+HIkSOyZcsWQRlTUNEVNGvWTB/Kq6++qmJ64ALieziT6ZLrm2++UeOC0HPgwAE1ZlzTacGCBaoP11xzjZhikL6flj1ijOiEvuK1Aba5cuVSgdj37t2rrPn0RKTOyz0JkAAJhIKAtgKk6BEKuqyTBEiABFImkMFa7ZO65T4p18kcJEACJEACfgi0btVG1q1fK6VKVJRnHxsmRYuk32e3n6YCvrxj50Z5fdD9su/ATmnevKUMH/5JwGWZkQRSIvDf1z6UYZ++pbLVr91W+jz4PyteRuTXXKxZv0iGf/mKbNtBwSOlZ8j7aScwfvx4W/BALbAAiYTwATdbCLCuBY9oizOSdsIin376qbz22msBV7F582Y1Gd68efNky/Tt21cef/zxJHnADsG8/aUbbrghWcseiB0QGBDfwl+CODJhwgR/t9VrCq8tX6lt27YCccNMo0ePVuKHec15/NVXX0n9+vWdl9U5hBVnexCI8ubNmyR/7969bQtX501YncAF1cyZM+1bcKWpLUshFu3Zs0cQI+X333+38+Bg3759ArZIZhl14dIfxA2BZUpyFjCLFy9OYqFi1sFjEiABEggWAf359NZbb9FlcLCgsh4SIAESSAUBurdKBSxmJQESIIH0Epg+Y5r07Hm/tbJ8gzz32q2y9Pef0ltluspD8Hjng95K8Ljttq4UPNJFk4V9EXi2/8MyZGCCZdOvi6fKA30byZx53/rKGpZr58+fk6/GD5QX37xLCR5w90MLj7Cgj8lGTFdXAOBr8jjUYNBmIIJHWlwthbrvgdQfKl/peoWusw9mTA3nPZzDmiS5hAl9xLWAUGNabZhlYDmSXIL1hj9LEDOuha7j7rvvVnE5EENEW5Toe3oPawx/qWPHjoluoR5fggcyvfnmm3Lfffclyo82YeGCe7C6SG/yt2oaFhwjR46Uu+66y+84Ye3BRAIkQALhIKA/R0L1ORWOMbANEiABEnAzAVp6uPnpse8kQAKuJTB27Fjp16+f6n/7Vj3k5pY9pMAVRcI2nnPnzsqUmaNk2uzRcujwXuUaY8yYMWFrnw3FHoGfZy+U7vd1tQde/ZqG0qTef6Rh3Zvta6E+WP7HXBk36X2Bizkk54R0qNtn/bFLAKJDz549lVslUAiXxQdc/GASODkLjw0bNsjUqVNl8ODBgkDn/ibFY/fphXbkcJUFkQPWI5gggyuu/PnzBxRw/PTp08od1rlz55SYgBgbgUyuwdpk//79yiUWnnfRokVTFGtSSwF9gquus2fPSvny5S0Lv0yqCgRDv3DhgmoPfYWAkSFDhtRWn2J+WH3s2LFDwCguLk5ZmCAwO1/fKaJjBhIggSAR+OKLL6R///4ydOhQad++fZBqZTUkQAIkQAKBEqDoESgp5iMBEiCBIBOAn/GnnnraCvx5UArkL6KEj/atewS5laTVzZo7TqbNGi1bd/ypbmJSrHv37kkz8goJBJkAXI480OtB2bf/35W25cpeo8SPJg06S84cCT7tg9ys7N23Q6bP/kIm/zjSrhorn//v//7PPucBCYSaAASFW2+9VQkfiKcB8TuUbqa0a63kBI9ly5Ypd0Dm2PHZhHgWTCRAAiRAAiRAAmkn8PXXX8tzzz0nn3zyicBCjokESIAESCC8BCh6hJc3WyMBEiCBRAQQdBQrfufOnauuF7NifNS4ppFcd21jua5aw0R503uyaOlMmTp7lKxZv1hVVbJkSbWyF77DmUggXAQw8fv000/LmjVrEjVZuGAJaVK/s1x79Y1SpWL6X5OnTp+QJctny5IVs+W3pTPstrCK+tlnn41IXAW7EzyIWQJO4QPBr0uUKBF0HoEIHrpRrEDF55CZEHC6bt265iUekwAJkAAJkAAJpILAuHHj1Hfezz77TJo2bZqKksxKAiRAAiQQDAIUPYJBkXWQAAmQQDoJTJw4UT7//PNEwTfz5Monta67SW6oYW01m6W6hQsXL8jqtQtl7YbfZPW6hbJh01q7jlatWqlV7oUKFbKv8YAEwkUA7lyGDx8uI0aMEF9+5CGA1LDcX2G79uq6kj17zoC6tmfvNtmybZ0sWDpNFi6ZnqQMfnBC8KhUqVKSe7xAAuEiYAofCNwMi49gJlPwmDFjRkCiypdffikvvPBCom4gGDaCYjORAAmQAAmQAAmknsCECROkb9++gs/YBg0apL4CliABEiABEkgXAYoe6cLHwiRAAiQQXAIQPrAayFdAWUwEFypYSoqofUkpXLCk5M2TX86cPS1nzpyy9qfk3PlTcjHulPxlxSxYuvxXy2/2ebuDCJ4Kf7LYrrvuOvs6D0ggUgR27typxA+85pNLVSvXVsJH9mw5RW2WCIL96TMnZc++bda2Ve391VGlShXlVoABy/0R4vVwEzCFjz59+kiwXpum4IEVpqlxn4Xg2o888kgiFK+//roKCp3oIk9IgARIgARIgARSJDBp0iR57LHH1OIGLHJgIgESIAESCC8Bih7h5c3WSIAESCBFAkePHlVWH3B5hRgI6U0QOLTYAeGDiQSijcDy5cuV+DFt2rSgdQ1xDFq3bq3Ejptuuilo9bIiEggWAVP4CEZg8wEDBijrKYh8AwcOTJXgoce0YMECueOOO/Sp2j/11FPSu3fvRNd4QgIkQAIkQAIkkDwBvZgAsT3q1auXfGbeJQESIAESCDoBih5BR8oKSYAESCB4BNavXy+zZs0SBJYNVAApX768XH311WrCC6t8GzYMbmyQ4I2ONZFAYgKYBP7tt99k8eLFan/8+PHEGVI4w2Qvtho1aiixo3DhwimU4G0SiCwBU/h4+eWXpUePHmnqEIQJWHng9Q8LDwRKT2tau3attGnTJlHxYFqjJKqYJyRAAiRAAiTgUQJwMfnAAw/IF198wd9jHn3GHBYJkEB0E6DoEd3Ph70jARIgAZvA/v375a+//pLTp0+r7cyZM3Lq1Cl1nCVLFiV0QOzImzevXYYHJOBmAkuWLJGFCxfar3O85vXrH6/9kiVL2uIeBL5cuXK5ebjse4wSMIWPW265JUlQ8ZSwaMED1k2pdWnlr+7du3fLjTfemOg2hY9EOHhCAiRAAiRAAskSwMK1nj17yujRo6VRo0bJ5uVNEiABEiCB4BPIHPwqWSMJkAAJkEAoCCDoOAOPh4Is64xWAjfccINgYyIBLxOAYAexAsFOYa2xY8cO+fTTTwOy1tCCB/gMHz48TS6tfLEtVqyYwNIQliM6DR48WB0GK/6Irpd7EiABEiABEvAigcyZE6bbLl686MXhcUwkQAIkEPUEMkZ9D9lBEiABEiABEiABEiABEvAwAS18QGRYtGiR3HbbbQILEH8Jrt8QswYiCRJiggQ7SGrOnDll27ZtiawHIXwMGjTIX7d4nQRIgARIgARI4BKBTJkyqSOKHnxJkAAJkEBkCFD0iAx3tkoCJEACJEACJEACJEACNgHE4YDFB4QPCB4QPrSoYWeyDnbu3JlIFAlGEHSzfufxqlWrpHTp0vZlCh82Ch6QAAmQAAmQgF8C2tIjLi7Obx7eIAESIAESCB0Bih6hY8uaSYAESIAESIAESIAESCBgAlr4gNUGrDngvqpXr15K6EAlP/74o7Lw0FYgoRY8dMfnz58v1atX16dC4cNGwQMSIAESIAESSJYARY9k8fAmCZAACYSMAEWPkKFlxSRAAiRAAiRAAiRAAiSQOgIQPsaOHSs9evRQBSF01KtXT4kdEEAghiBo+SeffCIIfB6uNGnSpESBWCl8hIs82yEBEiABEnAjgfPnz6tu072VG58e+0wCJOAFAhQ9vPAUOQYSIAESIAESIAESIAFPEXj55ZeV+KGDiWvrjhYtWsiMGTOkZcuWYR/v6NGjpWPHjna7FD5sFDwgARIgARIggUQELly4oM5p6ZEIC09IgARIIGwEMoetJTZEAiRAAiRAAiRAAiRAAiQQMAG4uYLAgTgesABB0vuAKwlyxiFDhsjll18un3/+uaoZwgfSE088ofb8QwIkQAIkQAIkIELRg68CEiABEogsAYoekeXP1kmABEiABEiABEiABEggWQIlSpRI9n64b7766quSL18+GTRokGqawke4nwDbIwESIAESiHYCFD2i/QmxfyRAAl4nQPdWXn/CHB8JkAAJkAAJkAAJkAAJBJlAnz59ZMCAAXatdHVlo+ABCZAACZAACdiWHozpwRcDCZAACUSGAEWPyHBnqyRAAiRAAiRAAiRAAiTgagL33HOPvPfee/YYKHzYKHhAAiRAAiQQ4wRo6RHjLwAOnwRIIOIEKHpE/BGwAyRAAiRAAiRAAiRAAiTgTgIdOnQQBDjXicKHJsE9CZAACZBALBOg6BHLT59jJwESiAYCFD2i4SmwDyRAAiRAAiRAAiRAAiTgUgKNGjWSyZMn272n8GGj4AEJkAAJkECMEjh//rwaOd1bxegLgMMmARKIOAGKHhF/BOwACZAACZAACZAACZAACbibQLVq1eSXX36xB0Hhw0bBAxIgARIggRgkQEuPGHzoHDIJkEBUEaDoEVWPg50hARIgARIgARIgARIgAXcSKFWqlKxZs8buPIUPGwUPSIAESIAEYowARY8Ye+AcLgmQQNQRoOgRdY+EHSIBEiABEiABEiABEiABdxLInTu3bNu2TS677DI1AAof7nyO7DUJkAAJkED6CGjRg+6t0seRpUmABEggrQQoeqSVHMuRAAmQAAmQAAmQAAmQAAn4JLBu3TopXry4ukfhwyciXiQBEiABEvAwAcb08PDD5dBIgARcQYCihyseEztJAiRAAiRAAiRAAiRAAu4isHDhQqlatarqNIUPdz079pYESIAESCB9BLSlR3x8fPoqYmkSIAESIIE0EaDokSZsLEQCJEACJEACJEACJEACJJASgalTp0r9+vVVNgofKdHifRIgARIgAa8Q0G6t9N4r4+I4SIAESMAtBCh6uOVJsZ8kQAIkQAIkQAIkQAIk4EICX331ldx8882q5xQ+XPgA2WUSIAESIIFUE6B7q1QjYwESIAESCCoBih5BxcnKSIAESIAESIAESIAESIAEnATef/996datm7pM4cNJh+ckQAIkQAJeI0D3Vl57ohwPCZCA2whQ9HDbE2N/SYAESIAESIAESIAESMCFBF577TXp3bu36jmFDxc+QHaZBEiABEggYAJa9KB7q4CRMSMJkAAJBJUARY+g4mRlJEACJEACJEACJEACJEAC/gg89dRT8uKLL6rbFD78UeJ1EiABEiABtxPQokdcXJzbh8L+kwAJkIArCVD0cOVjY6dJgARIgARIgARIgARIwJ0EevbsKQMHDlSdp/DhzmfIXpMACZAACSRPQMf0oOiRPCfeJQESIG9pDswAAEAASURBVIFQEaDoESqyrJcESIAESIAESIAESIAESMAngc6dO8tnn32m7lH48ImIF0mABEiABFxMQFt60L2Vix8iu04CJOBqAhQ9XP342HkSIAESIAESIAESIAEScCeBpk2bypQpU1TnKXy48xmy1yRAAiRAAr4JaNGDlh6++fAqCZAACYSaAEWPUBNm/SRAAiRAAiRAAiRAAiRAAj4JXHPNNbJgwQJ1j8KHT0S8SAIkQAIk4EICFD1c+NDYZRIgAU8RoOjhqcfJwZAACZAACZAACZAACZCAuwiUKFFCli5dKqVKlRIIH6+//rq7BsDekgAJkAAJkICDgBY96N7KAYanJEACJBAmAhQ9wgSazZAACZAACZAACZAACZAACfgmUKhQIeXqqn79+vLJJ5/IM8884zsjr5IACZAACZCACwho0YPurVzwsNhFEiABTxKg6OHJx8pBkQAJkAAJkAAJkAAJkIC7COTNm1dGjBghLVq0kDFjxsjDDz8s586dc9cg2FsSIAESIAESsAhQ9ODLgARIgAQiS4CiR2T5s3USIAESIAESIAESIAESIIFLBLJnzy4ff/yxtGnTRqZOnSo9e/aUw4cPkw8JkAAJkAAJuIrA+fPnVX/p3spVj42dJQES8BABih4eepgcCgmQAAmQAAmQAAmQAAm4nUDGjBll2LBh0rJlS5k3b54SPrZv3x7QsCCU3H777QHlZSYSIAESIAESCBUBWnqEiizrJQESIIHACFD0CIwTc5EACZAACZAACZAACZAACYSRAGJ7wNXV8uXLlfCxbt26FFvfsGGD/Pbbb/Ldd9+lmJcZSIAESIAESCBUBLToQUuPUBFmvSRAAiSQPAGKHsnz4V0SIAESIAESIAESIAESIIEIEfj000+lWbNm8tdffynhY8mSJcn25O6771b3v//++2Tz8SYJkAAJkAAJhJKAFj0YyDyUlFk3CZAACfgnQNHDPxveIQESIAESIAESIAESIAESiDCBkSNHSuPGjWXXrl1K+Pjpp5/89uiKK64QCB/z58+XuXPn+s3HGyRAAiRAAiQQSgI6pgdFj1BSZt0kQAIk4J8ARQ//bHiHBEiABEiABEiABEiABEggCgiMGjVKGjZsKMeOHVPCx+TJk/32qlOnTurehAkT/ObhDRIgARIgARIIJQFt6UH3VqGkzLpJgARIwD8Bih7+2fAOCZAACZAACZAACZAACZBAlBD44osvpF69eoIJpN69e8vXX3/ts2c1atSQ9u3bC4SRFStW+MzDiyRAAiRAAiQQSgJa7IiPjw9lM6ybBEiABEjADwGKHn7A8DIJkAAJkAAJkAAJkAAJkEB0EYDQceONN6pOPffcc4Jg575S586d1eVx48b5us1rJEACJEACJBBSAtq9lRY/QtoYKycBEiABEkhCgKJHEiS8QAIkQAIkQAIkQAIkQAIkEK0ExowZI7Vr11bde/3112XgwIFJuooYIPXr1/drDZKkAC+QAAmQAAmQQBAJ0L1VEGGyKhIgARJIAwGKHmmAxiIkQAIkQAIkQAIkQAIkQAKRIwALjuuvv151YMiQITJgwIAknenYsaO6NmjQoCT3eIEESIAESIAEQklAix50bxVKyqybBEiABPwToOjhnw3vkAAJkAAJkAAJkAAJkAAJRCkBBCpH/A6kESNGSL9+/RL1FKJHuXLllLXHvn37Et3jCQmQAAmQAAmEkoAWPejeKpSUWTcJkAAJ+CdA0cM/G94hARIgARIgARIgARIgARKIYgITJ06UatWqqR6OHTtWHn74Ybu3WbJkEQgf+/fvp5srmwoPSIAESIAEwkGAMT3CQZltkAAJkIB/AhQ9/LPhHRIgARIgARIgARIgARIggSgnMHnyZLn22mtVL6dOnSp333233WOIHjlz5qS1h02EByRAAiRAAuEgoC096N4qHLTZBgmQAAkkJUDRIykTXiEBEiABEiABEiABEiABEogCAhAx5s+fn2JPfvjhB9vV1bx586RTp06qTKlSpWjtkSI9ZiABEiABEgg2AS160L1VsMmyPhIgARIIjABFj8A4MRcJkAAJkAAJkAAJkAAJkECYCYwePVq6desmXbp0SdFFFVxd1apVS/Vw+fLl0qJFC3WsA5p//fXXsnfv3jCPgM2RAAmQAAnEIgGKHrH41DlmEiCBaCKQ6RUrRVOH2BcSIAESIAESIAESIAESIAESAAHE6zh79qzMmjVL5syZozZcv/rqqyVDhgw4TJRuvfVWWbx4sezcuVMOHTok48ePlxdeeEFWr14ta9eulezZs0u9evUSleEJCZAACZAACQSbQOHChVVMqaxZsyrhPtj1sz4SIAESIIHkCWSw/AvGJ5+Fd0mABEiABEiABEiABEiABEggcgQWLVoko0aNkmnTpqlOVKlSRW677Ta1IWaHM91///0yc+ZMdTlv3rzSr18/JX7kzp1bEAPkyiuvdBbhOQmQAAmQAAkEncCJEyckV65cQa+XFZIACZAACSRPgJYeyfPhXRIgARIgARIgARIgARIggQgTKFGihLRr104FLD958qQsWbJE5s6dK9OnT5fTp09LuXLlJEeOHHYv27dvL9u3b5f169crSxHE+ahcubLs2rVLMmbMKI0bN7bz8oAESIAESIAEQkUAlh5MJEACJEAC4SdAS4/wM2eLJEACJEACJEACJEACJEAC6SAAV1eI0TF79mxVS7FixQSurTp37iwIXq7Tiy++KIgLYqZMmTIpa4+qVaual3lMAiRAAiRAAiRAAiRAAiTgEQK09PDIg+QwSIAESIAESIAESIAESCBWCMA9VYcOHWzLj5UrVwpcYI0bN04FK8+XL58ULVpUmjZtKufPn5elS5faaODdFwFmdaBz+wYPSIAESIAESIAESIAESIAEPEGAlh6eeIwcBAmQAAmQAAmQAAmQAAnELoHly5eroOUTJ05U7q5AAu6wYPkB4ePNN9+Ujz76KBGgb775RurWrZvoGk9IgARIgARIgARIgARIgATcT4Cih/ufIUdAAiRAAiRAAiRAAiRAAiRwiQBcX40dO1Z+/PFHdaVmzZrKKuT3338XiCI6wb3V1KlT9Sn3JEACJEACJEACJEACJEACHiFA0cMjD5LDIAESIAESIAESIAESIAES+JfA4sWL5fvvv1dCB4KdFypUSHLmzClbt261M3Xv3l1effVV+5wHJEACJEACJEACJEACJEAC7idA0cP9z5AjIAESIAESIAESIAESIAES8EPgyJEj8vnnnyvxwxQ8dPY+ffrIE088oU+5JwESIAESIAESIAESIAEScDmBjC7vP7tPAiRAAiRAAiRAAiRAAiRAAn4JIKg5RI158+bJiBEjpEGDBony+hJCEmXgCQmQAAmQAAmQAAmQAAmQgKsI0NLDVY+LnSUBEiABEiABEiABEiABEkgvgd27d8t//vMfOXDggPz999/prY7lSYAESIAESIAESIAESIAEoogARY8oehjsCgmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQNoJ0L1V2tmxJAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQBQRoOgRRQ+DXSEBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEkg7AYoeaWfHkiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAlFEgKJHFD0MdoUESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESCDtBCh6pJ0dS5IACZAACZAACZAACZAACZAACZAACZAACZAACZAACZAACUQRAYoeUfQw2BUSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIG0E6DokXZ2LEkCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJBBFBDJHUV/YFRIgARIgARIgARIgARIgARJwNYELFy7Ixo0b1RiyZs0q5cqV8zueixcvyoYNG9T9XLlyScmSJf3m5Q0SIAESIAESIAESIAESIIHACGSIt1JgWZmLBEiABEiABEiABEiABEiABEggOQIQPZo3by5///23yjZv3jwpU6aMzyIzZsyQBx54QN3r1KmTDBo0yGc+XiQBEiABEiABEiABEiABEgicAN1bBc6KOUmABEiABEiABEiABEiABEggWQKZM2eWfv362Xk+/PBD+9g8iIuLk8GDB9uXHnvsMfuYByRAAiRAAiRAAiRAAiRAAmknQNEj7exYkgRIgARIgARIgARIgARIgASSEGjZsqVUqVJFXR87dqzs3LkzSZ6ff/5Z1q9fr6537dpVypYtmyQPL5AACZAACZAACZAACZAACaSeAEWP1DNjCRIgARIgARIgARIgARIgARLwSyBjxoyJrD0++eSTRHnhYXjIkCH2td69e9vHvg7OnDkje/fuFViHpDadPn1ald2zZ4+cPHkytcWZnwRIgARIgARIgARIgARcR4Cih+seGTtMAiRAAiRAAiRAAiRAAiQQ7QSaNGkiNWrUUN0cNWqUEh50n3/55RdZuXKlOr333nulePHi+pa9R2yQoUOHCuqpVKmS1K5dW1mDdO7cWVasWGHncx4cOXJERowYIe3bt5fSpUtL5cqVVdk6derIVVddpa599dVXzmI8JwESIAESIAESIAESIAHPEKDo4ZlHyYGQAAmQAAmQAAmQAAmQAAlEC4EMGTIksvb49NNP7a6ZVh4PPfSQfV0fnDhxQm677TZ599137YDo+t6yZcukY8eOMm7cOH3J3qMcXGUNGDDAFlXsm8ZBvnz5jDMekgAJkAAJkAAJkAAJkIC3CGT21nA4GhIgARIgARIgARIgARIgARKIDgJ169YVbAsXLpThw4fLgw8+KJs3bxYIF0gQPAoXLpyksxBIdJ7LLrtMlcufP7/88ccfMn78eJX/lVdekRYtWsjll19ul0dgdB0nBBdvueUWZemRO3dugcstuMmCJUjVqlXtMjwgARIgARIgARIgARIgAa8RyGD5k4332qA4HhIgARIgARIgARIgARIgARKIBgLLly+XTp06qa48/PDDSriACIIEN1UQM8wEUaJ69er2pSVLliQSRkaPHi0vvviiuo99z5497bxwfaXFEgRQh0srJhIgARIgARIgARIgARKINQJ0bxVrT5zjJQESIAESIAESIAESIAESCBuBmjVrStOmTVV7H374obL6wEnfvn2TCB64vnHjRuxU6tKlSyLBAxfvuOMOgfUH0pYtW9Re/8maNas+lO+++y7JffsmD0iABEiABEiABEiABEjAwwTo3srDD5dDIwESiE0CMOCDH/FoTtrIMNr7Gc0M2TcSIAESIAH3EHjqqafkp59+sjsM0QIBzH2lHTt22JfxOandWdkXrYPs2bPLyZMnk8T7aN26tS2qwNIDW9GiRaVBgwbSuHFjadSokeTKlcusisckQAIkQAIkQAIkQAIk4DkCFD0890g5IBIggVgngAkSLSqYLPwJDOkRSQJpx1ce9Ev3R9/X52afU3Os6zHr9lU+0Hy+yvIaCZAACZAACaSFwNVXXy1t27aVqVOnquKPP/645MmTx2dV+/fvt69D8PAleugMED7MdNddd0mWLFnknXfekUOHDqlbe/bsUUHPdeDz559/Xnr16mV/DpvleUwCJEACJEACJEACJEACXiBA0cMLT5FjIAESIIFkCKRXTEim6jRPmOg+aQFC73Vb+r4+D+Y+0Lp1nwLNH8w+si4SIAESIAHvEahfv74teiQXawOWGTrhuFChQvo0yd6M/YGbCFbetWtXQWyPpUuXyoIFC+TXX3+VlStX2mXfeOMNyZcvn9x66632NR6QAAmQAAmQAAmQAAmQgJcIUPTw0tPkWEiABEjAIoDJ+kAm6vWkPvb6GOWcZfU9wHXeCwQ4yut6dV1676wzpfp1OZ1Pnzv7ges6j/Neas+DWVdq22Z+EiABEiCB2CNQtmxZe9Bt2rSRl156yT4P9ACxPerVq6e2fv36ydGjR2Xo0KEyfPhwVcX06dMpegQKk/lIgARIgARIgARIgARcR4Cih+seGTtMAiRAAskTSMtkf1xcnC1MmLX7ExXMPCkd++uPeR3HgbRllkkpP8WKlJ4M75MACZAACUQjgfLly6tA5XBdNWLECKlbt67cdNNN6erq5ZdfLjfffLMtehw5ciRd9YW68NlT8bJ0+SIZ+v5ggWuwypUry5VXXqm2/Pnzh7p51k8CJEACKRLYt2+frF69Wm2IlZQzZ0713q33BQsWlCJFivh1ZZhiA8xAAiRAAiSQLgIUPdKFj4VJgARIwD0E/IkEcIWBBEHBn/hgig3JjRhtYNN1mnn9iRD++mWWNY9Tm98sm5rjQMecmjqZlwRIgARIgARSIoAg57DueOaZZ1TW++67T4keLVu2lLx580q2bNkEcT/27t0rjz32WKLqhgwZIufOnZPixYvbeU+dOiWbNm2SL7/80s4LISGa0oXzIufPxsuFCyJxFxOsVjdt3CGLFi1Sm9nXJg1bSpt2reTm9q0lR44c5i0ekwAJkEBICfz5558yadIkmTNnjvz1118BtQURBOKH3uC2EMfY586dW9WRnMvDgBphJhIgARIggSQEMliTR/FJrvICCZAACZCAZwgk9zavJ/b95dH3A4Gh68DeFD30dV2HWad5z7yu82Jv5jGvp3Tsrz6znFl3IPnNsjwmARIgARIggdQQ+Prrr+W5555TRSZPnizVqlXzWxwWmE8++aR89913fvPgBibgzIl/TJwhcHly6YorrpCZM2dKgQIFkssWknvWsOSfI/Hyz9E4OXksXs6dtcSOc/GycfNK+X3VPPnnxFE5cfKotT8mp06fkD83Lvfbj8IFi0uTxi2lrSWANGxc228+3iABEiCB9BL46aefZOLEiUrwSG9d/spv27bN3y1eJwESIAESSAMBWnqkARqLkAAJkIBbCJiT+s4+m5P8ODbzmvec5VI691XW1zWzvZTqNO+bfXUem/lSc6z74qufqamHeUmABEiABEggGASweGDQoEEqIPnbb7+dKBC5WT/cq5QpU0Zdunjxohw/fty8negYFiRdunSR7t27h13wOLQ3To4egNgRL3Fx8bJv/05Zs36RrF630BI75ss/ltDhTLkvu1wqXFlNzl84J//8c1iOHT8sFy5aJiGX0r4Du2TM+JFqu65aHalbr47kL5BHucPiqmlNiXsSIIH0EIDQASu5pUuXpqeaFMv26dNHWbUhplPhwoVTzM8MJEACJEACKROgpUfKjJiDBEiABFxLQE/mYwC+JvT1fb1HHl/5ggVAt+OvP77aMcvgPs51P817aem3v1gmvvrBayRAAt4loN9XvDtCjsztBPB5BXdWiMUBQQRurgoVKiSZMyddw3bw4EE5fPiwnD9/XiCE5MmTR/Lly6fcqJiWmOFgcu5MvOzZGifLl6yTRctnyo7dG2XLtnWyZ1/CiuZclrBRpHApKV6kjBQtXEaKFCojxYqUtq6Vkdy58ibp4pGjB2TfgR2WaGJtB3bKfhxb25o/FyfKO3bsWKHwkQgJT0iABFJJ4L333pP//e9/iUrBdWD16tWlVKlSUqJECbVlz549UR59AlEa79vYO4/hhtBf+vDDD6Vt27b+bvM6CZAACZBAgAQoegQIitlIgARIwC0ETCHA7LNTFND5sNcTflpMMMsF61i3p+vT/dHX9Tnu62s6r7lHPud9s6yZ19exWTY15XzVxWskQALeIID3Bb4feONZchTRQ2DTnwdl4oQZsnDxLFm+cq7dsRrXNJSrKtWS6lXrSfkr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8bnXbj1XYZvN2FWuxtnIKHQbNQChH4yzlMeaCQvcR33pvHKZW9h7wX2vKD93jG452ut4NF/H5bZx3ai5+blea58qR1kgX6+1LCzOpJ6295nF6SdOHZXPmARIoLQIXHvttfL1118HBtWvXz/BE8NLL710ID8s4SrnUY7Dz99++23ZbLPN6lWvrq4O5HHtSOAABxiL8Bo0aJAceuihMmTIEPnuu++SvF555RV55plnZI899kjm8YIESECEa1jDvwu4hjX8PeAISIAE8k+gRf5FUiIJkAAJkAAJJM4piKPYh1LXr9fU+S1evDjpfqgpKYz0XiJGwNxymV9YW5XtvkfcPPca7f10rmNy+83mGuPBK2xurjyt5+ZFXbt108mNksF8EiCBxkng448/lrvuuisweOzugCulOAaPQEMncf/99zspXmZKAMaPp556StZcc81A0wsvvDCwqyZQyAQJNEMCXMNK86ZzDSvN+8JRkQAJZEaARo/MeLE2CZAACZBADAKqhEWMEKWIhbFD66aqZ4U0kX90RwGexlcFfBSfxjRl915jPjq/TOeQion2obEr230fab6+v5AOkxvWRtvmGuciW9siThVQrgZDnV+q+iwjARJoegQefPDBwKTg0ur666+X1q1bB/IzTUBh//PPP2fajPUdAnAndu+99zo5Yl2QvfTSS4E8JkigORPgGla6d59rWOneG46MBEggHgEaPeJxYi0SIAESIIEYBFQJixhK2PLy8noGD5RpPYgMq6d1EDeFoPPVHR5qEMDcm0Jw7xPmpvPL19yUH2Lty2Xn5vt9ho3Flaf1w+ppWSZx2FgwVv+lMrW+G6NM62s9N3bHr+N2ebh1eU0CJNB0CSxcuFAeffTRwAQPP/xwqajIjwfjxx9/PCCbicwJ4HDg3XbbLdDwiSeeCKSZIIHmSoBrWOnfea5hpX+POEISIIFoAvn5izhaPktIgARIgASaAQFfYQtFrBtQrkHrplLqhtVFXmNS7OIJfHDQ3QYYuyqodX5NJc7kvuh7IU4brav3Hmlt55ehjuZpnVTvQ62jshE3VHDnpWNwx4c8nZvW9eem7RiTAAk0HwLvvPNOPVdJOEw7X+HOO++Uww47zD7AkKtMnAWCc0c+/fRTu56ttdZasvrqq2dloFm0aJH897//tbLatWsnq666qqy77rrJ74dsxoq19dtvv7Vy//e//0m3bt2kR48eObkI03EMGzZMnn32WU3KxIkTBQc3L7PMMsk8XpBAcyTQmNawv/76Sz7//HP7wmcXa9gqq6yS1bozb948mTFjhsyePVuWX355exYQdunlErDGfvHFF/LZZ5/ZNbZ79+5SWVkprVq1ykWsbcs1LGeEFEACJNBABGj0aCDw7JYESIAEmhIBKGh9Ja07P7fMvXbruNdaR2O3rLFcq1Ja48Yy7kKPM5N76tf10/5Ycy335WWTTjcGXybqx2mjdTT25TBNAiTQ/AhAaeYGKKZyVaTjDAoYFBBwCPe///1v2Xrrrd1uMrr+4Ycf5JxzzhEc4h0WBgwYIJdffrlVHoaVu3m//PKLnHbaaTJ+/Hg3216vs8469jDkegVpMmB8uPjii+vtmNFm8Gs/cuRI2XzzzTUr43jTTTe1Z3soVwiA8adv374Zy2IDEmhKBBrDGjZ16lQ5++yzBWeP+AFG13333VfOOussadOmjV9cLz1t2jQ55ZRTkmusW2GHHXaQUaNGuVmxrrGuYI19++23Q+tvs802MmLECOnSpUtoeZxMrmFxKLEOCZBAKRIIPopbiiPkmEiABEiABEiABEiABEiABEiABAIEPvroo0A6F8W8CoKM9ddfX5Ny3333Ja8zvXjttddk2223jTR4QB7qbL/99inroB4UjjigPczgoeVDhw61OyiQjhOgJNxxxx0jDR6QMWvWLNlvv/3k0ksvFbiozCbAWO0bjsIUqNnIZhsSaMwESnkNw07tW265RbB7Lurz+ueff8pdd91lXdhhh0Wq8PTTT8vuu+8eavBAO5z1c+qpp6YSESjD7rT7779fBg4cGGnwQAPsLNtyyy3lySefDLTPJME1LBNarEsCJFBKBGj0KKW7wbGQAAmQAAmQAAmQAAmQAAmQQAwC2C3ghhVXXNFNZnUN5dbw4cOTbV988UXr9imZEfMCbmAgB0rBdAF14EYrSrEItzJ777233XmSShZ2gmC8cQLcyuyzzz5pZaqs2267TXC4e7YBBwK7AcYUBhJo7gRKeQ3DeUnYIREnYLcFdnwsWLAgtPr06dPl+OOPDy1zM2H4wNoUJ8BlHnZ4xA0nnniidX8Vt75fj2uYT4RpEiCBxkCARo/GcJc4RhIgARIgARIgARIgARIgARJwCODsCTessMIKbjLra+yogNsWDWPHjtXL2HGYmxYYQe655x77OuSQQ+rJuuaaa+rlIQMHqvvGkyOOOMI+GQ13Mc8884wMGjTItsW5IXHCtddeW68a3M6gr3HjxgmMHO6OF1TGbg8YYLIJvsJw7ty52YhhGxJoUgRKdQ2D8QJu9/wAN1cPP/yw3HzzzQLXfG6A0fWBBx5ws5LXN910U/JaL6644gqZMmWKvPvuu7adrjdx1jCca3TllVeqKBt37NjR5sEYghfK3XUcldBntoFrWLbk2I4ESKAhCdDo0ZD02TcJkAAJkAAJkAAJkAAJkAAJZEHgjz/+CLTKx04PCISibP/990/KhqECh+TGDf/5z3/kueeeC1S/5JJL7NkZUBTideGFF9qzMtxKeMoZ/vPdgH5Hjx7tZgmeWD733HNl7bXXtmeY9OrVS6677jo56aSTAvWiEthRgqe43QBDB+T26dNHcD4I/OvDHcx2222XrAal5hNPPJFMZ3LhKwz9e5eJLNYlgaZCwP8clMoaBuMFPu9uwHrwj3/8w57vs8suu8gdd9whgwcPdqvI1VdfXc9Ai8PFYYRwA9xSYY3t3LmzwFgN91PYSdavXz+3WuT1Qw89JK5xBGcxwfUfXPFtsMEG9oVruLaCMUTDCy+8EOleS+tExVzDosgwnwRIoJQJ0OhRyneHYyMBEiABEiABEiABEiABEiABjwD8ufu7H5ZaaimvVvZJKMw0QPkXdZaG1nHjyZMnu0nBYeAHHXRQIA+JIUOG2AO+3YLXX3/dTQr85ONAdTccddRRbjJ5feSRR9Z7sjlZ6FxMmjTJSYk9hBiGDj+0bNlSzjvvvED2zJkzA+m4iU6dOgWqzps3L5BmggSaG4FSXsNw1pAbsEutd+/ebpZUVFTYA87dTKzJMPq6wV8PYdjo37+/W8VeQx4ORI8TXn311UA17OBYdtllA3lIwKCC3SluSHf2iFvXveYa5tLgNQmQQGMhQKNHY7lTHCcJkAAJkAAJkAAJkAAJkAAJGAI4e6OQAbsoNtlkk2QXmRxo7j6BDAEweESNd9iwYck+cOG3/f777wPlMMb4Llu0AvLxxHS64PeB80KiAgw2eGn48ssv9TKj2N8pU15enlF7ViaBpkYgak3I1zxzWcP8s0ZwXkdYwM4UuAN0w5w5c9xkPaNtlCw02nDDDQNtoxLumUBYn7BDLSpsu+22gaJvvvkmkI6b4BoWlxTrkQAJlBKBilIaDMdCAiRAAiRAAiRAAiRAAiRAAiSQngCU/O5uj99//926e0rfMl4NPN0Mf/MIcJMChX/79u3TNvYNA67RwG/co0ePQBZcwbjBN3rAjUuqsPrqq6cqtmWuwhAZb731Vso2roHCb5uyoVP4ww8/OCmRDh06BNJMkEBzJFCKaxiU+/7ussrKysjbs9ZaawXc+flGBf9g8lTrITrBrjO44IsKGJ9ruMU5QzjXKCpgR40b3LZufrprrmHpCLGcBEigFAnQ6FGKd4VjIgESIAESIAESIAESIAESIIEUBOCr3TV6/Pjjj3k1euy44452V4X2gQN8Dz/88BQjShT5hgvfF7wrwHeZ4rf99ttv3erWXUsgw0sss8wyXk79pN/HcccdV79SRI7v5z+iWr3sn376KZAXtVslUIkJEmjiBEpxDfMNrbgFqT6vcCHlBt/o4e/88Nc8ty2ul1tuOT8rkPbHBwNNJmvYb7/9FpAXN8E1LC4p1iMBEiglAnRvVUp3g2MhARIgARIgARIgARIgARIggRgEfOWYr5SKISJlldatWwt2e2jAgeYLFizQZGSMszDcUFNT4yYD1/5TyIFCk1i0aFEgK5WsQMUUCX98KarWK2rTpk29vDgZvqJy+eWXj9OMdUigSRMoxTWsRYvMVGT+Gua77fLXTL880xucy/qFvtq2bZtpl7Y+17CssLERCZBAAxPgTo8GvgHsngRIgARIgARIgARIgARIgAQyJbDeeuvJhx9+mGzmux9JFuRwgTM0brrpJisBOz5eeOGFtNLgCsZ1oZLKGOOX+e6rOnfuHOgvHweAw32MO76tttpKYOCJE1ZeeeU41erV8e+N79arXgNmkEAzIFCKaxjO6fDD3LlzI137+Z/t1VZbLdC8a9eu8tFHHyXz4IbQX9eShTEuwsY3cODAGC0TVeKeG+IL9OfJNcwnxDQJkEApEqDRoxTvCsdEAiRAAiRAAiRAAiRAAiRAAikIQHnvhpdfflkGDRrkZuV83a1bN9lmm23smR4Qht0e6YKv9Pvkk09kwIABoc1Q5gb/TI5VVlnFLQ4YKwIFGSRgWHnxxReTLYYMGSK77LJLMp3vC/jgf/755wNie/bsGUgzQQLNkUAprmEVFRWCNcw1jH722WfSu3fv0Fs0Y8aMQD6MHG7o0qWLmxS4u/LnHaiQJoGdIjBcuAbvESNGSCo3gmlEpi3mGpYWESuQAAmUKIHM9u6V6CQ4LBIgARIgARIgARIgARIgARJoTgQ22GCDwHSfe+458V2QBCpkmTjwwAOTLV1FIDJ91y7I840ed999tyxevBhFgQBXVb4RxW/rPxH9+OOPS1VVVUCOm/D957tlet29e3e9tPH1118v+dhBEhDqJMaPHy/+WSB8StoBxMtmS6BU1zD/sPH7778/9B5hvXnllVcCZb6Rw09jDUsV/DOHwuquvfbagexrr702dC0OVMohwTUsB3hsSgIk0KAEaPRoUPzsnARIgARIgARIgARIgARIgAQyJ4CnfXEQsBtw2Hi+w3bbbVevn1R9oL4bcNDu6NGj3Sx7feONNwaepkbm9ttvH6gH5aN7iDCMB/fee2+gjiZg8HnppZc0GRlj54or8+OPP5bDDjtMfFdbkQIyLPDHu8cee2TtVz/DrlmdBEqaQKmuYTvvvHOA29ixY+W1114L5OGsjvPPPz+Qh/XYN+RssskmgTowTn/wwQeBPE1MnjxZsF6mC4MHDw5UefDBB+XSSy+Vv/76K5CfrwTXsHyRpBwSIIFiEyi/0IRid8r+SIAESIAESIAESIAESIAESIAEsicANyfwNf/2228nhXz66acybNgwyeSw2+uuuy7ZHkpI32iBg32h4JsyZUqynl70799f+vbtq0kb45Dub7/9VqZPn57Mf/PNN+W///2v4FwQ5I8ZM0buuuuuZDku4JrroIMOCuRhHq1atZJJkyYl8ydOnGh3Ziy99NI2b/bs2QJF4mmnnSY//vhjsh4udthhB8G5AW5YaqmlrE/9cePGJbMh49Zbb7Xt58+fL3/88Yd9YWcL3MjAHRZc3PgKzaSAiIuZM2fKZZddFig988wzxX+SPFCBCRJoJgRKdQ2D+7knn3xScP6GBqSxfv3888/y7rvvyiWXXCJvvPGGFtv4oosuko022iiQhzM4pk2bJu4OjoceesgakrG2LVq0SD7//HO76+3ss88OtEXi4IMPFv/Ad7jQgnHEXWPff/99u6ZCHtYv7F6DkRj9vvPOO3aNxFru7zyp16GXwTXMA8IkCZBAoyJQZrYk1zaqEXOwJEACJEACJEACJEACJEACJEAC1j98v379AiSwkwAum6BQjBPcczRgMIEyzw8wYmyxxRZ+tpx11lly9NFH18uHEWHLLbesl58qA8aMbuYMET9A0QjDCuJ0AU9au66krrrqKtl3333rNcNP4OHDhyfPKqlXISQDBqGnn346pCQ8CwYp3ItZs2YlK8DYgbNXcG4AAwmQgJTsGgZD6jHHHBP7FsE134QJE0I/2++99574uzOiBPtrGHaYVFZW1qv+v//9T7D2x1kXtfFxxx0np59+uibTxlzD0iJiBRIggRInQPdWJX6DODwSIAESIAESIAESIAESIAESCCOw6qqr2h0ObhkU8yeeeKJ92tfNz+UaZ2vsuOOOsUXgaeKnnnpK/IPIwwSgDvzchxk8UB+uqPBkdDpZKI+r0INB6JZbbpGTTz45bEihedjpETd8+eWXMnTo0IDBA21hUKLBIy5F1msOBEp1Ddt1113lmmuuiXULNt10U4ELrKjPdp8+fQTnbqQLAwYMiG0cWXbZZeXVV1+1htV0crXc3W2ieVEx17AoMswnARJoTARo9GhMd4tjJQESIAESIAESIAESIAESIAGHwBFHHCHYheAGGBygQBs1apRMnTrVupuqrq52q4Ret23bNjQfme6B5loJrqKiAty84IyNAw44IPRMEDzRvM8++wjcTEEpmCr06tXLumfZbbfdAudxoA2MIvDBjwPTM3E/hbmedNJJdrfHnnvumdaogr6inqpeuHChfPXVVwKf/P/85z8F54bALZYb4LoL7sAYSIAEggRKdQ3be++9BYd4Yy11zwHS0WN3B9zq4UyNlVdeWbNDY+z0eP7558U/4wOVIWfIkCGCc45gYI4bYOjFeUnof6uttgodoysLLq+iAtewKDLMJwESaMwE6N6qMd89jp0ESIAESIAESIAESIAESKDZE4Crk7///e/23IwoGDhDwz+vI6puIfJ//fXXpF977OqA0SObANdU33zzjfVp36lTJ3s+hrrygmEHrrigoIRBpk2bNrHdfGEsOLsErrngtx/XaL/MMstYRSTiqAA3WjfccENUsX0aG096Rz0JHtmQBSTQTAiU+hqGdQdrC144a2jNNddMa2SIunVYp7BzDGeGYC1caaWVklXhUgpncmD9wqt169bJsjgXaIuziBCjH6xhWGthTEll1OYaFocu65AACTQ2AnQm2tjuGMdLAiRAAiRAAiRAAiRAAiRAAg4BuDp57LHH7KHZDz/8sFNSd4mDbxsy4IBzvHINMHDgyWi8/ACjQli+Xy8qDQVhjx497CuqTlg+FKFRAeee4El2GjyiCDGfBERKfQ3DugNXXHjlGrAW4LD0sNC+fXvBK9vQoUMHWX/99TNuzjUsY2RsQAIk0AgI0L1VI7hJHCIJkAAJkAAJkAAJkAAJkAAJpCKAnQhXXnmlPR9jv/32q/cU8vfff5+qOctyIIDdIW6A2xkc8I7D2RHT4OHS4TUJhBPgGhbOpRi5XMOKQZl9kAAJFJsA3VsVmzj7IwESIAESIAESIAESIAESIIECE1BXT7/88ovMnz/fPqEMVyoM+SeAc1PgqgY7WeByC0YPdbmV/94okQSaBwGuYcW7z1zDiseaPZEACRSPAI0exWPNnkiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABApIgO6tCgiXokmABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABIpHgEaP4rFmTyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAgUkQKNHAeFSNAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQPEI0OhRPNbsiQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIoIAEaPQoIFyKJgESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESKB4BGj2Kx5o9kQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJFJAAjR4FhEvRJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACxSNAo0fxWLMnEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBAhKg0aOAcCmaBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEigeARo9Cgea/ZEAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQQAI0ehQQLkWTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkUjwCNHsVjzZ5IgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQKSIBGjwLCpWgSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIHiEaDRo3is2RMJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEABCdDoUUC4FE0CJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJFA8AjR6FI81eyIBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiggARo9CgiXokmABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABIpHgEaP4rFmTyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAgUkQKNHAeFSNAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQPEI0OhRPNbsiQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIoIAEaPQoIFyKJgESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESKB4BGj2Kx5o9kQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJFJAAjR4FhEvRJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACxSNAo0fxWLMnEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBAhKg0aOAcCmaBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEigeARo9Cgea/ZEAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQQAI0ehQQLkWTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkUjwCNHsVjzZ5IgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQKSIBGjwLCpWgSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIHiEaDRo3is2RMJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEABCdDoUUC4FE0CJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJFA8AjR6FI81eyIBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiggARo9CgiXokmABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABIpHgEaP4rFmTyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAgUkQKNHAeFSNAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQPEI0OhRPNbsiQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIoIAEaPQoIFyKJgESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESKB4BGj2Kx5o9kQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJFJAAjR4FhEvRJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACxSNAo0fxWLMnEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBAhKg0aOAcCmaBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEigeARo9Cgea/ZEAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQQAI0ehQQLkWTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAkUjwCNHsVjzZ5IgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQKSIBGjwLCpWgSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESIIHiEaDRo3is2RMJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEABCdDoUUC4FE0CJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJFA8AjR6FI81eyIBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiggARo9CgiXokmABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABIpHgEaP4rFmTyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAgUkQKNHAeFSNAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQPEI0OhRPNbsiQRIgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIoIAEaPQoIFyKJgESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAESKB4BGj2Kx5o9kQAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJFJAAjR4FhEvRJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACxSNAo0fxWLMnEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiCBAhKg0aOAcCmaBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEigeARo9Cgea/ZEAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRQQAL/D2QsXoszqvK7AAAAAElFTkSuQmCC" + } + }, + "cell_type": "markdown", + "id": "92ddc4f4-f7bf-4e0e-b5a5-5abd8a008b21", + "metadata": {}, + "source": [ + "# Corrective RAG\n", + "\n", + "Self-reflection can enhance RAG, enabling correction of poor quality retrieval or generations.\n", + "\n", + "Several recent papers focus on this theme, but implementing the ideas can be tricky.\n", + "\n", + "Here we show how to implement self-reflective RAG using `Mistral` and `LangGraph`.\n", + "\n", + "We'll focus on ideas from one paper, `Corrective RAG (CRAG)` [here](https://arxiv.org/pdf/2401.15884.pdf).\n", + "\n", + "![Screenshot 2024-02-07 at 1.21.51 PM.png](attachment:a65940f9-5c51-4d7c-9ca1-ae576e4bb51a.png)\n", + "\n", + "## Setup\n", + "\n", + "### Using APIs \n", + "\n", + "* Set `MISTRAL_API_KEY` and set up Subscription to activate it.\n", + "* Set `TAVILY_API_KEY` to enable web search [here](https://app.tavily.com/sign-in).\n", + "\n", + "### Using CoLab \n", + "\n", + "* [Here](https://colab.research.google.com/drive/1U5OcwWjoXZSud30q4XOk1UlIJNjaD3kX?usp=sharing) is a link to a CoLab for this notebook. \n", + "\n", + "### Running Locally \n", + "\n", + "#### Embeddings\n", + "\n", + "There are several options for local embeddings.\n", + "\n", + "(1) You can use `GPT4AllEmbeddings()` from Nomic.\n", + "\n", + "(2) You can also use Nomic's recently released [v1](https://blog.nomic.ai/posts/nomic-embed-text-v1) and [v1.5](https://blog.nomic.ai/posts/nomic-embed-matryoshka) embeddings.\n", + "\n", + "For these, simply:\n", + "\n", + "Clone [`llama.cpp`](https://github.com/ggerganov/llama.cpp):\n", + "\n", + "```\n", + "git clone https://github.com/ggerganov/llama.cpp\n", + "```\n", + "\n", + "Download GGUF weights for Nomic's embedding model(s), allowing them to be run locally: \n", + "\n", + "* https://huggingface.co/nomic-ai/nomic-embed-text-v1-GGUF\n", + "* https://huggingface.co/nomic-ai/nomic-embed-text-v1.5-GGUF\n", + "\n", + "Add to `llama.cpp/model` directory.\n", + "\n", + "Build llama.cpp:\n", + "```\n", + "cd llama.cpp\n", + "make\n", + "```\n", + "\n", + "### LLM\n", + "\n", + "(1) Download [Ollama app](https://ollama.ai/).\n", + "\n", + "(2) Download a `Mistral` model from various Mistral versions [here](https://ollama.ai/library/mistral) and Mixtral versions [here](https://ollama.ai/library/mixtral) available.\n", + "```\n", + "ollama pull mistral:instruct\n", + "```\n", + "\n", + "### Tracing \n", + "\n", + "* Optionally, use [LangSmith](https://docs.smith.langchain.com/) for tracing (shown at bottom) by setting: \n", + "\n", + "```\n", + "export LANGCHAIN_TRACING_V2=true\n", + "export LANGCHAIN_ENDPOINT=https://api.smith.langchain.com\n", + "export LANGCHAIN_API_KEY=\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "abc064ab-7de1-4d03-a987-cd3078438d61", + "metadata": {}, + "outputs": [], + "source": [ + "# Check API keys\n", + "import os\n", + "\n", + "mistral_api_key = os.environ.get(\"MISTRAL_API_KEY\")\n", + "tavily_api_key = os.environ.get(\"TAVILY_API_KEY\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "9f644869-436e-4bf6-a267-b2465c7b5aef", + "metadata": {}, + "outputs": [], + "source": [ + "# Flags for running locally\n", + "\n", + "run_local = \"Yes\"\n", + "local_llm = \"mistral:instruct\"" + ] + }, + { + "cell_type": "markdown", + "id": "6e2b6eed-3b3f-44b5-a34a-4ade1e94caf0", + "metadata": {}, + "source": [ + "## Indexing\n", + "\n", + "First, let's index a popular blog post on agents. \n", + "\n", + "We can use [Mistral embeddings](https://python.langchain.com/docs/integrations/text_embedding/mistralai).\n", + "\n", + "For local, we can use [GPT4All](https://python.langchain.com/docs/integrations/text_embedding/gpt4all), which is a CPU optimized SBERT model [here](https://docs.gpt4all.io/gpt4all_python_embedding.html).\n", + "\n", + "We'll use a local vectorstore, [Chroma](https://python.langchain.com/docs/integrations/vectorstores/chroma)." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "254ae533-79e0-42f4-b200-1ec9160e1d3d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "bert_load_from_file: gguf version = 2\n", + "bert_load_from_file: gguf alignment = 32\n", + "bert_load_from_file: gguf data offset = 695552\n", + "bert_load_from_file: model name = BERT\n", + "bert_load_from_file: model architecture = bert\n", + "bert_load_from_file: model file type = 1\n", + "bert_load_from_file: bert tokenizer vocab = 30522\n" + ] + } + ], + "source": [ + "from langchain.text_splitter import RecursiveCharacterTextSplitter\n", + "from langchain_community.document_loaders import WebBaseLoader\n", + "from langchain_community.vectorstores import Chroma\n", + "from langchain_mistralai import MistralAIEmbeddings\n", + "from langchain_community.embeddings import GPT4AllEmbeddings\n", + "from langchain_community.embeddings import LlamaCppEmbeddings\n", + "\n", + "# Load\n", + "url = \"https://lilianweng.github.io/posts/2023-06-23-agent/\"\n", + "loader = WebBaseLoader(url)\n", + "docs = loader.load()\n", + "\n", + "# Split\n", + "text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(\n", + " chunk_size=500, chunk_overlap=100\n", + ")\n", + "all_splits = text_splitter.split_documents(docs)\n", + "\n", + "# Embed and index\n", + "if run_local == \"Yes\":\n", + " # GPT4All\n", + " embedding = GPT4AllEmbeddings()\n", + " # Nomic v1 or v1.5\n", + " # embd_model_path = \"/Users/rlm/Desktop/Code/llama.cpp/models/nomic-embd/nomic-embed-text-v1.Q4_K_S.gguf\"\n", + " # embedding = LlamaCppEmbeddings(model_path=embd_model_path, n_batch=512)\n", + "else:\n", + " embedding = MistralAIEmbeddings(mistral_api_key=mistral_api_key)\n", + "\n", + "# Index\n", + "vectorstore = Chroma.from_documents(\n", + " documents=all_splits,\n", + " collection_name=\"rag-chroma\",\n", + " embedding=embedding,\n", + ")\n", + "retriever = vectorstore.as_retriever()" + ] + }, + { + "attachments": { + "a2fac558-b18e-4610-bfa7-0d40c92e0ede.png": { + "image/png": "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eaXBgwfbP//5zyLThQQ05F944QWbOnVq2JW19y1btthNN91krGBb1gy3h4MOOqisFUvlEQERSILAxIkTrX379gmFxDnnnGNt2rSxESNGJJGTkohA5gisW7cuc5krZxHIAgGJiCxATuUSNGRZiIaVXV988UWbNGlSLLtvvvnGxo4da/n5+f714YcfGr1r7GP7yy+/9GlJx+elS5faxx9/bFOmTPH7yfejjz6yyy+/3AuVWMZuY9WqVf6ay5cv97t/+uknGz16dCzJ7Nmz/XXCjnnz5vlrMHpSlG3YsMHefvttI494o+zROnKc+o0bN84QVcuWLfOnMHIS6rFw4cJYWagnZZkwYYKva3SEJb5OZDR+/HjPl7wRDtiMGTPss88+85/JL7Dj2KZNm+zzzz+3l19+2f71r395puyXiYAIlC0C/Lbttttu2wmJWrVqGUKCzpPo70PZKr1KUxEIaCSiItzl8l3HquW7euWndq1atTKG6Gkws8LlqaeeakuWLPEVbN68uT3xxBO+YY4wYHSBxm7r1q2tT58+vqE8bNgw69mzp9HIHzVqlL355pu2ePFi/84UibfffrsdccQRPj8a0H/84x+tb9++dskll/i8mzVrZieeeKJvzDdq1MjuvPNO22GHHWz33Xe34cOHGy5RzJJy2WWX+cZ7nTp1EsJHyBx88MHWuXPn7dyYyH/BggV+Fc/999/fB0fi6nTYYYdZlSpVjOsiED744AO/uBSCYsiQITZmzBh7+umn7bnnnrMzzzzTmPbxq6++so4dO1rt2rXtjTfe8KIgvk7UDy7Tp0+3Dh062MiRI30+sAuzvSB2sJYtWxo+17feeqvPj3OrV69uu+yyi9+fsLLaKQIiUKoEEPtnnXWWFxL89jDyiR199NF+xJaOGTpRZCJQGgQkIkqDuq6ZVgKul1dWRgm8/vrr+c6dKf/cc8/NHzBgQP6+++6bv2LFivyZM2f6/Wzzco33fCcufC3OPvvs/CeffHK7Gp1yyin5F110kd//8MMP53/xxRexNL/+9a/zuVYwJwTynSjJdw34fDfvev61117rDx177LH5zz//fL774ct3s6Hku1GPfOeS5Mvy7bff+vRu9dh8J1BCVtu9cx3nk+z3cz75zJ8/P9/1/vvttWvX5juh4Ledm1O+6+3PP/zww/11uBbnYHfffXf+Nddc47dfffVVn6cTT/4858rg391IjC8biQqq06BBg/JvvPFGn48TJLFtrgPXeOM+OJexfBfA6csUf1yfRUAEyh4Bvv/81vB9D8ZvkesEyXedKWGX3kUgqwT4X8xzKROBXCWgkYi0SrL0Z0YP+DHHHONdbo477jirV6+en8qQXjX2Y4wS0IPPe2HG0D7mhEZhyfwMJ/T2OzHi04XzTjjhBHP/eK1p06a+l79r164+noGynH/++X60gBPCCEmii/zwww+24447+kPhnQ+4FVBXXA3o4cdwd3KNeWNGlUqVKvl9XDPecI+KWuXKlY2RkHAOx5i1JVGdOEb+GGwXLVrkt/mzevXq2HbYuP/+++3RRx817gXlZfSDEQqZCIhA2SCA2yW/M0ceeaQ1aNDAF+qOO+6whg0b+sXoBg4caO+8844feX3qqaf8iASjlDIRyDYBRiIY7ZeJQK4SkIgo43euRYsWxj89GsRXXnmluREF69evn28kE2jdv39/X4OqVbfeyp133tnHLtDgr1atmoX9JCrIxSgeAf98cRHCxYkGcpgZ6tBDD7WrrrrKN/J/+9vf+tNoeLveee/WhDhBAEQb7/F54/7kRhDMjaDY3LlzY4dxQUIIEftAQ56y4vLEj+zpp5/uXbJ23XVXQzDUqFHDmjRp4utJnMNI54ZEkHZhVlCdCjoHVzCM8hDcjosYLlUEa7KYFeXfe++9vduTG6EpKBvtFwERyDIBvpuffvqpMckEbksHHnig/41iRWuEBC6JPXr0MIKvjz/+eHv88ce9+2aWi6nLiUDsf7tQiECuElBgdY7cOf4R1q9f3/d8M40hDfz77rvP9+rTo++GwnxN6CHnn2OXLl1iPf6IDnz86fEgZiHYGWecYe3atfPxA+edd56PteAY/1gRL/vtt58/HkYkiElA0BDkHeInSE+e4ZrEIcQHRpMmGGIBIUEsgXOTCrv9KADxDfgv33zzzd53GQFEA965SPlASMpKPAV2yCGH+IY8jQHEEjEQTBdbkBVUp4LSI45ggkDgusRcICSI++Az5eflXMwKykL7RUAESoEAv1F/+9vffOcCcWBss4+1I/gdYFVrOh/ocGE0l+91cWa0K4Uq6ZLllADPYBgJL6dVVLXKOYFK+GGV8zqW6+rxz5Ce+eACRGW5pfTGsR/3oJIaIxAENiNekjGmq2NEIC8vr8jkjDAghghiRgQE45qMZNDrHzXyZSpYRiiioysEipOW4+wvbBSE/EpSJ65BUDtuUmy7uA3/Ob6M0fJqWwREoOwQwMUJ1yVmf2NElRHWu+66y0/WgCsTo5m4JspEQAREQASSJyARkTwrpRQBERABEchhAm5SCnOTMvjZ3Yj1chNC+FHXta6zZPgDD3gXxRyunoouAiIgAlklIHemrOLWxURABERABEqLADFN9957r7322mvenYlyMNX1RjciykiFTAREQAREIHkCGolInpVSioAIiIAIlCMCzOLEGjvPPvusd3UkfoJ1aWQiIAIiIAJFE5CIKJqRUoiACIiACJRjAizSSdA1C3mGiSTKcXVVNREQARFICwGJiLRgVCYiIAIiIAK5TIBJF9wClbbXXnvlcjVUdhEQARHIGgGJiKyh1oVEQAREQAREQAREQAREoHwQUGB1+biPqoUIiIAIiIAIiIAIiIAIZI2ARETWUOtCIiACIiACuU6ANXhwfQq2YcMGv4ZN+Kx3ERABEagoBCQiKsqdVj1FQAREQARSJnD11VfbsGHDYvkMHjzYTxsb26ENERABEaggBBQTUUFutKopAiIgAiKQOoHp06fb0UcfbaNGjbLly5fbfvvt51fCbtKkic/8m2++8SMVLGZXqVIlv2/u3Lk2YcIEv9p969atrV+/fqkXRDmIgAiIQCkTkIgo5Rugy4uACIiACOQWgcsuu8zatm1rCxcutEaNGtmll14o116VAAAlPklEQVTqK3DqqafakiVL/Hbz5s39dLHjx4+3Y445xgYMGGDs69ixo51zzjm5VWGVVgREQAQSEKiaYJ92iYAIiIAIiIAIFEDgwgsvjC1Kx4gExloTkydPtpEjR/rPTBW7aNEimzdvntWpU8fOOOMM22OPPaxevXr+uP6IgAiIQK4TkIjI9Tuo8ouACIiACGSVAKMQBx54oLVq1crq16/vrz1jxgxbunSpH3VgR7NmzWzBggV2yCGH2Pz58+2+++6zr7/+2m644QYbNGiQP0d/REAERCCXCcidKZfvnsouAiIgAiJQKgSuv/56a9GiRcw1af369bb77rvb8OHDrX///r5MVatWNfbzXrlyZXv00Uft8ccft9GjR5eozA+8Pd3Wb9pii1dusgN6Nbf6NSpZ68a1rHWjWiXKTyeVHoEvpi2zl79YYG2a5tmWzVtc/IxZnx3rW99OjUqv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RxP77d6trZqLl5GJQFklIBFRVu+MyiUCIiACIiACEQKbnXBYvHKDLXSConLlSrZTi7xtRiYiSbVZxgnMWrzWpi9cYz+v/sVWrvvFNm3a7BYFrGH7dW9qdWtqHeAyfvtUvP8QkIjQoyACIiACIiACIiACIiACIlAsAhonKxYuJRYBERABERABERABERABEZCI0DMgAiIgAiIgAiIgAiIgAiJQLAISEcXCpcQiIAIiIAIiIAIiIAIiIAISEXoGREAEREAEREAEREAEREAEikVAIqJYuJRYBERABERABERABERABERAIkLPgAiIgAiIgAiIgAiIgAiIQLEISEQUC5cSi4AIiIAIiIAIiIAIiIAIaEUTPQMiIAIiIAIikCUCM2fOtA8++MDmz59v9erVs/PPP9+qVtW/4izh12VEQATSSECLzaURprISAREQARHIPoG7777batasaeedd172L16MK44ePdpOPPFEf0bjxo2tevXqxj5Z2Sbw3Xff2WeffWa//vWvrVGjRmW7sCmUbuTIkTZnzhw77bTTUshFp1YkAnJnqkh3W3UVAREQgXJI4M0337R///vfZb5md9xxhy/j888/b2PHjpWAKPN3bGsBv/nmG7vxxhttyZIlOVLikhXzn//8p916660lO1lnVUgCGkOtkLddlRYBERCB3Cfw6aef2o8//mg///yzrV692p566qlYpX7729/60Ymnn37a8vPzbYcddrDevXvbW2+9ZZUqVbIjjjjCuxNxwmOPPWYbN260Zs2a2UEHHWT169eP5bNixQp79dVXrX///kaP9PTp0+3ggw+2rl27xtKwMWnSJBszZowvy+bNm61BgwZ21llnxVyVtmzZYl999ZXtu+++tueee25zLh9++eUXe/31123atGnWsmVLO+yww4zRCmzChAk2btw4v025Z8yYYaNGjbL99tvPdt11V5s3b553kerUqZN98cUXduSRR/prbdiwwX7zm99Y7dq1/blF/aFu7733nlHWo48+2r788ktfln79+tnChQvtnXfe8dds3769z+q1116zatWq2aGHHhrLmvuBoINb9+7d7ZBDDvG8SVDYveCevPzyy/6c3XffPZZfqDt1Ks+jALEKa0MEcoiA3Jly6GapqCIgAiIgAv8lcP3119u//vUvW7p0qd8ZGt18+PDDD70YoEHK8V69elnz5s3t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ZgHRx326/PLLvVBgPwIRkRfiUFgg7pxzzjFGrjC2maL1tttui82mRVwEgu/rr7/2afjzl7/8xcIid1zjiy++8EKDe85oRNSFKnaSNkQgTQQkItIEUtmIgAiIgAiIQDwBGvYzZ870MQmJ1oOIT5+tzzQyaXDSiI0GaGfr+rl4He4lC/fRuMeYGSl+Vqyi6sV0vJs2bdrOpSyct2LFCi86ECekrVmz5najCcRBIBg4Vr9+/XCq/epXv/IjTdxPpvYNAiWWQBsikGYCEhFpBqrsREAEREAEREAEyi8BGvqMMNBYb+9mUyor9uGHH/pYGspU2IJ4ZaW8KkfuE5CIyP17qBqIgAiIgAiIgAiIgAiIQFYJKLA6q7h1MREQAREQAREQAREQARHIfQISEbl/D1UDERABERABERABERABEcgqAYmIrOLWxURABERABERABERABEQg9wlIROT+PVQNREAEREAEREAEREAERCCrBCQisopbFxMBERABERABERABERCB3CcgEZH791A1EAEREAEREAEREAEREIGsEpCIyCpuXUwEREAEREAEREAEREAEcp+ARETu30PVQAREQAREQAREQAREQASySkAiIqu4dTEREAEREAEREAEREAERyH0CEhG5fw9VAxEQAREQAREQAREQARHIKgGJiKzi1sVEQAREQAREQAREQAREIPcJSETk/j1UDURABERABERABERABEQgqwQkIrKKWxcTAREQAREQAREQAREQgdwnIBGR+/dQNRABERABERABERABERCBrBKQiMgqbl1MBERABERABERABERABHKfgERE7t9D1UAEREAEREAEREAEREAEskpAIiKruHUxERABERABERABERABEch9AhIRuX8PVQMREAEREAEREAEREAERyCoBiYis4tbFREAEREAEREAEREAERCD3CUhE5P49VA1EQAREQAREQAREQAREIKsEJCKyilsXEwEREAEREAEREAEREIHcJyARkfv3UDUQAREQAREQAREQAREQgawSkIjIKm5dTAREQAREQAREQAREQARyn4BERO7fQ9VABERABERABERABERABLJKQCIiq7h1MREQAREQAREQAREQARHIfQISEbl/D1UDERABERABERABERABEcgqAYmIrOLWxURABERABERABERABEQg9wlIROT+PVQNREAEREAEREAEREAERCCrBCQisopbFxMBERABERABERABERCB3CcgEZH791A1EAEREAEREAEREAEREIGsEpCIyCpuXUwEREAEREAEREAEREAEcp+ARETu30PVQAREQAREQAREQAREQASySkAiIqu4dTEREAEREAEREAEREAERyH0CEhG5fw9VAxEQAREQAREQAREQARHIKgGJiKzi1sVEQAREQAREQAREQAREIPcJSETk/j1UDURABERABERABERABEQgqwT+H8glSqY2vticAAAAAElFTkSuQmCC" + } + }, + "cell_type": "markdown", + "id": "fe7fd10a-f64a-48de-a116-6d5890def1af", + "metadata": {}, + "source": [ + "## Corrective RAG\n", + "\n", + "Let's implement self-reflective RAG with some ideas from the CRAG (Corrective RAG) [paper](https://arxiv.org/pdf/2401.15884.pdf):\n", + "\n", + "* Grade documents for relevance relative to the question.\n", + "* If any are irrelevant, then we will supplement the context used for generation with web search.\n", + "* For web search, we will re-phrase the question and use Tavily API.\n", + "* We will then pass retrieved documents and web results to an LLM for final answer generation.\n", + "\n", + "Here is a schematic of our graph in more detail:\n", + "\n", + "![crag.png](attachment:a2fac558-b18e-4610-bfa7-0d40c92e0ede.png)\n", + "\n", + "We will implement this using [LangGraph](https://python.langchain.com/docs/langgraph): \n", + "\n", + "* See video [here](https://www.youtube.com/watch?ref=blog.langchain.dev&v=pbAd8O1Lvm4&feature=youtu.be)\n", + "* See blog post [here](https://blog.langchain.dev/agentic-rag-with-langgraph/)\n", + "\n", + "---\n", + "\n", + "### State\n", + "\n", + "Every node in our graph will modify `state`, which is dict that contains values (`question`, `documents`, etc) relevant to RAG." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "10028794-2fbc-43f9-aa4c-7fe3abd69c1e", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Annotated, Dict, TypedDict\n", + "\n", + "from langchain_core.messages import BaseMessage\n", + "\n", + "\n", + "class GraphState(TypedDict):\n", + " \"\"\"\n", + " Represents the state of our graph.\n", + "\n", + " Attributes:\n", + " keys: A dictionary where each key is a string.\n", + " \"\"\"\n", + "\n", + " keys: Dict[str, any]" + ] + }, + { + "cell_type": "markdown", + "id": "0081ff31-4a91-4dbc-9977-8bcdc7dd0aeb", + "metadata": {}, + "source": [ + "### Nodes and Edges\n", + "\n", + "Every node in the graph we laid out above is a function.\n", + "\n", + "Each node will modify the state in some way.\n", + "\n", + "Each edge will choose which node to call next." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "447d1333-082d-479a-a6fa-0ac0df78bb9d", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import operator\n", + "from typing import Annotated, Sequence, TypedDict\n", + "\n", + "from langchain import hub\n", + "from langchain_core.output_parsers import JsonOutputParser\n", + "from langchain.prompts import PromptTemplate\n", + "from langchain.schema import Document\n", + "from langchain_community.chat_models import ChatOllama\n", + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langchain_community.vectorstores import Chroma\n", + "from langchain_core.output_parsers import StrOutputParser\n", + "from langchain_core.runnables import RunnablePassthrough\n", + "from langchain_mistralai.chat_models import ChatMistralAI\n", + "\n", + "### Nodes ###\n", + "\n", + "\n", + "def retrieve(state):\n", + " \"\"\"\n", + " Retrieve documents\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): New key added to state, documents, that contains retrieved documents\n", + " \"\"\"\n", + " print(\"---RETRIEVE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " local = state_dict[\"local\"]\n", + " documents = retriever.get_relevant_documents(question)\n", + " return {\"keys\": {\"documents\": documents, \"local\": local, \"question\": question}}\n", + "\n", + "\n", + "def generate(state):\n", + " \"\"\"\n", + " Generate answer\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): New key added to state, generation, that contains generation\n", + " \"\"\"\n", + " print(\"---GENERATE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + " local = state_dict[\"local\"]\n", + "\n", + " # Prompt\n", + " prompt = hub.pull(\"rlm/rag-prompt\")\n", + "\n", + " # LLM\n", + " if local == \"Yes\":\n", + " llm = ChatOllama(model=local_llm, temperature=0)\n", + " else:\n", + " llm = ChatMistralAI(\n", + " model=\"mistral-medium\", temperature=0, mistral_api_key=mistral_api_key\n", + " )\n", + "\n", + " # Post-processing\n", + " def format_docs(docs):\n", + " return \"\\n\\n\".join(doc.page_content for doc in docs)\n", + "\n", + " # Chain\n", + " rag_chain = prompt | llm | StrOutputParser()\n", + "\n", + " # Run\n", + " generation = rag_chain.invoke({\"context\": documents, \"question\": question})\n", + " return {\n", + " \"keys\": {\"documents\": documents, \"question\": question, \"generation\": generation}\n", + " }\n", + "\n", + "\n", + "def grade_documents(state):\n", + " \"\"\"\n", + " Determines whether the retrieved documents are relevant to the question.\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): Updates documents key with relevant documents\n", + " \"\"\"\n", + "\n", + " print(\"---CHECK RELEVANCE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + " local = state_dict[\"local\"]\n", + "\n", + " # LLM\n", + " if local == \"Yes\":\n", + " llm = ChatOllama(model=local_llm, format=\"json\", temperature=0)\n", + " else:\n", + " llm = ChatMistralAI(\n", + " mistral_api_key=mistral_api_key, temperature=0, model=\"mistral-medium\"\n", + " )\n", + "\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are a grader assessing relevance of a retrieved document to a user question. \\n \n", + " Here is the retrieved document: \\n\\n {context} \\n\\n\n", + " Here is the user question: {question} \\n\n", + " If the document contains keywords related to the user question, grade it as relevant. \\n\n", + " It does not need to be a stringent test. The goal is to filter out erroneous retrievals. \\n\n", + " Give a binary score 'yes' or 'no' score to indicate whether the document is relevant to the question. \\n\n", + " Provide the binary score as a JSON with a single key 'score' and no premable or explaination.\"\"\",\n", + " input_variables=[\"question\", \"context\"],\n", + " )\n", + "\n", + " chain = prompt | llm | JsonOutputParser()\n", + "\n", + " # Score\n", + " filtered_docs = []\n", + " search = \"No\" # Default do not opt for web search to supplement retrieval\n", + " for d in documents:\n", + " score = chain.invoke(\n", + " {\n", + " \"question\": question,\n", + " \"context\": d.page_content,\n", + " }\n", + " )\n", + " grade = score[\"score\"]\n", + " if grade == \"yes\":\n", + " print(\"---GRADE: DOCUMENT RELEVANT---\")\n", + " filtered_docs.append(d)\n", + " else:\n", + " print(\"---GRADE: DOCUMENT NOT RELEVANT---\")\n", + " search = \"Yes\" # Perform web search\n", + " continue\n", + "\n", + " return {\n", + " \"keys\": {\n", + " \"documents\": filtered_docs,\n", + " \"question\": question,\n", + " \"local\": local,\n", + " \"run_web_search\": search,\n", + " }\n", + " }\n", + "\n", + "\n", + "def transform_query(state):\n", + " \"\"\"\n", + " Transform the query to produce a better question.\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): Updates question key with a re-phrased question\n", + " \"\"\"\n", + "\n", + " print(\"---TRANSFORM QUERY---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + " local = state_dict[\"local\"]\n", + "\n", + " # Create a prompt template with format instructions and the query\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are generating questions that is well optimized for retrieval. \\n \n", + " Look at the input and try to reason about the underlying sematic intent / meaning. \\n \n", + " Here is the initial question:\n", + " \\n ------- \\n\n", + " {question} \n", + " \\n ------- \\n\n", + " Provide an improved question without any premable, only respond with the updated question: \"\"\",\n", + " input_variables=[\"question\"],\n", + " )\n", + "\n", + " # Grader\n", + " # LLM\n", + " if local == \"Yes\":\n", + " llm = ChatOllama(model=local_llm, temperature=0)\n", + " else:\n", + " llm = ChatMistralAI(\n", + " mistral_api_key=mistral_api_key, temperature=0, model=\"mistral-medium\"\n", + " )\n", + "\n", + " # Prompt\n", + " chain = prompt | llm | StrOutputParser()\n", + " better_question = chain.invoke({\"question\": question})\n", + "\n", + " return {\n", + " \"keys\": {\"documents\": documents, \"question\": better_question, \"local\": local}\n", + " }\n", + "\n", + "\n", + "def web_search(state):\n", + " \"\"\"\n", + " Web search based on the re-phrased question using Tavily API.\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): Web results appended to documents.\n", + " \"\"\"\n", + "\n", + " print(\"---WEB SEARCH---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + " local = state_dict[\"local\"]\n", + "\n", + " tool = TavilySearchResults()\n", + " docs = tool.invoke({\"query\": question})\n", + " web_results = \"\\n\".join([d[\"content\"] for d in docs])\n", + " web_results = Document(page_content=web_results)\n", + " documents.append(web_results)\n", + "\n", + " return {\"keys\": {\"documents\": documents, \"local\": local, \"question\": question}}\n", + "\n", + "\n", + "### Edges\n", + "\n", + "\n", + "def decide_to_generate(state):\n", + " \"\"\"\n", + " Determines whether to generate an answer or re-generate a question for web search.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " str: Next node to call\n", + " \"\"\"\n", + "\n", + " print(\"---DECIDE TO GENERATE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " filtered_documents = state_dict[\"documents\"]\n", + " search = state_dict[\"run_web_search\"]\n", + "\n", + " if search == \"Yes\":\n", + " # All documents have been filtered check_relevance\n", + " # We will re-generate a new query\n", + " print(\"---DECISION: TRANSFORM QUERY and RUN WEB SEARCH---\")\n", + " return \"transform_query\"\n", + " else:\n", + " # We have relevant documents, so generate answer\n", + " print(\"---DECISION: GENERATE---\")\n", + " return \"generate\"" + ] + }, + { + "cell_type": "markdown", + "id": "6096626d-dfa5-48e0-8a24-3747b298bc67", + "metadata": {}, + "source": [ + "## Build Graph\n", + "\n", + "This just follows the flow we outlined in the figure above." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "0a63776c-f9cd-46ce-b8cf-95c066dc5b06", + "metadata": {}, + "outputs": [], + "source": [ + "import pprint\n", + "\n", + "from langgraph.graph import END, StateGraph\n", + "\n", + "workflow = StateGraph(GraphState)\n", + "\n", + "# Define the nodes\n", + "workflow.add_node(\"retrieve\", retrieve) # retrieve\n", + "workflow.add_node(\"grade_documents\", grade_documents) # grade documents\n", + "workflow.add_node(\"generate\", generate) # generatae\n", + "workflow.add_node(\"transform_query\", transform_query) # transform_query\n", + "workflow.add_node(\"web_search\", web_search) # web search\n", + "\n", + "# Build graph\n", + "workflow.set_entry_point(\"retrieve\")\n", + "workflow.add_edge(\"retrieve\", \"grade_documents\")\n", + "workflow.add_conditional_edges(\n", + " \"grade_documents\",\n", + " decide_to_generate,\n", + " {\n", + " \"transform_query\": \"transform_query\",\n", + " \"generate\": \"generate\",\n", + " },\n", + ")\n", + "workflow.add_edge(\"transform_query\", \"web_search\")\n", + "workflow.add_edge(\"web_search\", \"generate\")\n", + "workflow.add_edge(\"generate\", END)\n", + "\n", + "# Compile\n", + "app = workflow.compile()" + ] + }, + { + "cell_type": "markdown", + "id": "ac0a868a-f0f9-4aa9-b955-a78da2359af8", + "metadata": {}, + "source": [ + "## Run\n", + "\n", + "`Mistral API -` \n", + "\n", + "Trace for below run: https://smith.langchain.com/public/0a5cbc97-a2f6-4697-856c-90a6302fd13e/r" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "3ab1d8df-a74e-4b48-a30b-e39bbfd5925a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---RETRIEVE---\n", + "\"Node 'retrieve':\"\n", + "'\\n---\\n'\n", + "---CHECK RELEVANCE---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "\"Node 'grade_documents':\"\n", + "'\\n---\\n'\n", + "---DECIDE TO GENERATE---\n", + "---DECISION: GENERATE---\n", + "---GENERATE---\n", + "\"Node 'generate':\"\n", + "'\\n---\\n'\n", + "\"Node '__end__':\"\n", + "'\\n---\\n'\n", + "(' In an LLM (large language model)-powered autonomous agent system, LLM '\n", + " 'functions as the agent’s brain, complemented by several key components: '\n", + " 'planning and memory.\\n'\n", + " '\\n'\n", + " 'Planning involves breaking down large tasks into smaller subgoals for '\n", + " 'efficient handling of complex tasks and self-criticism and refinement to '\n", + " 'improve results.\\n'\n", + " '\\n'\n", + " 'Memory includes short-term memory, which utilizes in-context learning, and '\n", + " 'long-term memory, providing the agent with the capability to retain and '\n", + " 'recall information over extended periods using an external vector store and '\n", + " 'fast retrieval. The agent also learns to call external APIs for missing '\n", + " 'information.\\n'\n", + " '\\n'\n", + " 'Types of Memory:\\n'\n", + " '1. Sensory Memory: retains impressions of sensory information for a few '\n", + " 'seconds.\\n'\n", + " '2. Short-Term Memory (STM) or Working Memory: stores information needed for '\n", + " 'complex cognitive tasks and lasts for 20-30 seconds.\\n'\n", + " '3. Long-Term Memory (LTM): stores information for a remarkably long time, '\n", + " 'with two subtypes: explicit/declarative memory and implicit/procedural '\n", + " 'memory.\\n'\n", + " '\\n'\n", + " 'The agent uses LLM as its core controller, which can be extended beyond '\n", + " 'generating well-written copies, stories, essays, and programs to a powerful '\n", + " 'general problem solver.')\n" + ] + } + ], + "source": [ + "# Run\n", + "inputs = {\n", + " \"keys\": {\n", + " \"question\": \"Explain how the different types of agent memory work?\",\n", + " \"local\": run_local,\n", + " }\n", + "}\n", + "for output in app.stream(inputs):\n", + " for key, value in output.items():\n", + " # Node\n", + " pprint.pprint(f\"Node '{key}':\")\n", + " # Optional: print full state at each node\n", + " # pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")\n", + "\n", + "# Final generation\n", + "pprint.pprint(value[\"keys\"][\"generation\"])" + ] + }, + { + "cell_type": "markdown", + "id": "03ee2be9-2368-46ea-9edd-dc064a7c7c96", + "metadata": {}, + "source": [ + "`Local (Ollama) -` \n", + "\n", + "Trace for blow run: https://smith.langchain.com/public/3b23a1d4-720a-4b26-8f34-70d2f20f8832/r" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "16ea2032-59c7-433d-aca4-2828a1239074", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---RETRIEVE---\n", + "\"Node 'retrieve':\"\n", + "'\\n---\\n'\n", + "---CHECK RELEVANCE---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "\"Node 'grade_documents':\"\n", + "'\\n---\\n'\n", + "---DECIDE TO GENERATE---\n", + "---DECISION: GENERATE---\n", + "---GENERATE---\n", + "\"Node 'generate':\"\n", + "'\\n---\\n'\n", + "\"Node '__end__':\"\n", + "'\\n---\\n'\n", + "(' In an LLM (large language model)-powered autonomous agent system, LLM '\n", + " 'functions as the agent’s brain, complemented by several key components: '\n", + " 'planning and memory.\\n'\n", + " '\\n'\n", + " 'Planning involves breaking down large tasks into smaller subgoals for '\n", + " 'efficient handling of complex tasks and self-criticism and refinement to '\n", + " 'improve results.\\n'\n", + " '\\n'\n", + " 'Memory includes short-term memory, which utilizes in-context learning, and '\n", + " 'long-term memory, providing the agent with the capability to retain and '\n", + " 'recall information over extended periods using an external vector store and '\n", + " 'fast retrieval. The agent also learns to call external APIs for missing '\n", + " 'information.\\n'\n", + " '\\n'\n", + " 'Types of Memory:\\n'\n", + " '1. Sensory Memory: retains impressions of sensory information for a few '\n", + " 'seconds.\\n'\n", + " '2. Short-Term Memory (STM) or Working Memory: stores information needed for '\n", + " 'complex cognitive tasks and lasts for 20-30 seconds.\\n'\n", + " '3. Long-Term Memory (LTM): stores information for a remarkably long time, '\n", + " 'with two subtypes: explicit/declarative memory and implicit/procedural '\n", + " 'memory.\\n'\n", + " '\\n'\n", + " 'The agent uses LLM as its core controller, which can be extended beyond '\n", + " 'generating well-written copies, stories, essays, and programs to a powerful '\n", + " 'general problem solver.')\n" + ] + } + ], + "source": [ + "# Run\n", + "inputs = {\n", + " \"keys\": {\n", + " \"question\": \"Explain how the different types of agent memory work?\",\n", + " \"local\": run_local,\n", + " }\n", + "}\n", + "for output in app.stream(inputs):\n", + " for key, value in output.items():\n", + " # Node\n", + " pprint.pprint(f\"Node '{key}':\")\n", + " # Optional: print full state at each node\n", + " # pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")\n", + "\n", + "# Final generation\n", + "pprint.pprint(value[\"keys\"][\"generation\"])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "deb28175-27a1-4afc-9747-2983e87fc881", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/rag/langgraph_self_rag.ipynb b/examples/rag/langgraph_self_rag.ipynb new file mode 100644 index 000000000..661eb3979 --- /dev/null +++ b/examples/rag/langgraph_self_rag.ipynb @@ -0,0 +1,756 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "a384cc48-0425-4e8f-aafc-cfb8e56025c9", + "metadata": {}, + "outputs": [], + "source": [ + "! pip install langchain_community tiktoken langchain-openai langchainhub chromadb langchain langgraph" + ] + }, + { + "attachments": { + "ea6a57d2-f2ec-4061-840a-98deb3207248.png": { + "image/png": "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eGlmOlBpeGVsWERpbWVuc2lvbj44Nzc8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29tbWVudD5TY3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KejsPdwAAQABJREFUeAHsnQeYFdX5xj96772DYgGlqmAXsZdo1JhYomKsMf+oicZomqZqYozGxBp77L13FCuCiooVQUF6k87S9/6/34Gzmb1subtsubv3/Z5n7sydcubMOzNnznu+ViflYhIhIASEgBAQAkJACAgBISAEhIAQyEoE6mZlrVQpISAEhIAQEAJCQAgIASEgBISAEAgIiLTpQRACQkAICAEhIASEgBAQAkJACGQxAiJtWXxzVDUhIASEgBAQAkJACAgBISAEhIBIm54BISAEhIAQEAJCQAgIASEgBIRAFiMg0pbFN0dVEwJCQAgIASEgBISAEBACQkAIiLTpGRACQkAICAEhIASEgBAQAkJACGQxAiJtWXxzVDUhIASEgBAQAkJACAgBISAEhIBIm54BISAEhIAQEAJCQAgIASEgBIRAFiMg0pbFN0dVEwJCQAgIASEgBISAEBACQkAIiLTpGRACQkAICAEhIASEgBAQAkJACGQxAiJtWXxzVDUhIASEgBAQAkJACAgBISAEhIBIm54BISAEhIAQEAJCQAgIASEgBIRAFiMg0pbFN0dVEwJCQAgIASEgBISAEBACQkAIiLTpGRACQkAICAEhIASEgBAQAkJACGQxAiJtWXxzVDUhIASEgBAQAkJACAgBISAEhIBIm54BISAEhIAQEAJCQAgIASEgBIRAFiMg0pbFN0dVEwJCQAgIASEgBISAEBACQkAIiLTpGRACQkAICAEhIASEgBAQAkJACGQxAiJtWXxzVDUhIASEgBAQAkJACAgBISAEhIBIm54BISAEhIAQEAJCQAgIASEgBIRAFiMg0pbFN0dVEwJCQAgIASEgBISAEBACQkAIiLTpGRACQkAICAEhIASEgBAQAkJACGQxAiJtWXxzVDUhIASEgBAQAkJACAgBISAEhIBIm54BISAEhIAQEAJCQAgIASEgBIRAFiMg0pbFN0dVEwJCQAgIASEgBISA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BHlT7qUqvgk6nRDIEQT4xkLe8H874IADguaNuUQICIHyISDSVj7cdFQNQ2D58uX20ksvBbLGfP369QVX0L59e2vcuLEtW7YsTAUbKmEBE7Xk1LNnz4L/HTp0qIQzqkghsDkC7777biBvDF6cccYZdvrppyv62+YwaY0QEAIVgMD48eMDeXv44YeDph/N2+GHH14BJasIIZBbCIi05db9zrmrffXVV+3RRx8N5o+QskykVatW1rp1a0vOi1tetWqV5eXlGfPkFNfhUxSXmc+ZM8dmzJhRiDTGOkEckyQukrttt93W+vTpE3fTXAhUGAKMhN9+++02a9asQNxIFSARAkJACFQGAp9//rlB3NC+9evXL2je8H2TCAEhkBkCIm2Z4aS9ahACfBRwhiawyIoVKwrVPJVKWZ06dcI6yNA222xj6fNCB1TSn9mzZxtmmhA45sll8mylC2aWmG7GacCAAda1a9f03fRfCJQLATpRt912m7Vp0yZo3vbdd99ylaODhIAQEAKlIcAgEW0O32osXdC8ff/737d69eqVdqi2C4GcRkCkLadvf+24+AkTJtgLL7wQtGlff/21rV27ttCF1a1bN/iojRw5shBJK7RTFv1BY5ckc5MnTw7RuD755JNCtcScMpK4gQMHGpMSnBaCSH/KgMCaNWvs5ptvtltuucX233//QN623377MpSgXYWAEBACmSOA2wLkjYkBVYgbU/PmzTMvRHsKgRxCQKQth252bblUGvo333wzaNPeeeedECgkeW2QtO7du4foeIQ333333WvFCB75tgilzPTxxx+H+RdffJG89OAfB5GDwDFXuOVC8OhPBghMnTo1kDe01fi7MaHplQgBISAEKguBBx54wO677z5bvHhxIG5o39DCSYSAEPgfAiJt/8NCS1mMAOaEBBB5+umnA1nBVywpRGjs37+/HXTQQXb88cdbkyZNkptr7fK6desKiFwkdFOmTCm43vr169tee+0VphgVs2CjFoRACQi88cYbQeuGKRPEjU6URAgIASFQmQiQLuD+++83Bo/QutHu4N8tEQJCwEykTU9B1iIwadKkEO3x2WefNRyYMZ9ICuaBw4cPDySN3FOSjQgQ8CQSuPfee8+I3MXoJdKpU6cQvWunnXYyJpm/bcRMv8UjwAj4jTfeaL169bIzzzwzaK6L31tbhIAQEAJbjgAD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QwSiJbDOOuv4Yxs9erTbaqutvHA666yzljjev/3tb27FFVd0L7zwgvvggw/cM888s3iZs88+279G9F199dVenGE9Q3i99tprjokhxi3Dhg3zy/Xq1ctb8vgHscUDscfz888/777//nv3xBNPuPPPP9+9//77fp26/rDv7dq1c0899ZRfFHFB23zzzf2z/tRNoBK8L+qmkM0lZGnLZr/UulfBv1yWtlox6UMREIEiCMQyeLv00ku9BWHEiBG1JlsoApFWEYHoCDAYROwwrqCIb8eOHV379u2XOM6NN97YvfLKK+6vf/2re+yxx1yrVq38Ml9//bW31J1wwgneYrbbbru5a6+91rVp08bhQvnWW2950YalgFg5Gq+XX355/3q77bZzAwcOdFdddZU74IADHL9bBNiaa67pn3/1q1/55er6w/4ceuihDssdDXGJYFtuueXqWlWf5xCIyfsiFrdZWdpyTtJy+DeINqX9L4fe0j6KQHkRiGHwhrVg3Lhx7qCDDnJ9+vRx++67b3l1gvZWBBqZAJYsXBB79+5d6zf/7//+r7v//vvdKqus4m688Ua3zz77+OXDYHLWrFlLrH/00Uc7EolgoevWrdsSn/MG26P17NnT7wPiMZktL4g7v1Adf9gnjuezzz7zVrsdd9yxjjX0cT4CMXlfxOI2K0tbvjM14+/JPbJ0HRT8tpPPhWxdWekKoaVly4FADIO34DqOxYDWoUOHckCvfRSBRieAsLn55pvdySef7GO/iCkjacjkyZN9PCiTw7zmPRrxaP369XP777+/jzkbOXKkX65v377u17/+tbviiiscLomTJk1yY8aM8YlNuKbstdde7ve///3i4xs7dqwj3uyHH37w77H98B28QRwbbpYff/yx4zvYRtqGOMQiiCsn+4vFTq14AjF4X8TiNivRVvx53GRrBtEmS1v9uiDptx2CoXkOQdJptq6sdGkoaZlyIBDT4I3fcY8ePdxdd93lmFhhllVNBERgSQJ77rmnjzFjYH7PPfd469aZZ57pKAOACyQWa17zHg0rFsKOZCTXXHONO/30090yyyzjP7vwwgu9WyXbXG+99dyJJ57oXSD//Oc/u7/85S/e/TG4XLI+8XCIMxqZK7Hihbb11ls7XCZ32mkn/xlukoW0Aw880D377LN+X2uy7hWyvUpeNgbvi1jcZoNFO6bzsUVMB5PvWIJoU0xbPjqFv0dWqXAjYW3cQ4ILKv/jj4+vf7IhmAmwVhOBWAgw0OrUqZPbdNNN3RlnnLF48Pboo48uPkQGb8SqkGSAwRsz8KHlDt5uueUWxzZpDOBIDBIGb2yfNOM0Bm8kJiDrHI3B2+DBg308DP8zeHvjjTf84A0hlnbwRn2poUOH+m1vv/32bEpNBERgEQESfuBGnK/x++aRr/FbJLMjrovcN5Mz/1jaWO+SSy7x98dll13Wb4IYM0QU91UGzyeddJJ/Zt2a9oEYtIsvvtidd955rm3btj4TbNJdMt++Jd/7zW9+4+/bhx9+ePJtvS6CQCHeF1tuuaWPR8R1lrjC//u//1tcMqIm11ksrrvsskuNscdJ11l2n7EvsZKhpXWd5Z5FnGVwmyWTabm15O+t3Pa9pv2NXrQFQSHRVtMpUNj7zMonRRtrkzUL9w7SG+Pnz02HDFY0Bp+nnnqqf63BoMegP2VMINbBG7P022yzjXfBYqCIy2Rwlyzj7tKui0CTEkA4MblTW0Nk8Ui2pODK/Sy5XO7rsGza3y7lBe644w738MMPO2LZtt1229xN6v+UBBA3gSfjpOA6O3fu3Gqus61bt/ZjqOA6y8Q3xgUssZRcSbrOUsSdOGOEGpNwCEKyju6xxx7uoosu8nuG62znzp2XcJ0N4zSss1huiVnG8sQ2KD9RV4vBbVaira5ezuDnsrSVtlO4UDCoo5H5iosFwhiXqnvvvdeLN97HMtC9e3cXstIdfPDBi4VcafdIWxOB7BPI+uANgtzQw4xsjG4l2T9LtIci0LgEEAO4Q1533XXevTIpFht3T8r/22LzvqBHsPji1YEALUe32RjvY81M1Cws/59LzUdAcC7FMDE7p02DW/PWKvcTYtoITj3kkEMWD+yOOuooP4uI+xazPczYYdHEGoGpnxkkZnlefPFFP3uET/4f/vAH9+mnny4xs1i5ZHXkIiACIiACIiAClUSAsVJNrrOBA+EmhJbgOhusRqwXXGf5nEn08FlYL98zy2KJJVwFcd6sWbN8i1V7b/z48X7cR+H3cswqyvgTqyQWy1ha9O6RQZOGDGmxdFxTHQdxNsHsntyH4CedvBAE5sFVQ1npksT0WgREQAREQAREoBIJZNn7Irh5lrvbbBoxW27nXsWINmWPLM2pOWrUqGqijXTGNbVkVjri3JSVriZSel8EREAEREAEREAEmp5ALG6zMbpHVoxoUyKS0lwIdt9992obGj58+OJsR8kPgsVNWemSVPRaBERABERABERABLJLYIMNNnA8yr3J0laGPRiyRwZXvTI8hEzscm1Z80IWI3aUH0kyLbGy0mWi+7QTIiACIiACIiACIlAxBGRpK8OuDqJN7pFN13n8cJSVrun465tFQAREQAREQAREoJIIxGhpax57B4ZEJHKPjL2ndXwiIAIiIAIiIAIiIAIiUOX5FRsHibbYelTHIwIiIAIiIAIiIAIiIAIVTCBG90iJtgo+oXXoIiACIiACIiACIiACIhAbAblHlmGPKqatDDtNuywCIiACIiACIiACIiACRRKQaCsSXFOuFmLalD2yKXtB3y0CIiACIiACIiACIiACjUNA7pGNw7mk3yJLW0lxamMiIAIiIAIiIAIiIAIikGkCsrRlunvy71ywtCl7ZH4+elcEREAEREAEREAEREAEYiIg0VaGvRlEm9wjy7DztMsiIAIiIAIiIAIiIAIiUCABibYCgWVh8SDaVFw7C72hfRABERABERABERABERCBhiUg0dawfBtk6yGmTe6RDYJXGxUBERABERABERABERCBTBGQaMtUd6TbmWBpk2hLx0tLiYAIiIAIiIAIiIAIiEA5E1D2yDLsPVnayrDTtMsiIAIiIAIiIAIiIAIiUCQBWdqKBJeF1RTTloVe0D6IgAiIgAiIgAiIgAiIQMMSwNIWWxLC5g2LrOm3Lktb0/eB9kAEREAEREAEREAEREAEGosAlrbYDDYSbY119uh7REAEREAEREAEREAEREAEGpwAok2WtgbHXNovUCKS0vLU1kRABERABERABERABEQgywRwj5SlLcs9lGffgntkbB2X51D1lgiIgAiIgAiIgAiIgAhUPAFZ2srwFAiWtthMpGXYFdplERABERABERABERABEWhwAoppa3DEpf+CINpUp630bLVFERABERABERABERABEcgaAWWPzFqPpNifINrkHpkClhYRAREQAREQAREQAREQgTInIEtbGXZgiGmTe2QZdp52WQREQAREQAREQAREQAQKJKCYtgKBZWFxWdqy0AvaBxEQAREQAREQAREQARFoHAKytDUO55J+S7C0KaatpFi1MREQAREQAREQAREQARHIJAFZ2jLZLel2SqItHSctJQIiIAIiIAIiIAIiIALlTEB12sqw92RpK8NO0y6LgAiIgAiIgAiIgAiIQJEEZGkrElxTrkZM24YbbhhdVfSmZKrvFgEREAEREAEREAEREIEsE4gtc3yLLMMuxb7179/ftW/f3h1xxBGl2Jy2IQIiIAIiIAIiIAIiIAIikHECGG1ias3MErUwpgPSsYiACIiACIiACIiACIiACIhATASax3QwOhYREAEREAEREAEREAEREAERiI1A9O6RuR02YsQId8011/i3mzVrVvBzWCdsN/xfzDNGzmLW47vDelnYj1iOI7AMfAPjQp/DdgpdL7l8LExjOY7Qp+HcKPY5LY/kuZD7XWm3kbte8n9e02r7nro+L6f98Ae76A/7na/V9/3Asr7bYd9KsY36bCccS+DU1PsT9iM8p92fcBxply90+425fDiW8J08F3pcha5T6PYLWZ7jKWT5Qve9MZfP7ZtyPa5wHE2x/6X+zo022ohTILpWcaKtW7dubvLkyW7UqFHRdaYOSAREQAREQAREQAREQAQqmcApp5ziTj755OgQKKYtui7VAYmACOQjEGbyanoO69T0eZr3k7PHaZbnO3OXi2U/snocSealfB2Ot5TbDOdG2Ga+mfDcZcJ+FPt+8hwO31vfbebbThaPpRhmWTyOXN65/9d2nOVwPLXtfzhXk89pli92mZp+L8VuL19fxdInMGmMYyH5CKItxibRFmOv6phEQAREQAREQAREQAREQASiIaBEJNF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgISbdF0pQ5EBERABERABERABERABEQgRgISbTH2qo5JBERABERABERABERABEQgGgL/HyO/Hwp37uk5AAAAAElFTkSuQmCC" + } + }, + "cell_type": "markdown", + "id": "919fe33c-0149-4f7d-b200-544a18986c9a", + "metadata": {}, + "source": [ + "# Self-RAG\n", + "\n", + "Self-reflection can enhance RAG, enabling correction of poor quality retrieval or generations.\n", + "\n", + "Several recent papers focus on this theme, but implementing the ideas can be tricky.\n", + "\n", + "Here we show how to implement ideas from the `Self RAG` paper [here](https://arxiv.org/abs/2310.11511) using LangGraph.\n", + "\n", + "## Dependencies\n", + "\n", + "Set `OPENAI_API_KEY`\n", + "\n", + "## Self-RAG Detail\n", + "\n", + "Self-RAG is a recent paper that introduces an interesting approach for self-reflective RAG. \n", + "\n", + "The framework trains an LLM (e.g., LLaMA2-7b or 13b) to generate tokens that govern the RAG process in a few ways:\n", + "\n", + "1. Should I retrieve from retriever, `R` -\n", + "\n", + "* Token: `Retrieve`\n", + "* Input: `x (question)` OR `x (question)`, `y (generation)`\n", + "* Decides when to retrieve `D` chunks with `R`\n", + "* Output: `yes, no, continue`\n", + "\n", + "2. Are the retrieved passages `D` relevant to the question `x` -\n", + "\n", + "* Token: `ISREL`\n", + "* * Input: (`x (question)`, `d (chunk)`) for `d` in `D`\n", + "* `d` provides useful information to solve `x`\n", + "* Output: `relevant, irrelevant`\n", + "\n", + "\n", + "3. Are the LLM generation from each chunk in `D` is relevant to the chunk (hallucinations, etc) -\n", + "\n", + "* Token: `ISSUP`\n", + "* Input: `x (question)`, `d (chunk)`, `y (generation)` for `d` in `D`\n", + "* All of the verification-worthy statements in `y (generation)` are supported by `d`\n", + "* Output: `{fully supported, partially supported, no support`\n", + "\n", + "4. The LLM generation from each chunk in `D` is a useful response to `x (question)` -\n", + "\n", + "* Token: `ISUSE`\n", + "* Input: `x (question)`, `y (generation)` for `d` in `D`\n", + "* `y (generation)` is a useful response to `x (question)`.\n", + "* Output: `{5, 4, 3, 2, 1}`\n", + "\n", + "We can represent this as a graph:\n", + "\n", + "![Screenshot 2024-02-02 at 1.36.44 PM.png](attachment:ea6a57d2-f2ec-4061-840a-98deb3207248.png)\n", + "\n", + "---\n", + "\n", + "Let's implement some of these ideas from scratch using [LangGraph](https://python.langchain.com/docs/langgraph)." + ] + }, + { + "cell_type": "markdown", + "id": "c27bebdc-be71-4130-ab9d-42f09f87658b", + "metadata": {}, + "source": [ + "## Retriever\n", + " \n", + "Let's index 3 blog posts." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "565a6d44-2c9f-4fff-b1ec-eea05df9350d", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.text_splitter import RecursiveCharacterTextSplitter\n", + "from langchain_community.document_loaders import WebBaseLoader\n", + "from langchain_community.vectorstores import Chroma\n", + "from langchain_openai import OpenAIEmbeddings\n", + "\n", + "urls = [\n", + " \"https://lilianweng.github.io/posts/2023-06-23-agent/\",\n", + " \"https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/\",\n", + " \"https://lilianweng.github.io/posts/2023-10-25-adv-attack-llm/\",\n", + "]\n", + "\n", + "docs = [WebBaseLoader(url).load() for url in urls]\n", + "docs_list = [item for sublist in docs for item in sublist]\n", + "\n", + "text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(\n", + " chunk_size=250, chunk_overlap=0\n", + ")\n", + "doc_splits = text_splitter.split_documents(docs_list)\n", + "\n", + "# Add to vectorDB\n", + "vectorstore = Chroma.from_documents(\n", + " documents=doc_splits,\n", + " collection_name=\"rag-chroma\",\n", + " embedding=OpenAIEmbeddings(),\n", + ")\n", + "retriever = vectorstore.as_retriever()" + ] + }, + { + "cell_type": "markdown", + "id": "276001c5-c079-4e5b-9f42-81a06704d200", + "metadata": {}, + "source": [ + "## State\n", + " \n", + "We will define a graph.\n", + "\n", + "Our state will be a `dict`.\n", + "\n", + "We can access this from any graph node as `state['keys']`." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f1617e9e-66a8-4c1a-a1fe-cc936284c085", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Dict, TypedDict\n", + "\n", + "from langchain_core.messages import BaseMessage\n", + "\n", + "\n", + "class GraphState(TypedDict):\n", + " \"\"\"\n", + " Represents the state of our graph.\n", + "\n", + " Attributes:\n", + " keys: A dictionary where each key is a string.\n", + " \"\"\"\n", + "\n", + " keys: Dict[str, any]" + ] + }, + { + "attachments": { + "e61fbd0c-e667-4160-a96c-82f95a560b44.png": { + "image/png": "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eGlmOlBpeGVsWERpbWVuc2lvbj4xMTMyPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CrI+j1QAAEAASURBVHgB7J0FfJXV/8e/rJs1sTG6OxREBEFAUBFQLCzE+NkBJjYmFiZiIR3SIB0Ckkp3jBg51t0bv/M5d8/l3nE3Ntjwbny+/9fdU+c5zznv8/h7/Z8P36h0TpnQSIAESIAESIAESIAESIAESIAESIAESIAE7IaAg92MhAMhARIgARIgARIgARIgARIgARIgARIgARLQBCjY8EUgARIgARIgARIgARIgARIgARIgARIgATsjQMHGzhaEwyEBEiABEiABEiABEiABEiABEiABEiABCjZ8B0iABEiABEiABEiABEiABEiABEiABEjAzghQsLGzBeFwSIAESIAESIAESIAESIAESIAESIAESICCDd8BEiABEiABEiABEiABEiABEiABEiABErAzAhRs7GxBOBwSIAESIAESIAESIAESIAESIAESIAESoGDDd4AESIAESIAESIAESIAESIAESIAESIAE7IwABRs7WxAOhwRIgARIgARIgARIgARIgARIgARIgAQo2PAdIAESIAESIAESIAESIAESIAESIAESIAE7I0DBxs4WhMMhARIgARIgARIgARIgARIgARIgARIgAQo2fAdIgARIgARIgARIgARIgARIgARIgARIwM4IULCxswXhcEiABEiABEiABEiABEiABEiABEiABEiAgg3fARIgARIgARIgARIgARIgARIgARIgARKwMwIUbOxsQTgcEiABEiABEiABEiABEiABEiABEiABEqBgw3eABEiABEiABEiABEiABEiABEiABEiABOyMAAUbO1sQDocESIAESIAESIAESIAESIAESIAESIAEKNjwHSABEiABEiABEiABEiABEiABEiABEiABOyNAwcbOFoTDIQESIAESIAESIAESIAESIAESIAESIAEKNnwHSIAESIAESIAESIAESIAESIAESIAESMDOCFCwsbMF4XBIgARIgARIgARIgARIgARIgARIgARIgIIN3wESIAESIAESIAESIAESIAESIAESIAESsDMCFGzsbEE4HBIgARIgARIgARIgARIgARIgARIgARKgYMN3gARIgARIgARIgARIgARIgARIgARIgATsjAAFGztbEA6HBEiABEiABEiABEiABEiABEiABEiABCjY8B0gARIgARIgARIgARIgARIgARIgARIgATsjQMHGzhaEwyEBEiABEiABEiABEiABEiABEiABEiABCjZ8B0iABEiABEiABEiABEiABEiABEiABEjAzghQsLGzBeFwSIAESIAESIAESIAESIAESIAESIAESICCDd8BEiABEiABEiABEiABEiABEiABEiABErAzAhRs7GxBOBwSIAESIAESIAESIAESIAESIAESIAESoGDDd4AESIAESIAESIAESIAESIAESIAESIAE7IwABRs7WxAOhwRIgARIgARIgARIgARIgARIgARIgAQo2PAdIAESIAESIAESIAESIAESIAESIAESIAE7I0DBxs4WhMMhARIgARIgARIgARIgARIgARIgARIgAQo2fAdIgARIgARIgARIgARIgARIgARIgARIwM4IULCxswXhcEiABEiABEiABEiABEiABEiABEiABEiAgg3fARIgARIgARIgARIgARIgARIgARIgARKwMwIUbOxsQTgcEiABEiABEiABEiABEiABEiABEiABEqBgw3eABEiABEiABEiABEiABEiABEiABEiABOyMAAUbO1sQDocESIAESIAESIAESIAESIAESIAESIAEKNjwHSABEiABEiABEiABEiABEiABEiABEiABOyNAwcbOFoTDIQESIAESIAESIAESIAESIAESIAESIAEKNnwHSIAESIAESIAESIAESIAESIAESIAESMDOCFCwsbMF4XBIgARIgARIgARIgARIgARIgARIgARIgIIN3wESIAESIAESIAESIAESIAESIAESIAESsDMCFGzsbEE4HBIgARIgARIgARIgARIgARIgARIgARKgYMN3gARIgARIgARIgARIgARIgARIgARIgATsjAAFGztbEA6HBEiABEiABEiABEiABEiABEiABEiABCjY8B0gARIgARIgARIgARIgARIgARIgARIgATsjQMHGzhaEwyEBEiABEiABEiABEiABEiABEiABEiABCjZ8B0iABEiABEiABEiABEiABEiABEiABEjAzghQsLGzBeFwSIAESIAESIAESIAESIAESIAESIAESICCDd8BEiABEiABEiABEiABEiABEiABEiABErAzAhRs7GxBOBwSIAESIAESIAESIAESIAESIAESIAESoGDDd4AESIAESIAESIAESIAESIAESIAESIAE7IwABRs7WxAOhwRIgARIgARIgARIgARIgARIgARIgAQo2PAdIAESIAESIAESIAESIAESIAESIAESIAE7I0DBxs4WhMMhARIgARIgARIgARIgARIgARIgARIgAQo2fAdIgARIgARIgARIgARIgARIgARIgARIwM4IULCxswXhcEiABEiABEiABEiABEiABEiABEiABEiAgg3fARIgARIgARIgARIgARIgARIgARIgARKwMwIUbOxsQTgcEiABEiABEiABEiABEiABEiABEiABEqBgw3eABEiABEiABEiABEiABEiABEiABEiABOyMAAUbO1sQDocESIAESIAESIAESIAESIAESIAESIAEKNjwHSABEiABEiABEiABEiABEiABEiABEiABOyNAwcbOFoTDIQESIAESIAESIAESIAESIAESIAESIAEKNnwHSIAESIAESIAESIAESIAESIAESIAESMDOCFCwsbMF4XBIgARIgARIgARIgARIgARIgARIgARIgIIN3wESIAESIAESIAESIAESIAESIAESIAESsDMCFGzsbEE4HBIgARIgARIgARIgARIgARIgARIgARKgYMN3gARIgARIgARIgARIgARIgARIgARIgATsjICTnY3nqhpOVlaWTJw40WrO1atXl169elmdK+xg3759smHDBjl27Ji4uLhI06ZNpX///oU153kSsCJw5MgRWbVqldSsWVNuuukmq2s8IAESIAESIAESIAESIAESIAES+G8JULApIf/o6Gj56aeftFBy5swZqV27trRq1UqefPJJCQoKKlFv6enp8v7771vd07Fjx2IJNqNGjZIRI0ZY3XvrrbeWWLB5+eWX5dSpU+Z+HB0dBaJRu3bt5I477hAnpwtfkWXLlsmYMWP0Pf369ZN77rnHfL/lTmxsrPz222+yZ88e2bVrl4SGhkrz5s3lgQcekMaNG1s2veg+xoixNmnSRN5+++2LtreHBpj31KlTZffu3RIRESENGzaUFi1ayP/+9z/x9/f/z4cI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YoncVmNmnwlZypsr/Do2azftlnIl8tofv/37908CJdAPYRa3XnPvWaS6fc5793kfan2+dQS6nnJe823X+z7QPtef6R2XZ997TUpj9JajPu/7lPruLee77134+56jDcx7nPeB2vKW8+5760hpfN5yKe1zzmve/vhr143Re85d4/QpvOcC7dNmoHOuPspA6njfc8yZ93qOed8H2k+tnBtfauU47yxQW97jlA00DleP23qvC7RP2UDnvMf9lXNjTK2cv/74qy+1cuGap97+Btp3/fM3Ru81rlxqfQ+2XKyNMS1YpHWMRYoUsTC/++67yeasw163ikC0I3CGmfyJj4WivafaP0UgFQS8U9ntuy2Xss8/CN9j7pyr3p13W+/5QMfcPx533m2Duda3XXdNLPTVjTOtfXVjd09F3djdNpy4+uurO+ba827/v707Ade5zvs4/iWHwUGNfV+yjgwiISQhhbJENZKpMeOiqXlaJs3jUWOaMRVa6JpJGCPVpTmNqBA1obGUfY2I7Ftk3zs8Pt/mf899jnM6i7Pct/v9u6773P/7v/7+r1/Xc43P81tS207tmkipa0r1C38XHY/kuiavf27UVV5BCf7bTF4vHU++T3VNvi+l84J7B+cG3+HnBvvC7xnsS+k87dP/BzEoN/3vp9b9lnpWsVR8sCvLvmfM32Tli+WxwT1qZdk9uRECCCCAAAIIIIDAxQL0sLnYhD1RKhD8w07VD9+O0teh2ggggECmBTo0KWdfbNqX5YHN6bPnbOeeQ3Z3sxqZrhsXIoAAAggggAACCKRPgFWi0ufEWQgggAACCESNQKdrS9nS1TtM881kZflk0dd2dYUi1rru913Ms/Le3AsBBBBAAAEEEEAgqQCBTVIPfiGAAAIIIBD1AnUrFbX/6V7blqzdmWXvsmX3EVt+4X53Ny+bZffkRggggAACCCCAAAKpCxDYpG7DEQQQQCDHBRITE+3IkSM5/tzseODhw4eTzOmSHc/gnqkL3NOivH21Zb8tXb8n9ZPSceT46e9Mn7feX2HdbqpqTWt+vzpUOi7lFAQQQAABBBBAAIFLECCwuQQ8LkUAAQSyUmD58uV23XXXWc+ePbPytpm619GjR23UqFF24sSJTF2v4Ommm26yG2+80TZv3pype3DRpQuM6lffZn66wd678FHoktGisOflCQv807V1VRt4e7WM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" + } + }, + "cell_type": "markdown", + "id": "251feeea-c9a0-404a-8b55-bef3020bb5e2", + "metadata": {}, + "source": [ + "## Nodes and Edges\n", + "\n", + "Each `node` will simply modify the `state`.\n", + "\n", + "Each `edge` will choose which `node` to call next.\n", + "\n", + "We can lay out `self-RAG` as a graph.\n", + "\n", + "Here is our graph flow:\n", + "\n", + "![Screenshot 2024-02-02 at 9.01.01 PM.png](attachment:e61fbd0c-e667-4160-a96c-82f95a560b44.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "add509d8-6682-4127-8d95-13dd37d79702", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import operator\n", + "from typing import Annotated, Sequence, TypedDict\n", + "\n", + "from langchain import hub\n", + "from langchain.output_parsers.openai_tools import PydanticToolsParser\n", + "from langchain.prompts import PromptTemplate\n", + "from langchain_community.vectorstores import Chroma\n", + "from langchain_core.messages import BaseMessage, FunctionMessage\n", + "from langchain_core.output_parsers import StrOutputParser\n", + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "from langchain_core.runnables import RunnablePassthrough\n", + "from langchain_core.utils.function_calling import convert_to_openai_tool\n", + "from langchain_openai import ChatOpenAI, OpenAIEmbeddings\n", + "\n", + "### Nodes ###\n", + "\n", + "\n", + "def retrieve(state):\n", + " \"\"\"\n", + " Retrieve documents\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): New key added to state, documents, that contains retrieved documents\n", + " \"\"\"\n", + " print(\"---RETRIEVE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = retriever.get_relevant_documents(question)\n", + " return {\"keys\": {\"documents\": documents, \"question\": question}}\n", + "\n", + "\n", + "def generate(state):\n", + " \"\"\"\n", + " Generate answer\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): New key added to state, generation, that contains LLM generation\n", + " \"\"\"\n", + " print(\"---GENERATE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + "\n", + " # Prompt\n", + " prompt = hub.pull(\"rlm/rag-prompt\")\n", + "\n", + " # LLM\n", + " llm = ChatOpenAI(model_name=\"gpt-3.5-turbo\", temperature=0)\n", + "\n", + " # Post-processing\n", + " def format_docs(docs):\n", + " return \"\\n\\n\".join(doc.page_content for doc in docs)\n", + "\n", + " # Chain\n", + " rag_chain = prompt | llm | StrOutputParser()\n", + "\n", + " # Run\n", + " generation = rag_chain.invoke({\"context\": documents, \"question\": question})\n", + " return {\n", + " \"keys\": {\"documents\": documents, \"question\": question, \"generation\": generation}\n", + " }\n", + "\n", + "\n", + "def grade_documents(state):\n", + " \"\"\"\n", + " Determines whether the retrieved documents are relevant to the question.\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): Updates documents key with relevant documents\n", + " \"\"\"\n", + "\n", + " print(\"---CHECK RELEVANCE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + "\n", + " # Data model\n", + " class grade(BaseModel):\n", + " \"\"\"Binary score for relevance check.\"\"\"\n", + "\n", + " binary_score: str = Field(description=\"Relevance score 'yes' or 'no'\")\n", + "\n", + " # LLM\n", + " model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\", streaming=True)\n", + "\n", + " # Tool\n", + " grade_tool_oai = convert_to_openai_tool(grade)\n", + "\n", + " # LLM with tool and enforce invocation\n", + " llm_with_tool = model.bind(\n", + " tools=[grade_tool_oai],\n", + " tool_choice={\"type\": \"function\", \"function\": {\"name\": \"grade\"}},\n", + " )\n", + "\n", + " # Parser\n", + " parser_tool = PydanticToolsParser(tools=[grade])\n", + "\n", + " # Prompt\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are a grader assessing relevance of a retrieved document to a user question. \\n \n", + " Here is the retrieved document: \\n\\n {context} \\n\\n\n", + " Here is the user question: {question} \\n\n", + " If the document contains keyword(s) or semantic meaning related to the user question, grade it as relevant. \\n\n", + " Give a binary score 'yes' or 'no' score to indicate whether the document is relevant to the question.\"\"\",\n", + " input_variables=[\"context\", \"question\"],\n", + " )\n", + "\n", + " # Chain\n", + " chain = prompt | llm_with_tool | parser_tool\n", + "\n", + " # Score\n", + " filtered_docs = []\n", + " for d in documents:\n", + " score = chain.invoke({\"question\": question, \"context\": d.page_content})\n", + " grade = score[0].binary_score\n", + " if grade == \"yes\":\n", + " print(\"---GRADE: DOCUMENT RELEVANT---\")\n", + " filtered_docs.append(d)\n", + " else:\n", + " print(\"---GRADE: DOCUMENT NOT RELEVANT---\")\n", + " continue\n", + "\n", + " return {\"keys\": {\"documents\": filtered_docs, \"question\": question}}\n", + "\n", + "\n", + "def transform_query(state):\n", + " \"\"\"\n", + " Transform the query to produce a better question.\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): Updates question key with a re-phrased question\n", + " \"\"\"\n", + "\n", + " print(\"---TRANSFORM QUERY---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + "\n", + " # Create a prompt template with format instructions and the query\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are generating questions that is well optimized for retrieval. \\n \n", + " Look at the input and try to reason about the underlying sematic intent / meaning. \\n \n", + " Here is the initial question:\n", + " \\n ------- \\n\n", + " {question} \n", + " \\n ------- \\n\n", + " Formulate an improved question: \"\"\",\n", + " input_variables=[\"question\"],\n", + " )\n", + "\n", + " # Grader\n", + " model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\", streaming=True)\n", + "\n", + " # Prompt\n", + " chain = prompt | model | StrOutputParser()\n", + " better_question = chain.invoke({\"question\": question})\n", + "\n", + " return {\"keys\": {\"documents\": documents, \"question\": better_question}}\n", + "\n", + "\n", + "def prepare_for_final_grade(state):\n", + " \"\"\"\n", + " Passthrough state for final grade.\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): The current graph state\n", + " \"\"\"\n", + "\n", + " print(\"---FINAL GRADE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + " generation = state_dict[\"generation\"]\n", + "\n", + " return {\n", + " \"keys\": {\"documents\": documents, \"question\": question, \"generation\": generation}\n", + " }\n", + "\n", + "\n", + "### Edges ###\n", + "\n", + "\n", + "def decide_to_generate(state):\n", + " \"\"\"\n", + " Determines whether to generate an answer, or re-generate a question.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " str: Next node to call\n", + " \"\"\"\n", + "\n", + " print(\"---DECIDE TO GENERATE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " filtered_documents = state_dict[\"documents\"]\n", + "\n", + " if not filtered_documents:\n", + " # All documents have been filtered check_relevance\n", + " # We will re-generate a new query\n", + " print(\"---DECISION: TRANSFORM QUERY---\")\n", + " return \"transform_query\"\n", + " else:\n", + " # We have relevant documents, so generate answer\n", + " print(\"---DECISION: GENERATE---\")\n", + " return \"generate\"\n", + "\n", + "\n", + "def grade_generation_v_documents(state):\n", + " \"\"\"\n", + " Determines whether the generation is grounded in the document.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " str: Binary decision\n", + " \"\"\"\n", + "\n", + " print(\"---GRADE GENERATION vs DOCUMENTS---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + " generation = state_dict[\"generation\"]\n", + "\n", + " # Data model\n", + " class grade(BaseModel):\n", + " \"\"\"Binary score for relevance check.\"\"\"\n", + "\n", + " binary_score: str = Field(description=\"Supported score 'yes' or 'no'\")\n", + "\n", + " # LLM\n", + " model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\", streaming=True)\n", + "\n", + " # Tool\n", + " grade_tool_oai = convert_to_openai_tool(grade)\n", + "\n", + " # LLM with tool and enforce invocation\n", + " llm_with_tool = model.bind(\n", + " tools=[grade_tool_oai],\n", + " tool_choice={\"type\": \"function\", \"function\": {\"name\": \"grade\"}},\n", + " )\n", + "\n", + " # Parser\n", + " parser_tool = PydanticToolsParser(tools=[grade])\n", + "\n", + " # Prompt\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are a grader assessing whether an answer is grounded in / supported by a set of facts. \\n \n", + " Here are the facts:\n", + " \\n ------- \\n\n", + " {documents} \n", + " \\n ------- \\n\n", + " Here is the answer: {generation}\n", + " Give a binary score 'yes' or 'no' to indicate whether the answer is grounded in / supported by a set of facts.\"\"\",\n", + " input_variables=[\"generation\", \"documents\"],\n", + " )\n", + "\n", + " # Chain\n", + " chain = prompt | llm_with_tool | parser_tool\n", + "\n", + " score = chain.invoke({\"generation\": generation, \"documents\": documents})\n", + " grade = score[0].binary_score\n", + "\n", + " if grade == \"yes\":\n", + " print(\"---DECISION: SUPPORTED, MOVE TO FINAL GRADE---\")\n", + " return \"supported\"\n", + " else:\n", + " print(\"---DECISION: NOT SUPPORTED, GENERATE AGAIN---\")\n", + " return \"not supported\"\n", + "\n", + "\n", + "def grade_generation_v_question(state):\n", + " \"\"\"\n", + " Determines whether the generation addresses the question.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " str: Binary decision\n", + " \"\"\"\n", + "\n", + " print(\"---GRADE GENERATION vs QUESTION---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + " generation = state_dict[\"generation\"]\n", + "\n", + " # Data model\n", + " class grade(BaseModel):\n", + " \"\"\"Binary score for relevance check.\"\"\"\n", + "\n", + " binary_score: str = Field(description=\"Useful score 'yes' or 'no'\")\n", + "\n", + " # LLM\n", + " model = ChatOpenAI(temperature=0, model=\"gpt-4-0125-preview\", streaming=True)\n", + "\n", + " # Tool\n", + " grade_tool_oai = convert_to_openai_tool(grade)\n", + "\n", + " # LLM with tool and enforce invocation\n", + " llm_with_tool = model.bind(\n", + " tools=[grade_tool_oai],\n", + " tool_choice={\"type\": \"function\", \"function\": {\"name\": \"grade\"}},\n", + " )\n", + "\n", + " # Parser\n", + " parser_tool = PydanticToolsParser(tools=[grade])\n", + "\n", + " # Prompt\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are a grader assessing whether an answer is useful to resolve a question. \\n \n", + " Here is the answer:\n", + " \\n ------- \\n\n", + " {generation} \n", + " \\n ------- \\n\n", + " Here is the question: {question}\n", + " Give a binary score 'yes' or 'no' to indicate whether the answer is useful to resolve a question.\"\"\",\n", + " input_variables=[\"generation\", \"question\"],\n", + " )\n", + "\n", + " # Prompt\n", + " chain = prompt | llm_with_tool | parser_tool\n", + "\n", + " score = chain.invoke({\"generation\": generation, \"question\": question})\n", + " grade = score[0].binary_score\n", + "\n", + " if grade == \"yes\":\n", + " print(\"---DECISION: USEFUL---\")\n", + " return \"useful\"\n", + " else:\n", + " print(\"---DECISION: NOT USEFUL---\")\n", + " return \"not useful\"" + ] + }, + { + "cell_type": "markdown", + "id": "61cd5797-1782-4d78-a277-8196d13f3e1b", + "metadata": {}, + "source": [ + "## Build Graph\n", + "\n", + "The just follows the flow we outlined in the figure above." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "0e09ca9f-e36d-4ef4-a0d5-79fdbada9fe0", + "metadata": {}, + "outputs": [], + "source": [ + "import pprint\n", + "\n", + "from langgraph.graph import END, StateGraph\n", + "\n", + "workflow = StateGraph(GraphState)\n", + "\n", + "# Define the nodes\n", + "workflow.add_node(\"retrieve\", retrieve) # retrieve\n", + "workflow.add_node(\"grade_documents\", grade_documents) # grade documents\n", + "workflow.add_node(\"generate\", generate) # generatae\n", + "workflow.add_node(\"transform_query\", transform_query) # transform_query\n", + "workflow.add_node(\"prepare_for_final_grade\", prepare_for_final_grade) # passthrough\n", + "\n", + "# Build graph\n", + "workflow.set_entry_point(\"retrieve\")\n", + "workflow.add_edge(\"retrieve\", \"grade_documents\")\n", + "workflow.add_conditional_edges(\n", + " \"grade_documents\",\n", + " decide_to_generate,\n", + " {\n", + " \"transform_query\": \"transform_query\",\n", + " \"generate\": \"generate\",\n", + " },\n", + ")\n", + "workflow.add_edge(\"transform_query\", \"retrieve\")\n", + "workflow.add_conditional_edges(\n", + " \"generate\",\n", + " grade_generation_v_documents,\n", + " {\n", + " \"supported\": \"prepare_for_final_grade\",\n", + " \"not supported\": \"generate\",\n", + " },\n", + ")\n", + "workflow.add_conditional_edges(\n", + " \"prepare_for_final_grade\",\n", + " grade_generation_v_question,\n", + " {\n", + " \"useful\": END,\n", + " \"not useful\": \"transform_query\",\n", + " },\n", + ")\n", + "\n", + "# Compile\n", + "app = workflow.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "fb69dbb9-91ee-4868-8c3c-93af3cd885be", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---RETRIEVE---\n", + "\"Node 'retrieve':\"\n", + "'\\n---\\n'\n", + "---CHECK RELEVANCE---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "\"Node 'grade_documents':\"\n", + "'\\n---\\n'\n", + "---DECIDE TO GENERATE---\n", + "---DECISION: GENERATE---\n", + "---GENERATE---\n", + "\"Node 'generate':\"\n", + "'\\n---\\n'\n", + "---GRADE GENERATION vs DOCUMENTS---\n", + "---DECISION: SUPPORTED, MOVE TO FINAL GRADE---\n", + "---FINAL GRADE---\n", + "\"Node 'prepare_for_final_grade':\"\n", + "'\\n---\\n'\n", + "---GRADE GENERATION vs QUESTION---\n", + "---DECISION: USEFUL---\n", + "\"Node '__end__':\"\n", + "'\\n---\\n'\n", + "('Short-term memory stores information needed for immediate cognitive tasks '\n", + " 'and lasts for about 20-30 seconds. Long-term memory can retain information '\n", + " 'for extended periods, with subtypes including explicit (facts and events) '\n", + " 'and implicit (skills and routines) memory. Sensory memory retains sensory '\n", + " 'impressions briefly after stimuli end, while long-term memory stores '\n", + " 'information for a long time.')\n" + ] + } + ], + "source": [ + "# Run\n", + "inputs = {\"keys\": {\"question\": \"Explain how the different types of agent memory work?\"}}\n", + "for output in app.stream(inputs):\n", + " for key, value in output.items():\n", + " # Node\n", + " pprint.pprint(f\"Node '{key}':\")\n", + " # Optional: print full state at each node\n", + " # pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")\n", + "\n", + "# Final generation\n", + "pprint.pprint(value[\"keys\"][\"generation\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "4138bc51-8c84-4b8a-8d24-f7f470721f6f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---RETRIEVE---\n", + "\"Node 'retrieve':\"\n", + "'\\n---\\n'\n", + "---CHECK RELEVANCE---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "\"Node 'grade_documents':\"\n", + "'\\n---\\n'\n", + "---DECIDE TO GENERATE---\n", + "---DECISION: GENERATE---\n", + "---GENERATE---\n", + "\"Node 'generate':\"\n", + "'\\n---\\n'\n", + "---GRADE GENERATION vs DOCUMENTS---\n", + "---DECISION: SUPPORTED, MOVE TO FINAL GRADE---\n", + "---FINAL GRADE---\n", + "\"Node 'prepare_for_final_grade':\"\n", + "'\\n---\\n'\n", + "---GRADE GENERATION vs QUESTION---\n", + "---DECISION: USEFUL---\n", + "\"Node '__end__':\"\n", + "'\\n---\\n'\n", + "('Chain of thought prompting works by providing a series of prompts or '\n", + " 'demonstrations to guide the model through a reasoning process. This method '\n", + " 'involves iteratively constructing thought processes by asking follow-up '\n", + " 'questions or exploring multiple reasoning possibilities at each step. '\n", + " 'External search queries and relevant content from sources like Wikipedia can '\n", + " \"be integrated into the context to enhance the model's understanding.\")\n" + ] + } + ], + "source": [ + "inputs = {\"keys\": {\"question\": \"Explain how chain of thought prompting works?\"}}\n", + "for output in app.stream(inputs):\n", + " for key, value in output.items():\n", + " # Node\n", + " pprint.pprint(f\"Node '{key}':\")\n", + " # Optional: print full state at each node\n", + " # pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")\n", + "\n", + "# Final generation\n", + "pprint.pprint(value[\"keys\"][\"generation\"])" + ] + }, + { + "cell_type": "markdown", + "id": "548f1c5b-4108-4aae-8abb-ec171b511b92", + "metadata": {}, + "source": [ + "LangSmith Traces - \n", + " \n", + "* https://smith.langchain.com/public/55d6180f-aab8-42bc-8799-dadce6247d9b/r\n", + "\n", + "* https://smith.langchain.com/public/f85ebc95-81d9-47fc-91c6-b54e5b78f359/r" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/rag/langgraph_self_rag_mistral_nomic.ipynb b/examples/rag/langgraph_self_rag_mistral_nomic.ipynb new file mode 100644 index 000000000..d23c73d9d --- /dev/null +++ b/examples/rag/langgraph_self_rag_mistral_nomic.ipynb @@ -0,0 +1,712 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "a1908e8c-5970-4d9d-bc2b-d5fee7aa3baa", + "metadata": {}, + "outputs": [], + "source": [ + "! pip install -U llama-cpp-python langchain-nomic langchain_community tiktoken langchainhub chromadb langchain langgraph" + ] + }, + { + "attachments": { + "e3e60bc2-6033-4d66-af6d-1dfafce5cb9f.png": { + "image/png": "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TP2MWy2pMLkCjU64K+673/2uiU08aC3Bz372s8H5pHNyq6XJu1yEiPLy8gzXh3Jh+f73v9+WL18+VLzWGFO5v/zlL+3SSy8dip/KHYmCX/rSl+zlL395cI0l6D7xxBPW1taW0QwJvZqATrpWBx54YEZ6RWiSWFzjQS7UXvaylwXr2MXXUAvT6r6SSBLeX2H8aNskaxXxFWdd5zCoXInb3/zmN200d7hhnkLeau3Q//iP/8jo4ne+852MuLvvvjsj7qijjsqIS4pQPXHXoLfddltGUlkWa9xICroH9Tzp+snFafy5zAfLqbjbz7///e9DXdl1112H9qMC4Z133jkUr53ouWEnpvggPo6qeo2luj4SfeLuecVfbjAlHs+EoLFkPN+3yhMV/eIWmWL3xS9+MfjuiXPUur1vf/vbM9b7VTq1R9a3U/0caM3Zj370o/Gm2rve9a7g87vf/S7jWdULKZ/61KfspptuysiXLWK6jg076jeJOGot4N/85jfDvgMVr+96jaXxl7z0Mo/WsSRAAAIQgAAEIAABCGw/gSL/B+vIfhu2vw5KgAAEIAABCEBghhGQlc073/nOCem13EDefPPNGWVpgve4447LiM8lQpNLEnfia71F82pS+bWvfW0g/kXj4/uhmCBxJz7hKYEtXse5554bTITFy5FLNvVVk6dPPvlkMKEbptEEuNx8JVk7Ks1Xv/pVe8tb3hImT9xedNFFiQKjEouH+hF31aV2VFRUJJY3WZEf+chH7Le//W1i8WqnRAlN9GpyP5t4p75oXTgJgElBViCaXJRbyZGC1hpU/1tbW4exkdD8tre9baSsw86pnS960YuGxUUPwnso2p+Pfexjds4550STZd2Pr7F50kknWT5aTcnyLzrRfuyxxwYibNaO+QmJFG94wxsykkgEjLqSe8973pMhxEuEKCsry8ibFCEXotdff/2wU0nPr8YFuTWNut4clmnbge5VPc+9vb1Z79WxWMMm1THWuAsvvDArb4nxoWioFx5e/epXJxYvQShpbJfrzmyW12FB8fFR8eKUFG6//XZLcnscptU4qfsnqcwwTdJz9aY3vSnRkk1jX9xCfLRnMInT+eefb7oXpzroJZnR7slc2yRX21EXofvvv38iZ7HUizUtLS0mV4/RtQf1Usajjz6aWKWu+f/+7/8Gz0eYQONjdPzTWrvx5zFM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UIACFKAABShAAQpQgAIU0J+rlGgjBAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUo0HAFOHxow/1s+WQUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIUMAIMBflFoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQpQgAIHEXjsscckOTlZhg8fLosWLTrI0dxNAf8T4PCh/veZsEcUoAAFKEABClCAAhSgAAUoQAEKUIACFKAABShAAQr4kcCCBQvkvPPOc3o0bNgwefHFF511LlCgPgiwUrA+fErsIwUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCAAnUm4F0ZWFxcXGd94Y0pUFUBhoJVleN5FKAABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQAEKNAqBefPmeTxnUlKSxzpXKFAfBBgK1odPiX2kAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABClCgTgR27dolS5Ys8bh3YmKixzpXKFAfBBgK1odPiX2kAAUoQAEKUIACFKAABShAAQpQgAIUoAAFKEABCtSxwA8//CB79uyp417U/u3/7//+r9RN4+PjS23jBgr4u0Cwv3eQ/aMABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQIHGI1BUVCTnnXeeZGZmymGHHSYPPvigz4dHOHXRRRcJ5nYbMWKE3HTTTT6P48bqEzj33HPNxY4++mgZPny4DBo0SHr16lV9N/DDK6Wnp8szzzxTqmdxcXGltnEDBfxdgJWC/v4JsX8UoAAFKEABClCAAhSgAAUoQAEKUIACFKAABRqRQHBwsAwcOFBWrlwpb775pixfvtzn07/44ovy+++/m+NOPvlkn8dwY/UKwPz000+XH3/8Ue677z459dRT5cwzz5Snn35a1q9fX70385OrPfXUU5KdnV2qNzExMaW2cQMF/F0goESbv3eS/aMABShAAQpQgAIUoAAFKEABClCAAhSgAAUoQIHGI7Bv3z5ThYYwZtSoUTJjxgyPh09LSzNVhNh42mmnCYIbttoTWLp0qcyfP1++++47wZCitqFic+TIkaaKsCHMuYfQGd8/X+2FF16QE0880dcubqOA3wowFPTbj4YdowAFKEABClCAAhSgAAUoQAEKUIACFKAABSjQeAWeeOIJefjhhw3A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IAACIAACIAACIAACIAACIAACIAACIBAHgeXLl6uC4KuvvgpBMA5WOAUCIBA3gT179pCfn5/s9PTpUypZsiRduHAh7otwFgRAAARAwOEIQBR0uFuKDYEACIAACIAACIAACIAACIAACIAACNg7gdWrV9NHH30kt1G1alX6448/7H1LWD8IgEAqE/j333+pUKFC6ioaNGhA27ZtU+sogAAIgAAIOD4BiIKOf4+xQxAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAgXROAKJgOn8DYPsgAAIgAAIgAAIgAAIgAAIgAAIgAAJpi8CmTZuob9++clEVK1akxYsXp60FYjUgAAJ2S4A9A4sWLaquv1u3bjR//ny1jgIIgAAIgIBjE8jwnzDH3iJ2BwIgAAIgAAIgAAIgAAIgAAIgAAIgAAL2QWDHjh3UpUsXudhy5crR33//bR8LxypBAATsikDjxo3pzJkz6pr79etHn332mVpHAQRAAARAwDEJQBR0zPuKXYEACIAACIAACIAACIAACIAACIAACNgZgT179lDHjh3lqkuVKkWcVxAGAiAAAslF4I033qCTJ0+qw7dq1Yq+//57tY4CCIAACICA4xGAKOh49xQ7AgEQAAEQAAEQAAEQAAEQAAEQAAEQsDMCWkGwRIkStH79ejvbAZYLAiBgjwRatmxJR44cUZdeuXJlWrJkiVpHAQRAAARAwLEIQBR0rPuJ3YAACIAACIAACIAACIAACIAACIAACNgZAa0g6O/vT1u2bLGzHWC5IAAC9kygTZs2dPDgQXUL+fLlI/5egoEACIAACDgegYyOtyXsCARAAARAAARAAARAAARAAARAAARAAATsg4BWECxYsCAEQfu4bVglCDgUgaVLl1LVqlXVPYWEhBB/H925c0dti6/AfTt16kSbN2+OryvOgwAIgAAIpCIBiIKpCB9TgwAIgAAIgAAIgAAIgAAIgAAIgAAIpF8Cu3fvVnMI+vj40Pbt29MvDOwcBEAgVQksXryYGjRooFtDhQoV6NixY7o2SxXux99pQ4cOpQcPHljqhnYQAAEQAIFUJgBRMJVvAKYHARAAARAAARAAARAAARAAARAAARBIfwT44Tl71bDlyZOHduzYkf4gYMcgAAJpisCvv/5Kbdu21a2pefPmtHr1al2buUrdunWJX8HBwfTFF1+Y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EEAAgWQV4BswWc887UYAgYQSeOyxx5z22ItcZwULCCCAAAIIBAm8//77Zl5BDfLl5uaa3oI33XSTvPLKK0F77v947rnnmoWXXnop5HZWIoAAAggggAACCCDgFwF6CvrlTFFPBBCIhQBBwViokicCCCBQiQJvvfWWfPPNN06JOmcUCQEEEEAAgXACr732mpxxxhkyadIkmTVrltx2221yyy23mKFFg4/t2LGj9O/fX3T40bJ6FAYfx2cEEEAAAQQQQAABBLwiYB+iJijolTNCPRBAIB4CBAXjoU6ZCCCAQBQFPvroowNyIyh4AAcfEEAAAQTKEHjqqafkggsukKlTp4r+Phk9erTccccd8p///Oegoy688EKzjqDgQTSsQAABBBBAAAEEEPCBAEFBH5wkqogAAjEXqBbzEigAAQQQQCBmAitXrjRzPLkL0KDgli1bpGHDhu7VLCOAAAIIIBBS4P7775f69eubQGBBQYE888wzcuWVV8revXvl6quvdo459dRTpU+fPqJzEmpg0AYJnR1YQAABBBBAAAEEEEAAAQQQQAABTwvQU9DTp4fKIYAAAmULTJkyxezwm9/8xtlxz5498umnnzqfWUAAAQQQQCCcwM033yx//etfZf78+aa34MsvvywaLHz88ccPOHTo0KHmM70FD2DhAwIIIIAAAggggIAPBOgp6IOTRBURQCDmAgQFY05MAQgggEDsBL744guTufbecKfPPvvM/ZFlBBBAAAEEwgr86U9/Eg0OLlu2TP75z3/KuHHj5KGHHjIve/DZZ58t3bt3l3nz5jG3oEXhHQEEEEAAAQQQQMAXAnYuwZQUbon74oRRSQQQiIkA34AxYSVTBBBAIPYCubm5ztCh/fv3dwps166d6SmYk5PjrGMBAQQQQACBSAT+8Ic/yF133SX6O+S6664z8wxqb8H77rvPOZzegg4FCwgggAACCCCAAAI+EqCnoI9OFlVFAIGYCRAUjBktGSOAAAKxFZg+fbopoG/fvtKmTRunsI4dO8q+ffvMjVxnJQsIIIAAAghEKHDppZfKgw8+KOvWrZOLL75YvvrqK3nqqadMsFCzOP/886Vr1670FozQk90QQAABBBBAAAEEvCVgewx6q1bUBgEEEKgcAYKCleNMKQgggEDUBWbMmGHyPPnkk817jRo1zHvnzp3l8MMPlwkTJkS9TDJE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zAaSWiP0UJ8btu6U1eu2y4bNOyQ/f89BeWgw8JxeLeS8npnSuH7Ng7azAgEEEEAAAQQQQAABBBBAoPIFCApWvjklIoAAAggggAACCCCAAAKeECgrOHgoFSQYeChqHIMAAggggAACCCCAAAIIVI4AQcHKcaYUBBBAAAEEEEAAAQQQQMCzAhocfP+7dTJj4WZZv/ngnn/hKt6yaR3pf1wTegaGg2I7AggggAACCCCAAAIIIBBHAYKCccSnaAQQQAABBBBAAAEEEEDAawIzl22VL+Zvkk9nbZD8ncUhq5dWr7oc366hHN+mgXTOSpM2zeuG3I+VCCCAAAIIIIAAAggggAAC3hEgKOidc0FNEEAAAQQQQAABBBBAAAFPCRQW/yy7i/bK7sJ9UlAYWC7cG5hnsKq0bUEQ0FMnisoggAACCCCAAAIIIIAAAhEIEBSMAIldEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEPCzQIqfK0/dEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgvABBwfBG7IEAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICArwUICvr69FF5BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBMILEBQMb8QeCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCPhagKCgr08flUcAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgvABBwfBG7IEAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICArwUICvr69FF5BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBMILEBQMb8QeCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCPhagKCgr08flUcAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgvABBwfBG7IEAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICArwUICvr69FF5BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBMILEBQMb8QeCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCPhagKCgr08flUcAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgvABBwfBG7IEAAggggAAC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IIAAAggggAACCCCAAAIIIIAAAggggIDnBQgKen6I6CACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAC7gQICrrzozUCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACnhcgKOj5IaKDCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCLgTICjozo/WCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCHhegKCg54eIDiKAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCDgToCgoDs/WiOAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCDgeQGCgp4fIjqIAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAgDsBgoLu/GiNAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAgOcFCAp6fojoIAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALuBAgKuvOjNQIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAKeFyAo6PkhooMIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIuBMgKOjOj9YIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIeF6AoKDnh4gOIoAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIOBOgKCgOz9aI4AAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIOB5AYKCnh8iOogAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAOwGCgu78aI0AAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICA5wUICnp+iOggAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAu4ECAq686M1AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAp4XICjo+SGigwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgi4EyAo6M6P1ggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgh4XoCgoOeHiA4igAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggg4E6AoKA7P1ojgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggg4HkBgoKeHyI6iAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggIA7AYKC7vxojQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggIDnBQgKen6I6CACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAC7gQICrrzozUCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACnhcgKOj5IaKDCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCLgTICjozo/WCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCHhegKCg54eIDiKAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCDgToCgoDs/WiOAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCDgeQGCgp4fIjqIAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAgDsBgoLu/GiNAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAgOcFCAp6fojoIAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALuBAgKuvOjNQIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAKeFyAo6PkhooMIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIuBMgKOjOj9YIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIeF6AoKDnh4gOIoAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIOBOgKCgOz9aI4AAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIOB5AYKCnh8iOogAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAOwGCgu78aI0AAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICA5wUICnp+iOggAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAu4ECAq686M1AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAp4XICjo+SGigwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgi4EyAo6M6P1ggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgh4XoCgoOeHiA4igAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggg4E6AoKA7P1ojgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggg4HkBgoKeHyI6iAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggIA7AYKC7vxojQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggIDnBQgKen6I6CACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAC7gQICrrzozUCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACnhcgKOj5IaKDCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCLgTICjozo/WCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCHhegKCg54eIDiKAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCDgToCgoDs/WiOAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCDgeQGCgp4fIjqIAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAgDsBgoLu/GiNAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAgOcFCAp6fojoIAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALuBAgKuvOjNQIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAKeFyAo6PkhooMIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIuBMgKOjOj9YIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIeF6AoKDnh4gOIoAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIOBOgKCgOz9aI4AAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIOB5AYKCnh8iOogAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICAOwGCgu78aI0AAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIICA5wUICnp+iOggAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAu4ECAq686M1AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAp4XICjo+SGigwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgi4EyAo6M6P1ggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgh4XoCgoOeHiA4igAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggg4E7g/wOegdq2hYwWWwAAAABJRU5ErkJggg==" + } + }, + "cell_type": "markdown", + "id": "848ba742-7443-4123-8115-061da9823309", + "metadata": {}, + "source": [ + "# Self RAG\n", + "\n", + "Self-reflection can enhance RAG, enabling correction of poor quality retrieval or generations.\n", + "\n", + "Several recent papers focus on this theme, but implementing the ideas can be tricky.\n", + "\n", + "Here we show how to implement self-reflective RAG using `Nomic`, `Mistral`, and `LangGraph`.\n", + "\n", + "We'll focus on ideas from one paper, `Self RAG` [here](https://arxiv.org/abs/2310.11511).\n", + "\n", + "This can run fully locally (e.g., on a laptop).\n", + "\n", + "![Screenshot 2024-02-15 at 3.33.46 PM.png](attachment:e3e60bc2-6033-4d66-af6d-1dfafce5cb9f.png)\n", + "\n", + "### Embeddings\n", + "\n", + "We'll use Nomic's recently released [v1](https://blog.nomic.ai/posts/nomic-embed-text-v1) and [v1.5](https://blog.nomic.ai/posts/nomic-embed-matryoshka) embeddings.\n", + "\n", + "Simply: \n", + "\n", + "(1) Clone [`llama.cpp`](https://github.com/ggerganov/llama.cpp):\n", + "\n", + "```\n", + "git clone https://github.com/ggerganov/llama.cpp\n", + "```\n", + "\n", + "(2) Download GGUF weights for Nomic's embedding model(s), allowing them to be run locally: \n", + "\n", + "* https://huggingface.co/nomic-ai/nomic-embed-text-v1-GGUF\n", + "* https://huggingface.co/nomic-ai/nomic-embed-text-v1.5-GGUF\n", + "\n", + "(3) Add to `llama.cpp/model` directory.\n", + "\n", + "(4) Build llama.cpp:\n", + "```\n", + "cd llama.cpp\n", + "make\n", + "```\n", + "\n", + "### LLM\n", + "\n", + "(1) Download [Ollama app](https://ollama.ai/).\n", + "\n", + "(2) Download a `Mistral` model from various Mistral versions [here](https://ollama.ai/library/mistral) and Mixtral versions [here](https://ollama.ai/library/mixtral) available.\n", + "```\n", + "ollama pull mistral:instruct\n", + "```\n", + "\n", + "(3) Set `local_llm` to the model downloaded." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d35ebcdc-8510-4ce5-a0e9-8db714944c68", + "metadata": {}, + "outputs": [], + "source": [ + "! ollama pull mistral:instruct" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "32d50725-04c1-487c-89cc-a119ec708c17", + "metadata": {}, + "outputs": [], + "source": [ + "# Ollama model name\n", + "local_llm = \"mistral:instruct\"\n", + "\n", + "# Local embedding model paths (downloaded above)O\n", + "embd_model_path = \"/Users/rlm/Desktop/Code/llama.cpp/models/nomic-embd/nomic-embed-text-v1.Q4_K_S.gguf\"\n", + "# embd_model_path = \"/Users/rlm/Desktop/Code/llama.cpp/models/nomic-embd/nomic-embed-text-v1.f16.gguf\"\n", + "# embd_model_path = \"/Users/rlm/Desktop/Code/llama.cpp/models/nomic-embd/nomic-embed-text-v1.5.f16.gguf\"\n", + "# embd_model_path = \"/Users/rlm/Desktop/Code/llama.cpp/models/nomic-embd/nomic-embed-text-v1.5.Q4_K_S.gguf\"" + ] + }, + { + "cell_type": "markdown", + "id": "ba68a46d-b617-4fdc-9113-fabdcf736feb", + "metadata": {}, + "source": [ + "## Indexing\n", + "\n", + "First, let's index a popular blog post on agents. \n", + "\n", + "For local, we can use Nomic's recently released [v1](https://blog.nomic.ai/posts/nomic-embed-text-v1) and [v1.5](https://blog.nomic.ai/posts/nomic-embed-matryoshka) embeddings.\n", + "\n", + "We'll use the [llama.cpp](https://github.com/ggerganov/llama.cpp) integration.\n", + "\n", + "We'll use a local vectorstore, [Chroma](https://python.langchain.com/docs/integrations/vectorstores/chroma)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c3bb9060-ad74-4470-9991-2ba167b6b8d8", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain.text_splitter import RecursiveCharacterTextSplitter\n", + "from langchain_community.document_loaders import WebBaseLoader\n", + "from langchain_community.vectorstores import Chroma\n", + "from langchain_community.embeddings import LlamaCppEmbeddings\n", + "from langchain_nomic.embeddings import NomicEmbeddings\n", + "\n", + "# Load\n", + "url = \"https://lilianweng.github.io/posts/2023-06-23-agent/\"\n", + "loader = WebBaseLoader(url)\n", + "docs = loader.load()\n", + "\n", + "# Split\n", + "text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(\n", + " chunk_size=500, chunk_overlap=100\n", + ")\n", + "all_splits = text_splitter.split_documents(docs)\n", + "\n", + "# Embed and index\n", + "embedding = LlamaCppEmbeddings(model_path=embd_model_path, n_batch=512)\n", + "\n", + "# Index\n", + "vectorstore = Chroma.from_documents(\n", + " documents=all_splits,\n", + " collection_name=\"rag-chroma\",\n", + " embedding=embedding,\n", + ")\n", + "retriever = vectorstore.as_retriever()" + ] + }, + { + "cell_type": "markdown", + "id": "3d3339b9-5f30-4d54-bfc9-9091c6035955", + "metadata": {}, + "source": [ + "## State\n", + "\n", + "Every node in our graph will modify `state`, which is dict that contains values (`question`, `documents`, etc) relevant to RAG." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "90fb1dc6-c482-483a-8441-39965c401beb", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Dict, TypedDict\n", + "\n", + "from langchain_core.messages import BaseMessage\n", + "\n", + "\n", + "class GraphState(TypedDict):\n", + " \"\"\"\n", + " Represents the state of our graph.\n", + "\n", + " Attributes:\n", + " keys: A dictionary where each key is a string.\n", + " \"\"\"\n", + "\n", + " keys: Dict[str, any]" + ] + }, + { + "cell_type": "markdown", + "id": "b89b2f21-b6b3-42db-a826-ff9d9aaec443", + "metadata": {}, + "source": [ + "### Nodes and Edges\n", + "\n", + "Every node in the graph we laid out above is a function.\n", + "\n", + "Each node will modify the state in some way.\n", + "\n", + "Each edge will choose which node to call next." + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "5324ea49-5745-47b5-a0a5-bf58c8babe46", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import operator\n", + "from typing import Annotated, Sequence, TypedDict\n", + "\n", + "from langchain import hub\n", + "from langchain.prompts import PromptTemplate\n", + "from langchain_community.vectorstores import Chroma\n", + "from langchain_core.messages import BaseMessage, FunctionMessage\n", + "from langchain_core.output_parsers import StrOutputParser\n", + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "from langchain_core.runnables import RunnablePassthrough\n", + "from langchain_community.chat_models import ChatOllama\n", + "from langchain_core.output_parsers import JsonOutputParser\n", + "\n", + "### Nodes ###\n", + "\n", + "\n", + "def retrieve(state):\n", + " \"\"\"\n", + " Retrieve documents\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): New key added to state, documents, that contains retrieved documents\n", + " \"\"\"\n", + " print(\"---RETRIEVE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = retriever.get_relevant_documents(question)\n", + " return {\"keys\": {\"documents\": documents, \"question\": question}}\n", + "\n", + "\n", + "def generate(state):\n", + " \"\"\"\n", + " Generate answer\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): New key added to state, generation, that contains LLM generation\n", + " \"\"\"\n", + " print(\"---GENERATE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + "\n", + " # Prompt\n", + " prompt = hub.pull(\"rlm/rag-prompt\")\n", + "\n", + " # LLM\n", + " llm = ChatOllama(model=local_llm, temperature=0)\n", + "\n", + " # Post-processing\n", + " def format_docs(docs):\n", + " return \"\\n\\n\".join(doc.page_content for doc in docs)\n", + "\n", + " # Chain\n", + " rag_chain = prompt | llm | StrOutputParser()\n", + "\n", + " # Run\n", + " generation = rag_chain.invoke({\"context\": documents, \"question\": question})\n", + " return {\n", + " \"keys\": {\"documents\": documents, \"question\": question, \"generation\": generation}\n", + " }\n", + "\n", + "\n", + "def grade_documents(state):\n", + " \"\"\"\n", + " Determines whether the retrieved documents are relevant to the question.\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): Updates documents key with relevant documents\n", + " \"\"\"\n", + "\n", + " print(\"---CHECK RELEVANCE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + "\n", + " # LLM\n", + " llm = ChatOllama(model=local_llm, format=\"json\", temperature=0)\n", + "\n", + " # Prompt\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are a grader assessing relevance of a retrieved document to a user question. \\n \n", + " Here is the retrieved document: \\n\\n {context} \\n\\n\n", + " Here is the user question: {question} \\n\n", + " If the document contains keywords related to the user question, grade it as relevant. \\n\n", + " It does not need to be a stringent test. The goal is to filter out erroneous retrievals. \\n\n", + " Give a binary score 'yes' or 'no' score to indicate whether the document is relevant to the question. \\n\n", + " Provide the binary score as a JSON with a single key 'score' and no premable or explaination.\"\"\",\n", + " input_variables=[\"question\",\"context\"],\n", + " )\n", + "\n", + " # Chain\n", + " chain = prompt | llm | JsonOutputParser()\n", + "\n", + " # Score\n", + " filtered_docs = []\n", + " for d in documents:\n", + " score = chain.invoke(\n", + " {\n", + " \"question\": question,\n", + " \"context\": d.page_content,\n", + " }\n", + " )\n", + " grade = score[\"score\"]\n", + " if grade == \"yes\":\n", + " print(\"---GRADE: DOCUMENT RELEVANT---\")\n", + " filtered_docs.append(d)\n", + " else:\n", + " print(\"---GRADE: DOCUMENT NOT RELEVANT---\")\n", + " continue\n", + "\n", + " return {\"keys\": {\"documents\": filtered_docs, \"question\": question}}\n", + "\n", + "\n", + "def transform_query(state):\n", + " \"\"\"\n", + " Transform the query to produce a better question.\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): Updates question key with a re-phrased question\n", + " \"\"\"\n", + "\n", + " print(\"---TRANSFORM QUERY---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + "\n", + " # LLM\n", + " llm = ChatOllama(model=local_llm, temperature=0)\n", + " \n", + " # Create a prompt template with format instructions and the query\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are generating questions that is well optimized for retrieval. \\n \n", + " Look at the input and try to reason about the underlying sematic intent / meaning. \\n \n", + " Here is the initial question:\n", + " \\n ------- \\n\n", + " {question} \n", + " \\n ------- \\n\n", + " Formulate an improved question:\"\"\",\n", + " input_variables=[\"question\"],\n", + " )\n", + "\n", + " # Chain\n", + " chain = prompt | llm | StrOutputParser()\n", + " better_question = chain.invoke({\"question\": question})\n", + "\n", + " return {\"keys\": {\"documents\": documents, \"question\": better_question}}\n", + "\n", + "\n", + "def prepare_for_final_grade(state):\n", + " \"\"\"\n", + " Passthrough state for final grade.\n", + "\n", + " Args:\n", + " state (dict): The current graph state\n", + "\n", + " Returns:\n", + " state (dict): The current graph state\n", + " \"\"\"\n", + "\n", + " print(\"---FINAL GRADE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + " generation = state_dict[\"generation\"]\n", + "\n", + " return {\n", + " \"keys\": {\"documents\": documents, \"question\": question, \"generation\": generation}\n", + " }\n", + "\n", + "\n", + "### Edges ###\n", + "\n", + "\n", + "def decide_to_generate(state):\n", + " \"\"\"\n", + " Determines whether to generate an answer, or re-generate a question.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " str: Next node to call\n", + " \"\"\"\n", + "\n", + " print(\"---DECIDE TO GENERATE---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " filtered_documents = state_dict[\"documents\"]\n", + "\n", + " if not filtered_documents:\n", + " # All documents have been filtered check_relevance\n", + " # We will re-generate a new query\n", + " print(\"---DECISION: TRANSFORM QUERY---\")\n", + " return \"transform_query\"\n", + " else:\n", + " # We have relevant documents, so generate answer\n", + " print(\"---DECISION: GENERATE---\")\n", + " return \"generate\"\n", + "\n", + "\n", + "def grade_generation_v_documents(state):\n", + " \"\"\"\n", + " Determines whether the generation is grounded in the document.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " str: Binary decision\n", + " \"\"\"\n", + "\n", + " print(\"---GRADE GENERATION vs DOCUMENTS---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + " generation = state_dict[\"generation\"]\n", + "\n", + " # LLM\n", + " llm = ChatOllama(model=local_llm, format=\"json\", temperature=0)\n", + "\n", + " # Prompt\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are a grader assessing whether an answer is grounded in / supported by a set of facts. \\n \n", + " Here are the facts:\n", + " \\n ------- \\n\n", + " {documents} \n", + " \\n ------- \\n\n", + " Here is the answer: {generation}\n", + " Give a binary score 'yes' or 'no' score to indicate whether the answer is grounded in / supported by a set of facts. \\n\n", + " Provide the binary score as a JSON with a single key 'score' and no premable or explaination.\"\"\",\n", + " input_variables=[\"generation\", \"documents\"],\n", + " )\n", + "\n", + " # Chain\n", + " chain = prompt | llm | JsonOutputParser()\n", + " score = chain.invoke({\"generation\": generation, \"documents\": documents})\n", + " grade = score[\"score\"]\n", + "\n", + " if grade == \"yes\":\n", + " print(\"---DECISION: SUPPORTED, MOVE TO FINAL GRADE---\")\n", + " return \"supported\"\n", + " else:\n", + " print(\"---DECISION: NOT SUPPORTED, GENERATE AGAIN---\")\n", + " return \"not supported\"\n", + "\n", + "\n", + "def grade_generation_v_question(state):\n", + " \"\"\"\n", + " Determines whether the generation addresses the question.\n", + "\n", + " Args:\n", + " state (dict): The current state of the agent, including all keys.\n", + "\n", + " Returns:\n", + " str: Binary decision\n", + " \"\"\"\n", + "\n", + " print(\"---GRADE GENERATION vs QUESTION---\")\n", + " state_dict = state[\"keys\"]\n", + " question = state_dict[\"question\"]\n", + " documents = state_dict[\"documents\"]\n", + " generation = state_dict[\"generation\"]\n", + "\n", + " llm = ChatOllama(model=local_llm, format=\"json\", temperature=0)\n", + "\n", + " # Prompt\n", + " prompt = PromptTemplate(\n", + " template=\"\"\"You are a grader assessing whether an answer is useful to resolve a question. \\n \n", + " Here is the answer:\n", + " \\n ------- \\n\n", + " {generation} \n", + " \\n ------- \\n\n", + " Here is the question: {question}\n", + " Give a binary score 'yes' or 'no' to indicate whether the answer is useful to resolve a question. \\n\n", + " Provide the binary score as a JSON with a single key 'score' and no premable or explaination.\"\"\",\n", + " input_variables=[\"generation\", \"question\"],\n", + " )\n", + "\n", + " # Prompt\n", + " chain = prompt | llm | JsonOutputParser()\n", + " score = chain.invoke({\"generation\": generation, \"question\": question})\n", + " grade = score[\"score\"]\n", + "\n", + " if grade == \"yes\":\n", + " print(\"---DECISION: USEFUL---\")\n", + " return \"useful\"\n", + " else:\n", + " print(\"---DECISION: NOT USEFUL---\")\n", + " return \"not useful\"" + ] + }, + { + "cell_type": "markdown", + "id": "bdf3826c-b668-4f0b-bf83-81c40baaaf02", + "metadata": {}, + "source": [ + "## Build Graph\n", + "\n", + "This just follows the flow we outlined in the figure above." + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "5605dee4-b2df-46ae-a640-cc2ed90c21a6", + "metadata": {}, + "outputs": [], + "source": [ + "import pprint\n", + "\n", + "from langgraph.graph import END, StateGraph\n", + "\n", + "workflow = StateGraph(GraphState)\n", + "\n", + "# Define the nodes\n", + "workflow.add_node(\"retrieve\", retrieve) # retrieve\n", + "workflow.add_node(\"grade_documents\", grade_documents) # grade documents\n", + "workflow.add_node(\"generate\", generate) # generatae\n", + "workflow.add_node(\"transform_query\", transform_query) # transform_query\n", + "workflow.add_node(\"prepare_for_final_grade\", prepare_for_final_grade) # passthrough\n", + "\n", + "# Build graph\n", + "workflow.set_entry_point(\"retrieve\")\n", + "workflow.add_edge(\"retrieve\", \"grade_documents\")\n", + "workflow.add_conditional_edges(\n", + " \"grade_documents\",\n", + " decide_to_generate,\n", + " {\n", + " \"transform_query\": \"transform_query\",\n", + " \"generate\": \"generate\",\n", + " },\n", + ")\n", + "workflow.add_edge(\"transform_query\", \"retrieve\")\n", + "workflow.add_conditional_edges(\n", + " \"generate\",\n", + " grade_generation_v_documents,\n", + " {\n", + " \"supported\": \"prepare_for_final_grade\",\n", + " \"not supported\": \"generate\",\n", + " },\n", + ")\n", + "workflow.add_conditional_edges(\n", + " \"prepare_for_final_grade\",\n", + " grade_generation_v_question,\n", + " {\n", + " \"useful\": END,\n", + " \"not useful\": \"transform_query\",\n", + " },\n", + ")\n", + "\n", + "# Compile\n", + "app = workflow.compile()" + ] + }, + { + "cell_type": "markdown", + "id": "105ae1b5-6963-4186-bb83-6d6cb96d095f", + "metadata": {}, + "source": [ + "## Run\n", + "\n", + "Trace for below run: https://smith.langchain.com/public/928651fd-85b3-49ff-b481-bd28417645e5/r" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "26a64f7d-0c14-4e31-a67f-63021dee626e", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "llama_print_timings: load time = 149.49 ms\n", + "llama_print_timings: sample time = 0.00 ms / 1 runs ( 0.00 ms per token, inf tokens per second)\n", + "llama_print_timings: prompt eval time = 17.39 ms / 12 tokens ( 1.45 ms per token, 690.01 tokens per second)\n", + "llama_print_timings: eval time = 0.00 ms / 1 runs ( 0.00 ms per token, inf tokens per second)\n", + "llama_print_timings: total time = 17.39 ms / 13 tokens\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---RETRIEVE---\n", + "\"Node 'retrieve':\"\n", + "'\\n---\\n'\n", + "---CHECK RELEVANCE---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "---GRADE: DOCUMENT RELEVANT---\n", + "\"Node 'grade_documents':\"\n", + "'\\n---\\n'\n", + "---DECIDE TO GENERATE---\n", + "---DECISION: GENERATE---\n", + "---GENERATE---\n", + "\"Node 'generate':\"\n", + "'\\n---\\n'\n", + "---GRADE GENERATION vs DOCUMENTS---\n", + "---DECISION: SUPPORTED, MOVE TO FINAL GRADE---\n", + "---FINAL GRADE---\n", + "\"Node 'prepare_for_final_grade':\"\n", + "'\\n---\\n'\n", + "---GRADE GENERATION vs QUESTION---\n", + "---DECISION: USEFUL---\n", + "\"Node '__end__':\"\n", + "'\\n---\\n'\n", + "(' In a LLM (large language model)-powered autonomous agent system, LLM '\n", + " 'functions as the agent’s brain, complemented by several key components. One '\n", + " 'of these components is memory. Memory can be defined as the processes used '\n", + " 'to acquire, store, retain, and later retrieve information. There are several '\n", + " 'types of memory in human brains:\\n'\n", + " '\\n'\n", + " '1. Sensory Memory: This is the earliest stage of memory, providing the '\n", + " 'ability to retain impressions of sensory information (visual, auditory, etc) '\n", + " 'after the original stimuli have ended. Sensory memory typically only lasts '\n", + " 'for up to a few seconds. Subcategories include iconic memory (visual), '\n", + " 'echoic memory (auditory), and haptic memory (touch).\\n'\n", + " '2. Short-Term Memory (STM) or Working Memory: It stores information that we '\n", + " 'are currently aware of and needed to carry out complex cognitive tasks such '\n", + " 'as learning and reasoning. Short-term memory is believed to have the '\n", + " 'capacity of about 7 items (Miller 1956) and lasts for 20-30 seconds.\\n'\n", + " '3. Long-Term Memory (LTM): Long-term memory can store information for a '\n", + " 'remarkably long time, ranging from a few days to decades, with an '\n", + " 'essentially unlimited storage capacity. There are two subtypes of LTM:\\n'\n", + " ' * Explicit / declarative memory: This is memory of facts and events, and '\n", + " 'refers to those memories that can be consciously recalled, including '\n", + " 'episodic memory (events and experiences) and semantic memory (facts and '\n", + " 'concepts).\\n'\n", + " ' * Implicit / procedural memory: This type of memory is unconscious and '\n", + " 'involves skills and routines that are performed automatically, like riding a '\n", + " 'bike or typing on a keyboard.\\n'\n", + " '\\n'\n", + " 'We can roughly consider the following mappings in an LLM-powered agent '\n", + " 'system:\\n'\n", + " '\\n'\n", + " '* Sensory Memory: Input data from sensors\\n'\n", + " '* Short-Term Memory: Active processing of information, temporary storage for '\n", + " 'complex tasks\\n'\n", + " '* Long-Term Memory: Stored knowledge and experiences that can be accessed '\n", + " 'and used to learn new tasks or make decisions.')\n" + ] + } + ], + "source": [ + "# Run\n", + "inputs = {\"keys\": {\"question\": \"Explain how the different types of agent memory work?\"}}\n", + "for output in app.stream(inputs):\n", + " for key, value in output.items():\n", + " # Node\n", + " pprint.pprint(f\"Node '{key}':\")\n", + " # Optional: print full state at each node\n", + " # pprint.pprint(value[\"keys\"], indent=2, width=80, depth=None)\n", + " pprint.pprint(\"\\n---\\n\")\n", + "\n", + "# Final generation\n", + "pprint.pprint(value['keys']['generation'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4d40a430-be4a-4d9c-98f9-46c5eb3066e8", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/reflection/img/reflection.png b/examples/reflection/img/reflection.png new file mode 100644 index 000000000..b3fdc455f Binary files /dev/null and b/examples/reflection/img/reflection.png differ diff --git a/examples/reflection/reflection.ipynb b/examples/reflection/reflection.ipynb new file mode 100644 index 000000000..838e16be4 --- /dev/null +++ b/examples/reflection/reflection.ipynb @@ -0,0 +1,537 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "492f050f-3dc3-44fa-8fdc-03362afd5488", + "metadata": {}, + "source": [ + "# Reflection\n", + "\n", + "\n", + "In the context of LLM agent building, reflection refers to the process of prompting an LLM to observe its past steps (along with potential observations from tools/the environment) to assess the quality of the chosen actions.\n", + "This is then used downstream for things like re-planning, search, or evaluation.\n", + "\n", + "![Reflection](./img/reflection.png)\n", + "\n", + "This notebook demonstrates a very simple form of reflection in LangGraph." + ] + }, + { + "cell_type": "markdown", + "id": "3ef94e7e-c9a5-4eee-a865-acf411b5c235", + "metadata": {}, + "source": [ + "#### Prerequisites\n", + "\n", + "We will be using a basic agent with a search tool here." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "8b323f43-328b-4b4b-88b0-6c84dc0a1d60", + "metadata": {}, + "outputs": [], + "source": [ + "# %pip install -U --quiet langchain langgraph\n", + "# %pip install -U --quiet tavily-python" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3368f330-cad6-4d35-a291-68fbf4389d98", + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "import os\n", + "\n", + "\n", + "def _set_if_undefined(var: str) -> None:\n", + " if os.environ.get(var):\n", + " return\n", + " os.environ[var] = getpass.getpass(var)\n", + "\n", + "\n", + "# Optional: Configure tracing to visualize and debug the agent\n", + "_set_if_undefined(\"LANGCHAIN_API_KEY\")\n", + "os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n", + "os.environ[\"LANGCHAIN_PROJECT\"] = \"Reflection\"\n", + "\n", + "_set_if_undefined(\"FIREWORKS_API_KEY\")" + ] + }, + { + "cell_type": "markdown", + "id": "f27bcc4a-aaa5-46bd-8163-3e0e90cb66e6", + "metadata": {}, + "source": [ + "## Generate\n", + "\n", + "For our example, we will create a \"5 paragraph essay\" generator. First, create the generator:\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "cc10028f-9cef-4936-9419-cbdf06d24f1e", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_community.chat_models.fireworks import ChatFireworks\n", + "from langchain_core.messages import AIMessage, BaseMessage, HumanMessage\n", + "from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder\n", + "\n", + "prompt = ChatPromptTemplate.from_messages(\n", + " [\n", + " (\n", + " \"system\",\n", + " \"You are an essay assistant tasked with writing excellent 5-paragraph essays.\"\n", + " \" Generate the best essay possible for the user's request.\"\n", + " \" If the user provides critique, respond with a revised version of your previous attempts.\",\n", + " ),\n", + " MessagesPlaceholder(variable_name=\"messages\"),\n", + " ]\n", + ")\n", + "llm = ChatFireworks(\n", + " model=\"accounts/fireworks/models/mixtral-8x7b-instruct\",\n", + " model_kwargs={\"max_tokens\": 32768},\n", + ")\n", + "generate = prompt | llm" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9bbe25dc-fd1e-4ed5-a3c8-fed830b46d12", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Title: The Relevance of The Little Prince in Modern Childhood\n", + "\n", + "The Little Prince, a novella by Antoine de Saint-Exupéry, has been a childhood favorite for generations. Despite being published over seven decades ago, its timeless themes continue to resonate with modern children, making it highly relevant in contemporary childhood.\n", + "\n", + "Firstly, the story explores the complex nature of human relationships, which is particularly relevant for modern children growing up in an increasingly connected yet impersonal world. Through the little prince's encounters with various grown-ups on different planets, the book highlights the importance of genuine connections and understanding. In an age where digital communication often replaces face-to-face interaction, this message is more pertinent than ever. The Little Prince encourages children to look beyond superficial relationships and seek deeper connections, fostering empathy and emotional intelligence.\n", + "\n", + "Secondly, the book deals with the concept of responsibility and self-discovery, elements that are integral to a child's growth. The little prince's journey is essentially a quest for self-discovery, leading him to realize his responsibility towards his beloved rose. This narrative encourages modern children to embrace their individuality while understanding the significance of their actions. In a society that often overlooks the emotional well-being of children, The Little Prince offers a refreshing perspective on personal growth and responsibility.\n", + "\n", + "Thirdly, the book addresses the challenging theme of loss and bereavement. The little prince's departure from his asteroid and his subsequent encounters with the fox and the snake are profound reflections on the inevitability of loss and the importance of cherishing relationships. In a time when children are exposed to various forms of loss, from the death of loved ones to environmental degradation, The Little Prince provides a gentle yet powerful way to understand and cope with these experiences.\n", + "\n", + "However, some critics argue that the book's pace and abstract concepts might be challenging for modern children with short attention spans. To address this, a revised version could incorporate more visual elements and interactive activities to engage young readers better. Additionally, supplementary materials explaining the book's themes in simpler terms could be provided for parents and educators to use in discussions with children.\n", + "\n", + "In conclusion, The Little Prince remains relevant in modern childhood due to its exploration of human relationships, self-discovery, and loss. These themes, wrapped in a captivating narrative, offer valuable lessons for modern children. While some adaptations may be necessary to cater to the preferences of today's children, the essence of the story remains a powerful tool for teaching emotional intelligence, personal growth, and resilience." + ] + } + ], + "source": [ + "essay = \"\"\n", + "request = HumanMessage(\n", + " content=\"Write an essay on why the little prince is relevant in modern childhood\"\n", + ")\n", + "for chunk in generate.stream({\"messages\": [request]}):\n", + " print(chunk.content, end=\"\")\n", + " essay += chunk.content" + ] + }, + { + "cell_type": "markdown", + "id": "b0b276e7-c392-4eec-be75-c77bd130379d", + "metadata": {}, + "source": [ + "### Reflect" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "a705be92-88c0-4f4f-b4c2-cdcd9af8cb2c", + "metadata": {}, + "outputs": [], + "source": [ + "reflection_prompt = ChatPromptTemplate.from_messages(\n", + " [\n", + " (\n", + " \"system\",\n", + " \"You are a teacher grading an essay submission. Generate critique and recommendations for the user's submission.\"\n", + " \" Provide detailed recommendations, including requests for length, depth, style, etc.\",\n", + " ),\n", + " MessagesPlaceholder(variable_name=\"messages\"),\n", + " ]\n", + ")\n", + "reflect = reflection_prompt | llm" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "16c5eb2a-8bce-48ab-b87d-9dacb9b64ac6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Essay Grade: B+\n", + "\n", + "The essay you submitted provides a clear and well-structured argument about the relevance of The Little Prince in modern childhood. You have demonstrated a strong understanding of the text and its themes, and have effectively applied them to the context of contemporary childhood. However, there are some areas where improvement could be made to enhance the depth, style, and overall flow of your essay.\n", + "\n", + "1. Length: While your essay is well-written and informative, it is relatively brief. Expanding on each point with more detailed analysis and examples would strengthen your argument and demonstrate a more comprehensive understanding of the text. Aim for a minimum of 500 words to allow for a more in-depth exploration of your ideas.\n", + "\n", + "2. Depth: Although you have touched upon the relevance of the novel's themes, further analysis is needed to truly establish its significance in modern childhood. For example, when discussing the complex nature of human relationships, delve into how the digital age affects children's communication skills, and how The Little Prince addresses this issue. Providing concrete examples from the text and connecting them to real-world scenarios will make your argument more compelling.\n", + "\n", + "3. Style: To engage your readers more effectively, consider varying your sentence structure and length. Using a mix of simple, compound, and complex sentences will improve the flow of your essay and make it more engaging to read. Additionally, watch your tense consistency. Ensure that you maintain the same tense throughout your essay to avoid confusion.\n", + "\n", + "4. Recommendations: While your suggestions for adaptation are a good start, they could be expanded upon to provide more comprehensive recommendations. For example, you may want to discuss different methods of incorporating visual elements and interactive activities, such as illustrations, quizzes, or discussion questions. This will demonstrate that you have thoughtfully considered the needs of modern children and have developed strategies to address these challenges.\n", + "\n", + "5. Conclusion: Your conclusion could benefit from a stronger summarization of your key points and an assertive final statement about the relevance of The Little Prince in modern childhood. Tying all your arguments together in a concise and powerful manner will leave a lasting impression on your readers and solidify your position.\n", + "\n", + "Overall, your essay is well-researched and provides a solid foundation for a compelling argument about the relevance of The Little Prince in modern childhood. With some expansion, deeper analysis, and stylistic improvements, your essay can achieve an even higher level of excellence." + ] + } + ], + "source": [ + "reflection = \"\"\n", + "for chunk in reflect.stream({\"messages\": [request, HumanMessage(content=essay)]}):\n", + " print(chunk.content, end=\"\")\n", + " reflection += chunk.content" + ] + }, + { + "cell_type": "markdown", + "id": "6daf926c-1174-4e96-91b9-57c57cfce40d", + "metadata": {}, + "source": [ + "### Repeat\n", + "\n", + "And... that's all there is too it! You can repeat in a loop for a fixed number of steps, or use an LLM (or other check) to decide when the finished product is good enough." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "dfbf99a8-3aa0-4e09-936e-8452c35fa84d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Title: The Relevance of The Little Prince in Modern Childhood: A Contemporary Analysis\n", + "\n", + "In the digital age, where human connections are often overshadowed by virtual communication, Antoine de Saint-Exupéry's The Little Prince remains a timeless classic that offers invaluable insights for modern children. This essay aims to delve deeper into the relevance of this novella in contemporary childhood, focusing on the complex nature of human relationships, self-discovery, and the inevitability of loss.\n", + "\n", + "Firstly, The Little Prince offers a powerful critique of the superficiality that permeates the digital world. Through the little prince's encounters with various grown-ups, the book emphasizes the importance of genuine connections and understanding. Despite being published in 1943, Saint-Exupéry's work uncannily predicts the isolating effects of technology on human interaction. It encourages children to seek deeper connections, fostering empathy and emotional intelligence. For instance, the little prince's relationship with the fox teaches him that \"the eyes are blind, and you have to look with the heart\" (Saint-Exupéry, 1943, p. 48). In the context of modern childhood, where children are increasingly dependent on digital devices, this message is more pertinent than ever.\n", + "\n", + "Secondly, The Little Prince addresses the challenges of self-discovery and responsibility faced by modern children. The little prince's journey to Earth can be seen as an exploration of his individuality and understanding of his role in the world. His relationship with the rose illustrates the significance of taking responsibility for one's actions. In the current world, where children are often left to navigate their personal growth without proper guidance, the book offers a refreshing perspective on self-discovery, responsibility, and the importance of inner beauty.\n", + "\n", + "Thirdly, The Little Prince offers a nuanced understanding of loss and bereavement, which is increasingly relevant to modern children. Through the little prince's departure from his asteroid and his subsequent encounters with the fox and the snake, Saint-Exupéry delivers a profound reflection on the inevitability of loss and the importance of cherishing relationships. As children grapple with issues like environmental degradation, bullying, or the death of loved ones, The Little Prince provides a gentle yet powerful way to understand and cope with these experiences.\n", + "\n", + "However, as noted by critics, the book's abstract language and lengthy monologues may present challenges for some modern children. To address this, adaptations can be made to better align the book with their preferences and needs. For instance, incorporating more visual elements such as illustrations can help maintain engagement, while interactive activities like quizzes or discussion questions can deepen understanding. Furthermore, supplementary materials explaining the book's themes in simpler terms can aid parents and educators in guiding children through complex discussions.\n", + "\n", + "In conclusion, The Little Prince remains a powerful and enduring narrative for modern children as it delves into the complex nature of human relationships, self-discovery, and loss. With thoughtful adaptations and insightful guidance, this timeless classic can continue to guide young readers through their personal growth and emotional development. The Little Prince truly is a testament to the power of literature as a vehicle for conveying universal truths and emotions, making it an indispensable part of childhood reading experiences." + ] + } + ], + "source": [ + "for chunk in generate.stream(\n", + " {\"messages\": [request, AIMessage(content=essay), HumanMessage(content=reflection)]}\n", + "):\n", + " print(chunk.content, end=\"\")" + ] + }, + { + "cell_type": "markdown", + "id": "b63a9d93-a14d-4e41-a4bb-a4cd31713f44", + "metadata": {}, + "source": [ + "## Define graph\n", + "\n", + "Now that we've shown each step in isolation, we can wire it up in a graph." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "9e9a9d7c-5d2e-4194-b745-4511ec20db76", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import List, Sequence\n", + "\n", + "from langgraph.graph import END, MessageGraph\n", + "\n", + "\n", + "async def generation_node(state: Sequence[BaseMessage]):\n", + " return await generate.ainvoke({\"messages\": state})\n", + "\n", + "\n", + "async def reflection_node(messages: Sequence[BaseMessage]) -> List[BaseMessage]:\n", + " # Other messages we need to adjust\n", + " cls_map = {\"ai\": HumanMessage, \"human\": AIMessage}\n", + " # First message is the original user request. We hold it the same for all nodes\n", + " translated = [messages[0]] + [\n", + " cls_map[msg.type](content=msg.content) for msg in messages[1:]\n", + " ]\n", + " res = await reflect.ainvoke({\"messages\": translated})\n", + " # We treat the output of this as human feedback for the generator\n", + " return HumanMessage(content=res.content)\n", + "\n", + "\n", + "builder = MessageGraph()\n", + "builder.add_node(\"generate\", generation_node)\n", + "builder.add_node(\"reflect\", reflection_node)\n", + "builder.set_entry_point(\"generate\")\n", + "\n", + "\n", + "def should_continue(state: List[BaseMessage]):\n", + " if len(state) > 6:\n", + " # End after 3 iterations\n", + " return END\n", + " return \"reflect\"\n", + "\n", + "\n", + "builder.add_conditional_edges(\"generate\", should_continue)\n", + "builder.add_edge(\"reflect\", \"generate\")\n", + "graph = builder.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "06263a07-8a15-4ec3-b692-1c6cef3b1c1f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'generate': AIMessage(content=\"Title: The Enduring Relevance of The Little Prince: A Timeless Message for Modern Life\\n\\nIntroduction:\\nAntoine de Saint-Exupéry's The Little Prince is a canonical work of literature, beloved by generations since its publication in 1943. The novella has been translated into more than 250 languages and sold over 140 million copies, making it one of the best-selling books of all time. Its enchanting story transcends cultural boundaries and continues to captivate audiences of all ages. The Little Prince's timeless message remains relevant in modern life, offering insightful commentary on themes such as love, loneliness, responsibility, and the superficiality of the adult world. In this essay, we will discuss the topicality of The Little Prince and its enduring message in today's fast-paced, digitally-connected society.\\n\\nBody Paragraph 1 - Love and Loneliness:\\nOne of the most enduring aspects of The Little Prince is its exploration of love and relationships in a world plagued by superficiality. The Little Prince's encounters with the fox, the rose, and his pilot reveal the importance of genuine connections and the pain of loss. In today's modern era, characterized by increasing social isolation, the message of The Little Prince serves as a reminder of the crucial role empathy and understanding play in fostering meaningful relationships. The consequences of isolation, depression, and loneliness continue to grow in modern life, making Saint-Exupéry's exploration of love and loneliness as vital now as it was then.\\n\\nBody Paragraph 2 - Responsibility and Self-Discovery:\\nThroughout the novella, Saint-Exupéry emphasizes the significance of taking responsibility and learning from one's experiences—core components of personal growth and self-discovery. The Little Prince's journey to various planets, each inhabited by an absurd, self-absorbed grown-up, reflects on the responsibility people have to learn from their actions and understand their impact on others. The modern world demands people to navigate complex social, professional, and personal situations daily. Thus, The Little Prince's lessons in responsibility and self-discovery are essential when addressing pressing issues like mental health, self-awareness, and communication in contemporary society.\\n\\nBody Paragraph 3 - The Superficiality of the Adult World:\\nCritics often discuss the novella's critique of the superficiality of the adult world, which remains relevant today, given society's heightened emphasis on materialism and status. The Little Prince's encounters with businessmen and geographers represent the folly of misunderstanding values and blindly pursuing worldly possessions. Today's capitalist societies frequently struggle to balance priorities, often rewarding materialistic pursuits over the development of meaningful relationships. The Little Prince serves as a profound reminder to maintain a sense of perspective, recognize the importance of intangible connections, and avoid the trappings of superficiality.\\n\\nConclusion:\\nUltimately, The Little Prince continues to top bestseller lists because its themes of love, loneliness, responsibility, and the superficiality of the adult world resonate with people across time and culture. The novella's resilient popularity and topicality reflect its relevance in tackling contemporary societal issues, making it a timeless masterpiece that transcends generations. As we navigate the complexities of modern life, The Little Prince's message is one we should keep close to our hearts: we must never lose sight of the simple, yet profound, lessons the story teaches us about cherishing meaningful connections, embracing personal growth, and resisting the shallow temptations of adult life.\\n\\nRevised Essay:\\n\\nTitle: The Enduring Relevance of The Little Prince: Timeless Lessons for the 21st Century\\n\\nIntroduction:\\nAntoine de Saint-Exupéry's The Little Prince is an enduring classic that has touched the hearts of millions since its publication in 1943. The novella has been translated into more than 300 languages, and over 200 million copies have been sold, making it one of the bestselling books ever written. The Little Prince's timeless message about love, friendship, responsibility, and the adult world remains incredibly relevant in the 21st century. This essay will analyze the topicality of The Little Prince and explore the many ways its universal themes connect with modern life.\\n\\nBody Paragraph 1 - Love, Loss, and Friendship:\\nThe Little Prince teaches powerful lessons about love, friendship, and loss that continue to resonate with readers today. The novella's exploration of grief and heartache is as poignant today as it was when it was first published. The tales of the Little Prince's encounters with the fox, the rose, and his pilot highlight the transcendent power of meaningful connections and the pain of losing those we care about. In a digital age where fleeting online interactions can dominate our time, The Little Prince serves as a reminder to cherish genuine friendships and treasure the connections we make with others.\\n\\nBody Paragraph 2 - Responsibility, Personal Growth, and Emotional Intelligence:\\nThroughout the story, Saint-Exupéry highlights the significance of taking responsibility and engaging in self-discovery. The Little Prince's journey to various planets, each inhabited by a reductive grown-up, teaches the reader about the impact actions can have on others. In a world where emotional intelligence and empathy are increasingly vital due to ever-evolving social, professional, and personal obligations, The Little Prince's lessons on responsibility and personal growth remain crucial. Mental health, self-awareness, and communication are critical issues in modern society, making the exploration of these themes as essential in today's world as when the book was first published.\\n\\nBody Paragraph 3 - Rejecting the Superficiality of the Adult World:\\nThe Little Prince's critique of the superficiality of the adult world remains strikingly relevant in modern society. The novel's portrait of grown-ups consumed by materialism, social status, and vanity rings true today, more than ever, as individuals and societies race to acquire wealth, status, and possessions. The Little Prince serves as a poignant reminder to resist the superficiality of the adult world and maintain a balanced perspective, cherishing meaningful connections and eschewing the trappings of materialism.\\n\\nConclusion:\\nThe Little Prince's universal themes continue to captivate and inspire readers because the lessons it teaches about love, friendship, responsibility, and the adult world are still incredibly pertinent today. The novel's topicality and enduring popularity validate its relevance in addressing contemporary societal issues like mental health, self-awareness, communication, and materialism. As we maneuver the challenges of the 21st century, The Little Prince's enduring wisdom—to cherish deep relationships, value personal growth, and reject the superficiality of adult life—continues to resonate and encourage readers to reassess their priorities and find meaning in connection and experience.\")}\n", + "---\n", + "{'reflect': HumanMessage(content=\"Introduction:\\nThe essay provides a solid introduction to the topic, clearly stating the book's significance and its continued relevance in modern life. I would suggest providing more specific connections to the present day to emphasize the enduring relevance of The Little Prince. For instance, you could mention current events or issues that are directly related to the themes discussed in Saint-Exupéry's work (e.g., studies on loneliness and mental health in the digital age).\\n\\nBody Paragraph 1 - Love and Loneliness:\\nThe paragraph effectively explains how the themes of love and loneliness resonate with the modern era. However, I would like to see more concrete examples from the book to strengthen the analysis. Consider providing a specific interaction or quote from The Little Prince to more directly tie it to the concepts of isolation, depression, and loneliness in today's world.\\n\\nBody Paragraph 2 - Responsibility and Self-Discovery:\\nThis paragraph provides a good analysis of how Saint-Exupéry emphasizes responsibility and self-discovery. However, it could benefit from a stronger connection to contemporary society. It would be helpful to provide examples from real-life situations or psychological studies that demonstrate the importance of mental health, self-awareness, and communication in today's world.\\n\\nBody Paragraph 3 - The Superficiality of the Adult World:\\nThe criticism of materialism and status in modern society is well-presented in this paragraph. However, you could strengthen the analysis by offering specific examples of the adult world's superficiality in the context of the 21st century, such as a focus on social media and online presence. Moreover, consider further elaborating on the contrast between the materialistic world and The Little Prince's emphasis on meaningful relationships.\\n\\nConclusion:\\nThe conclusion effectively summarizes the importance of the themes addressed in the novel. Nonetheless, it could benefit from a stronger final statement that reiterates the significance of the stories and lessons from The Little Prince in the modern context. Consider restating the main ideas in a way that reinforces the parallels between the book and contemporary life.\\n\\nOverall, I would encourage you to strengthen the connections between the novel's themes and modern society by providing more specific examples and relevant real-world issues. Furthermore, I recommend a word count of around 1,200-1,500 words for your essay to provide enough space to thoroughly analyze and discuss the topics presented. By offering a more in-depth analysis, your argument would become more persuasive and the relevance of the novel even more apparent.\")}\n", + "---\n", + "{'generate': AIMessage(content='Title: The Enduring Relevance of The Little Prince: Timeless Lessons for the 21st Century\\n\\nIntroduction:\\nAntoine de Saint-Exupéry\\'s The Little Prince continues to hold significance in modern life, touching the hearts of millions since its publication in 1943. With over 200 million copies sold and translations in more than 300 languages, its universal themes of love, friendship, responsibility, and the adult world resonate profoundly today (Soucy & Vedel, 2018). Today\\'s society faces a myriad of challenges, including increasing social isolation, mental health issues, and materialism. This essay will explore the novel\\'s powerful impact by offering concrete examples of its relevance in modern life and discussing the themes in the context of studies on loneliness, personal growth, and superficiality in the digital age.\\n\\nBody Paragraph 1 - Love, Loneliness, and Isolation:\\nThe Little Prince\\'s depiction of love and loneliness in various forms—between the prince and his rose, the fox, and the pilot—provides powerful insights into addressing isolation in the 21st century. In a study conducted by McPherson, Smith-Lovin, and Brashears (2006), they revealed an alarming decline in the number of confidants in individuals\\' lives, indicating growing isolation. Specifically, over the past two decades, the percentage of people who claim to have no one they can discuss important issues with has doubled (McPherson, Smith-Lovin, & Brashears, 2006). The Little Prince\\'s portrayal of the prince\\'s loneliness and his encounters with a variety of inhabitants emphasizes the importance of genuine companionship, transcending cultural barriers.\\n\\nBody Paragraph 2 - Responsibility, Personal Growth, and Emotional Intelligence:\\nPersonal growth, responsibility, and self-awareness are vital themes in The Little Prince, which remain crucial for navigating the challenges of the 21st century. With increasing emphasis on mental health and well-being worldwide, Saint-Exupéry\\'s exploration of self-awareness and personal growth is highly relevant. The Little Prince\\'s encounters with grown-ups on various planets reveal the trappings of vanity, authority, and materialism (Soucy & Vedel, 2018). In response to the pressures of adulthood and rigid expectations, the novel advocates for personal growth and responsibility as essential ingredients for emotional intelligence. Research connecting emotional intelligence to mental health underscores the significance of the ideas presented in The Little Prince, demonstrating that higher emotional intelligence is positively associated with mental health and well-being (Schutte et al., 2001). This research supports the notion that the personal growth explored in The Little Prince remains a vital part of addressing mental health issues.\\n\\nBody Paragraph 3 - Materialism, Superficiality, and Social Media:\\nThe Little Prince critiques the materialistic and superficial nature of the adult world, which is acutely visible in today\\'s digital age and social media-dominated society. For instance, the novel\\'s third chapter introduces the businessman, who spends his life counting stars, believing that \"owning\" them brings him both fame and fortune. This behavior can be likened to the modern obsession with online presence and an obsession with acquiring digital \"followers\" and \"likes.\" By highlighting the emptiness of the materialistic pursuits, The Little Prince shows readers the importance of genuine human connections and rejecting superficial distractions (Soucy & Vedel, 2018). These themes are particularly relevant today, as younger generations struggle to find balance between their online and offline lives, frequently confronted with issues related to superficiality, self-promotion, and digital personas.\\n\\nConclusion:\\nThe Little Prince is an enduring classic that offers timeless lessons on love, friendship, responsibility, and the superficiality of the adult world, which remain highly relevant today. In the context of the digital age and its myriad challenges, the novel\\'s exploration of personal growth, mental health, materialism, and loneliness provides critical insights for contemporary society. The Little Prince reminds us to cherish and foster deep, meaningful relationships, engage in self-discovery, and resist the superficiality of the adult world. By doing so, we can preserve the essence of human connection and continue to find relevance in the novel\\'s wisdom and the importance of its messages in our daily lives.')}\n", + "---\n", + "{'reflect': HumanMessage(content=\"The revised essay now provides a more in-depth analysis of the novel's themes and their relevance in the context of modern society, studies on loneliness, personal growth, and superficiality. The addition of specific examples from both the book and real-world research strengthens the argument, bolstering the claim that The Little Prince remains a timeless and relevant work in the 21st century. Overall, the essay conveys a thorough exploration of the novel's impact and significance.\")}\n", + "---\n", + "{'generate': AIMessage(content='Title: The Enduring Relevance of The Little Prince: Timeless Lessons for the 21st Century\\n\\nIntroduction:\\nAntoine de Saint-Exupéry\\'s The Little Prince continues to hold significance in modern life, touching the hearts of millions since its publication in 1943. With over 200 million copies sold and translations in more than 300 languages, its universal themes of love, friendship, responsibility, and the adult world resonate profoundly today (Soucy & Vedel, 2018). Today\\'s society faces a myriad of challenges, including increasing social isolation, mental health issues, and materialism. This essay will explore the novel\\'s powerful impact by offering concrete examples of its relevance in modern life and discussing the themes in the context of studies on loneliness, personal growth, and superficiality in the digital age.\\n\\nBody Paragraph 1 - Love, Loneliness, and Isolation:\\nThe Little Prince\\'s depiction of love and loneliness in various forms—between the prince and his rose, the fox, and the pilot—provides powerful insights into addressing isolation in the 21st century. In a study conducted by McPherson, Smith-Lovin, and Brashears (2006), they revealed an alarming decline in the number of confidants in individuals\\' lives, indicating growing isolation. Specifically, over the past two decades, the percentage of people who claim to have no one they can discuss important issues with has doubled (McPherson, Smith-Lovin, & Brashears, 2006). The Little Prince\\'s portrayal of the prince\\'s loneliness and his encounters with a variety of inhabitants emphasizes the importance of genuine companionship, transcending cultural barriers.\\n\\nOne scene that highlights the emotional impact of loneliness is the Little Prince\\'s relationship with his rose, which illustrates the often-complex nature of human relationships. The prince\\'s devotion to the rose, despite her shortcomings, underscores how even the most frustrating relationships can bring solace to those yearning for connection. In the digital age, social media and other online platforms can be sources of isolation, rather than connection, and The Little Prince challenges readers to cherish in-person interactions and prioritize genuine human relationships over superficial online exchanges.\\n\\nBody Paragraph 2 - Responsibility, Personal Growth, and Emotional Intelligence:\\nPersonal growth, responsibility, and self-awareness are vital themes in The Little Prince, which remain crucial for navigating the challenges of the 21st century. With increasing emphasis on mental health and well-being worldwide, Saint-Exupéry\\'s exploration of self-awareness and personal growth is highly relevant. The Little Prince\\'s encounters with grown-ups on various planets reveal the trappings of vanity, authority, and materialism (Soucy & Vedel, 2018). In response to the pressures of adulthood and rigid expectations, the novel advocates for personal growth and responsibility as essential ingredients for emotional intelligence.\\n\\nStudies have consistently linked emotional intelligence to mental health, providing further support for the themes present in The Little Prince. Research conducted by Schutte and colleagues (2001) found that higher emotional intelligence was positively associated with mental health and well-being, suggesting that the novel\\'s focus on personal growth and responsibility provides valuable insights for today\\'s 21st-century society. The novel challenges readers to question the adult world\\'s superficiality, pursue self-awareness, and foster emotional intelligence as a means of developing resilience in the face of modern-day challenges.\\n\\nBody Paragraph 3 - Materialism, Superficiality, and Social Media:\\nThe Little Prince critiques the materialistic and superficial nature of the adult world, which is acutely visible in today\\'s digital age and social media-dominated society. For instance, the novel\\'s third chapter introduces the businessman, who spends his life counting stars, believing that \"owning\" them brings him both fame and fortune. This behavior can be likened to the modern obsession with online presence, where people often focus on the accumulation of \"likes\" and \"followers.\" \\n\\nResearch suggests that Facebook, Instagram, and Twitter use may contribute to decreased well-being and increased loneliness, underscoring Saint-Exupéry\\'s prescient examination of the superficiality of modern society (Kross et al., 2013). The Little Prince encourages its readers to seek genuine connections and engage with the world around them, minimizing the allure of superficial distractions. As digital natives grapple with maintaining healthy digital personas, the novel\\'s messages about the importance of meaningful relationships and personal responsibility remain more relevant than ever.\\n\\nConclusion:\\nThe Little Prince is an enduring classic that offers timeless lessons on love, friendship, responsibility, and the superficiality of the adult world, which remain highly relevant today. In the context of the digital age and its myriad challenges, the novel\\'s exploration of personal growth, mental health, materialism, and loneliness provides critical insights for contemporary society. The Little Prince reminds us to cherish and foster deep, meaningful relationships, engage in self-discovery, and resist the superficiality of the adult world. By doing so, we can preserve the essence of human connection and continue to find relevance in the novel\\'s wisdom and the importance of its messages in our daily lives.')}\n", + "---\n", + "{'reflect': HumanMessage(content=\"The revised essay expands on the themes presented in the novel and their relevance to modern society, integrating real-world research, specific examples from The Little Prince, and addressing the issues of social media and materialism in an insightful manner. The essay demonstrates a thorough understanding of the novel's impact and significance in the 21st century, offering a compelling analysis of its continued relevance.\")}\n", + "---\n", + "{'generate': AIMessage(content='Title: The Enduring Relevance of The Little Prince: Timeless Lessons for the 21st Century\\n\\nIntroduction:\\nAntoine de Saint-Exupéry\\'s The Little Prince continues to captivate readers as a classic tale that carries significant implications for contemporary society. With over 200 million copies sold and translations in more than 300 languages, its universal themes of love, friendship, responsibility, and the superficiality of the adult world remain profoundly relevant in the 21st century. As society grapples with increasing social isolation, mental health issues, and materialism, this essay explores the novel\\'s powerful impact by discussing its themes in the context of studies on loneliness, personal growth, and superficiality in the digital age.\\n\\nBody Paragraph 1 - Love, Loneliness, and Isolation:\\nThe Little Prince addresses themes of love and loneliness that still resonate strongly in today\\'s world. The novel\\'s portrayal of the prince\\'s relationships emphasizes the significance of in-person connections in a time when digital communication dominates many aspects of everyday life. In a study conducted by McPherson, Smith-Lovin, and Brashears (2006), the authors revealed an alarming decline in the number of confidants in individuals\\' lives, indicating growing isolation. The Little Prince challenges readers to prioritize genuine human relationships over superficial online exchanges.\\n\\nOne notable scene in The Little Prince portrays the emotional impact of loneliness. The little prince\\'s devotion to his rose, despite her flaws, highlights the value of even the most frustrating relationships in providing solace to those yearning for connection. The novel encourages readers to seek and maintain in-person interactions and forge emotional bonds that can help mitigate the feelings of loneliness and isolation that may arise in the modern age.\\n\\nBody Paragraph 2 - Responsibility, Personal Growth, and Emotional Intelligence:\\nThe Little Prince emphasizes responsibility, self-awareness, and personal growth as critical components of emotional intelligence, which remains salient in modern society. Research consistently links emotional intelligence to mental health and well-being. A 2001 study conducted by Schutte and colleagues found that higher emotional intelligence was associated with fewer symptoms of anxiety and depression, suggesting that the novel\\'s focus on personal growth and self-awareness offers valuable insights in the face of today\\'s challenges.\\n\\nIn response to the pressures of adulthood and rigid expectations, the novel underscores the importance of pursuing personal growth and responsibility, embracing self-discovery, and nurturing emotional intelligence as a means of coping with the complexities of life in contemporary society. According to Salovey and Mayer (1990), growing emotional intelligence allows individuals to understand their own emotions and those of others more deeply, which contributes to overall mental well-being.\\n\\nBody Paragraph 3 - Materialism, Superficiality, and Social Media:\\nThe Little Prince critiques the materialistic and superficial nature of the adult world, which becomes more apparent in the digital age and social media-dominated society. The novel introduces characters like the businessman, who devotes his life to counting stars while prioritizing material possessions and wealth over genuine relationships. This behavior can be likened to the modern trend of cultivating an online presence and seeking validation through the accumulation of \"likes\" and \"followers.\"\\n\\nResearch suggests that social media use may have detrimental effects on mental health and well-being. For example, a study conducted by Kross et al. (2013) found that frequent Facebook use was associated with decreased well-being and increased loneliness, supporting The Little Prince\\'s assertion that superficiality and materialism can have damaging consequences on mental health. The novel encourages readers to engage with the world around them and seek genuine connections that transcend superficial distractions.\\n\\nConclusion:\\nThe Little Prince remains a timeless and relevant work in the 21st century. The novel\\'s exploration of topics such as personal growth, mental health, materialism, and loneliness continues to offer valuable insights for contemporary society. The novel challenges readers to cherish and foster deep, meaningful relationships, engage in self-discovery, and resist the superficiality and materialism prevalent in today\\'s world. By doing so, The Little Prince reminds us of the wisdom it possesses and the importance of its themes in our daily lives.')}\n", + "---\n", + "{'__end__': [HumanMessage(content='Generate an essay on the topicality of The Little Prince and its message in modern life'), AIMessage(content=\"Title: The Enduring Relevance of The Little Prince: A Timeless Message for Modern Life\\n\\nIntroduction:\\nAntoine de Saint-Exupéry's The Little Prince is a canonical work of literature, beloved by generations since its publication in 1943. The novella has been translated into more than 250 languages and sold over 140 million copies, making it one of the best-selling books of all time. Its enchanting story transcends cultural boundaries and continues to captivate audiences of all ages. The Little Prince's timeless message remains relevant in modern life, offering insightful commentary on themes such as love, loneliness, responsibility, and the superficiality of the adult world. In this essay, we will discuss the topicality of The Little Prince and its enduring message in today's fast-paced, digitally-connected society.\\n\\nBody Paragraph 1 - Love and Loneliness:\\nOne of the most enduring aspects of The Little Prince is its exploration of love and relationships in a world plagued by superficiality. The Little Prince's encounters with the fox, the rose, and his pilot reveal the importance of genuine connections and the pain of loss. In today's modern era, characterized by increasing social isolation, the message of The Little Prince serves as a reminder of the crucial role empathy and understanding play in fostering meaningful relationships. The consequences of isolation, depression, and loneliness continue to grow in modern life, making Saint-Exupéry's exploration of love and loneliness as vital now as it was then.\\n\\nBody Paragraph 2 - Responsibility and Self-Discovery:\\nThroughout the novella, Saint-Exupéry emphasizes the significance of taking responsibility and learning from one's experiences—core components of personal growth and self-discovery. The Little Prince's journey to various planets, each inhabited by an absurd, self-absorbed grown-up, reflects on the responsibility people have to learn from their actions and understand their impact on others. The modern world demands people to navigate complex social, professional, and personal situations daily. Thus, The Little Prince's lessons in responsibility and self-discovery are essential when addressing pressing issues like mental health, self-awareness, and communication in contemporary society.\\n\\nBody Paragraph 3 - The Superficiality of the Adult World:\\nCritics often discuss the novella's critique of the superficiality of the adult world, which remains relevant today, given society's heightened emphasis on materialism and status. The Little Prince's encounters with businessmen and geographers represent the folly of misunderstanding values and blindly pursuing worldly possessions. Today's capitalist societies frequently struggle to balance priorities, often rewarding materialistic pursuits over the development of meaningful relationships. The Little Prince serves as a profound reminder to maintain a sense of perspective, recognize the importance of intangible connections, and avoid the trappings of superficiality.\\n\\nConclusion:\\nUltimately, The Little Prince continues to top bestseller lists because its themes of love, loneliness, responsibility, and the superficiality of the adult world resonate with people across time and culture. The novella's resilient popularity and topicality reflect its relevance in tackling contemporary societal issues, making it a timeless masterpiece that transcends generations. As we navigate the complexities of modern life, The Little Prince's message is one we should keep close to our hearts: we must never lose sight of the simple, yet profound, lessons the story teaches us about cherishing meaningful connections, embracing personal growth, and resisting the shallow temptations of adult life.\\n\\nRevised Essay:\\n\\nTitle: The Enduring Relevance of The Little Prince: Timeless Lessons for the 21st Century\\n\\nIntroduction:\\nAntoine de Saint-Exupéry's The Little Prince is an enduring classic that has touched the hearts of millions since its publication in 1943. The novella has been translated into more than 300 languages, and over 200 million copies have been sold, making it one of the bestselling books ever written. The Little Prince's timeless message about love, friendship, responsibility, and the adult world remains incredibly relevant in the 21st century. This essay will analyze the topicality of The Little Prince and explore the many ways its universal themes connect with modern life.\\n\\nBody Paragraph 1 - Love, Loss, and Friendship:\\nThe Little Prince teaches powerful lessons about love, friendship, and loss that continue to resonate with readers today. The novella's exploration of grief and heartache is as poignant today as it was when it was first published. The tales of the Little Prince's encounters with the fox, the rose, and his pilot highlight the transcendent power of meaningful connections and the pain of losing those we care about. In a digital age where fleeting online interactions can dominate our time, The Little Prince serves as a reminder to cherish genuine friendships and treasure the connections we make with others.\\n\\nBody Paragraph 2 - Responsibility, Personal Growth, and Emotional Intelligence:\\nThroughout the story, Saint-Exupéry highlights the significance of taking responsibility and engaging in self-discovery. The Little Prince's journey to various planets, each inhabited by a reductive grown-up, teaches the reader about the impact actions can have on others. In a world where emotional intelligence and empathy are increasingly vital due to ever-evolving social, professional, and personal obligations, The Little Prince's lessons on responsibility and personal growth remain crucial. Mental health, self-awareness, and communication are critical issues in modern society, making the exploration of these themes as essential in today's world as when the book was first published.\\n\\nBody Paragraph 3 - Rejecting the Superficiality of the Adult World:\\nThe Little Prince's critique of the superficiality of the adult world remains strikingly relevant in modern society. The novel's portrait of grown-ups consumed by materialism, social status, and vanity rings true today, more than ever, as individuals and societies race to acquire wealth, status, and possessions. The Little Prince serves as a poignant reminder to resist the superficiality of the adult world and maintain a balanced perspective, cherishing meaningful connections and eschewing the trappings of materialism.\\n\\nConclusion:\\nThe Little Prince's universal themes continue to captivate and inspire readers because the lessons it teaches about love, friendship, responsibility, and the adult world are still incredibly pertinent today. The novel's topicality and enduring popularity validate its relevance in addressing contemporary societal issues like mental health, self-awareness, communication, and materialism. As we maneuver the challenges of the 21st century, The Little Prince's enduring wisdom—to cherish deep relationships, value personal growth, and reject the superficiality of adult life—continues to resonate and encourage readers to reassess their priorities and find meaning in connection and experience.\"), HumanMessage(content=\"Introduction:\\nThe essay provides a solid introduction to the topic, clearly stating the book's significance and its continued relevance in modern life. I would suggest providing more specific connections to the present day to emphasize the enduring relevance of The Little Prince. For instance, you could mention current events or issues that are directly related to the themes discussed in Saint-Exupéry's work (e.g., studies on loneliness and mental health in the digital age).\\n\\nBody Paragraph 1 - Love and Loneliness:\\nThe paragraph effectively explains how the themes of love and loneliness resonate with the modern era. However, I would like to see more concrete examples from the book to strengthen the analysis. Consider providing a specific interaction or quote from The Little Prince to more directly tie it to the concepts of isolation, depression, and loneliness in today's world.\\n\\nBody Paragraph 2 - Responsibility and Self-Discovery:\\nThis paragraph provides a good analysis of how Saint-Exupéry emphasizes responsibility and self-discovery. However, it could benefit from a stronger connection to contemporary society. It would be helpful to provide examples from real-life situations or psychological studies that demonstrate the importance of mental health, self-awareness, and communication in today's world.\\n\\nBody Paragraph 3 - The Superficiality of the Adult World:\\nThe criticism of materialism and status in modern society is well-presented in this paragraph. However, you could strengthen the analysis by offering specific examples of the adult world's superficiality in the context of the 21st century, such as a focus on social media and online presence. Moreover, consider further elaborating on the contrast between the materialistic world and The Little Prince's emphasis on meaningful relationships.\\n\\nConclusion:\\nThe conclusion effectively summarizes the importance of the themes addressed in the novel. Nonetheless, it could benefit from a stronger final statement that reiterates the significance of the stories and lessons from The Little Prince in the modern context. Consider restating the main ideas in a way that reinforces the parallels between the book and contemporary life.\\n\\nOverall, I would encourage you to strengthen the connections between the novel's themes and modern society by providing more specific examples and relevant real-world issues. Furthermore, I recommend a word count of around 1,200-1,500 words for your essay to provide enough space to thoroughly analyze and discuss the topics presented. By offering a more in-depth analysis, your argument would become more persuasive and the relevance of the novel even more apparent.\"), AIMessage(content='Title: The Enduring Relevance of The Little Prince: Timeless Lessons for the 21st Century\\n\\nIntroduction:\\nAntoine de Saint-Exupéry\\'s The Little Prince continues to hold significance in modern life, touching the hearts of millions since its publication in 1943. With over 200 million copies sold and translations in more than 300 languages, its universal themes of love, friendship, responsibility, and the adult world resonate profoundly today (Soucy & Vedel, 2018). Today\\'s society faces a myriad of challenges, including increasing social isolation, mental health issues, and materialism. This essay will explore the novel\\'s powerful impact by offering concrete examples of its relevance in modern life and discussing the themes in the context of studies on loneliness, personal growth, and superficiality in the digital age.\\n\\nBody Paragraph 1 - Love, Loneliness, and Isolation:\\nThe Little Prince\\'s depiction of love and loneliness in various forms—between the prince and his rose, the fox, and the pilot—provides powerful insights into addressing isolation in the 21st century. In a study conducted by McPherson, Smith-Lovin, and Brashears (2006), they revealed an alarming decline in the number of confidants in individuals\\' lives, indicating growing isolation. Specifically, over the past two decades, the percentage of people who claim to have no one they can discuss important issues with has doubled (McPherson, Smith-Lovin, & Brashears, 2006). The Little Prince\\'s portrayal of the prince\\'s loneliness and his encounters with a variety of inhabitants emphasizes the importance of genuine companionship, transcending cultural barriers.\\n\\nBody Paragraph 2 - Responsibility, Personal Growth, and Emotional Intelligence:\\nPersonal growth, responsibility, and self-awareness are vital themes in The Little Prince, which remain crucial for navigating the challenges of the 21st century. With increasing emphasis on mental health and well-being worldwide, Saint-Exupéry\\'s exploration of self-awareness and personal growth is highly relevant. The Little Prince\\'s encounters with grown-ups on various planets reveal the trappings of vanity, authority, and materialism (Soucy & Vedel, 2018). In response to the pressures of adulthood and rigid expectations, the novel advocates for personal growth and responsibility as essential ingredients for emotional intelligence. Research connecting emotional intelligence to mental health underscores the significance of the ideas presented in The Little Prince, demonstrating that higher emotional intelligence is positively associated with mental health and well-being (Schutte et al., 2001). This research supports the notion that the personal growth explored in The Little Prince remains a vital part of addressing mental health issues.\\n\\nBody Paragraph 3 - Materialism, Superficiality, and Social Media:\\nThe Little Prince critiques the materialistic and superficial nature of the adult world, which is acutely visible in today\\'s digital age and social media-dominated society. For instance, the novel\\'s third chapter introduces the businessman, who spends his life counting stars, believing that \"owning\" them brings him both fame and fortune. This behavior can be likened to the modern obsession with online presence and an obsession with acquiring digital \"followers\" and \"likes.\" By highlighting the emptiness of the materialistic pursuits, The Little Prince shows readers the importance of genuine human connections and rejecting superficial distractions (Soucy & Vedel, 2018). These themes are particularly relevant today, as younger generations struggle to find balance between their online and offline lives, frequently confronted with issues related to superficiality, self-promotion, and digital personas.\\n\\nConclusion:\\nThe Little Prince is an enduring classic that offers timeless lessons on love, friendship, responsibility, and the superficiality of the adult world, which remain highly relevant today. In the context of the digital age and its myriad challenges, the novel\\'s exploration of personal growth, mental health, materialism, and loneliness provides critical insights for contemporary society. The Little Prince reminds us to cherish and foster deep, meaningful relationships, engage in self-discovery, and resist the superficiality of the adult world. By doing so, we can preserve the essence of human connection and continue to find relevance in the novel\\'s wisdom and the importance of its messages in our daily lives.'), HumanMessage(content=\"The revised essay now provides a more in-depth analysis of the novel's themes and their relevance in the context of modern society, studies on loneliness, personal growth, and superficiality. The addition of specific examples from both the book and real-world research strengthens the argument, bolstering the claim that The Little Prince remains a timeless and relevant work in the 21st century. Overall, the essay conveys a thorough exploration of the novel's impact and significance.\"), AIMessage(content='Title: The Enduring Relevance of The Little Prince: Timeless Lessons for the 21st Century\\n\\nIntroduction:\\nAntoine de Saint-Exupéry\\'s The Little Prince continues to hold significance in modern life, touching the hearts of millions since its publication in 1943. With over 200 million copies sold and translations in more than 300 languages, its universal themes of love, friendship, responsibility, and the adult world resonate profoundly today (Soucy & Vedel, 2018). Today\\'s society faces a myriad of challenges, including increasing social isolation, mental health issues, and materialism. This essay will explore the novel\\'s powerful impact by offering concrete examples of its relevance in modern life and discussing the themes in the context of studies on loneliness, personal growth, and superficiality in the digital age.\\n\\nBody Paragraph 1 - Love, Loneliness, and Isolation:\\nThe Little Prince\\'s depiction of love and loneliness in various forms—between the prince and his rose, the fox, and the pilot—provides powerful insights into addressing isolation in the 21st century. In a study conducted by McPherson, Smith-Lovin, and Brashears (2006), they revealed an alarming decline in the number of confidants in individuals\\' lives, indicating growing isolation. Specifically, over the past two decades, the percentage of people who claim to have no one they can discuss important issues with has doubled (McPherson, Smith-Lovin, & Brashears, 2006). The Little Prince\\'s portrayal of the prince\\'s loneliness and his encounters with a variety of inhabitants emphasizes the importance of genuine companionship, transcending cultural barriers.\\n\\nOne scene that highlights the emotional impact of loneliness is the Little Prince\\'s relationship with his rose, which illustrates the often-complex nature of human relationships. The prince\\'s devotion to the rose, despite her shortcomings, underscores how even the most frustrating relationships can bring solace to those yearning for connection. In the digital age, social media and other online platforms can be sources of isolation, rather than connection, and The Little Prince challenges readers to cherish in-person interactions and prioritize genuine human relationships over superficial online exchanges.\\n\\nBody Paragraph 2 - Responsibility, Personal Growth, and Emotional Intelligence:\\nPersonal growth, responsibility, and self-awareness are vital themes in The Little Prince, which remain crucial for navigating the challenges of the 21st century. With increasing emphasis on mental health and well-being worldwide, Saint-Exupéry\\'s exploration of self-awareness and personal growth is highly relevant. The Little Prince\\'s encounters with grown-ups on various planets reveal the trappings of vanity, authority, and materialism (Soucy & Vedel, 2018). In response to the pressures of adulthood and rigid expectations, the novel advocates for personal growth and responsibility as essential ingredients for emotional intelligence.\\n\\nStudies have consistently linked emotional intelligence to mental health, providing further support for the themes present in The Little Prince. Research conducted by Schutte and colleagues (2001) found that higher emotional intelligence was positively associated with mental health and well-being, suggesting that the novel\\'s focus on personal growth and responsibility provides valuable insights for today\\'s 21st-century society. The novel challenges readers to question the adult world\\'s superficiality, pursue self-awareness, and foster emotional intelligence as a means of developing resilience in the face of modern-day challenges.\\n\\nBody Paragraph 3 - Materialism, Superficiality, and Social Media:\\nThe Little Prince critiques the materialistic and superficial nature of the adult world, which is acutely visible in today\\'s digital age and social media-dominated society. For instance, the novel\\'s third chapter introduces the businessman, who spends his life counting stars, believing that \"owning\" them brings him both fame and fortune. This behavior can be likened to the modern obsession with online presence, where people often focus on the accumulation of \"likes\" and \"followers.\" \\n\\nResearch suggests that Facebook, Instagram, and Twitter use may contribute to decreased well-being and increased loneliness, underscoring Saint-Exupéry\\'s prescient examination of the superficiality of modern society (Kross et al., 2013). The Little Prince encourages its readers to seek genuine connections and engage with the world around them, minimizing the allure of superficial distractions. As digital natives grapple with maintaining healthy digital personas, the novel\\'s messages about the importance of meaningful relationships and personal responsibility remain more relevant than ever.\\n\\nConclusion:\\nThe Little Prince is an enduring classic that offers timeless lessons on love, friendship, responsibility, and the superficiality of the adult world, which remain highly relevant today. In the context of the digital age and its myriad challenges, the novel\\'s exploration of personal growth, mental health, materialism, and loneliness provides critical insights for contemporary society. The Little Prince reminds us to cherish and foster deep, meaningful relationships, engage in self-discovery, and resist the superficiality of the adult world. By doing so, we can preserve the essence of human connection and continue to find relevance in the novel\\'s wisdom and the importance of its messages in our daily lives.'), HumanMessage(content=\"The revised essay expands on the themes presented in the novel and their relevance to modern society, integrating real-world research, specific examples from The Little Prince, and addressing the issues of social media and materialism in an insightful manner. The essay demonstrates a thorough understanding of the novel's impact and significance in the 21st century, offering a compelling analysis of its continued relevance.\"), AIMessage(content='Title: The Enduring Relevance of The Little Prince: Timeless Lessons for the 21st Century\\n\\nIntroduction:\\nAntoine de Saint-Exupéry\\'s The Little Prince continues to captivate readers as a classic tale that carries significant implications for contemporary society. With over 200 million copies sold and translations in more than 300 languages, its universal themes of love, friendship, responsibility, and the superficiality of the adult world remain profoundly relevant in the 21st century. As society grapples with increasing social isolation, mental health issues, and materialism, this essay explores the novel\\'s powerful impact by discussing its themes in the context of studies on loneliness, personal growth, and superficiality in the digital age.\\n\\nBody Paragraph 1 - Love, Loneliness, and Isolation:\\nThe Little Prince addresses themes of love and loneliness that still resonate strongly in today\\'s world. The novel\\'s portrayal of the prince\\'s relationships emphasizes the significance of in-person connections in a time when digital communication dominates many aspects of everyday life. In a study conducted by McPherson, Smith-Lovin, and Brashears (2006), the authors revealed an alarming decline in the number of confidants in individuals\\' lives, indicating growing isolation. The Little Prince challenges readers to prioritize genuine human relationships over superficial online exchanges.\\n\\nOne notable scene in The Little Prince portrays the emotional impact of loneliness. The little prince\\'s devotion to his rose, despite her flaws, highlights the value of even the most frustrating relationships in providing solace to those yearning for connection. The novel encourages readers to seek and maintain in-person interactions and forge emotional bonds that can help mitigate the feelings of loneliness and isolation that may arise in the modern age.\\n\\nBody Paragraph 2 - Responsibility, Personal Growth, and Emotional Intelligence:\\nThe Little Prince emphasizes responsibility, self-awareness, and personal growth as critical components of emotional intelligence, which remains salient in modern society. Research consistently links emotional intelligence to mental health and well-being. A 2001 study conducted by Schutte and colleagues found that higher emotional intelligence was associated with fewer symptoms of anxiety and depression, suggesting that the novel\\'s focus on personal growth and self-awareness offers valuable insights in the face of today\\'s challenges.\\n\\nIn response to the pressures of adulthood and rigid expectations, the novel underscores the importance of pursuing personal growth and responsibility, embracing self-discovery, and nurturing emotional intelligence as a means of coping with the complexities of life in contemporary society. According to Salovey and Mayer (1990), growing emotional intelligence allows individuals to understand their own emotions and those of others more deeply, which contributes to overall mental well-being.\\n\\nBody Paragraph 3 - Materialism, Superficiality, and Social Media:\\nThe Little Prince critiques the materialistic and superficial nature of the adult world, which becomes more apparent in the digital age and social media-dominated society. The novel introduces characters like the businessman, who devotes his life to counting stars while prioritizing material possessions and wealth over genuine relationships. This behavior can be likened to the modern trend of cultivating an online presence and seeking validation through the accumulation of \"likes\" and \"followers.\"\\n\\nResearch suggests that social media use may have detrimental effects on mental health and well-being. For example, a study conducted by Kross et al. (2013) found that frequent Facebook use was associated with decreased well-being and increased loneliness, supporting The Little Prince\\'s assertion that superficiality and materialism can have damaging consequences on mental health. The novel encourages readers to engage with the world around them and seek genuine connections that transcend superficial distractions.\\n\\nConclusion:\\nThe Little Prince remains a timeless and relevant work in the 21st century. The novel\\'s exploration of topics such as personal growth, mental health, materialism, and loneliness continues to offer valuable insights for contemporary society. The novel challenges readers to cherish and foster deep, meaningful relationships, engage in self-discovery, and resist the superficiality and materialism prevalent in today\\'s world. By doing so, The Little Prince reminds us of the wisdom it possesses and the importance of its themes in our daily lives.')]}\n", + "---\n" + ] + } + ], + "source": [ + "async for event in graph.astream(\n", + " [\n", + " HumanMessage(\n", + " content=\"Generate an essay on the topicality of The Little Prince and its message in modern life\"\n", + " )\n", + " ],\n", + "):\n", + " print(event)\n", + " print(\"---\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "394bf0df-fc28-4104-a278-a56c9cb8b10c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "================================\u001b[1m Human Message \u001b[0m=================================\n", + "\n", + "Generate an essay on the topicality of The Little Prince and its message in modern life\n", + "\n", + "==================================\u001b[1m Ai Message \u001b[0m==================================\n", + "\n", + "Title: The Enduring Relevance of The Little Prince: A Timeless Message for Modern Life\n", + "\n", + "Introduction:\n", + "Antoine de Saint-Exupéry's The Little Prince is a canonical work of literature, beloved by generations since its publication in 1943. The novella has been translated into more than 250 languages and sold over 140 million copies, making it one of the best-selling books of all time. Its enchanting story transcends cultural boundaries and continues to captivate audiences of all ages. The Little Prince's timeless message remains relevant in modern life, offering insightful commentary on themes such as love, loneliness, responsibility, and the superficiality of the adult world. In this essay, we will discuss the topicality of The Little Prince and its enduring message in today's fast-paced, digitally-connected society.\n", + "\n", + "Body Paragraph 1 - Love and Loneliness:\n", + "One of the most enduring aspects of The Little Prince is its exploration of love and relationships in a world plagued by superficiality. The Little Prince's encounters with the fox, the rose, and his pilot reveal the importance of genuine connections and the pain of loss. In today's modern era, characterized by increasing social isolation, the message of The Little Prince serves as a reminder of the crucial role empathy and understanding play in fostering meaningful relationships. The consequences of isolation, depression, and loneliness continue to grow in modern life, making Saint-Exupéry's exploration of love and loneliness as vital now as it was then.\n", + "\n", + "Body Paragraph 2 - Responsibility and Self-Discovery:\n", + "Throughout the novella, Saint-Exupéry emphasizes the significance of taking responsibility and learning from one's experiences—core components of personal growth and self-discovery. The Little Prince's journey to various planets, each inhabited by an absurd, self-absorbed grown-up, reflects on the responsibility people have to learn from their actions and understand their impact on others. The modern world demands people to navigate complex social, professional, and personal situations daily. Thus, The Little Prince's lessons in responsibility and self-discovery are essential when addressing pressing issues like mental health, self-awareness, and communication in contemporary society.\n", + "\n", + "Body Paragraph 3 - The Superficiality of the Adult World:\n", + "Critics often discuss the novella's critique of the superficiality of the adult world, which remains relevant today, given society's heightened emphasis on materialism and status. The Little Prince's encounters with businessmen and geographers represent the folly of misunderstanding values and blindly pursuing worldly possessions. Today's capitalist societies frequently struggle to balance priorities, often rewarding materialistic pursuits over the development of meaningful relationships. The Little Prince serves as a profound reminder to maintain a sense of perspective, recognize the importance of intangible connections, and avoid the trappings of superficiality.\n", + "\n", + "Conclusion:\n", + "Ultimately, The Little Prince continues to top bestseller lists because its themes of love, loneliness, responsibility, and the superficiality of the adult world resonate with people across time and culture. The novella's resilient popularity and topicality reflect its relevance in tackling contemporary societal issues, making it a timeless masterpiece that transcends generations. As we navigate the complexities of modern life, The Little Prince's message is one we should keep close to our hearts: we must never lose sight of the simple, yet profound, lessons the story teaches us about cherishing meaningful connections, embracing personal growth, and resisting the shallow temptations of adult life.\n", + "\n", + "Revised Essay:\n", + "\n", + "Title: The Enduring Relevance of The Little Prince: Timeless Lessons for the 21st Century\n", + "\n", + "Introduction:\n", + "Antoine de Saint-Exupéry's The Little Prince is an enduring classic that has touched the hearts of millions since its publication in 1943. The novella has been translated into more than 300 languages, and over 200 million copies have been sold, making it one of the bestselling books ever written. The Little Prince's timeless message about love, friendship, responsibility, and the adult world remains incredibly relevant in the 21st century. This essay will analyze the topicality of The Little Prince and explore the many ways its universal themes connect with modern life.\n", + "\n", + "Body Paragraph 1 - Love, Loss, and Friendship:\n", + "The Little Prince teaches powerful lessons about love, friendship, and loss that continue to resonate with readers today. The novella's exploration of grief and heartache is as poignant today as it was when it was first published. The tales of the Little Prince's encounters with the fox, the rose, and his pilot highlight the transcendent power of meaningful connections and the pain of losing those we care about. In a digital age where fleeting online interactions can dominate our time, The Little Prince serves as a reminder to cherish genuine friendships and treasure the connections we make with others.\n", + "\n", + "Body Paragraph 2 - Responsibility, Personal Growth, and Emotional Intelligence:\n", + "Throughout the story, Saint-Exupéry highlights the significance of taking responsibility and engaging in self-discovery. The Little Prince's journey to various planets, each inhabited by a reductive grown-up, teaches the reader about the impact actions can have on others. In a world where emotional intelligence and empathy are increasingly vital due to ever-evolving social, professional, and personal obligations, The Little Prince's lessons on responsibility and personal growth remain crucial. Mental health, self-awareness, and communication are critical issues in modern society, making the exploration of these themes as essential in today's world as when the book was first published.\n", + "\n", + "Body Paragraph 3 - Rejecting the Superficiality of the Adult World:\n", + "The Little Prince's critique of the superficiality of the adult world remains strikingly relevant in modern society. The novel's portrait of grown-ups consumed by materialism, social status, and vanity rings true today, more than ever, as individuals and societies race to acquire wealth, status, and possessions. The Little Prince serves as a poignant reminder to resist the superficiality of the adult world and maintain a balanced perspective, cherishing meaningful connections and eschewing the trappings of materialism.\n", + "\n", + "Conclusion:\n", + "The Little Prince's universal themes continue to captivate and inspire readers because the lessons it teaches about love, friendship, responsibility, and the adult world are still incredibly pertinent today. The novel's topicality and enduring popularity validate its relevance in addressing contemporary societal issues like mental health, self-awareness, communication, and materialism. As we maneuver the challenges of the 21st century, The Little Prince's enduring wisdom—to cherish deep relationships, value personal growth, and reject the superficiality of adult life—continues to resonate and encourage readers to reassess their priorities and find meaning in connection and experience.\n", + "\n", + "================================\u001b[1m Human Message \u001b[0m=================================\n", + "\n", + "Introduction:\n", + "The essay provides a solid introduction to the topic, clearly stating the book's significance and its continued relevance in modern life. I would suggest providing more specific connections to the present day to emphasize the enduring relevance of The Little Prince. For instance, you could mention current events or issues that are directly related to the themes discussed in Saint-Exupéry's work (e.g., studies on loneliness and mental health in the digital age).\n", + "\n", + "Body Paragraph 1 - Love and Loneliness:\n", + "The paragraph effectively explains how the themes of love and loneliness resonate with the modern era. However, I would like to see more concrete examples from the book to strengthen the analysis. Consider providing a specific interaction or quote from The Little Prince to more directly tie it to the concepts of isolation, depression, and loneliness in today's world.\n", + "\n", + "Body Paragraph 2 - Responsibility and Self-Discovery:\n", + "This paragraph provides a good analysis of how Saint-Exupéry emphasizes responsibility and self-discovery. However, it could benefit from a stronger connection to contemporary society. It would be helpful to provide examples from real-life situations or psychological studies that demonstrate the importance of mental health, self-awareness, and communication in today's world.\n", + "\n", + "Body Paragraph 3 - The Superficiality of the Adult World:\n", + "The criticism of materialism and status in modern society is well-presented in this paragraph. However, you could strengthen the analysis by offering specific examples of the adult world's superficiality in the context of the 21st century, such as a focus on social media and online presence. Moreover, consider further elaborating on the contrast between the materialistic world and The Little Prince's emphasis on meaningful relationships.\n", + "\n", + "Conclusion:\n", + "The conclusion effectively summarizes the importance of the themes addressed in the novel. Nonetheless, it could benefit from a stronger final statement that reiterates the significance of the stories and lessons from The Little Prince in the modern context. Consider restating the main ideas in a way that reinforces the parallels between the book and contemporary life.\n", + "\n", + "Overall, I would encourage you to strengthen the connections between the novel's themes and modern society by providing more specific examples and relevant real-world issues. Furthermore, I recommend a word count of around 1,200-1,500 words for your essay to provide enough space to thoroughly analyze and discuss the topics presented. By offering a more in-depth analysis, your argument would become more persuasive and the relevance of the novel even more apparent.\n", + "\n", + "==================================\u001b[1m Ai Message \u001b[0m==================================\n", + "\n", + "Title: The Enduring Relevance of The Little Prince: Timeless Lessons for the 21st Century\n", + "\n", + "Introduction:\n", + "Antoine de Saint-Exupéry's The Little Prince continues to hold significance in modern life, touching the hearts of millions since its publication in 1943. With over 200 million copies sold and translations in more than 300 languages, its universal themes of love, friendship, responsibility, and the adult world resonate profoundly today (Soucy & Vedel, 2018). Today's society faces a myriad of challenges, including increasing social isolation, mental health issues, and materialism. This essay will explore the novel's powerful impact by offering concrete examples of its relevance in modern life and discussing the themes in the context of studies on loneliness, personal growth, and superficiality in the digital age.\n", + "\n", + "Body Paragraph 1 - Love, Loneliness, and Isolation:\n", + "The Little Prince's depiction of love and loneliness in various forms—between the prince and his rose, the fox, and the pilot—provides powerful insights into addressing isolation in the 21st century. In a study conducted by McPherson, Smith-Lovin, and Brashears (2006), they revealed an alarming decline in the number of confidants in individuals' lives, indicating growing isolation. Specifically, over the past two decades, the percentage of people who claim to have no one they can discuss important issues with has doubled (McPherson, Smith-Lovin, & Brashears, 2006). The Little Prince's portrayal of the prince's loneliness and his encounters with a variety of inhabitants emphasizes the importance of genuine companionship, transcending cultural barriers.\n", + "\n", + "Body Paragraph 2 - Responsibility, Personal Growth, and Emotional Intelligence:\n", + "Personal growth, responsibility, and self-awareness are vital themes in The Little Prince, which remain crucial for navigating the challenges of the 21st century. With increasing emphasis on mental health and well-being worldwide, Saint-Exupéry's exploration of self-awareness and personal growth is highly relevant. The Little Prince's encounters with grown-ups on various planets reveal the trappings of vanity, authority, and materialism (Soucy & Vedel, 2018). In response to the pressures of adulthood and rigid expectations, the novel advocates for personal growth and responsibility as essential ingredients for emotional intelligence. Research connecting emotional intelligence to mental health underscores the significance of the ideas presented in The Little Prince, demonstrating that higher emotional intelligence is positively associated with mental health and well-being (Schutte et al., 2001). This research supports the notion that the personal growth explored in The Little Prince remains a vital part of addressing mental health issues.\n", + "\n", + "Body Paragraph 3 - Materialism, Superficiality, and Social Media:\n", + "The Little Prince critiques the materialistic and superficial nature of the adult world, which is acutely visible in today's digital age and social media-dominated society. For instance, the novel's third chapter introduces the businessman, who spends his life counting stars, believing that \"owning\" them brings him both fame and fortune. This behavior can be likened to the modern obsession with online presence and an obsession with acquiring digital \"followers\" and \"likes.\" By highlighting the emptiness of the materialistic pursuits, The Little Prince shows readers the importance of genuine human connections and rejecting superficial distractions (Soucy & Vedel, 2018). These themes are particularly relevant today, as younger generations struggle to find balance between their online and offline lives, frequently confronted with issues related to superficiality, self-promotion, and digital personas.\n", + "\n", + "Conclusion:\n", + "The Little Prince is an enduring classic that offers timeless lessons on love, friendship, responsibility, and the superficiality of the adult world, which remain highly relevant today. In the context of the digital age and its myriad challenges, the novel's exploration of personal growth, mental health, materialism, and loneliness provides critical insights for contemporary society. The Little Prince reminds us to cherish and foster deep, meaningful relationships, engage in self-discovery, and resist the superficiality of the adult world. By doing so, we can preserve the essence of human connection and continue to find relevance in the novel's wisdom and the importance of its messages in our daily lives.\n", + "\n", + "================================\u001b[1m Human Message \u001b[0m=================================\n", + "\n", + "The revised essay now provides a more in-depth analysis of the novel's themes and their relevance in the context of modern society, studies on loneliness, personal growth, and superficiality. The addition of specific examples from both the book and real-world research strengthens the argument, bolstering the claim that The Little Prince remains a timeless and relevant work in the 21st century. Overall, the essay conveys a thorough exploration of the novel's impact and significance.\n", + "\n", + "==================================\u001b[1m Ai Message \u001b[0m==================================\n", + "\n", + "Title: The Enduring Relevance of The Little Prince: Timeless Lessons for the 21st Century\n", + "\n", + "Introduction:\n", + "Antoine de Saint-Exupéry's The Little Prince continues to hold significance in modern life, touching the hearts of millions since its publication in 1943. With over 200 million copies sold and translations in more than 300 languages, its universal themes of love, friendship, responsibility, and the adult world resonate profoundly today (Soucy & Vedel, 2018). Today's society faces a myriad of challenges, including increasing social isolation, mental health issues, and materialism. This essay will explore the novel's powerful impact by offering concrete examples of its relevance in modern life and discussing the themes in the context of studies on loneliness, personal growth, and superficiality in the digital age.\n", + "\n", + "Body Paragraph 1 - Love, Loneliness, and Isolation:\n", + "The Little Prince's depiction of love and loneliness in various forms—between the prince and his rose, the fox, and the pilot—provides powerful insights into addressing isolation in the 21st century. In a study conducted by McPherson, Smith-Lovin, and Brashears (2006), they revealed an alarming decline in the number of confidants in individuals' lives, indicating growing isolation. Specifically, over the past two decades, the percentage of people who claim to have no one they can discuss important issues with has doubled (McPherson, Smith-Lovin, & Brashears, 2006). The Little Prince's portrayal of the prince's loneliness and his encounters with a variety of inhabitants emphasizes the importance of genuine companionship, transcending cultural barriers.\n", + "\n", + "One scene that highlights the emotional impact of loneliness is the Little Prince's relationship with his rose, which illustrates the often-complex nature of human relationships. The prince's devotion to the rose, despite her shortcomings, underscores how even the most frustrating relationships can bring solace to those yearning for connection. In the digital age, social media and other online platforms can be sources of isolation, rather than connection, and The Little Prince challenges readers to cherish in-person interactions and prioritize genuine human relationships over superficial online exchanges.\n", + "\n", + "Body Paragraph 2 - Responsibility, Personal Growth, and Emotional Intelligence:\n", + "Personal growth, responsibility, and self-awareness are vital themes in The Little Prince, which remain crucial for navigating the challenges of the 21st century. With increasing emphasis on mental health and well-being worldwide, Saint-Exupéry's exploration of self-awareness and personal growth is highly relevant. The Little Prince's encounters with grown-ups on various planets reveal the trappings of vanity, authority, and materialism (Soucy & Vedel, 2018). In response to the pressures of adulthood and rigid expectations, the novel advocates for personal growth and responsibility as essential ingredients for emotional intelligence.\n", + "\n", + "Studies have consistently linked emotional intelligence to mental health, providing further support for the themes present in The Little Prince. Research conducted by Schutte and colleagues (2001) found that higher emotional intelligence was positively associated with mental health and well-being, suggesting that the novel's focus on personal growth and responsibility provides valuable insights for today's 21st-century society. The novel challenges readers to question the adult world's superficiality, pursue self-awareness, and foster emotional intelligence as a means of developing resilience in the face of modern-day challenges.\n", + "\n", + "Body Paragraph 3 - Materialism, Superficiality, and Social Media:\n", + "The Little Prince critiques the materialistic and superficial nature of the adult world, which is acutely visible in today's digital age and social media-dominated society. For instance, the novel's third chapter introduces the businessman, who spends his life counting stars, believing that \"owning\" them brings him both fame and fortune. This behavior can be likened to the modern obsession with online presence, where people often focus on the accumulation of \"likes\" and \"followers.\" \n", + "\n", + "Research suggests that Facebook, Instagram, and Twitter use may contribute to decreased well-being and increased loneliness, underscoring Saint-Exupéry's prescient examination of the superficiality of modern society (Kross et al., 2013). The Little Prince encourages its readers to seek genuine connections and engage with the world around them, minimizing the allure of superficial distractions. As digital natives grapple with maintaining healthy digital personas, the novel's messages about the importance of meaningful relationships and personal responsibility remain more relevant than ever.\n", + "\n", + "Conclusion:\n", + "The Little Prince is an enduring classic that offers timeless lessons on love, friendship, responsibility, and the superficiality of the adult world, which remain highly relevant today. In the context of the digital age and its myriad challenges, the novel's exploration of personal growth, mental health, materialism, and loneliness provides critical insights for contemporary society. The Little Prince reminds us to cherish and foster deep, meaningful relationships, engage in self-discovery, and resist the superficiality of the adult world. By doing so, we can preserve the essence of human connection and continue to find relevance in the novel's wisdom and the importance of its messages in our daily lives.\n", + "\n", + "================================\u001b[1m Human Message \u001b[0m=================================\n", + "\n", + "The revised essay expands on the themes presented in the novel and their relevance to modern society, integrating real-world research, specific examples from The Little Prince, and addressing the issues of social media and materialism in an insightful manner. The essay demonstrates a thorough understanding of the novel's impact and significance in the 21st century, offering a compelling analysis of its continued relevance.\n", + "\n", + "==================================\u001b[1m Ai Message \u001b[0m==================================\n", + "\n", + "Title: The Enduring Relevance of The Little Prince: Timeless Lessons for the 21st Century\n", + "\n", + "Introduction:\n", + "Antoine de Saint-Exupéry's The Little Prince continues to captivate readers as a classic tale that carries significant implications for contemporary society. With over 200 million copies sold and translations in more than 300 languages, its universal themes of love, friendship, responsibility, and the superficiality of the adult world remain profoundly relevant in the 21st century. As society grapples with increasing social isolation, mental health issues, and materialism, this essay explores the novel's powerful impact by discussing its themes in the context of studies on loneliness, personal growth, and superficiality in the digital age.\n", + "\n", + "Body Paragraph 1 - Love, Loneliness, and Isolation:\n", + "The Little Prince addresses themes of love and loneliness that still resonate strongly in today's world. The novel's portrayal of the prince's relationships emphasizes the significance of in-person connections in a time when digital communication dominates many aspects of everyday life. In a study conducted by McPherson, Smith-Lovin, and Brashears (2006), the authors revealed an alarming decline in the number of confidants in individuals' lives, indicating growing isolation. The Little Prince challenges readers to prioritize genuine human relationships over superficial online exchanges.\n", + "\n", + "One notable scene in The Little Prince portrays the emotional impact of loneliness. The little prince's devotion to his rose, despite her flaws, highlights the value of even the most frustrating relationships in providing solace to those yearning for connection. The novel encourages readers to seek and maintain in-person interactions and forge emotional bonds that can help mitigate the feelings of loneliness and isolation that may arise in the modern age.\n", + "\n", + "Body Paragraph 2 - Responsibility, Personal Growth, and Emotional Intelligence:\n", + "The Little Prince emphasizes responsibility, self-awareness, and personal growth as critical components of emotional intelligence, which remains salient in modern society. Research consistently links emotional intelligence to mental health and well-being. A 2001 study conducted by Schutte and colleagues found that higher emotional intelligence was associated with fewer symptoms of anxiety and depression, suggesting that the novel's focus on personal growth and self-awareness offers valuable insights in the face of today's challenges.\n", + "\n", + "In response to the pressures of adulthood and rigid expectations, the novel underscores the importance of pursuing personal growth and responsibility, embracing self-discovery, and nurturing emotional intelligence as a means of coping with the complexities of life in contemporary society. According to Salovey and Mayer (1990), growing emotional intelligence allows individuals to understand their own emotions and those of others more deeply, which contributes to overall mental well-being.\n", + "\n", + "Body Paragraph 3 - Materialism, Superficiality, and Social Media:\n", + "The Little Prince critiques the materialistic and superficial nature of the adult world, which becomes more apparent in the digital age and social media-dominated society. The novel introduces characters like the businessman, who devotes his life to counting stars while prioritizing material possessions and wealth over genuine relationships. This behavior can be likened to the modern trend of cultivating an online presence and seeking validation through the accumulation of \"likes\" and \"followers.\"\n", + "\n", + "Research suggests that social media use may have detrimental effects on mental health and well-being. For example, a study conducted by Kross et al. (2013) found that frequent Facebook use was associated with decreased well-being and increased loneliness, supporting The Little Prince's assertion that superficiality and materialism can have damaging consequences on mental health. The novel encourages readers to engage with the world around them and seek genuine connections that transcend superficial distractions.\n", + "\n", + "Conclusion:\n", + "The Little Prince remains a timeless and relevant work in the 21st century. The novel's exploration of topics such as personal growth, mental health, materialism, and loneliness continues to offer valuable insights for contemporary society. The novel challenges readers to cherish and foster deep, meaningful relationships, engage in self-discovery, and resist the superficiality and materialism prevalent in today's world. By doing so, The Little Prince reminds us of the wisdom it possesses and the importance of its themes in our daily lives.\n" + ] + } + ], + "source": [ + "ChatPromptTemplate.from_messages(event[END]).pretty_print()" + ] + }, + { + "cell_type": "markdown", + "id": "0fa62df2-e8ee-40dd-ac95-9d982eae6079", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "Now that you've applied reflection to an LLM agent, I'll note one thing: self-reflection is inherantly cyclic: it is much more effective if the reflection step has additional context or feedback (from tool observations, checks, etc.). If, like in the scenario above, the reflection step simply prompts the LLM to reflect on its output, it can still benefit the output quality (since the LLM then has multiple \"shots\" at getting a good output), but it's less guaranteed.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7c0e3efd-7f54-410e-bd31-36185a46b9a8", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/reflexion/img/reflexion.png b/examples/reflexion/img/reflexion.png new file mode 100644 index 000000000..929be2e64 Binary files /dev/null and b/examples/reflexion/img/reflexion.png differ diff --git a/examples/reflexion/reflexion.ipynb b/examples/reflexion/reflexion.ipynb new file mode 100644 index 000000000..3a1e90160 --- /dev/null +++ b/examples/reflexion/reflexion.ipynb @@ -0,0 +1,552 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "22942f7e-3446-4009-b551-cca7fcc25d73", + "metadata": {}, + "source": [ + "# Reflexion\n", + "\n", + "[Reflexion](https://arxiv.org/abs/2303.11366) by Shinn, et. al., is an architecture designed to learn through verbal feedback and self-reflection. The agent explicitly critiques its responses for tasks to generate a higher quality final response, at the expense of longer execution time.\n", + "\n", + "![reflexion diagram](./img/reflexion.png)\n", + "\n", + "The paper outlines 3 main components:\n", + "\n", + "1. Actor (agent) with self-reflection\n", + "2. External evaluator (task-specific, e.g. code compilation steps)\n", + "3. Episodic memory that stores the reflections from (1).\n", + "\n", + "In their code, the last two components are very task-specific, so in this notebook, you will build the _actor_ in LangGraph.\n", + "\n", + "To skip to the graph definition, see the [Construct Graph section](#Construct-Graph) below." + ] + }, + { + "cell_type": "markdown", + "id": "906edf48-7c81-48b8-8250-fdc34043d01b", + "metadata": {}, + "source": [ + "## 0. Prerequisites\n", + "\n", + "Install `langgraph` (for the framework), `langchain_openai` (for the LLM), and `langchain` + `tavily-python` (for the search engine).\n", + "\n", + "We will use tavily search as a tool. You can get an API key [here](https://app.tavily.com/sign-in) or replace with a different tool of your choosing." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "1b64a6f6-1d32-48be-92b5-66c3b04b17f7", + "metadata": {}, + "outputs": [], + "source": [ + "# %pip install -U --quiet langchain langgraph langchain_openai\n", + "# %pip install -U --quiet tavily-python" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "a917bb70-f84c-48e6-8d32-d14f9df2ca2f", + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "import os\n", + "\n", + "\n", + "def _set_if_undefined(var: str) -> None:\n", + " if os.environ.get(var):\n", + " return\n", + " os.environ[var] = getpass.getpass(var)\n", + "\n", + "\n", + "# Optional: Configure tracing to visualize and debug the agent\n", + "_set_if_undefined(\"LANGCHAIN_API_KEY\")\n", + "os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n", + "os.environ[\"LANGCHAIN_PROJECT\"] = \"Reflexion\"\n", + "\n", + "_set_if_undefined(\"OPENAI_API_KEY\")\n", + "_set_if_undefined(\"TAVILY_API_KEY\")" + ] + }, + { + "cell_type": "markdown", + "id": "af543598-52d0-4ec3-a05f-d2954ff793ee", + "metadata": {}, + "source": [ + "## 1. Actor (with reflection)\n", + "\n", + "The main component of Reflexion is the \"actor\", which is an agent that reflects on its response and re-executes to improve based on self-critique. It's main sub-components include:\n", + "1. Tools/tool execution\n", + "2. Initial responder: generate an initial response (and self-reflection)\n", + "3. Revisor: re-respond (and reflec) based on previous reflections\n", + "\n", + "We'll first define the tool execution context.\n", + "\n", + "#### Construct tools" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "5a2ac853-b8a6-40de-b7fe-3f9f3c5ca4d2", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langchain_community.utilities.tavily_search import TavilySearchAPIWrapper\n", + "\n", + "search = TavilySearchAPIWrapper()\n", + "tavily_tool = TavilySearchResults(api_wrapper=search, max_results=5)" + ] + }, + { + "cell_type": "markdown", + "id": "737fd31c-b4e9-47f9-a4e8-99fab340a028", + "metadata": {}, + "source": [ + "The tools are invoked _in context_. Create a function that invokes all the requested tools." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "82f144fc-e6fa-4e4f-a8af-1a0650e79fe3", + "metadata": {}, + "outputs": [], + "source": [ + "from collections import defaultdict\n", + "from typing import List\n", + "\n", + "from langchain.output_parsers.openai_tools import (\n", + " JsonOutputToolsParser,\n", + " PydanticToolsParser,\n", + ")\n", + "from langchain_core.messages import AIMessage, BaseMessage, HumanMessage, ToolMessage\n", + "from langgraph.prebuilt.tool_executor import ToolExecutor, ToolInvocation\n", + "\n", + "# This a helper class we have that is useful for running tools\n", + "# It takes in an agent action and calls that tool and returns the result\n", + "tool_executor = ToolExecutor([tavily_tool])\n", + "# Parse the tool messages for the execution / invocation\n", + "parser = JsonOutputToolsParser(return_id=True)\n", + "\n", + "\n", + "def execute_tools(state: List[BaseMessage]) -> List[BaseMessage]:\n", + " tool_invocation: AIMessage = state[-1]\n", + " parsed_tool_calls = parser.invoke(tool_invocation)\n", + " ids = []\n", + " tool_invocations = []\n", + " for parsed_call in parsed_tool_calls:\n", + " for query in parsed_call[\"args\"][\"search_queries\"]:\n", + " tool_invocations.append(\n", + " ToolInvocation(\n", + " # We only have this one for now. Would want to map it\n", + " # if we change\n", + " tool=\"tavily_search_results_json\",\n", + " tool_input=query,\n", + " )\n", + " )\n", + " ids.append(parsed_call[\"id\"])\n", + "\n", + " outputs = tool_executor.batch(tool_invocations)\n", + " outputs_map = defaultdict(dict)\n", + " for id_, output, invocation in zip(ids, outputs, tool_invocations):\n", + " outputs_map[id_][invocation.tool_input] = output\n", + "\n", + " return [\n", + " ToolMessage(content=json.dumps(query_outputs), tool_call_id=id_)\n", + " for id_, query_outputs in outputs_map.items()\n", + " ]" + ] + }, + { + "cell_type": "markdown", + "id": "093fbaa0-9a71-4c32-9872-02a9aec9b35d", + "metadata": {}, + "source": [ + "#### Initial responder" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "5fffa8d5-068a-4f0b-adfc-b4daf30ef294", + "metadata": {}, + "outputs": [], + "source": [ + "import datetime\n", + "\n", + "from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder\n", + "from langchain_core.pydantic_v1 import BaseModel, Field, ValidationError\n", + "from langchain_openai import ChatOpenAI\n", + "from langsmith import traceable\n", + "\n", + "actor_prompt_template = ChatPromptTemplate.from_messages(\n", + " [\n", + " (\n", + " \"system\",\n", + " \"\"\"You are expert researcher.\n", + "Current time: {time}\n", + "\n", + "1. {first_instruction}\n", + "2. Reflect and critique your answer. Be severe to maximize improvement.\n", + "3. Recommend search queries to research information and improve your answer.\"\"\",\n", + " ),\n", + " MessagesPlaceholder(variable_name=\"messages\"),\n", + " (\"system\", \"Answer the user's question above using the required format.\"),\n", + " ]\n", + ").partial(\n", + " time=lambda: datetime.datetime.now().isoformat(),\n", + ")\n", + "\n", + "\n", + "class Reflection(BaseModel):\n", + " missing: str = Field(description=\"Critique of what is missing.\")\n", + " superfluous: str = Field(description=\"Critique of what is superfluous\")\n", + "\n", + "\n", + "class AnswerQuestion(BaseModel):\n", + " \"\"\"Answer the question.\"\"\"\n", + "\n", + " answer: str = Field(description=\"~250 word detailed answer to the question.\")\n", + " reflection: Reflection = Field(description=\"Your reflection on the initial answer.\")\n", + " search_queries: List[str] = Field(\n", + " description=\"1-3 search queries for researching improvements to address the critique of your current answer.\"\n", + " )\n", + "\n", + "\n", + "llm = ChatOpenAI(model=\"gpt-4-turbo-preview\")\n", + "initial_answer_chain = actor_prompt_template.partial(\n", + " first_instruction=\"Provide a detailed ~250 word answer.\"\n", + ") | llm.bind_tools(tools=[AnswerQuestion], tool_choice=\"AnswerQuestion\")\n", + "validator = PydanticToolsParser(tools=[AnswerQuestion])\n", + "\n", + "\n", + "class ResponderWithRetries:\n", + " def __init__(self, runnable, validator):\n", + " self.runnable = runnable\n", + " self.validator = validator\n", + "\n", + " @traceable\n", + " def respond(self, state: List[BaseMessage]):\n", + " response = []\n", + " for attempt in range(3):\n", + " try:\n", + " response = self.runnable.invoke({\"messages\": state})\n", + " self.validator.invoke(response)\n", + " return response\n", + " except ValidationError as e:\n", + " state = state + [HumanMessage(content=repr(e))]\n", + " return response" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "4a0264b8-ed2d-4f15-9d3c-085aa3a5edab", + "metadata": {}, + "outputs": [], + "source": [ + "first_responder = ResponderWithRetries(\n", + " runnable=initial_answer_chain, validator=validator\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "5922e1fe-7533-4f41-8b1d-d812707c1968", + "metadata": {}, + "outputs": [], + "source": [ + "example_question = \"Why is reflection useful in AI?\"\n", + "initial = first_responder.respond([HumanMessage(content=example_question)])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20901d77-0f5f-4596-90a4-412c0ac5f2c2", + "metadata": {}, + "outputs": [], + "source": [ + "parsed = parser.invoke(initial)\n", + "parsed" + ] + }, + { + "cell_type": "markdown", + "id": "c4c7af31-b469-46fc-b441-0acb28515c7a", + "metadata": {}, + "source": [ + "#### Revision\n", + "\n", + "The second part of the actor is a revision step." + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "2605fd8d-c663-446f-ba25-751190195749", + "metadata": {}, + "outputs": [], + "source": [ + "revise_instructions = \"\"\"Revise your previous answer using the new information.\n", + " - You should use the previous critique to add important information to your answer.\n", + " - You MUST include numerical citations in your revised answer to ensure it can be verified.\n", + " - Add a \"References\" section to the bottom of your answer (which does not count towards the word limit). In form of:\n", + " - [1] https://example.com\n", + " - [2] https://example.com\n", + " - You should use the previous critique to remove superfluous information from your answer and make SURE it is not more than 250 words.\n", + "\"\"\"\n", + "\n", + "\n", + "# Extend the initial answer schema to include references.\n", + "# Forcing citation in the model encourages grounded responses\n", + "class ReviseAnswer(AnswerQuestion):\n", + " \"\"\"Revise your original answer to your question.\"\"\"\n", + "\n", + " references: List[str] = Field(\n", + " description=\"Citations motivating your updated answer.\"\n", + " )\n", + "\n", + "\n", + "revision_chain = actor_prompt_template.partial(\n", + " first_instruction=revise_instructions\n", + ") | llm.bind_tools(tools=[ReviseAnswer], tool_choice=\"ReviseAnswer\")\n", + "revision_validator = PydanticToolsParser(tools=[ReviseAnswer])\n", + "\n", + "revisor = ResponderWithRetries(runnable=revision_chain, validator=revision_validator)" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "6fd51f17-c0b0-44b6-90e2-55a66cb8f5a7", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "\n", + "revised = revisor.respond(\n", + " [\n", + " HumanMessage(content=\"\"),\n", + " initial,\n", + " ToolMessage(\n", + " tool_call_id=initial.additional_kwargs[\"tool_calls\"][0][\"id\"],\n", + " content=json.dumps(\n", + " tavily_tool.invoke(str(parsed[0][\"args\"][\"search_queries\"]))\n", + " ),\n", + " ),\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "28685e81-5461-47fe-bebd-2af6e552761b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'type': 'ReviseAnswer',\n", + " 'args': {'answer': \"Reflection in AI refers to the ability of AI systems to analyze and adapt their behavior and algorithms autonomously. This introspective capability enhances AI's performance and adaptability, making it crucial for learning, transparency, and optimization. \\n\\nReflection enables AI to learn from experiences, adjusting strategies for better decision-making. For example, Google DeepMind's AI has shown significant advancements in learning and adapting strategies in various environments [1]. Moreover, AI systems can explain their decisions, supporting the development of explainable AI (XAI), vital in sensitive sectors like healthcare and autonomous driving. This increases user trust and acceptance by providing insights into AI's decision-making processes. \\n\\nAdditionally, reflection aids in debugging and improving AI models by identifying weaknesses and suggesting enhancements. For instance, AI in healthcare, like the Mayo Clinic's use of medical data analytics, demonstrates how reflective AI can optimize algorithms to provide better patient care [2]. \\n\\nIn summary, reflection in AI fosters learning and adaptation, enhances transparency and trust, and facilitates model optimization, contributing to the development of sophisticated, reliable AI systems.\",\n", + " 'reflection': {'missing': 'The previous answer lacked specific examples and case studies to illustrate the benefits of reflection in AI. Including such examples would provide a more concrete understanding of the concept and its applications.',\n", + " 'superfluous': 'The initial answer was comprehensive but could benefit from direct examples to demonstrate the practical applications and benefits of reflection in AI, rather than a broad overview without concrete cases.'},\n", + " 'search_queries': ['Google DeepMind reflective AI examples',\n", + " 'Mayo Clinic AI case study',\n", + " 'Reflective AI benefits in healthcare'],\n", + " 'references': ['https://casestudybuddy.com/blog/best-ai-case-study-examples/',\n", + " 'https://indatalabs.com/blog/artificial-intelligence-case-studies']},\n", + " 'id': 'call_0kZkZgn5DP2Z8VhRtxGkXDp5'}]" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "parsed = parser.invoke(revised)\n", + "parsed" + ] + }, + { + "cell_type": "markdown", + "id": "e623a6c9-b69b-438c-9e6e-34a8883e0623", + "metadata": {}, + "source": [ + "## Construct Graph\n", + "\n", + "\n", + "Now we can wire all our components together." + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "id": "3c57318f-a30c-4dbd-9b88-f2633e8cb3b1", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import END, MessageGraph\n", + "\n", + "MAX_ITERATIONS = 5\n", + "builder = MessageGraph()\n", + "builder.add_node(\"draft\", first_responder.respond)\n", + "builder.add_node(\"execute_tools\", execute_tools)\n", + "builder.add_node(\"revise\", revisor.respond)\n", + "# draft -> execute_tools\n", + "builder.add_edge(\"draft\", \"execute_tools\")\n", + "# execute_tools -> revise\n", + "builder.add_edge(\"execute_tools\", \"revise\")\n", + "\n", + "# Define looping logic:\n", + "\n", + "\n", + "def _get_num_iterations(state: List[BaseMessage]):\n", + " i = 0\n", + " for m in state[::-1]:\n", + " if not isinstance(m, (ToolMessage, AIMessage)):\n", + " break\n", + " i += 1\n", + " return i\n", + "\n", + "\n", + "def event_loop(state: List[BaseMessage]) -> str:\n", + " # in our case, we'll just stop after N plans\n", + " num_iterations = _get_num_iterations(state)\n", + " if num_iterations > MAX_ITERATIONS:\n", + " return END\n", + " return \"execute_tools\"\n", + "\n", + "\n", + "# revise -> execute_tools OR end\n", + "builder.add_conditional_edges(\"revise\", event_loop)\n", + "builder.set_entry_point(\"draft\")\n", + "graph = builder.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "2634a3ea-7423-4579-9f4e-390e439c3209", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "## 1. draft\n", + "content='' additional_kwargs={'tool_calls': [{'id': 'call_GOmUTyAeA8kLLm4G9sXZ4jGV', 'function': {'a ...\n", + "---\n", + "## 2. execute_tools\n", + "[ToolMessage(content='{\"successful climate policies examples\": [{\"url\": \"https://www.washingtonpost. ...\n", + "---\n", + "## 3. revise\n", + "content='' additional_kwargs={'tool_calls': [{'id': 'call_Z0dky70zr74bLi6dBfQTCj6j', 'function': {'a ...\n", + "---\n", + "## 4. execute_tools\n", + "[ToolMessage(content='{\"successful climate policies examples\": [{\"url\": \"https://www.washingtonpost. ...\n", + "---\n", + "## 5. revise\n", + "content='' additional_kwargs={'tool_calls': [{'id': 'call_tM6DgVvQoux8IDIkRlrUKwOj', 'function': {'a ...\n", + "---\n", + "## 6. execute_tools\n", + "[ToolMessage(content='{\"successful climate policies examples\": [{\"url\": \"https://www.washingtonpost. ...\n", + "---\n", + "## 7. revise\n", + "content='' additional_kwargs={'tool_calls': [{'id': 'call_XkarDDuEf43cOBPn9zNXN8vM', 'function': {'a ...\n", + "---\n", + "## 8. __end__\n", + "[HumanMessage(content='How should we handle the climate crisis?'), AIMessage(content='', additional_ ...\n", + "---\n" + ] + } + ], + "source": [ + "events = graph.stream(\n", + " [HumanMessage(content=\"How should we handle the climate crisis?\")]\n", + ")\n", + "for i, step in enumerate(events):\n", + " node, output = next(iter(step.items()))\n", + " print(f\"## {i+1}. {node}\")\n", + " print(str(output)[:100] + \" ...\")\n", + " print(\"---\")" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "c9195436-aed9-4356-948b-2ca081a6d0bf", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Addressing the climate crisis requires a comprehensive approach, combining policy, technology, and finance. Successful policy initiatives include the U.S. Army's carbon footprint reduction, federal funding to plug methane-leaking wells, and Ithaca, NY's building decarbonization [1]. Renewable energy, particularly solar and wind, is forecasted to surpass coal by 2025, demonstrating the critical role of transitioning to sustainable energy sources [2]. Technological innovations are essential, with significant advancements in solar cell efficiency, data-driven climate adaptation technologies, and efforts to replace or mitigate major emission sources [3][4][5]. Financial mechanisms are pivotal, with climate finance needing a substantial increase to meet global warming limits. The U.S. has made progress by significantly enhancing its international public climate finance, exemplifying financial commitment to supporting global climate action [6]. This holistic strategy, integrating policy, technological innovation, and finance, represents the most effective way to tackle the climate crisis, emphasizing sustainability, innovation, and global cooperation.\n", + "\n", + "References:\n", + "[1] https://www.washingtonpost.com/climate-solutions/2022/04/21/climate-change-policy-examples-list/\n", + "[2] https://www.weforum.org/agenda/2024/01/climate-transition-tipping-point/\n", + "[3] https://www.technologyreview.com/2024/01/11/1086412/three-climate-technologies-breaking-through-in-2024/\n", + "[4] https://unfccc.int/news/how-climate-technology-is-being-ramped-up\n", + "[5] https://www.weforum.org/agenda/2024/02/ai-climate-adaptation-technologies/\n", + "[6] https://www.state.gov/progress-report-on-president-bidens-climate-finance-pledge/\n" + ] + } + ], + "source": [ + "print(parser.invoke(step[END][-1])[0][\"args\"][\"answer\"])" + ] + }, + { + "cell_type": "markdown", + "id": "7159e30c-728e-480d-8252-915404cc756d", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "Congrats on building a Reflexion actor! I'll leave you with a few observations to save you some time when choosing which parts of this agent ot adapt to your workflow:\n", + "1. This agent trades off execution time for quality. It explicitly forces the agent to critique and revise the output over several steps, which usually (not always) increases the response quality but takes much longer to return a final answer\n", + "2. The 'reflections' can be paired with additional external feedback (such as validators), to further guide the actor.\n", + "3. In the paper, 1 environment (AlfWorld) uses external memory. It does this by storing summaries of the reflections to an external store and using them in subsequent trials/invocations." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "140c1961-64f6-41f1-9b80-f09deffae21f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/rewoo/img/rewoo-paper-workflow.png b/examples/rewoo/img/rewoo-paper-workflow.png new file mode 100644 index 000000000..cdfc7261f Binary files /dev/null and b/examples/rewoo/img/rewoo-paper-workflow.png differ diff --git a/examples/rewoo/img/rewoo.png b/examples/rewoo/img/rewoo.png new file mode 100644 index 000000000..48af25d57 Binary files /dev/null and b/examples/rewoo/img/rewoo.png differ diff --git a/examples/rewoo/rewoo.ipynb b/examples/rewoo/rewoo.ipynb new file mode 100644 index 000000000..218713d2e --- /dev/null +++ b/examples/rewoo/rewoo.ipynb @@ -0,0 +1,486 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "1c161710-fc66-426f-8c96-28440b9c9626", + "metadata": {}, + "source": [ + "# Reasoning without Observation\n", + "\n", + "In [ReWOO](https://arxiv.org/abs/2305.18323), Xu, et. al, propose an agent that combines a multi-step planner and variable substitution for effective tool use. It was designed to improve on the ReACT-style agent architecture in the following ways:\n", + "\n", + "1. Reduce token consumption and execution time by generating the full chain of tools used in a single pass. (_ReACT-style agent architecture requires many LLM calls with redundant prefixes (since the system prompt and previous steps are provided to the LLM for each reasoning step_)\n", + "2. Simplify the fine-tuning process. Since the planning data doesn't depend on the outputs of the tool, models can be fine-tuned without actually invoking the tools (in theory).\n", + "\n", + "\n", + "The following diagram outlines ReWOO's overall computation graph:\n", + "\n", + "![ReWoo Diagram](./img/rewoo.png)\n", + "\n", + "ReWOO is made of 3 modules:\n", + "\n", + "1. 🧠**Planner**: Generate the plan in the following format:\n", + "```text\n", + "Plan: \n", + "#E1 = Tool[argument for tool]\n", + "Plan: \n", + "#E2 = Tool[argument for tool with #E1 variable substitution]\n", + "...\n", + "```\n", + "3. **Worker**: executes the tool with the provided arguments.\n", + "4. 🧠**Solver**: generates the answer for the initial task based on the tool observations.\n", + "\n", + "The modules with a 🧠 emoji depend on an LLM call. Notice that we avoid redundant calls to the planner LLM by using variable substitution.\n", + "\n", + "In this example, each module is represented by a LangGraph node. The end result will leave a trace that looks [like this one](https://smith.langchain.com/public/39dbdcf8-fbcc-4479-8e28-15377ca5e653/r). Let's get started!\n", + "\n", + "## 0. Prerequisites\n", + "\n", + "For this example, we will provide the agent with a Tavily search engine tool. You can get an API key [here](https://app.tavily.com/sign-in) or replace with a free tool option (e.g., [duck duck go search](https://python.langchain.com/docs/integrations/tools/ddg)).\n", + "\n", + "To see the full langsmith trace, you can s" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7f52bded-9d23-4826-8bfc-20b0d3a51182", + "metadata": {}, + "outputs": [], + "source": [ + "# %pip install -U langgraph langchain_community langchain_openai tavily-python" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "4215f9fb-71ff-4d88-8484-f73174db5592", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import getpass\n", + "\n", + "\n", + "def _set_if_undefined(var: str):\n", + " if not os.environ.get(var):\n", + " os.environ[var] = getpass.getpass(f\"{var}=\")\n", + "\n", + "\n", + "os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n", + "os.environ[\"LANGCHAIN_PROJECT\"] = \"ReWOO\"\n", + "_set_if_undefined(\"TAVILY_API_KEY\")\n", + "_set_if_undefined(\"LANGCHAIN_API_KEY\")\n", + "_set_if_undefined(\"OPENAI_API_KEY\")" + ] + }, + { + "cell_type": "markdown", + "id": "55239a14-a14d-4117-adb5-07199e1e5e16", + "metadata": {}, + "source": [ + "**Graph State**: In LangGraph, every node updates a shared graph state. The state is the input to any node whenever it is invoked.\n", + "\n", + "Below, we will define a state dict to contain the task, plan, steps, and other variables." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "9a92c875-c20b-4b7e-9d88-61c62382f8e2", + "metadata": {}, + "outputs": [], + "source": [ + "from typing import TypedDict, List\n", + "\n", + "\n", + "class ReWOO(TypedDict):\n", + " task: str\n", + " plan_string: str\n", + " steps: List\n", + " results: dict\n", + " result: str" + ] + }, + { + "cell_type": "markdown", + "id": "997f9181-41c0-4c44-937d-94bd3946a929", + "metadata": {}, + "source": [ + "## 1. Planner\n", + "\n", + "The planner prompts an LLM to generate a plan in the form of a task list. The arguments to each task are strings that may contain special variables (`#E{0-9}+`) that are used for variable subtitution from other task results.\n", + "\n", + "\n", + "![ReWOO workflow](./img/rewoo-paper-workflow.png)\n", + "\n", + "Our example agent will have two tools: \n", + "1. Google - a search engine (in this case Tavily)\n", + "2. LLM - an LLM call to reason about previous outputs.\n", + "\n", + "The LLM tool receives less of the prompt context and so can be more token-efficient than the ReACT paradigm." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "c8836921-c89e-42b6-8c71-27aeaeac5368", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_openai import ChatOpenAI\n", + "\n", + "model = ChatOpenAI(temperature=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "7e7faa92-30a1-4942-b3c7-acd3a7bfccbc", + "metadata": {}, + "outputs": [], + "source": [ + "prompt = \"\"\"For the following task, make plans that can solve the problem step by step. For each plan, indicate \\\n", + "which external tool together with tool input to retrieve evidence. You can store the evidence into a \\\n", + "variable #E that can be called by later tools. (Plan, #E1, Plan, #E2, Plan, ...)\n", + "\n", + "Tools can be one of the following:\n", + "(1) Google[input]: Worker that searches results from Google. Useful when you need to find short\n", + "and succinct answers about a specific topic. The input should be a search query.\n", + "(2) LLM[input]: A pretrained LLM like yourself. Useful when you need to act with general\n", + "world knowledge and common sense. Prioritize it when you are confident in solving the problem\n", + "yourself. Input can be any instruction.\n", + "\n", + "For example,\n", + "Task: Thomas, Toby, and Rebecca worked a total of 157 hours in one week. Thomas worked x\n", + "hours. Toby worked 10 hours less than twice what Thomas worked, and Rebecca worked 8 hours\n", + "less than Toby. How many hours did Rebecca work?\n", + "Plan: Given Thomas worked x hours, translate the problem into algebraic expressions and solve\n", + "with Wolfram Alpha. #E1 = WolframAlpha[Solve x + (2x − 10) + ((2x − 10) − 8) = 157]\n", + "Plan: Find out the number of hours Thomas worked. #E2 = LLM[What is x, given #E1]\n", + "Plan: Calculate the number of hours Rebecca worked. #E3 = Calculator[(2 ∗ #E2 − 10) − 8]\n", + "\n", + "Begin! \n", + "Describe your plans with rich details. Each Plan should be followed by only one #E.\n", + "\n", + "Task: {task}\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "72b4ab0f-7215-4f4b-9407-0ebad8b13b92", + "metadata": {}, + "outputs": [], + "source": [ + "task = \"what is the hometown of the 2024 australian open winner\"" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "56ecb45b-ea76-4303-a4f3-51406fe8312a", + "metadata": {}, + "outputs": [], + "source": [ + "result = model.invoke(prompt.format(task=task))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "8a733caa-d75b-422c-93aa-6ad913c995f3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Plan: Use Google to search for the 2024 Australian Open winner.\n", + "#E1 = Google[2024 Australian Open winner]\n", + "\n", + "Plan: Retrieve the name of the 2024 Australian Open winner from the search results.\n", + "#E2 = LLM[What is the name of the 2024 Australian Open winner, given #E1]\n", + "\n", + "Plan: Use Google to search for the hometown of the 2024 Australian Open winner.\n", + "#E3 = Google[hometown of 2024 Australian Open winner, given #E2]\n", + "\n", + "Plan: Retrieve the hometown of the 2024 Australian Open winner from the search results.\n", + "#E4 = LLM[What is the hometown of the 2024 Australian Open winner, given #E3]\n" + ] + } + ], + "source": [ + "print(result.content)" + ] + }, + { + "cell_type": "markdown", + "id": "37166985-5bec-4615-bd40-54d16fd7b4ea", + "metadata": {}, + "source": [ + "#### Planner Node\n", + "\n", + "To connect the planner to our graph, we will create a `get_plan` node that accepts the `ReWOO` state and returns with a state update for the\n", + "`steps` and `plan_string` fields." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "f9f042b6-90d8-430f-abf3-04ad2bb047c7", + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "from langchain_core.prompts import ChatPromptTemplate\n", + "\n", + "# Regex to match expressions of the form E#... = ...[...]\n", + "regex_pattern = r\"Plan:\\s*(.+)\\s*(#E\\d+)\\s*=\\s*(\\w+)\\s*\\[([^\\]]+)\\]\"\n", + "prompt_template = ChatPromptTemplate.from_messages([(\"user\", prompt)])\n", + "planner = prompt_template | model\n", + "\n", + "\n", + "def get_plan(state: ReWOO):\n", + " task = state[\"task\"]\n", + " result = planner.invoke({\"task\": task})\n", + " # Find all matches in the sample text\n", + " matches = re.findall(regex_pattern, result.content)\n", + " return {\"steps\": matches, \"plan_string\": result.content}" + ] + }, + { + "cell_type": "markdown", + "id": "0d97942f-27d3-4761-b6cc-6614dbb90c77", + "metadata": {}, + "source": [ + "## 2. Executor\n", + "\n", + "The executor receives the plan and executes the tools in sequence.\n", + "\n", + "Below, instantiate the search engine and define the toole execution node." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "3412cfc4-6796-4295-aea4-7eeb304e10bd", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "\n", + "search = TavilySearchResults()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "aa96fbac-28bc-4afe-ae35-ddb3383d1147", + "metadata": {}, + "outputs": [], + "source": [ + "def _get_current_task(state: ReWOO):\n", + " if state[\"results\"] is None:\n", + " return 1\n", + " if len(state[\"results\"]) == len(state[\"steps\"]):\n", + " return None\n", + " else:\n", + " return len(state[\"results\"]) + 1\n", + "\n", + "\n", + "def tool_execution(state: ReWOO):\n", + " \"\"\"Worker node that executes the tools of a given plan.\"\"\"\n", + " _step = _get_current_task(state)\n", + " _, step_name, tool, tool_input = state[\"steps\"][_step - 1]\n", + " _results = state[\"results\"] or {}\n", + " for k, v in _results.items():\n", + " tool_input = tool_input.replace(k, v)\n", + " if tool == \"Google\":\n", + " result = search.invoke(tool_input)\n", + " elif tool == \"LLM\":\n", + " result = model.invoke(tool_input)\n", + " else:\n", + " raise ValueError\n", + " _results[step_name] = str(result)\n", + " return {\"results\": _results}" + ] + }, + { + "cell_type": "markdown", + "id": "28e20b31-d721-470d-94d2-db0c177fae75", + "metadata": {}, + "source": [ + "## 3. Solver\n", + "\n", + "The solver receives the full plan and generates the final response based on the responses of the tool calls from the worker." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "0a4d9851-8590-42be-8c53-9969ebff85f4", + "metadata": {}, + "outputs": [], + "source": [ + "solve_prompt = \"\"\"Solve the following task or problem. To solve the problem, we have made step-by-step Plan and \\\n", + "retrieved corresponding Evidence to each Plan. Use them with caution since long evidence might \\\n", + "contain irrelevant information.\n", + "\n", + "{plan}\n", + "\n", + "Now solve the question or task according to provided Evidence above. Respond with the answer\n", + "directly with no extra words.\n", + "\n", + "Task: {task}\n", + "Response:\"\"\"\n", + "\n", + "\n", + "def solve(state: ReWOO):\n", + " plan = \"\"\n", + " for _plan, step_name, tool, tool_input in state[\"steps\"]:\n", + " _results = state[\"results\"] or {}\n", + " for k, v in _results.items():\n", + " tool_input = tool_input.replace(k, v)\n", + " plan += f\"Plan: {_plan}\\n{step_name} = {tool}[{tool_input}]\"\n", + " prompt = solve_prompt.format(plan=plan, task=state[\"task\"])\n", + " result = model.invoke(prompt)\n", + " return {\"result\": result.content}" + ] + }, + { + "cell_type": "markdown", + "id": "8ce26c3f-6ced-4a91-a9f2-d0bc235e4010", + "metadata": {}, + "source": [ + "## 4. Define Graph\n", + "\n", + "Our graph defines the workflow. Each of the planner, tool executor, and solver modules are added as nodes." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "73b235d7-fa83-4e84-9f2e-2908f16deb26", + "metadata": {}, + "outputs": [], + "source": [ + "def _route(state):\n", + " _step = _get_current_task(state)\n", + " if _step is None:\n", + " # We have executed all tasks\n", + " return \"solve\"\n", + " else:\n", + " # We are still executing tasks, loop back to the \"tool\" node\n", + " return \"tool\"" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "cf173aa1-ce31-4dca-8111-30c91e209652", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import StateGraph, END\n", + "\n", + "graph = StateGraph(ReWOO)\n", + "graph.add_node(\"plan\", get_plan)\n", + "graph.add_node(\"tool\", tool_execution)\n", + "graph.add_node(\"solve\", solve)\n", + "graph.add_edge(\"plan\", \"tool\")\n", + "graph.add_edge(\"solve\", END)\n", + "graph.add_conditional_edges(\"tool\", _route)\n", + "graph.set_entry_point(\"plan\")\n", + "\n", + "app = graph.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "badaca52-5d55-433f-8770-1bd50c10bf7f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'plan': {'steps': [('Use Google to search for the 2024 Australian Open winner.', '#E1', 'Google', '2024 Australian Open winner'), ('Retrieve the name of the 2024 Australian Open winner from the search results.', '#E2', 'LLM', 'What is the name of the 2024 Australian Open winner, given #E1'), ('Use Google to search for the hometown of the 2024 Australian Open winner.', '#E3', 'Google', 'hometown of 2024 Australian Open winner, given #E2'), ('Retrieve the hometown of the 2024 Australian Open winner from the search results.', '#E4', 'LLM', 'What is the hometown of the 2024 Australian Open winner, given #E3')], 'plan_string': 'Plan: Use Google to search for the 2024 Australian Open winner.\\n#E1 = Google[2024 Australian Open winner]\\n\\nPlan: Retrieve the name of the 2024 Australian Open winner from the search results.\\n#E2 = LLM[What is the name of the 2024 Australian Open winner, given #E1]\\n\\nPlan: Use Google to search for the hometown of the 2024 Australian Open winner.\\n#E3 = Google[hometown of 2024 Australian Open winner, given #E2]\\n\\nPlan: Retrieve the hometown of the 2024 Australian Open winner from the search results.\\n#E4 = LLM[What is the hometown of the 2024 Australian Open winner, given #E3]'}}\n", + "---\n", + "{'tool': {'results': {'#E1': '[{\\'url\\': \\'https://www.cbssports.com/tennis/news/australian-open-2024-jannik-sinner-aryna-sabalenka-crowned-as-grand-slam-singles-champions-at-melbourne-park/\\', \\'content\\': \\'2024 Australian Open odds, Sinner vs. Medvedev picks Sabalenka defeats Zheng to win 2024 Australian Open Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park 2024 Australian Open odds, Sabalenka vs. Zheng picks 2024 Australian Open odds, Medvedev vs. Zverev picks Sinner, Sabalenka win Australian Open singles titles Sinner makes epic comeback to win Australian OpenJan 28, 2024 — Jan 28, 2024Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park ... Watch Now: Jannik Sinner came\\\\xa0...\\'}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open\\', \\'content\\': \"Contents 2024 Australian Open The 2024 Australian Open was a Grand Slam level tennis tournament held at Melbourne Park, from 14–28 January 2024.[1] The Australian Open total prize money for 2024 increased by 13.07% year on year to a tournament record A$86,500,000. In the tournament\\'s 119-year history, this was the first Australian Open Tennis Championships to be held on an openingNovak Djokovic was the defending men\\'s singles champion. ... He was defeated in the semifinals by Jannik Sinner, who went on to beat Daniil Medvedev in a five-set\\\\xa0...\"}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open_%E2%80%93_Men%27s_singles\\', \\'content\\': \"Contents 2024 Australian Open – Men\\'s singles The entry list was released by Tennis Australia based on the ATP rankings for the week of 4 December 2023.[15] matches, tying the Open Era record set at the 1983 US Open.[14] feature any of the Big Three members.[4] It was the second time Medvedev lost the Australian Open final after winningJannik Sinner defeated Daniil Medvedev in the final, 3–6, 3–6, 6–4, 6–4, 6–3, to win the men\\'s singles tennis title at the 2024 Australian Open.\"}]'}}}\n", + "---\n", + "{'tool': {'results': {'#E1': '[{\\'url\\': \\'https://www.cbssports.com/tennis/news/australian-open-2024-jannik-sinner-aryna-sabalenka-crowned-as-grand-slam-singles-champions-at-melbourne-park/\\', \\'content\\': \\'2024 Australian Open odds, Sinner vs. Medvedev picks Sabalenka defeats Zheng to win 2024 Australian Open Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park 2024 Australian Open odds, Sabalenka vs. Zheng picks 2024 Australian Open odds, Medvedev vs. Zverev picks Sinner, Sabalenka win Australian Open singles titles Sinner makes epic comeback to win Australian OpenJan 28, 2024 — Jan 28, 2024Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park ... Watch Now: Jannik Sinner came\\\\xa0...\\'}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open\\', \\'content\\': \"Contents 2024 Australian Open The 2024 Australian Open was a Grand Slam level tennis tournament held at Melbourne Park, from 14–28 January 2024.[1] The Australian Open total prize money for 2024 increased by 13.07% year on year to a tournament record A$86,500,000. In the tournament\\'s 119-year history, this was the first Australian Open Tennis Championships to be held on an openingNovak Djokovic was the defending men\\'s singles champion. ... He was defeated in the semifinals by Jannik Sinner, who went on to beat Daniil Medvedev in a five-set\\\\xa0...\"}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open_%E2%80%93_Men%27s_singles\\', \\'content\\': \"Contents 2024 Australian Open – Men\\'s singles The entry list was released by Tennis Australia based on the ATP rankings for the week of 4 December 2023.[15] matches, tying the Open Era record set at the 1983 US Open.[14] feature any of the Big Three members.[4] It was the second time Medvedev lost the Australian Open final after winningJannik Sinner defeated Daniil Medvedev in the final, 3–6, 3–6, 6–4, 6–4, 6–3, to win the men\\'s singles tennis title at the 2024 Australian Open.\"}]', '#E2': \"content='The name of the 2024 Australian Open winner is Jannik Sinner.'\"}}}\n", + "---\n", + "{'tool': {'results': {'#E1': '[{\\'url\\': \\'https://www.cbssports.com/tennis/news/australian-open-2024-jannik-sinner-aryna-sabalenka-crowned-as-grand-slam-singles-champions-at-melbourne-park/\\', \\'content\\': \\'2024 Australian Open odds, Sinner vs. Medvedev picks Sabalenka defeats Zheng to win 2024 Australian Open Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park 2024 Australian Open odds, Sabalenka vs. Zheng picks 2024 Australian Open odds, Medvedev vs. Zverev picks Sinner, Sabalenka win Australian Open singles titles Sinner makes epic comeback to win Australian OpenJan 28, 2024 — Jan 28, 2024Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park ... Watch Now: Jannik Sinner came\\\\xa0...\\'}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open\\', \\'content\\': \"Contents 2024 Australian Open The 2024 Australian Open was a Grand Slam level tennis tournament held at Melbourne Park, from 14–28 January 2024.[1] The Australian Open total prize money for 2024 increased by 13.07% year on year to a tournament record A$86,500,000. In the tournament\\'s 119-year history, this was the first Australian Open Tennis Championships to be held on an openingNovak Djokovic was the defending men\\'s singles champion. ... He was defeated in the semifinals by Jannik Sinner, who went on to beat Daniil Medvedev in a five-set\\\\xa0...\"}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open_%E2%80%93_Men%27s_singles\\', \\'content\\': \"Contents 2024 Australian Open – Men\\'s singles The entry list was released by Tennis Australia based on the ATP rankings for the week of 4 December 2023.[15] matches, tying the Open Era record set at the 1983 US Open.[14] feature any of the Big Three members.[4] It was the second time Medvedev lost the Australian Open final after winningJannik Sinner defeated Daniil Medvedev in the final, 3–6, 3–6, 6–4, 6–4, 6–3, to win the men\\'s singles tennis title at the 2024 Australian Open.\"}]', '#E2': \"content='The name of the 2024 Australian Open winner is Jannik Sinner.'\", '#E3': '[{\\'url\\': \\'https://www.tennis.com/news/articles/soccer-mad-italy-is-now-obsessed-with-tennis-player-jannik-sinner-after-his-australian-open-title\\', \\'content\\': \"Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title Play & Win Advertising Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title \\'Grandissimo\\': Italian Premier Giorgia Meloni welcomes home Australian Open champion Jannik Sinner First of many? Jannik Sinner\\'s five-set comeback sinks Daniil Medvedev in Australian Open finalJan 28, 2024 — Jan 28, 2024In Sinner\\'s tiny hometown of Sesto (population 1,860) near the Austrian border, about 70 people gathered inside the two-court indoor tennis\\\\xa0...\"}, {\\'url\\': \\'https://apnews.com/article/jannik-sinner-italy-australian-open-03573689c4c58c2851d1006e26546ac9\\', \\'content\\': \"Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev, Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev, Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev,Jan 28, 2024 — Jan 28, 2024Soccer-mad Italy has a new obsession. Jannik Sinner\\'s Australian Open performance on the tennis court has captured the country\\'s attention.\"}, {\\'url\\': \\'https://en.wikipedia.org/wiki/Jannik_Sinner\\', \\'content\\': \\'Sinner is a major champion, having won the 2024 Australian Open.[3] He has won a further ten ATP Tour singles titles, At the 2024 Australian Open, Sinner defeated world No. 1 Novak Djokovic in the semifinals to reach his first major Early in the year Sinner made the second round of the 2020 Australian Open, recording his first Grand Slam main draw a match since Janko Tipsarević in London in 2011.[59][60] Sinner played Daniil Medvedev next in the round robin stage,Since making his professional debut in 2018, Sinner has won 11 ATP Tour singles titles, including a Grand Slam at the 2024 Australian Open and a Masters 1000 at\\\\xa0...\\'}, {\\'url\\': \\'https://ausopen.com/players/italy/jannik-sinner\\', \\'content\\': \"Jannik Sinner weathered an early onslaught to reel in Daniil Medvedev, growing in potency to win the Australian Open the Australian Open 2024 final – his first Grand Slam singles title. Jannik Sinner will contest his first Grand Slam final after scuttling Novak Djokovic’s bid for a record-extending 11th Jannick Sinner has form and fitness on his side ahead of his meeting with Andrey Rublev.Jannik Sinner Press Conference | Australian Open 2024 Final. 15:02 · Player & Career Overview. Career Wins 73% · Men\\'s Singles. Final • Rod Laver Arena · Comeback\\\\xa0...\"}]'}}}\n", + "---\n", + "{'tool': {'results': {'#E1': '[{\\'url\\': \\'https://www.cbssports.com/tennis/news/australian-open-2024-jannik-sinner-aryna-sabalenka-crowned-as-grand-slam-singles-champions-at-melbourne-park/\\', \\'content\\': \\'2024 Australian Open odds, Sinner vs. Medvedev picks Sabalenka defeats Zheng to win 2024 Australian Open Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park 2024 Australian Open odds, Sabalenka vs. Zheng picks 2024 Australian Open odds, Medvedev vs. Zverev picks Sinner, Sabalenka win Australian Open singles titles Sinner makes epic comeback to win Australian OpenJan 28, 2024 — Jan 28, 2024Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park ... Watch Now: Jannik Sinner came\\\\xa0...\\'}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open\\', \\'content\\': \"Contents 2024 Australian Open The 2024 Australian Open was a Grand Slam level tennis tournament held at Melbourne Park, from 14–28 January 2024.[1] The Australian Open total prize money for 2024 increased by 13.07% year on year to a tournament record A$86,500,000. In the tournament\\'s 119-year history, this was the first Australian Open Tennis Championships to be held on an openingNovak Djokovic was the defending men\\'s singles champion. ... He was defeated in the semifinals by Jannik Sinner, who went on to beat Daniil Medvedev in a five-set\\\\xa0...\"}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open_%E2%80%93_Men%27s_singles\\', \\'content\\': \"Contents 2024 Australian Open – Men\\'s singles The entry list was released by Tennis Australia based on the ATP rankings for the week of 4 December 2023.[15] matches, tying the Open Era record set at the 1983 US Open.[14] feature any of the Big Three members.[4] It was the second time Medvedev lost the Australian Open final after winningJannik Sinner defeated Daniil Medvedev in the final, 3–6, 3–6, 6–4, 6–4, 6–3, to win the men\\'s singles tennis title at the 2024 Australian Open.\"}]', '#E2': \"content='The name of the 2024 Australian Open winner is Jannik Sinner.'\", '#E3': '[{\\'url\\': \\'https://www.tennis.com/news/articles/soccer-mad-italy-is-now-obsessed-with-tennis-player-jannik-sinner-after-his-australian-open-title\\', \\'content\\': \"Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title Play & Win Advertising Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title \\'Grandissimo\\': Italian Premier Giorgia Meloni welcomes home Australian Open champion Jannik Sinner First of many? Jannik Sinner\\'s five-set comeback sinks Daniil Medvedev in Australian Open finalJan 28, 2024 — Jan 28, 2024In Sinner\\'s tiny hometown of Sesto (population 1,860) near the Austrian border, about 70 people gathered inside the two-court indoor tennis\\\\xa0...\"}, {\\'url\\': \\'https://apnews.com/article/jannik-sinner-italy-australian-open-03573689c4c58c2851d1006e26546ac9\\', \\'content\\': \"Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev, Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev, Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev,Jan 28, 2024 — Jan 28, 2024Soccer-mad Italy has a new obsession. Jannik Sinner\\'s Australian Open performance on the tennis court has captured the country\\'s attention.\"}, {\\'url\\': \\'https://en.wikipedia.org/wiki/Jannik_Sinner\\', \\'content\\': \\'Sinner is a major champion, having won the 2024 Australian Open.[3] He has won a further ten ATP Tour singles titles, At the 2024 Australian Open, Sinner defeated world No. 1 Novak Djokovic in the semifinals to reach his first major Early in the year Sinner made the second round of the 2020 Australian Open, recording his first Grand Slam main draw a match since Janko Tipsarević in London in 2011.[59][60] Sinner played Daniil Medvedev next in the round robin stage,Since making his professional debut in 2018, Sinner has won 11 ATP Tour singles titles, including a Grand Slam at the 2024 Australian Open and a Masters 1000 at\\\\xa0...\\'}, {\\'url\\': \\'https://ausopen.com/players/italy/jannik-sinner\\', \\'content\\': \"Jannik Sinner weathered an early onslaught to reel in Daniil Medvedev, growing in potency to win the Australian Open the Australian Open 2024 final – his first Grand Slam singles title. Jannik Sinner will contest his first Grand Slam final after scuttling Novak Djokovic’s bid for a record-extending 11th Jannick Sinner has form and fitness on his side ahead of his meeting with Andrey Rublev.Jannik Sinner Press Conference | Australian Open 2024 Final. 15:02 · Player & Career Overview. Career Wins 73% · Men\\'s Singles. Final • Rod Laver Arena · Comeback\\\\xa0...\"}]', '#E4': \"content='The hometown of the 2024 Australian Open winner, Jannik Sinner, is Sesto, a small town near the Austrian border in Italy.'\"}}}\n", + "---\n", + "{'solve': {'result': 'The hometown of the 2024 Australian Open winner, Jannik Sinner, is Sesto, Italy.'}}\n", + "---\n", + "{'__end__': {'task': 'what is the hometown of the 2024 australian open winner', 'plan_string': 'Plan: Use Google to search for the 2024 Australian Open winner.\\n#E1 = Google[2024 Australian Open winner]\\n\\nPlan: Retrieve the name of the 2024 Australian Open winner from the search results.\\n#E2 = LLM[What is the name of the 2024 Australian Open winner, given #E1]\\n\\nPlan: Use Google to search for the hometown of the 2024 Australian Open winner.\\n#E3 = Google[hometown of 2024 Australian Open winner, given #E2]\\n\\nPlan: Retrieve the hometown of the 2024 Australian Open winner from the search results.\\n#E4 = LLM[What is the hometown of the 2024 Australian Open winner, given #E3]', 'steps': [('Use Google to search for the 2024 Australian Open winner.', '#E1', 'Google', '2024 Australian Open winner'), ('Retrieve the name of the 2024 Australian Open winner from the search results.', '#E2', 'LLM', 'What is the name of the 2024 Australian Open winner, given #E1'), ('Use Google to search for the hometown of the 2024 Australian Open winner.', '#E3', 'Google', 'hometown of 2024 Australian Open winner, given #E2'), ('Retrieve the hometown of the 2024 Australian Open winner from the search results.', '#E4', 'LLM', 'What is the hometown of the 2024 Australian Open winner, given #E3')], 'results': {'#E1': '[{\\'url\\': \\'https://www.cbssports.com/tennis/news/australian-open-2024-jannik-sinner-aryna-sabalenka-crowned-as-grand-slam-singles-champions-at-melbourne-park/\\', \\'content\\': \\'2024 Australian Open odds, Sinner vs. Medvedev picks Sabalenka defeats Zheng to win 2024 Australian Open Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park 2024 Australian Open odds, Sabalenka vs. Zheng picks 2024 Australian Open odds, Medvedev vs. Zverev picks Sinner, Sabalenka win Australian Open singles titles Sinner makes epic comeback to win Australian OpenJan 28, 2024 — Jan 28, 2024Australian Open 2024: Jannik Sinner, Aryna Sabalenka crowned as Grand Slam singles champions at Melbourne Park ... Watch Now: Jannik Sinner came\\\\xa0...\\'}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open\\', \\'content\\': \"Contents 2024 Australian Open The 2024 Australian Open was a Grand Slam level tennis tournament held at Melbourne Park, from 14–28 January 2024.[1] The Australian Open total prize money for 2024 increased by 13.07% year on year to a tournament record A$86,500,000. In the tournament\\'s 119-year history, this was the first Australian Open Tennis Championships to be held on an openingNovak Djokovic was the defending men\\'s singles champion. ... He was defeated in the semifinals by Jannik Sinner, who went on to beat Daniil Medvedev in a five-set\\\\xa0...\"}, {\\'url\\': \\'https://en.wikipedia.org/wiki/2024_Australian_Open_%E2%80%93_Men%27s_singles\\', \\'content\\': \"Contents 2024 Australian Open – Men\\'s singles The entry list was released by Tennis Australia based on the ATP rankings for the week of 4 December 2023.[15] matches, tying the Open Era record set at the 1983 US Open.[14] feature any of the Big Three members.[4] It was the second time Medvedev lost the Australian Open final after winningJannik Sinner defeated Daniil Medvedev in the final, 3–6, 3–6, 6–4, 6–4, 6–3, to win the men\\'s singles tennis title at the 2024 Australian Open.\"}]', '#E2': \"content='The name of the 2024 Australian Open winner is Jannik Sinner.'\", '#E3': '[{\\'url\\': \\'https://www.tennis.com/news/articles/soccer-mad-italy-is-now-obsessed-with-tennis-player-jannik-sinner-after-his-australian-open-title\\', \\'content\\': \"Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title Play & Win Advertising Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title \\'Grandissimo\\': Italian Premier Giorgia Meloni welcomes home Australian Open champion Jannik Sinner First of many? Jannik Sinner\\'s five-set comeback sinks Daniil Medvedev in Australian Open finalJan 28, 2024 — Jan 28, 2024In Sinner\\'s tiny hometown of Sesto (population 1,860) near the Austrian border, about 70 people gathered inside the two-court indoor tennis\\\\xa0...\"}, {\\'url\\': \\'https://apnews.com/article/jannik-sinner-italy-australian-open-03573689c4c58c2851d1006e26546ac9\\', \\'content\\': \"Soccer-mad Italy is now obsessed with tennis player Jannik Sinner after his Australian Open title Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev, Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev, Jannik Sinner, left, of Italy gestures as he holds the Norman Brookes Challenge Cup after defeating Daniil Medvedev,Jan 28, 2024 — Jan 28, 2024Soccer-mad Italy has a new obsession. Jannik Sinner\\'s Australian Open performance on the tennis court has captured the country\\'s attention.\"}, {\\'url\\': \\'https://en.wikipedia.org/wiki/Jannik_Sinner\\', \\'content\\': \\'Sinner is a major champion, having won the 2024 Australian Open.[3] He has won a further ten ATP Tour singles titles, At the 2024 Australian Open, Sinner defeated world No. 1 Novak Djokovic in the semifinals to reach his first major Early in the year Sinner made the second round of the 2020 Australian Open, recording his first Grand Slam main draw a match since Janko Tipsarević in London in 2011.[59][60] Sinner played Daniil Medvedev next in the round robin stage,Since making his professional debut in 2018, Sinner has won 11 ATP Tour singles titles, including a Grand Slam at the 2024 Australian Open and a Masters 1000 at\\\\xa0...\\'}, {\\'url\\': \\'https://ausopen.com/players/italy/jannik-sinner\\', \\'content\\': \"Jannik Sinner weathered an early onslaught to reel in Daniil Medvedev, growing in potency to win the Australian Open the Australian Open 2024 final – his first Grand Slam singles title. Jannik Sinner will contest his first Grand Slam final after scuttling Novak Djokovic’s bid for a record-extending 11th Jannick Sinner has form and fitness on his side ahead of his meeting with Andrey Rublev.Jannik Sinner Press Conference | Australian Open 2024 Final. 15:02 · Player & Career Overview. Career Wins 73% · Men\\'s Singles. Final • Rod Laver Arena · Comeback\\\\xa0...\"}]', '#E4': \"content='The hometown of the 2024 Australian Open winner, Jannik Sinner, is Sesto, a small town near the Austrian border in Italy.'\"}, 'result': 'The hometown of the 2024 Australian Open winner, Jannik Sinner, is Sesto, Italy.'}}\n", + "---\n" + ] + } + ], + "source": [ + "for s in app.stream({\"task\": task}):\n", + " print(s)\n", + " print(\"---\")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "70e5aa0f-4d8b-4f65-817a-1c4ebf07d07a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The hometown of the 2024 Australian Open winner, Jannik Sinner, is Sesto, Italy.\n" + ] + } + ], + "source": [ + "# Print out the final result\n", + "print(s[END][\"result\"])" + ] + }, + { + "cell_type": "markdown", + "id": "842954d7-0de0-4876-be63-46b4e14157b0", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "Congratulations on implementing ReWOO! Before you leave, I'll leave you with a couple limitations of the current implementation from the paper:\n", + "\n", + "1. If little context of the environment is available, the planner will be ineffective in its tool use. This can typically be ameliorated through few-shot prompting and/or fine-tuning.\n", + "2. The tasks are still executed in sequence, meaning the total execution time is impacted by _every_ tool call, not just he longest-running in a given step." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/self-discover/self-discover.ipynb b/examples/self-discover/self-discover.ipynb new file mode 100644 index 000000000..3c5f44b2c --- /dev/null +++ b/examples/self-discover/self-discover.ipynb @@ -0,0 +1,481 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "a38e5d2d-7587-4192-90f2-b58e6c62f08c", + "metadata": {}, + "source": [ + "# Self Discover\n", + "\n", + "An implementation of the [Self-Discover paper](https://arxiv.org/pdf/2402.03620.pdf).\n", + "\n", + "Based on [this implementation from @catid](https://github.com/catid/self-discover/tree/main?tab=readme-ov-file)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "a18d8f24-5d9a-45c5-9739-6f3c4ed6c9c9", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_openai import ChatOpenAI" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "9f554045-6e79-42d3-be4b-835bbbd0b78c", + "metadata": {}, + "outputs": [], + "source": [ + "model = ChatOpenAI(temperature=0, model=\"gpt-4-turbo-preview\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "9e9925aa-638a-4862-823e-9803402b8f82", + "metadata": {}, + "outputs": [], + "source": [ + "from langchain import hub\n", + "from langchain_core.prompts import PromptTemplate" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "c4cc5c8c-f6a5-42c7-9ed5-780d79b3b29a", + "metadata": {}, + "outputs": [], + "source": [ + "select_prompt = hub.pull(\"hwchase17/self-discovery-select\")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "a5b53d29-f5b6-4f39-af97-bb6b133e1d18", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Select several reasoning modules that are crucial to utilize in order to solve the given task:\n", + "\n", + "All reasoning module descriptions:\n", + "\u001b[33;1m\u001b[1;3m{reasoning_modules}\u001b[0m\n", + "\n", + "Task: \u001b[33;1m\u001b[1;3m{task_description}\u001b[0m\n", + "\n", + "Select several modules are crucial for solving the task above:\n", + "\n" + ] + } + ], + "source": [ + "select_prompt.pretty_print()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "26eaa6bc-5202-4b22-9522-33f227c8eb55", + "metadata": {}, + "outputs": [], + "source": [ + "adapt_prompt = hub.pull(\"hwchase17/self-discovery-adapt\")" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "dc30afb9-180d-417b-9935-f7ef166710b8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Rephrase and specify each reasoning module so that it better helps solving the task:\n", + "\n", + "SELECTED module descriptions:\n", + "\u001b[33;1m\u001b[1;3m{selected_modules}\u001b[0m\n", + "\n", + "Task: \u001b[33;1m\u001b[1;3m{task_description}\u001b[0m\n", + "\n", + "Adapt each reasoning module description to better solve the task:\n", + "\n" + ] + } + ], + "source": [ + "adapt_prompt.pretty_print()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "a93253a9-8f50-49dd-8815-c3927bae1905", + "metadata": {}, + "outputs": [], + "source": [ + "structured_prompt = hub.pull(\"hwchase17/self-discovery-structure\")" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "8ea8dd78-4285-400b-83d2-c4a241903a79", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Operationalize the reasoning modules into a step-by-step reasoning plan in JSON format:\n", + "\n", + "Here's an example:\n", + "\n", + "Example task:\n", + "\n", + "If you follow these instructions, do you return to the starting point? Always face forward. Take 1 step backward. Take 9 steps left. Take 2 steps backward. Take 6 steps forward. Take 4 steps forward. Take 4 steps backward. Take 3 steps right.\n", + "\n", + "Example reasoning structure:\n", + "\n", + "{\n", + " \"Position after instruction 1\":\n", + " \"Position after instruction 2\":\n", + " \"Position after instruction n\":\n", + " \"Is final position the same as starting position\":\n", + "}\n", + "\n", + "Adapted module description:\n", + "\u001b[33;1m\u001b[1;3m{adapted_modules}\u001b[0m\n", + "\n", + "Task: \u001b[33;1m\u001b[1;3m{task_description}\u001b[0m\n", + "\n", + "Implement a reasoning structure for solvers to follow step-by-step and arrive at correct answer.\n", + "\n", + "Note: do NOT actually arrive at a conclusion in this pass. Your job is to generate a PLAN so that in the future you can fill it out and arrive at the correct conclusion for tasks like this\n" + ] + } + ], + "source": [ + "structured_prompt.pretty_print()" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "f3d4d79d-f414-4588-b476-4a35b3ba6fbf", + "metadata": {}, + "outputs": [], + "source": [ + "reasoning_prompt = hub.pull(\"hwchase17/self-discovery-reasoning\")" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "23d1e32e-d12e-454a-8484-c08e250e3262", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Follow the step-by-step reasoning plan in JSON to correctly solve the task. Fill in the values following the keys by reasoning specifically about the task given. Do not simply rephrase the keys.\n", + " \n", + "Reasoning Structure:\n", + "\u001b[33;1m\u001b[1;3m{reasoning_structure}\u001b[0m\n", + "\n", + "Task: \u001b[33;1m\u001b[1;3m{task_description}\u001b[0m\n" + ] + } + ], + "source": [ + "reasoning_prompt.pretty_print()" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "7b9af01d-da28-4785-b069-efea61905cfa", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "PromptTemplate(input_variables=['reasoning_structure', 'task_instance'], template='Follow the step-by-step reasoning plan in JSON to correctly solve the task. Fill in the values following the keys by reasoning specifically about the task given. Do not simply rephrase the keys.\\n \\nReasoning Structure:\\n{reasoning_structure}\\n\\nTask: {task_instance}')" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "reasoning_prompt" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "399bf160-e257-429f-b27e-66d4063f195f", + "metadata": {}, + "outputs": [], + "source": [ + "_prompt = \"\"\"Follow the step-by-step reasoning plan in JSON to correctly solve the task. Fill in the values following the keys by reasoning specifically about the task given. Do not simply rephrase the keys.\\n \\nReasoning Structure:\\n{reasoning_structure}\\n\\nTask: {task_description}\"\"\"\n", + "_prompt = PromptTemplate.from_template(_prompt)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "6e047e3a-b1c2-4a3b-abc7-eb84de6874e4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'https://smith.langchain.com/hub/hwchase17/self-discovery-reasoning/48340707'" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hub.push(\"hwchase17/self-discovery-reasoning\", _prompt)" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "7f66d61e-6dcd-4462-b67b-29c5de56e238", + "metadata": {}, + "outputs": [], + "source": [ + "class SelfDiscoverState(TypedDict):\n", + " reasoning_modules: str\n", + " task_description: str\n", + " selected_modules: Optional[str]\n", + " adapted_modules: Optional[str]\n", + " reasoning_structure: Optional[str]\n", + " answer: Optional[str]" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "5c3bd203-7dc1-457e-813f-283aaf059ec0", + "metadata": {}, + "outputs": [], + "source": [ + "def select(inputs):\n", + " select_chain = select_prompt | model | StrOutputParser()\n", + " return {\"selected_modules\": select_chain.invoke(inputs)}" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "86420da0-7cc2-4659-853e-9c3ef808e47c", + "metadata": {}, + "outputs": [], + "source": [ + "def adapt(inputs):\n", + " adapt_chain = adapt_prompt | model | StrOutputParser()\n", + " return {\"adapted_modules\": adapt_chain.invoke(inputs)}" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "270a3905-58a3-4650-96ca-e8254040285f", + "metadata": {}, + "outputs": [], + "source": [ + "def structure(inputs):\n", + " structure_chain = structured_prompt | model | StrOutputParser()\n", + " return {\"reasoning_structure\": structure_chain.invoke(inputs)}" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "55b486cc-36be-497e-9eba-9c8dc228f2d1", + "metadata": {}, + "outputs": [], + "source": [ + "def reason(inputs):\n", + " reasoning_chain = reasoning_prompt | model | StrOutputParser()\n", + " return {\"answer\": reasoning_chain.invoke(inputs)}" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "d9e2e4ce-dc9d-45a5-a218-34ab4fb62bc4", + "metadata": {}, + "outputs": [], + "source": [ + "from langgraph.graph import StateGraph, END\n", + "from typing import TypedDict, Optional" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "id": "26276404-0134-40a0-a796-cc9927c153ee", + "metadata": {}, + "outputs": [], + "source": [ + "graph = StateGraph(SelfDiscoverState)\n", + "graph.add_node(\"select\", select)\n", + "graph.add_node(\"adapt\", adapt)\n", + "graph.add_node(\"structure\", structure)\n", + "graph.add_node(\"reason\", reason)\n", + "graph.add_edge(\"select\", \"adapt\")\n", + "graph.add_edge(\"adapt\", \"structure\")\n", + "graph.add_edge(\"structure\", \"reason\")\n", + "graph.add_edge(\"reason\", END)\n", + "graph.set_entry_point(\"select\")\n", + "app = graph.compile()" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "id": "29fe385b-cf5d-4581-80e7-55462f5628bb", + "metadata": {}, + "outputs": [], + "source": [ + "reasoning_modules = [\n", + " \"1. How could I devise an experiment to help solve that problem?\",\n", + " \"2. Make a list of ideas for solving this problem, and apply them one by one to the problem to see if any progress can be made.\",\n", + " # \"3. How could I measure progress on this problem?\",\n", + " \"4. How can I simplify the problem so that it is easier to solve?\",\n", + " \"5. What are the key assumptions underlying this problem?\",\n", + " \"6. What are the potential risks and drawbacks of each solution?\",\n", + " \"7. What are the alternative perspectives or viewpoints on this problem?\",\n", + " \"8. What are the long-term implications of this problem and its solutions?\",\n", + " \"9. How can I break down this problem into smaller, more manageable parts?\",\n", + " \"10. Critical Thinking: This style involves analyzing the problem from different perspectives, questioning assumptions, and evaluating the evidence or information available. It focuses on logical reasoning, evidence-based decision-making, and identifying potential biases or flaws in thinking.\",\n", + " \"11. Try creative thinking, generate innovative and out-of-the-box ideas to solve the problem. Explore unconventional solutions, thinking beyond traditional boundaries, and encouraging imagination and originality.\",\n", + " # \"12. Seek input and collaboration from others to solve the problem. Emphasize teamwork, open communication, and leveraging the diverse perspectives and expertise of a group to come up with effective solutions.\",\n", + " \"13. Use systems thinking: Consider the problem as part of a larger system and understanding the interconnectedness of various elements. Focuses on identifying the underlying causes, feedback loops, and interdependencies that influence the problem, and developing holistic solutions that address the system as a whole.\",\n", + " \"14. Use Risk Analysis: Evaluate potential risks, uncertainties, and tradeoffs associated with different solutions or approaches to a problem. Emphasize assessing the potential consequences and likelihood of success or failure, and making informed decisions based on a balanced analysis of risks and benefits.\",\n", + " # \"15. Use Reflective Thinking: Step back from the problem, take the time for introspection and self-reflection. Examine personal biases, assumptions, and mental models that may influence problem-solving, and being open to learning from past experiences to improve future approaches.\",\n", + " \"16. What is the core issue or problem that needs to be addressed?\",\n", + " \"17. What are the underlying causes or factors contributing to the problem?\",\n", + " \"18. Are there any potential solutions or strategies that have been tried before? If yes, what were the outcomes and lessons learned?\",\n", + " \"19. What are the potential obstacles or challenges that might arise in solving this problem?\",\n", + " \"20. Are there any relevant data or information that can provide insights into the problem? If yes, what data sources are available, and how can they be analyzed?\",\n", + " \"21. Are there any stakeholders or individuals who are directly affected by the problem? What are their perspectives and needs?\",\n", + " \"22. What resources (financial, human, technological, etc.) are needed to tackle the problem effectively?\",\n", + " \"23. How can progress or success in solving the problem be measured or evaluated?\",\n", + " \"24. What indicators or metrics can be used?\",\n", + " \"25. Is the problem a technical or practical one that requires a specific expertise or skill set? Or is it more of a conceptual or theoretical problem?\",\n", + " \"26. Does the problem involve a physical constraint, such as limited resources, infrastructure, or space?\",\n", + " \"27. Is the problem related to human behavior, such as a social, cultural, or psychological issue?\",\n", + " \"28. Does the problem involve decision-making or planning, where choices need to be made under uncertainty or with competing objectives?\",\n", + " \"29. Is the problem an analytical one that requires data analysis, modeling, or optimization techniques?\",\n", + " \"30. Is the problem a design challenge that requires creative solutions and innovation?\",\n", + " \"31. Does the problem require addressing systemic or structural issues rather than just individual instances?\",\n", + " \"32. Is the problem time-sensitive or urgent, requiring immediate attention and action?\",\n", + " \"33. What kinds of solution typically are produced for this kind of problem specification?\",\n", + " \"34. Given the problem specification and the current best solution, have a guess about other possible solutions.\"\n", + " \"35. Let’s imagine the current best solution is totally wrong, what other ways are there to think about the problem specification?\"\n", + " \"36. What is the best way to modify this current best solution, given what you know about these kinds of problem specification?\"\n", + " \"37. Ignoring the current best solution, create an entirely new solution to the problem.\"\n", + " # \"38. Let’s think step by step.\"\n", + " \"39. Let’s make a step by step plan and implement it with good notation and explanation.\",\n", + "]\n", + "\n", + "\n", + "task_example = \"Lisa has 10 apples. She gives 3 apples to her friend and then buys 5 more apples from the store. How many apples does Lisa have now?\"\n", + "\n", + "task_example = \"\"\"This SVG path element draws a:\n", + "(A) circle (B) heptagon (C) hexagon (D) kite (E) line (F) octagon (G) pentagon(H) rectangle (I) sector (J) triangle\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "id": "6cbfbe81-f751-42da-843a-f9003ace663d", + "metadata": {}, + "outputs": [], + "source": [ + "reasoning_modules_str = \"\\n\".join(reasoning_modules)" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "id": "d411c7aa-7017-4d67-88b5-43b5d161c34c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'select': {'selected_modules': \"To solve the task of identifying the shape drawn by the given SVG path element, the following reasoning modules are crucial:\\n\\n1. **Critical Thinking (10)**: This involves analyzing the SVG path commands and coordinates logically to understand the shape they form. It requires questioning assumptions (e.g., not assuming the shape based on a quick glance at the coordinates but rather analyzing the path commands) and evaluating the information given in the SVG path data.\\n\\n2. **Simplification (4)**: Simplifying the problem by breaking down the SVG path commands can make it easier to visualize and understand the shape being drawn. This might involve sketching the path based on the commands and coordinates or using a tool to render the SVG path.\\n\\n3. **Systems Thinking (13)**: Understanding the SVG path as part of a larger system (in this case, the SVG coordinate system and how path commands work) helps in comprehending how the individual commands come together to form a complete shape.\\n\\n4. **Analytical Problem Solving (29)**: This task requires data analysis skills to interpret the SVG path commands and coordinates. Understanding how 'M' (moveto), 'L' (lineto), and other commands work is essential for determining the shape.\\n\\n5. **Creative Thinking (11)**: While not as directly applicable as the other modules, creative thinking can aid in visualizing the shape that the path commands are intended to draw, especially if the shape is complex or if the path commands are not immediately clear.\\n\\n6. **Visualization (30)**: Although not explicitly listed, a module focused on visualization would be highly relevant here. Visualizing the path that the 'M' and 'L' commands create from the given coordinates can directly lead to identifying the shape.\\n\\nGiven the task's nature, modules focused on experimentation, risk analysis, stakeholder perspectives, and long-term implications (e.g., 1, 14, 21, 8) are less relevant. The task is primarily analytical and technical, requiring an understanding of SVG path syntax and geometry rather than broader problem-solving or decision-making strategies.\"}}\n", + "{'adapt': {'adapted_modules': \"1. **Detailed Path Analysis (10)**: This module focuses on a thorough examination of the SVG path commands and their corresponding coordinates to accurately deduce the shape they outline. It involves a critical approach where assumptions are set aside in favor of a detailed analysis of each command (e.g., 'M' for moveto, 'L' for lineto) and how these commands connect points in the SVG coordinate system to form a specific shape.\\n\\n2. **Path Decomposition (4)**: This involves breaking down the SVG path into more manageable segments or components to facilitate a clearer understanding of the overall shape. Techniques might include manually sketching the path as described by the commands and coordinates or utilizing digital tools to render the SVG path, thereby making the shape more apparent and easier to identify.\\n\\n3. **SVG System Analysis (13)**: Emphasizes the importance of understanding the SVG coordinate system and the functionality of path commands within this framework. This module is about seeing the SVG path not just as a series of commands but as part of the broader system of SVG graphics, where each command plays a specific role in shaping the final image.\\n\\n4. **Command Interpretation and Geometry (29)**: This module requires a deep dive into the syntax and semantics of SVG path commands, coupled with geometric reasoning to interpret the shape formed by these commands. Knowledge of how different commands like 'M' (moveto) and 'L' (lineto) contribute to the construction of geometric shapes is crucial for accurately identifying the shape in question.\\n\\n5. **Imaginative Visualization (11)**: While analytical skills are paramount, this module recognizes the role of creative thinking in visualizing the potential shapes that complex or ambiguous path commands might represent. It encourages thinking beyond the obvious and considering multiple geometric possibilities that fit the given path data.\\n\\n6. **Explicit Visualization (30)**: Directly focuses on the ability to visualize the trajectory formed by executing the SVG path commands, particularly 'M' and 'L'. This module is about using visualization techniques, whether mental or through software tools, to trace the path and see the resulting shape, thereby facilitating its identification.\\n\\nBy refining these modules to more directly address the task of interpreting SVG path elements, the process of identifying the drawn shape becomes more structured and focused on the specific skills and knowledge areas that are most relevant to the task.\"}}\n", + "{'structure': {'reasoning_structure': '```json\\n{\\n \"Step 1: Detailed Path Analysis\": {\\n \"Description\": \"Examine each SVG path command and its coordinates to understand the shape outline.\",\\n \"Actions\": [\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"55.57,80.69\",\\n \"Purpose\": \"Move to starting point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"57.38,65.80\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"57.38,65.80\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"48.90,57.46\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"48.90,57.46\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"45.58,47.78\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"45.58,47.78\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"53.25,36.07\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"66.29,48.90\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"78.69,61.09\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"55.57,80.69\",\\n \"Purpose\": \"Draw line to this point to close the shape.\"\\n }\\n ]\\n },\\n \"Step 2: Path Decomposition\": {\\n \"Description\": \"Break down the path into segments to simplify analysis.\",\\n \"Segments\": [\\n \"Segment 1: Move from (55.57,80.69) to (57.38,65.80)\",\\n \"Segment 2: Move from (57.38,65.80) to (48.90,57.46)\",\\n \"Segment 3: Move from (48.90,57.46) to (45.58,47.78)\",\\n \"Segment 4: Move from (45.58,47.78) to (53.25,36.07)\",\\n \"Segment 5: Move from (53.25,36.07) to (66.29,48.90)\",\\n \"Segment 6: Move from (66.29,48.90) to (78.69,61.09)\",\\n \"Segment 7: Move from (78.69,61.09) to (55.57,80.69)\"\\n ]\\n },\\n \"Step 3: SVG System Analysis\": {\\n \"Description\": \"Understand the role of each command within the SVG coordinate system.\",\\n \"Analysis\": [\\n {\\n \"Command\": \"M\",\\n \"Role\": \"Defines starting points for new sub-paths.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Role\": \"Creates straight lines between points.\"\\n }\\n ]\\n },\\n \"Step 4: Command Interpretation and Geometry\": {\\n \"Description\": \"Interpret the geometric shape formed by the path commands.\",\\n \"Geometric Principles\": [\\n \"Identify angles and lines created by \\'L\\' commands.\",\\n \"Determine the number of sides from the number of \\'L\\' commands.\"\\n ]\\n },\\n \"Step 5: Imaginative Visualization\": {\\n \"Description\": \"Visualize potential shapes that the path commands might represent.\",\\n \"Visualization Techniques\": [\\n \"Sketching the path based on command coordinates.\",\\n \"Mentally visualizing the path progression.\"\\n ]\\n },\\n \"Step 6: Explicit Visualization\": {\\n \"Description\": \"Use visualization tools to trace the path and see the resulting shape.\",\\n \"Tools\": [\\n \"Digital drawing software\",\\n \"SVG rendering tools\"\\n ]\\n },\\n \"Conclusion\": {\\n \"Description\": \"Based on the analysis and visualization, identify the shape.\",\\n \"Options\": [\\n \"Circle\",\\n \"Heptagon\",\\n \"Hexagon\",\\n \"Kite\",\\n \"Line\",\\n \"Octagon\",\\n \"Pentagon\",\\n \"Rectangle\",\\n \"Sector\",\\n \"Triangle\"\\n ],\\n \"Selected Option\": \"\"\\n }\\n}\\n```'}}\n", + "{'reason': {'answer': '```json\\n{\\n \"Step 1: Detailed Path Analysis\": {\\n \"Description\": \"Examine each SVG path command and its coordinates to understand the shape outline.\",\\n \"Actions\": [\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"55.57,80.69\",\\n \"Purpose\": \"Move to starting point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"57.38,65.80\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"57.38,65.80\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"48.90,57.46\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"48.90,57.46\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"45.58,47.78\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"45.58,47.78\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"53.25,36.07\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"66.29,48.90\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"78.69,61.09\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"55.57,80.69\",\\n \"Purpose\": \"Draw line to this point to close the shape.\"\\n }\\n ]\\n },\\n \"Step 2: Path Decomposition\": {\\n \"Description\": \"Break down the path into segments to simplify analysis.\",\\n \"Segments\": [\\n \"Segment 1: Move from (55.57,80.69) to (57.38,65.80)\",\\n \"Segment 2: Move from (57.38,65.80) to (48.90,57.46)\",\\n \"Segment 3: Move from (48.90,57.46) to (45.58,47.78)\",\\n \"Segment 4: Move from (45.58,47.78) to (53.25,36.07)\",\\n \"Segment 5: Move from (53.25,36.07) to (66.29,48.90)\",\\n \"Segment 6: Move from (66.29,48.90) to (78.69,61.09)\",\\n \"Segment 7: Move from (78.69,61.09) to (55.57,80.69)\"\\n ]\\n },\\n \"Step 3: SVG System Analysis\": {\\n \"Description\": \"Understand the role of each command within the SVG coordinate system.\",\\n \"Analysis\": [\\n {\\n \"Command\": \"M\",\\n \"Role\": \"Defines starting points for new sub-paths.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Role\": \"Creates straight lines between points.\"\\n }\\n ]\\n },\\n \"Step 4: Command Interpretation and Geometry\": {\\n \"Description\": \"Interpret the geometric shape formed by the path commands.\",\\n \"Geometric Principles\": [\\n \"Identify angles and lines created by \\'L\\' commands.\",\\n \"Determine the number of sides from the number of \\'L\\' commands.\"\\n ]\\n },\\n \"Step 5: Imaginative Visualization\": {\\n \"Description\": \"Visualize potential shapes that the path commands might represent.\",\\n \"Visualization Techniques\": [\\n \"Sketching the path based on command coordinates.\",\\n \"Mentally visualizing the path progression.\"\\n ]\\n },\\n \"Step 6: Explicit Visualization\": {\\n \"Description\": \"Use visualization tools to trace the path and see the resulting shape.\",\\n \"Tools\": [\\n \"Digital drawing software\",\\n \"SVG rendering tools\"\\n ]\\n },\\n \"Conclusion\": {\\n \"Description\": \"Based on the analysis and visualization, identify the shape.\",\\n \"Options\": [\\n \"Circle\",\\n \"Heptagon\",\\n \"Hexagon\",\\n \"Kite\",\\n \"Line\",\\n \"Octagon\",\\n \"Pentagon\",\\n \"Rectangle\",\\n \"Sector\",\\n \"Triangle\"\\n ],\\n \"Selected Option\": \"Pentagon\"\\n }\\n}\\n```'}}\n", + "{'__end__': {'reasoning_modules': '1. How could I devise an experiment to help solve that problem?\\n2. Make a list of ideas for solving this problem, and apply them one by one to the problem to see if any progress can be made.\\n4. How can I simplify the problem so that it is easier to solve?\\n5. What are the key assumptions underlying this problem?\\n6. What are the potential risks and drawbacks of each solution?\\n7. What are the alternative perspectives or viewpoints on this problem?\\n8. What are the long-term implications of this problem and its solutions?\\n9. How can I break down this problem into smaller, more manageable parts?\\n10. Critical Thinking: This style involves analyzing the problem from different perspectives, questioning assumptions, and evaluating the evidence or information available. It focuses on logical reasoning, evidence-based decision-making, and identifying potential biases or flaws in thinking.\\n11. Try creative thinking, generate innovative and out-of-the-box ideas to solve the problem. Explore unconventional solutions, thinking beyond traditional boundaries, and encouraging imagination and originality.\\n13. Use systems thinking: Consider the problem as part of a larger system and understanding the interconnectedness of various elements. Focuses on identifying the underlying causes, feedback loops, and interdependencies that influence the problem, and developing holistic solutions that address the system as a whole.\\n14. Use Risk Analysis: Evaluate potential risks, uncertainties, and tradeoffs associated with different solutions or approaches to a problem. Emphasize assessing the potential consequences and likelihood of success or failure, and making informed decisions based on a balanced analysis of risks and benefits.\\n16. What is the core issue or problem that needs to be addressed?\\n17. What are the underlying causes or factors contributing to the problem?\\n18. Are there any potential solutions or strategies that have been tried before? If yes, what were the outcomes and lessons learned?\\n19. What are the potential obstacles or challenges that might arise in solving this problem?\\n20. Are there any relevant data or information that can provide insights into the problem? If yes, what data sources are available, and how can they be analyzed?\\n21. Are there any stakeholders or individuals who are directly affected by the problem? What are their perspectives and needs?\\n22. What resources (financial, human, technological, etc.) are needed to tackle the problem effectively?\\n23. How can progress or success in solving the problem be measured or evaluated?\\n24. What indicators or metrics can be used?\\n25. Is the problem a technical or practical one that requires a specific expertise or skill set? Or is it more of a conceptual or theoretical problem?\\n26. Does the problem involve a physical constraint, such as limited resources, infrastructure, or space?\\n27. Is the problem related to human behavior, such as a social, cultural, or psychological issue?\\n28. Does the problem involve decision-making or planning, where choices need to be made under uncertainty or with competing objectives?\\n29. Is the problem an analytical one that requires data analysis, modeling, or optimization techniques?\\n30. Is the problem a design challenge that requires creative solutions and innovation?\\n31. Does the problem require addressing systemic or structural issues rather than just individual instances?\\n32. Is the problem time-sensitive or urgent, requiring immediate attention and action?\\n33. What kinds of solution typically are produced for this kind of problem specification?\\n34. Given the problem specification and the current best solution, have a guess about other possible solutions.35. Let’s imagine the current best solution is totally wrong, what other ways are there to think about the problem specification?36. What is the best way to modify this current best solution, given what you know about these kinds of problem specification?37. Ignoring the current best solution, create an entirely new solution to the problem.39. Let’s make a step by step plan and implement it with good notation and explanation.', 'task_description': 'This SVG path element draws a:\\n(A) circle (B) heptagon (C) hexagon (D) kite (E) line (F) octagon (G) pentagon(H) rectangle (I) sector (J) triangle', 'selected_modules': \"To solve the task of identifying the shape drawn by the given SVG path element, the following reasoning modules are crucial:\\n\\n1. **Critical Thinking (10)**: This involves analyzing the SVG path commands and coordinates logically to understand the shape they form. It requires questioning assumptions (e.g., not assuming the shape based on a quick glance at the coordinates but rather analyzing the path commands) and evaluating the information given in the SVG path data.\\n\\n2. **Simplification (4)**: Simplifying the problem by breaking down the SVG path commands can make it easier to visualize and understand the shape being drawn. This might involve sketching the path based on the commands and coordinates or using a tool to render the SVG path.\\n\\n3. **Systems Thinking (13)**: Understanding the SVG path as part of a larger system (in this case, the SVG coordinate system and how path commands work) helps in comprehending how the individual commands come together to form a complete shape.\\n\\n4. **Analytical Problem Solving (29)**: This task requires data analysis skills to interpret the SVG path commands and coordinates. Understanding how 'M' (moveto), 'L' (lineto), and other commands work is essential for determining the shape.\\n\\n5. **Creative Thinking (11)**: While not as directly applicable as the other modules, creative thinking can aid in visualizing the shape that the path commands are intended to draw, especially if the shape is complex or if the path commands are not immediately clear.\\n\\n6. **Visualization (30)**: Although not explicitly listed, a module focused on visualization would be highly relevant here. Visualizing the path that the 'M' and 'L' commands create from the given coordinates can directly lead to identifying the shape.\\n\\nGiven the task's nature, modules focused on experimentation, risk analysis, stakeholder perspectives, and long-term implications (e.g., 1, 14, 21, 8) are less relevant. The task is primarily analytical and technical, requiring an understanding of SVG path syntax and geometry rather than broader problem-solving or decision-making strategies.\", 'adapted_modules': \"1. **Detailed Path Analysis (10)**: This module focuses on a thorough examination of the SVG path commands and their corresponding coordinates to accurately deduce the shape they outline. It involves a critical approach where assumptions are set aside in favor of a detailed analysis of each command (e.g., 'M' for moveto, 'L' for lineto) and how these commands connect points in the SVG coordinate system to form a specific shape.\\n\\n2. **Path Decomposition (4)**: This involves breaking down the SVG path into more manageable segments or components to facilitate a clearer understanding of the overall shape. Techniques might include manually sketching the path as described by the commands and coordinates or utilizing digital tools to render the SVG path, thereby making the shape more apparent and easier to identify.\\n\\n3. **SVG System Analysis (13)**: Emphasizes the importance of understanding the SVG coordinate system and the functionality of path commands within this framework. This module is about seeing the SVG path not just as a series of commands but as part of the broader system of SVG graphics, where each command plays a specific role in shaping the final image.\\n\\n4. **Command Interpretation and Geometry (29)**: This module requires a deep dive into the syntax and semantics of SVG path commands, coupled with geometric reasoning to interpret the shape formed by these commands. Knowledge of how different commands like 'M' (moveto) and 'L' (lineto) contribute to the construction of geometric shapes is crucial for accurately identifying the shape in question.\\n\\n5. **Imaginative Visualization (11)**: While analytical skills are paramount, this module recognizes the role of creative thinking in visualizing the potential shapes that complex or ambiguous path commands might represent. It encourages thinking beyond the obvious and considering multiple geometric possibilities that fit the given path data.\\n\\n6. **Explicit Visualization (30)**: Directly focuses on the ability to visualize the trajectory formed by executing the SVG path commands, particularly 'M' and 'L'. This module is about using visualization techniques, whether mental or through software tools, to trace the path and see the resulting shape, thereby facilitating its identification.\\n\\nBy refining these modules to more directly address the task of interpreting SVG path elements, the process of identifying the drawn shape becomes more structured and focused on the specific skills and knowledge areas that are most relevant to the task.\", 'reasoning_structure': '```json\\n{\\n \"Step 1: Detailed Path Analysis\": {\\n \"Description\": \"Examine each SVG path command and its coordinates to understand the shape outline.\",\\n \"Actions\": [\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"55.57,80.69\",\\n \"Purpose\": \"Move to starting point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"57.38,65.80\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"57.38,65.80\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"48.90,57.46\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"48.90,57.46\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"45.58,47.78\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"45.58,47.78\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"53.25,36.07\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"66.29,48.90\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"78.69,61.09\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"55.57,80.69\",\\n \"Purpose\": \"Draw line to this point to close the shape.\"\\n }\\n ]\\n },\\n \"Step 2: Path Decomposition\": {\\n \"Description\": \"Break down the path into segments to simplify analysis.\",\\n \"Segments\": [\\n \"Segment 1: Move from (55.57,80.69) to (57.38,65.80)\",\\n \"Segment 2: Move from (57.38,65.80) to (48.90,57.46)\",\\n \"Segment 3: Move from (48.90,57.46) to (45.58,47.78)\",\\n \"Segment 4: Move from (45.58,47.78) to (53.25,36.07)\",\\n \"Segment 5: Move from (53.25,36.07) to (66.29,48.90)\",\\n \"Segment 6: Move from (66.29,48.90) to (78.69,61.09)\",\\n \"Segment 7: Move from (78.69,61.09) to (55.57,80.69)\"\\n ]\\n },\\n \"Step 3: SVG System Analysis\": {\\n \"Description\": \"Understand the role of each command within the SVG coordinate system.\",\\n \"Analysis\": [\\n {\\n \"Command\": \"M\",\\n \"Role\": \"Defines starting points for new sub-paths.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Role\": \"Creates straight lines between points.\"\\n }\\n ]\\n },\\n \"Step 4: Command Interpretation and Geometry\": {\\n \"Description\": \"Interpret the geometric shape formed by the path commands.\",\\n \"Geometric Principles\": [\\n \"Identify angles and lines created by \\'L\\' commands.\",\\n \"Determine the number of sides from the number of \\'L\\' commands.\"\\n ]\\n },\\n \"Step 5: Imaginative Visualization\": {\\n \"Description\": \"Visualize potential shapes that the path commands might represent.\",\\n \"Visualization Techniques\": [\\n \"Sketching the path based on command coordinates.\",\\n \"Mentally visualizing the path progression.\"\\n ]\\n },\\n \"Step 6: Explicit Visualization\": {\\n \"Description\": \"Use visualization tools to trace the path and see the resulting shape.\",\\n \"Tools\": [\\n \"Digital drawing software\",\\n \"SVG rendering tools\"\\n ]\\n },\\n \"Conclusion\": {\\n \"Description\": \"Based on the analysis and visualization, identify the shape.\",\\n \"Options\": [\\n \"Circle\",\\n \"Heptagon\",\\n \"Hexagon\",\\n \"Kite\",\\n \"Line\",\\n \"Octagon\",\\n \"Pentagon\",\\n \"Rectangle\",\\n \"Sector\",\\n \"Triangle\"\\n ],\\n \"Selected Option\": \"\"\\n }\\n}\\n```', 'answer': '```json\\n{\\n \"Step 1: Detailed Path Analysis\": {\\n \"Description\": \"Examine each SVG path command and its coordinates to understand the shape outline.\",\\n \"Actions\": [\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"55.57,80.69\",\\n \"Purpose\": \"Move to starting point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"57.38,65.80\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"57.38,65.80\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"48.90,57.46\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"48.90,57.46\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"45.58,47.78\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"M\",\\n \"Coordinate\": \"45.58,47.78\",\\n \"Purpose\": \"Move to this point without drawing.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"53.25,36.07\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"66.29,48.90\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"78.69,61.09\",\\n \"Purpose\": \"Draw line to this point.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Coordinate\": \"55.57,80.69\",\\n \"Purpose\": \"Draw line to this point to close the shape.\"\\n }\\n ]\\n },\\n \"Step 2: Path Decomposition\": {\\n \"Description\": \"Break down the path into segments to simplify analysis.\",\\n \"Segments\": [\\n \"Segment 1: Move from (55.57,80.69) to (57.38,65.80)\",\\n \"Segment 2: Move from (57.38,65.80) to (48.90,57.46)\",\\n \"Segment 3: Move from (48.90,57.46) to (45.58,47.78)\",\\n \"Segment 4: Move from (45.58,47.78) to (53.25,36.07)\",\\n \"Segment 5: Move from (53.25,36.07) to (66.29,48.90)\",\\n \"Segment 6: Move from (66.29,48.90) to (78.69,61.09)\",\\n \"Segment 7: Move from (78.69,61.09) to (55.57,80.69)\"\\n ]\\n },\\n \"Step 3: SVG System Analysis\": {\\n \"Description\": \"Understand the role of each command within the SVG coordinate system.\",\\n \"Analysis\": [\\n {\\n \"Command\": \"M\",\\n \"Role\": \"Defines starting points for new sub-paths.\"\\n },\\n {\\n \"Command\": \"L\",\\n \"Role\": \"Creates straight lines between points.\"\\n }\\n ]\\n },\\n \"Step 4: Command Interpretation and Geometry\": {\\n \"Description\": \"Interpret the geometric shape formed by the path commands.\",\\n \"Geometric Principles\": [\\n \"Identify angles and lines created by \\'L\\' commands.\",\\n \"Determine the number of sides from the number of \\'L\\' commands.\"\\n ]\\n },\\n \"Step 5: Imaginative Visualization\": {\\n \"Description\": \"Visualize potential shapes that the path commands might represent.\",\\n \"Visualization Techniques\": [\\n \"Sketching the path based on command coordinates.\",\\n \"Mentally visualizing the path progression.\"\\n ]\\n },\\n \"Step 6: Explicit Visualization\": {\\n \"Description\": \"Use visualization tools to trace the path and see the resulting shape.\",\\n \"Tools\": [\\n \"Digital drawing software\",\\n \"SVG rendering tools\"\\n ]\\n },\\n \"Conclusion\": {\\n \"Description\": \"Based on the analysis and visualization, identify the shape.\",\\n \"Options\": [\\n \"Circle\",\\n \"Heptagon\",\\n \"Hexagon\",\\n \"Kite\",\\n \"Line\",\\n \"Octagon\",\\n \"Pentagon\",\\n \"Rectangle\",\\n \"Sector\",\\n \"Triangle\"\\n ],\\n \"Selected Option\": \"Pentagon\"\\n }\\n}\\n```'}}\n" + ] + } + ], + "source": [ + "for s in app.stream(\n", + " {\"task_description\": task_example, \"reasoning_modules\": reasoning_modules_str}\n", + "):\n", + " print(s)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ea8568d5-bdb6-45cd-8d04-1ab305786caa", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c14a291c-7c1b-43bc-807e-11180290985e", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/streaming-tokens.ipynb b/examples/streaming-tokens.ipynb index 3b19a50e3..8231182b2 100644 --- a/examples/streaming-tokens.ipynb +++ b/examples/streaming-tokens.ipynb @@ -240,6 +240,7 @@ "import json\n", "from langchain_core.messages import FunctionMessage\n", "\n", + "\n", "# Define the function that determines whether to continue or not\n", "def should_continue(messages):\n", " last_message = messages[-1]\n", @@ -250,12 +251,14 @@ " else:\n", " return \"continue\"\n", "\n", + "\n", "# Define the function that calls the model\n", "async def call_model(messages):\n", " response = await model.ainvoke(messages)\n", " # We return a list, because this will get added to the existing list\n", " return response\n", "\n", + "\n", "# Define the function to execute tools\n", "async def call_tool(messages):\n", " # Based on the continue condition\n", @@ -264,7 +267,9 @@ " # We construct an ToolInvocation from the function_call\n", " action = ToolInvocation(\n", " tool=last_message.additional_kwargs[\"function_call\"][\"name\"],\n", - " tool_input=json.loads(last_message.additional_kwargs[\"function_call\"][\"arguments\"]),\n", + " tool_input=json.loads(\n", + " last_message.additional_kwargs[\"function_call\"][\"arguments\"]\n", + " ),\n", " )\n", " # We call the tool_executor and get back a response\n", " response = await tool_executor.ainvoke(action)\n", @@ -292,6 +297,7 @@ "outputs": [], "source": [ "from langgraph.graph import MessageGraph, END\n", + "\n", "# Define a new graph\n", "workflow = MessageGraph()\n", "\n", @@ -320,13 +326,13 @@ " # If `tools`, then we call the tool node.\n", " \"continue\": \"action\",\n", " # Otherwise we finish.\n", - " \"end\": END\n", - " }\n", + " \"end\": END,\n", + " },\n", ")\n", "\n", "# We now add a normal edge from `tools` to `agent`.\n", "# This means that after `tools` is called, `agent` node is called next.\n", - "workflow.add_edge('action', 'agent')\n", + "workflow.add_edge(\"action\", \"agent\")\n", "\n", "# Finally, we compile it!\n", "# This compiles it into a LangChain Runnable,\n", @@ -375,6 +381,7 @@ ], "source": [ "from langchain_core.messages import HumanMessage\n", + "\n", "inputs = [HumanMessage(content=\"what is the weather in sf\")]\n", "async for event in app.astream_events(inputs, version=\"v1\"):\n", " kind = event[\"event\"]\n", diff --git a/langgraph/__init__.py b/langgraph/__init__.py index e69de29bb..959f4ab2e 100644 --- a/langgraph/__init__.py +++ b/langgraph/__init__.py @@ -0,0 +1,3 @@ +from langgraph.version import __version__ + +__all__ = ["__version__"] diff --git a/langgraph/channels/any_value.py b/langgraph/channels/any_value.py new file mode 100644 index 000000000..2cbb2c25a --- /dev/null +++ b/langgraph/channels/any_value.py @@ -0,0 +1,55 @@ +from contextlib import contextmanager +from typing import Generator, Generic, Optional, Sequence, Type + +from typing_extensions import Self + +from langgraph.channels.base import BaseChannel, EmptyChannelError, Value + + +class AnyValue(Generic[Value], BaseChannel[Value, Value, Value]): + """Stores the last value received, assumes that if multiple values are + received, they are all equal.""" + + def __init__(self, typ: Type[Value]) -> None: + self.typ = typ + + @property + def ValueType(self) -> Type[Value]: + """The type of the value stored in the channel.""" + return self.typ + + @property + def UpdateType(self) -> Type[Value]: + """The type of the update received by the channel.""" + return self.typ + + @contextmanager + def empty(self, checkpoint: Optional[Value] = None) -> Generator[Self, None, None]: + empty = self.__class__(self.typ) + if checkpoint is not None: + empty.value = checkpoint + try: + yield empty + finally: + try: + del empty.value + except AttributeError: + pass + + def update(self, values: Sequence[Value]) -> None: + if len(values) == 0: + return + + self.value = values[-1] + + def get(self) -> Value: + try: + return self.value + except AttributeError: + raise EmptyChannelError() + + def checkpoint(self) -> Value: + try: + return self.value + except AttributeError: + raise EmptyChannelError() diff --git a/langgraph/channels/base.py b/langgraph/channels/base.py index b30bee9b2..71680c8ea 100644 --- a/langgraph/channels/base.py +++ b/langgraph/channels/base.py @@ -116,16 +116,16 @@ def create_checkpoint( checkpoint: Checkpoint, channels: Mapping[str, BaseChannel] ) -> Checkpoint: """Create a checkpoint for the given channels.""" - checkpoint = Checkpoint( + values: dict[str, Any] = {} + for k, v in channels.items(): + try: + values[k] = v.checkpoint() + except EmptyChannelError: + pass + return Checkpoint( v=1, ts=datetime.now(timezone.utc).isoformat(), - channel_values=checkpoint["channel_values"], + channel_values=values, channel_versions=checkpoint["channel_versions"], versions_seen=checkpoint["versions_seen"], ) - for k, v in channels.items(): - try: - checkpoint["channel_values"][k] = v.checkpoint() - except EmptyChannelError: - pass - return checkpoint diff --git a/langgraph/channels/ephemeral_value.py b/langgraph/channels/ephemeral_value.py new file mode 100644 index 000000000..2baa2f461 --- /dev/null +++ b/langgraph/channels/ephemeral_value.py @@ -0,0 +1,67 @@ +from contextlib import contextmanager +from typing import Generator, Generic, Optional, Sequence, Type + +from typing_extensions import Self + +from langgraph.channels.base import ( + BaseChannel, + EmptyChannelError, + InvalidUpdateError, + Value, +) + + +class EphemeralValue(Generic[Value], BaseChannel[Value, Value, Value]): + """Stores the value received in the step immediately preceding, clears after.""" + + def __init__(self, typ: Type[Value], guard: bool = True) -> None: + self.typ = typ + self.guard = guard + + @property + def ValueType(self) -> Type[Value]: + """The type of the value stored in the channel.""" + return self.typ + + @property + def UpdateType(self) -> Type[Value]: + """The type of the update received by the channel.""" + return self.typ + + @contextmanager + def empty(self, checkpoint: Optional[Value] = None) -> Generator[Self, None, None]: + empty = self.__class__(self.typ, self.guard) + if checkpoint is not None: + empty.value = checkpoint + try: + yield empty + finally: + try: + del empty.value + except AttributeError: + pass + + def update(self, values: Sequence[Value]) -> None: + if len(values) == 0: + try: + del self.value + except AttributeError: + pass + finally: + return + if len(values) != 1 and self.guard: + raise InvalidUpdateError("LastValue can only receive one value per step.") + + self.value = values[-1] + + def get(self) -> Value: + try: + return self.value + except AttributeError: + raise EmptyChannelError() + + def checkpoint(self) -> Value: + try: + return self.value + except AttributeError: + raise EmptyChannelError() diff --git a/langgraph/checkpoint/aiosqlite.py b/langgraph/checkpoint/aiosqlite.py new file mode 100644 index 000000000..580a3a102 --- /dev/null +++ b/langgraph/checkpoint/aiosqlite.py @@ -0,0 +1,85 @@ +import pickle +from typing import Optional + +import aiosqlite +from langchain_core.pydantic_v1 import Field +from langchain_core.runnables import RunnableConfig +from langchain_core.runnables.utils import ConfigurableFieldSpec + +from langgraph.checkpoint.base import BaseCheckpointSaver, Checkpoint + + +class AsyncSqliteSaver(BaseCheckpointSaver): + conn: aiosqlite.Connection + + is_setup: bool = Field(False, init=False, repr=False) + + class Config: + arbitrary_types_allowed = True + + @classmethod + def from_conn_string(cls, conn_string: str) -> "AsyncSqliteSaver": + return AsyncSqliteSaver(conn=aiosqlite.connect(conn_string)) + + @property + def config_specs(self) -> list[ConfigurableFieldSpec]: + return [ + ConfigurableFieldSpec( + id="thread_id", + annotation=str, + name="Thread ID", + description=None, + default="", + is_shared=True, + ), + ] + + async def setup(self) -> None: + print("hello") + if self.is_setup: + return + + try: + await self.conn + await self.conn.executescript( + """ + CREATE TABLE IF NOT EXISTS checkpoints ( + thread_id TEXT PRIMARY KEY, + checkpoint BLOB + ); + """ + ) + await self.conn.commit() + + print("good bye") + + self.is_setup = True + except BaseException as e: + print(e) + raise e + + def get(self, config: RunnableConfig) -> Optional[Checkpoint]: + raise NotImplementedError + + def put(self, config: RunnableConfig, checkpoint: Checkpoint) -> None: + raise NotImplementedError + + async def aget(self, config: RunnableConfig) -> Optional[Checkpoint]: + await self.setup() + async with self.conn.execute( + "SELECT checkpoint FROM checkpoints WHERE thread_id = ?", + (config["configurable"]["thread_id"],), + ) as cursor: + if value := await cursor.fetchone(): + return pickle.loads(value[0]) + + async def aput(self, config: RunnableConfig, checkpoint: Checkpoint) -> None: + await self.setup() + await self.conn.execute( + "INSERT OR REPLACE INTO checkpoints (thread_id, checkpoint) VALUES (?, ?)", + ( + config["configurable"]["thread_id"], + pickle.dumps(checkpoint), + ), + ) + await self.conn.commit() diff --git a/langgraph/checkpoint/base.py b/langgraph/checkpoint/base.py index 699dc9dd8..99b0e294a 100644 --- a/langgraph/checkpoint/base.py +++ b/langgraph/checkpoint/base.py @@ -1,6 +1,7 @@ import asyncio from abc import ABC, abstractmethod from collections import defaultdict +from copy import deepcopy from datetime import datetime, timezone from typing import Any, Optional, TypedDict @@ -33,6 +34,16 @@ def empty_checkpoint() -> Checkpoint: ) +def copy_checkpoint(checkpoint: Checkpoint) -> Checkpoint: + return Checkpoint( + v=checkpoint["v"], + ts=checkpoint["ts"], + channel_values=checkpoint["channel_values"].copy(), + channel_versions=checkpoint["channel_versions"].copy(), + versions_seen=deepcopy(checkpoint["versions_seen"]), + ) + + class CheckpointAt(StrEnum): END_OF_STEP = "end_of_step" END_OF_RUN = "end_of_run" diff --git a/langgraph/checkpoint/sqlite.py b/langgraph/checkpoint/sqlite.py index 2d6aad224..75958708e 100644 --- a/langgraph/checkpoint/sqlite.py +++ b/langgraph/checkpoint/sqlite.py @@ -79,3 +79,9 @@ class SqliteSaver(BaseCheckpointSaver): pickle.dumps(checkpoint), ), ) + + async def aget(self, config: RunnableConfig) -> Optional[Checkpoint]: + raise NotImplementedError + + async def aput(self, config: RunnableConfig, checkpoint: Checkpoint) -> None: + raise NotImplementedError diff --git a/langgraph/constants.py b/langgraph/constants.py index 6e5f9c37f..4bf8b1335 100644 --- a/langgraph/constants.py +++ b/langgraph/constants.py @@ -1,2 +1,3 @@ CONFIG_KEY_SEND = "__pregel_send" CONFIG_KEY_READ = "__pregel_read" +INTERRUPT = "__interrupt__" diff --git a/langgraph/graph/__init__.py b/langgraph/graph/__init__.py index d9276c4b1..8fac44cfa 100644 --- a/langgraph/graph/__init__.py +++ b/langgraph/graph/__init__.py @@ -1,5 +1,5 @@ -from langgraph.graph.graph import END, Graph, START +from langgraph.graph.graph import END, Graph from langgraph.graph.message import MessageGraph from langgraph.graph.state import StateGraph -__all__ = ["END", "START", "Graph", "StateGraph", "MessageGraph"] +__all__ = ["END", "Graph", "StateGraph", "MessageGraph"] diff --git a/langgraph/graph/graph.py b/langgraph/graph/graph.py index f10412f9c..b4ce617a8 100644 --- a/langgraph/graph/graph.py +++ b/langgraph/graph/graph.py @@ -1,6 +1,7 @@ +import logging from asyncio import iscoroutinefunction from collections import defaultdict -from typing import Any, Callable, Dict, NamedTuple, Optional +from typing import Any, Callable, Dict, NamedTuple, Optional, Sequence from langchain_core.runnables import Runnable from langchain_core.runnables.base import ( @@ -8,12 +9,17 @@ from langchain_core.runnables.base import ( RunnableLike, coerce_to_runnable, ) +from langchain_core.runnables.config import RunnableConfig +from langchain_core.runnables.graph import Graph as RunnableGraph +from langgraph.channels.ephemeral_value import EphemeralValue from langgraph.checkpoint import BaseCheckpointSaver from langgraph.pregel import Channel, Pregel +logger = logging.getLogger(__name__) + +START = "__start__" END = "__end__" -START = "START" class Branch(NamedTuple): @@ -35,9 +41,16 @@ class Graph: self.edges = set[tuple[str, str]]() self.branches: defaultdict[str, list[Branch]] = defaultdict(list) self.support_multiple_edges = False - self.entry_point = None + self.compiled = False + self.entry_point: Optional[str] = None + self.entry_point_branch: Optional[Branch] = None def add_node(self, key: str, action: RunnableLike) -> None: + if self.compiled: + logger.warning( + "Adding a node to a graph that has already been compiled. This will " + "not be reflected in the compiled graph." + ) if key in self.nodes: raise ValueError(f"Node `{key}` already present.") if key == END: @@ -46,6 +59,11 @@ class Graph: self.nodes[key] = coerce_to_runnable(action) def add_edge(self, start_key: str, end_key: str) -> None: + if self.compiled: + logger.warning( + "Adding an edge to a graph that has already been compiled. This will " + "not be reflected in the compiled graph." + ) if start_key == END: raise ValueError("END cannot be a start node") if start_key not in self.nodes: @@ -66,6 +84,11 @@ class Graph: condition: Callable[..., str], conditional_edge_mapping: Optional[Dict[str, str]] = None, ) -> None: + if self.compiled: + logger.warning( + "Adding an edge to a graph that has already been compiled. This will " + "not be reflected in the compiled graph." + ) if start_key not in self.nodes: raise ValueError(f"Need to add_node `{start_key}` first") if iscoroutinefunction(condition): @@ -83,47 +106,83 @@ class Graph: self.branches[start_key].append(Branch(condition, conditional_edge_mapping)) def set_entry_point(self, key: str) -> None: + if self.compiled: + logger.warning( + "Setting the entry point of a graph that has already been compiled. " + "This will not be reflected in the compiled graph." + ) if key not in self.nodes: raise ValueError(f"Need to add_node `{key}` first") self.entry_point = key - def set_entry_route(self, condition: Callable[..., str], - conditional_edge_mapping: Optional[Dict[str, str]] = None) -> None: - self.add_node(START, lambda x: None) - self.add_conditional_edges(START, condition, conditional_edge_mapping) - self.set_entry_point(START) + def set_conditional_entry_point( + self, + condition: Callable[..., str], + conditional_edge_mapping: Optional[Dict[str, str]] = None, + ) -> None: + if self.compiled: + logger.warning( + "Setting the entry point of a graph that has already been compiled. " + "This will not be reflected in the compiled graph." + ) + if iscoroutinefunction(condition): + raise ValueError("Condition cannot be a coroutine function") + if conditional_edge_mapping and set( + conditional_edge_mapping.values() + ).difference([END]).difference(self.nodes): + raise ValueError( + f"Missing nodes which are in conditional edge mapping. Mapping " + f"contains possible destinations: " + f"{list(conditional_edge_mapping.values())}. Possible nodes are " + f"{list(self.nodes.keys())}." + ) + self.entry_point_branch = Branch(condition, conditional_edge_mapping) def set_finish_point(self, key: str) -> None: return self.add_edge(key, END) - def validate(self) -> None: + def validate(self, interrupt: Optional[Sequence[str]] = None) -> None: all_starts = {src for src, _ in self.edges} | {src for src in self.branches} for node in self.nodes: if node not in all_starts: raise ValueError(f"Node `{node}` is a dead-end") - if all( - branch.ends is not None - for branch_list in self.branches.values() - for branch in branch_list - ): - all_ends = ( - {end for _, end in self.edges} - | { - end - for branch_list in self.branches.values() - for branch in branch_list - for end in branch.ends.values() - } - | {self.entry_point} - ) + branches = [ + branch for branch_list in self.branches.values() for branch in branch_list + ] + if self.entry_point_branch is not None: + branches.append(self.entry_point_branch) + + all_hard_ends = {end for _, end in self.edges} + if self.entry_point is not None: + all_hard_ends.add(self.entry_point) + + if all(branch.ends is not None for branch in branches): + all_ends = all_hard_ends | { + end for branch in branches for end in branch.ends.values() + } for node in self.nodes: if node not in all_ends: raise ValueError(f"Node `{node}` is not reachable") - def compile(self, checkpointer: Optional[BaseCheckpointSaver] = None) -> Pregel: - self.validate() + if interrupt: + for node in interrupt: + if node not in self.nodes: + raise ValueError(f"Node `{node}` is not present") + + self.compiled = True + + def compile( + self, + checkpointer: Optional[BaseCheckpointSaver] = None, + interrupt_before: Optional[Sequence[str]] = None, + interrupt_after: Optional[Sequence[str]] = None, + debug: bool = False, + ) -> "CompiledGraph": + interrupt_before = interrupt_before or [] + interrupt_after = interrupt_after or [] + self.validate(interrupt=interrupt_before + interrupt_after) outgoing_edges = defaultdict(list) for start, end in self.edges: @@ -133,6 +192,11 @@ class Graph: key: (Channel.subscribe_to(f"{key}:inbox") | node | Channel.write_to(key)) for key, node in self.nodes.items() } + node_outboxes = { + # we clear outbox channels after each step + key: EphemeralValue(Any) + for key in self.nodes + } for key in self.nodes: outgoing = outgoing_edges[key] @@ -147,10 +211,72 @@ class Graph: branch.runnable, name=f"{key}_condition" ) - return Pregel( + if self.entry_point_branch: + nodes[f"{START}:edges"] = Channel.subscribe_to( + START, tags=["langsmith:hidden"] + ) | RunnableLambda( + self.entry_point_branch.runnable, name=f"{START}_condition" + ) + elif self.entry_point is None: + raise ValueError("No entry point set") + + return CompiledGraph( + graph=self, nodes=nodes, - input=f"{self.entry_point}:inbox", + channels={**node_outboxes}, + input=f"{self.entry_point}:inbox" if self.entry_point else START, output=END, hidden=[f"{node}:inbox" for node in self.nodes], + snapshot_channels=list(self.nodes), checkpointer=checkpointer, + interrupt_before_nodes=[f"{node}:inbox" for node in interrupt_before], + interrupt_after_nodes=interrupt_after, + debug=debug, ) + + +class CompiledGraph(Pregel): + graph: Graph + + def get_graph(self, config: Optional[RunnableConfig] = None) -> RunnableGraph: + graph = RunnableGraph() + graph.add_node(self.get_input_schema(config), START) + graph.add_node(self.get_output_schema(config), END) + + for key, node in self.graph.nodes.items(): + graph.add_node(node, key) + for start, end in self.graph.edges: + graph.add_edge(graph.nodes[start], graph.nodes[end]) + for start, branches in self.graph.branches.items(): + for i, branch in enumerate(branches): + name = f"{start}_{branch.condition.__name__}" + if i > 0: + name += f"_{i}" + graph.add_node( + RunnableLambda(branch.runnable, name=branch.condition.__name__), + name, + ) + graph.add_edge(graph.nodes[start], graph.nodes[name]) + ends = branch.ends or {k: k for k in self.graph.nodes} + for label, end in ends.items(): + graph.add_edge(graph.nodes[name], graph.nodes[end], label) + if self.graph.entry_point_branch: + graph.add_node( + RunnableLambda( + self.graph.entry_point_branch.runnable, + name=self.graph.entry_point_branch.condition.__name__, + ), + f"{START}_condition", + ) + graph.add_edge(graph.nodes[START], graph.nodes[f"{START}_condition"]) + ends = self.graph.entry_point_branch.ends or { + k: k for k in self.graph.nodes + } + for label, end in ends.items(): + graph.add_edge( + graph.nodes[f"{START}_condition"], graph.nodes[end], label + ) + elif self.graph.entry_point: + graph.add_edge(graph.nodes[START], graph.nodes[self.graph.entry_point]) + + return graph diff --git a/langgraph/graph/state.py b/langgraph/graph/state.py index 88c526e2f..76362979d 100644 --- a/langgraph/graph/state.py +++ b/langgraph/graph/state.py @@ -1,21 +1,21 @@ from collections import defaultdict from functools import partial from inspect import signature -from typing import Any, Optional, Type +from typing import Any, Optional, Sequence, Type -from langchain_core.runnables import RunnableLambda, RunnablePassthrough +from langchain_core.runnables import RunnableLambda from langchain_core.runnables.base import RunnableLike +from langgraph.channels.any_value import AnyValue from langgraph.channels.base import BaseChannel, InvalidUpdateError from langgraph.channels.binop import BinaryOperatorAggregate +from langgraph.channels.ephemeral_value import EphemeralValue from langgraph.channels.last_value import LastValue from langgraph.checkpoint import BaseCheckpointSaver -from langgraph.graph.graph import END, Graph -from langgraph.pregel import Channel, Pregel -from langgraph.pregel.read import ChannelRead -from langgraph.pregel.write import SKIP_WRITE, ChannelWrite - -START = "__start__" +from langgraph.graph.graph import END, START, CompiledGraph, Graph +from langgraph.pregel import Channel +from langgraph.pregel.read import ChannelInvoke +from langgraph.pregel.write import SKIP_WRITE, ChannelWrite, ChannelWriteEntry class StateGraph(Graph): @@ -34,23 +34,38 @@ class StateGraph(Graph): ) return super().add_node(key, action) - def compile(self, checkpointer: Optional[BaseCheckpointSaver] = None) -> Pregel: - self.validate() + def compile( + self, + checkpointer: Optional[BaseCheckpointSaver] = None, + interrupt_before: Optional[Sequence[str]] = None, + interrupt_after: Optional[Sequence[str]] = None, + debug: bool = False, + ) -> CompiledGraph: + interrupt_before = interrupt_before or [] + interrupt_after = interrupt_after or [] + self.validate(interrupt=interrupt_before + interrupt_after) state_keys = list(self.channels) state_keys_read = state_keys[0] if state_keys == ["__root__"] else state_keys + state_channels = ( + {chan: chan for chan in state_keys} + if isinstance(state_keys_read, list) + else {None: state_keys_read} + ) update_channels = ( - [("__root__", None, True)] + [ChannelWriteEntry("__root__", None, True)] if not isinstance(state_keys_read, list) else [ - (key, RunnableLambda(partial(_dict_getter, state_keys, key)), False) + ChannelWriteEntry( + key, RunnableLambda(partial(_dict_getter, state_keys, key)), False + ) for key in state_keys_read ] ) coerce_state = ( partial(_coerce_state, self.schema) if isinstance(state_keys_read, list) - else RunnablePassthrough() + else None ) outgoing_edges = defaultdict(list) @@ -59,23 +74,44 @@ class StateGraph(Graph): nodes = { key: ( - Channel.subscribe_to(f"{key}:inbox") - | coerce_state # coerce/validate using schema + ChannelInvoke( + triggers=[f"{key}:inbox"], + channels=state_channels, + mapper=coerce_state, + ) | node - | ChannelWrite(channels=[(key, None, False)] + update_channels) + | ChannelWrite( + channels=[ChannelWriteEntry(key, None, False)] + update_channels + ) ) for key, node in self.nodes.items() } + node_inboxes = { + # we take any value written to channel because all writers + # write the entire state as of that step, which is equal for all + f"{key}:inbox": AnyValue(self.schema) + for key in list(self.nodes) + [START] + } + node_outboxes = { + # we clear outbox channels after each step + key: EphemeralValue(Any) + for key in list(self.nodes) + [START] + } for key in self.nodes: outgoing = outgoing_edges[key] edges_key = f"{key}:edges" if outgoing or key in self.branches: - nodes[edges_key] = Channel.subscribe_to( - key, tags=["langsmith:hidden"] - ) | ChannelRead(state_keys_read) + nodes[edges_key] = ChannelInvoke( + triggers=[key], tags=["langsmith:hidden"], channels=state_channels + ) if outgoing: - nodes[edges_key] |= Channel.write_to(*[dest for dest in outgoing]) + nodes[edges_key] |= ChannelWrite( + channels=[ + ChannelWriteEntry(dest, None if dest == END else key, True) + for dest in outgoing + ] + ) if key in self.branches: for branch in self.branches[key]: nodes[edges_key] |= RunnableLambda( @@ -84,20 +120,38 @@ class StateGraph(Graph): nodes[START] = Channel.subscribe_to( f"{START}:inbox", tags=["langsmith:hidden"] - ) | ChannelWrite(channels=[(START, None, False)] + update_channels) - nodes[f"{START}:edges"] = ( - Channel.subscribe_to(START, tags=["langsmith:hidden"]) - | ChannelRead(state_keys_read) - | Channel.write_to(f"{self.entry_point}:inbox") + ) | ChannelWrite( + channels=[ChannelWriteEntry(START, None, False)] + update_channels ) + nodes[f"{START}:edges"] = ChannelInvoke( + triggers=[START], tags=["langsmith:hidden"], channels=state_channels + ) + if self.entry_point: + nodes[f"{START}:edges"] |= Channel.write_to(f"{self.entry_point}:inbox") + elif self.entry_point_branch: + nodes[f"{START}:edges"] |= RunnableLambda( + self.entry_point_branch.runnable, name=f"{START}_condition" + ) + else: + raise ValueError("No entry point set") - return Pregel( + return CompiledGraph( + graph=self, nodes=nodes, - channels=self.channels, + channels={ + **self.channels, + **node_inboxes, + **node_outboxes, + END: LastValue(self.schema), + }, input=f"{START}:inbox", output=END, hidden=[f"{node}:inbox" for node in self.nodes] + [START] + state_keys, + snapshot_channels=state_keys_read, checkpointer=checkpointer, + interrupt_before_nodes=[f"{node}:inbox" for node in interrupt_before], + interrupt_after_nodes=interrupt_after, + debug=debug, ) @@ -105,7 +159,7 @@ def _coerce_state(schema: Type[Any], input: dict[str, Any]) -> dict[str, Any]: return schema(**input) -def _dict_getter(allowed_keys: str, key: str, input: dict) -> Any: +def _dict_getter(allowed_keys: list[str], key: str, input: dict) -> Any: if input is not None: if not isinstance(input, dict) or any(key not in allowed_keys for key in input): raise InvalidUpdateError( diff --git a/langgraph/prebuilt/chat_agent_executor.py b/langgraph/prebuilt/chat_agent_executor.py index bc7208107..fcd4d6806 100644 --- a/langgraph/prebuilt/chat_agent_executor.py +++ b/langgraph/prebuilt/chat_agent_executor.py @@ -1,17 +1,23 @@ import json import operator -from typing import Annotated, Sequence, TypedDict +from typing import Annotated, Sequence, TypedDict, Union -from langchain_core.agents import AgentAction -from langchain_core.messages import BaseMessage, FunctionMessage +from langchain_core.language_models import LanguageModelLike +from langchain_core.messages import BaseMessage, FunctionMessage, ToolMessage from langchain_core.runnables import RunnableLambda -from langchain_core.utils.function_calling import convert_to_openai_function +from langchain_core.tools import BaseTool +from langchain_core.utils.function_calling import ( + convert_to_openai_function, + convert_to_openai_tool, +) from langgraph.graph import END, StateGraph -from langgraph.prebuilt.tool_executor import ToolExecutor +from langgraph.prebuilt.tool_executor import ToolExecutor, ToolInvocation -def create_function_calling_executor(model, tools): +def create_function_calling_executor( + model: LanguageModelLike, tools: Union[ToolExecutor, Sequence[BaseTool]] +): if isinstance(tools, ToolExecutor): tool_executor = tools tool_classes = tools.tools @@ -20,8 +26,15 @@ def create_function_calling_executor(model, tools): tool_classes = tools model = model.bind(functions=[convert_to_openai_function(t) for t in tool_classes]) + # We create the AgentState that we will pass around + # This simply involves a list of messages + # We want steps to return messages to append to the list + # So we annotate the messages attribute with operator.add + class AgentState(TypedDict): + messages: Annotated[Sequence[BaseMessage], operator.add] + # Define the function that determines whether to continue or not - def should_continue(state): + def should_continue(state: AgentState): messages = state["messages"] last_message = messages[-1] # If there is no function call, then we finish @@ -32,34 +45,33 @@ def create_function_calling_executor(model, tools): return "continue" # Define the function that calls the model - def call_model(state): + def call_model(state: AgentState): messages = state["messages"] response = model.invoke(messages) # We return a list, because this will get added to the existing list return {"messages": [response]} - async def acall_model(state): + async def acall_model(state: AgentState): messages = state["messages"] response = await model.ainvoke(messages) # We return a list, because this will get added to the existing list return {"messages": [response]} # Define the function to execute tools - def _get_action(state): + def _get_action(state: AgentState): messages = state["messages"] # Based on the continue condition # we know the last message involves a function call last_message = messages[-1] # We construct an AgentAction from the function_call - return AgentAction( + return ToolInvocation( tool=last_message.additional_kwargs["function_call"]["name"], tool_input=json.loads( last_message.additional_kwargs["function_call"]["arguments"] ), - log="", ) - def call_tool(state): + def call_tool(state: AgentState): action = _get_action(state) # We call the tool_executor and get back a response response = tool_executor.invoke(action) @@ -68,7 +80,7 @@ def create_function_calling_executor(model, tools): # We return a list, because this will get added to the existing list return {"messages": [function_message]} - async def acall_tool(state): + async def acall_tool(state: AgentState): action = _get_action(state) # We call the tool_executor and get back a response response = await tool_executor.ainvoke(action) @@ -77,13 +89,135 @@ def create_function_calling_executor(model, tools): # We return a list, because this will get added to the existing list return {"messages": [function_message]} - # We create the AgentState that we will pass around - # This simply involves a list of messages - # We want steps to return messages to append to the list - # So we annotate the messages attribute with operator.add - class AgentState(TypedDict): - messages: Annotated[Sequence[BaseMessage], operator.add] - + # Define a new graph + workflow = StateGraph(AgentState) + + # Define the two nodes we will cycle between + workflow.add_node("agent", RunnableLambda(call_model, acall_model)) + workflow.add_node("action", RunnableLambda(call_tool, acall_tool)) + + # Set the entrypoint as `agent` + # This means that this node is the first one called + workflow.set_entry_point("agent") + + # We now add a conditional edge + workflow.add_conditional_edges( + # First, we define the start node. We use `agent`. + # This means these are the edges taken after the `agent` node is called. + "agent", + # Next, we pass in the function that will determine which node is called next. + should_continue, + # Finally we pass in a mapping. + # The keys are strings, and the values are other nodes. + # END is a special node marking that the graph should finish. + # What will happen is we will call `should_continue`, and then the output of that + # will be matched against the keys in this mapping. + # Based on which one it matches, that node will then be called. + { + # If `tools`, then we call the tool node. + "continue": "action", + # Otherwise we finish. + "end": END, + }, + ) + + # We now add a normal edge from `tools` to `agent`. + # This means that after `tools` is called, `agent` node is called next. + workflow.add_edge("action", "agent") + + # Finally, we compile it! + # This compiles it into a LangChain Runnable, + # meaning you can use it as you would any other runnable + return workflow.compile() + + +def create_tool_calling_executor( + model: LanguageModelLike, tools: Union[ToolExecutor, Sequence[BaseTool]] +): + if isinstance(tools, ToolExecutor): + tool_executor = tools + tool_classes = tools.tools + else: + tool_executor = ToolExecutor(tools) + tool_classes = tools + model = model.bind(tools=[convert_to_openai_tool(t) for t in tool_classes]) + + # We create the AgentState that we will pass around + # This simply involves a list of messages + # We want steps to return messages to append to the list + # So we annotate the messages attribute with operator.add + class AgentState(TypedDict): + messages: Annotated[Sequence[BaseMessage], operator.add] + + # Define the function that determines whether to continue or not + def should_continue(state: AgentState): + messages = state["messages"] + last_message = messages[-1] + # If there is no function call, then we finish + if "tool_calls" not in last_message.additional_kwargs: + return "end" + # Otherwise if there is, we continue + else: + return "continue" + + # Define the function that calls the model + def call_model(state: AgentState): + messages = state["messages"] + response = model.invoke(messages) + # We return a list, because this will get added to the existing list + return {"messages": [response]} + + async def acall_model(state: AgentState): + messages = state["messages"] + response = await model.ainvoke(messages) + # We return a list, because this will get added to the existing list + return {"messages": [response]} + + # Define the function to execute tools + def _get_actions(state: AgentState): + messages = state["messages"] + # Based on the continue condition + # we know the last message involves a tool call + last_message = messages[-1] + # We construct an AgentAction from each of the tool_calls + return ( + [ + ToolInvocation( + tool=tool_call["function"]["name"], + tool_input=json.loads(tool_call["function"]["arguments"]), + ) + for tool_call in last_message.additional_kwargs["tool_calls"] + ], + [ + tool_call["id"] + for tool_call in last_message.additional_kwargs["tool_calls"] + ], + ) + + def call_tool(state: AgentState): + actions, ids = _get_actions(state) + # We call the tool_executor and get back a response + responses = tool_executor.batch(actions) + # We use the response to create a FunctionMessage + tool_messages = [ + ToolMessage(content=str(response), tool_call_id=id) + for response, id in zip(responses, ids) + ] + # We return a list, because this will get added to the existing list + return {"messages": tool_messages} + + async def acall_tool(state: AgentState): + actions, ids = _get_actions(state) + # We call the tool_executor and get back a response + responses = await tool_executor.abatch(actions) + # We use the response to create a FunctionMessage + tool_messages = [ + ToolMessage(content=str(response), tool_call_id=id) + for response, id in zip(responses, ids) + ] + # We return a list, because this will get added to the existing list + return {"messages": tool_messages} + # Define a new graph workflow = StateGraph(AgentState) diff --git a/langgraph/pregel/__init__.py b/langgraph/pregel/__init__.py index ad0b650d2..4c91814ab 100644 --- a/langgraph/pregel/__init__.py +++ b/langgraph/pregel/__init__.py @@ -11,6 +11,7 @@ from typing import ( Callable, Iterator, Mapping, + NamedTuple, Optional, Sequence, Type, @@ -24,7 +25,7 @@ from langchain_core.callbacks.manager import ( CallbackManagerForChainRun, ) from langchain_core.globals import get_debug -from langchain_core.pydantic_v1 import BaseModel, Field, create_model, root_validator +from langchain_core.pydantic_v1 import BaseModel, Field, root_validator from langchain_core.runnables import ( Runnable, RunnableSerializable, @@ -37,10 +38,12 @@ from langchain_core.runnables.config import ( ) from langchain_core.runnables.utils import ( ConfigurableFieldSpec, + create_model, get_unique_config_specs, ) from langchain_core.tracers.log_stream import LogStreamCallbackHandler +from langgraph.channels.any_value import AnyValue from langgraph.channels.base import ( AsyncChannelsManager, BaseChannel, @@ -49,21 +52,23 @@ from langgraph.channels.base import ( InvalidUpdateError, create_checkpoint, ) +from langgraph.channels.ephemeral_value import EphemeralValue from langgraph.channels.last_value import LastValue from langgraph.checkpoint.base import ( BaseCheckpointSaver, Checkpoint, CheckpointAt, + copy_checkpoint, empty_checkpoint, ) -from langgraph.constants import CONFIG_KEY_READ, CONFIG_KEY_SEND +from langgraph.constants import CONFIG_KEY_READ, CONFIG_KEY_SEND, INTERRUPT from langgraph.pregel.debug import print_checkpoint, print_step_start from langgraph.pregel.io import map_input, map_output from langgraph.pregel.log import logger from langgraph.pregel.read import ChannelBatch, ChannelInvoke -from langgraph.pregel.reserved import ReservedChannels +from langgraph.pregel.reserved import AllReservedChannels, ReservedChannels from langgraph.pregel.validate import validate_graph, validate_keys -from langgraph.pregel.write import ChannelWrite +from langgraph.pregel.write import ChannelWrite, ChannelWriteEntry WriteValue = Union[ Runnable[Input, Output], @@ -149,12 +154,22 @@ class Channel: """Writes to channels the result of the lambda, or None to skip writing.""" return ChannelWrite( channels=( - [(c, None, False) for c in channels] - + [(k, _coerce_write_value(v), True) for k, v in kwargs.items()] + [ChannelWriteEntry(c, None, False) for c in channels] + + [ + ChannelWriteEntry(k, _coerce_write_value(v), True) + for k, v in kwargs.items() + ] ) ) +class StateSnapshot(NamedTuple): + values: dict[str, Any] | Any + """Current values of channels""" + next: tuple[str] + """Nodes to execute in the next step, if any""" + + class Pregel( RunnableSerializable[Union[dict[str, Any], Any], Union[dict[str, Any], Any]] ): @@ -162,12 +177,19 @@ class Pregel( channels: Mapping[str, BaseChannel] = Field(default_factory=dict) + # TODO Rename to `output_channels` output: Union[str, Sequence[str]] = "output" + # TODO Replace with `stream_channels` hidden: Sequence[str] = Field(default_factory=list) - interrupt: Sequence[str] = Field(default_factory=list) + snapshot_channels: Union[str, Sequence[str]] = Field(default_factory=list) + interrupt_after_nodes: Sequence[str] = Field(default_factory=list) + + interrupt_before_nodes: Sequence[str] = Field(default_factory=list) + + # TODO Rename to `input_channels` input: Union[str, Sequence[str]] = "input" step_timeout: Optional[float] = None @@ -189,8 +211,12 @@ class Pregel( values["input"], values["output"], values["hidden"], - values["interrupt"], + values["interrupt_after_nodes"], + values["interrupt_before_nodes"], ) + if values["interrupt_after_nodes"] or values["interrupt_before_nodes"]: + if not values["checkpointer"]: + raise ValueError("Interrupts require a checkpointer") return values @property @@ -244,31 +270,157 @@ class Pregel( **{k: (self.channels[k].ValueType, None) for k in self.output}, ) + @property + def snapshot_channels_list(self) -> Sequence[str]: + return ( + [self.snapshot_channels] + if isinstance(self.snapshot_channels, str) + else self.snapshot_channels + or [k for k in self.channels if k not in AllReservedChannels] + ) + + def get_state(self, config: RunnableConfig) -> StateSnapshot: + if not self.checkpointer: + raise ValueError("No checkpointer set") + + checkpoint = self.checkpointer.get(config) + checkpoint = checkpoint or empty_checkpoint() + with ChannelsManager(self.channels, checkpoint) as channels: + _, next_tasks = _prepare_next_tasks( + checkpoint, self.nodes, channels, update_seen=False + ) + values = { + k: _read_channel(channels, k) + for k in channels + if k in self.snapshot_channels_list + } + return StateSnapshot( + values[self.snapshot_channels] + if isinstance(self.snapshot_channels, str) + else values, + tuple(name for _, _, name in next_tasks), + ) + + async def aget_state(self, config: RunnableConfig) -> StateSnapshot: + if not self.checkpointer: + raise ValueError("No checkpointer set") + + checkpoint = await self.checkpointer.aget(config) + checkpoint = checkpoint or empty_checkpoint() + async with AsyncChannelsManager(self.channels, checkpoint) as channels: + _, next_tasks = _prepare_next_tasks( + checkpoint, self.nodes, channels, update_seen=False + ) + values = { + k: _read_channel(channels, k) + for k in channels + if k in self.snapshot_channels_list + } + return StateSnapshot( + values[self.snapshot_channels] + if isinstance(self.snapshot_channels, str) + else values, + tuple(name for _, _, name in next_tasks), + ) + + def update_state( + self, config: RunnableConfig, values: dict[str, Any] | Any + ) -> None: + if not self.checkpointer: + raise ValueError("No checkpointer set") + + values = ( + {self.snapshot_channels: values} + if isinstance(self.snapshot_channels, str) + else values + ) + checkpoint = self.checkpointer.get(config) + checkpoint = copy_checkpoint(checkpoint) if checkpoint else empty_checkpoint() + with ChannelsManager(self.channels, checkpoint) as channels: + for k, v in values.items(): + channels[k].update([v]) + checkpoint["channel_versions"][k] += 1 + for k in self.snapshot_channels or self.channels: + version = checkpoint["channel_versions"][k] + checkpoint["versions_seen"][INTERRUPT][k] = version + self.checkpointer.put(config, create_checkpoint(checkpoint, channels)) + + async def aupdate_state( + self, config: RunnableConfig, values: dict[str, Any] | Any + ) -> None: + if not self.checkpointer: + raise ValueError("No checkpointer set") + + values = ( + {self.snapshot_channels: values} + if isinstance(self.snapshot_channels, str) + else values + ) + checkpoint = await self.checkpointer.aget(config) + checkpoint = copy_checkpoint(checkpoint) if checkpoint else empty_checkpoint() + async with AsyncChannelsManager(self.channels, checkpoint) as channels: + for k, v in values.items(): + channels[k].update([v]) + checkpoint["channel_versions"][k] += 1 + for k in self.snapshot_channels or self.channels: + version = checkpoint["channel_versions"][k] + checkpoint["versions_seen"][INTERRUPT][k] = version + await self.checkpointer.aput( + config, create_checkpoint(checkpoint, channels) + ) + + def _defaults( + self, + *, + input_keys: Optional[Union[str, Sequence[str]]] = None, + output_keys: Optional[Union[str, Sequence[str]]] = None, + interrupt_before_nodes: Optional[Sequence[str]] = None, + interrupt_after_nodes: Optional[Sequence[str]] = None, + debug: Optional[bool] = None, + ) -> tuple[ + bool, + Union[str, Sequence[str]], + Union[str, Sequence[str]], + Optional[Sequence[str]], + Optional[Sequence[str]], + ]: + debug = debug if debug is not None else self.debug + if output_keys is None: + output_keys = [chan for chan in self.channels if chan not in self.hidden] + else: + validate_keys(output_keys, self.channels) + if input_keys is None: + input_keys = self.input + else: + validate_keys(input_keys, self.channels) + interrupt_before_nodes = interrupt_before_nodes or self.interrupt_before_nodes + interrupt_after_nodes = interrupt_after_nodes or self.interrupt_after_nodes + return ( + debug, + input_keys, + output_keys, + interrupt_before_nodes, + interrupt_after_nodes, + ) + def _transform( self, input: Iterator[Union[dict[str, Any], Any]], run_manager: CallbackManagerForChainRun, config: RunnableConfig, - *, - input_keys: Optional[Union[str, Sequence[str]]] = None, - output_keys: Optional[Union[str, Sequence[str]]] = None, - interrupt: Optional[Sequence[str]] = None, + **kwargs: Any, ) -> Iterator[Union[dict[str, Any], Any]]: try: if config["recursion_limit"] < 1: raise ValueError("recursion_limit must be at least 1") # assign defaults - if output_keys is None: - output_keys = [ - chan for chan in self.channels if chan not in self.hidden - ] - else: - validate_keys(output_keys, self.channels) - if input_keys is None: - input_keys = self.input - else: - validate_keys(input_keys, self.channels) - interrupt = interrupt or self.interrupt + ( + debug, + input_keys, + output_keys, + interrupt_before_nodes, + interrupt_after_nodes, + ) = self._defaults(**kwargs) # copy nodes to ignore mutations during execution processes = {**self.nodes} # get checkpoint from saver, or create an empty one @@ -283,7 +435,7 @@ class Pregel( w for c in input for w in map_input(input_keys, c) ): # discard any unfinished tasks from previous checkpoint - _prepare_next_tasks(checkpoint, processes, channels) + checkpoint, _ = _prepare_next_tasks(checkpoint, processes, channels) # apply input writes _apply_writes( checkpoint, @@ -301,7 +453,9 @@ class Pregel( # channels are guaranteed to be immutable for the duration of the step, # with channel updates applied only at the transition between steps for step in range(config["recursion_limit"] + 1): - next_tasks = _prepare_next_tasks(checkpoint, processes, channels) + checkpoint, next_tasks = _prepare_next_tasks( + checkpoint, processes, channels + ) # if no more tasks, we're done if not next_tasks: @@ -313,7 +467,7 @@ class Pregel( "by setting the `recursion_limit` config key." ) - if self.debug: + if debug: print_step_start(step, next_tasks) # collect all writes to channels, without applying them yet @@ -351,15 +505,15 @@ class Pregel( timeout=self.step_timeout, ) - # interrupt on failure or timeout - _interrupt_or_proceed(done, inflight, step) + # panic on failure or timeout + _panic_or_proceed(done, inflight, step) # apply writes to channels _apply_writes( checkpoint, channels, pending_writes, config, step + 1 ) - if self.debug: + if debug: print_checkpoint(step, channels) # yield current value and checkpoint view @@ -370,43 +524,54 @@ class Pregel( # if view was updated, apply writes to channels _apply_writes_from_view(checkpoint, channels, step_output) + # with previous step's checkpoint + if do_interrupt_before := _should_interrupt( + checkpoint, + interrupt_before_nodes, + self.snapshot_channels_list, + pending_writes, + ): + break + # save end of step checkpoint - if ( - self.checkpointer is not None - and self.checkpointer.at == CheckpointAt.END_OF_STEP + if self.checkpointer is not None and ( + self.checkpointer.at == CheckpointAt.END_OF_STEP + or interrupt_before_nodes ): checkpoint = create_checkpoint(checkpoint, channels) self.checkpointer.put(config, checkpoint) - # interrupt if any channel written to is in interrupt list - if any(chan for chan, _ in pending_writes if chan in interrupt): + # with this step's checkpoint, + if _should_interrupt( + checkpoint, + interrupt_after_nodes, + self.snapshot_channels_list, + pending_writes, + ): break # save end of run checkpoint if ( self.checkpointer is not None and self.checkpointer.at == CheckpointAt.END_OF_RUN + and not do_interrupt_before ): checkpoint = create_checkpoint(checkpoint, channels) self.checkpointer.put(config, checkpoint) finally: # cancel any pending tasks when generator is interrupted try: - futures + for task in futures: + task.cancel() except NameError: - return - for task in futures: - task.cancel() + pass async def _atransform( self, input: AsyncIterator[Union[dict[str, Any], Any]], run_manager: AsyncCallbackManagerForChainRun, config: RunnableConfig, - *, - input_keys: Optional[Union[str, Sequence[str]]] = None, - output_keys: Optional[Union[str, Sequence[str]]] = None, - interrupt: Optional[Sequence[str]] = None, + **kwargs: Any, ) -> AsyncIterator[Union[dict[str, Any], Any]]: try: if config["recursion_limit"] < 1: @@ -421,17 +586,13 @@ class Pregel( None, ) # assign defaults - if output_keys is None: - output_keys = [ - chan for chan in self.channels if chan not in self.hidden - ] - else: - validate_keys(output_keys, self.channels) - if input_keys is None: - input_keys = self.input - else: - validate_keys(input_keys, self.channels) - interrupt = interrupt or self.interrupt + ( + debug, + input_keys, + output_keys, + interrupt_before_nodes, + interrupt_after_nodes, + ) = self._defaults(**kwargs) # copy nodes to ignore mutations during execution processes = {**self.nodes} # get checkpoint from saver, or create an empty one @@ -446,7 +607,7 @@ class Pregel( [w async for c in input for w in map_input(input_keys, c)] ): # discard any unfinished tasks from previous checkpoint - _prepare_next_tasks(checkpoint, processes, channels) + checkpoint, _ = _prepare_next_tasks(checkpoint, processes, channels) # apply input writes _apply_writes( checkpoint, @@ -464,7 +625,9 @@ class Pregel( # channels are guaranteed to be immutable for the duration of the step, # channel updates being applied only at the transition between steps for step in range(config["recursion_limit"] + 1): - next_tasks = _prepare_next_tasks(checkpoint, processes, channels) + checkpoint, next_tasks = _prepare_next_tasks( + checkpoint, processes, channels + ) # if no more tasks, we're done if not next_tasks: @@ -476,7 +639,7 @@ class Pregel( "by setting the `recursion_limit` config key." ) - if self.debug: + if debug: print_step_start(step, next_tasks) # collect all writes to channels, without applying them yet @@ -521,15 +684,15 @@ class Pregel( timeout=self.step_timeout, ) - # interrupt on failure or timeout - _interrupt_or_proceed(done, inflight, step) + # panic on failure or timeout + _panic_or_proceed(done, inflight, step) # apply writes to channels _apply_writes( checkpoint, channels, pending_writes, config, step + 1 ) - if self.debug: + if debug: print_checkpoint(step, channels) # yield current value and checkpoint view @@ -540,6 +703,15 @@ class Pregel( # if view was updated, apply writes to channels _apply_writes_from_view(checkpoint, channels, step_output) + # with previous step's checkpoint + if do_interrupt_before := _should_interrupt( + checkpoint, + interrupt_before_nodes, + self.snapshot_channels_list, + pending_writes, + ): + break + # save end of step checkpoint if ( self.checkpointer is not None @@ -548,25 +720,30 @@ class Pregel( checkpoint = create_checkpoint(checkpoint, channels) await self.checkpointer.aput(config, checkpoint) - # interrupt if any channel written to is in interrupt list - if any(chan for chan, _ in pending_writes if chan in interrupt): + # with this step's checkpoint + if _should_interrupt( + checkpoint, + interrupt_after_nodes, + self.snapshot_channels_list, + pending_writes, + ): break # save end of run checkpoint if ( self.checkpointer is not None and self.checkpointer.at == CheckpointAt.END_OF_RUN + and not do_interrupt_before ): checkpoint = create_checkpoint(checkpoint, channels) await self.checkpointer.aput(config, checkpoint) finally: # cancel any pending tasks when generator is interrupted try: - futures + for task in futures: + task.cancel() except NameError: - return - for task in futures: - task.cancel() + pass def invoke( self, @@ -575,6 +752,9 @@ class Pregel( *, output_keys: Optional[Union[str, Sequence[str]]] = None, input_keys: Optional[Union[str, Sequence[str]]] = None, + interrupt_before_nodes: Optional[Sequence[str]] = None, + interrupt_after_nodes: Optional[Sequence[str]] = None, + debug: Optional[bool] = None, **kwargs: Any, ) -> Union[dict[str, Any], Any]: latest: Union[dict[str, Any], Any] = None @@ -583,6 +763,9 @@ class Pregel( config, output_keys=output_keys if output_keys is not None else self.output, input_keys=input_keys, + interrupt_before_nodes=interrupt_before_nodes, + interrupt_after_nodes=interrupt_after_nodes, + debug=debug, **kwargs, ): latest = chunk @@ -595,6 +778,9 @@ class Pregel( *, output_keys: Optional[Union[str, Sequence[str]]] = None, input_keys: Optional[Union[str, Sequence[str]]] = None, + interrupt_before_nodes: Optional[Sequence[str]] = None, + interrupt_after_nodes: Optional[Sequence[str]] = None, + debug: Optional[bool] = None, **kwargs: Any, ) -> Iterator[Union[dict[str, Any], Any]]: return self.transform( @@ -602,6 +788,9 @@ class Pregel( config, output_keys=output_keys, input_keys=input_keys, + interrupt_before_nodes=interrupt_before_nodes, + interrupt_after_nodes=interrupt_after_nodes, + debug=debug, **kwargs, ) @@ -612,6 +801,9 @@ class Pregel( *, output_keys: Optional[Union[str, Sequence[str]]] = None, input_keys: Optional[Union[str, Sequence[str]]] = None, + interrupt_before_nodes: Optional[Sequence[str]] = None, + interrupt_after_nodes: Optional[Sequence[str]] = None, + debug: Optional[bool] = None, **kwargs: Any, ) -> Iterator[Union[dict[str, Any], Any]]: for chunk in self._transform_stream_with_config( @@ -620,6 +812,9 @@ class Pregel( config, output_keys=output_keys, input_keys=input_keys, + interrupt_before_nodes=interrupt_before_nodes, + interrupt_after_nodes=interrupt_after_nodes, + debug=debug, **kwargs, ): yield chunk @@ -631,6 +826,9 @@ class Pregel( *, output_keys: Optional[Union[str, Sequence[str]]] = None, input_keys: Optional[Union[str, Sequence[str]]] = None, + interrupt_before_nodes: Optional[Sequence[str]] = None, + interrupt_after_nodes: Optional[Sequence[str]] = None, + debug: Optional[bool] = None, **kwargs: Any, ) -> Union[dict[str, Any], Any]: latest: Union[dict[str, Any], Any] = None @@ -639,6 +837,9 @@ class Pregel( config, output_keys=output_keys if output_keys is not None else self.output, input_keys=input_keys, + interrupt_before_nodes=interrupt_before_nodes, + interrupt_after_nodes=interrupt_after_nodes, + debug=debug, **kwargs, ): latest = chunk @@ -651,6 +852,9 @@ class Pregel( *, output_keys: Optional[Union[str, Sequence[str]]] = None, input_keys: Optional[Union[str, Sequence[str]]] = None, + interrupt_before_nodes: Optional[Sequence[str]] = None, + interrupt_after_nodes: Optional[Sequence[str]] = None, + debug: Optional[bool] = None, **kwargs: Any, ) -> AsyncIterator[Union[dict[str, Any], Any]]: async def input_stream() -> AsyncIterator[Union[dict[str, Any], Any]]: @@ -661,6 +865,9 @@ class Pregel( config, output_keys=output_keys, input_keys=input_keys, + interrupt_before_nodes=interrupt_before_nodes, + interrupt_after_nodes=interrupt_after_nodes, + debug=debug, **kwargs, ): yield chunk @@ -672,6 +879,9 @@ class Pregel( *, output_keys: Optional[Union[str, Sequence[str]]] = None, input_keys: Optional[Union[str, Sequence[str]]] = None, + interrupt_before_nodes: Optional[Sequence[str]] = None, + interrupt_after_nodes: Optional[Sequence[str]] = None, + debug: Optional[bool] = None, **kwargs: Any, ) -> AsyncIterator[Union[dict[str, Any], Any]]: async for chunk in self._atransform_stream_with_config( @@ -680,12 +890,15 @@ class Pregel( config, output_keys=output_keys, input_keys=input_keys, + interrupt_before_nodes=interrupt_before_nodes, + interrupt_after_nodes=interrupt_after_nodes, + debug=debug, **kwargs, ): yield chunk -def _interrupt_or_proceed( +def _panic_or_proceed( done: Union[set[concurrent.futures.Future[Any]], set[asyncio.Task[Any]]], inflight: Union[set[concurrent.futures.Future[Any]], set[asyncio.Task[Any]]], step: int, @@ -709,6 +922,24 @@ def _interrupt_or_proceed( raise TimeoutError(f"Timed out at step {step}") +def _should_interrupt( + checkpoint: Checkpoint, + interrupt_nodes: Sequence[str], + snapshot_channels: Sequence[str], + pending_writes: Sequence[tuple[str, Any]], +) -> bool: + return ( + # interrupt if any of snapshopt_channels has been updated since last interrupt + any( + checkpoint["channel_versions"][chan] + > checkpoint["versions_seen"][INTERRUPT][chan] + for chan in snapshot_channels + ) + # and any channel written to is in interrupt_nodes list + and any(chan for chan, _ in pending_writes if chan in interrupt_nodes) + ) + + def _read_channel( channels: Mapping[str, BaseChannel], chan: str, catch: bool = True ) -> Any: @@ -731,7 +962,7 @@ def _apply_writes( pending_writes_by_channel: dict[str, list[Any]] = defaultdict(list) # Group writes by channel for chan, val in pending_writes: - if chan in [c.value for c in ReservedChannels]: + if chan in AllReservedChannels: raise ValueError(f"Can't write to reserved channel {chan}") pending_writes_by_channel[chan].append(val) @@ -763,11 +994,12 @@ def _apply_writes( def _apply_writes_from_view( checkpoint: Checkpoint, channels: Mapping[str, BaseChannel], values: dict[str, Any] ) -> None: + # Apply writes to channels for chan, value in values.items(): if value == _read_channel(channels, chan): continue - assert isinstance(channels[chan], LastValue), ( + assert isinstance(channels[chan], (LastValue, EphemeralValue, AnyValue)), ( f"Can't modify channel {chan} of type " f"{channels[chan].__class__.__name__}" ) @@ -779,7 +1011,9 @@ def _prepare_next_tasks( checkpoint: Checkpoint, processes: Mapping[str, Union[ChannelInvoke, ChannelBatch]], channels: Mapping[str, BaseChannel], -) -> list[tuple[Runnable, Any, str]]: + update_seen: bool = True, +) -> tuple[Checkpoint, list[tuple[Runnable, Any, str]]]: + checkpoint = copy_checkpoint(checkpoint) if update_seen else checkpoint tasks: list[tuple[Runnable, Any, str]] = [] # Check if any processes should be run in next step # If so, prepare the values to be passed to them @@ -791,7 +1025,8 @@ def _prepare_next_tasks( checkpoint["channel_versions"][chan] > seen[chan] for chan in proc.triggers ): - # If all channels subscribed by this process have been initialized + # If all trigger channels subscribed by this process are not empty + # then invoke the process with the values of all non-empty channels try: val: Any = { k: _read_channel( @@ -802,18 +1037,23 @@ def _prepare_next_tasks( except EmptyChannelError: continue + # If the process has a mapper, apply it to the value + if proc.mapper is not None: + val = proc.mapper(val) + # Processes that subscribe to a single keyless channel get # the value directly, instead of a dict if list(proc.channels.keys()) == [None]: val = val[None] # update seen versions - seen.update( - { - chan: checkpoint["channel_versions"][chan] - for chan in proc.triggers - } - ) + if update_seen: + seen.update( + { + chan: checkpoint["channel_versions"][chan] + for chan in proc.triggers + } + ) # skip if condition is not met if proc.when is None or proc.when(val): @@ -821,16 +1061,18 @@ def _prepare_next_tasks( elif isinstance(proc, ChannelBatch): # If the channel read by this process was updated if checkpoint["channel_versions"][proc.channel] > seen[proc.channel]: - # Here we don't catch EmptyChannelError because the channel - # must be intialized if the previous `if` condition is true - val = channels[proc.channel].get() + # If the channel subscribed by this process is not empty + try: + val = channels[proc.channel].get() + except EmptyChannelError: + continue if proc.key is not None: val = [{proc.key: v} for v in val] tasks.append((proc, val, name)) - seen[proc.channel] = checkpoint["channel_versions"][proc.channel] - - return tasks + if update_seen: + seen[proc.channel] = checkpoint["channel_versions"][proc.channel] + return checkpoint, tasks async def _aconsume(iterator: AsyncIterator[Any]) -> None: diff --git a/langgraph/pregel/read.py b/langgraph/pregel/read.py index 08903082e..9006b639a 100644 --- a/langgraph/pregel/read.py +++ b/langgraph/pregel/read.py @@ -79,6 +79,8 @@ class ChannelInvoke(RunnableBindingBase): triggers: list[str] = Field(default_factory=list) + mapper: Optional[Callable[[Any], Any]] = None + when: Optional[Callable[[Any], bool]] = None bound: Runnable[Any, Any] = Field(default=default_bound) @@ -89,6 +91,7 @@ class ChannelInvoke(RunnableBindingBase): self, channels: Mapping[None, str] | Mapping[str, str], triggers: Sequence[str], + mapper: Optional[Callable[[Any], Any]] = None, when: Optional[Callable[[Any], bool]] = None, tags: Optional[list[str]] = None, *, @@ -100,6 +103,7 @@ class ChannelInvoke(RunnableBindingBase): super().__init__( channels=channels, triggers=triggers, + mapper=mapper, when=when, bound=bound or default_bound, kwargs=kwargs or {}, @@ -120,6 +124,7 @@ class ChannelInvoke(RunnableBindingBase): **{chan: chan for chan in channels}, }, triggers=self.triggers, + mapper=self.mapper, when=self.when, bound=self.bound, kwargs=self.kwargs, @@ -138,6 +143,7 @@ class ChannelInvoke(RunnableBindingBase): return ChannelInvoke( channels=self.channels, triggers=self.triggers, + mapper=self.mapper, when=self.when, bound=coerce_to_runnable(other), kwargs=self.kwargs, @@ -147,6 +153,7 @@ class ChannelInvoke(RunnableBindingBase): return ChannelInvoke( channels=self.channels, triggers=self.triggers, + mapper=self.mapper, when=self.when, # delegate to __or__ in self.bound bound=self.bound | other, diff --git a/langgraph/pregel/reserved.py b/langgraph/pregel/reserved.py index b6e66b945..2fad3b348 100644 --- a/langgraph/pregel/reserved.py +++ b/langgraph/pregel/reserved.py @@ -6,3 +6,6 @@ class ReservedChannels(StrEnum): is_last_step = "is_last_step" """A channel that is True if the current step is the last step, False otherwise.""" + + +AllReservedChannels = {channel.value for channel in ReservedChannels} diff --git a/langgraph/pregel/validate.py b/langgraph/pregel/validate.py index 8283d093c..498d96aa2 100644 --- a/langgraph/pregel/validate.py +++ b/langgraph/pregel/validate.py @@ -2,6 +2,7 @@ from typing import Any, Mapping, Sequence, Union from langgraph.channels.base import BaseChannel from langgraph.channels.last_value import LastValue +from langgraph.constants import INTERRUPT from langgraph.pregel.read import ChannelBatch, ChannelInvoke from langgraph.pregel.reserved import ReservedChannels @@ -12,10 +13,13 @@ def validate_graph( input: Union[str, Sequence[str]], output: Union[str, Sequence[str]], hidden: Sequence[str], - interrupt: Sequence[str], + interrupt_after: Sequence[str], + interrupt_before: Sequence[str], ) -> None: subscribed_channels = set[str]() - for node in nodes.values(): + for name, node in nodes.items(): + if name == INTERRUPT: + raise ValueError(f"Node name {INTERRUPT} is reserved") if isinstance(node, ChannelInvoke): subscribed_channels.update(node.channels.values()) elif isinstance(node, ChannelBatch): @@ -56,7 +60,8 @@ def validate_graph( channels[chan] = LastValue(Any) # type: ignore[arg-type] validate_keys(hidden, channels) - validate_keys(interrupt, channels) + validate_keys(interrupt_after, channels) + validate_keys(interrupt_before, channels) def validate_keys( diff --git a/langgraph/pregel/write.py b/langgraph/pregel/write.py index 3a050925f..40c7bb33f 100644 --- a/langgraph/pregel/write.py +++ b/langgraph/pregel/write.py @@ -1,7 +1,7 @@ from __future__ import annotations import asyncio -from typing import Any, Callable, Optional, Sequence +from typing import Any, Callable, NamedTuple, Optional, Sequence, Union from langchain_core.runnables import ( Runnable, @@ -18,21 +18,25 @@ TYPE_SEND = Callable[[Sequence[tuple[str, Any]]], None] SKIP_WRITE = object() +class ChannelWriteEntry(NamedTuple): + channel: str + value: Optional[Union[Any, Runnable]] + skip_none: bool + + class ChannelWrite(RunnablePassthrough): - channels: Sequence[tuple[str, Optional[Runnable], bool]] + channels: Sequence[ChannelWriteEntry] """ - Mapping of write channels to Runnables that return the value to be written, - or None to skip writing. + Sequence of write entries, each of which is a tuple of: + - channel name + - runnable to map input, or None to use the input, or any other value to use instead + - whether to skip writing if the mapped value is None """ class Config: arbitrary_types_allowed = True - def __init__( - self, - *, - channels: Sequence[tuple[str, Optional[Runnable], bool]], - ): + def __init__(self, *, channels: Sequence[ChannelWriteEntry]): super().__init__(func=self._write, afunc=self._awrite, channels=channels) self.name = f"ChannelWrite<{','.join(chan for chan, _, _ in self.channels)}>" @@ -53,7 +57,14 @@ class ChannelWrite(RunnablePassthrough): def _write(self, input: Any, config: RunnableConfig) -> None: values = [ - (chan, r.invoke(input, config) if r else input) + ( + chan, + r.invoke(input, config) + if isinstance(r, Runnable) + else r + if r is not None + else input, + ) for chan, r, _ in self.channels ] values = [ @@ -67,7 +78,11 @@ class ChannelWrite(RunnablePassthrough): async def _awrite(self, input: Any, config: RunnableConfig) -> None: values = await asyncio.gather( *( - r.ainvoke(input, config) if r else _mk_future(input) + r.ainvoke(input, config) + if isinstance(r, Runnable) + else _mk_future(r) + if r is not None + else _mk_future(input) for _, r, _ in self.channels ) ) diff --git a/langgraph/version.py b/langgraph/version.py new file mode 100644 index 000000000..ac7aeef6f --- /dev/null +++ b/langgraph/version.py @@ -0,0 +1,9 @@ +"""Main entrypoint into package.""" +from importlib import metadata + +try: + __version__ = metadata.version(__package__) +except metadata.PackageNotFoundError: + # Case where package metadata is not available. + __version__ = "" +del metadata # optional, avoids polluting the results of dir(__package__) diff --git a/poetry.lock b/poetry.lock index 63903270c..46889d252 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "aiohttp" @@ -110,6 +110,21 @@ files = [ [package.dependencies] frozenlist = ">=1.1.0" +[[package]] +name = "aiosqlite" +version = "0.19.0" +description = "asyncio bridge to the standard sqlite3 module" +optional = false +python-versions = ">=3.7" +files = [ + {file = "aiosqlite-0.19.0-py3-none-any.whl", hash = "sha256:edba222e03453e094a3ce605db1b970c4b3376264e56f32e2a4959f948d66a96"}, + {file = "aiosqlite-0.19.0.tar.gz", hash = "sha256:95ee77b91c8d2808bd08a59fbebf66270e9090c3d92ffbf260dc0db0b979577d"}, +] + +[package.extras] +dev = ["aiounittest (==1.4.1)", "attribution (==1.6.2)", "black (==23.3.0)", "coverage[toml] (==7.2.3)", "flake8 (==5.0.4)", "flake8-bugbear (==23.3.12)", "flit (==3.7.1)", "mypy (==1.2.0)", "ufmt (==2.1.0)", "usort (==1.0.6)"] +docs = ["sphinx (==6.1.3)", "sphinx-mdinclude (==0.5.3)"] + [[package]] name = "annotated-types" version = "0.6.0" @@ -828,6 +843,23 @@ files = [ {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, ] +[[package]] +name = "grandalf" +version = "0.8" +description = "Graph and drawing algorithms framework" +optional = false +python-versions = "*" +files = [ + {file = "grandalf-0.8-py3-none-any.whl", hash = "sha256:793ca254442f4a79252ea9ff1ab998e852c1e071b863593e5383afee906b4185"}, + {file = "grandalf-0.8.tar.gz", hash = "sha256:2813f7aab87f0d20f334a3162ccfbcbf085977134a17a5b516940a93a77ea974"}, +] + +[package.dependencies] +pyparsing = "*" + +[package.extras] +full = ["numpy", "ply"] + [[package]] name = "greenlet" version = "3.0.3" @@ -1483,13 +1515,13 @@ files = [ [[package]] name = "langchain" -version = "0.1.4" +version = "0.1.8" description = "Building applications with LLMs through composability" optional = false python-versions = ">=3.8.1,<4.0" files = [ - {file = "langchain-0.1.4-py3-none-any.whl", hash = "sha256:6befdd6221f5f326092e31a3c19efdc7ce3d7d1f2e2cab065141071451730ed7"}, - {file = "langchain-0.1.4.tar.gz", hash = "sha256:8767a9461e2b717ce9a35b1fa20659de89ea86ba9c2a4ff516e05d47ab2d195d"}, + {file = "langchain-0.1.8-py3-none-any.whl", hash = "sha256:19e951b0e2be099ff048ee483acecb47e1a39c33a47dadfee70fcfa20f45cc19"}, + {file = "langchain-0.1.8.tar.gz", hash = "sha256:c8b1c2954a07cd6422c9027459473bafae90c78f07015bf2fc6262fadf97ea44"}, ] [package.dependencies] @@ -1497,9 +1529,9 @@ aiohttp = ">=3.8.3,<4.0.0" async-timeout = {version = ">=4.0.0,<5.0.0", markers = "python_version < \"3.11\""} dataclasses-json = ">=0.5.7,<0.7" jsonpatch = ">=1.33,<2.0" -langchain-community = ">=0.0.14,<0.1" -langchain-core = ">=0.1.16,<0.2" -langsmith = ">=0.0.83,<0.1" +langchain-community = ">=0.0.21,<0.1" +langchain-core = ">=0.1.24,<0.2" +langsmith = ">=0.1.0,<0.2.0" numpy = ">=1,<2" pydantic = ">=1,<3" PyYAML = ">=5.3" @@ -1514,7 +1546,7 @@ cli = ["typer (>=0.9.0,<0.10.0)"] cohere = ["cohere (>=4,<5)"] docarray = ["docarray[hnswlib] (>=0.32.0,<0.33.0)"] embeddings = ["sentence-transformers (>=2,<3)"] -extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<5)", "couchbase (>=4.1.9,<5.0.0)", "dashvector (>=1.0.1,<2.0.0)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "langchain-openai (>=0.0.2,<0.1)", "lxml (>=4.9.2,<5.0.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)"] +extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<5)", "couchbase (>=4.1.9,<5.0.0)", "dashvector (>=1.0.1,<2.0.0)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "langchain-openai (>=0.0.2,<0.1)", "lxml (>=4.9.2,<5.0.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)"] javascript = ["esprima (>=4.0.1,<5.0.0)"] llms = ["clarifai (>=9.1.0)", "cohere (>=4,<5)", "huggingface_hub (>=0,<1)", "manifest-ml (>=0.0.1,<0.0.2)", "nlpcloud (>=1,<2)", "openai (<2)", "openlm (>=0.0.5,<0.0.6)", "torch (>=1,<3)", "transformers (>=4,<5)"] openai = ["openai (<2)", "tiktoken (>=0.3.2,<0.6.0)"] @@ -1523,20 +1555,20 @@ text-helpers = ["chardet (>=5.1.0,<6.0.0)"] [[package]] name = "langchain-community" -version = "0.0.16" +version = "0.0.21" description = "Community contributed LangChain integrations." optional = false python-versions = ">=3.8.1,<4.0" files = [ - {file = "langchain_community-0.0.16-py3-none-any.whl", hash = "sha256:0f1dfc1a6205ce8d39931d3515974a208a9f69c16157c649f83490a7cc830b73"}, - {file = "langchain_community-0.0.16.tar.gz", hash = "sha256:c06512a93013a06fba7679cd5a1254ff8b927cddd2d1fbe0cc444bf7bbdf0b8c"}, + {file = "langchain_community-0.0.21-py3-none-any.whl", hash = "sha256:120977485d244eb472ad3618a31222fe6c2bce08026f4caa96bd6dae2e316ac0"}, + {file = "langchain_community-0.0.21.tar.gz", hash = "sha256:1c310a7e2663d5f6464a433981504894f97c12783cbeb8bdf4159a574f88c18d"}, ] [package.dependencies] aiohttp = ">=3.8.3,<4.0.0" dataclasses-json = ">=0.5.7,<0.7" -langchain-core = ">=0.1.16,<0.2" -langsmith = ">=0.0.83,<0.1" +langchain-core = ">=0.1.24,<0.2" +langsmith = ">=0.1.0,<0.2.0" numpy = ">=1,<2" PyYAML = ">=5.3" requests = ">=2,<3" @@ -1545,23 +1577,23 @@ tenacity = ">=8.1.0,<9.0.0" [package.extras] cli = ["typer (>=0.9.0,<0.10.0)"] -extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "azure-ai-documentintelligence (>=1.0.0b1,<2.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<5)", "dashvector (>=1.0.1,<2.0.0)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "elasticsearch (>=8.12.0,<9.0.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "gradientai (>=1.4.0,<2.0.0)", "hdbcli (>=2.19.21,<3.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "lxml (>=4.9.2,<5.0.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "oci (>=2.119.1,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "oracle-ads (>=2.9.1,<3.0.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)", "zhipuai (>=1.0.7,<2.0.0)"] +extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "azure-ai-documentintelligence (>=1.0.0b1,<2.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<5)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "elasticsearch (>=8.12.0,<9.0.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "gradientai (>=1.4.0,<2.0.0)", "hdbcli (>=2.19.21,<3.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "httpx (>=0.24.1,<0.25.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "lxml (>=4.9.2,<5.0.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "nvidia-riva-client (>=2.14.0,<3.0.0)", "oci (>=2.119.1,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "oracle-ads (>=2.9.1,<3.0.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "tree-sitter (>=0.20.2,<0.21.0)", "tree-sitter-languages (>=1.8.0,<2.0.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)", "zhipuai (>=1.0.7,<2.0.0)"] [[package]] name = "langchain-core" -version = "0.1.17" +version = "0.1.25" description = "Building applications with LLMs through composability" optional = false python-versions = ">=3.8.1,<4.0" files = [ - {file = "langchain_core-0.1.17-py3-none-any.whl", hash = "sha256:026155cf97867bde410ab1834799ab4c5ba64c39380f2a4328bcf9c78623ca64"}, - {file = "langchain_core-0.1.17.tar.gz", hash = "sha256:59016e457cd6a1708d83a3a454acc97cf02c2a2c3af95626d13f83894fd4e777"}, + {file = "langchain_core-0.1.25-py3-none-any.whl", hash = "sha256:ff0a0ad1ed877878e7b9c7601870cd12145abf3c814aae41995968d05ea6c09d"}, + {file = "langchain_core-0.1.25.tar.gz", hash = "sha256:065ff8b4e383c5645d175b20ae44b258330ed06457b0fc0179efee310b6f2af6"}, ] [package.dependencies] anyio = ">=3,<5" jsonpatch = ">=1.33,<2.0" -langsmith = ">=0.0.83,<0.1" +langsmith = ">=0.1.0,<0.2.0" packaging = ">=23.2,<24.0" pydantic = ">=1,<3" PyYAML = ">=5.3" @@ -1605,13 +1637,13 @@ types-requests = ">=2.31.0.2,<3.0.0.0" [[package]] name = "langsmith" -version = "0.0.85" +version = "0.1.4" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = ">=3.8.1,<4.0" files = [ - {file = "langsmith-0.0.85-py3-none-any.whl", hash = "sha256:9d0ccbcda7b69c83828060603a51bb4319e43b8dc807fbd90b6355f8ec709500"}, - {file = "langsmith-0.0.85.tar.gz", hash = "sha256:fefc631fc30d836b54d4e3f99961c41aea497633898b8f09e305b6c7216c2c54"}, + {file = "langsmith-0.1.4-py3-none-any.whl", hash = "sha256:13ea90c030a3ef472e00f4dd31b9c89f165f98f0c870309eca3366c93fcaa29f"}, + {file = "langsmith-0.1.4.tar.gz", hash = "sha256:b45ea1001f67c4c233b3521eb578326863e32e0eb738e52900c035261deec368"}, ] [package.dependencies] @@ -2382,6 +2414,20 @@ files = [ plugins = ["importlib-metadata"] windows-terminal = ["colorama (>=0.4.6)"] +[[package]] +name = "pyparsing" +version = "3.1.1" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +optional = false +python-versions = ">=3.6.8" +files = [ + {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"}, + {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"}, +] + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + [[package]] name = "pytest" version = "7.4.4" @@ -2474,13 +2520,13 @@ dev = ["pre-commit", "pytest-asyncio", "tox"] [[package]] name = "pytest-watcher" -version = "0.3.5" +version = "0.4.1" description = "Automatically rerun your tests on file modifications" optional = false python-versions = ">=3.7.0,<4.0.0" files = [ - {file = "pytest_watcher-0.3.5-py3-none-any.whl", hash = "sha256:af00ca52c7be22dc34c0fd3d7ffef99057207a73b05dc5161fe3b2fe91f58130"}, - {file = "pytest_watcher-0.3.5.tar.gz", hash = "sha256:8896152460ba2b1a8200c12117c6611008ec96c8b2d811f0a05ab8a82b043ff8"}, + {file = "pytest_watcher-0.4.1-py3-none-any.whl", hash = "sha256:29435669cb0124fb32d6de649fe9b1350f6dac94176313fff559ee4c2a66fd6e"}, + {file = "pytest_watcher-0.4.1.tar.gz", hash = "sha256:5a793c4c883e3a55ab2abbfa3a8cd6fa6495b3767d5f6644052cc5f3236f511a"}, ] [package.dependencies] @@ -2589,7 +2635,6 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -3714,4 +3759,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = ">=3.9.0,<4.0" -content-hash = "faf7cebfb8e64c2edefb69bacdbdd10d8399ea8b3ba9f46c4383e72bd3cd925a" +content-hash = "2d35e923bf3902e0e11a305f58d17b0efc3fbb444dff8d6cb92e070a993115c9" diff --git a/pyproject.toml b/pyproject.toml index 58808da0f..53d60b19d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "langgraph" -version = "0.0.23" +version = "0.0.26" description = "langgraph" authors = [] license = "LangGraph License" @@ -9,7 +9,7 @@ repository = "https://www.github.com/langchain-ai/langgraph" [tool.poetry.dependencies] python = ">=3.9.0,<4.0" -langchain-core = "^0.1.16" +langchain-core = "^0.1.25" [tool.poetry.group.test.dependencies] @@ -23,8 +23,10 @@ pytest-asyncio = "^0.20.3" pytest-mock = "^3.10.0" syrupy = "^4.0.2" httpx = "^0.26.0" -pytest-watcher = "^0.3.4" +pytest-watcher = "^0.4.1" langchain = "^0.1.0" +aiosqlite = "^0.19.0" +grandalf = "^0.8" [tool.poetry.group.lint.dependencies] ruff = "^0.1.4" @@ -53,6 +55,12 @@ exclude = ["notebooks", "examples", "example_data"] [tool.coverage.run] omit = ["tests/*"] +[tool.pytest-watcher] +now = true +delay = 0.1 +runner_args = ["-x", "--ff", "-vv", "--snapshot-update"] +patterns = ["*.py"] + [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" diff --git a/tests/__snapshots__/test_pregel.ambr b/tests/__snapshots__/test_pregel.ambr new file mode 100644 index 000000000..412b4ad9d --- /dev/null +++ b/tests/__snapshots__/test_pregel.ambr @@ -0,0 +1,2031 @@ +# serializer version: 1 +# name: test_conditional_entrypoint_graph + '{"title": "LangGraphInput"}' +# --- +# name: test_conditional_entrypoint_graph.1 + '{"title": "LangGraphOutput"}' +# --- +# name: test_conditional_entrypoint_graph.2 + ''' + { + "nodes": [ + { + "id": "__start__", + "type": "schema", + "data": { + "title": "LangGraphInput" + } + }, + { + "id": "__end__", + "type": "schema", + "data": { + "title": "LangGraphOutput" + } + }, + { + "id": "left", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "left" + } + }, + { + "id": "right", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "right" + } + }, + { + "id": "left_", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "" + } + }, + { + "id": "__start___condition", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "should_start" + } + } + ], + "edges": [ + { + "source": "right", + "target": "__end__" + }, + { + "source": "left", + "target": "left_" + }, + { + "source": "left_", + "target": "left", + "data": "left" + }, + { + "source": "left_", + "target": "right", + "data": "right" + }, + { + "source": "__start__", + "target": "__start___condition" + }, + { + "source": "__start___condition", + "target": "left", + "data": "go-left" + }, + { + "source": "__start___condition", + "target": "right", + "data": "go-right" + } + ] + } + ''' +# --- +# name: test_conditional_entrypoint_graph.3 + ''' + +-----------+ + | __start__ | + +-----------+ + * + * + * + +---------------------+ + | __start___condition | + +---------------------+ + *** *** + * * + ** *** + +------+ * + | left | * + +------+ * + * * + * * + * * + +---------------+ * + | left_ | *** + +---------------+ * + *** *** + * * + ** ** + +-------+ + | right | + +-------+ + * + * + * + +---------+ + | __end__ | + +---------+ + ''' +# --- +# name: test_conditional_entrypoint_graph_state + '{"title": "LangGraphInput", "$ref": "#/definitions/AgentState", "definitions": {"AgentState": {"title": "AgentState", "type": "object", "properties": {"input": {"title": "Input", "type": "string"}, "output": {"title": "Output", "type": "string"}}}}}' +# --- +# name: test_conditional_entrypoint_graph_state.1 + '{"title": "LangGraphOutput", "$ref": "#/definitions/AgentState", "definitions": {"AgentState": {"title": "AgentState", "type": "object", "properties": {"input": {"title": "Input", "type": "string"}, "output": {"title": "Output", "type": "string"}}}}}' +# --- +# name: test_conditional_entrypoint_graph_state.2 + ''' + { + "nodes": [ + { + "id": "__start__", + "type": "schema", + "data": { + "title": "LangGraphInput", + "$ref": "#/definitions/AgentState", + "definitions": { + "AgentState": { + "title": "AgentState", + "type": "object", + "properties": { + "input": { + "title": "Input", + "type": "string" + }, + "output": { + "title": "Output", + "type": "string" + } + } + } + } + } + }, + { + "id": "__end__", + "type": "schema", + "data": { + "title": "LangGraphOutput", + "$ref": "#/definitions/AgentState", + "definitions": { + "AgentState": { + "title": "AgentState", + "type": "object", + "properties": { + "input": { + "title": "Input", + "type": "string" + }, + "output": { + "title": "Output", + "type": "string" + } + } + } + } + } + }, + { + "id": "left", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "left" + } + }, + { + "id": "right", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "right" + } + }, + { + "id": "left_", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "" + } + }, + { + "id": "__start___condition", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "should_start" + } + } + ], + "edges": [ + { + "source": "right", + "target": "__end__" + }, + { + "source": "left", + "target": "left_" + }, + { + "source": "left_", + "target": "left", + "data": "left" + }, + { + "source": "left_", + "target": "right", + "data": "right" + }, + { + "source": "__start__", + "target": "__start___condition" + }, + { + "source": "__start___condition", + "target": "left", + "data": "go-left" + }, + { + "source": "__start___condition", + "target": "right", + "data": "go-right" + } + ] + } + ''' +# --- +# name: test_conditional_entrypoint_graph_state.3 + ''' + +-----------+ + | __start__ | + +-----------+ + * + * + * + +---------------------+ + | __start___condition | + +---------------------+ + *** *** + * * + ** *** + +------+ * + | left | * + +------+ * + * * + * * + * * + +---------------+ * + | left_ | *** + +---------------+ * + *** *** + * * + ** ** + +-------+ + | right | + +-------+ + * + * + * + +---------+ + | __end__ | + +---------+ + ''' +# --- +# name: test_conditional_graph + ''' + { + "nodes": [ + { + "id": "__start__", + "type": "schema", + "data": { + "title": "LangGraphInput" + } + }, + { + "id": "__end__", + "type": "schema", + "data": { + "title": "LangGraphOutput" + } + }, + { + "id": "agent", + "type": "runnable", + "data": { + "id": [ + "langchain", + "schema", + "runnable", + "RunnableAssign" + ], + "name": "RunnableAssign" + } + }, + { + "id": "tools", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "execute_tools" + } + }, + { + "id": "agent_should_continue", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "should_continue" + } + } + ], + "edges": [ + { + "source": "tools", + "target": "agent" + }, + { + "source": "agent", + "target": "agent_should_continue" + }, + { + "source": "agent_should_continue", + "target": "tools", + "data": "continue" + }, + { + "source": "agent_should_continue", + "target": "__end__", + "data": "exit" + }, + { + "source": "__start__", + "target": "agent" + } + ] + } + ''' +# --- +# name: test_conditional_graph.1 + ''' + +-----------+ + | __start__ | + +-----------+ + * + * + * + +-------+ + | agent | + *+-------+* + ** *** + ** ** + ** ** + +-----------------------+ ** + | agent_should_continue | * + +-----------------------+ * + * **** * + * ***** * + * *** * + +---------+ +-------+ + | __end__ | | tools | + +---------+ +-------+ + ''' +# --- +# name: test_conditional_graph_state + '{"title": "LangGraphInput", "$ref": "#/definitions/AgentState", "definitions": {"AgentAction": {"title": "AgentAction", "description": "A full description of an action for an ActionAgent to execute.", "type": "object", "properties": {"tool": {"title": "Tool", "type": "string"}, "tool_input": {"title": "Tool Input", "anyOf": [{"type": "string"}, {"type": "object"}]}, "log": {"title": "Log", "type": "string"}, "type": {"title": "Type", "default": "AgentAction", "enum": ["AgentAction"], "type": "string"}}, "required": ["tool", "tool_input", "log"]}, "AgentFinish": {"title": "AgentFinish", "description": "The final return value of an ActionAgent.", "type": "object", "properties": {"return_values": {"title": "Return Values", "type": "object"}, "log": {"title": "Log", "type": "string"}, "type": {"title": "Type", "default": "AgentFinish", "enum": ["AgentFinish"], "type": "string"}}, "required": ["return_values", "log"]}, "AgentState": {"title": "AgentState", "type": "object", "properties": {"input": {"title": "Input", "type": "string"}, "agent_outcome": {"title": "Agent Outcome", "anyOf": [{"$ref": "#/definitions/AgentAction"}, {"$ref": "#/definitions/AgentFinish"}]}, "intermediate_steps": {"title": "Intermediate Steps", "type": "array", "items": {"type": "array", "minItems": 2, "maxItems": 2, "items": [{"$ref": "#/definitions/AgentAction"}, {"type": "string"}]}}}}}}' +# --- +# name: test_conditional_graph_state.1 + '{"title": "LangGraphOutput", "$ref": "#/definitions/AgentState", "definitions": {"AgentAction": {"title": "AgentAction", "description": "A full description of an action for an ActionAgent to execute.", "type": "object", "properties": {"tool": {"title": "Tool", "type": "string"}, "tool_input": {"title": "Tool Input", "anyOf": [{"type": "string"}, {"type": "object"}]}, "log": {"title": "Log", "type": "string"}, "type": {"title": "Type", "default": "AgentAction", "enum": ["AgentAction"], "type": "string"}}, "required": ["tool", "tool_input", "log"]}, "AgentFinish": {"title": "AgentFinish", "description": "The final return value of an ActionAgent.", "type": "object", "properties": {"return_values": {"title": "Return Values", "type": "object"}, "log": {"title": "Log", "type": "string"}, "type": {"title": "Type", "default": "AgentFinish", "enum": ["AgentFinish"], "type": "string"}}, "required": ["return_values", "log"]}, "AgentState": {"title": "AgentState", "type": "object", "properties": {"input": {"title": "Input", "type": "string"}, "agent_outcome": {"title": "Agent Outcome", "anyOf": [{"$ref": "#/definitions/AgentAction"}, {"$ref": "#/definitions/AgentFinish"}]}, "intermediate_steps": {"title": "Intermediate Steps", "type": "array", "items": {"type": "array", "minItems": 2, "maxItems": 2, "items": [{"$ref": "#/definitions/AgentAction"}, {"type": "string"}]}}}}}}' +# --- +# name: test_conditional_graph_state.2 + ''' + { + "nodes": [ + { + "id": "__start__", + "type": "schema", + "data": { + "title": "LangGraphInput", + "$ref": "#/definitions/AgentState", + "definitions": { + "AgentAction": { + "title": "AgentAction", + "description": "A full description of an action for an ActionAgent to execute.", + "type": "object", + "properties": { + "tool": { + "title": "Tool", + "type": "string" + }, + "tool_input": { + "title": "Tool Input", + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "log": { + "title": "Log", + "type": "string" + }, + "type": { + "title": "Type", + "default": "AgentAction", + "enum": [ + "AgentAction" + ], + "type": "string" + } + }, + "required": [ + "tool", + "tool_input", + "log" + ] + }, + "AgentFinish": { + "title": "AgentFinish", + "description": "The final return value of an ActionAgent.", + "type": "object", + "properties": { + "return_values": { + "title": "Return Values", + "type": "object" + }, + "log": { + "title": "Log", + "type": "string" + }, + "type": { + "title": "Type", + "default": "AgentFinish", + "enum": [ + "AgentFinish" + ], + "type": "string" + } + }, + "required": [ + "return_values", + "log" + ] + }, + "AgentState": { + "title": "AgentState", + "type": "object", + "properties": { + "input": { + "title": "Input", + "type": "string" + }, + "agent_outcome": { + "title": "Agent Outcome", + "anyOf": [ + { + "$ref": "#/definitions/AgentAction" + }, + { + "$ref": "#/definitions/AgentFinish" + } + ] + }, + "intermediate_steps": { + "title": "Intermediate Steps", + "type": "array", + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": [ + { + "$ref": "#/definitions/AgentAction" + }, + { + "type": "string" + } + ] + } + } + } + } + } + } + }, + { + "id": "__end__", + "type": "schema", + "data": { + "title": "LangGraphOutput", + "$ref": "#/definitions/AgentState", + "definitions": { + "AgentAction": { + "title": "AgentAction", + "description": "A full description of an action for an ActionAgent to execute.", + "type": "object", + "properties": { + "tool": { + "title": "Tool", + "type": "string" + }, + "tool_input": { + "title": "Tool Input", + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "log": { + "title": "Log", + "type": "string" + }, + "type": { + "title": "Type", + "default": "AgentAction", + "enum": [ + "AgentAction" + ], + "type": "string" + } + }, + "required": [ + "tool", + "tool_input", + "log" + ] + }, + "AgentFinish": { + "title": "AgentFinish", + "description": "The final return value of an ActionAgent.", + "type": "object", + "properties": { + "return_values": { + "title": "Return Values", + "type": "object" + }, + "log": { + "title": "Log", + "type": "string" + }, + "type": { + "title": "Type", + "default": "AgentFinish", + "enum": [ + "AgentFinish" + ], + "type": "string" + } + }, + "required": [ + "return_values", + "log" + ] + }, + "AgentState": { + "title": "AgentState", + "type": "object", + "properties": { + "input": { + "title": "Input", + "type": "string" + }, + "agent_outcome": { + "title": "Agent Outcome", + "anyOf": [ + { + "$ref": "#/definitions/AgentAction" + }, + { + "$ref": "#/definitions/AgentFinish" + } + ] + }, + "intermediate_steps": { + "title": "Intermediate Steps", + "type": "array", + "items": { + "type": "array", + "minItems": 2, + "maxItems": 2, + "items": [ + { + "$ref": "#/definitions/AgentAction" + }, + { + "type": "string" + } + ] + } + } + } + } + } + } + }, + { + "id": "agent", + "type": "runnable", + "data": { + "id": [ + "langchain", + "schema", + "runnable", + "RunnableSequence" + ], + "name": "RunnableSequence" + } + }, + { + "id": "tools", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "execute_tools" + } + }, + { + "id": "agent_should_continue", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "should_continue" + } + } + ], + "edges": [ + { + "source": "tools", + "target": "agent" + }, + { + "source": "agent", + "target": "agent_should_continue" + }, + { + "source": "agent_should_continue", + "target": "tools", + "data": "continue" + }, + { + "source": "agent_should_continue", + "target": "__end__", + "data": "exit" + }, + { + "source": "__start__", + "target": "agent" + } + ] + } + ''' +# --- +# name: test_conditional_graph_state.3 + ''' + +-----------+ + | __start__ | + +-----------+ + * + * + * + +-------+ + | agent | + *+-------+* + ** *** + ** ** + ** ** + +-----------------------+ ** + | agent_should_continue | * + +-----------------------+ * + * **** * + * ***** * + * *** * + +---------+ +-------+ + | __end__ | | tools | + +---------+ +-------+ + ''' +# --- +# name: test_message_graph + '{"title": "LangGraphInput", "type": "array", "items": {"anyOf": [{"$ref": "#/definitions/AIMessage"}, {"$ref": "#/definitions/HumanMessage"}, {"$ref": "#/definitions/ChatMessage"}, {"$ref": "#/definitions/SystemMessage"}, {"$ref": "#/definitions/FunctionMessage"}, {"$ref": "#/definitions/ToolMessage"}]}, "definitions": {"AIMessage": {"title": "AIMessage", "description": "Message from an AI.", "type": "object", "properties": {"content": {"title": "Content", "anyOf": [{"type": "string"}, {"type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "object"}]}}]}, "additional_kwargs": {"title": "Additional Kwargs", "type": "object"}, "type": {"title": "Type", "default": "ai", "enum": ["ai"], "type": "string"}, "name": {"title": "Name", "type": "string"}, "example": {"title": "Example", "default": false, "type": "boolean"}}, "required": ["content"]}, "HumanMessage": {"title": "HumanMessage", "description": "Message from a human.", "type": "object", "properties": {"content": {"title": "Content", "anyOf": [{"type": "string"}, {"type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "object"}]}}]}, "additional_kwargs": {"title": "Additional Kwargs", "type": "object"}, "type": {"title": "Type", "default": "human", "enum": ["human"], "type": "string"}, "name": {"title": "Name", "type": "string"}, "example": {"title": "Example", "default": false, "type": "boolean"}}, "required": ["content"]}, "ChatMessage": {"title": "ChatMessage", "description": "Message that can be assigned an arbitrary speaker (i.e. role).", "type": "object", "properties": {"content": {"title": "Content", "anyOf": [{"type": "string"}, {"type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "object"}]}}]}, "additional_kwargs": {"title": "Additional Kwargs", "type": "object"}, "type": {"title": "Type", "default": "chat", "enum": ["chat"], "type": "string"}, "name": {"title": "Name", "type": "string"}, "role": {"title": "Role", "type": "string"}}, "required": ["content", "role"]}, "SystemMessage": {"title": "SystemMessage", "description": "Message for priming AI behavior, usually passed in as the first of a sequence\\nof input messages.", "type": "object", "properties": {"content": {"title": "Content", "anyOf": [{"type": "string"}, {"type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "object"}]}}]}, "additional_kwargs": {"title": "Additional Kwargs", "type": "object"}, "type": {"title": "Type", "default": "system", "enum": ["system"], "type": "string"}, "name": {"title": "Name", "type": "string"}}, "required": ["content"]}, "FunctionMessage": {"title": "FunctionMessage", "description": "Message for passing the result of executing a function back to a model.", "type": "object", "properties": {"content": {"title": "Content", "anyOf": [{"type": "string"}, {"type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "object"}]}}]}, "additional_kwargs": {"title": "Additional Kwargs", "type": "object"}, "type": {"title": "Type", "default": "function", "enum": ["function"], "type": "string"}, "name": {"title": "Name", "type": "string"}}, "required": ["content", "name"]}, "ToolMessage": {"title": "ToolMessage", "description": "Message for passing the result of executing a tool back to a model.", "type": "object", "properties": {"content": {"title": "Content", "anyOf": [{"type": "string"}, {"type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "object"}]}}]}, "additional_kwargs": {"title": "Additional Kwargs", "type": "object"}, "type": {"title": "Type", "default": "tool", "enum": ["tool"], "type": "string"}, "name": {"title": "Name", "type": "string"}, "tool_call_id": {"title": "Tool Call Id", "type": "string"}}, "required": ["content", "tool_call_id"]}}}' +# --- +# name: test_message_graph.1 + '{"title": "LangGraphOutput", "type": "array", "items": {"anyOf": [{"$ref": "#/definitions/AIMessage"}, {"$ref": "#/definitions/HumanMessage"}, {"$ref": "#/definitions/ChatMessage"}, {"$ref": "#/definitions/SystemMessage"}, {"$ref": "#/definitions/FunctionMessage"}, {"$ref": "#/definitions/ToolMessage"}]}, "definitions": {"AIMessage": {"title": "AIMessage", "description": "Message from an AI.", "type": "object", "properties": {"content": {"title": "Content", "anyOf": [{"type": "string"}, {"type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "object"}]}}]}, "additional_kwargs": {"title": "Additional Kwargs", "type": "object"}, "type": {"title": "Type", "default": "ai", "enum": ["ai"], "type": "string"}, "name": {"title": "Name", "type": "string"}, "example": {"title": "Example", "default": false, "type": "boolean"}}, "required": ["content"]}, "HumanMessage": {"title": "HumanMessage", "description": "Message from a human.", "type": "object", "properties": {"content": {"title": "Content", "anyOf": [{"type": "string"}, {"type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "object"}]}}]}, "additional_kwargs": {"title": "Additional Kwargs", "type": "object"}, "type": {"title": "Type", "default": "human", "enum": ["human"], "type": "string"}, "name": {"title": "Name", "type": "string"}, "example": {"title": "Example", "default": false, "type": "boolean"}}, "required": ["content"]}, "ChatMessage": {"title": "ChatMessage", "description": "Message that can be assigned an arbitrary speaker (i.e. role).", "type": "object", "properties": {"content": {"title": "Content", "anyOf": [{"type": "string"}, {"type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "object"}]}}]}, "additional_kwargs": {"title": "Additional Kwargs", "type": "object"}, "type": {"title": "Type", "default": "chat", "enum": ["chat"], "type": "string"}, "name": {"title": "Name", "type": "string"}, "role": {"title": "Role", "type": "string"}}, "required": ["content", "role"]}, "SystemMessage": {"title": "SystemMessage", "description": "Message for priming AI behavior, usually passed in as the first of a sequence\\nof input messages.", "type": "object", "properties": {"content": {"title": "Content", "anyOf": [{"type": "string"}, {"type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "object"}]}}]}, "additional_kwargs": {"title": "Additional Kwargs", "type": "object"}, "type": {"title": "Type", "default": "system", "enum": ["system"], "type": "string"}, "name": {"title": "Name", "type": "string"}}, "required": ["content"]}, "FunctionMessage": {"title": "FunctionMessage", "description": "Message for passing the result of executing a function back to a model.", "type": "object", "properties": {"content": {"title": "Content", "anyOf": [{"type": "string"}, {"type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "object"}]}}]}, "additional_kwargs": {"title": "Additional Kwargs", "type": "object"}, "type": {"title": "Type", "default": "function", "enum": ["function"], "type": "string"}, "name": {"title": "Name", "type": "string"}}, "required": ["content", "name"]}, "ToolMessage": {"title": "ToolMessage", "description": "Message for passing the result of executing a tool back to a model.", "type": "object", "properties": {"content": {"title": "Content", "anyOf": [{"type": "string"}, {"type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "object"}]}}]}, "additional_kwargs": {"title": "Additional Kwargs", "type": "object"}, "type": {"title": "Type", "default": "tool", "enum": ["tool"], "type": "string"}, "name": {"title": "Name", "type": "string"}, "tool_call_id": {"title": "Tool Call Id", "type": "string"}}, "required": ["content", "tool_call_id"]}}}' +# --- +# name: test_message_graph.2 + ''' + { + "nodes": [ + { + "id": "__start__", + "type": "schema", + "data": { + "title": "LangGraphInput", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AIMessage" + }, + { + "$ref": "#/definitions/HumanMessage" + }, + { + "$ref": "#/definitions/ChatMessage" + }, + { + "$ref": "#/definitions/SystemMessage" + }, + { + "$ref": "#/definitions/FunctionMessage" + }, + { + "$ref": "#/definitions/ToolMessage" + } + ] + }, + "definitions": { + "AIMessage": { + "title": "AIMessage", + "description": "Message from an AI.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "additional_kwargs": { + "title": "Additional Kwargs", + "type": "object" + }, + "type": { + "title": "Type", + "default": "ai", + "enum": [ + "ai" + ], + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "example": { + "title": "Example", + "default": false, + "type": "boolean" + } + }, + "required": [ + "content" + ] + }, + "HumanMessage": { + "title": "HumanMessage", + "description": "Message from a human.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "additional_kwargs": { + "title": "Additional Kwargs", + "type": "object" + }, + "type": { + "title": "Type", + "default": "human", + "enum": [ + "human" + ], + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "example": { + "title": "Example", + "default": false, + "type": "boolean" + } + }, + "required": [ + "content" + ] + }, + "ChatMessage": { + "title": "ChatMessage", + "description": "Message that can be assigned an arbitrary speaker (i.e. role).", + "type": "object", + "properties": { + "content": { + "title": "Content", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "additional_kwargs": { + "title": "Additional Kwargs", + "type": "object" + }, + "type": { + "title": "Type", + "default": "chat", + "enum": [ + "chat" + ], + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "role": { + "title": "Role", + "type": "string" + } + }, + "required": [ + "content", + "role" + ] + }, + "SystemMessage": { + "title": "SystemMessage", + "description": "Message for priming AI behavior, usually passed in as the first of a sequence\nof input messages.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "additional_kwargs": { + "title": "Additional Kwargs", + "type": "object" + }, + "type": { + "title": "Type", + "default": "system", + "enum": [ + "system" + ], + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "content" + ] + }, + "FunctionMessage": { + "title": "FunctionMessage", + "description": "Message for passing the result of executing a function back to a model.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "additional_kwargs": { + "title": "Additional Kwargs", + "type": "object" + }, + "type": { + "title": "Type", + "default": "function", + "enum": [ + "function" + ], + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "content", + "name" + ] + }, + "ToolMessage": { + "title": "ToolMessage", + "description": "Message for passing the result of executing a tool back to a model.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "additional_kwargs": { + "title": "Additional Kwargs", + "type": "object" + }, + "type": { + "title": "Type", + "default": "tool", + "enum": [ + "tool" + ], + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "tool_call_id": { + "title": "Tool Call Id", + "type": "string" + } + }, + "required": [ + "content", + "tool_call_id" + ] + } + } + } + }, + { + "id": "__end__", + "type": "schema", + "data": { + "title": "LangGraphOutput", + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/AIMessage" + }, + { + "$ref": "#/definitions/HumanMessage" + }, + { + "$ref": "#/definitions/ChatMessage" + }, + { + "$ref": "#/definitions/SystemMessage" + }, + { + "$ref": "#/definitions/FunctionMessage" + }, + { + "$ref": "#/definitions/ToolMessage" + } + ] + }, + "definitions": { + "AIMessage": { + "title": "AIMessage", + "description": "Message from an AI.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "additional_kwargs": { + "title": "Additional Kwargs", + "type": "object" + }, + "type": { + "title": "Type", + "default": "ai", + "enum": [ + "ai" + ], + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "example": { + "title": "Example", + "default": false, + "type": "boolean" + } + }, + "required": [ + "content" + ] + }, + "HumanMessage": { + "title": "HumanMessage", + "description": "Message from a human.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "additional_kwargs": { + "title": "Additional Kwargs", + "type": "object" + }, + "type": { + "title": "Type", + "default": "human", + "enum": [ + "human" + ], + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "example": { + "title": "Example", + "default": false, + "type": "boolean" + } + }, + "required": [ + "content" + ] + }, + "ChatMessage": { + "title": "ChatMessage", + "description": "Message that can be assigned an arbitrary speaker (i.e. role).", + "type": "object", + "properties": { + "content": { + "title": "Content", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "additional_kwargs": { + "title": "Additional Kwargs", + "type": "object" + }, + "type": { + "title": "Type", + "default": "chat", + "enum": [ + "chat" + ], + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "role": { + "title": "Role", + "type": "string" + } + }, + "required": [ + "content", + "role" + ] + }, + "SystemMessage": { + "title": "SystemMessage", + "description": "Message for priming AI behavior, usually passed in as the first of a sequence\nof input messages.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "additional_kwargs": { + "title": "Additional Kwargs", + "type": "object" + }, + "type": { + "title": "Type", + "default": "system", + "enum": [ + "system" + ], + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "content" + ] + }, + "FunctionMessage": { + "title": "FunctionMessage", + "description": "Message for passing the result of executing a function back to a model.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "additional_kwargs": { + "title": "Additional Kwargs", + "type": "object" + }, + "type": { + "title": "Type", + "default": "function", + "enum": [ + "function" + ], + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "content", + "name" + ] + }, + "ToolMessage": { + "title": "ToolMessage", + "description": "Message for passing the result of executing a tool back to a model.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "additional_kwargs": { + "title": "Additional Kwargs", + "type": "object" + }, + "type": { + "title": "Type", + "default": "tool", + "enum": [ + "tool" + ], + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "tool_call_id": { + "title": "Tool Call Id", + "type": "string" + } + }, + "required": [ + "content", + "tool_call_id" + ] + } + } + } + }, + { + "id": "agent", + "type": "runnable", + "data": { + "id": [ + "test_pregel", + "FakeFuntionChatModel" + ], + "name": "FakeFuntionChatModel" + } + }, + { + "id": "action", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "call_tool" + } + }, + { + "id": "agent_should_continue", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "should_continue" + } + } + ], + "edges": [ + { + "source": "action", + "target": "agent" + }, + { + "source": "agent", + "target": "agent_should_continue" + }, + { + "source": "agent_should_continue", + "target": "action", + "data": "continue" + }, + { + "source": "agent_should_continue", + "target": "__end__", + "data": "end" + }, + { + "source": "__start__", + "target": "agent" + } + ] + } + ''' +# --- +# name: test_message_graph.3 + ''' + +-----------+ + | __start__ | + +-----------+ + * + * + * + +-------+ + | agent | + *+-------+* + ** *** + ** ** + ** ** + +-----------------------+ ** + | agent_should_continue | * + +-----------------------+ * + * ***** * + * **** * + * *** * + +---------+ +--------+ + | __end__ | | action | + +---------+ +--------+ + ''' +# --- +# name: test_prebuilt_chat + '{"title": "LangGraphInput", "$ref": "#/definitions/AgentState", "definitions": {"BaseMessage": {"title": "BaseMessage", "description": "Base abstract Message class.\\n\\nMessages are the inputs and outputs of ChatModels.", "type": "object", "properties": {"content": {"title": "Content", "anyOf": [{"type": "string"}, {"type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "object"}]}}]}, "additional_kwargs": {"title": "Additional Kwargs", "type": "object"}, "type": {"title": "Type", "type": "string"}, "name": {"title": "Name", "type": "string"}}, "required": ["content", "type"]}, "AgentState": {"title": "AgentState", "type": "object", "properties": {"messages": {"title": "Messages", "type": "array", "items": {"$ref": "#/definitions/BaseMessage"}}}, "required": ["messages"]}}}' +# --- +# name: test_prebuilt_chat.1 + '{"title": "LangGraphOutput", "$ref": "#/definitions/AgentState", "definitions": {"BaseMessage": {"title": "BaseMessage", "description": "Base abstract Message class.\\n\\nMessages are the inputs and outputs of ChatModels.", "type": "object", "properties": {"content": {"title": "Content", "anyOf": [{"type": "string"}, {"type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "object"}]}}]}, "additional_kwargs": {"title": "Additional Kwargs", "type": "object"}, "type": {"title": "Type", "type": "string"}, "name": {"title": "Name", "type": "string"}}, "required": ["content", "type"]}, "AgentState": {"title": "AgentState", "type": "object", "properties": {"messages": {"title": "Messages", "type": "array", "items": {"$ref": "#/definitions/BaseMessage"}}}, "required": ["messages"]}}}' +# --- +# name: test_prebuilt_chat.2 + ''' + { + "nodes": [ + { + "id": "__start__", + "type": "schema", + "data": { + "title": "LangGraphInput", + "$ref": "#/definitions/AgentState", + "definitions": { + "BaseMessage": { + "title": "BaseMessage", + "description": "Base abstract Message class.\n\nMessages are the inputs and outputs of ChatModels.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "additional_kwargs": { + "title": "Additional Kwargs", + "type": "object" + }, + "type": { + "title": "Type", + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "content", + "type" + ] + }, + "AgentState": { + "title": "AgentState", + "type": "object", + "properties": { + "messages": { + "title": "Messages", + "type": "array", + "items": { + "$ref": "#/definitions/BaseMessage" + } + } + }, + "required": [ + "messages" + ] + } + } + } + }, + { + "id": "__end__", + "type": "schema", + "data": { + "title": "LangGraphOutput", + "$ref": "#/definitions/AgentState", + "definitions": { + "BaseMessage": { + "title": "BaseMessage", + "description": "Base abstract Message class.\n\nMessages are the inputs and outputs of ChatModels.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "additional_kwargs": { + "title": "Additional Kwargs", + "type": "object" + }, + "type": { + "title": "Type", + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "content", + "type" + ] + }, + "AgentState": { + "title": "AgentState", + "type": "object", + "properties": { + "messages": { + "title": "Messages", + "type": "array", + "items": { + "$ref": "#/definitions/BaseMessage" + } + } + }, + "required": [ + "messages" + ] + } + } + } + }, + { + "id": "agent", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "call_model" + } + }, + { + "id": "action", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "call_tool" + } + }, + { + "id": "agent_should_continue", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "should_continue" + } + } + ], + "edges": [ + { + "source": "action", + "target": "agent" + }, + { + "source": "agent", + "target": "agent_should_continue" + }, + { + "source": "agent_should_continue", + "target": "action", + "data": "continue" + }, + { + "source": "agent_should_continue", + "target": "__end__", + "data": "end" + }, + { + "source": "__start__", + "target": "agent" + } + ] + } + ''' +# --- +# name: test_prebuilt_chat.3 + ''' + +-----------+ + | __start__ | + +-----------+ + * + * + * + +-------+ + | agent | + *+-------+* + ** *** + ** ** + ** ** + +-----------------------+ ** + | agent_should_continue | * + +-----------------------+ * + * ***** * + * **** * + * *** * + +---------+ +--------+ + | __end__ | | action | + +---------+ +--------+ + ''' +# --- +# name: test_prebuilt_tool_chat + '{"title": "LangGraphInput", "$ref": "#/definitions/AgentState", "definitions": {"BaseMessage": {"title": "BaseMessage", "description": "Base abstract Message class.\\n\\nMessages are the inputs and outputs of ChatModels.", "type": "object", "properties": {"content": {"title": "Content", "anyOf": [{"type": "string"}, {"type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "object"}]}}]}, "additional_kwargs": {"title": "Additional Kwargs", "type": "object"}, "type": {"title": "Type", "type": "string"}, "name": {"title": "Name", "type": "string"}}, "required": ["content", "type"]}, "AgentState": {"title": "AgentState", "type": "object", "properties": {"messages": {"title": "Messages", "type": "array", "items": {"$ref": "#/definitions/BaseMessage"}}}, "required": ["messages"]}}}' +# --- +# name: test_prebuilt_tool_chat.1 + '{"title": "LangGraphOutput", "$ref": "#/definitions/AgentState", "definitions": {"BaseMessage": {"title": "BaseMessage", "description": "Base abstract Message class.\\n\\nMessages are the inputs and outputs of ChatModels.", "type": "object", "properties": {"content": {"title": "Content", "anyOf": [{"type": "string"}, {"type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "object"}]}}]}, "additional_kwargs": {"title": "Additional Kwargs", "type": "object"}, "type": {"title": "Type", "type": "string"}, "name": {"title": "Name", "type": "string"}}, "required": ["content", "type"]}, "AgentState": {"title": "AgentState", "type": "object", "properties": {"messages": {"title": "Messages", "type": "array", "items": {"$ref": "#/definitions/BaseMessage"}}}, "required": ["messages"]}}}' +# --- +# name: test_prebuilt_tool_chat.2 + ''' + { + "nodes": [ + { + "id": "__start__", + "type": "schema", + "data": { + "title": "LangGraphInput", + "$ref": "#/definitions/AgentState", + "definitions": { + "BaseMessage": { + "title": "BaseMessage", + "description": "Base abstract Message class.\n\nMessages are the inputs and outputs of ChatModels.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "additional_kwargs": { + "title": "Additional Kwargs", + "type": "object" + }, + "type": { + "title": "Type", + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "content", + "type" + ] + }, + "AgentState": { + "title": "AgentState", + "type": "object", + "properties": { + "messages": { + "title": "Messages", + "type": "array", + "items": { + "$ref": "#/definitions/BaseMessage" + } + } + }, + "required": [ + "messages" + ] + } + } + } + }, + { + "id": "__end__", + "type": "schema", + "data": { + "title": "LangGraphOutput", + "$ref": "#/definitions/AgentState", + "definitions": { + "BaseMessage": { + "title": "BaseMessage", + "description": "Base abstract Message class.\n\nMessages are the inputs and outputs of ChatModels.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + } + ] + }, + "additional_kwargs": { + "title": "Additional Kwargs", + "type": "object" + }, + "type": { + "title": "Type", + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "content", + "type" + ] + }, + "AgentState": { + "title": "AgentState", + "type": "object", + "properties": { + "messages": { + "title": "Messages", + "type": "array", + "items": { + "$ref": "#/definitions/BaseMessage" + } + } + }, + "required": [ + "messages" + ] + } + } + } + }, + { + "id": "agent", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "call_model" + } + }, + { + "id": "action", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "call_tool" + } + }, + { + "id": "agent_should_continue", + "type": "runnable", + "data": { + "id": [ + "langchain_core", + "runnables", + "base", + "RunnableLambda" + ], + "name": "should_continue" + } + } + ], + "edges": [ + { + "source": "action", + "target": "agent" + }, + { + "source": "agent", + "target": "agent_should_continue" + }, + { + "source": "agent_should_continue", + "target": "action", + "data": "continue" + }, + { + "source": "agent_should_continue", + "target": "__end__", + "data": "end" + }, + { + "source": "__start__", + "target": "agent" + } + ] + } + ''' +# --- +# name: test_prebuilt_tool_chat.3 + ''' + +-----------+ + | __start__ | + +-----------+ + * + * + * + +-------+ + | agent | + *+-------+* + ** *** + ** ** + ** ** + +-----------------------+ ** + | agent_should_continue | * + +-----------------------+ * + * ***** * + * **** * + * *** * + +---------+ +--------+ + | __end__ | | action | + +---------+ +--------+ + ''' +# --- diff --git a/tests/memory_assert.py b/tests/memory_assert.py new file mode 100644 index 000000000..4362cf939 --- /dev/null +++ b/tests/memory_assert.py @@ -0,0 +1,19 @@ +from langchain_core.pydantic_v1 import Field + +from langgraph.checkpoint.base import Checkpoint, CheckpointAt, copy_checkpoint +from langgraph.checkpoint.memory import MemorySaver + + +class MemorySaverAssertImmutable(MemorySaver): + storage_for_copies: dict[str, Checkpoint] = Field(default_factory=dict) + + at = CheckpointAt.END_OF_STEP + + def put(self, config: dict, checkpoint: dict) -> None: + # assert checkpoint hasn't been modified since last written + thread_id = config["configurable"]["thread_id"] + if saved := super().get(config): + assert self.storage_for_copies[thread_id] == saved + self.storage_for_copies[thread_id] = copy_checkpoint(checkpoint) + # call super to write checkpoint + super().put(config, checkpoint) diff --git a/tests/test_pregel.py b/tests/test_pregel.py index f9fef277b..b943c4506 100644 --- a/tests/test_pregel.py +++ b/tests/test_pregel.py @@ -9,21 +9,25 @@ from typing import Annotated, Generator, Optional, TypedDict, Union import pytest from langchain_core.runnables import RunnablePassthrough from pytest_mock import MockerFixture +from syrupy import SnapshotAssertion from langgraph.channels.base import InvalidUpdateError from langgraph.channels.binop import BinaryOperatorAggregate from langgraph.channels.context import Context from langgraph.channels.last_value import LastValue from langgraph.channels.topic import Topic -from langgraph.checkpoint.memory import MemorySaver from langgraph.checkpoint.sqlite import SqliteSaver from langgraph.graph import END, Graph from langgraph.graph.message import MessageGraph from langgraph.graph.state import StateGraph -from langgraph.prebuilt.chat_agent_executor import create_function_calling_executor +from langgraph.prebuilt.chat_agent_executor import ( + create_function_calling_executor, + create_tool_calling_executor, +) from langgraph.prebuilt.tool_executor import ToolExecutor -from langgraph.pregel import Channel, GraphRecursionError, Pregel +from langgraph.pregel import Channel, GraphRecursionError, Pregel, StateSnapshot from langgraph.pregel.reserved import ReservedChannels +from tests.memory_assert import MemorySaverAssertImmutable def test_invoke_single_process_in_out(mocker: MockerFixture) -> None: @@ -250,9 +254,11 @@ def test_invoke_two_processes_in_out_interrupt(mocker: MockerFixture) -> None: one = Channel.subscribe_to("input") | add_one | Channel.write_to("inbox") two = Channel.subscribe_to("inbox") | add_one | Channel.write_to("output") - memory = MemorySaver() + memory = MemorySaverAssertImmutable() app = Pregel( - nodes={"one": one, "two": two}, checkpointer=memory, interrupt=["inbox"] + nodes={"one": one, "two": two}, + checkpointer=memory, + interrupt_after_nodes=["inbox"], ) # start execution, stop at inbox @@ -278,6 +284,22 @@ def test_invoke_two_processes_in_out_interrupt(mocker: MockerFixture) -> None: assert app.invoke(3, {"configurable": {"thread_id": 1}}) is None assert app.invoke(None, {"configurable": {"thread_id": 1}}) == 5 + # start execution again, stopping at inbox + assert app.invoke(20, {"configurable": {"thread_id": 2}}) is None + + # inbox == 21 + snapshot = app.get_state({"configurable": {"thread_id": 2}}) + assert snapshot.values["inbox"] == 21 + assert snapshot.next == ("two",) + + # update the state, resume + app.update_state({"configurable": {"thread_id": 2}}, {"inbox": 25}) + assert app.invoke(None, {"configurable": {"thread_id": 2}}) == 26 + + # no pending tasks + snapshot = app.get_state({"configurable": {"thread_id": 2}}) + assert snapshot.next == () + def test_invoke_two_processes_in_dict_out(mocker: MockerFixture) -> None: add_one = mocker.Mock(side_effect=lambda x: x + 1) @@ -427,7 +449,7 @@ def test_invoke_checkpoint(mocker: MockerFixture) -> None: | raise_if_above_10 ) - memory = MemorySaver() + memory = MemorySaverAssertImmutable() app = Pregel( nodes={"one": one}, @@ -656,7 +678,7 @@ def test_channel_enter_exit_timing(mocker: MockerFixture) -> None: assert cleanup.call_count == 1, "Expected cleanup to be called once" -def test_conditional_graph() -> None: +def test_conditional_graph(snapshot: SnapshotAssertion) -> None: from copy import deepcopy from langchain.llms.fake import FakeStreamingListLLM @@ -729,6 +751,9 @@ def test_conditional_graph() -> None: app = workflow.compile() + assert json.dumps(app.get_graph().to_json(), indent=2) == snapshot + assert app.get_graph().draw_ascii() == snapshot + assert app.invoke({"input": "what is weather in sf"}) == { "input": "what is weather in sf", "intermediate_steps": [ @@ -754,6 +779,7 @@ def test_conditional_graph() -> None: ), } + # deepcopy because the nodes mutate the data assert [deepcopy(c) for c in app.stream({"input": "what is weather in sf"})] == [ { "agent": { @@ -875,14 +901,305 @@ def test_conditional_graph() -> None: }, ] + # test state get/update methods with interrupt_after -def test_conditional_graph_state() -> None: + app_w_interrupt = workflow.compile( + checkpointer=MemorySaverAssertImmutable(), interrupt_after=["agent"] + ) + config = {"configurable": {"thread_id": "1"}} + + assert [ + c for c in app_w_interrupt.stream({"input": "what is weather in sf"}, config) + ] == [ + { + "agent": { + "input": "what is weather in sf", + "agent_outcome": AgentAction( + tool="search_api", tool_input="query", log="tool:search_api:query" + ), + } + } + ] + + assert app_w_interrupt.get_state(config) == StateSnapshot( + values={ + "agent": { + "input": "what is weather in sf", + "agent_outcome": AgentAction( + tool="search_api", tool_input="query", log="tool:search_api:query" + ), + }, + "tools": None, + }, + next=("agent:edges",), + ) + + app_w_interrupt.update_state( + config, + { + "agent": { + "agent_outcome": AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "input": "what is weather in sf", + }, + }, + ) + + assert app_w_interrupt.get_state(config) == StateSnapshot( + values={ + "agent": { + "agent_outcome": AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "input": "what is weather in sf", + }, + "tools": None, + }, + next=("agent:edges",), + ) + + assert [c for c in app_w_interrupt.stream(None, config)] == [ + { + "tools": { + "input": "what is weather in sf", + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + } + }, + { + "agent": { + "input": "what is weather in sf", + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + "agent_outcome": AgentAction( + tool="search_api", + tool_input="another", + log="tool:search_api:another", + ), + } + }, + ] + + app_w_interrupt.update_state( + config, + { + "agent": { + "input": "what is weather in sf", + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + "agent_outcome": AgentFinish( + return_values={"answer": "a really nice answer"}, + log="finish:a really nice answer", + ), + } + }, + ) + + assert [c for c in app_w_interrupt.stream(None, config)] == [ + { + "__end__": { + "input": "what is weather in sf", + "agent_outcome": AgentFinish( + return_values={"answer": "a really nice answer"}, + log="finish:a really nice answer", + ), + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + } + } + ] + + # test state get/update methods with interrupt_before + + app_w_interrupt = workflow.compile( + checkpointer=MemorySaverAssertImmutable(), interrupt_before=["tools"] + ) + config = {"configurable": {"thread_id": "2"}} + llm.i = 0 # reset the llm + + assert [ + c for c in app_w_interrupt.stream({"input": "what is weather in sf"}, config) + ] == [ + { + "agent": { + "input": "what is weather in sf", + "agent_outcome": AgentAction( + tool="search_api", tool_input="query", log="tool:search_api:query" + ), + } + } + ] + + assert app_w_interrupt.get_state(config) == StateSnapshot( + values={ + "agent": { + "input": "what is weather in sf", + "agent_outcome": AgentAction( + tool="search_api", tool_input="query", log="tool:search_api:query" + ), + }, + "tools": None, + }, + next=("agent:edges",), + ) + + app_w_interrupt.update_state( + config, + { + "agent": { + "agent_outcome": AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "input": "what is weather in sf", + }, + }, + ) + + assert app_w_interrupt.get_state(config) == StateSnapshot( + values={ + "agent": { + "agent_outcome": AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "input": "what is weather in sf", + }, + "tools": None, + }, + next=("agent:edges",), + ) + + assert [c for c in app_w_interrupt.stream(None, config)] == [ + { + "tools": { + "input": "what is weather in sf", + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + } + }, + { + "agent": { + "input": "what is weather in sf", + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + "agent_outcome": AgentAction( + tool="search_api", + tool_input="another", + log="tool:search_api:another", + ), + } + }, + ] + + app_w_interrupt.update_state( + config, + { + "agent": { + "input": "what is weather in sf", + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + "agent_outcome": AgentFinish( + return_values={"answer": "a really nice answer"}, + log="finish:a really nice answer", + ), + } + }, + ) + + assert [c for c in app_w_interrupt.stream(None, config)] == [ + { + "__end__": { + "input": "what is weather in sf", + "agent_outcome": AgentFinish( + return_values={"answer": "a really nice answer"}, + log="finish:a really nice answer", + ), + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + } + } + ] + + +def test_conditional_graph_state(snapshot: SnapshotAssertion) -> None: from langchain.llms.fake import FakeStreamingListLLM from langchain_community.tools import tool from langchain_core.agents import AgentAction, AgentFinish from langchain_core.prompts import PromptTemplate - class AgentState(TypedDict): + class AgentState(TypedDict, total=False): input: str agent_outcome: Optional[Union[AgentAction, AgentFinish]] intermediate_steps: Annotated[list[tuple[AgentAction, str]], operator.add] @@ -956,6 +1273,11 @@ def test_conditional_graph_state() -> None: app = workflow.compile() + assert app.get_input_schema().schema_json() == snapshot + assert app.get_output_schema().schema_json() == snapshot + assert json.dumps(app.get_graph().to_json(), indent=2) == snapshot + assert app.get_graph().draw_ascii() == snapshot + assert app.invoke({"input": "what is weather in sf"}) == { "input": "what is weather in sf", "intermediate_steps": [ @@ -1061,8 +1383,580 @@ def test_conditional_graph_state() -> None: }, ] + # test state get/update methods with interrupt_after -def test_prebuilt_chat() -> None: + app_w_interrupt = workflow.compile( + checkpointer=MemorySaverAssertImmutable(), interrupt_after=["agent"] + ) + config = {"configurable": {"thread_id": "1"}} + + assert [ + c for c in app_w_interrupt.stream({"input": "what is weather in sf"}, config) + ] == [ + { + "agent": { + "agent_outcome": AgentAction( + tool="search_api", tool_input="query", log="tool:search_api:query" + ), + } + } + ] + + assert app_w_interrupt.get_state(config) == StateSnapshot( + values={ + "input": "what is weather in sf", + "agent_outcome": AgentAction( + tool="search_api", tool_input="query", log="tool:search_api:query" + ), + "intermediate_steps": [], + }, + next=("agent:edges",), + ) + + app_w_interrupt.update_state( + config, + { + "agent_outcome": AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ) + }, + ) + + assert app_w_interrupt.get_state(config) == StateSnapshot( + values={ + "input": "what is weather in sf", + "agent_outcome": AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "intermediate_steps": [], + }, + next=("agent:edges",), + ) + + assert [c for c in app_w_interrupt.stream(None, config)] == [ + { + "tools": { + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + } + }, + { + "agent": { + "agent_outcome": AgentAction( + tool="search_api", + tool_input="another", + log="tool:search_api:another", + ), + } + }, + ] + + app_w_interrupt.update_state( + config, + { + "agent_outcome": AgentFinish( + return_values={"answer": "a really nice answer"}, + log="finish:a really nice answer", + ) + }, + ) + + assert [c for c in app_w_interrupt.stream(None, config)] == [ + { + "__end__": { + "input": "what is weather in sf", + "agent_outcome": AgentFinish( + return_values={"answer": "a really nice answer"}, + log="finish:a really nice answer", + ), + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + } + } + ] + + # test state get/update methods with interrupt_before + + app_w_interrupt = workflow.compile( + checkpointer=MemorySaverAssertImmutable(), + interrupt_before=["tools"], + debug=True, + ) + config = {"configurable": {"thread_id": "2"}} + llm.i = 0 # reset the llm + + assert [ + c for c in app_w_interrupt.stream({"input": "what is weather in sf"}, config) + ] == [ + { + "agent": { + "agent_outcome": AgentAction( + tool="search_api", tool_input="query", log="tool:search_api:query" + ), + } + } + ] + + assert app_w_interrupt.get_state(config) == StateSnapshot( + values={ + "input": "what is weather in sf", + "agent_outcome": AgentAction( + tool="search_api", tool_input="query", log="tool:search_api:query" + ), + "intermediate_steps": [], + }, + next=("agent:edges",), + ) + + app_w_interrupt.update_state( + config, + { + "agent_outcome": AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ) + }, + ) + + assert app_w_interrupt.get_state(config) == StateSnapshot( + values={ + "input": "what is weather in sf", + "agent_outcome": AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "intermediate_steps": [], + }, + next=("agent:edges",), + ) + + assert [c for c in app_w_interrupt.stream(None, config)] == [ + { + "tools": { + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + } + }, + { + "agent": { + "agent_outcome": AgentAction( + tool="search_api", + tool_input="another", + log="tool:search_api:another", + ), + } + }, + ] + + app_w_interrupt.update_state( + config, + { + "agent_outcome": AgentFinish( + return_values={"answer": "a really nice answer"}, + log="finish:a really nice answer", + ) + }, + ) + + assert [c for c in app_w_interrupt.stream(None, config)] == [ + { + "__end__": { + "input": "what is weather in sf", + "agent_outcome": AgentFinish( + return_values={"answer": "a really nice answer"}, + log="finish:a really nice answer", + ), + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + } + } + ] + + +def test_conditional_entrypoint_graph(snapshot: SnapshotAssertion) -> None: + def left(data: str) -> str: + return data + "->left" + + def right(data: str) -> str: + return data + "->right" + + def should_start(data: str) -> str: + # Logic to decide where to start + if len(data) > 10: + return "go-right" + else: + return "go-left" + + # Define a new graph + workflow = Graph() + + workflow.add_node("left", left) + workflow.add_node("right", right) + + workflow.set_conditional_entry_point( + should_start, {"go-left": "left", "go-right": "right"} + ) + + workflow.add_conditional_edges("left", lambda data: END) + workflow.add_edge("right", END) + + app = workflow.compile() + + assert app.get_input_schema().schema_json() == snapshot + assert app.get_output_schema().schema_json() == snapshot + assert json.dumps(app.get_graph().to_json(), indent=2) == snapshot + assert app.get_graph().draw_ascii() == snapshot + + assert app.invoke("what is weather in sf") == "what is weather in sf->right" + + assert [*app.stream("what is weather in sf")] == [ + {"right": "what is weather in sf->right"}, + {"__end__": "what is weather in sf->right"}, + ] + + +def test_conditional_entrypoint_graph_state(snapshot: SnapshotAssertion) -> None: + class AgentState(TypedDict, total=False): + input: str + output: str + + def left(data: AgentState) -> AgentState: + return {"output": data["input"] + "->left"} + + def right(data: AgentState) -> AgentState: + return {"output": data["input"] + "->right"} + + def should_start(data: AgentState) -> str: + # Logic to decide where to start + if len(data["input"]) > 10: + return "go-right" + else: + return "go-left" + + # Define a new graph + workflow = StateGraph(AgentState) + + workflow.add_node("left", left) + workflow.add_node("right", right) + + workflow.set_conditional_entry_point( + should_start, {"go-left": "left", "go-right": "right"} + ) + + workflow.add_conditional_edges("left", lambda data: END) + workflow.add_edge("right", END) + + app = workflow.compile() + + assert app.get_input_schema().schema_json() == snapshot + assert app.get_output_schema().schema_json() == snapshot + assert json.dumps(app.get_graph().to_json(), indent=2) == snapshot + assert app.get_graph().draw_ascii() == snapshot + + assert app.invoke({"input": "what is weather in sf"}) == { + "input": "what is weather in sf", + "output": "what is weather in sf->right", + } + + assert [*app.stream({"input": "what is weather in sf"})] == [ + {"right": {"output": "what is weather in sf->right"}}, + { + "__end__": { + "input": "what is weather in sf", + "output": "what is weather in sf->right", + } + }, + ] + + +def test_prebuilt_tool_chat(snapshot: SnapshotAssertion) -> None: + from langchain.chat_models.fake import FakeMessagesListChatModel + from langchain_community.tools import tool + from langchain_core.messages import AIMessage, HumanMessage, ToolMessage + + class FakeFuntionChatModel(FakeMessagesListChatModel): + def bind_functions(self, functions: list): + return self + + @tool() + def search_api(query: str) -> str: + """Searches the API for the query.""" + return f"result for {query}" + + tools = [search_api] + + app = create_tool_calling_executor( + FakeFuntionChatModel( + responses=[ + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [ + { + "id": "tool_call123", + "type": "function", + "function": { + "name": "search_api", + "arguments": json.dumps("query"), + }, + } + ] + }, + ), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [ + { + "id": "tool_call234", + "type": "function", + "function": { + "name": "search_api", + "arguments": json.dumps("another"), + }, + }, + { + "id": "tool_call567", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"a third one"', + }, + }, + ] + }, + ), + AIMessage(content="answer"), + ] + ), + tools, + ) + + assert app.get_input_schema().schema_json() == snapshot + assert app.get_output_schema().schema_json() == snapshot + assert json.dumps(app.get_graph().to_json(), indent=2) == snapshot + assert app.get_graph().draw_ascii() == snapshot + + assert app.invoke( + {"messages": [HumanMessage(content="what is weather in sf")]} + ) == { + "messages": [ + HumanMessage(content="what is weather in sf"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [ + { + "id": "tool_call123", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"query"', + }, + } + ] + }, + ), + ToolMessage(content="result for query", tool_call_id="tool_call123"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [ + { + "id": "tool_call234", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"another"', + }, + }, + { + "id": "tool_call567", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"a third one"', + }, + }, + ] + }, + ), + ToolMessage(content="result for another", tool_call_id="tool_call234"), + ToolMessage(content="result for a third one", tool_call_id="tool_call567"), + AIMessage(content="answer"), + ] + } + + assert [ + *app.stream({"messages": [HumanMessage(content="what is weather in sf")]}) + ] == [ + { + "agent": { + "messages": [ + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [ + { + "id": "tool_call123", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"query"', + }, + } + ] + }, + ) + ] + } + }, + { + "action": { + "messages": [ + ToolMessage(content="result for query", tool_call_id="tool_call123") + ] + } + }, + { + "agent": { + "messages": [ + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [ + { + "id": "tool_call234", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"another"', + }, + }, + { + "id": "tool_call567", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"a third one"', + }, + }, + ] + }, + ) + ] + } + }, + { + "action": { + "messages": [ + ToolMessage( + content="result for another", tool_call_id="tool_call234" + ), + ToolMessage( + content="result for a third one", tool_call_id="tool_call567" + ), + ] + } + }, + {"agent": {"messages": [AIMessage(content="answer")]}}, + { + "__end__": { + "messages": [ + HumanMessage(content="what is weather in sf"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [ + { + "id": "tool_call123", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"query"', + }, + } + ] + }, + ), + ToolMessage( + content="result for query", tool_call_id="tool_call123" + ), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [ + { + "id": "tool_call234", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"another"', + }, + }, + { + "id": "tool_call567", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"a third one"', + }, + }, + ] + }, + ), + ToolMessage( + content="result for another", tool_call_id="tool_call234" + ), + ToolMessage( + content="result for a third one", tool_call_id="tool_call567" + ), + AIMessage(content="answer"), + ] + } + }, + ] + + +def test_prebuilt_chat(snapshot: SnapshotAssertion) -> None: from langchain.chat_models.fake import FakeMessagesListChatModel from langchain_community.tools import tool from langchain_core.messages import AIMessage, FunctionMessage, HumanMessage @@ -1105,6 +1999,11 @@ def test_prebuilt_chat() -> None: tools, ) + assert app.get_input_schema().schema_json() == snapshot + assert app.get_output_schema().schema_json() == snapshot + assert json.dumps(app.get_graph().to_json(), indent=2) == snapshot + assert app.get_graph().draw_ascii() == snapshot + assert app.invoke( {"messages": [HumanMessage(content="what is weather in sf")]} ) == { @@ -1207,7 +2106,7 @@ def test_prebuilt_chat() -> None: ] -def test_message_graph() -> None: +def test_message_graph(snapshot: SnapshotAssertion) -> None: from langchain.chat_models.fake import FakeMessagesListChatModel from langchain_community.tools import tool from langchain_core.agents import AgentAction @@ -1318,6 +2217,11 @@ def test_message_graph() -> None: # meaning you can use it as you would any other runnable app = workflow.compile() + assert app.get_input_schema().schema_json() == snapshot + assert app.get_output_schema().schema_json() == snapshot + assert json.dumps(app.get_graph().to_json(), indent=2) == snapshot + assert app.get_graph().draw_ascii() == snapshot + assert app.invoke(HumanMessage(content="what is weather in sf")) == [ HumanMessage(content="what is weather in sf"), AIMessage( @@ -1381,3 +2285,99 @@ def test_message_graph() -> None: ] }, ] + + app_w_interrupt = workflow.compile( + checkpointer=MemorySaverAssertImmutable(), interrupt_after=["agent"] + ) + config = {"configurable": {"thread_id": "1"}} + + assert [ + c + for c in app_w_interrupt.stream( + HumanMessage(content="what is weather in sf"), config + ) + ] == [ + { + "agent": AIMessage( + content="", + additional_kwargs={ + "function_call": {"name": "search_api", "arguments": '"query"'} + }, + ) + } + ] + + assert app_w_interrupt.get_state(config) == StateSnapshot( + values=[ + HumanMessage(content="what is weather in sf"), + AIMessage( + content="", + additional_kwargs={ + "function_call": {"name": "search_api", "arguments": '"query"'} + }, + ), + ], + next=("agent:edges",), + ) + + # TODO use update_state once we have message ids + + +def test_in_one_fan_out_out_one_graph_state() -> None: + def sorted_add(x: list[str], y: list[str]) -> list[str]: + return sorted(operator.add(x, y)) + + class State(TypedDict, total=False): + query: str + answer: str + docs: Annotated[list[str], sorted_add] + + def rewrite_query(data: State) -> State: + return {"query": f'query: {data["query"]}'} + + def retriever_one(data: State) -> State: + return {"docs": ["doc1", "doc2"]} + + def retriever_two(data: State) -> State: + return {"docs": ["doc3", "doc4"]} + + def qa(data: State) -> State: + return {"answer": ",".join(data["docs"])} + + workflow = StateGraph(State) + + workflow.add_node("rewrite_query", rewrite_query) + workflow.add_node("retriever_one", retriever_one) + workflow.add_node("retriever_two", retriever_two) + workflow.add_node("qa", qa) + + workflow.set_entry_point("rewrite_query") + workflow.add_edge("rewrite_query", "retriever_one") + workflow.add_edge("rewrite_query", "retriever_two") + workflow.add_edge("retriever_one", "qa") + workflow.add_edge("retriever_two", "qa") + workflow.set_finish_point("qa") + + app = workflow.compile() + + assert app.invoke({"query": "what is weather in sf"}) == { + "query": "query: what is weather in sf", + "docs": ["doc1", "doc2", "doc3", "doc4"], + "answer": "doc1,doc2,doc3,doc4", + } + + assert [*app.stream({"query": "what is weather in sf"})] == [ + {"rewrite_query": {"query": "query: what is weather in sf"}}, + { + "retriever_two": {"docs": ["doc3", "doc4"]}, + "retriever_one": {"docs": ["doc1", "doc2"]}, + }, + {"qa": {"answer": "doc1,doc2,doc3,doc4"}}, + { + "__end__": { + "query": "query: what is weather in sf", + "answer": "doc1,doc2,doc3,doc4", + "docs": ["doc1", "doc2", "doc3", "doc4"], + } + }, + ] diff --git a/tests/test_pregel_async.py b/tests/test_pregel_async.py index e829e2919..fe716c953 100644 --- a/tests/test_pregel_async.py +++ b/tests/test_pregel_async.py @@ -22,13 +22,17 @@ from langgraph.channels.binop import BinaryOperatorAggregate from langgraph.channels.context import Context from langgraph.channels.last_value import LastValue from langgraph.channels.topic import Topic -from langgraph.checkpoint.memory import MemorySaver +from langgraph.checkpoint.aiosqlite import AsyncSqliteSaver from langgraph.graph import END, Graph, StateGraph from langgraph.graph.message import MessageGraph -from langgraph.prebuilt.chat_agent_executor import create_function_calling_executor +from langgraph.prebuilt.chat_agent_executor import ( + create_function_calling_executor, + create_tool_calling_executor, +) from langgraph.prebuilt.tool_executor import ToolExecutor -from langgraph.pregel import Channel, GraphRecursionError, Pregel +from langgraph.pregel import Channel, GraphRecursionError, Pregel, StateSnapshot from langgraph.pregel.reserved import ReservedChannels +from tests.memory_assert import MemorySaverAssertImmutable async def test_invoke_single_process_in_out(mocker: MockerFixture) -> None: @@ -257,9 +261,11 @@ async def test_invoke_two_processes_in_out_interrupt(mocker: MockerFixture) -> N one = Channel.subscribe_to("input") | add_one | Channel.write_to("inbox") two = Channel.subscribe_to("inbox") | add_one | Channel.write_to("output") - memory = MemorySaver() + memory = MemorySaverAssertImmutable() app = Pregel( - nodes={"one": one, "two": two}, checkpointer=memory, interrupt=["inbox"] + nodes={"one": one, "two": two}, + checkpointer=memory, + interrupt_after_nodes=["inbox"], ) # start execution, stop at inbox @@ -285,6 +291,22 @@ async def test_invoke_two_processes_in_out_interrupt(mocker: MockerFixture) -> N assert await app.ainvoke(3, {"configurable": {"thread_id": 1}}) is None assert await app.ainvoke(None, {"configurable": {"thread_id": 1}}) == 5 + # start execution again, stopping at inbox + assert await app.ainvoke(20, {"configurable": {"thread_id": 2}}) is None + + # inbox == 21 + snapshot = await app.aget_state({"configurable": {"thread_id": 2}}) + assert snapshot.values["inbox"] == 21 + assert snapshot.next == ("two",) + + # update the state, resume + await app.aupdate_state({"configurable": {"thread_id": 2}}, {"inbox": 25}) + assert await app.ainvoke(None, {"configurable": {"thread_id": 2}}) == 26 + + # no pending tasks + snapshot = await app.aget_state({"configurable": {"thread_id": 2}}) + assert snapshot.next == () + async def test_invoke_two_processes_in_dict_out(mocker: MockerFixture) -> None: add_one = mocker.Mock(side_effect=lambda x: x + 1) @@ -441,7 +463,7 @@ async def test_invoke_checkpoint(mocker: MockerFixture) -> None: | raise_if_above_10 ) - memory = MemorySaver() + memory = MemorySaverAssertImmutable() app = Pregel( nodes={"one": one}, @@ -476,6 +498,59 @@ async def test_invoke_checkpoint(mocker: MockerFixture) -> None: assert checkpoint["channel_values"].get("total") == 5 +async def test_invoke_checkpoint_sqlite(mocker: MockerFixture) -> None: + add_one = mocker.Mock(side_effect=lambda x: x["total"] + x["input"]) + + def raise_if_above_10(input: int) -> int: + if input > 10: + raise ValueError("Input is too large") + return input + + one = ( + Channel.subscribe_to(["input"]).join(["total"]) + | add_one + | Channel.write_to("output", "total") + | raise_if_above_10 + ) + + memory = AsyncSqliteSaver.from_conn_string(":memory:") + + app = Pregel( + nodes={"one": one}, + channels={"total": BinaryOperatorAggregate(int, operator.add)}, + checkpointer=memory, + debug=True, + ) + + # total starts out as 0, so output is 0+2=2 + assert await app.ainvoke(2, {"configurable": {"thread_id": "1"}}) == 2 + checkpoint = await memory.aget({"configurable": {"thread_id": "1"}}) + assert checkpoint is not None + assert checkpoint["channel_values"].get("total") == 2 + # total is now 2, so output is 2+3=5 + assert await app.ainvoke(3, {"configurable": {"thread_id": "1"}}) == 5 + checkpoint = await memory.aget({"configurable": {"thread_id": "1"}}) + assert checkpoint is not None + assert checkpoint["channel_values"].get("total") == 7 + # total is now 2+5=7, so output would be 7+4=11, but raises ValueError + with pytest.raises(ValueError): + await app.ainvoke(4, {"configurable": {"thread_id": "1"}}) + # checkpoint is not updated + checkpoint = await memory.aget({"configurable": {"thread_id": "1"}}) + assert checkpoint is not None + assert checkpoint["channel_values"].get("total") == 7 + # on a new thread, total starts out as 0, so output is 0+5=5 + assert await app.ainvoke(5, {"configurable": {"thread_id": "2"}}) == 5 + checkpoint = await memory.aget({"configurable": {"thread_id": "1"}}) + assert checkpoint is not None + assert checkpoint["channel_values"].get("total") == 7 + checkpoint = await memory.aget({"configurable": {"thread_id": "2"}}) + assert checkpoint is not None + assert checkpoint["channel_values"].get("total") == 5 + + await memory.conn.close() + + async def test_invoke_two_processes_two_in_join_two_out(mocker: MockerFixture) -> None: add_one = mocker.Mock(side_effect=lambda x: x + 1) add_10_each = mocker.Mock(side_effect=lambda x: sorted(y + 10 for y in x)) @@ -741,6 +816,7 @@ async def test_conditional_graph() -> None: ), } + # deepcopy because the nodes mutate the data assert [ deepcopy(c) async for c in app.astream({"input": "what is weather in sf"}) ] == [ @@ -870,6 +946,303 @@ async def test_conditional_graph() -> None: # Check that agent (one of the nodes) has its output streamed to the logs assert "/logs/agent/streamed_output/-" in patch_paths + # test state get/update methods with interrupt_after + + app_w_interrupt = workflow.compile( + checkpointer=MemorySaverAssertImmutable(), interrupt_after=["agent"] + ) + config = {"configurable": {"thread_id": "1"}} + + assert [ + c + async for c in app_w_interrupt.astream( + {"input": "what is weather in sf"}, config + ) + ] == [ + { + "agent": { + "input": "what is weather in sf", + "agent_outcome": AgentAction( + tool="search_api", tool_input="query", log="tool:search_api:query" + ), + } + } + ] + + assert await app_w_interrupt.aget_state(config) == StateSnapshot( + values={ + "agent": { + "input": "what is weather in sf", + "agent_outcome": AgentAction( + tool="search_api", tool_input="query", log="tool:search_api:query" + ), + }, + "tools": None, + }, + next=("agent:edges",), + ) + + await app_w_interrupt.aupdate_state( + config, + { + "agent": { + "agent_outcome": AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "input": "what is weather in sf", + }, + }, + ) + + assert await app_w_interrupt.aget_state(config) == StateSnapshot( + values={ + "agent": { + "agent_outcome": AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "input": "what is weather in sf", + }, + "tools": None, + }, + next=("agent:edges",), + ) + + assert [c async for c in app_w_interrupt.astream(None, config)] == [ + { + "tools": { + "input": "what is weather in sf", + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + } + }, + { + "agent": { + "input": "what is weather in sf", + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + "agent_outcome": AgentAction( + tool="search_api", + tool_input="another", + log="tool:search_api:another", + ), + } + }, + ] + + await app_w_interrupt.aupdate_state( + config, + { + "agent": { + "input": "what is weather in sf", + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + "agent_outcome": AgentFinish( + return_values={"answer": "a really nice answer"}, + log="finish:a really nice answer", + ), + } + }, + ) + + assert [c async for c in app_w_interrupt.astream(None, config)] == [ + { + "__end__": { + "input": "what is weather in sf", + "agent_outcome": AgentFinish( + return_values={"answer": "a really nice answer"}, + log="finish:a really nice answer", + ), + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + } + } + ] + + # test state get/update methods with interrupt_before + + app_w_interrupt = workflow.compile( + checkpointer=MemorySaverAssertImmutable(), interrupt_before=["tools"] + ) + config = {"configurable": {"thread_id": "2"}} + llm.i = 0 + + assert [ + c + async for c in app_w_interrupt.astream( + {"input": "what is weather in sf"}, config + ) + ] == [ + { + "agent": { + "input": "what is weather in sf", + "agent_outcome": AgentAction( + tool="search_api", tool_input="query", log="tool:search_api:query" + ), + } + } + ] + + assert await app_w_interrupt.aget_state(config) == StateSnapshot( + values={ + "agent": { + "input": "what is weather in sf", + "agent_outcome": AgentAction( + tool="search_api", tool_input="query", log="tool:search_api:query" + ), + }, + "tools": None, + }, + next=("agent:edges",), + ) + + await app_w_interrupt.aupdate_state( + config, + { + "agent": { + "agent_outcome": AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "input": "what is weather in sf", + }, + }, + ) + + assert await app_w_interrupt.aget_state(config) == StateSnapshot( + values={ + "agent": { + "agent_outcome": AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "input": "what is weather in sf", + }, + "tools": None, + }, + next=("agent:edges",), + ) + + assert [c async for c in app_w_interrupt.astream(None, config)] == [ + { + "tools": { + "input": "what is weather in sf", + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + } + }, + { + "agent": { + "input": "what is weather in sf", + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + "agent_outcome": AgentAction( + tool="search_api", + tool_input="another", + log="tool:search_api:another", + ), + } + }, + ] + + await app_w_interrupt.aupdate_state( + config, + { + "agent": { + "input": "what is weather in sf", + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + "agent_outcome": AgentFinish( + return_values={"answer": "a really nice answer"}, + log="finish:a really nice answer", + ), + } + }, + ) + + assert [c async for c in app_w_interrupt.astream(None, config)] == [ + { + "__end__": { + "input": "what is weather in sf", + "agent_outcome": AgentFinish( + return_values={"answer": "a really nice answer"}, + log="finish:a really nice answer", + ), + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + } + } + ] + async def test_conditional_graph_state() -> None: from langchain.llms.fake import FakeStreamingListLLM @@ -1056,6 +1429,570 @@ async def test_conditional_graph_state() -> None: }, ] + # test state get/update methods with interrupt_after + + app_w_interrupt = workflow.compile( + checkpointer=MemorySaverAssertImmutable(), interrupt_after=["agent"] + ) + config = {"configurable": {"thread_id": "1"}} + + assert [ + c + async for c in app_w_interrupt.astream( + {"input": "what is weather in sf"}, config + ) + ] == [ + { + "agent": { + "agent_outcome": AgentAction( + tool="search_api", tool_input="query", log="tool:search_api:query" + ), + } + } + ] + + assert await app_w_interrupt.aget_state(config) == StateSnapshot( + values={ + "input": "what is weather in sf", + "agent_outcome": AgentAction( + tool="search_api", tool_input="query", log="tool:search_api:query" + ), + "intermediate_steps": [], + }, + next=("agent:edges",), + ) + + await app_w_interrupt.aupdate_state( + config, + { + "agent_outcome": AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ) + }, + ) + + assert await app_w_interrupt.aget_state(config) == StateSnapshot( + values={ + "input": "what is weather in sf", + "agent_outcome": AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "intermediate_steps": [], + }, + next=("agent:edges",), + ) + + assert [c async for c in app_w_interrupt.astream(None, config)] == [ + { + "tools": { + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + } + }, + { + "agent": { + "agent_outcome": AgentAction( + tool="search_api", + tool_input="another", + log="tool:search_api:another", + ), + } + }, + ] + + await app_w_interrupt.aupdate_state( + config, + { + "agent_outcome": AgentFinish( + return_values={"answer": "a really nice answer"}, + log="finish:a really nice answer", + ) + }, + ) + + assert [c async for c in app_w_interrupt.astream(None, config)] == [ + { + "__end__": { + "input": "what is weather in sf", + "agent_outcome": AgentFinish( + return_values={"answer": "a really nice answer"}, + log="finish:a really nice answer", + ), + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + } + } + ] + + # test state get/update methods with interrupt_before + + app_w_interrupt = workflow.compile( + checkpointer=MemorySaverAssertImmutable(), interrupt_before=["tools"] + ) + config = {"configurable": {"thread_id": "2"}} + llm.i = 0 # reset the llm + + assert [ + c + async for c in app_w_interrupt.astream( + {"input": "what is weather in sf"}, config + ) + ] == [ + { + "agent": { + "agent_outcome": AgentAction( + tool="search_api", tool_input="query", log="tool:search_api:query" + ), + } + } + ] + + assert await app_w_interrupt.aget_state(config) == StateSnapshot( + values={ + "input": "what is weather in sf", + "agent_outcome": AgentAction( + tool="search_api", tool_input="query", log="tool:search_api:query" + ), + "intermediate_steps": [], + }, + next=("agent:edges",), + ) + + await app_w_interrupt.aupdate_state( + config, + { + "agent_outcome": AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ) + }, + ) + + assert await app_w_interrupt.aget_state(config) == StateSnapshot( + values={ + "input": "what is weather in sf", + "agent_outcome": AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "intermediate_steps": [], + }, + next=("agent:edges",), + ) + + assert [c async for c in app_w_interrupt.astream(None, config)] == [ + { + "tools": { + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + } + }, + { + "agent": { + "agent_outcome": AgentAction( + tool="search_api", + tool_input="another", + log="tool:search_api:another", + ), + } + }, + ] + + await app_w_interrupt.aupdate_state( + config, + { + "agent_outcome": AgentFinish( + return_values={"answer": "a really nice answer"}, + log="finish:a really nice answer", + ) + }, + ) + + assert [c async for c in app_w_interrupt.astream(None, config)] == [ + { + "__end__": { + "input": "what is weather in sf", + "agent_outcome": AgentFinish( + return_values={"answer": "a really nice answer"}, + log="finish:a really nice answer", + ), + "intermediate_steps": [ + ( + AgentAction( + tool="search_api", + tool_input="query", + log="tool:search_api:a different query", + ), + "result for query", + ) + ], + } + } + ] + + +async def test_conditional_entrypoint_graph() -> None: + async def left(data: str) -> str: + return data + "->left" + + async def right(data: str) -> str: + return data + "->right" + + def should_start(data: str) -> str: + # Logic to decide where to start + if len(data) > 10: + return "go-right" + else: + return "go-left" + + # Define a new graph + workflow = Graph() + + workflow.add_node("left", left) + workflow.add_node("right", right) + + workflow.set_conditional_entry_point( + should_start, {"go-left": "left", "go-right": "right"} + ) + + workflow.add_conditional_edges("left", lambda data: END) + workflow.add_edge("right", END) + + app = workflow.compile() + + assert await app.ainvoke("what is weather in sf") == "what is weather in sf->right" + + assert [c async for c in app.astream("what is weather in sf")] == [ + {"right": "what is weather in sf->right"}, + {"__end__": "what is weather in sf->right"}, + ] + + +async def test_conditional_entrypoint_graph_state() -> None: + class AgentState(TypedDict, total=False): + input: str + output: str + + async def left(data: AgentState) -> AgentState: + return {"output": data["input"] + "->left"} + + async def right(data: AgentState) -> AgentState: + return {"output": data["input"] + "->right"} + + def should_start(data: AgentState) -> str: + # Logic to decide where to start + if len(data["input"]) > 10: + return "go-right" + else: + return "go-left" + + # Define a new graph + workflow = StateGraph(AgentState) + + workflow.add_node("left", left) + workflow.add_node("right", right) + + workflow.set_conditional_entry_point( + should_start, {"go-left": "left", "go-right": "right"} + ) + + workflow.add_conditional_edges("left", lambda data: END) + workflow.add_edge("right", END) + + app = workflow.compile() + + assert await app.ainvoke({"input": "what is weather in sf"}) == { + "input": "what is weather in sf", + "output": "what is weather in sf->right", + } + + assert [c async for c in app.astream({"input": "what is weather in sf"})] == [ + {"right": {"output": "what is weather in sf->right"}}, + { + "__end__": { + "input": "what is weather in sf", + "output": "what is weather in sf->right", + } + }, + ] + + +async def test_prebuilt_tool_chat() -> None: + from langchain.chat_models.fake import FakeMessagesListChatModel + from langchain_community.tools import tool + from langchain_core.messages import AIMessage, HumanMessage, ToolMessage + + class FakeFuntionChatModel(FakeMessagesListChatModel): + def bind_functions(self, functions: list): + return self + + @tool() + def search_api(query: str) -> str: + """Searches the API for the query.""" + return f"result for {query}" + + tools = [search_api] + + app = create_tool_calling_executor( + FakeFuntionChatModel( + responses=[ + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [ + { + "id": "tool_call123", + "type": "function", + "function": { + "name": "search_api", + "arguments": json.dumps("query"), + }, + } + ] + }, + ), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [ + { + "id": "tool_call234", + "type": "function", + "function": { + "name": "search_api", + "arguments": json.dumps("another"), + }, + }, + { + "id": "tool_call567", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"a third one"', + }, + }, + ] + }, + ), + AIMessage(content="answer"), + ] + ), + tools, + ) + + assert await app.ainvoke( + {"messages": [HumanMessage(content="what is weather in sf")]} + ) == { + "messages": [ + HumanMessage(content="what is weather in sf"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [ + { + "id": "tool_call123", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"query"', + }, + } + ] + }, + ), + ToolMessage(content="result for query", tool_call_id="tool_call123"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [ + { + "id": "tool_call234", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"another"', + }, + }, + { + "id": "tool_call567", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"a third one"', + }, + }, + ] + }, + ), + ToolMessage(content="result for another", tool_call_id="tool_call234"), + ToolMessage(content="result for a third one", tool_call_id="tool_call567"), + AIMessage(content="answer"), + ] + } + + assert [ + c + async for c in app.astream( + {"messages": [HumanMessage(content="what is weather in sf")]} + ) + ] == [ + { + "agent": { + "messages": [ + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [ + { + "id": "tool_call123", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"query"', + }, + } + ] + }, + ) + ] + } + }, + { + "action": { + "messages": [ + ToolMessage(content="result for query", tool_call_id="tool_call123") + ] + } + }, + { + "agent": { + "messages": [ + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [ + { + "id": "tool_call234", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"another"', + }, + }, + { + "id": "tool_call567", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"a third one"', + }, + }, + ] + }, + ) + ] + } + }, + { + "action": { + "messages": [ + ToolMessage( + content="result for another", tool_call_id="tool_call234" + ), + ToolMessage( + content="result for a third one", tool_call_id="tool_call567" + ), + ] + } + }, + {"agent": {"messages": [AIMessage(content="answer")]}}, + { + "__end__": { + "messages": [ + HumanMessage(content="what is weather in sf"), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [ + { + "id": "tool_call123", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"query"', + }, + } + ] + }, + ), + ToolMessage( + content="result for query", tool_call_id="tool_call123" + ), + AIMessage( + content="", + additional_kwargs={ + "tool_calls": [ + { + "id": "tool_call234", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"another"', + }, + }, + { + "id": "tool_call567", + "type": "function", + "function": { + "name": "search_api", + "arguments": '"a third one"', + }, + }, + ] + }, + ), + ToolMessage( + content="result for another", tool_call_id="tool_call234" + ), + ToolMessage( + content="result for a third one", tool_call_id="tool_call567" + ), + AIMessage(content="answer"), + ] + } + }, + ] + async def test_prebuilt_chat() -> None: from langchain.chat_models.fake import FakeMessagesListChatModel @@ -1381,3 +2318,99 @@ async def test_message_graph() -> None: ] }, ] + + app_w_interrupt = workflow.compile( + checkpointer=MemorySaverAssertImmutable(), interrupt_after=["agent"] + ) + config = {"configurable": {"thread_id": "1"}} + + assert [ + c + async for c in app_w_interrupt.astream( + HumanMessage(content="what is weather in sf"), config + ) + ] == [ + { + "agent": AIMessage( + content="", + additional_kwargs={ + "function_call": {"name": "search_api", "arguments": '"query"'} + }, + ) + } + ] + + assert await app_w_interrupt.aget_state(config) == StateSnapshot( + values=[ + HumanMessage(content="what is weather in sf"), + AIMessage( + content="", + additional_kwargs={ + "function_call": {"name": "search_api", "arguments": '"query"'} + }, + ), + ], + next=("agent:edges",), + ) + + # TODO use update_state once we have message ids + + +async def test_in_one_fan_out_out_one_graph_state() -> None: + def sorted_add(x: list[str], y: list[str]) -> list[str]: + return sorted(operator.add(x, y)) + + class State(TypedDict, total=False): + query: str + answer: str + docs: Annotated[list[str], sorted_add] + + async def rewrite_query(data: State) -> State: + return {"query": f'query: {data["query"]}'} + + async def retriever_one(data: State) -> State: + return {"docs": ["doc1", "doc2"]} + + async def retriever_two(data: State) -> State: + return {"docs": ["doc3", "doc4"]} + + async def qa(data: State) -> State: + return {"answer": ",".join(data["docs"])} + + workflow = StateGraph(State) + + workflow.add_node("rewrite_query", rewrite_query) + workflow.add_node("retriever_one", retriever_one) + workflow.add_node("retriever_two", retriever_two) + workflow.add_node("qa", qa) + + workflow.set_entry_point("rewrite_query") + workflow.add_edge("rewrite_query", "retriever_one") + workflow.add_edge("rewrite_query", "retriever_two") + workflow.add_edge("retriever_one", "qa") + workflow.add_edge("retriever_two", "qa") + workflow.set_finish_point("qa") + + app = workflow.compile() + + assert await app.ainvoke({"query": "what is weather in sf"}) == { + "query": "query: what is weather in sf", + "docs": ["doc1", "doc2", "doc3", "doc4"], + "answer": "doc1,doc2,doc3,doc4", + } + + assert [c async for c in app.astream({"query": "what is weather in sf"})] == [ + {"rewrite_query": {"query": "query: what is weather in sf"}}, + { + "retriever_two": {"docs": ["doc3", "doc4"]}, + "retriever_one": {"docs": ["doc1", "doc2"]}, + }, + {"qa": {"answer": "doc1,doc2,doc3,doc4"}}, + { + "__end__": { + "query": "query: what is weather in sf", + "answer": "doc1,doc2,doc3,doc4", + "docs": ["doc1", "doc2", "doc3", "doc4"], + } + }, + ]