From 7dc933ba7071c6f0edb14a524591fe6993cde1e6 Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Mon, 23 Sep 2024 16:38:05 +0200 Subject: [PATCH 01/27] - added an algorithm notebook explaining how that works - add new tutorial to read me and other lists --- README.md | 7 +- docs/source/examples_basic.rst | 1 + docs/source/img/Assume_run_learning_loop.png | Bin 0 -> 121410 bytes .../img/Assume_run_learning_loop.png.license | 3 + docs/source/img/assume_logo.png copy.license | 3 + ...forcement_learning_algorithm_example.ipynb | 943 ++++++++++++++++++ ...t_learning_algorithm_example.ipynb.license | 3 + 7 files changed, 958 insertions(+), 2 deletions(-) create mode 100644 docs/source/img/Assume_run_learning_loop.png create mode 100644 docs/source/img/Assume_run_learning_loop.png.license create mode 100644 docs/source/img/assume_logo.png copy.license create mode 100644 examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb create mode 100644 examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb.license diff --git a/README.md b/README.md index 48ac990e..380cf6ab 100644 --- a/README.md +++ b/README.md @@ -97,12 +97,15 @@ To ease your way into ASSUME we provided some examples and tutorials. The former The tutorials work completly detached from your own machine on google colab. They provide code snippets and task that show you, how you can work with the software package one your own. We have two tutorials prepared, one for introducing a new unit and one for getting reinforcement learning ready on ASSUME. How to configure a new unit in ASSUME? -**Coming Soon** +[![Open Learning Tutorial in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/assume-framework/assume/blob/main/examples/notebooks/03_custom_unit_example.ipynb) -How to introduce reinforcement learning to ASSUME? +How to use reinforcement learning for new market participants in ASSUME? [![Open Learning Tutorial in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/assume-framework/assume/blob/main/examples/notebooks/04_reinforcement_learning_example.ipynb) +How to change and adapt reinforcement learning algorithms in ASSUME? + +[![Open Learning Tutorial in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/assume-framework/assume/blob/main/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb) ### The Examples diff --git a/docs/source/examples_basic.rst b/docs/source/examples_basic.rst index 2a547b75..7c87374b 100644 --- a/docs/source/examples_basic.rst +++ b/docs/source/examples_basic.rst @@ -18,6 +18,7 @@ Here you can find several tutorials on how to use ASSUME framework to get you st examples/02_automated_run_example.nblink examples/03_custom_unit_example.nblink examples/04_reinforcement_learning_example.nblink + examples/04_reinforcement_learning_algorithm_example.nblink examples/05_market_comparison.nblink examples/06_advanced_orders_example.nblink examples/07_interoperability_example.nblink diff --git a/docs/source/img/Assume_run_learning_loop.png b/docs/source/img/Assume_run_learning_loop.png new file mode 100644 index 0000000000000000000000000000000000000000..6c69c7267875cc120868963c298d79ad7b9e62cc GIT binary patch literal 121410 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�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 z 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 F|2J~7MSuVR literal 0 HcmV?d00001 diff --git a/docs/source/img/Assume_run_learning_loop.png.license b/docs/source/img/Assume_run_learning_loop.png.license new file mode 100644 index 00000000..a6ae0636 --- /dev/null +++ b/docs/source/img/Assume_run_learning_loop.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: ASSUME Developers + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/docs/source/img/assume_logo.png copy.license b/docs/source/img/assume_logo.png copy.license new file mode 100644 index 00000000..a6ae0636 --- /dev/null +++ b/docs/source/img/assume_logo.png copy.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: ASSUME Developers + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb b/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb new file mode 100644 index 00000000..0573a330 --- /dev/null +++ b/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb @@ -0,0 +1,943 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "4JeBorbE6FYr" + }, + "source": [ + "# 4. RL Algorithm tutorial\n", + "\n", + "This tutorial will introduce users into the MATD3 implementation in ASSUME and hence how we use reinforcement leanring (RL). The main objective of this tutorial is to ensure participants grasp the steps required to equip ASSUME with a RL alogorithm. It ,therefore, start one level deeper, than the RL_application example and the knowledge from this tutorial is not required, if the already perconfigured algorithm in Assume should be used. The algorithm explained here is usable as a plug and play solution in the framework. The following coding snippets will highlight the key in the algorithm class and will explain the interactions with the learning role and other classes along the way. \n", + "\n", + "The outline of this tutorial is as follows. We will start with an introduction to the changed simualtion flow when we use reinforcement learning (1. From one simulation year to learning episodes). If you need a refresher on RL in general, please visit our readthedocs (https://assume.readthedocs.io/en/latest/). Afterwards, we dive into the tasks and reason behind a learning role (2. What role has a learning role) and then dive into the characteristics of the algorithm (3. The MATD3).\n", + "\n", + "**Please Note:** The tutorial does not cover coding tasks. It simply provides an overview and explanation of the implementation of reinforcement learning and the flow for those who would like to modify the underlying learning algorithm.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 0. Install Assume\n", + "\n", + "Frist we need to install Assume in this Colab. Here we just install the ASSUME core package via pip. In general the instructions for an installation can be found here: https://assume.readthedocs.io/en/latest/installation.html. All the required steps are executed here and since we are working in colab the generation of a venv is not necessary. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "m0DaRwFA7VgW", + "outputId": "5655adad-5b7a-4fe3-9067-6b502a06136b", + "vscode": { + "languageId": "shellscript" + } + }, + "outputs": [], + "source": [ + "!pip install assume-framework" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IIw_QIE3pY34" + }, + "source": [ + "And easy like this we have ASSUME installed. Now we can let it run. Please note though that we cannot use the functionalities tied to docker and, hence, cannot access the predefined dashboards in colab. For this please install docker and ASSUME on your personal machine.\n", + "\n", + "Further we would like to access the predefined scenarios in ASSUME which are stored on the git repository. Hence, we clone the repository." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "_5hB0uDisSsg", + "outputId": "1241881f-e090-4f26-9b02-560adfcb3a3e", + "vscode": { + "languageId": "shellscript" + } + }, + "outputs": [], + "source": [ + "!git clone https://github.com/assume-framework/assume.git" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Fg7DyNjLuvSb" + }, + "source": [ + "**Let the magic happen.** Now you can run your first ever simulation in ASSUME. The following code navigates to the respective assume folder and starts the simulation example example_01b using the local database here in colab.\n", + "\n", + "When running locally, you can also just run `assume -s example_01b -db \"sqlite:///./examples/local_db/assume_db_example_01b.db\"` in a shell" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "3eVM60Qx8SC0", + "outputId": "20434515-6e65-4d34-d44d-8c4529a46ece", + "vscode": { + "languageId": "shellscript" + } + }, + "outputs": [], + "source": [ + "!cd assume && assume -s example_01b -db \"sqlite:///./examples/local_db/assume_db_example_01b.db\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "bj2C4ElILNNv" + }, + "source": [ + "## 1. From one simulation year to learning episodes\n", + "\n", + "In a normal simulation wihtout reinforcement learning, we only run the time horizon of the simulation once. For RL the agents need to learn their strategy based on interactions. For that to work an RL agent has to see a situation, aka a simulation hour, multiple times, and hence we need to run the entire silumation hoirzon multiple times as well. \n", + "\n", + "To enable this we define a run learning function that will be called if the simulation is started and we defined in our config that we want to activate learning. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zMyZhaNM7NRP" + }, + "source": [ + "**But first some imports:**" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "id": "xUsbeZdPJ_2Q" + }, + "outputs": [], + "source": [ + "import logging\n", + "from collections import defaultdict\n", + "from pathlib import Path\n", + "\n", + "import numpy as np\n", + "import torch as th\n", + "import yaml\n", + "from torch.nn import functional as F\n", + "from tqdm import tqdm\n", + "\n", + "from assume.common.exceptions import AssumeException\n", + "from assume.reinforcement_learning.algorithms.base_algorithm import RLAlgorithm\n", + "from assume.reinforcement_learning.algorithms.matd3 import TD3\n", + "from assume.reinforcement_learning.buffer import ReplayBuffer\n", + "from assume.reinforcement_learning.learning_role import Learning\n", + "from assume.reinforcement_learning.learning_utils import polyak_update\n", + "from assume.scenario.loader_csv import (\n", + " load_config_and_create_forecaster,\n", + " load_scenario_folder,\n", + " setup_world,\n", + ")\n", + "from assume.world import World\n", + "\n", + "logger = logging.getLogger(__name__)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This flowchart provides an overview of the key stages involved in the run_learning function, which trains Deep Reinforcement Learning (DRL) agents within a simulated market environment. The process is divided into five main steps:\n", + "\n", + "**Initialization of the Learning Process**: The function begins by setting up the environment, initializing policies, and configuring necessary settings such as logging and buffer allocation. It ensures that no existing policies are overwritten without confirmation.\n", + "\n", + "**Training Loop**: This is the outer loop where multiple training episodes are executed. For each episode, the world simulation is completely re-initialized and reset after execution, meaning the simulation environment is essentially killed after each episode. Crucially, all necessary information that must persist across episodes—such as collected experience stored in the buffer—is maintained in the inter-episodic data. This data is key to ensuring the continuity of the learning process as it allows the DRL agents to build knowledge over time.\n", + "\n", + "**Evaluation Loop**: Nested within the training loop, the evaluation loop periodically assesses the performance of the learned policies. Based on average rewards, the best-performing policies are saved, and the function determines if further training is necessary.\n", + "\n", + "**Terminate Learning and Save Policies**: At the end of the training phase, the function saves the final version of the learned policies, ensuring that the results are stored for future use.\n", + "\n", + "**Final Evaluation Run**: A final evaluation run is conducted using the best policies from the training phase, providing a benchmark for overall performance.\n", + "\n", + "The flowchart visually represents the interaction between the training and evaluation loops, highlighting the progression through these key stages.\n", + "\n", + "![Learning Process Flowchart](../../docs/source/img/Assume_run_learning_loop.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "UXYSesx4Ifp5" + }, + "outputs": [], + "source": [ + "def run_learning(\n", + " world: World,\n", + " inputs_path: str,\n", + " scenario: str,\n", + " study_case: str,\n", + " verbose: bool = False,\n", + ") -> None:\n", + " \"\"\"\n", + " Train Deep Reinforcement Learning (DRL) agents to act in a simulated market environment.\n", + "\n", + " This function runs multiple episodes of simulation to train DRL agents, performs evaluation, and saves the best runs. It maintains the buffer and learned agents in memory to avoid resetting them with each new run.\n", + "\n", + " Args:\n", + " world (World): An instance of the World class representing the simulation environment.\n", + " inputs_path (str): The path to the folder containing input files necessary for the simulation.\n", + " scenario (str): The name of the scenario for the simulation.\n", + " study_case (str): The specific study case for the simulation.\n", + "\n", + " Note:\n", + " - The function uses a ReplayBuffer to store experiences for training the DRL agents.\n", + " - It iterates through training episodes, updating the agents and evaluating their performance at regular intervals.\n", + " - Initial exploration is active at the beginning and is disabled after a certain number of episodes to improve the performance of DRL algorithms.\n", + " - Upon completion of training, the function performs an evaluation run using the best policy learned during training.\n", + " - The best policies are chosen based on the average reward obtained during the evaluation runs, and they are saved for future use.\n", + " \"\"\"\n", + "\n", + " # -----------------------------------------------------------\n", + " # 1 - Initialisation of the learning process\n", + "\n", + " if not verbose:\n", + " logger.setLevel(logging.WARNING)\n", + "\n", + " # remove csv path so that nothing is written while learning\n", + " temp_csv_path = world.export_csv_path\n", + " world.export_csv_path = \"\"\n", + "\n", + " # initialize policies already here to set the obs_dim and act_dim in the learning role\n", + " actors_and_critics = None\n", + " world.learning_role.initialize_policy(actors_and_critics=actors_and_critics)\n", + " world.output_role.del_similar_runs()\n", + "\n", + " # check if we already stored policies for this simualtion\n", + " save_path = world.learning_config[\"trained_policies_save_path\"]\n", + "\n", + " if Path(save_path).is_dir():\n", + " # we are in learning mode and about to train new policies, which might overwrite existing ones\n", + " accept = input(\n", + " f\"{save_path=} exists - should we overwrite current learnings? (y/N) \"\n", + " )\n", + " if not accept.lower().startswith(\"y\"):\n", + " # stop here - do not start learning or save anything\n", + " raise AssumeException(\"don't overwrite existing strategies\")\n", + "\n", + " # Load scenario data to reuse across episodes\n", + " scenario_data = load_config_and_create_forecaster(inputs_path, scenario, study_case)\n", + "\n", + " # Information that needs to be stored across episodes, aka one simulation run\n", + " inter_episodic_data = {\n", + " \"buffer\": ReplayBuffer(\n", + " buffer_size=int(world.learning_config.get(\"replay_buffer_size\", 5e5)),\n", + " obs_dim=world.learning_role.rl_algorithm.obs_dim,\n", + " act_dim=world.learning_role.rl_algorithm.act_dim,\n", + " n_rl_units=len(world.learning_role.rl_strats),\n", + " device=world.learning_role.device,\n", + " float_type=world.learning_role.float_type,\n", + " ),\n", + " \"actors_and_critics\": None,\n", + " \"max_eval\": defaultdict(lambda: -1e9),\n", + " \"all_eval\": defaultdict(list),\n", + " \"avg_all_eval\": [],\n", + " \"episodes_done\": 0,\n", + " \"eval_episodes_done\": 0,\n", + " \"noise_scale\": world.learning_config.get(\"noise_scale\", 1.0),\n", + " }\n", + "\n", + " validation_interval = min(\n", + " world.learning_role.training_episodes,\n", + " world.learning_config.get(\"validation_episodes_interval\", 5),\n", + " )\n", + "\n", + " # -----------------------------------------\n", + " # 2 - Training loop\n", + "\n", + " eval_episode = 1\n", + "\n", + " for episode in tqdm(\n", + " range(1, world.learning_role.training_episodes + 1),\n", + " desc=\"Training Episodes\",\n", + " ):\n", + " # TODO normally, loading twice should not create issues, somehow a scheduling issue is raised currently\n", + " if episode != 1:\n", + " setup_world(\n", + " world=world,\n", + " scenario_data=scenario_data,\n", + " study_case=study_case,\n", + " episode=episode,\n", + " )\n", + "\n", + " # Give the newly initliazed learning role the needed information across episodes\n", + " world.learning_role.load_inter_episodic_data(inter_episodic_data)\n", + "\n", + " world.run()\n", + "\n", + " # Store updated information across episodes\n", + " inter_episodic_data = world.learning_role.get_inter_episodic_data()\n", + " inter_episodic_data[\"episodes_done\"] = episode\n", + "\n", + " # -----------------------------------------\n", + " # 3 - Evaluation loop\n", + "\n", + " if (\n", + " episode % validation_interval == 0\n", + " and episode\n", + " >= world.learning_role.episodes_collecting_initial_experience\n", + " + validation_interval\n", + " ):\n", + " world.reset()\n", + "\n", + " # load evaluation run\n", + " setup_world(\n", + " world=world,\n", + " scenario_data=scenario_data,\n", + " study_case=study_case,\n", + " perform_evaluation=True,\n", + " eval_episode=eval_episode,\n", + " )\n", + "\n", + " world.learning_role.load_inter_episodic_data(inter_episodic_data)\n", + "\n", + " world.run()\n", + "\n", + " total_rewards = world.output_role.get_sum_reward()\n", + " avg_reward = np.mean(total_rewards)\n", + " # check reward improvement in evaluation run\n", + " # and store best run in eval folder\n", + " terminate = world.learning_role.compare_and_save_policies(\n", + " {\"avg_reward\": avg_reward}\n", + " )\n", + "\n", + " inter_episodic_data[\"eval_episodes_done\"] = eval_episode\n", + "\n", + " # if we have not improved in the last x evaluations, we stop loop\n", + " if terminate:\n", + " break\n", + "\n", + " eval_episode += 1\n", + "\n", + " world.reset()\n", + "\n", + " # -----------------------------------------\n", + " # 4 - Terminate Learning and Save policies\n", + "\n", + " # if at end of simulation save last policies\n", + " if episode == (world.learning_role.training_episodes):\n", + " world.learning_role.rl_algorithm.save_params(\n", + " directory=f\"{world.learning_role.trained_policies_save_path}/last_policies\"\n", + " )\n", + "\n", + " # container shutdown implicitly with new initialisation\n", + " logger.info(\"################\")\n", + " logger.info(\"Training finished, Start evaluation run\")\n", + " world.export_csv_path = temp_csv_path\n", + "\n", + " world.reset()\n", + "\n", + " # ----------------------------------\n", + " # 5 - Final Evaluation run\n", + "\n", + " # load scenario for evaluation\n", + " setup_world(\n", + " world=world,\n", + " scenario_data=scenario_data,\n", + " study_case=study_case,\n", + " terminate_learning=True,\n", + " )\n", + "\n", + " world.learning_role.load_inter_episodic_data(inter_episodic_data)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "8UM1QPZrIdqK" + }, + "source": [ + "## 2. What role has a learning role\n", + "\n", + "The LearningRole class in learning_role.py is a central component of the reinforcement learning framework. It manages configurations, device settings, early stopping of the learning process, and initializes various RL strategies the algorithm and buffers. This class ensures that the RL agent can be trained or evaluated effectively, leveraging the available hardware and adhering to the specified configurations. The parameters of the learning process are also described in the read-the-docs under learning_algorithms.\n", + "\n", + "### 2.1 Learning Data Management\n", + "\n", + "One key feature of the LearningRole class is its ability to load and manage the inter episodic data. This involves storing experiences and the training progress and retrieving this data to train the RL agent. By efficiently handling episodic data, the LearningRole class enables the agent to learn from past experiences and improve its performance over time." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class Learning(Learning):\n", + " \"\"\"\n", + " This class manages the learning process of reinforcement learning agents, including initializing key components such as\n", + " neural networks, replay buffer, and learning hyperparameters. It handles both training and evaluation modes based on\n", + " the provided learning configuration.\n", + "\n", + " Args:\n", + " simulation_start (datetime.datetime): The start of the simulation.\n", + " simulation_end (datetime.datetime): The end of the simulation.\n", + " learning_config (LearningConfig): The configuration for the learning process.\n", + "\n", + " \"\"\"\n", + "\n", + " def load_inter_episodic_data(self, inter_episodic_data):\n", + " \"\"\"\n", + " Load the inter-episodic data from the dict stored across simulation runs.\n", + "\n", + " Args:\n", + " inter_episodic_data (dict): The inter-episodic data to be loaded.\n", + "\n", + " \"\"\"\n", + " self.episodes_done = inter_episodic_data[\"episodes_done\"]\n", + " self.eval_episodes_done = inter_episodic_data[\"eval_episodes_done\"]\n", + " self.max_eval = inter_episodic_data[\"max_eval\"]\n", + " self.rl_eval = inter_episodic_data[\"all_eval\"]\n", + " self.avg_rewards = inter_episodic_data[\"avg_all_eval\"]\n", + " self.buffer = inter_episodic_data[\"buffer\"]\n", + "\n", + " # if enough initial experience was collected according to specifications in learning config\n", + " # turn off initial exploration and go into full learning mode\n", + " if self.episodes_done > self.episodes_collecting_initial_experience:\n", + " self.turn_off_initial_exploration()\n", + "\n", + " self.set_noise_scale(inter_episodic_data[\"noise_scale\"])\n", + "\n", + " self.initialize_policy(inter_episodic_data[\"actors_and_critics\"])\n", + "\n", + " def get_inter_episodic_data(self):\n", + " \"\"\"\n", + " Dump the inter-episodic data to a dict for storing across simulation runs.\n", + "\n", + " Returns:\n", + " dict: The inter-episodic data to be stored.\n", + " \"\"\"\n", + "\n", + " return {\n", + " \"episodes_done\": self.episodes_done,\n", + " \"eval_episodes_done\": self.eval_episodes_done,\n", + " \"max_eval\": self.max_eval,\n", + " \"all_eval\": self.rl_eval,\n", + " \"avg_all_eval\": self.avg_rewards,\n", + " \"buffer\": self.buffer,\n", + " \"actors_and_critics\": self.rl_algorithm.extract_policy(),\n", + " \"noise_scale\": self.get_noise_scale(),\n", + " }" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The metrics in `inter_episodic_data` are stored for the following reasons:\n", + "\n", + "- `episodes_done` and `eval_episodes_done`: **Monitoring Progress** \n", + " Keeping track of the number of episodes completed.\n", + "\n", + "- `max_eval`, `all_eval`, `avg_all_eval`: **Evaluating Performance** \n", + " Storing evaluation scores and average rewards to assess the agent's performance across episodes.\n", + "\n", + "- `buffer`: **Experience Replay** \n", + " Using a replay buffer to learn from past experiences and improve data efficiency.\n", + "\n", + "- `noise_scale`: **Policy Exploration** \n", + " The noise is used to include exploration in the policy. It is decreased across episode numbers, and we store the current noise value to continue the decrease across future episodes.\n", + "\n", + "- `actors_and_critics`: **Policy Initialization** \n", + " Initializing the policy with actors and critics (`self.initialize_policy()`) ensures that the agent starts with the pre-defined strategy from the previous episode and can improve upon it through learning.\n", + "\n", + "\n", + "### 2.2 Learning Algorithm\n", + "\n", + "If learning is used, then the learning role initializes a learning algorithm which is the heart of the learning progress. Currently, only the MATD3 is implemented, but we are working on different PPO implementations as well. If you would like to add an algoithm it woulb be integrated here." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "0ww-L9fABnw3" + }, + "outputs": [], + "source": [ + "class Learning(Learning):\n", + " def create_learning_algorithm(self, algorithm: RLAlgorithm):\n", + " \"\"\"\n", + " Create and initialize the reinforcement learning algorithm.\n", + "\n", + " This method creates and initializes the reinforcement learning algorithm based on the specified algorithm name. The algorithm\n", + " is associated with the learning role and configured with relevant hyperparameters.\n", + "\n", + " Args:\n", + " algorithm (RLAlgorithm): The name of the reinforcement learning algorithm.\n", + " \"\"\"\n", + " if algorithm == \"matd3\":\n", + " self.rl_algorithm = TD3(\n", + " learning_role=self,\n", + " learning_rate=self.learning_rate,\n", + " episodes_collecting_initial_experience=self.episodes_collecting_initial_experience,\n", + " gradient_steps=self.gradient_steps,\n", + " batch_size=self.batch_size,\n", + " gamma=self.gamma,\n", + " actor_architecture=self.actor_architecture,\n", + " )\n", + " else:\n", + " logger.error(f\"Learning algorithm {algorithm} not implemented!\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3 Learning Algorithm Flow in Assume\n", + "\n", + "The following graph illustrates the structure and flow of the learning algorithm within the reinforcement learning framework.\n", + "\n", + "\"Learning\n", + "\n", + "Within the algorithm, we distinguish three different steps that are translated into ASSUME in the following way:\n", + "\n", + "1. **Initialization**: This is the first step where all necessary components such as the actors, critics, and buffer are set up.\n", + "\n", + "2. **Experience Collection**: The second step, represented in the flowchart above within the loop, involves the collection of experience. This includes choosing an action, observing a reward, and storing the transition tuple in the buffer.\n", + "\n", + "3. **Policy Update**: The third step is the actual policy update, which is also performed within the loop, allowing the agent to improve its performance over time.\n", + "\n", + "\n", + "### 3.1 Initialization\n", + "\n", + "The initialization of the actors, critics, and the buffer is handled via the `learning_role` and the `inter_episodic_data`, as described earlier. The `create_learning_algorithm` function triggers their initialization in `initialize_policy`. At the beginning of the training process, they are initialized with new random settings. In subsequent episodes, they are initialized with pre-learned data, ensuring that previous learning is retained and built upon.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class TD3(TD3):\n", + " def initialize_policy(self, actors_and_critics: dict = None) -> None:\n", + " \"\"\"\n", + " Create actor and critic networks for reinforcement learning.\n", + "\n", + " If `actors_and_critics` is None, this method creates new actor and critic networks.\n", + " If `actors_and_critics` is provided, it assigns existing networks to the respective attributes.\n", + "\n", + " Args:\n", + " actors_and_critics (dict): The actor and critic networks to be assigned.\n", + "\n", + " \"\"\"\n", + " if actors_and_critics is None:\n", + " self.create_actors()\n", + " self.create_critics()\n", + "\n", + " else:\n", + " self.learning_role.critics = actors_and_critics[\"critics\"]\n", + " self.learning_role.target_critics = actors_and_critics[\"target_critics\"]\n", + " for u_id, unit_strategy in self.learning_role.rl_strats.items():\n", + " unit_strategy.actor = actors_and_critics[\"actors\"][u_id]\n", + " unit_strategy.actor_target = actors_and_critics[\"actor_targets\"][u_id]\n", + "\n", + " self.obs_dim = actors_and_critics[\"obs_dim\"]\n", + " self.act_dim = actors_and_critics[\"act_dim\"]\n", + " self.unique_obs_dim = actors_and_critics[\"unique_obs_dim\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Please also note that we make a distinction in the handling of the critics and target critics compared to the actors and target actors. You can observe this in the `initialize_policy` function. For the critics, they are assigned to the `learning_role` as there are centralized critics used for all the different actors. In contrast, the actors are assigned to specific unit strategies. Each learning unit, such as a power plant, has one learning strategy and therefore an individual actor, while the critics remain centralized.\n", + "\n", + "This distinction leads to the case where, even if learning is not active, we still need the actors to perform the entire simulation using pre-trained policies. This is essential, for example, when running simulations with previously learned policies.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.2 Experience Collection\n", + "\n", + "Within the loop, the selection of an action with exploration noise, as well as the observation of a new reward and state, and the storing of this tuple in the buffer, are all handled within the bidding strategy. \n", + "\n", + "This specific process is covered in more detail in another tutorial. For more details, refer to [tutorial 04](04_reinforcement_learning_example.ipynb).\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.3 Policy Update \n", + "\n", + "The core of the algorithm, which comprises all other steps is embodied by the `assume.reinforcement_learning.algorithms.matd3.TD3.update_policy` function in the learning algorithms. Here, the critic and the actor are updated according to the algorithm." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class TD3(TD3):\n", + " def update_policy(self):\n", + " \"\"\"\n", + " Update the policy of the reinforcement learning agent using the Twin Delayed Deep Deterministic Policy Gradients (TD3) algorithm.\n", + "\n", + " Notes:\n", + " This function performs the policy update step, which involves updating the actor (policy) and critic (Q-function) networks\n", + " using TD3 algorithm. It iterates over the specified number of gradient steps and performs the following steps for each\n", + " learning strategy:\n", + "\n", + " 1. Sample a batch of transitions from the replay buffer.\n", + " 2. Calculate the next actions with added noise using the actor target network.\n", + " 3. Compute the target Q-values based on the next states, rewards, and the target critic network.\n", + " 4. Compute the critic loss as the mean squared error between current Q-values and target Q-values.\n", + " 5. Optimize the critic network by performing a gradient descent step.\n", + " 6. Optionally, update the actor network if the specified policy delay is reached.\n", + " 7. Apply Polyak averaging to update target networks.\n", + "\n", + " This function implements the TD3 algorithm's key step for policy improvement and exploration.\n", + " \"\"\"\n", + "\n", + " logger.debug(\"Updating Policy\")\n", + " n_rl_agents = len(self.learning_role.rl_strats.keys())\n", + " for _ in range(self.gradient_steps):\n", + " self.n_updates += 1\n", + " i = 0\n", + "\n", + " for u_id in self.learning_role.rl_strats.keys():\n", + " critic_target = self.learning_role.target_critics[u_id]\n", + " critic = self.learning_role.critics[u_id]\n", + " actor = self.learning_role.rl_strats[u_id].actor\n", + " actor_target = self.learning_role.rl_strats[u_id].actor_target\n", + "\n", + " if i % 100 == 0:\n", + " # only update target netwroks every 100 steps, to have delayed network update\n", + " transitions = self.learning_role.buffer.sample(self.batch_size)\n", + " states = transitions.observations\n", + " actions = transitions.actions\n", + " next_states = transitions.next_observations\n", + " rewards = transitions.rewards\n", + "\n", + " with th.no_grad():\n", + " # Select action according to policy and add clipped noise\n", + " noise = actions.clone().data.normal_(\n", + " 0, self.target_policy_noise\n", + " )\n", + " noise = noise.clamp(\n", + " -self.target_noise_clip, self.target_noise_clip\n", + " )\n", + " next_actions = [\n", + " (actor_target(next_states[:, i, :]) + noise[:, i, :]).clamp(\n", + " -1, 1\n", + " )\n", + " for i in range(n_rl_agents)\n", + " ]\n", + " next_actions = th.stack(next_actions)\n", + "\n", + " next_actions = next_actions.transpose(0, 1).contiguous()\n", + " next_actions = next_actions.view(-1, n_rl_agents * self.act_dim)\n", + "\n", + " all_actions = actions.view(self.batch_size, -1)\n", + "\n", + " # this takes the unique observations from all other agents assuming that\n", + " # the unique observations are at the end of the observation vector\n", + " temp = th.cat(\n", + " (\n", + " states[:, :i, self.obs_dim - self.unique_obs_dim :].reshape(\n", + " self.batch_size, -1\n", + " ),\n", + " states[\n", + " :, i + 1 :, self.obs_dim - self.unique_obs_dim :\n", + " ].reshape(self.batch_size, -1),\n", + " ),\n", + " axis=1,\n", + " )\n", + "\n", + " # the final all_states vector now contains the current agent's observation\n", + " # and the unique observations from all other agents\n", + " all_states = th.cat(\n", + " (states[:, i, :].reshape(self.batch_size, -1), temp), axis=1\n", + " ).view(self.batch_size, -1)\n", + " # all_states = states[:, i, :].reshape(self.batch_size, -1)\n", + "\n", + " # this is the same as above but for the next states\n", + " temp = th.cat(\n", + " (\n", + " next_states[\n", + " :, :i, self.obs_dim - self.unique_obs_dim :\n", + " ].reshape(self.batch_size, -1),\n", + " next_states[\n", + " :, i + 1 :, self.obs_dim - self.unique_obs_dim :\n", + " ].reshape(self.batch_size, -1),\n", + " ),\n", + " axis=1,\n", + " )\n", + "\n", + " # the final all_next_states vector now contains the current agent's observation\n", + " # and the unique observations from all other agents\n", + " all_next_states = th.cat(\n", + " (next_states[:, i, :].reshape(self.batch_size, -1), temp), axis=1\n", + " ).view(self.batch_size, -1)\n", + " # all_next_states = next_states[:, i, :].reshape(self.batch_size, -1)\n", + "\n", + " with th.no_grad():\n", + " # Compute the next Q-values: min over all critics targets\n", + " next_q_values = th.cat(\n", + " critic_target(all_next_states, next_actions), dim=1\n", + " )\n", + " next_q_values, _ = th.min(next_q_values, dim=1, keepdim=True)\n", + " target_Q_values = (\n", + " rewards[:, i].unsqueeze(1) + self.gamma * next_q_values\n", + " )\n", + "\n", + " # Get current Q-values estimates for each critic network\n", + " current_Q_values = critic(all_states, all_actions)\n", + "\n", + " # Compute critic loss\n", + " critic_loss = sum(\n", + " F.mse_loss(current_q, target_Q_values)\n", + " for current_q in current_Q_values\n", + " )\n", + "\n", + " # Optimize the critics\n", + " critic.optimizer.zero_grad()\n", + " critic_loss.backward()\n", + " critic.optimizer.step()\n", + "\n", + " # Delayed policy updates\n", + " if self.n_updates % self.policy_delay == 0:\n", + " # Compute actor loss\n", + " state_i = states[:, i, :]\n", + " action_i = actor(state_i)\n", + "\n", + " all_actions_clone = actions.clone()\n", + " all_actions_clone[:, i, :] = action_i\n", + " all_actions_clone = all_actions_clone.view(self.batch_size, -1)\n", + "\n", + " actor_loss = -critic.q1_forward(\n", + " all_states, all_actions_clone\n", + " ).mean()\n", + "\n", + " actor.optimizer.zero_grad()\n", + " actor_loss.backward()\n", + " actor.optimizer.step()\n", + "\n", + " polyak_update(\n", + " critic.parameters(), critic_target.parameters(), self.tau\n", + " )\n", + " polyak_update(\n", + " actor.parameters(), actor_target.parameters(), self.tau\n", + " )\n", + " i += 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The other functions within the reinforcement learning algorithm are primarily there to store, update, and save the new policies. These functions either write the updated policies to a designated location or save them into the `inter_episodic_data`.\n", + "\n", + "If you would like to make a change to this algorithm, the most likely modification would be to the `update_policy` function, as it plays a central role in the learning process. The other functions would only need adjustments if the different algorithm features vary likethe target critics or critic architectures.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "L3flH5iY4x7Z" + }, + "source": [ + "### 3.5 Start the simulation\n", + "\n", + "We are almost done with all the changes to actually be able to make ASSUME learn here in google colab. If you would rather like to load our pretrained strategies, we need a function for loading parameters, which can be found below. \n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cTlqMouufKyo" + }, + "source": [ + "To control the learning process, the config file determines the parameters of the learning algorithm. As we want to temper with these values in the notebook we will overwrite the learning config in the next cell and then load it into our world. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "moZ_UD7FfkOh" + }, + "outputs": [], + "source": [ + "learning_config = {\n", + " \"observation_dimension\": 50,\n", + " \"action_dimension\": 2,\n", + " \"continue_learning\": False,\n", + " \"trained_policies_save_path\": \"None\",\n", + " \"max_bid_price\": 100,\n", + " \"algorithm\": \"matd3\",\n", + " \"learning_rate\": 0.001,\n", + " \"training_episodes\": 100,\n", + " \"episodes_collecting_initial_experience\": 5,\n", + " \"train_freq\": 24,\n", + " \"gradient_steps\": -1,\n", + " \"batch_size\": 256,\n", + " \"gamma\": 0.99,\n", + " \"device\": \"cpu\",\n", + " \"noise_sigma\": 0.1,\n", + " \"noise_scale\": 1,\n", + " \"noise_dt\": 1,\n", + " \"validation_episodes_interval\": 5,\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "iPz8v4N5hpfr" + }, + "outputs": [], + "source": [ + "# Read the YAML file\n", + "with open(\"assume/examples/inputs/example_02a/config.yaml\") as file:\n", + " data = yaml.safe_load(file)\n", + "\n", + "# store our modifications to the config file\n", + "data[\"base\"][\"learning_mode\"] = True\n", + "data[\"base\"][\"learning_config\"] = learning_config\n", + "\n", + "# Write the modified data back to the file\n", + "with open(\"assume/examples/inputs/example_02a/config.yaml\", \"w\") as file:\n", + " yaml.safe_dump(data, file)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZlRnTgCy5d9W" + }, + "source": [ + "In order to let the simulation run with the integrated learning we need to touch up the main file that runs it in the following way." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "ZlWxXxZr54WV", + "outputId": "e30f4279-7a4e-4efc-9cfb-61416e4fe2f1" + }, + "outputs": [], + "source": [ + "import os\n", + "\n", + "import RLStrategy\n", + "\n", + "log = logging.getLogger(__name__)\n", + "\n", + "csv_path = \"./outputs\"\n", + "os.makedirs(\"./local_db\", exist_ok=True)\n", + "\n", + "if __name__ == \"__main__\":\n", + " \"\"\"\n", + " Available examples:\n", + " - local_db: without database and grafana\n", + " - timescale: with database and grafana (note: you need docker installed)\n", + " \"\"\"\n", + " data_format = \"local_db\" # \"local_db\" or \"timescale\"\n", + "\n", + " if data_format == \"local_db\":\n", + " db_uri = \"sqlite:///./local_db/assume_db.db\"\n", + " elif data_format == \"timescale\":\n", + " db_uri = \"postgresql://assume:assume@localhost:5432/assume\"\n", + "\n", + " input_path = \"assume/examples/inputs\"\n", + " scenario = \"example_02a\"\n", + " study_case = \"base\"\n", + "\n", + " # create world\n", + " world = World(database_uri=db_uri, export_csv_path=csv_path)\n", + "\n", + " # we import our defined bidding strategey class including the learning into the world bidding strategies\n", + " # in the example files we provided the name of the learning bidding strategeis in the input csv is \"pp_learning\"\n", + " # hence we define this strategey to be one of the learning class\n", + " world.bidding_strategies[\"pp_learning\"] = RLStrategy\n", + "\n", + " # then we load the scenario specified above from the respective input files\n", + " load_scenario_folder(\n", + " world,\n", + " inputs_path=input_path,\n", + " scenario=scenario,\n", + " study_case=study_case,\n", + " )\n", + "\n", + " # run learning if learning mode is enabled\n", + " # needed as we simulate the modelling horizon multiple times to train reinforcement learning run_learning( world, inputs_path=input_path, scenario=scenario, study_case=study_case, )\n", + "\n", + " if world.learning_config.get(\"learning_mode\", False):\n", + " run_learning(\n", + " world,\n", + " inputs_path=input_path,\n", + " scenario=scenario,\n", + " study_case=study_case,\n", + " )\n", + "\n", + " # after the learning is done we make a normal run of the simulation, which equasl a test run\n", + " world.run()" + ] + } + ], + "metadata": { + "colab": { + "include_colab_link": true, + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "assume-framework", + "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.4" + }, + "nbsphinx": { + "execute": "never" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb.license b/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb.license new file mode 100644 index 00000000..a6ae0636 --- /dev/null +++ b/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: ASSUME Developers + +SPDX-License-Identifier: AGPL-3.0-or-later From 78d99616b5b2e6b5c4add72559e55ce6b894c291 Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Mon, 23 Sep 2024 16:57:29 +0200 Subject: [PATCH 02/27] - config fixes --- ...forcement_learning_algorithm_example.ipynb | 649 +++++++++++++++++- 1 file changed, 627 insertions(+), 22 deletions(-) diff --git a/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb b/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb index 0573a330..fc8ecc8a 100644 --- a/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb +++ b/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb @@ -26,7 +26,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -37,7 +37,36 @@ "languageId": "shellscript" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: assume-framework in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (0.3.7)\n", + "Requirement already satisfied: argcomplete>=3.1.4 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (3.4.0)\n", + "Requirement already satisfied: nest-asyncio>=1.5.6 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (1.6.0)\n", + "Requirement already satisfied: mango-agents-assume>=1.1.1-8 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (1.1.4.post2)\n", + "Requirement already satisfied: numpy<2 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (1.26.4)\n", + "Requirement already satisfied: tqdm>=4.64.1 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (4.66.4)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (2.9.0)\n", + "Requirement already satisfied: sqlalchemy>=2.0.9 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (2.0.30)\n", + "Requirement already satisfied: pandas>=2.0.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (2.2.2)\n", + "Requirement already satisfied: psycopg2-binary>=2.9.5 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (2.9.9)\n", + "Requirement already satisfied: pyyaml>=6.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (6.0.1)\n", + "Requirement already satisfied: pyyaml-include>=1.3.1 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (1.4.1)\n", + "Requirement already satisfied: paho-mqtt>=1.5.1 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from mango-agents-assume>=1.1.1-8->assume-framework) (2.1.0)\n", + "Requirement already satisfied: dill>=0.3.6 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from mango-agents-assume>=1.1.1-8->assume-framework) (0.3.8)\n", + "Requirement already satisfied: msgspec>=0.14.2 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from mango-agents-assume>=1.1.1-8->assume-framework) (0.18.6)\n", + "Requirement already satisfied: protobuf>=3.20.3 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from mango-agents-assume>=1.1.1-8->assume-framework) (5.27.1)\n", + "Requirement already satisfied: pytz>=2020.1 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from pandas>=2.0.0->assume-framework) (2024.1)\n", + "Requirement already satisfied: tzdata>=2022.7 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from pandas>=2.0.0->assume-framework) (2024.1)\n", + "Requirement already satisfied: six>=1.5 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from python-dateutil>=2.8.2->assume-framework) (1.16.0)\n", + "Requirement already satisfied: typing-extensions>=4.6.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from sqlalchemy>=2.0.9->assume-framework) (4.12.2)\n", + "Requirement already satisfied: greenlet!=0.4.17 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from sqlalchemy>=2.0.9->assume-framework) (3.0.3)\n", + "Requirement already satisfied: colorama in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from tqdm>=4.64.1->assume-framework) (0.4.6)\n" + ] + } + ], "source": [ "!pip install assume-framework" ] @@ -55,7 +84,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -66,7 +95,15 @@ "languageId": "shellscript" } }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Cloning into 'assume'...\n" + ] + } + ], "source": [ "!git clone https://github.com/assume-framework/assume.git" ] @@ -84,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -95,7 +132,411 @@ "languageId": "shellscript" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.world:connected to db\n", + "INFO:assume.scenario.loader_csv:Starting Scenario example_01b/ from examples/inputs\n", + "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", + "INFO:assume.scenario.loader_csv:Downsampling demand_df successful.\n", + "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", + "INFO:assume.scenario.loader_csv:Downsampling availability_df successful.\n", + "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", + "INFO:assume.scenario.loader_csv:price_forecasts not found. Returning None\n", + "INFO:assume.scenario.loader_csv:temperature not found. Returning None\n", + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + " 0%| | 0/2678400 [00:00" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 17, "metadata": { "id": "UXYSesx4Ifp5" }, @@ -381,7 +822,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -471,7 +912,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": { "id": "0ww-L9fABnw3" }, @@ -528,7 +969,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -592,7 +1033,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ @@ -782,15 +1223,13 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": { "id": "moZ_UD7FfkOh" }, "outputs": [], "source": [ "learning_config = {\n", - " \"observation_dimension\": 50,\n", - " \"action_dimension\": 2,\n", " \"continue_learning\": False,\n", " \"trained_policies_save_path\": \"None\",\n", " \"max_bid_price\": 100,\n", @@ -798,7 +1237,7 @@ " \"learning_rate\": 0.001,\n", " \"training_episodes\": 100,\n", " \"episodes_collecting_initial_experience\": 5,\n", - " \"train_freq\": 24,\n", + " \"train_freq\": \"24h\",\n", " \"gradient_steps\": -1,\n", " \"batch_size\": 256,\n", " \"gamma\": 0.99,\n", @@ -812,7 +1251,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": { "id": "iPz8v4N5hpfr" }, @@ -842,7 +1281,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -851,11 +1290,170 @@ "id": "ZlWxXxZr54WV", "outputId": "e30f4279-7a4e-4efc-9cfb-61416e4fe2f1" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.world:connected to db\n", + "INFO:assume.scenario.loader_csv:Starting Scenario example_02a/base from assume/examples/inputs\n", + "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", + "INFO:assume.scenario.loader_csv:Downsampling demand_df successful.\n", + "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", + "INFO:assume.scenario.loader_csv:availability_df not found. Returning None\n", + "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", + "INFO:assume.scenario.loader_csv:price_forecasts not found. Returning None\n", + "INFO:assume.scenario.loader_csv:temperature not found. Returning None\n", + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n", + "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", + "INFO:assume.scenario.loader_csv:Downsampling demand_df successful.\n", + "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", + "INFO:assume.scenario.loader_csv:availability_df not found. Returning None\n", + "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", + "INFO:assume.scenario.loader_csv:price_forecasts not found. Returning None\n", + "INFO:assume.scenario.loader_csv:temperature not found. Returning None\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "example_02a_base_1 2019-03-31 00:00:00: : 2592001.0it [00:27, 94420.77it/s] \n", + "Training Episodes: 1%| | 1/100 [00:27<45:21, 27.49s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "example_02a_base_2 2019-03-31 00:00:00: : 2592001.0it [00:27, 94242.68it/s] \n", + "Training Episodes: 2%|▏ | 2/100 [00:55<44:56, 27.52s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "example_02a_base_3 2019-03-31 00:00:00: : 2592001.0it [00:27, 93778.01it/s]\n", + "Training Episodes: 3%|▎ | 3/100 [01:22<44:36, 27.59s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "example_02a_base_4 2019-03-31 00:00:00: : 2592001.0it [00:27, 93996.50it/s] \n", + "Training Episodes: 4%|▍ | 4/100 [01:50<44:09, 27.60s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Training Episodes: 5%|▌ | 5/100 [02:16<42:57, 27.13s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "Training Episodes: 5%|▌ | 5/100 [02:16<43:20, 27.37s/it]\n" + ] + }, + { + "ename": "ValueError", + "evalue": "Time must be > 1553886000.0 but is 1551398399.", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[27], line 47\u001b[0m\n\u001b[0;32m 43\u001b[0m \u001b[38;5;66;03m# run learning if learning mode is enabled\u001b[39;00m\n\u001b[0;32m 44\u001b[0m \u001b[38;5;66;03m# needed as we simulate the modelling horizon multiple times to train reinforcement learning run_learning( world, inputs_path=input_path, scenario=scenario, study_case=study_case, )\u001b[39;00m\n\u001b[0;32m 46\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m world\u001b[38;5;241m.\u001b[39mlearning_config\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlearning_mode\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[1;32m---> 47\u001b[0m \u001b[43mrun_learning\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 48\u001b[0m \u001b[43m \u001b[49m\u001b[43mworld\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 49\u001b[0m \u001b[43m \u001b[49m\u001b[43minputs_path\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minput_path\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 50\u001b[0m \u001b[43m \u001b[49m\u001b[43mscenario\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscenario\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 51\u001b[0m \u001b[43m \u001b[49m\u001b[43mstudy_case\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstudy_case\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 52\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 54\u001b[0m \u001b[38;5;66;03m# after the learning is done we make a normal run of the simulation, which equasl a test run\u001b[39;00m\n\u001b[0;32m 55\u001b[0m world\u001b[38;5;241m.\u001b[39mrun()\n", + "Cell \u001b[1;32mIn[17], line 102\u001b[0m, in \u001b[0;36mrun_learning\u001b[1;34m(world, inputs_path, scenario, study_case, verbose)\u001b[0m\n\u001b[0;32m 99\u001b[0m \u001b[38;5;66;03m# Give the newly initliazed learning role the needed information across episodes\u001b[39;00m\n\u001b[0;32m 100\u001b[0m world\u001b[38;5;241m.\u001b[39mlearning_role\u001b[38;5;241m.\u001b[39mload_inter_episodic_data(inter_episodic_data)\n\u001b[1;32m--> 102\u001b[0m \u001b[43mworld\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 104\u001b[0m \u001b[38;5;66;03m# Store updated information across episodes\u001b[39;00m\n\u001b[0;32m 105\u001b[0m inter_episodic_data \u001b[38;5;241m=\u001b[39m world\u001b[38;5;241m.\u001b[39mlearning_role\u001b[38;5;241m.\u001b[39mget_inter_episodic_data()\n", + "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\world.py:686\u001b[0m, in \u001b[0;36mWorld.run\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 683\u001b[0m end_ts \u001b[38;5;241m=\u001b[39m datetime2timestamp(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mend)\n\u001b[0;32m 685\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 686\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_until_complete\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 687\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43masync_run\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart_ts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstart_ts\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mend_ts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mend_ts\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 688\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 689\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m:\n\u001b[0;32m 690\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\nest_asyncio.py:98\u001b[0m, in \u001b[0;36m_patch_loop..run_until_complete\u001b[1;34m(self, future)\u001b[0m\n\u001b[0;32m 95\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m f\u001b[38;5;241m.\u001b[39mdone():\n\u001b[0;32m 96\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[0;32m 97\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mEvent loop stopped before Future completed.\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m---> 98\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mf\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py:203\u001b[0m, in \u001b[0;36mFuture.result\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 201\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__log_traceback \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m 202\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 203\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception\u001b[38;5;241m.\u001b[39mwith_traceback(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception_tb)\n\u001b[0;32m 204\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_result\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py:277\u001b[0m, in \u001b[0;36mTask.__step\u001b[1;34m(***failed resolving arguments***)\u001b[0m\n\u001b[0;32m 273\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 274\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m exc \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 275\u001b[0m \u001b[38;5;66;03m# We use the `send` method directly, because coroutines\u001b[39;00m\n\u001b[0;32m 276\u001b[0m \u001b[38;5;66;03m# don't have `__iter__` and `__next__` methods.\u001b[39;00m\n\u001b[1;32m--> 277\u001b[0m result \u001b[38;5;241m=\u001b[39m coro\u001b[38;5;241m.\u001b[39msend(\u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 278\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 279\u001b[0m result \u001b[38;5;241m=\u001b[39m coro\u001b[38;5;241m.\u001b[39mthrow(exc)\n", + "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\world.py:651\u001b[0m, in \u001b[0;36mWorld.async_run\u001b[1;34m(self, start_ts, end_ts)\u001b[0m\n\u001b[0;32m 648\u001b[0m pbar \u001b[38;5;241m=\u001b[39m tqdm(total\u001b[38;5;241m=\u001b[39mend_ts \u001b[38;5;241m-\u001b[39m start_ts)\n\u001b[0;32m 650\u001b[0m \u001b[38;5;66;03m# allow registration before first opening\u001b[39;00m\n\u001b[1;32m--> 651\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mclock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_time\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart_ts\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[0;32m 652\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdistributed_role \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mFalse\u001b[39;00m:\n\u001b[0;32m 653\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclock_manager\u001b[38;5;241m.\u001b[39mbroadcast(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclock\u001b[38;5;241m.\u001b[39mtime)\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\clock.py:70\u001b[0m, in \u001b[0;36mExternalClock.set_time\u001b[1;34m(self, t)\u001b[0m\n\u001b[0;32m 66\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 67\u001b[0m \u001b[38;5;124;03mNew time is set\u001b[39;00m\n\u001b[0;32m 68\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 69\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m t \u001b[38;5;241m<\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time:\n\u001b[1;32m---> 70\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTime must be > \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m but is \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mt\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 71\u001b[0m \u001b[38;5;66;03m# set time\u001b[39;00m\n\u001b[0;32m 72\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time \u001b[38;5;241m=\u001b[39m t\n", + "\u001b[1;31mValueError\u001b[0m: Time must be > 1553886000.0 but is 1551398399." + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:assume.markets.base_market:1553889600.0 Market result [(datetime.datetime(2019, 3, 29, 20, 0), datetime.datetime(2019, 3, 29, 21, 0), None)] for market EOM are empty!\n" + ] + } + ], "source": [ "import os\n", "\n", - "import RLStrategy\n", + "from assume.strategies.learning_strategies import RLStrategy\n", "\n", "log = logging.getLogger(__name__)\n", "\n", @@ -909,6 +1507,13 @@ " # after the learning is done we make a normal run of the simulation, which equasl a test run\n", " world.run()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -932,7 +1537,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.4" + "version": "3.11.9" }, "nbsphinx": { "execute": "never" From 2f899369e6f3c10babcd945f8e4cfc38e3203b89 Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Mon, 23 Sep 2024 17:31:01 +0200 Subject: [PATCH 03/27] - added results plots and comparison --- ...forcement_learning_algorithm_example.ipynb | 7 + .../04_reinforcement_learning_example.ipynb | 257 +++++++++++++++++- 2 files changed, 249 insertions(+), 15 deletions(-) diff --git a/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb b/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb index fc8ecc8a..5631a93f 100644 --- a/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb +++ b/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb @@ -1448,6 +1448,13 @@ "text": [ "WARNING:assume.markets.base_market:1553889600.0 Market result [(datetime.datetime(2019, 3, 29, 20, 0), datetime.datetime(2019, 3, 29, 21, 0), None)] for market EOM are empty!\n" ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "example_02a_base_6 2019-03-31 00:00:00: : 1556474401.0it [00:29, 53550828.33it/s] \n" + ] } ], "source": [ diff --git a/examples/notebooks/04_reinforcement_learning_example.ipynb b/examples/notebooks/04_reinforcement_learning_example.ipynb index 6e122494..b66a3b41 100644 --- a/examples/notebooks/04_reinforcement_learning_example.ipynb +++ b/examples/notebooks/04_reinforcement_learning_example.ipynb @@ -1280,12 +1280,17 @@ "id": "ZlRnTgCy5d9W" }, "source": [ - "In order to let the simulation run with the integrated learning we need to touch up the main file that runs it in the following way." + "In order to let the simulation run with the integrated learning we need to touch up the main file that runs it in the following way.\n", + "\n", + "In the following cell, we let the example run in case 1 of [1], where we have one big reinforcement learning power plan exists that technically can exert my power.\n", + "\n", + "[1] Harder, N.; Qussous, R.; Weidlich, A. Fit for purpose: Modeling wholesale electricity markets realistically with multi-agent deep reinforcement learning. *Energy and AI* **2023**. 14. 100295. https://doi.org/10.1016/j.egyai.2023.100295.\n", + "\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -1294,6 +1299,73 @@ "id": "ZlWxXxZr54WV", "outputId": "e30f4279-7a4e-4efc-9cfb-61416e4fe2f1" }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'logging' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[1], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m log \u001b[38;5;241m=\u001b[39m \u001b[43mlogging\u001b[49m\u001b[38;5;241m.\u001b[39mgetLogger(\u001b[38;5;18m__name__\u001b[39m)\n\u001b[0;32m 3\u001b[0m csv_path \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124moutputs\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 4\u001b[0m os\u001b[38;5;241m.\u001b[39mmakedirs(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlocal_db\u001b[39m\u001b[38;5;124m\"\u001b[39m, exist_ok\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", + "\u001b[1;31mNameError\u001b[0m: name 'logging' is not defined" + ] + } + ], + "source": [ + "log = logging.getLogger(__name__)\n", + "\n", + "csv_path = \"outputs\"\n", + "os.makedirs(\"local_db\", exist_ok=True)\n", + "\n", + "if __name__ == \"__main__\":\n", + " db_uri = \"sqlite:///local_db/assume_db.db\"\n", + "\n", + " scenario = \"example_02a\"\n", + " study_case = \"base\"\n", + "\n", + " # create world\n", + " world = World(database_uri=db_uri, export_csv_path=csv_path)\n", + "\n", + " # we import our defined bidding strategey class including the learning into the world bidding strategies\n", + " # in the example files we provided the name of the learning bidding strategeis in the input csv is \"pp_learning\"\n", + " # hence we define this strategey to be one of the learning class\n", + " world.bidding_strategies[\"pp_learning\"] = RLStrategy\n", + "\n", + " # then we load the scenario specified above from the respective input files\n", + " load_scenario_folder(\n", + " world,\n", + " inputs_path=inputs_path,\n", + " scenario=scenario,\n", + " study_case=study_case,\n", + " )\n", + "\n", + " # run learning if learning mode is enabled\n", + " # needed as we simulate the modelling horizon multiple times to train reinforcement learning run_learning( world, inputs_path=input_path, scenario=scenario, study_case=study_case, )\n", + "\n", + " if world.learning_config.get(\"learning_mode\", False):\n", + " run_learning(\n", + " world,\n", + " inputs_path=inputs_path,\n", + " scenario=scenario,\n", + " study_case=study_case,\n", + " )\n", + "\n", + " # after the learning is done we make a normal run of the simulation, which equals a test run\n", + " world.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In comparison, the following cell executes example case 2 of [1] where the same capacity of the reinforcement power plant in case 1 is divided into five reinforcement learning power plants, which hence cannot exert market power anymore." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, "outputs": [], "source": [ "log = logging.getLogger(__name__)\n", @@ -1302,19 +1374,64 @@ "os.makedirs(\"local_db\", exist_ok=True)\n", "\n", "if __name__ == \"__main__\":\n", - " \"\"\"\n", - " Available examples:\n", - " - local_db: without database and grafana\n", - " - timescale: with database and grafana (note: you need docker installed)\n", - " \"\"\"\n", - " data_format = \"local_db\" # \"local_db\" or \"timescale\"\n", + " db_uri = \"sqlite:///local_db/assume_db.db\"\n", "\n", - " if data_format == \"local_db\":\n", - " db_uri = \"sqlite:///local_db/assume_db.db\"\n", - " elif data_format == \"timescale\":\n", - " db_uri = \"postgresql://assume:assume@localhost:5432/assume\"\n", + " scenario = \"example_02b\"\n", + " study_case = \"base\"\n", "\n", - " scenario = \"example_02a\"\n", + " # create world\n", + " world = World(database_uri=db_uri, export_csv_path=csv_path)\n", + "\n", + " # we import our defined bidding strategey class including the learning into the world bidding strategies\n", + " # in the example files we provided the name of the learning bidding strategeis in the input csv is \"pp_learning\"\n", + " # hence we define this strategey to be one of the learning class\n", + " world.bidding_strategies[\"pp_learning\"] = RLStrategy\n", + "\n", + " # then we load the scenario specified above from the respective input files\n", + " load_scenario_folder(\n", + " world,\n", + " inputs_path=inputs_path,\n", + " scenario=scenario,\n", + " study_case=study_case,\n", + " )\n", + "\n", + " # run learning if learning mode is enabled\n", + " # needed as we simulate the modelling horizon multiple times to train reinforcement learning run_learning( world, inputs_path=input_path, scenario=scenario, study_case=study_case, )\n", + "\n", + " if world.learning_config.get(\"learning_mode\", False):\n", + " run_learning(\n", + " world,\n", + " inputs_path=inputs_path,\n", + " scenario=scenario,\n", + " study_case=study_case,\n", + " )\n", + "\n", + " # after the learning is done we make a normal run of the simulation, which equals a test run\n", + " world.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following simulation represents case 3, respectively." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "log = logging.getLogger(__name__)\n", + "\n", + "csv_path = \"outputs\"\n", + "os.makedirs(\"local_db\", exist_ok=True)\n", + "\n", + "if __name__ == \"__main__\":\n", + " db_uri = \"sqlite:///local_db/assume_db.db\"\n", + "\n", + " scenario = \"example_02c\"\n", " study_case = \"base\"\n", "\n", " # create world\n", @@ -1348,12 +1465,122 @@ " world.run()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Result Plotting " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from functools import partial\n", + "\n", + "import matplotlib.pyplot as plt\n", + "from sqlalchemy import create_engine\n", + "\n", + "os.makedirs(\"outputs\", exist_ok=True)\n", + "\n", + "engine = create_engine(db_uri)\n", + "\n", + "\n", + "sql = \"\"\"\n", + "SELECT ident, simulation,\n", + "sum(round(CAST(value AS numeric), 2)) FILTER (WHERE variable = 'total_cost') as total_cost,\n", + "sum(round(CAST(value AS numeric), 2)*1000) FILTER (WHERE variable = 'total_volume') as total_volume,\n", + "sum(round(CAST(value AS numeric), 2)) FILTER (WHERE variable = 'avg_price') as average_cost\n", + "FROM kpis\n", + "where variable in ('total_cost', 'total_volume', 'avg_price')\n", + "and simulation in ('example_02a', 'example_02b', 'example_02c')\n", + "group by simulation, ident ORDER BY simulation\n", + "\"\"\"\n", + "kpis = pd.read_sql(sql, engine)\n", + "\n", + "# sort the dataframe to have sho, bo and lo case in the right order\n", + "\n", + "# sort kpis in the order sho, bo, lo\n", + "kpis = kpis.sort_values(\n", + " by=\"simulation\",\n", + " key=lambda x: x.map({\"example_02a\": 1, \"example_02b\": 2, \"example_02c\": 3}),\n", + ")\n", + "\n", + "kpis[\"total_volume\"] /= 1e9\n", + "kpis[\"total_cost\"] /= 1e6\n", + "savefig = partial(plt.savefig, transparent=False, bbox_inches=\"tight\")\n", + "\n", + "xticks = kpis[\"simulation\"].unique()\n", + "plt.style.use(\"seaborn-v0_8\")\n", + "\n", + "fig, ax = plt.subplots(1, 1, figsize=(10, 6))\n", + "\n", + "ax2 = ax.twinx() # Create another axes that shares the same x-axis as ax.\n", + "\n", + "width = 0.4\n", + "\n", + "kpis.total_volume.plot(kind=\"bar\", ax=ax, width=width, position=1, color=\"royalblue\")\n", + "kpis.total_cost.plot(kind=\"bar\", ax=ax2, width=width, position=0, color=\"green\")\n", + "\n", + "# set x-achxis limits\n", + "ax.set_xlim(-0.6, len(kpis[\"simulation\"]) - 0.4)\n", + "\n", + "# set y-achxis limits\n", + "ax.set_ylim(0, max(kpis.total_volume) * 1.1 + 0.1)\n", + "ax2.set_ylim(0, max(kpis.total_cost) * 1.1 + 0.1)\n", + "\n", + "ax.set_ylabel(\"Total Volume (GWh)\")\n", + "ax2.set_ylabel(\"Total Cost (M€)\")\n", + "\n", + "ax.set_xticklabels(xticks, rotation=45)\n", + "ax.set_xlabel(\"Simulation\")\n", + "\n", + "ax.legend([\"Total Volume\"], loc=\"upper left\")\n", + "ax2.legend([\"Total Cost\"], loc=\"upper right\")\n", + "\n", + "plt.title(\"Total Volume and Total Cost for each Simulation\")\n", + "\n", + "savefig(\"outputs/tutorial_6_overview.png\")\n", + "plt.show()" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "import seaborn as sns\n", + "\n", + "sql = \"\"\"\n", + "SELECT\n", + " product_start AS \"time\",\n", + " price AS \"Price\",\n", + " node\n", + "FROM market_meta\n", + "WHERE simulation in ('example_02a', 'example_02b', 'example_02c') AND market_id in ('EOM') \n", + "GROUP BY market_id, simulation, product_start, price, node\n", + "ORDER BY product_start, node\n", + "\n", + "\"\"\"\n", + "\n", + "df = pd.read_sql(sql, engine)\n", + "\n", + "# Convert the 'time' column to datetime\n", + "df[\"time\"] = pd.to_datetime(df[\"time\"])\n", + "\n", + "# Plot the data\n", + "plt.figure(figsize=(14, 7))\n", + "sns.lineplot(data=df, x=\"time\", y=\"Price\", hue=\"simulation\")\n", + "plt.title(\"Price over Time for Different Simulations\")\n", + "plt.xlabel(\"Time\")\n", + "plt.ylabel(\"Price\")\n", + "plt.legend(title=\"Simulation\")\n", + "plt.show()" + ] } ], "metadata": { @@ -1377,7 +1604,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.7" + "version": "3.11.9" }, "nbsphinx": { "execute": "never" From ed3e3e9e477f165cf6609e2ac02556cfb3e7fd17 Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Tue, 24 Sep 2024 09:56:19 +0200 Subject: [PATCH 04/27] - add result plots to RL tutorial --- .../04_reinforcement_learning_example.ipynb | 923 ++++++++++++++++-- 1 file changed, 826 insertions(+), 97 deletions(-) diff --git a/examples/notebooks/04_reinforcement_learning_example.ipynb b/examples/notebooks/04_reinforcement_learning_example.ipynb index b66a3b41..224bc5ba 100644 --- a/examples/notebooks/04_reinforcement_learning_example.ipynb +++ b/examples/notebooks/04_reinforcement_learning_example.ipynb @@ -133,7 +133,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -144,7 +144,15 @@ "languageId": "shellscript" } }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ERROR: Invalid requirement: \"'assume-framework[learning]'\"\n" + ] + } + ], "source": [ "!pip install 'assume-framework[learning]'" ] @@ -169,7 +177,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -180,7 +188,15 @@ "languageId": "shellscript" } }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Cloning into 'assume-repo'...\n" + ] + } + ], "source": [ "!git clone https://github.com/assume-framework/assume.git assume-repo" ] @@ -198,7 +214,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -209,7 +225,15 @@ "languageId": "shellscript" } }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "^C\n" + ] + } + ], "source": [ "!cd assume-repo && assume -s example_01b -db \"sqlite:///./examples/local_db/assume_db_example_01b.db\"" ] @@ -225,7 +249,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -259,7 +283,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "id": "xUsbeZdPJ_2Q" }, @@ -273,7 +297,6 @@ "import numpy as np\n", "import pandas as pd\n", "import torch as th\n", - "import yaml\n", "\n", "from assume import World\n", "from assume.common.base import LearningStrategy, SupportsMinMax\n", @@ -285,7 +308,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": { "id": "UXYSesx4Ifp5" }, @@ -305,11 +328,6 @@ " self.max_bid_price = kwargs.get(\"max_bid_price\", 100)\n", " self.max_demand = kwargs.get(\"max_demand\", 10e3)\n", "\n", - " # defines the observation space\n", - " self.obs_dim = 50\n", - " # defines the action space\n", - " self.act_dim = 2\n", - "\n", " # tells us whether we are training the agents or just executing per-learnind stategies\n", " self.learning_mode = kwargs.get(\"learning_mode\", False)\n", " self.perform_evaluation = kwargs.get(\"perform_evaluation\", False)\n", @@ -382,7 +400,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": { "id": "iApbQsg5x_u2" }, @@ -437,7 +455,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": { "id": "_4cJ8Y8uvMgV" }, @@ -498,7 +516,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": { "id": "0ww-L9fABnw3" }, @@ -531,17 +549,17 @@ " # 1.1 Get the Observations, which are the basis of the action decision\n", " # =============================================================================\n", " # residual load forecast\n", - " scaling_factor_res_load = None # TODO\n", + " # residual load forecast\n", + " scaling_factor_res_load = self.max_demand\n", "\n", " # price forecast\n", - " scaling_factor_price = None # TODO\n", + " scaling_factor_price = self.max_bid_price\n", "\n", - " # total capacity and marginal cost\n", - " scaling_factor_total_capacity = None # TODO\n", + " # total capacity\n", + " scaling_factor_total_capacity = unit.max_power\n", "\n", " # marginal cost\n", - " # Obs[2*foresight+1:2*foresight+2]\n", - " scaling_factor_marginal_cost = None # TODO\n", + " scaling_factor_marginal_cost = self.max_bid_price\n", "\n", " # checks if we are at end of simulation horizon, since we need to change the forecast then\n", " # for residual load and price forecast and scale them\n", @@ -638,7 +656,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -647,7 +665,18 @@ "id": "PYoI3ncSKJSX", "outputId": "4b4341d7-5a21-49c4-ee25-b8c55f693cd1" }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "'\\n#scaling factors for all observations\\n#residual load forecast\\nscaling_factor_res_load = self.max_demand\\n\\n# price forecast\\nscaling_factor_price = self.max_bid_price\\n\\n# total capacity\\nscaling_factor_total_capacity = unit.max_power\\n\\n# marginal cost\\nscaling_factor_marginal_cost = self.max_bid_price\\n'" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "\"\"\"\n", "#scaling factors for all observations\n", @@ -699,7 +728,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": { "id": "8ehlm5Z9CbRw" }, @@ -735,7 +764,7 @@ " # 2.1 Get Actions and handle exploration\n", " # =============================================================================\n", " # ==> YOUR CODE HERE\n", - " base_bid = None # TODO\n", + " base_bid = next_observation[-1] # = marginal_costs\n", "\n", " # add niose to the last dimension of the observation\n", " # needs to be adjusted if observation space is changed, because only makes sense\n", @@ -776,7 +805,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -785,7 +814,18 @@ "id": "rfXJBGOKxbk7", "outputId": "06f76c52-e215-4998-8f61-f7492b880e4d" }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "'\\n#base_bid = marginal costs\\nbase_bid = next_observation[-1] # = marginal_costs\\n'" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "\"\"\"\n", "#base_bid = marginal costs\n", @@ -812,7 +852,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": { "id": "Y81HzlkjNHJ0" }, @@ -871,15 +911,17 @@ " # we can use our domain knowledge to guide the bid formulation\n", " bid_prices = actions * self.max_bid_price\n", "\n", - " # 3.1 formulate the bids for Pmin\n", - " # Pmin, the minium run capacity is the inflexible part of the bid, which should always be accepted\n", - " bid_quantity_inflex = None # TODO\n", - " bid_price_inflex = None # TODO\n", + " # calculate actual bids\n", + " # rescale actions to actual prices\n", + " bid_prices = actions * self.max_bid_price\n", + "\n", + " # calculate inflexible part of the bid\n", + " bid_quantity_inflex = min_power\n", + " bid_price_inflex = min(bid_prices)\n", "\n", - " # 3.1 formulate the bids for Pmax - Pmin\n", - " # Pmin, the minium run capacity is the inflexible part of the bid, which should always be accepted\n", - " bid_quantity_flex = None # TODO\n", - " bid_price_flex = None # TODO\n", + " # calculate flexible part of the bid\n", + " bid_quantity_flex = max_power - bid_quantity_inflex\n", + " bid_price_flex = max(bid_prices)\n", "\n", " # actually formulate bids in orderbook format\n", " bids = [\n", @@ -927,7 +969,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -936,7 +978,18 @@ "id": "wB7X-pFkCje3", "outputId": "ff905a9d-e3f2-4487-9e8a-9dbf4e855ab7" }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "'\\n#calculate actual bids\\n#rescale actions to actual prices\\nbid_prices = actions * self.max_bid_price\\n\\n#calculate inflexible part of the bid\\nbid_quantity_inflex = min_power\\nbid_price_inflex = min(bid_prices)\\n\\n#calculate flexible part of the bid\\nbid_quantity_flex = max_power - bid_quantity_inflex\\nbid_price_flex = max(bid_prices)\\n'" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "\"\"\"\n", "#calculate actual bids\n", @@ -1002,7 +1055,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": { "id": "U9HX41mODuBU" }, @@ -1099,9 +1152,9 @@ " # in the learning process, so we add a regret term to the reward, which is the opportunity cost\n", " # define the reward and scale it\n", "\n", - " scaling = None # TODO\n", - " regret_scale = None # TODO\n", - " reward = None # TODO\n", + " scaling = 0.1 / unit.max_power\n", + " regret_scale = 0.2\n", + " reward = float(profit - regret_scale * opportunity_cost) * scaling\n", "\n", " # store results in unit outputs which are written to database by unit operator\n", " unit.outputs[\"profit\"].loc[start:end_excl] += profit\n", @@ -1140,7 +1193,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -1149,7 +1202,18 @@ "id": "e1XdVXPSCo_k", "outputId": "585d94a5-7475-4e96-d0a1-5e82b711c6a5" }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "'\\nscaling = 0.1 / unit.max_power\\nregret_scale = 0.2\\nreward = float(profit - regret_scale * opportunity_cost) * scaling\\n'" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "\"\"\"\n", "scaling = 0.1 / unit.max_power\n", @@ -1172,7 +1236,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "metadata": { "id": "ZwVtpK3B5gR6" }, @@ -1227,7 +1291,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "metadata": { "id": "moZ_UD7FfkOh" }, @@ -1235,12 +1299,12 @@ "source": [ "learning_config = {\n", " \"continue_learning\": False,\n", - " \"trained_policies_save_path\": \"None\",\n", + " \"trained_policies_save_path\": \"null\",\n", " \"max_bid_price\": 100,\n", " \"algorithm\": \"matd3\",\n", " \"learning_rate\": 0.001,\n", - " \"training_episodes\": 100,\n", - " \"episodes_collecting_initial_experience\": 5,\n", + " \"training_episodes\": 10,\n", + " \"episodes_collecting_initial_experience\": 3,\n", " \"train_freq\": \"24h\",\n", " \"gradient_steps\": -1,\n", " \"batch_size\": 256,\n", @@ -1253,27 +1317,6 @@ "}" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "iPz8v4N5hpfr" - }, - "outputs": [], - "source": [ - "# Read the YAML file\n", - "with open(f\"{inputs_path}/example_02a/config.yaml\") as file:\n", - " data = yaml.safe_load(file)\n", - "\n", - "# store our modifications to the config file\n", - "data[\"base\"][\"learning_mode\"] = True\n", - "data[\"base\"][\"learning_config\"] = learning_config\n", - "\n", - "# Write the modified data back to the file\n", - "with open(f\"{inputs_path}/example_02a/config.yaml\", \"w\") as file:\n", - " yaml.safe_dump(data, file)" - ] - }, { "cell_type": "markdown", "metadata": { @@ -1290,7 +1333,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 32, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -1301,14 +1344,44 @@ }, "outputs": [ { - "ename": "NameError", - "evalue": "name 'logging' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[1], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m log \u001b[38;5;241m=\u001b[39m \u001b[43mlogging\u001b[49m\u001b[38;5;241m.\u001b[39mgetLogger(\u001b[38;5;18m__name__\u001b[39m)\n\u001b[0;32m 3\u001b[0m csv_path \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124moutputs\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 4\u001b[0m os\u001b[38;5;241m.\u001b[39mmakedirs(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlocal_db\u001b[39m\u001b[38;5;124m\"\u001b[39m, exist_ok\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n", - "\u001b[1;31mNameError\u001b[0m: name 'logging' is not defined" + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.world:connected to db\n", + "INFO:assume.scenario.loader_csv:Starting Scenario example_02a/base from ../inputs\n", + "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.scenario.loader_csv:Downsampling demand_df successful.\n", + "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", + "INFO:assume.scenario.loader_csv:availability_df not found. Returning None\n", + "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", + "INFO:assume.scenario.loader_csv:price_forecasts not found. Returning None\n", + "INFO:assume.scenario.loader_csv:temperature not found. Returning None\n", + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "example_02a_base_1 2019-03-31 00:00:00: : 2592001.0it [00:29, 88492.68it/s]\n", + "example_02a_base_2 2019-03-31 00:00:00: : 2592001.0it [00:31, 83508.91it/s] \n", + "example_02a_base_3 2019-03-31 00:00:00: : 2592001.0it [00:30, 83653.36it/s] \n", + "example_02a_base_4 2019-03-31 00:00:00: : 2592001.0it [00:30, 84041.85it/s] \n", + "example_02a_base_5 2019-03-31 00:00:00: : 2592001.0it [00:30, 85265.01it/s] \n", + "Training Episodes: 100%|██████████| 5/5 [02:32<00:00, 30.56s/it]\n", + "example_02a_base 2019-03-31 00:00:00: : 2592001.0it [00:35, 73343.42it/s] \n" ] } ], @@ -1364,9 +1437,261 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.world:connected to db\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Training Episodes: 0%| | 0/5 [00:00 wait_for=>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", + "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", + "handle: )>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 349, in __wakeup\n", + " future.result()\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py\", line 198, in result\n", + " raise exc\n", + "asyncio.exceptions.CancelledError\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\events.py\", line 84, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py\", line 434, in raise_exceptions\n", + " raise fut.exception()\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 279, in __step\n", + " result = coro.throw(exc)\n", + " ^^^^^^^^^^^^^^^\n", + "RuntimeError: cannot reuse already awaited coroutine\n", + "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", + "handle: )>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 349, in __wakeup\n", + " future.result()\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py\", line 198, in result\n", + " raise exc\n", + "asyncio.exceptions.CancelledError\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\events.py\", line 84, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py\", line 434, in raise_exceptions\n", + " raise fut.exception()\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 279, in __step\n", + " result = coro.throw(exc)\n", + " ^^^^^^^^^^^^^^^\n", + "RuntimeError: cannot reuse already awaited coroutine\n", + "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", + "handle: )>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 349, in __wakeup\n", + " future.result()\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py\", line 198, in result\n", + " raise exc\n", + "asyncio.exceptions.CancelledError\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\events.py\", line 84, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py\", line 434, in raise_exceptions\n", + " raise fut.exception()\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 279, in __step\n", + " result = coro.throw(exc)\n", + " ^^^^^^^^^^^^^^^\n", + "RuntimeError: cannot reuse already awaited coroutine\n", + "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", + "handle: )>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 349, in __wakeup\n", + " future.result()\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py\", line 198, in result\n", + " raise exc\n", + "asyncio.exceptions.CancelledError\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\events.py\", line 84, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py\", line 434, in raise_exceptions\n", + " raise fut.exception()\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 279, in __step\n", + " result = coro.throw(exc)\n", + " ^^^^^^^^^^^^^^^\n", + "RuntimeError: cannot reuse already awaited coroutine\n", + "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", + "handle: )>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 349, in __wakeup\n", + " future.result()\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py\", line 198, in result\n", + " raise exc\n", + "asyncio.exceptions.CancelledError\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\events.py\", line 84, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py\", line 434, in raise_exceptions\n", + " raise fut.exception()\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 279, in __step\n", + " result = coro.throw(exc)\n", + " ^^^^^^^^^^^^^^^\n", + "RuntimeError: cannot reuse already awaited coroutine\n", + "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", + "handle: )>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 349, in __wakeup\n", + " future.result()\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py\", line 198, in result\n", + " raise exc\n", + "asyncio.exceptions.CancelledError\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\events.py\", line 84, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py\", line 434, in raise_exceptions\n", + " raise fut.exception()\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 279, in __step\n", + " result = coro.throw(exc)\n", + " ^^^^^^^^^^^^^^^\n", + "RuntimeError: cannot reuse already awaited coroutine\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:3812: RuntimeWarning: coroutine 'MarketRole.opening' was never awaited\n", + " raise KeyError(key) from err\n", + "RuntimeWarning: Enable tracemalloc to get the object allocation traceback\n", + "c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:3812: RuntimeWarning: coroutine 'UnitsOperator.register_market' was never awaited\n", + " raise KeyError(key) from err\n", + "RuntimeWarning: Enable tracemalloc to get the object allocation traceback\n", + "Training Episodes: 20%|██ | 1/5 [00:32<02:11, 32.77s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:mango.agent.core:Agent eom_de: Caught the following exception in _check_inbox: \n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Training Episodes: 20%|██ | 1/5 [00:32<02:11, 32.81s/it]\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:3805\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 3804\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m-> 3805\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_engine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_loc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcasted_key\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 3806\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n", + "File \u001b[1;32mindex.pyx:167\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", + "File \u001b[1;32mindex.pyx:196\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", + "File \u001b[1;32mpandas\\\\_libs\\\\hashtable_class_helper.pxi:7081\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", + "File \u001b[1;32mpandas\\\\_libs\\\\hashtable_class_helper.pxi:7089\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", + "\u001b[1;31mKeyError\u001b[0m: 'energy_cashflow'", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\frame.py:4485\u001b[0m, in \u001b[0;36mDataFrame._set_item_mgr\u001b[1;34m(self, key, value, refs)\u001b[0m\n\u001b[0;32m 4484\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m-> 4485\u001b[0m loc \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_info_axis\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_loc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 4486\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m:\n\u001b[0;32m 4487\u001b[0m \u001b[38;5;66;03m# This item wasn't present, just insert at end\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:3812\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 3811\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m InvalidIndexError(key)\n\u001b[1;32m-> 3812\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01merr\u001b[39;00m\n\u001b[0;32m 3813\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m:\n\u001b[0;32m 3814\u001b[0m \u001b[38;5;66;03m# If we have a listlike key, _check_indexing_error will raise\u001b[39;00m\n\u001b[0;32m 3815\u001b[0m \u001b[38;5;66;03m# InvalidIndexError. Otherwise we fall through and re-raise\u001b[39;00m\n\u001b[0;32m 3816\u001b[0m \u001b[38;5;66;03m# the TypeError.\u001b[39;00m\n", + "\u001b[1;31mKeyError\u001b[0m: 'energy_cashflow'", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[34], line 32\u001b[0m\n\u001b[0;32m 28\u001b[0m \u001b[38;5;66;03m# run learning if learning mode is enabled\u001b[39;00m\n\u001b[0;32m 29\u001b[0m \u001b[38;5;66;03m# needed as we simulate the modelling horizon multiple times to train reinforcement learning run_learning( world, inputs_path=input_path, scenario=scenario, study_case=study_case, )\u001b[39;00m\n\u001b[0;32m 31\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m world\u001b[38;5;241m.\u001b[39mlearning_config\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlearning_mode\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[1;32m---> 32\u001b[0m \u001b[43mrun_learning\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 33\u001b[0m \u001b[43m \u001b[49m\u001b[43mworld\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 34\u001b[0m \u001b[43m \u001b[49m\u001b[43minputs_path\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minputs_path\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 35\u001b[0m \u001b[43m \u001b[49m\u001b[43mscenario\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscenario\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 36\u001b[0m \u001b[43m \u001b[49m\u001b[43mstudy_case\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstudy_case\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 37\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 39\u001b[0m \u001b[38;5;66;03m# after the learning is done we make a normal run of the simulation, which equals a test run\u001b[39;00m\n\u001b[0;32m 40\u001b[0m world\u001b[38;5;241m.\u001b[39mrun()\n", + "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\scenario\\loader_csv.py:959\u001b[0m, in \u001b[0;36mrun_learning\u001b[1;34m(world, inputs_path, scenario, study_case, verbose)\u001b[0m\n\u001b[0;32m 953\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m episode \u001b[38;5;129;01min\u001b[39;00m tqdm(\n\u001b[0;32m 954\u001b[0m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;241m1\u001b[39m, world\u001b[38;5;241m.\u001b[39mlearning_role\u001b[38;5;241m.\u001b[39mtraining_episodes \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m),\n\u001b[0;32m 955\u001b[0m desc\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTraining Episodes\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 956\u001b[0m ):\n\u001b[0;32m 957\u001b[0m \u001b[38;5;66;03m# TODO normally, loading twice should not create issues, somehow a scheduling issue is raised currently\u001b[39;00m\n\u001b[0;32m 958\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m episode \u001b[38;5;241m!=\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[1;32m--> 959\u001b[0m \u001b[43msetup_world\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 960\u001b[0m \u001b[43m \u001b[49m\u001b[43mworld\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mworld\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 961\u001b[0m \u001b[43m \u001b[49m\u001b[43mscenario_data\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscenario_data\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 962\u001b[0m \u001b[43m \u001b[49m\u001b[43mstudy_case\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstudy_case\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 963\u001b[0m \u001b[43m \u001b[49m\u001b[43mepisode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mepisode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 964\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 966\u001b[0m \u001b[38;5;66;03m# -----------------------------------------\u001b[39;00m\n\u001b[0;32m 967\u001b[0m \u001b[38;5;66;03m# Give the newly initliazed learning role the needed information across episodes\u001b[39;00m\n\u001b[0;32m 968\u001b[0m world\u001b[38;5;241m.\u001b[39mlearning_role\u001b[38;5;241m.\u001b[39mload_inter_episodic_data(inter_episodic_data)\n", + "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\scenario\\loader_csv.py:706\u001b[0m, in \u001b[0;36msetup_world\u001b[1;34m(world, scenario_data, study_case, perform_evaluation, terminate_learning, episode, eval_episode)\u001b[0m\n\u001b[0;32m 697\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msetup_world\u001b[39m(\n\u001b[0;32m 698\u001b[0m world: World,\n\u001b[0;32m 699\u001b[0m scenario_data: \u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, \u001b[38;5;28mobject\u001b[39m],\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 704\u001b[0m eval_episode: \u001b[38;5;28mint\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m,\n\u001b[0;32m 705\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 706\u001b[0m \u001b[43mworld\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_until_complete\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 707\u001b[0m \u001b[43m \u001b[49m\u001b[43masync_setup_world\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 708\u001b[0m \u001b[43m \u001b[49m\u001b[43mworld\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mworld\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 709\u001b[0m \u001b[43m \u001b[49m\u001b[43mscenario_data\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscenario_data\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 710\u001b[0m \u001b[43m \u001b[49m\u001b[43mstudy_case\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstudy_case\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 711\u001b[0m \u001b[43m \u001b[49m\u001b[43mperform_evaluation\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mperform_evaluation\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 712\u001b[0m \u001b[43m \u001b[49m\u001b[43mterminate_learning\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mterminate_learning\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 713\u001b[0m \u001b[43m \u001b[49m\u001b[43mepisode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mepisode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 714\u001b[0m \u001b[43m \u001b[49m\u001b[43meval_episode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43meval_episode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 715\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 716\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\nest_asyncio.py:92\u001b[0m, in \u001b[0;36m_patch_loop..run_until_complete\u001b[1;34m(self, future)\u001b[0m\n\u001b[0;32m 90\u001b[0m f\u001b[38;5;241m.\u001b[39m_log_destroy_pending \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m 91\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m f\u001b[38;5;241m.\u001b[39mdone():\n\u001b[1;32m---> 92\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run_once\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 93\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_stopping:\n\u001b[0;32m 94\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\nest_asyncio.py:133\u001b[0m, in \u001b[0;36m_patch_loop.._run_once\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 130\u001b[0m curr_task \u001b[38;5;241m=\u001b[39m curr_tasks\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 132\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 133\u001b[0m \u001b[43mhandle\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 134\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m 135\u001b[0m \u001b[38;5;66;03m# restore the current task\u001b[39;00m\n\u001b[0;32m 136\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m curr_task \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\events.py:84\u001b[0m, in \u001b[0;36mHandle._run\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 82\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_run\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[0;32m 83\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m---> 84\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_callback\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_args\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 85\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (\u001b[38;5;167;01mSystemExit\u001b[39;00m, \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m):\n\u001b[0;32m 86\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py:434\u001b[0m, in \u001b[0;36mAgent.raise_exceptions\u001b[1;34m(self, fut)\u001b[0m\n\u001b[0;32m 430\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m fut\u001b[38;5;241m.\u001b[39mexception() \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 431\u001b[0m logger\u001b[38;5;241m.\u001b[39merror(\n\u001b[0;32m 432\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAgent \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maid\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m: Caught the following exception in _check_inbox: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfut\u001b[38;5;241m.\u001b[39mexception()\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 433\u001b[0m )\n\u001b[1;32m--> 434\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m fut\u001b[38;5;241m.\u001b[39mexception()\n", + "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\world.py:686\u001b[0m, in \u001b[0;36mWorld.run\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 683\u001b[0m end_ts \u001b[38;5;241m=\u001b[39m datetime2timestamp(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mend)\n\u001b[0;32m 685\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 686\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_until_complete\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 687\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43masync_run\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart_ts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstart_ts\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mend_ts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mend_ts\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 688\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 689\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m:\n\u001b[0;32m 690\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\nest_asyncio.py:92\u001b[0m, in \u001b[0;36m_patch_loop..run_until_complete\u001b[1;34m(self, future)\u001b[0m\n\u001b[0;32m 90\u001b[0m f\u001b[38;5;241m.\u001b[39m_log_destroy_pending \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m 91\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m f\u001b[38;5;241m.\u001b[39mdone():\n\u001b[1;32m---> 92\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run_once\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 93\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_stopping:\n\u001b[0;32m 94\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\nest_asyncio.py:133\u001b[0m, in \u001b[0;36m_patch_loop.._run_once\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 130\u001b[0m curr_task \u001b[38;5;241m=\u001b[39m curr_tasks\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 132\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 133\u001b[0m \u001b[43mhandle\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 134\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m 135\u001b[0m \u001b[38;5;66;03m# restore the current task\u001b[39;00m\n\u001b[0;32m 136\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m curr_task \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\events.py:84\u001b[0m, in \u001b[0;36mHandle._run\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 82\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_run\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[0;32m 83\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m---> 84\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_callback\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_args\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 85\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (\u001b[38;5;167;01mSystemExit\u001b[39;00m, \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m):\n\u001b[0;32m 86\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py:360\u001b[0m, in \u001b[0;36mTask.__wakeup\u001b[1;34m(self, future)\u001b[0m\n\u001b[0;32m 352\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__step(exc)\n\u001b[0;32m 353\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 354\u001b[0m \u001b[38;5;66;03m# Don't pass the value of `future.result()` explicitly,\u001b[39;00m\n\u001b[0;32m 355\u001b[0m \u001b[38;5;66;03m# as `Future.__iter__` and `Future.__await__` don't need it.\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 358\u001b[0m \u001b[38;5;66;03m# instead of `__next__()`, which is slower for futures\u001b[39;00m\n\u001b[0;32m 359\u001b[0m \u001b[38;5;66;03m# that return non-generator iterators from their `__iter__`.\u001b[39;00m\n\u001b[1;32m--> 360\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__step\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 361\u001b[0m \u001b[38;5;28mself\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py:277\u001b[0m, in \u001b[0;36mTask.__step\u001b[1;34m(***failed resolving arguments***)\u001b[0m\n\u001b[0;32m 273\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 274\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m exc \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 275\u001b[0m \u001b[38;5;66;03m# We use the `send` method directly, because coroutines\u001b[39;00m\n\u001b[0;32m 276\u001b[0m \u001b[38;5;66;03m# don't have `__iter__` and `__next__` methods.\u001b[39;00m\n\u001b[1;32m--> 277\u001b[0m result \u001b[38;5;241m=\u001b[39m coro\u001b[38;5;241m.\u001b[39msend(\u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 278\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 279\u001b[0m result \u001b[38;5;241m=\u001b[39m coro\u001b[38;5;241m.\u001b[39mthrow(exc)\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py:450\u001b[0m, in \u001b[0;36mAgent._check_inbox\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 447\u001b[0m priority, content, meta \u001b[38;5;241m=\u001b[39m message\n\u001b[0;32m 448\u001b[0m meta[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpriority\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m priority\n\u001b[1;32m--> 450\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcontent\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcontent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmeta\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmeta\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 452\u001b[0m \u001b[38;5;66;03m# signal to the Queue that the message is handled\u001b[39;00m\n\u001b[0;32m 453\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minbox\u001b[38;5;241m.\u001b[39mtask_done()\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\role.py:525\u001b[0m, in \u001b[0;36mRoleAgent.handle_message\u001b[1;34m(self, content, meta)\u001b[0m\n\u001b[0;32m 524\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mhandle_message\u001b[39m(\u001b[38;5;28mself\u001b[39m, content, meta: Dict[\u001b[38;5;28mstr\u001b[39m, Any]):\n\u001b[1;32m--> 525\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_role_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcontent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmeta\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\role.py:401\u001b[0m, in \u001b[0;36mRoleContext.handle_message\u001b[1;34m(self, content, meta)\u001b[0m\n\u001b[0;32m 392\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mhandle_message\u001b[39m(\u001b[38;5;28mself\u001b[39m, content, meta: Dict[\u001b[38;5;28mstr\u001b[39m, Any]):\n\u001b[0;32m 393\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Handle an incoming message, delegating it to all applicable subscribers\u001b[39;00m\n\u001b[0;32m 394\u001b[0m \u001b[38;5;124;03m for role, message_condition, method, _ in self._message_subs:\u001b[39;00m\n\u001b[0;32m 395\u001b[0m \u001b[38;5;124;03m if self._is_role_active(role) and message_condition(content, meta):\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 399\u001b[0m \u001b[38;5;124;03m :param meta: meta\u001b[39;00m\n\u001b[0;32m 400\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 401\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_role_handler\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcontent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmeta\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\role.py:239\u001b[0m, in \u001b[0;36mRoleHandler.handle_message\u001b[1;34m(self, content, meta)\u001b[0m\n\u001b[0;32m 237\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m role, message_condition, method, _ \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_message_subs:\n\u001b[0;32m 238\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_is_role_active(role) \u001b[38;5;129;01mand\u001b[39;00m message_condition(content, meta):\n\u001b[1;32m--> 239\u001b[0m \u001b[43mmethod\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcontent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmeta\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\common\\units_operator.py:211\u001b[0m, in \u001b[0;36mUnitsOperator.handle_market_feedback\u001b[1;34m(self, content, meta)\u001b[0m\n\u001b[0;32m 209\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mvalid_orders[marketconfig\u001b[38;5;241m.\u001b[39mproduct_type]\u001b[38;5;241m.\u001b[39mextend(orderbook)\n\u001b[0;32m 210\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mset_unit_dispatch(orderbook, marketconfig)\n\u001b[1;32m--> 211\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwrite_actual_dispatch\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmarketconfig\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mproduct_type\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\common\\units_operator.py:348\u001b[0m, in \u001b[0;36mUnitsOperator.write_actual_dispatch\u001b[1;34m(self, product_type)\u001b[0m\n\u001b[0;32m 345\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[0;32m 346\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlast_sent_dispatch[product_type] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcontext\u001b[38;5;241m.\u001b[39mcurrent_timestamp\n\u001b[1;32m--> 348\u001b[0m market_dispatch, unit_dispatch_dfs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_actual_dispatch\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 349\u001b[0m \u001b[43m \u001b[49m\u001b[43mproduct_type\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlast\u001b[49m\n\u001b[0;32m 350\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 352\u001b[0m now \u001b[38;5;241m=\u001b[39m timestamp2datetime(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcontext\u001b[38;5;241m.\u001b[39mcurrent_timestamp)\n\u001b[0;32m 353\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mvalid_orders[product_type] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlist\u001b[39m(\n\u001b[0;32m 354\u001b[0m \u001b[38;5;28mfilter\u001b[39m(\n\u001b[0;32m 355\u001b[0m \u001b[38;5;28;01mlambda\u001b[39;00m x: x[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mend_time\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m>\u001b[39m now,\n\u001b[0;32m 356\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mvalid_orders[product_type],\n\u001b[0;32m 357\u001b[0m )\n\u001b[0;32m 358\u001b[0m )\n", + "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\common\\units_operator.py:327\u001b[0m, in \u001b[0;36mUnitsOperator.get_actual_dispatch\u001b[1;34m(self, product_type, last)\u001b[0m\n\u001b[0;32m 325\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m output \u001b[38;5;129;01min\u001b[39;00m valid_outputs:\n\u001b[0;32m 326\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m output \u001b[38;5;129;01min\u001b[39;00m key:\n\u001b[1;32m--> 327\u001b[0m \u001b[43mdata\u001b[49m\u001b[43m[\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m]\u001b[49m \u001b[38;5;241m=\u001b[39m unit\u001b[38;5;241m.\u001b[39moutputs[key][start:end]\n\u001b[0;32m 329\u001b[0m data[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124munit\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m unit_id\n\u001b[0;32m 330\u001b[0m unit_dispatch_dfs\u001b[38;5;241m.\u001b[39mappend(data)\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\frame.py:4311\u001b[0m, in \u001b[0;36mDataFrame.__setitem__\u001b[1;34m(self, key, value)\u001b[0m\n\u001b[0;32m 4308\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_setitem_array([key], value)\n\u001b[0;32m 4309\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 4310\u001b[0m \u001b[38;5;66;03m# set column\u001b[39;00m\n\u001b[1;32m-> 4311\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_set_item\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\frame.py:4538\u001b[0m, in \u001b[0;36mDataFrame._set_item\u001b[1;34m(self, key, value)\u001b[0m\n\u001b[0;32m 4535\u001b[0m value \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mtile(value, (\u001b[38;5;28mlen\u001b[39m(existing_piece\u001b[38;5;241m.\u001b[39mcolumns), \u001b[38;5;241m1\u001b[39m))\u001b[38;5;241m.\u001b[39mT\n\u001b[0;32m 4536\u001b[0m refs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m-> 4538\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_set_item_mgr\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrefs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\frame.py:4488\u001b[0m, in \u001b[0;36mDataFrame._set_item_mgr\u001b[1;34m(self, key, value, refs)\u001b[0m\n\u001b[0;32m 4485\u001b[0m loc \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_info_axis\u001b[38;5;241m.\u001b[39mget_loc(key)\n\u001b[0;32m 4486\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m:\n\u001b[0;32m 4487\u001b[0m \u001b[38;5;66;03m# This item wasn't present, just insert at end\u001b[39;00m\n\u001b[1;32m-> 4488\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_mgr\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minsert\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_info_axis\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrefs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 4489\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 4490\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_iset_item_mgr(loc, value, refs\u001b[38;5;241m=\u001b[39mrefs)\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:1385\u001b[0m, in \u001b[0;36mBlockManager.insert\u001b[1;34m(self, loc, item, value, refs)\u001b[0m\n\u001b[0;32m 1383\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1384\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_insert_update_mgr_locs(loc)\n\u001b[1;32m-> 1385\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_insert_update_blklocs_and_blknos\u001b[49m\u001b[43m(\u001b[49m\u001b[43mloc\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1387\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maxes[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m=\u001b[39m new_axis\n\u001b[0;32m 1388\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mblocks \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m (block,)\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:1422\u001b[0m, in \u001b[0;36mBlockManager._insert_update_blklocs_and_blknos\u001b[1;34m(self, loc)\u001b[0m\n\u001b[0;32m 1419\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m loc \u001b[38;5;241m==\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mblklocs\u001b[38;5;241m.\u001b[39mshape[\u001b[38;5;241m0\u001b[39m]:\n\u001b[0;32m 1420\u001b[0m \u001b[38;5;66;03m# np.append is a lot faster, let's use it if we can.\u001b[39;00m\n\u001b[0;32m 1421\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_blklocs \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mappend(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_blklocs, \u001b[38;5;241m0\u001b[39m)\n\u001b[1;32m-> 1422\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_blknos \u001b[38;5;241m=\u001b[39m \u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mappend\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_blknos\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mblocks\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1423\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m loc \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m 1424\u001b[0m \u001b[38;5;66;03m# np.append is a lot faster, let's use it if we can.\u001b[39;00m\n\u001b[0;32m 1425\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_blklocs \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mappend(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_blklocs[::\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m], \u001b[38;5;241m0\u001b[39m)[::\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m]\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\numpy\\lib\\function_base.py:5618\u001b[0m, in \u001b[0;36mappend\u001b[1;34m(arr, values, axis)\u001b[0m\n\u001b[0;32m 5616\u001b[0m values \u001b[38;5;241m=\u001b[39m ravel(values)\n\u001b[0;32m 5617\u001b[0m axis \u001b[38;5;241m=\u001b[39m arr\u001b[38;5;241m.\u001b[39mndim\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m\n\u001b[1;32m-> 5618\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mconcatenate\u001b[49m\u001b[43m(\u001b[49m\u001b[43m(\u001b[49m\u001b[43marr\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalues\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maxis\u001b[49m\u001b[43m)\u001b[49m\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: " + ] + }, + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31mThe Kernel crashed while executing code in the current cell or a previous cell. \n", + "\u001b[1;31mPlease review the code in the cell(s) to identify a possible cause of the failure. \n", + "\u001b[1;31mClick here for more info. \n", + "\u001b[1;31mView Jupyter log for further details." + ] + } + ], "source": [ "log = logging.getLogger(__name__)\n", "\n", @@ -1419,9 +1744,112 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 36, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.world:connected to db\n", + "INFO:assume.scenario.loader_csv:Starting Scenario example_02c/base from ../inputs\n", + "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", + "INFO:assume.scenario.loader_csv:Downsampling demand_df successful.\n", + "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", + "INFO:assume.scenario.loader_csv:availability_df not found. Returning None\n", + "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", + "INFO:assume.scenario.loader_csv:price_forecasts not found. Returning None\n", + "INFO:assume.scenario.loader_csv:temperature not found. Returning None\n", + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Training Episodes: 1%| | 1/100 [00:22<36:39, 22.22s/it]\n", + "Training Episodes: 1%| | 1/100 [00:22<37:32, 22.75s/it]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for=>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pygments\\formatters\\terminal256.py:180: RuntimeWarning: coroutine 'MarketRole.opening' was never awaited\n", + " self.xterm_colors.append((r, g, b))\n", + "RuntimeWarning: Enable tracemalloc to get the object allocation traceback\n", + "c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pygments\\formatters\\terminal256.py:180: RuntimeWarning: coroutine 'UnitsOperator.register_market' was never awaited\n", + " self.xterm_colors.append((r, g, b))\n", + "RuntimeWarning: Enable tracemalloc to get the object allocation traceback\n" + ] + }, + { + "ename": "ValueError", + "evalue": "Time must be > 1552158000.0 but is 1551398399.", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[36], line 32\u001b[0m\n\u001b[0;32m 28\u001b[0m \u001b[38;5;66;03m# run learning if learning mode is enabled\u001b[39;00m\n\u001b[0;32m 29\u001b[0m \u001b[38;5;66;03m# needed as we simulate the modelling horizon multiple times to train reinforcement learning run_learning( world, inputs_path=input_path, scenario=scenario, study_case=study_case, )\u001b[39;00m\n\u001b[0;32m 31\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m world\u001b[38;5;241m.\u001b[39mlearning_config\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlearning_mode\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[1;32m---> 32\u001b[0m \u001b[43mrun_learning\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 33\u001b[0m \u001b[43m \u001b[49m\u001b[43mworld\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 34\u001b[0m \u001b[43m \u001b[49m\u001b[43minputs_path\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minputs_path\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 35\u001b[0m \u001b[43m \u001b[49m\u001b[43mscenario\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscenario\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 36\u001b[0m \u001b[43m \u001b[49m\u001b[43mstudy_case\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstudy_case\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 37\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 39\u001b[0m \u001b[38;5;66;03m# after the learning is done we make a normal run of the simulation, which equals a test run\u001b[39;00m\n\u001b[0;32m 40\u001b[0m world\u001b[38;5;241m.\u001b[39mrun()\n", + "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\scenario\\loader_csv.py:970\u001b[0m, in \u001b[0;36mrun_learning\u001b[1;34m(world, inputs_path, scenario, study_case, verbose)\u001b[0m\n\u001b[0;32m 966\u001b[0m \u001b[38;5;66;03m# -----------------------------------------\u001b[39;00m\n\u001b[0;32m 967\u001b[0m \u001b[38;5;66;03m# Give the newly initliazed learning role the needed information across episodes\u001b[39;00m\n\u001b[0;32m 968\u001b[0m world\u001b[38;5;241m.\u001b[39mlearning_role\u001b[38;5;241m.\u001b[39mload_inter_episodic_data(inter_episodic_data)\n\u001b[1;32m--> 970\u001b[0m \u001b[43mworld\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 972\u001b[0m \u001b[38;5;66;03m# -----------------------------------------\u001b[39;00m\n\u001b[0;32m 973\u001b[0m \u001b[38;5;66;03m# Store updated information across episodes\u001b[39;00m\n\u001b[0;32m 974\u001b[0m inter_episodic_data \u001b[38;5;241m=\u001b[39m world\u001b[38;5;241m.\u001b[39mlearning_role\u001b[38;5;241m.\u001b[39mget_inter_episodic_data()\n", + "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\world.py:686\u001b[0m, in \u001b[0;36mWorld.run\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 683\u001b[0m end_ts \u001b[38;5;241m=\u001b[39m datetime2timestamp(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mend)\n\u001b[0;32m 685\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 686\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_until_complete\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 687\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43masync_run\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart_ts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstart_ts\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mend_ts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mend_ts\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 688\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 689\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m:\n\u001b[0;32m 690\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\nest_asyncio.py:98\u001b[0m, in \u001b[0;36m_patch_loop..run_until_complete\u001b[1;34m(self, future)\u001b[0m\n\u001b[0;32m 95\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m f\u001b[38;5;241m.\u001b[39mdone():\n\u001b[0;32m 96\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[0;32m 97\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mEvent loop stopped before Future completed.\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m---> 98\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mf\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py:203\u001b[0m, in \u001b[0;36mFuture.result\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 201\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__log_traceback \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m 202\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 203\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception\u001b[38;5;241m.\u001b[39mwith_traceback(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception_tb)\n\u001b[0;32m 204\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_result\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py:277\u001b[0m, in \u001b[0;36mTask.__step\u001b[1;34m(***failed resolving arguments***)\u001b[0m\n\u001b[0;32m 273\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 274\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m exc \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 275\u001b[0m \u001b[38;5;66;03m# We use the `send` method directly, because coroutines\u001b[39;00m\n\u001b[0;32m 276\u001b[0m \u001b[38;5;66;03m# don't have `__iter__` and `__next__` methods.\u001b[39;00m\n\u001b[1;32m--> 277\u001b[0m result \u001b[38;5;241m=\u001b[39m coro\u001b[38;5;241m.\u001b[39msend(\u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 278\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 279\u001b[0m result \u001b[38;5;241m=\u001b[39m coro\u001b[38;5;241m.\u001b[39mthrow(exc)\n", + "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\world.py:651\u001b[0m, in \u001b[0;36mWorld.async_run\u001b[1;34m(self, start_ts, end_ts)\u001b[0m\n\u001b[0;32m 648\u001b[0m pbar \u001b[38;5;241m=\u001b[39m tqdm(total\u001b[38;5;241m=\u001b[39mend_ts \u001b[38;5;241m-\u001b[39m start_ts)\n\u001b[0;32m 650\u001b[0m \u001b[38;5;66;03m# allow registration before first opening\u001b[39;00m\n\u001b[1;32m--> 651\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mclock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_time\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart_ts\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[0;32m 652\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdistributed_role \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mFalse\u001b[39;00m:\n\u001b[0;32m 653\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclock_manager\u001b[38;5;241m.\u001b[39mbroadcast(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclock\u001b[38;5;241m.\u001b[39mtime)\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\clock.py:70\u001b[0m, in \u001b[0;36mExternalClock.set_time\u001b[1;34m(self, t)\u001b[0m\n\u001b[0;32m 66\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 67\u001b[0m \u001b[38;5;124;03mNew time is set\u001b[39;00m\n\u001b[0;32m 68\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 69\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m t \u001b[38;5;241m<\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time:\n\u001b[1;32m---> 70\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTime must be > \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m but is \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mt\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 71\u001b[0m \u001b[38;5;66;03m# set time\u001b[39;00m\n\u001b[0;32m 72\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time \u001b[38;5;241m=\u001b[39m t\n", + "\u001b[1;31mValueError\u001b[0m: Time must be > 1552158000.0 but is 1551398399." + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:assume.markets.base_market:1552161600.0 Market result [(datetime.datetime(2019, 3, 9, 20, 0), datetime.datetime(2019, 3, 9, 21, 0), None)] for market EOM are empty!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [] + } + ], "source": [ "log = logging.getLogger(__name__)\n", "\n", @@ -1474,9 +1902,123 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting matplotlib\n", + " Downloading matplotlib-3.9.2-cp311-cp311-win_amd64.whl.metadata (11 kB)\n", + "Collecting contourpy>=1.0.1 (from matplotlib)\n", + " Downloading contourpy-1.3.0-cp311-cp311-win_amd64.whl.metadata (5.4 kB)\n", + "Collecting cycler>=0.10 (from matplotlib)\n", + " Using cached cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)\n", + "Collecting fonttools>=4.22.0 (from matplotlib)\n", + " Downloading fonttools-4.54.0-cp311-cp311-win_amd64.whl.metadata (166 kB)\n", + " ---------------------------------------- 0.0/166.9 kB ? eta -:--:--\n", + " -- ------------------------------------- 10.2/166.9 kB ? eta -:--:--\n", + " ------------------------------------- 163.8/166.9 kB 2.0 MB/s eta 0:00:01\n", + " -------------------------------------- 166.9/166.9 kB 2.0 MB/s eta 0:00:00\n", + "Collecting kiwisolver>=1.3.1 (from matplotlib)\n", + " Downloading kiwisolver-1.4.7-cp311-cp311-win_amd64.whl.metadata (6.4 kB)\n", + "Requirement already satisfied: numpy>=1.23 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from matplotlib) (1.26.4)\n", + "Requirement already satisfied: packaging>=20.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from matplotlib) (24.1)\n", + "Collecting pillow>=8 (from matplotlib)\n", + " Using cached pillow-10.4.0-cp311-cp311-win_amd64.whl.metadata (9.3 kB)\n", + "Collecting pyparsing>=2.3.1 (from matplotlib)\n", + " Using cached pyparsing-3.1.4-py3-none-any.whl.metadata (5.1 kB)\n", + "Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from matplotlib) (2.9.0)\n", + "Requirement already satisfied: six>=1.5 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n", + "Downloading matplotlib-3.9.2-cp311-cp311-win_amd64.whl (7.8 MB)\n", + " ---------------------------------------- 0.0/7.8 MB ? eta -:--:--\n", + " ---- ----------------------------------- 0.9/7.8 MB 20.0 MB/s eta 0:00:01\n", + " ------------ --------------------------- 2.4/7.8 MB 25.8 MB/s eta 0:00:01\n", + " ------------------ --------------------- 3.6/7.8 MB 25.5 MB/s eta 0:00:01\n", + " ----------------------- ---------------- 4.7/7.8 MB 25.0 MB/s eta 0:00:01\n", + " ----------------------------- ---------- 5.9/7.8 MB 25.0 MB/s eta 0:00:01\n", + " ---------------------------------- ----- 6.7/7.8 MB 25.2 MB/s eta 0:00:01\n", + " --------------------------------------- 7.8/7.8 MB 25.0 MB/s eta 0:00:01\n", + " ---------------------------------------- 7.8/7.8 MB 23.8 MB/s eta 0:00:00\n", + "Downloading contourpy-1.3.0-cp311-cp311-win_amd64.whl (217 kB)\n", + " ---------------------------------------- 0.0/217.2 kB ? eta -:--:--\n", + " --------------------------------------- 217.2/217.2 kB 12.9 MB/s eta 0:00:00\n", + "Using cached cycler-0.12.1-py3-none-any.whl (8.3 kB)\n", + "Downloading fonttools-4.54.0-cp311-cp311-win_amd64.whl (2.2 MB)\n", + " ---------------------------------------- 0.0/2.2 MB ? eta -:--:--\n", + " -------------------------- ------------- 1.5/2.2 MB 31.4 MB/s eta 0:00:01\n", + " ---------------------------------------- 2.2/2.2 MB 34.9 MB/s eta 0:00:00\n", + "Downloading kiwisolver-1.4.7-cp311-cp311-win_amd64.whl (56 kB)\n", + " ---------------------------------------- 0.0/56.0 kB ? eta -:--:--\n", + " ---------------------------------------- 56.0/56.0 kB ? eta 0:00:00\n", + "Using cached pillow-10.4.0-cp311-cp311-win_amd64.whl (2.6 MB)\n", + "Using cached pyparsing-3.1.4-py3-none-any.whl (104 kB)\n", + "Installing collected packages: pyparsing, pillow, kiwisolver, fonttools, cycler, contourpy, matplotlib\n", + "Successfully installed contourpy-1.3.0 cycler-0.12.1 fonttools-4.54.0 kiwisolver-1.4.7 matplotlib-3.9.2 pillow-10.4.0 pyparsing-3.1.4\n" + ] + } + ], + "source": [ + "!pip install matplotlib" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "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", + "
identsimulationtotal_costtotal_volumeaverage_cost
0EOMexample_02a_base1.444376e+084.263112e+0933.33
\n", + "
" + ], + "text/plain": [ + " ident simulation total_cost total_volume average_cost\n", + "0 EOM example_02a_base 1.444376e+08 4.263112e+09 33.33" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "import os\n", "from functools import partial\n", @@ -1486,6 +2028,8 @@ "\n", "os.makedirs(\"outputs\", exist_ok=True)\n", "\n", + "db_uri = \"sqlite:///local_db/assume_db.db\"\n", + "\n", "engine = create_engine(db_uri)\n", "\n", "\n", @@ -1496,19 +2040,43 @@ "sum(round(CAST(value AS numeric), 2)) FILTER (WHERE variable = 'avg_price') as average_cost\n", "FROM kpis\n", "where variable in ('total_cost', 'total_volume', 'avg_price')\n", - "and simulation in ('example_02a', 'example_02b', 'example_02c')\n", + "and simulation in ('example_02a_base', 'example_02b_base', 'example_02c_base')\n", "group by simulation, ident ORDER BY simulation\n", "\"\"\"\n", + "\n", + "\n", "kpis = pd.read_sql(sql, engine)\n", "\n", + "kpis" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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7777rjZv3qyoqKhEdRUsWFAlS5aUxWJRhw4dNGvWLDVp0kTTp09X7dq1NWnSJGs9z2LOnDkKCQnRxIkT1bFjR61Zs8Y6ejh8+HD17NlTmzdv1uTJk63PmTFjhgYNGqS33npL06dPV4sWLfTdd99p0KBBj72OxWJR+/bttWPHDn3xxReaPXu2unTpop07dyZ6HRs3btTmzZs1cOBATZgwQWFhYeratas1MB49elSffvqpMmTIoMmTJ+vjjz9Wz549n/m9+Pvvv633Fo0cOVJff/21QkJC1KxZM505c0ZZs2a1fhnu2LGj9b8XL16swYMHq3r16poxY4bGjRsnFxcXffHFF7py5YpN1z569Khu3LihKlWqPPacTp06qUmTJpIefHFv3ry5Vq9erbZt22rq1KkqXbq0BgwYoOnTp0t6MFWybdu28vLy0pQpUzRx4kRFR0erTZs2unXrlpo0aWL9pcEPP/xg7fthlStXTvCa46eoTp06VT179lTJkiU1efJkde7cWRs3blTLli119+5d6/MvX76srVu3auLEierXr58yZsyY6Br37t3TJ598os2bN6tHjx4KCAjQK6+8orZt21pDna2fn8WLF6tPnz4qWrSoAgIC1K5dOy1cuFBff/11gmsOHjxYrVq10rRp0/TKK6+ob9+++ueffx773leqVElOTk765JNPFBAQoKCgIN2/f1+SVKJECbVp00bp0qV77PPXrFmjnTt3asSIERowYIB27typjz76SAsWLFCfPn301Vdf6eDBg/rqq68e24ctevfurRUrVqhdu3aaM2eO+vXrp1OnTqlXr16yWCw2/czDwsLUuHFj7d27Vz169NCUKVOUI0cOde7cWb/88kuCcydOnCiz2awJEyaod+/e2rJli0aOHPlMrwEAJKZcArCB2WzWuHHjVLFiRY0fP97aXqpUKdWtW1ezZ89W7969rSMiBQoUsP73tWvX1KNHjwSjXa6ururatatOnDhh8/Slxo0ba+HChdq0aZMaNGgg6cHCC3/88Ye++OILSdKff/6pv/76SxMmTFC9evUkSRUqVJCbm5u+/fZbffzxxypYsGCy34f06dNr4sSJcnJyUvny5fXTTz/p6tWrWrZsmTJkyCDpwfTE/fv3S3owKhQfZgcOHChJqlixojJlyqSBAweqdevWj6zn2rVrSpcunfr06aMyZcpIksqVK6d///03wX1skhQbG6vZs2db73GMiopSnz59dPz4cRUrVkwzZsyQj4+Ppk2bJmdnZ0mSl5eXevTokez3QZLGjx+vPHnyaObMmXJ0dLS+tho1amjy5Mn69ttvVaRIEUkPpvS+/vrrkqTg4GC1adNGnTp1svaVI0cONWzYUPv27bP+3J4kflTY1vvTVq5cqZMnT2rp0qXy9/eX9CB0xMbGaurUqWrWrJnOnz+vGzdu6OOPP1apUqUkSa+++qp++OEHRUVFJZga+LjPrLe3d4LXXLJkSd28eVPTpk3Thx9+aP2FhyS99tpratGihVasWKEWLVpIevCzfPhn/ig///yz/vnnH/3444/y8/OTJL399ttq2bKlxo0bpxUrVtj0+TGbzQoMDFT16tUTBLjo6GitXbvWGsAk6euvv9bbb79tfV01atTQ7t27Vbhw4UfWWKhQIU2cOFHDhg3TlClTNGXKFLm5ualMmTJq3Lix6tSp89jXF/8+BAQEWAPtr7/+qm3btmnTpk3KlSuXJCkoKEg///zzE/t5kpiYGEVFRWngwIHWe2/Lli2r27dv65tvvlFYWJhNP/O5c+cqPDxcGzduVI4cOSRJ77zzjlq1aqUxY8aofv36cnB48Lvz1157LcH9pIcOHdKGDRuS/RoAIB6BDsBTnTt3TqGhoerVq1eC9ty5c8vf31+7d+9+7HPjA2B4eLjOnj2rCxcuaMuWLZKUaGrXkxQuXFhFixbV6tWrrYFu7dq1kqT33ntP0oOphU5OTqpdu3aC57733nv69ttvtXv37mcKdCVKlEiwKEvmzJnl7u5uDXOSlClTJp08eVKSdODAAd29e1dVq1ZVbGys9Zz4aXk7dux4ZD2+vr5asGCBLBaLLl68qAsXLujs2bPav39/ovesQIECCRas8fX1lSTr6Oe+fftUpUoVa5iTpJo1a1pDWHLcuXNHhw8fVpcuXRL04+npqSpVqmjr1q2PfW78tLjIyEjr5yF+uqutn4f4n8HjptH+1+7du5UjRw5rmIv33nvvafny5Tp48KDKlCkjb29vdejQQbVr11alSpVUoUIFffnllzZd43GCgoIUExOj+vXrJ2gvU6aMcuTIod27d1sDnSRrIHycnTt3KkuWLCpatGiCz1SVKlU0ZswY3bx506bPz7lz53T9+vVEU1bbtGmjNm3aJKo1XnyIjoyMfGKdNWvWVJUqVfT333/rr7/+0q5du/TXX39p+/btWr9+vb799luZTKZHPjd//vwJRiczZ84sLy8va5iTHvw5u3Xr1hNreBIXFxfNnj1bknT16lWdO3dO58+fT/L/m3bv3i1/f39rmIv33nvvqV+/fjp79qz1l1v/DYWvvPKKzbMUAOBJCHQAnioiIkLSgy9W/5U5c2YdO3bssc89fPiwhg0bpsOHDytdunQqUKCAsmfPLinp+zs1atRII0eO1PXr1+Xj46NVq1apWrVq8vb2lvRgQQovL69EYSVLliyS9ExfAKVHr/T5pIVY4t+3du3aPfL4tWvXHvvcX375RRMmTFBISIgyZcqkIkWKyM3NLdF5/526Fj8aEB924t+Thzk5OSVqS4pbt27JYrE89vPwpPf533//1eDBg7Vz5045Ozvr1VdftY702Pp5iP/8XLp06bHnhIeHK3369HJxcdHNmzetn4H/1io9CCceHh5avHixpk2bpvXr1+uHH36Qm5ubGjRooIEDB9q0quejxN8HZ+t75eHh8cT+IiIiFBoaqqJFiz7yeGhoqDJmzPjUz0/8Z9PHx+epr+Hhz3j858uWn5Wzs7MqVapkXcXy6tWr+vrrr7Vx40b98ccfj50ym9Q/Z8m1bds2jRw5UmfPnpWHh4cKFy5svY6tn8WbN28mCJrxHv5sxXvUn1X2uAOQEgh0AJ4qU6ZMkvTIG/hDQ0MfGw7i70sqVKiQ1q5dq1dffVUODg7aunWrNm7cmOQ63n33XY0ePVrr16/XW2+9pcOHD6t79+7W4xkzZtSNGzcUFxeXINTFB6dH1Rk/SvDf0Z6oqKinfrl+mvgl88eNG5dgtb94j/qSL0l79+5Vnz591LJlS7Vp08Y66jZmzBjt27cvSTVkypQp0c/NYrE8dsENW2TIkEEmk+mxn4f4z8t/mc1mtWvXTs7Ozlq+fLmKFCkiJycnnT59OknT54oUKaLMmTPrzz//TDC69bCBAwcqKChIf/zxhzJmzKgLFy48slbp/z4Xr776qsaOHau4uDgdOnRIP//8s5YsWaLcuXOrbdu2Ntf3sPiRprCwML366quJrv+oMPAkGTJkUN68eTVu3LhHHs+ZM6dNn5/4z2Z4eHiC59+4cUPHjh1LNJqZFM2aNVO+fPkSbVfh6+urESNG6Ndff9Xp06efeA9kcvx3oaE7d+489tx///1XnTt3tt7LmStXLplMJi1evNi6qqstMmbMaP0cPey/ny0AeJ5YFAXAU+XLl09ZsmTRmjVrErQHBwcrKCjIes/Rf0fGzp49q4iICH388ccqUKCA9bf7f/75pyTbp8zF8/T0VI0aNbRx40atX79e2bNnV4UKFazHy5Ytq9jY2ET3pcQvTlC6dOlEfcaPBjy8IMfNmzd15syZJNX2KH5+fnJ2dtbVq1dVvHhx6z9OTk6aMGHCY1ffO3DggMxms7p27Wr9Mh4XF2ddnTIp79tbb72lP//8M8HUrm3btiW4Ryqp3N3dVaxYMa1fvz7Bl+hbt27pjz/+sL7P//083LhxQ+fOnVPjxo2t74OU9M+Dg4ODWrVqpT/++EO///57ouN///23tm7dqtq1a8vFxUVvvPGGLl26lGg/sV9++UXOzs4qUaKENmzYoDfffFOhoaFydHSUv7+/hg4dKk9PT12+fNl63aTy8/OTi4tLoj87e/fu1eXLl61/dmxVtmxZhYSEyMfHJ8FnaseOHZo1a5YcHR1t+vy8+uqr8vLysk4xjPfzzz+rXbt2z/T5yJEjhzZs2KDg4OBEx86dOyfpwf1kKSl9+vSJFtV50i8/jhw5onv37qldu3bKnTu39Rc78WEufuTsaT/zN954QwcOHEg0WvzLL78oS5YsypMnT5JfCwAkFSN0AJ7KwcFBPXv2VL9+/dSrVy+99957unHjhnXhgtatW0uS9V6y+FGRfPnyKX369Jo+fbqcnJzk5OSkjRs3WpeLT879I40aNVLbtm0VEhKihg0bJvjC9fbbb6tcuXIaOHCgrl69qsKFC2v37t367rvv9MEHHyRYxj5eoUKFlC1bNgUGBip9+vQymUyaMWPGE1fhs5WXl5fatm2rb7/9Vrdv31a5cuV09epV6/1Dj1tUokSJEpKkr776So0aNdLNmze1ePFi68qCd+7csWmjd0nq3LmzNm3apDZt2qht27YKDw/XpEmTEtxTlxy9evVSmzZt1K5dOzVv3lz379/XzJkzFRMTo86dO0v6v8/Dzp07lT9/fvn5+SlHjhxavHixXnnlFXl6emrbtm1asGCBpKR9Hlq1aqU9e/aoa9eu+vDDD/XOO+/IwcFBe/bs0cKFC1WkSBHrPZ8NGzbU999/r86dO6tbt27KmTOnfv/9d61YsUJdunSRp6enSpUqJbPZrM6dO6tdu3by8PDQ+vXrdevWLdWsWVPS/41qrVmzRn5+fjaNrmXKlEnt2rVTYGCgnJ2dVaVKFV28eFHffvutChQooA8++MD2N/3/v5ZFixapdevW6tChg7Jly6a//vpL3333nT766CNrQJWe/vnp2rWrvvrqK/n4+Khq1ao6d+6cJk+erBYtWjxyhU1b9ejRQ7t27VLjxo318ccfy9/fXw4ODjp8+LB1u4n4RVZSSpUqVTRjxgzNmDFDfn5++v3335+4NUrRokXl5OSksWPH6tNPP1VMTIxWrlypP/74Q9L/je497WfeunVr/fLLL2rVqpW6dOmiTJkyadWqVfr77781cuTIZP0SAACSiv/TALBJw4YNNXnyZJ07d06dO3fWN998I39/fy1fvtx6f1LBggVVv359LV68WF988YUyZMigqVOnymKxqHv37urdu7cuX76sRYsWycPDQ3v37k1yHW+99ZZeeeUVXbx4UQ0bNkxwLD6MNWvWTPPmzVO7du20YcMG9ezZ87HLgzs6Omry5MnKnDmzevbsqREjRqhevXrWL/HP6vPPP1ffvn3122+/6bPPPtPYsWNVunRpLVq0KMFiKg8rV66cBg8erAMHDuizzz7TN998o+zZs1uXxE/KtMu8efNq0aJFcnR0VI8ePTR16lT16dPnmb6wSw9+DnPnztXdu3fVs2dPDRo0SL6+vvrxxx+toy/p06dX69attWnTJn322We6f/++pk6dKl9fX/Xt21eff/65Dh48qGnTpunVV19N0ufB2dlZU6dOVf/+/XX06FH16dNH3bt319atW9WpUyctWLDAOmU2Xbp0WrhwoapUqaJvv/1WHTt21L59+zRixAh17dpVkpQ1a1bNmjVLGTJk0IABA9S+fXsdPXpUU6ZM0ZtvvinpwUIfxYsXV9++fa0Latiia9euGjJkiP7++2916NBBAQEBql27tr7//vsk3xvm7u6uxYsXq3Tp0ho7dqw+++wz/frrr+rVq5d1E3VbPz8tWrTQN998o127dql9+/aaN2+ePvvsM/Xu3TtJNf1Xzpw59dNPP+ndd9/V6tWr1alTJ7Vv316rV69WmzZtFBgY+NgFUZKrffv2atKkiWbPnq2OHTsqNDRUI0aMeOz5efLk0fjx43X16lV17NjRugLpwoULZTKZrJ/Fp/3Ms2TJoiVLlqho0aL6+uuv1b17d4WEhGjq1Klq1KhRir5GAHgck4U7cgEAAADAkBihAwAAAACDItABAAAAgEER6AAAAADAoAh0AAAAAGBQBDoAAAAAMCgCHQAAAAAYFIEOAAAAAAzKyd4FPIvQ0Fv2LgEAYGcODiZ5e3soPDxKZjNbqwLAyypLlgz2LsEuGKEDABiag4NJJpNJDg4me5cCAMALR6ADAAAAAIMi0AEAAACAQRHoAAAAAMCgCHQAAAAAYFAEOgAAAAAwKAIdAAAAABgUgQ4AAAAADIpABwAAAAAGRaADAAAAAIMi0AEAAACAQRHoAAAAAMCgCHSpxIgRQ1WxYpnH/rN//94nPv/33zfpxo1wm67VpUs7zZ49I1H7mjWrVLVqed25cyfRsXv37qlmzXe0efNvT+x79uwZ6tKlnU11AAAA4OlSw/fEh23YsFafffaJatSopAYNauvrr4fo6tUrNr+eJ7l06aJ27tyRIn29LJzsXcCL1nTIjRd2rR+Gedl8bvfuX6hDhy6SpM2bf9PSpYv03Xfzrcc9PTM+9rlXroRo8OC+Wrbsl+QXK+ntt6tq/PjR2rlzu6pVq5ng2N9//yVJqlix0jNdAwAAIDXKOtXzhV3rWqfIJJ2fGr4nxpsyZYI2bFirDh26yt+/tG7evKlZs6apS5f2mjlznry8bP/++yjffDNcJUuW0ltvVUiRel8GjNClEunTp5ePT2b5+GRW+vTp5eDgYH3s45NZzs7Oj32uxWJJkRo8PT1Vrtxb+uOP3xMd+/3331Sp0jtydXVLkWsBAADANqnhe6IkHTwYpB9/XKKRI8fr3XffV86cuVS0aDGNGjVecXGx+vHH75/5GilZ78uCQGcQ165d1aBBfVWnTlXVq1dNkyaNVUxMjCSpSZP3rP9et261LBaLFiyYoyZN3lPlym+qQYPamjNnpk3XqVGjtv7++y/du3fP2nbv3l399dd21ahRW5J0/vw59ezZVTVrvqP336+juXO/k9lsTtTXunWr1bjxuwnaHh7GHzFiqKZOnazBg/upWrUK+uijJjp58h/NnDlVtWtX1gcf1NXvv2+yPvfq1Svq06eHqlWroMaN39WcOTMVFxeXhHcRAAAg7XlR3xM3bFijIkWKys+vZIJ2Nzc3ffPNeDVq1NTatm7darVo0VhVq1ZQmzYtFRS033ps3749atWquapWLa8mTRpo1aoVkh58NwwK2q+5c7/jFp4kINAZwP3799WtW0fdvRutgICZ+uqrb/TXX9s1depkSbIOuX/33XxVq1ZDGzas1Y8/LlGfPgO1ZMlKtW7dVnPmzNSJE/889VoVKrwtSdq9e6e1befOHXJzc1OZMmUVERGhzp3bKnPmzJo5c5569eqjFSt+0LJlS5L12pYtWyJ//9KaP3+pPD0zqlu3jrpxI1wzZsxThQpva+zYkTKbzbJYLBowoLe8vLw1d+5i9e8/RL/9tkELF85N1nUBAADSghf5PfH06ZMqUuT1Rx577bXCypw5s6QHYW7ixDH66KNWmjdvscqUKasvv+yu0NBriouL06BBfVWlSjUtXrxcn33WQRMmjNa5c2fVvfsXKlashJo1+0gjR45NoXco7SPQGcCuXX8pLOyaBg0arvz5C6h06TfUs2cf/fTTMt25c0eZMj2Yq5wpk5dcXd3k6/uK+vcfojJlyipbtux6//3G8vHx0blzZ556LTc3N1Wq9I62bt1ibfv9902qWrW6nJyc9NtvG+Tq6qbevQcob958qlSpstq27aDvv1+QrNdWqFARffBBY+XMmUs1atTWvXt39fnnXyhPnrxq3Lipbt2KVHh4uPbt26MrV0LUu/cA5c6dV6VKlVHnzp/rxx+TFyQBAADSghf5PfHWrdvy8Ej/1POWL1+qxo2bqU6d+sqdO686duyqV18toBUrflRU1G1FRt6Ut7ePsmXLrpo162jSpKnW6aROTk5Kly7dE+8LREIv3aIoRnT+/DnlypVbnp7/d7Nu8eIlFBcXp0uXgpU+fYYE55cqVUZHjx7R9OkBunDhnE6ePKHr168/clrko1SvXkvDhw9WbGysYmNjtXPndk2cGChJunDhnAoVKiInp//76BQr5qfr16/r1q1bSX5t2bPnsP63q6urvLy8rffpubq6SpLu34/RhQvnFBl5U7VqvWM932w26969e7p5M0IZM2ZK8rUBAACM7kV+T8yYMaNN3/fOnz+v1q0/S9BWrFhxXbhwTp6eGfX++401evTXmjdvlipUqKR69RokqB9JwwidAbi4uCZqi4szJ/j3w1avXqXPP++kmJh7euedqvr222nKmtXX5uuVLfumHBxM2r9/r/76a7syZfJWsWIl/n8tLonON5vjEvw7nslkekTdCc9xdHRM8NjB4dEfybi4OOXOnVdz535v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/fdq1KiRGjdubG179dVXdfXqVS1YsEBdunRJdUHJYrEkeOzi4qIsWbLYqRoAAJ4NUy4BAMnm4OCgAwcO6ObNmwna27Vrpx9++EFSwimXU6ZMUatWrRQQEKDy5cvL399fgwcPVkhIiNq3by8/Pz/VqFFDf/zxh7WvR03ZfNI0zsuXL6tHjx566623VLRoUb399tsaO3aszGazLl68qGrVqkmSPv74Y02ZMiXRlMu7d+9q0qRJqlatmooXL64GDRpo48aN1v5XrlypGjVqWP9drFgxNWzYUPv27Xu2NxMAgGQg0AEAkq1t27Y6duyY3n77bbVr104zZ87UoUOHlCFDBuXLl++Rz9m7d6/OnTunxYsXa+DAgfrhhx/UuHFj1alTRytXrlT+/PnVt2/fRCNpturYsaNu3bqluXPnasOGDfr00081a9Ys/f7778qWLZuWLVsm6UG4/PTTTxM9v2fPnlq1apUGDRqkX375RdWrV1f37t21adMm6zkhISFaunSpxo4dq59++knp0qV7ppoBAEguAh0AINlq166tJUuWqFq1ajp48KDGjx+vJk2aqHbt2o8dsTKbzRo2bJjy5cunRo0aycvLS2+++abef/995c+fX//73/9048YNhYaGJrmeu3fvqkGDBho+fLgKFy6sXLlyqVWrVsqcObNOnDghR0dH6xTQjBkzysPDI8Hzz5w5o82bN2vIkCGqXLmy8uXLp65du6patWqaPn269bz79+9r2LBhKlmypAoWLKjWrVvr33//TVbNAAA8C+6hAwA8k5IlS6pkyZIym836559/tHXrVi1atEifffaZfvvtt0Tn+/j4KH369NbH7u7uyp07t/Wxm5ubJCkmJibJtbi5uemjjz7Shg0bdOjQIV24cEEnTpxQWFiYzGbzU59/4sQJSVLp0qUTtL/xxhuaMGFCgrb8+fNb/ztDhgySHgQ9AABeJEboAADJcuXKFQ0bNkxXrlyR9OB+utdff10dO3bUvHnzFBUVpT179iR6nrOzc6I2B4ek/XUUGxv7yPY7d+6oWbNmmj59ujw9PfXBBx/o+++/1yuvvJKk/v/LYrHIySnh70BdXFweeR4AAC8SI3QAgGRxcXHRsmXLlC1bNrVr1y7BMU9PT0lS5syZn/k6zs7Oun37tvXx7du3df369Ueeu337dh09elQ7duywXjsiIkLXr1+3hi2TyfTYa8XvZ7dv3z5VqVLF2r53714VKFDgmV8LAAApjUAHAEgWb29vtW3bVt9++62ioqJUu3ZtpU+fXqdPn9bUqVNVrlw5lSlT5pmvU7JkSa1bt061atWSp6enJk+eLEdHx0eeGz8S98svv6hWrVoKCQnRhAkTdP/+fesUTnd3d0nSyZMn9frrryd4fv78+VWlShUNGzZMJpNJefLk0dq1a7V582ZNmjTpmV8LAAApjUAHAEi2zz//XHnz5tWPP/6oxYsX6+7du8qePbvq1Kmj9u3bp8g1evbsqYiICLVu3VoZMmTQp59+qsjIyEeeW6JECfXr10/z5s3TpEmT5Ovrq7p16ypbtmw6fPiwJMnLy0uNGjXSmDFjdOHCBdWoUSNBHxMmTNCECRM0YMAARUZG6rXXXtOUKVMSnQcAQGpgsjDhHwAAAAAMiUVRAAAAAMCgCHQAAAAAYFAEOgAAAAAwKAIdAAAAABgUgQ4AAAAADIpABwAAAAAGRaADAAAAAIMi0AEAAACAQRHoAAAAAMCgCHQAAAAAYFAEOgAAAAAwKAIdAAAAABjU/wPzf4Vh+s/ueAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ "# sort the dataframe to have sho, bo and lo case in the right order\n", "\n", "# sort kpis in the order sho, bo, lo\n", + "\n", "kpis = kpis.sort_values(\n", " by=\"simulation\",\n", - " key=lambda x: x.map({\"example_02a\": 1, \"example_02b\": 2, \"example_02c\": 3}),\n", + " # key=lambda x: x.map({\"example_02a\": 1, \"example_02b\": 2, \"example_02c\": 3}),\n", ")\n", "\n", + "\n", "kpis[\"total_volume\"] /= 1e9\n", "kpis[\"total_cost\"] /= 1e6\n", "savefig = partial(plt.savefig, transparent=False, bbox_inches=\"tight\")\n", @@ -1543,25 +2111,155 @@ "\n", "plt.title(\"Total Volume and Total Cost for each Simulation\")\n", "\n", - "savefig(\"outputs/tutorial_6_overview.png\")\n", "plt.show()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, - "outputs": [], + "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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timePricesimulationnode
02019-03-01 01:00:00.00000031.146341example_02a_baseNone
12019-03-01 02:00:00.00000031.146341example_02a_baseNone
22019-03-01 03:00:00.00000031.146341example_02a_baseNone
32019-03-01 04:00:00.00000031.146341example_02a_baseNone
42019-03-01 05:00:00.00000031.146341example_02a_baseNone
...............
7152019-03-30 20:00:00.00000031.146341example_02a_baseNone
7162019-03-30 21:00:00.00000031.146341example_02a_baseNone
7172019-03-30 22:00:00.00000031.146341example_02a_baseNone
7182019-03-30 23:00:00.00000012.500000example_02a_baseNone
7192019-03-31 00:00:00.00000012.500000example_02a_baseNone
\n", + "

720 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " time Price simulation node\n", + "0 2019-03-01 01:00:00.000000 31.146341 example_02a_base None\n", + "1 2019-03-01 02:00:00.000000 31.146341 example_02a_base None\n", + "2 2019-03-01 03:00:00.000000 31.146341 example_02a_base None\n", + "3 2019-03-01 04:00:00.000000 31.146341 example_02a_base None\n", + "4 2019-03-01 05:00:00.000000 31.146341 example_02a_base None\n", + ".. ... ... ... ...\n", + "715 2019-03-30 20:00:00.000000 31.146341 example_02a_base None\n", + "716 2019-03-30 21:00:00.000000 31.146341 example_02a_base None\n", + "717 2019-03-30 22:00:00.000000 31.146341 example_02a_base None\n", + "718 2019-03-30 23:00:00.000000 12.500000 example_02a_base None\n", + "719 2019-03-31 00:00:00.000000 12.500000 example_02a_base None\n", + "\n", + "[720 rows x 4 columns]" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "import seaborn as sns\n", - "\n", "sql = \"\"\"\n", "SELECT\n", " product_start AS \"time\",\n", " price AS \"Price\",\n", + " simulation AS \"simulation\",\n", " node\n", "FROM market_meta\n", - "WHERE simulation in ('example_02a', 'example_02b', 'example_02c') AND market_id in ('EOM') \n", + "WHERE simulation in ('example_02a_base', 'example_02b_base', 'example_02c_base') AND market_id in ('EOM') \n", "GROUP BY market_id, simulation, product_start, price, node\n", "ORDER BY product_start, node\n", "\n", @@ -1569,18 +2267,49 @@ "\n", "df = pd.read_sql(sql, engine)\n", "\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABJAAAAJuCAYAAADvmPh6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOydd5gcxbX2396gXWlXEQUyWGSQyIiMAJMMGDDgC7422QZMuiZcgwj+CCYYDBgQYDDJNjZgojEYnK4NBmOCSCYjERUQytIqbZj+/pjtnuqeDlU9fapnpff3PPvshO6uM91VdapOnXPKcV3XBSGEEEIIIYQQQgghMTQULQAhhBBCCCGEEEIIqW9oQCKEEEIIIYQQQgghidCARAghhBBCCCGEEEISoQGJEEIIIYQQQgghhCRCAxIhhBBCCCGEEEIISYQGJEIIIYQQQgghhBCSCA1IhBBCCCGEEEIIISQRGpAIIYQQQgghhBBCSCI0IBFCCCGEkFRc1y1aBKusbL+XEEIISYMGJEIIISstRx11FDbaaKPA35gxY7D77rvjkksuwYIFCxLPnzp1KjbaaCM88sgjliSuD7zfnfb34osvYs8998R5551XmKxPPvkk9thjD4wZMwY/+tGPcr9++Ddvuumm2H777XH88cfj73//e+DYqPpyzz33YOedd8bmm2+OW265Be+//z4OOeQQjBkzBvvvv3/u8mblwQcfxE9+8pPU46ZNm4YLLrgA48ePx5gxY7DDDjvg5JNPxksvvRQ47rzzzsOee+4pJW6Ao446CkcddZTROZMmTcKJJ57ov19Z2zohhBCi0lS0AIQQQkiRbLrppvh//+//+e+7urrw9ttv47rrrsO7776L++67D47jRJ47cuRIPPDAA1h77bVtiVsXeL/bY9asWTjttNPw/e9/H7vvvrv/+frrr4+JEyeivb29ACnLXHrppVh33XVx1VVXYdSoUSJlHH744fjmN78JoFx/Zs2ahYcffhgnn3wyLrjgAhx99NEAqutLR0cHfvKTn2D33XfH8ccfjzXXXBNXXnklpk+fjptvvhnDhg0TkTcLt956K8aNG5d4zKxZs3DEEUdg1KhROOuss7Daaqth7ty5ePDBB3HMMcfghhtuwD777AMAOOWUU/z7Uo88+OCDmDJliv9+ZW3rhBBCiAoNSIQQQlZq2tvbseWWWwY+22677bB48WLceOONeOONN6q+9+jXr1/sdysy4d89depUAMDaa69ddT823XRTi5JVM3/+fOy8887YfvvtxcpYddVVq373/vvvj9NPPx1XX3019txzT6y55ppV923BggUolUrYa6+9sN122wEA5s2bhw033BDjx48Xk1eK3/3ud1i4cCGefvrpgNFw7733xje/+c2AAamvGWJW1rZOCCGEqDCEjRBCCIlgzJgxAIDp06cDKIfBnHPOOTjjjDOw5ZZb4rjjjosMa/noo49w2mmnYdy4cdhuu+1w0kknBTwZli9fjquvvtoP8fn617+OP/7xj6nyfPnll5gwYQLGjx+PzTffHIcffjj+9re/+d8ff/zxOPTQQ6vOO+WUU3DQQQf571955RV85zvfwRZbbIFx48bh3HPPxdy5c/3vH3nkEWy66aZ48MEHsfPOO2PcuHGYPHmywZ0Looaweffr6aefximnnIItt9wSO+20E2655RZ0dHTg/PPPxzbbbIOddtoJ11xzTSAHjel9e/HFF7HRRhsBAG6++WZstNFGvqHr+eefx3//939jm222wfbbb4+zzz4bM2bMyP0enHnmmejq6sJDDz0U+P2PPPIIHnnkET+E6/zzz/dD4F566SW8/PLLgXo1ffp0nHXWWRg3bhy22GILHHPMMXjnnXf8crzr3n333dhvv/2wxRZb4OGHHwYAfPDBBzjppJOw9dZbY+utt8app56Kzz//vOo+vfDCCzj++OOxxRZbYOedd8Y111yDnp4e/xlOmzYNjz76aOA+hpk9ezYcx/HP82hsbMTZZ5+NI444wv8sHMK25557YuLEibjiiiuw/fbbY6uttsLZZ5+NxYsX4/bbb8duu+2GbbbZBqeffjrmzZvnn7fRRhvhpptuCpR30003+c8+irlz5+KSSy7xQxvHjRuHU0891f9d5513Hh599FFMmzbNfw5Rbf2TTz7BGWecgZ133hlbbrkljjrqKEyaNKnquTz11FM444wzsNVWW2HcuHG48MILsWTJEv+4t956C8cccwy22WYbbLXVVjj22GPx+uuvx8pPCCGEFAUNSIQQQkgEH3/8MQBgrbXW8j976qmn0NbWhltvvRXf/e53q86ZOXMmjjjiCHzyySe4+OKLcc0112D27Nk45phjMH/+fLiui1NPPRX3338/jjvuONx6663YaqutcOaZZ+Kxxx6LlWX27Nk4/PDD8corr+DMM8/ETTfdhDXWWAOnnnoqHn/8cQDAQQcdhLfffhuffvqpf97ChQvx7LPP4uCDDwYAvPzyyzj22GPR2tqKn/3sZzj//PPx0ksv4eijj8ayZcv883p6enDXXXfh8ssvx4QJE7DeeuvVdC/DXHjhhdhwww1x6623Yscdd8QNN9yAww8/HK2trZg4cSL22Wcf3HHHHXj66acBINN922yzzfwwu8MPPxwPPPAARo4cicceewzHH388VlttNVx33XWYMGECXnvtNRxxxBGYM2dOrvdg9OjRWH311QNGBY/dd98dEydOBAB8//vfxwMPPIAHHngAm266KTbddFM88MAD2H333TF37lwceeSRePvtt3HRRRfh2muvRalUwre//e2AYRIoG06+973v4eqrr8bOO++Mjz/+GEceeSTmzJmDn/zkJ7j88svx+eef41vf+lbgtwLAOeecg2222QY///nPceCBB+KOO+7Agw8+CACYOHEiRowYgfHjx/v3MYrdd98dy5Ytw3/913/hzjvvxDvvvOMbk3beeefUkLW77roLM2bMwPXXX4/vf//7eOKJJ3DYYYfhueeew2WXXYazzjoLf/vb33DjjTfqPYAIXNfFSSedhOeffx7nnHMO7rzzTpx22ml44YUX/FDWU045BePHj8eIESP85xBm8uTJOPTQQzF16lRceOGF+OlPfwrHcXDMMcdU5Xv6f//v/2GNNdbALbfcghNOOAEPPfQQbr31VgDlMMbvfve7GDp0KG666SZcf/31WLp0KU444QQsWrQo8+8khBBCJGAIGyGEkJUa13XR3d3tv1+wYAFeeukl30jheSIBQHNzMy655BL069cPAKo8Me655x50dnbi7rvvxogRIwAAG2+8Mb71rW/hjTfeQFNTE/75z3/i+uuv9xMk77rrrli6dCl++tOf4sADD0RTU7VqvvvuuzF37lz86U9/whprrAEAGD9+PI499lhcffXVOPDAA7HPPvvgkksuwRNPPIFTTz0VAPDnP/8ZPT09OPDAAwEA1157Lb7yla/gtttuQ2NjIwBgiy22wAEHHICHH34Y3/72t/0yTz755MiJcx7suuuu+MEPfgAA2GCDDfDEE09glVVW8ZNc77DDDvjDH/6AV199FV/72tfwr3/9y/i+qaGJXohZqVTCT3/6U+yyyy649tpr/WO33npr7L///rjzzjvxwx/+MNd7MHz4cMyePbvq82HDhmGTTTYBEAz980K/vPfXX3895s+fj/vuu89/9rvtthv2339/3HDDDQFjyte+9jUcdthh/vuzzz4b/fv3xz333ONfd8cdd8Ree+2FO+64A+eee65/7De/+U2/3uy4447461//in/84x848sgjsemmm6Jfv34YNmxYYhjX+PHj8aMf/QjXXXcdrr76av/37LjjjvjWt76FnXfeOfFetbe34/rrr0dTUxN22mknPProo5g5cyYefPBBDBw4EADwz3/+E6+++mridZL48ssv0b9/f5x77rnYdtttAQDbb789PvvsM9/guPbaa2PYsGGBsDXVYwgoG9X69euHX/3qV/693X333XHggQfi6quv9r3OvPvi3esdd9wRzz//PP7xj3/g7LPPxuTJkzFv3jwcffTR2HrrrQGUDY8PPPAAFi9e7P9uQgghpB6gBxIhhJCVmpdffhmbbbaZ/7fTTjvhrLPOwpgxY3DttdcGEmiPHj3aNx5FMWnSJGy55Za+8QgoGy/+/ve/Y/z48XjhhRfgOA7Gjx+P7u5u/2/PPffErFmz8OGHH0Ze96WXXsJWW23lGxA8DjroIMyaNQsfffQRBgwYgL322isQ1vXkk09ixx13xKhRo7B06VK88cYbGD9+vG806+7uxlprrYX11lsPzz//fODannFDgq222sp/PXz4cADA5ptv7n/mOA4GDx7se2BkvW9hPv74Y8yaNcs3qHmsvfba2Gqrrao8R/K4B67rxiZh1+GFF17AJptsglGjRvm/u6GhAbvtthv+9a9/BY4Ny/vvf/8b48aNQ2trq39ue3s7tt1226pz1WcClOtt2Giiw7e//W0899xzmDhxIr797W9jtdVWw1/+8hccf/zxuOqqqxLP3XzzzQOGwOHDh+MrX/lKwIgyZMiQmjxzRo0ahV/96lfYZpttMHXqVDz//PP49a9/jVdffRWdnZ3a13nppZewxx57BHI9NTU14YADDsBbb72FxYsX+5+HjW7qvd1ggw0wbNgwnHzyyfjRj36Ev/zlLxg+fDj+93//F6uuumrm30kIIYRIQA8kQgghKzWbbbYZLrnkEgBlw0VLSwtWW221yJ3D2traEq81f/58rLnmmonfu67rexqE+fLLLyONFgsWLAiE0nl4xpeFCxcCAA4++GA8/vjjeO+99zB8+HC8+OKLuOKKK/xjSqUSfvGLX+AXv/hF1bVaWloC7wcMGBD7O2ol6t4mlZf1vkVdB6jcN5Xhw4cH8gqlyaTLF198gQ033DDz+fPnz8enn36KzTbbLPL7pUuX+q/D8s6fPx9//OMfI3NFhXd4a21tDbxvaGgI5KAyoX///th7772x9957AwA+/fRTnH/++bj77rtx6KGHxt4P03qRlccffxzXXXcdZsyYgSFDhmCTTTap+v1pLFiwILYeua6Ljo4O/7P+/fsHjlHvbVtbG37zm9/g1ltvxVNPPYUHHngAra2tOPjgg3HhhRcmGqwJIYQQ29CARAghZKWmra0NY8eOzeVaAwcODCSk9njhhRew5pprYuDAgRgwYAB+9atfRZ6/zjrrRH4+ePBgzJo1q+pz77OhQ4cCKIfHjBgxAk899RRGjBiBlpYWf9ertrY2OI6DY489FgcccEDVtcKT3Hoi630LM2TIEACIDCmbNWuWfx/zYvLkyZg1a1YgNNCUgQMHYty4cYHQOpUkA8PAgQOx00474bjjjqv6LipUshZ6enqw995745BDDsEZZ5wR+G6dddbBhRdeiEMOOQSTJ0+uyaAWV7ZKkufUK6+8gnPPPRdHHXUUTjjhBIwaNQoAcPXVV0fmqopj8ODBsfUIKLfJL7/8Uutao0eP9pOWv/nmm/j973+P++67D2uvvXZkrjVCCCGkKBjCRgghhOTEtttuizfeeCNgRJozZw6++93v4plnnsG4ceOwZMkSuK6LsWPH+n8ffPABbr755kAuJpXtttsOr732GqZNmxb4/PHHH8eIESN8A0pjYyO+/vWv4+9//zuefvpp7LXXXr4HR3t7OzbddFN89NFHgbI32GAD3HTTTXjxxReF7krtZL1vYb7yla9gxIgReOKJJwKff/7553j99ddjPZyycuONN6K1tRXf+MY3Ml9j3Lhx+Pjjj/GVr3wl8Nt///vf46GHHvJzWcWdO3nyZGyyySb+eWPGjME999yDv/zlL0ZyNDQkDxkbGxsxcuRIPPzww4Fd0jy8pPR5G4/a29sxc+bMwGdJOZJee+01lEolnH766b7xqKenxw/pK5VKANJ/73bbbYe///3vAU+jnp4ePPnkkxg7dqy259DTTz+NHXbYAbNmzUJjYyO22morXHzxxRg0aJC/AyQhhBBSL9ADiRBCCMmJY489Fo899hi++93v4qSTTkJzczNuvfVWrLrqqvj617+OgQMHYrvttsMpp5yCU045Beuttx7efPNN3Hjjjdh1112rwoo8jjvuODz++OM49thjcdppp2HIkCF47LHH8O9//xtXXHFFYLJ78MEH46677kJDQ0NVqNpZZ52FE088EWeffTYOOuggf6exN954A6eccorovamF8ePHZ7pvYRoaGnDWWWdhwoQJ/j2YN28eJk6ciMGDB0d66ujwxRdf+Nuud3d3Y+bMmXj00Ufx3HPP4dJLL60pl82xxx6L3//+9zj22GNx/PHHY+jQofjjH/+I3/3ud5gwYULiuaeccgqOPPJInHTSSfjWt76FlpYWPPDAA/jrX/9qvJPZoEGD8M477+Cll17C5ptvHhnydeGFF+Koo47CoYceiqOPPhqbbLIJSqUSXn75Zdxzzz048sgjsf766xuVm8buu++OJ598EltssQXWWWcdPPLII4GdCMN4ubYuvfRSHHbYYViwYAF+85vf4L333gNQ9l5qb2/HoEGDMHv2bDzzzDOR4ZGnnXYann32WRx99NE48cQT0dzcjHvvvReff/457rjjDm35t956a5RKJZx66qk48cQT0dbWhqeeegqLFi3yvQcJIYSQeoEGJEIIISQnVlttNfz2t7/FNddcg/POOw/9+vXD9ttvj+uvvx6DBw8GANx+++244YYbcNttt2HOnDkYNWoUjjvuOH8HrChGjBiB++67D9deey1+/OMfo6urCxtvvDFuueUWfPWrXw0cu/HGG2PDDTfEvHnzsOOOOwa+22WXXXDnnXdi4sSJOOOMM9Dc3IzNNtsMd999d+LuWkXT0NCQ6b5Fceihh6KtrQ233XYbTj31VLS3t2PXXXfFWWedFUh+bsJDDz3k77rV0NCAIUOGYIsttsDdd99d9QxMGTVqFO6//35ce+21uPjii7F8+XKsu+66uPzyy3H44YcnnrvxxhvjN7/5Da6//nr88Ic/hOu62HDDDXHzzTdX1Zs0jj/+eFxxxRU44YQTcPfdd/s7mKmMGTMGjz32GG677Tbce++9vlfN+uuvj/PPPz9V3ixMmDAB3d3d+MlPfoKmpibsv//+OPvss3HhhRdGHr/99tvjRz/6Ee6++248/fTTGD58OLbffntMnDgRp556KiZNmoTx48fj0EMP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vvlI0wOJEGIBjbmqSwsSIYWgFzIjnDcwZJji2LmaJcu6MWPuYqtlrjasDQNa9abkruviggt+iPXX3wB33/0bzJ49G9dccwUaGhpw+uln49vfPgwPPng/9ttvf9x88w045ZT/wahRq+K11ybhZz+7Bj/60WXYcMON8eGH7+Hiiy/E2LFbYddd9wAAPPjgfTjjjLNx4omn4IorLsEZZ3wfe+zxVdx22z148MH7cc01V2D33ff0Zbn77ttxySVXoqenG5dd9iP0798fJ510akDeOXNm44c//AFOPPEUbL/9Tnj77f/g8ssvwdChw7DFFlv5VdILu1ZbyZLFHejsXI7hw0f4nzU1NWHQoMH48ssvMWbM5th++x3970qlEh555HfYZpvtAKDqN7/33ju47LIfYeQW/TFg1BitQepjjz2Ec8+9EOuttz5uuOFa/PjHP8LEibejo6MDP/zhD3DEEd/GRRdditmzZ+GKKy7FvffejR/84H/x8MMP4LXXXsV1192M1tZW/PSnV+LGG6/DZZddhQ8//ACXX34xzjlnAsaOHYPXX38ZZ555On75y/uw5ppradWDoslkQPrTn/6EVVZZBW+99RbeeuutwHeO49CARHIn3gPJtyARQmzhKfyUw1w2T0KsEQiXibXuehNUtkpCpAk4IBl4IEk1z6ok2uwGAixZ1o0f3vovLFke7UkjxYCWJlz9/Z20jEiTJr2ML76YgdtvvwcNDQ1Ye+11ceqpP8AVV1yCY4/9Lk477UzccMNP8dprr2CDDTbCwQcfCgDo338AzjvvIowfXzYArbXWmvjd736Ljz/+yDcgbbTRJvjGNw4HAOy993648cZr8YMfnIOWllYcfvgReOyxhzB37lxfllNOOQNbbLElAOC73z0Zt956E0488ZSAvI888iC23XYcDjvsCADAmmuuhQ8+eB+/+91vywak8A9U2knn8uUAgObm5sAhzc3N6OrqrLo3t9xyI95//33ccccvI3/zaqutjvvv/w2+XDQTA0aN0TLpfuMb38Tee+8HADjvvIvwzW8ehE8//QTt7e045pjv4sgjvw3HcbD66mtg9933xLvvvg0AmDFjBlpaWrDaaqth0KDBuOCCi7FgwQIAwP33/xpf//oh2Gef/dDU1IDNN98Ezz//Ah599CGcfvqZGlIVj5EB6YsvvsBf/vIX3/to1VVXlZKLEC0XXi6mEmKfhE0zoo/nKJUQeQx0JpUmIfKYNjPpMS1Vcd/n008/xsKFC7DvvuP9z0qlEpYvX44FC+bja187EH/84x/w4osv4L77HvGP2XjjTdDS0oI777wNH388BR99NAWff/4ZttlmnH/M6quv4b9uaWnB0KHD0NLS6r8HEDDcjB27pXL9TTF//jzMnz+/St7nn/8n9t57V/+z7u5urLXW2uU3vgdS739lYNncu1lXV1dX4JpdXV3+Lmwet9xyIx588D5ccskVGD16/cjfPGXKZEyd+jmGb7hqb5npg9hNNtnMf73aaqtj0KDB+OSTjzF+/B742tcOxAMP/AYffvgBPvnkY0ye/AHGjt0CAHDQQd/AX//6Jxx00L7YaqttsNtue2D//Q8EAHzyySf46KO/4vHHy8/HcRx0dnZi3LgdqwWoU7QNSK+88gq++93vYtmyZQCAAQMG4MYbb8Quu+wiJhwhHqlJtKkVCbGIF7OerHx1lDMhJB+CHkgxB9ErkBCLpOfyDCBu4Q2HsBGVAa1lT6B6DmHr6enB2muvi6uuurbqu7a2dixZsgTTpk0FUM495BmFXnzxBUyYcA72229/7LDDTvjud0/C9ddfHTi/sbEx8L6hITlVclNTReZSqaf3nGCt6unpwT77fA1HH3185LlOKAeS2k4GDx6Mfv1aMGfObKyzzroAysanhQsXYJVVhvvHXX/91XjssYdx0UWXYvfdv+p/Hv7Nxx13Iq699irMWJ74swI0NgbvQalUQnNzM2bN+hLf/e5R2GijTbDtttvjoIO+gX/96zm8/fZ/AACjR6+Hhx76A/71r+fwr3/9E7fdNhF/+cvTuPnmX6Cnpwff/vYx2G+/A9DY6GDw4AFYsGAJmpr6zu722gakG264ATvuuCMuueQSNDY24tJLL8VVV12FJ554QlI+QgAkbUlMCLGNbg5tQkgxpNiPuOZCiGV0ciBxa/HiGdDahPVWH1y0GLGstdY6mDnzCwwZMhTt7e0AgJdf/jf++McncOGFl+AXv7gVgwcPxlFHHYeJE6/HDjvsjKFDh+IPf3gUBxxwEM4++9zeK5Xw2WefBRJUm/Lhh+9jq622AQC89967GD58BAYPHlIl71tvvRnI7XPfffeiq6szaFSKmOc1NDRgk002xZtvvo6tt94WAPD22/9BY2MT1l9/QwDAXXfdjsceexgXX3w59thjr8D54d/c3d2NadOmoqE3p5KOUXfKlMl+CNznn3+Gjo5FWHvtdfDss3/HwIGDcfXVP/OPfeihB/zXTz31BPr164evfnUf7LnnXnjrrf/g5JOPw7x5c7H22utgxoxpWHPNtdDU1IChQ9tw6aWXY80118bXv35IulB1gPYubO+88w7OPvtsjBw5EqussgrOP/98TJkyBR0dHeknE5IBkwEux8KE2MO0vXGySog8Zu2MjZIQabLqPimdGb4uw8v7HuPG7YBVV10Vl156EaZMmYw33ngNV199BVpbW/Hhh+/jkUd+h7POOhcHH3woVlttDdx003UAgEGDBuOtt97AlCmT8dFHU3DZZf8Ps2bNQmdnV0qJ8dxww7V477138PLLL+KOO36OQw/9ZtUxhx76Tbz33ru4/fZb8Pnnn+HPf34at99+M1ZddbXyAQlV0AHwjW8cjvvu+zWeffYfePfdt/HTn16Jgw46BK2trfjkk4/xy1/eie9851hsvvmWmDNntv8X9ZuvuOISzJkzG26pnONKx1z7wAO/wTPP/B8+/PADXHHFJdh5512x5pprYdCgwZg58wu88spLmDZtKu699x4888z/obOzHOK3eHEHbrjhWrzyykuYPn0a/vKXpzBy5CgMHjwE//Vf/42//vXPePDB+zF16ue45557cP/9v6mE9fUBtD2QlixZgiFDhvjvR40ahebmZixYsMC3gBKSJ1pqjduEE2IfwyTahBDbxHjtUmcSUgwGIWx2AthIX6SxsRFXXXUdfvaza3Diicegf/8B2GOPvfD975+GU0/9HvbZ52t+Hp6zzvohTj75eOy33wE4/viTcMUVF+Okk45FW1s7dtppF3zrW9/CBx+8l1mWr351b/zv//4ArlvCIYccju9859iqY1ZddTX85CfX4dZbb8J99/0aw4ePxGmn/QD77PM1AMquvt7/QDtxsNde+2LGjBm45por0NXVifHj98T3v38GAOCf/3wGPT09+OUv78Qvf3lnoNznnnul6jfvuOPOOOSQw/HXf70ZVVgkRx75HfziF7di+vTp2GGHnfDDH14AANhzz73xxhuv4cILz4XjONhkk01x2mk/wJ133obOzk4ceuh/4csvv8Rll/0IixYtxEYbbYKrrroWjY2NGDNmLC666FLcddftuOWWG7D22mvj0kuvqMkbzDba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MBMnTjSnnHKK9fhVV11l9t9/f/PEE0+YV1991RxzzDFm1qxZqceyatUqM23aNPPTn/7U9PT0mFmzZpn999/frFq1yhhjzA033GAOPvhgM2/ePLNgwQJz2mmnmTPOOMP5b+vP8ZdNmdvChg0bzIQJE8y8efPMhx9+GP9Zv359qz/OAa/M7eHJJ580u+++u7nzzjtNT0+P+Yd/+AdzzDHHmN7e3lZ/nANeO7eHqvfff9/MmDHDjBs3znr8oYceMlOmTDFPPPGEeeedd8z3vvc9M2PGDFOpVPL++NpKmdvCxx9/bI0Rd955p5kyZYr505/+lPfH13bauT18+OGHZt999zVXX321eeedd8x//ud/mgkTJpjHH3881/GXUZnbA3NJW5nbQmjzyIH0u6havny5mTZtWsM43Or7PfLII2b33Xc3F154YZ4fmYUAUp2enh4zbtw4s2TJkvixRx55xBxwwAHm97//vZk0aZL1CzjttNPMddddF3//r//6r2avvfYyRx11lNWgKpWKmTx5srn//vvjx1566SWz5557mpUrVzY9lvvuu88ccsgh8aS8UqmYww47zDzwwAPxZz366KPx6x977DGz9957p/7b+nP8ZVTmtrBo0SKz2267mTVr1rh/SCVS5vZw9tlnm+9///vxc6tXrzZTp041Tz75ZOp7trt2bg/GGPM///M/Zr/99jNHH310w2Rlzpw55p577om/f+ONN8y4cePMRx995HzPdlXmtpD0ySefmP3228/ce++9zvdrd+3cHu666y7zpS99yXrskksuMd/73vcyj7+sytwemEvaytwWQptHDqTfRdXFF19sTjrppMwAUtb7rV+/3lx66aVmwoQJ5vDDD28pgMQStjqjR4+WW2+9Vbbddlvr8ZUrV8rLL78se+yxhwwdOjR+fMqUKfLSSy/F3z/99NNy2223yeGHH279/b/85S+yatUqmThxYvzY+PHjZf369alpZS+//LJMmTJFoigSEZEoimSfffaJP+/cc8+Vww47TEREPv74Y7nvvvtk6tSpqf+2/hx/GZW5LfT09MgOO+wggwcPTn2Psilze3jvvfespStDhgyRnXbayfr3lU07twcRkSeeeEK+853vyMUXX9zw3MyZM+VrX/uaiIisWLFC7rrrLtl1111lm222cb5nuypzW0i67bbbZPTo0XL88cc7X9fu2rk9VJd51Fu5cmXm8ZdVmdsDc0lbmdtCaPPIgfS7EBGZN2+ezJs3T84555zMf1vW+3366acyf/58uffee2Xy5MmZ79cMAaQ6I0aMkOnTp8ffVyoVmTNnjuy3336yZMkS2W677azXjxo1Sj744IP4+7vvvrtpB9tqq61kiy22kMWLF8eP/fnPfxYRkaVLlzY9ljyfJyJy3XXXyf777y8vvPCCcx1jf46/jMrcFhYuXChbbLGFfOMb35Bp06bJKaecIq+88krq+5VBmdvDqFGj5MMPP7T+7YsXL049vjJo5/YgInL55ZfLSSed5HzN/fffL/vuu688+OCDcumll8aTlbKhLYisXr1a5syZI+ecc450dJR7atnO7WHHHXeUSZMmxd9//PHH8l//9V/yhS98IfP4y6rM7YG5pK3MbSG0eeRA+l2sW7dOLrnkErn00ktlyJAhmf+2rPcbMWKE3HPPPbLbbrtlvleaco/yOcyePVtef/11+e53vyurV6+WQYMGWc8PGjRI1q1bl/k+XV1dcthhh8k111wjH3zwgaxYsUKuvPJK6erqkvXr1zf9O3k/75hjjpH7779fvvCFL8iZZ55p3Qlq5f3QXJnawjvvvCPLly+Xr371q3LLLbfILrvsIqeddlp8EkS52sMRRxwhd999t7z44ouyfv16uemmm+Tjjz9OPb4yaqf2kNf+++8vDz74oJx44onyd3/3d/Lee+/16/3aRRnbwn//93/L0KFDyTppol3bw5o1a+Tb3/62bLvttnFGIrKVqT0wl3QrU1sIfR4Z8u/i5z//uey5555ywAEH5Pq3aFzvE0BymD17ttxxxx0ye/ZsGTdunAwePLjhh79u3bpc0UARkR/96EcybNgw+eIXvygHHnig7LPPPrLVVlvJ8OHD5aabbpLJkyfHf/73f/839+eNGTNGJkyYIP/8z/8sa9askUcffVQefvhh6/0efvjhfh9/mZWtLcyaNUsee+wxOfTQQ2XPPfeUH//4x7LjjjvKQw891NcfXVsqW3s48cQT5cgjj5SZM2fKxIkTZcGCBXLggQfK8OHD+/qja0vt1h7y+sxnPiN77LGH/OhHP5IddthB5s6dm/vvtquytoXf/OY3csQRR0hXV1fuv1MG7doeVq1aJd/4xjdk0aJFcvPNN0t3d3eLP6FyKVt7YC6ZrmxtIeR5ZMi/i7feekvuvfde+eEPf9j0s/rzu+0PRvoUs2bNkrvvvltmz54tM2bMEBGR7bffXnp6eqzXffTRRw1pYmlGjRol//7v/y7Lli2TwYMHizFGrr76avnsZz8rkydPli9/+cvxa7fffnvZfvvtG7ZMTH7e448/LnvssYdsv/32IiIyePBg+au/+itZunSpfO1rX7PWX44aNUref//9fh1/WZWxLXR1dVkn9SiKZOzYsVZKZlmVsT10dnbKP/7jP8r3v/99Wbt2rYwcOVJOOOEEmTZtWq5/Xztrx/aQ5ZlnnpHttttOxo4dKyK180OZlzSKlLMtiGycmM6bN0/OPvvsXK8vi3ZtDytXrpSzzjpL3n33Xbnjjjtk55137tsPpqTK2B6YSzZXxrYQ6jwy9N/Fo48+KsuXL4/rUfX29oqIyOTJk+Wyyy6Tk046qc+/282BDKQmrr/+ernnnnvkmmuukSOPPDJ+fOLEifLaa6/JmjVr4seef/55qxO5XHDBBfLUU0/JyJEjpbu7W373u9/JqFGj5HOf+5yMHDlSxowZE/8ZMmSITJw4UV588UUxxoiIiDFGXnjhhfjzrrzySuuO78qVK2XRokWyyy67yPDhw633Gz58eL+Pv4zK2hZOPfVUuf766+PnKpWKzJ8/P75gLKuytofbb79dbrnlFunu7paRI0fKhx9+KG+88Ubp61y0a3vI8otf/EJuv/32+Pve3l558803ZZdddsn172tHZW0LIiLz58+XDRs2WAVSy65d20OlUpFzzz1X/vSnP8mdd94pu+6662b4abW/srYH5pKNytoWQpxHDoTfxSmnnCK//vWvZe7cuTJ37ly5/PLLRURk7ty5csghh7T0u90cCCDVWbhwodxwww3y9a9/XaZMmSJLliyJ/0ydOlV22GEH+cEPfiALFiyQW265RV555RU54YQTcr33yJEj5dprr5W33npLnn32WZk1a5acffbZqQUnv/SlL8knn3wiP/nJT6Snp0d+8pOfyOrVq+NI48yZM+W2226T3/3ud7JgwQK54IILZKeddpIDDzyw6fv19/jLpsxt4ZBDDpHbb79dfvvb38rbb78t//RP/yQrVqyQ4447roWfZHsoc3vYcccd5Re/+IU888wzsmDBAjnvvPPki1/8oowbN66Fn2R7aOf2kOXkk0+WX/3qV/LII4/I22+/LT/+8Y9lzZo1cuyxx7b0fgNdmduCiMiCBQtkxx13bKi5UFbt3B7uv/9+efbZZ+Xyyy+XESNGxP+uZcuWtfSzKoMytwfmkrYyt4XQ5pED5XdRHyCqZoS5bvJk/W43CwPLzTffbMaNG9f0jzHGLFq0yMycOdPstdde5sgjjzRPP/100/e57rrrzCmnnGI9tnLlSnPBBReYKVOmmOnTp5ubb74583hefvllc+yxx5oJEyaYE044wbz22mvxc729vebmm282Bx10kNl7773NN7/5TfPBBx84368/x182ZW4LlUrF3Hjjjeaggw4ye+21l5k5c6aZP39+5jG2szK3B2OMuemmm8y0adPMvvvuay666CKzYsWKzGNsZ+3eHqqeeeaZ+N+UdN9995nDDz/cTJgwwZx66qmmp6cn1/u1o7K3hZtvvtmceOKJud6jDNq5PZx55plN/13N5ovMIzcqc3tgLmkrc1swJqx55ED6XSSljcOtvt+FF15oLrzwwsz3qxcZsym/CQAAAAAAAGiCJWwAAAAAAABwIoAEAAAAAAAAJwJIAAAAAAAAcCKABAAAAAAAACcCSAAAAAAAAHAigAQAAAAAAAAnAkgAAAAAAABwIoAEAAAAAAAApy7fBwAAABCCiy66SB588MHM182fP1/haAAAAMISGWOM74MAAADwbcWKFbJmzZr4+wMOOEB++MMfyhFHHCEiIsYYiaJIRo8e7esQAQAAvCEDCQAAQES23HJL2XLLLRseI2AEAABADSQAAIBcfvWrX8n48ePj78ePHy+//OUv5eSTT5YJEybIl7/8ZXnhhRfkl7/8pRx00EGyzz77yN///d9bWU0vvPCCzJw5U/bee2856KCD5LLLLpOVK1f6+OcAAAD0CQEkAACAFl177bVy1llnyUMPPSRbbrmlnHPOOfKb3/xGbrnlFrniiivksccek/vuu09ERN58800544wzZPr06fLwww/LVVddJa+99pqceeaZQkUBAAAQOgJIAAAALTr++OPlkEMOkbFjx8oxxxwjy5cvl0svvVTGjRsnM2bMkN13310WLFggIiK33XabTJs2Tc455xzZeeedZd9995Wrr75aXn75ZZk3b57nfwkAAIAbNZAAAABaNGbMmPjr7u5uERHZaaed4seGDBki69atExGR119/Xf74xz/K5MmTG95n4cKF8vnPf77gowUAAGgdASQAAIAWdXU1TqU6OponeFcqFTn66KPlnHPOaXhum2222ezHBgAAsDmxhA0AAEDBrrvuKj09PTJmzJj4z4YNG+SKK66QP//5z74PDwAAwIkAEgAAgIIzzzxTXn/9dbnssstk4cKF8uKLL8r5558vixYtkp133tn34QEAADgRQAIAAFAwadIkufXWW+WNN96Q4447Tr75zW/KX//1X8vtt98ugwYN8n14AAAATpFh31gAAAAAAAA4kIEEAAAAAAAAJwJIAAAAAAAAcCKABAAAAAAAACcCSAAAAAAAAHAigAQAAAAAAAAnAkgAAAAAAABwIoAEAAAAAAAAJwJIAAAAAAAAcCKABAAAAAAAACcCSAAAAAAAAHAigAQAAAAAAACn/w/ya/W1l3exQgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ "# Convert the 'time' column to datetime\n", "df[\"time\"] = pd.to_datetime(df[\"time\"])\n", "\n", "# Plot the data\n", "plt.figure(figsize=(14, 7))\n", - "sns.lineplot(data=df, x=\"time\", y=\"Price\", hue=\"simulation\")\n", + "# Loop through each simulation and plot\n", + "for simulation in df[\"simulation\"].unique():\n", + " subset = df[df[\"simulation\"] == simulation]\n", + " plt.plot(subset[\"time\"], subset[\"Price\"], label=simulation)\n", + "\n", "plt.title(\"Price over Time for Different Simulations\")\n", "plt.xlabel(\"Time\")\n", "plt.ylabel(\"Price\")\n", "plt.legend(title=\"Simulation\")\n", "plt.show()" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From e474668293e627ef9bde6691f72aaf60d0eb9b8d Mon Sep 17 00:00:00 2001 From: Nick Harder Date: Thu, 26 Sep 2024 17:15:37 +0200 Subject: [PATCH 05/27] -add a draft tutorial on market zone coupling --- .../notebooks/08_market_zone_coupling.ipynb | 1444 +++++++++++++++++ .../08_market_zone_coupling.ipynb.license | 3 + 2 files changed, 1447 insertions(+) create mode 100644 examples/notebooks/08_market_zone_coupling.ipynb create mode 100644 examples/notebooks/08_market_zone_coupling.ipynb.license diff --git a/examples/notebooks/08_market_zone_coupling.ipynb b/examples/notebooks/08_market_zone_coupling.ipynb new file mode 100644 index 00000000..15220fd2 --- /dev/null +++ b/examples/notebooks/08_market_zone_coupling.ipynb @@ -0,0 +1,1444 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "21658e52", + "metadata": {}, + "source": [ + "# Market Zone Coupling in the ASSUME Framework\n", + "\n", + "Welcome to the **Market Zone Coupling** tutorial for the ASSUME framework. In this workshop, we will guide you through understanding how market zone coupling is implemented within the ASSUME simulation environment. By the end of this tutorial, you will gain insights into the internal mechanisms of the framework, including how different market zones interact, how constraints are managed, how bids are assigned, and how market prices are extracted.\n", + "\n", + "**We will cover the following topics:**\n", + "\n", + "1. **Introduction to Market Zone Coupling**\n", + "2. **Setting Up the ASSUME Framework for Market Zone Coupling**\n", + "3. **Understanding the Market Clearing Optimization**\n", + "4. **Creating Exemplary Input Files for Market Zone Coupling**\n", + " - 4.1. Defining Buses and Zones\n", + " - 4.2. Configuring Transmission Lines\n", + " - 4.3. Setting Up Power Plant and Demand Units\n", + " - 4.4. Preparing Demand Forecast Data\n", + "5. **Mimicking the Market Clearing Process**\n", + " - 5.1. Calculating the Incidence Matrix\n", + " - 5.2. Implementing the Simplified Market Clearing Function\n", + " - 5.3. Running the Market Clearing Simulation\n", + "6. **Integrating with ASSUME**\n", + "7. **Analyzing the Results**\n", + "\n", + "Let's get started!" + ] + }, + { + "cell_type": "markdown", + "id": "ffdfa0a7", + "metadata": {}, + "source": [ + "## 1. Introduction to Market Zone Coupling\n", + "\n", + "**Market Zone Coupling** is a mechanism that enables different geographical zones within an electricity market to interact and trade energy seamlessly. By coupling market zones, we can simulate more realistic and complex market dynamics, considering factors like transmission constraints, regional demand and supply variations, and cross-zone trading.\n", + "\n", + "In the ASSUME framework, market zone coupling involves:\n", + "\n", + "- **Defining Multiple Market Zones:** Segmenting the market into distinct zones based on geographical or operational criteria.\n", + "- **Establishing Connections Between Zones:** Setting up transmission lines that allow energy flow between different market zones.\n", + "- **Configuring the Market Clearing Process:** Adjusting the market clearing algorithm to account for interactions and constraints across zones.\n", + "\n", + "This tutorial will walk you through each of these steps, providing code examples and configuration guidelines to help you set up market zone coupling effectively." + ] + }, + { + "cell_type": "markdown", + "id": "39361ba8", + "metadata": {}, + "source": [ + "## 2. Setting Up the ASSUME Framework for Market Zone Coupling\n", + "\n", + "Before diving into market zone coupling, ensure that you have the ASSUME framework installed and set up correctly. If you haven't done so already, follow the steps below to install the ASSUME core package and clone the repository containing predefined scenarios.\n", + "\n", + "**Note:** If you already have the ASSUME framework installed and the repository cloned, you can skip executing the following code cells." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5f5b70bb", + "metadata": {}, + "outputs": [], + "source": [ + "# Install the ASSUME framework\n", + "# !pip install assume-framework\n", + "\n", + "# Install Plotly if not already installed\n", + "# !pip install plotly" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "91a4bbf7", + "metadata": {}, + "outputs": [], + "source": [ + "# Clone the ASSUME repository containing predefined scenarios\n", + "# !git clone https://github.com/assume-framework/assume.git assume-repo" + ] + }, + { + "cell_type": "markdown", + "id": "4a049632", + "metadata": {}, + "source": [ + "Let's also import some basic libraries that we will use throughout the tutorial." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cfa74a9d", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "\n", + "# import plotly for visualization\n", + "import plotly.graph_objects as go\n", + "import seaborn as sns\n", + "\n", + "# Function to display DataFrame in Jupyter\n", + "from IPython.display import display" + ] + }, + { + "cell_type": "markdown", + "id": "95e7d6fc", + "metadata": {}, + "source": [ + "**Select Input Files Path:**\n", + "\n", + "Depending on whether you're using Google Colab or a local environment, the input file paths may vary. The following code snippet helps differentiate between these environments and sets the appropriate input paths." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fdda1af9", + "metadata": {}, + "outputs": [], + "source": [ + "import importlib.util\n", + "\n", + "# Check if 'google.colab' is available\n", + "IN_COLAB = importlib.util.find_spec(\"google.colab\") is not None\n", + "\n", + "colab_inputs_path = \"assume-repo/examples/inputs\"\n", + "local_inputs_path = \"../inputs\"\n", + "\n", + "inputs_path = colab_inputs_path if IN_COLAB else local_inputs_path\n", + "\n", + "print(f\"Using inputs path: {inputs_path}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3ae63334", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "104d2285", + "metadata": {}, + "source": [ + "## 3. Understanding the Market Clearing Optimization\n", + "\n", + "Market clearing is a crucial component of electricity market simulations. It involves determining the optimal dispatch of supply and demand bids to maximize social welfare while respecting network constraints.\n", + "\n", + "In the context of market zone coupling, the market clearing process must account for:\n", + "\n", + "- **Connection Between Zones:** Transmission lines that allow energy flow between different market zones.\n", + "- **Constraints:** Limits on transmission capacities and ensuring energy balance within and across zones.\n", + "- **Bid Assignment:** Properly assigning bids to their respective zones and considering cross-zone trading.\n", + "- **Price Extraction:** Determining market prices for each zone based on the cleared bids and network constraints.\n", + "\n", + "The ASSUME framework uses Pyomo to formulate and solve the market clearing optimization problem. Below is a simplified version of the market clearing function, highlighting key components related to zone coupling." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21f17651", + "metadata": { + "lines_to_next_cell": 1 + }, + "outputs": [], + "source": [ + "# Display a simplified version of the market clearing optimization function\n", + "import pyomo.environ as pyo\n", + "from pyomo.opt import SolverFactory, TerminationCondition\n", + "\n", + "\n", + "def simplified_market_clearing_opt(orders, market_products, nodes, incidence_matrix):\n", + " \"\"\"\n", + " Simplified market clearing optimization focusing on zone coupling.\n", + "\n", + " Args:\n", + " orders (dict): Dictionary of orders with bid_id as keys.\n", + " market_products (list): List of MarketProduct tuples.\n", + " nodes (list): List of market zones.\n", + " incidence_matrix (dict): Transmission capacity between zones.\n", + "\n", + " Returns:\n", + " model (ConcreteModel): The solved Pyomo model.\n", + " results (SolverResults): The solver results.\n", + " \"\"\"\n", + "\n", + " model = pyo.ConcreteModel()\n", + " # define duals suffix\n", + " model.dual = pyo.Suffix(direction=pyo.Suffix.IMPORT)\n", + "\n", + " # Define the set of time periods\n", + " model.T = pyo.Set(initialize=[mp[0] for mp in market_products], doc=\"timesteps\")\n", + " # Define the set of zones (nodes)\n", + " model.nodes = pyo.Set(initialize=nodes, doc=\"nodes\")\n", + "\n", + " # Decision variables for bid acceptance ratios (0 to 1)\n", + " model.x = pyo.Var(\n", + " orders.keys(),\n", + " domain=pyo.NonNegativeReals,\n", + " bounds=(0, 1),\n", + " doc=\"bid_acceptance_ratio\",\n", + " )\n", + "\n", + " # Decision variables for power flows between zones at each time period\n", + " model.flows = pyo.Var(\n", + " model.T, model.nodes, model.nodes, domain=pyo.Reals, doc=\"power_flows\"\n", + " )\n", + "\n", + " # Energy balance constraints for each zone and time period\n", + " def energy_balance_rule(model, node, t):\n", + " \"\"\"\n", + " Ensures that for each zone and time period, the total supply minus demand plus imports minus exports equals zero.\n", + " \"\"\"\n", + " # Sum of accepted bid volumes in the zone at time t\n", + " supply = sum(\n", + " orders[o][\"volume\"] * model.x[o]\n", + " for o in orders\n", + " if orders[o][\"node\"] == node and orders[o][\"time\"] == t\n", + " )\n", + " # Sum of power flows into the zone\n", + " imports = sum(\n", + " model.flows[t, other_node, node]\n", + " for other_node in nodes\n", + " if other_node != node\n", + " )\n", + " # Sum of power flows out of the zone\n", + " exports = sum(\n", + " model.flows[t, node, other_node]\n", + " for other_node in nodes\n", + " if other_node != node\n", + " )\n", + " # Energy balance: supply + imports - exports = 0\n", + " return supply + imports - exports == 0\n", + "\n", + " # Apply the energy balance rule to all zones and time periods\n", + " model.energy_balance = pyo.Constraint(\n", + " model.nodes, model.T, rule=energy_balance_rule\n", + " )\n", + "\n", + " # Transmission constraints based on the incidence matrix\n", + " if incidence_matrix is not None:\n", + "\n", + " def transmission_rule(model, t, node1, node2):\n", + " \"\"\"\n", + " Limits the power flow between two zones based on transmission capacity.\n", + " \"\"\"\n", + " capacity = incidence_matrix[node1].get(node2, 0)\n", + " return (-capacity, model.flows[t, node1, node2], capacity)\n", + "\n", + " # Apply the transmission constraints to all possible flows\n", + " model.transmission_constraints = pyo.Constraint(\n", + " model.T, model.nodes, model.nodes, rule=transmission_rule\n", + " )\n", + "\n", + " # Objective: Minimize total cost (sum of bid prices multiplied by accepted volumes)\n", + " model.objective = pyo.Objective(\n", + " expr=sum(orders[o][\"price\"] * orders[o][\"volume\"] * model.x[o] for o in orders),\n", + " sense=pyo.minimize,\n", + " doc=\"Total Cost Minimization\",\n", + " )\n", + "\n", + " # Choose the solver (GLPK is used here for simplicity)\n", + " solver = SolverFactory(\"glpk\")\n", + " results = solver.solve(model)\n", + "\n", + " market_clearing_prices = {}\n", + " for node in nodes:\n", + " market_clearing_prices[node] = {\n", + " t: pyo.value(model.dual[model.energy_balance[node, t]]) for t in model.T\n", + " }\n", + " # Check if the solver found an optimal solution\n", + " if results.solver.termination_condition != TerminationCondition.optimal:\n", + " raise Exception(\"Solver did not find an optimal solution.\")\n", + "\n", + " return model, results" + ] + }, + { + "cell_type": "markdown", + "id": "28be160a", + "metadata": {}, + "source": [ + "The above function is a simplified representation focusing on the essential aspects of market zone coupling. In the following sections, we will delve deeper into creating input files and mimicking the market clearing process using this function to understand the inner workings of the ASSUME framework." + ] + }, + { + "cell_type": "markdown", + "id": "9afe9795", + "metadata": {}, + "source": [ + "## 4. Creating Exemplary Input Files for Market Zone Coupling\n", + "\n", + "To implement market zone coupling, users need to prepare specific input files that define the network's structure, units, and demand profiles. Below, we will guide you through creating the necessary DataFrames for buses, transmission lines, power plant units, demand units, and demand forecasts." + ] + }, + { + "cell_type": "markdown", + "id": "dfe79e27", + "metadata": {}, + "source": [ + "### 4.1. Defining Buses and Zones\n", + "\n", + "**Buses** represent nodes in the network where energy can be injected or withdrawn. Each bus is assigned to a **zone**, which groups buses into market areas. This zoning facilitates market coupling by managing interactions between different market regions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3f0a4666", + "metadata": {}, + "outputs": [], + "source": [ + "# Define the buses DataFrame with three nodes and two zones\n", + "buses = pd.DataFrame(\n", + " {\n", + " \"name\": [\"north_1\", \"north_2\", \"south\"],\n", + " \"v_nom\": [380.0, 380.0, 380.0],\n", + " \"zone_id\": [\"DE_1\", \"DE_1\", \"DE_2\"],\n", + " \"x\": [10.0, 9.5, 11.6],\n", + " \"y\": [54.0, 53.5, 48.1],\n", + " }\n", + ")\n", + "\n", + "# Display the buses DataFrame\n", + "print(\"Buses DataFrame:\")\n", + "print(buses)" + ] + }, + { + "cell_type": "markdown", + "id": "7a8930e0", + "metadata": {}, + "source": [ + "**Explanation:**\n", + "\n", + "- **name:** Identifier for each bus (`north_1`, `north_2`, and `south`).\n", + "- **v_nom:** Nominal voltage level (in kV) for all buses.\n", + "- **zone_id:** Identifier for the market zone to which the bus belongs (`DE_1` for north buses and `DE_2` for the south bus).\n", + "- **x, y:** Geographical coordinates (optional, can be used for mapping or spatial analyses)." + ] + }, + { + "cell_type": "markdown", + "id": "ecf1d30b", + "metadata": {}, + "source": [ + "### 4.2. Configuring Transmission Lines\n", + "\n", + "**Transmission Lines** connect buses, allowing energy to flow between them. Each line has a specified capacity and electrical parameters." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "28ab461f", + "metadata": {}, + "outputs": [], + "source": [ + "# Define the transmission lines DataFrame with three lines\n", + "lines = pd.DataFrame(\n", + " {\n", + " \"name\": [\"Line_N1_S\", \"Line_N2_S\", \"Line_N1_N2\"],\n", + " \"bus0\": [\"north_1\", \"north_2\", \"north_1\"],\n", + " \"bus1\": [\"south\", \"south\", \"north_2\"],\n", + " \"s_nom\": [10000.0, 10000.0, 5000.0], # Increased capacities for clarity\n", + " \"x\": [0.01, 0.01, 0.01],\n", + " \"r\": [0.001, 0.001, 0.001],\n", + " }\n", + ")\n", + "\n", + "# Display the lines DataFrame\n", + "print(\"Transmission Lines DataFrame:\")\n", + "print(lines)" + ] + }, + { + "cell_type": "markdown", + "id": "c59e3a73", + "metadata": {}, + "source": [ + "**Explanation:**\n", + "\n", + "- **name:** Identifier for each transmission line (`Line_N1_S`, `Line_N2_S`, and `Line_N1_N2`).\n", + "- **bus0, bus1:** The two buses that the line connects.\n", + "- **s_nom:** Nominal apparent power capacity of the line (in MVA).\n", + "- **x:** Reactance of the line (in per unit).\n", + "- **r:** Resistance of the line (in per unit)." + ] + }, + { + "cell_type": "markdown", + "id": "a81f34d1", + "metadata": {}, + "source": [ + "### 4.3. Setting Up Power Plant and Demand Units\n", + "\n", + "**Power Plant Units** represent energy generation sources, while **Demand Units** represent consumption. Each unit is associated with a specific bus (node) and has operational parameters that define its behavior in the market." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "24594d95", + "metadata": {}, + "outputs": [], + "source": [ + "# Define the total number of units\n", + "num_units = 30 # Reduced for simplicity\n", + "\n", + "# Generate the 'name' column: Unit 1 to Unit 30\n", + "names = [f\"Unit {i}\" for i in range(1, num_units + 1)]\n", + "\n", + "# All other columns with constant values\n", + "technology = [\"nuclear\"] * num_units\n", + "bidding_nodal = [\"naive_eom\"] * num_units\n", + "fuel_type = [\"uranium\"] * num_units\n", + "emission_factor = [0.0] * num_units\n", + "max_power = [1000.0] * num_units\n", + "min_power = [0.0] * num_units\n", + "efficiency = [0.3] * num_units\n", + "\n", + "# Generate 'additional_cost':\n", + "# - North units (1-15): 5 to 19\n", + "# - South units (16-30): 20 to 34\n", + "additional_cost = list(range(5, 5 + num_units))\n", + "\n", + "# Initialize 'node' and 'unit_operator' lists\n", + "node = []\n", + "unit_operator = []\n", + "\n", + "for i in range(1, num_units + 1):\n", + " if 1 <= i <= 15:\n", + " node.append(\"north_1\") # All north units connected to 'north_1'\n", + " unit_operator.append(\"Operator North\")\n", + " else:\n", + " node.append(\"south\") # All south units connected to 'south'\n", + " unit_operator.append(\"Operator South\")\n", + "\n", + "# Create the DataFrame\n", + "powerplant_units = pd.DataFrame(\n", + " {\n", + " \"name\": names,\n", + " \"technology\": technology,\n", + " \"bidding_nodal\": bidding_nodal,\n", + " \"fuel_type\": fuel_type,\n", + " \"emission_factor\": emission_factor,\n", + " \"max_power\": max_power,\n", + " \"min_power\": min_power,\n", + " \"efficiency\": efficiency,\n", + " \"additional_cost\": additional_cost,\n", + " \"node\": node,\n", + " \"unit_operator\": unit_operator,\n", + " }\n", + ")\n", + "\n", + "# Display the powerplant_units DataFrame\n", + "print(\"Power Plant Units DataFrame:\")\n", + "print(powerplant_units)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e3dd42e8", + "metadata": {}, + "outputs": [], + "source": [ + "# Define the demand units DataFrame\n", + "demand_units = pd.DataFrame(\n", + " {\n", + " \"name\": [\"demand_north_1\", \"demand_north_2\", \"demand_south\"],\n", + " \"technology\": [\"inflex_demand\"] * 3,\n", + " \"bidding_zonal\": [\"naive_eom\"] * 3,\n", + " \"max_power\": [100000, 100000, 100000],\n", + " \"min_power\": [0, 0, 0],\n", + " \"unit_operator\": [\"eom_de\"] * 3,\n", + " \"node\": [\"north_1\", \"north_2\", \"south\"],\n", + " }\n", + ")\n", + "\n", + "# Display the demand_units DataFrame\n", + "print(\"Demand Units DataFrame:\")\n", + "print(demand_units)" + ] + }, + { + "cell_type": "markdown", + "id": "c840bfbf", + "metadata": {}, + "source": [ + "**Explanation:**\n", + "\n", + "- **Power Plant Units:**\n", + " - **name:** Identifier for each power plant unit (`Unit 1` to `Unit 30`).\n", + " - **technology:** Type of technology (`nuclear` for all units).\n", + " - **bidding_nodal:** Bidding strategy used (`naive_eom` for all units).\n", + " - **fuel_type:** Type of fuel used (`uranium` for all units).\n", + " - **emission_factor:** Emissions per unit of energy produced (`0.0` for all units).\n", + " - **max_power, min_power:** Operational power limits (`1000.0` MW max, `0.0` MW min for all units).\n", + " - **efficiency:** Conversion efficiency (`0.3` for all units).\n", + " - **additional_cost:** Additional operational costs (`5` to `34`, with southern units being more expensive).\n", + " - **node:** The bus (zone) to which the unit is connected (`north_1` for units `1-15`, `south` for units `16-30`).\n", + " - **unit_operator:** Operator responsible for the unit (`Operator North` for northern units, `Operator South` for southern units).\n", + "\n", + "- **Demand Units:**\n", + " - **name:** Identifier for each demand unit (`demand_north_1`, `demand_north_2`, and `demand_south`).\n", + " - **technology:** Type of demand (`inflex_demand` for all units).\n", + " - **bidding_zonal:** Bidding strategy used (`naive_eom` for all units).\n", + " - **max_power, min_power:** Operational power limits (`100000` MW max, `0` MW min for all units).\n", + " - **unit_operator:** Operator responsible for the unit (`eom_de` for all units).\n", + " - **node:** The bus (zone) to which the unit is connected (`north_1`, `north_2`, and `south`)." + ] + }, + { + "cell_type": "markdown", + "id": "585c96ee", + "metadata": {}, + "source": [ + "### 4.4. Preparing Demand Forecast Data\n", + "\n", + "**Demand Forecast Data** provides the expected electricity demand for each demand unit over time. This data is essential for simulating how demand varies and affects market dynamics." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "efbb0909", + "metadata": {}, + "outputs": [], + "source": [ + "# Define the demand forecast DataFrame\n", + "demand_df = pd.DataFrame(\n", + " {\n", + " \"datetime\": [\n", + " \"2019-01-01 00:00:00\",\n", + " \"2019-01-01 01:00:00\",\n", + " \"2019-01-01 02:00:00\",\n", + " \"2019-01-01 03:00:00\",\n", + " \"2019-01-01 04:00:00\",\n", + " \"2019-01-01 05:00:00\",\n", + " \"2019-01-01 06:00:00\",\n", + " \"2019-01-01 07:00:00\",\n", + " \"2019-01-01 08:00:00\",\n", + " \"2019-01-01 09:00:00\",\n", + " \"2019-01-01 10:00:00\",\n", + " \"2019-01-01 11:00:00\",\n", + " \"2019-01-01 12:00:00\",\n", + " \"2019-01-01 13:00:00\",\n", + " \"2019-01-01 14:00:00\",\n", + " \"2019-01-01 15:00:00\",\n", + " \"2019-01-01 16:00:00\",\n", + " \"2019-01-01 17:00:00\",\n", + " \"2019-01-01 18:00:00\",\n", + " \"2019-01-01 19:00:00\",\n", + " \"2019-01-01 20:00:00\",\n", + " \"2019-01-01 21:00:00\",\n", + " \"2019-01-01 22:00:00\",\n", + " \"2019-01-01 23:00:00\",\n", + " ],\n", + " \"demand_north_1\": [\n", + " 2400.0,\n", + " 2800.0,\n", + " 3200.0,\n", + " 3600.0,\n", + " 4000.0,\n", + " 4400.0,\n", + " 4800.0,\n", + " 5200.0,\n", + " 5600.0,\n", + " 6000.0,\n", + " 6400.0,\n", + " 6800.0,\n", + " 7200.0,\n", + " 7600.0,\n", + " 8000.0,\n", + " 8400.0,\n", + " 8800.0,\n", + " 9200.0,\n", + " 9600.0,\n", + " 10000.0,\n", + " 10400.0,\n", + " 10800.0,\n", + " 11200.0,\n", + " 11600.0,\n", + " ],\n", + " \"demand_north_2\": [\n", + " 2400.0,\n", + " 2800.0,\n", + " 3200.0,\n", + " 3600.0,\n", + " 4000.0,\n", + " 4400.0,\n", + " 4800.0,\n", + " 5200.0,\n", + " 5600.0,\n", + " 6000.0,\n", + " 6400.0,\n", + " 6800.0,\n", + " 7200.0,\n", + " 7600.0,\n", + " 8000.0,\n", + " 8400.0,\n", + " 8800.0,\n", + " 9200.0,\n", + " 9600.0,\n", + " 10000.0,\n", + " 10400.0,\n", + " 10800.0,\n", + " 11200.0,\n", + " 11600.0,\n", + " ],\n", + " \"demand_south\": [\n", + " 17400.0,\n", + " 16800.0,\n", + " 16200.0,\n", + " 15600.0,\n", + " 15000.0,\n", + " 14400.0,\n", + " 13800.0,\n", + " 13200.0,\n", + " 12600.0,\n", + " 12000.0,\n", + " 11400.0,\n", + " 10800.0,\n", + " 10200.0,\n", + " 9600.0,\n", + " 9000.0,\n", + " 8400.0,\n", + " 7800.0,\n", + " 7200.0,\n", + " 6600.0,\n", + " 6000.0,\n", + " 5400.0,\n", + " 4800.0,\n", + " 4200.0,\n", + " 3600.0,\n", + " ],\n", + " }\n", + ")\n", + "\n", + "# Convert the 'datetime' column to datetime objects and set as index\n", + "demand_df[\"datetime\"] = pd.to_datetime(demand_df[\"datetime\"])\n", + "demand_df.set_index(\"datetime\", inplace=True)\n", + "\n", + "# Display the demand_df DataFrame\n", + "print(\"Demand Forecast DataFrame:\")\n", + "print(demand_df.head())" + ] + }, + { + "cell_type": "markdown", + "id": "7809ba43", + "metadata": {}, + "source": [ + "**Explanation:**\n", + "\n", + "- **datetime:** Timestamp for each demand forecast.\n", + "- **demand_north_1, demand_north_2, demand_south:** Forecasted demand values for each respective demand unit.\n", + "\n", + "**Note:** The demand timeseries has been designed to be fulfillable by the defined power plants in both zones." + ] + }, + { + "cell_type": "markdown", + "id": "47cf5886", + "metadata": {}, + "source": [ + "## 5. Mimicking the Market Clearing Process\n", + "\n", + "With the input files prepared, we can now mimic the market clearing process using the simplified market clearing function. This will help us understand how different market zones interact, how constraints are managed, how bids are assigned, and how market prices are extracted." + ] + }, + { + "cell_type": "markdown", + "id": "5cf58974", + "metadata": {}, + "source": [ + "### 5.1. Calculating the Incidence Matrix\n", + "\n", + "The **Incidence Matrix** represents the transmission capacities between different market zones. It is calculated as the sum of the capacities of transmission lines connecting each pair of zones. This matrix is crucial for enforcing transmission constraints during the market clearing process.\n", + "\n", + "**Note:** The method of calculating the incidence matrix by simply summing line capacities is a simplified approach. In real-world scenarios, more sophisticated methods are used to accurately represent the network's behavior and constraints. This approach will be extended in future implementations to better reflect real-world complexities." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ead6cb27", + "metadata": {}, + "outputs": [], + "source": [ + "# Define market products (time periods)\n", + "market_products = []\n", + "for timestamp in demand_df.index:\n", + " market_products.append(\n", + " (\n", + " timestamp, # Start time\n", + " timestamp + pd.Timedelta(hours=1), # End time\n", + " 1, # Only_hours flag (for simplicity)\n", + " )\n", + " )\n", + "\n", + "# Define nodes (zones)\n", + "nodes = buses[\"zone_id\"].unique().tolist()\n", + "\n", + "# Calculate the incidence matrix by summing the capacities of transmission lines between zones\n", + "incidence_matrix = {zone: {} for zone in nodes}\n", + "\n", + "for _, line in lines.iterrows():\n", + " # Get zones for each end of the transmission line\n", + " zone0 = buses.loc[buses[\"name\"] == line[\"bus0\"], \"zone_id\"].values[0]\n", + " zone1 = buses.loc[buses[\"name\"] == line[\"bus1\"], \"zone_id\"].values[0]\n", + "\n", + " if zone0 != zone1:\n", + " # Add capacity to zone0 -> zone1\n", + " if zone1 not in incidence_matrix[zone0]:\n", + " incidence_matrix[zone0][zone1] = 0\n", + " incidence_matrix[zone0][zone1] += line[\"s_nom\"]\n", + "\n", + " # Add capacity to zone1 -> zone0 (assuming bidirectional)\n", + " if zone0 not in incidence_matrix[zone1]:\n", + " incidence_matrix[zone1][zone0] = 0\n", + " incidence_matrix[zone1][zone0] += line[\"s_nom\"]\n", + "\n", + "# Convert lower triangle values to negative to indicate opposite direction\n", + "for i, zone0 in enumerate(nodes):\n", + " for j, zone1 in enumerate(nodes):\n", + " if i > j and zone1 in incidence_matrix[zone0]:\n", + " incidence_matrix[zone0][zone1] = -incidence_matrix[zone0][zone1]\n", + "\n", + "# Display the calculated incidence matrix\n", + "print(\"Calculated Incidence Matrix between Zones:\")\n", + "print(pd.DataFrame(incidence_matrix))" + ] + }, + { + "cell_type": "markdown", + "id": "bce38f51", + "metadata": {}, + "source": [ + "**Explanation:**\n", + "\n", + "- **Nodes (Zones):** Extracted from the `buses` DataFrame (`DE_1` and `DE_2`).\n", + "- **Transmission Lines:** Iterated over to sum their capacities between different zones.\n", + "- **Bidirectional Flow Assumption:** Transmission capacities are added in both directions (`DE_1 -> DE_2` and `DE_2 -> DE_1`).\n", + "- **Lower Triangle Negative Values:** To indicate the opposite direction of power flow, capacities in the lower triangle of the matrix are converted to negative values.\n", + "\n", + "**Sample Output:**\n", + "\n", + "```\n", + "Calculated Incidence Matrix between Zones:\n", + " DE_1 DE_2\n", + "DE_1 0 20000\n", + "DE_2 -20000 0\n", + "```\n", + "\n", + "This output indicates that there is a total transmission capacity of 20,000 MVA from `DE_1` to `DE_2` and vice versa, based on the sum of the capacities of the transmission lines connecting these zones." + ] + }, + { + "cell_type": "markdown", + "id": "88a22af8", + "metadata": {}, + "source": [ + "### 5.2. Implementing the Simplified Market Clearing Function\n", + "\n", + "We will use the `simplified_market_clearing_opt` function defined earlier to perform the market clearing. This function takes in the orders, market products, zones (nodes), and the incidence matrix to determine the optimal bid acceptances and power flows between zones." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "de425eef", + "metadata": {}, + "outputs": [], + "source": [ + "# Prepare the orders dictionary based on powerplant_units and demand_units\n", + "\n", + "# Initialize orders dictionary\n", + "orders = {}\n", + "\n", + "# Add power plant bids\n", + "for _, row in powerplant_units.iterrows():\n", + " bid_id = row[\"name\"]\n", + " for timestamp in demand_df.index:\n", + " orders[f\"{bid_id}_{timestamp}\"] = {\n", + " \"price\": row[\"additional_cost\"], # Assuming additional_cost as bid price\n", + " \"volume\": row[\"max_power\"], # Assuming max_power as bid volume\n", + " \"node\": row[\"node\"],\n", + " \"time\": timestamp,\n", + " }\n", + "\n", + "# Add demand bids\n", + "for _, row in demand_units.iterrows():\n", + " bid_id = row[\"name\"]\n", + " for timestamp in demand_df.index:\n", + " orders[f\"{bid_id}_{timestamp}\"] = {\n", + " \"price\": 100, # Demand bids with high price\n", + " \"volume\": -demand_df.loc[\n", + " timestamp, row[\"name\"]\n", + " ], # Negative volume for demand\n", + " \"node\": row[\"node\"],\n", + " \"time\": timestamp,\n", + " }\n", + "\n", + "# Display a sample order\n", + "print(\"\\nSample Order:\")\n", + "print(orders[\"Unit 1_2019-01-01 00:00:00\"])" + ] + }, + { + "cell_type": "markdown", + "id": "7e30920e", + "metadata": {}, + "source": [ + "**Explanation:**\n", + "\n", + "- **Power Plant Bids:** Each power plant unit submits a bid for each time period with its `additional_cost` as the bid price and `max_power` as the bid volume. Units in the north (`DE_1`) are cheaper (`additional_cost` ranging from 5 to 19) compared to southern units (`DE_2`) which are more expensive (`additional_cost` ranging from 20 to 34).\n", + "- **Demand Bids:** Each demand unit submits a bid for each time period with zero price and negative volume representing the demand." + ] + }, + { + "cell_type": "markdown", + "id": "c13aa212", + "metadata": {}, + "source": [ + "### 5.3. Running the Market Clearing Simulation\n", + "\n", + "We will conduct two simulations:\n", + "\n", + "1. **Simulation 1:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **zero**.\n", + "2. **Simulation 2:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **present**." + ] + }, + { + "cell_type": "markdown", + "id": "403e85e2", + "metadata": {}, + "source": [ + "#### Simulation 1: Zero Transmission Capacity Between Zones" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "38f619a6", + "metadata": {}, + "outputs": [], + "source": [ + "print(\"### Simulation 1: Zero Transmission Capacity Between Zones\")\n", + "\n", + "# Define nodes (zones)\n", + "nodes_sim1 = nodes.copy()\n", + "\n", + "# Define the incidence matrix as a dictionary with zero transmission capacity\n", + "incidence_matrix_sim1 = {\n", + " \"DE_1\": {\"DE_2\": 0.0}, # Zero capacity from DE_1 to DE_2\n", + " \"DE_2\": {\"DE_1\": 0.0}, # Zero capacity from DE_2 to DE_1\n", + "}\n", + "\n", + "# Display the incidence matrix for Simulation 1\n", + "print(\"Incidence Matrix for Simulation 1 (Zero Transmission Capacity):\")\n", + "display(pd.DataFrame(incidence_matrix_sim1))" + ] + }, + { + "cell_type": "markdown", + "id": "a774230e", + "metadata": {}, + "source": [ + "The orders before being sent to the market clearing are first preprocessed. During this preprocessing the node_id from the bids is matched with the zone_id from the buses DataFrame. The bids are then sent to the market clearing function." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "38142d9a", + "metadata": {}, + "outputs": [], + "source": [ + "# create a mapping from node_id to zone_id\n", + "node_mapping = buses.set_index(\"name\")[\"zone_id\"].to_dict()\n", + "\n", + "# Create a new dictionary with mapped zone IDs\n", + "orders_mapped = {}\n", + "for bid_id, bid in orders.items():\n", + " original_node = bid[\"node\"]\n", + " mapped_zone = node_mapping.get(\n", + " original_node, original_node\n", + " ) # Default to original_node if not found\n", + " orders_mapped[bid_id] = {\n", + " \"price\": bid[\"price\"],\n", + " \"volume\": bid[\"volume\"],\n", + " \"node\": mapped_zone, # Replace bus with zone ID\n", + " \"time\": bid[\"time\"],\n", + " }\n", + "\n", + "display(pd.DataFrame(orders_mapped).T.head())" + ] + }, + { + "cell_type": "markdown", + "id": "0a78a876", + "metadata": {}, + "source": [ + "Now we can run the market clearing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8ffce232", + "metadata": {}, + "outputs": [], + "source": [ + "# Run the simplified market clearing for Simulation 1\n", + "model_sim1, results_sim1 = simplified_market_clearing_opt(\n", + " orders_mapped, market_products, nodes_sim1, incidence_matrix_sim1\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "410ff142", + "metadata": {}, + "source": [ + "#### Simulation 2: Transmission Capacity Present Between Zones" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "70c06d1c", + "metadata": { + "lines_to_next_cell": 1 + }, + "outputs": [], + "source": [ + "print(\"### Simulation 2: Transmission Capacity Present Between Zones\")\n", + "\n", + "# Define the incidence matrix as a dictionary with non-zero transmission capacity\n", + "incidence_matrix_sim2 = {\n", + " \"DE_1\": {\"DE_2\": 20000.0}, # Transmission capacity from DE_1 to DE_2 in MVA\n", + " \"DE_2\": {\"DE_1\": 20000.0}, # Transmission capacity from DE_2 to DE_1 in MVA\n", + "}\n", + "\n", + "# Display the incidence matrix for Simulation 2\n", + "print(\"Incidence Matrix for Simulation 2 (With Transmission Capacity):\")\n", + "display(pd.DataFrame(incidence_matrix_sim2))\n", + "\n", + "# since the orders are already mapped to zones, we can directly use the orders_mapped dictionary\n", + "\n", + "# Run the simplified market clearing for Simulation 2\n", + "model_sim2, results_sim2 = simplified_market_clearing_opt(\n", + " orders_mapped, market_products, nodes_sim1, incidence_matrix_sim2\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "b9631826", + "metadata": {}, + "source": [ + "### 5.4. Extracting and Interpreting the Results\n", + "\n", + "After running both simulations, we can extract the results to understand how the presence or absence of transmission capacity affects bid acceptances and power flows between zones." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9b70d5bf", + "metadata": {}, + "outputs": [], + "source": [ + "# Function to extract accepted bids and calculate clearing prices\n", + "# Function to extract accepted bids, power flows, and market clearing prices using dual variables\n", + "def extract_results(model, orders, nodes):\n", + " # Extract accepted bid ratios\n", + " accepted_bids = {}\n", + " for o in model.x:\n", + " acceptance_ratio = pyo.value(model.x[o])\n", + " if acceptance_ratio > 0:\n", + " accepted_bids[o] = acceptance_ratio\n", + "\n", + " # Extract power flows between zones for each time period\n", + " power_flows = []\n", + " for t in model.T:\n", + " for node1 in nodes:\n", + " for node2 in nodes:\n", + " if node1 != node2:\n", + " flow = pyo.value(model.flows[t, node1, node2])\n", + " if flow != 0:\n", + " power_flows.append(\n", + " {\n", + " \"time\": t,\n", + " \"from_zone\": node1,\n", + " \"to_zone\": node2,\n", + " \"flow_MW\": flow,\n", + " }\n", + " )\n", + "\n", + " # Convert to DataFrame\n", + " power_flows_df = pd.DataFrame(power_flows)\n", + "\n", + " # Extract market clearing prices from dual variables of energy balance constraints\n", + " market_clearing_prices = {}\n", + " for node in nodes:\n", + " market_clearing_prices[node] = {\n", + " t: pyo.value(model.dual[model.energy_balance[node, t]]) for t in model.T\n", + " }\n", + "\n", + " # Convert clearing prices to DataFrame\n", + " clearing_prices = []\n", + " for node in market_clearing_prices:\n", + " for t in market_clearing_prices[node]:\n", + " clearing_prices.append(\n", + " {\n", + " \"zone\": node,\n", + " \"time\": t,\n", + " \"clearing_price\": market_clearing_prices[node][t],\n", + " }\n", + " )\n", + "\n", + " clearing_prices_df = pd.DataFrame(clearing_prices)\n", + "\n", + " return accepted_bids, power_flows_df, clearing_prices_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "58cd1b3a", + "metadata": {}, + "outputs": [], + "source": [ + "# Extract results for Simulation 1\n", + "accepted_bids_sim1, power_flows_df_sim1, clearing_prices_df_sim1 = extract_results(\n", + " model_sim1, orders, nodes_sim1\n", + ")\n", + "\n", + "print(\"Simulation 1: Power Flows Between Zones\")\n", + "display(power_flows_df_sim1.head())\n", + "\n", + "print(\"Simulation 1: Clearing Prices per Zone and Time\")\n", + "display(clearing_prices_df_sim1.loc[clearing_prices_df_sim1[\"zone\"] == \"DE_1\"].head())\n", + "display(clearing_prices_df_sim1.loc[clearing_prices_df_sim1[\"zone\"] == \"DE_2\"].head())\n", + "\n", + "# Extract results for Simulation 2\n", + "accepted_bids_sim2, power_flows_df_sim2, clearing_prices_df_sim2 = extract_results(\n", + " model_sim2, orders, nodes_sim1\n", + ")\n", + "\n", + "print(\"Simulation 2: Power Flows Between Zones\")\n", + "display(power_flows_df_sim2.head())\n", + "\n", + "print(\"Simulation 2: Clearing Prices per Zone and Time\")\n", + "display(clearing_prices_df_sim2.loc[clearing_prices_df_sim2[\"zone\"] == \"DE_1\"].head())\n", + "display(clearing_prices_df_sim2.loc[clearing_prices_df_sim2[\"zone\"] == \"DE_2\"].head())" + ] + }, + { + "cell_type": "markdown", + "id": "ca006274", + "metadata": {}, + "source": [ + "**Explanation:**\n", + "\n", + "- **Accepted Bids:** Shows which bids were accepted in each simulation and the ratio at which they were accepted.\n", + "- **Power Flows:** Indicates the amount of energy transmitted between zones. In Simulation 1, with zero transmission capacity, there should be no power flows between `DE_1` and `DE_2`. In Simulation 2, with transmission capacity present, power flows can occur between zones.\n", + "- **Clearing Prices:** Represents the average bid price in each zone at each time period. Comparing prices across simulations can reveal the impact of transmission capacity on market prices." + ] + }, + { + "cell_type": "markdown", + "id": "a08b136c", + "metadata": {}, + "source": [ + "### 5.5. Comparing Simulations\n", + "\n", + "To better understand the impact of transmission capacity, let's compare the key results from both simulations." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "95b3ed34", + "metadata": {}, + "outputs": [], + "source": [ + "# Initialize the Plotly figure\n", + "fig = go.Figure()\n", + "\n", + "# Iterate over each zone to plot clearing prices for both simulations\n", + "for zone in nodes_sim1:\n", + " # Filter data for the current zone and Simulation 1\n", + " zone_prices_sim1 = clearing_prices_df_sim1[clearing_prices_df_sim1[\"zone\"] == zone]\n", + " # Filter data for the current zone and Simulation 2\n", + " zone_prices_sim2 = clearing_prices_df_sim2[clearing_prices_df_sim2[\"zone\"] == zone]\n", + "\n", + " # Add trace for Simulation 1\n", + " fig.add_trace(\n", + " go.Scatter(\n", + " x=zone_prices_sim1[\"time\"],\n", + " y=zone_prices_sim1[\"clearing_price\"],\n", + " mode=\"lines\",\n", + " name=f\"{zone} - Sim1\",\n", + " line=dict(dash=\"dash\"), # Dashed line for Simulation 1\n", + " )\n", + " )\n", + "\n", + " # Add trace for Simulation 2\n", + " fig.add_trace(\n", + " go.Scatter(\n", + " x=zone_prices_sim2[\"time\"],\n", + " y=zone_prices_sim2[\"clearing_price\"],\n", + " mode=\"lines\",\n", + " name=f\"{zone} - Sim2\",\n", + " line=dict(dash=\"solid\"), # Solid line for Simulation 2\n", + " )\n", + " )\n", + "\n", + "# Update layout for better aesthetics and interactivity\n", + "fig.update_layout(\n", + " title=\"Clearing Prices per Zone Over Time: Simulation 1 vs Simulation 2\",\n", + " xaxis_title=\"Time\",\n", + " yaxis_title=\"Clearing Price\",\n", + " legend_title=\"Simulation\",\n", + " xaxis=dict(\n", + " tickangle=45,\n", + " type=\"date\", # Ensure the x-axis is treated as dates\n", + " ),\n", + " hovermode=\"x unified\", # Unified hover for better comparison\n", + " template=\"plotly_white\", # Clean white background\n", + " width=1000,\n", + " height=600,\n", + ")\n", + "\n", + "# Display the interactive plot\n", + "fig.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1d3e1c1c", + "metadata": {}, + "outputs": [], + "source": [ + "# Compare power flows\n", + "plt.figure(figsize=(14, 8))\n", + "sns.heatmap(\n", + " power_flows_df_sim2.pivot_table(\n", + " index=\"time\", columns=[\"from_zone\", \"to_zone\"], values=\"flow_MW\", fill_value=0\n", + " ),\n", + " annot=True,\n", + " fmt=\".1f\",\n", + " cmap=\"coolwarm\",\n", + ")\n", + "plt.xlabel(\"Transmission Lines (From Zone -> To Zone)\")\n", + "plt.ylabel(\"Time\")\n", + "plt.title(\"Power Flows Between Zones Over Time: Simulation 2\")\n", + "plt.xticks(rotation=45, ha=\"right\")\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "723d53b1", + "metadata": {}, + "source": [ + "**Explanation:**\n", + "\n", + "- **Number of Accepted Bids:** Comparing the total number of accepted bids in both simulations can show how transmission capacity affects the ability to dispatch more units.\n", + "- **Clearing Prices Plot:** By plotting the clearing prices for each zone across both simulations, we can observe how the presence of transmission capacity influences price convergence or divergence between zones.\n", + "- **Power Flows Heatmap:** Visualizing power flows in Simulation 2 demonstrates how energy is transmitted between zones when transmission capacity is available." + ] + }, + { + "cell_type": "markdown", + "id": "f5b14240", + "metadata": {}, + "source": [ + "## 6. Integrating with ASSUME\n", + "\n", + "In a real-world scenario, the ASSUME framework would handle the reading of CSV files and the configuration of the simulation through configuration files. For the purpose of this tutorial, we've mimicked the market clearing process using DataFrames and a simplified function to illustrate the inner workings of market zone coupling.\n", + "\n", + "To integrate this process within ASSUME:\n", + "\n", + "- **Input Files:** Prepare CSV files for buses, lines, powerplant_units, demand_units, and demand forecasts as demonstrated in section 4.\n", + "- **Configuration File:** Define the market configuration, including zone identifiers and transmission capacities.\n", + "- **Running the Simulation:** Use ASSUME's built-in functions to load the CSV files, apply the configurations, and execute the simulation.\n", + "\n", + "Refer to the ASSUME documentation for detailed instructions on configuring and running simulations with CSV input files and configuration settings." + ] + }, + { + "cell_type": "markdown", + "id": "7c0ab370", + "metadata": {}, + "source": [ + "## 7. Analyzing the Results\n", + "\n", + "After running the market clearing simulation, it's essential to analyze the results to understand how market zone coupling influenced market dynamics. Below are key metrics and methods to analyze the simulation outcomes." + ] + }, + { + "cell_type": "markdown", + "id": "d0edde5d", + "metadata": {}, + "source": [ + "### 7.1. Accepted Bids\n", + "\n", + "**Accepted Bids** indicate which power plant and demand bids were successfully dispatched in the market. Analyzing accepted bids helps in understanding supply and demand distribution across different zones." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cc8dbc99", + "metadata": {}, + "outputs": [], + "source": [ + "# Display accepted bids for Simulation 1\n", + "print(\"Simulation 1: Accepted Bids DataFrame:\")\n", + "accepted_bids_df_sim1 = pd.DataFrame.from_dict(\n", + " accepted_bids_sim1, orient=\"index\", columns=[\"Acceptance_Ratio\"]\n", + ")\n", + "accepted_bids_df_sim1.reset_index(inplace=True)\n", + "accepted_bids_df_sim1.rename(columns={\"index\": \"Bid_ID\"}, inplace=True)\n", + "display(accepted_bids_df_sim1.head())\n", + "\n", + "# Display accepted bids for Simulation 2\n", + "print(\"Simulation 2: Accepted Bids DataFrame:\")\n", + "accepted_bids_df_sim2 = pd.DataFrame.from_dict(\n", + " accepted_bids_sim2, orient=\"index\", columns=[\"Acceptance_Ratio\"]\n", + ")\n", + "accepted_bids_df_sim2.reset_index(inplace=True)\n", + "accepted_bids_df_sim2.rename(columns={\"index\": \"Bid_ID\"}, inplace=True)\n", + "display(accepted_bids_df_sim2.head())" + ] + }, + { + "cell_type": "markdown", + "id": "58b1c1bd", + "metadata": {}, + "source": [ + "### 7.2. Power Flows Between Zones\n", + "\n", + "**Power Flows** show the amount of energy transmitted between different zones. This helps in verifying that transmission constraints are respected and understanding cross-zone energy trading." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3f7140ed", + "metadata": {}, + "outputs": [], + "source": [ + "# Display power flows for Simulation 1\n", + "print(\"Simulation 1: Power Flows Between Zones:\")\n", + "display(power_flows_df_sim1.head())\n", + "\n", + "# Display power flows for Simulation 2\n", + "print(\"Simulation 2: Power Flows Between Zones:\")\n", + "display(power_flows_df_sim2.head())" + ] + }, + { + "cell_type": "markdown", + "id": "b0c781d7", + "metadata": {}, + "source": [ + "### 7.3. Clearing Prices\n", + "\n", + "**Clearing Prices** represent the market price in each zone at each time period. Comparing prices across zones can reveal how zone coupling affects market equilibrium and price convergence." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d9f196ae", + "metadata": {}, + "outputs": [], + "source": [ + "# Display clearing prices for Simulation 1\n", + "print(\"Simulation 1: Clearing Prices per Zone and Time:\")\n", + "display(clearing_prices_df_sim1.head())\n", + "\n", + "# Display clearing prices for Simulation 2\n", + "print(\"Simulation 2: Clearing Prices per Zone and Time:\")\n", + "display(clearing_prices_df_sim2.head())" + ] + }, + { + "cell_type": "markdown", + "id": "de908c5c", + "metadata": {}, + "source": [ + "### 7.4. Visualization (Optional)\n", + "\n", + "Visualizing the results can provide a clearer understanding of the market dynamics. Below are examples of how to plot clearing prices and power flows." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e5f0b36d", + "metadata": {}, + "outputs": [], + "source": [ + "# Plot Clearing Prices for Each Zone Over Time\n", + "plt.figure(figsize=(12, 6))\n", + "for zone in nodes_sim1:\n", + " zone_prices_sim1 = clearing_prices_df_sim1[clearing_prices_df_sim1[\"zone\"] == zone]\n", + " zone_prices_sim2 = clearing_prices_df_sim2[clearing_prices_df_sim2[\"zone\"] == zone]\n", + " plt.plot(\n", + " zone_prices_sim1[\"time\"],\n", + " zone_prices_sim1[\"clearing_price\"],\n", + " label=f\"{zone} - Sim1\",\n", + " linestyle=\"--\",\n", + " )\n", + " plt.plot(\n", + " zone_prices_sim2[\"time\"],\n", + " zone_prices_sim2[\"clearing_price\"],\n", + " label=f\"{zone} - Sim2\",\n", + " linestyle=\"-\",\n", + " )\n", + "plt.xlabel(\"Time\")\n", + "plt.ylabel(\"Clearing Price\")\n", + "plt.title(\"Clearing Prices per Zone Over Time: Simulation 1 vs Simulation 2\")\n", + "plt.legend()\n", + "plt.xticks(rotation=45)\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "17c08c41", + "metadata": {}, + "source": [ + "**Explanation:**\n", + "\n", + "- **Clearing Prices Plot:** Shows how market prices vary over time for each zone across both simulations. The dashed lines represent Simulation 1 (no transmission capacity), and the solid lines represent Simulation 2 (with transmission capacity). This visualization helps in observing how the presence of transmission capacity affects price convergence or divergence between zones." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9caf342a", + "metadata": {}, + "outputs": [], + "source": [ + "# Plot Power Flows Between Zones Over Time for Simulation 2\n", + "plt.figure(figsize=(14, 8))\n", + "sns.heatmap(\n", + " power_flows_df_sim2.pivot_table(\n", + " index=\"time\", columns=[\"from_zone\", \"to_zone\"], values=\"flow_MW\", fill_value=0\n", + " ),\n", + " annot=True,\n", + " fmt=\".1f\",\n", + " cmap=\"coolwarm\",\n", + ")\n", + "plt.xlabel(\"Transmission Lines (From Zone -> To Zone)\")\n", + "plt.ylabel(\"Time\")\n", + "plt.title(\"Power Flows Between Zones Over Time: Simulation 2\")\n", + "plt.xticks(rotation=45, ha=\"right\")\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "be77e1f9", + "metadata": {}, + "source": [ + "**Explanation:**\n", + "\n", + "- **Power Flows Heatmap (Simulation 2):** Visualizes the amount of energy transmitted between zones over time when transmission capacity is present. The heatmap highlights periods of high or low cross-zone trading, demonstrating the impact of transmission capacity on energy distribution." + ] + }, + { + "cell_type": "markdown", + "id": "605935df", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "In this tutorial, we explored how to mimic and understand market zone coupling within the ASSUME framework. We covered the following key steps:\n", + "\n", + "1. **Introduction to Market Zone Coupling:** Understanding the concept and its significance in electricity market simulations.\n", + "2. **Setting Up the ASSUME Framework:** Installing the framework and preparing the environment for zone coupling.\n", + "3. **Understanding Market Clearing Optimization:** Grasping the fundamentals of the market clearing process with a focus on zone interactions.\n", + "4. **Creating Exemplary Input Files for Market Zone Coupling:** Defining buses, transmission lines, power plant units, demand units, and preparing demand forecasts.\n", + "5. **Mimicking the Market Clearing Process:** \n", + " - **Calculating the Incidence Matrix:** Summing transmission line capacities between zones to create the incidence matrix.\n", + " - **Implementing the Simplified Market Clearing Function:** Using a simplified Pyomo model to perform market clearing.\n", + " - **Running the Market Clearing Simulation:** Executing two simulations to observe the impact of transmission capacity.\n", + "6. **Integrating with ASSUME:** Outlining the steps to integrate the process within the ASSUME framework using CSV input files and configuration settings.\n", + "7. **Analyzing the Results:** Extracting and visualizing key metrics to assess the impact of market zone coupling.\n", + "\n", + "**Key Takeaways:**\n", + "\n", + "- **Incidence Matrix:** Represents the transmission capacities between different market zones. Calculated by summing the capacities of transmission lines connecting each pair of zones. While this method is simplified, it provides a foundational understanding of how zones interact within the market.\n", + "\n", + "- **Simplified Market Clearing:** Demonstrates the core principles of market clearing, including bid acceptance and power flow management between zones.\n", + "\n", + "- **Impact of Transmission Capacity:** The presence of transmission capacity allows for energy trading between zones, potentially reducing overall costs and balancing demand more effectively. Without transmission capacity, each zone must rely solely on its local generation, which may lead to higher costs if local generation is more expensive.\n", + "\n", + "- **Limitations and Future Work:** The current method of calculating the incidence matrix by summing line capacities is limited and does not capture the full complexity of real-world transmission networks. Future implementations will enhance this approach to include more detailed network modeling, accounting for factors like line impedance, reactive power flows, and dynamic constraints.\n", + "\n", + "By following this guide, you have successfully set up a simplified multi-zone electricity market simulation, enabling a deeper understanding of market dynamics and the role of zone coupling in balancing supply and demand. You can now extend this setup to include more zones, varying transmission capacities, and diverse bidding strategies to explore a wide range of market scenarios.\n", + "\n", + "Thank you for participating in this workshop!" + ] + } + ], + "metadata": { + "jupytext": { + "cell_metadata_filter": "-all", + "main_language": "python", + "notebook_metadata_filter": "-all" + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/notebooks/08_market_zone_coupling.ipynb.license b/examples/notebooks/08_market_zone_coupling.ipynb.license new file mode 100644 index 00000000..a6ae0636 --- /dev/null +++ b/examples/notebooks/08_market_zone_coupling.ipynb.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: ASSUME Developers + +SPDX-License-Identifier: AGPL-3.0-or-later From 30db12860273bc984d56510d49375e9af3e4bcfc Mon Sep 17 00:00:00 2001 From: Nick Harder Date: Fri, 27 Sep 2024 12:10:18 +0200 Subject: [PATCH 06/27] -finilize the market zone coupling tutorial --- .../notebooks/08_market_zone_coupling.ipynb | 1004 ++++++++++------- 1 file changed, 623 insertions(+), 381 deletions(-) diff --git a/examples/notebooks/08_market_zone_coupling.ipynb b/examples/notebooks/08_market_zone_coupling.ipynb index 15220fd2..257bab47 100644 --- a/examples/notebooks/08_market_zone_coupling.ipynb +++ b/examples/notebooks/08_market_zone_coupling.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "21658e52", + "id": "d6968cbf", "metadata": {}, "source": [ "# Market Zone Coupling in the ASSUME Framework\n", @@ -23,6 +23,8 @@ " - 5.1. Calculating the Incidence Matrix\n", " - 5.2. Implementing the Simplified Market Clearing Function\n", " - 5.3. Running the Market Clearing Simulation\n", + " - 5.4. Extracting and Interpreting the Results\n", + " - 5.5. Comparing Simulations\n", "6. **Integrating with ASSUME**\n", "7. **Analyzing the Results**\n", "\n", @@ -31,25 +33,27 @@ }, { "cell_type": "markdown", - "id": "ffdfa0a7", + "id": "b7f48d5e", "metadata": {}, "source": [ "## 1. Introduction to Market Zone Coupling\n", "\n", - "**Market Zone Coupling** is a mechanism that enables different geographical zones within an electricity market to interact and trade energy seamlessly. By coupling market zones, we can simulate more realistic and complex market dynamics, considering factors like transmission constraints, regional demand and supply variations, and cross-zone trading.\n", + "**Market Zone Coupling** is a mechanism that enables different geographical zones within an electricity market to interact and trade energy seamlessly. In the ASSUME framework, implementing market zone coupling is straightforward: by properly defining the input data and configuration files, the framework automatically manages the interactions between zones, including transmission constraints and cross-zone trading.\n", "\n", - "In the ASSUME framework, market zone coupling involves:\n", + "This tutorial aims to provide a deeper understanding of how market zone coupling operates within ASSUME. While the framework handles much of the complexity internally, we will explore the underlying processes, such as the calculation of transmission capacities and the market clearing optimization. This detailed walkthrough is designed to enhance your comprehension of the framework's capabilities and the dynamics of multi-zone electricity markets.\n", "\n", - "- **Defining Multiple Market Zones:** Segmenting the market into distinct zones based on geographical or operational criteria.\n", - "- **Establishing Connections Between Zones:** Setting up transmission lines that allow energy flow between different market zones.\n", - "- **Configuring the Market Clearing Process:** Adjusting the market clearing algorithm to account for interactions and constraints across zones.\n", + "Throughout this tutorial, you will:\n", "\n", - "This tutorial will walk you through each of these steps, providing code examples and configuration guidelines to help you set up market zone coupling effectively." + "- **Define Multiple Market Zones:** Segment the market into distinct zones based on geographical or operational criteria.\n", + "- **Configure Transmission Lines:** Establish connections that allow energy flow between different market zones.\n", + "- **Understand the Market Clearing Process:** Examine how the market clearing algorithm accounts for interactions and constraints across zones.\n", + "\n", + "By the end of this workshop, you will not only know how to set up market zone coupling in ASSUME but also gain insights into the internal mechanisms that drive market interactions and price formations across different zones." ] }, { "cell_type": "markdown", - "id": "39361ba8", + "id": "ad384717", "metadata": {}, "source": [ "## 2. Setting Up the ASSUME Framework for Market Zone Coupling\n", @@ -62,7 +66,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5f5b70bb", + "id": "d501b239", "metadata": {}, "outputs": [], "source": [ @@ -70,23 +74,15 @@ "# !pip install assume-framework\n", "\n", "# Install Plotly if not already installed\n", - "# !pip install plotly" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "91a4bbf7", - "metadata": {}, - "outputs": [], - "source": [ + "# !pip install plotly\n", + "\n", "# Clone the ASSUME repository containing predefined scenarios\n", "# !git clone https://github.com/assume-framework/assume.git assume-repo" ] }, { "cell_type": "markdown", - "id": "4a049632", + "id": "7935b350", "metadata": {}, "source": [ "Let's also import some basic libraries that we will use throughout the tutorial." @@ -95,16 +91,17 @@ { "cell_type": "code", "execution_count": null, - "id": "cfa74a9d", + "id": "05df5da6", "metadata": {}, "outputs": [], "source": [ - "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "\n", "# import plotly for visualization\n", "import plotly.graph_objects as go\n", - "import seaborn as sns\n", + "\n", + "# import yaml for reading and writing YAML files\n", + "import yaml\n", "\n", "# Function to display DataFrame in Jupyter\n", "from IPython.display import display" @@ -112,7 +109,7 @@ }, { "cell_type": "markdown", - "id": "95e7d6fc", + "id": "bf42fa2d", "metadata": {}, "source": [ "**Select Input Files Path:**\n", @@ -123,7 +120,7 @@ { "cell_type": "code", "execution_count": null, - "id": "fdda1af9", + "id": "11eb5fb7", "metadata": {}, "outputs": [], "source": [ @@ -140,17 +137,9 @@ "print(f\"Using inputs path: {inputs_path}\")" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "3ae63334", - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", - "id": "104d2285", + "id": "3491bed0", "metadata": {}, "source": [ "## 3. Understanding the Market Clearing Optimization\n", @@ -170,10 +159,8 @@ { "cell_type": "code", "execution_count": null, - "id": "21f17651", - "metadata": { - "lines_to_next_cell": 1 - }, + "id": "72cdba6b", + "metadata": {}, "outputs": [], "source": [ "# Display a simplified version of the market clearing optimization function\n", @@ -264,6 +251,22 @@ " model.T, model.nodes, model.nodes, rule=transmission_rule\n", " )\n", "\n", + " def symmetry_rule(model, t, node1, node2):\n", + " \"\"\"\n", + " Ensures that the flow from node1 to node2 is the negative of the flow from node2 to node1.\n", + " \"\"\"\n", + " if node1 != node2:\n", + " return model.flows[t, node2, node1] == -model.flows[t, node1, node2]\n", + " else:\n", + " return (\n", + " pyo.Constraint.Skip\n", + " ) # No constraint needed for flows within the same node\n", + "\n", + " # Apply the antisymmetry rule to all node pairs and time periods\n", + " model.symmetry_constraints = pyo.Constraint(\n", + " model.T, model.nodes, model.nodes, rule=symmetry_rule\n", + " )\n", + "\n", " # Objective: Minimize total cost (sum of bid prices multiplied by accepted volumes)\n", " model.objective = pyo.Objective(\n", " expr=sum(orders[o][\"price\"] * orders[o][\"volume\"] * model.x[o] for o in orders),\n", @@ -289,7 +292,7 @@ }, { "cell_type": "markdown", - "id": "28be160a", + "id": "28637869", "metadata": {}, "source": [ "The above function is a simplified representation focusing on the essential aspects of market zone coupling. In the following sections, we will delve deeper into creating input files and mimicking the market clearing process using this function to understand the inner workings of the ASSUME framework." @@ -297,7 +300,7 @@ }, { "cell_type": "markdown", - "id": "9afe9795", + "id": "26e3cfa8", "metadata": {}, "source": [ "## 4. Creating Exemplary Input Files for Market Zone Coupling\n", @@ -307,7 +310,7 @@ }, { "cell_type": "markdown", - "id": "dfe79e27", + "id": "01726994", "metadata": {}, "source": [ "### 4.1. Defining Buses and Zones\n", @@ -318,7 +321,7 @@ { "cell_type": "code", "execution_count": null, - "id": "3f0a4666", + "id": "ae9695a3", "metadata": {}, "outputs": [], "source": [ @@ -335,12 +338,12 @@ "\n", "# Display the buses DataFrame\n", "print(\"Buses DataFrame:\")\n", - "print(buses)" + "display(buses)" ] }, { "cell_type": "markdown", - "id": "7a8930e0", + "id": "02d32661", "metadata": {}, "source": [ "**Explanation:**\n", @@ -353,7 +356,7 @@ }, { "cell_type": "markdown", - "id": "ecf1d30b", + "id": "01f22792", "metadata": {}, "source": [ "### 4.2. Configuring Transmission Lines\n", @@ -364,7 +367,7 @@ { "cell_type": "code", "execution_count": null, - "id": "28ab461f", + "id": "4a531a25", "metadata": {}, "outputs": [], "source": [ @@ -382,12 +385,12 @@ "\n", "# Display the lines DataFrame\n", "print(\"Transmission Lines DataFrame:\")\n", - "print(lines)" + "display(lines)" ] }, { "cell_type": "markdown", - "id": "c59e3a73", + "id": "13cb21b0", "metadata": {}, "source": [ "**Explanation:**\n", @@ -401,7 +404,7 @@ }, { "cell_type": "markdown", - "id": "a81f34d1", + "id": "8874c322", "metadata": {}, "source": [ "### 4.3. Setting Up Power Plant and Demand Units\n", @@ -412,7 +415,7 @@ { "cell_type": "code", "execution_count": null, - "id": "24594d95", + "id": "e71b7ce9", "metadata": {}, "outputs": [], "source": [ @@ -424,7 +427,7 @@ "\n", "# All other columns with constant values\n", "technology = [\"nuclear\"] * num_units\n", - "bidding_nodal = [\"naive_eom\"] * num_units\n", + "bidding_zonal = [\"naive_eom\"] * num_units\n", "fuel_type = [\"uranium\"] * num_units\n", "emission_factor = [0.0] * num_units\n", "max_power = [1000.0] * num_units\n", @@ -453,7 +456,7 @@ " {\n", " \"name\": names,\n", " \"technology\": technology,\n", - " \"bidding_nodal\": bidding_nodal,\n", + " \"bidding_zonal\": bidding_zonal, # bidding strategy used to bid on the zonal market. Should be same name as in config file\n", " \"fuel_type\": fuel_type,\n", " \"emission_factor\": emission_factor,\n", " \"max_power\": max_power,\n", @@ -467,13 +470,13 @@ "\n", "# Display the powerplant_units DataFrame\n", "print(\"Power Plant Units DataFrame:\")\n", - "print(powerplant_units)" + "display(powerplant_units)" ] }, { "cell_type": "code", "execution_count": null, - "id": "e3dd42e8", + "id": "365aa96b", "metadata": {}, "outputs": [], "source": [ @@ -492,12 +495,12 @@ "\n", "# Display the demand_units DataFrame\n", "print(\"Demand Units DataFrame:\")\n", - "print(demand_units)" + "display(demand_units)" ] }, { "cell_type": "markdown", - "id": "c840bfbf", + "id": "8ce96a59", "metadata": {}, "source": [ "**Explanation:**\n", @@ -525,7 +528,7 @@ }, { "cell_type": "markdown", - "id": "585c96ee", + "id": "e14dc7f7", "metadata": {}, "source": [ "### 4.4. Preparing Demand Forecast Data\n", @@ -536,145 +539,44 @@ { "cell_type": "code", "execution_count": null, - "id": "efbb0909", + "id": "c817bc49", "metadata": {}, "outputs": [], "source": [ - "# Define the demand forecast DataFrame\n", + "# Define the demand forecast DataFrame with a simplified datetime generation\n", "demand_df = pd.DataFrame(\n", " {\n", - " \"datetime\": [\n", - " \"2019-01-01 00:00:00\",\n", - " \"2019-01-01 01:00:00\",\n", - " \"2019-01-01 02:00:00\",\n", - " \"2019-01-01 03:00:00\",\n", - " \"2019-01-01 04:00:00\",\n", - " \"2019-01-01 05:00:00\",\n", - " \"2019-01-01 06:00:00\",\n", - " \"2019-01-01 07:00:00\",\n", - " \"2019-01-01 08:00:00\",\n", - " \"2019-01-01 09:00:00\",\n", - " \"2019-01-01 10:00:00\",\n", - " \"2019-01-01 11:00:00\",\n", - " \"2019-01-01 12:00:00\",\n", - " \"2019-01-01 13:00:00\",\n", - " \"2019-01-01 14:00:00\",\n", - " \"2019-01-01 15:00:00\",\n", - " \"2019-01-01 16:00:00\",\n", - " \"2019-01-01 17:00:00\",\n", - " \"2019-01-01 18:00:00\",\n", - " \"2019-01-01 19:00:00\",\n", - " \"2019-01-01 20:00:00\",\n", - " \"2019-01-01 21:00:00\",\n", - " \"2019-01-01 22:00:00\",\n", - " \"2019-01-01 23:00:00\",\n", - " ],\n", - " \"demand_north_1\": [\n", - " 2400.0,\n", - " 2800.0,\n", - " 3200.0,\n", - " 3600.0,\n", - " 4000.0,\n", - " 4400.0,\n", - " 4800.0,\n", - " 5200.0,\n", - " 5600.0,\n", - " 6000.0,\n", - " 6400.0,\n", - " 6800.0,\n", - " 7200.0,\n", - " 7600.0,\n", - " 8000.0,\n", - " 8400.0,\n", - " 8800.0,\n", - " 9200.0,\n", - " 9600.0,\n", - " 10000.0,\n", - " 10400.0,\n", - " 10800.0,\n", - " 11200.0,\n", - " 11600.0,\n", - " ],\n", - " \"demand_north_2\": [\n", - " 2400.0,\n", - " 2800.0,\n", - " 3200.0,\n", - " 3600.0,\n", - " 4000.0,\n", - " 4400.0,\n", - " 4800.0,\n", - " 5200.0,\n", - " 5600.0,\n", - " 6000.0,\n", - " 6400.0,\n", - " 6800.0,\n", - " 7200.0,\n", - " 7600.0,\n", - " 8000.0,\n", - " 8400.0,\n", - " 8800.0,\n", - " 9200.0,\n", - " 9600.0,\n", - " 10000.0,\n", - " 10400.0,\n", - " 10800.0,\n", - " 11200.0,\n", - " 11600.0,\n", - " ],\n", - " \"demand_south\": [\n", - " 17400.0,\n", - " 16800.0,\n", - " 16200.0,\n", - " 15600.0,\n", - " 15000.0,\n", - " 14400.0,\n", - " 13800.0,\n", - " 13200.0,\n", - " 12600.0,\n", - " 12000.0,\n", - " 11400.0,\n", - " 10800.0,\n", - " 10200.0,\n", - " 9600.0,\n", - " 9000.0,\n", - " 8400.0,\n", - " 7800.0,\n", - " 7200.0,\n", - " 6600.0,\n", - " 6000.0,\n", - " 5400.0,\n", - " 4800.0,\n", - " 4200.0,\n", - " 3600.0,\n", - " ],\n", + " \"datetime\": pd.date_range(start=\"2019-01-01\", periods=24, freq=\"h\"),\n", + " \"demand_north_1\": [2400 + i * 400 for i in range(24)],\n", + " \"demand_north_2\": [2400 + i * 400 for i in range(24)],\n", + " \"demand_south\": [17400 - i * 600 for i in range(24)],\n", " }\n", ")\n", "\n", "# Convert the 'datetime' column to datetime objects and set as index\n", - "demand_df[\"datetime\"] = pd.to_datetime(demand_df[\"datetime\"])\n", "demand_df.set_index(\"datetime\", inplace=True)\n", "\n", "# Display the demand_df DataFrame\n", "print(\"Demand Forecast DataFrame:\")\n", - "print(demand_df.head())" + "display(demand_df.head())" ] }, { "cell_type": "markdown", - "id": "7809ba43", + "id": "99e7bbbc", "metadata": {}, "source": [ "**Explanation:**\n", "\n", "- **datetime:** Timestamp for each demand forecast.\n", - "- **demand_north_1, demand_north_2, demand_south:** Forecasted demand values for each respective demand unit.\n", + "- **demand_north_1, demand_north_2, demand_south:** Demand values for each respective demand unit.\n", "\n", "**Note:** The demand timeseries has been designed to be fulfillable by the defined power plants in both zones." ] }, { "cell_type": "markdown", - "id": "47cf5886", + "id": "42422a16", "metadata": {}, "source": [ "## 5. Mimicking the Market Clearing Process\n", @@ -684,7 +586,7 @@ }, { "cell_type": "markdown", - "id": "5cf58974", + "id": "6b68ad0f", "metadata": {}, "source": [ "### 5.1. Calculating the Incidence Matrix\n", @@ -697,7 +599,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ead6cb27", + "id": "70688bfd", "metadata": {}, "outputs": [], "source": [ @@ -742,12 +644,12 @@ "\n", "# Display the calculated incidence matrix\n", "print(\"Calculated Incidence Matrix between Zones:\")\n", - "print(pd.DataFrame(incidence_matrix))" + "display(pd.DataFrame(incidence_matrix).fillna(0))" ] }, { "cell_type": "markdown", - "id": "bce38f51", + "id": "cc0dd7b2", "metadata": {}, "source": [ "**Explanation:**\n", @@ -771,7 +673,7 @@ }, { "cell_type": "markdown", - "id": "88a22af8", + "id": "7245c636", "metadata": {}, "source": [ "### 5.2. Implementing the Simplified Market Clearing Function\n", @@ -782,7 +684,7 @@ { "cell_type": "code", "execution_count": null, - "id": "de425eef", + "id": "03f654fc", "metadata": {}, "outputs": [], "source": [ @@ -816,13 +718,16 @@ " }\n", "\n", "# Display a sample order\n", - "print(\"\\nSample Order:\")\n", - "print(orders[\"Unit 1_2019-01-01 00:00:00\"])" + "print(\"\\nSample Supply Order:\")\n", + "print(orders[\"Unit 1_2019-01-01 00:00:00\"])\n", + "\n", + "print(\"\\nSample Demand Order:\")\n", + "print(orders[\"demand_north_1_2019-01-01 00:00:00\"])" ] }, { "cell_type": "markdown", - "id": "7e30920e", + "id": "d9c9e27c", "metadata": {}, "source": [ "**Explanation:**\n", @@ -833,20 +738,21 @@ }, { "cell_type": "markdown", - "id": "c13aa212", + "id": "40f3fd52", "metadata": {}, "source": [ "### 5.3. Running the Market Clearing Simulation\n", "\n", - "We will conduct two simulations:\n", + "We will conduct three simulations:\n", "\n", "1. **Simulation 1:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **zero**.\n", - "2. **Simulation 2:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **present**." + "2. **Simulation 2:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **medium**.\n", + "3. **Simulation 3:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **high**." ] }, { "cell_type": "markdown", - "id": "403e85e2", + "id": "551990cf", "metadata": {}, "source": [ "#### Simulation 1: Zero Transmission Capacity Between Zones" @@ -855,7 +761,7 @@ { "cell_type": "code", "execution_count": null, - "id": "38f619a6", + "id": "123b4e9b", "metadata": {}, "outputs": [], "source": [ @@ -877,16 +783,16 @@ }, { "cell_type": "markdown", - "id": "a774230e", + "id": "80204af5", "metadata": {}, "source": [ - "The orders before being sent to the market clearing are first preprocessed. During this preprocessing the node_id from the bids is matched with the zone_id from the buses DataFrame. The bids are then sent to the market clearing function." + "Right now the orders contain the information about their node and not the zone. In ASSUME, the market clearing function will assign the bids to the zones based on the nodes they are connected to. This is done automatically by the framework, but for this simplified example, we will manually assign the bids to the zones." ] }, { "cell_type": "code", "execution_count": null, - "id": "38142d9a", + "id": "0514d562", "metadata": {}, "outputs": [], "source": [ @@ -910,18 +816,10 @@ "display(pd.DataFrame(orders_mapped).T.head())" ] }, - { - "cell_type": "markdown", - "id": "0a78a876", - "metadata": {}, - "source": [ - "Now we can run the market clearing" - ] - }, { "cell_type": "code", "execution_count": null, - "id": "8ffce232", + "id": "543d3534", "metadata": {}, "outputs": [], "source": [ @@ -933,35 +831,31 @@ }, { "cell_type": "markdown", - "id": "410ff142", + "id": "11b4a94d", "metadata": {}, "source": [ - "#### Simulation 2: Transmission Capacity Present Between Zones" + "#### Simulation 2: Medium Transmission Capacity Between Zones" ] }, { "cell_type": "code", "execution_count": null, - "id": "70c06d1c", - "metadata": { - "lines_to_next_cell": 1 - }, + "id": "b7d246fa", + "metadata": {}, "outputs": [], "source": [ - "print(\"### Simulation 2: Transmission Capacity Present Between Zones\")\n", + "print(\"### Simulation 2: Medium Transmission Capacity Between Zones\")\n", "\n", - "# Define the incidence matrix as a dictionary with non-zero transmission capacity\n", + "# Define the incidence matrix as a dictionary with medium transmission capacity\n", "incidence_matrix_sim2 = {\n", - " \"DE_1\": {\"DE_2\": 20000.0}, # Transmission capacity from DE_1 to DE_2 in MVA\n", - " \"DE_2\": {\"DE_1\": 20000.0}, # Transmission capacity from DE_2 to DE_1 in MVA\n", + " \"DE_1\": {\"DE_2\": 3000.0}, # Medium transmission capacity from DE_1 to DE_2\n", + " \"DE_2\": {\"DE_1\": 3000.0}, # Medium transmission capacity from DE_2 to DE_1\n", "}\n", "\n", "# Display the incidence matrix for Simulation 2\n", - "print(\"Incidence Matrix for Simulation 2 (With Transmission Capacity):\")\n", + "print(\"Incidence Matrix for Simulation 2 (Medium Transmission Capacity):\")\n", "display(pd.DataFrame(incidence_matrix_sim2))\n", "\n", - "# since the orders are already mapped to zones, we can directly use the orders_mapped dictionary\n", - "\n", "# Run the simplified market clearing for Simulation 2\n", "model_sim2, results_sim2 = simplified_market_clearing_opt(\n", " orders_mapped, market_products, nodes_sim1, incidence_matrix_sim2\n", @@ -970,18 +864,66 @@ }, { "cell_type": "markdown", - "id": "b9631826", + "id": "8b6ab5ae", + "metadata": {}, + "source": [ + "#### Simulation 3: High Transmission Capacity Between Zones" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "951c9a1b", + "metadata": { + "lines_to_end_of_cell_marker": 0, + "lines_to_next_cell": 1 + }, + "outputs": [], + "source": [ + "print(\"### Simulation 3: High Transmission Capacity Between Zones\")\n", + "\n", + "# Define the incidence matrix as a dictionary with high transmission capacity\n", + "incidence_matrix_sim3 = {\n", + " \"DE_1\": {\"DE_2\": 10000.0}, # High transmission capacity from DE_1 to DE_2\n", + " \"DE_2\": {\"DE_1\": 10000.0}, # High transmission capacity from DE_2 to DE_1\n", + "}\n", + "\n", + "# Display the incidence matrix for Simulation 3\n", + "print(\"Incidence Matrix for Simulation 3 (High Transmission Capacity):\")\n", + "display(pd.DataFrame(incidence_matrix_sim3))\n", + "\n", + "# Run the simplified market clearing for Simulation 3\n", + "model_sim3, results_sim3 = simplified_market_clearing_opt(\n", + " orders_mapped, market_products, nodes_sim1, incidence_matrix_sim3\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "2874cc5b", "metadata": {}, "source": [ "### 5.4. Extracting and Interpreting the Results\n", "\n", - "After running both simulations, we can extract the results to understand how the presence or absence of transmission capacity affects bid acceptances and power flows between zones." + "After running all three simulations, we can extract the results to understand how the presence or absence of transmission capacity affects bid acceptances and power flows between zones.\n", + "\n", + "#### Extracting Clearing Prices\n", + "\n", + "The **clearing prices** for each market zone and time period are extracted using the dual variables associated with the energy balance constraints in the optimization model. Specifically, the dual variable of the energy balance constraint for a given zone and time period represents the marginal price of electricity in that zone at that time.\n", + "\n", + "In the `extract_results` function, the following steps are performed to obtain the clearing prices:\n", + "\n", + "1. **Energy Balance Constraints:** For each zone and time period, the energy balance equation ensures that the total supply plus imports minus exports equals the demand.\n", + "2. **Dual Variables:** The dual variable (`model.dual[model.energy_balance[node, t]]`) associated with each energy balance constraint captures the sensitivity of the objective function (total cost) to a marginal increase in demand or supply.\n", + "3. **Clearing Price Interpretation:** The value of the dual variable corresponds to the clearing price in the respective zone and time period, reflecting the cost of supplying an additional unit of electricity.\n", + "\n", + "This method leverages the duality in optimization to efficiently extract market prices resulting from the optimal dispatch of bids under the given constraints." ] }, { "cell_type": "code", "execution_count": null, - "id": "9b70d5bf", + "id": "508d8c51", "metadata": {}, "outputs": [], "source": [ @@ -1042,73 +984,159 @@ { "cell_type": "code", "execution_count": null, - "id": "58cd1b3a", + "id": "ced11135", "metadata": {}, "outputs": [], "source": [ "# Extract results for Simulation 1\n", "accepted_bids_sim1, power_flows_df_sim1, clearing_prices_df_sim1 = extract_results(\n", " model_sim1, orders, nodes_sim1\n", - ")\n", - "\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "51373042", + "metadata": {}, + "outputs": [], + "source": [ "print(\"Simulation 1: Power Flows Between Zones\")\n", - "display(power_flows_df_sim1.head())\n", - "\n", + "display(power_flows_df_sim1.head())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2bc8fe28", + "metadata": {}, + "outputs": [], + "source": [ "print(\"Simulation 1: Clearing Prices per Zone and Time\")\n", "display(clearing_prices_df_sim1.loc[clearing_prices_df_sim1[\"zone\"] == \"DE_1\"].head())\n", - "display(clearing_prices_df_sim1.loc[clearing_prices_df_sim1[\"zone\"] == \"DE_2\"].head())\n", - "\n", + "display(clearing_prices_df_sim1.loc[clearing_prices_df_sim1[\"zone\"] == \"DE_2\"].head())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d7bddc51", + "metadata": {}, + "outputs": [], + "source": [ "# Extract results for Simulation 2\n", "accepted_bids_sim2, power_flows_df_sim2, clearing_prices_df_sim2 = extract_results(\n", " model_sim2, orders, nodes_sim1\n", - ")\n", - "\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a8b84057", + "metadata": {}, + "outputs": [], + "source": [ "print(\"Simulation 2: Power Flows Between Zones\")\n", - "display(power_flows_df_sim2.head())\n", - "\n", + "display(power_flows_df_sim2.head())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b9abaaf1", + "metadata": {}, + "outputs": [], + "source": [ "print(\"Simulation 2: Clearing Prices per Zone and Time\")\n", "display(clearing_prices_df_sim2.loc[clearing_prices_df_sim2[\"zone\"] == \"DE_1\"].head())\n", "display(clearing_prices_df_sim2.loc[clearing_prices_df_sim2[\"zone\"] == \"DE_2\"].head())" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "c62148ed", + "metadata": {}, + "outputs": [], + "source": [ + "# Extract results for Simulation 3\n", + "accepted_bids_sim3, power_flows_df_sim3, clearing_prices_df_sim3 = extract_results(\n", + " model_sim3, orders, nodes_sim1\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f94d50ce", + "metadata": {}, + "outputs": [], + "source": [ + "print(\"Simulation 3: Power Flows Between Zones\")\n", + "display(power_flows_df_sim3.head())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3f3881f6", + "metadata": {}, + "outputs": [], + "source": [ + "print(\"Simulation 3: Clearing Prices per Zone and Time\")\n", + "display(clearing_prices_df_sim3.loc[clearing_prices_df_sim3[\"zone\"] == \"DE_1\"].head())\n", + "display(clearing_prices_df_sim3.loc[clearing_prices_df_sim3[\"zone\"] == \"DE_2\"].head())" + ] + }, { "cell_type": "markdown", - "id": "ca006274", + "id": "461c85b5", + "metadata": {}, + "source": [ + "-" + ] + }, + { + "cell_type": "markdown", + "id": "b397c6e9", "metadata": {}, "source": [ "**Explanation:**\n", "\n", "- **Accepted Bids:** Shows which bids were accepted in each simulation and the ratio at which they were accepted.\n", - "- **Power Flows:** Indicates the amount of energy transmitted between zones. In Simulation 1, with zero transmission capacity, there should be no power flows between `DE_1` and `DE_2`. In Simulation 2, with transmission capacity present, power flows can occur between zones.\n", + "- **Power Flows:** Indicates the amount of energy transmitted between zones. In Simulation 1, with zero transmission capacity, there should be no power flows between `DE_1` and `DE_2`. In Simulation 2 and 3, with medium and high transmission capacities, power flows can occur between zones.\n", "- **Clearing Prices:** Represents the average bid price in each zone at each time period. Comparing prices across simulations can reveal the impact of transmission capacity on market prices." ] }, { "cell_type": "markdown", - "id": "a08b136c", + "id": "83b13999", "metadata": {}, "source": [ "### 5.5. Comparing Simulations\n", "\n", - "To better understand the impact of transmission capacity, let's compare the key results from both simulations." + "To better understand the impact of transmission capacity, let's compare the key results from all three simulations." ] }, { "cell_type": "code", "execution_count": null, - "id": "95b3ed34", + "id": "69e86f18", "metadata": {}, "outputs": [], "source": [ "# Initialize the Plotly figure\n", "fig = go.Figure()\n", "\n", - "# Iterate over each zone to plot clearing prices for both simulations\n", + "# Iterate over each zone to plot clearing prices for all three simulations\n", "for zone in nodes_sim1:\n", " # Filter data for the current zone and Simulation 1\n", " zone_prices_sim1 = clearing_prices_df_sim1[clearing_prices_df_sim1[\"zone\"] == zone]\n", " # Filter data for the current zone and Simulation 2\n", " zone_prices_sim2 = clearing_prices_df_sim2[clearing_prices_df_sim2[\"zone\"] == zone]\n", + " # Filter data for the current zone and Simulation 3\n", + " zone_prices_sim3 = clearing_prices_df_sim3[clearing_prices_df_sim3[\"zone\"] == zone]\n", "\n", " # Add trace for Simulation 1\n", " fig.add_trace(\n", @@ -1116,7 +1144,7 @@ " x=zone_prices_sim1[\"time\"],\n", " y=zone_prices_sim1[\"clearing_price\"],\n", " mode=\"lines\",\n", - " name=f\"{zone} - Sim1\",\n", + " name=f\"{zone} - Sim1 (Zero Capacity)\",\n", " line=dict(dash=\"dash\"), # Dashed line for Simulation 1\n", " )\n", " )\n", @@ -1127,17 +1155,28 @@ " x=zone_prices_sim2[\"time\"],\n", " y=zone_prices_sim2[\"clearing_price\"],\n", " mode=\"lines\",\n", - " name=f\"{zone} - Sim2\",\n", - " line=dict(dash=\"solid\"), # Solid line for Simulation 2\n", + " name=f\"{zone} - Sim2 (Medium Capacity)\",\n", + " line=dict(dash=\"dot\"), # Dotted line for Simulation 2\n", + " )\n", + " )\n", + "\n", + " # Add trace for Simulation 3\n", + " fig.add_trace(\n", + " go.Scatter(\n", + " x=zone_prices_sim3[\"time\"],\n", + " y=zone_prices_sim3[\"clearing_price\"],\n", + " mode=\"lines\",\n", + " name=f\"{zone} - Sim3 (High Capacity)\",\n", + " line=dict(dash=\"solid\"), # Solid line for Simulation 3\n", " )\n", " )\n", "\n", "# Update layout for better aesthetics and interactivity\n", "fig.update_layout(\n", - " title=\"Clearing Prices per Zone Over Time: Simulation 1 vs Simulation 2\",\n", + " title=\"Clearing Prices per Zone Over Time: Sim1, Sim2, & Sim3\",\n", " xaxis_title=\"Time\",\n", " yaxis_title=\"Clearing Price\",\n", - " legend_title=\"Simulation\",\n", + " legend_title=\"Simulations\",\n", " xaxis=dict(\n", " tickangle=45,\n", " type=\"date\", # Ensure the x-axis is treated as dates\n", @@ -1153,279 +1192,482 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "id": "1d3e1c1c", + "cell_type": "markdown", + "id": "a7024e65", "metadata": {}, - "outputs": [], "source": [ - "# Compare power flows\n", - "plt.figure(figsize=(14, 8))\n", - "sns.heatmap(\n", - " power_flows_df_sim2.pivot_table(\n", - " index=\"time\", columns=[\"from_zone\", \"to_zone\"], values=\"flow_MW\", fill_value=0\n", - " ),\n", - " annot=True,\n", - " fmt=\".1f\",\n", - " cmap=\"coolwarm\",\n", - ")\n", - "plt.xlabel(\"Transmission Lines (From Zone -> To Zone)\")\n", - "plt.ylabel(\"Time\")\n", - "plt.title(\"Power Flows Between Zones Over Time: Simulation 2\")\n", - "plt.xticks(rotation=45, ha=\"right\")\n", - "plt.tight_layout()\n", - "plt.show()" + "**Explanation:**\n", + "\n", + "- **Clearing Prices Plot:** Shows how market prices vary over time for each zone across all three simulations. The dashed lines represent Simulation 1 (no transmission capacity), dotted lines represent Simulation 2 (medium transmission capacity), and solid lines represent Simulation 3 (high transmission capacity). This visualization helps in observing how the presence of transmission capacity affects price convergence or divergence between zones." ] }, { "cell_type": "markdown", - "id": "723d53b1", + "id": "73397059", "metadata": {}, "source": [ - "**Explanation:**\n", + "## 6. Integrating with ASSUME\n", "\n", - "- **Number of Accepted Bids:** Comparing the total number of accepted bids in both simulations can show how transmission capacity affects the ability to dispatch more units.\n", - "- **Clearing Prices Plot:** By plotting the clearing prices for each zone across both simulations, we can observe how the presence of transmission capacity influences price convergence or divergence between zones.\n", - "- **Power Flows Heatmap:** Visualizing power flows in Simulation 2 demonstrates how energy is transmitted between zones when transmission capacity is available." + "In a real-world scenario, the ASSUME framework handles the reading of CSV files and the configuration of the simulation through configuration files. For the purpose of this tutorial, we'll integrate our prepared data and configuration into ASSUME to execute the simulation seamlessly.\n", + "\n", + "### Step 1: Saving Input Files\n", + "\n", + "We will save the generated input DataFrames to the `inputs/tutorial_08` folder. The required files are:\n", + "- `demand_units.csv`\n", + "- `demand_df.csv`\n", + "- `powerplant_units.csv`\n", + "- `buses.csv`\n", + "- `lines.csv`\n", + "\n", + "Additionally, we'll create a new file `fuel_prices.csv`.\n", + "\n", + "#### Create the Inputs Directory and Save CSV Files" ] }, { - "cell_type": "markdown", - "id": "f5b14240", + "cell_type": "code", + "execution_count": null, + "id": "eb54851c", "metadata": {}, + "outputs": [], "source": [ - "## 6. Integrating with ASSUME\n", + "import os\n", "\n", - "In a real-world scenario, the ASSUME framework would handle the reading of CSV files and the configuration of the simulation through configuration files. For the purpose of this tutorial, we've mimicked the market clearing process using DataFrames and a simplified function to illustrate the inner workings of market zone coupling.\n", + "# Define the input directory\n", + "input_dir = \"inputs/tutorial_08\"\n", "\n", - "To integrate this process within ASSUME:\n", + "# Create the directory if it doesn't exist\n", + "os.makedirs(input_dir, exist_ok=True)\n", "\n", - "- **Input Files:** Prepare CSV files for buses, lines, powerplant_units, demand_units, and demand forecasts as demonstrated in section 4.\n", - "- **Configuration File:** Define the market configuration, including zone identifiers and transmission capacities.\n", - "- **Running the Simulation:** Use ASSUME's built-in functions to load the CSV files, apply the configurations, and execute the simulation.\n", + "# extend demand_df for another day with the same demand profile\n", + "demand_df = pd.concat([demand_df, demand_df])\n", + "demand_df.index = pd.date_range(start=\"2019-01-01\", periods=48, freq=\"h\")\n", "\n", - "Refer to the ASSUME documentation for detailed instructions on configuring and running simulations with CSV input files and configuration settings." + "# Save the DataFrames to CSV files\n", + "buses.to_csv(os.path.join(input_dir, \"buses.csv\"), index=False)\n", + "lines.to_csv(os.path.join(input_dir, \"lines.csv\"), index=False)\n", + "powerplant_units.to_csv(os.path.join(input_dir, \"powerplant_units.csv\"), index=False)\n", + "demand_units.to_csv(os.path.join(input_dir, \"demand_units.csv\"), index=False)\n", + "demand_df.to_csv(os.path.join(input_dir, \"demand_df.csv\"))\n", + "\n", + "print(\"Input CSV files have been saved to 'inputs/tutorial_08'.\")" ] }, { "cell_type": "markdown", - "id": "7c0ab370", + "id": "bc37c1e1", "metadata": {}, "source": [ - "## 7. Analyzing the Results\n", + "#### Create `fuel_prices.csv`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3e74a43e", + "metadata": {}, + "outputs": [], + "source": [ + "# Define fuel prices\n", + "fuel_prices = {\n", + " \"fuel\": [\"uranium\", \"co2\"],\n", + " \"price\": [5, 25],\n", + "}\n", "\n", - "After running the market clearing simulation, it's essential to analyze the results to understand how market zone coupling influenced market dynamics. Below are key metrics and methods to analyze the simulation outcomes." + "# Convert to DataFrame and save as CSV\n", + "fuel_prices_df = pd.DataFrame(fuel_prices).T\n", + "fuel_prices_df.to_csv(\n", + " os.path.join(input_dir, \"fuel_prices_df.csv\"), index=True, header=False\n", + ")\n", + "\n", + "print(\"Fuel Prices CSV file has been saved to 'inputs/tutorial_08/fuel_prices.csv'.\")" ] }, { "cell_type": "markdown", - "id": "d0edde5d", + "id": "f223540f", "metadata": {}, "source": [ - "### 7.1. Accepted Bids\n", + "### Step 2: Creating the Configuration YAML File\n", "\n", - "**Accepted Bids** indicate which power plant and demand bids were successfully dispatched in the market. Analyzing accepted bids helps in understanding supply and demand distribution across different zones." + "The configuration file defines the simulation parameters, including market settings and network configurations. Below is the YAML configuration tailored for our tutorial." + ] + }, + { + "cell_type": "markdown", + "id": "0711551b", + "metadata": {}, + "source": [ + "#### Create `config.yaml`" ] }, { "cell_type": "code", "execution_count": null, - "id": "cc8dbc99", + "id": "a1a7164b", "metadata": {}, "outputs": [], "source": [ - "# Display accepted bids for Simulation 1\n", - "print(\"Simulation 1: Accepted Bids DataFrame:\")\n", - "accepted_bids_df_sim1 = pd.DataFrame.from_dict(\n", - " accepted_bids_sim1, orient=\"index\", columns=[\"Acceptance_Ratio\"]\n", - ")\n", - "accepted_bids_df_sim1.reset_index(inplace=True)\n", - "accepted_bids_df_sim1.rename(columns={\"index\": \"Bid_ID\"}, inplace=True)\n", - "display(accepted_bids_df_sim1.head())\n", - "\n", - "# Display accepted bids for Simulation 2\n", - "print(\"Simulation 2: Accepted Bids DataFrame:\")\n", - "accepted_bids_df_sim2 = pd.DataFrame.from_dict(\n", - " accepted_bids_sim2, orient=\"index\", columns=[\"Acceptance_Ratio\"]\n", - ")\n", - "accepted_bids_df_sim2.reset_index(inplace=True)\n", - "accepted_bids_df_sim2.rename(columns={\"index\": \"Bid_ID\"}, inplace=True)\n", - "display(accepted_bids_df_sim2.head())" + "config = {\n", + " \"zonal_case\": {\n", + " \"start_date\": \"2019-01-01 00:00\",\n", + " \"end_date\": \"2019-01-01 23:00\",\n", + " \"time_step\": \"1h\",\n", + " \"save_frequency_hours\": 24,\n", + " \"markets_config\": {\n", + " \"zonal\": {\n", + " \"operator\": \"EOM_operator\",\n", + " \"product_type\": \"energy\",\n", + " \"products\": [{\"duration\": \"1h\", \"count\": 1, \"first_delivery\": \"1h\"}],\n", + " \"opening_frequency\": \"1h\",\n", + " \"opening_duration\": \"1h\",\n", + " \"volume_unit\": \"MWh\",\n", + " \"maximum_bid_volume\": 100000,\n", + " \"maximum_bid_price\": 3000,\n", + " \"minimum_bid_price\": -500,\n", + " \"price_unit\": \"EUR/MWh\",\n", + " \"market_mechanism\": \"pay_as_clear_complex\",\n", + " \"additional_fields\": [\"bid_type\", \"node\"],\n", + " \"param_dict\": {\"network_path\": \".\", \"zones_identifier\": \"zone_id\"},\n", + " }\n", + " },\n", + " }\n", + "}\n", + "\n", + "# Define the path for the config file\n", + "config_path = os.path.join(input_dir, \"config.yaml\")\n", + "\n", + "# Save the configuration to a YAML file\n", + "with open(config_path, \"w\") as file:\n", + " yaml.dump(config, file, sort_keys=False)\n", + "\n", + "print(f\"Configuration YAML file has been saved to '{config_path}'.\")" ] }, { "cell_type": "markdown", - "id": "58b1c1bd", + "id": "129df923", "metadata": {}, "source": [ - "### 7.2. Power Flows Between Zones\n", + "### Detailed Configuration Explanation\n", + "\n", + "The `config.yaml` file plays a key role in defining the simulation parameters. Below is a detailed explanation of each configuration parameter:\n", + "\n", + "- **zonal_case:**\n", + " - **start_date:** The start date and time for the simulation (`2019-01-01 00:00`).\n", + " - **end_date:** The end date and time for the simulation (`2019-01-02 00:00`).\n", + " - **time_step:** The simulation time step (`1h`), indicating hourly intervals.\n", + " - **save_frequency_hours:** How frequently the simulation results are saved (`24` hours).\n", + "\n", + "- **markets_config:**\n", + " - **zonal:** The name of the market. Remember, that our power plant units had a column named bidding_zonal. This is how a particluar bidding strategy is assigned to a particluar market.\n", + " - **operator:** The market operator (`EOM_operator`).\n", + " - **product_type:** Type of market product (`energy`).\n", + " - **products:** List defining the market products:\n", + " - **duration:** Duration of the product (`1h`).\n", + " - **count:** Number of products (`1`).\n", + " - **first_delivery:** When the first delivery occurs (`1h`).\n", + " - **opening_frequency:** Frequency of market openings (`1h`).\n", + " - **opening_duration:** Duration of market openings (`1h`).\n", + " - **volume_unit:** Unit of volume measurement (`MWh`).\n", + " - **maximum_bid_volume:** Maximum volume allowed per bid (`100000` MWh).\n", + " - **maximum_bid_price:** Maximum price allowed per bid (`3000` EUR/MWh).\n", + " - **minimum_bid_price:** Minimum price allowed per bid (`-500` EUR/MWh).\n", + " - **price_unit:** Unit of price measurement (`EUR/MWh`).\n", + " - **market_mechanism:** The market clearing mechanism (`pay_as_clear_complex`).\n", + " - **additional_fields:** Additional fields required for bids:\n", + " - **bid_type:** Type of bid (e.g., supply or demand).\n", + " - **node:** The market zone associated with the bid.\n", + " - **param_dict:**\n", + " - **network_path:** Path to the network files (`.` indicates current directory).\n", + " - **zones_identifier:** Identifier used for market zones (`zone_id`).\n", + "\n", + "This configuration ensures that the simulation accurately represents the zonal market dynamics, including bid restrictions and market operations." + ] + }, + { + "cell_type": "markdown", + "id": "97bf3b93", + "metadata": {}, + "source": [ + "### Step 3: Running the Simulation\n", "\n", - "**Power Flows** show the amount of energy transmitted between different zones. This helps in verifying that transmission constraints are respected and understanding cross-zone energy trading." + "With the input files and configuration in place, we can now run the simulation using ASSUME's built-in functions." + ] + }, + { + "cell_type": "markdown", + "id": "3d9088f8", + "metadata": {}, + "source": [ + "#### Example Simulation Code" ] }, { "cell_type": "code", "execution_count": null, - "id": "3f7140ed", + "id": "2fa30762", "metadata": {}, "outputs": [], "source": [ - "# Display power flows for Simulation 1\n", - "print(\"Simulation 1: Power Flows Between Zones:\")\n", - "display(power_flows_df_sim1.head())\n", + "# import the main World class and the load_scenario_folder functions from assume\n", + "from assume import World\n", + "from assume.scenario.loader_csv import load_scenario_folder\n", "\n", - "# Display power flows for Simulation 2\n", - "print(\"Simulation 2: Power Flows Between Zones:\")\n", - "display(power_flows_df_sim2.head())" + "# Define paths for input and output data\n", + "csv_path = \"outputs\"\n", + "\n", + "# Define the data format and database URI\n", + "# Use \"local_db\" for SQLite database or \"timescale\" for TimescaleDB in Docker\n", + "\n", + "# Create directories if they don't exist\n", + "os.makedirs(csv_path, exist_ok=True)\n", + "os.makedirs(\"local_db\", exist_ok=True)\n", + "\n", + "data_format = \"local_db\" # \"local_db\" or \"timescale\"\n", + "\n", + "if data_format == \"local_db\":\n", + " db_uri = \"sqlite:///local_db/assume_db.db\"\n", + "elif data_format == \"timescale\":\n", + " db_uri = \"postgresql://assume:assume@localhost:5432/assume\"\n", + "\n", + "# Create the World instance\n", + "world = World(database_uri=db_uri, export_csv_path=csv_path)\n", + "\n", + "# Load the scenario by providing the world instance\n", + "# The path to the inputs folder and the scenario name (subfolder in inputs)\n", + "# and the study case name (which config to use for the simulation)\n", + "load_scenario_folder(\n", + " world,\n", + " inputs_path=\"inputs\",\n", + " scenario=\"tutorial_08\",\n", + " study_case=\"zonal_case\",\n", + ")\n", + "\n", + "# Run the simulation\n", + "world.run()" + ] + }, + { + "cell_type": "markdown", + "id": "2e281f8c", + "metadata": {}, + "source": [ + "## 7. Analyzing the Results\n", + "\n", + "After running the simulation, you can analyze the results using the methods demonstrated in section 5. This integration with ASSUME allows for more extensive and scalable simulations, leveraging the framework's capabilities for handling complex market scenarios.\n", + "\n", + "In this section, we will:\n", + "\n", + "1. **Locate the Simulation Output Files:** Understand where the simulation results are saved.\n", + "2. **Load and Inspect the Output Data:** Read the output CSV files and examine their structure.\n", + "3. **Plot Clearing Prices:** Visualize the market clearing prices to compare with our previous manual simulations." ] }, { "cell_type": "markdown", - "id": "b0c781d7", + "id": "6472a8de", "metadata": {}, "source": [ - "### 7.3. Clearing Prices\n", + "### 7.1. Locating the Simulation Output Files\n", "\n", - "**Clearing Prices** represent the market price in each zone at each time period. Comparing prices across zones can reveal how zone coupling affects market equilibrium and price convergence." + "The simulation outputs are saved in the `outputs/tutorial_08_zonal_case` directory. Specifically, the key output file we'll work with is `market_meta.csv`, which contains detailed information about the market outcomes for each zone and time period." + ] + }, + { + "cell_type": "markdown", + "id": "4d2aca20", + "metadata": {}, + "source": [ + "### 7.2. Loading and Inspecting the Output Data" ] }, { "cell_type": "code", "execution_count": null, - "id": "d9f196ae", + "id": "80fdd812", "metadata": {}, "outputs": [], "source": [ - "# Display clearing prices for Simulation 1\n", - "print(\"Simulation 1: Clearing Prices per Zone and Time:\")\n", - "display(clearing_prices_df_sim1.head())\n", + "# Define the path to the simulation output\n", + "output_dir = \"outputs/tutorial_08_zonal_case\"\n", + "market_meta_path = os.path.join(output_dir, \"market_meta.csv\")\n", + "\n", + "# Load the market_meta.csv file\n", + "market_meta = pd.read_csv(market_meta_path, index_col=\"time\", parse_dates=True)\n", + "# drop the first column\n", + "market_meta = market_meta.drop(columns=market_meta.columns[0])\n", "\n", - "# Display clearing prices for Simulation 2\n", - "print(\"Simulation 2: Clearing Prices per Zone and Time:\")\n", - "display(clearing_prices_df_sim2.head())" + "# Display a sample of the data\n", + "print(\"Sample of market_meta.csv:\")\n", + "display(market_meta.head())" ] }, { "cell_type": "markdown", - "id": "de908c5c", + "id": "538d2a28", "metadata": {}, "source": [ - "### 7.4. Visualization (Optional)\n", + "**Explanation:**\n", "\n", - "Visualizing the results can provide a clearer understanding of the market dynamics. Below are examples of how to plot clearing prices and power flows." + "- **market_meta.csv:** This file contains the market outcomes for each zone and time period, including supply and demand volumes, clearing prices, and other relevant metrics.\n", + "- **Columns:**\n", + " - `supply_volume`: Total volume supplied in the zone.\n", + " - `demand_volume`: Total volume demanded in the zone.\n", + " - `demand_volume_energy`: Energy demand volume (same as `demand_volume` for energy markets).\n", + " - `supply_volume_energy`: Energy supply volume (same as `supply_volume` for energy markets).\n", + " - `price`: Clearing price in the zone for the time period.\n", + " - `max_price`: Maximum bid price accepted.\n", + " - `min_price`: Minimum bid price accepted.\n", + " - `node`: Identifier for the market zone (`DE_1` or `DE_2`).\n", + " - `product_start`: Start time of the market product.\n", + " - `product_end`: End time of the market product.\n", + " - `only_hours`: Indicator flag (not used in this context).\n", + " - `market_id`: Identifier for the market (`zonal`).\n", + " - `time`: Timestamp for the market product.\n", + " - `simulation`: Identifier for the simulation case (`tutorial_08_zonal_case`)." + ] + }, + { + "cell_type": "markdown", + "id": "76b537d2", + "metadata": {}, + "source": [ + "### 7.3. Plotting Clearing Prices\n", + "\n", + "To verify that the simulation results align with our previous manual demonstrations, we'll plot the clearing prices for each zone over time. This will help us observe how transmission capacities influence price convergence or divergence between zones." + ] + }, + { + "cell_type": "markdown", + "id": "46af3ed7", + "metadata": {}, + "source": [ + "#### Processing the Market Meta Data" ] }, { "cell_type": "code", "execution_count": null, - "id": "e5f0b36d", + "id": "f00529e4", "metadata": {}, "outputs": [], "source": [ - "# Plot Clearing Prices for Each Zone Over Time\n", - "plt.figure(figsize=(12, 6))\n", - "for zone in nodes_sim1:\n", - " zone_prices_sim1 = clearing_prices_df_sim1[clearing_prices_df_sim1[\"zone\"] == zone]\n", - " zone_prices_sim2 = clearing_prices_df_sim2[clearing_prices_df_sim2[\"zone\"] == zone]\n", - " plt.plot(\n", - " zone_prices_sim1[\"time\"],\n", - " zone_prices_sim1[\"clearing_price\"],\n", - " label=f\"{zone} - Sim1\",\n", - " linestyle=\"--\",\n", - " )\n", - " plt.plot(\n", - " zone_prices_sim2[\"time\"],\n", - " zone_prices_sim2[\"clearing_price\"],\n", - " label=f\"{zone} - Sim2\",\n", - " linestyle=\"-\",\n", + "# Extract unique zones\n", + "zones = market_meta[\"node\"].unique()\n", + "\n", + "# Initialize an empty DataFrame to store clearing prices per zone and time\n", + "clearing_prices_df = pd.DataFrame()\n", + "\n", + "# Populate the DataFrame with clearing prices for each zone\n", + "for zone in zones:\n", + " zone_data = market_meta[market_meta[\"node\"] == zone][[\"price\"]]\n", + " zone_data = zone_data.rename(columns={\"price\": f\"{zone}_price\"})\n", + " clearing_prices_df = (\n", + " pd.merge(\n", + " clearing_prices_df,\n", + " zone_data,\n", + " left_index=True,\n", + " right_index=True,\n", + " how=\"outer\",\n", + " )\n", + " if not clearing_prices_df.empty\n", + " else zone_data\n", " )\n", - "plt.xlabel(\"Time\")\n", - "plt.ylabel(\"Clearing Price\")\n", - "plt.title(\"Clearing Prices per Zone Over Time: Simulation 1 vs Simulation 2\")\n", - "plt.legend()\n", - "plt.xticks(rotation=45)\n", - "plt.tight_layout()\n", - "plt.show()" + "\n", + "# Sort the DataFrame by time\n", + "clearing_prices_df = clearing_prices_df.sort_index()\n", + "\n", + "# Display a sample of the processed clearing prices\n", + "print(\"Sample of Processed Clearing Prices:\")\n", + "display(clearing_prices_df.head())" ] }, { "cell_type": "markdown", - "id": "17c08c41", + "id": "35d82a8f", "metadata": {}, "source": [ - "**Explanation:**\n", - "\n", - "- **Clearing Prices Plot:** Shows how market prices vary over time for each zone across both simulations. The dashed lines represent Simulation 1 (no transmission capacity), and the solid lines represent Simulation 2 (with transmission capacity). This visualization helps in observing how the presence of transmission capacity affects price convergence or divergence between zones." + "#### Plotting the market clearing prices" ] }, { "cell_type": "code", "execution_count": null, - "id": "9caf342a", + "id": "a3d56ac7", "metadata": {}, "outputs": [], "source": [ - "# Plot Power Flows Between Zones Over Time for Simulation 2\n", - "plt.figure(figsize=(14, 8))\n", - "sns.heatmap(\n", - " power_flows_df_sim2.pivot_table(\n", - " index=\"time\", columns=[\"from_zone\", \"to_zone\"], values=\"flow_MW\", fill_value=0\n", + "# Initialize the Plotly figure\n", + "fig = go.Figure()\n", + "\n", + "# Iterate over each zone to plot clearing prices\n", + "for zone in zones:\n", + " fig.add_trace(\n", + " go.Scatter(\n", + " x=clearing_prices_df.index,\n", + " y=clearing_prices_df[f\"{zone}_price\"],\n", + " mode=\"lines\",\n", + " name=f\"{zone} - Simulation\",\n", + " line=dict(width=2),\n", + " )\n", + " )\n", + "\n", + "# Update layout for better aesthetics and interactivity\n", + "fig.update_layout(\n", + " title=\"Clearing Prices per Zone Over Time: Simulation Results\",\n", + " xaxis_title=\"Time\",\n", + " yaxis_title=\"Clearing Price (EUR/MWh)\",\n", + " legend_title=\"Market Zones\",\n", + " xaxis=dict(\n", + " tickangle=45,\n", + " type=\"date\", # Ensure the x-axis is treated as dates\n", " ),\n", - " annot=True,\n", - " fmt=\".1f\",\n", - " cmap=\"coolwarm\",\n", + " hovermode=\"x unified\", # Unified hover for better comparison\n", + " template=\"plotly_white\", # Clean white background\n", + " width=1000,\n", + " height=600,\n", ")\n", - "plt.xlabel(\"Transmission Lines (From Zone -> To Zone)\")\n", - "plt.ylabel(\"Time\")\n", - "plt.title(\"Power Flows Between Zones Over Time: Simulation 2\")\n", - "plt.xticks(rotation=45, ha=\"right\")\n", - "plt.tight_layout()\n", - "plt.show()" + "\n", + "# Display the interactive plot\n", + "fig.show()" ] }, { "cell_type": "markdown", - "id": "be77e1f9", + "id": "9ed0f0a4", "metadata": {}, "source": [ "**Explanation:**\n", "\n", - "- **Power Flows Heatmap (Simulation 2):** Visualizes the amount of energy transmitted between zones over time when transmission capacity is present. The heatmap highlights periods of high or low cross-zone trading, demonstrating the impact of transmission capacity on energy distribution." + "- **Plot Details:**\n", + " - **Lines:** Each zone's clearing price over time is represented by a distinct line.\n", + " - **Interactivity:** The Plotly plot allows for interactive exploration of the data, such as zooming and hovering for specific values.\n", + " - **Aesthetics:** The clean white template and clear labels enhance readability.\n", + "\n", + "- **Interpretation:**\n", + " - **Price Trends:** Observing how clearing prices fluctuate over time within each zone.\n", + " - **Impact of Transmission Capacity:** Comparing price levels between zones can reveal the effects of transmission capacities on market equilibrium. For instance, higher transmission capacity might lead to more price convergence between zones, while zero capacity could result in divergent price levels due to isolated supply and demand dynamics." ] }, { "cell_type": "markdown", - "id": "605935df", + "id": "02eb3518", "metadata": {}, "source": [ "## Conclusion\n", "\n", - "In this tutorial, we explored how to mimic and understand market zone coupling within the ASSUME framework. We covered the following key steps:\n", - "\n", - "1. **Introduction to Market Zone Coupling:** Understanding the concept and its significance in electricity market simulations.\n", - "2. **Setting Up the ASSUME Framework:** Installing the framework and preparing the environment for zone coupling.\n", - "3. **Understanding Market Clearing Optimization:** Grasping the fundamentals of the market clearing process with a focus on zone interactions.\n", - "4. **Creating Exemplary Input Files for Market Zone Coupling:** Defining buses, transmission lines, power plant units, demand units, and preparing demand forecasts.\n", - "5. **Mimicking the Market Clearing Process:** \n", - " - **Calculating the Incidence Matrix:** Summing transmission line capacities between zones to create the incidence matrix.\n", - " - **Implementing the Simplified Market Clearing Function:** Using a simplified Pyomo model to perform market clearing.\n", - " - **Running the Market Clearing Simulation:** Executing two simulations to observe the impact of transmission capacity.\n", - "6. **Integrating with ASSUME:** Outlining the steps to integrate the process within the ASSUME framework using CSV input files and configuration settings.\n", - "7. **Analyzing the Results:** Extracting and visualizing key metrics to assess the impact of market zone coupling.\n", + "In this tutorial, we successfully integrated our custom market zone coupling simulation with the ASSUME framework. By preparing the necessary input files and configuration, running the simulation, and analyzing the results, we demonstrated how transmission capacities influence market dynamics and clearing prices across different zones.\n", "\n", "**Key Takeaways:**\n", "\n", - "- **Incidence Matrix:** Represents the transmission capacities between different market zones. Calculated by summing the capacities of transmission lines connecting each pair of zones. While this method is simplified, it provides a foundational understanding of how zones interact within the market.\n", - "\n", - "- **Simplified Market Clearing:** Demonstrates the core principles of market clearing, including bid acceptance and power flow management between zones.\n", - "\n", - "- **Impact of Transmission Capacity:** The presence of transmission capacity allows for energy trading between zones, potentially reducing overall costs and balancing demand more effectively. Without transmission capacity, each zone must rely solely on its local generation, which may lead to higher costs if local generation is more expensive.\n", - "\n", - "- **Limitations and Future Work:** The current method of calculating the incidence matrix by summing line capacities is limited and does not capture the full complexity of real-world transmission networks. Future implementations will enhance this approach to include more detailed network modeling, accounting for factors like line impedance, reactive power flows, and dynamic constraints.\n", + "- **Seamless Integration:** ASSUME allows for straightforward integration of custom market models through well-defined input and configuration files.\n", + "- **Accurate Simulation:** Properly setting up transmission constraints ensures realistic modeling of energy flows and price formations.\n", + "- **Effective Analysis:** Utilizing visualization tools like Plotly and Matplotlib facilitates comprehensive analysis of simulation outcomes.\n", "\n", - "By following this guide, you have successfully set up a simplified multi-zone electricity market simulation, enabling a deeper understanding of market dynamics and the role of zone coupling in balancing supply and demand. You can now extend this setup to include more zones, varying transmission capacities, and diverse bidding strategies to explore a wide range of market scenarios.\n", + "This setup serves as a foundation for more complex and scalable market simulations, enabling deeper insights into the interplay between supply, demand, and transmission infrastructure in multi-zone electricity markets.\n", "\n", - "Thank you for participating in this workshop!" + "Thank you for following along with this tutorial!" ] } ], From d1941b9ad8626b48dac982d1b9a7cd59d3b06b93 Mon Sep 17 00:00:00 2001 From: Nick Harder Date: Fri, 27 Sep 2024 15:33:24 +0200 Subject: [PATCH 07/27] adjustments to the market coupling part --- .../notebooks/08_market_zone_coupling.ipynb | 4623 ++++++++++++++++- 1 file changed, 4402 insertions(+), 221 deletions(-) diff --git a/examples/notebooks/08_market_zone_coupling.ipynb b/examples/notebooks/08_market_zone_coupling.ipynb index 257bab47..6b8d1f95 100644 --- a/examples/notebooks/08_market_zone_coupling.ipynb +++ b/examples/notebooks/08_market_zone_coupling.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "id": "d6968cbf", - "metadata": {}, + "metadata": { + "id": "d6968cbf" + }, "source": [ "# Market Zone Coupling in the ASSUME Framework\n", "\n", @@ -18,8 +20,8 @@ " - 4.1. Defining Buses and Zones\n", " - 4.2. Configuring Transmission Lines\n", " - 4.3. Setting Up Power Plant and Demand Units\n", - " - 4.4. Preparing Demand Forecast Data\n", - "5. **Mimicking the Market Clearing Process**\n", + " - 4.4. Preparing Demand Data\n", + "5. **Understanding the Market Clearing with Zone Coupling**\n", " - 5.1. Calculating the Incidence Matrix\n", " - 5.2. Implementing the Simplified Market Clearing Function\n", " - 5.3. Running the Market Clearing Simulation\n", @@ -34,7 +36,9 @@ { "cell_type": "markdown", "id": "b7f48d5e", - "metadata": {}, + "metadata": { + "id": "b7f48d5e" + }, "source": [ "## 1. Introduction to Market Zone Coupling\n", "\n", @@ -54,7 +58,9 @@ { "cell_type": "markdown", "id": "ad384717", - "metadata": {}, + "metadata": { + "id": "ad384717" + }, "source": [ "## 2. Setting Up the ASSUME Framework for Market Zone Coupling\n", "\n", @@ -65,9 +71,14 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "d501b239", - "metadata": {}, + "metadata": { + "id": "d501b239", + "vscode": { + "languageId": "shellscript" + } + }, "outputs": [], "source": [ "# Install the ASSUME framework\n", @@ -83,17 +94,37 @@ { "cell_type": "markdown", "id": "7935b350", - "metadata": {}, + "metadata": { + "id": "7935b350" + }, "source": [ "Let's also import some basic libraries that we will use throughout the tutorial." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "05df5da6", - "metadata": {}, - "outputs": [], + "metadata": { + "id": "05df5da6", + "outputId": "06e07c72-7a33-43e2-c5d6-da952b29edda" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/ck/0m6299c93kd95nnbzxsb67v00000gn/T/ipykernel_71588/808789752.py:1: DeprecationWarning: \n", + "Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0),\n", + "(to allow more performant data types, such as the Arrow string type, and better interoperability with other libraries)\n", + "but was not found to be installed on your system.\n", + "If this would cause problems for you,\n", + "please provide us feedback at https://github.com/pandas-dev/pandas/issues/54466\n", + " \n", + " import pandas as pd\n" + ] + } + ], "source": [ "import pandas as pd\n", "\n", @@ -107,40 +138,12 @@ "from IPython.display import display" ] }, - { - "cell_type": "markdown", - "id": "bf42fa2d", - "metadata": {}, - "source": [ - "**Select Input Files Path:**\n", - "\n", - "Depending on whether you're using Google Colab or a local environment, the input file paths may vary. The following code snippet helps differentiate between these environments and sets the appropriate input paths." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "11eb5fb7", - "metadata": {}, - "outputs": [], - "source": [ - "import importlib.util\n", - "\n", - "# Check if 'google.colab' is available\n", - "IN_COLAB = importlib.util.find_spec(\"google.colab\") is not None\n", - "\n", - "colab_inputs_path = \"assume-repo/examples/inputs\"\n", - "local_inputs_path = \"../inputs\"\n", - "\n", - "inputs_path = colab_inputs_path if IN_COLAB else local_inputs_path\n", - "\n", - "print(f\"Using inputs path: {inputs_path}\")" - ] - }, { "cell_type": "markdown", "id": "3491bed0", - "metadata": {}, + "metadata": { + "id": "3491bed0" + }, "source": [ "## 3. Understanding the Market Clearing Optimization\n", "\n", @@ -158,9 +161,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "72cdba6b", - "metadata": {}, + "metadata": { + "id": "72cdba6b" + }, "outputs": [], "source": [ "# Display a simplified version of the market clearing optimization function\n", @@ -236,36 +241,33 @@ " model.nodes, model.T, rule=energy_balance_rule\n", " )\n", "\n", - " # Transmission constraints based on the incidence matrix\n", - " if incidence_matrix is not None:\n", - "\n", - " def transmission_rule(model, t, node1, node2):\n", - " \"\"\"\n", - " Limits the power flow between two zones based on transmission capacity.\n", - " \"\"\"\n", - " capacity = incidence_matrix[node1].get(node2, 0)\n", - " return (-capacity, model.flows[t, node1, node2], capacity)\n", + " def transmission_rule(model, t, node1, node2):\n", + " \"\"\"\n", + " Limits the power flow between two zones based on transmission capacity.\n", + " \"\"\"\n", + " capacity = incidence_matrix[node1].get(node2, 0)\n", + " return (-capacity, model.flows[t, node1, node2], capacity)\n", "\n", - " # Apply the transmission constraints to all possible flows\n", - " model.transmission_constraints = pyo.Constraint(\n", - " model.T, model.nodes, model.nodes, rule=transmission_rule\n", - " )\n", + " # Apply the transmission constraints to all possible flows\n", + " model.transmission_constraints = pyo.Constraint(\n", + " model.T, model.nodes, model.nodes, rule=transmission_rule\n", + " )\n", "\n", - " def symmetry_rule(model, t, node1, node2):\n", - " \"\"\"\n", - " Ensures that the flow from node1 to node2 is the negative of the flow from node2 to node1.\n", - " \"\"\"\n", - " if node1 != node2:\n", - " return model.flows[t, node2, node1] == -model.flows[t, node1, node2]\n", - " else:\n", - " return (\n", - " pyo.Constraint.Skip\n", - " ) # No constraint needed for flows within the same node\n", - "\n", - " # Apply the antisymmetry rule to all node pairs and time periods\n", - " model.symmetry_constraints = pyo.Constraint(\n", - " model.T, model.nodes, model.nodes, rule=symmetry_rule\n", - " )\n", + " def symmetry_rule(model, t, node1, node2):\n", + " \"\"\"\n", + " Ensures that the flow from node1 to node2 is the negative of the flow from node2 to node1.\n", + " \"\"\"\n", + " if node1 != node2:\n", + " return model.flows[t, node2, node1] == -model.flows[t, node1, node2]\n", + " else:\n", + " return (\n", + " pyo.Constraint.Skip\n", + " ) # No constraint needed for flows within the same node\n", + "\n", + " # Apply the antisymmetry rule to all node pairs and time periods\n", + " model.symmetry_constraints = pyo.Constraint(\n", + " model.T, model.nodes, model.nodes, rule=symmetry_rule\n", + " )\n", "\n", " # Objective: Minimize total cost (sum of bid prices multiplied by accepted volumes)\n", " model.objective = pyo.Objective(\n", @@ -278,11 +280,6 @@ " solver = SolverFactory(\"glpk\")\n", " results = solver.solve(model)\n", "\n", - " market_clearing_prices = {}\n", - " for node in nodes:\n", - " market_clearing_prices[node] = {\n", - " t: pyo.value(model.dual[model.energy_balance[node, t]]) for t in model.T\n", - " }\n", " # Check if the solver found an optimal solution\n", " if results.solver.termination_condition != TerminationCondition.optimal:\n", " raise Exception(\"Solver did not find an optimal solution.\")\n", @@ -293,7 +290,9 @@ { "cell_type": "markdown", "id": "28637869", - "metadata": {}, + "metadata": { + "id": "28637869" + }, "source": [ "The above function is a simplified representation focusing on the essential aspects of market zone coupling. In the following sections, we will delve deeper into creating input files and mimicking the market clearing process using this function to understand the inner workings of the ASSUME framework." ] @@ -301,17 +300,21 @@ { "cell_type": "markdown", "id": "26e3cfa8", - "metadata": {}, + "metadata": { + "id": "26e3cfa8" + }, "source": [ "## 4. Creating Exemplary Input Files for Market Zone Coupling\n", "\n", - "To implement market zone coupling, users need to prepare specific input files that define the network's structure, units, and demand profiles. Below, we will guide you through creating the necessary DataFrames for buses, transmission lines, power plant units, demand units, and demand forecasts." + "To implement market zone coupling, users need to prepare specific input files that define the network's structure, units, and demand profiles. Below, we will guide you through creating the necessary DataFrames for buses, transmission lines, power plant units, demand units, and demand profiles." ] }, { "cell_type": "markdown", "id": "01726994", - "metadata": {}, + "metadata": { + "id": "01726994" + }, "source": [ "### 4.1. Defining Buses and Zones\n", "\n", @@ -320,12 +323,94 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "ae9695a3", - "metadata": {}, - "outputs": [], + "metadata": { + "cellView": "form", + "id": "ae9695a3", + "jupyter": { + "source_hidden": true + }, + "outputId": "3be943e1-af78-4833-c6ba-00a1ff4956ce" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Buses DataFrame:\n" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + "
namev_nomzone_idxy
0north_1380.0DE_110.054.0
1north_2380.0DE_19.553.5
2south380.0DE_211.648.1
\n", + "
" + ], + "text/plain": [ + " name v_nom zone_id x y\n", + "0 north_1 380.0 DE_1 10.0 54.0\n", + "1 north_2 380.0 DE_1 9.5 53.5\n", + "2 south 380.0 DE_2 11.6 48.1" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# Define the buses DataFrame with three nodes and two zones\n", + "# @title Define the buses DataFrame with three nodes and two zones\n", "buses = pd.DataFrame(\n", " {\n", " \"name\": [\"north_1\", \"north_2\", \"south\"],\n", @@ -344,7 +429,9 @@ { "cell_type": "markdown", "id": "02d32661", - "metadata": {}, + "metadata": { + "id": "02d32661" + }, "source": [ "**Explanation:**\n", "\n", @@ -357,7 +444,9 @@ { "cell_type": "markdown", "id": "01f22792", - "metadata": {}, + "metadata": { + "id": "01f22792" + }, "source": [ "### 4.2. Configuring Transmission Lines\n", "\n", @@ -366,24 +455,109 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "4a531a25", - "metadata": {}, - "outputs": [], + "metadata": { + "cellView": "form", + "id": "4a531a25", + "jupyter": { + "source_hidden": true + }, + "outputId": "61f797fe-3fa8-463e-d46c-6c7ec080ccf6" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Transmission Lines DataFrame:\n" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namebus0bus1s_nomxr
0Line_N1_Snorth_1south5000.00.010.001
1Line_N2_Snorth_2south5000.00.010.001
2Line_N1_N2north_1north_25000.00.010.001
\n", + "
" + ], + "text/plain": [ + " name bus0 bus1 s_nom x r\n", + "0 Line_N1_S north_1 south 5000.0 0.01 0.001\n", + "1 Line_N2_S north_2 south 5000.0 0.01 0.001\n", + "2 Line_N1_N2 north_1 north_2 5000.0 0.01 0.001" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# Define the transmission lines DataFrame with three lines\n", + "# @title Define three transmission lines\n", "lines = pd.DataFrame(\n", " {\n", " \"name\": [\"Line_N1_S\", \"Line_N2_S\", \"Line_N1_N2\"],\n", " \"bus0\": [\"north_1\", \"north_2\", \"north_1\"],\n", " \"bus1\": [\"south\", \"south\", \"north_2\"],\n", - " \"s_nom\": [10000.0, 10000.0, 5000.0], # Increased capacities for clarity\n", + " \"s_nom\": [5000.0, 5000.0, 5000.0],\n", " \"x\": [0.01, 0.01, 0.01],\n", " \"r\": [0.001, 0.001, 0.001],\n", " }\n", ")\n", "\n", - "# Display the lines DataFrame\n", "print(\"Transmission Lines DataFrame:\")\n", "display(lines)" ] @@ -391,7 +565,9 @@ { "cell_type": "markdown", "id": "13cb21b0", - "metadata": {}, + "metadata": { + "id": "13cb21b0" + }, "source": [ "**Explanation:**\n", "\n", @@ -405,7 +581,9 @@ { "cell_type": "markdown", "id": "8874c322", - "metadata": {}, + "metadata": { + "id": "8874c322" + }, "source": [ "### 4.3. Setting Up Power Plant and Demand Units\n", "\n", @@ -414,11 +592,156 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "e71b7ce9", - "metadata": {}, - "outputs": [], + "metadata": { + "cellView": "form", + "id": "e71b7ce9", + "jupyter": { + "source_hidden": true + }, + "outputId": "d34609a8-0758-4aa7-9911-72ffc942a69b" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Power Plant Units DataFrame:\n" + ] + }, + { + "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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
nametechnologybidding_zonalfuel_typeemission_factormax_powermin_powerefficiencyadditional_costnodeunit_operator
0Unit 1nuclearnaive_eomuranium0.01000.00.00.35north_1Operator North
1Unit 2nuclearnaive_eomuranium0.01000.00.00.36north_1Operator North
2Unit 3nuclearnaive_eomuranium0.01000.00.00.37north_1Operator North
3Unit 4nuclearnaive_eomuranium0.01000.00.00.38north_1Operator North
4Unit 5nuclearnaive_eomuranium0.01000.00.00.39north_1Operator North
\n", + "
" + ], + "text/plain": [ + " name technology bidding_zonal fuel_type emission_factor max_power \\\n", + "0 Unit 1 nuclear naive_eom uranium 0.0 1000.0 \n", + "1 Unit 2 nuclear naive_eom uranium 0.0 1000.0 \n", + "2 Unit 3 nuclear naive_eom uranium 0.0 1000.0 \n", + "3 Unit 4 nuclear naive_eom uranium 0.0 1000.0 \n", + "4 Unit 5 nuclear naive_eom uranium 0.0 1000.0 \n", + "\n", + " min_power efficiency additional_cost node unit_operator \n", + "0 0.0 0.3 5 north_1 Operator North \n", + "1 0.0 0.3 6 north_1 Operator North \n", + "2 0.0 0.3 7 north_1 Operator North \n", + "3 0.0 0.3 8 north_1 Operator North \n", + "4 0.0 0.3 9 north_1 Operator North " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ + "# @title Create the power plant units DataFrame\n", + "\n", "# Define the total number of units\n", "num_units = 30 # Reduced for simplicity\n", "\n", @@ -444,9 +767,12 @@ "unit_operator = []\n", "\n", "for i in range(1, num_units + 1):\n", - " if 1 <= i <= 15:\n", + " if 1 <= i <= 8:\n", " node.append(\"north_1\") # All north units connected to 'north_1'\n", " unit_operator.append(\"Operator North\")\n", + " elif 9 <= i <= 15:\n", + " node.append(\"north_2\")\n", + " unit_operator.append(\"Operator North\")\n", " else:\n", " node.append(\"south\") # All south units connected to 'south'\n", " unit_operator.append(\"Operator South\")\n", @@ -468,19 +794,113 @@ " }\n", ")\n", "\n", - "# Display the powerplant_units DataFrame\n", "print(\"Power Plant Units DataFrame:\")\n", - "display(powerplant_units)" + "display(powerplant_units.head())" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "365aa96b", - "metadata": {}, - "outputs": [], + "metadata": { + "cellView": "form", + "id": "365aa96b", + "jupyter": { + "source_hidden": true + }, + "outputId": "e743edad-038f-43f2-e307-b993fea1d21d" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Demand Units DataFrame:\n" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
nametechnologybidding_zonalmax_powermin_powerunit_operatornode
0demand_north_1inflex_demandnaive_eom1000000eom_denorth_1
1demand_north_2inflex_demandnaive_eom1000000eom_denorth_2
2demand_southinflex_demandnaive_eom1000000eom_desouth
\n", + "
" + ], + "text/plain": [ + " name technology bidding_zonal max_power min_power \\\n", + "0 demand_north_1 inflex_demand naive_eom 100000 0 \n", + "1 demand_north_2 inflex_demand naive_eom 100000 0 \n", + "2 demand_south inflex_demand naive_eom 100000 0 \n", + "\n", + " unit_operator node \n", + "0 eom_de north_1 \n", + "1 eom_de north_2 \n", + "2 eom_de south " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# Define the demand units DataFrame\n", + "# @title Define the demand units\n", "demand_units = pd.DataFrame(\n", " {\n", " \"name\": [\"demand_north_1\", \"demand_north_2\", \"demand_south\"],\n", @@ -501,7 +921,9 @@ { "cell_type": "markdown", "id": "8ce96a59", - "metadata": {}, + "metadata": { + "id": "8ce96a59" + }, "source": [ "**Explanation:**\n", "\n", @@ -529,21 +951,121 @@ { "cell_type": "markdown", "id": "e14dc7f7", - "metadata": {}, + "metadata": { + "id": "e14dc7f7" + }, "source": [ - "### 4.4. Preparing Demand Forecast Data\n", + "### 4.4. Preparing Demand Data\n", "\n", - "**Demand Forecast Data** provides the expected electricity demand for each demand unit over time. This data is essential for simulating how demand varies and affects market dynamics." + "**Demand Data** provides the expected electricity demand for each demand unit over time. This data is essential for simulating how demand varies and affects market dynamics." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "c817bc49", - "metadata": {}, - "outputs": [], + "metadata": { + "cellView": "form", + "id": "c817bc49", + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Demand DataFrame:\n" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
demand_north_1demand_north_2demand_south
datetime
2019-01-01 00:00:002400240017400
2019-01-01 01:00:002800280016800
2019-01-01 02:00:003200320016200
2019-01-01 03:00:003600360015600
2019-01-01 04:00:004000400015000
\n", + "
" + ], + "text/plain": [ + " demand_north_1 demand_north_2 demand_south\n", + "datetime \n", + "2019-01-01 00:00:00 2400 2400 17400\n", + "2019-01-01 01:00:00 2800 2800 16800\n", + "2019-01-01 02:00:00 3200 3200 16200\n", + "2019-01-01 03:00:00 3600 3600 15600\n", + "2019-01-01 04:00:00 4000 4000 15000" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# Define the demand forecast DataFrame with a simplified datetime generation\n", + "# @title Define the demand DataFrame\n", + "\n", + "# the demand for the north_1 and north_2 zones increases by 400 MW per hour\n", + "# while the demand for the south zone decreases by 600 MW per hour\n", + "# the demand starts at 2400 MW for the north zones and 17400 MW for the south zone\n", "demand_df = pd.DataFrame(\n", " {\n", " \"datetime\": pd.date_range(start=\"2019-01-01\", periods=24, freq=\"h\"),\n", @@ -557,18 +1079,20 @@ "demand_df.set_index(\"datetime\", inplace=True)\n", "\n", "# Display the demand_df DataFrame\n", - "print(\"Demand Forecast DataFrame:\")\n", + "print(\"Demand DataFrame:\")\n", "display(demand_df.head())" ] }, { "cell_type": "markdown", "id": "99e7bbbc", - "metadata": {}, + "metadata": { + "id": "99e7bbbc" + }, "source": [ "**Explanation:**\n", "\n", - "- **datetime:** Timestamp for each demand forecast.\n", + "- **datetime:** Timestamp for each demand value.\n", "- **demand_north_1, demand_north_2, demand_south:** Demand values for each respective demand unit.\n", "\n", "**Note:** The demand timeseries has been designed to be fulfillable by the defined power plants in both zones." @@ -577,7 +1101,9 @@ { "cell_type": "markdown", "id": "42422a16", - "metadata": {}, + "metadata": { + "id": "42422a16" + }, "source": [ "## 5. Mimicking the Market Clearing Process\n", "\n", @@ -587,7 +1113,9 @@ { "cell_type": "markdown", "id": "6b68ad0f", - "metadata": {}, + "metadata": { + "id": "6b68ad0f" + }, "source": [ "### 5.1. Calculating the Incidence Matrix\n", "\n", @@ -598,10 +1126,69 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "id": "70688bfd", - "metadata": {}, - "outputs": [], + "metadata": { + "id": "70688bfd" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Calculated Incidence Matrix between Zones:\n" + ] + }, + { + "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", + "
DE_1DE_2
DE_210000.00.0
DE_10.0-10000.0
\n", + "
" + ], + "text/plain": [ + " DE_1 DE_2\n", + "DE_2 10000.0 0.0\n", + "DE_1 0.0 -10000.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Define market products (time periods)\n", "market_products = []\n", @@ -650,7 +1237,9 @@ { "cell_type": "markdown", "id": "cc0dd7b2", - "metadata": {}, + "metadata": { + "id": "cc0dd7b2" + }, "source": [ "**Explanation:**\n", "\n", @@ -664,8 +1253,8 @@ "```\n", "Calculated Incidence Matrix between Zones:\n", " DE_1 DE_2\n", - "DE_1 0 20000\n", - "DE_2 -20000 0\n", + "DE_1 0 10000\n", + "DE_2 -10000 0\n", "```\n", "\n", "This output indicates that there is a total transmission capacity of 20,000 MVA from `DE_1` to `DE_2` and vice versa, based on the sum of the capacities of the transmission lines connecting these zones." @@ -674,7 +1263,9 @@ { "cell_type": "markdown", "id": "7245c636", - "metadata": {}, + "metadata": { + "id": "7245c636" + }, "source": [ "### 5.2. Implementing the Simplified Market Clearing Function\n", "\n", @@ -683,12 +1274,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "id": "03f654fc", - "metadata": {}, - "outputs": [], + "metadata": { + "cellView": "form", + "id": "03f654fc", + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Sample Supply Order:\n", + "{'price': 5, 'volume': 1000.0, 'node': 'north_1', 'time': Timestamp('2019-01-01 00:00:00')}\n", + "\n", + "Sample Demand Order:\n", + "{'price': 100, 'volume': -2400, 'node': 'north_1', 'time': Timestamp('2019-01-01 00:00:00')}\n" + ] + } + ], "source": [ - "# Prepare the orders dictionary based on powerplant_units and demand_units\n", + "# @title Prepare the orders dictionary based on powerplant_units and demand_units\n", "\n", "# Initialize orders dictionary\n", "orders = {}\n", @@ -728,18 +1338,22 @@ { "cell_type": "markdown", "id": "d9c9e27c", - "metadata": {}, + "metadata": { + "id": "d9c9e27c" + }, "source": [ "**Explanation:**\n", "\n", - "- **Power Plant Bids:** Each power plant unit submits a bid for each time period with its `additional_cost` as the bid price and `max_power` as the bid volume. Units in the north (`DE_1`) are cheaper (`additional_cost` ranging from 5 to 19) compared to southern units (`DE_2`) which are more expensive (`additional_cost` ranging from 20 to 34).\n", + "- **Power Plant Bids:** Each power plant unit submits a bid for each time period with its `additional_cost` as the bid price and `max_power` as the bid volume. Units in the north (`DE_1`) are cheaper (`additional_cost` ranging from 5 to 19) compared to southern units (`DE_2`) which are more expensive (`additional_cost` ranging from 20 to 34). This is a simplified representation of the bidding strategy. In actual ASSUME simulations, marginal costs and other factors are considered for more realistic bidding.\n", "- **Demand Bids:** Each demand unit submits a bid for each time period with zero price and negative volume representing the demand." ] }, { "cell_type": "markdown", "id": "40f3fd52", - "metadata": {}, + "metadata": { + "id": "40f3fd52" + }, "source": [ "### 5.3. Running the Market Clearing Simulation\n", "\n", @@ -753,17 +1367,79 @@ { "cell_type": "markdown", "id": "551990cf", - "metadata": {}, + "metadata": { + "id": "551990cf" + }, "source": [ "#### Simulation 1: Zero Transmission Capacity Between Zones" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "id": "123b4e9b", - "metadata": {}, - "outputs": [], + "metadata": { + "id": "123b4e9b" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "### Simulation 1: Zero Transmission Capacity Between Zones\n", + "Incidence Matrix for Simulation 1 (Zero Transmission Capacity):\n" + ] + }, + { + "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", + "
DE_1DE_2
DE_20.0NaN
DE_1NaN0.0
\n", + "
" + ], + "text/plain": [ + " DE_1 DE_2\n", + "DE_2 0.0 NaN\n", + "DE_1 NaN 0.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "print(\"### Simulation 1: Zero Transmission Capacity Between Zones\")\n", "\n", @@ -784,18 +1460,104 @@ { "cell_type": "markdown", "id": "80204af5", - "metadata": {}, + "metadata": { + "id": "80204af5" + }, "source": [ "Right now the orders contain the information about their node and not the zone. In ASSUME, the market clearing function will assign the bids to the zones based on the nodes they are connected to. This is done automatically by the framework, but for this simplified example, we will manually assign the bids to the zones." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "id": "0514d562", - "metadata": {}, - "outputs": [], + "metadata": { + "cellView": "form", + "id": "0514d562" + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
pricevolumenodetime
Unit 1_2019-01-01 00:00:0051000.0DE_12019-01-01 00:00:00
Unit 1_2019-01-01 01:00:0051000.0DE_12019-01-01 01:00:00
Unit 1_2019-01-01 02:00:0051000.0DE_12019-01-01 02:00:00
Unit 1_2019-01-01 03:00:0051000.0DE_12019-01-01 03:00:00
Unit 1_2019-01-01 04:00:0051000.0DE_12019-01-01 04:00:00
\n", + "
" + ], + "text/plain": [ + " price volume node time\n", + "Unit 1_2019-01-01 00:00:00 5 1000.0 DE_1 2019-01-01 00:00:00\n", + "Unit 1_2019-01-01 01:00:00 5 1000.0 DE_1 2019-01-01 01:00:00\n", + "Unit 1_2019-01-01 02:00:00 5 1000.0 DE_1 2019-01-01 02:00:00\n", + "Unit 1_2019-01-01 03:00:00 5 1000.0 DE_1 2019-01-01 03:00:00\n", + "Unit 1_2019-01-01 04:00:00 5 1000.0 DE_1 2019-01-01 04:00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ + "# @title title\n", "# create a mapping from node_id to zone_id\n", "node_mapping = buses.set_index(\"name\")[\"zone_id\"].to_dict()\n", "\n", @@ -818,9 +1580,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "id": "543d3534", - "metadata": {}, + "metadata": { + "id": "543d3534" + }, "outputs": [], "source": [ "# Run the simplified market clearing for Simulation 1\n", @@ -832,17 +1596,79 @@ { "cell_type": "markdown", "id": "11b4a94d", - "metadata": {}, + "metadata": { + "id": "11b4a94d" + }, "source": [ "#### Simulation 2: Medium Transmission Capacity Between Zones" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "id": "b7d246fa", - "metadata": {}, - "outputs": [], + "metadata": { + "id": "b7d246fa" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "### Simulation 2: Medium Transmission Capacity Between Zones\n", + "Incidence Matrix for Simulation 2 (Medium Transmission Capacity):\n" + ] + }, + { + "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", + "
DE_1DE_2
DE_23000.0NaN
DE_1NaN3000.0
\n", + "
" + ], + "text/plain": [ + " DE_1 DE_2\n", + "DE_2 3000.0 NaN\n", + "DE_1 NaN 3000.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "print(\"### Simulation 2: Medium Transmission Capacity Between Zones\")\n", "\n", @@ -865,20 +1691,81 @@ { "cell_type": "markdown", "id": "8b6ab5ae", - "metadata": {}, + "metadata": { + "id": "8b6ab5ae" + }, "source": [ "#### Simulation 3: High Transmission Capacity Between Zones" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "id": "951c9a1b", "metadata": { + "id": "951c9a1b", "lines_to_end_of_cell_marker": 0, "lines_to_next_cell": 1 }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "### Simulation 3: High Transmission Capacity Between Zones\n", + "Incidence Matrix for Simulation 3 (High Transmission Capacity):\n" + ] + }, + { + "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", + "
DE_1DE_2
DE_210000.0NaN
DE_1NaN10000.0
\n", + "
" + ], + "text/plain": [ + " DE_1 DE_2\n", + "DE_2 10000.0 NaN\n", + "DE_1 NaN 10000.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "print(\"### Simulation 3: High Transmission Capacity Between Zones\")\n", "\n", @@ -901,7 +1788,9 @@ { "cell_type": "markdown", "id": "2874cc5b", - "metadata": {}, + "metadata": { + "id": "2874cc5b" + }, "source": [ "### 5.4. Extracting and Interpreting the Results\n", "\n", @@ -922,9 +1811,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "id": "508d8c51", - "metadata": {}, + "metadata": { + "id": "508d8c51" + }, "outputs": [], "source": [ "# Function to extract accepted bids and calculate clearing prices\n", @@ -983,9 +1874,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "id": "ced11135", - "metadata": {}, + "metadata": { + "id": "ced11135" + }, "outputs": [], "source": [ "# Extract results for Simulation 1\n", @@ -996,10 +1889,57 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "id": "51373042", - "metadata": {}, - "outputs": [], + "metadata": { + "id": "51373042" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Simulation 1: Power Flows Between Zones\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: []\n", + "Index: []" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "print(\"Simulation 1: Power Flows Between Zones\")\n", "display(power_flows_df_sim1.head())" @@ -1007,10 +1947,166 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "id": "2bc8fe28", - "metadata": {}, - "outputs": [], + "metadata": { + "id": "2bc8fe28" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Simulation 1: Clearing Prices per Zone and Time\n" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
zonetimeclearing_price
0DE_12019-01-01 00:00:009.0
1DE_12019-01-01 01:00:0010.0
2DE_12019-01-01 02:00:0011.0
3DE_12019-01-01 03:00:0012.0
4DE_12019-01-01 04:00:0013.0
\n", + "
" + ], + "text/plain": [ + " zone time clearing_price\n", + "0 DE_1 2019-01-01 00:00:00 9.0\n", + "1 DE_1 2019-01-01 01:00:00 10.0\n", + "2 DE_1 2019-01-01 02:00:00 11.0\n", + "3 DE_1 2019-01-01 03:00:00 12.0\n", + "4 DE_1 2019-01-01 04:00:00 13.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
zonetimeclearing_price
24DE_22019-01-01 00:00:00100.0
25DE_22019-01-01 01:00:00100.0
26DE_22019-01-01 02:00:00100.0
27DE_22019-01-01 03:00:00100.0
28DE_22019-01-01 04:00:00100.0
\n", + "
" + ], + "text/plain": [ + " zone time clearing_price\n", + "24 DE_2 2019-01-01 00:00:00 100.0\n", + "25 DE_2 2019-01-01 01:00:00 100.0\n", + "26 DE_2 2019-01-01 02:00:00 100.0\n", + "27 DE_2 2019-01-01 03:00:00 100.0\n", + "28 DE_2 2019-01-01 04:00:00 100.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "print(\"Simulation 1: Clearing Prices per Zone and Time\")\n", "display(clearing_prices_df_sim1.loc[clearing_prices_df_sim1[\"zone\"] == \"DE_1\"].head())\n", @@ -1019,9 +2115,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "id": "d7bddc51", - "metadata": {}, + "metadata": { + "id": "d7bddc51" + }, "outputs": [], "source": [ "# Extract results for Simulation 2\n", @@ -1032,10 +2130,99 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "id": "a8b84057", - "metadata": {}, - "outputs": [], + "metadata": { + "id": "a8b84057" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Simulation 2: Power Flows Between Zones\n" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timefrom_zoneto_zoneflow_MW
02019-01-01 00:00:00DE_1DE_23000.0
12019-01-01 00:00:00DE_2DE_1-3000.0
22019-01-01 01:00:00DE_1DE_23000.0
32019-01-01 01:00:00DE_2DE_1-3000.0
42019-01-01 02:00:00DE_1DE_23000.0
\n", + "
" + ], + "text/plain": [ + " time from_zone to_zone flow_MW\n", + "0 2019-01-01 00:00:00 DE_1 DE_2 3000.0\n", + "1 2019-01-01 00:00:00 DE_2 DE_1 -3000.0\n", + "2 2019-01-01 01:00:00 DE_1 DE_2 3000.0\n", + "3 2019-01-01 01:00:00 DE_2 DE_1 -3000.0\n", + "4 2019-01-01 02:00:00 DE_1 DE_2 3000.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "print(\"Simulation 2: Power Flows Between Zones\")\n", "display(power_flows_df_sim2.head())" @@ -1043,10 +2230,166 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "id": "b9abaaf1", - "metadata": {}, - "outputs": [], + "metadata": { + "id": "b9abaaf1" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Simulation 2: Clearing Prices per Zone and Time\n" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
zonetimeclearing_price
0DE_12019-01-01 00:00:0015.0
1DE_12019-01-01 01:00:0016.0
2DE_12019-01-01 02:00:0017.0
3DE_12019-01-01 03:00:0018.0
4DE_12019-01-01 04:00:0019.0
\n", + "
" + ], + "text/plain": [ + " zone time clearing_price\n", + "0 DE_1 2019-01-01 00:00:00 15.0\n", + "1 DE_1 2019-01-01 01:00:00 16.0\n", + "2 DE_1 2019-01-01 02:00:00 17.0\n", + "3 DE_1 2019-01-01 03:00:00 18.0\n", + "4 DE_1 2019-01-01 04:00:00 19.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
zonetimeclearing_price
24DE_22019-01-01 00:00:0031.0
25DE_22019-01-01 01:00:0030.0
26DE_22019-01-01 02:00:0030.0
27DE_22019-01-01 03:00:0029.0
28DE_22019-01-01 04:00:0029.0
\n", + "
" + ], + "text/plain": [ + " zone time clearing_price\n", + "24 DE_2 2019-01-01 00:00:00 31.0\n", + "25 DE_2 2019-01-01 01:00:00 30.0\n", + "26 DE_2 2019-01-01 02:00:00 30.0\n", + "27 DE_2 2019-01-01 03:00:00 29.0\n", + "28 DE_2 2019-01-01 04:00:00 29.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "print(\"Simulation 2: Clearing Prices per Zone and Time\")\n", "display(clearing_prices_df_sim2.loc[clearing_prices_df_sim2[\"zone\"] == \"DE_1\"].head())\n", @@ -1055,9 +2398,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "id": "c62148ed", - "metadata": {}, + "metadata": { + "id": "c62148ed" + }, "outputs": [], "source": [ "# Extract results for Simulation 3\n", @@ -1068,10 +2413,99 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "id": "f94d50ce", - "metadata": {}, - "outputs": [], + "metadata": { + "id": "f94d50ce" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Simulation 3: Power Flows Between Zones\n" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timefrom_zoneto_zoneflow_MW
02019-01-01 00:00:00DE_1DE_25100.0
12019-01-01 00:00:00DE_2DE_1-5100.0
22019-01-01 01:00:00DE_1DE_24700.0
32019-01-01 01:00:00DE_2DE_1-4700.0
42019-01-01 02:00:00DE_1DE_24300.0
\n", + "
" + ], + "text/plain": [ + " time from_zone to_zone flow_MW\n", + "0 2019-01-01 00:00:00 DE_1 DE_2 5100.0\n", + "1 2019-01-01 00:00:00 DE_2 DE_1 -5100.0\n", + "2 2019-01-01 01:00:00 DE_1 DE_2 4700.0\n", + "3 2019-01-01 01:00:00 DE_2 DE_1 -4700.0\n", + "4 2019-01-01 02:00:00 DE_1 DE_2 4300.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "print(\"Simulation 3: Power Flows Between Zones\")\n", "display(power_flows_df_sim3.head())" @@ -1079,10 +2513,166 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "id": "3f3881f6", - "metadata": {}, - "outputs": [], + "metadata": { + "id": "3f3881f6" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Simulation 3: Clearing Prices per Zone and Time\n" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
zonetimeclearing_price
0DE_12019-01-01 00:00:0027.0
1DE_12019-01-01 01:00:0027.0
2DE_12019-01-01 02:00:0027.0
3DE_12019-01-01 03:00:0027.0
4DE_12019-01-01 04:00:0028.0
\n", + "
" + ], + "text/plain": [ + " zone time clearing_price\n", + "0 DE_1 2019-01-01 00:00:00 27.0\n", + "1 DE_1 2019-01-01 01:00:00 27.0\n", + "2 DE_1 2019-01-01 02:00:00 27.0\n", + "3 DE_1 2019-01-01 03:00:00 27.0\n", + "4 DE_1 2019-01-01 04:00:00 28.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
zonetimeclearing_price
24DE_22019-01-01 00:00:0027.0
25DE_22019-01-01 01:00:0027.0
26DE_22019-01-01 02:00:0027.0
27DE_22019-01-01 03:00:0027.0
28DE_22019-01-01 04:00:0028.0
\n", + "
" + ], + "text/plain": [ + " zone time clearing_price\n", + "24 DE_2 2019-01-01 00:00:00 27.0\n", + "25 DE_2 2019-01-01 01:00:00 27.0\n", + "26 DE_2 2019-01-01 02:00:00 27.0\n", + "27 DE_2 2019-01-01 03:00:00 27.0\n", + "28 DE_2 2019-01-01 04:00:00 28.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "print(\"Simulation 3: Clearing Prices per Zone and Time\")\n", "display(clearing_prices_df_sim3.loc[clearing_prices_df_sim3[\"zone\"] == \"DE_1\"].head())\n", @@ -1092,7 +2682,9 @@ { "cell_type": "markdown", "id": "461c85b5", - "metadata": {}, + "metadata": { + "id": "461c85b5" + }, "source": [ "-" ] @@ -1100,7 +2692,9 @@ { "cell_type": "markdown", "id": "b397c6e9", - "metadata": {}, + "metadata": { + "id": "b397c6e9" + }, "source": [ "**Explanation:**\n", "\n", @@ -1112,7 +2706,9 @@ { "cell_type": "markdown", "id": "83b13999", - "metadata": {}, + "metadata": { + "id": "83b13999" + }, "source": [ "### 5.5. Comparing Simulations\n", "\n", @@ -1121,11 +2717,1230 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "id": "69e86f18", - "metadata": {}, - "outputs": [], + "metadata": { + "cellView": "form", + "id": "69e86f18" + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "line": { + "dash": "dash" + }, + "mode": "lines", + "name": "DE_1 - Sim1 (Zero Capacity)", + "type": "scatter", + "x": [ + "2019-01-01T00:00:00", + "2019-01-01T01:00:00", + "2019-01-01T02:00:00", + "2019-01-01T03:00:00", + "2019-01-01T04:00:00", + "2019-01-01T05:00:00", + "2019-01-01T06:00:00", + "2019-01-01T07:00:00", + "2019-01-01T08:00:00", + "2019-01-01T09:00:00", + "2019-01-01T10:00:00", + "2019-01-01T11:00:00", + "2019-01-01T12:00:00", + "2019-01-01T13:00:00", + "2019-01-01T14:00:00", + "2019-01-01T15:00:00", + "2019-01-01T16:00:00", + "2019-01-01T17:00:00", + "2019-01-01T18:00:00", + "2019-01-01T19:00:00", + "2019-01-01T20:00:00", + "2019-01-01T21:00:00", + "2019-01-01T22:00:00", + "2019-01-01T23:00:00" + ], + "y": [ + 9, + 10, + 11, + 12, + 13, + 13, + 14, + 15, + 16, + 17, + 17, + 18, + 19, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100, + 100 + ] + }, + { + "line": { + "dash": "dot" + }, + "mode": "lines", + "name": "DE_1 - Sim2 (Medium Capacity)", + "type": "scatter", + "x": [ + "2019-01-01T00:00:00", + "2019-01-01T01:00:00", + "2019-01-01T02:00:00", + "2019-01-01T03:00:00", + "2019-01-01T04:00:00", + "2019-01-01T05:00:00", + "2019-01-01T06:00:00", + "2019-01-01T07:00:00", + "2019-01-01T08:00:00", + "2019-01-01T09:00:00", + "2019-01-01T10:00:00", + "2019-01-01T11:00:00", + "2019-01-01T12:00:00", + "2019-01-01T13:00:00", + "2019-01-01T14:00:00", + "2019-01-01T15:00:00", + "2019-01-01T16:00:00", + "2019-01-01T17:00:00", + "2019-01-01T18:00:00", + "2019-01-01T19:00:00", + "2019-01-01T20:00:00", + "2019-01-01T21:00:00", + "2019-01-01T22:00:00", + "2019-01-01T23:00:00" + ], + "y": [ + 15, + 16, + 17, + 18, + 19, + 19, + 28, + 28, + 28, + 29, + 29, + 29, + 29, + 29, + 30, + 30, + 30, + 30, + 30, + 31, + 31, + 100, + 100, + 100 + ] + }, + { + "line": { + "dash": "solid" + }, + "mode": "lines", + "name": "DE_1 - Sim3 (High Capacity)", + "type": "scatter", + "x": [ + "2019-01-01T00:00:00", + "2019-01-01T01:00:00", + "2019-01-01T02:00:00", + "2019-01-01T03:00:00", + "2019-01-01T04:00:00", + "2019-01-01T05:00:00", + "2019-01-01T06:00:00", + "2019-01-01T07:00:00", + "2019-01-01T08:00:00", + "2019-01-01T09:00:00", + "2019-01-01T10:00:00", + "2019-01-01T11:00:00", + "2019-01-01T12:00:00", + "2019-01-01T13:00:00", + "2019-01-01T14:00:00", + "2019-01-01T15:00:00", + "2019-01-01T16:00:00", + "2019-01-01T17:00:00", + "2019-01-01T18:00:00", + "2019-01-01T19:00:00", + "2019-01-01T20:00:00", + "2019-01-01T21:00:00", + "2019-01-01T22:00:00", + "2019-01-01T23:00:00" + ], + "y": [ + 27, + 27, + 27, + 27, + 28, + 28, + 28, + 28, + 28, + 29, + 29, + 29, + 29, + 29, + 30, + 30, + 30, + 30, + 30, + 31, + 31, + 31, + 31, + 31 + ] + }, + { + "line": { + "dash": "dash" + }, + "mode": "lines", + "name": "DE_2 - Sim1 (Zero Capacity)", + "type": "scatter", + "x": [ + "2019-01-01T00:00:00", + "2019-01-01T01:00:00", + "2019-01-01T02:00:00", + "2019-01-01T03:00:00", + "2019-01-01T04:00:00", + "2019-01-01T05:00:00", + "2019-01-01T06:00:00", + "2019-01-01T07:00:00", + "2019-01-01T08:00:00", + "2019-01-01T09:00:00", + "2019-01-01T10:00:00", + "2019-01-01T11:00:00", + "2019-01-01T12:00:00", + "2019-01-01T13:00:00", + "2019-01-01T14:00:00", + "2019-01-01T15:00:00", + "2019-01-01T16:00:00", + "2019-01-01T17:00:00", + "2019-01-01T18:00:00", + "2019-01-01T19:00:00", + "2019-01-01T20:00:00", + "2019-01-01T21:00:00", + "2019-01-01T22:00:00", + "2019-01-01T23:00:00" + ], + "y": [ + 100, + 100, + 100, + 100, + 100, + 34, + 33, + 33, + 32, + 32, + 31, + 30, + 30, + 29, + 29, + 28, + 27, + 27, + 26, + 26, + 25, + 24, + 24, + 23 + ] + }, + { + "line": { + "dash": "dot" + }, + "mode": "lines", + "name": "DE_2 - Sim2 (Medium Capacity)", + "type": "scatter", + "x": [ + "2019-01-01T00:00:00", + "2019-01-01T01:00:00", + "2019-01-01T02:00:00", + "2019-01-01T03:00:00", + "2019-01-01T04:00:00", + "2019-01-01T05:00:00", + "2019-01-01T06:00:00", + "2019-01-01T07:00:00", + "2019-01-01T08:00:00", + "2019-01-01T09:00:00", + "2019-01-01T10:00:00", + "2019-01-01T11:00:00", + "2019-01-01T12:00:00", + "2019-01-01T13:00:00", + "2019-01-01T14:00:00", + "2019-01-01T15:00:00", + "2019-01-01T16:00:00", + "2019-01-01T17:00:00", + "2019-01-01T18:00:00", + "2019-01-01T19:00:00", + "2019-01-01T20:00:00", + "2019-01-01T21:00:00", + "2019-01-01T22:00:00", + "2019-01-01T23:00:00" + ], + "y": [ + 31, + 30, + 30, + 29, + 29, + 28, + 28, + 28, + 28, + 29, + 29, + 29, + 29, + 29, + 30, + 30, + 30, + 30, + 30, + 31, + 31, + 30, + 30, + 29 + ] + }, + { + "line": { + "dash": "solid" + }, + "mode": "lines", + "name": "DE_2 - Sim3 (High Capacity)", + "type": "scatter", + "x": [ + "2019-01-01T00:00:00", + "2019-01-01T01:00:00", + "2019-01-01T02:00:00", + "2019-01-01T03:00:00", + "2019-01-01T04:00:00", + "2019-01-01T05:00:00", + "2019-01-01T06:00:00", + "2019-01-01T07:00:00", + "2019-01-01T08:00:00", + "2019-01-01T09:00:00", + "2019-01-01T10:00:00", + "2019-01-01T11:00:00", + "2019-01-01T12:00:00", + "2019-01-01T13:00:00", + "2019-01-01T14:00:00", + "2019-01-01T15:00:00", + "2019-01-01T16:00:00", + "2019-01-01T17:00:00", + "2019-01-01T18:00:00", + "2019-01-01T19:00:00", + "2019-01-01T20:00:00", + "2019-01-01T21:00:00", + "2019-01-01T22:00:00", + "2019-01-01T23:00:00" + ], + "y": [ + 27, + 27, + 27, + 27, + 28, + 28, + 28, + 28, + 28, + 29, + 29, + 29, + 29, + 29, + 30, + 30, + 30, + 30, + 30, + 31, + 31, + 31, + 31, + 31 + ] + } + ], + "layout": { + "height": 600, + "hovermode": "x unified", + "legend": { + "title": { + "text": "Simulations" + } + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "#C8D4E3" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Clearing Prices per Zone Over Time: Sim1, Sim2, & Sim3" + }, + "width": 1000, + "xaxis": { + "tickangle": 45, + "title": { + "text": "Time" + }, + "type": "date" + }, + "yaxis": { + "title": { + "text": "Clearing Price" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ + "# @title title\n", "# Initialize the Plotly figure\n", "fig = go.Figure()\n", "\n", @@ -1194,7 +4009,9 @@ { "cell_type": "markdown", "id": "a7024e65", - "metadata": {}, + "metadata": { + "id": "a7024e65" + }, "source": [ "**Explanation:**\n", "\n", @@ -1204,7 +4021,9 @@ { "cell_type": "markdown", "id": "73397059", - "metadata": {}, + "metadata": { + "id": "73397059" + }, "source": [ "## 6. Integrating with ASSUME\n", "\n", @@ -1226,10 +4045,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "id": "eb54851c", - "metadata": {}, - "outputs": [], + "metadata": { + "id": "eb54851c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Input CSV files have been saved to 'inputs/tutorial_08'.\n" + ] + } + ], "source": [ "import os\n", "\n", @@ -1256,17 +4085,29 @@ { "cell_type": "markdown", "id": "bc37c1e1", - "metadata": {}, + "metadata": { + "id": "bc37c1e1" + }, "source": [ "#### Create `fuel_prices.csv`" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "id": "3e74a43e", - "metadata": {}, - "outputs": [], + "metadata": { + "id": "3e74a43e" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fuel Prices CSV file has been saved to 'inputs/tutorial_08/fuel_prices.csv'.\n" + ] + } + ], "source": [ "# Define fuel prices\n", "fuel_prices = {\n", @@ -1286,7 +4127,9 @@ { "cell_type": "markdown", "id": "f223540f", - "metadata": {}, + "metadata": { + "id": "f223540f" + }, "source": [ "### Step 2: Creating the Configuration YAML File\n", "\n", @@ -1296,17 +4139,29 @@ { "cell_type": "markdown", "id": "0711551b", - "metadata": {}, + "metadata": { + "id": "0711551b" + }, "source": [ "#### Create `config.yaml`" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "id": "a1a7164b", - "metadata": {}, - "outputs": [], + "metadata": { + "id": "a1a7164b" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Configuration YAML file has been saved to 'inputs/tutorial_08/config.yaml'.\n" + ] + } + ], "source": [ "config = {\n", " \"zonal_case\": {\n", @@ -1347,7 +4202,9 @@ { "cell_type": "markdown", "id": "129df923", - "metadata": {}, + "metadata": { + "id": "129df923" + }, "source": [ "### Detailed Configuration Explanation\n", "\n", @@ -1388,7 +4245,9 @@ { "cell_type": "markdown", "id": "97bf3b93", - "metadata": {}, + "metadata": { + "id": "97bf3b93" + }, "source": [ "### Step 3: Running the Simulation\n", "\n", @@ -1398,17 +4257,64 @@ { "cell_type": "markdown", "id": "3d9088f8", - "metadata": {}, + "metadata": { + "id": "3d9088f8" + }, "source": [ "#### Example Simulation Code" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "id": "2fa30762", - "metadata": {}, - "outputs": [], + "metadata": { + "id": "2fa30762" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.world:connected to db\n", + "INFO:assume.scenario.loader_csv:Starting Scenario tutorial_08/zonal_case from inputs\n", + "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", + "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", + "INFO:assume.scenario.loader_csv:availability_df not found. Returning None\n", + "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", + "INFO:assume.scenario.loader_csv:price_forecasts not found. Returning None\n", + "INFO:assume.scenario.loader_csv:temperature not found. Returning None\n", + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 0%| | 0/82800 [00:00\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", + " \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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
supply_volumedemand_volumedemand_volume_energysupply_volume_energypricemax_pricemin_pricenodeproduct_startproduct_endonly_hoursmarket_idsimulation
time
2019-01-01 01:00:0015000560056001500043.66743.66743.667DE_12019-01-01 01:00:002019-01-01 02:00:00NaNzonaltutorial_08_zonal_case
2019-01-01 01:00:0074001680016800740043.66743.66743.667DE_22019-01-01 01:00:002019-01-01 02:00:00NaNzonaltutorial_08_zonal_case
2019-01-01 02:00:0015000640064001500043.66743.66743.667DE_12019-01-01 02:00:002019-01-01 03:00:00NaNzonaltutorial_08_zonal_case
2019-01-01 02:00:0076001620016200760043.66743.66743.667DE_22019-01-01 02:00:002019-01-01 03:00:00NaNzonaltutorial_08_zonal_case
2019-01-01 03:00:0015000720072001500043.66743.66743.667DE_12019-01-01 03:00:002019-01-01 04:00:00NaNzonaltutorial_08_zonal_case
\n", + "" + ], + "text/plain": [ + " supply_volume demand_volume demand_volume_energy \\\n", + "time \n", + "2019-01-01 01:00:00 15000 5600 5600 \n", + "2019-01-01 01:00:00 7400 16800 16800 \n", + "2019-01-01 02:00:00 15000 6400 6400 \n", + "2019-01-01 02:00:00 7600 16200 16200 \n", + "2019-01-01 03:00:00 15000 7200 7200 \n", + "\n", + " supply_volume_energy price max_price min_price node \\\n", + "time \n", + "2019-01-01 01:00:00 15000 43.667 43.667 43.667 DE_1 \n", + "2019-01-01 01:00:00 7400 43.667 43.667 43.667 DE_2 \n", + "2019-01-01 02:00:00 15000 43.667 43.667 43.667 DE_1 \n", + "2019-01-01 02:00:00 7600 43.667 43.667 43.667 DE_2 \n", + "2019-01-01 03:00:00 15000 43.667 43.667 43.667 DE_1 \n", + "\n", + " product_start product_end only_hours \\\n", + "time \n", + "2019-01-01 01:00:00 2019-01-01 01:00:00 2019-01-01 02:00:00 NaN \n", + "2019-01-01 01:00:00 2019-01-01 01:00:00 2019-01-01 02:00:00 NaN \n", + "2019-01-01 02:00:00 2019-01-01 02:00:00 2019-01-01 03:00:00 NaN \n", + "2019-01-01 02:00:00 2019-01-01 02:00:00 2019-01-01 03:00:00 NaN \n", + "2019-01-01 03:00:00 2019-01-01 03:00:00 2019-01-01 04:00:00 NaN \n", + "\n", + " market_id simulation \n", + "time \n", + "2019-01-01 01:00:00 zonal tutorial_08_zonal_case \n", + "2019-01-01 01:00:00 zonal tutorial_08_zonal_case \n", + "2019-01-01 02:00:00 zonal tutorial_08_zonal_case \n", + "2019-01-01 02:00:00 zonal tutorial_08_zonal_case \n", + "2019-01-01 03:00:00 zonal tutorial_08_zonal_case " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Define the path to the simulation output\n", "output_dir = \"outputs/tutorial_08_zonal_case\"\n", @@ -1506,7 +4602,9 @@ { "cell_type": "markdown", "id": "538d2a28", - "metadata": {}, + "metadata": { + "id": "538d2a28" + }, "source": [ "**Explanation:**\n", "\n", @@ -1531,7 +4629,9 @@ { "cell_type": "markdown", "id": "76b537d2", - "metadata": {}, + "metadata": { + "id": "76b537d2" + }, "source": [ "### 7.3. Plotting Clearing Prices\n", "\n", @@ -1541,17 +4641,102 @@ { "cell_type": "markdown", "id": "46af3ed7", - "metadata": {}, + "metadata": { + "id": "46af3ed7" + }, "source": [ "#### Processing the Market Meta Data" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "id": "f00529e4", - "metadata": {}, - "outputs": [], + "metadata": { + "id": "f00529e4" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sample of Processed Clearing Prices:\n" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DE_1_priceDE_2_price
time
2019-01-01 01:00:0043.66743.667
2019-01-01 02:00:0043.66743.667
2019-01-01 03:00:0043.66743.667
2019-01-01 04:00:0043.66743.667
2019-01-01 05:00:0044.66744.667
\n", + "
" + ], + "text/plain": [ + " DE_1_price DE_2_price\n", + "time \n", + "2019-01-01 01:00:00 43.667 43.667\n", + "2019-01-01 02:00:00 43.667 43.667\n", + "2019-01-01 03:00:00 43.667 43.667\n", + "2019-01-01 04:00:00 43.667 43.667\n", + "2019-01-01 05:00:00 44.667 44.667" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Extract unique zones\n", "zones = market_meta[\"node\"].unique()\n", @@ -1586,17 +4771,992 @@ { "cell_type": "markdown", "id": "35d82a8f", - "metadata": {}, + "metadata": { + "id": "35d82a8f" + }, "source": [ "#### Plotting the market clearing prices" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "id": "a3d56ac7", - "metadata": {}, - "outputs": [], + "metadata": { + "id": "a3d56ac7" + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "line": { + "width": 2 + }, + "mode": "lines", + "name": "DE_1 - Simulation", + "type": "scatter", + "x": [ + "2019-01-01T01:00:00", + "2019-01-01T02:00:00", + "2019-01-01T03:00:00", + "2019-01-01T04:00:00", + "2019-01-01T05:00:00", + "2019-01-01T06:00:00", + "2019-01-01T07:00:00", + "2019-01-01T08:00:00", + "2019-01-01T09:00:00", + "2019-01-01T10:00:00", + "2019-01-01T11:00:00", + "2019-01-01T12:00:00", + "2019-01-01T13:00:00", + "2019-01-01T14:00:00", + "2019-01-01T15:00:00", + "2019-01-01T16:00:00", + "2019-01-01T17:00:00", + "2019-01-01T18:00:00", + "2019-01-01T19:00:00", + "2019-01-01T20:00:00", + "2019-01-01T21:00:00", + "2019-01-01T22:00:00", + "2019-01-01T23:00:00" + ], + "y": [ + 43.667, + 43.667, + 43.667, + 43.667, + 44.667, + 44.667, + 44.667, + 44.667, + 44.667, + 45.667, + 45.667, + 45.667, + 45.667, + 45.667, + 46.667, + 46.667, + 46.667, + 46.667, + 46.667, + 47.667, + 47.667, + 47.667, + 47.667 + ] + }, + { + "line": { + "width": 2 + }, + "mode": "lines", + "name": "DE_2 - Simulation", + "type": "scatter", + "x": [ + "2019-01-01T01:00:00", + "2019-01-01T02:00:00", + "2019-01-01T03:00:00", + "2019-01-01T04:00:00", + "2019-01-01T05:00:00", + "2019-01-01T06:00:00", + "2019-01-01T07:00:00", + "2019-01-01T08:00:00", + "2019-01-01T09:00:00", + "2019-01-01T10:00:00", + "2019-01-01T11:00:00", + "2019-01-01T12:00:00", + "2019-01-01T13:00:00", + "2019-01-01T14:00:00", + "2019-01-01T15:00:00", + "2019-01-01T16:00:00", + "2019-01-01T17:00:00", + "2019-01-01T18:00:00", + "2019-01-01T19:00:00", + "2019-01-01T20:00:00", + "2019-01-01T21:00:00", + "2019-01-01T22:00:00", + "2019-01-01T23:00:00" + ], + "y": [ + 43.667, + 43.667, + 43.667, + 43.667, + 44.667, + 44.667, + 44.667, + 44.667, + 44.667, + 45.667, + 45.667, + 45.667, + 45.667, + 45.667, + 46.667, + 46.667, + 46.667, + 46.667, + 46.667, + 47.667, + 47.667, + 47.667, + 47.667 + ] + } + ], + "layout": { + "height": 600, + "hovermode": "x unified", + "legend": { + "title": { + "text": "Market Zones" + } + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "#C8D4E3" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Clearing Prices per Zone Over Time: Simulation Results" + }, + "width": 1000, + "xaxis": { + "tickangle": 45, + "title": { + "text": "Time" + }, + "type": "date" + }, + "yaxis": { + "title": { + "text": "Clearing Price (EUR/MWh)" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Initialize the Plotly figure\n", "fig = go.Figure()\n", @@ -1636,7 +5796,9 @@ { "cell_type": "markdown", "id": "9ed0f0a4", - "metadata": {}, + "metadata": { + "id": "9ed0f0a4" + }, "source": [ "**Explanation:**\n", "\n", @@ -1653,7 +5815,9 @@ { "cell_type": "markdown", "id": "02eb3518", - "metadata": {}, + "metadata": { + "id": "02eb3518" + }, "source": [ "## Conclusion\n", "\n", @@ -1672,13 +5836,30 @@ } ], "metadata": { + "colab": { + "provenance": [] + }, "jupytext": { "cell_metadata_filter": "-all", "main_language": "python", "notebook_metadata_filter": "-all" }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.7" } }, "nbformat": 4, From b71a87dcf5d442ec352ffd252e373b4615dc23db Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Sat, 28 Sep 2024 15:22:41 +0200 Subject: [PATCH 08/27] - proof read original RL tutorial --- .../04_reinforcement_learning_example.ipynb | 1039 ++++------------- 1 file changed, 213 insertions(+), 826 deletions(-) diff --git a/examples/notebooks/04_reinforcement_learning_example.ipynb b/examples/notebooks/04_reinforcement_learning_example.ipynb index 224bc5ba..751214ee 100644 --- a/examples/notebooks/04_reinforcement_learning_example.ipynb +++ b/examples/notebooks/04_reinforcement_learning_example.ipynb @@ -2,22 +2,23 @@ "cells": [ { "cell_type": "markdown", + "id": "9f627ddd", "metadata": { "id": "4JeBorbE6FYr" }, "source": [ "# 4. Reinforcement learning tutorial\n", "\n", - "This tutorial will introduce users into ASSUME and its ways of using reinforcement leanring (RL). The main objective of this tutorial is to ensure participants grasp the steps required to equip a new unit with RL strategies or modify the action dimensions.\n", - "Our emphasis lies in the bidding strategy class, with less emphasis on the algorithm and role. The latter are usable as a plug and play solution in the framework. The following coding tasks will highlight the key aspects to be adjusted, as already outlined in the learning_strategies.py file.\n", + "This tutorial will introduce users into ASSUME and its ways of using reinforcement learning (RL). The main objective of this tutorial is to ensure participants grasp the steps required to equip a new unit with RL strategies or modify the action dimensions.\n", + "Our emphasis lies in the bidding strategy, with less focus on the algorithm and role. The latter are usable as a plug-and-play solution in the framework. The following coding tasks will highlight the key aspects to be adjusted, as already outlined in the learning_strategies.py file.\n", "\n", - "The outline of this tutorial is as follows. We will start with a basic summary of the implementation of reinforcement learning (RL) in ASSUME and its architectrue (1. ASSUME & Learning Basics) . If you need a refresher on RL in general, please visit our readthedocs (https://assume.readthedocs.io/en/latest/). Afterwards, we install ASSUME in this Google Colab (2. Get ASSUME running) and then we dive into the learning_strategies.py file and explain how we need to adjust conventional bidding strategies to incorporate RL (3. Make ASSUME learn).\n", + "The outline of this tutorial is as follows. We will start with a basic summary of the implementation of reinforcement learning (RL) in ASSUME and its architecture (1. ASSUME & Learning Basics) . If you need a refresher on RL in general, please visit our readthedocs (https://ASSUME.readthedocs.io/en/latest/). Afterwards, we install ASSUME in this Google Colab (2. Get ASSUME running) and then we dive into the learning_strategies.py file and explain how we need to adjust conventional bidding strategies. to incorporate RL (3. Make ASSUME learn).\n", "\n", "**As a whole, this tutorial covers the following coding tasks:**\n", "\n", - "1. How to define a step function in the assume framework?\n", + "1. How to define a step function in the ASSUME framework.\n", "\n", - "2. How do we get observations from the simulation framework?\n", + "2. How do we get observations from the simulation framework.\n", "\n", "3. How do we define actions based on the output of the actor neural network considering necessary exploration?\n", "\n", @@ -26,6 +27,7 @@ }, { "cell_type": "markdown", + "id": "762568ca", "metadata": { "id": "bj2C4ElILNNv" }, @@ -38,11 +40,12 @@ "\n", "\n", "\n", - "![architecture.svg](data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNDMxcHgiIGhlaWdodD0iOTgzcHgiIHZpZXdCb3g9Ii0wLjUgLTAuNSAxNDMxIDk4MyIgY29udGVudD0iJmx0O214ZmlsZSBob3N0PSZxdW90O0VsZWN0cm9uJnF1b3Q7IG1vZGlmaWVkPSZxdW90OzIwMjMtMDUtMjNUMDA6Mjg6MzAuOTAyWiZxdW90OyBhZ2VudD0mcXVvdDs1LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBkcmF3LmlvLzE0LjYuMTMgQ2hyb21lLzg5LjAuNDM4OS4xMjggRWxlY3Ryb24vMTIuMC43IFNhZmFyaS81MzcuMzYmcXVvdDsgZXRhZz0mcXVvdDtSeXZ4VmlMWGNZSVpNcWpXWWFjeSZxdW90OyB2ZXJzaW9uPSZxdW90OzE0LjYuMTMmcXVvdDsgdHlwZT0mcXVvdDtkZXZpY2UmcXVvdDsgcGFnZXM9JnF1b3Q7MiZxdW90OyZndDsmbHQ7ZGlhZ3JhbSBpZD0mcXVvdDtDNVJCczQzb0RhLUtkelplTnR1eSZxdW90OyBuYW1lPSZxdW90O1ZlcnNpb24xJnF1b3Q7Jmd0OzdMMW5jK1EydHk3NmExeTE3NjJ5aXpsOGJNWW1PekUwVTM5eE1lZk1KdG44OVlkb1NlTVpxV2M4dGtjZTczT2tkL3hLQkFrUXdFclBXbGdBZjBIWmNoWTd0MGtPZFJBV3Z5QlFNUCtDY3I4Z0NJS1MwUG9MbE55ZVNtQ1VlQzZKdXpSNEx2dWpRRStYOExudzViRnJHb1Q5Rnc4T2RWME1hZk5sb1Y5WFZlZ1BYNVM1WFZkUFh6NFcxY1dYYjIzY09IeFRvUHR1OGJiVVNvTWhlUzRsY095UEc5c3dqWk9YVjhNRS9YU25kRitlZmg1S243aEJQWDFXaFBLL29HeFgxOFBUWCtYTWhnV1l2cGVKc2FTYlZleHpRcFRWdm5VTlpuYyttcjgrTlNiOGxTcWZ4dENGMWZDM201NDdBVlV6cHlHMExYdDBmYVNzOXNhdno3TXd1c1gxZWNLc3VsdW4rR25BdysxbEd2c3BMUXUzV3ErWXFLNEcvZmtPdkY2N1JScFg2OS8rMnJtd1d3dkdzQnZTbFFLYjV4dEQzYXlsZnBJV3dkNjkxVmN3aEg1dy9memxpa25xTGwzV1p0M2l1YzMxZGpjOE14TkNmUEdFRG1xdXhkQmEyb1g5K296eU1pL3dxNktETzMveDRON3RoK2NDdnk0S3QrbFQ3OU13U3JlTDA0cXBoNkV1bngrSzBxSmc2Nkx1N25PQVJqajQzL01NZkZiKzlIUHZkVmZuNFdkM2lQdlBldWM3Q2ZoTWFEQ0I0ZndaL3o0VFZBenJNaHk2Mi9ySTgxM2lSUnFmeFJPRjhLZnI2WE5lUjU3S2tzL1lmQzE5bHJGbitZby90ZjBIQzYxL1BIUFJYK0NvRjhIL2pLVisvWVZGZnRtc0F0WGw0YkRlcXB1d2M0ZTY2OSt3MlRyczRjMUVWdlVUMzMxR2plZWlGOVlyd21qNEt1UDFqZXVuVmJ5L1A4TmhmNVJvejlNQml1cTFibFRjcFR0Smd5Q3NBTlBVZ3p1NFR4d0MyS0dwMDJxNFR4Zk9yUC9XY2JMUWIvZ3YrTnB4ZHIyRy83aGUvNEhIdTVWTHFuVXNibnFuZXJpeTN4UUNGbnpBRDkrVXpqL25oMmY2SThSM2t2KzlxRTg5SUQ0Q1hhdDBuYmdQd3I4ZjRYSGtKeE1laHQ5US9oZUVBUUNncUQzM1hyMks2bTQxcW1sZGZaRC9CNU9mcEg0eStZa0gxSDlGNHlLOTArNkp4aTlZRFA1YkJDNVhVaFhoSHhROUE0Snp2OEp2cUk2K3BUcjZnTUtGNjRXRlV2ZnBuVGxScm50NjloWGwvNHk0WDNKdldpVmhsNzRuMFdFSSt6NnFVKzlFZFBJcklsL1VidkI3ditKQnQwdnIvL24vUHFUOVJ4TWUvdW5hSHZxYXV1K0hzUGtnK1k4bk9mcXpOVHlNZm9YaTNiWDYvVDRWNjh4L1VQN0hVNTc0VGkzL2ZwUi9HeVQ0Zy9JaEtMMkR1Zy9hLzNqYTA5RFBwajMraHZhSDEyNzhHN0ovQklzUU5NQkRLc0FlQllVb3hFUGZOU2lFZmxkUUNIckxSVEQwRGFUNC9Eb3Q5QWUzaXRlWitQUStoUHJ5ZlRqeGdHdlJCKzk3S1h0NW5WdXNQRkc1UThqVTF5cm8zekR2cDZIK0EzNSs1S2d3OTJndjRPcVB3TVNmcUxCUCt1Q2ZoYVFlTU1QN3FiQkhic3FIYi9xWGZOTy9UdmFIQWFrSFpIOHYzNVI0QzFwKy9jdzlnY0FGME90Z3pXazFaVjJ3V3FOVmFOYkNJblRYUDlldXJneUp3dENUdHI5YnZQdnRKRnd0Q2dJZHcyR3F1L3lwOExObis3QUsxcElvREFNUDJKNFBmZktER2V1UmNYbkVXTmg3Y1JaTVA5QW5SUEUwNktmZkx4Q0ppSjlMNHorbTVNOXhFdnIvRWs2S0tELzAvVWM0eWFOd0RJZitSWnlFa2RSdjM0bVVFQXo1TzBnSncxNGhKUXA3OUVib084emp2NENWa0VjcmVjZ2Z5M2dyUlZhV1RCdTMrc0JOZjZybjZPL216djhLYmtMZVF1VXZ5TjlkaS9DRDdqK2M3dDhMbkg0RTNZbk5xczlOZ2RkNUkzYkt2TnFOYnZBcjhtMnkrM1VWcGZHMSsxaklleGZ5UDF6SisxZkYvbEZrLzhOZCttdnUwbDhtKytPMXZIL1JYNEtScjBWNTd3N1JPdXZnclVXOFFzWWhLVC9rL29jendNTTF2WGNTL04rbHMyZTFTRXVpYUYyWE42cjlkVGM4WE1JSDlLOWVQTjBQa3Y5Z2tqOWMwL3RYZGYxYlcvOUM4M240dlc3Q2p6VzlkeUw5dzBXOWR5TDloRGE5ak5OK3lpd0oybEtEN1RUUmcwUzlKOG9uYnJYYTQ5L3ZBVEd2cnZNUDZyOEQ5Ujh1Ni8yYjFIOFV3dnFNK2wwWXAvZG8wY2V5N3Z2NDl2RFBkdTdSdDdHZHhBVXB1dTRiYW9kVnNBRWJNZGFySUhYTHVnck9TUXBtZnIwaHBNVkxkSEc5ZW9rdEFsSWxRL2x5cHdNUnFqQjRwczg2bDkzTi92ekNBUmUvNFMrWDNQejVUZTcyY2pXbmcvM3lydlh2ejJxdFYzOVVBaGN2ZGQ0UzhGdVJ3NzYrZG43NExVSS9VMk9WakRqOEprYzh6MjRZZkxFNTVTMC9QS0ovRnhhcmJ6MStYdkdiY1VZRk1Qd2ZNVWFDZWpicUwvRnlDdit5aWFkaFB0ZjZnNDNlTkVSaGY5TFEwelM4YWVoSGhSL1J0NDRvL050di8vL1h0TkZuRFBlbndmTlBUdWM5aFAxVjVRSDBnM3NkNnY2SnIrRy9vUFArR3VkOWY4d2FSNzRrQ29xOU5TWFlBMFh5ZXFuOXh5bVN0eER5MzFJa3p3cmhEeVhnZks0REhpcUVQNVRQYnppRWZLbUFhSUw2TXhVRXJwU3dTOWVwQTN6MUxqcUcvazRkODRJZ2Y0YU93ZEZYWFBpeW0rNnY2aGpzbFk3QmtIOVp4N3hOYXZ6UU1SajZhbDBNZjR0Vy9sMGQ4elkwWmJ6YVVmU0dZaDg1YUQ4MUI0M0d2K1FoQkh1QWVLbEhpQmY3QmhmOTM1R0RocjdOcWZ4c2s5eW5USkt2S2FFUHQrdVZWdmhIUzZxUGVmQ2ZLekxSTHRuNk1MWHdZRVFVc3F0NHhOaitpcnhOUlFPVWw3Z1BXdjlvV3VNUDVQOGhyWCtBMFhwTTY3Y3hsdGZycU9EQWczU2RtQS9xLzJqcWt6K2QrbzgzUXNkaHRlS1ZqOTJ3NzB6K1IvSFZSK1IvUDhUNnNSLzJIeStpLzNXeXc4aDMwdjI5RnRIUnIrMkk3Y1BoK3JFdDhsMUkvbUFOOWFHbVI5NUoweitJcEQvUkhPajNhN0Y2RXI5N2FkRGZrODcvQjh4UlZCZHAvWHZkREIvczhPUFo0ZCtFZlkvMytIMXRhYTIvZW1VNmZPS0ZEOHIvWU1yL2RNajNZTDNpaTBYVkorVC8rOHZPRU1BRUg3NysrL0hEOTJMQWQrT0hyK1ZUZ1IxQ3Z3ZnBPdmVEbi96ZUZPN0hFdnQ3eEhyZ24rNERQRXF4K1hLZkVJaGlmK3dTK20vdkVxS3g1M0R0UzJBSmY1QzZSVDlnTEpqK0J1VDhlaVI3ZFdKZWhjNHArTzBMSDIwUitobWg3TWRCcnVIV2hCOHE3VTlVR3ZYZG5QaU44UFVqeG51M25TRmZQZG54ZWZVQzBMc0ovVFJLL1k4STEvdnl3cU5kUXY4cUw3d0Z1MER3Vis4bVdHZjhkekFaUXhqZlBnai9vd24vYUgvUWV4SCtzWVA3c1Qvb240YzIvekxaSCs0UGVrVDM5d3B0dmlUcXZIRm5mdjg5WFZYLzc3OS9PREh2UVBWSG00TGVTOW9mQnpXK1J2YVZNUDVUZFBNcEJXZVZKcmY0ZlVxcm9KNCtXT0VkV09IUlpxR0hyUEFEa2hjZUp4eCtqUlZXRHk4Y1BtaitEalFudmxQODN5MkdnYjNOdlB1M3R3bkF2L3l0YlFJdmYvK0ViUUl2K1YzLzZXMENyeFAwVU94dnB2QlN5T3VHdmkrRmQyVVc5L2JaWTg4QytkVU9VOVRyc0FqMjdYNVJqd2Y0aHpnODllQ0h4a093dDZsOUgvbkVGUGFhRWo5NXp3TDJOalQvdjJYUHdoZmFFUDROZ3Y4TGV4WmVMTnZuQ3U5YlN5Si9xdStlR2VkWDZEY1lmVG0rN3gxMElBeTkrSzcvZEI4RERLSDBiL2lYamVFby9odjZYYXJ3aithZXEvNzZhaWgxRlBYaHUyeUF3TjVtckh3b0xCaDlGWUxIMGJmZTk3K3FzZkMzb1ZmbUtkUzJGdXBmQzdaOTdJRkEwQ2dLaWNjclJ3RkplOUI3cmh6QnlDdkRSMERvMTNYWkYwdEhMMzcvajJla3J5VXBmQ3paL0xrSDkwa0svL2NjNG9ZL09yWC9JMXI3bDZLMWY1M3NQL3Z3Vy95dDIvNDZhdmVSaC9ZK3BQL2U0Mm5mNzB0TWo0OXRmUG9tenpOUytDRDhqeWM4OWJOVlBmbFc2SlY2QXNkYVF5REpiUGlBaDQrMnlMb2hGVDJFaDRSUGhWNzBqdkNRZkhYOE1JVi9MenFFM3N2TklCL3ZUQjFDUDZucVgwTy9ydW9TNUhaOHlsdGRaOFc5QnhZKzlyRDlpVUloLzNvRzQzY3FsTmVCMngvR0RmUmpibkJITjExeFdWcWt3MGQreHcrbitxTTA5a2RVZjdkUUEvazJiVlVmNmc1OFp2c2x5K3ZEanZ5WDdBajlIN1FqWDBrTC9iQWovMXlqL0pDMDBYL1hqancrOWVERGpyd24xWCs2SFhsWmZ2Mk02cHgrK0xBaC8wa2JBc1AvUFNOQ3ZRMVZmeGlSSDZOT3FMOGMzZmpwUnVRVG4zMVlrWCtSN0QvZml2ejhWSTFmdmorUjdPOG1yZjAxdGY2bitSZ3Y0ZjgvVFVCN09hL2lMeVJrb0NqOURjdndUeE15UHUzYS9NUi9yeklvdmpzaEEzNmRsa2FSWDdiMGc5TFMzbGhPZ3Z4Mlh0cWJDaWoxamNTMFA2cS9meTRJOWRaclMvOVUxTHlpQm5EcE03R0NpUzlrRHZvdUlmdTcrVkQ0TDEva1E4RUkrU2VpOW0va1E1RVA4cUcrbVZMOU14SkF5WmNjZ3hlK3hWL3A4Ty9QZlhvbGFpVDZDZ1M4OHlHdUwvdHN2N1hHL1JuSFBodjdIOHFUUDVxQi9zYlp2dmdEczR6L0dGWjVuVXBMd245WEswT3ZNbUlvOVBzeTVQNXlzdkJYM3ZPdXliLzBkK1JhL08vaXd4ZTYvMWY0OEZYT09rWDgxL253VFFyWXY4S0lxMFordzRuODZmQ0dHVCtDTGo4MzZQSUtDSktQdndiN3lOOTZTVEI2QnpmN2tSSURxVU5CV0xyZzA5WWZMdmEzRU4wZm92ZS9KMGNRaHQ0dTlMTGFoN3I0ajZtTDE1K3IvbStvaTYrZGN2V2hMcjVQWGVEZnpRYi9IWFh4TmtPQTIzNm9pLytZdXNEL2srcmlhNmRqZnFpTDcxTVg3N2I2LzM3cUFuNjdqdmRmRHl0K0dWU0VZUG8vRUZUOFpDbytqeXArNitPT2Z5R29ENkgwbDRmYy9mcm85TVFmRkhoRTZWZUs2ZS91UEgvVDBPdmRtMy9aaVgvN3F2ZVB1bi9hNi9WL1Q5am9reFAwSDRrYnZmNDRFSUY5TW9WLy9ZTmxyM2lPZU5QVUR3b2R2WTRjL2ZHbTk0MGR3Zi9YUlRFL1djMy9DanUrQ21PUzlQOENkaVIrRmp1KzNkWENGcUhiM2JjK2YzZ2MvNm45enE5MnphTXZDOG8vYjdzekRIOWxSOHZIYnVjL2R6WStpZDUvMHRsNGVDcnA0MHpqbGE3ZDZtMUEwYlh5bnc2cSswZ1dldy95ZisrMjUzZjBOVCsrdS9TUHQ3di9EY0kvT3BUMjM5enZEc05maXl2OThibTlaOUR3c2ZYNUhlai8wL2MrZjhyMis0a0hGWDY2K0dzSEZjS2Z1MFgvN2tHRm45RFJueWFxdlV6dnowaFUreFJOK0tjbkZTS3YyMEYvb3ovLytiTFZIK1Ezb2E4eVdyRm5KZmpWb05hcjUzSDRpK2ZmeWN0QzNzWm9YNWpvLzlFendCQ1MvSkpiNkxjMjdudStKLzEzVk56djB0bXpXcVFsVWJTdXl4dlYvcm9iSG54ODRSZ09VOTNsYitqMDRRYi9wOXpnUjRmSFBVWkhQOEE2UG1TZHI1MzVWYjB3RVBTeGRlb0JPM3hURFArVFB2SERIbi9IOHNLSFMvU0RpZjR2SGdEMnNNTmZTK0pybmc4RUFuTDE0UW45Y0xML200ZC9QZXp4enordS9UL3RCWDNMT3Y2NUQvUXMwei9IQjBLLzlDS0l2N2xnaEJKLzB0Q1BjbnRlZ3lBUy9YYS9YajFQNE1RcllmaG5iczlEeXI5ZEc0QisrKzMvZWIvblN5OFp4OTZpMS9jNit2Z2hrZDZHOUU5ZEFJelloOWZ6WC9KNmlOZW5uei9nbTAvZmFQNWk4ZS9seTFJL25ITWVmWDhWZ0tDMDc2OFBHT2dEL0R5VXUzL2s2RHdpK0x1Qm40ZVpLNERnSzd5NTNvM04vL1JneklqZzExWDBnWDUvTkFNOGNucmVpd0VlcnY1KzdkVGpwa3Y5aitYK0gwM3VSNHQrajhpTnZwZCtmNUFhOUN6dlFaQStyZlAvOHZRWldpRDYzcWZ2SmF4V092eVEvaC9ORHZDamxPRi9seC9lNHZrM1ZQN003YTJiKzFRSGJwL2MzVmo0bS83dHYzZ2F6QjFhdnVybHZleXoxUGUvQnVQKy9Bcyt6K1QrM0FuK3BvMzlLWjhzZTdVMFJrQi8wd2tteVZjTklmL09KOHRRQ3Y5bXYxNC9qME4vN1JObnhQTldpM2QxbXBIdnlBL3VFN2NCZjZZbE9EYjJEKzI0ZnhYTTlaNTltYWNvTDdPNlRmRmQ3RjUwYlJCRzdyWDR1bjUxd2VmR0FidEc2UXhFbGJtL2NQTlNDcjJVZ0taV2Zmb0x1bm02UklRR1dBSTJOWm1UTmtFN01hNDM2ODlSTjVJVlQ2eC80ZUNhUDdBYlovM05GcVpmVWVzZkIxVXNPQlZtWkJVNnhNWldIaTlsMFYvVXpVYVhTdE9jQXNlZ2Nxc3FybnJPTS9WRzFmUGtpUEViUFdjYTZheXExL1cxUnkyUDJZU1JNMm1YT1RkaXg3cXpiL1k3c1pQaXhsSlBOOGtwQlkzY3dvekdteGRoR2hEY2dIYkV2aDBqOFc3YUdHLzlqNlJvbkZyVzFwWmlJZnNiSFV5TWVxSU1MYlZsTFZDNVc3S3hVMFJjbnhiQ1N0N3RHaFJpNUEwaldQSG1ZbkViTEhUMzVYR3JZU3ByMVpFMzRnRjhqUG5NYzlmbkwzcG5yNzhBQzlGaE9vVks1VS9DcGs2RjA4cTRqTGxRdDgzNm05a3c0VTJ6WkhiYXhIcFZMcTFxcER2SE1WMnBTR0ptTXhaWCtYQnlDUU9yVkJ4Tnd5VjE2RUlOSmphV3BWMXlVMDRNejhIczlkd2t3WHhvZDF1WEk4VXNaMzExMHpKaVFzZlZIcUZ1S3hjeEVwVHVrQ1JUazdROVk5bmFKelVNbGozZE5ESGQrVmw2bWVDVmhvd0FGeHFiY0htS1NpQ3ZXbGovS1lHeWpIbmpkMklrSjZ3NzdJb3N6czJzcWNwOTVKMHVDdGNJc1lCbGVCS1dxakhMdFJyTjNIUlJITFhHMVY0M1VoWmxNQmc3dVl0eklEWmNyNThVSHQrSUsvWDVqUy83TjRVVDdKbElVbGJpem9JdmhUR2txank1TGVVZ1phS0ZtcFJNNEM3ZUxCOHp3U1BWdFl2eE5LZEVGUytvd2g4NldyY25xamlweFNHSnlHN1A0Vjd0ck04MFFta0xNaVFjNGlDbERIbmpzQjdmemhzU1A5bEN3amJYV1RQTC9zYnlYcTlybHRoUitMd1hLTWNETW13elZMY3dtKzJzZDcyK1h1OXZ5ZHFndS9mOFhPL1pnN2xlOEF4alZqZEo0V2lIeGRlNW05ZkhUb3czc3NJaW5aUHF2T29aeHE4U0ZWVVNTajJ3dUsxc3ExRVVXSnZmVldBRTZXYWtRUy9OMUpmNjltZ09XZGFNaSsrd3hjaDJ3ajRxUmQ5SmI2RzEyZGlOTUVYTHZERzFRN1RIS0gzZloyVUNSVEpHTVVhODNUT2J6VzdEc2U3U09OeGVZdW85TXQ2SEg3TFJ5S3FTTDIzY1M3d3ltZEFML3FLbXJIYkpaaWJFb0kwR0dPK1FLbjBjYmEvK3VMb1FqTVdwL1RwU1lXdDVoWWxlVldrRk9JV0VTaHVEaXBmNG1FaE1GT3FJbmlVSEplUjdJYnR0VmlaaXNBdkU3ZVpJTEtkck55aHI5WWlDbEQ3QUhMbTBONEkwVnpkZDhMMCtYYWtkbnlUSlYrTTZScTZBL2NiWXJtSnNWRHFHcUtmRmw5YkdrdEMrb2ZJeUpRR3pDWGtMVTA5eGdjcHhWYWFybG1SMmgxaUcxQkdLTlozVUkyb1N2RGlIYlJ1d0tNcGNXeFV4ZlliMnQzUVg3K21Ed2tldVVKbFVlaE8yd3I2SDl1dFRlalNNaC9WM2xyaDYxdDhrUEMrNEcwdnlJWkRRcXN6YlZUa1RKTHM3SHYyMUFNLzlFRWh4TTQxRnhTbm45VS95QXNSWmpUUzhuMUFDbVpsTHhwQ0NSWElhc2psZnhhTzZJWUpFN3Vaak8yR3dSSTM3T3J6Qm5wM3ZBOGM2VDdqQlJ4T0gwdHdaZHQyYnZXekZQZ2puMVFJS3R6RmUrOGNjVHprcGRwc3lKZHc5Y3lrdWpLMlc2MTEyUHhIV2xNQUliNkJCcFNGYXZpR2lBQXg3YkFqK3BwQmV1aUc4WUcwQVoyeHFnMjNobTcvbEptTHJYMmxXQlNxR1JoTWFUUG10OG83bHhLOGwyMFBNVlJtNktiQmN3aE9vSHhrbHRRenBRSjVWeXRtY2p6RVhSaGwzdkczQWF6WmNyRzhNVFJLd2ZDT3RoRTRYakt2dG1DaGl1WW0zYWM0MzFtWnJ4ZFZ1RXEySnUxSk02RzgyVUN3cThaRmJtYlRtTzJ6allnd2NLQndhQTdYYjh5VEZGS3NZeWF4bXBkSzIzQjBzbGtGU1RtSFY3VTFWV2RWUERWUFBPVFhuWno3bFM3WHM0MDJqbVU2Qys0blZNTjNLeHpOelRnOTJ2aUZ6YnRnSk5Mc2JjNE9xazdhTnJUWk8zTG84YVVsZTh4UE1ZVFF2dTZ4RE1Eck1Dc1IrRHlsbUxYajF0ak1DcGNZalZVUldJN2pxRlNtWU5teVpuZTdqb3VlZWNTeEd0OUxTWEgzaUNUSHJuZW1ZcHJNU2sxOGZGdzV3eHlqZHRKQ3BKdDlFQ0JYSXF5UnoxRWIzVTZBNG1RdWc2SjZ5WlVxQUNXWEZHUXhuVXl4QmJZRTVFR3RHT3JCYmh6OVBPeS9uRjBubXAwSmdsQjNMOVZJeUZSVm1rcTNrVFJsZjU0VEdYdE1UZmR2dmZLM0g0aVUxcnJMb0pPZ3M3RVVPNFNGZmtnVXBURlV5ei93bTdkVkV1TEE3WFJ1a0VJb3IzUXhreFZVVnZXOTJjOTZkOUZ6WXRVYkRObEd4dXhndFdSaFliWnNtMFk3NnBlTUpSTnBlOVpxS0thbzYzL3hSUnZ4RXdROWRDVG90bDZucWlXa29LT2t1S0kzd2NvWUxvZHRaZmtQZmtxRzRXT2I1c21vM29SQkZpNkdLcGFEOWppd09WQmZjVmhna21FZkI2RTB6YVozWnp0MjROK2l5OGZPdXlQcmEyelZtcTBkVzFoVFN2ajFjYXpoUUYxaUtESTZvSVZNTnpDRnRsTURCMjhScWFhS3d6UUpwOHFQYXc4M1E4SU8rZ3crZHhibE5CSFR6Y0phSnhtdjNXK3UwWHBVTHpJNUdSblNSd1N4YUxlYVlhMmdOTHVZOUhKU0REMjNUVWc5MkVMeFpqTFh3Q2g5dlpXaTRTNGw1MmlMR3ZkaUVTTHhmSGVER3MycklOdnBCVGwzRTdBcXJHMkNyczRraHN1Q3RwNTBIUFd3S0pJbk1HMmxNMGJrUHRBVG8xSE83UC9wNHZUMmVjZm9nVGZQMnNLb0FUWWM4SSt0aUF1dlFxeTRBWnJFOS9KcGFSRURHYUhCR0cyZzBXSHE3Ujh3d2hvblZkZ3ZhSEprakxTcElBMnpiQ0sxd2hlblFMRkJkNG16cEoxTE9jVW5VZ2dsV04vQ1ZzNlREaFJuNkF4SlBJaWV0NEdxQ2hTVHBEOHVjSVdLWUF3T2hGWVZJUVBPcDNCb3VOQzEweGx2aWpwcVZzcUtxSFg2ODBQSkNoR096ajRDaDRLZlRtV2RPOHMxMHowR2pLRTNobHF6ckxlZHdPR3p4UkZ1WXBCU3RTN2ZJM1JGSU4zSmNkT1Z3d1R1N0JOZXdKUFRUZmkvMWNGRkNWbmREaDcxODZJczVSeXdPWC9qT1RrdDRoV2RtRmdBZDVycFh1Rk44aTdpTkxjRUZvdWhjamxsUGI4czBoVnNDYWIyTE9TUWhuWjhHKzdUd2RESU1wOTdSdEt3NEdEWFdscDJ4dDNzekpDNTBiU1BINkJKeVdYN0NKdlMyWmVyUXJpbDQyMkI0ZVBJYW1PYUNyVWtGL21xOEdlUkU0eE5VR2JzQXozcjQ1TUhJVU5ubHFmQXhlNmE1clhhQUxqM2h6Sms0MnFkNU5RNE1TM2kyU0pCUU1XVTJFK0xIRHNoM1lCOVJuaHpONjJnUkpYbXRybXMvVUVTdUQ2NTAwZWVxVXRRN1dFN3dSWkZ3UEZJMGlMb3RrM0xpOEFJUGFSTWpiYStsSzRkQVJhb1BybHQ2SEx5d08xSUIyYUpod2RGUXRTRGgva3hZWXdxTWhqaFFGWm9ETGVOdEtYcE1hRnhySm1vdXlSS0FXM29iUVVCMzl4RU5sSlZDbGVlajAwQzdhYk5qTjFETkl2RUIzc3dIOWpZZElxYkp4WXZxbVl4aWJLK1RwN0FjWnFweExMTndmdkZYbitKMmNtOXJ4K2c2SkpJZWtyMnBPTE5Zdjk5Tk15RWdtTHVmOEQ2RnBFeE5qNFpHM3c2RFZGc2FaL0p4bWlEdzZkb3dnMkJEeFNuTkRyN3VFSEs2Szlsd1BuZjg0c0JqNW03Rk0xWjUyOUVaMFF5bXdnZ01qVG5sb2c3SnQzcEZtb0NoenQzSy8vSUdhdHQ4dVo2MW0zZlM5NFJkTjFPaWk4VlJicDJ5T2NIU2RvNnRrN1ZjcnhkeTZkWnFwLzE4dkFYTytSSWptQyt2Vms5d1NwekhhTVZvUnI2MDFTbTdzS3VQNzVDazJsZHBvUWlpa1ZRTkhKWTBlcnlnVzlzWGxnbGdpNlFKOXpTWTVoSHJnTk54T0pBT2JJczl0SXpMMGJxTVpnblFrMlZlSW5WbjFXdWxYZGJuSWFxQThCbCtxeXNad21PeWtLKzJpZXRWMFlSR3lKZTk1RHYra05lcm1wV3JVQ0w1czFEM1dGTVZpblcrNW5hQ0ZTak9LampvdE9TeDVEbk8wSnMzQzkwdEpmUU8yb1ZUUFhJY2ZOQWJoZ2lhODRvY1hIeTRubEJVcG5lQm9Cb1djR2Q4cHZKRkgxb1cvWEt5NkJLK0xXVzNRNVk4cUpvZUg2dnlBRjlPdTZEeVJzNjNvME5Ob1h1QU5zNWs1RWRFQzRhMDJpNFdycTB5eGZ3VHlaSUY0UHVJeUJzemhTeUJwbDE4YjlZVUlsTzl4UUFod3FWWlg1d2U0RnFQM1pHRlF4U0phNDVOc2JPalpnYTZPWWlLRmNnSlFET3l0MHkwaHh1TldCN2NNRFlyK0w1OUtraXFDZHBGc3dRWGJlMEVtYThWZG93TVZDNjdvSk1KaERaT0YzMm84dUJ5Z1hNN2pBaEtzWTRpTmFIZE1adWE4dzJRaDNlRkNES0R4dGdXZWQraElwcDdIVUxlRUZnbkVadFp0ZHBGc1NiTjgwcnFpQlpOZERFTGM2Z1JyTE01THdlYVFFWmdzS2F4S2tsaHRrYmpDTFF2TUNTbmJya0twMlZBNXhCdlc5c2R1d0VmK3UyQWMyYWR0V0VWSEZCU0tUeUlBZHVqU091S3d0ZktLRUlNdUY2M00xbGRhUVg0K3NLaUhsTUdyMCtIbUxTMit3MXVibHNuMkxmRmxtZ2ptMTZDL0dpclNKTnB5SGFUMDlDd3JCRDNqTFVIUmF2ODRKQVZoZzh2eE4xNUZUYm5ZajVJNS9pMktvV1k4UGtHYlU4NGpLODRIRGZHRTMyZ2lxcnJJbjdZNnhGM0hraGdtUmYxZWo0Tnk5RTk0eVNxYk1reERzT3RwUG1la09UREZSQzQ4K3hqZjdvN2ZnejU5Q0pHUU1DTWVNUXFtZ3l4cWowYXM4V3FGWS9EakxYZHVNSTZlOU1Td1JVa1hETFJ0UkJ4Q1RtVlU0NTZOT1ZHeENva3dGZEgrdVc2T3Nka3NQY1dFdkFDQ2ZRb2RpWmxnQm1NTGE3U3gyM2kwRTUwM0tKVzREWG9xb3QyQkpLUWd1SjE5aExDNitQVUdjQlk2aEtHaWJGZTFtZXFEVVhnaGd6UjFhTklJUmtOWVBWTjRGK2ZRcHFjMURIS2ZQTU9mV2RnTzgwOUFVZmJzZHZmeHdady8zVUY5a3hWUkttSm5jYUNKTFdRVkpiT0g3M1ZiTmV4RTQzVWdOTVJBREEzRldodnJxdlhDb2VNUUtJOHcyZ2dNU3ZHQUcwQUNOOVNpSTFmZ1N0akk2U0N4K2lKemRLVUsyLzJ4Qi9NVE0wMkdHZWZKakZ1VnRjZTZEWi91V1VaNks1Qlc3eFNYa3pIMjBUVS9uWWdkdjExSTZqc2t3OGVBWDdzWXBTQ2hvMXlHUkxLSDlzZGhXeHJwdDdGM0x5Tk44RUJjVEd1UWMzTEtkaTUrcGIxS2RaQ2RzQ0JDY01xUnVjelhrYW43V3BXcnJGNU5sZlhHamc1Y1IrNjZPeXdDSm1aMDJhemtackM0b3Z5YkVDYkhZamNiT0lOcytIZHpjWUFGd3o0UHlYbXZjK3Z0Wml2TjV2RDg3VzAvZ3VhelViOWRQOThid2Y4c1BmQyt5MTU4M3ovcENmeFpnc3VlUERjTm8zWFYvS2Zuc1BiZUROOWRxMU9UMythUjA0M2N0REUyVUhsRlh2aWl5dlM0UGdzQWQwZzl6Y1drNzR5L1BxSEphODFoZFJnZEZQS1FlQnBFMXdhVTBnZ2k0Y1BwL0k0ZWpxZVhFUTZ2ZWc0NXRuUG5lVm03RlFsZ3kvQ1JiRDZycUVJOTE1MUlFSU9TaDFMRzUzU0lNQzFaNW1RbzFPckV4TVQ2ek5USVBhMFZDUkhnMlU0YisyWnhEblhBNHROVW9idEpIWVRLMXM1djJTTnJ2SE9wemI5VWlzVlhhNkRyVGFkVW1vTTBBRGRWLzZ5TCtuYjVVYk5wM09PNzVmTmJiOUl0NzI5MWsvaEpiUnd5TEhqWWEyZnZiVDlXZnY4eFQ1bWZsbXMvU2xHTDJWdUY5RWhIRXNlQTF1bHBWVDY5UHpMZnk5OXVkaEpjOG1nMU4xcWtNL1Y0eDdCMTM0SXVZZkl4ZjQrVjNRUmlrVzVYL2gxWEZTcXJQNzhaKzFRVC9VYjFiV1R3aE1LM3JYZ3dxdU9qWWRnZDdGeE1JVjlhdUZVTUUwb21yMjFBdkoxRnE4K3N2YjBzNUhjUnlPYW1HczVoQ0VXMk1XYUhVMHNoanV0TGZxcVpQbnRrRTNqbDI5TVhyMlJUVDhiSnpjL3Y5bGNMcmJNZWF1cVgxdURsQUxNbFFscTFSNnFVaXZ3dnIvVnRJK0ZuNjlqdnJlb2Z0NGFONDJBYXFkY0szemtlSE50QnJyMzZXazJxRDM2aWNxZzF0ckxrR3RXM21LR2k2MGxTdHpzOEN2dUFUYmJpZ1YvaHUrQ3diN0l5VVlDY2RMTlBZaWF4TS9YUjZDbitoaXFWL2xZUllHUk5WNHd3czIydDFWN3M4OXRzNnFwRXhIaW90cHFXbXYwM1NhdDQxMkNzRWE3NDhWTjZqZ3IwY1d0S2hGQVdiSHJGUi9zanBKOWxjTnJOeTVBRlZJVVFKTU83aU1YRktYR2dwK0ZDUi93OFV4aGQ1MFdCbVdBWGxJTmJtWEpDcG1UcStMVE5lUFZDMzdqTENQZFpaMmZNQ1lpYWFLZkNkR1J6d1dTNFBqVDNMR3RnZ1BiTEpRbmR5dzcyZ1c2VnlFeE9OQ2gwbkNzVmJXdkZoK3RVUEFRYnFNY2pHZTMxRDNsbG1RZGRoZ3dlSUlnUmdxY25vanh1STBpb2w3bUo5dDB0STFCTGtTQmlFcHU2Nk1uREV0SFBmRGNTNnRuRldTeHdvVzROWWREdVZrS041c1VNeUpJK2VUc3hDQ1VDejVsRHp1RTEvTlVoVVlOdlB1Y3pRQTV1bU9Sb2FGZWw3aFFGOGVRVFdEcmNKRGR1L1ZtdVUyUWVEYVY3NVd0TnBpbjBCMkhNMWp4RU1EOVJCL2ExQ2RvMzloM0pqSW42V1gxeEhldVhZRUFGdUhyeXdDc0ZSaXZuWE9nRnBOY2ltUW5BQjEvYmc1TlM1dE16VzNqayt5RW9VMXJIWEVvSXNmMUJGY1dYZHZPNlEzQVZ5MVlhaGdwOE1JcW01QzB5N3BpUjV5R1ExZk1sMW8vMkhra0U0eU1td1I4dDQya0RWNGF0ZHVpMTlFVnlCV3BtV3poY2dmcEJ5UWZHWUs1MERiU2tNREdETkg2aDBxNTNKRzZ6b0pUYlpmclRXaVBncHQ3QmEzR1ZIdC95b01XOG5EVEdVMll6MVRLaXpmNkVHNEo5a3J1a2tvRHNmUklGcTB6ZXIxdWhza2N0amlKaElvOXFqMVNDN2tvUXhjNXkwQ1gwQUQyOWpib3BEQUN5Tm9oSlhKb0ZqZzA5eVlZSEZaTE01ZGRldStwWjFDRDVzemVjYXZCUStEbkNSKzhRVzQxOTBobnlnbWRpNzIxbmEwSTJjbHk1dGwwOXdTVWVzdmRnZ2tBaG51MThKNFkxeWxiOWZSQmR5blQwaGRROWJnL3Q3VW9HaHV0Q3J4d3pvM2N2eXFKUll5dGpSMEt5dTFtZU5ybGlURXBZRVpyYnR6dklPMVN0VUpLaTFJZUttSWg0YkN5citKbXIxa2pEZkF6ckt4ZEFOU3FSZEtnaThCalJUaDA1bXUzV09ucExEWkREYzB3R01QWTFja2hxM1AvV0RFTG9LM3ZDN0tyZ0NFV3lnaUNxbUN5S09vWjkxR3FkdlpnZTJhdVltM0YyL0NFNEdjdGxTUUFVL1ZMV2tvM0pkcG1RK3B6dmVtWlJzUUFOaU8zNlcwU29NQWUwd1B2UUxrQ0wvQW05aFFiMWVhenVKdk5vazFaQWprUDZkNXVpUFprS2xOcm1yd2xkcmhMZStIbU1xV1piUEpINkxEMWVFczVvd1pWQnlrOEZlb1J1d3puWmgzL3NYVXJNMnh5Y3pzcVdFTHRRYWVscWJ3YUZVTElibU0xTUpWRnZIUFViakQxaVNmZDdWbmwzZkljVGNEakdLU2lURkwvQ0JXZWJlamtwYzFuNWFMdmVKT0laY2JTZ2xsU2NROGQxKzR0aVp6M2M3cW9NUzB2RmJ0SnFUaVVwTnZsQ1BnSUJtMGZvOXRNZDJGYmowWmJVSzJUbWNsWlZpZFpBRE1NaEJibUQ0TndqdmtWSWU4eUFCc0pPUkhOWFRkMEJOMXdnajVFQzliMmZqd2RXM1lqZlpJUTdieFZqVnJnOWl6U0xFcWFPbk9qdFhjT0hWdG5OdlkyVFptaXJEbnV2RkVOLytrT3dMOGtLYTJPOURUTFIvcm1hZ3NoelZQVlFiVWQ5WlRoZ3ZEMGlVRFR5VTFORUFrWG5BelVpMlhJdE9ORFI5WEhUWCs5SG93TXN0S0NQODdUdHUrVWpXdkpmTVFJZXhpd3R4SjdzeW5Vc3V4TUd3WXhxL2pZSFpJSUEzb3lNLzBoMm1YV0hKelNlY2VtdUxHQjR3dG0yNVBVVVpKODF5Zml3WGRIMUo1YXBtall1TjZkSjVicDJHVXFoMWl6TVZYZjI5Ujh6b3dWY0F1cVAwaUd5ZWpoUmowNFlpakFGQXR3SnN1cXEzYmYrMjVXbktjclZ6UmkrdFJNdGxuaWRseWJ3VldkTTZra3lpalJOWlc1VXJNZFAwWTFESEd4NW84c1JVVFdkZDhHenJhbmdVODkzUHlyQmwrZ1JkTHVWSlhtUnZTTUo5TEtsTDFCK3VSNkRvdko3NndXMkJTQnBJZWRzSnVpM1VFN3VwOTA4cXFlQjNBZ20wQ015R3BrZ0o0QktneTRIeEdxUi94bXhWaWxJanlSeVZ0TUN2Z2pWa1JQakFkVVdYOWUrOE5HSXMvdDRVdCtqN0tyUzM4OWRkeldXU0F4eVZBTEk5dUs1aU4rajduUkJCL3VuQStrTjRZSmY1ZXQ3NjlKZDd4NkluMDZOSm9ESFpiWkloY0tGenRVYUo1N0JtL1ozQVhlQk8yUkhzanVGdWd4bU5CeXEyeVhDMnhlcVlOaVI4cnFlNDg4MHdaR2s0ejdDc1BNTGc0R1o1K3dVcVJiaDJJbnlDVnZjbzdEYU9wNTZIVTVFSFpib3d0eTJXa09hbHA3MldhM1k4MHgxYmkyVVluQzZ4TlprRlBSNUF5SG1SMTE4UFZkQUs5VjltWXBTODFKdmNWdUZvdDd0c2hTN1h4ZHF6UnVyNjFWZE5IaURHTXpPOGJWMTFsUVpkWFk3VjZTZC9wdDB0TzQzRytLYzZ1ZlQ0MU95UHFnWFJoWlI2eU5ZZkNMdzZlUnJtdndEcjNzekIwbnlhMDFUZXhheFpQeU0rR3FwOFlpWlQzUkw0bWdJaUtvUW5wOGFtdDZBcXF3MXU3TVM2MklnU3FGaCtVcTBScWdpcVJydXBNVUtpeHVmSXZmMjN4YUJXc1ZGcjZrK3U2Y0gycXh4cGgwYWh3c044aTFTbXQxL0ZyRlNJb1lGallIUzloWGZIeXZvc051ZW1QMXZPLzV1cGJUU1RhSVBGOWE0NW9hbldHcHVqRVVzU0F3aDFXNVZWQ2VCL3FBNklVZTMxaTM2QStidFVwNUE4RW1wc3k1MXJ6ZWpOb29IYzA0SnFEU0NabWxBakpxVUVrdDBueG1kOG4xWG1sbGNFYm1UMjF4cjhUblJpbGRqS01XYjRXRWhXZXBRZGRLNm1BNWVacmozSTVwVHh1bjMxa25lZFVhYTVXaW5kY3FoWFJadGF2S3JTZ0VueVVaVkRFR3ErN2p2Tm52bVpYeVRzK2FwMFkrRU1XK0xuYXdrUFBGL25KbmxtT3N5N1FzMzVtbE1lcERYRFllQjVqbDBxZWEwalFid0N6dnhWODdZVmdwTjNtR1B4cEowN1FEYThDVmpwZG45OER1K0pOOVdHMVh5d25lVlQrbTBUbEorSVRjWnNkc0Y5K3NQZCs1OXVIbWFiRTJYVy9YR0xMTXlXa0MvWEk5dS81SjRyY3VkY2t2aHVndVR1R3BUMDJLQWdKVFlub3JPYUZyejhlMWNxSnRZdExPRGxrYnI1SzVObG54azZmVjZnUlE3eEFibGpVNVJmU3BSMXVBWHkrOGFZZzdkRzNXSUVwT1A3TGxFWWI3MTMycVNYdVI0bnV6ZWVaVUVPWm9rcjljVDBYeXFrL2JyWXRjK01JWGQ3WlJlamxTY1NuRGxNRU05Vi8yU1ord3hWanF2b2xubDhnWHY0UWNRNVY2c2o4SnhaZjlRUlRSRlUyaDZFWFpocTZYSE1rMmFYSXNBZ2Jydit4UE9HT0xjNnNQeFdvYmtHSTVyRTN5L3I3djZxUHdxai9JS0Y1RWt5bDdSTGFnMDczSkpBbUdpSG5kbnhPTUxSSlJIOHpyMm1RekgwVEk1US83c1hPRVYvMVpteXcxd1dUU1lXMFNQalV4bEtsTkZxeFk2VlYvZGllWXVrazcwQ1F1SVRKOUVubDlleUN6eG5uZG54a1pTazIybWJSQTVMM1EzbzZYcGt5UWRxUExHU2xsV1hVVkpQOXFrVTR4eVN4K2dzcjgxcVNGY01pNW1XMmVzZlZja0xKNncxY3Niam9Fdktyc014UnJXa21TcmlBTDJWWnU4UTJmd2xGakUvZklUV0lDZzlLeEhiQk5TZUF4bldQSXBubXJiMU4wZHR2VlZsWU1udEZNVXB5OTZnNUtkYUdzU1ljMmt3QmN6YktiZUJ3czhZWWIwSU9ZcDBsV3dJZVkwMVlzc3N5akJpekpJamVkVW51dHUzRkxqUVJyUXBDTE16dkw4cmFLb1V5cXV4ckRicGN1cUpPaFJVUlNhQUVHd25RbHI5UVI5dXgvS1VhR3JLNkxvSTJKdnJVYUdxUTNoR3Jaa1JJQ2wxNUVyYTdwdm9SY1NVUkZRUi9qclI2T1lMMkp4bW5nZ2VFOFlWeWZJQ2dkRVo1eUk3WWhnZ09iTldaUk9KSXE3NlBwc1N4NXlZVTlyd256WnBodDRJTzdOWHVwUzhHWk5hbTJIWlkvN25DTjJKVURpTXRsSG4zbDBseTQ1L09NZTdidnBaM205Y3pHYzR4a2Y0VUd2Y2VCRWJkR0hHQnFmK1dpb3JzRHVERkQ4aHpKSlhKVnFIS2ZzRUk0YUdFbDkzMVE2eXNBMGVMQ3FOUGpZYWV0K2w2c2RaRHF3emQ1TFRpNEprbG5qODJGSFo0UUVvaDVyeDdhTHJFT2hyNFRrRTNDNlZjalRKc08wcEcwTlRsR1RMVVZYazlUVTloOTdRN1NXTHVGL3IrbC9YcGdMNmVrWHc3V3NFTFRPTmdobCt0R2xvZWQ3bXhEZk5SeVFwbUtVTDFEb21aVWZCdG05a0k4aHluVFhPSVZFVTVGd3EvT2J5RWFnNjlld3hVRndwRnMwNng4UThKcTYxeEw1c3p4cStlenlnSk1EeEYxTVMxMEYvUjJmWFl4MnRnMjIvdWFyQitOQW43TldqUDFXNENINENjS25pMjQwSGU0MHAxRlVBSlZ5bjRFeTFYTWtMWHV2bWRGc1FYQU10dEZEcDZPQ250M2pyQnpLcHlIc1JHdFJxSjFTcU9PWWswQnNLeHNtZnE4blJPN1RpWGkzRzdQUWRXdUxjaEUxWGJBclJlMk5tOU1qUmlld2loczlwaytYTGZCK2Q3T09pejluaE56ZlBMZDFzN0JlOXFRUVpJRzdPS3J3MG9tR1pPc0x0THFHdzFQL1BqeTNKbnVlWFRoTURtMVlMRkZUcGZySU83emxrT3JXZlh4QmFuOFUxMlFobmtqdENac3ZPM1pGOVVkZzZCWldxQm9vZFZqUXg2cXF6MTdVdUdzVHFTWGtGM2dpZ0QvVnYwdHhDT2hUODNVeUlycjlucVhtQlBjN09qcHJQVExMWlNndk5mN2NGQnBzQ2RWUUYyb09HRnlWUWE0d29lNkplc25Dd3VKWTBRT0xsc0YvTElvVkpXZTVEMWZiejMvRkZnamhkQ0NmazBERFBSZ3l4ZXBjVzZ1MjdBRGNHUWZabzJ0S1JTMzdMR2wxT2VkREtGY1ozU1JNR3JRMkZSWEJpLzZZSkdsUWlDOEJHNVhOWUJpaEFWbEtFUGRiZ29PeFhwS3l6TUJzK2pjVWNIZU5jbjRHbHkySUlLaHlZeGJZTFNia0JYMUJMd0hUOXR1RjlZK1pNTnhNOEV5V0lEUW5GckJlRUVXeGYzSk1rK2F4aWVCZnBwZ2pvdjRDd01VRVovTVRaR3NobHczakZBT0RCQW9xbllreTZ6dUxNaDhjVEJKd1l6ZDZYQVFuYUgxMDZ3NWdJbTZSM2tzQlE0NGpyTjVjODd1alltSmxoVEpJalI2YmdSeTk0TGloMVhOSTYxVU94N0dwZ29tY2FTeFkwOEh5K2hiS2swYitva2RZTUJoOW1aMTZSa21jbFExbWlYZnZUanF2TkpFMktiM0dOZUlrclJCRVdWLzBKMGx1TG9hajg1OFNFOThmd3p5OUt5bnZDR2wwQUhiNm50dmw2akx5ZDZ3K2RueXhHT3hYT3UxQWJPTzNRaUROOFk1YWU5eHFwWDdhcUJpQVdONDFaSUZPeklzTk1OcVNJQlJoQW5mK0cxeXNkemhUSjd2WGdVbThYM2p5aE1yaUZHRWRDUWdOSFhYNkZoM05rUjgzcy8xN2tqTU5FeDVrSzNaTFFzWFl3bVhtWWpVaytrZWJtQnhlZEdOcU02b2lkRjNxSFJiYlQzZUdlYWVQRG5YQTFSdVhiQnFhU1VYcG1WTUhMRkdjZHg3NldVMW9nTmQ1aEpRVjl2YlRaSUdYUnBEQ25GZzJLVVdjWjhlbXdGS0ZMeGVJWFppWHJXaW02c0ZxVnZiTWhiLzBweE9FRU1ONlkwejBtN3BqOVl4QkM0aGYwdXh5dk9POTloSGV5eDRSM1B6UzBoZitybmJ3WGg1c0VYdmZHN1lpRlQ3dU5oMFZMZTNzMjB4ekg3Znl5WHhOQTc4SXZCaUk5aWo2d0xtWUlaUXJvUlpoQkJDeldqSWt5UzEvUmpseHlqLzRpalRma0R4anNkdlhuYUJLcjcwa0xOUDExcGcrQlUwSHcyeHBidFpEbW1vUGthT00zY3BlWVRjSjBSazA3NHBrTTl4MFZZVlpzOG9lRFRZeXU3WVo5T0szMkhGZllwanRKL2lHSVMrM2NWbUxSSmFzSk5KZWVTV2xJN0tUZ0ZQbVRqSXFmQzE2N2lBejVDRFdreHdPcnA3eDYxUGNzSmxlMFVIcTlUeUJTNFFHajFkVUpuSjUwRzBPc3lFVE81MlgxLzFXOHc0cHBnN3ppRFR4V094OGdpc3Bzc212ckpiL0tIWkthbm9QY1gwNm1xNGFaRzhXMEJQS3hEeEZocmZ0M2ZKN1c3bUExTzliaE5udFBKa3E5bEtlNExINTFndFBJNEtMWmVCZ0tYajJSNUhnc2hFN1hycnMySVBBdG5pQlVrd0ltbDMycHp3alkyT2xnUTV6akdDWnIxYmZKOC8xZVNjN3JTazJUWW5vQzNuWGdSV1grUjRkbGRxam9NbEdCSVNTY0Y1QjAwL0hpVmNXb0Rsb2ZFbDFpVHNwbEc5WDFQMm51TmNvT1NjMVRsMXRadTJEam5iaWgyWVJNYmlSWmJQQ2xFMHduMlZmTjdTRUMzQzZYaStGVlF2SHd4WjNCME9MMjBoZjdUMEZCM2I0LzdacWZXRElWMDA3R3FKSWlRUE03eUJvQ3hldlFySnhtQnViOSt3YXQ3RWwxcTlaZk9oUHg2eHM1dTFRdDFzQlQ1TXI1WnlEMmdqWmU3eCtUb0dwNk1uT05jRk9TRzRJMG5ZOG5tLzRjZGlGbHQ4T1V1YXRseHEvY1F2dXVBSGdyRkxrRE5DQ2dHSWMxMmJ6RGNSUjFxd0E1NndLeG9YYTg0UEwrekYyUlNSSkJwSHJWWDRjYUp5dFVrMkYxYzVrdTVaT3U5NThhaFFDbGNmUGVTK25DTWdJMm5RdVo4NlBNSkoxcFR6NWJLRVNIN2piemZHaDNaZVhYRDdhbks1M08rQlBFbUFFWGlWMy9PSDYyazZMcGxlV25zOUxxMWFCbEF1cVVNbVVwVVJZSnFDaCtheTJFSWNJWS9xRFN0SzYrRFhraGxJMmdueVlBK0RXbWZ5SkpZUkNESGkrOXU4bW5DMmExSUd1YS9sQ0tKQ282c0Q3MndzUTVKR1o3NDNjTWgzWm5EUVQ0WS9SSitpZFh1UkVFWDFLSjExUmlXbDNvR0l2dVZyd3VuRCtuTWJqd3hXaVk1VUxsM1Q4WHE1cE92Y2lZMXBlMXVzeUdRc1BWRXFQa2JvY1F2TmZnU21HTjE1dzZsRVpoTTZ1YTdQbTBJcm4xcUU0clM5TkRnSTFGNk80MjJzL1h6Q0pVSUdBQ1pZTFR6b1RnVTJEMVFGTVloNE85MTZVNEFaa0tHaDlIeUx3dDNMYXMxSWszUjZrOFJqVERHSVJPL0tzMmQweEZZK25QUlRhajVsY3F6V0hZL0lwejlCMHczbE1VNElpemlQZUc0VHFKY2d1eVc1MWtSZ0p1ZzI2bDJ4M21CSmY4ajhkbU4zRjJIaERiaXVzVlZGU0R0ZjNYUjdaRmRhRzFQYmNmU0dCc3JiSEtsTHhOWkhZY0phV1hLeGpSYW9zMUZWK21VdWlqcy8zN1haRUtGSlNadVdGMnlSS3poRUdQUXMyMXZFUGZMNWdsR0k2c2lSRkEvWGpBQm5TanJ4V24rK2hFZTFBdUhZbHFJaTRJeU94eTBwcGdoUmg2TUUxMlIzQ091amJ3ZXBlNFJtUGlKa1d4ZjF4czIycDg3UU1FOFhXbkV4T3NuSFRiWlNzcDB4eEdsUVhQYkZUdklKK2lJbUEyL1huYXoyMmxJWnJVTWRHaDFtTDRTWm4xYjhkSzdnZkNkQzJpbnRpeHZNbjRLd3psU2szRU5DM2xnT2ZtdUZReVFhalpjYzhOM04zaGtxamhJM2dYT2xTck0rK3ZBUCsrQlJxMUxBNjdKcWxVRWpyRFlkSTFhRjRIbmZOcVY3R0pjcE9GYU11TmpaS1RBQjRnZDJwQXhyZTdzNUhIMDlMYzhselJzRXc0eXNtd1lvWjlUVnJRb1lWYVZtZDNWL0NWM0NOcU40U1dtU1dXOU4xZkdvcWozdVBOMmEyTEVNWW5vdkd6VTY1Y2UxdmY1aUVDUFlENkpLazlnLzNmUWJWTTBQeDROMXZVQmdqVDQ1cWZzSkhBRTB3VHVaV204YXZMTGU5S0F3VDArYi9WdzZZemlaNnkxNU9Sdjg2dG1jN3JjT213NnZIRVcvbWJzakpYTm5tKzlFODlSaFVjNGVtRTYrMzdKM0FTUnozRm5veWtEcHBIUE9Vbklyby81UlQ2UDFsc0J3eTNxTDNqWlNGclBVcGR5anZiRGVZbjBJWnRpbHlKNXViWFlnZm9sd1VGL28yZE5zN3ViaURIREJGdDlrRy9mMmRIT2RLRmFkb0hXaXFqTng0L0hOeHh6KytEa2tkbkNURkZleHljZFp5M1hyTXZtbmZSQnF6VFM1cEg5M1ZJV1o2QXZVSnU3bWJLUWdtd0RCc21RZlgzYTd5akhBZXFIYXVQbCtkTHh0YTFhZmRPM3EzdGwwRDJLRmpaY2VRVXYxdGtKNlhUamRqaTdFa29nNEU4VUZvVi9XeVR4a0FHNmowSi9SMnJ2ZGNTSW9SanlnbElNVjNoR3BabU1WUFM2R2xsSVpGKzRwSjdRc25Fa1ZqUnZhV200dTluMGxzVHhUMWJrNTNtNndSSWQwcGJxUnROdHZhamlLYlZ5VGhKc2ZpWUs3ekJxTG9OSlRSS2tpN291ZVhhZHZMTGFTY1I5MmtucXVVbjAwOTNzL1h0R1ZTUlhSSHF4ekR0czJ5WGVkZkY4SkxFSkl4MUl6bStBTVpHcVM2dnFzL3ZuS1g0SWFGYXhPZ3BrUHQraDhzaVIvd2E0dFZ3alg4N0VEelYxcnVBdzdIRklSRnpvRFQ3am5OUUd4WXlKaFErc2tjdzVUYXpmZVpNc0xFM0E2ajZrZ0VVY3dWa3pxU0M3STdqRlNyZENTelA1alRkdmJIZ202bDdqYk9ITzlPN1haNEtIWTFDbGg5QnhQQlRQdVhIb2RtVHJEMFJqYkFwOWFFbDZ5WE1BNHFtcWhjelM5dVVDbDVZZWhiYmtSUDFuTGpka0ZrYnF2M0YxeHUwaW5FbHZhY1ZZVUVTQWxTcGFQKzF3RXFTMDV6eDU2MDlGMnVzenB0RFZpQk9VdVJZZmZ3MlI1YmdkNnIxZVJyQk43bHVVRGoyaG1JVDV0RXNBaXQyT1NPblM4M2pVK244Y0dTVXdsRUpzOWpOZWtVOE5IUWRqbEF3Y1I0MUdSOFR2RDJRV0g0RlN5UHdvOWR3NEpMUFVGL2lRYm1BdFRRbTBSKzhPaGROTVMxUVh6YkFONHZ1bWZPZnFPcnNaNG1udi8xaUlXQU45Y2U5N2hvWnd1emRGcjcxaXhwMCtZSW5kc3J6ZWZjbWhXNStJcGxqaXdpS291K1cxajRZZktjdlBaU3JVeUwzQkYzU3Z0OVo2SThaeVJzVjFVWnl3UXFUTkEyQ1FvMVVHclJ5TTdkQjF2WjVaSUF3b09PKzhVSmo0bVFEU3BDSERNWVFOZXIzb242bkR6bGw0VWJ6b1NOd1RocXZHQzBTNmxFWnRDWHVsL1NCTUFFSmtRQkxpMmdVMlk5RFZDQjVFTmFpVUZyQ0tzWGs2SWpQT09xVktadVNSbnViL3ZFeDBpZUtBcDhoN1dqa0lBd2pwYXBtRmVzV0swbFVra1BIVG5DVzI3NGY0RUZPazBYS1hwVmVhTTB6VVRablprZWFjYXRLdHJWYnVzeUpwRzR6cEUwSmNiWVFUS3loL202cWRJSWIzSHd5ZGdhY09WNXd5bE5QaG9Oa1Q0aFdFMkZpemZSYjlJSkVYWWUrZ3l0OFlWU0lOVmxIbDRQSk1qN1dpZXVZZnYrYlVBaGdWaVRlT1Vrd3BUZTZ2VC9DQmFzV25VSnpvaXprQXFkbE00MGpoK1ozV3NUa3M0U1d6UDAxS2RMMkl3RTZMZ0pJeDdZVXZKcTRtVEtFMVFRc0hxWlhzRmNXN3VDYXFDTk9Gd0MvYTZFSkFESjlkcmFMUERNUFE4ZklrOEI1b21WYnRSc1FJd0xnNitlU0pFYVpPV2ZidTZhSHVZRVRucTdEMTExaGJnK1d5WTJyWWF0aVowSTFhbElrc09sQ1gxYmhZQmFoQWNzYTZjMWRlR05BLzRKNmEzc2hNdFZoUXZPVDdydTlYOG5DVWpkUGNzbVRHbGRMQlhjZ0dJRkkyVXpQY2FhdThTQkg0WkVtajlJYlg0NmpHQm9PMkQxWWtBS3pnSVJDbXM1QURxbnVRWnVhdHd6cW43Y2R2MmJEL1kwVGhmS1pCbWcyOXNiUWsyR3BnbS91NVpZUWZPZ0dMaFJuVzQzQ1RNVGtTVTI3VGJBRWY4QUxJN2doWVd1eVNPeHhNSEIyRmdtSTQzVkNCam1VQXhicUtVNUhZNEtjdmtnNFJmZmNiY3Nxcmk1YnhrekhCU0pqdkJJaE9HWTFwWmpTSElrQkxUOUlidGRnUUNHVzFFM3d3U3dPMGpvR1ByV2hZM0JDRUlHZElUZ1NCb3NqRnNpMDJqVzlNYkVabkpaNUFvZnYrT1BBTm1Cc3lzMENGcGUwWFBxZ2ttTmxGWFU1M1RTY2ptWmM1TWFSS3o1MVJMT24xVWZLT3pkUXZqTDBXTGJGVVZiZTRSQVhxQWQ0MXU2V0NzemEzYlhzTXdQQ0UzR2pZdlNZc2dTTkh2U0l3YjczUm1DZ1YyUkhFNk1ka05GQW4zWlNzTExDajBjK3VkYVVxOWRxRDhuczRvSUIzUWJ4Unc2eU5xZ2xEUnJteC9yNERoYnBmK0VJUWhab0NMY0xNMSsxT0s0MXNjWEZwbVFSMTRIb0w4YUJVang5cmFDd3BkMGEyQ29wWjRPbG1PMHBITHpXMlN1cTRySG5SclNrZlBIa2ZTcHJKd1FaOFNGNFd1b3JyVXcrRitGNG5SczJ1V2FiQnlZaVRianhUcHlLQWxrRmF4TUJkUmtQcFF5a0IwcUR2eTJTYmhRMTRKUnp3MHo2MHJ3UGdVMnlyVTRic1QzdTMwVlkweVdhTUc0UzNQYzRmY2dyUjBsRzRpanQ2aVUwVEtjWTZnd0V4ZlU2S1hNeXlNeklrb2swak0wc3V5aVFqMEJuTFdkR2pZVWpCcDIzb2VMY2Vxc0d5SU95RXdsZmk3OHd3bUQwdGRhbkl5UkM0TkJaQWFvY0VnTG1OcDh6NmNzTWF4YlN2a1lMc2JzWmRSOFhya1UyV0tRZlpNQ0tkcElkRkMzUnJGUXRNNENGOExaaE1MY2FRQ3piK3FBYmZSTExpbktieFRrcW51cnh3WGhhR29RSklmbUdhQlgwN040aVU4NkNhV0hKTzJMY3MwaVJabTdOSExkRktmNXZJTWN5alRrU2NRSWpPRFNTM1BJZGpNSTVReGM5dmNBMnZ3Qkg2bDZLYllleEVCWlpwaHk0V1ZiMDYzSzhVVVhzNWdQRlNOWUtad013alo4OWozL0FGMGRraXlvMCtGUUF5bVN6Um0zSlpvWmVvTWp1d0RCd29JNkZpTlhKNzNWL0VNTkJqbElJVy9GSUFMandMRFlIYVdaVG15VmR4bG9xUmxXYWJ6dnF0eVBqdEdPQmVCOVZYMmVGOFBDUUIzUm95T00wRDJCdUp5d1hmM3NURU92SWhBbUdibTZxU1JadHRVcnN2ck5iaE4rZ1R2b1EwN0dlQUppQ0YzeXlRV3FUYmUyZHdrZkNLeEpPUlVzNEZnWWh5b3NlUFViYnVmdDdRaHBqcU85WFVISm1xLzMxK2owdzdIeXF5MzhRdnFiQzBFQkFrWmYrZjBsc0tDaFcrOWdDT1NKRy9VMkFtWWZLQ3dTWVdUclBOc05vY29pbmNJODFqZUd2a1NBcXdjWUNrTVFoQ0drWSs3OUFTTXpaUWlLSnJVMXRTeWFtV0MrUndWRVF5MnVXV3oxRkVldVkwcU1JWFhxanpPOVppN0x4bHAwUGtTeVE2NkY1TmdUQ0V5UWtZY2lKVmZnR1V6R2crdjhueUJ6anhJbVU0OE5NT3dVc3YwOFhydGR2MWh1dDB3dmV1Nm5OaHVSK2dRYnZPMXQ2ZHNlWnJiSzRoMXlFbEs5UldyTlFPbGlEZVNQbCtTSVRDdG5DamhrdHVuMERBQzhEREFabkJrS0F2c0N2RlJrbDRnQjljNm5CN3VVUi82aWxCS09GMTN6czJEOXNGOXk0dEJZZjZxZGJab2hZOVByMk1ZU3JZc1pOS1dqS3kybTNFRjZPTlZ0RW5vbExVdTJCOEM2RXE0bHAxMGNCNG9haXY2eFgxSjNiSnBrZGZQcWVzRjNDNGdSdThPMGpIa3pGVkZjUlJHRU5VU2JoSlZuOXVOdm9CSUdqTXB3bFhic2l2R1VxYVpYMW8zM0R0UmRqMEVGem1jN292cVFMc3BWU1lkY3RPRXAwdFJET0dwYVdoM3RSVUtaUmdHZHE0cUZDaE1HK3dINW1ock84L2F4ZGFKcDdnU2cxL0pUb3g3bGZMTzRJVTVLY3ZqY0kvV09HNWJGZ0YvWHRZMnI1emFYMlVHUFk2akd0RWdSSHVsNnR5OTRRd2FnN0JtMkhwS1E0M25ORllDaUhJTXN1c3l4N2FHbUc0MGJ6cXdRRXNnYUs2Z0RyU2ZFdHUyQzlQYU9uaHBFNXNicmtCWTNJOUpkbTlvMzFLM00xQTZsVkxaSTZiWkZ4VWpvV0VWT3RZOHUyU29qUVE0WUdWRm9sY0k2T1Jrb0xjd0FkbTRTb0pVa0V0a1dCVWFXWGNwSHUzb2p0RFBlVTVIa2RLZjJmNHUwM1FIeFE0YVZ3T2dLTkpyUndKQWRoQjNyODhvcG8vanpkeGpVWFVSMFJMcjVLdC9KWEE4YnA2b0h3N1JoSk02NU92U0pXMFlXc2hZTUkxZ2NvT2taQ1kyNDN5S29rWDY0b1lFUENGWCtzU1pweGdnZzV3Z0Y4cGhWdWJPc2hGU1RtNXdvY21wcTBKNmg1Tm5sd1pPaWpZRFlkb2ZaNVJFNFdTMUJpVVhqOUpvc3lsN0ZncVRsb0I5cHA3WFg2RWRwbElrTG5pbHZXUjJWWWxiMTNWRHNIOTNKTEZUUzk2OWtuRmtIZkFaT3FaSUhhZnVaRGlpK0d0NW1YcmdTYTJtSkUwU2FzOWxDK2JpRFZ4dCt4eE5JdCtuN0MwV1FTdVVXMjlBbTJPU1hJdUsyeW83ZlMrQlNRUGZreFFvVk1jSURDTW5RaitmVjUyUWl3V2wwbGxWQS9acDFPMVRKNS9TVHhoaVZXckpudHpQSWZWOFJnbkFZamdlQVZDL1loVjAvVWxXL282SzdTazZ3MVFiS2hTUW12TTRqc0p4V3hGdUZJMzFoTVB6a2cxM3Z4R2k5aElGaUFiMlc4a2VhbnRrWjBpbnhMSHpZYlhSVko4bmhhb0tOeDNad0hObXU3dDYyZzU3MEhzaW80NTFkbWtYaVRpT0JnUmhHdDZJdDBKWjNlU0xzRG5OR0xiZXU1U1ZiU0dIbzNJNExHMm03WUdQeDh3NGNlQVdiSktPQ1ZibkZUc3FoeE93SVk0ZkEySDBZeHZ3bXhsZTlrYzJWaHM5VzJ0UTZxcmhSK1pXNXZaUlVOUjBvQnpka2FMaGlaK0tzamtpeXNqdWxkTXB2em9yQVM5OUI0NTVFZ3lLb2l3ZHczR2NuR3IxZHVDMlk2U2NoSnQ1T0R6QmtkbTd4T2tGUFlGMEVobnNFREc4SktkUCtVUVJ2azVzcXkzTDZzNmhKUWh4OVkzdEpMMk9CV2U1L1FwTG1sQ05Ob3BORUc0WXNzTlJzaS9EZHRYZk90anlJQmlvR1c3dENiWHRteCtjclhJNWNtQ1djMGZJYmlteXdZSFNYenVGN1FONnhoTnludDI5MnA4WDczSmhLMmhVUFhiM3ZBZFJMQW1iY0xHVmdBeGJpclpsK1llK3AyYTlUS09pNzZqNDJrV2h2NDdaa3pwNWl2ZkxmazVVR0E5OE1VR1BFV1o2SG03QVpYd2xzdElsN2k0WGNDdm9VN0hDWHhrSHhxd2ZyNlBTMXpyNENySXdaMFE3RlFrdTIzOHZRMWE4WUx1MjYrcldoYWpNdy94ZGFlSUhjUndyaGtQL0QyL3ZzZVE2MEhNSlBrM3Y2YzFTRkozb3JXaDJ0S0wzL3VtYnlicmYzek1kTVM1bWV1N3FSbFdKSXBNQXpqbElBRWtHaW5MenhsRldtR2dsSHJFWGhxbjNiUWxkMThjQko4YTJLMEdBS09tODdPSSt0Z0NTWjNrWVNGYlBIYUl1T2Y5VlUrdGw3enRTaytIRlZoV3RRamRyUDM1eE5ZeE1vbHJzNkV2L1o3V2N6WXRKMFAzV0FUU1RKSW43L1lydVRsVGMxdHUxeTNJSjlqOXFSS1h3bzQ0RitpbS81aVVVbytXcUZoaEM4WDlaRDlzbW1BYWpLTjJxb3JNaHJBMGtDZFhKdlE1RTBQdU5EVmVlajhOdytYcHBlSXBDa2dIMXc4NnVLSXlLZnJsdkxLaEU3ditYZXRScDJyWUNiOUN0blJRY240QlJ3c21QZFNlRFpxdWxiOU5sdWtnNDJOZ1B0RU4yK1FuN2FwRE1yd2tGZWJ0K2ZVOG1MTVAwb2g1N3hNU0tzaFZFTjJodFczTE9SaEZCTDhaR0h0V1ZueS9oZ0lQeGZ1YjJRSkMyN2ZDUklFbFljcjZ2cEFEc2l0VzRsY2JqVTYrV0JGbEJ0Q01qaDFXR1F3cTNvMmphK0hXN3NNUUlXdUVkN3NrOERjVW9xcUhidkxvSllEQys0d0FQSm01T2MwV3g0bisvTTZ4cE5BeEFzQkNrTlN4OVNMSzVKSm0yZk1rb0VrVTNFMHd2K3BCY0ovWkdoNlFrNlh6ZXVIcUttd2FpRkZIbzA4MThPK002QVYybTVwN1BZUkZKcHV2a1hOcG5DRVlVUFMvSzFtK3o5NEViRWZZT0NRaHlpNlBQOTIvSDZTYnA5SUZCTzZLbHIzZjBMNUJqQjRYY012bVljRkxaOTVWZXIycmJmQU4zVHorQ01tcllIRm9rV1lwZ2N2ckRSRVljeCtCaTdSMWpjbjVCZ1VQUXgzVTFYSG9xSkxwbEZNcEJHTmFuREh0bDk4ODFqcUxtWHpYMkN5YWlOd0FsOEhtZWVFZVByd282eHhqTUFDTDNKd01kZjdTK1VmVWY5Tk93R2lZZGhpbG02TloybEpyM1Z0Um93b0V2Um81T0pEN1hYWGVaRnlUNDFDOVZzMnZOT0I5SGcwbXB5a2ZqNFdXYTREQitYRm9zNFY5N3J3amZObWtmRzBUOGVkNTNEbUo3QitnR1NINWhmZVlFSkprL0F5R2c0UTdYSVBkMm52VFdOQUJnczF3MWNxdlQ0b3ZFUjVlQzczOW9sOVVFVHltUGhIMVV1UjZnbDMzSG1iZUNvbm1oV24vci9hRmN5akJpaHpFU3Uwc2hDRysrcEsrbGFRSlJ0MmcvRDJLYUs5SkVnVW1FeWwrTEZGT3MwYTJDa241b3NMcnVabStNNG5nWjJ1dENrZmpwSHlKMG9mOE9RL1B0ZWNzMHVKdENrVEY1aXdSbGtiUHkyV0kwYnJ4WkkwZnZVRVdXRTJUczRkQVNCeksrQ2ZaTzYrT2pLcVFrYSswTDV5V2xCZnkwOXYwb0RNUDE1akRuV0FKekcwZUN6Z2lESlRaeU1veHUwRzhoc2Yrby91YnVSVGxrZkVlZENPSnEyTExjR2o3ZjdFcWs2Z3ZEanRiRW8wQURBaG1VUTBDYjl1QUdSWEswZE1jVWxBS1NJM3VSREZMR1Iwb0Y4M2RCVWQrTHFZZjlHUFJnckg1RlY5ZEZSSXF4M1A5azRmcnlWSFhIZVlYOS9XYmtuMEkvdWpVbVVSa0k0SnUxVTh0VVVTR3hGYjV4SzVML0YzMEJMME4rWTdaYk1tOGIzZlhxZjErWlhnRExsejdmcnhsTWFmbGRuREhRUHBEMENTOW9IMXVIVCt2a3N2RWZudER2ejdtc1ZiaG1hWW9RYll0Z2hKelpSeElPYjNrVzd2dEZ3MDQwRVAyclNEN2lDLzVTSVNnY3kyaFpETWtsTFFMRHY4UDFCdjdvbTd0UldFZkpONDEwZ2ZkVkFvbWY3MVQ2Wk1xdGtaV0MyVjcrZlVaOEw0MG1tb2hYRkZic3RyVGRQRHZNbzhTSVM5c1cvNk42T3prLzhvYklzWGhlMnZUK2QwVXBFTXF5LzUrdnVMZWFaRW1nY1BRSS80dmU2Wm0yNmZ4MlZkZmtTTmt3aGN1d1l6L1RYbkh4Sm5TWTUyMUxHZzQ4T2lHZm1YWWhoK3JZVGcxRHNTMnliQk1hOHhlL1c3YzgvNnVEZ1AvL3VJT0FVVzdKc2lmR1dhYXFIWVlEMFRUT0dPdExRVlNqeEJXT2liYldDMDBLNHZhc1BnWTZWZGVOR0l1YjNiOFpzeFBPZkFQWFVCYUdtZk5LdjlpSUYvaXNLTlA1YTMzbGxIT1BDamw3cVZQUkM3YzhUZkZNeE9rV2lrUFQ2dXRRT0ZYTE5Vb04wdlFzeXdoY0FNbERCbkpKVnRjTGVsd1crcy9MUVlJaWhTWWUwQXZHNERpSW1sR05HanFuZ1lwRzdHN09qcUp0akJwNTJOTkwxNEhjaVd5dXNnV0ZueUF5cENKTGw2WnB5cFM4RGUxS2dML1NWd2ZRVXN6VzdTWlZKR2xTeUZPMUlIL3hRVE5JYnpBMFIzUldpaUNJdzlrNGxnQWR4a04vOWtSWTJRY09tWVJiZlY0QUNnQjQ1WVo4QW5abWxvazRUMTdUTmozWnhvcWhqVXN5ZlhCZms2NFlMOWdMaWx2VmdEdEQwd0lhMmxsaWdVbFJaK2gwV0laY1I4UTdPRVY1cDJGZkNBVlJsUVlPaE05ZkNxY3ZFa1hjb3M3d0tzZk9WNnc5RUhYQ1hsUlZUcXFMU1dYbStsR0p5SEpMR1ZDS1llQ25jeXRneXBvNTNHRkpQR1FHOGVBa2NORStiQ0pVeG9jU1FSRkZ0bWdmM0IwSUVhY1hsZkM3NFhGNjdETHhHVnczR1NEMnIrc1dFN2VtYWlkYXVWOFRXQW04Slc4SWppY1NPMklvU2o4T3lHS2N5SEV3eW9tVkZvb2JIUlZBWCs1U1FSWGFmWWNQbE1pYkFvQi9zQ20wTS82OEE2Y2xzQTJZbHJLaFoyRVBNcjNUL1g2Qm1zaDlKOXRPVUFLR1gzaU9FTGRRcEl6cDVuTWdUVDgvOHJ4VmlBWSt6c1RXWS8rT1ZoZ0dvVkVlcHlsTkM5b2tEZnd6UVFpYkIxYncwVHJ3SGFBUDhIK2xKVDJRaUpuRXRxYVpaQW9NcXFRa1BTTmEvSnlRdWsvUlhnVTdCZzFmdk1HbnpJUWpJeWowVC8zeVN5bTN3dnhhbEhIdmlWN1RWQ09BRVdoSW8yeG9XckFoeUs4OStsV3NGWFlkTkJMaUFjZXdUWHdQWlU0cG1FNXMrZzJYQ0RCMG4wbXpsNGdXSUNuRiswbGY2OGprT0VlUm9GOFlLMFFYcXMvZ09PZk04N3hueDZtMDc2L1FHcXpIVUVpam0xdEhRSE84RlZvTFNBWkRSeFRhSXVkWjV0TXJqZmFGOWpMSFFTNzdwa0JURFgrYm9takxDcHZYdFdJYXdjTVFGRDB1K0V2VHRPTis4NVdsUmFRQWszL1VYYisrd3pTMVgyUXJpd2ExMDVBaWJsVFl5aUJieCtFci9sZGt5eU1mc0FBbmFwL3hVSVRYZHAwWDhtKy9POVRXdHl3ckJSV1I1bVZqb1E5Nm1Ia1pIUy84UnZBSEx6TkQ2YjdMVmdkWVcvL29EQmR0OEdLMmZIdUxpN1o4NFBicHN4RVJnUU92QnJSUjNhRjJUQnhtRVFyanBkR0FCb25HYjd3cHQ5TW5uOVR1b3VOVG4zTDkvVFhhMkJlVzA5ZVUrVW5JUmgxcUsremRUL3lWLy9YQnlQaUxJMUNaZDZWMitXYTVMdTRsUmFaa1RjSHZ2cUFvRnZyRFZ3QUkxMzl5M0RuZ3lDSnNqRHVxYXRWTGdOamthK1Fwald4YUhHZk4vcU9ic0hUbVRKWmZzMkVwNTJqTEF1Y2Q4OTZIdUhuZlh1dWRud0lCNTgyRGNFWmJOSkhrSTRWajI2c2ErZkIxRXZySGRRblI0TjZpamp0eXlIa1IveFpndXkxczY3WUNlelVaZlRrTFZ3cVhUZHEycy9NejRDMEpMWHUwOHZIRitNZFAxc0x6ZXVVY3IrSmEzYk8xZUwzNTlDQ3gvSXViOTJsODZnQlA4ODlMekhCVEh0UnY5SlU1K0QzZVgrQWVaOWxhRDZIYUMxZ09KNjRRbzlYN2ZtbGxlaHJIMWRYclVFbGRxL0wraHBxOENueTdPUlNzM2F5Q1JQZlpHemFqc2tzS1JmRTRGOG56WGswNW92U1F1dUJhR0dpQWhzQXZjbDFLbXgwTW91RUhJMG41bDhkYXlheisyRlFwMk5FOXZJR3JMWGRjT2FueE9WbE9PYkZsaFpRR3ZwSlc1dEhQUEJkRmxzUjk1YWw0aDk5UUthMG82RXJKbHhxa0ZhK0JSVisvT2wxK0pzRmJZU2NqNm83RDhHRWJXRnp2T2Fub1cyOGFKb1NxUDJURmJnb0cxZlBtQjRkNWJwYlkrUnpRRStoTndzazh6NXROL2RTWlNyUUlTdnJoMDBXazB1ekhCdWtwVUo5N1dNVU9ZbDVtZGdiZEFtUGhsUlVSaEpxUVgva1pnTkJoYUt3QnRwOFlpakRkeGFFdGxhZCtUUU1USlloY2ZoU0lta2M1OGxqbjJ4SW44TzNOVDdjL1NEQi90RndvLyt4T01DTFNURTNsVWR6dE9HbWtzdjM2VW1pUFpkMDBNUnlBT0gzTG5DU0NQYmZPaEt3ZWZHY1JLQ0J4Vk1ZV3RiQTZGUGptWlF5aFpNaUUvc1hQYjZTaXVLUnNUZG9JUXVkUngvc3g4NnNTY1JkdGZkTlY4RXhmOHFUdWtOSjBhbzJLcEdpQWs4YUR5SGYxZHA1Q3Rxd1FXeUp2dEFQTDhzbkRDVGRTWHo4S0ZUNHdrQXJHeXpTNkNTTDBRa21vSEhHSVFEaEpRM0pGWXpIQWsyamFBRHZGTTlsZ21hakFUS1R0M0p3Z3dDaTRQSGNiQkptaXFXNGpJR01tQXhmY3I4cUNiakU2YVNGTzRqQmxldUJWZkhLd1MvUkc3NitkakpReTdEWURlZG1PSms4Z0o3OXNnM0diY1p4MDM2bVpJVEFSbmhxdnNWNXdyVGtPaWhwSlpMT0YzSlhVUGZOc0hEbi9sTEJkTzlCSGV4ZVhvU2VWZU56STVKSDBzNTlMeThEbnBDNjArYzhyMkkyc2R5TTlzQkpZMVVLLzVuSThTU2dVV0x2KzRCUDhDUU5nN0k4eTczZ2VuOElRcDFNOGZ1QVFNUDdMaVFVeG0vekg5V2dMb0VxQkN4MHZmVCtjRzY5Z0s1bkhyTmlES2ZXamFNOEdSd2xyc21wdllISTFMejNOSWhuNHRMNStoallJNC81VzJrWFZuS2lUYWZ6eVNrWlAxV0JnMnNGbE9CZXJEVWFPa0pYOUtqR1NwZU91Q2pIR2tHOSsrc0VodUIrV2hwcnB5dXI0UXRqeWgyT0F0YmRmWXJEdnY0YUd3ZGN0MFczSDRNY1VZZXNqUVRGcEdtdGltdzkxMFhLNDVJZndjYXcxMFZkbkNMOTlWV3l0ZDR0eDFGeUVqclhvK1Z5ZEJrRC9FTnRKV1Nib3hISVNtQnV4bDU2ZXhWSWYzOEh0SFZjZTcxRHRpUElkQ0VWQ2ZJdnUwTTYycEpZREgwaFBiNkpMU1A5enJQejhMdXRwYVRRQkF3eW5tdHY2aENvR3UxVVREcUViYSttYmpUR29pUnpHVHNSMytQdjErWjNIREREQWtlL0lFK0N3eWhuNThwcVhyb3k4Y3YyK3J2UncxTzRGYTdjSnhSNVNveEtsbjFLeE1lRFY1SGxOVnpoR1RXZjVHZHozUUF5MEJiRFFrQTBZZHpHUXB4N3lDN2oxUEsvWExkV0VKem1SRWlTZERFMWVTSnUvcGlSRkxuQVNlUlo1a3RDcUYzOXFHR2cxU3Zhay9RU3l1VlY3NFpVbzFWdlpCcU80aVBJUVdOOG9VMHRyM3pId0Q5endRRzQ0OUtyY3pQd0todE1MeDQ0YW1QTlNWbFYwWHU2QUtvTm9pQ3ErdHc0QUJYcXFyd3FXN2Jlc3VwQi9zMVBIdWJVSWExY3ViTUQ5Vjgxc2hxWW9UcXpVUzE5clcwVkF2dkYrdEF5WGtNMmc1a1RWTzVxL2tJYjRTV3VTMC9LTi8vWjBmaklvVUxkbkY2Ly90ZGVzR2VOeGdzelpRZDNpcmpUWUM1MEhtc3VyOWVQRVRlWmwxekxuMitRZ1NCanVyVjFKRldRNFlzUC9ObHhRcHcrWEIyZDBtT2JxOXBZb2lpMlEvODJBdEo1YmZrL3NKYm9vWnNIN2tUdUozTXAzVk5sUWMxMG1ZUEFyam01SDJreVppb0lsYkxUYjNBMllKTDI2QjlObytKVHFYYndxSXFRUEF4L1ByQktOY1pkR1JBL2FKYi95YjQwUGQ4b3ZxMVRzOU8xZ282L0lncjRXd3FwdE53REdUQk11VFJpVG9hcmpoZ09VRkRnTTk5Q3R2bnphQkZzc2F1UWpxNkFiVVVSUWVvOEdaYURNbFMwU0pnVVZ3QXdhYWYxWlVZeFB5a1NXNEUzbFgzQ2pJeFhxYURScmlOOFJlSU9OQVdHdDdnTWtoWjdGZVhuSEVHTEFMNitxOUtKaElmUlNPa3MvZ0xjYW9SRnF2R0FPWkxPYWVmWml4ZXRGbXZLUDZZN2kyMEZFV3l0VTM2VnljT04rL1ZyTDRHd0drTEYxVVFCWXNoNi9TblE4UlJGY0s4K2ttS3NxOE9LOHIvQzJKVHNtbGpITDZScW5FbnVJY1dZM25FMFU5TCtqQm02QXQyM3dVR1htY3E0Q0VMSEs2cW9Fd1RDSFFlQTZpL3Y5RHdPWHg0WVdadU5jeVFWUU9RcW5GWlovU1lnS3FINitockFZcUdleTlnamVObGxHa3hpMStqUGdZNHhPMUtlUDJmR3Avd0NITktoM0VucGNjMno5K1pIUTNmWFcyR0pnL0E2azV3a1QzVlBwc3RBNEFVUnJFS2J5dTNOcmJBM2NlY1JCWGNZejVQVlBYbEFNT0tlTW1mQ3c3ZjFYV1lISUU0TDcyZk1mZkw2RGViWnkxQmNhb2hjOC90UEdxOWlYY1dXMy8zZjdZSGtQQzZxMmlaK1pmOWtUL1ErN0hSSDc0UWtSZThndFBHZjZTOE5tWXZtR3E2Z2p3K0ljWUIrNDlDQ1g4TjZxTzlZY3N4UzIzQ1VtekRsNUpXajQ3ZFhnRWNNa0Y0V29Bb3RNRHdZTGdNR2srK0ZvTmlUR2FoZnA5U1ozRlU4M3dDYVJNRVZ2VGlNTVFkS09uNkdwdVl6UXhIeE9ublByNTl3a3dDMTFuUjhSVTVzU0tvSGx4QTZzZzErMkhQK2dNWWVDMmlRWXhray9WMUVzRTdVMnUycEVPaUNvN2doWFlRMlF6QXFINUtPN2Jadjd5Vm8zRFZYaU9la3pMOHJmbkFxQ0hmb3J5ME9STWZ4Q1FlZ2RxNzRKK2tlTGdTbjVwQzQ2ek1iU0drT1NVK2ZIR2pkZXVpRlVNVlZLcHFlYUxTT2pnRWMvMlJWWGdHRHB4eUJMMno2YmFkSkxyckljUkVScW5qY04yS0VNQ3YwWllOT2I3TTh0V1piSEFOd3p0NWsyeUEyRHF1STcrbEdrZ3FJTnJHZHdyM2NBNWRuZkQ2eG8zMUl0algrNEVKeDV3cTlybG5rUlhOcmtvQm5HS0FERkpEQW9VTVBhTDBteUQ2Ti84bEdmWk4xMjlxcEpqcGZxSW82dXI5dE15NTlXZXlWWkpyTzFBYys1WnV5OHNaRllRQ0VQMUtKVDJOQjRvaXB4UEZ4c21YOUl3aG9HandPOFF3MUdodXFiNEJ5REtpdWZNUHozL0J0UnFJZnBnWUd2REtJdWI2Q1ZBTG95MUhWZDUvVFp2VURyNDV6R2lsd2N4R1hFdnBUSlFvLzVIei9mS2x0bWdHOFZXUlBmN0ZCOGVpVDFyeThYRnZVOWxVYWVkQ1RIYjc3N3Y2TFgrOHUzblViMXJKdDJWaVZHL3o2TDk2NThsS1ZsdGlmM2liNW5YMFd1ODZNeXpJZzhPY2pkZ2FmZnpuaEwvQ3hOTHpOcVNZTFhnd3o2QWU1cjVGbVNwWEt2cFZWOUZPa0xnNnh4Rm9ZWXFmMUEwWHcveGp0NU1zSCtmdWY4ek45K1dSR1JReUhaTVFyL2tXZ0ttMnNvZEp3Z1l2VHVtakhxcEs0VkMxcDhTdG9kWDFDeU9sQ3R6K0syQlVhcUM1YU1ZRUVRRTFOSG9VOHBjb3Y0UTZqODYxWUJoRytJUWNJRnVuNUlkVm1hSnNvcEdYU3Q3RHpGZHlEMEVRVElmQnRBM2l4TTlwazlIUi9ldXJUMTFHNXd2NnRzNjFqSWx3UGFQMWJUVzhCR2F0ZXBWaExLbjZIK0hwWDNCb2FpNHF1cXorWmRoUExFcTlnM3gwTVZQbDVmTEd6RXJmTjYrdWo2NE9nSDZBSVpya3BZZWlodndvU0E0SlpTRFlPUThYK2IwNlNjZ0cxb1Y1ZDNoNE5LQXVnYkZPMkc2VEhQRVduRXp4VkJCWkpncjBxYUtOUVJGZXVtWXBBL0sxZm5DNFNYek1ta1hDbTJRS24wRHNUclIyREJEeDI2eExBbnhhcm1lRlpJUmVBK0hRN1NhZnorTk0zOFc0dEJVOVBhMVlzcENrOWFSeW1vYXJkYytkM0VEZnFKWEJickRrd1I0dnhUY0ZwUklGRHJCVDRwRGI5ZkE3Qjhtc3BGMUVTUmZnNU13UGJGc1c0VkZROXlleFhVcHFvUzhjZXE2bzc3L2ViVmxYYVcrRkhFU0VvU25MQWRpdWk2N3BKWElFSTNCUU1YejhuSlZpbG9yMms4YnRLYVVON09OS0Q4cW8zU0lDSGFSNFl5ZjNqSGxkT1cvMC85byt6bHFRL0ZkTDY0aVVXb3FuQXZiV2VsTzdZRFdzYUUwQXhaNGZnVmQ3UUg2aWJORWZiN2thZUpHcllybDcrNHQxak9pd2hyMHZ0WTM1cmFOdlpkN2toYitBZTI1VzZNaExBbW5JeGJUbDNYalhtWWtqUmRFbzE0QWJqamtYQXBrN2xNekhSc3JORzB5Y3N2SzN6K0NmWGdZbEpSR3BYWjEwU0Fvc29QS0NtT004Qk5aN3MvZUNsT1NYNWc4ekxFZCs4ZGo5WUJGd0xvQ0tKUFdyR0xwUDJyeEdtTUZCR0g3ZU5WTGJPZkI5R0IwaEQ1QXhGam1oRDVlRERQQ053OFNpY1Ziek1BVmdhVENsVktxMjBPRW5ZdnRLbmNwRlhrTjIydVZENEFteHk2Z0ZJV3d5TmV5eFowNGkwTTIvYlg0U0c4Q3VCaXRVcWc5bUJNbVJBZVBkWmlBK01zbjVJblVjTjRLdCtpSGlSRmV5eUt4REhCQVpXQW5qS2o4NDhBL0xaSkZPZzR4UEh5d29CTmJncEtTK0JZR1Q1RmlQTTRpc2tLZXlEa1lsQjRobUxnTlpGc0kwUGxpN3hKODRkMFRta3lIdEtKS2NVUlZPWWR2MGxyVG1JNEptTThiQlNQcHZQcHlEdGhFejhWRHdUQmYzWm0xblFCOGZ3UFlyOFZyVHFvcFJ0YlhiOHAxd2pkVVNmZlUwQ0JiNHl6MSt0Sko1eGdIb0lnNHR4Z3I1ODh2em5CTmUvWFpadWRMaCtiTDduYnZJV3R5ZVh5cUVvdTE2aTBRMEh4ZFRRSDJ2NjMvMlR2UEYvR29nWDRSS0wxc2c4aWtZU3ZqcUlvZlY4SnVWK21LMTBiVVJMamlvZ1BaYWdmQXp5UzR4SyszWXJrdm1xbkUxbWt6L0M3d0NZd3g0MW40SnA3aGlOKyt0aks4TEtncEs4SUFndFlGdmdwbUxtNTRvYWpqWlpwQ2dET1J0WVhZQ01ETWc5blBXcS9JUzgzU2lFSEVUR3BEbjIvN1JTcWJFZi9wUlR0cXR0bEVlYjZTVGdkSG9oaU0yYTRzVWQzeDJFVTlaNnFZYlM5MzM0SlFSUkdSZzc4RXF2OTFTT1l3YnFRU1dJWkpoR1JHQXlYY2lEV0dMRjVFMUZDSy9QOWRpUmhtbEtlVmk0VEFVbTNQRythU3U3OHJSTU4vZXR3Nkl1V3JYMUpRY1JxSXk4SzRyMjAwaUlydzlOOWw5NmNCNW82T1pyRGMrM3RRSEM3dnMycGNqbVc1SXNiUG53dlVHMXJFSW9DNW9OYmZlbjZkNkVueGZlODRxRVRISFdLUGNNbUlOc2p5SXdtWkF4VElaYmlJUlVOelpXblBkWVAvbFRZRXlVSmxVMDZzQ1ZyaVNJNUU3TGZMSmxaMW1sd2h5SGYxaFZFOG5XR2p3Q2ViK2IreE1VRG9hNFN1aVphYng4K3c5ajhicDNiOUFPTTN6UTRrbjNQa21kMlBvSXFtT3ZoUEFMTkJEd09OOFdEVmo2enFzQ29NMUxSL2pJaldJMTBGQVIzcUcvUXJVR0FvRXJuS01nUnpCbXlhZEpncXM4d2RqSGpvcVRaVDVaMjhNNkxXR3o3WU9UQzZ4UkpoSVJ6VnVCMU1UaFkwbWRLa0JTakRvYkY5UHh3N3Q1RmNiUWNTUEVtLzVlNCtrNU85amJ1bzRpS2NwSDZwWHYvM0xmNnBwYmdORS9HTWE0RFpUZlpJRWhWWDVzQ2RHMnpiU200ZE92SmFRTWVPZUlGalhPQmw3Mk4ybU1CV2NBdEp5L3lMMVFKR1VLK1p6engrK0VHeVdwcTBxY2dtTUlCU0ljazdUMFYxNzhucDZVZTRHWnRvMTQ3ZzFMVzh4S2x0N3RzVW83S1hZUUx4WTVoVDlZSnpBMW5QR2xWclErOGlWZVNhYUVQSWpaRVFXRVlmWVhkZjdvRmdEeDVEKzc0Yy9mUENJcVJHYnNQSWplV3k0L05qTTBvVGE3WVRSam1zOUpocGFMVVNhOVA5cjdFbjNLQTZHVkdQTk1zSEdacitmdFdraUhnM1pDVXVTVFQycEVpRjRVRlNHNEJYUEo0cDh2NENvWlBqQUY0ekdNQ2ljbkMyZ29ZZ3RPdlg3U2VuM3dYN3JoMDh3TVljeVM4VkhOQTB0N1NMYzI5cW1OZ0RCWktrb1JEQ0lKS1FneTFaWHVNL1dLK3RsVmc0enhsZFMwbTZVS2xnMDBiU1VlbFRSUE9KUmZRZW9DbWhPZjVoUVdDTVBYaGZtSUMvY0FDN05BRlFTaHFWUm1GWTAwb2J0ZVpLSXh4OWYya0tPUElza3pCYVV6NnE1VVZwWXVVYnA1WmlUVjRHVXhWZ0dQLytNelpuaG83NHc0YUx3cWoxUGQrd1VBYkNHT1U1OU93N3k4eFo1Tk5XWENxN1lTcVRENHdCVDVQdnNnRDZoRTR6NFhXWW45djFoRWJWWCtCYTNuVkFqTmRTQlRGK0VQa2I0dEtkSXFPNk5PNGJNRG5abGQraXlDSEY3NnMwWDVWVUR3Q2NmNVVGQU9JZ045VWNGVW9TaHB2TFVZUDV4by9razNDNk9telFHSEp3ek9kamRmK01jV2I1Y1JvNDlTU3NIM2VCb1BsZ0cweENHR2lhZXhldTRFYUI5TzJLSVFnQWFDVE5VQjc4RDBEU1c1R3ZzMUNacXQ1VlpIamFMeVhHSVVkbzYrb2FIaGIwTVN1QmJDcUp3NkFYZW5JYjMwWmpjRi9wMXNlL05CcE1qUUc5U2NxSWU4TFRYR1dMZk1PMzRnR1RlZjVnMWR6c1RiaURFeWFwZzgyVjNOc0lsbnF2WUtDYmNZbVoxclROTUFlK2FwMThzOVE2R2VWLzJiTWRuQnQzUi9TeUNtSUN4SU04dnRFRUhGN3orUUhyQlgrdHd2Q1M5Nk92R1dsNE9adE94M1Fma1Q2OUs4elIrQzE5RE1SSHcwaVhkZUMrWXl3bVAxK20xWDBjUlFiTDlid1JWMEVWU0FJNmNQRlFuL0Z3czBiYnVjb0lJMjhEb1BCV0VxRzl4eGZ6MnNLWXJ6enlBK3FYYk5vQkhITGNuWmYrd0IzdU83WVJvdFRuT1NmZFNlc0tDNmd1aGJuSk0vZzB5Uyt5dE5hV0JKRHpoWjBHaWdzaUF5WXExUVkxRysxWVNRUzFiNnNVQjNEZkFxTHpLNlZoTUxBRS9LVjlpUjZ0MXlZSEFmN1NoS09jM20vYklYaiszNnAvWUFjZCtPWS9CMm5OSm9mWlJZTHVPbmFMNGlPQXRyMWJ5bk5rcmJGS1Btai9KQ0QrNERMc2FRNFpqVzBJMUZlN2djL0NObEhtNjBSMlBRUXFXRW9wQytRdE9FTDY4QXlYSTJXN21oTjFpWGYzMlpaaDVES2RNTjNYVXBpbUFOS3VnN29vVFZtU1p5OGhXRTFZWUVDQzZMZ2pFSEl3bm8raHNWdzMxRWx6blRpMFkyZlg0NlRpRWo2S3M5UHlBVUJCTVA3ZnZwdWRjM0d5UkF5cU9jY0Z4UGdFTCtudmFkaWhxdHFyZ01iWDNCUEJ6MStEaXJnRHk1QWUvM3oxUUVMcUVQaEJzYmJXOExraGtwckI5cEdCQWtCUHR5T1ptMUhESCtTVklSeVkyNlU2aEg0VlhJRVpwNGJsQmlBUVVBRFVMenJzaUFrQnViR0FyY2FaR1hBR1ZXNjFSYitWU3Fxbk9jM1V0eXNiQ0lucDRXblhWd3lZMTNCM2k3MlZhOTlFVVgvQzlXc2x3WkIzYURFdGdoTjMydWljUmFoOWxlc3kweURDTTB2TU5YZmRpM21lMnVUL1IzTVczYlpvRDJLcCtrdGFia0RyMHBRbXlvNnJQR0ZiNkhBWXQ4N05NemR4Wkl4K1ViVGtjMzhuT3VGRHJkTktENXY1ajVXZS9WUE5ucUl1VVFoTTFTcWtGbHNKM29qUlF5MFNwbTdjZG9KRkxMUGdRcHE2K09pWDFVSWxUaURiNXhKSVdnWno0TGdOWnFKRENxRG40MEJqNjRsQkxrak1Wam5iTUsrajFQMjRQVUVyZnduK3p3bExtK2hjOHBnVzMzTFNWeHhEYkRjTHlmTXVIdzFzb3dITlZnZmNJckdFNittZ24xSzlrRUsrWk84MG9lZHZLS3pEbEJ3U1J3NDF5a3Q0OWxsUEVjNDlOWG1RZXpUZ01oQWo1akE0QzFYRFp5YTZzU0QyVUY2L3lvVUpPeEJ0b1dKM3FUMGlrSWwwcWhTU0QwSFQ2a1VhOUJpOVR3d1BNRk02U0RPbnkyazlFVk8yL2JMSGJJOFVDbWwxd0NoNU9NNHpva0tiWDBaZ204ZEZQcUhvbVJtdjBWbHBDSko4Z1loUWYwb3lyNERxYkZPWEtLRllZZzBGR1l1blh3THJJTFZkT1BVMVhyNVUvSDhHYjU1TGRtZUVvbUNwb0g0NXdSYmprTDc4d3VidHVPNnF0bytKWUVxYk56SnEwcnR1KzlYZGUxbWxwOXFydnNEclpIeDhIbU9hS1F0TmNaVmc4aldkUUVpd09GTm5OV1N6Q1pDUExvT3ZDM3p6K0tTVS92aEtNd0owdVdwcFVSdklGeG5rYUlrYVNjWSs4elNqSmROOUlzKzNUcTk1d2VsZWFYeERjTy8rVXBxc0s4VW56Zkk0cWxHcVJ1Y25Oc3hCcDUwdTVGTW0xUThBRHZ4dC9XV3ZERDQyd3d6OXJhdEg0bHhLb2FrU0lJSzN1bHRnSmVtNjZxYWpFODlQbjlBbFBzdEJ1dnJ1d3NkeDByRDF4eFlqL3ZUWFZlRTlZdFlvRnU1bEpTNFBCTkVZRGhJcm1YQmZCeHZxRWZvRVJDNjUrSDBQbFE1cERXdjN0WUNSV0gvb3ByUERUTXAzZExldkptZ3BwS3JJODByZmVyZlcraVE2MHRhWXJRMGJmWlVvem1YdEgxU0o2KzVhdmN0WjNiTks0dUEzZDdNcHNRMUhPVDhXdi9YekRXSzUwZ21DN1YxTzdOV0NlMWVja0RaZ3VrejhrWUx0QzZNRGtTTE5wazFtQURkMGVxQ04yQ0tNaHpIRlhXRG93K01ObDFBVVlveEdBZ21oRExYMStMZnpMcFpTSEgwYzBnRWV1dThNRUZ0b0NucFJuWG42aUNpN3krVGxrbmlEMGQ2VGtBam0rU3I3aEkzeGZvbXY2WTFid0JBdCtLOEJlNUdhMDl2bGc5YjRXQ3dRRTFqQjVoMENjV1doZWl1Y2RMVnJpUDJldksveWlsekxzWnFhS21YRExmcm5BbUtEbmp6ejg3N2h2Uys1ZWtNZDdRWHE0d3YzaWNFZlNUQ3NkSzhrek1yTDBjdEVpU0lmVzFibmcrY045aDZRbVZyc2dBWDVjbDJXK2R4VEN2NHNGZ3RlNE1xSkdiNTByWG9mejV3M1hKNGhad2xUaHZUcy9XNGtLQVF3NzN0OXJQTnVUQUFQRkZEK1NOL0c0ekRpSVh5TzYzalpWWWpuVUJTQmJ0VGkvTThpV21yT08wQ2hMQW9FbElIVUkvTTg0b2d5QzF2ZmRHNWZ6ckc2VElNb2FIWHV1eUJkcUpSaEFxYnBzek1ENUx3YWR6QWluWXo4QzNmdERpc1owc1BFaHp2ZjdHMDduMTdLdGhpU0xKTXpNc0VpcENPeU83QzVtVWZlaTUvUHZqVDhabnBhQW42WDVqejZPY0Y1NWhsWnNTdXk5QjBnT2xpMnZUeVhtd2VwdDNzTEdORXhjRHJLVW82SmhKRmVzVzJubWFuanNheloyeDA2bG9PVWl5dm1HZGZCQVFvbkVFTnNhK1ZzVm1IaFk5T0F4N0cwcWgzc0xmM1BKS0czbHBtVjRpMjFPMEtISmlmQ05oZE9rYm5sdFowZXhrU3RuREJaaWZaWW9McE9UQUhOOEZjRTNIdldSakt1SHFaYWpzeERDQkpCeFBuNHIxdm1JcFZDaDBnUWdEWlhPeUNQZ0s4REQ0WXhoaUx5Qm43bnFEQlNyaGhvUnI5Q2diS1hERGxsRmM4bUZsWWR3WUJrYmxYWnJBWGJIb3JkWUNsVm94bTd0NVlCN0YrOCt0ajBXUFZ4Q1oyaXB0VVhMRlgxMWdaa2VIdWpOVWRmQUFjL0ZKdUpSVk03dXh0UDgxVStvT01RaFNOanZ5Sngvb2hiZ3BHVVhDN2xBTlNMUnpadzAxWmdsR0tqQXFiL2VKUmxObDJWeXM1Tjg4QmtsNk1wOGtEVSthWjZyZFZiNUpYNnFZLytqMTh3VkYwdjU3TDBjTGNKOHFaelU3RVEzQWdnaEFBcHJvTGpDdENpOFVUeGc2c08yVEZWZFl3SHJJM2hFTFZiVFJscXZna2N4VVhBK1kwL1ZhcE8yV0dOZitKTTlucERtenNzZFZ3UitlQmFCbm4wNE1Ob2JxYXRLZkpCYjNGU3BCRVdTQ0c5anVONlZTTXhiZGVCZEFaS1lndllMOVVEWEJmMzN4Q1pqYml5QkxzaDlDaU1MK0pIREowbjZMRTNuRElFRHQwejNLQlEvWElLWEFJeW4rUUNQMng5Q3hRWGVQZm9VNkNwNTlJMFdEZUtlUG1heEkxQ2NaVHplOXBwbVkwY2F1V01BTGRsWXllRmEyZXljYm5HWjNyNkd0ZFo5UVJpejJzY3I2QmJoUzMxc3NSYVdQOHlrUWlBQkZtMDVmdDQ4Z3UxdmROR25SSWFXU0hYckZuc3ZWYjQzMHFSUlJsb3pKcDFuOHFQOWp0ZFYxVndjYjJDV0VjbUhqSnYwVUhGUlVNZXlXUG84WUtHTHhVc1N2U0dCSVZZT1NUQklwRHFLUElnc3c3S280emhBSnJEK2NzdzJQZnNkUk5DTXkweERxV1paMWNubzJpcFFZa3VjenYycnRHemRqRXFYek5WaDlNeFZMQnhtUVhaMHFwNS9nMjdLMEF2eTN5aktlSXZ3eEJpTk5CenVmcm1VVUszQndmdXNycC9JVkVpc2g5alp4cTYrbytLS2ZnS3hRWVF3cXZuUVpxNnpNcXJmWFFsU01sVnJybVd4RXM5dEdYOE5zT0xxeGt2aEZ1UHEvZVBOejIvV0s0S2FLZGExZUgzWC9UN0Q4S2xPcGZ6bHZOTlk0Z1ZQc3ZyQS9pcXFiSHNRQ3dpZnU0NjhSVm4xU0lraHBZZUpML0RtQ3VuTWltWmpWbDlaYjJTanVHTGlxVDlrNXFGRmQzL3EzalE4L0FjOWtxVWhWUlFRcVEzOVF5Yy92SWN3ek1UMzN4amNuQjNORTRRa1RuWVlVeHlpcFl0UVphRktRdkRocThMRE55aDUwR2laMjBOd0RtSkZnVnVJYWlxdHFEcU4xejdxcHltbXRscHd4UTRFRlUzVDNKLzA4ZEp1a0Y4RmRtSFdzTU53UURrZG8yY3lXZGIrYzlNdDIya25pU3JRdUxCbXBoS0tWTEtmV0ZEOEpjZ2xUbGxKczdSVThHQVJKMEFKOXNxaGZGOUhJMnNDSWVwbjlwN2lsdjBHSmt6Q29uV2VIOXRrVlJTWUtYNXVRZFFyaGFKQWFzTGc4NFRxaVRlTkhCNjdqSTZ5S3FqaUFKNlZSUFJrV2ZLcUFPSlVjaGVzSzZXTHpyS1MrekNyL3R0UFhSVjNxQU5ESFZrck9GLytUOUdCeDBpYmhocG1za3pyY2lRYVErQzYzMkVLNEZjWmc0SEszVkRvTmV3MnJ0STNpaTZqV3laVUd0cTV2L2h6TmN2MklMNXI4ZVFtTG16Q3VQQnRNNnhyM2gvZGExcE01Uk5kUHNJSEUzL2JOMzNTQ1k4ZERGZWU2TjNPRTB0Y0ltZUc1d1lyWEdSSGRoTi9PamQ0TXdTSTdJSFhqUkRtK2U2QUxhb2h5dzJxbFVGQkhYMmxocWxscVp5MXhYLy9SbFEwZlgzdi9nS2xBaWlxSE5IMDY5Zno1QjNCekp3LzlLMHBsakcrSHdUYjJseGZVcHF4ZXI5VnNLcjZxOVlBU2wxQ1c0WGp3SktRZnQyV0o2MUZvVVk2dDd3SFR3dzBBbUxIbmIxVmFlQ1E5ZWI0L1hSSHVISnFhRzNhVXBDSnRpTk5PaHFsOGUrQUorY1piVzdrdjhyOGN2V1hJL0lQb2p6SURKZnc3bFlzVmtNMmlhcEo5enJOK1ptRWlxaC9RRGp0VUJEdFNGVkVhYkpJUTExVlBIRWI3M3AyM3gzMkV5NXRjOEhWVEtRVGtJT0tUMURTZWNrY1lRMUpLNWRndlZvVE9tdFpyNHpLOThQYmhrcUpDcmprN2xVOXFoVUU2dzFYZC9BWjlPeDcxZW9CeFdWOUJqd2NjUFRNcFA0OHNtdkQrMzNDeVBLYTl2U0RNNytyc3dtd1dvWUlUMWFldnJzWk10cDAwVlBOWVoyUHRsTkZQN2l4MXkvNzBNU0xBY1EzUXY5V2NpSFFic1B0MmRwMlM3M3VTL25iOFNqeHFIYXJzazZWM2V4RWhTeU1zdkVldFhWYkljb3FlSmZ2UkJCMVVjK1V4WnlJNk9LR2pGYlQvanM4M2d4b0Rya3JsaW9DRDhwbXM4bFlYL1dpVHZCTCsrTHBMczJMMXk1UEVQZ3Vtdjd5TUdFaGtwY0VUSE5PQnFMN1h1SEg0ZDlNYnJmWE1BUnpJYlVtNEFkN0ZwazQxVHBPM0VMcHllVHVQUTMzdHFpN0NzN3RFbVRTVkJYMFVTSzZXWk9leU5uNjhGSTRVS2NOK2hQdExMMmlCU0JzOE5UaDVuTmppV3FjWkRrcThRRW1SMndrMGpxUHIzY3BKc0VKekQ3eGtDZ0t0R0l3Sk1uVTluNTU2cjhhRGZwQnVjOFpTNXhpWjIwWWJ1dzJSMXQzZGtiWFY4STF1ZDVkNkZRZjA0ZW0zc2hwcVFoNmY5OEFaZ1B2NVdDaGFZVjEzM0JmOVdyRWk3WkZqNEJKRmJEdVJZMkJoNEhaMVBwNzNkcTZVTGl5ZGl1WjBFMmFYL1oyQndnS3QyTEE2c1NQSkZVeUpaNkVDK0FaYnpaZVgwRG9saDJLazdXRFV2aWYzYitVRFc1b2d0V00zVW9WcHJrMFlKQ0orb0pqejZ2bTdyQ04xZ211WEpwaENocnU0MVFoY2diaGVER2RMMFJzS1NXNXgvSTJoaUQ3N2ZtT2VJZXFJODhFS0tUK3VxcW1NMlFYK3NnTFRDcjE2Zkl4dnhWUmZBUXdpS3dIZmtIWGZJQ29lRjZPaXhibGx2TE9rMmEzK3FadGo4M0RWMGVOL00rY29hNGNVdVJaaCsyUjQ2TTVSbTZiTXpwRTZRd0preFRBSTNNUHl1d09sZ1FVQlpJSkZnd01BZFl1ZktyVVk3ZWdqTXB1Ry9lczNlcE9KZnJnV01LQXBBVmwxdDlQeGI1TXhOdEc2Rk8zVFp6ZWZwbU1JZ1k5WGZDV1VvcG1Oc21PckZ0UlBrZjExZnZNRjFvN0N6R2ZtMllnd005SUF4akVZNzhBNHpodnY2d1NIOGFHanhmVi8yb0czbTV3NWpUUXRhMHgrTElmQUh0S1F6VTZiallQbU5WS25ydkd5NTk5djNqRllsczJDdk1TR1NTSnd1MG12YXhLTUxJTmU2YlQ0RGdNOTkvQncrcXpLQlNWUFhLMXdhNWU2OGlBT2tTNWhicVRiZDN1Wk9EUnIzWGNSYzBxSFpQQUYxTHJvOEFyempBNTBEK3pZNVNlL3JMNTliM0pKSGFIZUtZRmZwZ2orSFk2dnlXTHltRDdZKzlKak90Ump3eWxLWDdxVXNjNFZGZmRSQW5ZazF3UXRsaWNEQnd0Y1QwZTYvc24rVklWTnVEQ1R3V1JxeXRJUmlZQVhPMlM4WGtwUTNxdmgzcElXS2pUL1VmYXZTdFJUcGxIOVQxWEJOUUVGRDdMbi9tZkt1ekpIT01UUWRoamdNc3I5K2k4STNiUmR3YlRmeDdWS3VNdStkSjJzMmRJa29KZ2xTNXNPby9tNlhDMjZyU2dHcCs1QTVzcTV6R0VjWUNNSG5yM1BaQVl4RFphU0VVUmpPUmViTHpVOHFTOVo1dzI3bGZLQ1FDb3dDYXJlMmZNZm44U2pvSHhyb3FqK0I2T1dnSk1ucW12Tkd2eEdsOW56Zzk1R3MwRDdZVGtJeWx3VUpwMXFzVkdUOGFHZ01IVnc0WEsrRW94S1cwRzUxTFNZTFFtMEVXRkR5bW4vemtCWStUVlBQbE9DMXJjQk83VzErNkRjMldHVGVXdThWNTlDQmxXWkRERGlNU3VyOHM4cXVrbEMvREdzV3FpaDBxVi9aVlpSNzgzRnVMdEFBSXdqMkNVZllwY1lnc1ZESUpNRksrL0l3akhBWGE1Q3lHRHllbVoyTWxVWTd0MnRtRjJPWGtMbzh5REl4aFFWdkQ5c3FPakhQc3Erbis5OWtLQXdhM2J4NUJEWEF6S2ljRnEwc3RVUTNaUGoreGlQUER1TDhKYjVvMXowSGkwVW1UWmhhUjBnQzhRKytRMkVFK2Z4N2hjL3NoMXVWVC8vclZyMDZLdE5WR2ZOUjJ2bEtjc1lhRHZzVENaMUF0TXVTYUV1RVgwYU4ySXBtdG9hZ3k3SlVqU0gwMCtDR3VLbEVEN2FLck1wZ2JXT1BMRXhYSVNUemNQdmQ1ZHhLMHlBNFQ3L3lIVUxhd0tSRnh2a0tzdU1ZeHVNa2J0Q2ZWVmI3a1JlTVA0Ym5rR3JsZXFEUmg3bEZZZmdGNWd4MDRDQnVMN0VyWHVLR3JiaVhjNU56YWIwSmpxTnlDYkFwd0Y5dk83TFRqdFR3Rm8yNVFLUFN6MXU1L0F6WjhJdjFraG9hL1JxaThGdjd1Nyt6bk9Fa1hEUzlCcGRlM25zYTBNMTBUQ2VDM1NUeXZuWTRLSEJIZFlwWER6b2RsdGNrbFVmaitmNzNrVXZnTXo0dXpzZnNlVDFwaWlUTVI1VjdIbTZHU0dGbTZYRG5EeTNWdVRaL0pKU0Z6dE1MZnhYRUMvcnloRXdGZVl4WlZwS2pydmU5UWlhVkN3K1MxbkNxaGlQcFV4MHp6NDY4NHcybytiNjFOZkEyOEowQmVwU1dhSGk2R1h5bTBubkd4Ym8zZjlwRVI0Ui9GNUdXWkVURG1pK2s5UWM3dUkyanU4L3lCcGt1UVNMdUp6Z3p6N2tBNmVwZXl4cXBBd1NKTnF5MXVUakVPY2Fwc1FqeWE1YVNDRTJTNHFWNnVlWUZLVlpSaVhjVVVOdVlSZlRuRUdmNnFibkplNUJzd0JHM1JKZzV3MFZVK3VUTHBrWUVsK2JhS3piVUtPV1VhTEN4bnlnU2NkUFVxWmdRRmJOUUY3VzZpbDZ0c1IrR2VwYldjc2ZsNGU0aTc4anBNUENjcFQ5VEdFMEpUTVBkQURDbXJDMjJXOWM5WFZIVi9UM1ExSExUemYrWnhxV0U0WlZVQnZyMXJxZnpzaVQyTGY2R1dlUitTWXFhcHFPeUZ6dFZSS1FSME5wNFR6NUs0cnpmUHpWdXZJM1NBcGVqQVRSSDNKY0F2aTdkRDd2ODVRYjk5c04yM3JjaEtoNVA3b1U0WHpoTzJnMUhnS1lLWmpCd0FEMjN0Mnl1WVl4WFpkcXFPR3UveFMzcFY1NjdOL24vWWl0dC9hK1ovRjRhd2lXeVkzbDZSOE9QU3lYaFNLSlI3N2RjalowczVvcXR0RlVIaHg0R3FmbVlnWTJIWkw1NUxKdDdWTldGb2FTaW1jeUMrSEtIQ0MzTEpmRWlxR3ZzZXV2QWo0R0h3cHpEcGc4KzlpbWVTcWc5T2ZNSDdzMFpzL1J3bDRnU2pVc0lmSmdZZEcxaXYzTW93bWxDbDRXQndHM2R0a3d0SURTZGh1M1V3Y3Z3NHZQY0VIRzhRN2NNY0lDMjlmN2JmOW94ZmF1TGdoUHFmTWN1ZzNwemQ3U3BUN3VLanpZbEJaNmpnSHdjUVF6QWU2VDNRaHlyVFBHczlIU1dBQWhRbFhHUWNrWDRLanlYdGFZUDR5bUVieTFpSTJKNTgzK2dCVFk1bVlnbHl3YkxKMWtYanVNZ3VwVlNTbzJLYWZxTjQzT3lRR1RWSEhLcUNtcm5JaGtTREpGb2pYSzFjTkZuMW10MDlyRk9GRVNLTkhsRXdSUXZjdGtBcmlzTDFzS216T1pOUHVxck96SFZMZlR5Um9aZ1NaYzRzNTFmaHlVVWhCZm9wZFNrK0tHUjl4M3hRcjQ0aUpZNnNQRnZaaHQvTTZFRTFhaGxTMUxMc3BCTnJLeHRPSjgwYjlqV2UxTDZreng1YW9EcnVVRjFyVDM5dGdDTDliSmMxOUVJRUxRdDJHY2UyWVB1NUZDK1lVQXpTUEo4ZHJsN1dwQlVnckpoaW5BRkhld3FoYU9wWERkcEFMOWt5VnV4M2ZLZ0VidmpvOElEWXMydWNzbEdMV1hWMDdyR2JCRHc4eUk4Qmp5dVZlTXBMekh1TlJKeHR0dStYbkl5aDJHWTVJc2tJdHM1WTltK3JydzdNK0lBazFhNkdmdEFNNHhibjhobjUvWTNINklWeTUwRk1zR09MUDdVcUQyK0RkaEZ1czE3ZzlQZjJjSXIxTjNyZ0g0NW9HT1A4SUExTmVCOFZURW1hRENMTEtxUERTVWlCbG81U2x2bnVycDVNTHExcUorM3lTODJPTUliNXR1LzMzbmxuUFF0aHprMFpkOWx1b2hrWm9tL0JQS08vQkpYeitRU3A3c3k2YmJ3L1llajdZQ0QvSmZlUS9jYlBkTk1sYmRGZmdvcEduekUwdTJpUG1KbjFvQ21odVRBK2lVSlFEWFRXSUxBcGdzVXhQRlJqcTFVWXZhR00wRzV5bE1FZ2FEcUhYbnZYelU5cG9DUEdrMXpTOXkybW1yc3hncThabXQrdEJvU2JpOWhudncyT1A2M1NIUyszZmQyemt1bVpoN0tuK2ZleHBQR1JGRHFFRFVyNDdCSlJJTFRRMGtITVlyS0pGQ2tUTG0yZ2ZNLzV5Wk42azIxWEQrRjVpa0Rkd0Q3RGsyeVo4MWltd3NSa003bnQrQ3NkaXlDNUcyWVlaSzhya2o0dm85RUlKVEcvamRCYnRNbWZQWjExWVBtMTAyR3YrS09tZm9KTlVuZXhDcUptMWdrK0FNMHI3OUtOUjNPV1hRelpVMmZOSHJmd245MmxqSG9kaTZUUkVmdVV6OHYwZXhralFLeDcyNWVxMGUyWWo1NHhaOXllS3JZYnBwbkFRVzJiWUxqK0RSa0wyMUJWZENzU2RoR0pYd2lqS1Vvb2tSUDNISEZZS2VSZUY4bEMrc1VQOGpEL05wa1BRQzg0VWNmZFo1ZWFrN2VhbXlCNGU5TWttQnZpNitHTVg0UFRpUytsdjkwREN1NDNHVXFCcXBtMlNBQ2FrU0pDRXRLNFhPSUlVSGoxUE5MMWN5LzlybDlPcHRwTWd6YXFuOTdEa3MzMnoxdWYzc2JkTitySFlaVTVIazBmUVR6VDVkcDM2Wk96cU4yTHdrbmhXOGczN0NsWTRMeXF4UzVUVU92ZXU0WkYxcENUN0t3N003bGhmOW54RUtlK1BIM3FPRFhLOUx4Z1IwalZmSnNOYzhrUEx6Mk5aZXNGaVJQbWRNdXp1NUd4V0lBRDNCSERSdVBVaWhscXF0REJNWERzU0RJQVp4ZFlsVUd4TWxVRnE5NmdlTS9POHlDTER2K1FXNFVCSm91bUZMc1UrSEk4emdFdnVnOUdYTjk2aGhZdzVYbHJRL0lCNmMrUkYvVUdoYVVBNkNOWXNOZVk2UThwTmtRQ25ZNURwaTdBeWNiWnZlNzFYOC9WRkdPRDladTlSYkVHNTNWYmRkUWVhSmVGbHdkeU8vR3ZYUSsya1d0UGg4ajlYZ29NK3dreUVtOEV6OWlaZTYwM25Td1FvbWZWM0l3WC9NOCtYRVZMNjFOazk5R08xSlBqS2NlT1d0Y1hhUjB6ajNVbHBGQ29iRGVmbHhaNEkrRGp2eUxvaURGVFhQWllCQS9iT1RUWW4xaTd0UjdFYm5OaWp6SDI3K2lHcllrZnZPMEtUemxaNXpwWnBmdnFGMWFhWGd4Um9MbHBNZ1dZcVRSZjJmWU10cHlsaWRhemowRCtmUFpYZFZLRFYwVHBEM0RJOFFOQ0xpYzQvdjVxZVlHekp3Sk9qWUJuVW9LcFBIdXJjdTFqLzlqR0l2dVZQdWFNTUo1c3JuQmZTRTJLaTFVKzQ5ZFR1ZDAwam4xYXkyWDdjaTJFZ0kwVndEL2YvdUNBV3ZCTmdGUm4rUXBheUdrVmg1WGoxQXppOFVnS3RQaW1QWWNLMVpNUGRGWS9pWFpGR2dMUVhDZWc0NlNiOUhSeENXVVp4Q1lVL1lNVFE0b280N2NhS3JQVDA0WGNhSnl0MGhQays3SEdxSmpyeUxpeWpheDlSMHFKMjhrbXRDM2t1djQwWVJGV3pTaXJ1cEhDcmFCeWNLNG5CYzkzTGY3My80cU5hOVhoQTBneTR1WGxUMDc1SVlDaUdLK2ViSDlLSm5SUUpFVGM4Y0NJZEpsVDFsYnpzVGdPMmFpNVlTSExDZ3E0SnZNcGVNVHRWOHBYaTFkQnhsVmRaZy9CMForcFFGL2RCR0Y5S2N2MWdsUGV3MnBHTWZ5bnBIdTkzbDlWQkFNSmxHUWw5RXh0T1lWYXJVMTF6RmE2Sy9PeldUWWFoYk1qcmVxcXRiUjl3OFJldXBzZENyUzR6UU1NK1JlMk8zWjNxNzliSXNLZGNrOHBWL0JZKzIvdXYwYUNOVzhjNktEK094ZHZtK3VsenBYVFl2YXh4T3JGdFEvNUNsdlJHWVh5aGJZR0ZlalQ3am1QTFpreHpabkZnbFNaejFJWnlKZ3Q0VERiSXozSHVWRTZad1lVblFHVHZLZVRxTlpybVp0ZktPYkhJajgxa2EyWllMNTRNUGJFbDV1SHN5bGpWVEY2MW9KVjBlS210QkU2U2t2NW1TajJCVGc2WVQxQmo4dzJid0ljVDdYeTl3NDJhVm9uTWwwSnZrakZmTTZFYkorL1hCNUFpZlllQlM0TDdwTUhiWW41bHR4ZjAyQnBDTE9pL1RicWw4d2t4bGdWK3ZNV0ptMXF3OXFTUHVrWDFtYWNqeFA5TUZjdTM3bTUwRzRiTXV2c2duVEljTlAyQ1pzSW40TEpBMXBneUFwRUdxcHVkNUFxUkVBMlQxb2lpQWRvTlQ0RHNoTndKaGRJRjlKTVV2Y2ptdVJsbXdRUEw1eitWUGwvSzNFZXlkajB6UVZqekRPRFI2VFFuaUtFTlBmNzNEaHhiTVpHdWJRdlRPeWxLRmVKN1ZIMFhJS3FYWmlYMzN0cCtZS3F2VUQwVzc2cmxGZlFML2Y4QnhIanJqUnRjbnVNM2grSFg5cTZ3NDNYWVNtb2U2WGE1eHhISWNnQ2FrQXp4OERVaXFmQ1VJN043MHpHNHdrWWt4enh6U2ZybWlLbEVoU2ovNnF3cGxlNmtmb1RkczllcjFmc1pOVStoU3Nnb0JZWWhEZGtuR2k4N1JhVXhPTjl1NGJva1hvd2FzcU5WMGRvdjROTTJUWHZmMDh6MFRQSWdDaHF6N1BscUtWS3g5K25jWnZXTWYwallzYytYRUlCT1JYNUtwVGxCdDF6aTk2YzZ4TGthcHZpdHFOeXhJeCs2WkdZRDF3K21YZytzY2oxcEN2YlAyYnE2QTVqZEg1dlBVb3lPa3QxK0N1aGxISytSWHhLUkNUU0RlLzE5VnVJTlZsdTJHOEhaOFhQWmxSTUJZdURaNGM2WXJ3dTZuS0I2Wm0wOGkxYjVvcjhhWXJRQ2FSOUl6bG9RQ2ZHRkJMWGRKZnMyRnNReHdubW9qckthRXcxNGZXeDVIWTU1WDZacUtLRVJSMTd2UXlUYU5Ca1dSUlR1dGZaSHdmVDM4TVJXODc1VUlnNnlxb2E4eUJnWHFNWVJqV3ZzdWtwSzV5MFp5ejRYM2tqWlB0U25EalBKZU1PNWFFeUlUZkpQOUhjSVdWWmxrbGZpUjRmVmZjbTl2eU9KR0ppd1FqRGhpUWYrRFJacUlGd3ZkQ0xwU1JrV3dJY2tpZEFRTjRqZDIrMDA2VDNuVTR1Q256K0g2YUljM3lwa0VhL09ET21LOE96THJwTDJ3azRaVjR6MHg4aE93S2g5Lzg2Y3cyZzlGcmtQbXFHWEQ2RTBBVnNFcDUxL1JzRGw0Z0piek5tT3dGSWZOQmdNN2hnNFdVeFllcnFQNDJiYmQwcFlIY0JDeVdGV0pDbm0yTVd6RUJMZXNBWTZhSURYc1o2Uk9TNjZZSDJaN2p2anVPUnpVR3BnR2wvKzE5ZHFvNmdMU1pVN2JDdXFoSUdtaXFiQnh0bmdSbDhEQ2RKU203YVk0eFN0RVVQUFJDdTM3b2JOOER5YUdvL1g3RFNEYVBvWVVTTGNxMStwM2ZqNHREblE1WitWUXR4M1VabmE4TDdEd2FpNmo2Nnd6R2FEN1labGhWK2JyZW5pT1Nad3JEU0k1L3gzd09KcHhLcGNMUUFWbGxraG1DdjFnMkRBUFdLZ3JxL25mMjNxdHBXbVJaRi9zMXVzZWJ5NmJ4M2pkd2gyMjhod1ordlNqZVdmdnN0U1ZGS09MSVJFaDc0cHVZYndxcUthaXN6SHpTZXBXMHp6amRuOUwxaDVqQWZvOG84RisySFRXV1krUUhUUVpub3dVSEd5MWd0YzVLeVdTWkJFWXVTeHR2MnR0SXhzRTdBRittSkZCUHRLVmRNdmVDem0zcUg1U29RSncrQ1ZUM2Z6a2QrL1RoYnZ0RTVKYlZwNUhSak15T3I1dElGSlZiTGdhOG1rRlFibDEvUzFYS01WRi9TNHNiZ2VxaXEzWDlteU9oQytzMjlEQ05OR2pDekxjbjZqNStIejlBWnNEMllBUVlMSU5STGFqOXllKytVT2xFellqK1JHRWlJUTZhUi9jMG1KR3RrQ1lmaXkxZ2tpLzBSTWdGc0hOeURqRDk1a2V0cHBBYk5wUHE2ZXp5c2tZWDFHWGlSQzlaTWJiR0xkNEpTdUovMjRVSXUzUHJYUGNpaUxnTk10Y0hHbmRsODlsbTNJaEkrYkJLdlJuWWpsVWJ2UnM2YjRBSUVYNDQwSnBNbGYyalFZRCs5QUY0MVQ3OWh5aHk4NVExSFlFZ3pQTHhKTXREOTFicVBOYmc0elQ1RXZqbkFFSGkvQ1MvRFd6RDhNMG1vazg1Z3Npeis3M25MRlBWdWZQSTk1c2FWN2RXVWw5RDlrZ21pdzBRZmU0VndIckRERHBkQW1JSnZhRC8zaXhnOWhGMWU2SVI3a0VlMmo2bVdIL0Jnb0FNelZYNUFBWUY5eGFhdlRNdCt6b0NxKzN3STNWTjRGNG9LUlE3TlhLR3RoU29zMEpTVHY2UStnM2ZPMDY3NEUyTmE2SCtTT3E4dGdXY2UyUGJGdTZJaWtUa1JoRmw3YUlnUGxKVkZtLzFpd1dpaVBPSkJJSWh2bXRaQkczZUxIOGNubjlqS2xZSDFFNlQyRTZMNENPUXlkVmZlN3k0KzJKUS85YmhqSEE4d1hhaFVoVzhXRzZQZFh2ZmFxcEY4eEpJSFA0MmpQZWdJZ2R1aGJlZkovTzNCSG5NbHAvN2hHVU5LRjNDY1BNNEVwWThVYm1UUjBSbFZnTmZkSnorMi9WVW5GdWJsSDJPNEdRSFp1ZWg0NE1sME44cU05OGlZTyt5cmNOcVowWGpKZ29WR1hZeW9MQnF3dmlBTm1WS0RIdkhZQzNHeC9kZW92RFQxZUwrcy9YQTNBblpSRGVkei90U3UyRFV2SWd6Vzk0ODhkY3JxWHhCL0ZiWHRLMzE0VjNHS2VHNlVqRkM2NnpQMVYxdEp6bjhYNjgzU3FLMGNwaFFXdVEyLzZ3MkNoZVlIQVBGVEppV3ZjR3V4aEJaRnM3aTZMdnI4Y0pHbm05Mzd5WjQ5SFhqTlhzOWpFVlk1NjU0Wjh0bjkwM1FPb05KMStIWVRaRUFtZzd4dTlrNEt0a0pkNUo5bFNNcVhxc3lYNzlVUTM3dEFHTXhPTEsxUzA2Z0tOQ002WWNPeURXYkJIZEs5Q09pdHlXRWJrVUJjaWFqWXpBbFFNWDdzMWlGQkY2OFlJRElSMXh3ZE9HQ1JKWUZIN214bVhXRjFoc1I2a2pXR0R2TEFETDJaL2xOeEo3eDZhUkxMV2hZNXNjZEMydE1YRzA5WWdFMjBqb2d5UU9YbjJxSDQybVVUbnVJdmxHVnJnOVkxUnMrZHI4VWY3MkQ3NnIvNUNoLzJyZmZLRDFLRWtvQzVialkybkMvdjltTHRPclBsdHBLVk9OL1Jkay8xTDRYeWxtbjVmZjNTenRTcU5SQ0tDVERVVnRSVlQ3K2pYZWRnWExyN1ByNU5tYTZ6VzQ3aGpuSUw1ODNKKzVxMTlkZjc3NFB0LzNQVU8zOW8vcUFheDV2ZHR3cTJ6ZGVxRzVjR2xuSXhYbTE2eGh1SzFzNFl6cmU4TC9wQS9qZnovdS8vSGtpUHlVYUlMYklhK2ZqSGJHc3dUWGZ4dzNMRS9IMXNsV0l4ZFVoN25kYmJ2MitlU2NvdExuZDV5WDNqSjQvSFVJelJUVzFnajZIaUtod1lwcm1Pc3VWalprdzFVUDBJOGFYWEsyNW5yeGFXT2tPSUR4NlBjSG0wZXJtSVFsVW12S3ZldnhvZ2QrMzVJRHZwc2FVWWY5QzhwM25WN0ZmdFBpNnRVVERUOHBpS21PeEo5RnNmakhJZ0NNYVk0RHdzOXJ1UDBDaCtjS2R5WUJVZGQ1RDlkM1VEU0FFRk95ekw1M0tmM0hDNldKZzlXSzR0UncvY2Z4NWFrLzBwbHhXRlZBZ1RiajdLZ1dwNnpwczVPNEk2L25zd2hpbW1aN2ZwVWE3RVBXSVhzTW5zZTFDaXQwY0hzWmFlWXRaRGM0KzZkcXRZUFBSN3dlTW1FOVZPbEFEZ01jb2JHNmRLcHdNa3o0V25Db1JyMFdNYkpXNW9QbVoxcmZZbXZEV3d1VDZNdUI2cUNBOC9FTEF4U0JYVGltNEhXTnc4ZVdXc0w5OHVxOTJBemp4VHk0SjlydmJvZCs1NU1jLzdpL0E3K1JqRFRGWFk3dkYrbVRmREJqeGdZV3BtTkVHZ1RuODVzeGk4TWxQcFRKYytndEZUMFduYUtrL2tmTVRFNFFDdURZRTJSRWE4ZkhPNC9XbFlmYXpEcGM4TjF0ZTVEayt0bEUwL0hDVlFlbTFkeGFQSEh0eVFFQlFmaDBUNzZ6MVRseHZwbXpYem5jNkdKaWlQQjF2YUlXSE95TFBYWE55M3ZtQ21XUTI5L3d3TDRmZWRNQzhla1hkWW44S1N0N3hMOUdkMUZsMUg4NUdQbFo5TkNTOHk3ZklmWUl0b1dBYTAxWmJYbGIyWjNaQkNhQTFSZVBRdnpwYjNnc0hOMEI3VGlMaDJhSnlsZG1VYmxVQ1R6dU40aHpqWGNnMFcwOWd6enNxQUhzRDl0eGYybS96MFJNbGtOWFhrbThaRkhhVm8yckQ5cEdRZjNYcVBKaGJMOVBZVTArSWk2cTlkQ2trbXRza3pNUVNGMmxQNy93OWFnZ29OaldtNkF0Vi9Hcm0yRVFLaE9wMzl1NGFJbzBqVE0zaHVlZ2wzbGlmd0MxemVPejg2N0kxNmlMMHV3ZDVSZVRjS3hCMlFRUU5UWjRpYmlTNjR5MWNvMVFTUEZYRCtkRHZhc0hkNHFLMEpPRmFsc1pJcE90OHFiK3JLQkpWNzBBMTNNUk5JdHd3a1BBRVd2T2FkVUhNZ0lCenhzN3psb0k0ZkhReE51K3JCRGtnWUNORURSMFBzbUFXTDBsUHJzTWpLVTgweWxudklTZEhyZTdWcEJnYUNPSUI2elVibHdQVXpCMXlTNW9DWHFsajFGUGFTbnMyWkpVMUc0N3hvcnVmbU0xa0xFU3M1UWduOHgzSmNWM3A5Yk5EVGU5aHNyZXU1M2xTN1lEUFpnY0l6dHRiSU9JM0tBUmEvT005Qko3R3ZhUzFkNHMyb0FZK2t5Zm1PRjVZaTJEc3JocWJiWTRzWkNIbWJPcmFxT0lwMGEyMTlBcjc0QzJlUWZCeDlIR3RBZnpaOGVKcGZ0UDh5RWxWQTZ6bzNHbldTdXdIMVQzak1VZGtaOTNySDBwcThwMTFYbXI4RzRNNXQrd3VlZmtJUVB4bW40Z3AzR2dTUHJCZEsycFByRXFxbXBlNlZ4K0FxNDRjLzV6WGxTVVU5ZFFNYVUwdFNjWTR5Q0x4QjE1RUVlZkNPREFMMkxDRmtOZlo1RjJlNHU1bTVHWVl1eXoxczB5OU4yOFVZNUZ6M2ltQjlhWmtsK0hKUGlYN2ZRdDBUbUZNMUs1aUFFVVMvbVJJY2djczRISk93L0tSWFYvbHFLbzF3eTZVUktpNlpxV3RjWXZqd25NTnVLc1YrN3V2akw0RE5ZV242MlBBMXdwRHVpZGFSTzNZVnptTm1tKzZSVFdUSmdYV3YwZUpGbE9pV01QWHlXS25XbUp3VVpNL3BqYmVqQkQvM256VTNxemNiNjFXdkJFdGJGYW9oU2UxUEZhcXo2WDdlYWtmdjVWbCt6SGY2QVc1TnU5ZWZ6TWljbXNYMGJHT2hMSjFraGlid240Z3B3QVFtL3ppRmlrRUZHOHQxVkVuQ1pwQ2hlT3NQWkhvSzdJTjJuTGc0U2sxNHhKMmU4OGhUUkxycHJld1dqSmdIeWQ2OHJNQXk0ZUZHMkpLb3RVZDMyOXI2QjVpbXE2djF5UDJmYnhUNm10U2QrRWN0SDVkQVZYNEJhYTdCam9ubWZGWm5ILzFtVldoSGdQYUl0L2RVb2lpS0tPQlRnTzdOVVlFbWhGOEZ3TkxyWCtYbHNNcXJ3cGNPSUZmMXNjQWMycnFJMllzaWc0V09ic0NNQWkrbC95VmIwL3pHK21wQ3ZKVWJ0NkdRZ3c3aHJDUXAyT08vL25BS0hXOWtRSkxxeHBSVnpxWnN5NlpXNlI0VjBSZnZNOVhJTnBKTGdOcFBOSE1KVmlzSXB6V3lQVU53VHorK3ZWMXRLTG5YNzZzbm5QeEdqV05FZXRSM2FqMU1heEtxSlJvYUIzMncwMEd3bGNWYlo0bGd0OWM2cnJCYzh1MzV5WWxDWU9TaW82RU5ucmJJNDFKR2xlT1BteFJsL1N2R1YrazVxdEVZYlNkdkZUbUMzajJuVGM4QzcxMzA4a09lc2lzQTJESWxNS0pDNmxpRm53Y2ZUMVZTQ0daeDhjd2JzSGRDdFM0Zld1OFBOR0M0OEtkNW9DNG9ta2FUNDdzRzR1UHNVakNDYXJvZnZuWDVzdE1aR3NWOEZNQUh2SlNYSkxXV29kYXJ3dFcxNXZUN1gwUUFJMkgyWTZrb1gyNUlOV1I2VlFDOUdwQzMyTHhXby83MStHYXVXYjZCb3d5NkFuR2h6cFFubHhFeVBBVkl6c2h4eTV0QWJvMjZRN3pQbk80ZGVVNEI2RnZkY3FUTi8zWXJ5L1V3ZmJSTjFkbThHbTJwY1VLa0VlM1U1NzFGY2NrSGx3ZldBVG5pVlVCUnFsNDZaOXdWRVB5K2QwYks4UUpQQ0VJcVNIaVlnOFk2bENlbXlwNGdvNUUvaCt6bnBTNjYxdkJkZ3pINGRxQVozV2lMTmdHd0NGcVFiWlJ3NTV2S2V5VnZTazRQS0tJWEo2MWRyQnE1SkNOV0RGZS9zZDU5OXpyRFJURjRMdXhzbW9wdi9CUUJlUnBKVVBxMzY3N0NabUlXSG80bHpLL2Y1OGE2OGVCcFJoSnJ2YmM3UDRSUnZCOXBKL2thZVNYNFc4VFdlWmVCQ1Z0R1l5Z2N2NXBjbjdTNGViNFVzbStXZm5XSEgrOUFCc1ViY3BxK0JrakF4Z20zSVNYdjQ3dlBrMkw4b0RNVmZiN3hBcnlobHNHVjZSMmxTbmRZc0VaamUvdjR6Z2o5OHBUbk42ZTNIcjA5M3ZwSmIyMjNSdS9kYk55T0dGYm9vK25JVTFSRkRkdzAvWlNiQnZ1WkNNdHBCbVh6bmxsOFZTL2pVRXkvVjlFZm5aVHRNSFNMRlYyUWtWeFNBSTBFZmV0SlhMN2RmWkMwSGZVbkNDOWVISTV2bjliQnF5WUY1YmZXdEtxNnViTlEwTUt4OVNFUFpsOUZwa21QWFczbHZTOUdkbjZpeVlxKzdQNitudC94dmNoNnhvdnhGbVJoRDhxdEtyb21NUm5FVzE0a0tPbUpMckNTMEpHTnZabFhUalR3cGpIUm50amIwckNTa2VLbDFTMU5CQkViMkN6dFkvYjV0dEl1clJxSDBYWFh6ZWExZkxYclN2eGhzVENkQWZNdk5qU0swWldGQUZrZ25xQURMcy9qV2hBOGdZSUNlTHBJdDlCVXpZbW8vZFQzVXBoL2s2TDFmbDlDbHBDZ1JzbzRLNGpoUnB4QnREeTVSVmQvRFJBd0loaC9KNHUwY2ovUVdmaTZTUXFpNnduMWF3THptRWxXTCtaQ0MrNEFmSkduWGtXN09BNHhvcCt5UTcrUDlsZCtYLzVDMjJDZGNIajNIcU5EZW13VzhPY2wvMHA3Z0g2Snp2NC8vUlQvdi9lUi9xL3JtR0hZQ2lRT2VqcGxIUmpyZjJsNTQyaXh6a1RoWXRnZGUvbDdjaEs5ZXFZbDlkVWxWSkprMVI1bHNjeXkrbGNScWZzdjVaNStZSTF2MjNHanQ2TDhsYWNIeWxMSHNlLzBpM1JBb1QyZHpyd2dkZEF5OXJlc0RlSU5WTUs5L0o1bmJjWk16aDBKSmhlU3J4M205S3BPTXlzMmRZWjJranduc1dmbHpDL2pFbElnVG5OM1BjRnprLzZJZ25DVmtmS0ljVW8yVmRVUCtua3BnelViZGFKb2hrNXpVNmIvZmttS1RHd3BmaGYyTXJyaFNLd21UZ0JoT2kwSlZyY0o0TjR5OHVsSWN0ZGtWLzhNYUNBUFJBTWJieExYY0lJNkhvWW1pZmlEZkxOMUg3VDhnZElyR3lEcUMxdEtSN3k5OHM0bHJUTlJXaDh4dnBqalExdjZKSk0rL1BKcHdKcndjSUxWUDJNL213VGg0YS84dVYxanZ4MFliY08rK25nK2VuN2lzeGtjMDNXQjNMbGhmWmJZZVJsZzJBY0lQSW5GdkxiSGdWcy9lT2IxTUhYL1lhLzR1VkZESEdCZGErajhyZ0RibnV1c1RzZ0dMWEV3SDlsUTBGYVBoRTMwb2h6WFRISWdMTkJiakZPTHRqMUF6YnV0b1hKK09TeXNxUGJmajNiVStVUlE2eGRFelhWbnVwai9IT2pEWUFaQ3hCQmI4SlJWeE42RkdKVWs1b3RUdHRSSWUxYk1EWUVFQmNqbHp1bGlIYy9TS3BrRTFZQmQvMDBRbFQxanFkT0lCbVI1OTlUd2dYYmhibUlDSzBlTlQvWnVMV2J4N0NpZVNiNjl4bWVEblpQcVd4dEowcTlUSll4LzlhbFRWQ1R5OUZkeTlreUtTSEFxQUF3NGxRZy8vakxnUmlvVWdyeVR0M2oycVhoQmZNbzJ6VlJMdGU5RUZqVEFqTFVqdUFWa285UCtXb3YweUpacnpSVjc0SjdpSHI2b3hiK1MreTgrT2FoK2RBcHZLQzV5aHBCeTRqSG5TbE9LQTI2K0poLzFsNitwVHVxUCt0TmVOd3pqby9wMGRWeGhDbW5oMnMrNlFBQnF6dlZXRm9xdXF1RmtnWFYybW5BNGtjQ0xNaWJpMjdGMjlIVHhBUXZKay9wSVFIVFc1U1JUQ3k5S0tjRXl6elVIYlJNV2thb0tLZGIzRkxnRXgzUlNRZHdmYU9KNUsvUGN0aG5Iak5WZmlwSFJOd0RtZGlDMS9xdEJZMFQrMVNrQ2cvTUpSVVE4MStZQllhQ2oxZ1pqU0N3VGk4cG8wZmFyV3luUS81bVgrMFg3OUhZd3I2VlAxeFRjSTd5ZTVwNXBYRzBXWmZBMCtHbitlNit6Zi9zd0JMU0xXUHpxRXdmNzJveTRWMGM2NmRadHluMkYvakxaNlRMd2dzR0xmMU9jNTRXZEhIV2ZVOVJ4Rk1UZlRIQ2JSdldQRHNZRWRxbDFGYThmRjllbnVraENLM2JuZzhvbGM3MUJNTXZJd29rSXlXb1FGVS9URGhEbGRzNHlvZ2hNMDFRbit1ZmM0Uit1eUN4Vmc2ZDRURjkvNzZSK0tHbjFBN1o4bGsrVlljSjd5NmdLOEVPbStUVEQ1bUhUV2hxeFdHTnNvRVdTZDQ0cHN1cmJEaDRDaE1RNmVlaWE5cU05MXR4aitraEt6RzAzSWFldDlrT050NTBVY2IrTmwxc3NrMHZnMURmUHB0OUsyV2U5bWV6NEtkQ1oyMEswTVZ2a1VhS09xNGxMVDdKdWdmdlNVODVGMCtXVlBlVGozOWJEd2tNUDVBYVBXMWN1cEQ5ckMyR1FpMFAyVGNpMnI0ODYrdGc3d0V6QXc0OFVCMzYrUitMSW1yOXUzK0FrY2FsTHppeGFjN1dZM0Zpdm9kTmYxell4SkZ4b1RtK3JnS2w4U2hlNUY5SEhiVU5lRjZXakIvN3BPdWtpdWN1Q1NPckRwNE5aMTdSMjl2MDNTcDRlZ1pEOUVLWTRPVTZRQVNBcjFmUW9HK2x6ZmJuc3hKd0ZtT2FDeFZHOFlTbVE3TC9HQVFiRk8rWHNaTWVGZWVHaVRSV0hidko0SVU0VmZYNlZ4Z0Y4bm1vVmV2NW1rM01VTDNIakdiZkg2bjdIUlRRRVNSa1ZldFlmQWVscVNRemMxWnA4WU5WbHlBaE8vb1NQMUxNc24vYWFTdndsc0FXUENlUnNKTXBWWC9WOTVmT1FCSFVBOUtjN3JrTm45SXVLeTc3dUFIdDhKeGFwSWtoaC9Zek1hRGRFUlpGOGJkeWMrbTNOcStFMnNwMWNySThQUm1ja0ZFSXczeWE5bEZwbnNmQ3BMNVRXQkN3eEdQVUc1Qy9XMkh4UG82MVZUMGhkNlVqbW1IUGZVNWlwb3I5eHRiU0ZQUFFFL0d2b2JzbDA2MU9sTVMzaDdMQXV3RmYrU2JPN0J6N2FwOUpoMkFBVmFqUU5LeXpSNi8wYnI2MSsyMjF1UlNKZDc5MmJMQnRSZm1UUzNEYlp3L1E5djc1Z2ZDdG1tWlk1R0pJOUdQK0tQN1hKblB3cEkzVitzdkw0c2ZQL1cySjZFc1ROelBPMzRPejNxY0lJQzI3SzVWODlLVENjbW50bDlOQ0J0eDMwZG9FdEtEOU1zYVJJVTl5ZkZsVW9GZFhYNi96Y3dsb1dnazJqT09WT3NOQnlzS2k4eHRTZmVvUENUN0RmSEJ0cnR2amY3VTZCMVJibCtlNGUxVmR6Y0c3KzY1cm96RTFjTndoKzMzZWVEMWo0bStFK20xcjkrSHFINlVFRW9OdVNKSUlYOTBIN2M0WnJXcTk2UGlHVGk0OGhjV0publpoVGwvNTZCdVJYZ3RIYlpqWlJ6azhwUVFQT1JHczU5VElVTUpQMzZOKy9ScHFYZjhwTS9pQUpoSHRLc05KYkpZdkhKUEo0YmNCbUgxWkU4T0lMeXMwRk1WVlN6K3dSa3dOZ1hHSUtkbUJGWWQwaGhyemhXOGU5SGR0MElTZlNJakdWeXZLYXJlc2hRZEV6UThwNWpNTzQzUmhLZEZXUkxGbDJpU2tnQkt5RDN4c3pLVDdJWm54dE5meTUyaFAzd3NUQlV5cUlTNWh3YnI1b1FBSGFQYk9tSUZHcFJtVUduL1p4UGZBUkFXWDJCOS9ieS8xZVpxdjh5c3JENkxUVE01M01odEduRmp4bTg3TjEzejUyMW9jc2ZnQkVCelN1bSttT0tNQ2dvTVlpOHNITFdmT3pYbFJ6T2R4K3ZGRDNrODdDYVMzOEZXTGdwOUhRZnRpNlo1OHk1WUFoUWFabnhSTmw1aU1KTmZLVGNpL3VuV2ZnckxpMXVGLzhMK1JXWEdSYmxmRnhZM0UvL3pqVGt5MlFQSi91TWNKRWZMc0VHemVHempUNExMUzE4bnhiT245YjVrOEpVNko2UGV0OWFLRHNCVzBCdU5yNzVlNWNSNUlYR0ZPcVA2eVQwa0xyNVFaalI3bVpDR1k2K20wb1ZOSUR3RDQxQ1dGd2RHdnpWT205QUtMTy81UGtpMUpsc3ZnSkFDYzVHVkFEMlowTk84NmI2RmpQdUxtcHpPellVOHNERGdXR2xCTk9Ob0hUVDM5RTVNRDJFSytDbjZBQkI5KzQ5MmJaQnVCK2RJTzdPVVNheEdqeTVucXpoK3pVSklMSjltbDlqb1hXUEhsOXkxYmcyaGl4bEVHR2xUWU1OMnR1VHV3NzhTSzB3cnZQcHJlMFNyb1JqaS9oSFl0bmRheEpzZHFrZmdieDQ2N2QvSXJta09wV1gydnE1clIvbzczbFM2eGE3ZFRmc3lZaE43b05VclR5RmszQ0YzVGtIaGxDVEh5bGxYZmw0ZFI4VUxsdmlKM1VBamgxZktLUC9kbi8rOVYvZmVxL25kWDlZbWJuV250d1V5OXI0Y2tibm05NThSb3AyWDdwVUttcEp1V1JoSHIvSUNPK1Irak9VejhmcWRRZmxGYTlTTzl3YlhKallLUXV2NTl6S0pudUMwYlhYenQwMmMrRS9tS3VPcmFEcnovOTdHU0RHYnpMU2tHVTNocjBDQkJmOHBNbDEybzhlOWpMTElMTVc5NUliQk40ZkVtTDd2Uk9LSk85bFA2dnhsZDh4UlN2dGhQb0NzNGM2TTRreUFqUmdzUCsvY3hNNmJ3d1dmdVZaTDhSblRWajdTeEVIcnNUOGUvajhZUWZxTnhscFZpUk0wZzNXK1IrbnVNMlZyVS8zWHNRdGFQSUZqUUFtVFBHTS9xSWpLOVF5cWtLSHorNjJpLzVvdW1sVU1JTEljTy9IRWp3MVVheEVkTWpmcXZvMlpNUjJIRTJqK1ZhQ2VxTzFQRWxoWnl5U1A4MzhmdTdibCsxYnYrQnJEcTQzcDdxMkJXMUtmMDlWL0c2UG5vU284WGdQTmsrOHhWb2w0alYxNDVUdlRjZngwbGcxNS9ENGJHN09FYWVNaW5kM1MyVzFIWWtQNTlETm1OZTR2dVZlWkhnaXRlVzBDRlM1MmN4ak43dDM5cjA0Z3hxTHRDaXA0K0RDLzBaQWR2ZnVvMHI4a3llWDlIZ1Rqa2J2M1FETXp1SnlXaXZ5bXJyU3Vqa3F6a2lrdzF0ekIyQ1EyUGRHZHV0T0p1TFp2MFYzN2pTMktKYmpUcmVWTUxkd2RPM2twQ29BMHZnT3NwVGlBVElMUWVHUUI4R3VQN0NkdWpsRCt0RVoyRVpjKy90akNGNUVxczUvejFRdDFod21tbkw5d0VEaHZvZE94UGRteFI4NTVHTGtOZlVEMjlQUkRoellUbUVrUjV5UUJIRC9PREVoOUwzSU0rQlM1em5LTjBxeGNVdUU4STJoTys1Nzl2NVhrREhoTit0cnFaYnE3SVJZREw3TzJKWVM1K1dvN0ZUYWRPMk04ZkN0NkJYSElqNXgrNXRNVm1oWWphSDk0NldCditaY1pRaU5mMTVkalRHT1FRR29rZC9IZ3R1dlFBVWRCVEJGNW1Qb1VTSVBSTGF0VWl3SU1ZaU1YUmVyV0hyUTFCeEh3eWhaSVlUallSeDdpSGZkeld3aUJoT2x1NmgzbDVKeXhEVGwrKzdCdGhjS3Qwekl1V2JGM2FKMCtUVXk2UWVTRU0rbmZQdkE3bGhpWDM4RXRPUFZmaEVjdnZuZjM5c3Q4dTNkVDNNSjk3cnNBanY2aHh6SHY0cVhQZHNGWHd1bUcyMi9Id2IveGFwc081emszTTdEdGcrTk8yT3g3L2pUOUxjNXJDdm9kZjc0RG56akpyK0FpYWYxL09Ba0gya1hSZllJS1dPOHBzRVNLdXZpOTR3Q013dnJEMngzaXRoNWRacW9RY0M1VWM5Q1QzV2IvMlo2ZU5GNVY1cXFRY3k0MGk1UHozVi9sLzRhdUkwTGpnc1ZTRmNLeUlNNTZyVWYxaHptQ1o1V3VqT3phMmh1THRrME1NRkZ2Y1Q1TS9JMytyQ242c2lyMnJuUEZmNlF2M21naGxnNHVwNTV5eTh0YTErRE9qZ05QYjBNQzFhRm54QmIrVUtpY2ZPeE00WWYwTjUzZ1NXdU9XdUxYc2gwY2svd25UUXJSNThCTWtXaHY0bVRIdktmRUpFdTZ0VlNkb0ZlSlI5ZFA1aWk1Q3Q3Z3pEVVVSQk9WSzFxTzIyODZJK3NXSkRydUluQWZmekErR0EzWUFoZ2FHTnlrSXRjRXJ4dXdkMGc3UlNKMWJ6elduMUw2NUZmOW1CNk9IRzJvUkpjbmJuTENtSWZRUys1azE0SCsrQTdmczhiOHNCZitxUmVnTy85ak9BcUg2QkI4MU9zSW51VmkwY1F6UlQySFIyMVdVbzB4Z1BEdkRtR3NzNFVJNldRL09DeWdkV3lqa2JUNW9SRU13UDVUTEdmT090YnhzdnIvS2VnaS9NdjlMM3JOeEpmMmtoY2hwSzlGbm92TDNjejdPWEdVTjc5ekJQdVZUZHd5WU92bWR3TmVxQ3V5WUd2NzlIaEoySWRsK1VOS21nbWM3cStKelFmNUtpVEFMVHUxN2c4WUdac0VEeDJ5dVVEbWlwY0h4SXg3OXNub25BdDVjWTQvR0x6TU8rQ1piRUEvdDc3UEhNdWZuVm9aSlIzUlFvR0VCdzdmL3FxWCtUbEVYRk5GNkF3QUV5cG02RWpHa2t3bHB1aXpFVGF1ZWdRTWgwZzY5Y21IUkx1RVdGQ2IwMWZuL3VPYWJOTmE0TkhmeWJSOHViMDRrUExGbUk4ZUJSMldjalBiNEJ3MC9OTVFwYWVhRWlHRHdJbUVKZFgzTGhYWlV4MWpwMTVuOHh6YjZmcVBpcDh2S2IvbUVPakRZRC9HYU5YYW11QjZUZis0QmxQTmIxZ004YzlEc1lyUnlUUjhsa0x2ZWhjUUgyWi91am9Ea1RiVjJSVmxMeXRvU3pJM1ZEdUxyRjFKZk1sMzE1cjNRaGNMdjFEOFZtclIzOTk0WUdDdTFXVlZicDVzTFpMRUFpdnJHOGdtYlk0QUErUUdsVWQycHNNZEFDSHI2cmVQZG00SVo4aVVQK2ZpVFkvVitOTURCaDlYS3lEQXJraWRsejVML0llSzlNSFpjOG1GV0RORFlHVGhmRkZMSE1LdElMcVF1WE5Lc0tBanBQaVUxZjBwNXR2bDRkT0lLc2NWYmw3RHVab2JOejVhYkxhZmcxSDZ2aGR6emx3K2hVYXdmSk5jSmt0YWlTRGQza2ovakdnWW16YXE5bVdueks1bDIyMzV3ZWdoZ0VuZFBncDlKVU1kSjZRZ2huNzJUMm52UzBDVWJNaXYzcFB5ZXhMWkdkOExVd2ErbTNISjFoc0tSb3g4ejFITmhPRHlUd25YQTA2VkpObUs2SitrNVJGVXNMOXlUc0l1blJhV0YraFRsZlZjdlo3UnZySEJvem1EL2hOc3dlbnREVnZoRVJJdHVZSFRsTWx6bjRPVGxINXdDVTEwYTZJR2J0UU1xTGs0WWZzK2dpT010TEQ5N2M0Rko4YklLR0gyNmIwNzRFQ1RyWDF3TUpybjNKQjlNMnAzUUtzLysxbXFCVGxMZDA4NHEyc2g0R2U5cHhEM044SWhFRFM3dUExR2Q1K2hvNGJjU0t1eE9hcGRWL1RjdHFwQzZQVTk3STZmaG5nYVQ3ZzI5UGRCbnZkWUNLSjBDSjd0UzM5Y1FZYzl6bTZrcVY4N3BxQ0txRmdnSmQxTzdlZXgrRUZranNzWTVrZHJ2ZXNCWmMzQkdSd3BuT3ZLcDAveVF5NHFWTTNxYzhPcUpkbk1OTUcwNm9hUkdaVTJ5b21SZTlFQ3puMm5hUGUwRHB0RnkrUmFWVEw4M3JKS2ZhWXJja2V0ME52ZTA4WjZHdStPeUZwcWR1R2RrUzJoR2Y3dzZqV241dUZteURxWjFhbXdFcWl5UTIxVGRrNExWbEw2SFBZSVUzS093enpHVFVmM3d2U3VNYVJ6bkJFWFdRTzZ1T2ltK2lodlkvN1BVT1BtNHZ3QVZWeitVejJxQmxwcDZMSmlzdWRiUWl3OEUwcGtQUEVraHpFODk3RVNPOWtjQWovNmZIUTNQbjB3aTlJcCtTcW5hVFVJdi9BZkJLUTVvZmJyOWowWGtUOVlkSTZqU3doT3gvWDRYZzBEWXVaTGk4cUNUUkY3UTdsV2pZQkhmandEMVFLbjBIeDNVKzRUUjVUNnJxVHBnc1BsZHBpNHVtY2J3MGN6d2RqdzVYaDdJRnVyRDI2V04zY21RMjVkMHY1RE4wekdkV2Q5VExzSHZDQ2k1cWpWR1hXdUJqd29uVWJ1T1F4MkROVW8zazlQRHg4ck5EdVhrSWg0TEV2RGhqWm1HenVYMVNEL2F0MHF4Qk9YR21PWm5lcVYzMzRYUzh6OHluMEJyTU1HSzltZ2RnTHhOTU9IRW9OblI1bzNVdlhxcUFXdXFYMFBMZWxHT25Eakp0R0s5T2xZS0lwRStzVmprUXE2d1Z0dTVONGNDdW9LL3BOZ0NNZlp3ZWhWM1hDd0lGdWVQYTJRei9qWEVsNG9nY3ZXNGtKaUZQcVFtbTVwd0pCZklJU2tLczhURFZicmhSNi9sK05qVmpiVWd1N3g1NjIzSlNyQkRXaVQ1dTJ3ckZwWXpLNEcxbEE5TXJHWG5nTUI2blB0R2czZnAzSVlhQnFSRDNydWN0VDBKNHgyNUROMGxRSzdFSWh1K0xDaThjZG5xZmwzbEsrTzFXM2l3eUUxWTFNSUM4ejZEQitPN0hpMzdYSzBGeWdsS2d5eXhURzRXak5HclBRSDNYRDZKSXdqVlFUUXhZS2lVYnZXcnVwVk0vMGs4NDQwbzV0cHFUK3pVaUROZVZoS05aYUNlR05namttVGxvRjJFQXVFTHQ2Q080aFUwMWI1bllSbzcxUWY4KzJySFlDbzJ0emhLM2RhSzlBTDBkeWtwSzNCS0V4bGIwYjQ3YlJVYzJQeGU1dXVZeU9MUmxJajl3V3hnUStXWG11dHV6YnFWYXM4OWJvMzFUZHRmcTc5NDdRVW9TR01lck1PWlFGZGdVcHQ2dlEveVcrcytTUGd1QmU5ZSsyTkcxekZCLy9acEFkcGMydXk0VzZ3RHprNERlU0MyQkxsa1VTRGFPTi9pNzJRU3RJY0Vtc1UwSmRSOTZ4NUJvZ0dEUGRXRkwwOTNNYkNxcXJjaUdMNFZaTGhrM2ZnVXNnUy83L1M5M1JULzlKRTFJRUJRM0ZKMDJPcXVKZVBvUDZ0RExpbTR0R2thUDZsUi9RdkwvaWtEU1dMTW1IeUlETzNQZytJbFFzd2VIbm1Ed0hxR3ZzemlYVHR3ak9vOERqYU1HZHh6SW9mWklLTzBjb0ErK0hyZGY3aVdzM3g3SjRRbDdabUdXVzBaZnFyc0l4L3NtcU5id1JJekNxVlp6N2lHOC9Vdmg5WlRTTGdDeGs2VVBZaUJtaVY3OWNCZFpVQXE0RTJ5ZjNtbWdBcWVGYjlackx0ZmVyQXg2VG5FMHBoa09aUENqV0pzNzRsWGZpeThCYUNxUCtTYUdWTEFadTVrM2F2OUgyc3pzNTBBckVWK2V6LzltMTB2U0ttTWJhbmhTb3BuZ2ZuNkwxNzJLK1lwUjFWRmJhZEhwVjBNN0lTQ2lnNThuZEFlQTJ6Y2duL292ZlgxVHIwcW5TS1RMOEgzbi9EYi80UUN3RzBaN09FelZCREVQL1pvazh0WDBOTHZmcC96WVlWTXJ2K3V6ZnBtVThLejRSbEdzRHpOd2p6aWp4M2JNSUducXNCTEdCNnlkUlNUdHhrYis2bDQvcW9JVXE4Ykd3Y1lZcVFJTlRmNnpVdEtNRWF2T3pzYlQ4WDNHS2Y3dlZ6c2FQdk9MdHREOGFQWEc2VDZ2TndRYjRJNHJWci81WTNMQ3dTT2ExR0VOMkdVT3UzSGVwWDdsME9NaUVkNmFmUXRYa2xlakZrTG56d1NoT0Mvbi9QLytIT0FUM1VUTHR6V3pmSkZOdnJFT0VBSWRRd0Vsd0JmdXhvVTd3R3dEY1dib2tYTVpoUHhTL0JCMkNKdkhaODNSdnd1Y1VFV0lUeCs3OXFXN0hjQ2Y3bGhuYjYwRU9Ib2dhcHlCM0g2eVRDSzdiakkxeHYyK3hJZlJkZUp6a3dQTmN6SjJJTHRzRVI5WHhxL21YNEw1Qk9lbVJwcTdQTmxkNW5GS3ZObk1Nc3F5OUw3RWo0eUxOWFlEbWQxZE1nb2FqeVlkcGRuVkhhZTBjcXc2ZGR5R3EraEIxNVJpUUhFdDZUVVN2d2lXbjZsWDg5dVBCQmVQc0QzeFZCMFA4SjlNZjZGdE15bFh5N3F2ZGM1d1JNTFlsNkMrOUlXVzA5SlRzNHJPWG4vdkp3S21WZ282dnRDVEpjdXNTeFU0cmp4UnBQeGY0NkJNZFY4RVFySEVpV2VpM2pKblBUbjR2TkY3NHVmUlRBZFc1UVlJWUpmMnJUR1lFR0NETVBIZmJGck9QTzArZi8raXY4M2ZFWGtRUFVSbVFXNDNVdTdkd1Q3U2t2MkJnd3JEZzNYbHBhY25lZHFzNEhzWkw5NDVHRTNVWERBbVc5V3RyMGsvTmJSQjUwZ3JKSk1XZmlUaGdpSWxIbWFKZTEwVWx4c2FqMFNucUhocTM3QnVMZkhYV0VQZHVQazUzL1M1UjZyRFBqcjdGSWhXZkgvbEN0ZG9TZlRnT1VvRk9MT1RUYlJ3aHN1bVJOK3VVckVlZjRaNjZwdzJHNzZNV0lFNU1DV2RnblJXM0V6SGpFbyt3eGt4elh3ZXRPSzFmOStmTkEvM2tUMGVyckVoRFBwdlBNM0t0TXA3Ri9OMGRmT1d2YnRGUDVaZHU0Ykg4Y29WSy9XcjBXYkoxLzEzQWs1dGFaamlJOE9KU2NRNy9NUE1GNExCUHo2ajR6ZHp4QTZ5Zm5COTZSWEJDZWlyTlYyUVpLVDdxMHovUnY4SnA4UHlvSWppQVZidW5BQ0d6ZVNzbnBrVzFhdit3MEgzSGxaYlNPWm9UV0UzZnN2UDZieDJ0ZnFWL3lOdEFPZzFlb0Y0ZE8zNGhuUUZVME5oclNOeWo2a2xwMkRMMHRoYmZua3RvSTE4eWI0SzdOY3MwSkpwaFZGWXhGUUEvNmZwQ0NQNGlWMUpuYVFmbm5NeVBEeS8xdHhQbU1QdEh2cWo4eDJ3YndTVlZWWGJkbDBGbXpMcUZFZE5admJyb1A0MndJb1Q0d0QzVDlXOUVSUXJIOEdQSjhxaW53bm54cERZcXFpNzBXU1lIcmNCcUlhaUZDeURHRlM1djloQXdMZkhUSkVybGg0MG1QZmMxZk1DanU2MGJWL3BHM2Jrc2p1Z1JVVHlKVnJMcXB2aUZBZm1vVzVQSkJHN0NmNHIxUHNubTczdWdsaXJFL0ZNUFY5WHhhMHVIQ0hwaWUvaGFEMEUvY0hTVUJJUXJOWnNqTmk5VjFleGpRaUp2NXhZSXpVek5NU09OSFhMdFpWbi9DQS9TbmhBU0FScjVmaGo2cDYvaXVONC9WMnljOWpjVUw4ZmkyZ0pKM3o0ek85UzNGZm54aVFsSGs1d2t3dUJJdnQrMThzRXpYaVAxamhjREhXaWdwYTF1MDdsQmYrSDJhaUpxMDAvdFZPck9PU0FoalVJQk15MGFrVWNqcEdBSGpsNC9FZ1FJemVVOHhZQU8xTm1RV1lEcC9Zb1ZDdDJJYjFxa1UwYk9jcXA3eTdMcUQyZWdRUjN1OExtQk9aSW9VNmx5OXBzTEN6SjdweDc4T242dGV3N3l5dVh2SGxqdGlTcHB0dFY2NGF5NHVlRDBzMng5RkIreHA0aVgrS2FENlVxcE5KVWFEVFNaelZyRXZEc25VOUNld2crdzZPVGsxYk9zelBJRFhHUlFwNlhkZkxDd0wwT0FBV3BTanFzdmJQWjF1UEp4N0RoMkhZRDB6UU5RbDJUb2kyUDZIbmNvMHVIOGlzQTdvQUdkcjhvcW9aSFlvbTdpTG1FMjhEcXVxWElJNjhsMjdLMjdyMlNnSjM3dEN1RTVFdFdwQmcxcHRsMFY1dkYrQjQvaWsza2VkWE9zOUpXUUhDRFJLMFMyRDc5Yi84bFRMdUtmMTdSVFFhYy95UlZvUDU3dGZybzJDTXRuSWNOVzJnQ1JUZmRDOTNPM1B3SVN3NkVlQzlWRVZ6aGtuU2RkMXVOOHl0V1BCUkVFV2s2MVFWaHNCVHRHMDdTbU9BazJUSFFpYkxzL0ZXK2tGSktWU0RWTHFGb2kyNGF2dkNmeHpmVW5SdTNWcVpUTnp5YUlwbzdZd2hYaUpqQkdCSnl2cnFmMWNHT2U4aVBWYTZURStFSXBjc0llVm81MjFDbk1aU2lMNkdlYnA4U3pJN0x2TlgrQzg5RCswSi9paGcwUVF4YmFnUEg0Y05xSWQ5ZVdpNWxDeUJ5VmhVVlFWSU40RWE2a24zZVlIVGorMGc4aGJrUE5oeWtLbUViTzdCVUZvR29YMEhWL3FBU0prOWwvSjNwYnprNEJCdzZVV2ZEZzl4QlhySnMrWFY2eHpXajhuNWhYNWRVYTNlVHZhVWlOZ2pCY2J6Z2FGSlVoV1JRZEtNR0RBY0VzMnA5RTI5UlhQL2xnOXlBWXljdm5xWG9TNEZsVUxWdHVYM0pCUmpsd3RTaWRnTE5VTVFSanE4Mkh5c211WXYwSCtKeWZoQ3JWRVdmcTJPR2ZxWks3ODdUdTJsYi81RGFMSUdKN3E0bmlRTmNINFZoY0NIRUZNME5sRlN1OTZUUkRYZ3gwSHBqZlFvaW1qWHRFaC9meVdHZ0hqeTRQdCtrN1piOE03ZCt0cGhpeFJab3ZLeTRUM20vNHA3STVZZERYcTh6cnRlakwyUnFrNnVHS2I4NDZNejJmVnpRRkVsemg3dkZjYVk4NmloUzN1K2RwbTF5dUNjcE13UStKUTkrZmowZFlEaWtKQ0tndDUvWktEQ2I5UlZvWGZidEYrMDc0SytFQmJBOFZSdklrcUV5dE1WSG5HYVhwdEpKZDJ2Vlo3R09iaTFJd1dxdFgxN1l1eEs1NFhtbjQ5L0l0dldCK0FVdHdIeThmMUVPbFB1azVjMjg2cHlKSUtqWXV2blpOM1AwcFhTWDRoL3FHVTMrZTlRaFdrS291TmdKVEkxVlVvMGoyckhkeGRXUkx2TzkrU0oxTHF6MFIxa2s0Y1VHVHR1TlM4bDhJUmJ5am5HMncwWWhkMzZEOWM0MzhQKzZ4YjIxTHluTWpLTGR1UWFZRnAwR0NOdDRrSWx2N29KcFNuMTlGWFliNHBBTGxHc3RlSzA5Y3R0Q3ZRd0Q3SUxwem9jRTNDQStlOUpJaVgvSG5YMVV1SWttYWJzdDNGL2p5RGJWdG1pc0ppU0tTN2h4ZFVtK21KWG1VblZpemdtZWRxSndpL0F2VlJxdVd0QjBEMlR4MFJ4LzdQdnF3OTBBcy96OHE3ckJKaHF0T0kzQk4zSWhFSFhFZ0V2Y1VycmpMN2p5OFNuU2NQS2xtL2hSSTEyaVFlYTRIc3FmMlFCMHlleDZxWFUwNk8zelQyWEhwV0IxdXpVbVpCMmtGQmNucHVtbjd2UlBpcVo2ODFSeWJsYnVnRFJUczd6ak14OTE3WG1UT3ozLzlEWkg3TUNINlZJSG83MkpLRWhhTi8zY0RBUkY0MlRHbExJcjJ4eDZhY0huSXJoTTAyM0pPQ0JpU0FnOUFSZXlhbHVNVnNnaUdIU2s2S3FIZkNacmVZaUlvZHVHRyt4cmRGTDNXWERJMVhuSTdDNXd4VzNWZ2g0aHZ2SjhSWmRBVWV1dnhoV1VYa0lsMzZhdlBCTkwvQy84c2I4aUQ0ZGQxQkMrSWQ5TUxMS3M5UlJvTFNmbFl2WVJPaFQ4T1hXS21ndm1jamFzdFZkZkdGVVhkZVhvOVp1TzY3UiswMTEvSDNTUTYyQ1pHQ0RTd2djZmFPTWt0UTkrVUdRY3cycnpaVzB5OGFSUG5CWDh6ZlA1RGlkOGhjZlhldUlQVWYrazcyYVd6Y25VWWFuVUxFTVM4cXlLd3dmQ095V2N0SGNUNEI2OUgyekVjSnEwQXVqcGNvTW5WeWFHcVZJY2VRL1JVSU9TdlNZaTI5NUJzVFJCZkozdkdYRExZMGxJY2RCV3FqYmFLTXAxT0ZWWk1ZblFZNm5OaUtDSEdjL0xtb2JvREpablE0Z2ZQVjZ5a1ZWR0FUeW5uRGk1cjFCY2FXS0dhUzBYWHgyeWVtclp0SXdhNFNZbXRKOHdoRWhucU1CY0FDT0s1SWtjUVNaN1pGMC80NFFaVkcwZHN1MVdERjAya2lNeGt0ek1jUXhWNTk5TW9maDc1Sjl6ZGw2aEQyejVyM041OTh2ZlVSUDY4VU5PK2pzZ25rZG1Ibkx5WkVjakt6ZW9pZVlMendZcGNMeWNQZEFrWnRLUGpiVlBTWjBXdEVLT1BySjRQM0lHMnJBdDBoSGJ6RjJTMEVEQWNWUlNZTW5yaTV2YUEzbWwrM21PY1kzMHZ2NmVFcnlYNzJwWkZsc0NMeWZ4aUdGamNIK2xucCt3cVVBcmpyM3JKMG5oSGM4ZHhsTlQvUWI1RHAwY2dFUlBSVVorenJWeXR5TVBKTW8wOVpFM1RmZzVXSlFwT2d5YXdTYWVCeUVmTEt3UkU2S2lreG8yZmZFZlYzaFRBTStBZWhvTU13Ty9RLzJRNTlLSXZWdzJibkV6Ui92Z1hKRWE0b0dCK0lRRGErZ1BmdmEzK2E0NWNzby91VkY4cmtKeEZVL29mMDhaUmkrNytaS3ZaVmZuNzExUE5hc0pXWXpYeGs3azJmOW05dmJWaWhFSDZWNEZkak5VNnFTWGcxQS9lR1p5K2E3YWthSFpReGZHcEJiUGJLanZVRDNPQzVRckZaTU9RelFDUU1IZDR6MmlPT08vTW1VQUVJeHZLcnAxanZycWRocHd1WWhld0MzbGVXNmorL0N0WTlibzJJUDdvbnhaTmkxY3J5MHhCYVJ2Q1gxODE1WGhtQkhkNjhJVUdPOHlKZ2R1MGNMeEY0Mk5OVEt3OGZ2Qi9qTFA0V01hVE56alpaWGxjRFVRR1VaeG54L1Z2S0FKM1dHTTczdC83cjBuSVlQMk5NZTBpVGFtV2gvUm5FbWF5UW9LTU5RSWZUeDBMQWdQRkl2N0lUZmoreWx5SmlBNTZsM0d1VHhWRStudDZ2KzdEaVdWMzhTME1wTkFTdTJjZ1prc3dFamQ2dTRoSFVBNjBDOWJ3NUhRVFowWnBlVjNRcDRHMjdGbVZLSm1hYkwycWF2cUJPVEpocHV0WEtjdkw2cmpPN2FaV3U3ckVCNTZpRldNSWMvYllJNklXWXBVMHNPZGdZQlp4aXJnem9JZ014RFkxd01IOVBJcmExcU5aSnllOGZNTmlMMTRIclZGUHBVS2txZUl6NzE2eE9yaldnMXpFRFNLbTJ1NXFwbmlEc2lHeWZxaWNrU1JudytUMUJBVW1vWld2K0dNQlVrWWxXT0hvZlNON29XSjlDV080UzQrWjlsbXBBQ2FpM3lTSHVUVExJaVNCQjAwNWd0azZma1VQSWs1eEQwZkYzUWVsUEtUdDE2eW1pTktQZGFhRkNaWU00MnlrOHlLUWFlZjVTa1ZQU1dQakMwY1dxanFuUDFQU0piZWdyZVFidjJLV0NDb0tobFh2T253UHhOZnRVTy82QmdDNmJXcHZFZXZYV0VISG02ejVIaFhNbTQrdWJBUHEveXpiMC8yMStuRmpMSkgyU0EzcEpvMzVSY2ZqN2x4M2tORnpVU3hGZEpQdGJCQkU4S3g0ZEdYMzl5QVp3bGRJMm5iVVdxdjVZMWpLR3UxUjhnMzZNTEVDUU1ndFVwK3UvbVZULzZ2OVFzM0hiZGtRdDNHSzUyMFNGeFdWYlg3bW0rczZHSS9RTm5aRkxSdmQrWEZJaXQ2REdWSUZzcmN1S1Y3emUvd21lZGhtOThHSTVPbUdJa3prSS9IU2ZPRTEzbitjbUdodUd1K3dUeDArUDZqMVhrQ05JQUEwY0g5d0lBbWZDNjczNVEweW04RjdOQlV4UkdJdGlUYWFDWTY3dmFsZ0Ywem1XWmJkMGhreHkrNFAzZytrSUpSZFk0WTAzeTdQNkhmREtZd2Z2QmlCajJPM2VEbGludzY0N01kZ2lVbmhzYmgzOVpnamlmSHVsb3Bra2M3dnZSYTVBMVJ4eXFQOHludlFoMDNmcUJEc3J0UGZDRTFwWG5CQlY3QUJBNEdaTnp6ZFliOUpET3EvVjkrcnJ4MHVydUNpbU4wUUMrMGJiU3gwQ1R3QjlVcEdGRS9GNFFPTmNHOGZmMmhyZW45WlB6Ump1amgvb0thYTNCQjBKMytha2F4amdQS09vTGZjMnlMakhrSHpiZ3QwRGZrYzFNSGlyQnQ4Z1Y5bHZzZWVUcHovUDYxKzJLejllaUpYZGhFMHNKOTZRako1dkdqZ3NxeUdvcGU3SHYwNlEzYS9UZHVCSmtnakFlTDYvTEZWMzFGZXdHRmI1YytQWUdRZkpScVhFVm5nMVFPdHBWNHFtdUVxOVRYaFJERXZQNFM0V3liL0diNFAyVWdkQ2NoMVBMRTRDZXUvcFg5c0hmSzJhN3FRY0V2UllTQk1QSXpXSUFROHhmRU5rLzVLUERmakhuaEk1QkE4QU9HWEhyenQwLzBVWnhhNjYwc1hWMFNQNUJDNTRtbnVaNlpvK1RDRENNUTFYK2k1ZHZ3a0MxMUFIVlI5MFFscjJ3a0lWWkIvK3EzMis1ci9TcFBleTlUQm53RzA5bUJMMFg1Sm9WSVFTUFBMUktBZHJFRy96czQrelRFd2VKSTM3UmRiL0dNRWtMRzNqVWtTUktQQ0VMWG1FQkNjNmFsOGY1RUtDelBPYXdpQ3ZkVVplb2d4S2dEd2lmUS8vQjV5OFg3YS9yQW9Vc2VKa2xyNmR0UmhCZXRQbVl3NERVMmtMMDJ5SnI0Q2VDd3Aza0FYbmtlc09KTFU1b3lzQ0twTTNDNHV2aFpSVWtlbTVoTkwwL2ljNXdCZ0VXMzEyNVl2NmdNdFZId2FYQXlPOW5vZ1R5dlFqRDd4YTdtTWN4QTdWV0VNVDBpbnpNdHc1RHUvY05KNER1a3RHL0h6Z295VjluQ0EyWVNQa0IwQkJ3U3Fpc0lFejcvT2hYODlpU3dRa1ZKSkxUOUl5aUsxTXVVdmJ0NFhjQjJBNHEvbTNhclJaLzZzaWlDeDJxTU1ydXpjckVuMktuZ0RUM3BaWmJRTGRwdWlNam81dnhrdWFramJYZTdLN0JQL1ZQSFMzK0JLNHZWTkNlYWdsWnlrdWFVYzMwdE1BU1VmQmJqZ01PaG92YU5Qcm1MamphbERsTDR6eERkdE0wd2R1VWpHMHFBT3lXZkFOZ2lMU0NVNGRKV3ZLQnM2RWRDL3dyYXR6VDhCbEYwU1NuS1lMOENSamdqZWZmS25qM3FmS0FZZURkZ2lYMnFsdkpQOTBtN2IveVE4SXh1cTU2azMwRjlKOGdNRURPekUxRHUrTFRqYmNYc3FCenp2cXR6UXBiSlhGKzU3M0ZNMm1KV2w5YU5xQVhmbXo3cDE5WEUweG5qQkt4Tkp1c0FhOEozU3Y2QW5scHNST2VSR2MvK05mODl0dGQ3T0Z0b3Jlbkp1MENEQVVvaTdrL203VHFHc0xDWkcrVEsxL0lHK0Z0NFU2WTA5Z2dDZHppOUpVRkNubmlzREgvVmFYbStZUjA1ZzFFTWpPR1lSQTRQYWJ1bk5zS2lVZFpzYTh3VGROb0lpQUVOamkvZ20zSXYrL2VMRVhFZFNFNFBrUWNKMFRSRktBSUgyK1FIa25UVHYrSnZoWWI2OWZXMHEwRUR2L3N0SS81Q3R0L0pwMFBvdmxzakFFSHdnZDNDdmR5U09JajVWM1Z2Q1JJbENYQmdoZzV0dUdlVzVTc3cwNGZpQ1NyaVlpR3YrSERnV1J1cTR4cGRqVm52Rm5IbS9jM0Z3V2NzMGVuV1J3aWlwK21wckhhT09na2FleVlxRlZFUHJ3RmhQeC9ManZpSndHTGtJbUxPSW5xOHBlTUdVbEZSQ1V6S29valFxSWZnajc1U1gxc3U0enp5N0lrSEJqUklUeWRiWWNqVkxSYi9KbTZhbUNPZDN4ZXVwb29yY0tObjRaNTV3VHlpWk5ZYjVDbXlpUkQ2T0ljTkg1ZXZNK0hPRzlabFVUbWl3QzB0anQ5R2REcHBCN05GZVhEcmRFeEttbHFTNi9hR3krUmVSWkZIajUxcUwvblNnYXFpVEF1V2xWdmszcTczRmF4N3dGRHBMZDNIajhySUxuR3k3aE5DZmk5TGpmdVl2UTY0WVdJSk05ejJxRDNTV0JmNDFaTmRpVlkwZTgwMjd2YjRBTkNhdkJMSXhyMjNYaFdxZm5rN0lCMHFLUUczSTdIMW5iUVJKZTFyeVFGcEVlbTRoNk5VWUZUNlRxbHdWejljbDJvUmI0RUtwQ3ArWFAyNC9vOEM5N2Z4eVlFSlU5YkNPRUtOck5HNlRTODNJUlV6U21oTktvZFgyN2ptcVl4YlZsMEMyY1p1TVFqcFBIYWkrcGNtUUJjZWN2emZDTFI2WngyQURmZ203bUhNaFFUQ054V2RQb2REY0cvM3c2UEo1RzFETFZRU2JINmtSM1NiZDI2N0VycG9NdXlLR2N3WHFkVXZtL05La25tSG9VOGQ4Vi9KR0FReXRhZ3pXdlZFQ05PUXdwSFZ0OFBvTVBnalU5Y1dLajN4UHVRV0ZydjQ4MjF2SnFtTklSc3pqZS9ST29idTltN284TFR3ckoxK1pvRm5WaUdpZ0xVbmtXN1lrVHJrNmRXNXNXUzRwVnA1SEhxVVRQMjdZR1ZJYzhMZDJkNW1zcmZMTHZnWDZ4Z3RnNllxSGpqUXJvMzFlNGxmcXRRcHBEc1d3alB1TWlZSjlseFBaSDlXTFgrdnozckIrZzdpSUIzbkp3aDNwNmZxZldaMy9NUk9QQTNyektzcTVRK2JHZW5ubHNhb2ZjY1hqQUNRZXdzTmJCSGxsWkFBZGhSVEw3SWNwRi9ydTkwdmEwRElYelZOK0NXQndOQzZFTnkyU0FRZFdERnhIWWsyNDdqUUVaZ0pIMXFMQkNDQnVKdkNNNGtWOUpRZzNMbGFEa1lnQlRsbmMvWjMwRHJveE9mVnhDNHRwMU5Lem83UGpXclJETHZnRzdWcHp2ZTB2LytwWFBtaVVmalYzczVRQ0RqZ2VFQktkaWRFSldHeTVjSHRZL2ZadEc1OUd6VzRnWVVhQXlSRDFxdmRsWFUxYWMrMXA1QVQvVDNqY2RhNjd1TDM5Y21mWnlpMS9LT1Y5R3p4SjBlckM1M09wNEtzeHFRLzQwUXBpSDRYblhFa0NQZnRrMVRKR1pCa3RieU9pV240U1JTcGZjTlJ2TStRTXF4OFFzS2t2RWFqZHZXanozS2Q4LzJUNW5haXcyZTdlUUh0WnZVRy9WTjE4Mm5DT3pZK243UjQ5T0xmRnU0YjY2QXJLdW1mbk43WEdUbWpmWEg2Z21JV2VoNURwUUFNNGhQVVlvbzN2ZDkyOEV4OHZ2dDZrb0dqemxJaG4vWW9UMlpMTjhDdklRUHpBT2FwenU0VlJodHozOVV0bTBJZHo4SEdCRFBrdTJyRnNjVHRZWWFBTVpWVCs2L2xGNVZsVVM5K2xkb2pwTVhxS0dpbG9pcmFoRlEyWEpyZ2F1bGZwWWEzRTkwaFUzWkRkOVVBa0QvemdYTmRMSTFEVEZQQUFpcWMybk5qWEVyNGZKMEgvTnRNOUV0STlKUkJEZlRQTzdlSHcrdW52QWxUU05URkNNOTdiUy82TFlIV1p6YysvV1VVTzU2bVUyalcrb3hNNkhxa2tDL1FsdzczZllWZHltVDJDdkszZHJDcGJJdnczejZEdDVLZUJycUg1OU5iNFJBV2E1SWZvWEYvRWtrTnBQa0kvSk82czFtZ0o1R2Z2TjBxdFhCMzIyMUJpb1RWUndYTmYxT2ZwaTM2ODhrd3FUb2puejhyNmFvUkIzSHBEVzJ1WnZ2dUpBSGtJcEhOK2FjTzZqNDNueUxkdUdjMGRMSnhqRk00cEVmQm9IR3F5WDFZcjYrM2FGcWlqVDBCQ2NKZ2RaNWhXc2d0b3FjbjBvams0KzdCU05Ya2F6RnorRXd2M3ZnMkorQXBPeFpwRmlobGRVNDFsU2xyUUYvZnpYcmpYc0hwNDB0enJnODlvcXRMRDBVVms5WXJwMkd4dk5hWmVHMUMrS3VXSFBTZjVkcDdBSy9LQVE0KzhPYmdzVHBIY2FKTmk3T2Q0QmVJa1ZHSzFUVDJLZjRDdC9IalFrK2p2cjVJQ0Rla3BrZ1Y2enRjajBFZ3M0MkpFNXkreWxKOEFJSjEzeWp1QVNoejhXZit2bVU2dmhmMlh1UHBiZVZvRXZ3YVhvUGI1WUVTSGhQK0IwczRiMS8ra0hoMDIrbVozWWRIZEdMVmx4ZFNjUkhFcWpLeWp3bkxRU0hXMzBUbXd1aXRQTVlZeTBXMSs3RU1PakwyQXlFSkpvcnFvb0dRZEpNSGZoeExTK2JvdlpYUEZCdll4K29jL3pQS3JTZ0laOHF0Q3UvZGQ2cmYvYXgrcEFYRERjejlDYVA3c2VtRzVnZHlxM3hLdFMvcVp1WGRWbkxPWDJwTFJwcFJvcVQ1QTE3Z1hWeXdHZ2ZwdDZqVVZuWlZkREV2N2JRVEYvT2pSSmlPcXhlRHJwQmFwSmdRcEUwZ01jVE1BREFFUXlwb2pKNHpZLytTRUV6Q3pRQnJuTFFkbld0bjJWMGt6emRRZnRmYmczby9xdTdaZEtiRW9iV3V1V0g1Q0F5OGJZV1h6aXp3eXo3ckpuOS9kS1ROTk1GaDRZUDU5VjlpSmFYaFFRaThEUlVEU2NpL0ZrL09KYzdoMHoyRHdNQTlOR0daWS9vd3Btb3VoSUx4M3FWSkRQaXI0L1pBYVZiVmRPcTBUVGhkWnlreUVvRjhobTU5VVFRQkQvL3ByNGFYays5d3Z0TWwzWVJ3TUdnb0M4VTljc0syYkRtZGJocnJMSThhTVhHTGEyYVB0blZYOEIzK2lUNzBmeXdYYmhMeFV4T2E1bUN5MlJIWGJiV2tQUnNIMkZ4QUwxeUFTNDNDc1Q3Zlp2UWlad0l2cjZadzFWM25YOTh5OFBmYW8zcXdMbHZKTmpUME1rQW9CM1N1UTgrL0kvLzhDd01PUWtlVmVCNXV2ZW5OdWdDTWpLcjA4SE5qQUFNa3dIdjRUbEcvdmtKVkR0MDlsWXJYdUVnOVd0OGN3UldWMDJHOTJ3V0w5MUY5MmZlNlZHUi8waHRBa2lHSnVoSktSeGNONzUvSWQrMzZ4TTFVVUxFM0x1S0xiOHBvTEViZStDRzdzZWZKL2FIZmllZzltUlNFRkFJOGtrMm5VM0xJSk4zNDhObmN6UytMdHZDLzdmUzgzK3BwaFBybUJxdG5PNEUzQ0t1Y2dsa3RWT1JqZjRxT3EwbGo2R3VJNFZwTDhqVlo1WUZNaHJBMnVDYUJnczByckU1SVN4UjErNmZIMjEzbmFBaktQczlTL3ltb2ZSNWJmbXlFbEM2QTN2STJFQjBDZWhwbENETkVPbEpKektqbnlUUHc2OFhmME9wd0d0anc2MVFIalBRcm1UZEVPaWpHdExYdGpGbXZWN0hDekF5V2Q5MlNtd0NXbTZGRHAwZHR6TWpjQ3JkRzkvZU9oSDhDUFhQbGtNUG1kNUY0enZOY2ZTQktFSk5FU2lpeHdsUGJwMkJhNStLUE1HbTBKTy90ZHhOSUZ4em9lcUlCZXdxSjNONDNIZGtBUnpGbGZncXpTSkRMa25FSGthYXlZVVF6V2dvREdzMldjdU9vZlIzT1BNOWJlU3V0S3dNMTVQWWs3YktjMmhWbitWRW83L0ZudGFKQk5xTTJVUW9QTWZmMnZMelRzRSsvZjd6dFRHNm1vOWFUR0VXRmMvMWpYRUJmOW1XWjZwZXVYWm14c21DaEcrdi9FRklJOUEwcm5VcmthZnFaNDZMSzh2bWRXbUxGS0hXdHVPSzNObi9XRGZEd3JSNFhKZTNyUm5kQ2dFOUpnNjJsN204UzFRQm1EMlRQL1k1K1VwTWRURGFwMmxBMzlHQjRHaE10NlduZDRVOTl2ZE9OZFZsTGlpT3MwbHQ5VkllenYyWkpTTTJjRWZXL2NpSDd5V1A0NmJWQVg5TUtCbWtqNEErbGx4Q3I5NExvS3FYY2lrcFEvSXpibUpOTWZOUHcxVHBYRFZ3QzhYeDdnUlZkVEpoVStQbzd6eHhCSXhPUjJFQXBacDMxZHFpVkhkZ3E0SU5iZE90ekVCSndubk8vdkFreldiZ0xoaEZKU1FWaGdoNmFXQWdmRCsvV2ZDeXRpOTdzek5qL3UwVWpRcGt0OUwwRU9MYzJWZDRrc2QrMHJFSWtvczNqWmY0TFNDRFJEemlidDJ1ODd4ODdnWEwvblorcnNCOWI0bHhFQTRVTEUybkdDQzZqUXhaYyswQjdRYXh3aVRnSkVIRUJ1cHRPdC8zazF3QktUeXJGSVVYYTMwNytvZHpSdWNWV1daL2ZyMjJJSEhSeGJWSnIzSUJVNVFxTEsrbjU2R3NqUWRkVXFlSElPSGdRZk5Cd1VVOFZ6ZG0yK1FzSkQrZks5MlZxYXZqeTVSeXJFMis1QkZRbERZRGdYN0cyUExZRERUYzFXanJiTmg0dVRYZkxFQUVBRGdMSWhzbzhXOXhHODl2QzlrdHZpQjFJbXJqLzZyck5tSndESVAvcWRvYlBDNmUvcyt2b3U2YXF3blFObFJaNHA1Mnp0RW80NnI0L2w2Mnczdm5OOHJ5K0lkRW5LZUxWRS80Q0dHeGRVSERqdU9SenN6ZGlvUFU4ZHk4QWJtdlR5c1I0c0ovdXNpeXlCKy9BR2cyUU9KZjJ4NE1PZUY5MThZSm0xMFc5ZVg5WXZEd045Wm5xN0doTFdVVzZ5REFEWngwYlRrSTJkZzY3eDZBaHFkLzYyT2ZkeHZYOUZxYmRiWUpYRGV3QVZnaEgxY0xZUlB6aWVKUG8yZXdrcmwwaEdUYXh1ajRyWlppTlc0amR3RER0Yjl1Ty8xYlovSUp0ajR6VEZ1dzd4dHB3VlV2ZWZqSFMwRkxJMll1QklNUTMrSUhqOHBLN2lpZy9kWTBqM0N1UG1pYm5UUm9VOGVCRStNODBORHhFbGY1dGc5dFZQbkEwSjI3Q1NsZlkzbjZZZXZNTzJ1U1NJMm5mZjl0OEdmUGpTYmVhdjRGMW9haXQ3eVE5dVdLVVJTVk56c1gzMTFmSC92Y3U0a3BnMmdPK0dLeWhETVBuYzNGSmhTZXZ1SEs1dndwQ093RzlnT0lSalk5SUR6MklPUVNRY2ZqNW53UDVENUg2WGcvR01BTEpJVWRWR09BRzhKam42b2M2alNaTHJucEVTK1JvV1hiOEJQcmZrYW55bGJ6T2RkT2ZFWmhySXRHaisyYVVDRUN2TnVtaGsvS3NhaTBKNTRoNEZISEllbkNsQkpVNCt3SEFtNUNDa1BWdG1XTWFIRzhieWQ4eVNKZ2R1NEZGdlo1M3Y4QndGS0FlVGNEdnVma1h1bHhKMUNtc0ZRREF0bVd2d1lYKy9NWnRVVEFDZ0w4Vy9nSDhQbW4zaVhjQmZmZldZSHdMUnNBeHdDV1pQdlE3TlBWaHNjUS9WWFFBVFoyNDNEcXBYMGhtbHBpbkNoNHY1OUp6YnY3RFcyeGRVWkpKbTc4N2IvNkh3R3BMNkZwMmRHV3c4KzNzU1EwR3RYdnpuMEVyL3E5b0g5dktiMXg0SEgzS0IxaE05VXU0cVFIVmYxdFJVUElsZThWOTcyL2hpcjdkZllEdWQ0ZjJuK0pNbkplWW53Q2tXdGVzcXByQnNzd2VabVNhQ2tJNVkwUGw4SjczZWdPM1RMd2lPNzlaNU9keXkxWHpFMVlnSGlybDNpQnhTMzJuMDFkNEpCTjA3YkJ5bW5TOCt1TnFGVHdLZk15b2ZBR2hDM3RVbllhUFViYjg3TGd2d09rODZNcGt2UFRTWWNtSENxVWRhS3gwVXZ4NklmOGRKR2YzenA5OW9INUUraWZmWUVwUTZPSG5zeHYxNlZPb0h5VUJoSWcxNG5Ia1B1eFpiMFI1RVM1eXkrdnNqd3RDb0xQc1NVbHZ4V1p5NDh1K21JeDNIeGFCVCtvTllkdWFBSG8zeGtxN1BXME1zaXZKVWJKK0NyYlMrWElHelBud3ZXR1luOWt0bFhuK2JoUGROb2NqS0pFY3RLdy9hUldYMG5laFk5UHU4MjBDenFNQWp3UE9FaTZqWmFCOGtMYWVwWFJBN1dHZUZpMmJhb3pFUW54TkZrTjFkcTZOK2dRemxVYWhsa1YvZ1JTN2IyYk50dFR1ZmZueGkxcVRhNmJZZWpVYk9sZGlST25LYitxM2kyUnltM1pGYW96RFhLYWlhZGVnRVV6cUI5cVl4SkhFQzBGaFZLVmFPWWwxL0l6Y29OOWV4MmVKRUFSQWR1Ry9pSVJZdkUxeWZTY1BMMVhSVjBuQkFXYmpJTWlLdXREd3l0NXpEWUtEdlYwY1EzQ2VObDhrMVN3U09vR0xKdUR4cTBjdXlWS3F5Rm9LOHprT3NTNUM5NTdIb0dIOXEyTGhMSXM4eW91dnBIWkZLbS9Hd1NMOHZhdXN2bVVrbmoxMUROalY1SWhjeDYwcS8xaE9xeTY2V2JUcHJZMEpzT0ZZaUc4WDlyN1gybmFEVStmUWhoTk1GU2pXVWFmZnVMNE9uRlNKejc2aU4rNFllRWFqRzBoTWRjU0U4dUt5ZlJUZnM3TkMxam1mVjQzOW1yVU12ejI5VFM0ZkppdzVYc3k5MWZtQmZLZ0RyVWx1NTh1SGZ0RGVUbG1HdW12MitEOHZVVktobDY5cHAva3Z6QTk5dXFrVERWOFhDcS9pbGV5MVZZZEo2Qk9xRmdxUXcreE40UVBJZHBWa2NTanRKdS9KNGZPMGxrUUJHRGFaSUJJNkVDV0NCK0VzL1p2TFF1WmpVR2ZTK3NLRkVaRG5NMDJMRVpCL282ZWJHa3U5Uk1FWm9FOWFCdUlaZ2ZKK1ZXZC9ZdWU1SEdnMnBqbUE5ZW9QYUFLOVZRQjhkZXlBcnF1VzJib0NqYlYvcVdaY1BNdko0K3MySlNTakxsdHlLbnA2NURXM0NCc1ZER0VLSmhvOXZxMlZyUDFONW9Bb1E4SCttRkxGaGF0SGNubElYenc1dFlCYlU0Mis1Tk1PWkNRRktac1YxZDREWlRmWm53RjZYV2tZb3k3cUxxK0JISW5ISjdRUkdRQ1NRZS8vUGN1QzZmNXhIbCtmaG8yeFZRaDV3ejROakZGQlNKaTE4QlZlNE9lOGV4WHI5RVVidklFM3lZU3BJTnpXWXpiYUFpelhwN0gzQmxZYzdZVzRCbmZFMndiK3hzQ0JWRzNlR0FSRldMeWNpdVJpZmFvUkV5aURlYlEvV1JaRmJSRFpqclUxejF2ZXFZUVQwL0g5aytvQzQ3eTZQNEtaRnc5ZzU5Rms5MzNyYjZ4RStYd2ZzMVk1RllzUTN2Z2tGejc1bG5yRXV0UW8xWFI3dGk0Y0crM28yRVlZbC90V1hDZk4vdmRGbFBPam5JVXJ3SHhDMUpsaUE3STBsTmY2QnJYSDlSTWtsa0pNZ0lJOURFSDVaQ3l4dU1ZcVFIc2JXUjJHcTFmY0VMemdNU05uY0NmR1NGK09zRXhHbzdmWkhIOG5GNjV1T3djTldnSzlCc0c1aGNlZUc4a0J2cVk4Nm1EckErc0pCRW1LUnE4TFBjdERIT1RKS3ZvZ3NITmE4K1F0RDVEUDFZQmxCc2xjQ29FU3Z5OXRqc0VKR1UxS2diK2pEZG5OSFRkeVV6STZ5VUZhTXN5bWJ6cXNyRnlPdmJYTDhvSm5TY1NSZWpsMEwzRzdPMVpEcElYQUJIU0wzeEd2NWpsS0lpeGw4cVBBeGtmS0JpSXlyenhUT0tYcDdFTmh0TkUzVy9WeWwwRWhKRFV6KzdJRzY3RDIrbjV3S3RPdmRLQktLOE1UQTU4SmhBQUk0RGp3d2FOVnN3bmo1TTFFVGNBRHVBdEJ3TVB1Y3NITzB2VHFkYzE4QzlzTG50b250NkNidUtWZ0VPOHZJLy9BeVJNeVI2ckxlVjR5TEM5Y2UzQ2xWRTZNbTF1R01OdkVJUTB0aTJHNHhNb3c4N05GaEdxWnhyc0NvV3plUlNmeEhuS0lpSGxEcktHbmFMa1kwY1c2RFlySklYbllzM1cxRVE2dFQrRjB2UU03VnViQWFSVmpPSUtHRFRlWGJPUW93K3R2RCsvUkZIU2R0dnJwb05obW5uemlnenBXZStYRFlvQTM5aU4weGZiSmtLVkJpaTdPdER5aVpPdE1xWTdEUGp3cU4vWW5CSTI3OElnak16S3FPdTh3TEJ6Smlvb3FFd0dMVG5lMEh6eldlUTdiemdvaEdEOGR5QzhMVHQ4TUlKYnAvTmFVVkc0SGtDNzZ5R0lPa0toUUM3dVRiaVR1WnA5V3Vaa0NlK1RhbUd1am9KenZNWWJhcEZscW9jSDhOTmxVRjhSZGhoNHNLVWZIUWd5VDVKc2NnblJhWEkvaUg2djBRZmdJQTVNbkE1UE1RbkxqYmx3MS9lYkcxcm12dzBjOGxaQnRyY3VrMGwrNmxsQWdkbmhqRDJHQlFMSDNoUFJvNnJZZk1OY251d2ZFQlpmcVlXODh2ZXh6a2hZVEhWNHVOcUpHSzB1YmVvU2hYVjdFUGFHUXYyYzhXNGlWNm9JVlN6ckxiTDU0c0RZRDZhaGZwYkFoSHlZeTIveHZpaXpuc1orZ3oyL0txNzVyU243VVlWci82RUJMQjZEN3lUbUYrdGJVNTczVFcvMEYxTTZGU0g1VHYrSzdwY1RaZjVWYXBOOVhtWGQ0ZElyY1RxdUNxbkpRVU5vWC9Ub2UvU3F4QXNnTU1tUTJzM3dLRk1XZE1nRmo2M0xmaTd6THBWZkUyYUplNklmSnVjRmZzZTBsanl1VXFqVTZEZVluNXppMldaa3MyNEJJVzJGZytNdnF3TDIvQksyQ0dUYk1CM1pTcVZPUllPL0pXTTNqY3FGOVU0THJWQ25VRzIxWTJhV3VNMitCeTU4em1GUkhIQ21MSmd0ZkpraUpOUlF1dXkrVUtnVmVQUVlDZ2dmL28zTGE2TnZESHFyQllCdjdSZW44VEZEUDFsN3ZVM1I3Z2RmMDhYbjNsMmN3bG14a3ZTaW9VQ29wZWdyRzdSU21NR0JZQjVHVk5WbitQQi9zRlNMMGNPdWtIbml3MitWd3hXdTQvc01ZYXlGNDk5bTZINTg5eDVJOGZINnY0QzB6cTJNQVIydEVpZjBVYnkyNE95aWVIZTVJWGpFdHVhbFFVY0t1dDRVcXZRNWRZTGhaakdxVGdQbi9ESndPeFlLd1NHeFhaa25WQy95MEJLd1JUVDl2Q2xlRms1akEwMkZSQ2dZSWZLVjBaOERLSWZjMElya3ZmS09yOWppUnpsZWx2WE1zcDF5ZTFuNDM2aWwrMzhpaWZ6a3JnWU5jYmdUOHVmaGZaQW5vQkZjMmFqZXg4NXZOVmh6Tk5lQklnZ0Z3eWgwR3hIbnFGdEpZZklEVzh2bHBrNzcxVGNnd0RvZmR2Um15Ri9KMi9qWGd1VWZ1OGhEeFpMWVo1ZUVnUlVIanY0V2gvSXJCM0c0V0F4ek1GR1FXR1ZvN3BjWnBTekQxM2l4Rk9GZ0wxNzZHbjJUZm4vTWRMOGNDYVN2Zy8xb3lIekVhQUd2U3R1VU5EdzFOWUQ4dlpSb0Q5Vkc2YnJvaWRjTlU5VDYzTHkvRGtwbGtQZVAzMGtiZFkrVVA1K24vNUowQWhkejhFOGZFdzB1Q0tvRGNuN05XbHo1OWFhQzhuRHRWaE42K3J6YXdlTnhSM2YvRXFTUURueUVMRUR3eDNzc3pheU5IRDZhSGdjTHdWVmRGNDMzUGpxZ2JlbTlFZW4xc283VlpDdUhQakpEc3dhS0FDUUNSNkNZL3M2NWtDV2J1bXJKK05uUXo5RnVDT3U5b0tkODRMRVM0YkJOTUtjL003QU1RRmpwS2YyYktRMU0wVmpiRXBtZE5RSVRhV3QyR3dIQ2Y0d3ZXRm0zWFZjSkRFc2N6TDFpazA5QXdjSG1ibXpZeHM0LzE5c0VnZzlWMTBmVTlnK0dscHpoZis2ejBoSkJRcHo2Z2FsY3NrWU8vYndOZ0NRaU02UWxNWldEZjRoaWVCMmhJemEvQkpORmNGK1prdHhmSEJxcUtaQ1l5eGJraHpOdXFhc21KOEt3SUs4b004Y3VMcXR1MVlCOWpQcTN1Qm5RMmU5anBzODYxU21PZTdsWm5yekxMQ3oxY3Z1RU52enhhNnRHdVlubU9aeS8waHVEUnhuZFQyVyt3WDZDTHE4UHFVeGRvU0ErVDNsVXU2RlB0MkM3ZlRPcmxxZkliY3VCUnZubjY4UFJEVjZOVjBhOUVDcjhTazR0RjI1S0FwM3lwSHc2cTkrMUxacWJCb1pKSEJMdkFrNG4yQmw0VlFIYklTbFlUMFc1NVhPQXpQVlFzM1RWUk03YzJhZFhNcWRpbDRPdjhUNUpTZzhEanNDS1hBQWwxaXlLTDE2dE5uRVlNZXQ3elNRVTVXdUtqeXVYdDZ4blRwVkJDeExjM3hxcVZKWWlHWWpkTnY1OTU5RXFOVS9uTG42V2VBZWNBdG8wUDZzczFleWtLdGRnLzE3QjQ0d3NYVmgrOGZlRmppVkY4Wkw4NGlVT3oxQVpDeHBmQ21xbW9yTTNmU0ZkcnRKblUvZUJQeHAxMVRPT2VLNG1nSVFvNU5NSWZRZU9CNU5ZaVM2akJsOTRxRG43dFNCUEI1SUtzbEFjVUtZWGIxQWpORzg2Zi9EbHRwSWZZUFNiVmg4Ni9Ud0hnTWNVeEJrK2ZiZ0NiYWZQdHYzdGJDQjBicnBJcDU5TXlydXp2dzQ0cWhMVTM4KzlNNll5aWU4SVROQm0yR1RKZDhGWHppSlB0UTg0SHhqNnU3NVlEc3MrOHk1enMrSS9oN25oSGEwTmx3Q1FrcGRvU1ZzMTEvWUdRRzBsaTBtWUJDMkhQR0NkdVRBYzZEYzNDcUhKa2FZUDZ3WkJMVmkvMVJpZXBCd0RWdTc5dXQ1eThaclhCcmlBSm9IS1hwK3pTakRUUUVEV2VqSDM2RTZremdtT2Q5WTR3TXlTNk5YcHg4MUxFeExiSEZqWVU4dU4xYXFvM0pWeWZQUW5VbWhLM2cveXRiSUlMSUxHcWdndEZtZDN5RnF1K0czdk56R1RnZDJoZTZ5cmZCOHNJZjIrVFVhTG5PZnNTVHZVVzVSZnZqZVVmV25kWVNHWU9JV2hsYWl1Wk5RQkxTSUVxNlIrTEphaVJycXRva0JRTzlrSVA4V3o2QjNLUnNaSFNMakc4Z0YzeTBXNjFDangwbktFZGVoS3FKckxSdWhQcU9ldkovUFRwR3JURHZwOEt6OC9xdG82VjVXblVzQjBoTTljc1ZoT3VaUHh0bCtUNkNtZkkzNDRxdEZqMnA5REtDQ2ZIRXhOaU1pOThVNU8yYXBOWXFBaUJCOGhuMThjaERIclRuVkw4WVlGZnY2bVI2eTlGVC91ZlgwdFJ6NHIxWXdROGFzWTdLdThWUU5vdSthREkrRUNjbnBMSDdCMUlENTR0TWQwcm9odEJtdDYyclMyazluUFozYjUzNlJpWnJTQU1WYXBSWVVtSG9HeFg0bTNQK1UyWkFSYjBIM1owTzVRNkFnRW1tOHduNEhmUHBtZVAva1V3TUJwS3lvRWFLZWJwVERub2s2OFU5Sy8wZS9aVXF2R2ZOQXh5NUp4YWdzL1g0c3FKbno0NXczMUp5K01mTzIxZjBuNFR3ZVFIRWFzK1NZNXM2cnF6a01Lak9ZUU1WTk1PTjc0S29KMFRzb2xlb3hwc0VRYlZCRFdmZ05UR3pIbERjWkZjM1ZSMW9nd3FOSk9ORmErVlYzUmIvMXJ4NmdkaUFzaCtpUjI0RGJIVVkybU56ZG1EQ2psaXF0VUFsa2VFMDNEcUFBM2J6SC9Ya2w1aUNYdDhuTXk3S2p4V29VdklOSTQ3aWxDWmd2bzNtMDNua1hKRmEydEFWcW1YdTNRYStmOTk4dEpjZ2s3SFJIZVd4Mkc0aklWZ1h5b1I5ajdDZkY5L0lFVzlWVkJtSnc1enV2cFR1M0NhWUhmbkxROTQ0dGpMOTJtaC9oNGxHNlhaQXhHaGFZYlhFYkdVamZWZ3QyQTl6bXdIOEJDbGRta05vWkE1WlJCcmNSUTFmejNjUmRQWndxZlJVcmxzY01hbGhDK2I1T213d2NRRGwwTjFuMWpxcldlVnFCRjdFR2U4dFFnVC9Kd3QyOGZFUnArMEFhMjNtS01VQ2J3WFh2K3ZDOGFQdVE1NUo2bVBMclgxVHJYQWR2OWswY2E0UDFLdVlNZUcrbUpBTmtPTkNFbEN4SUVxem43alJqYjMvNW0xRlMzc1RCWXl1cGpUWG4yV2pSUkZGWE5wckJibU5nc2V0clBPUjFEeVNYRjViZUF1bHhCQWRVcnhxUWhuNU93TmxYMDdTM3BteWNRSGRLa1ZNS1hMTFBYMVpsV0xHalpMMTl1MUJLclAxRHV3Ynp0b3V0Y0RtdVk0b0lkOXczTXEzWlU1aWROd056MnA0MSt0YnZmK1cyaU9qUWdyaUpVSW1CNjhsWE1wOUtLT3hQNGNRWDJqTmxHUGZTSmZRdklrbElNUkorWGxSenNnT2FDV2V2bEl6RHlXQUZBa1RqdHNYdEJDSXZmQUp6RHpmR2Q0emNDSUN1T1d0VzBHZ0RaUzJONUZjV1JLd3BnQmNHNzl0c1NiSitHOVdtTEcrYUl4VVAvVmZ0Q2ttUVpjcEM0NWZyRGxzaUFsQjhyZG1SL2VrZjF5aG9ET0NXeUM5MEZVT3hUM3lSNUkvSzlReUJEWDhzZjFEYkMzb0pSNUp3TXc1aFZHNjJ0Ujc5RlJMZVRzN3ZUeXJLUFBPakZ3RzVUK0RxK1Z2aGhmNGJNemJLd09RYUwwdEFDbktuaUI5N3FNcitaS0lPZEFHMncwckFVR1QvR09ySEFLaFNqTXg1UnYwbGFHNFB6bkpmN2hHU0Z1Q0cyNFpQZzh2Ymw2bmIrU0R2MlZXY2QrRm8xWHFXTlJKRGY2U1dqdGJpMGsxUUtWSDJFV1Q5UTFKb3lWd1MycHhyajVvUTk4MFk3SjZHS2kzTFphS05SRWsvRUxUWlVUK1VNUlMvelR3TCtKSE92cU00dVRjY0JpQkxMY1FOS1ZmOTE5QzlFWmlHa1hqaUxQSlgxR2M4QW84Z2JONjVuVHFqVkdTdWEvMnp1WUovK21pampNT0o3UjE2NGtPYTliT0Q2dUwzcWE3REdPb2lqblByTk0rOWtlOG9VQjJvVmdtYVN5bWVvUEx4RHFITGRvUGNvd0NlOGJxblhSdCt4TEF6L0pMOEZYN0lmTzhSUlM1TmVUL2I4ZnVZSjlaVWhvL3dHYXZrZHFrODRuMTFIMDBoN29CMlVKTW1VLytzdXdhQmd5d09iT29qMjhqOGZtN2VCc1I2SmdOc0Q0QTBNMTRKTjRFemo4TnNpbGpVb2NPOXZYai9RUmpVdEYvVHBlTzZ6cnVaN1Exb0ZqcXVaSmpFaEI4Y3pVWFA2Q2FaeWlORTg3OXVESEpnQkxFS244QUFPV2FiUHVsbjlHUjNxL2FxeUtlM05OSVQ4RlRoa1Y0d2hPZzd5RWNmR2g4OU1DVXVFcmJpZkZtS3lBRVM1Slo2cXlqZEcxZUtGWStTd2hHVzdHWlN4QWJFZmdOWm4zWFRJZkNzODk3NHNFWUtocGg2UXl1UHhrUFpCelJGUUVGZDFUcVVwWldubnhkTzYrWVJoSlpIS252Z2pCWkxkN1RRc2didjUxcWJjd1cvRjV3em56aHo5VTFlbzR6TGZyaUVjSWZEYmlMK255TjZjdGd3TjhlbmNmNWxna1lUblBUWHVLeXZnMys3VXk1akthd05OektWckM1WkdoMUFQb2JqYUF3V1ZHV3FWUVhyZ0czK01lQ0M4ZmowK3VheTV3dXRISVhGbHhPdjZLMUlDZjg0Q0pyeE8xRWJKMDBGNzFhTUcrUUxoSWZBYmE0WTV2cHE5cXhtcU9nUURiREt2cmpWNUh4T3dPQlRHWXNpMGkwdko0YVdWM2p3WWlkbWZRbTF0b053ZzFZTk8xMlVRVnJOZE15KzI2OGdLcVZJLzh3dTdZTzkxaWg0QmRBWHYwTk1nNGFIN0l2ZFhsczBxTmhyTzVtNWkrZzBPOVEySjVRS1dnMXlKVXFRcGpzb2k5WTIxd3lVbFZybjZscG55LzczbnFLNzU3NG9MMW5JbjFISCtrVHZUWGxWUEg3T3hDZmNQWWJYTUZMM0RseS9ZSk16NVhxdnJzSUNSeXdJdDB3NDAwdHdzZS8vNmN3TDlWZUpMMDN2N1lDRVl4ekVwdG5oalZOU0JuUDFyKzJqTEJrRWI2dW0zamUzK1RFZFZ1YXJiSU80WTZsaUUvUUNQeXVBeVE2WDc3Y0RjUmNCTWZHc3N2SzRMTVpUaEtpM3hvNEF6Y2kvOTFBTFM5K01jejQ4d2lIckd3d2NZWlRiQlJUOFo5eHlGZm1zNHBQbVVYRkRyU2xXMWdLQnZMNFRYNzlncDU0dDFpanhHYVMvTS9IMFFnbUo2bGFLRWhwVFgzMHpSQkNwamhBRVVicjZ2emtxS1RjYmIwZHBvcEU5YnFFQmVvM2NiY1J0SFhBbWJnbjdySUNDeS9qQ3FnSG5hT0pSK01WMmRuUERXeVZnMnFBMVZFRTNBTTRjSjFEYlZPaGhpaWtUYzNQb09hSUdiOURVdi9DdVBlNy9xUmFrTmp2VE1pZzBTVlg0VDhSdnpteTRqOVdydkNuOWlGcnphMHllRDQyMzVONmlyVHdLcEZLOGIzUStUdnorbHQyR0pMQkVzNWFVYzdVSllldXA0NlFVdkJVK1lOQkh3Q25UZ1pSU1RmdkxFM2crSUJ3ZnRVQU9JaTRzQ2JBNjEyeHFEM0pwT3pOVWtpbFAvVU8zRjVjYnJOSFc1THp0VUxVTTZQdFRrZS9wTXUvaE1rUEtjWjZYWTZ3b0xLQWY2NitYQTJPRXAvYXhYOGlUcTFDdWNNY0pJY2dZc0ZVbXZTR1V0SWJJcFpybThNMCt6ZVBMYnVXNEdmd2lzc0kwbzBwUC9kdy9nZlgzSHVXRkluL055NkZTcnRRZEd2TTNWdS9WbFp6MlROZ0JudTBTVzJIUnNLVkVFd1VpWlhsOC80bGRXYU1wT0VjcU5zZFllSVc1b2h2QlpsQzJFdGM1QnNjYlBWZW83SW4xbFBMM1dWQk05Z2VLVXhoa29CdWhlTlQ5K1J0bitsU2c4RFZZY2hBVHVxbjlJaUNhUjRkMXV4V2hSRjhwMno3UlAxeDZBSlBHNDdKMFJNc21pcWdIdHo1M3IrRzN3WXc0cDBTd2FrTHZCdmRLNWZOa2diK2FGTXdLWE1HSUxKblpXV2dLS0hOWEI4VGJJb3lEVkpEUGx4ci9ydHE2SC9kbFlMc2x6QjZiS09pbnBGYWQrMkdSc0h0ZTZMcVpYRWNBOVQxTW5BVlBQUUhOZFFmK202Z2JqYnROeS9Kczh5REZ2QlFzV3BVVnY3VkIzZnpVOUtyam1KckdRaW84V3ByNDJkTDBOdzZtNkZXTW92OGpmUjlVaWFCV0ZqRkNrL1c3Z3laTzVpVXdkdGNLdFpXZ3NvcUJFYkxUVTIwTmpKaENBM2xlU1hwNHRXNGFDL0hwenhrL0JVN1hRVmdqaXlPcHA2d2VzZTNOeitZUE0rSndoT0ErSzBQazNMaWpQZmlrN05iclkzYnliMjZFOW9Gallod2RxaUU4ajV3bndaSDJrb243MFBqb0ZPTzZVaXBxM210Y01OdEg3RGVpRzZlbkRERjlIR1lYUnZEZ2V3NTU1SkpDZC92Z3U1cFd4L1dXZmdRQUZUeVluS1ZYWlg4aTZmTkpNMjhEczEzTmk2QlZxUTJpa2FkWEt1MHZIcDFUUW02RVZZa3V1Yit6ak5vNFZFL2tJZHdLZ1BwYmp4N2I4d3RwSzNrUmNRcVY3dGVtM0FpaW84dituZHhPRk5BVUplWUdiZ3RpOWFicWtKK1VxVmQ1ZlpoMmtMOVJBTkZjdVBiUER3MzFIUm1GbE05T0xwRmNQbmtsNDgrNTliaFQ4T1ZUUmdIcWoxZHA5WEZtV2NGVkF1WHZMNW90NjBGc1YwcmVqMnNNL3JvcWliRFZBcXE3bmk1WFg4UUNjZnVMWGdhWlJ5aENnR1BTL253TTFPcEdjWXhUMWVkcDVwblhrcnlSa1hFL25UcVNrdk9SeGhUV0MwNFFxaU5RMW9MS2ZnUXhWTGJ0TWZ6Y0pidVlDOXVYZlhWZUlOTmxvZjZtdlErWjBwNzE1RTRGcVFyZFBxb1Y4V3MzK25ZQ2RyUXI5bGVWSXNHdHNRcGR4WENRNXZlMTErTEV4SWlxOHNGak12WDZUTjZhZ2h6YU9mUHJ5ejNCN0JoYUNCd1FuTTRqdUJRejhjOHVEbWRreHQwWGZOWVpXMWFRcTgvRGpwWDFSRklXdjhUNTEyYW1scVFDT0krbUpSK3FtT1E0MmErQllMUklSbWZDZ1JWVW9malFIU1l2OVVHcmxUWGtnUmlHeGJ2ZUJ6WitvR3hxamE2c004ZVh4KzFVMkppMVltdEkvVXV2ZTc0aC9tWmFCQ216VUEyZHdwYllRbnFDdTluZWJGSVZBdHhneWJUdW9YTytCS2R3TWpNVjdGQ3NMdFJyYkM5SThnbnI1Y3AwYjFKWWhWeVBIb1dibVk2SXd2bEdsdEpzbmF1emZWTVowM3BNOStEVDJ5dllmOTZvY2d2eG1CTXZPcjAzNytuS2gyNmQ3eS9sN2I5QkxTQ1lxRzhRK0Y3YVNqQ2pNQlNwSWVLc0xFMjNEVnl5QURtR21QQ2hlUDV5QWRyVlZvN25mZnlXRXMxRnBTYXV1YzIrcUtlcXp3bzlhVncyRUNnak9oYnhwa0dOeEJJOEc5amp3MFBlZzhFZzNvSWlnaHdiTmdCSG16Tm5uZ0lwUU9Mb2xieWRVUGtUYlhaazVJTjBoYVpEM1FvYTZtRzlyTy94bGtuRDRUckJQVldFMUJwM21CYkN4Q0JBTFFRTHlnVlBDQkl0S0RSb0k3REc4ZG41UFU0bnRKVzl1ODVMWlBDZFVXaEVCNG80cEVBNTN0TnFCbnZQMzdTOGpiSFJtRzAzdVlscS9uS0pKVmNOckk1Y0U1cDFLeEJITzI0V1NkSW54WCsyMnJmNlFtRG96ek93SHFJZis2V3N2SzFBZEdyV2ZlRXZyZkkyYklDNDh0T2JsVURuSWxMSENOMVpiOXV3cG9uaGFqZjdjK3VZUlB2SXJhZEwzODhGdkh4OXF2aENHWUZhOUFYQzAzbkVPYWRUNFNyWWYva09lWjZYZ0ZFSEhVMjhLS0VXWmN1aVZFdzVPbUJ2RDVUdWJEV1ROamJIaVQzVmVOcDNYNkdyN0RXdUJHTXhpNGRaUU80NWZZemZmN1YySDdWMDlmRHdIWEtkcGRSZmc3bUxyTGZrRXBQVXdCQ2NuQUlvVnR6ZU5IaVlWTjg0UEJET1VoV29YMEtjR1N5Rm1pRWhXQlFQdjN6dXpiSTB2NDh3R3pnTUsvNVBvWHdGc3FkSDVjUHVDU3ZIaGFPQTduU2QrZTF6bm1SYURjb0pOWUpHc2dLdWJOL0ZBQlNjc2IyUHg0UWpzRVYwcEpVMGVOajhOa25FZnlYTW0xRkJjOTBCdTFwWFJKSkZmaGhqT3VZVUR0N0xuZVRSaGk2S3pNaVhvVUVFeXNOYk9ZZTFteVo1YTRRaW95UGVBR3lLdnZ6YzI3cEFVd1NBVUhkOWRqbGZINTAxTm9SRWRUeGNQM3ljb1ZIQ0J6NGJTelJRa0lyam52TWY1amYyMEtMMjVxMFd1TXgvdzUwVEo4ZlFDajR6RkExbWdwaFlVS2s4MHpMZXMyMGNIYWl5ZnBhWFpzaFdHUjFZVUZKcXpENGR2RysvbmhsVFVrd2xadk9iVTVQeFRET3FYT1ZTc1dLOWVhYkFsOHFwK2k0clpxaHdtWTllaGRDcnoxUnRHK3JkWjZzQWZUR3BxMXpTK25qajJBZ3YvdkJ2ZHdseXcrNmFWeE5pbUcrWU04VVVwcjVrUThaaVdzRnhjTHl2NkppSEV1UVdGTWUzN1J0OWRKL0I4OFRNMjk0dE41Rkc4Tm1wZVYrb25uVzg2T1B6dkN4TG5jMDQ3RWtDdnAwUUJvUERqK05TV3NaeHFMckJBR0VTQmpQT3hlYXY1clhmQVdjd0RKK1h1eDgxSXBhb09UYkdYam9EbHAyT3psWllwY1N1ZVZBZlpkMUdDYXdESDJabUMvUnkwT1h6aGw5TVIrODRYZ01aa0ljWG5qQnYyWmR4OGJsbGtiWDFuMmhpOHUwaFI0c0F4ckZqUVA5OGpMbDRTU2k2ZnZCcmc1bGQvbys0OXhnSkludDh4dkppMmVPK0FjVjVMelBpVnVjUVlGeWtDdVFVQ09uME9PK2dDdzhpL1lzN204NUVOM1JSbUs1empURU5GL25CYXA3aHB0dWNVUTlmWlFFa3JOVzNnTTNWaWJwVTFzdmhHakVyK0FteU4rTkYydmNqWDd6YndHeW5QaHRIdFBVYjMvRUljZE9LOU1PREVaWlpCR2ZUdmozUVhoLzVDR0VheEpzdlVSSXA3MHV2VWJYa2t5QjNPNDExeGZ5dDBBNnVjeFFUMGtMa0w3K3FnZjhPZnZQbUZIbHBQRUFVNTVBWC9KSUJLRGYrTFoyaHRmTjk0VlpNSlN3Z2YyUlpEWkgwckRmVFhMSUFEcWw1Mmhsc2JNSnZyQUhmeFlNSTJmSjFncVVDV2pDK2dPZWhtNGN0dkhEVVh3WW8vV0RtQmlDdHZNc05nOEJUZ2NrY0owejA0eE5WVG50Zkt4NDFHaGJHQlE5WlhPQkxkcmUrREk5NXdpQUZtUnZEQ2FRb3I5SXJEV3pxSitKcHJwRVRKS0RaUXVhYjZkRE5saVc0NHJRdk9ycTQ1R0pKS2lwY1VRaDVqZlNpTTRlTWdoM0Q0Q2VTZzRnUE92OWp2ZHdzTGNIU29tL05wMVNTUURDNzF0Nnh0ZWNRcDVpNGRXeS9LZ3d0b0grbGxmOThPa1JaZmJsa0ZYdlZ1L2c5dUQ3bVZBcEN5NkZ3UnJJNWJpOWE3ZW8wYzJGNDdlMEI1U2V6YVpPekxNcUpEa3ZZaTlHL2lxQVBncS9XcUNOYzV1OFBjZFZTc2J1b2pyZmd3KyswSThQLzdwbjJCUWVJVlB0L2tQVTNUM3B1ajd3djlkZnpzYkRnTWQ3VTcwKytOaFhTRHBVL2Jyc2luZ1U5RERxODlDRzVtYlU1Z3kwN1QrNlkxUVdpWk13aDhpR0dLdzhkU3lWQ1Q3Ry8xZFlDUTFXUmJpNkNnU0hmU3d0cTJENHpnOEthWlFSQ0xobllSRDhqYmdMUkJKajREVjNMNHZwL1FyOFVWRHZOeXA1QUFoQmhhQkVHZ2hHNUZnRlNUOTd2YU5rT2pQaUZ0NDZFV2xuMW1lZGhZbFo2eFdNMVB0TnNvajVXdWNhZjRqRlU1QmF1SjRYUnRKYm42TW94SzREWGxNcXQ3UjJ0WWtBcGZzVnZBVEFUMGRLYW5qMTJhRHVpbzJqanR1b0YrYkFsY1orbHhIR1JGZ1hVQUJDdmp5RVY5QXlhUkNYbm5FeEhldXdNSXd6TWVmUVNIWldXSUxqaWVsWHdEeHI3UkI2VmdKNzZ0R2cxak5hQlhvN2Q5T09BWExORlYranhabTV2ak9jMXRudE9yVndrZC9BbTR1M1U0TDZvbnBmY1hwWG5ud3JlNjB3WUVJYitFWVl3akNDbDhYV25aZ3dPOW1iS1ZTeWxwTHh1UDJwZjNPQTJVVjZSUWFiSG95VDh2OEs4N0l0QkppQ0hOTld1ZkxnTVhCN3VGa0JpK1FlVG5ZbFZzckhpYStGVTkzWDlxZkZYTDlxUXJEdTBmVjNuemFLMUU5TDgwNjJKRTdVT3N1V0h3ZmpzRnJKbjdNOTZDSTRERE1HMS95Q3BpODhPUXRoOVFDZkgzM1dCOVdpOGJqRkQyZC9EbVpZR2Y5dW9ncnBFS0ZqWmpMb3B4SkVLdktCV3ZhY3ZGSHpKUHo3MTliMis0RktyR2ZTV3B3T21Hd3M3Nm5CTlIvYTdPMUZyZnF3SStwODdvMSt2RnlhRmtmVGduRlg3R3E0RFNyZkdFR290Y3QvbHI5SDltaExwM2hEbkF1ekY3S3NvMXJaMDdCZk1remVPdnZzOFpTUlQyZ0UrU004dGxjT2VMK1pWMmV3ZGlrdjVyVFZCdkhzVlpGTzdyUFBoVXBmaWgySnJabi9kSys3T3g5d3lKRDF3T2IyMUdQdWxDRXRCN1FxMyt5L3crc21oTmc3REExUXVYRjBQajlDOUJFT2s0alRpT0V2cEVqQ0xoV05jSmJlVE95Ny9qbXhaOVIzOWUrMXhOU3ZVOU95THhQcTA1WG51Sm1tbnRsVUR3c3hkRzJlMDdveU55QWIxYW1XTVh2blBodVJGQ25KY25iY3dDMjNobnZ4SytTRWhNZkVaaWVUclQyRWNjU0VxdTY2L1hiVTJqMGR0N092clhkY2RhQjV1TVJyRW1kT3crMW4yU0hGaFI2dVQ3UFBEZEI4cHhnTHAyK3hwSDhQNmhSSzVMRGMyWHN2VFJjK3JMV0Rzcld2RDdiMDdJSlJUL0cyYWozUFlIb3pJNGNRMUVKbklKUlMzRE1BSlhjN21RalY5SDFzRy84RlZQRVQ0NkozZlpBeEJQUTVEZnpPYXZqNURlZEg4N01ZQVQ2bXowOVVuMVBCelA2ZjA0aUNpK3p3b1U0QUVvU0lob1BUalNQR0tYaEJLZjNpQXlyMkRVcTFSVHUwRS93dzJNSnc4Rm1kOUhxU0FHZFh3dTBqTFlnSWFDSFNkekVHVmFEdzRldFNOUVNYUjU0NUw3UlZ2ckp5ZDl5eUJzZVdWUW5GdkNRTFhRTjkzbXIyQ1BrMVpCNVRjdzlLci9vams1aUFXRGl5OUMzSk9uKzRmWUlSd3Rkd2h0WnhsanE2eGlxeVFmNFRwMzRManJRRW9PSW9pNUlMRUQwc3RBZWpubW9DT1RlV01tWUp6Umg5MlpSR1dsTmVOR2RPNlBLbFBvVTZyYm13Y0NlY29OMnFRQVBuYlJmVWZqM1BFYllqYnptdjVXY0pPRktZK2RIL0U2UVJVWWM0dXg4dkVJd0tMVzFVc2x3enZBbCtNSHNCUDhiZnhOTVVmbHVYc3BmcGYvZ2tETU1wYnBKQWo5RG5BbWZySlpqZXNyMEM3clNjelV5ZnExU1RGbFBEa2VUdDVoOTczNWVaNzdTVlkxQnRIdnlvbjRVdld4VS83RHFnbDJqdE0wQm1neXZBeWxELzdIZi9SSmJHZ3RvYWl3ZmJzSU1EOUR2S2tvTGlSUUc2WGYwNnE2ZHdGV3BWWnAxV214V0VST1dmMWlPbzBMWE83L0tHc0ZENDlYUVV2bW1PV0hrSnRsbnh5WWpUYVpXK3lUQTVTU0NLS3JkOGp2YkwzdnZidzhTZmJEOVRJMk9zbUpxNWYyTjhWSzZNMlFvcHpqajNXaXFSQWU4MGlkT2p1WXVKOGFVK1UzMWtWUElkdER1eGthUUc2Ymd3SU1mSzFSTXBMTSsrdC9iaXVuaHV0N0F4MXhPYWZ6MnlZdmdjZGExeUlZLzRTZk5WQ2dWbmt5NzhCaitzZ09lWUh5K2dGK2U1MitnempDbFhYOURlZmI1UU5zbi9OYTlxWmh3TmtMb2ZQcEZlbWZLZ3AvWkxEK0xQUnZpcFBxWktWdHBDcUYwMk1GbThKa0NwZ2QrQXdZNWNMQXdRZDVScVl3ZHErT0F6czZVUHRMVGpOMXhwU1BRQXdkRG44WENzNWJzaWxtYkJqSWNubGJyanBUKzdjOTRIdEpNcjNlZm9jeUdNcWllY0RqQ3l1TGlxeENKUFcrcGg3VG8zRWs4QjVuOGZvaEJ2NlVrUTMyTHhWd2ViVFVGbmYwc3N5Um5uQWJ6aXl1V28wUnFIR3FrRk0zc2pnSWx4RWk4RW1hb1dQRkdkVzc0aFc1RlVaVlVoQ0U0L0NWZGpjWitpYXdUQjYvdzRzQnpVQU4rVStJOHFhdnloMkRRVFBvVzN1bzNVWFhvZGUzaStlMVhST09XWnEyVlowbnlqQjExQ25GQ2FoSUZEU2c3UW5zUTU4R2IyaDFQYzlJVXNpSmlzVExNbzVydm1ZWlBqNVpxODUwSmZ0bEk4Q3p2ZEJwZG1YbmRhM1QzNWNmRzN4REVsWGJKSXVBUWcvbTBYWE5zeXhjQkk0RFN3Z0EwUm90N2ZUMFgvTlFMZVlBY2hXU2lMWmpYNU1BRWlNSDQ0YVBaajQ4N1dJaDZtTm9iTGxTdmRiVU5RYkNDOXlnZFdXU1I1cVlaRmxiWENEQ3BibUFxTklSb3FGaTUrMktRWGMreVJNQlRNSEVnQlBPa2lQdEJROGpRbFZHZ1E4MVFpOWJWN3pNQlBtZUYyRHBldkRrM3lMdHN0Ni9DTUl5NHlGTXhBL1hBbGliSngrMWN1QTV6Z0I2SEdxZ2pOU3ZoVSthTGNPajBFbHR1K0RHZHRHbTU1cnhNMTcwL2kremVLTVhiRlM0Y1dPQUpQVGIyVHh2MDhKaFJlUFVFQU9RR1RNdXNtOFN6eXlYOC9ISnBONXdRU090eHlWQlVMTFMxa21TeGV0M1NHUGpPSXI1YVE2QllNNXA1Rjd1UUtBN2N1Z2JvbWdtY0RMckplS2hQbzA4KzdRdzd5T2tWUmpwYWx3ZXJTZWo2R3VqNFlncmFuMzVYZGVsNjd4UkhIRWxRUnhiWjZMTi82YUNkNXFRMEZWaFhmYS92RGdsd0NzYVJSZGYvUThYM1JXUG16ZmxZUkRsUzN0NjJZSlpQenlyb0JlYndBMU1JOWxYVjVTM2MwcFJGMlpabHRiMU0xejlKcWJkRnhCMWNEYzNLQ3RwL0p0cjN1aHVDUy9RZU8zd1B6WTZjSDVXQWxDTXlTQUV3RGo2ajJ4WmRub2oyL0ZVaTB1ZGVHSFYwVnc2YlZVa0J5V2xwbmxOckYzaGRiM0RpYUo3YllqSWJSTjBvSnhrV1Nsc3BkQVFJdktQeDYvRHFubnpUSTdxSmdrU0NlcW1uVXI0MVBXajJ6WkQ3NHZjVFZaVkNyaUx5LzdKa08zQTRBUFF4WEZWSUp6a00rRnAyazhPQWlyS3E2Q3RUOHg3WFpxbXdhRkl6K3FWQVBwbTVqV1NJcFgzbSs5cWd6U2Z4dUI3Y2tPMEtnVEtuYUlYM3dVcW90THpPSXRDSFlpTkpqKzF1aWc5QWtDYUpzdHkyU2NuZTFhVWowWEtvOWNKMDZMUGtoaWdwa01jWUJEOEcrRWhIajdRMCt1b1poMnE2a2k0NXpweU5XZjBCbW5RRnZ0cGQ5UHE4a21YK3JlcG5Da1ltZUpmNGJRaFk0cHYzcGJCME5NUXFQN2NxcUdCbXhXMEQrU1FnYjRWdUpiTHVsOFptMkdvOE56Sk9EMjc5bER2d0dKeWFzRGx0Q0NnU0YwSE0wdkVZTXR1OVZNTnhScTNucXVDS2dXT3BzTTVSU2Y0RGVEcGNaNkVYZFBiWXJSdDNUYVpBelZwamZBTXFIWmtOb0c1ck9ZTFlnMWZLV05WL3lQQ0ZEN0tGbjI4WWkvaDdQeWd3MHdtck5URW90YnBwenIrVWlFL05NQVgwdzhiOHMrb0xKbkM5M3RIUWNDUnN1SzhFMFMzN3NPRlBDV2VCTTBiMW0zZEd1ODdSVzZTc0FudjBKNXdaTXkrZTR2UnJ1Y2hFSzRiNUE5N00ydkFuRi93cUo0R21udHk1aW02a1hpdVB1Q2luVUV0RWtyMFlUbkl1Tm0xSWxyOGN5b01GRHhzMXdvT2Rad2xHZ1U0TmZEa1g1bzZMOEJ2ZHBEMkN2VFp6Wk5BVWpXdVluZ0xBdVFnY3RNTzcwQTR5V2Y2MnRaMUdpb3o4RnlSVlkvTWVNck1RTjRna2tkcmVBZ0ZYN2Uvb2Mvc0tIdmVoSjI1bnNxNEw1b2hVRFZqUHdCT3JZZ1NCcFpnNXd4NEhQdVV1S0d1WlYyeElQaExrcEFyQkpSM1Y1Zms5OVkvWHlxdnQydGYzQXpYdlIxZ2sybjdwOUdNOUVFUTl5ODRXZlI3djFmTWF1SXJUa2x5YTVENG5ZYWtIZXN2UVZJcHlEdldiZVBiV2s2U3lqalNOTCtGdlpseldOb25qQzdmVUlONVByb2Z1cGtIbmhyYkM3VUZPaEROZ3BhL3R0MU90UndocWtQTk1MWFo0Yk9wczc2czgwb1JoRk5TWHRRU05BNnliZGJneElkNEI5VWlETTRvb3JuQXNrS3JYZWhlUDkySjFxZ0RQNldqNVliV2thNWFPQ3pjdW0raGdMam9hcTY1YVpwRlBwK0xJL1FLRzNieTNiY1BEcGVGWVZQVDNJd0tLZ01qZmhvbDN2dXJYWGFldzJwRjlqTXNHTk1nekpqaWdINGVpbWFJSHdwdDUzcGUzejRCS3NLMUJ4d2RLY04rRk1pbmNxQ1dLUkl2WUx3dmhxTFRHck4xb0pEVFMwK1dheXEwaHp3aCt4MHBSN21qT2pPVlNndGZ0dEszWExoV3BiYng0Y3M5eEdlK3FqNFBtWGxLTHY1TU53Q0c5end5bzdva0EveDdKUEtzUWE3TGtNNCs3bjYvSGxZNUI5aEhVd1FBeGptQVNxUDY0TTFEclBZM0MwWnYwUE9wZzFIclo1VExNK2ZDMW9aY1ArbUsrT2gvTDB3MGhFekZsUkFoc21FUXgzNnlOZU1kLzBWOXVhalZyUEJXcUN1OFdTc2dtSHZ2UFd4dE9oYlV5UGliKy83SHhMd1RoYmRqK0ZTYVp5ZnQ2VWVkLzBpbHpKaHdhOC96MDhTYzYzTm5KTHBYS1gyK3RkZnFZbVowSHArSjc5L1EyRW1ROGZUVDFlWnFkUHp6VzV5TzI1cTJRTkdpSzMrUUZOYWtJTkNOelFuQXA1STFjTTF6ZUs5b1NpNkJGNzRkTWxFZURmUXI4T3cvbmFRdCtjMzd4NWd3bytEbENHVGE4TE5TOUgrYlNZWi9DTWVZYzBZV2tJM3VpMnVvNkFsQ1VqaWtwYlFLczJIV09lVTFxWkg1T01Lb0hnZjhhUVJSRHFZWHdtOXZLMDZ6MTVNTVFocnQzeUEzMUQ1bTFxdVBwWXk3dnZueHNCQXBaR256aUxLR3BsYlJRNFlDU1FTMnA3dEdSYUo3ZWp1NUFEWTcyckNCbGdBMkVnZFpxazhIVWZDSkp6QXlWUEc2VjNpMFJtZU1nS054dTJKZC9lM3YxUDI5bG1jQU16OTdUMEJyclk0UjNyVFg1TDZsUXVsTGI2QzhGT09WV0xoVmhPVFFneUxUMDAwaUdKUDNpekVqNllVR1h3QlNBSjVVekhPTm15cHkrOXdFSHFicnFZc1U3U3RsKytEZ0FtV1JlaEdubHpiU05aZUY2QVJtZ0FtaWlVSGxvMS9GTU1NaUNjWXlYNVkxamw1WDFYMjBQZk40T2IyN3F2NTlGZ1BMdDZnOURadW5LTWFzYnNwNnZoUWlidy9ld3Uyam5Rai82ejRub3NrbjlBQXVscU5acmJDcHF2Qzc1TFpxdXNMa1AzTTdsdnZTYWhjTmUzS3dpYkNuNGh2TUpCOS8wd04xWkh0NnF6d2RUQ2N0WEs1THdhUkxwdm9ranF5UnVBblowOWthT0xNMm1aTjZTdFNNd2svZEZBSG1qalBoNjRlcHV6VGlqN0hiMERKV2toQUdiS3lUcTVVQ3FMRzRwUUFLWDZESUgwejNlZG9HaCtFVkY2VDlkSnRxa1B1enBERE5rSGsvcWZQU2lIRlRlckRMSjV3SEhiN1BSU05xODMvTTBkbUU3UUludFhxczNqckFQVmo4VUg5YUVmVFJjU2E4S2JnM0R3SVdwREdNSElwVVdJTjVXUEpvS1hlMFBFRGU2cW4vUW5najVaT0NOUE5kV0h6M2NTTmNVRDYyaThpdlZ5bExYMUptdjhTQVFwcThNWlVodmwzalNaZnhOdXF2eHdSM0h2bkV6dWswQWhibHVGL1pqLzdXR3dVM05PYjNhUkd0TDVzclpQMGhtWFZPaUsyd0Q1alNaVmRpQmpGUURkNlQ2TUQ5amRDYThyVnJ5WDc0dEVEb3F2dkg3cjhRMjY4U0V2NktqUlBrVkNHbDFydklpUDhmTjJ2dS8zN1AvNzd2QWVleUFORFJzVzNNMVBGMzlIT21mNVBnTmxSUE5GTkRheHBDVzdGUWl4L3ZlbzJaVnlwR1lHVFRYQkVyNEs5ZkxRNGFZY3FPQjV0Wk5WTTRGamYxUmJBZi9OWGYzOFBnNXVqNDhKNlZzNHJqTWZ3N2lLK0l2OFJLSGhqNFZxUSt0T3ZyZWw4Sy9sMWlSVnZ2bWNZZEhBRzdkSDNWOFRCQmZzQzlZSW9TSzl0WnpUYmM0Z2c5YWVnWmo0ZEFGL3dLM1pTbFV6WXpSMjQ0T2hINjZhMW5IaDJvV1YzcUppdWVvNWs2MFgxSmZVOVRkVi9TL2wwcVA5ZjRDdDNJQllkT3ZhcXBXbS9TMjR0NXpiSm1XYVBEYTdCaWx5SDA2K3FLMWJPTlhyUnJ0a3pLV21qWXdjcDlocEQzcTJzMjd5ME1ZbFcvU25Xc0JaZS9MOWt2Z3NEdVM5Vy9TL2NLRXY5M0JmOVBYc0Z2a0x1aCs0emRtcDdSUUZhdTR1dlRpZWVGSUhOcGg5M1hMN0ZLL0p4NXZrWGRQenozV05aVTVkWDBZRk01NUtEOGxFVEVuWWhGRjh2M2FmMlh4Z1pBd3FjQWhNVi9xNWdCREFKU0NQamgrTVhVYU05MlBrTmlLUm5oTTl6NWJ6ejEvM2hxaFo1L3dJQXJxZHJ4Tmd6MDZXakZmTlREdGI3Zlk0VlpOWUNTV0UrMmNRQnovVEt3RzAvM2hlbmxwRzArNG1lWTN6Q01pTnI3Um9qbDFTeVkwMzZkVExLQTFSTVhvblFxN3FiaWRUZFhtYk12TmpDa3pCT0FCTS81dlMyd1YvTlUwOW5ReUhjV3M3VlNIUDdYYk1BYndqNER6aVRTVWFVVWx3K21ndmRQRUVNUXlOQ2dVNXVGamRCSDRCdjRJVHM1aHpBdVU5MXl1YjZ1NmgrN0IxTUdOV0IxdTJtNkxSOEduZUNabGZ4Z1IvMmkxV2N3VHphekg4NkwzUE9BeUN4WElZMHQ2dSt1WHVRaUpxWVY3UUVjMDA1ZFdFNEpleUxQdGMwL01QQWY4eFp6Uk0zT0gxWVM5VW9WRmllUTZMWHZUL1prVjFYUEpGekYrUWRkUnhuaWRkTjFKd01RNXdtM25yYVltUmJsT1hWVEpOOFVFakE2eWNRUGlVVU4wN1ZIekZ4VUtOWHFMMFJydDB6bkpaSnArVVhZcCsyTHEwdFE2RXZtNmFDSCtHLzcxVWZTMjJDTStnZjlBN3FEYWo5V1I4NzM5MTdsajJLSWZTcDZCZEY3QVUyTnVFOFJrRXkydWNQVDZmeHZEampOVGNmOWhtNlZySlgyTjFrOVpNajlIclIvZGY4K0dhRDQ0WGsvcUs1aDVYQk5qd0RNVG1HY0gxZllQelFqa05RYWs1a2c1VUJmV1hXMEJlZGRqT1g0MzNCMGRWcUZjWktucTF0R2JQTjRFcGRrcENrZVdDMm5wakpNVUphek52LzduZjFEOVU4N0hGTzR6K0hlOUhHMndPSUJjeFp0ZmNaaTNpM08vemYzMGZuYkdjQVpmanRXMGIvTklVRG5KT1pLclZ2aFdQb1l6eS9UZFdpQXZtZzkxSXNseGJpeUZJekcyVjhmRjhJTGllN0FkN2xPRDhMVDIrS2c1bGtKUmpmNnA3cC9KREhLOTFVbWI3UkU0RlJheFVjTUU3RHBCRGoxbnd6RXFUL00ySDhhTC9ybTNoL0dndUdKQXRNSXVWT0QrMkoyYUxaS21jSnZUbjdiSUN5YmtBNkUxZjRmOXQ1ejJWVmsyeHA4SmJ6NWlUZkNnM0QvOEFnblBJS25iNUsxcXp2dUMzUjhIWDNyVk1UWnRiYVdJRE9uR1dQbU5FQmlBY0tsTnovWi8wMHhITW1udE5mZWpjTHdwOTNKaVZtMHlUVXJ6N1RkU0gxTjAva0dXOXozU3pLR3BQSjFiR3FtTkNabHNCK3hpc0ZsUFl1NStocWJKYThuWVU3d1BSYU5KWjBFZU9acy80YmMxTXQ5cG5pejFJcGVBVEJXSUE2VENITUp6bHFxMGpXY1RvdDQyejN0eGYwYnVXN3o4NktYaUc4WGprRWVoVGJlZncwdS9wc3RDbmJQT3gvVW04dGpUUHJFK2h4amxPelViTjJXT2xyT255a1BzdDFHdkFwNlZJcEFTOGh3Nkp1SnlqdlcvRzQ4enJZMGoxYlpaL0FpUTJqcm5pZTNBb2x2NHE0RkRPVzlEL1IwUnBZSHRBM01tV3RjK2VyYUZpd2szRmx3Y3NKNHMzZWx0RDFhUHdyYW1zbGJXKzIxKzFjdk9mcEQvVXErYnl5OFA4QmNCZjAwRHlzTlc1R2VtU3Y3ZTc2TzJuZ24yZXNMMG13cWtHR1dWTSs4MU9INzV1KzFvTE9QWTA0L3FhYjRCbWxGTm1BZGkvMVkxZ3N5MmNXNHQ1ZWdLT1Z5eE1HZGhQTDdLcERJS0Fod0t5MHp2VWl5YS9DbldRZkZNTmJmSC8yMGR5Q0dZV3lHZlc2YlNSR1N2eUlzUWprbWN5bDBlOXY5YTBRY1F5dVk2TE9PVUhUbWxJdjhDTlhPYUV3akpMenNyMk1MSXZGR1hnRlR3YXZwT1FWQnFRcGdBeFI2RmRkeXJlUTFROWFwMEN3V1hDZTU0Q2FTOS9sQ2dnNG93TkFQNDBSTWs0cldvUkl3MFRIWWlrTzZRenRwdGRiYUo2U0lHZTI3eWkvTHRVMEhVZUtHRFF0Sk1pVXVEWW5MZlpvTmhOWVk2OTMzQkNHR0ZYb3V0MUVvT1VMVzNZQ2VpQWs5NThBbWt4VTZwN0NJN0RtWTZDQStKWE5QUmZDTDl0RjZmUnQxMVhpM3lGbHBCK21ybjBDOVY5enNBOFNISzdCNUlOeERFcDMrTnVoeW5jdGhtaWVid0J1ZkRrL3lXRlNNSTc5U1Y2SVJKMXVNaUV6b2UvSlJUSFdRc2tuWm0rWlpsVDNoYkErQ2IySXd5NGtLLzk2SitIV1ZPS3h6S043dnYxYlpvWG9SOEU1UDlacFNiL2JUTnM1YlV2R3ZIUDZQYjZCdXV6TUp0Nm9yMGFnY042b09FaGJHd2x4S01lSDFzV09NMjdTYkU5WmtTcm1CWk91ZDh1NmtxaWhFMU80TGtmOEtyNEpKSjdBSnJ6WkhkbVdvMy9MTEZVWDdPd3hWL2hhSEdnQUhsaHRhaVREbWMwUlRiRmRCQm9nbU5kUDNwRjgyNmJKRjRJMTIxak1nTmgxYXZwRG9JRExCUG5mRUVGUU1CZGZuUXEzUXpRU0FBRnAyajhrQlFoMnUzaE5xV1VISXNxUjNOQ1U1RWZvVnp1YmtRRU1wYVpuNHlPanN5MWUreFo5VnUyM1ZNNVNWL3FkVUlDeUlnR0J0Z09TTjZab0d0MW5tc2N3MDR0cnBDSGUzeVFhS0FwSkszSUNDSGRwQWFla1pvRVdkVUhyMTVuZEM2YnBzMWkxNHlxcTRiZzdwOWFITHlCZlJlZWlaMzVDSUZCa2NpYkR1Q0x4Q1ZLaVE0UTdDblNsZDBiUDM3NC9nRnZ0bFp6bXlQdGpIMFExbzFaK3JBMnRCMHhqeERlaVpNM3YvYTZSUEltNXNKanZPdWxMM1BVRFoyUG1aMmROTWhvTFpCTzVxN0VKWTN6dzd1S1ZrbUh2OTBsT1pNR1RGTkltV2J6UmYrTVZDY3pYZWdMc05CNTd0K1NmUFR4T0RJYWlqQjdhU1FTaSsyZk9STlQxTTNZRHhWWm1HZ2JuaTI1U2U4VHBSUzFDQ2dxK2xRaFhWOTVyLzkzbi8rN3ovODU2SGJhWGYyRnFxYWw5TzlSeERiSmVwUGNjSVZURGJUcUlCZTZldHBrSXg4bk9Kc2NxOGtXSHhwb0RpcjN2bVVyNjh0eW1TQmNKbWluakliVmdKMHU5bGZEcllZN0RoWlBoTGdyK1gzZldFZmtWai9qNU1sYW9ZaWpRSmRySVgxT25UanYvMjljOW9LNnMxWnFldk5RT0tlOXdtMUcvbXhRcVBCejdFdjhkMGF3VDRKY2NXejNrYXNDNUtHalFpRjVEZm4rSFdpSGNjN1hsWTV6Slh3dWlpcGFST2dYa1dnaUFGejNnNFpKVmV3b3IrUGtuWExFUE5zbDFWZG1sWXFXNW5JcWIzWHNvMlV4UmRCM25mdGVHYTc5RmJteGJXWkZ6bU9KNEhENXlRbFRuWDE3M2cvdi9lRzVUbUVpR2IzU0VWN3djYXAzay9zQWMzeTc3aHNoMlJrZEZvMkQ4elB1NGwvL1pFaDVTNEdFems1YjExcjg4VXh0TEJKY1UzK2YvcC9tTHFYNmNLdHRmajd5d2padU5sSHVRdExHb2FtdnBCMHhjcVpPZVFHbm8zVmN5SXM1WGhBSnkxd2MvTUxoa0phbEFhejQ2djd0TXRPQmltNEhENDUrbElPRzVmWm5MdDZOS3o4czhEenlITTM3OHgvLzNHN01FZXZFakpPYnplU3VjSE8yNzRqT2krZUxQMUFxbUYwdjk4NTVjN0lSS1F2b25yVWZKNzNsOFNqdEY1STlPcHBQcm52WXhLLzN1dm01UGQvL2NwazRIRlN6T2JxNWgzcDRBc20vdTB6UU1maTg4dUZkOGFLeFNxVkw3ODlPTFIvR3VVQ1ExMWUvSExpK2lZcmE1Z21oRkFsd1Nsd1d0cklmeWZQdytHTkVSdGNDbklSVzVONStKZkVKaDB0TTREYnJBTjFNUjZMcjhVTFdoQVg0bWJMbzdSTzhHMDlYOTRkMVkwMTVkWklvNjRJRlgvL2pCc0dFOUZ3OGZteXEyRUdhQ1FnR1UvVmJCVjBiVGZyc0NyS0NlMncrdVpCYlhqcCtsOFg3WG03SDZYTEpYNHdmQzZiRzhLeWpUcEVoczY4ZmZhM2Z5QTdzRms1NGRqUDVtZU5RTGRBQjdjMHFxVi9TWllWbTZDWm1aL3dkeGUxaVdrTnZSNjMwRFhyR3ozZmJFdzkrczc0Z0s3di94R3hsWjl6bjZmTjRnT1RibVZwU1RjZFcrNmhOWmgyamZPT29xdEQ1a1N1Tm00bHRSUCt1cWNMM0NzZDc5YXg1ejVVY1VnTWFDRkxWSkkvai80SEdhU2Ztc2NpNTdxeEM1OE5IN3Q1aUxDeUdvT2JxS0Uvam9kcU9VNnhBbTNKK1NVK2tYSVpNMU5oR0c1RXpnc0tXQUwra1VJVjhtZldRa2dPd0RZRmFBa2Q1V0VkRmh5QmJSeVpYcEJCaVNWWFcrNlNhWTBBZjZNNFB6a0VWODBrRHU3Z0l6N1FPa09rMU01N2lxdEhwRm5vT1dlM09KSkVmNllSdWRtRXhBSmNOMENOQlZjZ3oydGtaUERNSjVtMklMYWNrWEQwSEYvVXBpSFZOU0JFbXF6N2ovVlk5ZzV4S05EM0pyMW1aaHBabmFQTnR6bWNFT2swZUxQSkxIN3QzbXNmSDNnOHVuQkhtU2ljQlpBcG1nYzJvMkV3SXczTDNjVUk2em0yeEozUGtqTWV6Ri93QkNzcGk3bitrV0IxMHZmTXgrUDhpWlVicyt3TmYyUy9sbUtmeUpiSXA2eENDaXY0ZW9uZ2FVMFllTUNsL2dwMy9VYWxSR0pwTDFKUHVPQVlESlBQUXE4a0lXVzRUb2FSTXU5bmwwdTBkVkNPLzgwbHZwcjlQYnpwRmpxVVVvYmliTG1MUExTcVVIU1QvYzEwTlN2M2llUzNqUzdRM1VWbHd1dlRxRVArQzY2MlY4b1RkQ0ptekZsVThTdXZKeHY0LzBrUjFsNm1pTHovK0cvUlJJNXNFcTg1NUlxWFpsTE01bTNCYXR3NkZPbFErVTJBVGlVenhqVlA2Y1R0Wjk2eWt5blYyekdvQXhzR1pNWno0VGF1YklvSldWNEtSVThmRzI3UDloRnovaU1RcUpmdjMrblFNbmU4Wmo2LzhLZy95eW0xaWJ0M3lVSDgrVTNkaXRTSWJwQ0tOUmE4NlZESy9qa3V0L0NERmkrM3pMM3Q0cFpkQmpvRWZPZ3N5VHJqa2xkTzBNSFJ1NDhDdkY0ajYzKzJBZHpjeW5HSkc3U3VEdVhXRHI2WkdOZjBvT2ZrWnJQcUFQZUpoWFRRTk94VzRhSzI0MjN0cG51d1FSZCs0b3E1YWZvN0xwQ0h3ZTJEM3g0MlZ6cjliTmdkdkZyTFYrUU01ZWt5THk5SnFIdXgxcWtBOGdmOEphSVJjNzVpeXc2NSsyUENFMjNUZVcwYnpxbzJzbDR1TGUzeTJpcWZEL0xpejFVb0I1RXZnTHFCeTZ5Z2VsM2ZNT1dHMkdYdnJORjNyeHBEajZFTEl4YUR5cnFVaWxWRU1OcVlla0hVcHliT1FHSk16c1pxbWFWZ29MYjF3bFhQeno5M2p2N2RyZnZpU3o3VGh0S3hla3VLc1lKRmxIcnpmQmNUZ3NoSnc1QVJKVHFCWnVYeHZTekdHK3pBS2xmckt1cThwd3cyL3dNRi9RNGhtL2UzUlgwSDluU1FtWnNseHBlbGRDblNWcGxGZmIzY3ZINWl2bEJuS3UzVzlnRXNtZ2dKRVJUTGJOd21LZ1djTHpVRndlZkwxVlc4alQ0Nno1R3VVekFacDlsVGNEZGhYdXpRRndVNXQ1Y1p4QmZFcHRDWlhobSt3WEJLcFZheG96WjUrUC81QUN1d1M3aXE4Q3dueENidGVDMkpGdjEzaHpuUlRSYThtK01JZ1I5R09XblpYNDNnNXlLNCtVcnlsbzZZdmZVNTUrUncraEp0NzBPMk1ieEZCT1Z0aTNXTDBmc2U0bnJDbU1hYm1na2laSlJhOGIxN2lrSFVKMkg2QTYxUXZVY3hXNjBaaFpzcktQaS9IMEVZS05PbXp1MDZ0MlJmbi9LdWhZcTN6YTd0eWtxUXpyOUtXd2tudmZSZkM5Y2EvK09KcnEzeVFMQXdjQmFSdWZJKzNDZ21Gb1BycnUzS1JUQU5qMXR4Q0dia2RUeTNxWklMd0xpYjVNbWZaMmZOcnllcXpDTnNONmJ0RW1XVmpManUvckF0QkQ0L3hwcnFiWEEvS1lBbTNtZkg3cTllbjljaDBDcXYrTUJnT1FHdmhpc1p2RDRyYThUUGw2eGRoK1FLOExQSkZ2WGRwbk1iYmVFUW16OGwyQ2lNTFQzOFR6YnBESWFzN0Z1dUFhcGtoM3JmVGpPK1J4T0NlOUNKVmFoY2g5Tlk3V2IvUndOL3Ara1l1akhaZzV0dVEvR0dVNlVlZDBiMVdVTzJDZ1ExVXdkaG9uKzM1Vmo3emUvd1JQVDdnbVRIR3FYdkVremMvZHZXY09HOEtscmI4MFpINS9kTDR5QmFOQzhmelF1V2Y4d2JnaFc1VDhsUm4rMjU4ZUU0dnFKdEEybTVZU3VTa21RTjRqOEwycldEK1dPZ0xkVjBHVDZTVlpheVVsTnFBYStMWCsyWUY5TE1xUTFFbjhjSFRtVUJMRFJoQjlCeVMyc1VOdzJsMnQ5d0p0S1g5WEVDcDlRQmtWSW02UHRON1p4SXV1bCtSb2NjdjNweGpQNVdOc1A0WmJPN1JPYTI0T2xodnhxTXZpcnl4OGhRRUdDRkx1VVlRdHNpZnZ5UG4rWUlDMFhienUzc2VUYzZva2JpcUtPRlZOT3Zpc20wUnpTVzlOL1VTdjRYMkVRenZhMEZEbld2SmZnc29Xb2tnaUpKZjhTZDZ0dWM2VXd2eTRqYmRFZVpqaUpONVpTbWlHMFEvT1BadXpoc0tyY2JobUR3b3NOVG1pRVVuVStidVNyY1MwU2llSitwOXowMWtpRVl3VDRFaW1pQlJzRHg5Y1N4eHFlbkRzMS9YTGRHKzZ6dlpFZGEyUy9jZ1BBaEUyK3hkUDUzRCtqa2NmalNWNWVWT2dKK01GZ2FLUXdYcWlINVA4VCtYdUZKOWF4K0xpSnkwUzlQWWcrbU8rVkt2Yk5CRUdBYmJ3L01lUjlvOTBmRzlpeDIrK1BnVnVZNXFBUHV6M1NiMmEvZFlzYWcxMGI2T21QOWVBRFc3ZDcxejVod0g5cjFmNWJhN250cEV5ZGIrWlNiejdWOTJBWHM2WndoSnJGcjlmZW1GaGtTQ1hxQXI3aXV4SDVwbVg3RThkTWZOTWwyN05SdW83T3J5K1JrWk1UU3puNmlaYjZXWW9FaHNMZm52NW5LemtaeUFxaEZzWFQ1NnEzTHc2aVFXYW5rYmlKcnJaakllZlVMOVdiYndmamMzbVpscFErVm9PK2tkVi9Vc0J6aE5zcnRoeTRBZ2dmTmhzVkdiMEh1UlExTGw3RFFpcjRuQjdkQndHdUdoUjRKMFEyZnJHemVUSFhhVzZCbHVpdmNyb2Y4SHdPbzJLNk52NW1oYk9aN3puRlNDVGl2aTBvYWlqNnBiME5TWWVwTDUrcS9HcU4zaGNCLzZNQ0hieVZ4K3NFeExNZzFWYUFUb1owa09mZW8wVFBNY0Q3T2oxRG9SU295elQwTSthOXE4NlZ5b1RBNkY1eHZWbk84L3pwSk5YMU4zN0tqNElwOStkd3ZlSzR5V2Z6NytkL1lFbzZtTDNiMWxSQ1JJYWhzRHZ3TzZXem0yMkNDbzByMGw4cVg5NDRDNzB1bTlaREdRY3FadE1oLzBtZFY5THJOOER5V0grUnYwU2hma2R1ZlRkVGxIa2xidGsvenV0NWhSMUxjeWdqUlRlT0xrNVRCOWdwS29MM2twdUpCVmJrSmlzcGs0RGkxQXFlK3Y1WDJCUkVkZS9zc3d2VVFDYlVURHZkY3FMMHM3cjlmTXpFRnhoUC8wVVMzTE9XMndnL3hUc1ltQnpHZGplcW55S0dxRTdaWDVibGE4SitUT2tyeEY2SEtFZXFMdFp1YVVGZVo5OWNTZndxN3RzVzNVNWlKQWZMNC8vaXRTZ0JTaVlPT3l0NFpkbTI3eWVxUUFvakVOdmIwaDhyOEJkN1R5VEk3YXIrRmZhRFg5aWZZdHFYWlQrMTV2WXp2b1ZPOFg5enFjQ0hVdXBMblFxNGlDUFduZVNGaGhkeEFqaHBpSXdmS2R6RGRYaFlFSlVqTmxNazFFZXRkTHpPUDZGU3MwaTZaWkc5YUx1UkcxejRxcDNyaStpWnNXcU5ucFBTKzhYbTUxZXlkbzRuRVVTcER2UStOcTVGeVNjQThiU29Da0xpbUliYmdRS0VTL2pDRmpPOFhHNVk1WUFoVWF4TEJNTG1jL3pnTGRnUko2R1prSUV3dmJscnNKZUlTaE5aaWtsRUdkOHUyZHI2MDV4KzRzVTRKYlQ3Ui9qdDE4RXRLUGxoeGJIRXRURnk4YmRpNXViVnNOMlk0Zk1hdWFPdG1UbjNhMzdyTjR1SFBmcDBqclk1ek8vQ3Q2L3VkL3QzdTMvUTI4d1BKVGRGQ01DRXRIYnJhcTJ6YjNST21yb1VkRmUvd2ZXcll4WWMwaVJMUXVwZlg5Q2YxNzBVWE9CbHF5ZXEvMTJkZkV6QkM1L1UvVzBzc3M5ejJsRExuc1J3NTdkZko4N3cybHZ6OGhlTDJCYXlFeXlOWEJkY24yNFFaRmJMZjNoNXdPTlNaSUpjdFpQNjlrMWI1UWpYMFl3Tnc3NjhTSitTaGgyejEvVWJITm5uVnRCTG5MelpTd3Y0clpYSWZhNXgrRGQ3cTZjL0lGQ0lrSlVmQk05MUcxTmI5ajg3OWpqU054T2ZqZHZVdnA2NUdOODJTMlc4WG9xSy9tN2VvNWlEMFQvTWFZWGVaM0VveEp2ZnFtRGZlYVpYd2hnL0JIVmkxdko2OGtXQTVxOEkvc3ZNN3RWbEVDTW5WZkhtbUtZUUhET3F0SlJheXAvdisyQ3NHSWlia1Q1djRFdUhHUGlGajJ5OWxGdXkyVGpKSDFRaWt5Uk9lYnNIOENBSUJCNkwxWHhjZUpaYWxJclo4WnJuYVIxTWZrMG5lZVdoQ0dRcE9PNEpHcldMM0pHRklQM2twcFRhWEFSNU9ZSnJxd3ZhNmVUUi96Kyt6OEpxZ041Y0ttYUFUdDZ1eC84WGlVSjJjcWUvbjF6R2IyK0Eza0RKZ3IwOWZhWHVBa2Jxc09MVE5XU2tWbzNlSEU5UGJPKzNDeURMZlpjb1FxZHptUlo1azhHYXM3Y2N0bmJGVXpGMVJlMGl6cHBYNTZmMkxUUGc2ZCthU0o3YndqckRZbHRxK282VmVsOGo4K3lINlE2TDUwZjlHVmhPemZpT21FemVkV1pteEFFayttSVlwWCtQVFBlMFpkdlhMVXB2bElRaGFuTzJua2E4WFVPaGhvbklSUWk0bmxvTjd1ZkI0SGxJME5CVUR2QmIvWGxLMWpzL0FoRVhaSy8zTUFpQXpSemMzeXQ2ZDhQdDhzeml0L055QnJYSllUWGdsMGhabG10Z0RPbGlMZXRnMi9ZbTFjRWxOazJaWmRpNDROVnljM3N1M1VERUV5VGMxbmxaY2tKV21Kd0Z3T3J2dWxnTUZFcnRJdXM0bXZTTXFQOWx2Nkg0ZDhhMERxckp6akRIY1JxMTAyYkU2NTN2NWlwS2s3ZnY0ODdINHNsWENJME1xOGNBRzIwTFVaWU5UNFBxRHhqdjl2cnBsSjV4cDBKSHdHalFkUFh6dkF2MlRkTzFiY2o2QW1NdlZkVkJTam9PK3dsUG11WndWWlZkU0NKTVUzcDQ4QzFlbG9lMXR2UUZJL3gvYjNXT3k3cjNmUlRmb291SFB1K25BaFdBaTBjRGw4QldsbWxxMEQ4TWdtNFdjbnVDS0x1QlNYV0d0eE1INHNoMkgyb3l1cCt3QnN5Q05tY3hqdS9TdVZYaTNsdWhCSG5LMTc3djlkSVBxQWRJcERDYTk1dm9jOXpDYmdqcVpzVkVpOENiZjczcjZidkg2N1ZNd2ZKVjBpZ01QNTNKUXVzakx6cEdoTWRlQmoyZEorWU5GSXdyMjh4bnloeUNxcXBVYTQ2RXZLTDRjTnVYelphR1IvMVZwT21CSlNrdlplTFYzL2ZieGdRNkRPamczYmlWcTlCckQvNm1zd0lxVUovYlpwMnZ4YkpQRnd2WGxhYlowYWo3NGE5Zklzc0dNdGd0SjlPZjNpSU0rWDY5YmtVa29FeG8wVWM4Wk96Q0ZjdnhJOG9RQkFqS0ZBeHl3NTN4aWx2aEdnZnp1NjZtWG5KS2FrNExhaDZzMnhNcm1hekprNnR2NEN6QVNtY1pMMEVCd3dmSmlLQkFZbkxtYVhwNDVaY0VrcnhNOTlJdHl3Sjc1aEY2eCtzTVJnRGhSUkt6eCtQN1ZZOWVsb2Y0MjhzOHh4UUN1bC85NkN6b1F5U0ErWnBmZ2xZTE9PdFFPWHd0Q291RklxMU5iTVg4QkxERTZvczN1ZlVUMi9IODZnSmI2emt0N3JZbDNlRHNnbUdwQzRGOW9KWmlxcGVrUDE5cmhIdm12M0YwZmhnb09EeHI4elJOKzhrUU5IaG1CL3dPdkd0V093UEJMZmRkcFdqODNuOTRNdk95aXAvV1F5K1E4MEs5bTlDN2VDTXNVNUl6MmhVOWpxVHN5dXNLdlBLRUt0RXpJSlpucXc5b284L0c3L0wxVjd2TUxwOW1rODEyaEVlS01GOUt2bCtnZ08yR3ZodXgrMzZIck52dVdoMFZDZE1URHNwcFBENzNMWTV4YkV5U2VWaC9wTGxGN1Z2aHorM0oyeG1jV29pZXl1VVFGa2Z1QndFMWRJSFUwclVXTytneGhPR3dydm5UaTVBbVN2U1lXWktFNFA1cFN3aTRNZ1dSdzlPM3pqNUE5UkpyL1dqWWR6enZoRUVZMkl6UW5Sb2tqeGRoOW5Ob0gzc1N3SStEd2Jva0VKc0JqeU1SVUxzVkdIcE56cC84RFVFUW1TYXc0YXBmZ2RLK09uWURjdjl2MCtXZlNMaEM4dHFjSDAydjF0d2JKQjNMVDVrTkZTa1J3S21UNWdneVBoSVAyUVMyaXhyVGM2Y2Z5SG1vYmtzRjRLMzN4akx2Zi9Sa3ZTM0E0eUpXd0RaOUg4WjlMVzJxYWcwVnRDTWpGUWhSTG9MaE51STNCOGp6S1d5ZTBURE52WktMcTRuRDFHLzZ2ZGVPTytaSlFlOG9IZW5hdEN4Um1MeDhubWRjT2tZWnRSQ3dVTENKNURYUS9xTTlOVmUvQThhdVMxZ29udHFUOS9BRkozRkxGQzZod3pZZHg0RjVZa25LeEUralNnajBnSVRoUXBZZXJhRzdwMkxTSWxFNFZzdEFmSG5ZcjRuR1htWW5lZjUrb3d5U0psTzFVTElBTnIwc1FlTXo5dDBlQXM5dXRtdzRKQndUNzhPT1NpbzZuVzF0cEVrSnhqcTZuUE16d1ZMNzR0VWVMRmNRaGViTGNoekNTOHQ3RFRuOW1BOXAvNGx2VTRtbnpHL3M4bFZjQW5BN3Uvc09NNmx2RHZFNis4UDZKVm10Sm93REgwVExlK0hpUVRQWlVEZmlEc0JPVkMzdFdZVXpQTWRTSGpkSnVzNzNwOSsyYlg1MXIvQTNlWURjMGJ0ZC9YcUFaNmJ3RDRzZ0xYOHR6emc3R0FhZWY0N0g0Nmo2ZVU3TElnRHZlL1g1RG42VjR5VmdjbENOVmRDU2V2N201Z3kvRHlnc0ZrKzNLQ2MxVHZPNW0yNzVSUUVqOVRWR05JYXlKUldWQUd6aEc3MkRkaDVwSWdIeVVldFRPMWt6cm1mNSswVGhIMUpNcjM4SlgvSFhzK2dGZm1aOXZGUHQxck56aU5pMlBEQklUNFhkbUUrVG9hRGIxM0lSaVJra09iZURCWHladER1dmJob1lWZzRjQXBJRk90QllMeUo0OVpNaW5vZDl3VVJ6aEFIeEpQR3pSVjc2ZDR5V1pTU0xvcW9qQXlvYXpmNDhpUkZGMFg0dnFnVzcyWkJVTmpqWUtLK3poUGNjZXkwdi85TXkzQVVReW8xUGdiOGNWMlcrS0hUamc2Yy95cG1nWDhlMGhaSitycHVzNWwzU0pJN0RwYWJONjlLNUdRaFFtTTZKOUt0cTArd1hiek9UdzUvYVhINEd6VzBlUzU0dHRyS1U5T2R6b3NHYkI0RjRtaS9lNXVLUVg1cndEanVjNDREZVo4SjR3eTVCWnVKckhla1J4M0hvVmVyakJ0WjVsdms2anRFR0dnQWRETnRKUFppSTdCYkFXVW45dHJ3ekR4NG9rTjlJWmhmVnNCV3ViTzNlYVRPakVnOU52RkJVa0orU3NoTGFlaTZLblRRRWJvVGZibkxlVkRNc05pcnpScWIzWnhKMkRyeDRSNU9rNTZ2RWVkNTBUdjBWT3dKSlFFM2RtMitNdDYweTMrUEc4TFJmeHBNVEF5RWtTUExDMWVvNElPc0k2Ymo4THVDbmNRTm1VN0RkR1lxOXZxd3AzNGVLL2k0T08xbnFwSlVjb1R2a3FzM3BZUWNZQ1ZGNER3RVdpbVhaQ1FLYUI0eVY5eVJqWGFlNWNsVDcyUkw1SmpSdklJbytUajVudjYvYVFmSVd1a0QrbGRFZ2NRK29odUs3RUhLd1R4TWthelVidVB0WnM1NGpvMllSdXpING4zQWVRSHdJWWp5RzhEV05rbDdqb09mTDNzZGd1S2I0eWo0b3Z5YmN3U1czclZMVFpxb0tYbCtURlBuek9OZ2UzaFlweWR0S1Qxa0FCRy9qaHZlZitRQ3g5cjRIakdsVExrVkc5MlhHZkZDYjNYY2xJNHI0ci96SW9lc2RVUW1mK2RNVmlwUTVjSGdYK0UxVDE5RUR5TlcyNGt2clVJRUYzQUV0dlhWRGxUZUIvSHk0b2x5alFZcFFndmNGTGFnK1RMOHhsTlJZMVVDKzhkNWFvUHFHbjZwY3h2T05ic0ZwaWxFcFZVbHNQVk1OZ0JZd3lWcFBsZWk4ZjRkc1Z3WHNBdEg0UW9ueHFwSWs3Sk1iMFJWT0xsdE1rcEVlQjRNekt2THNSdmZ2bmNJaHk4RStsRVd4RXlKTmpDOTZNbWRHakdYOExwNHg2QXhFVWFBSVJhR2dtZGpwSTladXdYbzMxQXNhd3M3RGFBbjBWZG9GbWtScEZ4eFQ4enQ3WmJMMEdTSWc3aHJKRnp1MjFIR2V3SmJKYytSN2prcXJPbEo5WkZBeEt6cklwK09iQlljeDNlRDdlR0lNVUdBQnpPVTRFZldBbzA1dDlzS3cxRnMyT0dXZElwbmtmU3ROd1RyRktXTUE2eitML0NGTElPT1hQQWtXd0hDZmEzNm1IZ0pSSVVVcEk4WExIeWNMQVZtSXBaT0tMeGJXcVpWK1dnbVhSY2t2RkdYeWRGVHd6Q2RUUDU4REZWR3dGSmF4TFNNenk1SThmdmNPZHVBMnlSekRIWm53eXFHdXAzOHJ5LzRvSldBRkRZS09LL1ZyckkzOFJraSsvZ2dxQkZnVXZackw0eW1zRU53cjUwV1FRTXg2M2xlOTJCMTUzL3hNcHN5cWFUQTdERkVNOS9paEV5WFpjWnpFc1FvTXQzMmNyUnVaRkRhQy9EUEM1RUYzNjE3RFhUKzRiMTN5bFBaRDJkU0xCMkdGYjBndjZGSFc4djFFL1JsVnU1Z01CM0NWbGNHNUErVG0wQzFPS0NsUytUQnphdFd1K292OU9JZDE2eElFQUdyaytMWlRSbnZxSmMrdXQwMmkzTUxWd3FVdld1WXZDQ2xLOWROQ1B3Z1AxUE84eUx4a2V4T0hhcGp5cjFtaEljWk1SVjRXbktSTGxoajFiRE40U21TR3ptV2RPcEVXekx2d2dJN2xlMWRTV2I2Q3U0RWJOY1pTWWQ0cng2V0FTSFI3RjhHN2h4aGJwQUlOaWxFL2tlb1NITVgvam9NUlhEQUwzdFA4L0NhVGNvMUZhSWppN0pVY045R1J1ZWdyRlZ6YlFkQ2tYUFRlM09iNHFXZUVGQjNUcjJyaVdZeGlwZXdidDZEdEcxdWU4ak1Ycnlxc0VJWXBLOHNPU2wwbzdIVGhraFpZTGNrb3NIczNLc0tvYjNzUWlldlYzM2NZMVBXUUhjbkwzMEZiTzVHSGxQQjloTmU5elo3NGZSd1FwYW9mZnZCaDRCdGtTY1FPTEdzdWNIRkFTMU9TNXZ0MFlJS2lZWjJBcE1rejJOdEVBTXJFRUxRVll3ckhpL056RWtpZzFwOXN4THBQYzZ0Q0JpWUtOaTBXbGZ4RS9Ca3NkZWlhUHFhdnErbFRVbVhUeEpURW83VjQrWmpDVUI1SEFFQllPa1ZEbjZTV0VnNGt5ZVJQeGx5Q3F6UU13NFJSWFR6N1lFWG54R2JVNmFrN2pTb1Q2YkFjUnRFS3ZpNGVsM3NaTlpHM0kyMmxuS3JsVXkyU2UrOUw1VU1pa0x0MGJMVGYwNkVJQW5CRE9iNmJBTXlScE45TXJDY2lsbzNxQ2pvSTNqYlFaRUUwR29OcnhQM3h2NmZmQUl3dy9tSWVvRXRvelFZQkdzS0wvbnFkV0haamg4TzcwQlVMbUtiN0ZXTjVLZUYxVm5XTTAvVjJyeVJpTFg4OUZEYURQeTNFRGVGVTJWbkJ2YXhTL3NGOWp3YUlicFRWRnJHR21SVWVjMXhQNW43amNvZWM0cFJwSHlBenhUWGsvQ241cGczRHFwT2lLT3A1UFFSMnBNNGlUVVZOK05lNzVNTGg0ZDJtVUNPVW1VMElmTjdzczBQWlBYM1REKzRSRHdBZXVTVE9UZVY0Wm85Zk5kSDNBek5DeTRmTm5SaDJWcjFMQ1AycGsrNWVHTDNPODdFTGc4elNDQUxHTjNMUTJ0cVdzMWkvMm5BbDhKVmlSRWI1T0k1UWlNY29raW5pWGtjNGlHUEZUM1VKcFYxK0QvTFpKTXlBME55dnE4b09mOTc0dGJrMTJMb20vWmtFcDN0UTY2T2R2TmRLZVhpYlM5Wi93TEo4SlRFRHhxdXp3QmdDN1hwYTFIOEtKRnBkZjRxZ0hrT2VsbEFrVEY1SVZvUlFSTkszUEF5dFRKS3VlbHozUC9YV0QwR1NPRFVlKzFzU3h6UnhJQVl2SGpPQ3djUUxJUHl5VXhabVpXN0N4SFM3ZnBDSGRybjdDbDRCUEszZEg3NENRUmlvTXhLZG96QXR3eURjL1JoS2laZGY1Z1pnZ3lFMXgrbGdLUzNXanFmcmN2T0xJbU44RURHTWNyK3FZcWZmdDY1TjB5SWxKelhBTnlHU2FiSDJyM29iVVhqNG5UbjAyWjU3TEFXQjJ6cVI4L1o5R1l3SWhKZENINmp1YlhSL0xGWVBXbVJsRm9kb3dtMDhoNkYzYWQyaVByUi92c1ZYVVJ6c3hsbnZrcENPaFVUUjhJa1J5SXFDZnZPdWFMeUNob28vNEFrd2c0aFoySkdzRGxrQTJUSEZLcklrOTVkUUZBMWFCNENmQ1Mwb2szOWRYcHJtaG5VODRRSVRER2hXcGdDanRRTWpKR3JaVDRxNkdUZlVwS1pCVXhRaG0xK1hVeWJxNVhtRWtoZmxQT3BTWStlU0JJUXY1d3ZKN2M3ZWd1SVlQR0dyQ3Zucms5ZXRPQldnVU9sTGhNcVUySVF6S25OeHBId2lFUXYwcHovQys3MWtVV1ZCRFBLa1VJcWpqbERYSk1tWVd0VGpTWHg4Z2NUUHRoMEFNUFVpWmR4dGlUYjh3Z1puL0JYU1gxclFYRGp3dXc0NHBwNjh0NHNNVHFwc0dvTGRQa1BBcFFhNGE1bDR3SHRaR3dhdm8vNnFvNHB0cDh1OC9ZY0M2NHlYZWdCTUdpODNadWxCSHhFWEF2OW5XTTdsU0dlVEw0cnk4eWcxNFJtelFaWjNqU0dVRUpnMXJpeFZlVTJrLzdqWmV6dlBSWkxSUlcyRTJmZHd6U3dmZC8wSmdqR1lUdlQyRDI4UHNLUDM5TXlGOE9qTjlwZnpSSkJKNXI2RDVJTlUrcVpLYWFVQU1ibU9XeFZ1UzZ5aXZ4SDdNR0Q3b0twL3pMdy9sb1hBNHdFUDBZOVRKN01IeHMyeGpWUXQwb0F0WG9rYXJsRzgzeTFjeW5LWVozbloxRFZjM0o5S1JxSlZ0QThtTW5XR3MzU1pwaVJsZjBnM21JbXZvbW1MZzlldjRDTlB2UW5IVEcwVEk3QVh1eExDZHQ3OEVKdTNpOU1xeVFucSs5ZnJsYXg4RnFmVlU1Nkh1NWl2Vmk5WEpncjlSZjROcTJZcG9OMUt4OC9TYmoxZG9JclAvUjZoNS9Hd3NTeFM2OTVxaytWeE42RG9yWUNYbFR4b3hRKzZNaTl1L1lLZG05Ry9lNEpId1o1bDFFM1FuMTRNVlphOU5aVG1kOFdUMHpBdndWZlRyckc4WVQ5T1V4OU1MaFV6akp4V1B3eEpWSUd3ZTJXZEE4Q0preS92TUNJRjZDeGljRTFRZnhHYkpkcEJFRW9OMklXUlhuOXpnNDBwZ0FTTmFXNldubnkvb3dvRUl3Z1FERDlqMVBwbUtnM0g5NU0rM1dpYUJSckQrN3VkeXZzRklYRXIzdWxUMzBITUlITmgzVnMrWGVCTFFTNzJUVWoxRzlpSGh1WFBpVHBZVm9aM0RlZ09ZazRLUmxLOWQ2UXZxSGdmR2FCbjdCYnNaUmNBZjVneDlJdHFhSElBUW1PajB6REpKT2pLK3daeDNyQUowMVF6WjNsclBzYUswWXVJZ29oaUxqVVRhQmIxaVFmdURiUmUycnNKRFFIMUNWTDBGcmhOTEhzU2pTM3NkN3pPKzJUeGJuWDd2c2dxS29PTDI5S3FWMjB2OWRSUnRaWWJob1JURjJGK012OVZaRGRQVFNyNnVmZ0duVWdKZ2xOVkJQdk84NHZISHFiOUdFRXVtOTZHTEpnNXViWTd0Tk1vWWREQU1CQ2NKUHRyV1dhQ0Njdm1hc0pQYS9Tdi9RNm4xODMybWtsenkwdDJtcU8vc0J1Wml0ZmIrMzN5V3ByWEdTVnV4OHB4WEd6UmVpcmFhVHFyNmhwcUdrbnBmQzhFeTcxbWxLRC9uT0ZvbHY1c0dWY2QvRkFMdDhuSEoxNFlmZlZ5UjVKcU53eWZHeG01ZE80NkZORXl0VldsVHE3QjhyYmVUamhvVS9NMnRwKzFwcUhKRFBTcisxM1gyTUdLak90YUw5MTdmY3JMSlFaeTljbnpNbzJqeGJvbzZkaC9haC9YVHM0RmxIaUsrbklBc1huUkUycytMVGJhbmVMRmlsN3pDcjRYeFBZR1BvdEM1bjhDNDRJMG9OaDRjKzhSM242UjZmTnhTKzRHN0FJRndBRnMrQ2x2cHFHUHFwYlRzOTA2K2ZydjkzU1JHSXltV2YxYmhhWjEraDRRT24xU2xrSVluQ3djNE1LSFVreXFDK1NHdy9lSzRXRGRpamlaU2pndUxhRjc3NXZtUGYwSGJwY09ZbTJ0OUVOOW5wekpzSmRXM3pCbzVPMXJGdzEzSzRaM1J0QkNFQkdFb3pTcnl5TCsrUkhzZDFFZWVpSW95cW1kUHI1L2xnV21nSUk4Y1hZVHJCSjJ3UmVYM3hUVEY1d01VU29MbjNybUorSnBHRmdud2tIa3FTNW14a0JvVkJ6VDZubEh0bjZaY3cxM2V5bzU5VnhtcXR4SDk5M01rNzNtRHl6ODErcXJvZDUwZVduWE1aaGRMU01jYmhxV3lKeFp2bDlYTzR5VHh3RTNINjRKY05jMFBjRTNYZ2o3amk5UGJXNFlabjJyS283YjY5YnA1YmRFWUZvRmFNYkpxK0w4Z2d0eXo5NXc4Smk1RUNpWWdXT3FhV2JDWmFVd0VVN2xiVS9ManMzYlJPR3lwWG0vZE41WGY0ZmMxR1drejZlalo3TklJMitqNFYzUElQdXZpd2xvaDhVeUpQMFh3R0V0MjluQVpreUZuQTVlRDhpNVlaa0NDV2FqMWpVMm14WjhRUVV4YUJOeElxK1BNdEwrdGhCL3FGdmNiMHVOZmR2aFpZTThBbGEvMlJ2c2xVakprQVdBKzVlbGV6Zm83N3FlbEUya1gwUHZ1bjZPY3U0elBSNjNuTXloOXYzUWZVNEVDbkh2Q2tIWTYwN3pGOEhrL2Q0a0g2NlljL0RHdkVWTTZRMFJuQ0hpQW5FVUNPRkpncjgwNGtYdXl6S0JZWVFpNWQyUFRYOVBTSXBVUzBLbCtobEJiNUZBazFzL2NUb2JhcWswWFl3VzBJMmlkbFZiTmdXT1RJWng3ZHZrZmNLY1FQRW1mT1NpUStUVVZDbkRwNW9ZYmplUzlkQU1XVWgvQWRwQmsxSlpEZVNWSk51eXZtblZNcXRiL0hXWkY5OUlRSiszZXY5UWplMlNYYTNIS0MxTm1vU1QvVGVNMjErN1BBdW1hcUs0L1JRcXVaUjFaazNUZkRpaERjK2p6SkdnQnZHazh2alpyanIyL1hXNmJwRDdNRTE3MFhuTzZPMkcwZ0tFekM1QklhLzMyc09qQkhlL2hvN216b0hSUUhDRU9IeENocStreUY3emZMdUYyeS80c09vdnVHUHQxZ0xoYXVFWmVORHpyRlk2U1E4Q00zSEpBSVB1Q1Y0TmdsUDN6bWh3UkpJYXl4dVpKRHdmY2J1dS9wejIxNXVlNHBjQmpCbnlqeFhjR2JIQXlybnZIRGZESzZ5OGZVZ3QwNnJOOFNQMzdFcVpKbEJCQS9kT2tTcWxtS3EzMzdXWEF4SmdueE9ZQTNIZnlyNG41cWY1WllCM0YwNy9zcVpVcDZ5YTFXcWlpNjhZZ3l2a09hQmZPK1ZCL0kyWG9qSmMrVnNIeVJwL3NzTlZUVzlBTGFBb3ZVdUcxZmVwc1FEQWhmWUkyNm1RdG9USWdXZUhOcjdmUUh2YUNibjQ5eGd2OWRzQmQwNjBWQiswOWZqYStGcG0zckdlZm1TQi9KNnF6L0hOREw2Mk5YL3F5RlFRR0c0aCtON0lTdFB4eW85bituUFV2aXMzWVNyazVGNGp4RFJoSk41MFF3a1g5MldyUm1YSE1TdStpY3I1dnFQc1YzMGR2bXRHekhmcjlXaS93K0ltdHVLeW51amRacW42VExuTlFFRzJRK0lwWVovYmtmZ2ZxSWtFNGZnek02WHRwKzNtTlZVWDJJWGJSV01PMEkzeDNoaE1xZEptbXAvQnNUUUpyVGVPY1YwMzJWWTlaRzdvV1JEcjJ2WDk4WjJMVWZ2M1hXbStRZzIzWkZrT0Fvby9vTHYyZTBMczIzdDJ6ZStXUzR1L0RtVW95WEVVWkFDTm4veWNwc0xkSUd1ZjRSdWROZDcwbEtJa25vYXlNZzlkK0NRd0VqaGlpLzMxeWF5bE9YZmdyTDlFMGxQYkNXS0tqWVNyUGJLYlpqTGwrVHJHL1A1cnVuYjlwZ3BidGwrQ2tDYkY0dk1XZElWdmlwbWYxQ0o3OHhlSlJRQm9wdUxId1dhcnRRM1RpSDhKaVpiRDROTzE4NzQrUDJuYzg5eHhIRXdjQm1UcXBhQndON242TVQyK2VzckFmNzdXRVhYdlZ6NU9yZFE0WDBFRUFBRzVwVnhCa2V2eXBCU3Z6Unl1c3RLUjlGVDIvTHpVQnhIUzlSUDJ6WFhabFFtT1JWbjJoYnhTNUVWaGZ0L2VJMitQMmU2TVJncVhSYUlSdWtwb2lwaTNMcGNpK3JRcDJPZlovU1ljWmxQbTA3RHd1bWlTbHI4NmY1bUplanZMSUNBZ2dsbytUY2JMNENwaURaOWVpaHoxdGZLVUlKQ2RicG1NUk14cVgzR0NnRnFLT2FQc0xTRVlGa1hSeHRMSkRiZCt2LzZUVVo0S0NGYytRaENGSHJQbHdvZDgvY2FzcGJRVWZVTXRPSE9tSXhDU2JZNTNSY1dzSU12ZStHRjY2VHBQOTJ2V1JvOWoxbTBwMUpmcUFPUHhaTVBDQmJUUTBJbEdIOElhUGpxd09zTEl0RVF5cnF1L0lhYTNYdFh4MXR0eXV0Nyt1cTRiRHVtMmtSY3hEay9OaFNJTWlBZWVRbDE2OUIrdGZ1SUhNUGdlZ0lOcmhncnhXazlReFNXVWZjaUg1YkJUbzlOWTQ5NzhtLzlpU3pIMFc4R0l5NlRuNncxeUFaWmNwMm8yS2JHSG9MVlE4UTVydDNtTWNWek5QSkk0SmZNVG4xWHZhRmZ6ODFUUFM5NjVkNUJ0b3U4OHZ5K3F1V1RFa3VvQzFMd1Q1ajZ0bjZWWjR1OVRjbjc2eGlWRm8wQVFSbVVLblpNa3ovM1YxbWU4SVcwWS95cklLU3Q4ckNOb3I4bXA4OE1nRFpOU1g5WnAyQnZXQTRLdGY5aStRNmt5TXJrbloyMHV4UnJpMWQ5b3A3YU1WNWRVb1J1ZlNsQ1ZmeVVjNlExRGt5K0YrbEVPc2REcTY0V3R1YzZZT3BmNCtUU2h2MnFrYmw2OHZZLzNRUkpML2Mza0hCa2IydmxFVGVBU0RQTXBETDV5TlZOWm1YZDYyeGV3cFQvbHRaUDBqTktoQ04vNjZMd284dVpVRTczdTIzVlQ3K054eGxOUmxMY1hGMWpqaGtZazhZTlJINmdtQ2FuSDl1TFhkL0Irazg4Mjc3dkNwNElYODdkd3FlMDU5YjJqRG1rNGZ2QTQ1RHJSenhnKzBxdFVDZk9Fb0VyWDJ2QUwyQWRXM2ErRkVIL3drOU1vRHVxNVlJMlZZL3lTY2dxU1oxZ2NlelZPazd5azh1Y21pWDUwNEg1L3B0N0NrUmtJbGJFLzJyNGNiUGpJRlVKeDZBaEpYVktnSzRtWGc2Vm5SUVlvbXdmbmRYY1VCVTFjWDVSQmx1SFdlQ1FhaDg1TnNramdSZnFyclJxYWFGL2h5RU5qaUtNMHNRSkJVanh5aTB0OC90d290WnpJTkNxVjVXVkE5V3ViVzc4UEF6ZVA1ZTN5eW1KU2t4ZHA3ekFBR0JBbXNRVStxM3ZTMzVCUWlNN0RRSW12RFIzRnF5Z3B1cjVVaTk0R1BpVXVKY2RMaThCTXkyU1p3WE9FSW9qSTdLTklzZ1hoSUppcFo3eVM0cW1aQ0tYYnlQU1g4bmdnS2F6NWpDNXFkNy9wSDRncU9DWm8zdXZBcHh4amJQRmt0SjB0d1hwN0NDVkdoZ1ZtVmdVY3hST3RsUEMzT3U3S3JsNzMrUnlWNzdXU0lBOFVDUWtvU0V6Y25QTGd1VlN3cFpxcEhYLzRmcVlGN1dYYkpFTFFHa1BjMElza1NaKzViVGZMbTIyZ244V0hUMjdIQmQrdVRCdmx2Z09Rbjd3eFpIQmozdmVLeFRUUlQ4TVRVN21FbnJJMmNlaGxmWWExaUgwSkpPcVlMRWh1b1NqOTVkYmswQSt2bGFDMndRd29tQTdxOW1tT1htWVV3ZEExZ3Q1WTc0K1pFMjBSWVh5bEM1U2RyZm9CQ1RSQjNneGFCNWJ3RVFpRWU1UFRjVjI0aC9LNy9ONHZzZ2pjNjlFNlBxTnV5bm1mSlBKKzV1RGc5Ni9WVzBoUEw5TVM1azdUNWs3SVg1ZDBCcUJBZGx6MW5DbzliaGxXdEkwRjAycCtLdU1MV3F0ejhyZ3N3M3hndXFnZ3AveDBhYXFhUUllQVZSNURSL3hpaVpXUHd0U0EzbnpzcDFETFE5U1B3VDhIbnF2S05USzJjZDEycHZjbWRkZXFHM29DUnh3YUtUVGdPQ3hzMjFDV0JabC9aRXc0WjU0bW8xUkRpSmRwVGlFM3IwVU5OcVlJNDRJZS9kQkFtWG9vMjVSQVVTMFpaRlJNOXVyelhmZkx4MmNCZjhsWXVlOTlleWdlZW5uODA1TWNvZE9keWZBMmUvNGptK1paVVZqQ1VFNG01VHV4V3dGY1E0bytDRDdsVzVJR0p4WG83bGlDSnpieHdKOVh5VkROamoxTkFXbGVsTS9JdzJ2cDFKUWJ1dTlzYVF5aE5yM3lVQ0s0ekwyd1Z0Y21kcW5LbEZFM2MwMHA0RWNWTnNPTWRZVW9aTExRc3ZoMjNZRGM2STdQRmxXYnMrTlgwSTJqL29vUGxKUFAzRjNpcjgrN3YyOU5lVFdRZGRHWnpGdm5NSnVrOERXbUp6Nk5ydW4xc25GcjNhWFNrWkVYdmk0VWd2U0NtemxjWEwrNGpML2ltUzV2QnlNaDlnZGJEZTNMOEVKNU9lRlB2RUVhaTZmZE5wc1IvaE1jZVpsVUw4Zys4WlZIaWo0TzZWZUYxVXl1L0hiTSsxTms2eWJOSEY1aXFFRGZ3akxGdHFDaXhtdGNRREJ1SThWUEJteW5nd20zUndkNnBZL2krOUE1U3BYaHY2U0N6eTdSMHZMUzVodW5qQU9vNENJYW92Q2FBb3lYWmVtVVFNS2MxODFaOFdkSmFpMjVCUDVZN0JQcCt3VGd3cGUwN1pwcklGeGZmY2s4YUwwTVA2QTI0V3BiNjBvNEYvd01leU5lOFZYYytpZVhBZmthL01VZCsxYzBjV0xmQ1FVeC9rYXIrbVIvdVRwNEFXbVJaODc2aVRCUE4xQ1pZMzhVWnh1R1NxNGhLc1N0N3FOQ2NBRS9yeDhIUnZESnR3Q2NqOWdrV2NZalFHclpGbzF1N3lIelJONEdSeVg3aW03cTF5ODFERDFMVTN3SGE4eUJZSTFxaER3bWFtbC9HVlg1Qi9kemZNQXBQOTlMczNiWjBBWTJMd3BHd3R3ODhGK2FCZWREZ3krZ3orYldEd01rTitjQjRzU1RnSkcwNS9BK25SY1pobjZ4NE9iU0dONlhKSUh4MTZMekhxb1p2WWY4UHJ5THFvWmxmVnBlcnJDdnRvZ01aTGxlMHlQRU1tZ3ZPeDh0bElQWEEyWFp6eXRjbjdGSStMU2NVSUQrOW4yL2FjL29Wdmd0aUlBdk5qWmNBRmVYcEMralkxalU0V2pyZElUMGRvRDRDTU5kMjExUHIxbldLVkRGRE5KSUN6UnpyZXhpV0IxOHZqM1JMMHNLNy9vaC80SVF3YTVpdjl1cGNpcUo0OUJKWExaN1VXN0tZcHZ4cWtOdmlkaGlXdzMxdDQ0R01WS0dic3lKeDFFa0ZqZ1pKa0FYQVRpYnhqdlNXQm5HN1B5bHpiT0djS1BCNkYxSU01ZzlDWHlzZFVKV2tMbS9tNkNIRkVHTml2UHpQTlR3ZVkxWjdTb01rSjl6dkNueVNtMS9yZnFlNXBYZFkvTk9YV3lkMk1Nd0JCdCtYbmpReExrVWYzK1llWEUxeUpid1V2dkh4M1hqRTRjUTJUZjhkZGo2c3d2RVB0dGJDcXZRY2RDeStRVGFya21aaVJ0VUdTeDM2NGRJYkorbWdVaWk4SmMrODMrNGVKUlBHemh4eDJNL0VQYkxmR2FXdjQxa3B6ZHZ1bFIrYWp0KzZDWGQ1dk1EMVRUcWRXUHdXNTN6MzNVUkFTYjRiNWpiTW1WOTYySDg0cWRQbnRUQUpqaHU2Q1B1eVhHM2gzUFAzZXJTR0RBVDQwSUxCQW1TZVdIOVY4QWhHNEtRcEVTUFo1aWdIeDBLdUYrTXZLZytYZVV6KzFrakYwY2YvOFRYcndUOTY1dUVmYitSZkoxMkJyV04yY2JCUVV3TUZCMTczYTVXNEJ0NkdEVVMrMmp0WnlDMmNUZHg4RmhhQ09JMkJXNU16bDVpQ1JFMjhUSVE0M1JpdWZOUWM5dnh2TXpubnRxdUQzN3k2b2ZjYjZReUZvUnVGYmJpU0VCclhwWmR4VzlmMkNvQzMwQmtUa09hcU85cUduZlhzaHU4WlROTms0Z2x3K0hYK2tLcHJqT3pNRVM4WVFlVWtLNUVza2JDNjdyZVlWK1l2OU8xeVFrZFNKUzA1N1RFZkFUdmhvQnd0L0t6cXpOU05RQnZ2QmNTZVNIWFR4VkIvT2FKZUw2R1Q0RGdFcjA3MGl5dkM1azNON01FSDRXUkwrNU1oaWNFWmtQZ0dyU1RUcFBrTmk3YzVzQm1QU3lwZnA2MEZ0WG5jOHl1eXV2eU4vcUk0MkVZWllpbGtlWGIxMHlCWkhJUnRTSmV2YUZvTjNSSVVWYy8yaEREWExnWlJPblU2eDVJb2phUmJxcEFoZG1DNExmNDhkZWh0MlBUVVlHRHNtNGtYdTZ6ZHh3NzdTbm9id2E2eTY2Ly9vMXJFbzJIVmtObU91Wk9LdWI2NzY2RnBYL0RSRENaNnUyK0dVeUZiMG1rRHpSd05TRUNwblRyZDgxTW5oVi9mVGFXY1JUcDIrR2JJTWh2bXlZQXZvRHN2dGEzNE43Yzg2SzZqT2dvUjZDRHh0bnkweVZDeTlwWHZSaUJHaDBCMWtNVTlXVHp6a01JRXREMzgrWEtCMGVRQk5zWnFkd1poVFNkbFp1V0hOanNGQisyci9JWE9udmRFTldoM21mTDh3NkwzQWZFODU1SXY5dmM0T0ZNRFRHTHpyUk13cHZqRUdQTHpReFcwcHdVMndsbGNKUDNrUXF2enhHMUx0cUxYQmJ6SzNOa1JlVHhlTnY1TGtaTENGZDRaZlRiVHpjSVo1blhUOE1GQW94bjh4Sy9KRVBXbVkrSk5xd0xpVjlqbnNHbUFHZjFVbnNxcUw3b1pzWnZLUzFsd1NUbVlZa1pDRGtQR0l4U0ZVTU5NVC9vb0lkaGl1TlJMNUhsK3ZQOWN6Ulo5UjE1WUU0dmVNcHo1NUM0OG52TDEvQ1EzQVBJSy9vRHlhd2hSbUQya0FFblFSM25qYlBSRUVWM1RIWm9tVG1yK1JORFhuazJuYU5KWjBHWkwvSFRERGNQeEM4b2p2TVNYbm1tbWRDK1FzaWcvc0UydUpvOVl2K05ZWm4yNHZUbWV1WklrTVJMZGpOUHBKanQ5Q1BRdUZNa1FDOEFGZzRoL1lsR2MyOTFSdEZ0Z3IvRnZxYkRWcy9rMUxDRG50bk5KcnNnUEJvcjVGdUJ0Skg3ZmFkT3Arb2Rid0tRQlNXU3JzUGhkQnJUalkyc2RGdnhnemZvVHhsYlhFUHQ4c3hFWTZwMzNzemUvak9DTlhaUXZUOXh4cVVJWW5UTDFGRFZSWGpYUDhUNkVXR2lEWXdkRkMvTElTSHdZdXRwQVQ1Z1dtazlqUjYwNytBdUNGeEh5cVEyb2hLaUlCREkzMlYxQzhvNEZmeGwraDNhYytSYjg4bVdNL3RFSmJKbjJpUDlKTmVlODl1ZjZ6Z0tDSXA2cDgrNGc3aWhXblg0S3BJeU1TL1FMWkRkdUp2Sm05RVUxaHplak5IdG1jQktnL0tYY2ZweWZWckFBOEp3K21rd3VOUVFxOXZtMjFwRWZYQVorNEpuUVgxcWNDMzBFOGNmS2xXYzh4dVF0TXFYall6c2dPM0NhcG1mSFVVNmRpRGx1b05lQXU2cFFJc3hMSSsxOFd1bEx4MGRQNTk0K0p3eGhNQ3VIclFEYi9Nb1NhWnJhVThwSzltSk8zMGtWMkFiMGc0T1NORXN5eG9XcmZLQVlJRndWRHEwS3c3RGxCK0FuSUFjWkk3ZlFJTUx2QVJSV3pSL0RMYTVjdTNONUw4RVJxQ2xyL2JWQVNGdlZ2bUFRQVg2aG80YkZQT3FOdDRJaWxBK0FFNmJXdGNZYlV3WW5oZUdxTEhHcjgxTUpaZjRyU0xVcFNMOUdhUVNnaktaVmVYZjBZckdyalpBL0tzS3o2bk42T29OS1FMZkRYSC9GVktXUXhRaWM5bHh3SEVVM00xZjRpWFdWa0Zpd2crRXJOa054VE02NUFjR2dzeUVwVVZjUjNOZVRQWFdVRXhTcG5Cbm9UcnZtMHhFa2RWdWtRc0gyWXYxUXZqV0N6V09aTTNUckRZSFpTbWZWcVpncExXNGJleG9iZWhoVFBqWkQ3ZGRmanJVQ3Rnd2l0dnkvWFlwdFZpRU4xUnVIQmk4OUR1R2p3SWdaRk0vRjVBVFpNaWV0MUVCSVhHcGUxakdMd3lxTTYzM0gvR05NTHpsRUZyRUNDUkhKbkNya2I1bFdiS1BVbEkwMWNDeWErWHlxdjZ5djdnYUdRTnB5amhYVFE2Uytzb051eFFxbkNCVk5odUJ6MWl0QUlOdzNyblJobTltZitpVkJtZlFLN1BpTkU3V2JkYkRBb1Vrc3hRZGh4QmxjRFdpcHBocUNHZE1Pdkt2bmI1OVVGWFI1OHNBWjlHUW1HYnlMTVdKcGFJYkxQdHZOUGZORXArT2hpWnNuaW1TN2djRTduZWpsenkvSTZtUDV0dTA4T1JDcWlOSkRxMXVLRUo2ZktYK1VVbVZNMS95OTR2L3VrVFVSVGhsVFVrQ1BMZWhhR1RJU1hoRzZQMzJmcHUvSFdtS2Juc3RsOG8xMVYvZjBheWpZRXVTcExqVjIzRWNpZDViR0VxYzRmdTdNNU0yTlhBVG9oT0lXMzNPaVF1Wko1VzRTZk5jdEZqeFhoN0djcUNOcWxnK3hNNGdQWWtsZHYxTlJKdWpmSUs5S0lvSThiVS9CTU43THA3SFQxbDRydUI1SG9nNGFvUnNtaWxhclRWRWJLNDBkT3dBc1J2ZCs5TzVOemkzK3Q4UHc1aWJrVXo2cHpObGt6Tm1ZYU5DaHh4WlJMV2pPcGRQWkhoNUxiY0JqTE13QWV5S2pLNHB2RldMblBTRUNBMGlRUzdMOFZFQ2JlVEJHVnE4M01VWmpWTCtLRjhoajNhMUJXa3ZlUldKK3ZOVk1veW00ZDlDNUpBTllzN3ljcHZyWE9xMzdWVkErL3Avc2ZjZFc0NUMwWFpmNHprNURFRkVFVVdHR1RralJJYXZONWRxKzczbHNHelAzYXNHMVZVbEpMZ243SDNpNGQ5U3B1dFBQVDY5Sllnb05KU3VxOEpWemFTYnh0dzdHODY2dFBSZ29yZDFnTXFPdTJqSmtyNTVMTVFlNm54SjEvem1FMVNCTTFzTHMyZk9YdjFFVlRvWCtaVmZFajluNWtTL29xS2MwL1JiK3c2TVd0N3JXYkFETDVDV2lRV0xUMkVXZ2dlS01zYzN4dnZWUUJuY3R3dnAvSmoybnh4eHBJbCthcEJEY0FwUXBkUGV3Q2pJaW01REhNM05lK1U5ZjRkRVFrR3FxbU4rakhrTVdGbWUxN01OdWk3TGZZNlpZNnZXVFBaL0R2eXlsaXp5MGFmSHd1Qk5CNVNER0VBRGVyUjdPaEtCWmpUeWJtc3dETjV5MFdvT3RIZGMwR3JHTzBrdXY2WllzWjZYQ3ptWllPOFBWSWlwSUVGbXU4TlFXNDU2M1I1UVNzMExSdTR4VCtJOGl0NTJEQUswMEtPYnhRaEJ4YUhBdGZQVXZWR3hiOFQ0N1R2bEo2N2hwLzdqN2QxZUgyc0wyVDF3MUJsVmZNUHJHUXQ1MDBTT0xGTkE5Yit6NnNNSTg5SGd5QytKTkdnQUhFWFBLZDExVXpicituR09iM2k5ZVBuVVUwQ3crbUVrUk9yd25pcjdyd29wNFRPK1dHOWpObDIvWUVwTVJzczlaY0srSkdqM1NUSWRaMDIxeVBQZjFnNDAzZXBpT3ZYZE5SSzVQZThVY3VrL1hXb29tWEpIU3JQN1RpcCt4Z296UEUyU0JEZTVMQUVkY0FGejBXZjlsRHJmKzc0ZmZLTU9PTGZaOWJJOVIxKzl3dEJpOGtvV0g2eXhZZFZsclgvRHJZTmUvdFpRV09JaE95K0pUODdOamJLbzBCSUdseFlrOGJkZGk2cENYYUZtdEw0YWhKRmYxRjczYjlhdng0b1VMakQwNFM5bHlrdTNEQXN3R0llTk5GRVYzM0k1clpLcGFXRWhZN0k1dlVLS0kwSzFPVFJaa3JEalJvb0VqS1hZYTJ2WWE1RlFieDBiYjF4d0E2WGdzMkZsMDRPV05ySWU1Z3JzQWhJdnA2eHFXWERtZXdka1JTdlVrdm5jSHZiNzNjNWx2ZEVzUDVOVWtibGNiN2FOU3RFQnpDMVM4NjR3YUJDc01wODRGYm5CcTRFcDAzaFRiK0E0YjQ4YnZWcDZhTjhLejF3NzdDUTFHblV1azE0dFhYWFJqaVhkYlVVMW0vNEw0Ynd5eU5TZkRrRzRHK1RVWUdjZnMybjFsVG0yY0I5QzRBSTB0TnczOS8zMnhuRDZCZHdMcFlkZ1ZWSTNHblVqZkIyVTNtM2Y3c3FJVXpWVld0b1N4U1o5dStWM2pGNSs3eEhLU2MzN0pHWHk0Umd3djBaUUtEQzNSamdNR0Q3V3BzNHJoZVMzK255RDV6SnBRMmMwSDExUHBtSENGU3YvM0dCR2x3eG84SDlTZmZLWDBYLzQ0RGJKSVRJRHE5cGZ6MkQxWmhDNkllNmgxRysvdDZHK1doaWF5dDh4bVJ2Y1BqbDdnb0FHRVBveGpLT2ZuVGltU1QySjlrQnZ2a2FmT21tWWxZayszaFljT0U1NEE4L1J4V0FPWUk3Mlk2ZUR2VDBMaG9Vay9xakdnSDFIQTAzNGRSNlBvNysyQ1hLNmNNdGZLNzkvTDlXRE0vYVVwYjUrWm1rRnJtc0tCeDZoRStiTVBWYzVxbS9RL1BobWFIUysyWDgyMFpScG9xbVFTdWJidXZUN3RIaXczNUtDZ0NzeFR2dHlYeGpuNU1CNEFaMWZKTis3bVBmR0gwNjNkdHVJVFgxWmJ1dXZYdnNxdE9UNWRSV0tkZG1rT1VhNFZMS01kT1Nac3JaYmlwSXBkVkpmTVltTW95M0loQjMwWnhwZDZBYmpUNnVBUXBuZm1nUEZDalh5ck9xMmp3emlCMXF2dU5KYnhqU1lITXEybXM2V0l1TlRKTnBNRVFvVVFNOVdTeDJzaG1HNThBUWthbjk3dHZucU9YRFNlZFc0R3k0MTFpOGo5U1pCamdYK2lUbDZEZSt6eVRzUGhyT3NNTnBPbnJXcitrQ1NOY1BCYmc1dVk2bjRtNzl1WEJaTjRTM2lwL1Ntemhsd3JsZVZnbXBEbVJ5YXVpYitURHJyc3ZnUDFIeXdlV0dkVElqamdpUXB2VVd4dVFhRHdQM0ZVSURXUFpQTyt0d1pHQ3pHZnVxM0JwdGpLaHpRMVN3YW11TllUb3Yvd1R3QTYrOERDbkVDUWRIM0ZHbUlLVnA1Tlc3TURRdElHaksxN0NCeUszRFFJTUtqRko5a05ZWGFLd2xrT1V0aGgxMVVmUW1GSzQxVGNhZWJaM0U3Y0xRQituckM0U05UelFuODhoUE83S2xUeTZIazV5eW1EOGJOOGEvbCtqMFlLUE90dUMyRUUrbWpXL3N6M01Hdk1pbk80aG5XcDVyMFc2Tlg0cFhYODZrTzJUSDBaYnNQOUVuTjJzam1FdEwwc1dsZTVHa1gvSksvWHlaYVkwYUFHUTJQcEdsU2hQa3lSKzlFYm1LWVpIbEkwVmo3MmdoTU94ZmQreEJ6TVY4WlhvcHRwbFp4MzVOY0RPbmV1cWhGdE5XTDg5YTQ2Ym90aTRlTXdXc3JTQTFET1B5WVVpODRIY2RKZlduR1NuZldtZ1pwcFA1RmZjL3RSMm5kSlZFK0ErUCtXWjZ1Q1ZYaDhpWXBVL21tRTRvcEhIWkRtYjBMT0RkRXhVc3VXQXpDNklSL2VYR3d2bDhENXlCdUpLSVhPUHlqQzZYVHBGajhuWHdQRXFQZnp6ZzVxWkVDaC9aRkVqK0hGMFlXQnRaRTVoNkJ3TkNna3ZiNzV4UWw5MllxZXNNc09Sa0MzQUFBSWM2dDZEM0wxSnl6NDlURGNEYzZrVWJpNm9lc1JWSmRRY1BWdDFpUWVUZXRJNFU4eWZBV0U4TTJiaVVtT2xlVFl4aUNIckhnZk1MWVhjQm9kamx0cG1wN2tzaHZ1SlZuWFFTQ001Ym1URWxkenJUdmE4QzZFOGhwWWNmZzVLdkRWVHNWSUQ4bUdwZjArNndrdzRlb0pQRFF6U2lFMmdJNnhFbWlLWmFwZ2hTZ2pwS1VybXdFd3MxcGV0bjRzU1JSUDJCSkxKTENsT2pXaGwrVzlSNzcvWGVlR1cyWkIwamZzZVBZUDF1N3c3d3B2TEdPQmZ5anpkZ1pwNDRJaThUNEZFWWM0ZE1NZHRHQkZud1lobWNZMjdWWWo4TkM5NkVhakxOQUpvQ2QydkF4dEIwdnpLYlVkVXByQnNjK3Jmck5CQ2tzK2ppK1llRnRjRGl3LzVMRmJuczBvR2RQMFRFV0ZRUUVvYzVFdm5DS0NiSmQvd3JYc1hhRC9nYlJsMmg3NW83bjFGQU9rM1YydkJOdUR1TEI3enJXTDVpQ2RzZ0RkUTM5L3F4OC9KbWdHMkhZWENlNnlYN2ZoL2E2YmtOZHh3V0pZMWdNWDZZSnB3ellMTWNXbUF1dWJ5cjZaQTNmL0FmOU5BME5VcmtYb2tDMXUzbEVFN0RwV3RoQXJGejNTUjNQelZoL2kxM3VFVjh5S1lRQnJkSEs0dkFzaitzaENuN2tRS3JUWUZLK1JIWDBQSVFRUC8zS1hZV3Zqc2lqZkIraS9GODk5TzlIMEZBb2JnRG4wZjl5NWw5UFJjellmZnI0Ukk3Rlp2UkF3ZmNBZndVTWhBN2h6ZDYveEN1bElZZFl0aUhYWnlDL21SMCtPd2hJUUptZSt0ZVdiTloxbmJ2TmUxRGFHclRodG5HYVd0dzAvNytBTGNzMzVBWGhBSlR1ejBndHMyV2FTS2hWUit4WThtelR4cDJLcEJXV1puSkk4NDBlMzdXbWMrdjcyWUorK3N2VHVOMnIwOFM3THlBVjY3Sjh4M05JbDN6cFp2T3FwVi9UM0xSK1lzY0NJcFFCSlVYQ2tmRzFLVVZJM2RNM2xUZUpoYU8vcUdsRUwyOW02Q0NPeTJ4R0F6bWhFOHVISkRHUzlYVWZ5bjJEVEkwdS9OdndHdnRwalhFL3dKQmJPZGhqeEVhZ1pOVlUzcm1ISFhLNVRuNjV0aEtJTnVYZUVCbmwwenFIOG1NTDhLV2tqa05sVHdwZFBBc3J0R2ZyTG9Eakk0eElIT1RCb1BxV3UvWHNWOEQ0WVVrOVpBbXJnSUJJN1puUG15K2dPRVpIMGJOazBtZW5CUXErNVBMYWdtUnZBNXV6NDd6TlBZQWJCRFhxT3JMaVlkRThJZHQxcm1Ma2Z5UnM3a1h0MXRtRktyZ3FkWnRGbTk5bDJqNlpZNm5OVXpKajV1dm4xTDZyMnBHd1ZkVmJhRlpFOHl6ZEU5cmNQa0NFWnpaVGo2OTNldmVkTGc4dzZ1TVNqdnJKek45TmduaG56Q1VQZy9yNTJyQTNqcjNXZFAxVVVFSFVuQkJDdDlod01nMDdYOVJCNHZiajJKL2RINHIrL2IxQlE4a1krZ0k1UXZ1U25qSFNTYXRRMGpPMldzdnJMOWM0T1Y5NVhOVTQ5OThiRy9zeWt1QTBwYStpaTVSSVkzMGk3U25SNTFYNkRHU2Jyb01kM1lNdmRPZGd3aStZVlMyU0hwVjh5ZDl0RkJiM2ZodmJOSFN4SUdFWXBqYkNUenFkVlBGalRqaGsyZTN4QTNIZU9PNzBGOFp4UGM0Y1IzUjJ1azlCejBEQVlWaUNTTEJPUUxlRng0T0VYMXlnbUZqc0kya0ZZcm1GbzBycTRlVmFlQ2xWekZEZURVNnJ0d3R2Q0NiR0crYzVKajR1WXBHOWNNS1BnYmFCV1JlOGRPNEtjblg4T3JsNFhCRkt6cjZyTDdkdTJjRzJFaHpxcnhmQW9EYklERkJNS0Y5VDdrUlA2U3JONDFQUnZSVER2eVR5QkFGblIwbE11WmFCQkVaT1BYVTQvTU1CdTlybUZ5Sm5JalpxWktHY3Z4VlE0cVRyQ01XOFVmSTI0ckhMa3lSS1Nndk9JU1pHbWhTbXlTSm1ZT3FWeEFSRnN6STk3WXkvL0hKUnVTL3crak1WTnl0QXVka3FBNlZNcnJuTWdhSnJ2K3RtRFduVU1IK3hnc2xWNDlGWlVpaitwT29obkFtckNwVEJFL2ticmxxRGFzVXU4N0JDazI1dUM0elAzQzArZFRXcTF3ajIzbXZ5Y2hNTEhQM2s4bElReGRTK2UwZWhZbk1idnp3cVdXWVE1L09NRjUzdVpTcGRyNUdldXQ1bHpmdjNXYkJ5aFVES1FTL2xRVHFlbFZIWUxjWldnV2d0Z2lnT000Wmw5ZlpLOWtOLy9qcUpCT29scjZiWnYwWTVHL3VTUWVtYTRKK0IydFRQVUFPUUUvckM2cXpHSDc5QjVPOStuR3IwUWtacTZuK3h1UFZFUm1hODU5Z3NsaDlrTXdRdUFyWUhNRlVZRlZMeXZka0lZaDRRNTRRUkN2N0pFOVR2WDc2bkExMkFDUGxDMGRMK1dLLy9tMG5zWmxBVnVqcTFRR25qcjBsS1NScjhQRzI4Y1YwS1RBb0ZQbWsyU0JQSjRpUlpCM093SlNtS1ExUGlPS1lDelVrVFJES29rNXhzOUVhU1NwZjZqaE50UTRnbTVxbFh5dWQ2Z3BHRFBLTzhQNUFCU2hmSmxvMjNVZmhlR00wbmluNFJXenU5WGFZM085VWtERU9PbWg4cy9CU2ErSm1CZHh1dnAxWHR2c3JwMjk4aHgrd1YybUhLRG9LMzZKNFZMVHpERHFQdVNERzNqVlRsOHhzRUJDNzkrRU1obGxHaXNsK3I1QStUTmRNYWUzM3dVTjdNc2pTRmcya3lOVGd3NjNPZ3I5bVI0T3VFbU9zMS9xaUhBNEU0dzJXQkdGelR2cVBldVJvZlpTckdBTG12ckxnUFVQWDlxRTgxSXZtNmVKUkVlQzh5T3hrR0pIOThTakplblltbkpabVVycFZjbUEybVVMaksxK0VpU3p3ZnhNSXNyZlNWOXQ0RzB6RFNabENkclFsNWMwZzRXejh5RnFWWC8zdEhJWDFBTFFSNURZSGthUG90S1B0UUMwcjJrM2FWM2s4OG5JMWxFM3hFYVhYbWpBYjdhcUp0ZWdsNDhtSURQRG50Mi9IZk9rcnhhWkdTbHNnVVBaUlpDWVl1WkM1d1Boc0VoV2M3WG02MDJVRFVKTHRnYm1RQytWRFBsUGl1ZysvZmlnQjNiUnJVK3NxQjk0R1dkMlc4dDZWYmNhMjIrQlVwVXY0SkVTUmwxcWRrK0E1ZlJibFRoQVdhUFFUMEdsVnhLZ3gzSnJiWWZNdHNJRGdZMU1RMzlBUE1GTnRvamxnMzlLYXRjaXZEZlVkZXYxQUxzbzJuRDVNSTdrOEZoeTlMUWFZTzlNaVdFcHg1TGhiV0lCNjF4cVBpczFIL0tYdVFqUkZzM2J3dU9Fam5MT1kwNHUzRUZra1FCYjAwMVJyVEg0TDVEVitZYXl5Y200d2JJZHd2SFVkak95RStsZk5pemVtNVpPSHVCL0FETVZOTGgzejVHM1YrRU1aM08razdSSklGNGord3BxdlN1aEdxUithLzM2Mm4xYyt5ZkZCVVE5a2UvbkhxLzlWbUE0akNmdjF4eHV6Vk1wRVQzWDVtL3JsR0hVczhZZ09iNXZVWVkzZHFSb1g5R0pKdjdQT0pRZ20vcVVmNC9jOXo3Sm1rWHJJeWNsaW9wZWV2RWkzZWpOdTRrcitsMTMrYVhrOVp6K3VRNGhrSGdEc0xYQnczM2tNQmhLd1pTSGpQV254ZTEvSWJRekFGaU1NYU1LYTNwdk94d0V0Zzc1TUQ3cjZtcytVeUE3VDJNMGVBT2paaHRVeXNWSE1LZ05iOEpGODhGZTNTVVBDOS9PSm5mYmsrWXBuSEtQL3pJdWZkRkRIN2Z2VVVITm1ab3M3NnUvWFd0SEJ1b1c0bUJCMld3bklWK1g1azd4bEtyUFhKcnNkTFZBVGptK3RUa2FNZzFsSHNTZGh0Wnl4K0w1eWN2Z1FHTkZKOVY4cE5SRi80TzBUUUtsRFZlU2pTWnZZeGRVNW1qUHNqeEdsVXRBblpQVE50dEpsWnRhU2pnODhScHNUR1J5dUNEek1Bays5V1UxMCtHRFo2ZWFwSC9rMStjam8vV3dsY1BadGp3UUxLMDFZcC9lMEVyRS93eDZtWXRuV1NhRGsxL0R1QmxuUTJiM0grN1I5Q3VpZnB0NThNNHFSOS9XVnkzNlpHVDhuYVZ3S01jUVBXZ3A2cVJWaURMU0o5OXIwT1ovMXBxZUtFTG1XUVdEYlBWSC9UdTQ4SXl0ZEJDUEpwUW12bDdlYjJhQzJSSTZLRmZDOWhva054dU9kZ2prbXpGQzRJczQwRmE4YTJuMGE3RGJMV0Q2ay9heDEzK3piU092djk3NVpjNkFkUm5Ga0FIWDI5S29jdXFEeXI2YkE4MlFPRlFscGluWkZHczRGY29LMGVYM0VBajQ0UnI0UG5HMmltWGRBckJVZXVJbVAwK2RnSHc2K3hueTg3YzBySmxkWVVhY1RHdndabUJMTWZ3dFVLS1hUTnNSSU44dUttM044V0NZZDg2eC9oZjlnQmdTOC9OaldYMnF4RjlXK2pQY0RCanU2ZDN1MXBSYURsbS9aeERPWFJsdVBESXRlUHhBOXlSdDZoZ2FLaXIzMmQ3WVp0bnplLzl0em9EQU5LRzdoZVZwNlNuK3RrMU9NMWplTmJQek1kYVFSUFFJaXVBOExHcGNweDhzUWFmTjNOZUdsUFFmblJYcWNyWHU5MjVrL1hkWkpEQkUyNWJQemUyL0NYaDFsNnBrNDRHczE3ZlFwdEFYNTZJbVE4RGFwYWhNS2dNTlVSNDhtdzYvb2tMTjJVK3F2VFRRTjJlNzdkZzhJaXJORHNneWt4aEV3bU9ZcWVJeWNqb1I1Rys4TDZCUVBOaUpKZW5jUkpqV25WUHRCR1orY1dSSG1vSCtkWXNPWHBEUVF3bXE3VFI0aXRabllEdzZzTXhFMGRzaUtTdWp6bTNpaktLTFRtWTJEOEdRdGxTQUtVd3BSTTh3bEhuejZTNC9PdEhlQ0RuMWgyWEl3TG9JcmdaY0Viei9aNHVlMVA2Q29JaE1WQXZLZXBvWnVsUFFuNkRhM0ZZTWZOYmZycTJyWUFSNm0rMnpPeEFyQ0grNFpSQUFxMVU5WTVPM0k1NjhkZHpvbVdXTWdaZ1ZzcXBhK0xHdmZLOC93dFV3VVE3MnE4VkRDTWlhVi9ZN3NkcTRvNERZaitaTjhOaDBTUFc3NDVBVEtMTEdGelB4TEpOd1Q1M2t5bzc3SWFQZ1pWdW8vamtnYTZlb3E1Nmthck5DcENKTDF2ZlVVT1E0bXdqNXh6T2NjcDlvWFhvN1RYU2xwY0lRVW5jQ2lMS3NrVFFJbzFINFA1d3l0RGo2TlI3YkIyNnpQVUFYTC81UkRmRG1lTlg2TWE5VThIbUxSOXNURGpsYzQ4UDErbXVLVWUrMEtrbmR4UGdYcmQzSTFReld5c0VCU1JKQkphMDdUK01PR0gvSFNweTFldmE1aWpWcnk5ai9wYS8yTXZpcDc5akkzNjI4MUNCUHFnQzRaN3RFbXhmekRJYS9VUjRkVmVoSXZ4VFh3WkpiZERqaStlMzBYL0Q3OFRONWx6MkhCVnlHcGtJM1BVZU9uaVk0Z0w0b2J2bGwvV3FDeU1OVzVhZkZJU01tU29rMFA0WUpMd3FvdTgwRytrTzQ1VU1HczBIbGxPckJtTWp4UTZZaVdDQnBFb0lOMUsvd1doRW9SQ1RZUVVjd2xIa0hNRFdBaGRkcENiaiszNmxWeitlUGxLSGl6Vk03SyswcjNYVmQxV0ozUDdFTGJ1bjNTcnh2YWVsQXAwdmdHbU1aZW9HMkIwblJmMVo0OEh1V1pOSkI1RTlKTlJyeEZKZ2oxb3VPcVo2d3NrNWd5dTdvUXBhMTFvNU9CblVPNW9IbmhLcVAwTm15dnNvc2gydVlJTG5LS3d5V3FDUWsySFF5am1WaTJWSzhUMzZEK1F6OUxmZHZpbTdGcHA0bDVRVHBZSFNZOTNGc3hrb3dtMGFLR3JuMzBCaVFlUStKQU0rUVlSS2c0ci9QbWpxWFlZRG81Q2gyM292TW5aZlRweCs0am1Ta1VJZkYrNzFnSVlHZkNCdVJmcXlKcGtmNi9wZHFiZDB1Z1dsUnJMcHB3UUNOdG0zY1JiRjZnMXFqL0VHdDk4Y2ZLYlU1OHlnRXlHRmhzZWRnL3hvMURrUTJvM280bHQxblpUS0k3T1h3NG5YSll1cTMrS00vZ3dpSys5eDlXNlh4bUJjS0hvbDBwUDlSKy84eWxZYmdnS2VYMFdpc3hWVHFVMkdjTGVrTHJuREFiZEtrclBwSEtkeWVudXg3RlJQMjlOT3RmejZRQktxZnRaS1NJV1JkbUtEb05GdVVhSXU4VVpEYi9td2piRjFxbVdjMnh2Rnp3VFc1R2JSZGlpQktQV3dmK2E1STEybFZjMWFiSWVTUlVNWUJjZmU1N1lkMjM4UEI3RlExcUVvNjJLYXkxdmM0ZkJWc1FWUE5ucXp4aWVxaHZ3dXN3NjhjUGJDbTlJeWllU0VveHJzdHR4VHZIbmNmM0FWWDNiMzRmNTR1L1p0REtTK2QvOXZoc3JhTTlkbFNUdFBzc1ZrM3YwSGdFKzU1aGZ0ejh0b2xyV2ZsTlFYRk9jSUFRTUQwb2ppRVFXUlhzYXY4S0lBZlZJUkJjVGJ2RnBwNHErU1NwT3A1M0dHM3FkZW5sYklLOXlvWWsrcGFtL3dWeU1qUC8wT1ZtUTViTFNDdG5DQ2dBUnFYZjU2d1ZXNWdqcmRvdFNmNkphZFBWSVpuNTRGT0ZEcUQrQXpLbGZpVml6dVZ6UFN5b1RzOU5wemROcVFwOGdhdVhFOXhOVEVZelRsWXhDMEdBV1VXdTMvSXgyK0ROZmlaMnNtMUdhbzlKa0Y5ai96bzRBRzBuSk1VWjZsaFU0MG5wbjJqaWg5QnZwY2l1SVlWbCtSeWhhSFZZdU4wc2lJT3BtSHdneUtTY2NQUFdHZEV3Q0gwaSt4cGN6SHlsT0c1UDJvL3lxZlVieW4vTmdmODdBL05OT08wNFdDbHZYdGF5TlJQdXNsa3F6RC9SM1NpQ2t4NWYwREc3bk1uclo2L01acThmWHdwam0yRlVRbENZUHlJamdocnhWMkV2VnRjc0pnb0ZYYmkrcUhjeENsTTdSR3BYVVZ5MmVUOEVldGV1Syt2NTlJbjFBTkZDZVJrNGVxZDVsajdWYUdNUjM2amV6bWRuQzZOSjZGTGlKQ0hvVDZ6clNhdmdCUFJYYjZKc2tkK0VLN202OTFOL1lOU0hZRkxFRThEQ2IwM2wwWU5wNXJMeG5SZ2JPN2w4cldwUE9ZaDJTeGtmSHVEQUdFeURZVUR1TWdXb2N6bjRteXFBNEN3cUlITDg4RFRrWFhQTnNxZjFuSTl4WVVkZmJMTjROeEVjay9WNE8rRFNuaFBpOHRmTjFuaVVQWVVHQW5sYUVRUURMamIvdzFnbTNvNitEMk5rNkpaeDNNaUpabE1jVVF4VVFxSElZTE1GRnVYaXdFWXpheGY1bjVjWFdkVzFINW9SQ2dzZU4yQ0NJTEt1WTJTVFhZZEFYQkJFcEtYcllXQTBnOFBURkVHcWNNUHd6MkxrdmRNVkp2bDl2OWo1bGE2ZFpkUDZJR25KN2lDVlM4ZU5uVWRBMDQveEYvNktkNVBwOGI5djI4TGpoM2Zhc3AvbFBoeXVSaE55N25sT3gzbjJoS2lKeGtJelpJUFcyZHZKbkEwM3dHeEdnM2NOS1YrYlVkSWNZUVdyNE42eFNJRUZHYnJucHhBL2x2c2o0N0h0QXlkT2xRSllLeElhOG03b0ZubHhyRktXUzFLdWU1U0pmbHdYQ29PbDd2aStmUVlHY1NrWXQ3Rm1QQU5RVDJGS0w2Y0hOeWZZZzhpT3dzVktBM3B3OGdobXlySTloY3pjaDd4YVpKaUxDams0L3Q0b3RhUmtDdWRHL01tbVdmLzE5enpLU2Vka1dBWjdvOFFFdCt3SlM4T2x5WStpaVVkUHFHUTk2Rm5tc0tadEdSbS8vbXcwTTVKT1UzbTAwbS9aL3czZUZldVNVbUp2cHVmZ3F1bUg0bTh5Q3FnWkR3U2Yza3hiRXNXTkZjT0MzbWg1d1p1NHRiMm9ZcjY4NXVVMWtrSCtnZHRpVHVKRTBXZEJNYnkvME5qUUhYNm9UaWN3TEt0SGlRUThDTC9yTUY0YjFkSVl3U1VhQzZIdERuempmV0VDUUJaNUhURGg1VjZJYXE3TW5FM1ovdlA1Vkh1bjdqZWt5b01pZHhvSzR3Sml6MEdZYWRKNnZYY2N4OHMzbnY1THdMNXgvRXNqVkdxSVNkYzhROXI0QkFPOFp3Lzd1UmlYTkxETXZXb2pkZ09HamNzc1JPaWlPamNtL3dvOGZjZ3QxWU5zSUhKMGltMlpYU2FwU3Y2TGZFZ3VLam81SktKT1p1cDJ2SXZvd0o5SG5XUVNEa1d6Q2pUYVNQckJHV2V5VEVkWUpwb0d5RExzRlBvT0pIc25QYjJud1o2VFQzRUtZU2FVYklqWHBCZnJNNHdoRk1McVNIWjdOVEs0bGh4cVdycVMxSjVMMXNrZ21JWStqV29WamMzNk90UGJVRXBYSVJ0a2Nxd0RJSHhTeDVhWFYxVnlYS3ZjYXYrekcwZFQrUVFjYlNkNC9hN2hvanE4RDcwSDFEWnUxQVlTOEhJdmNHZ054Y2MrTmw1UjlzdG96L3NLLys5V21tZmtya0Nzdzk0MVluamtDNE9GMVNEb091YjAzMXlMUEY3cjNNWUhDYjIvd1hDdUdUUUR6ZGNPQ1YrWVgwS3N6Z3NUSk02QlB3YjlmK0R3Y2JHYU4ycytML0lpQitHdDdaSzZEa0lRZW5PMGNlTlFlSHlEMEM4VldRa0U3VE5ObG9VRnl1eDJieVhQUWlzMFVBaGpyeXdiaHZTUVlnTkQ2L2dEeDMrUE1Jck1Oditnd1lXYjloaW43ckVFbW5XbkZ6ZCtlb3NRMzFSNWY5WnRqQ1pQZlZva29nTis1S1pnWEJFKy9OQWMwMmdRcW1EeTVvOThpb090NUpMbVBxdThiTC85KzhkVzlPM01tMndjVnp1UjlRQ3FsRFQxdGo4VVBFNUU4LzF5ekZXVUQvOWtLbk9EWTJKTEFSYWYzNTZkRU9EVzFvZGkvS2VZMklLcGFXa0N4YXNkZHpDMkYxQ1FLdDIrQjZoRUtaSDBYNTYzUjZJQjNzL0p3TWJFeE9sRjczYlRadWFKbkVJa0JnQ3BwenVmTlpDUzB5ckExaHVmUTlvMGlyTGc0dmYyRlJ2cXE0enJkZWt0ZzZtM2IrZWFiS2lLaDlxT3hMMVJqd2dMWkxGb2V1aHBzYTJaOVFSclEyOVpTOUhmdTYrTVpMa0xaNG5YUUlRbllGd0kwaXRwUlBCNm9MRFlUbWJkUVo5b0hxNzAvTEt1MnVtc25HdUsrbkh5b3R4TE5temxXemNFK1FXYi9NMHg4WEVzdzBBK1djK2h4cDg5NFc5WWpiTUdRUFdUYjVDL0tSQzM3Y3BYUnBGdGxRODFyT094alFIRFNwdnh6SWc3MVpsMUo3c3ppeGhqUEFMMFI4RE5TSzVvTTRsMC9xTzBPdUpRTm5Tc1NHYTZzRWxQY2dDNjRQVVgyRFhEcVo5QmdTWkgyUEo0WTZ2Wms0L0hkbUtTalFKaUpiK2UxRHZrSnU4d0pZMWNnT0t6S1ExTUR0Y1ZBcXhPeHhlbHRUQ1oxMnlGcSsza2F2dGhab0xNVWttMWlWRHpacFo5RU1leTY5YXZ4Rk5aVUI0dHRTZVJDRkM3azlUeGNsMjhkQ0JOOFNNVDd3TVp2SFVoUVljaEduenk0aVdpMjlMSFZGNHh4ZlB0K1RjQUg1bHdZdmFFbG83eWprSURlQXpjYmNlQ0NnaXRCVnJyU3huaSswK1hzTTBjam1VeDRuYmtoLzVQNTF5QXJiNFZ0eVlvNW5VV2ZpbDZHcSsvblc0Wkt5cFR0dDNkV3Z0Rk5xQi9wc0xINW11UmxWaUc0bm9MOFVJSWlYZUVEbjVVdmgzNy9pcHVDVmJMN0syVWxZNWgyNnJsYWFuUVYycDc2alltRlRFMUFhQnVQV3FvWTd5Y0JXeW5XMU5jSmJBU0F0dU9GdHhkWFY3SjB2YkZaTyt0MDlJVWZ4S29IZ0FkVW12c0tPUC80ZmoyZFVJd3ZIS053cE5YMm8yOGdxQjZCRnl4Y1NqWmR2eWk0NW43SjVCMlVmVzMrY0NtNjdjVDJva1FoSzA5K0EvWlBjN1R2RTVZTCsrbUVsNjdHRzhUNjdmcGlCZG9tK2JVaUZSeEh3dGl4TldCbWlyNjJFMlRsVDczcy9TVXkwU1R3VWh3Y055M2RZTTlicWxZVElTY1VsNE84aEc1WjQ5dzBNcFMxMVVKUVJFUFNjU3N5azkyeUpyUFZDRWc4RUxuL25Jd2tIcGl6ZjU0TkhSOTR1M0tDTGF3MXpwN3d4WFFjSG90dU1tTEhPVk5NT3pFOENmWHR0NEhIc1RuWVNta2lRbVNmME5oakpsdTEyRGh0aUMzOHZBYmFxS2l5cVVaVk03aE5tZXpVbW91dkZjMEd3ZS9XcnNyejk1TWN0WVlEeTR2bGZPVlNuQWZhU3pjTzlKYmJaQ0dzenZoOE91NzdEY3FJWjVlWlBDK2FMbEVScUpHRG1ITVFxOG9UT3VyWEU2RlM3d0oyS0hyalkyM3h1NVFRWTF2MGRpa1dZc29tUlpJZmhmaEdSZ013RkJoYS9XdW95RW9jdkNXZnRHTTkwdlhtTkQ3K25UdHdKRC9rR2tmZ1E0SkZTSlZuc0pSMTRMZ24yWU9RSWdDeGdPa0Ryd1VqbHE4SDRwL3BETXpicWFYTmJFRFFqNlNZdlVROUF1dmxEM1l6TllLaHlERjljMVNEL21HZnowbVNtSXkrbGh1RlNNRmxLeTRZeHcyMjJiTUUzV1ZDQTlDZHJ1emptVldoRnVoQ2F3N09OQ24xeHptSFVJZTM5d1ZKTFpjVmhXdUsvVkVNUGJSakNBbUVHSFhXbkgzUCtOZGFDeGpCRUROQzFPN2RkSTB0bDdhaWxXTXJ2K3pWTldWRFFmT2JaQU9kcXV3ZlU0NFFjLzhpdkRHMkJtMTVPSGk5THRlc3VrZjZlbzcyR3I4dG1ndE0veUNwZEMyUmg1V1YrSElNTGhxQS9HTVNFSGtSTkNEWDlUZnIzUDVkblBJc0lVOVBXdTZqaWt4dnZyTDJ6VEsyTUZKMzNTMENmR2p1L1g1WWNWTHZOd3dBOWpicTgyMVpRcUZ2RGVya24wVXJFWW1CNjZqb0txNU1XUjZGUTdGNkFzTTB1Y1g3clVlYkllVnFZMUF1MlI1WitscWRqWndKeGFqWmNiOVdyVmtMT28vbjMzbHBBLzVrcGFqOUdEdjBtVjNscGRRT3lyallwc3dPY3NGR3hRWGgwQUlIdWYveEN6eXV5VkUweCtxN3FXZndVZlZEdUROb2grOEJMaVBBY0tyaG1lMDZuSTVSaTRNelJKL09JT1J3ODJSZU1PQ2QwZDNrWkhpZzFPcmFwOExjMkI2b1YrK1hjU1RpbHBJdjg1N21FTi9SV2ZDaURqbk9hQnhHamlZajNPTzBwQlRCbDl4TW1ibE1LcEJIQnVLamNPQWJrNEJYem53aEN3NTlyUnVUdzV2Z3NNVXpFc1hmQ2lXb29ZOUNNc2FYUW5sY05TVnZYYlJCOUY4K0llbDBzZDFNQ1hzNkNtdFpiS1JmOGRHd1N2NWNFTDE0NTF5VnZFc1hETm5hNEFZY0ZwQ1I0WGJTdXFFTVI0czljMkxDMGF5TWdyVzBFbjZhNDg1NjhWQXF3ME56bVpzU2N2UGJ2NmgwQ21UaFY5MVEyYkZyWUQ2c1hDMnY4MXJVWWZHRkpnOThQL1hPcjlaUjgrTkRpaG4zZlFUcXN0NmcvZU1HVlREUVdQSlZYZWFMbnJLQkFpaUkzVFhSZWZPWkxxMFJEaC9kaEErcDBGYkVIaFFhZGpta2FCSWVqT05SRkxEQ1ptU1VkY0VJQ0VjakNYQ2UwSTBBQ0d1RGk2ZHdSSXZDNFRheHVtRld3NFpGYlJzNHgyWWdvWWJTR3lGdENRNkVjaXZFVDQ0RGpsT2RNTjhMVHZhMjhTUXhQZ09GUTRLVm8zMmk0NmpaUFUzem5xSXEzNEJKK1BONWVwTGNjakErV0RTaGFjSnBZbW9nalVEaU9IcmxPSUluSGQzaFRGM2hZaGhXdWRRSjdYZVdqdnV1d1crV0paZWIxV1ExKzNBdkpvL3A2cEFoak8vWjcrdGIwMFNXcmI5Um5vMG1FSmFHM1J0eTcvWVpDUlJWelhRaGxDNEUzWVFFUlhiSkVLVUx6V25hSVVtdnFFR0k3M2NEb214emppRTlUKzNGOStaRGNOdWdRQ2lUajRJMzY4aTNjNEFYRjMxOGNpVXpZUG8xdnl2TWEreS9iam1tOGhGdTZHY0E2MXY1QVR0R3FsNFgvRlVCems2WkJCM0poWHJ6cGw0ZlB4MlFTVlkxNWZqeVRBQWkyK0o4T29kdVZQTUthaGM4RGRjZHdqWnJlZlRJbXA2RkZCTEdLY0wxWjB0QnpCUzNLTGR3dmdOczFZTnVNbjFDU1dzU0NEalFJNlNVMUFUS3gybDZrM01jSkIyeGZxYlVZbCttLzNUN3FTZkxmbVdkcmo4WXJkSFF5TkZ1S0JDRWE5SjVKOXgra05QSUFOamRMa2p4cnp3Q3gzVzhJNStrU2RIUnRUNW5la0NqRldQdHZDeXlZbUtLbWhHMkhGMU4vYzB5dDIxdVFwS0NlYUFTWXBwckl0TmdUcFYzMEhmcVc0M0grYklZcDhTTTY0U2pRTzFPV3FaQXpyVlZNZ1R0QndieHNYWk80ZU00WVcrTnY0Z3N0RjZrNzIrb3kyMzFCeVhXdlVwYnNpaGpnYUd6YlpyVzlVUE1FQi9MZ1VaUDVKYzNoWTVrNkRjTnRDUUtQbjNRTW9QYVlHT2RhL2drUnhTWFpETGRuc3hKaWg5OWZkWWU1RXZkZ1lFcXQ2dkljWTZwcVB3MlFmQkdsK3ZnSWEwR0poUStSRjBRd3JOQS9qbzlrdDZUdWtOTXNiVU96S0VSWGZUVVQ0ckR0Z2owTDFZeWphZHhpSTJobTl2UFJySm54c1JRN1UvaVpFcEpibW1rZXFHUDgzV1liSFpaRy9zamhyN2lOM01RREpNeVI2MStEUllKclBNTjJhQkdUQXlUa0J5blFaWithUDFzZkozRkxGTStPcUN6dWpVdWxlQWVmcXFkRlFnK2VJYmFjTjA0QUlnRGtxT3VOSkdRMUNUUHlPdWJNQlUvYW9idDdVTitaQXVBWWpXR2NNc0xCRGdJVm1ua1ZGZFU4ZTlKM3B4WTEzWEtYTmtGcXU4YmZnVTBROE01aGtXMDh6NTlqMm1OclBzWXYxUC9TbnQ3U2JyNHR2eTBzckYrUXhJdCt4eUdUYkRVV3pzeWoyZzZhNC9yNlprN0xaR0FuNjFWb0JzYlVlMElDU2poVk05ZHRYU1RiQkduVlhhUFMzRC9RaHA2dUdYc1FINjZRZ2twbXdxMEF6OWt2Qm1tcS9nQ1lDRDRNSDVSSFRLRDBqNU1yMTh3VFpIdWtBa3Vsd1daOFRPb1FEcGRqYXovTG1leEpwcnRsTEFKd1hCNzhFN3J0cHVFTlpxemJJdis5bjJIeUxOMWZDYnlVcFhPL0g1SUl3WGFPRjBjUlpZajZFRVUwb1Q0bnZqRTcwQjV4UlNVVXJMMWw4UW95bnZaS09sdmVPQkxmR2M0T1MySjVQVitFMFhNY2JSV0tPSWJUOWt5eXJsUkRacmdVK0xPNzB4dlZmM1J4ZWR5anV5VU9QdURIOHQzdWJ6Ri9BYTQ5bU00am1LWkdUSnhqUGlwQzZDdTU1WW9jcENidFpvWlZLbjVRNVg3Z29FSzJKdlhrZWtFK1FWVW1FWTF0YTVtK1FhUStZWkhlRmZHenhmNythV1RuYnNKajdoUjhTVDlnRGtEaDY3TXNLa1habWVOenVMR3QyMHB2Vmd1T084RFJNZnBHeDhNZGpJR3U4dHAvN2JSN2NPQjVOUnUwc0QveU5wN1FSTmY4cDA2U01vZXFNdE4wWk1HL1lRYWhTdTFVeE1GbEgzZWdhbWt1YTY4VzJOZ1dkY2d2ZmZHNkQwQWtFVkJIUmQ4V1l2Z2J0S1pGenQrSEUvZlhqU3dPVUVtRGRkMHlsQnoyODlXanE4eHBMaTU4dkQ4T2NMRnZKWW56UU53NU0rbnlRbEZoMzU2eXZCYk9MZEl6YWQyd0lCQm5HcmJDTjdwWGdUeEVxTkpRcDE5ai82YXhnU3RSNVBsaUtycVFFVHJkYU43ZE4xdXdMMjhGczBtZ1JXMExTS1pEYkE1UVgxR0l5T1dER1YrVEMvazAybWtOTGw2QllnbzRQYTJYczFyK0tVQ2t2QjdueitoUzByajZQMm5uS3ZwQnN5RENZRjI1bmxvcTF3Wko0Rno0Y1pQVWwrQlliUW1XQkxLWHBpS1VtQStaT1RYMmdiek45d0kxQnVNMEd1aGsrek5qNEVUNFptOWtDdkp0UVgrMWIyeUJPN1FQYWFtbnhhc0RBRURldy9xMXRoemVuYW12MCt4Z2xpVHh3aExDVXYyclF2amF5ZGROckt2cEhxNmhlbWJXaWJlOW91Z1p4UVNtZVNDNEdXcDdWN3FkN2JpTWdtYmtIRUJJZms5dlNEQXJJbDY0aFROTXkwZGk4aXBhWmFHcXlwR2V5VTlwUGNjcnp5OTlnRHFTQTI4ZU9sTFhMV2Q5bTZmOFYrZXBuK1haSWJOWnNqYm0xTnoyM1AydXMzOXhDeWszYzVtYjJmR2VSeTdteVlNblNTVEJ4dkdxbW1Vb3VzMEZVSk1xL2d2U09zbFYxbk5rRHhXcEp1bjhmYWpNeHhJRWk1OHhLdjg4RmZoMytjU3BXb0FWejhpNUl4UEIycVZnMkZiNkl3aDV5YlRqTUp6bWNSZ3ZWWUg4YlUwMCtOVkJNUGRUWTNDcUE5ZTBVdlRuMlZaMHRUY2NGZ1lKa2w1WVZ0dmhlSGExR0hod25CNWJwczVucnN3TUtXcW93d3dZVldpT0JjYUZEbFhsR0dLTnIrZm5WdEQyWEpSdDNIMWpSQUVqdmtxaFFVS2J1R0d1Y0dFWmtxdmVqYXFlaFlrZlN1bVgweHk2TWx4TUt3Yjh1WnZiZmxDRkNZeFdjWkt6OTBubklvTG5xV1VLcU9LdFZXY1BlWVdyNjZES1VNMEdYRlFhRzREQUVjc1A1bzBnZzNKd3RuUFd3WHJwdW1nWlJWZTUvWjdPM0FDb3Fqc0t2NW92QnNZSkpvWWhJdzVyeEhLOWhyb05SL2ZPQVhLZFFRUy9uMWZIbmx4M0pjWHFwdHFCeS9YRUM5ZC94WXdVRG84OHBrZUpibmJkMmc4eXJDV2UzTEVYSFNTTDJITVRvbUpNQnNQN1J5aFgxR2FxYmx5UzJYZmtQYVVOamJ6b0ZhNTFsT2tvVmpucHByVzJtZkhtZ1VPcGNyZVlHSzA4WjNDNlA2M0k5ZkZXWmZkak0xT3VCempHQU1UUVJNdXpua29ndVFvSXovanR3TUNlL0lkNFA3R3MrUGV1bWJ5QTVPb2lQdWpNMHRxQzhTOHNYSllPWHR1TTFaZXJJdStheXU5dHlFbUIwSlZZZ3V0bW5TUjk1Mnc2L2toaWo4bERqVkVpZzJFTnhsU1hERGU3Rk5CY2lVR3FrcDdXeHFFREw0SEhCNXlJVVNoNjBYSmU3QmZscUI5c0grQjhId3RNQitFUGRZVExhRnlhTk1qZGh2U2ZVVTM5TCtHZjMrRU45anJQREgzWGFZWC9UcnJwN1prQlV1YmRxM1hLTFcyejkzQ3h5ZDhQRHJOU09sZzZxN0x6aFR1VWEvQnNObkFHR3gvN3p5QXcydWZvb3VRWkVBUlNGRXkrQ0Z5UjZ1OVFTK2ZTWVdwRjUwck84OGdyMjNsSm9uUmZjS00yUFVhSkZNVFA0bXV2Y3Fma2h2eXlSQTVCaTBsODNXSzZpSlVrcVFHRjlqZnZTMGQ4cXB1U29qb0NLNFB3OHBjTnlOUDkwNkdFOWVoeGNxOUVReEl6d0JJdENueGJDNHBsNnlHQ05iRnNVKzEvZC9YcnZ1c3B0VDE1U1FLTTVVSXIyRDArSnZHK0xxMlJDcVpjcTBuQllyZVk5ZUdIWHVoMWdBS090ZG14MHpJZkluSkYydTNjZ3ZmejVyVHo3YzkrbDJyNlAzelFYOHVrS0NZU0hoV2doZ1RQSmJoNTFFcVpJc1ppcC9LVytad2srOEptdllwdGtOOGdiV3lYQkZmZ2huNzRwOFpFMjRYUVNrd0RON3ljelF3T1MzVjJrb082KzlqVmFJL2NtZUM1Q2c2eEpDL2YvRnpZY1J2cTJjdUxVZzBoWW9nd0cySXNrSGMrbmxyUnEyOGRGWGJ1dTRUdlFHcURGL0RNRlRyTHAvcVBHdWdUQ0lUb0RUSGxKdVNrOWNMZ2c1RDhMeUN5M0VIR1hIMk1wUTAxRGcrSFFHMHluRWNZUkp1dEswQSsvaFFsRklsRjlWbE95WEdLS0Y0c1hNbS9hd3IxRDQ4R3Y4V2lvcFhLL1FXZ0k0NE03Ly9UMUh3R2Nhc2d1eXUwUTJiVHArWHJlWEdaV2tNTjQ0eVFoY1Q2VkJwMzJ1Y2xEdklPWTF0UWRwOFFSc2l0ZEpBZHIvN3B3Q3I3UUNGMHJqQjFIVWJ0SkJSdGlQVmhLQTRtaUhzNzNtN3NuVFQ5VEFyYVpxYXlJSnFTdmxwNFI3SEd4ZFA5cUJJK3RkQk9teGlDZUdWeTg1czVPWkpEaTlHUFpzT1hpckU0ZFJMMVpXRGExYlExT1NhUDNxc25za3FCUVk4L21XWXpTTk9FTFNUVW9abkpRWVN5Y0t6cVExVnpjb3ZQazJxWmNKWEluNXRFV1pKWEhnSHVxM3JWYVNObUN1TVQ0ZHg3bmxNajRuazA1SXVBa09FaUV5ZWZsMDNra0tjMEpVQjJsRFdNWFdpbXMxQUJoeVhNWWJEVzR3TVQwNHZxSXdjdE01UkVBR2hmck5wU1c5dU0wZDlYM0lGZWNCRlQwNVI4RzFNMHpqWmhpZnFRa2tyY2dqNWtDSDlNZTZJdVhzTUtJREphcmxrMTRYQnlLeDc3WFk2VTJOcEJhZG1KeW5BMXFvUU1VY1dEdUtoWnoxZ21ZWjBUZzdiMDBhNWN6UnhSUUYxSGxJQm5iZFBRVVUxV0RzVjJaTlhyQmplUnZ6NnZsT3h5R3Q2bGVvTFBNTGYrK2VTRk1MWEsyMDZFZy91dWx0ZlR5cisyellzd05zSndsQ3Yra1Z0Skdwc1RCdmZhSVJyNGgrT3ZVY0Fjb1k0dENMeVZ4ZjBoK0tzckRydFcwd1Zta1Fad293anByU2lUeDNjY0RCSER5YlAxOUxDeFQ2bTNwQ3U3NlBqWERkVk1kZThJRUM2K3liY1dha3BTVUY5TVczQ0RDUEIrSGY3Q2tIRnBucFY1by9QVmI3N0pqRTNrZVhVRllqYkxNT1pUWjVLYXFySEdPODJOcW1CclcyWnRmK01UUGErWk5TdHUxMTZsajZjcVV5K1pTVkFEa3k3d284UU9OQU12eTBxK3owU0pJcXZkVjNHbjJTdlF3TnNKQ2QzRjZXb3dDTU85ZkhCOFdpLzVlSitqNWR4MnErT251bG1FMkpmdTVHWEVaV2htVTVjYmZPczV6VHJhbWljT1dnZlRkZlNxNWxJa2dkVGRLdlVjR00yYlY3di9HMUxQS1M5T2gwZ1l3Y0JPdUZwWXdGdjVCdXg2T1F6QjRDREcxRmptTmMrb0xBczRvTGpxcmxmY1hONEVSbzFpTnBwS3dOTkhjMzJ4cCtOZTQzUTIzWCtIYnJ2TzROcXlrSnZrWTZ6ZjgraWVMdUR0NzZDOUVQWHBZbmpwZWIyQUNtWVdwSWdFNzJxbnc3VjN2aXQ3bFVDMWYvdVRrRnBnbzd0bENtYVBMS2wrWFQxLy9hcUVHVE4xdU41MzJFSTE3Zkg0dDloUUkvVGJobDZzZFRiWU5iZ1dTa0tJeWhrUkExYVFQZC9FL0pUL0RNTzhZdFliQ2ZkZ3pMSGM2RWYrQW1jcGdvbmJZZnlVdmk5empTODN2S3ZRQzhSSkoweFlEenBLTndIenoyM2l2c09xQUlRYnpBN1lndmZkelIzZHVaVGNsWnhxTEpmYlg4enIvaVpMblBvblRhbDFlM0o3eE15N0pqN2UrcEFtNFFhRmJXcFh5REJBSmZQU3BEdk1lUmI4TTViakdFR05yK0xwSGswZjQ1Y0RWNEEvdXBYN1BhVmNuSno2SHluRDlFdWxESmExSHhaRzFXaVZ2NzBqQlZKd0o1aUlYbVNWK3NxR3NkMzZpUkVVdFVwTmFNSVVLeXUwV05hbDVEOEhLbXJabTRidW9iVDc3UGoyZUlFYzFSMk8vVm1SWG1JRU4zemd4UDYxeU5pWFdGcXk4ZkZrWHFkaG42VVROT3d6Rk9CM3ErUEp6TDlmUllrQS95YmZQcmU0TlBmVkVqT3lLd2ZSNWVLMGthQ2FZQ1VIdjRMcEErbytJQktBS3NENmx0VVFpOUtVcERLb0pHUjZybkx1dW9rdHBNSnQyOXMxVWNEUFA2REw4RFFQa3NIWnFXSWxvSDJvUm1RVFUxZVlTQ1NyUE83WVVjc0tsdHZVUE43bTRkZFRRbldPMDdrVmxlVmNTMG1KOG9EdlZIL0RGbENlT0xTNWlTK3g0M3VCaDYwQzBKbWF6N25Db0luSVRFVkJINDlSVlR1UUxQUHNyalpxN0lkU1ExbXZ1MXd5enJLM3diNytmT3k4Z0NjUFEweTVzV3RQRXNwSFBabG9Fc3UxUXpkKzE1Y3lWS2tnclFPU0s4QStoZnJnZ2pqMDcvSEF2UnZwZi90Y3ZlZkJ3UE9IdGhxazdXZ3B4OWMzNGFCS1BDYm40SW5VY1l4Z2hobEhuNXZZTHlkTkNoY0o1T0ZPOUZQdDlFbXFQUTVCOEdGMEgwMHpxZTNQeEd6OTR0QVNWV0hvUnJXZWQ5Yi90N3ZYZkhNOGZPeGlmTzRvZHRLdDc2NUtWS3F3RklCMjl6dUpZUEI3eFFldjlWMTNzUS9VdVVzc1FVWWJKMFc3SS9OcEhhN3hoVHl3WThZRS9paE5aYnBSV3hiOFdaVVptWHRZUEVUT2QyWHRLNnRVL0xoaXI1dEQxOEtaU0JQcXQrWTdmb0JaMHovem1zbi9tMm9MYUg5cW5yUk1KejFjNDdWZWNFM2pEbTlQWGF5T1A3R0RsT0tZZnY1OVkwYW4zK2lTdm95d2E0QmRsK1NrN3ExZEZmTFVvai8rRDBFMVl4OHFLblhUY0lIb3dpRkJWU0Fwd3dCSjNWOW9lWkJVazhsVUl6Zks3YmxlbW5PUmlDdndNOHZQWEFEYUMvZkw4UitCTmR4M2hhQnN0RktaM3FLbHRNNytwc3ZzeFlGNkk4U0t5UVY0ajMraFFReXF6bUZKZTl2N1E5TFFyaXJmNnFKMGlyZGFTbDRNOFhnRTJ3WVduK1lYWjN2RDJZTko4b29nZnp0VWd0ZXd1SnA4Yk1ZSmdSUkVlV0V5d05Qdm9MS3UxS2wvUWlHUEUvcEJyV1phckQyS0t0NmpCQktOOWF6N21xRjVkQTRlSENySGhSZ0NJQUF3Q3RWQkF5NFZITjJQeWVHYndlakZzem9salZNL3gvbDRRMUErVHBQanV5N3pyaXlHYko5b2ZiMVRxL09Yc3NmT2xmTThmYm5UdjRhSDJVdW9zcThrSFQyckVGQlBKMmpqVzZjaXFPNkRZbm9tekRkTCsvSjBpZFdkZTA4RVFxT0k0RFVveVozd2RhTFdqdThwUzc1cGZyejc1YlhpVndlUEJhNTMyUVd4bWNodDZOSWlEeXlWSzNVakkrcndRUE9iK3NUZ0YzdEF2S1VjRHhsNGpSS2dpNXVzbGlIL3NXRTRHM3l6YWRGalVUUXE1NXJtWlpMN0cyNjMzYlhDN0hHdXJ4ODEvcUxTSEZ4WkVyS2Jmd05ya05RWVdKSEtnbDB1RWZ4K3B6M1g3QzNYd1hnOXJBY2h3YTJ0cmg5Y1lkdHh2UXZXd3FZazRxM0lCL3gvVDI5SVFzQy9qTHlzUXNPS1g0eHFFSUwvY3RDdnVoL2Z4V3dDMERUdDZISVFhNExLK1B3dmpVWk8vYnUxK0FPZ2JITUt4NEIrc3VrbG4wWFdoU3BPQkJ2Y0taZEx2MWVQTUpSWEMyVzFkYUJMYVRzR1B3Tm0yRVNBK0E5OEZBa2RDZ1lINWJkZ0tZazVlb2JYUDIwM1djWHkyL04xTCs2L0RJT08zQkNKWmU5Y3RPeVg5VDJCY3ZmUHE0ZFAzemFzUzUvdEx4ZWRqYUZWMlVlNkI2Ui94dzBnQy85UkovWktWTEZnY1FpVFVTR0Y2RnIveHNTQ0MySXE5MU4wUnQ2aVFPMi9obzhKbXVZcjg3Q2svbzZDa0NxVTRyM2hIaGMxZGpVcFExaEpIeVB1VSttbkFkc0hvblVUeVM0V1lTdjMzSjBMakwxOFBHUXlRYjJ2Z3cwcVpKTDl4bitNOERFSTYyMisvQUx5S25PYjRnbVJVek9mUmJqT0RvVmxGT3dmdlZvUmVwOHkyOGY4L05sbVhSVElSL3BzeXRPbXNiMmMxN2R0d0RDTThpa0hML2JhcEloRU5iNmtGbkxJamVEaFNSL0JsWWJHNWFiN2NmYjBocUpiRFlYaDY3cHlHQzNpU2NuQ0cvYW55K1QyZnVIT3pEOW5ZU1dMYzkwWkUwUmF0c2ZRNXZ4TDluRURvNm1LNGkrelZZZWhpTDF3V1YrK3AySzIvTVFZc1BSdmhZTEhPbThRTnJYSFMyYmpPbU95STdhVXQzQ05HbnU5Y1NZMmVscFJseUtCeERJeDdCUE04OGFXTnVDRTRueUlRMWIreEJmTTQ5VnNCa1BwOC8xVkpsWkZFeTNPMnZ5UzYyZERWblp5Q21QcDZlNjlGeEFtaXFaMkFiU0Z0dFBqcFRlVFcwdDdodU9yRWx0bGMxMmdqUDlZbDFESjBmcWwzNmM5NDE1QkdtUW9BaHk4M0g0WXFRb2doVFFvNFZPZDAwSjk3S1NseGhBdko4VjFtWlp2MS9SY0RmWUJybzFrYitIb1ZUWW9rcTE2SkpsQ1pMRmw2d2szK0JISkRYM3RRQ2dvWXY2NzE3SldSbUtBcGV0UnM5ZXpzVkRGbUljOFVZMWViNjNtbFhuMkVNdXBMNFI4Y3BFQWdwZTBLVExyUHNDT0hQeU1OLzRFSzVwaUV1NjA4OWVXcm9BUnl4bjloYWVEUGpnUXI4OUZpVGZkczlFZTVIN3FWbWRXUENJaGxrUXJvNTJzRFpaUERBSC9uTTF6eGNyZHhWNllKa0twaW5pYnVBV0FiOSt1MG5MQ2hLdytOOHo1Z2M0Mk44L2Z3K1lnV1hUdzJycEt6R1RxekhOZ1l5N3JPTnJidHU1dW9nRThLSHl6TVFKdnVlTG90WWRkRDA2bXc4S3g4MUVoV3BmMWJyUEJVSzBtdVpSbEZlZndSUWV0aGQyM25WYlNQQW1BWVk5SFpTM3BhMHB6eUdIcDM0TVhPQTFGTUIwZWlSNHZNUnp3MW00NXp5M1dLVW1zNXBuZXo1ZG5NMnp5OTRGdzZuQmpSNkZab3BJZlg3bzE3b0xjYWY0SmN0dUV5OGJhODJwdmp2K0dFRTBTcWNrVGxWYkxMdi95bjZvc0Nhbnl1dlpzV3I4R2VOU0JpRkZMYTBKaGRlVzBlNit6Q2NoamhjM2Zjc1Q3cFM0WkszbXkyUEdYRitxZTEveUpmU3YwdG5QVTUzSGo0MjBpdjk5c1dZanlXdGRjV3JzampIRGcwbEI4NmNrQ0ZsYm92dHRHVGNrV0lPYjVQbUVoZnVTVlZSK2VVcWJhMUp4K1dWOGRUK21kTERqVkwvZno0bjgvL3Y0bis2REV3WGN5c3pSVEFLNGY5c3J2YklRb1hCVWFHL0NLV0NtMkw3TWhjcGNESnBGL1VWVnhnZkxicnV0OXN0a2lya3pWMkl5ekZxUmhQK1Z2VDlaZGhSb3RnWGhwNms1ZlRNVUlFRDBvb2NacmVqNy91bUxZT2Y1enJrMXE3Si84TnUxbTVacHViZUVVRVFRN3I2V3U0YzdMQk5JYjloOUFBN2M4UGowMkd1aTVySnYxVCtaUGdqWGZpN0JudFdvRWNsRUhLQ1BLRjVoRUQyMUtGa1E1NzJSUEwxVTQ5YjZuRkJrWDFBZWE2d1dtNWFjRFVpVllwUVp5Z0ZqMUwvVzZxQ0hFdnBwSXdjUkFvZHMrUGducFJzcW9yU20wajJVVEZSQUhweDAyVHFhMFgyUFdVSjc2VHRTOXVmbkREWDB0ZmlZOXBTdXlDZUF5ZmxLb1VwaU5DNDhiTlRxVTByamltem9STUU1c2RIUGNYUzBWTkMzQXNSY3NNTXZvUzltRzZlcnVXM0JvNlVCMHZMKzlQU0RWZ0FwV0JEZ2ROcGhnbjEzWVdtaE1uSGZ1cEltQXpVMkFqQVIxazBnQ010K253NzdRUUgybEg2WnNDQzRjWGhiTTBldWZTYytrYTU1T2xEOVNTWjl2emtJbXBYUkVCZEduYXo2a3F0OTBod0thQ25JUXI0alBnY25EVjJlM3d5dkowZ0U5R25rNXk0cWs5QXZMcWZJYkV4b1ZZeTFNbUpEdEY3L3BaMjNwYUl5OERTNmo2UHpZbW1YbFpoZWZVQjNoM1ZTUzgvOFIwTURuNTNSK1NVQWo2NWdWVmVDNmg3SGhLZEZMeDhHYUJrRG5hcUoyaUVXcERhQWVkS3ZTTUJwVlJReVJ0ZUZkMytQMDB5NDFXZGo3aXdjNi9XWlNPckdtUHQ1QkttTlFYVmhPU1hzZnp6OUxUOTk3Y0dtV3Y5akJ6LzV1V01sVWs5SkVKVEZvK3p3a216K3RnQnRiMENaVFhTRUlnSnQzb3I2WkJ3dkFRNFpZbXRFMEx2MHR1My9ITFcxc2JTUWlYNGdtWVoxMWR5ZzdaUGMxdmVwS3ZoeURBZEZVbldIWUtOTWN5Mm04RXNQMGM4blNYT2xFVUdRaFpycTRUME5td1pzb2I2MU16QXF0NkhEY1ltbk1rOE9VY1RwYnN6SGl4NEdVZGN1bWw5NHcwV29sYnRBUWhIWFdQODJDeUNaWTk2N2tXSHBMdkdrQXM0dWlWU3FoZnRXbHZ2VWdCc0dzbEhVK0FCcWxpSE5tSWRYVG9VTm9lUVNJdUJRdXFraFl2cmNWbWJoNDdHUkhYZzFQdmdUMHBEK3BCSEgxRG0yMWNjTElhcG1KUlYwUXBhRUhyblRSRms1VHJKZlFER2hrekZBWjFzR0JPK0MvK3VQNS8vbmwxdFlQK01FWGErb1hqc0JxVU52N0QybitjOTN3Y1kvNndNYm1DZzZON1FuTHYvTWJydUh1UDNvRHQvWVJ2UklISkYvOS9UQXlScEdDUnFpRURveDI0OTcrK0loZzI0TE5QRzRmaXluVUlKUXVmTWh5RVA3cXJRY2RmaEMyTmc2UGRoamFVd2p4NS9xUHhxNVJGemFPMThhZTJEZ3ZkSyt1bkMySlB5Z2hqaitYaUtCS29uNzdVbmFCbFVibWFlZ0htSnZ0VlZGWXRZN0FYWFRoZm9wSjNjL25HdjZWckxtSVRBM1czcWZwa0k2VnlRbjdCMTJRNHhWbVJNcFlxbHhYRkJlT2tUT1hkUndDOTNXbnRpTjlzZC9tdkNXTFVNYjV6aXRUTDU3U29oWE8yZTlWcjE3eHBtOSszSTA0RzFyQit2UmRGQWdpYTBULysxUTJxeE1wWEY5T3AvUjFKeUFuRk0zTjNjWHZnMEZaeWd2cUpZazRBdklTVW4vdG4xKzd4SWF0S3JqeWMvWWlwVll6TnFiKzhJOVd3RUIvc3FmbU9ucnNramZDNFJ5YkozUnY2UnZTZzJGME96OVhrMElVZ1orTFRFanF5dTYxRzVpenk0OUFnMWxZY290WGVPTnJZSFFkcjQzamcxMElWcllacXpmK3VtQ3NhSXA1UytCZjIraVRzUTFUVHo2SjJOdkJMWk05SW9kOTl2cDRQVCtWMG0xTTZNZnFURVk5K005dUJ4Tmd1dmdaV2gwL21zRUxYalpyOGRhZVhEa05Hb2hWallSci9OUWlYNFRmN002Y2x0aXlzNzZvclY3ZjAwNTluM3o4SlArU0NBcC9WQ2I4VWpSejVkVkRDTnhJeDI0N1g1WkQzczh0OC9RS3Qrc2hydmVjdUxDMHdmT1ovQjFZTXc4aGRlVldCNkhNN3QrZ0RtZlhCTmVNOUI5LzJUVjVCVFREUVJ2a1dJdlJFUXJDU0liakpBS3FpcG94MGRQcVdYbGhQZ3ZpRlRwR1QwTkd0VU55TzhHVnVNK0x6Y1pxWTlabjdIZEFmWFBlR3dRQmZPUk93bUorZlozWEs4ZENxeC9Ddndmb3FRcitESkZ5WjJMNFExZGtMUHM1S2lQSUN6YkpvbGU1a1kxVHkvbEltNXNncStqMkhKYXdZeS9udHM5aFNSU1BIV2hieFhFOEZ0VTIrdjFjdkdJLzQzNWV3RVBWSmo2dW5DU2ZnNkNtWGdMRVZ2bTZzTXZvdHNPMHVZNGlYNi90cjkrZGQrYTZ1VXN4ek9tK0J1OUZpaGI1WHM5VFZOdHZoZk9PckxxMFNoWnNiV2xIeVBQQTdlNy8rRm5GYjF3MmlDVWZXUkJwVmFXWEcySFBTdFREYnZEUnRobDBXM3hqNVZibmt0c3FHU0s4dXEvWVM5L0tKNTk2dkc1TldDSWpiK0E5U1NNWmZuNkhSUkh6QStFMGpZV1NiWTJKNjFzdGRmSEwrOURORnM2dTNyOHpDbm42aDFYeS82ZlFWbHNmR1JvWEV3L2hGdWRRZW9hT1VGc01DR2t1dnRtUEozOWorWnova3NOYnVoVG54K1FzdlNmdWNuQm9kVGI0aDZzNEczU2NPVC9qTCtiRzFOc0hQaHJCS2lhL0NJUytlb09sRGtKQzhtc2U1MzFqblByYTNHZ1ptTVFoVDVob3dLSmt3TUh3Zmt4QmNBdVUzaytNN3FJUEZVT3R2RTJBV1I5WFZZRjkxcjlkWEl3ampQdCt0aCtUbGdSLzRZRVZkeW8vZmZvSGdhQVZDaWJBWGRCa3Vmck91ZVZBZVhpNmczYnp2ZHBQWFI1cDBndW9mUGVLcnBGeWI3TDF5UkRzTlRqZ2hWS2VkdEw2NGs3K0VpOXdrL2NOckxRSTQ2a3pCQkRJNDdpcDlidlNsOUp2ZGhRVzlhUzFqWjZWcmF4MHRyQ3RETjFzMFoxSFZSU1VxK1g4MGJEWkUxaC9hWFYybVUxM0RlU25RYUp2Z1FodTlzNnZNTHRwMXZlTU5xbTlXNVBDelcrZHRxYzB1VmlyL3MzamZVMHN4NHRQeHk1ZUI0OW5lZ1k0V1R4Rzg4T0dpOWJwSFpiWjE1SDBIZXRvVDlPVXB6L000Zi9mZWNnb05aQXFhUENFS1dMZjkxRmIyWjVtaU4zUGNtK2ZLbEZ2bjVrVlpYUWdJNmR6Uk5OL3B1T1V2dURCZUZOcnRsUytsUDErL1VKK2RQVmVkaHZHRzh2cloyK3Yzd2pJVDBpQ0E0Mlo4dmdrY3BhZmw0bnlMbWRmLzIrZDJrRkx4WWRwRytYUWZvMjRwd2dzRmVjUUtRYjU3QnNjYTB2N0R3N3BvUnBIUWsxeUh4NVRoZFZRUkRhNVVFZ1RUeXZ4T2ZIeVNKeHNoWEhwb2pod1FwY1FLWWpSbVhZYTJaUjZHUTMzWmdJd3o2eXFHTmNwY2lKb1BnUUdkYW8rV1pDS3gyMW9taDBSWnorTTlzK24vN1BiUC9melhZMUN6eW1CQWZaaXN2OEtFcUZtamEzSlpFZlQ3cHdLZ2ZpeU5xU292TDJXaHkyNWt4SnFRRFN1aFFFdVMzWlU5NUJyTDZVVXg0WTlvMEd0M3NNZlRJbUxQcU5Qc2JiNmYrMGNMWWRra2RVWW5kUThvMGlycTUvMDJiVXV1NW1OSXMvdTZzVVNEZHVzM08rK0llaFJhUldIdGZPOFNWRXhLQ0RxMUVnVVhPbWF0SHkxYzJZcU5mZVFobjVpRUdCT3RUOHBaWTFoWmVyVkZ2ajBDMSs3bHkzUU04Z1pTUHc1empJQ3NZQlBxUWRKZjIxM202VE1vVTBJd3ZPOHVIME05cHVjbnFVVlBzZGVHQjlibkp4Vyt4anYraThFTi96cFBlRW94RWViNjJXbVAySHNmeVhDYVIraHpQUi94eE02WlpQZGJCMUlJMk1jUkx3TXMxc3ZvR09wUEhubEtvQW1nR2YreDZSN09sU0JycUU4UjFJTHJ3cDdCb2RTVjZYdlhFQ244Qm1ucHJkdVlRUE85em9NbHptOUNKTFl1T3JwcEdpVmt1aXVjM24vdDFyZVRsbjNlcGt3eXpqeXFuK3o3WC81OXIvcjljT0xpdkJjVWhBMy9JWTRWbDBSeW9iaFI5LytwK213eWU0cHFWZ0NFNmdDWUtvdTNCWWpmNVNKQnE1aGVPUDJKNVNDT2U3c2FHNHV5ZytVQW5WbHpPZEc4NjVtYkU5N0hpUThNSlFaVjJzWHU0WlRUZXVBN1JEekFQdEpqWHc2Ti84N2grSEpkRG5BeFhobDBxL3AvSnpZUU1aTmZwRUVpRm1tTHdocXp0Y1k1Z29DVVRwSktETTh4eE45MXM0ckhSYjBTUGJTRXB1K1dhTCtUOG9LVHBSVVVoOWRTeis5dVNYcURHaTB6Nm1MSExETi9xNzhIOXdlUndrdzJKMm9ON0t1R3lMU3YrcEpNWHN4TTFiRFJuWEFTNi9CeHIvTjF1NXdNRERGemlVdDF2bmlhMzBKeXZPWTQxcmFnNFVVblhEMUpNZzB6cmV4NDI4a1ZPdlljM3Y2RmFlMStrZGZhYUEvWktxZnNYaWFUOEZSSVJQbmV2OGlIYWp4VU9RaVVPNzFmcnB6RTNORE9QdElzdUxYc25ScDh1NDF5Wm9WOGNEejFNT05YK2x0cTRJRmh6WG8vci81UnNCbW9adGh4N1N1Q1RrT2F0MWFlakxGRk5aS2tEMXhOZldmSkRsbS8wY0VTLzRyZ0RkSDgvMnArMXFrSUx3dm5IZkFxdHZ5a2pqYVZUSzhwWTU4bWNJeWdSVFFZZ3VFRUZkWC80aXdkRXpFZm5wOXZITDhSZWxGanQrbW9XanpaUW1pWVRqS3JaM1FaNXFRTDlNK083WjhkT1pJbDI0dmlldGN2QUNKR3NIeWxCL3VicmEzNjl6QnBqQUk1QmVWdmUwbTdBS2lXakQvOFUwV0NqN2ZQZjgrREZ2Nm5waFVSNmEzcUxacWxsVDlKOEx6ZjA3RHNzbm55K1dNaTlEVUVXT2xEblRSQnJlb3VDWjF1eHFPdjU4ZlQvRnhBcnV5VjEvdmUxTDVZcUJidmdJZ3RWRHNCL0dCKzRKSnRmdE8yU2V2b2dGTlhPUkpkY2FEdHZzdTI0eGVwTjhSa3VzcitMZVpIamZ5d0dDdmRGU1BlYWVsT3JLbzBUemoyZU9UQzhxUGcxbkduQkNWbFdDbDdUMml2TVlsOTFlZnZ5dWxQL0ZUcmtaK3hCMEwzZ1NHYUkvbXlLL0pSYm1zWU50SHJienhHTCtYR3MrYVpJaisxQTN4UzdrazJCTERwa1U4Zk5yL2FmNTBFeitpL0QwUlljNFlsTEZhQ2gwUHJUUXRKM0d0Z2JYcUxpWVgrc2J4a0dpUmNiSGJYWXY4ZlBuTFYrY2I3eGpoWXFUYTdKeXZ3WDVDV3FIdG5aMHZsOS9YNTRYSzQ2dHk3SHFObTgvUTYvVTFJN0o4ZDhPNnlHKzRsU3NGQ2R1OTBZOTZFcEQ3U0FkNTEwTEhpSnlYblh5WWNKM1BJcUF0L2lEdkxGTDNWcXdlRm5sL1ZiS294cUVPRmNTd2pEK2Z2Rk5lOEx2cTJ3dlBqUjVkS0ZReDA0aW1ELzRWN00wSi96WlN3L2x3ME5EVnN5cjFOZUxlYjNlemZ2cm1vdUtlbmFTd1R3ak1jMVM3SEJQRlo3UGhFZEtnN2ZNSkR0dURDYlZpMGxCL1h5L1phWlhxalVxS3FScFpyNllNSndYVThXRytmQWNNeVZ6RFg2andtSW01bGVLdzJTeDFFK3pIRjd5ditOYXd2OGJyaDF5RVp1ODh2R3hTZzQ2dmxIQzVyeVRDMHlZV250aGZDTDZZNWtCK0JkWjhpcW9VUlNVOU9MMWNFNGhsSkdtT1lMVHlYdWYrRnFWVCs1UGs5Uy9DMVRVK2d0RmJIVDhlRGxIR3FHSTBXV1pyUmFKSXBNVHllZzFjSVZ1WkJ0dVBnbTR1K1pPeG5QTSs2bXczOC83MWJaNy9OSzNUY2h5TEpqYUVkSlgrYWR1YmZHeGJUbmF4S0tmVmh5dDVadGxEdW4wKzJLTmNHdFAwcFJLcXpyb0orS1QrVDVJMlJJMUd4a0lVTmVjeVJrRTJqK3BWZGtPUmxBWnVFaDJSV2w5YS9nL0hmTjQ3eVFjV2JOODJSM2pwaE9PL3lrT0NsVlN0akRmeHIrb3ozUEsvM0VVUVZYdXhKMUpBbi9SQmF4QnJtb3NWSTNYZkMxUHcyclpRQXBLK0VHaU5jK1pTVi9YWGxxdElTeCtXNkxrbTZONmplbXpKZ2lJN2xDQWgrODRkcjZ0SkZsVlJGVnZ3VzA3dlh5UkFtTkZWZVY0RGJEWVI0SVRINW1GN2NSRE1rTE01NTl4L0J6aFI4RE53eXhLNkI0bzJxUzE5RDYvUnhPRlpQL1VPQWEzK1ViYzVIbkNSTTdYZGR2RVBHYk5kNlBpVnBORlNqNS85Zk1IQ1FYaEZ0V1lvUWJWY0xHUFlKMHAyYW9qeFczcGt5STMzM2FyOTlvQVE1cmxTVFgrUG43ZE5ZUytqaTF4WHRnREoyQUJrUjl1RG5ocDFMVVFPTGtQSStwZUVKckhyd3paYzFFSy9RUzNtRk5lSnRnZkxsRnlaaE9KWXYvc2l0ajB1QS9IMUtURmVzWWdTUjRUWmFqalo1b3lrbTZyWHlaSWxXYkt4REgwZTM5VUdvUEJVbE4rb0dRTnZ5d0hqRUpvaitFK2ZFc2UrVThXQitCb1hrcTAydVBCcGYwS21OTC94RDFNVHF4ODdNT21waVF0R1VIckFTNDM3SnNQaG9ONWt1bTBXaFVOL0VkVXVISXBQOVpUNG5mWWlMN2NnTlpEdGV4TlpJQ09BU0xrSUdwMjh5bm9lN3JxRDZzRFdCTkVWRVJDNTVzUGZrK1FMZHRUTVd5SENmWnJMVkVtMkhzUy9kWDNzR2tjQjZScU9mVUhyWmhHNlR4SXFFdmtyVzdqWno1QmN5T21yRndJZll0L0szNC9ZNWVlYys2d1BPUDlIdEJiTzlIQzEwTy8yMzJSeW44cmtnWlVUYnZuaXFJQnJBTW1lMzRySVNLRVRwREdhbmJMcHcvd20wcUhUOEFCcnlTSWgxU0pvUW5HeGVicmpUZmlGWldKS2tMNWs2bWxVWG9pWnBpQTNzeDZ1RzFubEtLb0N5a09xWC9mUDNDdmlRTFZxV2k5c3c5cUJuNkRkbHRJY21vNlNyazZBNmdUc3YrYkhnQUR3Qzd2QlpTb3h1YUZvR1VoZzJTRzZ2MElYZGZMRVI0OGZDTGc0WnhSdFI3a0dyVk5TRFYvR1hjbWk1NU9PcGVXN3BKYnhUSEpaQVlLTGNEK2c0K3dOSlhRSVZ5RGFmWWw0VnNOQUtQQ09XcUlNQzJnNENncEdWRU5pRmJ6L2pYOUc4cS96QWppYjNEMjVKT1NQWUtPWUV4TnJFVzhwYmJjL3c4UE1VOENwRHpRWnkvWDRzOUEyTjdKK1pvWEVQRVNpNUc3VjVObFREZW9YZHVvaTNDYTNNREJoeDhIN3BmWG9vWGJMWkIxSXN1N2lnZ0tWV2lVOTlPS01URi8wUGhVQnBjeWtMWkR4RS9mVUliamlvYkNXVFVYdkpPKzBvakRVQnpwZE1KWXdPRE5tS2VqRERKZHlYMGE3LzZsaGZCb2RtdnFCVjRhNnIzWjI5UUVtcWI1TjE3QzVXdlpEdkp2cXJuZDZUNUhFUlFCSVJXQVdram1GOWczZXoyWlB6ZXUrcnRYVjI5NVR2bzBnYWZaT2h6MnY4QXFrQTJQK25jTWdBWUxZeERYejRzN0FhZTZxOXA1OXZOOUVTR3loenppOUpGaTNkcmk5VUxoc2haZHMyZ0cyYUZmTEdkWTB2ZTIxNExYRDdielZsVHQxVEZON1lkUjJXZ3ZaOW5mcnh5MHBHTThHZStEU0ZmcUczOTJIZjZaMmtFOUc5UTF3NXBLZHF5RzM2K1BTbjhhQnE2ZDU4Tlh4cDQzSzhrN1Vid1YxbTBVNGFXWXRlNDJMbjZyWXZrMHhYbUc2YktpRkJPRlYxbkh1UVE2Zm5mb1JKZ284RUJPQjJjWW9qd3hJQU5ESi84L2pwN05CY0ZNRzFud29NS0NYaStORGdZR2RvSXdzaHJqKy9wZFVPbUlubWsybyt6QURIdHhYMmtQN3dVRE4venlTc0s4dXFPNGIyZ1Z6Zkp4bHRlTHl6MzVtN3FDNE5XRERmMC81dno5emp2RUpvSjNmK1Y5UTRpeDBOZFhvb0xuQ1lUeC8vL01JWWoyVFZZR1dpS2pyRDVrRjEzMlcyLzhjRm9Nb1c1WnlaUW50NWpmQTM1cTlxejdmZ01JS0o5RWVpbklmVDBucEVXcFhwbS9xRVREa3duWFF6OSs2V2cvREQvQWFoNjRwSE5lcXJoMmxEVkV2WmtBMDBCSFpZRjBCcDA5N3BuQWtZa2ticHQwWVFEZlp2ckphOUgwL0xWRENqbGgvY3dQZ2dBOGEwcHptYlNPZnNJa09XMGJGUHc4Ti9kTjhTeU50bThlWm9pRUsyQnNFcTZoY3JrcTI4TnlHT1RqSUc0bS9yMEh2aWVQbHBYN0hBWUNBam94TXA5dU41dmx4YU1OVmFob1FkalBwUytRZFZOYW96SGhPQnA5MGtHTEN6SXE0WEVTRWNTd3ZpMFlZcUliZklUQXh1KzR1WGhkMGxORjJpTHdVbkNhKzdGclhmUi95RXc0NlA1a3U5d01yQ2Fydi9mdkYwQUlrTXUxU0hzS056c0R4VTM3MXBHbStabkZkeU5ORU5xNHRmayt6ODNJbXFPamRWRGFneGNFaEVvNjBiYXNRSTNqcVNoVWcyTFovY3EyQlVWK2lPZTM1ODVkYmdmdEtEYWk5cVRZQjM2bWhqM3NYdHQxTm9iUitIa3h0SjVsZ3J3ZnZLUndLUWxYWGFMeURZNEZVWGJBRHFObkQvakJRZ3BaalorUnd5OEt3TWRkNGJnNGkyU0RZWXFWY2pyNUEyRWRBdjJ1ZGRVMWZmVW5yS1dFcHlZN2ZEUGFvaFdtQ3hvc0tvMlZPQXg3RGNkeDJEODE0TEVnZ1RyYi9CRytLTXZ6UmVYWUM5TVJtSU9tcUh1amVBaG1rdk44OHdqa3VqSU9RUkFxOVVXUnY1VW16OE5OUFd0aEZDRWRLS0RHbDBXeHg1MlBNc1U4UXJpdVowbHkyZm9pZERZenJ2TThUNy9MbzBFTjNLSnd3YUg4ODdhQVpEZk43K2J4RTlpWW9qLzQ5UHExN2JvSzJYbGRGOEUxNUZGUENlaDBCQjJlSUV1SDc5LzQ2YjdPN3RCaFROUWdEUGRMMTkzbFZGZEUycE5iYTFVUzJOVDBpb3JuQ2NPYVBBemRSZm5XNEh2QWJVR1NhY3c4c1ZRRW1rV2F2cWhkMTg5OTM0TUwvQW5rZFZtT2NWNnlNRm9CWWxNN2FCbEd4UnIvWng3cVJSQmM3c0I0OGRyejBiQ1BnTzdPVmw4cStNbUVFWUhWQkQvS2Z6ODZBRnZaOEp0OGluN2NQN3VjMHhEL3NEVVZxTWZyNEcwVnZIQmJMdEVjbW1FUEdKc3ZIQ21FOUZPSDNuUWVMYUtJSXZPYVYyVjVqQ0JmWFBhTk9QVzZxUDA0ekZUaHc3QStScEVFZFpGdFlJaVk5Snp6eGZxNVpJUUhrVmxuTWNEb1Z6TlJLT2ljQTJST2ZmZllFSUowRlA2ZDV3Ykg0T3U5ZmkyV1pUb1FDMGNrS1NwSzFUWlZnSFErN213b2d6NjhhWDhETWk1UGpKM1d6TElzdkk4SEd1OUJZdDh0SDg5cGp4TGI3NDNnb3pGYk1aN2Z4S2h1L1VwRmVRN1ZoSXRVSTVIRXdpRUpNV0tKNEcxWG1kZS93eUwvMTM4ZGN0VVBSdm1yVE1wa2xxMW5xWFg1WGRmUjFBem1jWndaZTRDRFgxYko1V1JMTDFzSERjRDhwclpJRTFrQndIQU1uRFRrd2pmamFIbXVBdE9xLzRzYkY2WVhPb3ZiRnFIVzVkZkorYll0TUxVVENMRkg0R2w1SEZqSGUvOWZXZGVKNDBoUmYwZUhtUE84UVJ1NlpjQWxkNTFXdEMxeGJ3TEFnbTNQNlpRVEgxaU9Xd0ppV1hCQ0J1ZG9ML2dmbkhEdkZZZ25ucWNvSE4wV1F5NE1KRThJREc4QnNxU0pkNjQzbExBbUs1aFFBUEFHTXpHWFFvRHFCb3N6ZzJxK2JwUEpGWUlFbVdlMTRiUXRTMHRsV1dZV0UzRDEvZktNSnNGbWphdVBCbkkvQkx0UTlBU3NrMVd1aTJ1d0FPZkxTYmNyYjZJbWdqSWJQK21oRjlXVTZiN2ZqSy9nUkRLTjhVMlFKUW45VEpETmgyRzRNZ3hmQjNQYjNITGZwckY4MUNDUEhpblFKSVZGMmZrSTlmYlRqYVdZMkwyQTBvazZJZEJMelVkYkdtWGkweUJ2V1RlV0FIK3krYXJKeGFER2ZOdWt4ZDNRdjZxZ3RXMk8rT2RKc09RY2J4cjY0aVd0aUI3bHpKdVNzQWNQcGhHVmF5bWxCVnM5VE9rNGM5dDZGZWVrSXZYWWwzbjBEWUEyaDU5QzlrVGs4TG9XbDVhcm1rYjYxb1BOMG95VENKL1pvVTU3TTFiSTVOYWJEcVhSQWZLRjZlWEZpVjUxRFBMNDZaQmFVTGRORktWVWUyWjJqZFpRU25qUFhDTGg2ZHN0SkltSDhhVWlRVEJQdjc5a3FiMkJHcDZLK3BuYjRvWC9ZL1VLZWhMQmdDSG85MG1BaUF2MWVDOTU5RW9BQzVxRHZJSDJaNDc2OE4vckZ4Qm8xY0I0OUJQVXBhdStMZ1FXL0IwREZxYnIxak03UHV6K2V3V1JPYzB2eTlxWGZWSTkreDRzMFJmb20zZ1NNWDFPZm1aSDFPZC9WckFpZmQxVEovY3dpTWJCb2FDdlVTRlZzRUNVUEJ0N0oxR25jMlVoa29WcGhzTTBVZnFMSk0xKzJGMjI5K2htakhFMEE3dnlscFBqbnpCZzI3MEZpUVRldUlLNEZXVFpLU1N1d3FOOGhEZys0R3Y4MUx0b0RtVGxqdU01VDBkT2EzeUdhZ2U2bzBMMXZLRHBnWUJVRWRTUURVS1NEbXg3RVhZWDVSZTY1U250TmlHYW9OZXgwRERpblJDSkVPZWwvVXZzaGtISVFjbFRYeDVrSWxoaWtxWjNxS1hNN2syVEgybCtqV2g1aWxHd1hVL0NiRkg4ZHZHMnZzb0N5dnNnc0lzYURlOG1DSTRmcEQwWkEzSEZicDU5WHR5dWFVQzB2K0xQL2xORmE5aWtSanVyRlVkaU94RDA4V09zdDk3QXg2cTZ6bE9JdzV0emphc0RWb1lhbnNJdmh0VzFSN1p0eWxPem1pTUpLS0NRQm9ZUjh3c2N1NnNwZFV2cSs1QlJ4ckh5a1VZNHg3ZG5aUy8wTXlZeGs4SXdUc2FXNXIrSHpTQzM3MU9qOER3Mjk4YUFqYjhpWHBaUDZlNGJELys1blAwY3RZVm9FU1N5MGF0OFV5akk1cjBWQ3AwdHJ3UXgzeVMvVHRXR2RsOWV6NzZwLzlTem41d0JIMjV0MURacjdua2V2cVEzRytJSmZLN0JzUVJJVWFiamU5TEhqUkZRYmJSbExFOEZ4U2VxQXh5L2p1bm5ZSE42RU1STkNReVlFdEN0b3FDY1FNSFpUR1paSURwMWZlMzZtRTVzT085Nms3ZWVnaWJjWmVZWEdVQll4dnlzR0VnZjl2RVY5bkdUME15Q3J2aUNYRDZaUC9YZ3c4ZmJsSDROVnU1SUx5cENibEY5QTZqeWk3R0k0c3gxa0NGYUNCRUdsU1k4dXowV2JXY2l6b3R5dnU2M1FkbFVmaGoxZEk0TzFJa3lWWkRsSjV6RUpDcjE3NXJuMS9hREk4ZWtaR1lJblVGZklzaDJ3N0Z5M3o3MkN2SnV5ZUNhSWlGWkNCNzE1WklWbytoK3FucXNVNFcrZjhmeFdqaWsyMzllMElueHU4SERuU0EyanQvUEdkR21WeERGb0ZZbEhWRzRENG5ISzJIWUY4MzB3T1pHNkFiRFJydENNaUt6WU1mRWNYeHVFaE5SZ05oaWZkM2xNZ3RZOUwyWWk4aWIyeEUydXRxRDNZY1h0eFNMZ1ZQRUIzZHRFTVN3QzB0dmgycHh4VThZMjlhSklpQ2N0aHd2d1BqTW1aS0QyRXRDKzBVSWI2STNMZEJnb2xTeEpqS01LeHhOTjNJdGo0UDVsR1BlU0pVbU1adnFma2trOFB5aUxBMW96ODN3SDZHMVVWcG1rQ21RNElzSE1qUkttc1k2LzhZbzNlRFFRMUEwTnRYcU9hd2Z4d2xFVWRoVjRSRk9XV0dDZVVnRXNBMVlrYWRxMVFicWVvazJKaVNjb1dtOC9yUXJreFVOVmVKeEs4UVdTdklzdGtMd1RRUytmSzdrR3BjbUZ4TUFaL3UvaW9hOElNTFBnVGlhaFBQY0E3M1VwL0RCZERTMWdmNjgvSGNuQlQ2Qm4wcUV2aGRGcjZISjBTVkdReDZjeHd6dlBkL3h3VnBGNyszQy85cm1Na1ZveDVrZ3dHWXoyR2lhcGsvN0FxVHI4aUNlaVdWYUpESE9VcUFoZGloRm9uZE1seE51Sm9yanZhRHVyVzhraGhIT09HSUE4emR0RzNtaDJycnlXRko4VURNQ0VSYkRMb2ZOWkFEbFVtK3g2RnR6UTJQT21VV05WWFRJK2pjSVdwbzkyNzFJZW5aS1pJRmdURFpRVFdyRHc1RzlqYVNJQTZhYTdza256Rm9PdFU4MzVJS2RMZTM2SEpxL2pOTUYxS3g4VXZ5MkN6VXN4cDR3K1YzTVFlaEwxaEJkeTBVYTNwbWwxMlJBMnQ0bTkwb01SV0t1L1FJeTllYjBaK2V4L2RtUFY3MHgySWdoczlWTXhCWDlWdjNKSGtiV3JxNnFVQnlISVF6SDdsWWtsdjhtRlNsVEk3VzJ0c2tGVDZYN1RNcHUzSUlUd2Evdkh1YWU3emJGamR4UkYvNEFNSVZFZVcwS3NVMlJUNDBYaUZDcXg4UjN6eWJwWDZjMi82M0diWXAwZ2lzMzhXMWl1L3NRbWlmd0JVOCtuakYyTXdrQytNU1ZuekJuMGZmWHBYRlZ5a0Y0UExXYWFFMkQxeU1OYmtaMUp0SjMxTE41UmlWcFhGRGpMTmNnVGVtemVFRmF3c1lYT1UwclBwNjRtYXIzaXRBbVV2RExOanRucWpmKzlNMW5nc0wyQzJaQ3Y3b0k0ZWZEV2I3Rk5uZ0tqWHVzbnUvRGhKYUU5Sy9XazZVRm0zMWVBYWkrVmhvY3J4MVFIQmNiQlgzZEhBc1Z0M3ZEVHZlY2dLV21XSUZLMDBCb04rYm9QdzFEVmlpSy9oYmJMKzJmNk9jVVlOVnpVbHRyL2U4b0t4QXhCbzlUR0lvamcyd1hUYWU2ZEMveUp4OGNRVWpEcGRWUXhGd1U2RXZqOGhiS3c0Q1RsMmZ3WVd2ZS9EakhKckxLenVoNkVGMjFwVXhGT2wyeXJuelF5YmxvMzZpN3VzbHlkZ2pPcnk0V2JDZnVIcWVxNzRMdVdSQXNUaFNjR1k4cE83T2k0TFhIN1NjaFNkbURwcWo4d29ubTM1WC9qRFVQR0RWc29EZ1BIWU8rWHMzYnlCVG5FZ2RWTjdvc29TaTZwZi9TTlJsNFVjSXYzU0dhY3hweWl0RWFMMnJvRGM3alJQZm16UzV1VU8yTk1VbVN5QjhNU0dWL283OUpicnlLeXpWc1lCVTBXZ253TlROTGFxaGdrOHEzL0xaY2NiN2R4dXhNTDRVNURoaURPd3VjSmFIM1NOUkFTeVUrR2loK1dkWElTNEZPTzdZTjNCK2pNTEtkN3FjeHpqalcvNnJ2MEFTNkxnR2dMM3pOd0Q1eStyQ25FbHphUEVkcGV4Ty9LcEs4djdLYXNLZW1acXdlc2VyZlVBSE5yay9ZU1lLLy93M2NzdTJ6RnJ1TGgzejVUV0lieDdXVTFuUTdzQS9mMVM0S0N0aHB6UHVRZmRmRkNFMjB0SGNiM0NpTW1CYm13clp5RVdnNFV0L2llVGZzMDYzYXVSK3l1cXZza2ZFVnBDdElkU3B1NWdzVzVDVWE5NlkyT2VUUmxsMkh2Rm43QmVzVjNrSC9hQmJMcGVLS0lINGYzdytBY2tOTVBINlVBbFQyalpHWERXQXRBQ3BNRmpEYStrV1RkbDZ1M0RsWjgweGh4THBSNTJqeTJ2VTRrTURtN0x3bEhjYVJiTFUwYklwRjZYNi8zd0w5STNKaGhoQVJ6VFJhL05KMXdVN2ttVVg4TkNWNC9KTmQxMTZneUVIQ0phKzVoaFY3Z1lXSE5Qcmtma3YyYTJsdnNnYlVnd2syNURFeDNXRHR2N0JUbWc1TnZJbU1yb3o2ZktGUkFzZUp5MDl1NzcxWnhIQ0Y4aEVnUW5aemZPc0pRWXhzL2o0Wkc4SXdlT2JYazNBS0RmWGIrcE5FM1N2VWtzRm1kVlhOT3VkdmZkNGI0c0wxSitzazlQajE3S0t6Qng3eUsyOVFLbzNVOEJhOG95a2syQUx4b3ozVWRwaFdaSC9zVDZvZWhNcWtyOWR4UUVVVW9ZWkJtWDhHa0tjVGNodGVyODd3ekRnV2JiSTB6ZHZXM0h1ZzN6b2FxRE14UEcxenFGODdwcnJzeWZveWEyZFFkZm5EMlo3ZHRPWDZ1dUxUZ3VmeGFObFMrRmFIMy93WnpwbUNFSTgwNkZ1Z3RtbEMyK2poZlBpNUZRaWtyNjkyTElzdVhMRWl5djMwQnZ4dW1JdGZuWTQzOHJoVmF4a1A3dG81M20raml2cjdxWTRRaUM4cnFHT2p1QTJLNWg2RWl1OS84THM5TlJVbXN0cTlCcDEvZ1ZmZmowcllkeXlwcjFhbTZTcG5XT003YU5zVnAwYTFseTRNbTh4dGZmODFuYU85amJvbFc5RG00UkJCbG44UVBwR0R0b2NqWmJnaWZwZ1NxalE5YkhiUEd5bU5FK1ZwQXR0YzVJWUdNVHNOTEVTKy84NlBNQXZqd2lyOGdaU3lqRmIxTndteFR4L3AwYytkek1KUGg3OW16QkNEUWl3OENhemJ3dWlCQng1LzNXOUFUNXRKWkw0YU1OZEROMW80MlBxVHZFMGtjQ1M0Tnh6MVUzNG1nd1BtQkxkcUpkNlQ1RnRBUzRja2l5R3ZSMU9hUmFmN3BsQ3lsREJmTzlLZzBocHVYdVlVOFJBTnpHa0JwRTYvamVQeWk2S1VwTHNOVkxSaVpSQ09lUHRXclBmSnlPRDc1eTBTSzlQRHJ1dEZ6citLN2FIZDRwS214elg0SGJkc1JycVN6ckZwaVpUbG14L2hlT0xNTG5xNmZvNVJvS3pjVXJYK3d5UmNVdjl3d3NjVU1lMlZSWjVzenhGdzVvRERkUWtWcXNSYmcrOC9FSW03YXp6UUMwbFhOZklrUjBZUlFicUlqenZKK3g2dDhRbnRGQVRYeHBudXo5bDBXN0ExQjFSM3ZoanJiRm5Rck1mWmR0M25VNjdqYWNjRFNpc1IzYlBnRWZjOW1MeVQrNVZiRkJ0ODFEa3pFZ1RsVk8xMWJSOXFoQ3FQUko5SU1RcEVDNGhudThRN3FtMjRhclBTRGMyS3dvcUNSSFo2L2lobFJmK3V0VWRPUDdnWjhWbSt4bmRjd0lzRkM3V2pUV3EzbVdQRW8wK256TXJuRE1XL3ZISTZYNWQ4Mi9jb2E5Q25YVUZPK1dqRjNJWlMxUWJ5dGdqeUlPRXpkd3ZjYXlhN0grcm4rUWFPMXRPNGszdVcvMXAvSGZaWjZQWUI2Q3M2NW1JUUFQaHowNXBZdU1MUnVJVkhoSE9rbWo5VXhlTTdJOWNmejVyU0gzS2hCQzBVRi9aK2kvY1k2dk82OVpxTmkrcERFcW5MZjVxZFIrajY4OFdaTWU5dE02S09tbWcvMHFOQ0dpQlJjb2h4M2kwaUVFU3FlNkxFdlFzSktiZTVITThxNmxCcmp2MTYwcEs4YkRGRHBDUVZrUlJuS05hZUJ0OXJObzRqVkJ5ZXp4UjJMc0lIWXVCS2s2YXhBMVhUcnRpZ0dTR2Y2YmhPSGFQMHNmYTJaajQ1WDF6TFl2MlVkSjYrbE9LaE4ramRydlp3eTg3UGJ5dWJRU1Y0VE1GN3VsY0tZUHluUXM5b2xDZUNlSXlRMTlDUzViUGY3TVJ3WmpEZjlYYkZmNU43VHBDTkFCcjhKaGlXSW5qRzVOblJqUm1kQU1jUUdZRDVEbnVMTzRvcUZ4YjZxVy9DckdjektWakNqYTNFbTJmZjlQSHE5TG9ieDlEVUdXazJpc3RYSlRTYmlTT0V3RWRYTzM2ZEFYck5VWkRSVjFVMmwrY2dMYUQ1dk5uVENtWGlpMFUrL3JueTR3WGZtZGZXK3BjUkZSWmJldE84eWpaU2ZjYlpjNnkxYUt5OGlXN3JMRVBxM3g4VmtYa2xleW5RNHRxT0JDZStOMzNyMUhBalJkT1hvU2NPSFlhY0pTNzdlbHRoaEoxUUthRWs4TjFwVlBDZ09wWWN6QzgzVGlTRi9sWHdCMysvY1B0S1l0ZUU5cVRRUGNlQmFDL1BSWjRmWEwvbGpnVVFBSGc2TWZRbWtFTitsZkEvUFRDMUtwMUd2K2grU20zR05IQlJzallhcU1vODg4MVZmS0V6R1dWQlRqY3N6M0xMREljc1RaRmUvMmUxZ2VFaktMM3JVRjEzZ1ovc2luM3Z0aFp3bGY2QUVycDE4UlkwQ1JUYVlhUTBPN3pVcmp0eDNWZHBCL3BOazBFelJwNmZBL2FwZDBaT3lMaDNXK3NWOVpIbGhqU08xcE50NUtQKzUwRk1odXBIY2p6RmdPVDlBTFV0YitPSGs1TisyZFpIWmZRaFI4L2ZCZlQ4QjZ4Vjg5dWh6ZjRRY3VUTzJkOVFOZGNkaG9Ea2tWd3I4UzJ6Z200OGx2QmszZHI1elpNVGRkd3g3RkM5Rks2UjZFbjRhY2hLc3JBcG04MHhNWVNPczZ4YlF1a2RQK3JTWHdXQVJ4dEwxRmhmaUhtb2RuSk5aK3VHa251eVFFdnB2U1ZoWkw5anVOWHNnb0l3MmZMM3NWckY3Rk5iOUdWb3dDZUZFNy9qOHZUWU9YWjZmaHM1ejhHYzNSNmVQTVdmaDgwRDVmVnY3Q2k2OElCcnZFUXcveG13Rk95N1JEZThvMU9uSEpRUnlsZDVKN1A2Zld5WjJVUHh6NkxoaXF5b045Q1lsVDhUNTNrWlFPaEQ4NHpZdjRmZkdEa3VqV0MxRnIxZDBqV2JtMFBDQk96QUJxT2Q2K0FWbDNNTGt4RDBGQjVGbGl4eTNVUkxLZTdydVZIdjJsZE1tUjM3QlN4Tm9wWGtxYWVCQVpFZ2dBK045OUl1S01KbXowTjB2OUhNZ0tZTkxvUVJod3NlNUVjR0hVQURSaHk1V2NmMmRpL1llcTA1N1FQM0RZZnpFWTBWTnRueUdVaVFrRU0xeGFhZEkvTVV1RjkyQXExTWJESm13b1FNN0lBK0IxbHFOenF6TXQ4L01lNnlCQklVUXRwcEdORURnejV1eWl6bUVxRXRPNC8zQXFRSy9mWTZrOFZkMEdLVjlCL0lhR1NnTEI3RFRiOXFaZ1VnU2hlcHFTRituRVJDamovYjZ2ZnZvUU82TDJtdHVuZ051ekU5U0craW9CZ093eXowMjFYWGRZeU9laDZoK1YxUEwwSUcySVZnQXJoOERybURzOW9DWEpjQ3lScjY1SlBJRWM4Wnd4QVdFL2E3cHNnQStZWGRydFc2REgySmVhVXlyMThxOUxza2J6M0ZTbncvbGxaV0I0NHdTMnVNdVE3cFFSblV0ekN5UDJQdzlKNnluY1owOGRQcGIrc1pNSDZDdkU1Uk85aHMzalJRN01kazJSeUZKQUErek4vK0VnZWVOQnQxYkcvQmU2ZHp0SGUrY0VQbTJINmFabmdMU2NDdHY2NnJPYWp6emRyVkpFblFaRWRSRW5qRkNXUW1JZmF2N0RQZkNkb1B2aTFkdnRPb0Z4QXdmbHhhLzRRMTJyTHRMd1UzaVF4c054RDdHbSsyWDQvMkswSmdmQmpEOW1EbFFBdkRUWldiVlZid0o2TFJOMmMzcnZuTlNhNnB5VGR2OHBFbWE0YWE4cjdaWlEyY0REY2J5cHNUcVYzVHBBakRoc3NUNzFDUTBtMFVpNGZVZ2h3ZlA3aStWbmJPUzdHM3IxVjhuYjFBVnozWDFJSGZ3SUQzMWtHMGJYN0RtUGlaMU1sL25jczBKRXZ2c3pCM1lLV1dyQlQrN3pPVUw2SUFrZ1RFVXFJeHJPK2lwMnZjbXpiNHdiNitqOTE5aVF0d0RqR3hoaHJwcHlVemlrTkQrVFZzMUdmN0FNSGxBNk5qZWVSa1ovTUJVNnEzYlBxM24vMFRxUXJLeFNNQjRuVHdCazJ1c0k5dW5VNlRnd0hGd3JPYXJMRVIrMVZlTWsxOVJjZXVlU2hZL1JiZjFOYjRBUjJhZzNJL3ZQUStvR3Z0UnlNTXk0V1MxRDR1MElQUEdYeTBPcUEybEsrb1UxVElHOTA3ZitQQkQxamJoc2xUUC9sT2RQaSthZWFSNmJvdjRQMmtVS1BTMm9Zbm9pamtoSFZOY0QzT1VLQ3czNy8rM0x5bkhRTlpRQncrVkM4QWVLK2RBNFlHd3o1OS91d2pKZEY4OEQvNWNoQ3djWm93WVNsQnExb2IzWk1YaGE3T3d0NTR0NG5LVFFiTXlvQ2pFOWZUQXk5OGVIY085OXJlM2F1K3ZtOFhseG1ZVXdzZjhmVjZ2UEhlU09ZS2hnRWtxSmoxbTRBazg5cHJEVGhOUHBIc0NEdExCZW5jTkprYzdLaDRCVHhYRFNDeGdPZW9ZZ1BBNi9QK3NHQWpSTDkxR1VQM055R1BFemNxRjJjYzJxMXJXbVhpcnNUU24zRE9Ca0M4K00vaEFGQUg2dDlhejBsZ2FMcEdONkpIc1p2NnA3WWdGVTlWVWJUaHNhVlN2OEhBWW4vaTdKV2tEU2h1RGlXVU1WbGo4TmdvTEpEcWIxUi9NVzhtQVlpMlE0STc5TCtHQjN6dSt4cXV0ZDFpL3N5VnVmQnN5UDJuT3plT2syMWhLd05YVFFvWUVRbzRJNFBmK0JxQllTTkdic3pOVGIrZUlzdjNEcTVIWkprZytxMjkxWk1UNHlGT04vVXVMS3NUb3Yybnd4Z2k5MEZ3UXhNYi9vMCtKY0NTWG10L1NaNHRUSVdpVlZYbFErWnUxZE42Z1lvRG9BT1huRkkxamJhRFZabCtKV2t1NitGV1lFbzhva1FiYVIxMGxpWUtvQmE2eFBnc2pvWG5VdWI2VGRHSWFLaU5kaiszdC9JYVhIVmdmU1hiamxoNUtsZGlWUHFOaTZQcTZYTUcvdkExcXlRdldTWGpSNHFhUzE3RlU3ZzZBY2FmN1BRQis4ZjNkdHdiY0xOQU5pU2ZFbktnTDJ1ODRTNTQwNlpWSTFmbmVlNlBTNlUvaE4yOEVGQUYrQmpCWnBXZTJ5RncwNUhzbGdud1V6WlFNcXFST2hKQ0pscjZaWXQvR2k0OHFzaXZxUnptUlIvNC91Q1l4Q0h1K3YzbXpXTGFnTXF4Q3ZoVXFrM2hVSnhFV1VFd0ZGRmZEZXhMM0pBWCtHVmd5L1A2NnlaQkgzVGdWVHpDeWEySElNbG1tRDE3cXJyazJDbzZIdkN3eDAwRHcyM2dLcFFnYWtMR1hZZHF2U3RxSXlReG44VVdyRC9ZcW5hZUs1MllYSlR5VWp5NlQ1K2lqbGNJRkJSWk1sdytzWFJpR3hlZndOeEtyNG55ZEhFam42S0thZlVpNFRxdXFjQlkrU2RSeHN3dmhLNnRsUEtYdGZNODRjdStGNzV5S0ZUUzVjcXRxY1lNam9YQkYvK3QwenUxRkJUTUFzTk12MGlMR0h6ei9VbUxBazYrSk1xZHhMdmxkZUFjQWpZbnJqWHVEZTNncTRGNVc2aHUyalg4Umk3NStNb0JnaklNWXdMTHJnWis3T0VRRXBrcHZlZ0pSVkhJS0o1ZUF0WGhLWW9vSHZoMWRpMURGSHJmNkx1cVB2dzkvdHdGamdLeVZPYWUzM01FeE5vOXhONUFySXc1RU9UWG5sOE9jbTBwMkJFTzdueEZZV2hxV3pOaDBxYXZicXpBOEkvbHVrWkY1TUFFL25zclYvL3BaeWdUOHBhdVBuM1hyZGxxMit0VGZTUFdWRmhIT1Fzcit5S08wN3krVis3Sis5czJLTHpsUi9CZjRGd25ramdFRVdIMXpGeEhSSnM0N3FKK0ZNZVpqNy9RVHFzb2s5NXZoUGJSTmloVjNubkdZREtlc3daTWZSSkp5WnRnRnBkTktrMitvVmFWV29HcXJlRU5tUzRjQXQyV0dGZytLV29lczVwU0RRT1M4WmpMcUg1czBXc2NSUGNwRitDbWtuZnlac1RvODREeXdGSC91TFFSN2tTNjBIMy83ZWM0VWNZQmw4dWppR3dNT00vY255emlPNHFIR1NGS01JaUNNRGtyT0hBcE9lazI5Wm43Q2pXaEdQVHZWdzEzOW9LNVRaREl6dHd1Y25DZW9OMmp2NEFObkt1ZVFvMThHMndZK056UEJveWdSNGNzTEo5ZVZMVXZaVnN1VEJTUy9VamxZcCthRUQxNGg2MCtrdFJYKzZrTzJ0YXFRRWZma2dYdzNnNjAvRWNuUGptY0gwWnJ5NkFjVGQ0OVBJL1lYcHRoT1NCbExIUGlyYTVRZXJTcnFzaEVDS2pwRThkaGxNOWlmYzFyZG9VNXFrTjNLWXpqc1l2ejhFaFV2M2pUNytRb1VaQ2F6QUIxMnUvZkpFWlovdHgvZGFjeFdaS2pwUEU1bnRBTVlwenR1Tjc3Y1FpbS9za09jTUEyVExycGF2OGR6cnFCMDVhSGt3ZXlWWXpxb01LOHk4Y0o3OHFCUThGS240V3J5Q2dKMmY1R1VVRmd6eWMwR2Z0VXJqc0Fac1pZU3ltd1VyU1BkandmVDVwRWJUTngweU83UmwzRUlMZ2FabWUwWTR4Y3ZJeXVKRGF3TkNQdTYzOG5oaGpyeWU1WUhpMlFKMHQwTTVaem83MHJxYllkbzZoN1pZbEYzRGNzZkd1Y3dSa05mcFdleCtUZjdSRHhYQlAwNUp3dnlrTTl0QUp3bnUrL0FnSjlVWlR5aDE1cy95ckxNdStsWTlpRWlyZThUUDE3Ykd1UjViQWxDSkJGbXJqdlNoVEtSWUFoRHVLMUtsd0M5cHdpVnBmOFpQRFFCM3gwUFpZQmRhRG9YNnd4STlQNUdPZ01Gbzhxc0RXdVVSSzNDSFNhT01PSW44cEltN0RiQ0ZERjBEL1RxSWpPRGZCQVpKSENYbG5FSXp2UUpSc3ZHMW9GSGdqRjBUY05NQXpKN1BZYjJlUHJoUzAwVHBRSDlyU0t2VGp3b0czUHlmYVJMc1FudFpqNHpQRUJwNDE1M3ZkYkViUTlOK0RDaHNTU0wvWEVCSkpJcDUycE5OY1pkQWlvejhRZnRaUGtXcjloU2I2bm1md0NjcmJaaFdnVFFFZlA2YUhJTmpYREJLUSt2TjMxOEtmV0pvZzhnbi9kYU0xMms5TjV2Qm1ZQnBMSGhqUXhjZ2w0b2Ztb3hhdFFqckhzSW1VdDFsUGZSMkdOb3A1NGlQekIzWHhrd1QyKzdCZStibUo1UGZsZDR2WGtqV1NvSVJoZzg4dWlBTFZ5bUw2NkowdTRlYnJOZUU4WHVLc3c5bW9UU1YyV3RSUGRJaWN2c2VuMFZGNW5jdzdjV1htQ3ZkUVFmLzBZTmZFZTdUcXh5M3V2ZUo3VG95QUlzNy9sb3NZNVREU0lKamNOM1NEMTJzblFvYUpvUDBOVWxFeTQ5V1BzUEsxMFhXbVRXWmlxVmQrQ0ZQU2JLUElPMnVaZGNTN21pY1JYeVRkbUNXOG1IbkgxMXdOdGVNWmU5VDdzdk5wT1c5V2hWRGNQV0d0SnBiRmJVSzZnV0NPbmo2cndXNi9YVjBURDc1TENNcWRCekduQmhoWEozeHFKSEp5UXcza04xV2g3Q1paM1kyQ3pWSnZUSXJXbjVBS09PdGdMK2FLYTdHaE1QeFRCMDd6bnB3TEY4bjVkSkxtZjQvdklCWkJWbHhJanFxWCtSN20zNW1tOHRNeWtGTDhsT2FsM0RRcWZ3SnBCOFJIRXkxSXlGMkp6N09kQXVJUFJmL1A4Q1V3S2N1QnQyNHlGdk15YnRCQUNCZk1ybFRnK1VKTE1MRlhENUJHN0ExZjVwMGxaSTErUGluRERkQ1UvUkJZMkRXNDdtRStHY2VicTcvS3ZRQy9qYVhSVE5rdUF6UW9HZ014MFZJaVROMHNxRlZOaGdnZmVLaWpYVDVUUHcvVDd3b05hRmhrR0paK2FveStzY1VoU01zc096QlVva1M4NXhDQlU5dnZSZWhnV3BQUkdqNDhxbmdOMkllUDZWaFJEeFFBbDA2SXJEd2V1UXpmeDJ6VEgzTHliaEtqNWhWWUNURlFkK2JjNkNTTjZTRFB6cXdrTlgwZ29Pd1dwblF2VW9MRExXZjErMi8rc3VPWGZ0NXI2cDVFOVVUTkFDRjY0RkxXRHhuK3NXRklTbXRFUS85TnBQaWgwa1VCU0FBdldJS1Z0RDlwQUJ1U1l2T09QMGpheVYwUE9vTXhRY1VBT0dTZldGODFlYXIzOHY5MDc5N0xBOTViSkVQTEhDUU83alI3b1FOc0VxZCtVM0NkWmVGNWJHT3J5WnNRZFVOZTVNVzZqblNYWXp6Zkl2UHl0WGhiM0Zud2daeVFjVFUrOGhRKzZNUTZTb0lubFN5dHBra2pXeUtkbTZWMnhDSnRUR0pTbHQ2M3B4RE83MHBHWVV3bXBIb09IaWlSNmRlc3gwQ2JLeXNEYXBMejNUWm9OSk5KZ0tKc2JFd3A2QWpNcmhlUDJHNmdOcmp1QWppWGVlN2E5YzVIMTJmYmZac25pQ09UaktoNUcrbmFGQnYyQXFoOVdUNzAxODJFNkJLVHQ2OUVTTEZiRHVvT0lMdCtSTjhxamVxYlIrN2srcGNoZHRpVjJWNWJNZlBXcGxtZDI3dmZpdDVWZ3FMQjEyazBIbW9GWVVJdTNwZ1EzWDhYWHR3QWRXOUwwWHMrcnFNQkRkblQwMnN2UFFCZWtxSU44TFkwc1pEK0xHYm1WNEVZdXJtM3IyaHFCOGlqSFpoUkdNU2YwYmtwc29kanJvMmgxTHArK21UaFNuRWZ3YlJPcnR5OGZsaVNqU2E5ZmFiNUdudW9BZlA1a3ZvaEpFSCtQYmtrY2JwV2lUazhlWjJuVmFyU0t6TmNuak5peDIyUUZGNXhka0l6QU9QaHVHYjdWbjNiN1VIWGFOZ044MDUrdTVuMHZCLzVTdUx4Q0VFL3lLWEUvSk1OTzFVOFJBNDB4cVZ4ZDRwZHlhY29tMGVlNjJRMU8wNjZYUHJpRkxNaERKci9iNEhrNVdGcU55TXlZUUdlTFMrcDZYdVVzZVZ2WFUzZ3BmVEM4N1hXSDlDRnJpdU1sdmlJcU9mNGRacGphUnBOY2xnem0xL1BYb2gzM2M1UDlyZmtlVDBZcHo4TUl0SXFyRW9aaGxyV3RSaDRHV2Q3Zi9yY0JXSTVENnJROENRdWpkcGpHai9GN2dIaEFmQ3FkMEJ6Zm0wSDhLL3o5a1lrdnR0L2JqcWFYTnVhb2NjSU9ITU5ldlBVanJVLzFucVhYTDlMbkc2RVhPR1o3dmZqalF0YmRIQ2ZyRXduQjdNNmRNdHY4SkpFWVp3U090NWhlMHgwQm1YOG4rZmtNM2dpeTdzaG5FNUY5VE5JQ1FMWlZFSmRQRElQNDAxejFkZVlnNVpqQkhJV2owMlZHbndpRUpmNUJnREtqNVpBbjRCalpXSi9lV3NzZEhkdXVSd3JJakk1T2o4Rk9od3Iwd2NDRnJ1VjJGVUxSMUpJcXFpM1J6Y2pvSyt4SGJIODZJVW1Lb2pXVW0vWVFjcXlzeXQ2QS9UbTRESUhlRDN5SUw3QTJOWEhjZ1kwQmQrZXZkY1pEWVgwVVBSY1hPRjV1MHlMZ2cxV01Xc1BlcHVXVnB6ZkhsY1BKSkg0K3FKMWovUCsyZG83czVhVzgzdW9mcG1iOGVxRlNvalRzVFVtVmVuNXpvd3hrbWFBc2FrcGhicSs3VEZENXdjU3hqMGlDZnFBTUtpbzJ6dEs0akM5RFdFTjdLU2tVaGcwNWFHN0xlSjVFbm5hTkxSZHJGUkloOFlLUXVtRklpMGNRc1JMalFsRmVOdUlBTThoVGowQUdpVFNFRGRHQ00raCtmYTJ4MENMNFNxbFBudWpuWWw4M2kxejEvNnA4dzU3ZS9jUXFUazRRdzROQTVOZDhjd01VVHk5WjFTVWZwR1BIZGVlS2pHU25zNEFkLzB2bG04Z1ZpVjMrZjFTNWlibDFkdm9kYTFLYlhxM1VTZDROUXl3c3RwODMxNElYRmc3VCs2TzNoWi80OFg5ZGNXc0NUODczSlVsRi9iRXllMS82eXozbGEySmhNczVtNUk4UUxQM08yZUVWTk5BbWJSbkxVc2VzK2hQM1N1aGJ5aTRmSGJUR0Jta2Qva2pBUzdFckZhVE8yMGZGeVFzd1lPTlQ1a1VVRVdmenhzbFVZbFBIRXptckNQWFc4NkxVOUlJeUo5T015YXMxSmFucVNVbWV4eTVLV0kwK0h1RjhhQTBhUkZFS05JbEFCTXB6cERTTWpjdXV0dWswMVE5SERSS3BqaE5pYU9iNmRtR2c0MUNrcG0vOGlBZWhmRkdGaExRWEFkVlJXR1VhdTBkUkNWeFBveUd1Um4yVlZJTld4MkhtOWhzU29URmJXeUdtOHh2TytOb25TWksrbU5GTDFQQi9CODh5YzRiWTV3dWVmcWtaQ0Nkc3ZHNEFtVHpmZVQwVmR2RUV0d0hNdmRueVgwc3BQaUZaOEtKTjVGc0RNazQvc0pkUnZ4OGdYREJKSW91djhNU0xUYWNQd3NXM2J0clZoM3BJYXRHL1R6TW1OL3BwbkFvdzlhYkIzY1VFQjhnOUFJOFBJUFIxMEtGMWdaSnRwYy96bHF4d29rcG9ITmhvbmgyaDdWWGhkVGdVQ0J1czhGOXhEaGY1WThITUlOeDBRVFBxV3hsSnQ3RVkxTFRCOHk5SExOWk5hdDE1U2V2SWhWeFQrbUVRNW5kd2hPem5Sem1JcHh5N2U2Ly9JaWxaSkM0dWhSbFFUckhMdjVEYWVhVTBkc3FKWlpORlJUNTV1NmwxazgzUFI0M2FmZjhZQ3dnRlF4QjJ2aVNmdWtxQmEvckg1eXVyWjBHcEIxV1E1Mlp1aVJQNHdJVVN2Q2dJMzMyRUR2NVdNd2YxTzFzazRYSUx1RGxjUEV6MnRZTGVDbGxicHdnMVF2aUp5WjcwZTlHWFhCRk1IQjRYdVgzcnFoYWpCemRqSytURGgzUkVtMHk5VlpJRVBacjRTVGp5clhkcDkyWlRxN0tNNzdpOW9nRy90VGU1ZXlxZFVLdnh0Sy9GZCt2bUFsYTFhYXpYUUc0VHFGZWIyYS92THNCRzhYKzM5NTVManh0SnUrRFZuSWpkamRBRXZQbEpFSjRBQVJLVytQTUZQT0c5dmZwRjRYMWJVcXRiR21sR21qbG5WeDBkMFUyWVFnSHBuc3lzeWdSK2hSU0pZbGZyNFNZSnlQaWVreGtKWm42Nmh1SitMazRKNldpSlNiQ2hoMkhETXJ3azBueHpsaXRHS3FKNFpoTnBYTG5PVStUNzhienpIb2hmOGpmZ1BCWFNoWHJ4bWpqZHpzZjRrbzV4angxM2dkS0s2TVFNczlsbXhsNk5sT2U3a1dqZlBVd0NlNDlEdzdxOWJvQmxaWWU5WXVjcUVGVmtHZzNMRm5RRm9RZW5ZOC9kWlh0UExiNnE1WFpGNHhzOCtUMDI2RDNGbW1ObUJtK0txdFlwekExWnJVeW5qNmtYam01WGx1aEFVeWcrMW9UbnpUT1pGME83N0lFNmxDbGFBZWNqVkxhZWxadjRHWUMzaE5ia05McldibTVkRTNIVm5Gc1NDb2xnbi9reU95ajQySXJ3Q3daeVA3V09wbG9TTFgwOUJlLzBrcEE3SHVTeDV5VlJOVk0xQjh2WmtNM1FZWnR6TVZHYWpzeFROekVIRFQ5VUpKMHVBdWNrUXlNV0Y1MkhsMnRmeHRvNEtFUGhJNjAvYU5zdDllNWM3SHZtZTczaDlaM2RjdUxwR015N1hOS2JhWGhzQXh1OWZDTnNqTzlUeXdpOEM4TkE2V1llTnpTYjBaY2FmcHhwVXVqeDhrTHBVa0RJZzdoYjNXWk1aY3lBWmlZVjhyZzhJa2t0a01vaTFLTER6Yk9pbG5UbkJNRzlYdVQ3dlRpKzhXMG8rdFpObllsNXltTng0VVNEbGU5dHFlWHliYklPTTVVNkdmczg1M1ExYzkzck1hbk0xL2RCV2ZyTlNLd3NEUTA1T3d0MitFa3R4eFRGWmhMUjQ1aGVWOGFyZy9GRkJqMGVyL0NZQkhSTTRsNTA2NC9URXhEemN2RmtGZWphMnJvZEUyeEJqVERHazBhT0U4VHJNUTM1bUlaM0c2d3ZFMlRHWWprTXZDbnJMWHc5SnRqWkpCK2tqcUU4R2VhOUhKL0dPRDROWXZUOGw0LzJDRHoxOGkvTTZxWUNDVE9tNmNEcW9BTnp2L0o0OUZJWnRzQ3RVSi9wTVdDU3k2RU5EMjBrSzdkZFNJVUpiQjVJRzVndTBybVZVbm05OUFidktvRDVETVRvVmtTQW9XWkI0aTJNN0R1MGdNd0M4L0k4b3ROQkI1L2x0VEg2U3BNa3F2dmdlM1NvRVFReDVKbnV3TnNTaVcvQUhrK2RQdTlaR1E4eW1mVDRPSXlXa1V5bFhPck1hdVc3NzdpdTBUZzNNc1puWG1LMUVJQmgxUW9CekdXNHN5d0ZnWnNBMnQ2QWU0SjBGTjl1andaaXVHRzZ2UG5wWWprQmVGOEwyZko3U2NiOFI0eUhrWXNEdXBRdzBJck1DMldtK2txMkpqSzlnc2lSdS9CV3MzTW1NMi9YdmI1bUZhNG1sMTFzMUxMb1hLSVpYcE9IK1M0S2NlNzRsSFZHaUVVY2loVmNsYVRRUk5vNytEcVYweWU4SEx4S1VEV254cTRVU0p5bDRockRheEp6WUFiTDFVOGRwMHJmZGFRQktFbWFobEVIWXZIQW9Pb3B0ZGRYTGo3ZVp4dWR2cTZOMnZMU0lObGZ6aVZ3VWU2cUlDUzk3UGo3SWpWOUFLL3BRckJYUHIrc0JMRkdVR3dNdzVJVEhsbVhYTERoK0xVcjVqZk9YdUU4dklGMERiVlVFUUVNYUpabDhEMXlubStsUTdCcGpwNVQ1TUV5MHUwYXlmVGRJMTVPVUxCeHdSUUdublZ0dFFVc0g3VWxKakFaTGtrSmdzb1ozN3pZTmJtVmVBaUZZTitEWXQ3eHNGYjd2bTFsUFVtVXM4OVdVNTB4TmJBYUsxaktRTmZ3Y3F4NXVHK1lFQjVIR3E5SzN3S3NJM0dxMlo4cE15dEJMbGlJUjVkTEU0VU9GV1lqOW5UVnRZclAyZ2czVWNTNXVQRDNTclNkcE1oRlQ0b01FQjdkOTUyT3dpUnk3YWU3aC9ybmZwc2JmSnJudDRCckZieGJ6SU5qS2xRMlVaU0FRSVVzUnBuclhJNWxXWVB2aXkrcFlXQmVEc1R1dmZPeHJ2MHJ5UTVFTCtzMk91MTh5b0psV285U0gvc2tQOU5WaHpaVE9EY0k5b2ljZzdlcVZZK0IzYmhpY3ppWFhCRjBkOS9WUTVRM0xGeHVDVUVHUWRDT2xEM0dJTCtZSWRoRmxwa2l1Y2RFTTFDRVJraUF1dytrUm9xRzUvWHFDaWNVWlQ1ZytIaW5Mb3BaVVFIaGs5c3M2YWlBdWtuUSs3UnY4cjdyMW0ycllsVDRwTitKTGlxWGFRNCt1MWVNWFV5VUlleVNBeFJHTWd5ZHVWZ3lneXkvMEwxNHUzbEY5eGlnUHYydXBsVG5ZdEg2TG9LOFRzZnV6bGErci9meEx1S0hQeStHSnNTbGJYamJCc2tCWkdYdG9YMDhoT3Q5SjNjZzFheHFJb1hNaGZaQlM4UmlyMldUcEN1Nlp0bThlVmZWNHZnOEVNbTdnNnpVM2hnd3g5OURlK0pmU0hOallSWEpTdlppY2ZBY2lETzdvQWd3Y2IzYngvTGhaS1V5ZDI0ZHNpTzZ2dWJ2ZWd1VGdRT0pJaEpUOW5EU0hpTjcyWmx5VjJybWxWM2dFTExpU0U5bTJSd1ZsbFA3ZXA3bnNlM1pSRDdyMnIrUUNkSXZxeE1LMnMwWnFUQ3VFYTlzNCt6YzF5VTdzTXhWY3pXOGdLK1JUdU9kdlFycHJDdTdZUENCQXRmMTJYMDBRVWd5OEh2QTRYeDRGZzV6N2QwTXFFUlFoVmdhTkxUMEJCOTQ2OFlpZ3VpeTFHM2xtUlpFSWVhdEVXYzVtUllvc2hPTGFYYnhPUFJVejY4ZWdKK2JPK3VQc2s2eUJrZEZMNEFYZWtFRHlwNWtidzBLU2hNNTNPcndGQXNzMDZOYUc2QTFiRVA2MVJObjl3SmdvVUNUS0RKakNEbnJTNzd2UnVRNnpibU5Qa0NSZTA4SSs4d25RNEwxMFgxZTlPdm1KdG84MkhKbnJPSjlTSUpFYTdQSjU0WW92dE12UUlYUjg2SWRicHROdjUvcktKRElyeFdzMGtoSUlQT2xFU3JVYkh1eFhLSm5RaTdFK3g1UXN3ZFlHbTlEMiswVnNGbUN5WEpTZjdnN3c2VXUwYkw4dWpEdU5NL0pDM0txbWZiSjBzOEU5Q3BlcWpXUk1UVlRRZzk4MlpDSXJVV3N6NnBsVkxCR3UwNFpCbDFlcVAxY2hlbGpBcGhldytrNmUwbUNNd1F5c2lvSXFuSlVIVWR2U0Z6TWNTM3I0VURORG5CNThGWkJEVExaZDRvVTZKemZuMDl4RGFIWHZsb1JNZmxuZCtHc3NQY2tsakNzeWRtN1F0Qm85Z0RvcnQ5RG95SHBzL1VwVGlidkZIdGhBTzdySW1zQ2RXbmtJT3lnbmN2ZktHdldLY1k3TThWV0FYZFQxcU5PWHp6ME82MzJ0QkRUWmQ5dlo1OGExblVjQlIyTEtrd1NBdmg3cHJKSjc2dDZvQ3NqUjRQVlIvTzU1YXc3aFVySU1lR1laSVUrYjJXZkVpQlZyRExPU0phY1BmeFIra28zZDZyV2hwbmxEa3Q4MVhIUDN6dThxZ251NGo1YkUrb2pvY2Z1YjBHOEoxMWh5dGo5MHNPWVJEaGhMOVlOV2lsM0c0TUZPZjd3Qkc1anN0UTFaOC9yUzYrVStrbm9yam9jdUtScmxhbVQ1WHRVaDFWNFVabHcydDJpbVExSkNvenlpcmt1L3lqcUFWTGZsUXQxUlRIZE9PNGREVGF6T2ZoejA4elFxQ0tqK1RPdnRYQmZUcDg4amw2dmRjdHpLeUpyeDMxYW8zWFhQdXpaZnZOZkwwWmRPeHZTMC9LNFRUeHZNMkx5dVFuUDBPaGlBNU5lQmkvZ3JpaWJoZGpBNTdXMy8rSzFqUWc3Y2hHUnF6RTd3YUhtbDRjWUUyUnl1M1Z6ZXczckVMVEVZSEt0MmpFWENBVk5KNjVMbFZjbzVhekNYaGZMdldDUUdySFpZL0lVZDVhMmMzL1NZWDJBQ3dUdmNCVFJLQnkzTGdpZjlrQkVZSmgxaUhMbGFyT243aGNtMTl1bGU3RzcvZkRRQmxJRmhBQjZpcHhEdkJsZG9LMFl6czJjNVJTMG9YSmxjWHNkUmsyZXJqTUlEenQ5OWY3Z0lFMU5nRllLY09kcFZaN0toWmZ1alQ2Q2N1VDU2QlVtTndtSEdCb0xTY3p3bnVTMXZ2YnVnWkd2QnhMekZVbkNwanRpaktaTzcyVXZQV1VEcEkzNHd4U1FWeXh5bkdWQ2J1a21UVHkvUmZPczNHNzRrR3pUUHNTVDFNbFVqUEdlT09hanBMeTdGaU8yZFFMQng1ZUJnbnFGakV1WDdvZ2dydXY2RmNBMGZPQ2RpM09JM0w4bW5MMlRHVmg1MXlQdlRFenZPbmVaZ0VldXlBT3dHZ3Iwckd1azFJVTNSbFBPY0V3aXMzZmVRU0w4NDVWMXowL1lPeld1czVIU1l2b2ViOXdkTld1OG1YcWtJaDJQS1BVYjZvR1ZCSkU3T1FWYnBOaWdnSWF2L05WeFdrQ21pWHp1WktHVHV0ZGhCM3FrRjdBa3lDUWZMcWoxejloUW85WTMrVHBoOXRORTVqS3VteGN4MGtLZkdJcSs5LzNZbE5HaExGeEc2ZkJIMjFkWnBlWENtNjgzTERDYjZZMktqbVB2VDFibjhNL3lpMCtxV1NzQVpuaTBQSkJkNWNST2hNSkFCVkxxY09KRnNnMGpLWXF3SWw4NG9OM0d1ZXhxUE5Tdmh0cS84OHVEQVpYV0dJSWZIdWlNbSs4R1M5SmVmdzM5ZFpMUGVKZFVPWncyMmVIbzJKRkRMSHBIZ2s3VCtnYmJOaTQvNlMyaTJMV2hMNWtRdWZ3VnpmeXBRaEpvZGZnMjBsdGpBbUZkRkIwN3BOTW9SMHhCMjJwOVpsTGFwbko3ZnoxRklBbTYvdDdqZmJxU3luVlZDU25BcWt0NjQyRHpIYVJzTTdFd2lseWVEOENhS2hMRlhIaDRsdmU3VWtUQzIrZ0Y5WG9YbnMvSlh0Y0Nlek9jUE4wTnJZUWsvZGJscG5sVnFyR0NQRzIyc09KNCtGbEh0aXdOTWo0YlVyZkN5NS9YQ1NvQ0NKZjN6bm9mYkNDTnZrSVlWblRXYk12aGRxU0JLWEN3ZTNBL1BoZys4Y3B4WVhZUVFSbHhFemNLNzd5d251VUtWZzJLS0QvSFQzOGNIeWMzYnpTNVdXc04yZk9zQ1czMDh2YXN6aFp1TVZVcGRqSE5VNDdHZzdKV2srVHQzcW84QStWV1ZyaU5aNE1IK2NGTXQyb0NZNDNIbFNxY2JSdFZxSUdZUFhrdDBXVGJqdXlXeDBxVVBoREdPOVh2RmtUZmtUM3dSWEVlQnZzbW9rKy90b1lXbXdOVHVScGt0OGJYWndaaGdxeThadURWM0lkeGV0SVhzNmRISWtTdkc1M1pVT3VKT09rdTgzZ0k0cDdmMlFyM2tiQTVFNE82TjNPSHMzbnVhWEliRTcwVFFqemYrM0hvTVVRVjVxMHAyckVkM1dUVWhDNTdaM0lZUjJvL0Z5WEFHeHZ1dlBMSjdQYmh2anRFWFFLZEJOYUFFYXJPZzN3NXJBZ2pNYlhwenF4dVdYZU9YRkdBLzF3K2pSREZKcVZlM1NPdE5ycDJTNXgzQzhKQnoxSUxOZXdBM3VaWkUvWk5TZjFNR2tWL1pVNkIxM3ZKb3ZzK3FCd2dLQ3FuZ2ZWYWZIeC9QVDhpY2JQdWNpMDEyMUp4S05URGJZYmpLTThsWkozekFxTURtK1RHK0lwcEhFMm1jTkVQTTNuWUthQ3RGU1VnT0loWGFhNmt4T29OdElxdmxBYi9ERlczdklBc0Z1WlFpS0NVc1RZTis1dDdYcGNhMlY1TThSREd3UUVvOHNwYmlQdzZLdytGOVFKV0NkRzVTQ3BlaC9Ma25RbHBzUEF1OW0vZTlxalRsRFVmN3ZVNDFyU0FYazlZaTVVRDZRd1JqYkRjRUVNMWpnZVZRV0t6U0w4LzRyQk02czJQQXF3NFk1WkVWdTlxaDFMclMxbjFiSGxCc3B3d0g1cUQxNnc1Wnc1T3dVbjZXU01ZTnJaQVEyZkdMZ282NmM3MWpZNFEzcU5HZ0d3Sk5IbklSTGJQTHhHc3RnOTFUV1dWUHJnQjVuOHg2SHpIaU5OTHJJSDdjRlBsL28ydHZUd2pUcDduRVZqTFlTbTlFV3ZpM0x0MFRPbUZRbytpL1I3Q1p5Q1BBbjRYdUhqdEtIOUZUMXg2d3hNYmNZY3piUXFxSXpIZDYxeGhqdTVPTU1MeHMxZHUvTjE1dG5NclB4R3h6M0JhcGpldVE1bTJlYWVjS2pyRmJBbUhhWU1pUWI0VHIzMjQ2SHJ6VW4xM2x4NERMTzRCZExoQXEyUnljR3U5UkdOd0xhMVpieHpiV3ZHSTUzUngzL3lxb05PMWZuRlJmUG5vdXNaVUV1TFAwOTUyS3A2OUNsa3hta1ViL1VteXpReVNSQU9nVmo4cDU1TS8rcGNwZUh0UlFuTjR1QWltMzRnMUpQRkd2Y1hvUGtsdWJPeG5BdVNEV2xka040UjBDVU4zQWhJR3dOdkFrV0dEMWtWZE9TdEhBdXNWVFVsRnMxS0hoemNHSjdLaWh1aEhHTVhQWnp6YzRPSnV0SjVqRzRKNkdQNjZmZTVJYkFabXBHS3lpaFM0eWlBRzR2VTNNbVJvWUVYamZxRXVtQ3RuTlFPL3R6alFkSjVDNHpIMmNGMkpuNXpvdk0rMVN0SmVVZThYb2JtcFRYQ0pTTFhGeWd0cWkrREVuTmhPUEhtU3VlelIvQW9Tc1FwYzNvQ3N3eEZJTThCMUY4RkdvM1ZvTnRuUEx4N0g0L0F3V0E0UWpFeStDY2wxRjIzKzhLTDBHdkVqeFNaS0xIcUNaREhBNTBtK3ZIY2k3RzhnY1EzQ0hadlYyWnFpaDJLZEU4T2tNYUpBUnN5S1BkMzdjeVdaZ2VKd0hXUkcrS0k2RUxHa3dUQk1CUEliU3FYZ05YV1A5NVJqem4xSGNsQ0s4Q2E1eU1FTTlmV3RIRzd4dzYzb0pHR3pwS2lpUXJVTDg2TkVQbzk3bmxUcHdGVlhEWWNDT1FyK3NZakxtdHYxTUYwbGpaRmJBaFFWWlpwR1FOSnQ3bW5SSWw4b2V6Z2hVUFppbDVtTUViUXBHWElKL1N1aGVWdU1HemZuY0VNcXMxUXI5Q0Y3NURDb21ranpINXVxR2FQR3BUWkd3SWRMV0MwRGdFWmIrdHJMVXM2QktTZ0todkc5TnVTY3lWU0dYVVJtQm1FQTVwR0xPSjlIYzc3U2NPVXR3bnhqYlEzRFRkUzRWOFNob2NDdUdXWWlxQVpkRVBVWlNkckNzeWxRa3JaRHNNRDlTUzVhcGw0ZnpvRUhHcWJTRXpxQVcyZ3NtbXQ5YURWOHQzdS9RQlVDT09kUnVXVmtJclVzc1lGdjlENExITlRGUHQ5eVpyYjNmUzlRMjNRN0RxL2ZaQk8rRWlxTUFwL0ZMMGpSdnczTlhpWGExZGlYcGszdnk2RlFvNkhKZEp6b3lSSVc2ZlRGanBSRmVJbldvTVF6U012WWNGN2JzdXJ6bUNRNjFpeFVkWmxxVjdSS2VCNVRJMzRzMFMxYis3emJJQ0pzTEptMkZvSFhpMmRFZFpYN0pJSUNHcnp2VmpqZnh3QmtvMnppV2tUbXFoU1ZOR3ZhSVhjdWF4Z0gvSFB0TE9LczRhbUdsUmdOZVh2R25xcWhDL3VYNVVXV3lWdlFVNk1Fc05xdjBwUzZjbUh0T1JCVzArRkU4M1hGZENEVVZkT0ZpbVY3dFBYa0xlcXBoUUliRDJhcDlYUHQyc2VOdDdEcjVLM3pwZHEvZ2dUMFhkZ0IxVTBDUW9nTEJkZG5kM1J4cE1oTUQ0TkltRnk4Mngra2YvaVJXd2lQQVlGMmZxemlrR3FNQTcwa08rUEx4WmFvWHRzbk03WDcwbjJBcStvTXB6bTc0NFFndVNCNEllS2d0b2NaSU1xM2RkTUU4NUc2RzhZc1FxSjY3dmRXZDV6YUh0MVNZdkE0VDdDRGIxUTVUT0xobFJuK0RMVDZaMUVFWUZYTVBYUWRyR3JlMkxSa3dJem40eG9FWnMvUlN1ZkZOS3VFZWI0L2c0Q0U0UVV2NmQyWlZaakVFWTQ0VTJ5TWU5OFlmQXh1Rjd3QTFvVHA2bENjU2JhdTgrYUNpZ2VzVDVEZHVaWVJGRHpsa3N4NWZxYTAySTNUcE1EcEEveVc0bDdMZVMvdTZBUUIyeFR5TW8wR20xc05VM2M1ZTdLcVY4VGJuMktXVFFOQjVTbXZnR3B1WkREaWZDa0JHR2wyRkl5aFVUNk9aRFNURkxtbUQ4SThxNmVsZFdHWHFaUWc3OTUvQ0MrRWVrMHdSNE5GSGRQeDVQM053RVVqbGR1VEdvdUhMT2pPenI5WGxNSWhZZlBsU0M0ZXpOcjRmV2xWQjBEZHhmVGN4cTdic0pzRjhVamNMTGZXNlhhQTRCcmJoRjF6V3kvZUhDZFo5WU04RmxBcDFzMk1tajBYTHJuTzAycDI5WnhySUNRd1Q1RFJoZ09RN3RVUFVZdldacWRJYmNqUWEzVzUrdmY0bHF2MUM2dFhhWjhkQnRsMVh5SWxBZ04wRVozU3Z5QXhodGJvaTdkUVhOUk54M0VzbEdxNmZEeVhxb2VQeEk4MU5TZHVmWnRWQVo3ZkFsWHJKblJQeWVLSmxld2pIb2I3ZUFudmx6Q0pGRlpZb0tmdDZ4b0dBSzc4bmtBamI5NFFYMTN2SXVkZWkreFNPVVpTVEJFVkpudkQ3dldtY2VaYWo2TWw2Tk1LMjE1QW1FTGducmNobm5tNWo5U09KUFFVQkV6RHVnaXB0R0QzSUo5ZUxpTEt5MC91a0R4dVJodTZ1OUV1ajFFWEIxVHBIOU5CSDVvN0wvcVdyU2kyNXg0OE96MmFWNmcxcVh6ZHk2bXk3Vkt3K3J6a213RkFoL3M4UFFvdm5OSlVMdlpGWmNlRzVua2ZzcVZkMk5IcXVtd2lXMG5NRXY0MDZpRTdVSFdsRnBIdEpPYngwQWZzTHZ6VUx3QVE2empWU016cm9hdUxKdFNJWmZlbXRYTm5VOVdId2phdiszSHFzbWhJRGgybm5sYXVCbnI4VWxncDFGNnB5QUNwM0ZMSWl0cW5OZDhEM1hncCt3WE1uMmRBUG1GUG9WZHluQnFQVTg4WFNSNm4wcFIvWDc3dUxBQkFCMzRadEhjS0g2ZllDK25yeitNVWI2anJRT1Bwb0w0WHd2STdDbDJjaHl0UTRjMXAzK1dOcWNxbnE4R2tUcTFuQjNOVmhlQWIya3NhTUEvbCt1U0lTMkJLYWI5SnpDeXEra2pLSTREN01FTDF5cXJSQ0wyYlFVQ2s5WDd6RTBtREZET2RrNUdLRUFFQUZTd2NLWVIzTGtXYzZBd1QxdTVNbTlKem55T3Z2NWRVdU0vbmdsMmdCbkRyWWpMM1RjdldranZicEkwQjdzSnlETjhEdE51REFhejZvUTY0TmNzbTJhTytuTU5EcXZyc3BWdjZMSnl1REVPVU5PbTZXeG4welVwT3FmWXFGUGR0Nm5LOFJLYlptbjBLaDgvS1BDekdIRlN2dG9WV3d1MDJWVEg2blFweUtxY2p1eEw3MVdmc0pEKzNXcGZ2elZvRzFaVkRHVk45c0NIaElDUVRnQ1VKZkhjdFlhbE1VU1pRSWtSNmI3T3Z0dVJkZC9EaHllUEpxNkZuNU1VUFFYQTlpdzNSWVFhajNiaE1wakYzUzBJS3E0ODNyKzZ3aVdZeVQ4TTBEUTJVVTFVbmtjVWxhZ0Uya1h5b1hlam51V3RXYVpUN2l1M1YwTWpUWUFZaFJjMXFaL0gxVTMzeVFhSmQwN3NicitlYWlpdFlSZUxvMTdsRVlta0NJZWZSb1NiWFpTVmEyeXFUdnVkWE1yelkreU9DdE5VTEZKN0NtVmVpK3d3MkR3dTNIeGJmeVNiWnM0WkZ5TTVDMUZBeHpOWitkNHh6VTFOK2Y4SGtxNEFRenlPRkhvbEFSSGJxQjRvUWRKT2txS3NHN2VjZXY4RzVwMkFtVGNjbHdKN1JHaGV0TW9HVzYzWE82REZONGVTV0wyNEF0T0hjaHBONE1VTnZ4eThOcU4yV3MyUk5QdVRZc0pCT2xvWWJpTittVlRJSUsyQ0tNeWRwMmpld3Y1a0hFR21paWdvMGFXVWlMUWt0ZTE4dnNkOHh3anhUSFBKU0dZL2tUb1hVT2w1dkpxK1hkSzgwc3JwWEhZVUJ6NHkzWVR0d3d5R2hTZlp0WVpDMUNrODJFN0dtcndZN2kwbnR1VFBHUGI1RXNvNVp2STQ4aGlFME0yZDZRZE14UDJVRWF3dG1vWkhQUHJ4eEg1NGxyaXVsOVF5djE1TjhmVEt4NFVYVHdmdVNITnVvTm11OWZvR2dXbERvRndRbFh0Y3I2V09xd1pzZGxzV09YdmYrdmR1S3IvVnN0MnQxN2NyWTVWVytKczZTNDhvZzZNQlFEN0RUcUs3dUQxVkR2VVpxbEozaXpKWFZkS1UxaG15ZzBNSWVQTHpNQmgwZ0lMOWw1TDFoMEdOT3ozcGFXTm1qdi9lVlBmT0g1SHAzODhjclRIcUt6djMrZmI2emJjbFFUWUtRUFZneUQ4MllPMUtZRTdnM2FFck1EYkNDd1huUWMrNU5GRy9GNWVDanZ1dlVaZHVpa09tVlBMdFNxbDNUWE9XT29wcTdIUlNITklsMmFtMGRNc3M5TlcrOTJHNjMrZzk2VmJLbkJNcnlNNVhtSnY2MUhmQnFlNHQ1UVZKWm5vL0t1RUFBaTBoa2xqWFNVRjVUbGQzNU0zYlpFQS9ERGZ3bkhHWVR4ZGdxeXE2M3R4N3FYVS9ldElIRVRSaWZGT3MxVHhKdVBvYWNwR3UyVzFxaGF0d3lqZ0xSODlsWDV0Mng0V05mNGxsNTVrN1FqenZzdXZ1NlBySGdjbzNIenlKWTY1dnl6MTZPWTRKa2NXMm0xVk5wblNxZVlwdEdzVXdmc1RFcjV4MjlpZzBpYURxVTlFdmM2bUo3V0JMZTM5QjZXQjYzWFl4UnZNYzVnbmF4OEVGTmZGOVdHMWFDWGIybWZiM2VkdDBGb2g2aExLYm5KR2JtcE5XODY3ZE5FVjFSNnc4OHcrNlUwMkVJT3llNWVydmhSZG9rTGdKdG5qcTQrRTBTQTkrczN4eE9taFRaRGRwUUJtcHpBRGR5VHRyRVRzUE1Td3JnaVhZZFFROTR1KzdtN0lvT2tqQVk4cnpFS0xsbU1LWnFLSERXZURHN29vSVNVQnJKem1vMkR0QXM5Y3A5TzF0SlJ4SEkrUVQ3cXoxWHVKK3E4TjQ4TmYxQU91Y0c5MHBOTzJYWWxXRTRzQmNDTVltd0VBemVrb2tyekE4NWZORTBkT0NyTWpUSWVKNUZHNEdCaVhpaXZCZXJoR0g3YXZtc3ZlWGM2aWpKc3loTnZkMkhYbkF0WnlVMGtubkJWS09maXd2U3NvbHowZWsrWFJmeHMxRHJJU3RJQ3BoWmFSbys3THc2MERWcTlEeGxDMUtBS2F0b1RuelZtMnY2TEpBVUpiNjF0QWFKTHdSUWsvUmNIUnArUXFkYW9kekRjNWJqWFFmN0FLWEQ4OEFsam1CcVpBRjRTL2VNOGt3K04xelZWNWxEUGJuWnBRWExRU0t6a21qYTVIRlJxdUFDOTJ3WEFqT0xSRnRoeTJ0cFFzMXVUYmZEYVZzOURwN25DWlJGNG9XVkZJQWJ2RUg5Rm5MN3lYQ1hTSm9tZnRoSTJXOGE0MngrZ0M2U2RYZ04vRXN4NHNOSWJkTUgwK0tia0lXczhINE45b3MvSlBNUkdHVy81Y1lPdEpLN2JQVm5MeEZ6ZkVpOWVZZUZlNEhVdDZnMWJIRTMzdnQ3ZWZpdktyamZUY3dBVzJ1NHpyODZwaHpzZFNzVUVXeXVkN2cwWDZ2a3hHcHV4VkE0R2hCT3JDV2VwaFZSK2xrZCtONmtkcmpIR2MvL0RYdW4vSUcrTTQ4MG52MmJWNC84d0VmQ0ZSQmh6V1Jrd3ZUSFl2Yk1VcWJreUxMN05NUytTdGxZWmpaV3ZlMkRzdS83WjJLTmI5VDdGUUdSYXk0cDRlRnNDc0JZRjFkR3IxZnpPVDEzRkhsU1NaYzlRd0Z3VzM3V21FWmhHSThZZ3RaYS91TDdxRDNXa3hQcFd6YWFka0hPYi9WcFR4MU40Y1pNaUF4V1VmUjdXZUNrcFNmZXZnQ2NKMHRYY1k2c0YraGRBK0NuVElpQ0daVUM3VDlLRXMyamh3RWk4aTlGeWZ4cmZtNUZmeXdsMmtkWXh5M1FlT09vQVRzZVdidU9FN3N3S1BCZzJia2o0dWpTbVUwSUZnRW9tNE0rZGZ4Q0hMNWJ6Mm9CaGdGSU1JOGxobUVJcktUYk5kUnV0OXZHaHhPSTNya3Y2azNrZ2R5SE1sak5zLy9vSFFJalAyTE1kRzVJVkpZR1o5U1M3SXNrOHV0eExsWnV6MUNJbUo1dmVsa3UvTWE3ck80VkZkNjY1dnY5akoyNERSNGRSYTNueXNUbnFvMFczdUsxMk5aM2VoajlIVXVLTFROOXBuOTVJT3JERms4TEYxcVhwRjZIUloxOXFmMmcwUEdYWVZGUzZwN3ZBa005QmhlQkVSR2NQWE5zU0wzTVFld0RzNFl2MWF4Znc0aFJrL3RiN1VBV3Vob3hNc056Wk5mbWR2Z3dDRHc4anJDSHc2TTludFh1R2QvQ0Q0MTlUWnJZZjEwK1pKUFlkaUpHZW1aZDBzdFNlcFNBaXpPbk90N2g3d1NtUzVOZ0RTeGpRODl3QXlBN0dvM0pSNisrUmNGZ0pjMmdkaG41U3NnOVp2aEVQZDRYRmZ2aU5yZkE3VnltUUdvdy9QREJhaTVvNDlqSE1MeUM1aXVwY2sxMkg2OWdGZFc1d1JJbDBRa2ZXQythbDVReXNtemJEVVVoT1M1RjRqanhBbTlETEZjR3VXa2pxVEdTNVpUaERpRzYwYm9RZW9DQTk2b1BLYkx2cGcrQ0QrUDFnZ0VIeFVUSWxRc2EvcXo5eDBsenZHMGJmTC9MRTBndkxROHBJbWtrZW03QldPVmtsSlR2SnNSOE9DR1I3SllJNUlFaGtOMU5UQlh2eHh2ZU5jNFdzc1dFc2lyZXFjeXJkQkhqZ3FwVXRXYTd6OEZMOHJaQlZTNjZudDRxczBOQ0hJYStiMjIrdS9odkJMTEp4eml6TDlFTEdPcVdJemtTRU5ubXlkU3oxV2J4SmRKelBjL1FvYmdzQU5yUDlSblAxbGNHa2lRM2N4YmJSaDhSQkhndENyY2g5N0docURITEMwQmR0d1AwOExad2JnZ0VYNEJiK25LSUI0aDdNWEdVUEVRa1pLVjhqWXg3K1l3T2ZTV3JqSEY4VEd3bTNMcGtxdXgySDk4ZEx0NUJ0QzF6eGNLRGwwNkliTUc4S2RWMVlKd0xwZGlxN2pTVE9LU1JmL0dpYzhNaWIwakIxWjEwQUFHNGlTVVVRdzdTQThhRTlHWjl0R0xoSVQ0bG9NdEdzRDBKd3ZWUXVsR3BhR2w5bnZwNFNjRDhRaFhzL0dDVjV1QlRJQ3FHNVdtdjYwUisvVHlmYmlhdysxZmFoamk4TVJLR2dOcjYyUjAzdHZjOTNpY2ZRMFZGdWZ0eEZKVnRmU1dET0g0UGRHRU91SGtKT0RKOEhZN3lyQkRyNFRLdUFPSDNFSzFCV1NEVE9vM05LVFhQd0Y2dGdYOXBTU1FCK25CTWpMRjEzeFRUQ1RDVmNpcWJ2UStvODE3RmxYTWhlRnNXQ0hVazd2MFIzT1VyWEwyblB1RjdZUTVqaGptNXI0TzduUkVERmVhdk40VnpsRGZEb1BvcnRNcVdvRXhiSU44VFllTklPQ1o5bHNDeE81Y3liMDlMcU1ya2RwYTRjclY3NmthSDBtdlg2WlhINnN3WFo1ZThxR1pYUEJ3eUJuNVZUSmtSYi9IV1J6RkJ6VVRLZW1NaElvNEZOc0tvcm1qd2RoU2kzVEtsV3gvaTd6WEhFbThNV2E3bDB1QVZSK01LaHVOdSs2c0c2WmlyNnBJNWhhc21WbDhvNmNLL3hxbnM5bVZtR2lHNURKTi9UVHpsZ0RXRk9BOVVVa0tydlVsT2NWV2kwbXM2TXZYdlZXMVF5T0ZNVFNHR2c3b283Q3lSdm9LaWFKeXdhdU5BWjdvSWRHb1l6YTBEVDNZY0JPOXNYR3FzRjRHTjlibnRhMUlscUdoSitLejNSbEVVN3ZKSUhNMStWS3NkUytKQ2syUFQzYk5zcXVBRUQxdXJZZHFCamhkOEh2ZVNQZGF1a3d6S0p2RnV6VEtNcFloNjUwYzJtL3NKdjhWamJDQ2RaeUp2U2xUR0tBb2xRRGZXc1RDeGV1UGljdUJmTTlFWVZuOFRCNTdzdURLY3FHaWZtcXFxdkc1Mnp3Wmk3bmFtZFhEakxDOHlLV0pjb1FFcGwxNnA2cGR6NlpWY0FiQjFUZHRuV3FlN0ZMU3dEUktDeWlxRXFMNkZJSzAxTldZR1hxODNaYTlqYmFycHpmaDIzZGVGTmFDbDhaSXhTMUdsaUxTeUxDdGMwL002eXA1aU44M2RZV3FkaXpualovMVlJTmE5cCtpK0pvc3lEMStGT0EyQ3dEaW9uRGVZcE45cjBFZVRML1FJRGtDVis4Tng1VU1uM1BQYXJmVytLOE9vZUtrMS9WeDVLeWFqVUlub09DaTVpcWZDSk9sWmdyNmRhVXgzRmR3eHZHb29idDJZc0VXaXJvTEFXL3FPWG9nTDBVZ0VJV3VXSy9GOTNMOVZXcFhld2xwRUdHOG52U0ladTNtd2tSUEdWZXFJeXRYY2tXc240VTliMEI5aHd6M09QbW5IUzV3ZHRVQ3ZLYkE5bnlIeXM5NXBxY1BWV1MxeW5JQU44aW1Wb1FxSDVnUEUxZUJITTUzOWdNQnAwYTI2S2JOaHJMQmNFRWc0dEJtRWRRcndzVW4yd2VOTTZoUTdRMHp6RUFmcGFrejA0WVpLbDJqdUpzMzA5bENBL0VnVjFGSzh2KzZCNS9XYUx0MjhRTGxRVktqVEZ6bXp2RTEydWRSY2E0MC95MkE5aDhPcXdXUTlrSis3citrRkFwM2VHRm1tUW9pdUJFM1RYb2Vab2xlU1JCSDJ4NkpsREwyY1hlQmV3ZVlwd1NzTjl4ZnhCRzhRNUFPMFB0RGJ4NDV6ZmdUY2krZXE1Z2dDWVdqYXcrLzdYdWtlbDVlQXptUWhDL095bnFhNzB3bFBoaUMvVjJxbmFuUlFTUU5JUFN1WnhMUkM3bVV0MU9abGJydnJ1aXlLYlo5Nzl0dk9jZHk2YTVkd1BOd1k3OUozcVZaWFJDd09XYThvcHZySTZKZC92YkF1eUdZbjlJRnA3ak5OVVFzVkovcVZTUi9yQVkrVVJ2VFdmYytyc3dBT1FmamJoUzFVOGV5dDZXK0x0ZXc3dlFUaWttaTZkOXREekpwM3pMcVhKUWh3djhPUDY1b05mY0VrMmNPMWRLTmt3ZGdvU0pVTnVGYjJSVVJSMWlNZU95SXd6RE41MVB3S1FhSEZDdkdqOXdqdDdtYjJLcGRWK0lvbmFuc1ZUeFpVRCtZUGZCL2U4L3o0VktvUWx2YWlnbFVSMEJ1TzV2bk9wM1JlMThPMEV0d2pQdWhDcXpXcm5zVzc5cDFKUVhjcDVzNWNnbjZJQWlWL1B4c054eXN6d0I2K29GV1BCUGVzUEQwWHprVlRuUlpobUlqR2hoQzNHNHQ3VVlEMnlYNWdxa2s4MkNDSzJ4VElyT2h2MURiMHhyMTZuWjV4ZHpoejdldGNCVHR2VCsrZ09CZHYxNTJGeWdNQzFqNEJDOWZvVUVmQkxqMElqVUtsc05aMlhPOE1zSGNHSzVDOXBDbFZzbTNjUUViOHhRdU1uQ1RWSTNaRjBjTWZHaTY2M1VLcE40VTlmSVRYeThtQ0FlQjBranplRGIyUm8wdkVDa3lUZFNnYXhvYmJJZk8rN0JEeWJrVUVJNk1EZ3lESnpjTk01T3lPZU91Z3pvTUgzRnRjSldxc0o0Z3d6SnRJZ2cxdzFmb2FNRXFsa2diSGxWQll0Y3FRWEdUeFdkdU9naWhnYjBZMksrUGc2bWRKVHFNQmlKdFIrM3lnc2tHZ2F0SktIenZITEtPY3p5MHFJVkNRMWUyTFdiRWtDK2E2N2djeHJCUHhJUVFNUElIR0czeGl4Nm9IRmlRd0dSdzlXcjZaTk1keGx1T0wxaGtqbmh0NStrQ2ZYbEpSbHZzVjdRKzloV0l6bEJyaW1pZTlTcTJVVUpYZTNvUHM1M3BCOEtkNlRTSFJPWno3R0s3RnQxQ3FzZTdyZDNGR0xpSit2TVlqdW0wcnJHZk9tMmFOT1VURVhSWXNUOFhPZGtwUnlHeUx3VjdhKzdvMnlrWW5tR2JSWENuNzdjUjZPczJPeUVQRWx0c3h5TUgvWnpjbVh3UlY4TFhEemZVa2Y3dURTQjZrb2Q0bHlpL05uWUVQV1hOcDU0bURSQjQxajI4cE00U3dOejduNC8wMEg2OCtZRXgvYmhJTGdVZ3lqQkM5YzB4Sk5LMmF6QnVyMUFYWTIwWU9oTXRhemMyTCtUeTJQUm5aaG15OUllRnd1SFRLdW9zQnczMTVmK1ZNY25udjUwMFlhM2Q2RUU1RVlHenhwVThrSXVMQTQ3VHVpalFQK01mZDNpWDg4ZDBCbUd5RWwyTThady91RDcxVHg5TUYvOUwza1FlNUZOQ2x0R1NOclVmVlNOSG80OXM5eEJSU3pDRU1ybFJlZHM5T0tBb1hpUWhRNEdsdlV1MlpXbFdEd1h3YjZKYXAzdVFYT2hEd0ltNzc3RjdDbWptbUJ2V0tzQ1FTNFZ2R3UvWE9vSWxXNXZIMHdDVTI5Zm0yMHU3djJONXRSV3pmRmtRODBHSk16NnBsd2lTUUc4WnRWTmVPSkcyM3BpSlpZVEFONlB1bkh0YjZQbGllRDRrcXlGYThFODBvWDVqRDRVSysyN2R3M1d6Rk9tdHZ0UzhILzJoai9kblBtcmlMNlJ0N3NXTDJ6R2t6Wm9EdmFMODB0VFJnblJBSlJ3Um9ONjNwZk45MTJZNUZOYnBTdm5MVlhObTlsbGduUmlHcjI1ZFRNenZEcHJObjN1ektIY0JLMlFYMzRKdloyRVA1VmhMWEluL0w1NEpKNDdLWDY5aHYyY1J6Q1BCY2lLZlJKdTBOTFAyLzY3VE9qdXk1a2RmNmNGNmJkOUY1ejFWYU8xL1ZKMlhZemx5WDhkbS9FVU9uZW1sWFJpMDBDN0xpTUhuV3p5ZFJ4WGsrdkQ1N1FZK2FLNHlES3ZPRDVDV1Bwd2ZUQXMwTEhYQk5WZTE5MWczMjU2a253WVk5TVlPR1dQTE02WHBsU1RWdHAzZmN0NU9rdmNWUDA4WlJvTmM0ZjVuVmVvbjl1TEQyL0VWMndDZ0M3NXhLQ2pjRnBVLzRxQTJucGo3N1BpVEEvNUUvTUZmREErUWh2RzVnU3lhUE8xdGpaUGVaU3dUNUJ2cU1NOWFyUVVQc3V1cEk0aEJuOE1sOTVKRjZHeU00dWtLMDVQUlVCYUxWZ0NxZ2d6WDRKNmtIL0dscXNEYmVZTEx6djNTaVBOY0N1WjhRbzV1VEwwYWNKeWljdnQ5cEdLSjBobVVYU3RPU3h5T0dzVW5FTFc4RWlqY2JKMUx0dTNzZnVwTHc2SG94T2RlS256VkxnTkw2WE5kRUd5eDFCNkYzSHJjWTh3NWRCSHBhalBlODN4NXVTRWtCcDYzaks1cnhibDN5U3IzZmFNNG5SWmpoa3ZwYVhmaTdTODc5dHFvbWRmYTh2a3F3WFkxS2Y5Z1cyN0NkRTB1QkJ5TDZCNFJ5Q1JaOTNSSDIvc0szUzdWRVcyMDRqeXpINFNUZXdQWW9Pa2RjTmh6cjI0MTNiT2NPdGs2UG54L3E3RjU2L3FBaDVxN29RejAvOG9FajNxY0U2QVZZWnBVZ1c0b2tOWWRnVU1wZEZJako1ZWVpTk0xaHdzdWJrekxNM0hNUzZIQ29PRmJiWFhoQlM4MlUyQlIxZkJwVkl6bXZHNk96aDJ1eGxZemlQMW8vbGNBeWRqWE1pQnVuanExUk5wZEhRS3hYdG0vU0RTNXZmc284ODRiRHRDSGJGZXNZOHNwWDE5UmN0azBaMm9lQmdMNktWMGJQUlduSzNxemlXNjEvNFVDdWZIaWtCQ0dwbzNjODluSTRIWXpHOXRLd3dmd3g1TnRMRzQ1U2g0eThXZHpZWHN2dWtwcWdmZ3dEV0REUTZLRTBVTW5NeEZNWjQvQm9ZQktiR1c4OEdvZUF3RktZcHNKeUN6Y2pmcjg1RzN6Mis4QjRUN3VyTE8raW5GRUgvZkNYbmw1cjM0enIweVQzamVrNXg3R05vcWdzN1d3K1JheDh5VnVkN0pXWElUbm04djQvK240RG51am1QY1A1S1JjZGNxSG0xM0M1VUo2amVCcXVlOEk5UDdjbVV4WUpQbkUzWE5veWV2UXZDZlRpNUxjZXBQUUhyN1k3TTRPZ3BEUTlhRXA0UnRTQ1RibzhkRzRlYXJDaXArd1VhMjRHdjdNVGZsM2pWYm93N1V6MHhWbWVrZzdYTXFJZkNGanZzUUkwNDE5QnpVbitrakhwQXFac0ptZlBoR2ltcld1Y1NmMjRheFdwdFFDMU54Syt4UXpISGtxVUx2Q2FIcCtlSDRkcVFxUWhUTnVVclluT0Uwc2ZxcW9qNkhidUZZTkFGb29IVmlBZ3dsZEF5NG9jTzA5U0tXMzFibkk3bWtmR1d3Q2hCMEtIUzZETENLQVk2VHVGYzNlcXhuVkVYdG80S1JEN0tiN2FkVThxZ0x0TWZRY2lpSitRcUMvZWNvNERiZGxlOXlqaVdvZWdHOUI1WWFvQ2FrK1FzNmJHdkk4UUp1SEwrRWlETjY2dTl5blgzaVpBVE1KYzVlZ3FRaURBQ1dTTWY3QldEVVlPYi8yNkpFRGpDbnc0V3lLV3ZHdEhsK3dOZCtFTGt3QndXR0hOMWgrT0NVMCt4T3MyYWJabUNOMWR0K1lrS1BvMmNOWnRScDQwK1NiUytIdzE4MGZIcCtnUjJLa2VoSHhUVUJ5cGtPRmNHSG1kSnJkaUNlQ2p0bWVsY3dESHNTM0ozMng2R0ZBUS9JcGhOMGRHS2dHNHArSHhHUlFhWUx4NVgrbjZHYTUrTGF0MFlGMEVESlRwNVBsSjdCak5CZFJGazhvMGQ3Tkg0WVI2VzB5UzdDSkJic2JMSnJCTDNRTUwrSUtCUWRka1NmVEJIaHdwRFcweWtIRGVGM1RBVTkwb3o3ZTNjeU9LRjZVYTdjZWJtRWtOMEtpbjcyMHVQTm1iSFMxaGh1ZDRkUkJxU2o0Y2N0NUpwbmwvN1FFZlNPdmxHbXNIWGdiVVd0YjlvNFlmNklhWGdOeHhWTkg3K3dYbzMwWXJKTTZ0Ym5tNFlON2RmUzJoempSOEtmZG0ydDZKbHRiVnNXUlN1Nk1mWTNXWnN4dGhjSTBLT1BTWkFMT1hRT0QvajhTa2xUTGdheEJvN1d4TUUxaE9BNHE4dnJRR3ErbjN1Z3l0ZUxIUHo1eHMzZ2RudGRCcW0xR0xXNlpZR2VuaVcxQWxZOTZCeCtGQXI4eHpSL2U4NDJmdnRCcyt1K1B6WEl3RnY1aUFQaXRIOFhibFQ3TzNHSEtDbjh0R3gvQXN3R0wxUVBwZ1lQQ0lIQXRYY1ppejh1SStWRndUQVdwNWJtMTFvb0liVEl5RFVwWmJpZFFPWVBkZC96STNuTnF1dEExc2tFcnlYa3hhYS9qbTNUakRDRlNLVTFqZERpb0Ruajk3YjByQ096d0F2OWxqS0duY0pwcGZzZWxDTTUxNW1xa1NpTHJXalFFcDBYeElnYzhDWXVGYk9xbCtRZnVBRjhBb2pqc240SjJIZW1UMnAzc3FwZkFxYmc2WVVUaytzUm9sK3AySzlJRDJvejIyOEtZSDc2Q2l1TE82bUg4cHBZSU95RnFoUUgxS1BxcTlzektHRGJ5WjhCa1ZKbTdpanlvRHVnZ2lrb0E5OS9iRklJdDRNbll5QjcyRko2aitFYWlmRkR6Y3lTZXMwbjdnOW1NV3UxRnNlRTUrZy9adHlnUHZPdTZtM2lHNU8wbkpUTDdMVEVudUhrcWJKTy9NWi8yakZyTzFBa2ZRY0oxalY0TVE2UGh3cUovZHg4ZDBWdUxxOVN1c3NJQ25lYXFiYTdWR2taaXU1bXJmYWxZd0tPUkZrSUJVeW1NbDNUZDR6OHBNSEU3WUZHVkFBUHN4OEswQnl4ajRnYVR3WUhJKytra3hlRHN0WHI5N3VZSzRGWWszNll6YlpENWFMWlBPS1M4UTRBTURlMUFmNGlsUzZFclJCU2VnREZVQWhmR2tGcDE2azlPTUVQQnFjSk1PejJHMWRsNDhDb25aQmZBeTNhd2F2YVBueGZtQm1wS29wTTV2dDdyRDB2cXZrbmlHa1BZQ092aHMwL0xNU2dRNWxVeXNBM1JmMGZ3VCtEK3BmYzg3R1ZBWXN0cG9QTmthN1ErWW5odlc1cmI4L3NDem5LUjV3bjE1SGxCUEJJWHVMNjdWUy8rWlFOb0RQR0IrSnFWd2M0T2ttKzlnRXV6TmhPMml4cG1DMEJzSS9YajJESDlXOFFIY3pXZkVDNVFHNXF0Y3k3Z1JDNHdPUVE2bVFFeFBUdWcrTVc2ZmxlWmZWa2MraytVRjJXU2tqQWh4Mkpzd2RBNHZnd054MC9lNXUvTTBjUDVaUVFpMFZXZmMwWDlESGJGZzJBMFpzSVBVRkpuc2dMc01wZ3Q3dWgxaFVHd3hWc2NDdzNiVzNHMkk4dDhIcFZyWVdjdU9RelI2eEdia1F3YVhObkN2eEt1bnZSSE5kVitidUFWYWdCM2lqY0x5TTArSEc5cy83aHBJN1U0akI4K2d4OE5vRDcwRDVzVzdyRXlNbVBIZ2F3djY2RUdQbVo0T1plb2VoaWxZN3VidU5oc3dPdEpkV3piNjRFYlFUSTg1OGJoWjZucThDMzRRQUsxSnNDWjFhZDArSXVYa05CcjJ3NkhzMXI1TVowdVZGTVNUTDRwOUEyV1VtSEtDVHp0QytjUkM3dlhZbHNMV01UZ2l1QVFEb3RzV2lZRHRPKzBjZWZtZTRQMmI1dDR0RDlhODZOZVVJdGlBdnVCSkY1SDNCS3BwRzBUMUp3b0NJZW5xQ1dYdnVINWJjY1FBdnljTmUxZzdCQVZZT0tiL0FCSCtLekFsd243TzdOTHIyc2ZFYmphQnhwdDc5cTJ5bS9oMEpBQWZrRXYwSXNMNXNMQ1V5b2c0SG9zZ2JaUDBZWWpBaWVvRkg1NWJuTWtIRy9MUys4UkdvTUdveCswME1FVzBJMUNHU2w3alVuV3I0YkNLY0EvanR5bVFINCs4Q3o5MEoxQll3WHgybUFDY25jOG9DcnFhOHZ0OEZ4Tkl4dFM1L0tnM0NxUlJkOWVHMUlsUWNWY2F1WS84Zk0zWGNpNW90OEpkRXIxU3ErNVM2QlVGZkZtR0dBdHVLUjBkQVhQcGRLbzRkQTRpVkIvQ0gxRHpFd3U5bWNUSUE2ZFVsQW9WWUxudFF6NWNITUE4Y1U5Rm9QN0NwNjRBMDZUb0xsYys1Z2FqWncvbEJMQ0RTTzBlME10WUVkVTdqcjdQM2kxZUY2eE1yYldXNmxBZzlEaWhyOVgwQXNsNFBEZmhabFBwWm1Sc2xWM0RuQU94TTgreUpSNERTc3p5WkliZm40ejJ5THhrNlB6MFN0bkJUWVhTN0ZCUWxjU29NMkxmbjB4OEcwc2hmanpWNVdsYWw4cnRiM1dUSGlCM3EzVkpxbDRTM2wxTVpTMU15TEl6SlRMcWdqTlVLNFF1WG9sdEhuRzd2Wm01TlRkV0ZtNmFmNUUyeWp2TWpXMmxhTkVlU3FIbXhEdkhlWnBVeGx2WFBaVHQ3L24rbnpWZjRKTW0yTnFvaXNBRHprMlZVUjBWMmIzdHppTytjcXlhcmNPMmdTNGczaXpyelBXQ2lONTl5ZGI1QlVlVFBOOHZGMEdlWUp6eDBNR2ZVRzZ2MGdmTGpkVmdlSFVSVEtpMFY0L3d5b2thK1I3MjdWNEhwWmRMeHpCWHhQWFU1ZWZqVnZjQjltUWZIWXdCTGRBaXZTamlXRFhQcjhaRmI5aDdJTGU3RzFUZWZsR1pURUJkV2YzNXVHd1ZwWWlITytpd0RYQWhwdTlMb0F6Vnkvdlp1S3h3V0pGMENKQmptQ3pZSHhjbVEzWkwvbXBjNWZEWmptRUVjdHhVdkJBdmJ6Ym9pK3IxODNGM0RmTFZZUTRRMlFrMmMzbWs5emRpaHRKWDR3WmovSEFpVXVqSFZjVWI3cklxWHM5VlB4K1gyU2NzVUtuY1EzRG50YkhITUdPSm1LcjZzM0hsUExnN2hqT1NYSC9INzdoMHVhNmsxM0Zmalh2ZkppblFxTnhHOENwYzJNdnJQY0tiK2RXNGVQMjZWN0U5a21wLzl4aE1lZ2diS1ZmQ09lNkhmZTdGZVJGZEtWRzI0RVZBMlhJNS9qRHkwOEs1dnBEVE5QMWZLSHYrUFRUNUFmS2cxdS9qZWdSSEVNU1JOcWRVQ2tLUUh3ZmpXY3pOdk5zL3dCL1h6WEUveHV2SGRlY2hsUHRmNkxWYWhiaXA0ckUvekJqMDVTd0JmZHl5ZmZ5bUlmemo5NUpGNC92akdJYVIvd0FMMmNIaGQ1eWw3ODhad09qbnZmN3djU0Q5Y2ZpekgrRDVVR0E1MXNQR2xGL21jUDRmZ2JMbzQ1NjI1UGMzNXBFWGhDL2l1bWdzVC9qaHkyc000MWJHSDVmRlVSb2JueitiZm53M2FWUDdKZmZUVWFadnBqcUt3YWpROGV1bmE1U21hWStEOEhFd2o4ZnhrT1FkRE9KUFkzTWNlbzlWK1hrMlhyUFJCYmYvQS8vODlmclpHWGI5SFBuOHNYMysrR05rQVMveG0wVHA0OUlmcy9ubkYzMy82MzdlcWpjWktObnhoWmpVbDFzK2lVbjhnajVETS9WaC9IblRUeVQ2dytPTWZwL0c0emZqbktUKzhXMytkZXAvNGJYWkw2ZlBUM0h0c3hIVWovNEZWd3hMVnBWK0RjaWZOUFg0aFVFQXpmd3lTK3ZqLytGQm1iZy9EZ0NaeUVLL3ZIeWVHQUZiTU9FN0t5UEYzNW9KMEc4WS9iRDQ4b3Q1TjMyMkg4UDZYemprT04yUG4veURFRjlkWVlBN1A1bWlqNGZqR3YwTFU4Qy9PS1Q2NjFjWEt2NHdmaDRJbTdMMDJ5RUxmbnlONnZqVVdjMDA0OWhVbnhjbFdWbGVtN0xwejIrQThqeExFOFE1dTc0cDRwK2RpWWlBd0ltL1VubkE5TmZhQTZXd2I3VEhqeHJtSzlVQi8xV3FBOEcvWVo0ZmpwL2hKd05CZFR6MWZubitaMXlhdnZpR3A0NTNINy81bW5YendXUS8rL1NmaDc3d1dSa240Njl5MmRENllWYW55bmtOaS8xMDVQbjVTY0NoNXJnM0tadmwrUG5Pb2lpdVQ2VTIrcVAvd1E2QTlpMlF1Zk9UNGN6eDkvaUlWNkN1OEdQaTErTTMvTk52bkQwdjc4ZHJVeC92NG1jbjZlT0QxNVlZOE50M21PSzNoZkdmYzhVbkU0RFdoYitIQjc2TS9PZXpBUEVOQzN4RDVUSTdxZmRCWmVkenB2Qy9ST0xxSU5acGdUNXBhcDcyNWdmNEc3cWozOUlkL1E2TlN6K0lTNzBaRG9adHdQajl4N1cvb1AwL0krL1gvSnZWNy9pUWdMK1M3RGowKzhoTy9WVlVKNzlEOWVOMW9hVHBGNytQL3EvLysyOVIvOU5wVHYxT1VTZitmYUlQWlBHcUh5TVgvSS9na3plMHVNcGEvbjFSQjBRZi9EbitudytsL3pmaC8zekMvMTQ3LzJjUS92TGE5dW9lODRSNVRRUVk4emlsVEg2QS9pc2VRbjFNM2YzNWo5ZFAvZ0w0K1pPVGNQNzY0aVg4NUZsUUVQRzdmUXZ3UXorMDl2SEJBSUE5ajBYKzhEN2Y0R01HMGFYdlQyWnEycE9WamlOOEJqN2t2K0NjZkRnSG45ZXBNRzA4Qll6R3ZOZHpmVzZ5V2R4KytEU2lIK0QvNDdxMTU5RkgvbXFKcDNpOSt5RlMxWXIxQS80ZjhuWmdqUG9hZldMMEx4REZyL2c3ZjVhZmduNnJmQzdoZUNpT3Y5MlUvNzNjRkpUOGw5MFU1QzlDSytpM2FBVzRLZjRILy96dHBmeEJDL2FqS1A3NVhzcWZZTUcrUDJYcWJ5L2wzL1ZTL2pqWmNlUy82NldnOU45ZXluOWExSW5mNlpuK0dhTCtXOGpwKzA0SytCWmpuRzUvVS83UHB6ejFIMVR5My9WUHY0MWtmK3UzZklQaXZ3TDVQM00vdnZaZmZuUXFmdVpRL0pTNitCV1g0bDkwWUU1RStZdFpuc2YrRkcvamZ5UXpjRHFrSTFHMGFhcU42bjY0alQrQXBqeS95OTM0UXJ0LzZtNThqd24rVFJlRW9QQi8wQWowNDUrdjB5WVlqUCtEaEtoZm52MmoyUmdjL1JxOUVpajlEL3BuZjM1aHFuNGxPWE5RRDJ6di92R3lUL0g5MVZmRGZ4SGFKMkQ0dDJmNWkrdHhEUHVGOUh6TTRGLzF3TDRyWHQvRyt0L0greDB2K1Z0U0ZtVisxZFNSK2M2K2Rway9YZW92amhQMm04TDNiMGNDMEovSEFmNEJrZVFmamdYODZ3TDNlOTE3d2EydWpicDA4R2dsRkhLck9jUVNmL2d2aWh1TVliOWdNdWozZWZ6ZmpnUWp2eHlKL2t2RUNNWmc2dXNIRWRRL21ka3ZvaHAvK0FhTS9FcFMveHJKKzlaOWhmL3hqLy9uMXhETXorVG9ud1k4Zm5SVXpyRERyd0lPZ0NsQWhHNzRFRmY0RCtDa1B5WTRmeVFkaXVKZlVRTEY2Vy93Qi9ZZCtQRm5yS1A0THBXK1pGbC9SaVlsOXZ2NmdIdmdjV1hhSE83V3UvcUdiSDhIckg0cllFVWhBVXI4cFFFcjVCY2kvU05qL1ZNZ0MvOEdrdjE4M2pNT1I3OU9qMC94NHdOLytUejhleTRUK2pzNDF5OFBwcWdQZjRZQjVuTDRob0gvQk0wRHc5L3dOSWljdmJjMjdnOVMrS2VKSEg1TkUvMy8wSmY2YmMzd3YyWEE3UHU1dnU4VC9pUEo5emZCLzNTQy85NVEyVjlIOEcvakpqL0d5UCttOTU5T2IvSy9uc3ovRnEzOGNEb05iWGxpN21CS2tnTnkvRTM0UDVud01QUWZ6T1ovZjg3Zmk1RCtuUXY1dFZ6SW4wVjM5RHNvN3k5S2hueC95dWgzeUE0QzR3Q3ZIeWoxZjVwZ2lQdlpCNTkxK0RzKy9sZHd3SDliNThQZmk1RC9uQVVPYS84MzlmOGk2aFAvZGIzL2JRRDNnL3BUR3gxTzVOKzVzYitTK3ZUdjFQNS9IZDRqdjZIcWYzS2J6Ly82Ri9KbTBEK1FIMFA4cjUrZi9KVjQvMzlvdmQ1dkN0ZlBJL3EvdWZ6enoxdXc5Kyt4QmZYZlpBdjRYMk1MOHY5N2JJSCsza3pQZjRZdDBHOWRndi9ra3QrZjVmYitNSVYvVC9yOFoxendhYkwrSFM3NHAxbnpQMTNrZnlVNTlVMGttL3A5R2JzL21tY2pNZmk3ei9temttREVwUjVWbStjTXprcGZWVkhmWmovNkw2YWYvNE5yUC81MTlmTmR4aU9JYnpuMHUzbm1ML0wrVDFuMGt3TitnUDZCb2pUNjY1am0zMlpsL0d0V0pxaGZBS1BmbjN6K1JSb2JwZkd2Ui9xemtzOEk5UFdEU09nM3BPS24yNytNM3lUSkVQL0JwZk5nVTN2VGpEKy92UGZidDlwRU1iamkvd1U9Jmx0Oy9kaWFncmFtJmd0OyZsdDtkaWFncmFtIG5hbWU9JnF1b3Q7VmVyc2lvbjImcXVvdDsgaWQ9JnF1b3Q7MF90TXF4SGdkcWt4aHE4SGY3cmMmcXVvdDsmZ3Q7N0wzWGt0eEdFamI2TklyNHo0bFlCYnk1Yk5nRzJzQTFYTi84QWU4OUdrRGo2UStxWjRZaVowaUoxSklpZFhabXFaMkJxVUpWWlZibWwxOWxBYitoYkxXSXZkZW1weWFNeXQ4UUtGeCtRN25mRUFTR1VXejdCYzdjbjg1UUVQcDBJdW16OFBtbVAwNFkyUm85bjRTZXo5NnlNQm8rdVhGc21uTE0yazlQQmsxZFI4SDR5VG12NzV2NTA5dmlwdnowcWEyWFJHOU9HSUZYdmoxclorR1lQcDhsY095UEMvc29TOUtYUjhNRS9YU2w4bDd1ZnU3S2tIcGhNMzkwQ3VWL1E5bSthY2FudjZxRmpVb3dlaThEVTdoN3g1L1JMaFV1WHNKUDhYU0h5UDg4VlNaOFM1RVBmZWlqZXZ5K1ZTTlBWVTllZVhzZU1MNmVzcjZwSy9Db3AyNlA5NWZCSE9hc0tyMTZPMkxpcGg2TjV5dndkdXlWV1ZKdmZ3ZGJ1YWpmVGt4UlAyYWJISGJQRjhhbTNjNEdhVmFHUisvZTNFQkhodEVMaXBjakptMzZiTjJxOWNybk9yZkwvZmlzVWdqeHlSMEdLTG1kaHJhemZUUnM5Nmd2b3dPL09uWHlsazl1UEhyRCtId2lhTXJTYTRmTS85Q055dXVUckdhYWNXeXE1NXZpckN6WnBtejZ4eGlnTVE3Kzl6d0NINTEvK25tMHVtK0s2S01yeE9ObnUvS1ZZbndXTnhqQWFQbElpNS9GS2taTkZZMzlmYnZsK1NxSlBZdnhlWTZpMExQR3poOXIvUE81OUNObDM4NCt6N1RuV1paOHFQc1BSZHIrZU5hbGI5QXI5STFlL2VjM0Z2bHR0ODJxdm9nMnpZS2FOdXE5c2VtSE4xcTI5WHA4TTQ1MTg2UjJId25qK2RTTDVwVlJQSDVSNzRiV0M3STZPVDd1NGJBL3p1alBvd0ZPTlZ2WnVIeE04VFFMdzZnR090T00zdWc5S1FqUWhyYko2dkV4V2ppei9kc0dsWVYreDMvRHQ0YXoyekg4eC9IMkQ5emViMHBTYjMzeHNvZlFvMDM3NWdobzROZXFBL0xWNnZBc2ZvVDRTdW4vS09Gam54RStlTXdRYlNQM0x2a2ZKM2tjK2NtU3g5OUkvamVFQVNpZ2JIenZVYnFPbTM3enJGbFR2MHYvTzB1ZnBINnk5SW5QU1ArVmpNdnNJYnNuR2I4QU12aHZDYmphUkZWR2YwajBBZ1RPL1FkK0kzWDByZFRSejBpNDlQeW9WSnNoZXlnbnl2VlA5NzZTL0Y4SjkxUHR6ZW8wNnJNZktYUVl3cjVPNnRRUEVqcjVoU2xmTmw3NGY0Y05EbnA5MXZ5Zi8rZDl0bjl2d2NNLzI5aFRYNUQ4TUVidHU4Qy92OERSbjIzZjZTOEl2TC9WLy9jeEV0dkF2d3YrK3d1ZStFb1QvOE1FLzBMbWZGYnlFVGo3UUhUdnN2LytzcWUvTnBUL1liS0gzOGorOURxR2Z5UDJkNklJUVVNOG9rTHNjNFFRaGZqb0R5V0VNT3haUTU2MUNIc1I0bDlwMFFjZjh6azFlbjZjSGdXalZ5ZmJTSHg0SGtKOStqeWMrSXpXb3A5NTNzdTVsOGQ1NWFZVHRUZEdUSE9ydytHTjhuN282bitoejI4cHp5ZGI5c1JNdlpNU2Y2V01YNitOdndvZkJiOWxJNTlFSHBUUkZwM1VDWGhvbVd3MlkweXJkL2wvYi9uL2RGWUtma3RJUHNtL2pzYTU2WXQza1g5dmtmOTBLZ3IrSEJQNXprVjlFeGYxN1dMLzZXUVUvSmFDL004N0kvSGo1UDNUT1NqNGMvUWpVVDcxK3VuM1M3UkNKTTlua3ovRzVLOURGdlIvS1dTSnFTQUtncytGTEQ2Rll6ajBENFlzeE5laWhnODYrUDExNjBzRTU0YzE3RzBZTmozSVdxOStqeHYrVWlQSXIxYUpYeVp1K0JMaCtVRUIrbHNadlV2K3UwditwMGNNeU9jSXozZjQrRzN3OFp2Ri9yVlJ3NDlDajhoYnFoT2dSK0JKUVdvaUF2bFpPTHpqeU84dmVPcG5XL3FYNmYyUjVGTVA1Q3A1YjRRZDFlRU81S1Z1UjJIbVZVMGRYdElNRFB4MlFjaktGM3kzSGIyZ095Q3BkS3hlcnZTQTJvekNaL0ZzUTluZm5ZOFBYSER3Ty81eXlDMGZYK1R1TDBkTE5qb3Z6OXIrL3FqVWR2UkhJWER3VXViYnNOdlEzUG9nK3JQN25nZHRRN0pKOUdjVlBzL1hLUHdrVmZldE5ueE8vSDFVZW1NMmZWendUOWxwRmFqN0g3Q1NKSkJQWUNWSnY2cmlxWmZQcGY3UW9qY1YwY2hmVlBRMENtOHErbDYwTmZLV3c0Ui8vLzMvL1pJdCtramYvako2K2VCOUhqSEVGMDBIc0E3ZWJXeUdKN1dHdjhIaS9haWdnWUErRlFxR3ZUVWsyRmNzTzN3L08vS1dhZnluN01pelBmakRCcmdmbTREUDJvTS9iTS92K0RhU245Z2ZtcUQreWdLQkkzWERCTnZRQWIzNklTYUcvRW9UODBMOC9Bd2JROEN2dEpCNHBWNWZhMlB3VnpZR1IvOWhHL09XTkgyM01SajlpcGhBeUo5c1k5NXluTHZYcWRWdlJQYStJUDlURitSaG1IeTlJbzkrSGVUOUgxaVJSOTV5dUIvdkYzZ1B0djVNRlQ5WWczOFByWVo4amxkOUoxZStMVS84bThYK3RaemFEeU5YdnBnOUduVTNNQ2J2OU1xUEV2M25iUDgvT3VQUno5R3BqMVR4bTE5bDc2TC9jYUwvNmN3YStwWlRmUmI5RnRsdXYrSW9DdjBORWI0TC8vc0wvK2N2ejZOdmVkWFh5L09QMk9WOWRmN1hYcDEvRTc4UStOc28rUFB4eTh2bWhXK0xYMkFFK3ZTQkNQV1pGR2JvMXdoZzBNL3Rka2VnOGQ1RzcwYnR6elh4ZzRINDk0UXY2T2UzdDI4SUpueEtKVzZiTWd2dTc1TC8zcEwvNlZrQjZIdFM2WDhkdUg2NzJIOTJWZ0Q2dVczdFQ0SHJobHplY2V2M2wvalBEMXErdEtrZHZMemlWbTVnNGoxay9XSFMvd1dpbHZlZDdmK3d5SC82MW5iMExUdjVUeS9jLy9iMWlUd2ZGdTdoMzc0cGFlZ3JCZmkxcS9QSTE2N08vOFFFSUJpaW50WHhaZVVOLzdzWlFLOGkwamNWL2VEVmVld3RpZnErT2c5RHYxb0tFUGFXOFB4M3BBQmhOUG14TllGL2h4N00xODlPQVhyeEpuOXBaRjZZNXA5aVpaRHZsUU8wb1o5UGE4SmZ0K1pIbTVtM2xPMjdtWUZSblBxZG9qNFJESW0vWFZiN1p5M05XOXBSL1R6MTlKNzlnNkJ4SEJHZlo4OURrdmFoSDhxZW8vUlhhYzgvdkw4Tis5SzIrSGZpK3ErVjRNUGsrL2NRMTlnN2ZmbGYwNWZmTHZhZm5YZURmWW0rZk9leWZ2eWMvK21aTjlpWHFDendlczZ0eHNHYmdQeWZscXplTmVEN2E4QlA1N0t4dDh5VzJzd2IxTnU2dTJIQzk1ZjhmelpWM0l1bytMTmdrUWlveUk5L0lGaWtYMlZhMEYvN012OFAyUkRmLzYzZWI1bW5SMzVERktSMTg1OG9hT3FteW9MZmdBcWo4R05pZXIzM29BVGUwN2YveXFEUVg2MGYzd2dqc1QvSnUvbnZ0T0h6dTZTOXljczJpSmFWMmZpZSsvRGRwVTUrcFJINFlXVERDNHo5U09yRzJQVGc2enNJZEt1emR6L3lpL21STnlsN3Y0SWorVUtpM0xzaithOU55b2Y1K1M5eUpGLzRUc3k3SS9tQlV2LzVqdVF0QzhVWnAzY244bXM2RWZRWGRDS2ZmOGZqdXhQNUR1WUUvMm9GK1dXY3lCYzJENzg3a1I4bzlaL3ZSTjdTbXY5UWtzVzNXZHFma291QXZVcFVJa242MHpxK09oY0JSZitpcGgrY2k0Qy81UzdoTndMKzMwcEVRRjRNM3NzS0EvRTJkZkpyM3V2dy9UNzY5cFljelA1eUp2cGxBOERVUjdNT0pqNlprdENmemNHL2srajBiUUw1eTZ5a0YrRDkxMWxKUHpIM2tYNlZHMGZRNU44ekJQU3J0NmhSNkt1S2ZyQWRJRDYzaWZqTDJ2VThCMzlsL1hsaEFMOUZMZkRQVEd2OE8va002TlZianNpL25iLzJvVWt2dWtKQlg2VXJtL0M4KzBlM1BadmlQMm55Rng3MGgrNDlWZmw5TmZFdERmb3YxOFFYOVBmTGFDTHhLdUtFZjNsTnhINktKcjdsVW5ubDlFWVozd21VbjBxZ0lLOWVhMCs5WkNuL1ZlajBBakMrUDE3N1V0WmZHRlVlZUNYSGU3RDhaeHBBL1B2eS9vaTNqQ3VydjF1S1g4eFN2UDRBeGk5Z0tiNlVPZmh1S2I3S1V2d3dNdlhIV1lxM1pDcTNmN2NVdjVpbElINDlTL0dsTE5OM1MvRlZsdUxmOTJrYzRpMHorei9BK3IyWTlMOStIZm16Ukg4RzY0ZStadjNRdjBuL3YzNGRPVW05YXNzUFp2M0l0OHp5bjJuWHY0QnJlUWtlZmhHdUJYMUZ0UkIvOStNWU9QTEtJOEZmcHluZnlyU2dYM2pPRHlWYXlQL2ZrYy9FMzdCT1AxSU5YNjB5VXRndnJvYmtUMUhEdDh3eisrSHoxZThBL1ZmYTcvdjYzWlVZL0pVQW5mcFJjSTM4MGhmUTM3ZjYvclg4UDh5OGZ3ODhKejlIOHI2Uzh2dFczKzh0OXArOTFaZjgzQWJ2VDc1WEdqeDdqUGVkbnQ5ZitqOTlyeS81bHE5OS80amhYMkhoRjgvNDF5RTk4dTJnK2J1bDlMMTVoOW5mWFJOLzg3WXMrbmY2NDUrdndzdmZEZEsrcFp2L3g5UDcwRmZaZmRoblBqYjJqMmIza1crWjNYTTB6azFmdkFjZHYxclFBWCtpT3ZqTGk5TitYdER4cFMvKzFDOGFCTDF2emZocVBFSjl0VUw4S2tFSTlSWDg3WHNROHIzRi9yT0RFT3B6ZENtWTllM3pXMGZBM0hxUFA3Ni80SDk2L1BFQ1V0L2pqMitKUCtpdmpUK3dueGwvb0o5aUMvSnZNdlFZOWhjVmZTZUdIbnNWNTd3ODU0dnRlbjAvOUE4dyt0UmJVaGI2L2ZmLytRam9sWVpnYi9jMy9hTnZXYVhlVXFuTVZ1QTkrdm1sb2g4U2V6V0JxYS84b2dEOGVudkI5MU9jTDdHeDJURGNBQko2QjBCL3BnSWY1dDIvS09ENVVzTHNobkJ1RDNmemZ3YlFhVVFJbWpwK2g4RGZYUU4rK2hmQ3FDOTlPS2p0cytCOW9mVzdDL3hydnczMndvVjlmNEYveGJmTVB3cDJtdll4MUtFM3BJL2dCZjdUcU9ZNU92a1A5RHNFbzUrRUtDUk8vV21ROG5jL0VBTXFlZjA5aHdmVWVOV0J4N21Qa2phL3phMy85WWRsdmpZb2VnbGxmc3J1NnRkYlpsOW5HMzF0VUVTOTJqNUlvajhtS0tKZnBTMWg5SjhIUmEvdkovRi9JaWo2SEduODVRbjFiQm0vTktIQWVkVWJ3UmRnSDJjUUNIM0ROaUp2SnQ2M2FmTXZra1ZIdlJSNUphMXZWOGZYWW9lK1RoMi9sd2JRWDBFYkQ2blhnait6Q3J5QThnOVhlSHpGMmZyUDBjb1RtY3RzZ1ZIeUVQV0xZdzJqMkx1VlgzYW0zdEJHQVpCVG5DMUFQWmpIQTNjdlo2R1hNNkNxelhuK2h1NmVEaEdoQldsNWJHWXhpajVEQnpGcGR0dlAyVEJUM2t5MnYzQnd6Si9ZbmJ2OVprc3JxS250ajVNbWxwd0dNN0lHblJKekwwL1hxaHl1Mm01blNKVmx6YUZyVW9WZGx6ZWo0SmxtcHhsRmVzYjRuVkV3clhUUnROdjIyTE5lSkd6S3lMbDB5TjA3Y1dDOUpiQ0dnOWhMU1d0cnlsMXlLMEVuOXpDajg5WlZtRWNFTjZFRGNleW1XSHdBRmNiZi9pTXBHcWZXcmJhMVhNbmhUb2N6b3ltVXFXZU9ySWNhZDA5M1RvYUkyOTFDVk11SFE0dENqTHhqQkR2WlhXMXVoMFhlc1RydmRVeGo3U2IySnp5RXp3bWYrOTUyLzlYb25lMFhVQm82eXVaSXJZTloyRFdab0d6QkVtT3QxSDIzL1daMlRIVFhiWm1kZDRsUlYydW5tZG5CZFMxUEt0T0UyVTNsVFQ0cEhtRml0WWFqV2JSbUxsMXE0Y3dtc25SSTc2ckM4QnpNM2k1dEdpNm43ckQzT0ZMTUN6YlFkaDBqcG5SU0h4SHF2bWtSSTBIWkFVbHpMYzI2QzVadmJkS2ljRDNTYlp2UWZaQm4xeG5lWk1nSWNLbXpLVmRrcUFTbXFyRDlVME4xbllvMjZNVllUbGx2UEpSNVVsaDVXMWZIMkZldUt0Y0tpWURsZUJwVm1ybklqUll2M0h4VlhhM0J0Y0V3TXhabE1CaFR2TlU5RVR0dU1CU1Z4M2ZpSm4xK0Y4akJYZVVFWnlIU2pKVzRpeEJJVVFKcEdrL3VLem5NbUhpbFpqVVh1S3UveU9kYzhFbHRhMkl5THhsUkp5dXE4cWVlTnB5WktoV3RQS1V4MlI4NTNHL2M3WjVXcUJ4QmhvUlRFbWFVS2U5YzF1ZTdaVWZpaWlPa2JIdGJkS3NhN2l6dkQ0WnVpejJGTDBlQmNuMHdoeDJHNmxkbXQxK01makMyNCtNOTNTcjBqbjVRR0FON3NyWURubUdzK2k2cEhPMnkrRFoyeTNhYnd2Z1RLNnpTSmEwdkc3SmpnanJWVURXbHRCT0xPK3ErbmtTQmRmaEREWHFRN1NZYXROTEtBbW5venRhWTUrMjBCaTViVG13dkhPTktETnpzSHRtN25kTUtjN3d1TzBzL3hVZU1NbzVEWHFWUUxHTVVZeWI3STdQYkhYWWM2NjJ0eXgwbHBqa2kwNlA3RVJ0UHJDWUYwczY3SnB1U0NZTVFyRnJHNnRkOFlTSU0ydWxBOFU2Wk9pVHgvaFpNVzRUQTJKdzJiRDBWOXJaZld1aE5relkwVzBxb3RET3BaRTNPcWNURWtZRVllWHBTSTM0UTh2dHVVeUlHdTBMY1lZbkZhcjcxbzdvVmp5bElIVUxNbFN0bkowaExmVGVFd0IreVRkcUpJa21CbGpRSmNnUHFOeVZPbldDVDJqTkVNNitCdEZXV1JzNGRsZGM1RFpsZHhOdVlwaVFsS2lkMWxhSGIxY01wa1NGdGdoTGRJSTJZbWdVL0tXREhBU3FLTXJkT1E2eUFvWU05M1NkSCtxVHlzU2ZVRnBYZGhiMXdIS0RqZHBjUmo5TnArNTJubnBFUGR3a3ZTdTdPa253RVptaGRGVjJIZEFUSkhzN25ZRHVCRjBFRVpuRTdUMlhOcVpmdFQvSUtwck1XNi9nd293U3lNTmVjSVFXYjVIUmtkN21KWjIxSGhLbmNMK2R1eG1DSm1vNU5kSWQ5cHppR3JuMlpjWk9QWnc2bHVRdnNlWGRuM1l0REdDMmJreFB1VTdLMWp6a3JCU24ydXlvanZDTnpMYStNbzFYYlZmWTRFL2Fjd2dodm9tR3RJM3F4SStJUWRIdHFDZjZ1a242MkkveHdxd0JuSEdxSDdlRjdzT2RtWWgvY2FGWURKb1pHVXhvTStiMzJ6OVhNYjJmMnA0U3JjM1JYWW9XRXA5QXdNV3BtbTlLSnZHaVV1N3VjRXk2S2MrNTgzNEhIN0xqRTJKbTZKR0RGVHRvRW5hMFkxemdKVVNaeW0reXpnbS90M2Q1TzZzTXMyak4zbzVnbzJPMmdSRlNUTTdjcGFjUDMyTTdER0RoVU9UUUJabmZnU1lvcHQya2tzN3FkU2Z2cWNMSlpCc2s0bGRYMmQwMWp0U0F6TGFQZ3RJSmYrSXl2dEdwSWRxMXV1U2tlcEhiTDlKc2VMOHdsT3puRmppeTQ4U0RRN0dFcVRLcEp1eTZ4dXlUMW1rclIwNkxoWjVqRGFGNzJXSmRnREpnVmlPTVJVcTFHOEp0OWI0WnFnOGVhaUd4T2NMTXJVamp2MkNwWEh2MmlsNEZ4YmNhd3M4cEszR3BHck9aZ3VaYmxic0xrdDl1RkU5d3phait2WktiTGR4RkNCZklteVJ5MU00SU1HRTdtQ2lSNnBCeVpFbUJDM2NBRHd6a1VTMUI3NEE3RWhwRk83TjdsTC9QQkwvaFZrdm01RkJqMXdIS0RsTTVsalZsa0ovbHp6amNGb2JPM1RLSHZ4ME9nRDFpeVp1Wk5GdDBVWFlTanlDRThGRWl5SUVXWlJoWjUwR2FEbGdwWDltRG9veFJCU1cxWW9heDZtbW9NN1dFcGVzVW9oRU5udG13Ymw0ZXIyWkdsaVRXT1pSSGRaRng3bmtDay9jMW9xSVNpNnNzOW1HUWtTRlg4MUZlZzBYS1ZhYjZZUllLYUhjTEtqSzRYdUJUNmd4MjA5RDBkeTZ0dFhhNmJkUk5LVWJRWnFseExPdWpKOGtUMTRYMkRRWUoxRnN6QnN0TE9YWnpDU3dhVHJ0cWc2TXQ4YVB4RGEzVkdiT2R0S1IyNzA2MkJRMjJGcGRqa2lBYXl0TkFhczFZTlhieEw3WTRtU3NjcWtiWTRhd1BjamkwL0dnZjQxTnVjMThiQU5vOFhtV2o5N3JpM2xlMm9XbUYyTW5PaWowMW0xUnV4d0R4VGIzR3hHT0N3R2dOb24xVkdlSURnM1dwdUoyL3crVjVGcHJkV21LK3ZZaktJYllRa1J5OE1XOTl1SU1jY1JqbnpFS3N2N1g2RTdkNGh4dGlHOTc1K0dZMm9MWkUwdHU2a09jZVhJZFJUWUZNdjNmRWM0TTMrZk1IcGt6UXYrOU5tQW5RRDhzMjhUd2lzUjIrR0FKVEY4ZkZiWmhNaG1hRGhCVzJoeVdUcC9SR3hvZ1FtTnQ4dDZFdHNUYlNvSWkzd2JSTzB3UldtUi9OUTg0aUxiU2lrWE9DU3FJY3pyTzNnRzJkTHB5c3pEaWNrbVVWTzJzRFZEQXRwT3B6V0pVZkVxQUFPUWk5TGtZQVdwZHFiSGpTdmRNN2I0b0ZhMUtxbTZnTit2dEx5U2tSVGU0eUJvK0JuNWNJemlueTN2RXZZcW1wYmVoWHIrZXNsR2s5N1BOVlhKcTFFKzlxdmNuOEdzeHM1cjRaNnV1SzlVNEZqV0JLRytYaVVCcmlzSUx1L28rTlJQZzNsVWlBMmg2OTg3MlFWdk1Fekt3K0JEZk84Rzl5cmdVM2NwNDdnUWxGMHIrZDhvUGRWbHNFZGdYVCsxUnJUaUM2VTBWRlduazdIVVJsY1hjL0xrOWxnWGRXYlIyZXdJdUpLTnc1eWpxOFJseGNLTnFQM1BkTkVUa1BCK3hiREk4VnZZWm9MOXhZVkJwdnpaaENGeG1lb05nOGhuZyt3NHNQSVdEdVZVZ2FZczlEY1hqOUIxNEZ3bDF5Y0hHWFpuQVBERXI0akVpUlV6cm5EUlBpNUIvTTdkTTRvVDA3V2JiS0ppcnpWdDYwZEtDSTNKMCs2R2t0ZHE5b0RMS2Y0cWtvNEhxczZSTjNYV1ZVNHZNUWoyc0pJeCsvbzJpVlFrUnJDMjU2ZVJqL3F6MVJJZG1oVWNqUlVyMGgwdkJEMmxBR25JWTVValJiQXl2aDdpcDVTR3RmYm1Wb3FzZ0xnbHQ3SEVMRGRRMHdEWTZWUzFlWHN0dEJoM2gzWUhkU3dTSEtDZDh1SnZjK25tR2tMOGFyNUZxT2ErOXZzcXl5SFdWcVN5Q3hjWElNdHByZ3IzbjFyR04xRVJEcEFzaitYRnhZYmpvZDVJUVFFODQ0elBtU1FsR3ZaMmRUcCsybVVHbHZuTEQ3SlVnUldiaTB6Q2c1VUtsbCtDZ3lYa0xORHhVYkxwZWRYRjU1eWJ5OWVzTnJmVCs2RTVqQVZ4YUJyakZLSUJpVGZtdzFwQW9XNjlKdit5enVvNjRyMWR0SHZ2bUljQ2FkcDU5UVF5N1BjdVZXcndOSitTV3pGWG0rM0s3bjJXekhsdUp6dm9YdTVKZ2dXeUp2WEU5d0s1ekZhTmR1SnJ4eHR6cStzWFI1ZGt0U0dPaXRWUVRUVHVvV2ppa2JQVjNUdkJNSTZBMnlSdHRHUkJzTThZVDBJT2s0bjBvVWRjWURXYVQzYjE4bXFBSHF5cld1c0hleG1LM1RJaHlKQ1ZVQ0c0dmVtbGlFOElVdjU1bGk0VVpkdFpFWjhOVWlCRzR4RnM1bFp1WTRra3I4SXpZQzFkYW5hbDF2aHBGaUo0cXlLZzBaTFBrdGVraHk5KzR2UTN6UEM2S0ZETkRjVHg4RW5vMldJc0wxc3lNSER4NXVDb2pKOUNBWE50RUU0RXpCMUlBYlF1aHBYeGFZcitMNVcvUUZaaTdCdUIzeXFxeE44VlE1aDdVOWM0TVNuaGtLUEFHMWN5RGlJaVE1MGFmTmRMTnpZVllZRkNzbVNKZEQ3bUNoYUs0TnNnYVk5L0dnMUZDSlRnODJBU1lSTGk3RzZBOEMxUG5zZ1M1Y29VOCthMnZMZ3hPMENiSE1ZbHh1UUU0QmxaTys1Nkl4M0dyRjl1R1VjVmdnQ1J5bEpxZzI3VmJjRkQrMmNGRmx1TlhhT1RWU3UrckNYQ1lRMmxhc3gxa1Y0dmNLRkU4VUVwZHBua1pyUi9welA3ZVVPeE1ON1FneFpZV3Z1eTJMb1VSRXQvQjRoN3doc2tJakRiRmJ0cXRxejd2c1ZkVWJMTnI1YXBUVTJDTlk3bkY4QVN5QWpNRml6Mkl5a3NOaVRlUWJXRnpnU3BWOXZncktPNkJMaFhlZDRVei9pNDdBZmNjNXE4aTZxd3hOS3FxVVBNZEV5OXFSOVErRmJiWllSQmtLdis0V3NiN1NLZ002djJqbGo4RVk1SmFTOVArNXdhOSs1NGJFcjkwUVhPL1FhRm1kSFE5cGNSL2E3Z29iR2RZTzRGNnc3cVhvZGhLZThOQU40SlI3QnE3QzdsTXRKdWlUM3pTZ2tSTUMzYUtmZ01MN2hjTnljRlBwRWxYWGZ4L3g0TkdMdU1wTEFNNi9hN2FLTTY5bTc0Q1NxN3NrcGlhSzlwQWUra0JiakRRaTQ5NTN6b0R3Q1A0WjhlaEFqSUdCRWZHS2JtZ3l4bVQwYWM4UzZFOC9qZ25YOXRNRTZaOWNSNFEwc0NESHhyUlJ4Q1ZHcXVVQjltdkppWXBza0lGWkhodlcyQmNka2VQUlhFdWdDQ2V3b2RpRmxnQm5NUGE3UjUzM3EwbTU4M3FOMjZMZm9ab3NPQkpLU2d1cjN6aHJCMiszVUJjQlk2aHBGcWJrZE5oZXFpMFFRaG96eHphZElJWjFNNFBVdEVGOHJFVTNPMmhUbmdmV0F2Z3Z3bmRhUmdPUDkxQjhmZlFPNC83WUJlNll1NDh6Q2xLa2tTVDBpMWJVUEpuOXoyMDNpeGhNMTRuUU1BTXhkQTlhYjY1dXR3Q2tua0xqSXdZc05oY3VHTVVBZEFNSjNGT0xnTnhES09BaXA0Z21xc0htV2NkWGRtZm1UbFd2NUR1TWNaUmFUZGd2dGdXMEwxbnVlZythYXRNMnIxZFZ5L1YxTUhlOG40akRjZG9MR1BzWGdNZERIUGtFcGFOeXAxekdsZ3FrN1VNaStZWnBEd2kzN1pCZWVFQS9qV3RTNkt1SEJNL1pzUUxFMmNnQUJUQlRWQ2JwYzhDcFc5cHRidVNYV3hkcENheERrSkVQa29ZdkxJbVJ1emJ2ZFRtcExteStyaXdudERvQzUyU1U3WnNkN3U1MEpEaGp3ZjJyQyt4OGY2d25mN0hhbjUyTnAreGUydTUzMjRmcmxVUS80WVI4bkg1ZmszZk4xeFVpVDNSNGM4T0MrZlpac2orUS8zSWQzeVc3KzZGaWJuLzYwenB4aEZxQ0tpNHZLRy9iRVYwK2tJUUxZNngzeWVHSTVHNXZDYjMvWThsWlN5RXpHc0tRQ0VFKzc4TnBhUWdyWlBIeFNxdlBrRzNoNkZlbnNhdUNZN3p3M2xsc3dwVTdIUUlUTGNJdGRJeEVlL1BwRVJCeVV1YlkrdVpWSmdHUGZ0aURYb0xZZ0ppRzJlK1pRSEdpcFRNOG15M0QrMWpLSmMyOG5GcHVsSER0STdDNVI5M0p4elZ0RDU5MFBkUWFWWHFtRzNJUjdmVll5YWdyUkVEM1d3WHFzNlB2MVRpM0twY0NQNis1K1hLWDcwZG5LWi9BYTJUamtPc200bGM5ZjZ2Nm9mdjdxblBPZ0tyZjJsSk9mTWZlcjZCS3VMVStobzlGU0puMjQvK1cvbDdaY25iUzk1bERtN1hVbzRKcnBpT0JiTzRUQ1IrVHkrQmdydW96RXNqcXUvTll2S2xPM2VQNmplcWluOHEzbU9XbnBDeVh2MlhEcDErZldSN0RIdEhFeGxYMnFRU21aTmhLdHdkNEErVGFLdHdEWld2cFJUeDY5RVMzTXMxM0NGRXZzYWkrdUxwYmpROVkyZlZQejRuN0s1K25USjZhdm5zaG1IL1dUVzU2ZmJLMVhSK2I4emRSdnRVRnFDY2JLQXFVYUg5V29EWGcvbm1vNTV6SW90ajQvYXRRK3JvMmJKeUExcGRETEFEbmZQWWVCSG0xNkdnM3FpSDZRTWlpMXRUTGkyazIzbVBIcTZLbWF0QWY4aHZ0QXpmWml5Vi9neDhSZ1grYkpUZ0k4NmU1Qm9xYko4L0VaMktraGdacHRmbXhUZ1pGMVhqQ2ozWDV3TkdkM0xCeXJiaWlGaUhCUjYzUzlNNGQrbHpYSklVVllzenZ3NGk1ejNVM280bDZUQ0dDczJPMklEdzlueWJuSjBhMmZWbUFLS1FxZ1NSY1BrQ3VLVWxQSkw4S01qL2gwb2JDSFRZdkNLa1N2bVE1M3NtUkhqT0pwK0h6TGVlMkszem5iekE1NUg2U01oVWk2R09SQ2ZPWUxnU1E0WGxsNnRsTng0SnVGU3ZHbXFxYzlZSHRWRW9OREE2cE0xOTVNKytieDBSb0ZOK0VPeXNGNGZzODhwYkFsKzNUQWdNTVRCREZXNFV3aHB2TStqb2xtWFo1ODA5a3hSN2tVQlNLdXVIMkFLaGlXVFVib2U5Zk95R3ZJWm9VcmNXOVBwMnEzbGw0K3ExWk1rTExpSHNRd2trcytZMDhIaERlS1RJTW1IVHo3a2k4QU9YcFRtYU9SMFZTNDBKVG5pRTFoKzNTU3ZZZjNacmxkbVBvT1ZSelZ2VDVhU3VSTjR3WEJRUThBdGpmR0xnc0lPakNQdllVc2FYYmRJdkdENTlTQXdDSUNZeDJCdHdMOWRRb09sR0xTYTVrZUJHRGpMKzJwN1dpTGFiaDlvc2h1RkRtMDNoT25Nblk5WC9CazBYT2NndDRCZk5XQnBZYUpBZytzOHhuSityd3ZENFF5bnZweXVUYkd5U2xpbVdCazNBS3ZFdDU4SSttQWg4YmR2aHdNZEFOeVpXYWxlN2c2UU1ZSktTYUdZSzYwZzdRazhERmp2UDJoVVI1M3BtNkw0TmI3OVhZWHVyUGdGWDVKYXduVlBlN3lvWlU4M1ExR0Y1WUxsZkhpblQ1RmU0SzlrWWUwMWdHWEhzdWlmVUZ2dDkwNFcrTWVKNUZJZFNadFFCcWhFR1hvS3VjNWFCSWF3djdSQVkwVUpnQlplNlJDVHUwS1I5YlJBcDNER21uaDh1dmdQN1VNYXRHQ09icGVQZm9JL0R6Z296L0tuZTZkNlZ4VjBLVTgydnZGanBHRExPZStRL2RQUUdtd3ZUMFlBT0M0TncvdmkwbVRzZlZBbnd5UHNteGpCVVhQeDB2WGlLSzUwK3ZRajViQ0xJS2JtdHJFMURuWXFhUzhmb0huUTVHYXN3cEd0T0dtNHdIU3IzVW5aTFFvRlpFcWxoSU9xOGM2YVkrNlBkRUFQOFBxMWdRZ3JVWWtUYm9NZlZhRUkzZTU5YXVkS1JleEhSdG9nVUVmcHI1SlQzbFRCT2VhV1lGc2cwQ1FQUlYwc1ZRblFLcUN3YUtvWjl4SGFmckZoNTJGdVltTm5ld2pCY0V2ZWlaSkFLWWExNnlTN21xOHo4Y3M0QWJMdDh5WUFXcEc3clA3TEVDaE0yVW4zb1VLRlY3aFhlS3JEcW92Ri9Hd1dHV1hzUVJ5R2JPajB4S2RZcWx6WjFtOExmYTRSL3ZSN2pwbnVXenhaK2kwOTNsYnZhQW0xWVFaUEpmYUdidU9sM2JyLzduemFpdHFDMnMvcVZoS0hVR2pwYm02bVRWQ3lGNXJ0ekNWeDd4NzF1OHc5VUVudmYxRjQ3M3FFczhnNGhpbHNrcXo0QXlWdm1NYTVMVXJGdlZxSEhpTFNHVEcxc05GMG5BZm5iYm1yYWxjREV1MmFna3Ryelc3eTZna2txVDc5UXowQ0FaMW4rUDdRdmRSMTB4bVYxS2RtMXZwUmRabVdRQWpEQ1l0eko5RzRaTHdHMEkrNUFBMkVuSXFXb2QrN0FtNjVRUmpqRmVzRzRKa1BuZnNUdm93US9UTFhqTWJnVHV5U0x1cVdlWXVyZDQ5TkhUcTNNVThPalJsaWJMdWVzdE9NNE9uS3dEL2txUzBCZEx6SXAvcHU2ZXZoTFRNZFE4MVRqeFFwZ2ZvYVlWQXM5bkxMTUNFQzI0T3lpVXlaRG5KcWFlYTgyNjQzVTVtRHRsWnlaK1hlVC8wNnM2elpUNW1oQ01NMUZ0Ti9NVVNHbGwyNXgyRFdIVnk3azlwakFFN21WdkJHQjl5ZXdtVmJEbXdHVzd1NE9TS09jNHM5WlFrUCt5SmVBcThDWFhtamlsYk5ta09sNWxsZW5hZHF6SFJIVXd6amc2MVhISnpBOXlDRm95U2FURkd0Tk5PcmhnSk1NVUNuTW15Mm1iZGo0R1hsNWY1eHBXdG1EMVZrKy9XcEp1MmFuRE40Q3dxalhOSzlDeDFxYlg4d0U5eEEwTmNvZ2NUU3hHeGZUdDJvYnNmYUJCVGovZmdwc05YYUpYMGgxU2xwUlY5ODBtME11WHNrQ0c5WGFKeURucTdBejVGSU9ueElCem0rSERTejk0SG03eVo1NUVHQjhTRWJFNEcyQmxnd2tENEVhTkd6TzgyakZXcHdwT1kvTldpUUR4aXgvVE0rTUNVRFpldFBXd3M4dHdSdmhZUGxsMWJoNXZTYzN0M2hjUTBSMjJNN0dxYWova2o1c1V6Zkhwb1BwaTlDVXdFaDN4N2ZrTjYwODBYYWVYVTZpNTBXaGViWENsYzdGR2hmVzRadkdjTEQwUVR0RS82WUp1dVFFL2hqRlo3ZGI5ZVlldEduVlFuVnJmWWUrS1pMalRiZERyV0dHYjFTVGk2eDVTVllzTStsUWRCcm5pTGMxMUcxeTdqWU1paGNOaWJmVmpJYm52U3NzYlBkNGNEYTAyWnpuV3RScFQra01xQ25Ja1daN3JNNG1wallCeENlQ3R5dENwWmFoWHRubmg1SWg3Wk1zLzB5MjByMG5xRHZoVXhSSnN6emQzaW1yZkFZRUdSeldKM1IwaytHUGZaeUpMcXVDc3ZuWEZSV29PUWpWRy9NcktCMkR2VDVGZVh6MkxEME9FRGVqMVlCMDZTTzN1ZTJhMklMeFVYd3RPVTFpWmxJeld1cWFBaElpaEMrbnptNkVZS2lyRDI0Y0pMbllpQklxV1BGUnJSbWFDSVpPaUdtNVlhTE80Q216ODZmRmFIV3hFV3ZtYkc0VktjR3JIQm1HeHVYYXd3eWExSVovZjhWc1JNeXdRV2RpZGJPTlo4OGloaXdGNTJaNDFpR1BpbWtiTlpOb21pV0R2emxwbTlhV3VHT1phSklEQ256YmpWVUZHRXhvZ1lwWkhjV2E4Y1RydXRTSFVIWkJOVEZWeG4zZTVtWTFhdWJwNVRVRWhCRnFtRXpBWVUwc3FzV05oRGVuc1UyaFNja1htbEt4K0YrTUtzcEt0NTFwTzlrTEx3SXJYb1ZrZ2JiYmZJQ3B3N01KMnljNGVEcmNpYjFkaUtsTjJ5RlNtbDYyWmROVzVESWZnaXlhQ0lPZHJOa0JUdDhjaHNrbmNIMWxKYStVU1V4Nlk4d0VMQmw4ZnJRMW5PaVNIVHN2eFFsdFpzVGtuVitoeFFsdXVRNldyYjdvQ3kvQ2o5T2dqakpyblpONFBKVE51Mkcxa1RyZzI4dW5nbjlzQXJ6bW56WFIwbitEZmpuTVdYTk9WVGNwK2Y4ME55dDQ5ODd6bW51NjhuK255NzN4TEl0bWEzRFkzcjdlSUZpc1R2UGVwYVhFM1JXOTNTMTU2cUZBVUVwc1RzWG5GQzMxM09XK0ZVM3lXa2s1L3lMdGxtNWxabHpjKyszbWd6UUwxall0cjI3SmJ4aHhidEFYNjk4cFlwSHRDdFdwT29PT1BNVm1jWUhsNjNxU0dkVlVvZTFSYTVXME9ZcTB2QmVsUEs5RldiOW5zUHVmSmxJQjRjcy9JTHBPWXlocW5DQlJvK2JaTXhZNnU1TmtPYkxCNVJyRUVGdWFZbURlU2dDT1duN1VGVTBSTXRvUnhFMllGdTF3TEpkMWw2TGtNR0d6NXRUN1JncTN0dlR1WG1HNUJ5UFcxVjhzRng2SnV6OEtvOXlDUmVSWXVwQmtTMkllVlJaWnFHWTh5OGJvOENZNnRFTkNmcnRsWFpMaWNSOHZqVGNlcGQ0VlY3dGlvclhiQ1liTnlxaEpVMmdYS3R6Y01OSzcxcXowR0JxYnQwQUZYaUVpTFRpc2diK3hPWnQrN3I5aXpJV09teXcyUWxJaCtGN242K3RsV0tkRHREemtrcHordWJJQVUzbTNUTFdXWnhCYXFLZTV1VndxbmdGclo5eHRaTFNjcmFIZCt3dU9VUzhHYXlMMUNpNnhWSmVvSXM1SHU1dzNkOEJzZXRRenlZbTlRQ0RxVm5lK0NiMHRCbmV0ZVVMZXZlM09mNDRuV2JyNndaUEtlWnRMejQ5UU9VR2tMVmtDNXRwU0U0V21RdjlUbFk0azB2cEVleHlOSzhoRThKcDI5WVpGMG1IWGlTVlc1N3RmRTdiK2RWT2duV2hDQVBadzYyN2U5VlU1MDFiM09HL1NGYlVUZEh5NWlrMEJKMGhPa3JYbTFpN0RuK1VzMGMyVUlYUVo5U1kyKzNORWh2aUxTcUp5VUVydnlZMmtMVFl3VjVrb2lLZ2pFbGV5T2F3SG9UamRNZ0FzTjV3cnc5UVZBNkpuejFUdXdqQkh5MFNKanlPSnBJalEvUTdGeFZ2T1RCdnQ5R1JUc3VEb2pCdllhOU5wWGdMcnJVT0M3TG53KzRUaHlxRWZCeXVVL2Z1S3dRSHZrODA1RWRCdW1nK3dPejgxMHpQZDZnMFJodzRNVHRDUWVZT3RpMHFPd2ZBRzdLa2FKQUNvbmNES284cEt3UWpYcFV5OE1RTnNZR1FQU2tOSnZzZkRyb203MFhHd09rK3ZCdDBRZ3Vya3ZTeFdjTDRZQ25oQVE0N3kxQ082VDJ5VFFPQXJKTE9lTm1SbG5iUXdhU2RSYkhpSm0rd2V0NWJrdG5hTHhSbWhxdk5QNHQ5VGNqZTFYU1lUM1o0d1pOay9DQVhHODdXUjRQaHJ1UDhFa3ZDSFV1SSswQmlkcEpEUnlZT1FySkVtVk1lMDAyUkRpWEtiOEZ2NlZvam9GMml6WVVDTWV5UTdQeUhZbnF2WHVybUF2SGI1SFBOaGRnZW95cHEyV2poM0J3bW91SDBlYSszVC9XWklONEV2QmIzbGxaMEFFOEJEOUo4R0xEcFhIQTFmNGlnak5RclI0bnNGekZqSG5uSFFkV0ZEc0FMUE5EN09MWnBMS1A0QWk3Wk1KbG5GclJiaVhhb0hUcUxEWVVBTXZxbm1rdSt5VjFta3dpTHQzK0V0YmRWb05NMUYwUHducGg3L0RtM0lxUkVzVlJlOHlOOGJZUEw0OTZ0bTRaajV5WTgxUHN0alVPUHRLbURKSTBZQS9mQWxZeXpabDBDNUcyMkdoODBzZVgreTcwd0tNcmg4bVpEWXNkb2x4dm8zZ3NPZzZ0RnkzQVY2UU9sS1lrVGV0TzZHM1UrdnRMSUdvSEJrSHpyRVRSVW0rbWxqelZOMmZ4cGRMZGdrZy9KZnZRRXdIK3JZZDdoTWZDa0ZtWm1aZTMvZTB4WXhTNFBkRHpSUjNXZXlSQnhXQU0wYWpSWU51cGdIcFFxV0J5WFlXNHlrZUdMUnVLalVYRU9TWkhqNjFEZmwxVnFzNFUrY2czZXo5UVFudWlFRm93YmxtSWdSYnMrVEl6TCsxdEgvVUFqaHlqdkhWMGxlTFdJN1pXeG5LUUlaVHJ6VDRXSmgyYTJ2ckc0T1VRcnJKVUNvU2Z3dDFtQmxDTXNLRWNaYWo3WGNXaHhNaG9lU0ZnRmwxNktqeDZGcG5jd3VzZU1CaTZ6SGdsUm5zcFdWTlB3SHYwOWYxK1paMVRQcDUzTXl5REJRamRiVlNNRjJSUlBDcTJwZWc2bjRhR01zTWNGL05YQmhnaVBsM2FNdDBjdVdHYWtSeWFnQ2lxRHlUTGJPRXN5SHh4TVVuRnpJTnlPb251MkFWWjNwN0FRRDFZSGx1RlE0N2pITjVhOGtkbFlxcW5aYm9LclZHWW9keS9vUGh4TS9OSUp6V3VqN0daaWtrY2FSNVk1V1NiUTBkbFdVcy9xUU1NTk16WmJTRTl3OFN1cHNXTEZIaFhWMXMybVFqNzdNRnhUU2hKbXhSUkRTZkRYY09icC9Qb3drZjB6QS9uc01ndVJzYWJVZ2Fkc0wxeDlBK3B0aXJPamkwdXRpK2V5L1hXYkJWWVRlTEZHTHd6TDJuMzRLazI3V3VBaVFXSzRkZHJIaDdJcU5STnV5VUJSaEZtZkJkMDZkWDJ4Z3Q1ZVVRVm1NUVByU2ZQckNER01kS1RRTkRVdzZKai9jVVU4ZVc0TkljenNkQXc1VU9PN25Rc1hFNFZYT1VpMHN5V2Q3cUR4ZVhWTU9NbXAyYkdPS0RTZmZQMWVHOWFSMUp4YnllbzJudGcxZEpPcjB6SFdEaGlUK0owOUxQcjVrUkh1aW9rWUs3Mjk3c2tqWVkwUlJUaXdyQkhyZUl4TzdjamxLcDRzMEhzMUxycFpiL1VLOUowam0ydXdiVlZGSWloeHV6T21WbS9EbWY3SElHUWtMOW5XTzM3NXdmMzBaMUwzdFc5NGhyUjEySHBEekJlblJ6UnYxeGFOaWExSVNsM1BkVWZuWHhmamtzd0RISkZQUFVEdndxODJBck81SGxBT1pneGttdGhFU0dFMEhJYThpVko2OTU3K2Q3TGIreGxOb3dvM3ZQNDNjK3ZVTTFYUG5JSjZFWVB6YUNHbHJNcGRuUy95QkVOTmVmWWRaYytJOCtROTRTSUhEcXdCUEtaRiswMFlmSE5ra2ZEdmV4TlF6NXYrQjFXdlNjZW8vdkFZeERHL3BCWWpVam80VUVtNVlsYk16cXVlaFhjWmVFZ3B5TFFiOU1LdGh1RFVreW9uTDJqNnpXS25ITDVVVFhBS3JWOGhVdUVScFVyS2pQRk1vcDJqMW1ReGQwZjY2dEJoNW5uRFBPbUJXUzYrQ3hXbllIWDlOZzBVQTlyTUxZSE5SUDlKMDZ2cWNlN0hzdUhGYlMwQm95MzBBYUJjMGp2RHpjZld0cHRuN3FUWGFSNzNWRTdCWjZldVZwNG1sUmFya0lCeTZhTE0wMEVrWXY2N1Q3azVSRVEyZUlWU1RFaTdRNzZrdkt0ZzA2MkJMbnVPWVlXbzErRGdGY2Fjc2tPZXRydVd3Vll5MlVRZ2RjWE9aNDlWTHJyWWltR1JFUmFjdjVKTjg1bkNaZFc0SGxvZkUxMENidnIxQkEwbEhQa09BOFlPWGNMVGozOXJtOWR6dmRpRHdhUnNYbVI1Zk5TRk0zb1dLY2YxelRHcTZDY0wvZVNHdVNUS1l1SDArbWxMdVNQbXA3WXNTTWVYTnpHT0puU1ZjZHV0aWhDOHJqQU93aktreTJxa0J3TTVvN09IYXVYWFhKdHRIdStuSWJ6R2J0NGVTYzA3Vjdnbyt4bXF3OUNHNmtLbnkrMlByZzlQY09GSWNncHdaMUp3cEV2eHgwL2xZdlk0ZXRGMHZYMTJoZ0t2eHBDRUFybUlVVXVDQ21FZ09lNnRYbGdJYTYwWWljOFpUYzBMalpjRUYzWnE3c3JZMGswejNxbjh0Tk1GVnFiN3E2ZWVpYTlpM1E1OHVKWnBWU3VPZnZJWXpsSFFDYlNwSXNnYzNtRWsreTU0S3QxalpEaXp0L3ZUQUFkL0tia2p2WHNjVVV3Z1Bra0FVWGdOZjdJbjI3S2ZGNXpvN0tQUmxMWmpReWdYTnBFVEt5cEU4QTBKUTh0VmJtSE9FS2V0RHRXVnZZcGFDUXJsSFFGOG1FZmd6cDM5aVdXRVFneDVvZjdzcmx3dG04ekJubXM1UWlpU3FOYkFPL3ViRk9TSm5kNVZIQXFEbFo0TWhRekdPTVBiTjFSSkVSUk8wc1hnOUZJYVhBaFl1ajRobkNIcVBuWXh5T2pYYUVUVlVpM2JMcGRyOWsyZG1Kck9mNGVLM01aeXhSS3c2Y1lQZStoSllqQkVLTUhmMVFxWkxFZ3hmTUMzaEk2V2VrUWl0T1AwdWdpVUhjOVQvZXBDWW9abHdnWkFKZ3d4aDdOcWNIbWdib2tSaEh2NXZ0Z0NUQURNalRVZ2U5UXVIOVpyWmxva3M3dWtuaE9LQWFSNkVOMThjMmUyTXNueFZBeTZ5bVRZL1B1ZUV3Ky9RbXFiaW1mY1NOWXhIbkU5OXBRdTRiNVBTMzBOZ1lqUVhmeDRJbk5Ea3VIVXg1ME82ZS9DaXR2d2syRGJTWkNPZ1Rhcmo4aWg4cmVXZnFCbzNjME1ON1dSRjFqdGprTE05Ykprb2Z0OUZCYnpMbzJya3RaUHZUNVljM0dHRTByMnJMOWNJL2NldStwWmZuUkpoN001d3RHSWVvelIxSTgzREFDbkt2WnpPdkQ1UnFkdFJyUXNSMUZ4U0FZbmM1N1Vzd1Fvb2ttQ1c3SS9oUTE1OEFKTSs4TUxYeE15STRoR3EyWDc1WGUxREhmRURweE5Yc3B3QzIyVnZPRE9TWlpXRjZQNVVFS0NQb3FwaVB2Tkwyc0RmcGFtNTFMblZvRFpxK0VWU2diZnJyVWNIRVFJVjNKaHZJTzgwb1lOYm1HVkVkSUtGcmJ4ZStkY0lwRnMvWFRFMzY0T3dkVHcxSGlMbkNlVk92MmV4dit5emI0MUdZVThLYXFPM1hVQ2J2THBwalZJSGc1ZG0zbG5hWjFEczgxSTY1T3JvUVdRUHpBajFSUjQreDNwM05nWk5XbG9ubVRZSmlKOWJJUTVjeW12dGNobzJuVTRtM2hMMkZJMkc0U3J4bE5NdHVsdVQ2Zk5XM0EzYWRMTXp0VllVSWZaYk5CNStLODFUZGNUV0lDKzBFMGFSYUhwNHRCaTJyRjZYeXliMWNJck5HbmluYWN3VnQrWnZnZ1U5dEZrMWUzaXo0VUZabXlPeTZWTzBXenRWMlMxNHZKYjVHTjhyaDAydlY0N2FyRzNUcWNLWm03T0h3dldrcVB4UVY3WW5yNWNjazVoSkRNY1JlaHIwSzFseTRGUzhtZGpBWm5JNHUzU3dMRHJkc2xldDlLZWNKUzErcUlEc0oyaVEwZ21HSFhNbis2dERzQS9oTGhvS0UwOHFmUlBDemxCZUNDUGI3TGQ5Nzk2ZUkyVUt3MlE5dEExUmZpenVPNzl6SDgvbU5JSE9BMkxXOWlXMHlMWGhqMmRRNlVZeGpwN1R4N1pQQUlWSVdGR0VyVUlSN3ViS0lnaHdCa1dYcE1yb2REN1pwZ3ZWQnJ2ZUk0dWY2K3Mrb1B0bllMN3h4NkFGeGg2MmRuVUZPenI1SEJFSlQ3MllOWUVoRVhvcnlDN2NmUFMrbklDTUpHWWJpZ2pYOS80RVJ3R3ZHQlVRNDNlRWRrdW9QVjlMU2Fla2JsWEhTazNNaTJjU1pUZFc3c0dybTlPbytWeE9wQzFaZjJmTC9ERWgzUnRlYkYwdUc0YStBNGNYQmRFdTVCTEFyZXV1Z3Nna3BQakZKTlBCWTkrOTdZMld3dDR3SHNwczFTWjhaa0hZOUJzcUVyaXlyakkxam5IUGRkV2h4NitiRVNXRWFRZ1dWV1BzTTV5TlFrdGUxZTQrT1Z2eFExYTFpYkJhc1k3L0ZGc2FWZ3hXNGRWd3EzeTdrSDFkMGF1SXA2SE5JUUQ3cUFTSGpnZFFGeEVpSmxJMXVST1pkcDlEdHZzZFdWQ1RtRHh6U1FpQ09ZR3laMUpROWs5NWlaWHVwcDd2eXhwdTN2endROVNOeDlXcmpCbTd0ODlGRnM3dFVvZnVaVHdZaTcxOEZBNXQ1MGRjYXhjZXkzUjFyc0k4c0Y5S091VjdwQXM3c0hURnB4R3J1T20zREZYdS9NSVl5MVkrMGR5dnRWVWlwczdhWkZWVVdBbENoWlBoOExFYVMyRkR4N0dpeFhQeGd5WjlEMmhCR1V0NVk5L3FESmlzSUpqY0dvWTlrZ2ppekxoejdSTGtLaTdGS2dJdmR6bXJsMHNsMDFQeDdIRmtrdE5SVGJJNHczcE52QVowRTRGQ01IRWROWmxmR0h3amtsaCtCVWVqd0xBM2VKQ0N3TEJGNlJUY3lES2FHeGllUHBWSGxaaFJxQ2RYRUFQTjhOenhyOVFGZFRNaTlEY084UUc0QnZycnNjOEVqTzF2YnNkdytzT05BS3BzbzlPeGp0aHh5YUxiaDQ0aEpIRnRHMHRianZiUHhVMjE2eDJKbGVGU1d1YWtlMXV6MFNNWjR6TXZhcjVrNGxJdlVtb0UzQ1NodjFaakx6VTkvelRtNkxOSkRnZVBDVktBMHdBYUpKVllBVERodnhack03Y1k5YjkreXErdk9adUNNSVYwOVhqUFlvbmRpVjhpYi9VNVlDZ01oRWdPRGFodzVoMGJjWUhVVTJiTlFNcUlxd1JUa1JNaTBIcHM1azVwcGU1T0d4VDNTTTRaR215QWV0SFVjQWhQVzBUTU84YWlkb0o1TklkT292TTlyMTQrTU9LRFpvdU02eW04eVp5aTBYRm5aaWViY2U5WnRuMTRlOHpOdFc1M3BFTU5ZN1lZYnFwaC9XRnFkSUVYM0VveWRnNmNDMTc0NlZOQVpvUHNiNGxXRjJOaXcvcG42WlNxcHc5TkYxNmN3Ym1BMTJXUlhSK1VKT3RLdjcxaEYrNU5jQ0dCYUtEWTFUYmliTTNiM0ppcE5vSjViWktIUk1YTUNzT016UlJPUDRROVd4SnF2Z05IVjhYODhNdmt6QVNJaUNtekxlbGEwa3Z5RVVVWnFobElLMTYvNEdlRzd1Q2FxQ05PRm9EL2E2RUpBTHA3ZGI1TERqT0E0OGZJMTlGNXBuVGI5VGlRb3dMZzVlV0MzRVdadFZRN2VGYUVlWUVUbnE0ajgxMWhIZzVXSmErcjRlOXhaMEp6YWpJa3N1bEtmTllSRUJhaEJjc2FuZExkYUdkQi9FSjVhL3FSTXQxaFF2dVFFYmVQWHluQ1VqOUk4c21TbWpETEJYY2dXSUZJM1ZQUEJiNnVnUkJINGRVMmo3SWZYazVqT2hvQi9ETFlnQUt6Z0lSS21zNUFMcEt2S0NQRXc0NXpiRHRPOEdkaGlkZUZwdUZFaXp3WGVPdm9ZN0hRd1QvNGlzc0JOblFvbHdwM3BjYmxQbUlDTHFmVDdzUUNCK0F0a2RZUWVMZlpva2s4TEJZUlNhbHV1UE5jaFlKbENNbXlrMXZaOFVkWjBEa1BCckxKaFgxWFd5WHRhY0dSVjFkbElzdG1BNG9kWE5HWUlNS1RITDd0amhRQ0NRMmNYMDNTUUIzRDRET1hhZWJYTmpHQUhLa0o0SkJFSFRuZW5ZYkJiZjI4R015VnkrZ0VSeENuejRpUUVqQTBaVzZKR3N1NkVYelFJRG0ycWJxeTdvTkdLTHFtRG1MRTNZUzZhbnZUR3BnZGs3aG8zeDE3SkQ5cHFHdGc5R2dCN2hRMnZZQnVocmUrLzN0eWlLRk9ST3c5WTE3UkFFS1ljRGlYSFRRODVNcWNLdUtNNEtrOS9CS2VHeGJHV0RCWVZoNmZ3TFRXbTNIcHgvcERNS1NBL3NHd1hDK3BpYUlWUjBhaWM0cXFDNyszVTRoVkdFbWVBZzJ1MnRRY2x3ZkkrRFE5c3FxUlBQUTFBUWI5UEl0ZmZPaWtJM2RLK2lxQzBxaXUycVBibmV2VFp0bXFibVFiUG1iUEtkYVNJZEtvOVc5Q2x4VWVocnFzOThIQjRPc1JnL2gyYTVEcXNLSXpsQnJFcG5CcTNBYkJWTGF4VUZhWWlrSExCRC9ablBkeWtmOFdvMDRaRjE2VHdCeHVmRTBhQWVQeWg0ZnpBMk04cmtyUlpHOTZJb1hISVAwdEpSdW8wNWVvL09NU2tuQllJQ04zM0xpRUhPc1NpMlpxSktZekhQcnVzdUp0QTd5Rmt6b0hGUHdhVGpHRVc4bnV2U2RpQk9RV0FxRFE2WEJRd2Vsbm5VN09hSVhKa3FFRFZDZzA1Y3A4cmhBemhselhQWDFjako4WGJpSUtQaTdjeG42cHlBN0prSXpySlNvb1dtTTh1VnBuRkFYd3RXbXdoSnJBSEx2NWtCcjlWdGVLQXB2RmZUdVJsdUhCZEhrYWhDVWhCYVZvbGZsWGIxVXg0MEUwdlBhZGRWVlpiR0t6TU42SFZXdEtleHZNQWN5dlNrQWlneUs1eTE2aEtCelR4Q2xURDMzWU5ZZzJmd0swTjM1ZEdQQ1NqWFRVY3U3V0tuM0c4VVUvb0ZnL0ZRUFlHUndxMHdZaS9UTVBBbjBOZ3h6YzhCRllGcE1GL2pLZWYyUkNkVEYvQk9QdkJDQVFHZDZva3JpdUVtWG9BRm8xeWtETllTYU9GWllCak15Zk84UVBhcXQ4NlV0SzdyZkRuMmRjSG41eGpuWXJDK3lwNGY2eUVoME02WU1YQUd6TDJSdUY3eHc2TnZqQXV2SXBoTUMzTnpzMWgzSEtvdzVPMFlYQ1lEZ3ZmUmxwMU5jQWZFa0lkMUZzdE1ueDVxYmhFQmtkb1NvalJzS0ZnWUIwb2NPRzNmSFpjOWJZcVpnV05EMDRPQk9oNlB0MWc1NEZpVkR3NStSZDI5alFDU2tBa083bUNyTEZqNE5rbzRKa255VGsyOWdNa25DcHMxT00xNzMyRUxpS0o0bDdETzFiMlZyeEhBeWlHV2dlOEVDcVpaVElkTUFjNW16aEFVVFJ0NzdsaXR0c0I0VHFvSU90dmU4MFhxS1ovY3h6VVl3bHRkblpkbUtyeVhqRFRvY28xbEZ6MkthVGhsRUJrakV3Nm1WVkNDWlRNYWoyN3ljb1V1UEVpWlRuMDB4N0JLejQzcGR1c1B3Mm0rM3pHajcvdUMyTzhuNkJUdGk2MjFTcjQramUwTmNCMXltbEZEemVydFNLbmluYVF2MTNRTUxic2dLcmppamhrMFRnQThqTEFWbmhuS0JydENBcFNrVjhqRjlSNm54d2ZyUTk4UVNvM20yOEc5KzlBeGZHeDVNU2tzMkt6T0hxM3g2ZWx4REVQSnRvM00rcHFUOVg0M2JRQjl1b2tPQ1NsNTU0SDlJVUN1aEdjN2FROFhvYXAxWWxBK2x0UnRoeFo1NDVKNWZzZ2RRbUx5SHlBZFF5NWNYWlpuWVFLc2xuQ1hxT2JTN1l3Vk1Hbk1yQW8zZmM5dUdFdWRGMzd0dk9qb3h2bnRGRjdsYUg0c3FnUHJwdGE1ZENvc0M1NnZaVGxHU3R2UzN1WXJWTW8wVGV4UzF5Z3dtQTdZRDh6UjluNVo5S3RqRUUrOEVvUGZ5RjVNQm8zeUwrQ0JCU25MMC9oZ2ExeXZxOHFRdjZ4Ym5UZE9HMjR5ZzU2blNZdHBRTkhlcUtidzdqaURKb0RXakRwZmJhbnBraVZxQ0ZHdVNmWjk3anIybU5DdDdzOG5GbGdKQkMxVTFJV09jK280VG1uWmV4ZXZIR0ozeDFVSVM0WXB6UjhWSFR2cWZnRkdwMVpyWjhKMDU2cGhKRFJ1azQ2MUxoNFo2Uk1CWHJDeUlkRWJCR3h5T3RKN21JQWNYQ05CS3NnMU51MGFqZTNITEo2YytJSFFMMFZCeDdFNlhOamhNYWZwSGtwY05LbEhJRkZrME04RWdPeUFkMjh1S0daTTA5MDZZbkY5RmRFSzYrVmJjQ053UEdtZnBCK044WXlUQmhRWTBqVnJHVnJJV1RDTVlIRER0R0ptTnVjQ2lxSkYrdXBGQkR3ak4xcmhMQ1VCeUtBZ3lKVnltVTI1ODN5Q1ZNVUxyelE1OTNWRUgzRHk0dEVnU05FWE1KbU81d1VsVVRqZHZFSEZKWk0wT1d6R1hvVFNvaVhnbjZubjlWZm9nR2tVaVF0KzVheTVVOWZpM3ZPOENPemZuVWhNNmNoSFZESk5yQXZlV2NTVW1lczJ2UXpIRkgrcnJ2TUFJcW5ObFdScFNoMjVmTVU4dklYci9WQ2dhUndFbExQSFltaURjdHNGYUhkTzAxdFpjM3YxWUJ3bE1HZ1FhQUdGR2hpQlllUk1HSmZMWmhNS3NhUTBPcThib0Q2dHRuOXE1RlA2Q1VOc1JpMDlrc2Nsb3A3ZlVRS3dHSTdIQU5SdldBWGRmdEpOditOeXI4UVhtT29pRmJ4dGpibE0weVNjOXpYaHhmSFV6RGk4clBuNGlCc2g2aWhSUUdoZ3Y1WHNvNDVQOXFha3BLNVRqSnVQcG9ZaUxUVk51QnZJRGw1eXh6czA4MzQ4Z3RZVE9YVnU4bXUzU3NSNU1pRUkwL0ZXdkpmcUZpWmZoWjJ5WU5oMjdWclZqbzJjenVycHRIYTVmZ1F4SHJQZ3hJbGJzVms2cDFoVDFPeWtuaFRnUTl3Z0FaTXhTQnlnYjFaMFBaN1pSR3VOZkN0QmFadUZuNWg3VlRoblFkV3lrWElOVjRySEozMHFxL2FNcUJON1ZCV2x1TG1iQUs5REQxNzVLWmdVUmRrR2h1TTRPVGZhL2NUdHAxaFZoTHQxT2ozQmtjVy9KdGtWVlVBNmlReDJpSmgrV3RCS01WTkVZQkQ3ZXMreWhudnFDRUxjWW1NbnpXNVR5ZG5lc01HU050TGluZW9RaEJkRjdIaVduT3U0Myt5M0FiWThDQ1pxUlh0blJoM25Ib1FYdTFyUEhCamx3aFh5ZTRic2NHRDB0MFpoeDVCZThKUmNGdStvRFpmVnYxN1pHcG8wbnowODcwRVVLOEloUEd3VElNTldvbVBid1drWXFNV29zcmdjZWlxNTlYRVViSDMycFY2ZWsrTjZYRklOeHNOQVRORnpqRm0rajV0d2xkeUl2UEtJUjhnRndncGFLVGY0SytQQW1RM1RiVktIeGdBdlpCS1duT2ptTXNWbDUrOWx5SXBYN05EMWZkTjVFSlg3V0hDb0xQd2tUbFBOY0NqcEhvOGJidXdPUjhhN0VZOWc3M29OYmFzaUZFWHBXcHpvcWpvREJpS2o0NnoyRzE4SG5qeUtyNjZzTi95eVYrVExoNXhhTzJJM1MwMWVWeTdQNlJPMG9mWWw4Zk8yWTRLVHpuV08vR2U1bk9XT0NkQjVpd05vSmdnQzA3TDI1a3prL05RWWhjbnhBZlpIanFoOGxVNWRpa3FacGExaTJ1bm1TUWN2b2ZqTGZOZ3F3TTR3aXRMVmFYK1pFTTRBSVFsVkh4b0ZCRUVzaTdWckhIZHR1enBLcHRySEkwbTZWSUxkNnpSVmMzcG5zcGliNy9sL0pCKzE3NmNweFV0MHF2b2pqdmRBS2VFZzRjeGVwYmw4YktwdzdGY1NkaWRPZ21iSXlLUnJrN2V5Wm1tUUcxYzN5N0VQaEs1cXR0ZGdqMkRpaG5JNVJKZG9ZZWlIbVBNOGdoN1ZpVnp5TmI3dnhBVjJ1NjNQMVlJZ1ZWWGpIVUdTc0h5eGRrRUswQlYzNW04MDd0K1ZmQXlRRzdCMnBIZmhqdTBpWDZjbExTdC90MDFobVJIUHFiMllkK2F4b1JoRnorZzAzTXdBSUJqbmNnRXptTmd3emVyNVI4ZXlCdmg4cG1IZ0JGTlJ2bDB6QjVJTlBnajYvNCsyOTFoeVhkbVdCTC9temFIRmtDQVVvU1VoWnBDRTF2cnJDNEhjOTNWWG1aVlp0M1hYbnB4am1Va1FpRml4M0gwcGJQbVNVU1NLYmlhWVh2UWh1VTdzalE1SlNkTDV2SEgxRkRjTmVDbWkwS2ViK1hiR2RRSzZUTTA5bjhNaWtrelh5Ym0wenhDTUtIcGVsSzNmWnU4RE55THNIUklRNUJaSG4rOWZ4dWttNmZTQlFUdWlwYTkzOU0rUll3ZUYzREw1bUhCUzJmZVZYcTlxMjN3RGQwOC9nakpxMkJ4YUpGbUtZSEw2dzBSR0hNZmdZdTN0WTNKK1FjR0JvSS9yYXJqMFZFaDB5eWlVZ3pDc1R4bjJ5dTZmYXh4RnpiOXE3QmRNUkc4QVN1RHpQUEdPSGw4VmRJNHhtQUZFN2s4RU92NW9mYVBxUCtpbllUVk1PZ3hUek5DdDdTZzE3NjJvMFlRRFg0d2NuVWg4cnJ2dU1pOUk4S2xmcW1iWG1uRStqZ2FUVXBXUHhzUExOTUZoL0xpMFdNSy85bDRSdm0zU1BqYUkrUE84N3h6NDlnN1FEUkQ4d3ZyTUNVZ3lmd1pDUU1QdHJrSHM3VHpwcldrQXdHYTVhdVJXcDhVWGlZOHVCZC8vMEM2ckNaNVNIZ243cUhJOVFDLzc5ak52QlVYelFyWCsxdnREdVpSaHhBNWpKSGFYUWhEZWZFbGZTOU1Fb203UmZoN0VORmVraVFLVENKVy9GaW1tV0tOYkJTWDkwR0IxM2MzZUdNWHhNclRYaFNMeDB6OUU2RUwvSFlibTIvT1dhWEEzaFNKajhoWUp5aUpuNVpOaU5HNjhXU05INzFCRmxoTms3T0hRRWdjeXZnbjJUdXZqb3lxa0pHdnRDK2NscFFYOHRQYjlLQXpEOWVZdzUxZ0NjeHRIZ3M0SWd5VTJjaktNYnRCdkliSC9xUDdtN2tVNVpIeEhuUWppYXRpeTNCbyszK3hLcE9vTHc0N1d4S05BQXdJWmxFTkFtL2JnQmtWeXRIVDdGSlFDa2lON2tReFN4a2RLQmZOM1FWSGZpNm1IL1JqMFlLeCtSVmZYUlVTS3Nkei9aT0g2OGxSMSszbUYvZjFtNUo5Q1A3bzFKbEVaQ09DYnRWUExWRkVoc1JXK2NTdVMvdzk5QVM5RGZtTzJXekp2RzkzMTZuK3VUQytBNVV1Zjc5Y01wclQ4THM0WWFCOUkrb1FYdEkrdHc2ZDFjdG40RDAvbzkrZGMxaXBjc3pSRmlMWkZNRUxPN0NNSmg3YzhDL2Y5b21FbkdvaitWU1FmOFFWL3FSQVVqbVcwTElia2toYUI0ZC9oZWdOLzlNM2RLS3lqNUp0R3VzRDdLb0hFejNjcWZUTGwxc2hLd1d3di96NGp2cGRHRTAzRUt3b3JkbHZhYnA0TTh5Z3g0dEsyeGY5VnZaMmNIM2xENUZnOEwyMTYvN3VpRkFobDJmK3ZWOXhiVGJJa1VEaDZoUDlONy9STTIzUit1NnByY3FSc21NSmwyTEdmYWErNGVCTTZ6UE8ySlEwSEhwMlF6MHk3a0VOMWJLZUdvZGdXV2JZSmpmbUwzNjFibnYvZFFjRC8vOXhCd0NpM1pOa1Q0eXhUMVE3RGdXZ2FaNHoxcFNDcVVlSUt4MFJiNjRVbUJYR2ZyRDRHT2xYWGpSaUxtOTIvR2JNVHpud0QxMUFXaHBuelNyL1lpQmY0ckNqVCtXdDk1WlJ6andvNWU2bFQwUXUzUEUzeFRNVHBGb3BEMCtyclVEaFZ5elZLRGRMMExNc0lYQURCUXdaeVNWYlhDM3BjRnZydmxJTUFSUXBOUEtBWGpNRnhFRFdqR2pWMFRnTVZqZGpkbkIxRjJ4ZzE4ckNubDY0RHNSUFpYR1VMQ2o5QlpFaEZsaTVOMDVRcGVSdmFsWUR6U2w4ZFFFc3hXN2ViVkpHa1NTRlAxWUw4eFFmTklMM0IwQnpSV1NtQ0lBNW40MWdDZEJnUC9ka1RZV1VmT0dRU2J2VjVBU2dBNEpVYjhnblltVmttNGp4NVRkdjBaQnNyaGpZdXlmVEJmVTI2WXJ4Z0x5aHVWUVB1REUwTGFHaG5pUVVtUloyaDAyRVpjaDBSYitjVTVaMkdmU0VVZUZVYUhDQjgvbEk0ZlpFbzRoWjFobGM1ZHI1aTdZR29FL2FpcW5KU1hVd3FNOWVQU2tTV1c4cUFVZ3dEUDUxYkFWUFd6T0VPUytJaE00Z0hKNEdMOW1FVG9USStsQWlLS0xKRisrRHVnSXM0dmFpRTN3MlAwMk9YaWMvZ3Vza0F2bjlkdDVpNE5WVTcwY3E5VFdBbDhKYThJVGllU095SW9TajlPQ0NLY1NMSHdTZ25WbG9vYm5SVUFIMjVTd1ZWYVBjZFBsQWlid29BL3NHbTBNNzRPeDA0TFlFMFlGcktocDZGUFlqMFR2ZitBaldSKzA2Mm5hQUVETC93SENGdW9VZ1owODNuUUpoK2Z1UjVxeEFOZkp5SnJjZis3YTB3REVLalBFNVRtaGEwU1JyNFo0SVFOZytzNEtOMTREdEFIK0QvU2t0NklCRXppVzFOTThrVUdGUkpTWHBHdFBnNUlYV2ZvcjBLTWdZTlg3ekJwOHlFSXlNbzlFLzk4a3NwdDhMOFdwUng3NGxlMDFRamdCRm9TS05zYUZxUUVPVFhIdjBxMWdxN0Rob0o4WUJqMkNhK2h6S25GRXduTnYyR1N3UVl1cytrMlV0RUN4Q1U0djJrcjNWa2NweWpTTkF2akJXaUM5Vm5jSnh6NW5uZWszRXE3ZnNydEFick1SVFM2T2JXRWRBY2I0WFdBcExCMEJHRnRzaDVsdm4wU3FOOW9iM01jWkRMdmluUVZNUGZwaWphc3NMbWRhMllSdkF3QkVXUEMvN1NOTzI0MzN4bGFSRXB3T1FmZGRldjd6Qk43UmZaeXFKQjdUU2tpQnNWdGpMSTFuSDRpdi90MmZMSUJ5ekFpZHBuUEJUaHRWM25oZnpiN3c2MTlTM0xTa0ZGcEhuWldPaURIbVplUnNjTHZ4SDh3Y3ZNVUxydnN0VUIxdFkvT3NORkcyek1sbTl2Y2RHV0Q5dytmVFlpSW5CZ2EwQWIxZTFxeDhSaEZxRXdYaG9OYUpCby9NYWJjanQ5OGtudExqbys5U25YMzErampYMWhPWDFObVorRWJOU2h0c0xlL2NSZitWOGZqSXkvT0FLVmVWZHFsMitXNitKZVVtUksxaFQ4N2d1S1lxRS9mQVdBY1AwbnhwMERqaXpDeHJpanFsYTlCSWhOdmthZTBzaW14WEhXN0QrNkNVdG56bVQ1TlJ1V2NvNjJMSERlTWU5OWlKdjM3YlhlK1NrUThCNXY0TTVvaXlhU2ZLUndiSHRWSXgrK1RrTC91QzRoR3R4YjFIRkhEamt2NHQ4Q2JMZUZiZDFXWUs4bW95OW40VXJoc2tuYmRuWitCazVMUXNzZXJYeDhNZjd4azdYd3ZGNDV4NnU0VnZkc0xWNXZQajBJTFAvaTVuMGFuenJBMC96ekVqUGNsQWYxRzMxbERuNlA5eGU0eDFtMjFrT285Z0tXdzRrcnhHajF2bDlhbVo3R2NYWDFPbFJTMTZxOHY2RW1yd0xmYmc0RmF6ZXJJTkY5OW9iTnFPeVNRbEU4emtYeXZGZFRqaWc5cEM2NEZnWWFvQ0U0RjdrdXBjME9CdEh3ZzVHay9NdGpyV1JXZjJ5cUZPem9IdDdBMVpZN3JwelUrSndzcDV6WXNrSktnN09TVnViUnp6d1hSWmJFZmVXcGVJZmZVQ210S09oS3laY2FwQld2Z1VWZnZ6cGRmaWJCVzJFbkkrcU93L0JoRzFoYzd6bXA2RnR2R2lhRXFqOWt4VzRLQnRYejVnZUhlVzZXMlBrYzBCUG9UY0xKUE0rYlRmM1VtVXEwQ0VyNjRkTkZwTkxzeHdiaEtWQ2ZlMWpGRG54ZVpuWUczUUpqNFpVVkVZU2FrRi81R1FEWFlXaXNBZEpQREVXWTd1TFFsc3BUdjZhQmlSSjRMajhLUk0yakhIbXM4MjJKRS9nK3pVKzNQd2d3ZjdSY0tQL3NUakFpMGt4TjVWSGM3VGhwcExMOStsSm9qMlhkTkRFY2dEaDl5NXdrZ3B4YlowSldENzZ6Q0JRUU9DcGppMXBZSFFwODh6S0dVREprUXYvaTV6ZFNVVnhTdGladEJLSHpxT1A5bVBsVmliaUx0cjdwS25pbUwzbFNkMGhwT3JWR1JWSTB3RW5qUWVTN2VqdFBJVnRXaUMyUk45cUJaZm5rNFlRYnFhOGZoUW9mR0VnRjQyVWEzUVFSZXFFa1ZJNDRSQ0NjcENHNW9yRVk0RWswYllDZDRwbHNzRXhVWUNiU2RtNU9FR0FVWEo2N0RaeE0wVlMzRVpBeGs0RUw3bGRsUWJjWW5iUVFKM0dZTWoyd0ZaOGNaSW5lNlAyMWs1RlNodDFtSUM3YjBlUUo1T1NYYlRCdU00NlQ3anMxTXdRbXdsUGpOZFlMcmpYSFFWRWppV3kya0x1U3VtZWVqU1BubnhLMmF3ZjZhTy9pTXZTa0VvOGJtVHlTZnZLNXRBek9uTlNGTnY5NUJidVI5VzZrQjFZQ3Excm8xMXlPSndtRkFtdlhIM3lDUDJFQWpQMVI1aDNQNDFNWTRuU0t4dzhjQXNaL09iRWdacFAvSEQzYUFxaFM0RUxIUzk4UDU4WXJTQ1h6bUJWN01LVitGTzFKY0pTd0pxdjJCaVpYODlMVExKS0JUK3ZyWjJpRE1PNXZwVjFVellrNm1jWXZyMlQwVkEwR3BoMWNobk94Mm1Ea0NGblpyeElqV1RydXFoQmpEUG5tcHg4Y2d2dGhhYWlacnF5T0w0UXRmemdHV0h2N0pRYjcvbXRvR0h6ZEV0MTJESDVNRWJZK0VoU1RwckVtdHZsUUZ5MkhTMzRJSDhkYUUzMTFodkRiVjhYV2VyY1lSODFGNkZpTG5zL1ZhUUQwRDdHZGxHV0NUaXduZ2JrUmUrbnBXU3oxOFIzYzNuSGw4WGJWamlqZmpsQWt4TGZvRHUxc1MybzU4SUgwOUNhNmhQUy8rc3JQNzdLZWxrWVRNTUJ3cXJtdFQ2aGlzRnMxNFJDNnNaYSsyUmlEbXNoaDdFUjhoNzlmbjk5NXpBQURIUG1PUEFFT3E1eVJMNjk1NmNySUs5ZnY2MG9QUisxZXNIYWJVT3doTlNwUitpa1ZHd08ySnM5cnVzSXhhanJMeitDK0IyS2dMWUNGaG16QXVJdUJPUFdRWCtCWXovTjYzVkpOZUlJVEtVSFN5ZERraGJUNWEwcFM1QUlua1dlUkp3bXRldkduaG9GV28yUlAyazhnbTF1MUYxNkpVcjJWYlRDS2l5Z1BnZldOTXJXMDloMkQ4NEViSG9nTmgxNlZtNWxmd1hCNjRkaFJBM05leXFxS3pzc2RVR1VRRFZIRjk5WUJvRUJQOVZYQnN2MldWUmZ5YjNicU9MY1dZZTNLaFEyNC82cVp6ZEFVeFltVmV1bHJiYXNJaURmZWo1YmhFcklaMUp5b2VrZnpGOUlRUDJsTmNscSs4ZCtlems4R0JlcjJaUEg2WDN2Tm1qRWVKNGljSGRRdDdrcUR2ZEI1b0xtOFdqOU8zR1JlZGkxenZrME9nb1RoM3RxVlZFR0dJemI4YjhNRmRmcHdlWEJHaDJtdWJtK0pvdGdDK2Q4TVNPdTU1ZmZFWHFLTFloYThIN21UeUsxOGU1VU5OZGRsQWdhLzR1aDJwTTJVcVNoWXdrYTd6ZDJBU2RLcmV6Q05oaytwM3NXcklrTDZNUER4ekNyUkdIZHBSUFNnWGZJci85YjRjS2Y4c2tyRlR0OE9OdnFLTE9ocklhemFkZ05nekRUaDBvUXhHYW82YmpoQVNZSERjQS9kNnN1blRaQmlVU01mV1FYZGlDS0MwbnMwS0FObHJteVJNQ21vQUdiUVNPdlBpbUo4VWlheUJEdVZmOEdOamxTb285R3NJWDVINEEwMkJvUzF1ZytRRkhvVzUrWHRRNGdCdjd5cTBvdUdoZEJMNlN6OUFLZlZDSTFRNHdWeklKdlZ6TE1YSzE0djBwUi9USGNVM3c0aTJscWgraTZWZ3h2MzY5ZGFCbWN6Z0lpdGl3TEFrdlg0VmFMaktZcmdXbmtteFZ4VmdZM3p2c0xibHV5WVdNWXNwMnVjU3V3aHhwbmRjRFpSMFA5ZUxuQUR2RzJEaHlvemwzTVZnSWhWVmxjbGNJWTVEQnpYV2R6N1B3eGNIaHRhbUkxekpSZEE1U2ljVmxqK0pTRXFvUHI1R3NKaW9KN0oyaU40MjJRWlRXTFU2cytBanpFNlVaOCtac2VuL2dNYzBxRGVTZWh4emJIMTUwZENkOWRiWTR1QjhkdVJuaWRNZEUrbHkwTGpCQkN0UVpqSzc4NnRzVFZ3NXhFSGRSblBrTmMvZVVFeEdJRExDUS9iM24rVkZmQThJYmlmUGYvQjV6dVlaeXRIZmFFaGVzSGpQMjI4aW4wWlYzYjcvN1FQbHZld29HcWIrSm41bHozZS83RGJFYkVmbmhDeGg5ekNjNmEvTkd3bWxtKzRpam95TE00QjhzQ2xCN21FOTFiZHNlYVlwYkRsTGpGaHpza3JRY1B2VXcwZU1VeHlVWWdxc01qMFlMQUFHRXk2SDQ1bVEyS3NkcEZlYjNKWDhYUURKSW1FS1hwekdtRUlrbmI4REUzTlpZUW01blB5bkZzLzV5WUJicW5yL0lpWTJwUlFDU3duZG1BZC9MTGwrQWVOT1JUVUpzRXdUdnE1aW1LWnFMWFpWU1BTQVVGMVI3Z0thNEJnVmpna0g5MXQyOXhQMXJwcHFCTFBTWjk1VWY3bVZCRHMwRjlaSG9xTTRSY0tRbTlmOVUzUVAxb01UTWtuZGRGaE5wYldHSktjT2ovV3VQSFNEYUdLcVZJeVBkVnNHUmtGUFBxSnJyZ0NCRXMvQmxuYTlrbW1TUys1eW5MZ0VhbDUzalJnaHpJbzlHZUFUVyt5UDdka1dSNERPSjY1emJSQmJoaFVGZC9lanlJVkZHMWdQWU43dlFNb3ovNStZRVg3bG1wcC9NT0ZNTEM1ZGMweUw0SkxteHcwd3hnRm9KZ0VCZ1ZxV1BzbFNmWmg5RTgrNnBPczI4NWVOY254VWwzRTBmVjFtMm41MDJxdkpNdGt0amJnT2RlTW5UYzJFZ3NvNUlGYWRBb2JHazlVSlk2SGl5M3pEMGxZdytCeGdIZW93Y2hRZlJPY1kxQmw1ZU9HLzU1L0l3cjFNRDB3OEpWQjFPVU50QkpBVjRhNnJ1dWNQcnNYYUgyYzAxaVJpNE80ak5pWE1sbm9NZi9qNTF0bHl3endyU0pyNHBzZGlrK1BwUDcxNWNLaXZxZlN5Sk9PNVBqTmQvOVA5SHAvK2JiVHFKNTEwODZxeE9qZlovSGVsWSt5dE16MjVEN1I5K3lyeUhWK1ZJWVprU2NIdVR2dzlOc1piNG1mcGVsbFJpMUo4SHFRUVQvQWZZMDhTN0pVN3JXMHFvOGlmV0dRTmM3Q0VDTzFIeWlhNzhkNEowOG15TzkzenMvODdaY1ZFVGtVa2gyajhCK0pwckM1aGtMSENTSkc3NjRabzA3cVdyR2d4YWVrM2ZFRkphc0QxZm9zYmx0Z3BMcGd5UWdXQkRFeGRSVDZsQ0szaUQrRXlyOXVGVUQ0aGhnRVhLRHJoMVNYcFdtaW5KSkIxOHJPVTN3SFhCOUJnTWkzQWVUTndtU2YyZFB4NGExTFcwL3RCdmU3eXJhT2hYdzVvUDFqTmIwRmJLUjJuV29sb2Z3WjZ1OVJlVzlnS0NxK3F2cHMza1VvVDd5S2ZYTThWT0hqOWNYQ1J0dzZyNmVQcmcrT2ZvQXVFT0dxaEtXSDhpWk1DQWh1S2RVd0NCbi9sNXdtNVFTa29WMWQzaDBPS2dtZ2IxQzBHNmJIUEVla0VUOVhCQlZJZ3IwcWFhSlFSMVNzbTRwQi9xeGNuUzhRWGpJbmszS2wyQUtsMGpzUXJ4K0JCVDkwNkJMRG5oU3JtdU5aSVJXQiszUTRDS2Z4KzlNMDgyOHRCazFOYTFjdnBpZzhhUjJsb0tyZGN1VjNFemZvSjNKWnJEc3dSWWp6VDhGcFJZRkFyUmY0cERUOGZnM0E4bWtxRjFFVFJmcDVZUUsyTDQ1MXE2aDRrTnVyb0RaVmxZZy9WbFYzM084M3I2NjBzOFNQSWtaU2t1Q0U3VkJFMTNXWHZBSVJ1aWtZdUhoT1RyWktRWHRONDNHVDFvVHlkcVlCNVZkdGxBWUowVDR5bFBuRE82NmN0dngvZXo3S1hwNzZVRXpuaTV0WWhLb0s5OUoyVnJwOU82QmxUQWpOa0JXT1gzRkhlNkJ1MGh4aHZ4OTVtcWhodTNMNWkzdUw1YnlJc0NhOWovV3RxVzFqMytXT3RJVi9ZRnZ1eGtnSWE4TEp1T1hVZGQyWWh5bEoweVhSaUJlQU94NEpsektaeThSTXg4WWFUWnU4L0xMQzU1OVFEeTRtRmFWUm1YMU5CQ2lxL0lDUzRqZ0QzSFMyKzRPWDRwVGtCell2UTN6MzN2Rm9IWEFoZ0k0ZytxUVZ1MGphdjBxY3hrZ1JjZGcrWHRVeSsza1FIU2dOa1Q4UU1hWUprWThIODR6QXphTjBVdkUyQTJCbE1LbFFwYlRhNWlCZzkwS2J5azFhUlg3VDVrcmxBN0RKb1Fzb1pURTg0clZzUVNmZXdyQnRmeDBld3FzQUxsYXJCR29QeHBRSjRkRmpMVFl3enZJcGVSSTFqS2Z5TGVwQlVMVEhva2djRXh4UUNlZ3BNenIvQ01Cdm0wU0Jqa01jTHkvdzZtTitVMUJhQXErVjRWT0VPSStqbUt5d0IwSXVCb1ZuS0FhMmlXUWJHU3BmNUUyYVA2UnpTcFB4a0U1TUtZNmdNbS8vVFZwekVzTXhHZU5obzNnMG5VOUgzZ21iK0tsNElBaitrNWxaMHdYNDh6K0kvVmEwNnFDV2JteDEvYVpjSTNSSG5YeFBBUVcrTWM1ZXJ5ZWNjSUo1Q0lLSWM0Tzlmdkw4NWdUWHZGK1hiWGE2Zkd5KzVHN3pGclltbDh1aktybGNvOUlPQmNYWDBSeG8rMS8vaWQ1NXZveEZDemdUaWRiTFB2QkVFcjQ2aXFMMGZTWGtmcG11ZEcxRVNZd3JJajZVb1g0TThFaU9TL2gySzVMN3FwMU9aSkUrdys4Q204QWNONTZCYSs0Wmp2anBZeXZEeTRLU3ZpSndMR0JaNEtkZzV1YUtHNDQyV3FZcEFEZ2JXVitBalF6SVBKejFxUDJHdk53b2hSeEV4S1E2OVAyMlU2aXlIZjJYVXJTcmJwZEZtT3NuNFhSNElJck5tT0hHSHQwZGgxSFVlNnFHMGZiZS9SS0NLSXlNSFBnbFZ2dXJSekNEZFNHVHhESk1JaUl4R0M3bFFLd3hZdk1tb29SVzV2dnRTTUkwcFR5dFhDWUNrbTU1M2pTVjNQbGJKeHI2MStIUUZ5MWIrNUlDajlWR1hoVEVlMm1sUlZhR3Avc3V2VGtQTkhWeU5JZm4ydnNBd2UzNk5xZks1VmlTTDI3NDhMMUF0YTFCS0FxWUQyNzFwZXZmaFo0VTMvT0toMDV3MUNuMkRKdUFhSThnTTVxUU1VeUZXSXFIVkRRMFY1NzJXRC80VTJGUGxDUlVOdW5BbHF3bGl1Uk15SDZ6WkdaWnA4RWRobnhiVitESjF4aytBbmkrbWZ2akZ3K0V1a3JvbW1pOWZmZ01ZL083ZFc3VER6QiswK0JJOWoxTG50bjVDS3Bncm9mekNEUVQ4RGpjRkE5YStjeXFBcVBPU0VYN2k0eGdOZEpSRU55aHZrRzNCZ0djS3AyREYrSHhjNFpzbWpTWTZqT01YY3k0S0duMms2VWR2UE1pRnRzK0dMbndPa1VTSWVHY0ZkZ3VCZ2RMK2t3SmttTFV3YkNZbmgvTzNic29qcFlES2Q3ay94SlgzOG5KM3NaOUZGRlJMbEsvZE8rZisxYmYxQks4cTVOeGpPdEEyVTAyQ0ZMVjE2WUFYZHRzV3dvdTNYcHkyb0JIam5oQjQxeHd5dDVHN2JHQUxPQ1dreGY1RjZxRURDSGZNNTc0L1hDRFpEVTE2Vk1RVE9FQXBFT1M5cDZLNjk4VDAxSVBjTE8yVWErZFFTbnJlWW5TMjEwMktVZmxMc0tGWXNld0orb0U1b1l6bnJTcTFnZmV4Q3ZKdE5BSEhodWlvRENNdnNMdVA5MENRSjY4QjNmOHVmdG5CTVhJak4wSGtSdkw1Y2RteG1hVUpsZnNKZ3p6V2Vtd1VsSHFwTmNuZTEvaVR6bUE5eklqbm1rV0RyTzEvSDByeVJEd2JraktYSkpwN1VpUmk4SUNKTGNBUi9KNHA4djRDb1pQakFGNHpHTUNpY25DMmdvWWd0T3ZYN1NlbjN3WDdyaDA4d01ZY3lTOFZITkEwdDdTTGMyOXFtTmdEQlpLa29SRENJSktRZ3kxWlh1TS9XSyt0bFZnNHp4bGRTMG02VUtsZzAwYlNVZWxUUlBPSlJmUWVvQ21oT2Y1aFFXY01QWGhmbUlDL2NBQzdOQUZRU2hxVlJtRlkwMG9idGVaS0l4eDlmMmtLT1BJc2t6QmFVejZxNVVWcFl1VWJwNVppVFhZREtZcUlMQ2htYk05TlhiRzdUUmVGRWFwNy8yQ2dUWVF4aWpQcDJIZlgyTE9KcHV5NEZUYkNWV1pmR0FLZko1OGtRZlVJM0NlQzYzRi90NnNJemFxL2dMWDhxb0ZacnFRS0lyeGg4amZGcFhvRkIzUnAzSFpnTS9OcnZ3V1FRNHZmRm1qL2FxZ2VBVGkvS2tvQmhBQnY2bmdxbENVTk41YWpCN09OWDRrbTRUUjAyZUJ3cEtIWnpvYnIvMWppamZMaWRIR3FTVmgrN3dOQnNzQjIySVF3a1RUMkwxMkF6VU9wbTFSQ0VFQ1FDZHJnUGJnZXdhUzNJeDhtNFhNVnZPcUlzZlJlQzh4Q2p0R1gxSFI4TGFnaVYwTFlGV1BId0JaNmNodmZSbU53ZjlPdHp6NG9kTmthQXpxVDFSQzNoZWE0aXhiNWgyK0VRMmF6dk1IcitaaWJjUVptRFJOSDJ5dTV0aEVzdFI3QlFYYmpFM090S1pwZ0QzeVZldmtuNkhRenlyL3paanQ0TnE2UDZTUlV4QVhCQmprOTRrZzR2YWV5UTlZSy93dkM4SkwzbzY4WmFYZzVtMDdIZEIrUlByMHJ6TkhjR3JwWnlJK0drUzZyZ1h6R1dFeCsvMDJxK2pqS0RaZXJPR0x1Z2lxUUJEU2g0dUYvb3FGbXpmY3psRkFHbmtkQm9PeGxBenZPYjZlMXhURWVPZVJIMVM3WnRFSS9KYmw3TDcyQWNmaHVuMGJMVTV4a24vV25iQ2l1SURxV3B5VFBJTlBrL2dxVDJ0aFNRdzVXOUJwb0xEQU0yQ3VVbUZRdjlXR2tVaFUrN0pDZFF6ektTd3l1MVlTQ2dOUHlGZmFFK2pkY21GeUhPd3JTVGpPNWYyeUZZN3YrNlgyQTNMY2pXUHlkNXpTYUg2VVdTemdwbXUvd0RzS2FOZS9wVFJMMmhhajVJL3lRdzd1QXk3SGt1S1kxZENPUkhtNUgvd2daQjl0dGtaZzAwT2tocUdRdmtEUWhpK3NBOHR3TlZxNm96VlpsM3gvbTJVZFFpclREZDkxS1lsaERpanBPcUNIMXBnbGNmSVdodFdFQlFvc2lJSXpCaUVMNi9rWUZzTjlSNVU0MDRsSE4zNStPVTRpSXVtclBEOGhGd1FRRE8vNzZidlZOUnNuUThpZ25uTmNUSUJEL0o3Mm5vb1pycXE1RG14OHdUMGQ5UGc1cUlBL3VBRHQ5YzlYQnl5Z0RvVWJHTy9URWlZM1ZGbzcwRFlpQ0FqdzRYWTBhenRpK0JPa0lwUWJjNk5VajhDdmtpTXc4OXlneEFBTUFocUE0bDJYQlNFeE1EY1dIS3RCVmdhY1VhVmJiZUZmcGFMS2VYNGp4YzNLSm5KeVduamF4U1V6MWhYa2RyR3ZldTJMS1BwZnFHYTlOQWpxQmlXMlJXajZYaE9Oc3dpMXYySmRaaHBFYUg2QnFmNjJhekhmVzV2czcyRGVzc3NHN1ZFOFRXOUp5eDE0VllMYVZORmhqUzk4Q3dVVys5NnVZZTR1bG96Sk41cU9iT2JuWEM5MHVHMUM4WGt6OTdIYXEzK3kwVVBNSlFxWm9WS0Z6R0k3MFJzcFlxQlZ5dHlOMDA2Z2tIMWVxS0MyUGk3NlZZVlFpVFA0eHBrVWdwYnhMSEJlbzVuSW9ETDRTUXg0ZEMwaHlPMkp3VHBuRS9aOURtVVB0aWRvNVQvWjV5bHhlUXVkVXdacDlTMG5jY1Uxd0hLL25ERGo4dFhJTWg3VVlIM0FXelFlZnpVVjdGT3lEMExJbitTVlB1emtGWjExZ0lKTDR1QnduZEl5bmwzR2M0UkRYMjBleEQ0TmlBejBpQWtNM25MVndLbXBUanlZSGFUM3IwSkJ3QjVFVzVqb1RVcXZLRlFpalNxRjFIUHdsRXF4QmkxV3p3UERFOHlVRHVMOFNTR2xMM0xhdGwvdWtPV0JTaW05QmdnbEg4ZHhUbFJvNjhzUWZPdWcwRDhVSlRQN0xTb2pGVW1TTjNBSjZrZFI5aDFJalhYaUVpME1RNlNoTUhQcDVGdGdGYXltRzZldTFzdWZpdWZQOE0xcnlmYVVTQlEwRGNRL0o5aHlGTnFmWDlpMEhkZFYxZllwQ1ZSaDQwNWVWV3JmZmIrcWF6ZXovRlJ6M1I5b2pZeUh6L09LUnRwU1kxdzFpR3hkRnlBQ0hON0VXUzNKYkNMRW8rdkEyekwvTEM0NXRSK093cHdnWFo1YVN2UUd3blVXS1VxU2RvS3h6eXpOZU5sRXYralRyZE43ZmxDYVZ4cmZNUHlicjZRR2VhWDR2RUVXVHpWSzNlRGszSTR4OEtUN0dNbTBTY1VEc0JOL1cyL0pDNE8velRCamI5djZrUmluWWtpS0pLaGdUMjhEdkRSZFY5VmtmT3J4K1FPaTNHOHhXRi9mWGVnNFZocSs1c0I2M0ovdXVpS3NYOFFDM2NxbHBNVGxtU0FDdzBGeUxRdm00M2hEUFVLUGdOQTlENmYzb2NvaHJYbjF0aFlvQ3ZzWDFYeHVtRW5wbHZibXpRUTFsVndkYVY3cFUvOTJvVU91TDJtSjBkSzAyVk9ONWx6UzlrbWR2T2FxM2JlYzJUV3ZMQUoyZXpPYkV0ZHdFUE5yL1Y4ejF5aWVJNWtzMU5aOW1MVkthUGVTQThvV1RKK1JOMXFnZFdGMElGcTB5YXpCQk9qMlZoZThBVk9VNFRpdXFCc2NmV0MwNlFLS1VvekJRREFobExtK0Z2OW0xczFDaXFPZlF5TFFXK2VGQ1dvRFRVazNxanRYQnhGOWY1bTBUQkovT05MekJqU3lTYjdxTG5GVHJHL3lhMXJ6QmdCMEs4NWI0RzYwOXZSbStiQVZEZ1lMMURSMmdFbVhVR3haaU80YUoxM3RPbUt2Si8rcm5ETG5ZcXlHbG5ySmNMdk9tYURvd0duKzJYbmZrTjYzUEozaDl2WmlsZkhGKzRTZ2owUTRWcHAzY21ibDVhaEZnZ1N4cjIzTDg0SHpCbHRQcUd4TkZuQkVlYkxkMW5rYzB3bytMRmJMM3FBS2lWbStkQzM2bnc5Y3R4eGVJV2VKMDhiMHBCNFhFaFJpdUxmZGZyWTVGd2FBSjJvb2YrUnZnM0VZc1ZCK3AzVzh6R3FrRTBpcVlIZHFjWjRuTVcwVnAxMkFFQlpGUXVvQTZwRjVYaEVFdWVXdEx6cjNUOGM0WFlZaE5QUmFsejNRVGpTS1VHSFRsSm41UVJJK2pSdFkwVzRHdnVXYkZvZjFiT2xCZ3VQOUw1Yld2VzlQQlZzTVNaYUplWmxBRWRJUjJWM1l2T3hEeitYUEIzODZQak1kTFVIL0MzTWUvYnpnSExQTWpOaDFHWm9PTUYxTW0xN2VpODNEdEp1ZFpZeW9HTmllb3FSaklsR2tWMnpyYVhicWFEeDd4a2FucnVVZ3hmS0tlZlpGUUlEQ0dkUVErMW9abTNWWStPZzA0R0VzalhvSGUzdlBJMm5vcldWMmhXaEwzVWVCQS9NVEFidEx4K2pjMHBwdUwwUENGaTdZN0NSYlREQTlCK2JnSnBockl1NDlDME1aVnk5VGJTZUdBUVRwWU9KY3ZQY05VN0ZLb1FORUNDQ2FpMTNRUjRDWHdRZkRHR01ST1dQZkV6UllDVGNzVktOZndVQ1pDNmFjOG9vSE13dnJ6c0FoTXZmS0RQYUNUVytsRHJEVWl0SE0zUnZySU5admZuMHNlcXlhMk1ST2NaT0tLL2JxR2lzak10eWRzYnFkRDRDRFg4cXRwSUxKbmIzdHA1bEtmNUJSaUtMUmtUL3hXRC9FVGNFb0NtNlhja0NxaFNON3VDbExNRXFSVVdHelh6eUtNdHZ1YWlYbjVqbEEwb3Z4TkhsZ3lqeFQvYmJxVGZKSzNmUkh2NGN2T0lydTdia2NMY3g5b3B6WjdFUThCQWNpQ0FGZ3FydkF1Q0swV0R4aDdNQzZRMVpjWlEzaklYdERLRlRkUmxPbWlrOHdWM0V4WUU3VGI1VzZVMlpZODU4NGs1M3V3TVllV3cxM2RCNklsbkUrUGRnUXFxdEplNXBjMEZ1c0JFbVVCV0pvdjlPWVRzVllmT3RWQUoyUmd2Z0M5a3ZWQVBmMXpTZGtaaU9PTE1GK0NDMEs4NXZJSVVQM0tVcnNEWWNNc1VQM0xCY2NxQjQ1QlE1QitROFNvVCtXbmdXcWEvemIxVW53OUJNcEdzdzdaZHg4VGFJbXdYaXErVDNOMUl3bWJ0VVNScUM3a3RHem90VXoyZmc4bzNNZGZhM3JqRHBpc1lkVnpqZlFqZUxXZWpraWJZeGZtVWdFd01OcytySjlITm5GK3I1Smd3NHBqZXpRSy9aTXRuNXJ2RStsaUtKc1ZDYk4ray9sQjd1OXJxc3EyTmcrSVl3REV5LzV0K2lnb29KaHIrUTVxTEVDQmk5VjdJbzBoa1FGR1BrRWdlSVE2aWl5SVBPT2l1TU1vY0Rhd3puTDhOaDNMSFVUQWpNdHNZNWxXU2VYWjZOb3FRRkpMdk83OXE1Uk16WnhLbCt6MVFkVHNWU1FtT3ppVENuMUhOK0d2UlhndDBXZThSVHhseUVJY1RySStYdzlzMGpCTWNlSHJuSTZmeUdSSW5KZkk2ZmF1cm9QeWluNENnWEdrTUpycDRIYStveEthejEwNVVpSmxhNzVWZ1NMZmZRbC9MYURDeXVaYjRTYno2czNEN2Q5dnhodWltam4ydFZoOTk4MCs0OENwZnFYODFaempTTUkxZjV6NjRPNHF1bHhMQUJzNGo3dU9uSFZKeFdpcEFZV251Qy9BNWdySjdLcFdVMVp2YVc5MG82aGk4cWt2Wk1heGRXZGYrdjQwRFB3WExhS1ZFVlVFQUxrTjdYTTNEN3lIQVB6VTE5OFkzSXdkelNPRU5GNVdHR01zZ3BXcllFV0JlbUxnd1l2eTR6Y1lhZEJZaWZ0RFlBNUNWWUZycUdvcXZZZ2F2ZWN1NnFjNWxyWktRTVVuQ0NxN3A3Zy82Y09rL1FDK0N1empqV0dHNElCVDIyYnVaTE85K0U5TXQyMmtuaVNyUXVMQm1waEtLVkxLZldGRDhKY2dsRGxsSnM3UlU4R0FRSjBBSjlzcWhmRjlISTJzQ0llcG45cDdpbHYwR0prekNvbldlSDl0a1ZSU1lLWDV1UWRRcmhhSkFhc0xnODRUcWlUZU5IQjY3akk2eUtxamlBSjZWUlBSa1dmS3FBT0pVY2hldHk2V0x6cktTK3pDci90dFBYUlYzcUFNREhWa3JPRi8rVDlHQngwaWJoaHBtc2t6cmNpUWFRK0M2MzJFSzRGY1pnNEhLM1ZEb05ldzJydEkzaWk2ald5WlVHdHE1di8yeG11WDdFRjgxOFBJVEZ6NXBWSGcya2Q0OTd3ZnV0YVV1ZW9tbWwya0xpYi90bTdiaERNZU9qaVBQZEdibmVhV21FVFBEYzRzVnBqb3J1d20vblJ1MEVZSkVma0RyeG9oemRQZEFGdFVRNVk3VlFxaW9ocmJTdzFTNjNNWmE2cmYvcXlvYU5yNzM5d0ZTZ1J4ZERtRDZmZVA1OGdibzdrNFg4bDZjeXhqWEQ0cHQ3UzR2cVUxWXZWK2kyRlY5VmVNSUpTNmhKY0w1NkVsSVAyYkRFOWFpMktzZFU5WURyNFlTQVNscnp0YWl2UGhBZmIyK00xMGQ2dWlhbGhkMmtLd3FZWXpYU282cGNIdm9CZm5LVzEreEwvNi9GTGx0d1BpUDRJTTJEeW4wTzVXREhaREpvbTZlYzkxdTlNVENUVlEvb0J4K29BQitwQ0txTk5Fc0thNnFuakNOLzcwN2I0NzJVeTV0YzhIVlRLUVRrSWVFbnJHMDQ0STQwaHFDVno3UmFxUTJkTWF6WHhtVi81ZW5ESlVDRlhIWjNLcDdSRG9aeGdxKy8rQWo2ZGpudTlRRG1zcnFESGdvOGZtSlNmeHBkTmVIOXV1VmtlVTE3ZmtHWjI5SGRoTmd0UXdRanIwOWJYWXlkYlRwc3FlS3d6c1BmTGFLYjJGenZrL25zWmtHQTVodWhlNnM5RU9nellmYm83VDhsMnZjbC9tYjhTanhxSGFyc2s2VjNleEVoU3lNc3ZFZXRYVmJJY29xZUpmdlJCQjFVYytVeFp5STZPS0dqRmJUL2prMlp3WThCMXlWd3hVT0IrMHpXZXlzSi9MWkozZ2w5ZkYwbDI3RjQ1OHZnSHdmVFg5eEVEaVl3VUhFVEhOT0JxTDdYdUhINGQ5TWJyZlhNQVJ6SWJVbTRBZDdGcGs0MVRwTzNFTHB5ZVR1UFEzM3RxaTdDczd0RW1UU1ZCWDBVU0s2V1pPZXlObjY4Rkk0VUtjTitoUHRMTDJpQlNCczhOM2p6T2JIQXNVNDJISkY4aEpNanNoSnRHVVBYdjVTVFpJRGlIM3pNRUFGZU5SZ1NZT3AvT3pqMVg0MEcvU1RkNHgxUG1HcHZZUlJ1NkQ1UFYzYWNqYTZ2akc5bnFMUGN1RE9ySDBXdGpOOVNFUER6dGh6Y0E4L0czVXJEQXZPcTZML2kzWWtYYUpjUENKNGpjY2lESHdzYkFkblErbmZaMnI1WXVMSjZJNVhZU1pKZituNEhCQWE3YXNUaXdJc2tYVFlsa29RUDVCbGpPbDVYVE95U0dZYWZ1WU5XOEpQYnZ3d2VpTmtkc3dXcW1EdFZhbXpSS1FQaEVOZUhSOTNWYlIrZ0cweXhQTm9VSWRYV3ZFYm9BY2JzWXpKQ21OeEtXM09MOEcwRVRlL0Q5eGp5dnFDZktBeStrK0xTdXFqcG1FL1RIQ2tnci9PcjFlV1VqdnVvQ2VBaEJFZmlPdlAwT1dlR3dFQjA5MWkzcmpTWGRadTFQMVF5Ym43dUdEdStiT1Y5Wkk3ellwUWpUTDl0RFo0YlNMSDEyaHRRSkVuaG5ESlBBRFF5L0svQjJzQ0NnTEJCSU1HQndIR0xueXExR08zb0l6S2JodjNyTjNxVGlYNndGakNnS1FGUmRiZlQ4VytUTVRiUnVoVHQwMmMzbjZaakNJR1BWM3dsbEtLWmpiSmpxeGJVVDVIOWRYN3pCZGFPd3N4bjV0bUlNRFBTQU1ZeEdPN0NIR2NOOS9lQVFmalMwK0w0dmU5QTI4M09Ic2FZRnJlbVB4UkQ0QTFyU21TblRjYkQ4UnFyVWRWNjIzUHZ0ZTBhcmtsbXcxNWdRU1NST0YrazFiZUxSQlpCcjNUYWZBY0RuUG40T24xV1p3S1NwNnhVdWpYSjNYc1FCd2lYTXJWU2JibTl6cHdhTit5NWlMdW5RYko2QU9oZGRIZ0hlOFlIT2dieE5UdEw3K3N2bkZyZmtFZHFkSXRoVnV1RFA0ZGlxUEJhdjZZT3REejJtY3kwR3ZMTFVwWHNweTF4aFVSODFVR2RpVGJDaExCRTRXUGg2UE5yOVYvYXZNbVRLallFRVBrdERscFpRREt6QU9mdmxRcEx5UmhYLzlyUlFzZkdIdW05VnVwWWluZkp2cWhxdUNTaG9pRDMzUDFQZWxUblNPWWFtd3hDSFFmVFhiMUg0cHUwQ3J1MG12bDNLVmVhOTgwVE5oaTRSeFNSQnlud1kxZDk5NUlMYnFsSkE2ajVranF6ckhNWVJCbHp3K2V0Y2RnRGpVQmtwWVJTR2M1SDVjdk9UeXBKMTNyQmJPUjhvcEFLamdOcXRMZC94ZVR3SytvY0d1dXBQd0hzNUtFbXl1dWE4MFc5RXFUMGYrSDBrSzdRUDBrbEk1cklnNEZTTGxZcU1IdzJOb1lNTGgrdVZjRlRDRXRxdHJzVmtRYWlOQUF0S1h2TnZIdExDcDJucW1SSzh0aFhJMU43bWgzNWpnMFhtcmZWZWNRNGRXR2syeElERHFLVE9QNnZzS2duMXk3Qm1vWXBDbC9xVlhVVzVOeC9uNWdJTk1JSmduM0NFWFdvTUVndUZUQktzdEM4UHd3aDNzUVlwaThIam1kbkpXR20wYzd0bWRqRjJDYW5MZ3lnVFUxanc5ckN0b2hQekxQdDZ1djlOaHNLZzBjMmJSMUFEekl6S2FkSEtVa3QwUTRidmJ6enk3Q0RPWCtLTGR0M3pZckhJcEFsVDZ3aEpJUDdCZHlpTUlKNS9yL0NaL1hDcjh1bC8zYXBYUjJXNkttTStTanRmU2M1WXcyRi9JcUVUaUhaWkVtMko4TXVvRVZ2UnpOWVFkRm1XcWpHRWZocmNFRGVWNkVHcXlLb00xamIyeU1KMEZVSXlEN2ZmWGM2dE5BMmM4L1FyM3lHa0RVeGFaSnl2SUR1T1lUeE80Z2I5V1dXMUgzbkIrR040RHFsV3JnY2FmWmhiRklaZllNNUFCdzdpOWhLNzRpVnUySXA3T1RjNWw5YWI0SFZVTGdHU0F2ejF0aU03N1VnTmI5R1lDelFxL2J5Vnk4K1FEYjlZTDZtaDBhOGhDcisxdi9zN3l4bE93a1hUYTNEcDViMm5BZDFNeDNRaTJFMGk3MnVIZ3dKM1ZLZDQ5YURUWVhsTlVuazBudTkvSDdrRVB1UGo0bnpNbnRlVHBrakNmRlM1NStGbWlCUm1sZzUzL3RCU25XdnpSMEpaNkR5OThGZEJ2S0F2VDhoVWtNZVlaU1U1Nm5yZksyUlN1ZkFnYVEybmFqaVNQdFV4OCt6STI5K0FtdTliVzRQVEJyNHpRSS9TRWcxUE40UFBWRHJQdUZqMzVrK2I2SWp3N3lMU2tveG9XUE9GdFA1Z0I3ZHhkUGRaM2lEU0pVakUvUVJuNWprWElGM2RhMWtqZFlBZzBZYTFOaGVIT01jNE5SWkJmTTFTRXFGSlVyeFVMOWU4SU1VcUt2SDJBbW9iczRqK3ZNU1pmbXB1OGg0RUczREVMUkZtem5BUmxUNzVzcWtSd2FXNTlvb05OVW81SlJwczdDZUtSTncwZFNvbVJNVXMxRVd0cnFKWGEreUhvWjZsdGR4eGViaTd5RHR5T2d3OForblBGRVpUQXROd053Q01LV3VMN2RaMVQxZFVkWDhQTkxYY2RQTi9wbkVwWVhnbGxZRit2ZXZwdkN5SmZZdS9ZUmE1WDVLaXB1bW83TVZPRlJGcEJMUTIzcE9Qa2pqdjkwK05HMitqdE1EbGFBRE5FZmNsd0ZtWDdvZGQvbUtEZnZ0aE8rL2JFQldQSi9kQ25DOGNKKzJHSTBCVEJUTVlPSUNlKzdSc3JtR01WMlhhcWpocnY4VXQ2VmVldXpmNS8ySXJiZjJmbWZ4ZUdzSWxzbU41ZWtmRGowc2w0VWlpVWUrM1hJMmRMT2FLcmJSVkI0Y2VCcW41bUlIRVF6TGZQSmJOUGFycXdsQlMwVXhtZ1grNVhZU1c1Wko0RWRRMWRyMTE0TWZBUTJIT1lkTUhIL3NVVHlYVW5wejVBL2ZtakZsNnVFdEVpY1lsQkQ1TURMbzJzZDg1Rk9FMG9jdkNRT0MyYmx1bUZoQ2FUc04yNnVCbGVQRjVib2c0M3FGYkJqaEEyM3IvOVo5MlROL3FvdUNFT3QreHk2RGUzQjF0NnRPdTRxTk5TWUhuS0NBZlIrQUQ4QjdwdlJESEtsTThLejJkSlFBQ1ZHVWNwRndSdmdyUFphM3B3M2dLNFZ1TDJJaFkzdndmYUlFa0p4T3haTmxnK1NUcnduRWNSTGRTU3FsUk1VMi9jWHhPRm9pc21rTk9WVUh0WENSRGdpRVNyVkd1Rmk3NnpIcU56ajdXaVlKSWtTYVBLSmppUlM0YndIVmx3VnJZbE5tOHlVZDlkU2VtdW9WZTNzZ1FMT2tTWjdiejY3Q0VndkFDdlpTYUZEODA4cjQ5WHNnWEI5RlNCemIreld6amJ5YVVvQnExYkVscVdSYXlpWlcxRGVjVDVnM2JlazlLZjVJblR3MXdQVGVvcnJXbjN4WmdzVjZXNnpvYUFZSzJCZnZNSTN2UW5SektOd3hvQmttZVQ1YTdwd1ZKSlNnYnBnaFgwRUZXS1J4TjVicEpBL2dsUzk2SzdaWUhqZGdkSHhVZUVHdDJsVXMyYWltcm50WTFab1BBT1MvQ1k4RGpXaldlOGhMalhpTVJaN3Z0NnlVbmN4aUdTYjVJSXJLZE01YnQ2OHE3TXlNT01HbWxtN0VQTk1PNDlZbDhkbTUvOHlGYXNkeFpJQkxzeU9KUGpkcmoyNEFzMG0zZUc1eit6aFplb2U1ZUIvVExBUjE3aEFlc3FRSG5xNG94UVlOWlpGRjliQ2dSTWRES1VkbzYxOVhOZzlHdFJmMjhUWDZ4d1JIZU1OL24rNTFYemtuZmNwaERVL1pkcG90SVpwYjRTeUR2eUM5eDlVd3VjYm9yazI0TDMzODQyZzQ0aUgvcFBYVHY2SmxtcXJ3dDhsTkkwZUFqbG00WDlSRTdzd1kwTlNRSDFpOUpBS3FaeGhJRU5sMmdJSTZQY215bEVyTTNuQW5LVlo0aUNBUlZiODk3LzZycE1RVjgxR2lhVytLMjFWUmpOMWJnTlZ2em85V1FjSHNKOCtTM3dmRi9SNkx6N2I2M2MxNHlOZk5RL2p6M05wNDBKb0pTaDZoWkdZZE5JaEtjSGtvNmlGRlVKb0VpWmNxMURiei9jMjdTcE41VXkvVlRhSjR5Y0Fldzc5QWtlOVlzdHJrUUFlbDhmZ3ZPYXNjaVNONkdHU2JKNjRxRTcvdElCRUpwN0g4VDVEWnR3bWRmVnoxb2Z0MWsrQ3Z1bUttZlVKUGtUYXlTdUlsRmdqOUE4L3FyVk5QaG5FVTNVOWIwU2FQM0xmeG5aeG1EYnVjeVNYVGtQdlh6RXMxTzFpZ1ErKzdtdFhwa0srYURMZjZVdzFQRmR0TThDeWl3YlJNY3g2Y2hlMmtMcW9KbVRjSTJLdUVUWVN4RkVTVjY0dllyQmp1TnhQc3FXVmluK0VFZTV0Y202d0hnRFQvNnFQUDBVblB5Vm1NTERIOW5rZ1M1TGI0YXh2ZzlPSkg0V3Y3VE1hemdjcGVwR0tpYVpZTUlxQkVsSWl3cGhjOGhoZ1NOVTg4dlZUUC8ydWYyNld5bXlUQm9xLzd0T1N6ZGJQZTR6OXZib1B0ZTdUQ2tJcytqNlNPWWY3cE0reloxY2g2MWUwazRLWHdEOFlZdEhST1VYNlhJYlJwNjFYUFB1TkFTZW9LRlpYY3VML3cvSXhieXhJKy9Sd1cvWHBHT0Qrd1lxWkpucTNrbTRlRzFyN2xrdFNCNHlweDJjWFkzS2hZRGVJRGJhOWg0bEVJcFUxMGRJaWdlamdWQkR1RHNFcXN5SUU2bXNualZDeHoveVRBTHN1ejRCN2xSRUdpNllFcXhUNFVqeitNUW5FWHZpWmpyVThmQUdxNHNiMzFBUGpqMUlmcWkxckNnSEFCdEZCdjJHaVBsSWMyR1VMRExjY0RjN1RqWk1MdjNWdi85VUVVNVBsaTcxVnNRYjNSV3QxMUQ1WWw2V1hCMUlMOGI5OUw1YUJlMStueU0xT09oekxDVElDZnhUdnlJbGJuVGV0UEJDaVYrWHNuQmZNM3o1TWRWdkxRMlRYNGI3VWc5TVo1NjVLeHhkWkhTT2ZkUVcwWUtoY0o2KzNGbGdUOE9Pdkl2aW9JVU44MWxnMEg4c0pGUGkvV0p1VlB2UmVRMksvSWNiLytLYXRpUytNM1RwdkNVbjNHbW0xMitvM1pwcGVIRkdBbVdreUpiaUpGRy83M0RsdEdXc3p6UmN1NFp5Si9QN3FwV2F1aWFJTzBaSGlGdVFNRGxITi9QVHpVM1lPWk0wTEVKNkZSU0lJMTNiMTJ1ZmZ3ZncxaDBwOXJYaEJIT0U4ME43Z3V4VVdtaDJuL3NjanFuazg2cFgydTViRWUybFJDZ3VRTDQvOXNYREZnTHRnbUkraVJQV1FzaHRmSzRlb1NhV1N3R1hwa1d4N1RuV0xGaTZvbkc4aS9KcGtCYkNJTHp2T2dvK1JZZFRWeENlUWFCT1dYUDBPU0FNdXJJamFiNi9PUjBFU2NxZDR2ME5PbCtyQ0U2OWlvaXJtd1RXOStoY3ZKR29nbDlLN21PSDAxWXRFVWo2cXArcENBTlRCYkc1YnpvNGI3ZC8vcXIxTHhlRVRhQUtDOWVWdmJza0JzS0lJcjU1c1gybzJSR0EwVk96TzBMaEVpWFBXVnRPUk9EYjUrSmxoTWVzcUNvZ0c4eWw0NVAxSDZsZUxWMEhXUlUxV0grSEJqNWxRYjgwVVVVMHArK1dDYzg3VFdrWWh6TGUwYTY5L1A2cU1BWlRLSWdMNk5qYU0wcjFHcHJybU8wMEYrZG04bXcxU3lZSFc5VlZhMmo3eDhpOU5UWjZGU2t4MmtZWnNpOXNOdVQzcTc5YklzS2RjazhwVi9CWSsyL3V2MGFDTlc4YzZLRCtPeGR2bSt1bHpwWFRZdmF4eE9yRnRRLzVDbHZSR1lYeWhaSWpLdlJKMXh6SGx1eVk1c3ppd1Noc3g2RU14R1FMZUV3RytPOVJ6bFJPaWVHRkoyQk4zbFBwOUVzVjdNMnZ0Rk5Ea1IrYXlQYk1zRjg4T0Z0Q1M4M0QrYlNScXJpZGEyRXF5TkZUV2lpOUpRWGM3SlJiQW80NllUMUJqOHcyYndJY1Q3WHk5dzQyYVZvbk1sMEp2a2pGZk02RWJKKy9YQjVBbSt3OFNod1gzU1pPbXhQekxmaS9wb0NTVVdjRittM1ZiOWdKak5BVnV2TVdKbTFxdzlxU1B1a1gxbWFjanhQOU1GY3UzN201MEc0Yk11dnNnblRJY05QMkNac0luNExKQTFwZ3lBcDRHcXB1ZDVBcVJFQTJUMW9paUFkb05UNERzaE53SmhkSUY5Sk1VdmNqbXVSbG13UVBMNXorVlBsL0szRWV5ZGowelFWanpET0RSNlRRbmlLRU5QZmIzZmh4Yk1aR3ViUXZUT3lsS0ZlSjdWSDBYSUtxWFppWDMzdHArWUtxdlVEMFc3NnJsRmZRTC9mOEJ4SGpyalJ0Y251TTNoK0hYOXE2dzQzWFlTbW9lN05OYzQ0amtNUWhGVEF5UjhEVWlxZkNVSTdONzB6RzR3a1lreHp4elNmcm1pS2xFaFNqLzZxd3BsZTZrZm9UZHM5ZXIxZnNaTlUraFNzZ29CWVloRGRrbkdpODdSYVV4T045dTRib2tYb3dhc3FOVjBkb3Y0Tk0yVFh2ZjA4ejBUUElnQ2hxejVQU3RIS2xRKy9UdU0zckdQNnhrV08vRGdFQXVJcmN0VXB5bzA2NXhlOU9kYWxTTlUzUmUzR1pZbVlmVk1qc0I0NC9USncvZU1SYThoWHR2N05WZENjeHVoODNub1U1UFNXYTNCWHd5amwvSXI0RkloSnBKdmY2Mm8zRU9xeTNURGVqcytMbnN3b0dBdVhCaytPZEVYNDNWVGxBMU96YWVUYU44MlZlTk1WSUpOSWVzYnlVSUJQREtpbEx1bXYyVEMySVk0VFRjVDFsRkNZNjBQcjQwanM4MHA5TTFIRkNJbzZkM3FacHRHZ1NMSW9wL1hQTTc2UHB6K0dvcmVkY2lFUWRSWFVOZWJBUUQzR01BeHIzMlZTVWxlNWFNN1o4RDd5eHNsMkpiaHhua3ZHN1V0Q1pNSnZrdjhqdU1KS3M2d1NQeEs4dml2dXpXMTVuTWpFUllJUkJ3eUlQL0JvTTlFQzRYc2hGOHJJU0RZRU9hVE9nQUc4eHU2ejAwNlQzblU0dUNueitINmFJYzN5cGtFYS9PRE9tSzhPekxycEwyd2s0WlY0ejB4OGhPd0toOS84NmN3Mmc5RnJFUG1xR2ZEMko0QXFZSlh5cnVuWkhHd2dKYnpObU93RklmT0JnODdoZzRXVXhZZXJxUDQyYmJkMHBZSGNCQ3lXRldKQ25qVEdyWmlBbG5XQU1WUEVocjJNOUhISmRkT0RhTTl4M3gzSG94b0QwNERTLy9ZK08xVWRRTnJNS1Z0aFhWUWtEVFJWTm80MlQ0SXllSmpPa3BUZE5NY1lwV2dLSG5xaFhUOTB0dStCNUZEVWZyOWhKSnZIMEVLSkZ1VmEvYzd2eDhXaFRvZXNmS3FXNDdxTXp0Y0ZkaDZOUlZUOWRRWmpOQjlzTTZ5cWZGMXZ6eEhKTTRWaEpNZS9ZejRIRTA2bFVtSG9nS3d5eVF6Qlh5d2JoZ0ZyRlFWMTNmS3pUVGpkblovclR6R0IvUjVRa0w5c1dtb29odkRyMXltY0RpYnNyN1NBVlJyN2lVZlRJREJ5bnB0b1ZkOTZQUFR1QWZ3eTlRSHpSQnZhSVRQWGI1MjYycUZZQVhENk5GRGQvK1Uwek91Q3pmb1NvVk9VWGkyaEtaa2VQeWYrVUZSbU9oaklhdnArc2JiZGphcVViYURmTmNsdkJhcUpqdHAyYjQ2RUxxeGQwY1BRRTc4TzBxODFVdmZ4ODc0K01nRzNCeU1nWU9rUFNrNXRUMy8zaFg1TzFBaHBMd3ppRDJLaldYaC9ER1lrTTZESkoySUxuT1FMUFJGeUJ1NmNuSHhNdS8xUm84cmtpazJrY3RxYk5DL2hCYldwT05Kem1nK05mc003UVgzNGZiMFFZYk52em5YZkJCRTFmdXA4QWVNdUxUNWQ5VnNSeVI0clY2dU9iVmk1MHB1dThUcW9FT0g3QTYzSVJONDhGUUwycC9VZ3ErWjFIcEZueGltcEdnSkJtUG5GNHpRTG5KdlV1YXpPUjBuOEkzRHZBRVhpL0NpOWRXekY4TlVpUXE4WVFPWFovZHhUbWlySzFMcmsrMDBOaTFQSnlWZEZ0bEFpOHhVWWZlYm1JSHJEOUJwZEFHTUpYTC83M1M1ZytpTC9nNzMzNnAxVmFmYkdQbzN2eWVGeUdITE9BOXdSaDV4aGdFOXZtdjkrem51ZVkxdXk5RHBJOXRsYVcxcXJvWWVHcnE2cVgwVjFlNklSN2tFZTJqNm1XSC9CZ29BTXpWWDVBQVlGOXhhYXZUTXQrem9DcSszd0kzVk40RjRvS1JRN05YS0d0aFNvczBKU1R2NlErZzNmTzA2NzRFMk5hNkgrU09xOHRnV2NlMlBiRnU2SWlrVGtSaEZsN2FJZ1BsSlZGbS8xaXdXaWlQT0pCSUlodm10WkJHM2VMSDhjbm45aktsWUgxRTZUMkU2TDRDT1F5ZFZmZTd5NCsySlEvOWJoakhBOHdYYWhVaFc4V0c2UGRYdmZhcXBGOHhKSUhQNDJqUGVnSWdkdWhiZWZKL08zQkhuTWxwLzdoR1VOS0YzQ2NQTTRFcFk4VWJtVFIwUmxWZ05mZEp6KzIvVlVuRnVibEgyTzRHUUhadWVoNDRNbDBOOHFNOThpWU8reXJjTnFaMFhqSmdvVkdYWXlvTEJxd3ZpQU5tVktESHZIWUMzR3gvZGVvdkRUMWVMK3MvWEEzQW5aUkRlZHovdFN1MkRVdklnelc5NDg4ZGNycVh4Qi9GYlh0SzMxNFYzR0tlRzZVakZDNjZ6UDFWMXRKem44WDY4M1NxSzBjcGhRV3VRMi82dzJDaGVZSEFQRlRKaVd2Y0d1eGhCWkZzN2k2THZyOGNKR25tOTM3eVo0OUhYak5YczlqRVZZNTY1NFo4dG45MDNRT29OSjErSFlUWkVBbWc3eHU5azRLdGtKZDVKOWxTTXFYcXN5WDc5VVEzN3RBR014T0xLMVMwNmdLTkNNNlljT3lEV2JCSGRLOUNPaXR5V0Via1VCY2lhall6QWxRTVg3czFpRkJGNjhZSURJUjF4d2RPR0NSSllGSDdteG1YV0YxaHNSNmtqV0dEdkxBREwyWi9sTnhKN3g2YVJMTFdoWTVzY2RDMnRNWEcwOVlnRTIwam9neVFPWG4ycUg0Mm1VVG51SXZsR1ZyZzlZMVJzK2RyOFVmNzJENzZyLzVDaC8ycmZmS0QxS0Vrb0M1YmpZMm5DL3Y5bUx0T3JQbHRwS1ZPTi9SZGsvMUw0WHlsbW41ZmYzU3p0U3FOUkNLQ1REVVZ0UlZUNytqWGVkZ1hMcjdQcjVObWE2elc0N2hqbklMNTgzSis1cTE5ZGY3NzRQdC8zUFVPMzlvL3FBYXg1dmR0d3EyemRlcUc1Y0dsbkl4WG0xNnhodUsxczRZenJlOEwvcEEvamZ6L3UvL0hraVB5VWFJTGJJYStmakhiR3N3VFhmeHczTEUvSDFzbFdJeGRVaDduZGJidjIrZVNjb3RMbmQ1eVgzako0L0hVSXpSVFcxZ2o2SGlLaHdZcHJtT3N1Vmpaa3cxVVAwSThhWFhLMjVucnhhV09rT0lEeDZQY0htMGVybUlRbFVtdkt2ZXZ4b2dkKzM1SUR2cHNhVVlmOUM4cDNuVjdGZnRQaTZ0VVREVDhwaUttT3hKOUZzZmpISWdDTWFZNER3czlydVAwQ2grY0tkeVlCVWRkNUQ5ZDNVRFNBRUZPeXpMNTNLZjNIQzZXSmc5V0s0dFJ3L2NmeDVhay8wcGx4V0ZWQWdUYmo3S2dXcDZ6cHM1TzRJNi9uc3doaW1tWjdmcFVhN0VQV0lYc01uc2UxQ2l0MGNIc1phZVl0WkRjNCs2ZHF0WVBQUjd3ZU1tRTlWT2xBRGdNY29iRzZkS3B3TWt6NFduQ29ScjBXTWJKVzVvUG1aMXJmWW12RFd3dVQ2TXVCNnFDQTgvRUxBeFNCWFRpbTRIV053OGVXV3NMOTh1cTkyQXpqeFR5NEo5cnZib2QrNTVNYy83aS9BNytSakRURlhZN3ZGK21UZkRCanhnWVdwbU5FR2dUbjg1c3hpOE1sUHBUSmMrZ3RGVDBXbmFLay9rZk1URTRRQ3VEWUUyUkVhOGZITzQvV2xZZmF6RHBjOE4xdGU1RGsrdGxFMC9IQ1ZRZW0xZHhhUEhIdHlRRUJRZmgwVDc2ejFUbHh2cG16WHpuYzZHSmlpUEIxdmFJV0hPeUxQWFhOeTN2bUNtV1EyOS93d0w0ZmVkTUM4ZWtYZFluOEtTdDd4TDlHZDFGbDFIODVHUGxaOU5DUzh5N2ZJZllJdG9XQWEwMVpiWGxiMlozWkJDYUExUmVQUXZ6cGIzZ3NITjBCN1RpTGgyYUp5bGRtVWJsVUNUenVONGh6alhjZzBXMDlnenpzcUFIc0Q5dHhmMm0vejBSTWxrTlhYa204WkZIYVZvMnJEOXBHUWYzWHFQSmhiTDlQWVUwK0lpNnE5ZENra210c2t6TVFTRjJsUDcvdzlhZ2dvTmpXbTZBdFYvR3JtMkVRS2hPcDM5dTRhSW8walRNM2h1ZWdsM2xpZndDMXplT3o4NjdJMTZpTDB1d2Q1UmVUY0t4QjJRUVFOVFo0aWJpUzY0eTFjbzFRU1BGWEQrZER2YXNIZDRxSzBKT0ZhbHNaSXBPdDhxYityS0JKVjcwQTEzTVJOSXR3d2tQQUVXdk9hZFVITWdJQnp4czd6bG9JNGZIUXhOdStyQkRrZ1lDTkVEUjBQc21BV0wwbFByc01qS1U4MHlsbnZJU2RIcmU3VnBCZ2FDT0lCNnpVYmx3UFV6QjF5UzVvQ1hxbGoxRlBhU25zMlpKVTFHNDd4b3J1Zm1NMWtMRVNzNVFnbjh4M0pjVjNwOWJORFRlOWhzcmV1NTNsUzdZRFBaZ2NJenR0YklPSTNLQVJhL09NOUJKN0d2YVMxZDRzMm9BWStreWZtT0Y1WWkyRHNyaHFiYlk0c1pDSG1iT3JhcU9JcDBhMjE5QXI3NEMyZVFmQng5SEd0QWZ6WjhlSnBmdFA4eUVsVkE2em8zR25XU3V3SDFUM2pNVWRrWjkzckgwcHE4cDExWG1yOEc0TTV0K3d1ZWZrSVFQeG1uNGdwM0dnU1ByQmRLMnBQckVxcW1wZTZWeCtBcTQ0Yy81elhsU1VVOWRRTWFVMHRTY1k0eUNMeEIxNUVFZWZDT0RBTDJMQ0ZrTmZaNUYyZTR1NW01R1lZdXl6MXMweTlOMjhVWTVGejNpbUI5YVprbCtISlBpWDdmUXQwVG1GTTFLNWlBRVVTL21SSWNnY3M0SEpPdy9LUlhWL2xxS28xd3k2VVJLaTZacVd0Y1l2anduTU51S3NWKzd1dmpMNEROWVduNjJQQTF3cER1aWRhUk8zWVZ6bU5tbSs2UlRXVEpnWFd2MGVKRmxPaVdNUFh5V0tuV21Kd1VaTS9wamJlakJELzNuelUzcXpjYjYxV3ZCRXRiRmFvaFNlMVBGYXF6Nlg3ZWFrZnY1VmwrekhmNkFXNU51OWVmek1pY21zWDBiR09oTEoxa2hpYnduNGdwd0FRbS96aUZpa0VGRzh0MVZFbkNacENoZU9zUFpIb0s3SU4ybkxnNFNrMTR4SjJlODhoVFJMcnByZXdXakpnSHlkNjhyTUF5NGVGRzJKS290VWQzMjlyNkI1aW1xNnYxeVAyZmJ4VDZtdFNkK0VjdEg1ZEFWWDRCYWE3Qmpvbm1mRlpuSC8xbVZXaEhnUGFJdC9kVW9paUtLT0JUZ083TlVZRW1oRjhGd05MclgrWGxzTXFyd3BjT0lGZjFzY0FjMnJxSTJZc2lnNFdPYnNDTUFpK2wveVZiMC96RyttcEN2SlVidDZHUWd3N2hyQ1FwMk9PLy9uQUtIVzlrUUpMcXhwUlZ6cVpzeTZaVzZSNFYwUmZ2TTlYSU5wSkxnTnBQTkhNSlZpc0lweld5UFVOd1R6Kyt2VjF0S0xuWDc2c25uUHhHaldORWV0UjNhajFNYXhLcUpSb2FCMzJ3MDBHd2xjVmJaNGxndDljNnJyQmM4dTM1eVlsQ1lPU2lvNkVObnJiSTQxSkdsZU9QbXhSbC9TdkdWK2s1cXRFWWJTZHZGVG1DM2oyblRjOEM3MTMwOGtPZXNpc0EyRElsTUtKQzZsaUZud2NmVDFWU0NHWng4Y3dic0hkQ3RTNGZXdThQTkdDNDhLZDVvQzRvbWthVDQ3c0c0dVBzVWpDQ2Fyb2Z2blg1c3RNWkdzVjhGTUFIdkpTWEpMV1dvZGFyd3RXMTV2VDdYMFFBSTJIMlk2a29YMjVJTldSNlZRQzlHcEMzMkx4V28vNzErR2F1V2I2Qm93eTZBbkdoenBRbmx4RXlQQVZJenNoeHk1dEFibzI2UTd6UG5PNGRlVTRCNkZ2ZGNxVE4vM1lyeS9Vd2ZiUk4xZG04R20ycGNVS2tFZTNVNTcxRmNja0hsd2ZXQVRuaVZVQlJxbDQ2Wjl3VkVQeStkMGJLOFFKUENFSXFTSGlZZzhZNmxDZW15cDRnbzVFL2grem5wUzY2MXZCZGd6SDRkcUFaM1dpTE5nR3dDRnFRYlpSdzU1dktleVZ2U2s0UEtLSVhKNjFkckJxNUpDTldERmUvc2Q1OTl6ckRSVEY0THV4c21vcHYvQlFCZVJwSlVQcTM2NzdDWm1JV0hvNGx6Sy9mNThhNjhlQnBSaEpydmJjN1A0UlJ2QjlwSi9rYWVTWDRXOFRXZVplQkNWdEdZeWdjdjVwY243UzRlYjRVc20rV2ZuV0hIKzlBQnNVYmNwcStCa2pBeGdtM0lTWHY0N3ZQazJMOG9ETVZmYjd4QXJ5aGxzR1Y2UjJsU25kWXNFWmplL3Y0emdqOThwVG5ONmUzSHIwOTN2cEpiMjIzUnUvZGJOeU9HRmJvbytuSVUxUkZEZHcwL1pTYkJ2dVpDTXRwQm1Yem5sbDhWUy9qVUV5L1Y5RWZuWlR0TUhTTEZWMlFrVnhTQUkwRWZldEpYTDdkZlpDMEhmVW5DQzllSEk1dm45YkJxeVlGNWJmV3RLcTZ1Yk5RME1LeDlTRVBabDlGcGttUFhXM2x2UzlHZG42aXlZcSs3UDYrbnQveHZjaDZ4b3Z4Rm1SaEQ4cXRLcm9tTVJuRVcxNGtLT21KTHJDUzBKR052WmxYVGpUd3BqSFJudGpiMHJDU2tlS2wxUzFOQkJFYjJDenRZL2I1dHRJdXJScUgwWFhYemVhMWZMWHJTdnhoc1RDZEFmTXZOalNLMFpXRkFGa2ducUFETHMvaldoQThnWUlDZUxwSXQ5QlV6WW1vL2RUM1VwaC9rNkwxZmw5Q2xwQ2dSc280SzRqaFJweEJ0RHk1UlZkL0RSQXdJaGgvSjR1MGNqL1FXZmk2U1FxaTZ3bjFhd0x6bUVsV0wrWkNDKzRBZkpHblhrVzdPQTR4b3AreVE3K1A5bGQrWC81QzIyQ2RjSGozSHFORGVtd1c4T2NsLzBwN2dINkp6djQvL1JUL3YvZVIvcS9ybUdIWUNpUU9lanBsSFJqcmYybDU0Mml4emtUaFl0Z2RlL2w3Y2hLOWVxWWw5ZFVsVkpKazFSNWxzY3l5K2xjUnFmc3Y1WjUrWUkxdjIzR2p0Nkw4bGFjSHlsTEhzZS8waTNSQW9UMmR6cndnZGRBeTlyZXNEZUlOVk1LOS9KNW5iY1pNemgwSkpoZVNyeDNtOUtwT015czJkWVoya2p3bnNXZmx6Qy9qRWxJZ1RuTjNQY0Z6ay82SWduQ1ZrZktJY1VvMlZkVVArbmtwZ3pVYmRhSm9oazV6VTZiL2ZrbUtUR3dwZmhmMk1ycmhTS3dtVGdCaE9pMEpWcmNKNE40eTh1bEljdGRrVi84TWFDQVBSQU1iYnhMWGNJSTZIb1ltaWZpRGZMTjFIN1Q4Z2RJckd5RHFDMXRLUjd5OThzNGxyVE5SV2g4eHZwampRMXY2SkpNKy9QSnB3SnJ3Y0lMVlAyTS9td1RoNGEvOHVWMWp2eDBZYmNPKytuZytlbjdpc3hrYzAzV0IzTGxoZlpiWWVSbGcyQWNJUEluRnZMYkhnVnMvZU9iMU1IWC9ZYS80dVZGREhHQmRhK2o4cmdEYm51dXNUc2dHTFhFd0g5bFEwRmFQaEUzMG9oelhUSElnTE5CYmpGT0x0ajFBemJ1dG9YSitPU3lzcVBiZmozYlUrVVJRNnhkRXpYVm51cGovSE9qRFlBWkN4QkJiOEpSVnhONkZHSlVrNW90VHR0UkllMWJNRFlFRUJjamx6dWxpSGMvU0twa0UxWUJkLzAwUWxUMWpxZE9JQm1SNTk5VHdnWGJoYm1JQ0swZU5UL1p1TFdieDdDaWVTYjY5eG1lRG5aUHFXeHRKMHE5VEpZeC85YWxUVkNUeTlGZHk5a3lLU0hBcUFBdzRsUWcvL2pMZ1Jpb1VncnlUdDNqMnFYaEJmTW8yelZSTHRlOUVGalRBakxVanVBVmtvOVArV292MHlKWnJ6UlY3NEo3aUhyNm94YitTK3k4K09haCtkQXB2S0M1eWhwQnk0akhuU2xPS0EyNitKaC8xbDYrcFR1cVArdE5lTnd6am8vcDBkVnhoQ21uaDJzKzZRQUJxenZWV0ZvcXVxdUZrZ1hWMm1uQTRrY0NMTWliaTI3RjI5SFR4QVF2SmsvcElRSFRXNVNSVEN5OUtLY0V5enpVSGJSTVdrYW9LS2RiM0ZMZ0V4M1JTUWR3ZmFPSjVLL1BjdGhuSGpOVmZpcEhSTndEbWRpQzEvcXRCWTBUKzFTa0NnL01KUlVRODErWUJZYUNqMWdaalNDd1RpOHBvMGZhcld5blEvNW1YKzBYNzlIWXdyNlZQMXhUY0k3eWU1cDVwWEcwV1pmQTArR24rZTYremYvc3dCTFNMV1B6cUV3Zjcyb3k0VjBjNjZkWnR5bjJGL2pMWjZUTHdnc0dMZjFPYzU0V2RISFdmVTlSeEZNVGZUSENiUnZXUERzWUVkcWwxRmE4ZkY5ZW51a2hDSzNibmc4b2xjNzFCTU12SXdva0l5V29RRlUvVERoRGxkczR5b2doTTAxUW4rdWZjNFIrdXlDeFZnNmQ0VEY5Lzc2UitLR24xQTdaOGxrK1ZZY0o3eTZnSzhFT20rVFRENW1IVFdocXhXR05zb0VXU2Q0NHBzdXJiRGg0Q2hNUTZlZWlhOXFNOTF0eGora2hLekcwM0lhZXQ5a09OdDUwVWNiK05sMXNzazB2ZzFEZlBwdDlLMldlOW1lejRLZENaMjBLME1WdmtVYUtPcTRsTFQ3SnVnZnZTVTg1RjArV1ZQZVRqMzliRHdrTVA1QWFQVzFjdXBEOXJDMkdRaTBQMlRjaTJyNDg2K3RnN3dFekF3NDhVQjM2K1lkRkViWCszVC9BU09QU0Y1ellOR2Zyc1RneDM4T21QeTVzNHNpNDBCeGZWNEhTZUJRdjhxK2pqdG9HUEM5THhvOTkwblZTeFhPWGhKRlZCOCtHTTYvbzdXMzZiaFU4UFlNaGVpRk04SElkSUFMQTF5dG8wTGZTWnZ2eldRazRpekhOaFFxamVFTFRJZGwvRElJTml2ZkwyRW1QaW5QRFJCcXJqdDFrOEVLY3FucjlLNHdDK1R6VXF2Vjh6U1ptcU41alJyUHZqOVQ5RGdyb0NCS3lxblVzdm9QU1ZKS1pPYXUwK01HcVM1Q1FIWDJKSHlsbTJUL3R0QlY0UzJBTG5wTkkyTW1VcXIvcSswdG5vQWpxQVdsTzk5eUdUMm1YRlpkOTNJQjJlRTR0MHNTUVEvdVpHTkR1Q0l1aStGdTV1ZlJibTFkQ2JlVTZPVm1lbmd4T3lDaUVZVDVOKzZnMHoyTmhVdDhwTEFoWTRqSHFEY2pmcmJCNEg4ZmFxcDZRdTlJUnpiRG5QaWN4VThWK1kydHBpbm5vaWZqWDBOMlM2VlluU3VMYlExbmczWUN2ZkJObmRvNTl0YytrUXpDQUtsUm9HdGJabzFkNk45L2EvYmJhWElyRXUxODdOdGkyb3Z6SkpianRzd2RvZS8vOFFQaFdUVE1zY2pFaytqRi9GUDlya3psNDBzWnEvZVZsOGVQbi9yWkU5S1dKbXhubjc4Rlo3MU1Fa0piZGxVbytlbEpodWJUMnkya2hBKzY3YUcwQ1d0QitHZVBJa0NjNXZpd3EwS3VycjlmNXVRUTByUVFieHZGS25lRWdaV0hSK1EycFB2V0hCSjloUHJnMjErM3h2MXFkQTZxdHkzUGN2YXF1NXVEZGZkZTEwWmdhT082US9UNXZ2SjR4OFRkQy9iYTErM0QxajFJQ2lVRTNKRW1Fcis2RGR1ZU1WclZlZEh4REp4ZWV3dUpFVDdzd3A2OTg5STFJcjRXak5zenNveHllVW9LSG5BaldjMnBrS09HbjcxRy9mZzIxcnYrVUdYeEFrNGgybGVFa05zc1hqc25rOE5zQXpMNnNpV0hFbHhVYWl1S3FwUjlZSTZhR3dEakVsT3pBaWtNNlE0MzV3amNQK3JzMmFNSlBKRVRqcXhWbHRWdld3Z09pNW9jVTh4bUhjYnF3bEdncm90Z3liUkpTUUFuWkJ6NDJadEw5a014NDJtdjVjN1NuNzRXSkFpYlZFSmV3WU4zOFVJQUROSHRuekVDajBneEtqYjlzNG50Z29vSkw3SSsvdDVmNlBNM1grWldWQjlGcEp1YzdtUTBqVHF6NFRlZm1hNzc4YlMyT1dQd0FDQTVwM1RkVG5GRUJ3VUdNeGVXRGxqUG41cndvNXZNNC9mZ2g3NmVkQk5KYitLcEZ3Yytqb0gyeGRFKytaVXVBUW9QTVQ0cW1TMHhHa212bEp1UmYzYnBQUVZseDYvQS8rTi9JckxoSXQ2dmk0a2JpZi81eEp5WmJJUGsvM09PRUNIbDJDRGJ2RFp4cGNGbnA2K1I0dHZUK3YweWVFcWRFOVB2V2V0RkIyQXBhZy9HMTk4dmNPQThrcmpBblZIL1pwNlNGVjhxTVJnOXpzaERNOVhUYTBDbWtCd0I4NnBMQzRPalg1aWxUZW9IRkhmOG55WllreTJWd0VnQk84aktnQnpNNm1uZWR0OUF4SDNIejA1blpzQ2NXQmh3TERhZ21ITzJEcHA3K2lja0JiQ0ZmQlQ5QWdnKy84ZTVOc28zQWZHa0g5bktKdFlqUjVVeDE1NDlaS01tRmsreFNlNTBMclBqeSs1YXRRVFF4NHlnRERTcHNtTzdXM0IzWWQyTEZhWVYzSDAzdmFCVjBJNXhmUXJ1V1R1dFlrMk8xU1B5Tlk4ZmRPL2tWemFIVXJMN1hWYzFvZjhmN1NwZll0ZHNwUDJaTVFtLzBHcVZwNUt3YmhLNXBTTHl5aEJoNXk2cnZ5OE9vZUtGeVg1RTdLSVR3YW5uRm4vdXovL2VxL250Vi83dXIrc1ROenJUMllLYmUxME1TdDd6ZWMySzAwN0w5VWlGVDBrMUxvNGgxZmtESC9JL1JIQ1ordjFNb3Z5aXQrcEhlNE5ya1JrRklYZjgrWnRFejNKYU5McjcyNlRPZmlYeEZYSFZ0Qjk3LysxaEpCclA1bGhTREtidzFhSkNnUDJXbXl5N1UrUGN4RnRtRm1MZThFTmltOEhpVGw5MW9IRkVuK3luOTM0eXVlUW9wWCt3bjBCV2N1VkdjU1pBUm80V0gvZnVZR1ZQNDREUDNLa2wrSTdycVI5cFlDRDMycCtQZlIyTUl2OUU0eTBveG9tYVE3cmRJL1QzR2JDM3EvenAySWV0SEVDeG9BYkpuakdkMUVabmVJUlZTRkQ3L2RiUmY4MFhUeWlFRWxrTUgvcmlSNFNvTjRpT21SdjNYVVRPbW96Qmk3WjlLdEJQVm5TbGlTd3U1NUJIKzcyUDM5bHkvNmwxL0ExajFjYjI5VlRBcjZsUDYraTlqOUh4MHBjY0x3SG15ZmVZcVVhK1JLNjhjSjNydXY0NlNRYSsvQjBOajluQU5QT1RUT3pyYnJTaHNTUDgraHV6R3ZVWDNLdk1qd1JXdkxhRENwVTVPNDVtOTI3KzFhY1FZMUYwaFJVOGZoaGQ2c29NM1AzV2ExMlNadkwralFCeHl0MzVvQm1iM2t4TFIzNVRWMXBWUlNWWnlSYWFhV3hpN2hJWkh1ak0zV25HM2xrMzZLNy94SmJGRU41cjF2S21GdXdNbmJ5VWgwSVlYd1BVVUo1QUpFRnFQREFBK2pmSDloTzFSeXAvV2lFN0NzdWRmVzVoQ2NpWFdjLzU2b2U0dzRiVFRGMjRDaHcxME92WW5PN2FvZVU4amw2RXZxSjdlSG9qd1prSnpDYUs4WklDamgvbEJpWThsN2tHZkFwYzV6bEc2MVFzSzNDY0U3UW5mODkrMzhyd0Jqd2svVzkxTU4xZmtJc0JsOXZiRU1CYy9MY2ZpcGxNbjdPY1BCZTlBTHJtUjg0OWMybUt6UWtUdEQyOGRyQTMvTW1Nb3hPdjZjdXhwREhJSWpjUU9mcndXWFhxQUtPZ3BBaTh6bjBJSkVQb2x0V29SNEVFTXhPSm92ZHJEMW9ZZ1lqNlpRa2tNSjV1SVk5ekRQbTVyWVpBd25TM2R3N3k4RTVZaHB5OWY5bzB3dUZVNjVrVkx0aTd0azZmSktSZkl2QkFHL2J0blhvZHl3NUo3K0NXbm5xdndpT1gzenY1KzJXK1hidXA3bU04OVYrQ1JYOVE0NWozODFMbHUyQ3A0M1REYjdYajROMzR0MCtGYzV5Wm05aDB3L0duYkhZLy94cCtsT1UxaDM4T3ZkOEJ6WjVrMWZBVE52eTluZ1NEN1NMb3ZNRUhMSFdXMkNCRlgzeGM4NEJFWVgxajdZN3pXdzhzc1ZVS09oVW9PZXBMN3JGLzdzOVBHaThvOFZWS081VVlSY3Y3N3EveS84RlZFYUZ6d1dLcENPRmJFR2MvVnFQNHdaN0RNOHJYUkhSdGJRL0gyeVNFR2lpM3VwOG1ma2I5VkJUOVd4ZDVWenZpdjlJVjdUWVN5d2NYVWMwNVplZXRhL0psUndPbHRhT0JhdEt6NGdsOUtsWk9QblFtY3NQNkdjendKclhGTDNGcjJ3eU9TLzRScElkbzgrQWtTclEzOHpKajNsUGdFQ2ZmV3FoTzBDdkdvK3VsOFJSZWhXOXlaaHFJSWduSWw2MUhiYldkRS9lSkVoMTFFem9OdjVnZkRBVHNBUXdQRG14U0UydUFWWS9ZT2FZZG9wTTZ0NTVwVGF0L2Npbit6ZzlIRERiV0lrdVJ0VGxqVEVIcUovY3dhOEQvZmdWdjIrRitXZ24vVkluU0hmMnhuZ1ZCOWdvOGFIZUdUWEN6YU9JYm9wN0RvN1NyS1VTWXducDFoekRXV2NDR2RyQWZuQlpTT0xSVHlOaDgwb2lHWUg4cmxqSG5IV2w0MjMxOWxQWVJmbWY4bDc5bTRrbjdTUXVTMGxlZ3pVZm43T1I5bnJyS0dkKzVnbi9LcE93Wk1uZnhPNEd0VkJYWk1EZjkrRHdtN2tHdy9LR2xUd2JPZFZmRzVJSCtsUkpnRnAvYTlRV01EcytDQll6WlhxQnpSMHVENEVZOStXYjBUQVcrdXNVZmpseGtIZkpNdGlJZjI5OWxqbWZOeks4T2tJem9vMExDQTRkdC8xVkovcDZnTGltaTlBUUFDNVV4ZGlSalN5WVEwWFJiaXBsWFB3SUVRYVlkZXViQm9sM0FMQ2hQNjZ2eC9YUE5OR210Y21qdjV0ZytYTnljU25saXprZVBBb3pKT1JudjhnNFlmR3VLVU5ITkNSREI0a2JDRXVyN2xRanVxWTZ6MDYweitZeHQ5djFIeDAyWGx0M3hDSFJqc2gzak5HanRUWEkvSlAvY0F5dmt0NndHZU9XaDJNVnE1cG84U3lGM3ZRdUtEN0U5M1IwRHlwbHE3b3F3bFpXMEo1c1pxQi9IMUM2a3ZtYTU2ODE3b1F1RjM2cDhLVGRxN2UyOE1qSlhhcktxdDA4MEZzbGdBUlgxaitZVE5NVUNBL0lEU3FPNVUyR01nQkQzOTF2SHVUY0VNK1pLSGZQekpzWG8vR3VEZ3cycGxaSmdWeVpPeVo4bi9FUEZlR0RzdStUQXJCbWpzREp3dkNxbGptRlVrRjFJWExtbFdGSVIwbjVLYVA2VTgyM3c4T25HRjJPS3RTMWgzTThQbVo4dk5sbE53YXIvWFF1NzV5NGZRS05ZUGt1c0VTV3RScEpzN3laOXhEUU9UWnRYZXpMVDVsVXk3YlQ4NFBRUXdpYnNud2M4a3FPT2tkSVNRejk1SjdUMXA2SklObVpWN1VuNVBZbHVqTzJIcTRGZFRicms2UStISTBZOFo2cmt3SEo1SjRUcmc2ZElrR3pIZGsvUWNvaXFXRis1SjJNWFRvdEpDZllyeXZxdVhNOW8zVmpnMFo3Qi93bTBZdmIwaEszd2lva1UzTUxweUdhNXpjUEx5RDA2QnFTNE45TUROMmdFVkZ5Y012MmRReFBFV2xwKzl1Y0NrZUZrRmpEN2ROeWQ4Q0pMMUx5NEdrOXg3a2c4bTdVNW9sV2QvYTdWQUo2bnVhV2NWYldTOGpQYzA0cDVtZUVTaUJoZjNnYWpPYzNTMDhGc0pGWFludGN1cS9wc1dWVWpkbnFlOWtkTndUNE5KOTRiZUh1aXpYbXNCbEU2QmsxMnA3MnVJc09lNXpWU1ZLK2QwVkJGVkM0U0V1Nm5kUEhZL2lLd1JXZU9jU08xM1BlQ3NPVGlqSTRVekhmblVhWDdJWmNYS0dUMU9lUFZFdTdrR21EYWRVRktqc2laWlVUSXZlcURaenpUdG52WUIwMmk1Zkl0S3B0OGJWc25QTkVYdXlIVTZtM3ZhZUUvRDNYRlpDODFPM0RPeUpUU2pQMTZkeHJSODNDeFpCOU02TlRZQ1ZSYkliYXJ1U2NGcVN0L0RIa0VLN2xIWTU1akpxSDc0M2hYR05JNXpnaUpySUhkWG5SUmZ4UTNzLzFscW5IemNYNENLcXgvS1o3VkFTMDA5Rmt6V1hHdm94UWNDNmN3SG5xUVE1cWNlZGlKSCt5T0FSLy9Qam9iblR5WVJla1UvcFZUdEpxRVgvb1BnRkFlMFB0Myt4eUx5Sit1T0VWUnA0WW5ZZnIrTFFTRHNYRWx4ZWRCSklpOW85NnBSc0lqdlI0QjZvRlQ2anc3cWZjTG9jcC9WVkIwdzJQd3VVeGVYVEdQNGFHWjRPNTRjTHc5a0MvWGg3ZExHN21USTdVdTZYOGptNlpqT3JPOHBsK0IzQkpSYzFScWpyclhBUjRXVHFGM0hvWTdCR3FXYnllbmhZK1ZtaDNKeUVZOEZDZmp3eGt4RDUvSjZwQi90VzZWWWduSmpUUE16dmRLNzcwTHArUitaVDZBMW1HQkZlN1FPUU40bW1IQmkwT3hvODBicVhqM1ZnRFhWcjZGbHZTaEhUcHhrV3JGZUhTc0ZrVWlmV0N4eUlWZFlxKzNjbTBNQlhjRmZVbXlCR0hzNHZZbzdMaFlFaS9QSE5iSVoveHJpUzBVUXVYcGNTTXhDSDFLVFRVMDRrZ3Zra0JTRldlTGhLdDN3bzlkeWZPenF4bHFRWGQ2ODliWmtKZGdoTFpMOFhiWVZDOHVabGNCYXlnY20xckp6UUdBOXpuMmp3YnQwYmtNTkE5SWg3MTNPMnA2RThZNWNodTRTSUZkaWtRMWZGaFRldUd4MXY2N3lsZkhhTFR4WTVDWXNhbUdCZVovQmcvRmRqNVo5cnRZQzVRU2xRWlpZSmpjTHh1alZub0I3THAvRUVZVHFJSm9ZTUZSS3QvcFYzVXFtL3lTZThVWVVjMjIxSjNacXhCa3ZLNG5HTWxCUERPd1JTYkp5MEM1Q2dmQ0ZXMUJIOFFxYWF0K3pNSTJkNmdQK2ZiVmpNQldiV3h5bGJtdEZlZ0g2dTVTVUZUaWxpWXl0YU4rZHRnb09iSDR2ODNWTVpQRm9Tc1QrWURhd29mSkx6WFczWnQxS3RlY2V0OGI2cHUydjFWKzg5Z0lVcERFUDF1Rk1vQ3N3cVUyOTNnZjVyWFVmSkh5WGduZXYvVEdqNjVpZ2YvdTBBRzB1YlhiY0xkWUJaNmVCUEJCYmdseXlLQkJ0bkcveGR6SUoya01DeldLYUV1cStkWThnMFlEQm51ckNsNmU3R0ZoVjFWc1JETjhLTWx5eWJud0tXWUxmZC9yZWJvcC8rc2dhRUNBb2JpazZiSFhYa25IMG45VWhseFJjMmpTTm45U28vb1ZsLzVTQkpERm1URDVFaHZiblFmRVNJV1lQajd4QllEMURYMmJ4cmgwNFJuVWVCeHZHRE80NWtjTnNrRkZhT1VBZmZMM3VQMXpMV2I2OUU4S1M5a3pEckxZTVAxWDJrUTkyemRHdFlJa1poZEtzWjF6RCtmcVhRK3NwSkZ3Qll5ZktIc1JBelpLOWV1Q3VNaUFWOENiWnZ6eFRRQVhQaXQ4czF0MHZQZGlZOUJ4aWFVeXluRW5oUmpHMjk4UXJQeGJlQWxEVkgzTE5EQ2xnTTNleTd0WCtqN1daMlU0QTFpSy92Wi8remE0WHBGVEd0dFJ3SmNXendIejlGeS83RmZPVW82cWl0dE9qMGk0R2RrSkJSUWUrVG1pUEFUWnV3VC8wM3ZwNnAxNlZUcEhKbCtEN1QvanRmMElCNExZTTl2QVpLZ2ppSDN1MHllVXJhT2wzdjgvNXNFSW0xMy9YWm4yektlSFo4QXdqV0o1bVlSN3h4NDV0bU1CVFZlQWxEQS9aT29ySjI0eU4vVlE4ZjFVRXFkZU5qUU1NTVZLRW1odjk1aVVsR0tQWG5aMk5wK0o3ak5QOVhpNTJ0SDFubCsyaCtOSHJEVko5WG02SU4wR2NWcTMvOHNibEJRTEh0U2pDbXpCS25mWmp2Y3I5eXlGR3hDTzlOUG9XcnlRdnhxeUZUeDRKUXZEZnovbC8vRG5BcDdvSkYyN3JadmtpRzMxaUhDQ0VPZ2FDUzRDdlhRMks5d0RZaHVKTjBTSm1zNG40SmZnZ2JKRzNqczhiSTM2WHVDQ0xFQjYvZDIxTDlqdUJ2OXl3VGw5YWlIRDBRRlc1Z3pqOVpCakZkbHprNnczN2ZZbVBvdXRFWjZhSEd1WmtiTUYyV0tLK0w0M2ZUTDhGOGduUFRBMDE5dm15dTh4aWxma3ptR1dWWmVsOUNSOFpsbXBzaDdNNk9tUVVOUjVNdThzektqdlBhR1hZOUdzNWpkZlFBNitveEFEaVcxSnFKWDRSTGIvU3IyYzNIZ2d2SCtEN1lpaTZIK0crR1A5Q1d1YlNMeGYxM3V1YzRJa0ZNUy9CZldtTHJhY2tKK2VWbkx4L1hrNkZUQ3dVOVgwaHBrdVhXQllxY2R4NG84bjRQOGZBbUdxK0NJVmppUkxQUmJ4a1R2cHo4Zm1pOThYUElwaU9MVXFNRU1FdmJWcGpzQ0JCaHVIanZ0ZzFuSG5hL0g5L3hmOGJ2aUp5b1BxSXpBTGM3cVhkTzRKOXBTVjdBNFlWaDRaclMwdk96bk8xMlVCMnNsODg4ckNiS0RqZ3pEY3IyMTRTZnV2b2cwNFFWa21tTFB4SlF3UkV5anpOa25ZNktTNDJ0UjRKejlEd1ZiOWczTnZqcnJBSHUzSHk4ei9wY285VkJ2eDFkcW1RclBoL3lwV3UwSk5wd0hJVUNuSG5KcHRvNFEyWHpBbS9YQ1hpUFArTWRWVTRiRGY5R0RFQ2NtQkx1NFRvcmJnWmp4aVVmUWF5NHhwNHZXbkY2bjgvUHVnZmJ5SjZQVjFpd3BsMDN2a2JsZWtVOXEvbTZHdG5MZnQyQ3Y4c08vZU5qMk1VcWxmcjE2TE5rNjk2N29TY1d0TXh4RWVIa2hPSTkva0hHSzhGQW43OVI4YnVad2lkNVB6Z2U5SXJnaE5SMW1xN0lNbEo5OWFaL2cxK2s4OEhaY0VSeElJdFhUaUJqUnRKV1QyeUxhdlgvWVlEN3J5c3RwSE0wQnJDN3YyWEg5TjQ3V3YxSy81RzJnSFFhdldDOE9sYjhRem9pcVlHUTlwR1pSOVN5ODdCbDZXd3RueHlXOEdhZVJQOGxWbXVXYUVrMDRxaXNRaW9BZjlQVXBCSDhaSTZFenRJdnp4bVpIajUvNjA0bjdFSDJqMzFSMmE3WUY2SnFxcXJ0bXc2QzdabDFLaU9tczF0MTBIOGJRR1VKOGFCN2g4cmVpSW8xajhEbms4VlJiNlRUNDBoTVZYUjl5SkpNRDF1QTFFTlJDaFpoakFwOC8rd0FZSHZEaGtpVnl3ODZiSHZ1U3RtaFIzZDZOby8wclp0U1dUM3dJb0o1TW8xRjlVM1JLZ1B6Y0pjSGtnajloUDgxeWwyVDdkNzNRUXgxcWRpbVBxK0x3dGFYTGhEMDVQZlFsRDZpZnVESkNBa29ka3MyUm14K2k0dll4b1JFLzg0TUVacTVta0puT2hyRit1cVQzakEvcFR3QUpDSTE4dndSMVU5LzVYRzhYcTc1T2V4T0NGK3Z4WlFrczc1OFpuZXBiaXZUd3hJeXJ3Y1lTWVhnc1gyL1MrV2lScnhINnh3dUJoclJRVXQ2L1lkeWd2L0R6TlJrMVlhLzJvbjFuRkpBUXhxa0FtWjZGUUtPUjBqQUx6eThYZ1FJRWJ2S1dZc2dQYW16QUpNaDAvc1VLaFdiTU42MVNJYXRuT1ZVOTVkRjFCN1BZSUk3L2NGeklsTWtVS2R5NWMwV05qWkU5MjQ5K0ZUOVd2WWR4WlhyL2h5UjJ4SjA4MjJLMWVONVVYUGh5V2I0K2lnZlEyOHhEOUZOQjlLMWNta0tORHBKTTVxMXFWaDJicWVCSGFRZlFkSHA2WXRIZVpua0JyaklnVzlydXZsQlFGNkhBQ0xVaFIxV2Z2bnM2M0hFNC9od3pEc0J5Ym9tZ1E3SjBUYm45Qnp1VWFYRDJUV0FWMkFERzErVWRXTURrVVRkeEh6aWJjQlZmVkxFRWZlU3pmbGJWMTdKWUU3ZDJqWGljZ1dMVWd3NjgyeWFLKzNDM0E4LzVTYnlQTXJuZWVrckFEaEJnbmFKYkQ5K2wvK1NobjNsUDY5SWhxTk9mNUlxOEY4OSt2MVVUQkdXem1PbWpiUUJJcHZ1cGU3blRuNEVCYWRDUEJlcXFJNXd5VHB1bTYzRytaV0xQZ29pQ0xTZGFvS1ErQXAycllkcFRIQVNiSmpJWlBsMlhnci9hQ2tGS3BCS3QxQzBSWmN0WDNoUDQ1dktUcTNicTFNSm01NU5FVzBkc1lRTDVFeEFyQWtaWDMxdnl1RG5IZVJIaXRkcGlkQ2tVdVdrSEswOHpZaFRtTXBSRi9EUEYyK0paa2RsL2tyL0plZWgvWUVmeFN3YUlLWU50U0hqOE1HMU1PK1BMUmNTcGJBWkN5cXFnS2ttMEFOOWFUN3ZNRHB4M1lRZVF0eUhtdzV5RlJDTnZkZ0tDMkQwTDZESzMxQXBNeWVTL203VWw1eWNBaTQ5S0pQaDRlNEFyM2syZkxxZFE3cngrVDhRcit1cUZadkozdEtST3lSQXVQNXdOQWtxWXJJSUdsR0RCZ09pZVpVK3FiZW9ybC95d2U1QUVaT1g3M0xVSmVDU3FGcTIvSjdFb3F4eXdXcFJPeUZtaUVJSXgxZWJENVdUZk1YNkwvRVpIeWgxaWdMdjFiSERQM01sZDhkcC9iU04vOGhORm1ERTExY1Q1SUdPTCtLUXVCRGlDa2FteWlwWGU5Sm9ocnc0NkQwUm5vVVJiUnJXcVMvdnhKRFFEeDU4SDIvU2RzdGVPZHVmZTJ3Ullvc1VYblo4Qjd6ZjhXOUVjdU9CajFlNTEwdnh0NUlWU2RYREZQKzhkR1o3UG81b0tnU1o0LzNDbVBNZWRUUXBUMWZ1OHhhWlhCT1VtWUlmTXFlZkh6Nk9rQnhTRWhGUWU4L01sRGhOK3FxMEx0dDJpL2FkMEZmQ0F2Z2VLbzNFU1ZDNWVrS2p6aE5yODJra3U3WEtrL2pITnpha1FMVjJyNDlNWGFsODBMeno4Yy9rVzNyQTNDSzJ3RDUrSDRpblNuM3lVdWJlVlU1RXNGUnNmVnpzdTVuNlVycEw4US8xTEtiL0hlb3dqUUYwWEd3RXBtYUtpV2FSN1hqdXdzcm9sM25lL0pFYXQzWjZBNnl5VU9LakIyM21wY1NlTUl0NVJ6ajdRYU13bTc5aDJ1YzcySC9kUXQ3YXQ1VEdabEZPM0lOTUMwNmpKRTJjYUdTWDkyRTBwUjYraXJzTjBVZ2x5aldXbkhhK3VVMkJYcVlCOW1GVXgyT0NUakEvUGNra1pKL2o3cDZLWEdTVEZQMjI3aS9SNUJ0cTJ4UldFekpGSmZ3NG1vVGZiR3J6S1RxUlJ5VFBPMUU0UmZnWGlxMTNMVWc2SjdKWTZLNC85djMxUWM2Z2VkNWVkZDFBa3cxV3ZFYmdtNWt3cUJyaVlDWE9LVjFSdC94WmVMVHBHRmx5N2R3b2thN3hBTk44RDJWUDdLQTZaTlk5VkxxNmRIYjVwNUxqOHBBYTNicVRFZzdTQ2d1ejAzVHo5MW9INVhNOWVhbzVOd3RYWUJvSitkNVJ1YSs2MXB6SnZiN0gzVDJ4NnpBUnltU2g2TTlTV2dJMnZjOUhFekVSZU9raGhUeUsxdGMrdWtCcDJMNFROTXRDWGhnSWdnSVBZRlhjcXBiekJZSVlwajBwS2hxQjN4bXE3bUl5S0VieGx0c2EvUlNkOW53U05YNUNHenVjTVd0RlFLZTRYNXl2RVZYd0pIckw0WlZWQjdDcFo4bUwzelRDL3l2dkRFL29rL0hIWlFRL21FZmpLenlMSFVVS08xbjVTSTJFZm9VZkxtMUN0cExKcksyYkhVWFh4aFYxL1hscUxYYmptdjBmbE1kZjUvMFVLc2dHZGpnRWdKSDN5aWpKSFZQZmhEa1hNTnFjeVh0c25Ha0Q5elYvTTB6T1U2bi9NVkgxenBpejVIL1pLL20xczFKbE9FcFZDekRrckxzQ3NNSEFydWxYRFQzRTZBZWZkOXNoTEFhOU1Kb3FUSkRKNWVtUmlsU0hQbFBrWkNERWozbTRsdWVBWEYwZ2Z3ZGI5bHdTMk5KeUhHUUZ1bzIybWdLZFhnVm1mRkprT09wallnZ3g5bVBpOW9HcUV4V3B3TUlYNzJlY2xFVkJvRzhKNXk0ZVc5UVhLbGlCaWx0RjU5ZGN2cXFtVFRNR2lHbXBqU2ZjRVNJNTJnQUhJRGppaVJKSEVGbWV5VGR2eU5FV1JTdDNYSXRWZ3lkTmhLajhkSmNESEhNMVdlZnpHSDR1MlJmYzdZZVljK3NlVy96K2ZkTEg5SFRlbkhERGpxN1lGNEhadDV5Y2lRSEk2dTM2QW5tQ3c5R3FiQTgzRDFRNUthU2owMTFqd21kVnJRQ2puNHllRC95aGhyd0xkTFJXNHpkVXRCQVFIRlUwdUNKcThzYldvUDVaYnQ1anZHTjlMNCtucEw4VjI4cVdSWWJBdStuY1VoaFk3Qy9wWjZmY0NtQXE4NDlhK2NKNFIzUFhVYlRFLzBHdVE2ZFhFQkVUMFhHdms2MU1qY2p6eVRLdERWUjl3MTR1UmdVS2JyTUdvRW1IZ2Nobnl3c2taT2lJaE5hOWoxeFgxYzQwNEJQQURvYURMTkQvNFA5MEtlU1NEMWNkaTV4ODhkN29CelJtcUxCZ1RoRXd5dG96NzcydHpsdStUS0tmM21SZkc0Q2NkVlBhRDlQR1lidnU3bFNiK1hYWjI4ZGp6VnJpZG5NVjhiTzVGbi81dmEyRlFyUlJ5bGVCWGJ6bEtxa1Z3TlFmM2ptc3ZtdW10RmhHY09YQnVSV2oreG9MOUE5amdzVXF4VlREZ04wd3NEQkhhTTk0cmdqZnpJbGdGQU1yMnE2OWM1NktuYWFzSG5JSHNCdFpibnU0N3R3N2VQV3FOaURlMkk4R1hhdEhDOHRzVVVrYjBuOXZOZVZJZGpSM1NzQzFCZ3ZNbWJIN3RFQ3NaY05EYlh5OFBIN0FmN3lUeUZqMnN4Y28rVlZKVEExVUZtR01kK2ZsVHpnU1ozaFRHLzd2eTQ5cCtFRDlyU0hOSWwySnRxZlVaekpHZ2tLeWpCVUNIMDhOQ3dJajlRTE8rSDNJM3NwTWliZ2VlcWRCbms4MWRQcDdhby9PNDdsMVo4RXRISlR3SXF0bkFIWmJNREkzU291WVIzQU9sRHZtOE5Sa0EyZDJXVmx0d0xlaGx0eHBsUmlwdW15dHVrcjZzU2tpWVpiclJ3bnIrOHFvN3QyMmRvdUsxQ2Vlb2dWek9GUG02Qk9pRm5LMUpLRG5VSEFHY2Jxb0E0Q0lQUFFHQmZEeHpSeWE2dGFqYVRjM2pHempVZzl1RjQxaFQ2VmlwTG5pRS85K3NScUkxb05NNUMwU3B1cnVlb1o0bzdJeG9sNllyS0VFWi9QRXhTUWxGcUcxcjhoVEFXSldKV2p4NkgwamE3RkNiVGxEaUZ1L21lWkpxU0FXb3M4MHQ0a2s2d0lFZ1RkTkdiTDVDazVsRHpKT1FROVh4ZTAzcFN5VTdlZU1sb2p5cjBXR2xRbW1MT044cE5NaW9Ibkh5VXBGYjJsRHd4dG5OcW82bHg5ajhpV25vSjMwSzU5Q3BnZ0tHcVoxL3dwTUgrVFg3WERQeWpZZ3FtMWFieEhieDBoUjU3dWMyUTRWekt1dmptd3o2dDhjKy9QOXRlcGhVenlCeG1ndHlUYU55V1huMC81Y1Y3RFJZMEU4VldTajNVd3daUEM4YUhSMTU5Y0FHY0pYZU5wVzVIcXIyVU5ZNmhyOVFmSTkrZ0NCQW1EWUhXSy9ydDUxWS8rTHpVTHQxMTM1TUlkaHF0ZGRFaGNsdFcxZTVydmJDaGkvOEFabVZSMDcvY2xCV0lyZWt3bHlOYUtuSGpsKzgydjhGbW40UnNmaHFNVHBoaUpzOUJQeDRuelJOZDVmcktoWWJqclBrSDg5TGorWXhVNWdqVEF3TkhCdlFCQUpyenV1eC9VZEFydnhXelFGSVdSQ1Baa0dpam0rcTYyWlFDZGMxbG1XM2ZJSkljdmVEKzR2bEJDa1RYT1dKTTh1Lzhqbnd4bThINHdJb2I5enQyZ1pRcjh1aU96SFFLbDU4Ykc0VitXSU02blJ6cWFhUktIKzM3MEdtVE5FWWZxRC9OcEx3SmR0MzZnZzNKN0R6eWhkZVU1UWNVZUFBUk94dVJjcy9VR1BhVHphbjJmdm02OHRMcTdRa3BqTklCdnRLMzBNZEFrOEFjVmFSZ1J2eGNFenJWQi9MMjk0ZTFwL2VTODBjN29vYjVDV212d2dkQmRmcXFHTWM0RGl2cENYN09zU3d6NWh3MzRMZEIzWkRPVGgwcndMWEtGL1JaN0hubjY4N3orZGJ2aTg3Vm95VjNZeEZMQ1Blbkl5YWF4NDRJS3NscktYdXo3Tk9uTkduMDNyZ1NaSUl6SHkrdHlSVmQ5QmJ0QmhTOFh2cjFCa0h4VWFseUZad09Vam5hVmVLcXJ4T3VVRjhXUXhEeitVcUhzVy93bWVEOWxJRFRuNGRUeUJLRG5ydjZWZmZEM2l0bHU2Z0ZCcjRVRXdUQnlzeGpBRVBNWFJQWVArZWl3WDh3NW9XUFFBTEJEUnR5NmMvZFB0RkhjbWl0dGJCMGRrbi9RZ3FlSnA3bWUyZU1rQWd6alVKWC80dVdiTUZBdGRVRDFVVGVFWlM4c1pHSFd3Yi9xOTF2dUszMXFEM3N2VXdiOHhwTVpRZThGdVdaRkNNRWpENjFTZ0RieEJqLzdPUHYweEVIaWlGOTAzYTh4VE5MQ0JoNTFKSWtTVDhpQ1YxaEFnclBtNVhFK0JPZ3NqemtzNGtwMzFDWHFvQVRvQThMbjBIL3crY3RGKyt1NlFDRUxYbWJKNjJtYkVZUVhiVDdtTUNDMXRoRDl0c2dhK0ltZ2NDZDVRQjY1M25CaWl4T2FNckFpYWJPdytIcDRXUVdKbmxzWVRlOVBvak9jUVlERmQxZXVtRCtvVFBWUmNDa3c4dnVaS0lGOEw4THd1OFV1NW5ITVFLMFZCREc5SWgvenJjUFE3bjNEQ2FDN1pQVHZCdzVLOHRjWlFnTW1VbjRBTkFTY0Vpb3JDTk0rUC9yVlBMWmtjRUlGaWVRMFBhUG95cFNMbEgxNytGMEF0b09LZjV0MnE4V2ZPckxvUW9jcWpMSjdzekx4cDlncElNMTlxZVVXMEcyYTdzakk2R2E4cERscFk2MDN1MnZ3VC8xVFI0cy9nZXNMRmJTbldrS1c4cEptVkRNOUxiQkVGUHlXNDRDRDRhSTJqYjY1QzQ0MlpjN1NPTStRM1RSTjhEWWxZNXNLQUxzbDN3QVlJcTNnMUdHU2xuemdiR2pIQXYrS0d2YzBmRVpSTk1scGlpQi9BZ1o0NC9tM0N0NTlxanhnR0hpM1lJbTk2bGJ5VDdkSis2LzhrSENNcnF2ZVpGOEIvU2NJREpBemM5UFFydmgwNCsyRkxPaWNzMzVyczhKV1NaemZlVy94VEZxaTFwZVdEZWlGSDl2KzZkZlZCTk1abzBRc3pTWnJ3R3RDOTRxK1FGNWE3SVFuMGRrUC9qVy8vWFlYZTNpYjZPMnBTYnNBUXdIS1l1N1BKcTI2aHJBdzJkdmt5aGZ5Um5oYnVCUG1ORFpJQXJjNGZXV0JRcDQ0Yk14L1ZhbDVQaUdkZVFPUnpJeGhHQVJPajZrNzU3WkM0bEZXN0N0TTB6U2FDQWlCRGM2dllCdnk3N3MzU3hGeFhRaU9EeEhIQ1ZFMEJTakN4eHVrUjlLMDAzK2lyOFhHK3JXMWRDdUJ3ejg3N1dPK3d2YWZTZWVEYUQ0Ylk4Q0I4TUdkd3IwY2t2aEllVmMxTHdrU1pVbXdJRWFPYmJqbkZpWHJzTk1ISXNscUlxTGhiL2h3SUpuYkttT2FYYzBaYjlieDV2M05SUUhuN05GcEZvZUk0cWVwYWF3MkRqcEpHanNtYWhXUkQyOEJJZitmeTQ3NFNjQWlaT0lpVHFLNi9DVmpSbElSVWNtTWl1S0lrT2lIb0U5K1VoL2JMdVA4c2l3SkIwWjBDRTluMitFSUZlMFdmNmF1R3BqakhaK1hyaVpLcTNEanAySGVPWUY4NGlUV0c2U3BNc2tRdWpnSGpaOFg3L01oemx0V0paSDVJZ0N0N1U1ZkJuUTZxVWR6UmZsd2EzU01TcHJhMHF2MnhrdGtua1dSaDA4ZDZ1KzVrb0ZxSW95TFZ0WGJwTjR1dDFYc2U4QVE2ZTJkeDg4S1NLN3hNbTVUQW42dnk0MjdHTDFPZUNFaXlmT2NOdWg5RXRqWHVGV1RYUWxXOUR2Tjl1NDIrSUNRR3Z6U2lJWjlONTVWYWo0NU95QWRLcWtCdCtPeHRSMDAwV1h0SzBrQjZaR3B1RWRqVk9CVXVrNXBNRmUvWEJkcWtTK0JDbVJxL3B6OXVEN1BndmYzc1FsQnlkTVdRcmlDemF4Uk9nMHZOeUZWYzBvb2pXckhsOXU0cG1sTVd4YmR3bGtHTHZFSWFiejJvanBYSmdCWDN2SThuMGgwT3FjZHdBMzRadTZoRE1VRUFyY1ZuWDVIUS9EdnQ4UGpTV1F0UXkxVVVxeCtaSWQwVzdjdXUxSTY2TElzeWhtTTF5bVY3MXV6U3BLNVJ5SFBYZkVmQ1JpRXNqVm84MW8xeElqVGtNS1IxZmNENkRCNDR4TVhGdW85OFQ0a2x0YjdlSE10cjZZcERTR2I4ODB2a2ZyR2J2YnVxUEMwc0d4ZHZtWkJKNWFob2dDMVo5R3VHTkg2NUttVmViR2tlR1VhZVp4NjFJeDllMkJseVBQQzNWbWVwdkkzeXk3NEZ5dVlyUU1tS3Q2NGtPNU50WHVKM3lxVUtTVDdGc0l6TGpMbVNYWmNUMlEvVnEzL2I4LzZBZm9PSXVBZEoyZUl0K2RuYW4zbTkzd0VEdnpOcXd6cktxVVAyOW1wNTVaRzZEMkhGNHhBRUR0TERleVJwUlZRQUhZVWt5K3lYT1NmNnp0ZGIrdEFDRi8xRGJqbHdZQVErcEJjTmdoRUhWZ3hzUjNKdHVNNGtCRVlTWjhhQzRTZ2dmZ2JnalBKbFRUVW9GdzVXZzRHSUVWNTUzUDJOOUQ2Nk1UbkZRU3ViV2ZUaXM2T1Q4MHFrY3c3b0Z2MTZZNjM5TDkvNlp4NTR0SDQxVjRPRU1oNFlIaEFDblluUktYaDh1VkI3ZU8zV1hRdVBadTF1QUVGR2tQa2c5YXJYUlYxOWFtUHRTZlFFLzE5NDdIVyt1N2k5N1ZKSDZmb3RiempWZlFzY2FjSHE4dWRqcWZDckFia2Z5T0VhUWkrVngweDVNaTNiZE1VaVZtUXBMVzhUc2xwT0lsVTZYMkQwYndQa0hKcy9JS0NaTHhHNDdiMVk0L3kzYlA5VTZiMllvTm5PL2xCN1NiMVJuM1RkZk1wQWp1MnZsLzArUFFpM3hidW15c2c2NnFwMzl3ZUY1bDVZLzJ4ZWdKaUZucWVBeVhBRE9KVGxDS0s5MzNmZG5DTS9INjd1cExCWXc2UzRSOTJhRThteTdjQUwrRUQ4NERtNlE1dUZVYmI4eCtWYlJ2QzNjOEJCc1N6WlB1cXhmRkVyYUVHZ0hIVmsvc3ZwVmRWSlZHdi9oV2E0K1FGYXFpb0plS3FXZ1JVdHR4YTRHcXBuNlVHOXhOZFlWTjJ3emVWQU5DL2MwRXpuV3hOUTh3VEFJTHFYRnB6WTl4S3VEemR4M3piVEhUTGlIUVV3YzAwajd2M3g0T3JKM3hKMDhnVXhVaFBPKzB2dXUxQkZpZjNmajBsbEx0ZVp0UG9sbnJNVEtpNkpOQ3ZFTmRPdDMzRlhjb2s5b3B5dDdad3FlekxNSisrZzdjU25vYjZ4MmZUR3lGUWxpdVNYMkV4ZnhLSnpTVDVpTHlUZXJNWm9LZVIzenlkYW5Yd2QxdXRnY3BFRmNkRlRiK1RIK2J0K2pPSk1DbTZJeC8vcXlrcVVjY3hhWTF0N3VZN0x1UUJwT0xSalRubkRpcStOOStpWFRobnRIU3ljUXlUZU9TSFFhRHhha205bUs5dmQ2aWFJZzA5d1VsQ29IVmU0UnFJclNMbnA5TEk1T051d2NoVkpHdnhjempNN3g0NDlpY2dLWHNXS1Zab1pUV09OVlZwYThEZlg4MTY0OTdCYVdPTE15NlB2V0lyU3crRjFST1dhNmVoOGJ4V1dYanRncmdyMXB6MDMyVWF1OEF2Q2dITy92Q21JSEY2aDNHaWpZdnpIYUNYU0pIUkN0VTA5aW0rd3ZkeFk0S1BvMzQrQ0lpM1pDYklGV3U3WEErQm9MTU5pWlBjZmtvU3ZFRENOZDhvTGtIb2MvR25majZsT2lBNDJwc2IyRndRcFovSGxPaUp0UFVuaGtFTzR6SVFrdXErcEtrNkJNa0xkZURIdGI1Y2l2cTlrcEZpemQ5SW5kTi9aS0dGTGZsa29WM0Z6Zk5ldzdPUE5VZGVNTnd1RUVzZS9mZWQ3YUIzS0w4bG05aDg1MzVadDNXcmx1eWxkV2lzbXhsT2tyZmFDNlNUQjFyN01NMHZudFR0dlltNjlGY1dtaG1xcFZVanpJQzF5ME4zU0V0VFRDelRGdUI0QWdZS2NBeERtcVNPbi9aTGMzTFlMaUpOZ0tzOHRGOTlGK1E1M2FaUGRkRGhXOWdqK3ZzMi9Ub2JiUVZEVzlNSlkzb1F1WFJMQ3dmTzNTalB1UzEzSFllZTVZVXVlVFI2TUs4UlFMU3lyaVFnZ2FlZ2FqUVQwZGYrd29YU2UyVDY0eGlnUUI5ZFZBMklJWjZwWnFpSmVHeFhSVElUL3VLc0hqRGR1cDQzbmFhSlQ4L0xxcUxXSUo2UjMwNEVRZkR6cit1citSbW9WM1NmNmNvdFF6Z2NWZlNGb2tGVkl6dld2ZzUvUzdTM0FFcXg4V3VuWlU5MHRRUHd6cERtWDFvWTl3djNxWVFwYUQxWGNZWHNxY3ZWVzVKZTNDTXFEOEJYTG9EbC9sZjIzbU5aY3FWcERud2E3cUhGc29BcWFGM1FPOGlDMXZycEI0blRIL2tQWjNZMG1uSEJ0bnRibkJJQVVuaTRSMFJHakFMeGZ0OG1kQ0luZ3E5djVYRFZYZWNmMy9Md3QxcWpPckR2R3duMk5IUXlBR21IZE82REQvL3RQNTZGSVNmQm93bzhUL2YrMUFaZFFFWm1kVHE0bVJGQVlUTGdNenpIeUQ4L2dXcUh6dDVxeFNzY3BINk5iNDdBNnFySjhKN040cVc3NlA3ME96MHE4cCtvVFlESTBBUTlLWVdENjhiM0wrVDdkbjJpSmtxSW1IdFhzZVUzQlRKMll3L2MwUDM0ODhUKzBPOEVZRThtQlFHRklKOWswOW0wRERKNU56NThOa2ZqNjdJdC9IOVBldjR2bmVuRU9xWkdLNmM3Z2JhSXExd0NXZTFVWktPL2lrNXJ5V09vNjBoaDJndHk5ZWxsZ1l3R3NEYTRwc0VDald0c1RnaEwxTFg3NTBmYlhTZm9DTXArenhLL1pTaDlYbHUrckFTVTdzQWVNalpZdWdUMEZFcVFab2owcEJPWjBVK1M1K0hYaTcraFZPQzFzZUZXS0k4WktGZXliZ2owVVEzcGE5c1lzMTZ2NHdVVW1heHZPeVUyQVMyM1FvZk9qdHVaRWRpVjdzMXZiMHdFYjZIKzJYTG9FZE83YUh5bk9ZNCtFRVdvS1FKRjlEamh5WTBadVBhcHlCTk1DajM1Vzh2ZEFzSTFGNnFPV0tDdWNqS0h4MzFIRnFCUlhJbXYwaXd5NUpKRTdHR2ttVndJMFl5R3dyQm1rN1hzR0VwL2h6UGYwMGJ1U3N2S2NEMkpQV21yUElkVzlWbE9OUHBiN0dtZFNJQm16Q1pDNFRuKzFwYWZkd3IyNmZlZnI0M1IxWHpVWWdxenFIaXViNDRMOU11MlBGMzF5clV6TTA0V0pIeDc1UTlER2dIU3VOWU5JcytwbnprdXJpeWIxNlV0VW9SYTI0NHJjbWYvVTkwTUM5UGljVjNldG1aMEt3VDBtRGpZWHVieUxsRUZVUFpNL3RqbjVDc3gxY0ZvbjZZQmRVY0hncU14M1phZTJoWDIyTjh6MVZTWHVhQTR6aWExMVV0NU9QZG5sb3pZd0IxWjl5TWZ2WmM4anB0V0Ivb3hvV1NRUGdMcVdISUp2WG92d0twZXlxV2tETW5QdUlrMXhjdy9CVk9sYzlYQUxSVEh1eE5VMWNtRVRZMmp2LzNFRVRBNkhZVUJRRFh2cXJWRnFlN0FWZ1ViMnFaYm1ZR1NoUE9jL2VGSm1zM0FYVENLU2tncURCSDAwc0JnOGYzOFpzSEwycjdzemM2TStiZFROQ3FRM1VyVFE0aHpaMS9oU1I3N1NjY2lTQzdlTWw3aXQ0QU1FdkdJdTNXN3p2UHl1UmNzKzl2NXVRTDN2U1hHUVRoUXNEU2RZb0RvTmpKa3piVUh0QnZFQ3BPQW5RUVJHemh2MC9tK24rUUtTT0ZacFNpOFdPdmIwVCtjTXpxdnlETDc4K3UxQlltTExxNU5lcFVMbUtKVVlYazlOUTlsYlR6b2tqbzlCQWtIRDVvUENpN2l1Ym81MnlabklmbjVYT211VEYwZFg2YVVZMjN5SlkrQW9yUVpMT2lualMyUHpRRGhya1piWjhQR3k2MzVaZ0VpQU1KWkVObEFpWCtEMjNoK1c4aHU4UVdwRTFFYi80OXozVVlNdG1Id1A1MzJCbytMcC8velQxRjN6ZFVFb0ExVmxyaW5uWE0weXJncXZyK1g3ZkRlK1kyeVBQNGhFZWZwSXRVVFBrSlliRjNRc09ONHBETnpOM0NRT3A2Yk55SDM5V2tsUWx6NDd5NnlMUExITHlDYURWanhyMjBQaHB6d3ZtdmpoTTB1aS9yeWZqRjQrQnZyczlYWTBKWXlpM1VRNEFaT3VyWWNoR3hzblhjUFNNTlR2L1d4ejd1TmEzcXR6VHJiQks0YjJJQ3NrSStyaGJDSitVVHhwOUF6R01sY09rSXliV04wL0ZaTHNScTNrVHVBNGRwZnQ1MytyVFA1QkZ1ZkhxWXRtUGVOdE9DcWx6ejg0NldncEJFekY0SkJpRy94ZzBkbEpYY1VRTDgxelNPY3F3L2FaaWNOMnRSeDRNUTREelIwdk1SVnZ1MURHMVUrTUhUbmJrTEsxMWllZXRnNjg4NmFKRkxqYWQ5L0cvelpjNk9KdDVwL2diR2g2QzB2cEgyNVloUkY1YzNPeFhmWDE4Yys5MjVpeWlDYUF5NU1sbkRtb2JPNTJJVEMwemRkMlp3L2dNQnVZaitBYUdUVEE4RmpEMEl1RVhROGJzNzNRTzU5bEk3M2d3RytRRkxZUVRVR3VDRTg5cW5Lb1U2VDZaSmJIdkVTR1ZxMkRUK3g3cWQxcW13MW4zUHR4S2NWeHJwbzlOaXVDUlVpd0x0dGF2aWtISXRLZStJWkFoMTFISkl1VENsQk5jNStJT0FtcERCVWJWdkdpQmJIKzNiQ2x5d0NadWNlWUdHZjUvMGZBU3dGbUhjejRIdE83cEVlZHdKbENrczFJSkJ0K1d0d3NUK2ZWa3NFckNEQXY0Vi9nSjUvenJ1RXUrRCsyeXNRdm1VRDBCakFrbXdmbW4ycTJ2QVlvcjhLT3NER2JoeE92YlF2UkZOTGpCTUY3L2N6cVhsM3Y2RXR0czRveWNUTnYvMVgveU1nOVNVMExUdmFjdmo1TnBhRVJxUDYzYm1QNEZXL0YvVHZJNlUzRGp6dUhxVWpiS2JhUlp6MHNLcS9xV2dJdWZLOTRyNzMxMUJsdjg1K0tOZjdRL3N2VVViT1M0eFBzT1NhbDZ6cW1zRXlURjZtSkZvS1Fubnp3Nlh3WGplN1E3Y01QS0o3LzlsazUzS3ZLK1lXTEdCNXE1ZDRnY0V0OXA5TlhXQ1RUZE8yd2NwcDB2UHJqYWhVOENuek1xSHdCb1F0N1ZKMkdqMUcyL095NEw4TnBQT2pLWkx6VTBtSEpod3FsSFdpc2RGTDhlaEgvSFNSbjkrWVB2dkEvQW4wejc1QWw2SFJRMC9tdCt0U0oxQStTb01WSU5lSng1RDdzV1c5RWVSRXVjc3ZyN0k4TFFxQ3o3RWxKYjhWbWN1UEx2cGlNZHg4U2dVL3JEV0hibW9CNU44Wkt1ejFsRExJcnlWR3lmZ3EyMHZseUpzejU4TDFobUovWkxaVjUvbTRUM1RhSEl5aVJITFNzUDJrVmw5SjNvV1BUN3ZOdEFzNmpBSThEOWhJdW8yV2dmSkMybnFWMFFPMWhuaFl0bTJxTXhFSjhUUlpEZFhhdWplb0VNNVZHb1paRmY0RVV1MjltemJiVTduMzUrWXRhazJ1bTJIbzFHenBYWWtUcHltL3F0NHRrY3B0MlJXcU13MXltb21uWGtCRk02Z2ZhbU1TUnhBdEJZVlNsV2ptSmRmeU0zS0RmWHNkbmlRQWlJQnRRMytSQ0xING1tUjZUcDdlcTZLdUU0S0NUY2JCSVNyclE4TXJlY3cyQ2piMWRIRU53bmpaZkl0VU1FanFCaXliZzhhdEhMc2xTcXNoS0N2TTVEckV1UXZlZXg2QmgvYU5SVUpabG5rVkY5L0liSXJVM3cyQ1JYbDdWOWw4U2ttOGVzNHpZMWVTSVhNZXRLdjlZVHFzdXVWbTA2YTJOQ2JEaFdJaHZGL2ErOS9SdEp1ZVBnZGhOTUZRaldZWmZmcUo0K3ZFU1ozNDZDTis0NGFGYXpDMmhjUmNTMHdzS3liVFQvazV0eTVnbWZkNTNkeXJVY3Z3MjlmVDRQSmh3cGJ2eWR4Zm1SZklnenJVbHV4K3VuVHNEK1hsbUdta3YyNkQ4L2NSS1JsNjlacCtrdi9DOU5pcmt6TFY4SEdwL0NwZXlWWmJkWnlBT3FGaXFRdzl4TjRRUG9Sb1YwVVNqOUp1L3A0Y09rdG5RUkNBYVpNQklxRURXU0o4RU03YXYxRVdNaHVEUHBmV0ZTaU1oamliYlZpTWd2d2RQZG5TWE9vbkNNd0NlOUEyRU0wT2t2T3JPdnNYUGNuakFOcVk1Z1BYcUQyZ0N2V2NBdUt2WlFWeVhiZk0wQlZzcXYxTE0rSG1YMDRlV2JFcEpSbHoyNUJUMDljaHJibEIyS2hpQ0ZFdzBlejFiYTFtNjI4MkFVSWZEdlREbGl3c1dqdVN5MFA0NE0yTkFXMU9OdnVUVERtUWtCU21iRmRYZUEzQWJ6TytndlE2VWpIR1hWUmRYd0s1RXc1UGFDSXlnYVNEWC81N2w0WFRmT0k4UHo4Tm0yS3FrSE1HZkp1WW9nSVJzV3ZncXIxQnozajJxOWRvQ3JkNGdtOFRDZExCdVN6R2JUU0VXUy9QWSs0TXJEbGJDL0NNN3dtMmpmME5nUU5SOS9MQUlpckU1T1VHa1luMnFFUk1vZzNtMFAxa1dSV1VRMlk2MU5jOWIzcTZFRTlQeGZaUHFBdU84bUIvQlRLdW5zYlBvc251KzFiZjNJbHllTDltTEhJcmxxRTljRWl1ZmZPc2RZbDFxTkdxYUhkc1hMaTMyOUV3RExHdjlpeTQ5NXY5Ym9zcFowYzVpdGVBK0FXcE1rUUhaT21wTDNTTjZ3OXFKc21zQkJrQkJPcVlnK09Rc3NiakdLa0I3bTFrZGhxdFg3QkQ4NERFalozQW54NGhmanJCTVJxTzMyUngvSnhldWJqc0hEVm9DdlFiQnVZWEhuaHZKQWI2bVBPcGc2d1ByQ1FSSmlrYXZDejNMUXh6a3lTcjZJTEd6V3ZQa0xRK1F6OVdBWkliSlhBcUJDRCtYdHNkQWl0bE5Tb0cvb3kzWmpSMDNjbE15T3NsQmFCbG1VeGVkZGxZT1IzNzZ4ZmxoTTRUaVNMMGN1aGVZL2IyTEFmSkM4QUk2UmMrbzEvTWNoVEUyRXZseDRHTUR4UTBSR1hlZUNieHkxUFlCc05wb3U2M2F1VXVBa0pJNm1kMzVFM1g0ZTMwZk9CVnAxN3BRSlJYQmpvSFBoMElnQkhBOFdHRFJpdm1rOGZKbW9nYklBZndsb09HaDl6bGc1bWw2ZFRyR3ZnWE5wYzlORTl0UVRmeFNxQWhYdDdIL3dFUnBtU1AxWlp5UEdUWTNyaDI0Y29vSFprMk40emhOd2hDR3RzV3cvRUp3TEJ6czBXRTZwa0dzMExoYkI3RkozR2Vza2hJdVlPc1lhY28rZGlSQmJyTkNrbmh1Vml6TlRXUlR1MVBvVFE5VGZ2V1pnQnBGYU80QWdXTmQ5Y3M1T2dqSysvdkwxR1V0TjMydXVWZ21HYmV2Q0pEZXRiN1pZTkRnRy9zNXVtTGJST2hTZ09XWFIxbytjVEpWaG5USFFaOGVkUnZiRTRKbTNkaEVFWm1aZFIxWG1EWU9STVZGRlFtZzVZY2IyaSs5U3p5blRjY0hJUmcvSGNndkMwN2ZEaUNXNmZ6V2xGUnVCNEEzZlVRUkIyaFVDQVg5eGJjeVZ6TlBpMXpzb1QzU2JVd1YwZkJPVjdqRGJYSU10WERBM2gzR2RSWGhCMEdIbXpwUndjTG1TZEpOcm1FNkRTNUgwUy8xK2dEZUJBSE9rNkhwNWlFNWNaY3VPdjd6VTB0ODk4R05ubXJJTnRibDhra1AvVXNvRUR2Y01ZZXd3S0JZKytKNkZGVmJMNWhMay8yRHdpTHI5UkNYdm43V0dja0xLWTZQRnp0Ukl4V2x6WjFpY0s2UFFoN1E2Rit6bmcza1N0VmhDcVc5UmJaZkhHZzdRZlRVRDlMWUVJK3pPVzNlTDhvczU3R2ZvTTl2eXF1K2EwcCsxR0ZhLytoQVN3ZWcrOGs1aGZyVzFPZTkwMXY5QmRUT2hVaCtVNy9pdTRmSjhyOHE5UW0rN3pLdXNPbFYrSjBYQlZTazRPRzBMN28wZmZvVllrWFFHQ1NJYlZiNFZHbUxPaVFDeDVibC8xYzVsMHF2eWJNRXZkRVAwek9DL3lPYVMxNVhLVlFxZEZ2TUQ4NXhiUE55R2JkQWtIYUNnZkhYMVlGN1BrbGJCSEl0bUU2c3BWS25Zb0dmMHZHYmhxVkMrdWRGbHFoVHFIYWFzZk1MSEdiZlE5YytKekRvampnVEZrd1cvZ3lSVWlvb1hUWmZhRlFLL0RvTVJSWWZQZzNMcStOdmpub0RRdUEzOW92VHVOamhuNnk5bnFib3QwUHZxYUx6NzI3T0lXellpWHBSVVBCb3BhaXIyelFTbUVHQjRKNUdGRlZuK0hELzlGU0xVWVB1MExtaVErL1ZRNVh1STd2TTRTeEZvNS9tNkg3OGQxN0lNWEg2LzhDcTNWdVpReGd0RXFjMEVmeDJvS3ppK0xkNVliZ0VkdWFsd1lkS2VoNlM2alM1OVFKaHB2RnFEb043UFBMd08xWUtBU0h4SFpsbmxDOXlFTkx3QmJSOVBPbWVGazRqUTAwRlJLaFlJVElWMFovRHBBY2NrTXJrdmZLTzc1aWl4L2xlRm5XTTh0Mnl1MWw0WCt0bHU3ZlJCTDV5VjBOQ3VKd0orVFB3L3NnVHlBanVMSlJ2WStkM3pCWWN6VFhnVU1RQ29aUjZEWWl6bEcza3NMa0I3YVd5eTJkOXF0dlFJQjFQdXpvelpDL2tyZnhyd1hMUDNhUmg0b2xzYzh1Q1FNckRoejlMUTdsVnc3aWNMRVk1bUNpSUxISzBOdy9acFN5REYvanhWS0VnNzE0Nld2MFRmcjlNZFA5NDBnZ2ZSM01SMFBtSTBZTGVGWGFwcVRocWFrQjV1K2xSSHVvTmtyWFJVKzhicHFpMXVmbS9WVlFLb084Zi94TzJxaDdwUHo1UFBXWHBCTzRtSU4vZUV3MHVDQ29Ec2o1Tld0eDVkZGJDc3JEdFZ0TjZPbnphZ2VQeHgzZC9VdVFRanJ3RWJJQXdSL3ZzVFN6Tm5MNGFIb2NMQVJYZFYwMDN2dm9nTGFsOTBhazE4czZWcE90SFBySURNMGFLQUtJQ0J5Qll2bzc1MEtXYk9xcUplTm5RejlIdXlHczk0S2U0d09QbFFpSGJZSTUvZW1CWlFEQlNrL3BYMDlwWUlyRzJwYkk3S3dSbUVoYnM5c0lFUDVqZk1IS3V1MjZTbUJZNG1EdUZadDhBZ29PTm5kand6WjIvcm5lSmxqNFVIVjlSRzMvWUdqSkdmN24zaXN0RVNURXFSK1l5aVZyNU5EUHh3QkpJakpEV2hKVE9maEhLSWJYRVRwaTgwc3dXUVQzbFNuSmZlSFFVRTJCeEZ5MklEK2NjYSs2YW5JaURBdnlpakp6N09LeTZvWUc3R1BVdjhYTkFHYS9qNWsrNjFTbk9PN2xabm55THJPdzFNdnRFOXJ3eDYrdEd1VW1tdWR3L2twdkRoNWxkRCtWK1FiN0NicThQcVF5ZFlXQytEemxVZTJHUHRXQzdmYk5yRnFlSXJjdEI0anl6OWVIb3h1OEdxK01laUZVK0pXY1dpN2NsQVNZOHFSOE9xdmZ0UzJhbXdhR1NSd1M3d0pPSjlnWmVGVUIyeUVwV00rSmNzdm5nSmpyb1dicHFvbWN1Yk5QcjJST3hTNEhsL0UrU1VvUEE0N0FpbHdBRUdzV3hSZXZWcHM0akpqMXZXWVNpdkkxeGNlVnkxdldNNmZLb0FVSjdtOE5WU3BMa1F6RWJodi92dk5vbFpxbmNoYy9TN3dEZGdGdG1wOVZsbXAyVXBWcnNIK3Y0SEZHbGk0c3YvajdoWTRsUmZHUy9PSWxEazlUR1FzYVh3cHFwcUt6TjMwaFhhN1NaMVAzZ1Q4YWRkVXpqbml1Sm9DRUtPVFRDSDBIdGdlVFdJa3Vvd1pmZUtnNSs3VWdUd2VTQ3JKUUhGQ21GMjl3Um1qZWRQN2d5MjBsUDhEb042MCtkUHA1RG9DUEtZZ3pmUHB3Qldpbno3Yjk3V3l3Nk54MGtVNC9tWlIzWjM4ZHNGVWxxTCtmZTJkTVpSTGZFZWlnemJESmt1K0NyNXhGbm1vZnNEOHc5SGQ5c1J5V2ZlWmQ1bWJGZnc1end6dGFHeTRCTUNVdjBaSzJhcTd0RFlqYVNoYVRNQWxhRG5uQU9uTmhPTkJ2YmhSQ2t5Tk5IOVlOZ2xxd2Zxc3hQRWs1Qm96YyszVzk1ZUkxcncxd0FVMENsYjArWjVWZ3BvR0FyUFZpN3RHZFNKMFRiTytzY1lDWkpkR3IwNDlibHlZa3RqbXdzS2VXRzZ0VlVia3I1ZmpvVDZUUWxMd2Y1R3RsRVJnRWpWVVJXaXpPN3BDMVhQSGIzbTlpSmdPelEvZFlWL2srR0VMNmZadU1Gam5QMlpOMnFMY292M3h2S1B2U3VzTkNNSEVLUXl0UlhjbW9BMXBFQ0ZaSi9WZ3NSWTEwVzBXQm9IYXlFWDZLWjlFN2xJMk1qNUJ3amVVRDdwYUxkS2xSNHFYbENPdlFsVkExbDQzUW4xRFBYMDNtcDBqVnBoMzArVlorZmxTMWRhNHF6MGtCMHhFK2M4VmlPZVZPeHR0K1RhS25mSTc0MGFoR2oybC9EcUdBZkhJd05TRWk5OFk3T1dXck5vbUJpaEI4aFh4K2NSREdyRHZWTGNXYkZ2ajVteDZ4OWdaKzNQdjZXbzU4VnFvWkllSlhNZGhYZWFzR1FMdm1neVBoQW5KNlN4K29kYkI4OEdpUDZWd1Iyd3pXOUxScGJTZXpuKy9zOHI5T3hjeG9BV09zVW9zS1RUd0NZNzhTYjMvS2JjZ0l0cUQ3c3FIZG9kQVJDQlRmWUQ0RHYzMHlQWC95S1lDQjAxWlVDTkJPTjB0aHprV2RlS2VrZjdQZnM2VldqZm1nWTVZbDQ5UVdmcjRXVlV6NDhNOGI2azllR1BuYWEvK1M4SjhLSURtTVdQTXRjbVpWMVoxSEZCak5JV0ttbUhDODhWVUU2WnlVUy9RWTAyQ0pOcWdnclAwR3BqWml5aHUwaSticW9xd1JZVkNsbldpc2ZLdTZvdC82MTQ1Uk8xZ3VoT2lUMklIYkhFYzFtdDdjbkRHZ2xDdXVVZ2xrZVV3MERhTUMzTHpGL0hzbDVTR1d0TXZQeWJDanhtc1Z2a0JJNDdpbkNKa3RvSHUzM1h3V0pWZTB0Z1pvbVhxMVE2K2Q5OTh2SjhrbDdIUkVlRzkxR0lyTFZBVHJRejNDM2srSTcrTVB0S2l2Q3NMa3pIRmVUM1ZxRjA0TC9OYWs3UmxmSEh2cE5qM0V4d082WFpJeEdCV2FibkFaR1V2ZFVndDJBOTdud0h3QUMxVm1rOW9ZQXBWVEJyVVNRMVh6MzhkZFBKMHBmQllwbGNjT2ExaEMrTDVObWc0ZllISG9hckR1RzFPdDliUUNGTEVIZWNwVGd6ekp3OTIrZlVSbytFRWIySG92WTRReWdlL2E4K2Q5MGZBaHp5SDNOT1hSdmE3V3VRN1k3cDg4MGdEdlY4b2Q5TmhJVHdTczdVQVRVcklnUWJDYXM5K0lzZjNOYjBaTmRSc0xnNldzUHRhVVo2OUZFMFZSMVd3S3U0V0p6YUtuL1p6VE1aUmNVbHgrQzZqTEZSUkl2V0pNR3ZMWkNXdFRSZC9la3I1NUF0RWhUVW9sZk1reWUxMmRhY1dDbHYzeTVXWXRzZm9EeHoyWXQxMTBuY3RoRFZOY3NPTytnWG5WanNyOHBBbm8yLzZVMGE5Mjl6dS9UVlNIQnNSVmhFb0VTaysraXZsVVduRm5Bait1d0p3eDI2aUhQckZ2QVZsU2lvSG84N0tTZ3gzUVhEQnJ2WHdFUmg0cmdDZ1NwejEyTHdoaDhadUFjN2c1dm5QOFpnQmt4VkdybWxZREVIdHBMSytpT0hKRkFhd2crTlIrVzRMdDA3QStiWEhESExGNDZMOXFYMGlTTEVNT0VyZGNmOWdTR1lqeVk4V083QTkzVksrc01jQlRJcnZRWFVERlB2VXRramNpM3pzRU12UzEvRUZ0SSt3dGFFWE95VENNV2JYUjJucjBXMFIwT3ptN082MHMrOGlEWGd6c05vV3Y0MnVGSC9abnlOd3NDNXRqc0NnTkxjQ1pLbjdnclM3elc0a3kyQW5ZQmlzTlM1SHhZNndUQzZ4Q01UcmpFZldicExVeE9NOTV1VTlJVm9nYllocytDUzV2WDY1dTU0KzBZMTkxMW9HdlZlTlYya2dFK1oxZU1scUxTenRKcFVEVlI1ajFBMFd0S1hORllIcXFNVzVPMkROdnRuTVNxcmdvbDQwMkdpWHhSTnhpUS9XY25LSG9aZjVKd0o5azdoWFYyYVhwT0lCUllqbHVRS25xdjQ3K2hjZ3NoTlFMWjVHbnNqN3RHV0FVZWVQRzlmUUp0VHBqUmZPZnpSM3NVMThUWlJ4R2ZPL0lDeGZTdkpjTlhCKzNWMzBOMWxnSGNaUlR2M25tbld4UG1lSkFyVUxRVEZMNURKV0hkd2hWcmh2MEhnWDRoTmN0OWRyb081YUY0Wi9rdCtCTDltT0hPR3BwMHV2Sm50L1BQS0crTW1TVTMwQXR2MFAxQ2VlejYyZ2FhUSswZzVJa21mSi8xU1VZRkV4NVlGTUgwVjcrNTJQek5qRFdJeEZ3ZXdDOGdlRmFzQW1jYVJ4K1c4U3lCZ2ZjKzF2WEQ3UlJUY3NGZlRxZSs2eXIrZDZRVm9IamFxWkpUTWpCOWt6VW5INkNxUnhpTk0vbjlpQUhaZ0NMMENrOGdFT1c2Yk51Vm45R2gzcS9xbXhLZXpNTklYOEZEdGtWWTRpT2czekVzZkhoTTFQQ0VtRXI3cWVGbUN3QVVXNkpwNnJ5alZHMWVPRVlPU3hoMlc0R1pXeGcyUThBOVZrM0hUTGZDcys5TDB1RVlLaXBCNkx5ZUR5a2ZWQnpCQlRFVloxVGFVcFoybm54dEc0K1lWaEpwTEluL2tpQlpIYzdEVXZnYnI3UmxEdjRyZmljNGR5Wm8zL3FDblZjNXRzMWhDTUVmaHZ4OXh5eU42Y3RRME44T3ZkZkpsZ2s0WG5QR2ZlVkZmQnZkK3BsVE9XMWdTYm0wclVGUzZORHFJZFFYTzJCZ3NvTXRjb2dQZkNOUDBZOEVGNi9IcDljMWx6aDlhT1F1RExpZGYwVktZRS9ad0VUWGlkcW8rVHBvTDNxVVlOOGdmQVErQjlyaGptK21yMnJHYW82QkFOTU1xK3VOWGx2RXpBNEZNWml5TFNMUzhuaHBaWGVPaGlKMlo5Q2JXMmczQ1RWZzA3WFpSQldzMTB6TDdicnlBcXBVai96Qzd0ZzczV0tIZ0d3Z25mb2FaRHcwSDJSK3l2TFpoVWJEV2R6TnpIOUJvZjZoc1J5QWNOQnJrUXAwaFJIWlpINnh0cmhraEtyWEgzTFRQbi9Xbk5VMS94M3hRVnJ1UlBxT1AvSW5XbXZxcWVQMmRpRSswMVlMVE5GNy9EbEN6WUpjNzdINmpvc1lPU3lRTXUwQTQwME44dmV2LzZjUUgyVitOTDAzajVZQ01aeFRJb3QzaGdWZFNCbi85bysyckpCMElaNittMWp1ei9UVVZXdTZqYUlPNFk2Rm1FL29LTXl1TXhRNmY0NE1IY1JNQlBmR2d1djYwSU1aYmhLUy93b1lJL2NReisxUVBUOU9NZnpJd3lpbnZid0FVYVpUWERSVDhZOVI2SGZHZzVwUGlVWDFMcFNWUzBnNk5zTDRmVTdkc3I1WXAwaWoxSGFDek4vYjRTZ21GNmxLS0VoNWZXM1VqUUJaSXd3b01MTjk5VlpTYkhKZUR0YUc0MzBhUXNWeUd2MGJpTnU0NGdyWVZQUWJ4MEVscXcvakNwUW5qWU9wVjlNVnljbnZERVp5d2Exb1FxaUNYam1NQUZzVTYyRElhWkl4TTJOZHdBRmJ0SFh2UEN2UE83OXFoZWxOampTMHlzMlNGVDVUY1J2ekcrNmpOU3J2U3Y4aVZud2FrK2ZESTYzNWQra3JqNEpwRks4Ym5RL1RQNytsTjZHSmJKRXNKU1hjclFMWWVtcDQ2VVh2QlE4WWRKRXdDdFFnWmRSVFBySkUzcy9KQjVzdEVNTklDNHVDakE1MUc1ckRISWpuWmlyU1JTbi9xSGFpOHVOMTJucWNsOTJxRnFHZEh5b3lmZjBtWGJ4bVNEbE9jOUtzZGNWRmxBTzhPdmx3TmpoS2Yyc1YvSWs2dFFybkRIQ1NISUdEQlZKcjBobExTR3lLV2E1dkROUHMzankyN2x1Qm44SXJMQ05LTktULzNjTjRIMTl4N2xoU0ovemN1aFVxN1dIUnJ6TjFidnhzck9lVGh0QXMxMGlTMnc2dHBRb2dtQ2tUSyt2SC9Fckt6Umxwd2pseGxocmp4QTNORVA0TE1vV3dscm5vRmpqNXlyMUhaRytNcDVhYTZxSm5nQTRwWEVHd0FEZG8rYkhUeXZidnlNS1Q0RVZCeUdCdStvZkU2SkpaSGkzV3pGYTFJV3kzZFB0MDdVSHNKSjRYUGJPQ0psa1VkVUErblBuT240Yi9KaERTalNMQnVSdWNLOTBMbDgyeUp0NTRZekFKWXpZZ282ZGxaYUFRNDdxNEhnYjVGR1FhcEtaY3ZQZmRWdlh3LzVzTEpma3VRTlRaWjJVOUlwVFAyd3lObzlyWFJmVHF3anducWVvazRDcFo2QzVycUIvVTNXRGNiZHBPZjVOSHVTWXQ0SUZpOUtpdDNhb3U3K2FIaFZjYzVOWVNNVUhoYW12RFYxdnczQ3Fic1VZeWkveTkxRzFDRnBGSVNNVWFiOGJlUEprYmlKVFI2MXdheGthaXlnb0VSc3Q5ZmJRbUFrRWdQdEswc3V6WmN0UWtGOXZ6dmdwZUtvVzJncEJIRms5WmYyQWRXOXVMWCtRR1o4ekJPZEJFVHIveGdYbDJTOWxwMFlYdTV0M2F6dTBCeElMKy9BQWh2ZzBjcDRBVDlaSEt1cEg3Nk5UZ09OT3FhaDVxM25OWUJPOTN3QTJURThkWnZnNnlpaU01c1h4R1BiTUk0SHM5TWQzTWErTTdTLzdEQlpROEdSeWtsS1YvWVdzeXlmTnRBM01majBuaGw2aE5vUkdtbGF0dkx0MGZFb0Z2UmxhSWJiayt1WStidU5ZTVpHUGNDY0E2V001Zm16TEw2eXQ1RTNFSlZTNlI1dCtLMENDS3Y5L3VKc29wQ2xJeUF2Y0ZNVHVUZE1sUFNsWHFmTCtNdXNnZmFFR29ybHk2WmtkSHU0N01nb3JtNWxlSkwxNjhFekNtM2Z2YzdQZ3o2R0tCdFFicmRidTQ4cXloS3NDeWQxYk5sL1VnOTZxa0w0ZDFSNythVlVVWmFzQlVuVTlYNnk4amdmZzlCTy9EalNOVW9ZQVlORC8zZ2ZPNkVSeWpsSFU1eW5ubWRhUnY1S1FjVDJWTzVHUzhwTEhGZFlJVGhPcUlGTFhnSlA5REdTb2F0bGwrcnRKY0RNWHNDLy83cnBDcE1sRyswdDlIVEtuTyszTm13aFVFN3A5VWkzazAycjI3d1RxYkZYb3J5eEhnbDFqRTdxTTR5TEo2VzJ2dzQrTkVWSGhoY1ZpN3ZXYnZEa0ZQYlJ4NU5PWGY0YmIwN0FRUENEWW1VRjBEMkRnbjFzZXpNeU91UzM2cmpHMHFpWlZtWWNmTCsyTG9paDhqZmVweTA0dFRRVndIRWxQUEZJM3pYR3dXUVBIYXBHSXlJUUhKYXBDOGFNNVNGcnNoMUlyYjhvRE1RcUpkYnNQYlA1RTNkQVlYVnRsaUMrUDM2K3lNV25CMHBUK2tWcjNma2Y4eTdRTVZHQ2pIamlESzdXRjhBUjF0Yi9icENnRXVwY2gwN2FEeXZVZTZNTE53Rmk4UjdHeVVLdXh2U0ROSTZpWEw5ZTVRVzBaY2pWeUhHcG1QaVlLNHh0VlNydDVvc2IrTFdWTTV6M1pnMDlqcjJ6L2NhL0tJY2h2UnJEcy9OcTByeThYdW4yNjl6cC83dzE2Q2NsRVpZUFk1OEpXa2hHRnVRQ0NoTGU2TU5FMmZNVUNZQWd6NVVIeCt1RUV0S3V0R3MzOS9pc2huSTFLUzFwMW5YdFRUVkdmRlg3VXVtb2dWRUJ3THVSTmd4eUxJM2cwTU1lQmg3NEhoVWU2QVVVRVBUUm9CclF3Wjg0K0IxS0V3dEV0ZVR1aDhpSGE3c3JNQWVrT1NZTzhGekxVeFh4YjIrRXZrNFREZDRKOVRoVldZOUJwWGdBYml3Q3hFQ1FnSHpnbFREQ28xS0NCd0I3RGErZjNOSlhZWHZMbU5pK1p6WE5DcFJVUkVPNllBdUZ3UjZzZHFEbC8zLzR5d2tabnR0SGtMcWIxeXltYVZEVzhObkpKWU42cFJCemh2RjBvU1pjWS85VnUyK29QaWFrenc4eCtBRHowVDExN1dZSHEwS2o5eEZ0YTUydmNBbkhob1RVdmg4cEJwb3dWdnJIYXNtZFBFY1ZUYXZUbjFyZU84SkZmU1pPK253OSsrL2hRODRVd0JMUHFEY0NqOVk1elNLUEdWN0w5OEIveVBDc0Zwd2c2bm5wVFFDbktsRU92bkhDd3c5d1lMdC9aYkNCcmJvd1ZmNnJ6c3VtOFJsZmJiMWdMeEdBV0M3ZUcybkg4R3J2MWJ1ODZiTy9xNGVNNTREcE5xN3NBZHhkYmI4a25JSzJISWRnNUFRQlczTjQwZXBoVTNEZy9FTXhRRnFwZEFFOE5sa0xNRUpHc0NnYmV2M2RtMlJwZnhwa05uQWNVL3JlaWZ3V3dwVWJudyswTEtzVkhvNEZyT2svODlyak9NeTBHNVFTVHdDSlpBVmUzYnVJQkJDY3NiMlB4NFFqc0VWMHBKVTBlTmo4RmtuRWZ5WE1tMUZCYzkwQnUxcFhSSkpGZmhoak91WVVEdDdMbmVUUmhpNkt6TWlXb1VFRXlzTmJPWWUxbXlaNWE0UWlreVBlQUd5S3Z2emMzN3BBVXdTQVVIZDlkamxmSDUwMU5vUkVkVHhVUDN5Y29WSENCejRiU3pSUWtJcmpudk1mNXpmMjBLTDIxcTBXdU14L3c1MFRKOGZRQ2o0ekZBMW1ncGhZVUtrODB6TGVzMndjRE5aYlAwdEpzMlFyREl5c0tDczNaaDhPM2pmZHpReXJxeVlRc1huTnFjdjRwQnZYTEhDcFdyRmV2Tk5nU2VWVy9SY1ZzVlE2VHNldFFPcFg1Nmcwai9kc3NkZUFQSmpXMWF4cGZUeHg3Z1lWLzNvMXVZUzdZZmROS1ltelRUWE9HK0tLVTEweUllRXhMV0M2dWx4VjlreERpM0lMQ21QWjlzKyt1RTNpKytCbWIrOFVtOGloZUd6V3ZLL1dUempjZEhQNzNCWW56T2FjZENhalhjMFFCc1BEaitOU1dzWnhxTHJCZ01ZZ0NHZWRqODFiekczZkFYc3dESitYdXg4MUlwYW9PVGJHWGpvRGxwMkt6bFpZcGNRTlBxb1BzdXlqQk5jRGo3RXpCZmc3YUhMN3d5K21JZmVjTFlHT3lrT0p6eGczN01tNCt0eXl5dHI0emJRemVYYVFvY2VBWVZpem9uKzhSRnk4SkpaZFBYZzF3ODZ1L1VmY2VZd0Vreis4WVhreGJ2SGZBT0s4bFp2ektYR0tNaXhUQnVnVUxkUG9jZHRBRmhwRi94WnpONXlNYnVpbk1WampIbVlhSy9PRzBUbkhUYk04cGhxNnpBVWdyTlczZ00zVmlicFUxc3ZoR2pFcitBbTZOK05GMnZjalg3emJ3R3luUGh0SHRQVWIzL0VJY2RPSzlNT0RFWlpaQkdmVHZqM1FYaC81Q0dFYXhKc3ZVUklwNzB1dlViWGtreUIzTzQxMXhmeXQwRTZ1Y3hRVDBrTGtMNytxZ2Y4T2Z2UG1GSGxwUEVBVTU1QVgvSk1CS0RmK0xaMmh0Zk45NFZaTUpTd2dmMlJaRFpIMHJEZlJYTElBRFVDODd3NDBHek9ZNndGMDhtTEFOWHljWUtwQWw0d3RvRHFwWitQSWJSODFGc09JUFZrNGc0c3FiekRBWVBBVzAzRkhDZEE4MmNmVWN6MnZsNDJhand0akFJZXNySEludTF2ZmhFVzg0eElBeUkzamhOSVVWZXNYaHZUcUorSnBycEVUSktEWlF1YWI2ZERObGlXNDRyUXZPcnE0NUdKSktpcGNVUWg1amZTaU00ZU1naDNENENlU2c0a1BPdjlqdmR5OFc0T2hRTitmVHFra2dHVnpxYjFuYjhvaFR6RjA2dGw2VUJ4ZEFIK2xsZjk4T2tSWmZibGtGWHZWdS9ROXVEN2xCQWF5eTZGd1JySTViaTlhN2VvMGMyRjQ3ZTBCNVNlemFaT3pMTXFKRGt2WWk5Sy9qcUFQb3EvV3FDTmM1dThQY2RWU3NidWtqcmZndysrMEkrUC83bG4yQlFlSVZQdC9pUFUzVDNwdWo3d3Y5ZGZ6c2JEZ01kN1U3MCsrTmhYU0RwVS9icnNpbmdFOUREcTg5Q0c1bGJVNWd5azdUKzZZMVFXaVpNd2g4aUdHS3c4ZFN5VkNUN0cvMWRZQ1ExV1JiaTZDZ1NIZlN3dHEyRDQzZzhLYVpRUkNMaG5ZUkQ4amJnTFJCSmo0TlYzTDR2cC9RcjhVVkR2TnlwNUFBaEJoYUJFR2doRzVGd0ZTVDk3dmFOa09qUGlGdDQ2RVdsbjFtZWRoWWxaNnhXTTFQdE5zb2o1V3VjYWY0akZVNUJhT0o0WFJ0SmJuNk1veEs0RFhsTXF0N1JtdFlrQXBmc1Z1Z1RBVDBkS2FuamwyYUR1aW8yamp0dW9GK2JBbGNaK2x4SEdSRmdYRUFBaXZqeUVWOUF5V1JDWG5uRXhIZXV3TUl3ek1lZlFTSFpXV0lMamllbFh3RHhyN1pCNlZnSjc2dEdnMWpOWkJYbzdkOU9PQVhMTkZWK2p4Wm01dmpPYzF0bnRPclZ3a2QvQW0wdTNVNEw2b25wZmNYcFhubndyZTYwd1lFSWIrRVlZd2pDQ2w4WFduWmd3TzlsYktWU3lscEx4dVAycGYzT0EyVVY2UlFhYkhveVQ4djhLODdJbEJKaUNITk5XdWZLZ01YQjd1RmtCaStRZVRuWWxWc3JIaWErRlU5M1gvTytLcVc3VWxYSE5vL3J2TG0wVnFKNkgrcDE4V0kyb2RZYzhQZy9YWUtXRFAzWjd3RlJ3Q2JZZHIrbUZYRTVvY2hiVDhBQ2ZIMzNXQjlXaThiakZEMmQvRG1aWUdmOHVvZ3JwRUtGalpqTG9weEpFS3ZLQld2YWN2Rkh6SlB6NzE5YjIrNEZLckdmU1dwd09tR3dzNzZuQk5SL2E3TzFGcmZxd0srcDg3bzErdkZ5YUZrZlRnbkZYN0dxNERTcmZHRUdvdGN0L2tyOUg5bWhMcDNoRG5BdXpGN0tzbzFyWjA3QmZNa3plT3Z2czhaU1JUMmdFK1NNOHRsY09lTCtaVjJld2ZMSlAxWG1xRGVQSXF6S056WGVmQ3RTdkZEc1RXelArK1Y5bWRqN3hrU0g3Z2MzdHFNZk5LRkpJQjdRcTMreS93K3NtaE5nN0RBMVF1WEYwUGo5QzlCRU9rNGpUaU9FdnBFakNMaFdOY0piZVRPeTcvam14WjlSMzllKzF4TlN2VTlPeUx4UHEwNVhudUptbW50bFdEaFp5K01zdHQzUmtma0FtcTFNc2N1Zk9mQ2N5T0VPQzlQMnBnRnR2SE9maVY4a1pDWStMVEU4blNtc1k4NGtKUmMxMSt2MjVwR283ZjNkUFN2Nm82MURqWVpqV0pONk5pOXJmc2tPYkNpMU1uM2VlQzdEOEJ4Z0xwMit4cEg4UDZoUks1TERjMlhzdlRSYytyTFdEc3JXdkQ3cjAvSUpSVC9HM3FqM1BZSG96STRjUTFFSm5JSlJTM0RNQUpYYzdtUWpWOUgxc0cvOEZWUEVUNDZKM2ZaQTFpZWhpQy9tYzFmbjBWNnkvM3R4QUJQcUxQUjF5ZlY4M0E4cC9maklLTDQzaXRRZ0FmZ1FFSkU2OEdSNWhHN0pKVDQxQWFSZVFXalhxV2EyZzM2R1c1aVBIa295UHcrU2dVeHFPTnprWmJCQmpRVTdEaVpneWpUZW5Ed3FCMkJTcUxMRzVmY0w5cGFQem5wV3daaHl5dUQ0dHdTQnFxRnZ1azJmd1Y3bkxRS0tyK0JvVmY5RjgzSlFTd1lYSHdSNHA0ODFUL0VEdUZvdVVOb084c1lXMlVWV3lYNUNOZTVBOGRkQjFKeUVFSE1CWWtka0Y0R3E1ZGpEam95bVRkbUFzVVpmZGlkU1ZSV1dqTnVST2YrcURLRlBxVzZ2WFVnV0UrNVFac1U0TWN1dXU5b25EdCtROHhtWHRQZkNtNnlNT1d4OHlOZUp6Z0Z4dHpMV1BsNEJGQlI2K3Fsa3VFZDRPTDRBZXdFZnh0L1U4eFJlZTVlaXQvbHZ5QVFzNHhsT2dsQ3Z3T2NpWjlzVnVQNkNyVExlaEl6ZGJKK2JWSk1HVStPaDVOMzJIMXZmcDduZnBKVmpVSDB1M0lpdmxSOTdKVC9zR3FDbmVNMGpRR2FEQzlENllQLzlwODZpUTJ0SlJRVnRtOFhBZVpuaURjVnhZVUVhcVAwZTFwVjl5N0FxTlFxclRvdEZvdklLYXRmVEtkeGdjdjlIMld0NE9IeEttakpITFA4RUhLejdKTURzOUVtYzR0OWNzQlNFa0YwOVE3NW5hMzN2WWVYSjhsK3VGN0dSaWM1Y2ZYUy9xWllDYjBWVXBSei9MRk9OQlhDWXg2cFUyY0hFL2RUWTZyOHhycm9LV1I3YUxkQ0E4eHRjMURBZ2E4MVNrYVNlWC85ejIzbDFIQjliNkFpTHVkMGZ0dmtKZkJZNjFvRTQ1L3dzd1lLMUNwUDVoMTRUQi9aSVM5UVhqK2diNi9UZHhCSHVMS3V2K2w4dTN5QTdYTmV5OTQwRE5oN0lYUSt0U0w5VTBYaGp3ekduNFgrZFhGU25heTBqVlNsY0hxc1lGT1lUQUd6QTU4QnJWd1lPUGdnVDhzVXh1N1ZjV0JIQjJwL3lXbW16cGp5RVlpaHcrSHZRc0YrU3piRmpBMERXUzV2eTFWbmF2K21CMXlYSk5QcjdYY29nNkVzbWdjOHZyQ3lxTWdxUkZMdmErb3hQUnBIQXU5eEZxOGZZZUJQR2RsZy8xSUJsd2VsdHJpamwyV085SVRiY0daeDFXcU13Qm1uQ2psMUk0dURjQmtoQXAra0dUcFduRkc5SzE2Ukd6Q3Frb0lnSElldnRMdkYwRGVCWmZMNEhWNE1aQVpxeUgrTEtHLzZxdHd4R0JTRHZ0RkQ3UzY2RHIyK1hUeXY3WnB3ek5LMHJlbzhVWWFwbzA0cFRzQ0pSRUVEYUU5Z0gvbzBlRU9yNjNsR2trSk9WQ1JlbG5GYzh6WEw4UEhKV25XbUs5a3ZHd0dlN1lWT3N5czdyMnVkL2k1K2JQQk5TVlJ0a3l3Q0NqMllSOWMxejdKd0VUZ09EQ0VnUkd1MHROTlRmODFEdFpnRHpGVklJdHFPZlUwQ1RJd2NqSnMrbXZud2xJdUZxSStoc2VWSzlWcFQxeGdJTDNDRDFwVkpIbWxpa21WdGNZRUlsK1lDb1VwSGlJYUtuYmNyQnQzNUpFOEVNQVVUQTA0NFM0NjBGenlNQ0ZVWkJUN1VDTDFzWGZFeUUrUjdYa0NsNjhHVGY0dTB5M3IvSWdqTGpJY3dFVDljQzJodG5uelV5b0huT0FQc2NhZ0JHS2xmQzU4MFc0WkhvWlBhZHNHTjdhSk56elhqcDczby9WOW04VVl2Mktodzg4WUFTZWkzczNuZXBvWERpc2FwSVFZZ00yWmNaTjhrbmw0dTUrT1RTYjNoZ2taYWowdUNvR1NsclpNa2k5ZnZrTWJHY1JUelV4d0N3WnpUeUwzY2dVQjE1TkEzUk5GTTRHVFdTOFJEZlJwNTVtbGgza2RJcXpEUzFiZzhXazlHMGRkR3d4RlgxUHJ5dTY1TDEzbWpPT0pLZ2ppMnprU2IvM1VGN3pRaG9hdkN1dXgvZVhGS2dGYzBpaTYrK2g4WDNSV1BtemZsWVJEbFMzdDYyWUpaUHp5cm9CZWJ3QTFNSTlsWFY1UzNjMHBSRjJaWmx0YjEwMXo5RnFiZEZ3aDFjRGMzS1N0cC9KdHIzdWh1Q1MvUWVPM3dQelk2Y0g1V0FuQVlrMEVJd0hIMEg5bXk3UFJHdHVNNUxTNTE0b1ZWUjNQcHRGV1JISlNVbXVZMXNYYUYxL1VPSjRydXRTRWl0MDNRQVRqSnNsTFlTcUVoUk9RZmoxK0hWZlBtNlJ6VlRSSWtFdFF0TzVYd09kZVBidHNNdlM5eU4xbFZLZUF1THZzblE3WURqUTlBRmNkVmdYQ1N6NFNuYUQ4NUNLZ29yNEsyUGpIdmRXbWFCb2NpUGF0WEF1RE56R3NrUlNydk45L1ZCbWsraGNIMzVLWm9WUWpBbmFJWDN3VVFVZWw1bkVXaERwYU5KajluZFZGNkJJUTBUWmJsc2s5Tzlxd29INHVVUjY4VHBrV2ZKVEVnVFljNHdDRDROOEpEUEh5Z3A5WlJ6VHBVMVpGd3ozWGthczdvVGRLZ0xmYlQ3cGJWNVpNdTlXOVNPVk13TXNXL3dtbER4aFRmdkMyRG9hY2dVUDI1b2FHQm14V1VEK1NRZ2I0QlhNdGwzYStNelRCVWVPNWtuSjVkZTZoM1lERTVOZUJ5V2hCUXBLNkRtU1ZpTUdVMy9GUkRzY2F0NTZyZ2xBSkgwK0djb2hQOEJ2VDBPRS9DcnVsdE1kcTJicHZNZ1pxMFJuZ0duSFprTm9HNXJPWUxZZzFmS1dOVi95UENGRDdLRm4yOFlpL2g3UHlndzB3bXJOVEVvdGJwcHpyK1VpRS9OTUFYMHc4YjhzK29MSm5DOTN0SFFjQ1JzdUs4RTBRMzl1RkNuaEpQZ3VaTjY3WnVqZmVkSWpkSjJJUjNhRTg0TW1iZnZjVm8xL01RQ05jTjhvZTltVFZnemk5NFZFOER4VDA1OHhUZFNEeFhIMmpSenFBV0NTWDZzQnhrM094YUVTMytPUlVHQ2g2MmF3V2JPczRTalFLYUduanlMMDJkRitBM08waDdCWGgyNnlTUVZJMnJHTjZDQURtSTNMVERPeEJPOHVtK3RuV2Roc29NUEZkazFTTXpuakl6V0c4UXlhTTFQSVNDcjl2ZjBHZDJsRDF2d2M1Y3o4bTRMNW9oVURWalAwQk9yWWdTQnBaZzV3eDRIUHVVdUttdVpWMnhJUGhMa3BBckJNQzdxMHZ5ZStQUGw4cnI3ZG9YTjhOMWJ3ZmNaTnIrSVpxUlBnemkvZ1VuaTM3UDk0cFpUWHpGS1VsdURSSy8wNUMwWS8wbFNDb0ZlY2U2Ylh4YnkwbFNHVWVhNXZkaWIrWWNsdllKbzhzMzFHQ2VqKzZIYnVhQnA4YjJRbTJCRHBabVFjdGYyMjZuV280UTFhRm1tTnJzOEpuVVdWL1dlYVVJd2lrcEwyb0pHZ2ZaTm10dzRrTzhnOU1pRE00b29ybkFza0tyWGVoZVA5MkoxcWdENzlMUmNrUHJTRmN0SEJadTdGc29zRngwTmRmY05NMGluOC9GRVhxRkRUdjU3dHNIbTh2Q3NLbHBia1VGbFlFUlA0VVM3L25WTGp2UFliVWkreGtXakdrUVpreHhRRDBQUlRQRUQ0VzJjejJ2YjU4QUo4SzFoeHdkS2NOK0ZNaW5jZ0RMRklrWE1ONFhROUZwamRrNlVNanBwU2ZMTlJYYVE1NlEvWTZVbzl4Um5abEtwWVV2VytsYkxseXJVdHY0OE9VZTR0TmZWWitIekR3bEYzKzZHd0REZXg2WlVWMlNBZjQ5RW5uV0lOZGxTR2NmZDc5ZkQ2dWNBK3lqS1FJQzR4d0EwcWcrZVBNUXEvMzFndEViOUh6T3dhajEwOHJsNlhOaGEwT3VuM1JGZlBTL0gwdzBoRXpGbFJBaHNtRVF4MzZ5TmVNZC8wVjl1YWpWclBBRzFCWGVyQlVJekwzM0hyVTJIUXRxWlB5dGZmL1RNZTlFNGUwWVBwWG0yVWw3K2xIblA2dFNaa3k0dGVmNUtXTE85Ymt6RXQycmxEN2YybXQxTVRNNmo4L0U5MjlvN0NUSWVQcXBhbk0xT3Y3NUxVN0hiVTFib0dqUmxUOUlDbXRTRU9qRzVnVGdVOGthdU9ZNXZGYzBKWmZBRDc0ZE1sRWVEZkFWZVBhZlN0S1cvT2I5WTB5WVVmQnlCREp0K0JrcCtyLzBKTU0vaEdQTU9TTUx5RWIzeFRWVTlBUWhLUnpTVWxxRjJURHJuUEthMU1oOEhHRlVqd1A5TklJb0I5TUw0YmUzRmFmWjYwa0dJWTMycjVFYmFoOHo2OVhIVXNaZDMveDRXSWdVc3JSNVJGbERVNnZvSVVQQlNnUzJwN3RHUmFKN2VqdTVBRFk3MnJBQlNnQWJpWU1zMWFlQ0tQakdFeGdacW5qZEl6eGFvek5Hd05HNFhiR3UvdlozNnY1ZXk5T0FtWis5SjZDMVZzY0liOXByY3Q5U29mU2xOMUJlaXZGS0xOd1FJVG4wb01qMGRJc0l4dVQ5WXN4SWVxSEJCVUFLd0pPS2VhNXhVMFZ1bjV2QXczUTk1eUpGKzByWlBqaTRRRm1rWHNUcHBZMTB6V1VoT29FWllJSm9ZbEQ1NkZjeHpMQklnckhNbDJXTm85ZFZkUjl0VHo5ZVR1K3VxbitmeGNEeUxXcFB3K1lwaWpHcm03S2VMNFhJMjRPM2NQdG9KOEwvdXMrT2FQSUpQWUNMNVdoV0syeXFLdnd1dWEyYXJqRDVUOStPNVg1cHRZdUdQVG5ZUk5oVDhRMW1rbysvN29FNnNqMjFWWjRLcHBNV0x0ZWxZTklsVTMwU1I5WkkzSUxzcVd3Tm5GbWJ6RWs5SldwRzRhZHVpZ0J6eDVudzljUFVYUnJ4eDlodGFCa3JTUWdETmRiSjFVb0IxbGpjcXdBS1grQ1FQK2p1ODVRTkRzTXJMa2o3cVRiVklQZDNTV0dhSWZOK1V1ZWxFZU9tOUdDV1R6Z1BPbnlmaTBiVTV2LzAwZG1FN1FJN3RYcXMzanJBUFJqOFVIOUtFZlRSY1NhOEtiaTNEZ0lXcERHTUhJcFVXSU41V1BKb0tYZTBQRURlNnFuL1FuZ2o1Wk9DTlBOZFdIejNjU05jVUQ2Mmk4aXZWeWxMWDFKbXY4U0FRcHE4TVpVaHZsM2pTWmZ4TnVxdnhnUjNIdm5FenVrMEFoWGx1Ri9aai83R0d3VTNOT2IzYmhHdEw1c3JaUDBobVhWT2lLMndENWpTWlZkaUJqRlFEZDZUNk1EOWpkQ2E4clZyeVg3NGxFRG9xdnR0OTErSTdWY0pDWC9GeGdseXFwQlM2MTFreFArUDZ6WDNmNi96dis4NllGOFdnRG82dG8yWk92Nk9mczcwcnhQY2h1cUpabXBvVFVOb0t4WnE4ZU5kcnpIelNzVUlqR3lhSzJJRi9QV3J4VUVqVE5ueFlET3JaZ3JINHFhK0NQYUR2L3I3T2d4dWpvNFA3MWs1cXpnZXc3K0QrSXI0UzZ6a2dZRnZJUFdoWFYvWCs2WGczMHVzYU9zOTA3aURJMkNYcnE4NkhpYklEN2dYVEZGaVpUdXIyWVpiSEtFbkRUM2o4UkJnd2EvUVRWazZaVE56NUlhakU2R2YzbnJtMFlHYTFhVnVzdUk1bXFrVDNTK3A3Mm1xN3BlMGZ5K1ZuMnQ4aFc3a2drMm5YdFZVcmJmbzdjVzhabG16ck5IaE5WaXh5eEQ2ZFhYRjZ0bEdMOW8xV3labExUVHNZT1UrUThqNzFUV2I5eFlHc2FwZnBUcldnc3ZmTDlrdmdzRHVsNnAvTDkwalNQemZFZncvZVFTL1FlNkc3dE4yYTNwYUExbTVpcTlQSlo0WGdzeWxIWFpmdjhRcThYUG0rUloxLy9qY1kxbFRsVmZUZzAzbGtJUHlVeElSZHlJV1hTemZwL1UvRUJzUUNaOENGQmIvcldJR09BaElJZUNINHhkVG96M2IrUXlKcFdTRVQzUG52L2JVLyswNUsvVDhBd1phU2RXT3QyR2dUMFVyNXFNZXJ2WDlIaXZNcWdHVXhIcXlqUVBvNjVlQjJYaXFMMHd2SjIzekVUL0QvS1poUk5UZU4wSXNyMmJCblBiclpKSUZySjY0RUtWVGNiY1VyN3U1eXB4OXNZRWhaWjRBSkhqTzcyMkJ2WnFubXM2R1JyNnptSzJWNHZCLzlBYThLZXpUNEV3aUhWVktjZmxnS25qL0JERUVnUXdOT3JWWjJBaDlCTDZKSDdLVGN3ampNdFV0bCt2cnF2NnhlOUJsVUFOV3Q1dW0yL0poMEFtZVdja1BkdFF2V24wYTgyUXorK0c4eUQwUGlNeHlGZExZb3Y3dTZrVXVZbUphMFI3QU1lM1VoZVdVc0NmeVhOdjhJd1AvNmJlWUkycDIvckNTcUZlcXNEaUJSSzk5ZjdJbnU2cDZPdUVxemovcU9zb1FyNXV1T3hsQU9FKzQ5WlRGekxRb3o2bGJJdm1ta0lEV1NTWitTQ3hxbUs0OVl1YWlRcWxXZnlGYXU5ZDBYaUtabGwrRWZkcSt1TG9FaGI1a25nNTZpUCsyWDMwa3ZRM0dxSC9VUDZBN3FQWmpkZVI4Zis5Vi9paUcyS2VpVnhDOUYxRFVpUHNVQWNsa216czhsYzcvK29EVDNIVGNIK2hXeVZwcGY1UFZRNGJjNzBIN1YvZnZtd0dMSDU3UGc5TTFyQnl1NlJHQTNpbU04K01LKzRkbUJKSmFZeklUcEJ6b0s2dU90dUM4aTdFYy93dVByazZyTUU3eWRIWExpRzBlVCtLU2pEVEZBNlBsMUZTR0NjcHkxdVovdmJOL3JQNHBoMk1LOXo3Y216N09GbGc4WU02aXJjOVl6THZGK2YvNlBqcC9Nd00wdzIvSEt2cTNPUVNvbk1SY3FYVURqcVdQOGZ3eVhZY0c3SXZXUTcxWVVvd3JTOEZvblAzMWNTRzhrT2dPWE10MWVoQ2UzaFlITmM5S01MclJQOVg5STRsUnZxOHllYk1sQXFmU0tqNWltSUJOSjhDcC82NUFuUHJEalAybjhhSnY3djF4TEJpZUtOQ05rRHMxdUM5bWgyYXJsQ244NXVTM0RjS3lDZWxBV0Eyc1dNQnc2ZFdOdG45ZERBZnlPZHByYmxxbXVlTm1wY1RFbWVTUzVHZGNyNlM2eFBGMGt5MjI3OG1YeGt2dkl0UVZuUitpM052MlVNTGd2Smk0VkpLSGFrNkw4VE5GK0JaeTJoeVBIM2hpVGZlbTNKVDhmYnA0TTlTQ1hoNEFLK0NIaVQ1VER1YWEvOFdMUDU0RzRaZ3RiWWV0ZzF3My9NajBITHpybVgwaHo0YlduTDhDRi8vcExRcEd6ejRmMXBzS1EwaTZ4UEpNWXhCdDFHVGNTQjNNNTZFTG5XRFd3VnNDTlNvNXNFdEl2MnVya1VvYlJ1L1hOODdVOUJ2OUpXVm5COXFuTHRvM3VXWkllQXQzeFh0UnRyT2pwelV3YnlEYlFKKzU2aXRjVFYyREIvRTNCc3pjWjdqVnU1aWJOcTN1R1cxTTVMMWJ6YVg1ZDE1eWNMdENqbm9IOCs4M3ZLNk1mb3FINVpvcDhrL1BsYzJacnIzUW5DaVJlNUJtOHdNWlp0SHY2WmZhOWM3N2ZoWjBjbkhNYWtkSjV4eVFWbVFDMVRHYkQ3SmVrTTdNMmoyOEJFV0psOFYxMy9HVDkzS0dCRnBHZ0tpMDhHbzVrbG04djUyMVU2K1g4ZmRYTjI0dDZQVjZtUy9taVRhVEhDVDBITXhCS1Nhd01YUmIyNjNYQXZaRmk5ai93OTUzTGJ1S2JGditFdDQ4NG8zd0lOd2JIdUVrdlBuNkpsbjdkTWY5Z1k3YjBiZXFJcXBxYlMxQlprNHp4c3hwUko5MWhLSXp4MXprZjFEdC9JenhCd2t2Kyt2WWdraThrVmZBVlBCaWVrNUJVS29DMkFDRlhzVTFYd3Q1VFpCMUtqU0xCZGRKenJpSjVIMCtrNkFEQ2pEMHcyOGt4bEZGNjFBSm1HZ2ZiTVVoM2FFZHRWcHI3Uk5TeEl6MlhlWEljbTNWUVpTNFljTkNra3lKUzBQaWNwOW1BNkgxaS9YdWU0SVF3d0k5bDlzb2xPd2g2NjVBVDhTRW5uSmdrOGtLblZKWVJMWWNUSFFRbjVLNXB5TDRSZnRvdmJ5TnVtcThXK1NzdElQMHhVK2czaXR1OWdIaXd4WFlQQkR1SVlsT2Z4dDB1VXpsTUU2alRlQ05UNGNudWM4cXhwRmZxU3ZSaUpNdFJrUkc5RDM2S0tZNlNObWs3RTN6ck1vZWNiWUh3VGN4bU9SRWhZOTNJbjVkSlE3ckhJcTMrNDlWZHFoZUJMelJZNzJrMUp2OXRJM3psbFQ4SzRmLzVSdW8yKzZNd3EzcVN2UlQ5aHRWQndrTFkyRXVwWmp3K3RneHhxM2F6UWxyTXFYY1FMTDFUbmwzVWxVVUltcjNoY2gvaFZmQnBDUFloRmViSTVzeTFHLzU1WXFpL1IyR0tuK0xRdzJBQThzTnJVUVkwL2xEVTJ4VFFRYUlKalhqOTZSZk51bXlSZUQ5N0t4blFHdzZ0SHdoMFVGa2duM3VpQ0dvR0FxdXo0VmFvWnNSQUFHMDdCNlRBNFE2WEx3bjFMS0FrR1ZKYjJoS2NpSjBGTTdxNUVCREtXa2UrY2pvN010WHZzV2ZWYnR0MVRPVWxmNm5WQ0FzaUlCZ2JZRGtqZW1hQnJkYTVqNVBOT0xhNlEvdWJwTU5GQVVrbGJnQkJUdTBnZExTTTBDTE9xSDA2czN2aU5KMTJTeHI4SlJWY2QwVTBzdERsNUV2b3ZQUU03OGhFU2t5MkJOaDJSQjRnYWhRSWNNTmhEdFR1cUluNzk5L2dsdnNsNTNseVBKZ0gwYzNvRVYvcmc2c0dVMWp4RGVnWjg3cy9ZK1JQb200c1psc09PdEszWGNIWldQbloySlBNeGtLWmhXNHE3RUxZWG56N09DV2ttRnU5VXRQWmNLUUZkTWtXcjdSZk9HSWhlWnF2QUYzR3c0ODIvTlBuaDlIQmtOUVJ3OXNKWU5RZkxXblBXdDZtTG9CNDZzeURRTnp4YmNwUGVOMW9wYWdCQVZmU29VcXF1ODEvYy96L3VkNS8vMmVoNjJsMzloYXFtcGZUdlVjUTJ6bnNUMS9FYXBndHAxRUEvWk9XMDJGWXVSd2lWK1ZlVCtHeFpzQ2lyL3VtVXY1L0Y3SFNCWUlteW5pSWJkaEpVaS9sL0hwWUkvQmhwUGhMd24rWG5iWEUvb1YvZkwzYnFwVXhWQ2tTYkNqUGFOT24zYjh0NjhQbzYyczFwaWN2dFlNS081eG0xQy9tUmNyUEI3NEVQLytwV3Nqd0M4NXRuak8wNEIxVWRLZ0VibUEvQjZHV3lQZXZyZm5icDN6VkFrL0Z5MGxkUXpNc3hBRUtYakd3eUdMOUJJVzlQZ2tYVE1QTmN0MlZkbWxZYVc2blltWTNuc3UyMHhSZEIza2ZkZUdhNzUvM3RLMHNDYmpNc2Z4UEhqZ2lDek11Ynp1QmZmL2UyOVFta3VFYkhLSFZMd2ZhSnptL2NBZTNDejdoc3QyUkVaR1A4TSt6SGkvbDN4c2lRNHBjVEdZeU10NzYxNmZLWXlsZzB1S2IvTC82ZjVpNmwrbkNyYlg0KzhrSTJialpSN2t6U3hxR3ByNlFkTVhLbVRua0JwNk4xYk1EMmNyd3dFNGE0V2ZtVjB5RXRTZ05KNzl2YnBQTitOZ21JTEQ0WituSStGdi9US2phMGVYbnBWL0huZ0tZZjcramVudk55WVA5dUJaU3M3aDlWWTZQOWh3dzJkRTk4V2JyUmRJTFpUK3gzZCt1Uk1pQWVrYnVSNGx2K2Y5SmVFdk9tOWtPcFpVLzd5WFVlbC83M1Z6c3Z0Zm56SVpXTHcwczZtS2VYY015TEs1VDl2YzhWL3gyYVRpVzJPRlFwWEtseDlmUEpwL2pUS2hvVzRyanJ5STlzbnFDcWI1QWVpU29EUjRiUzJFLytQUGd5RU5VUnRjQ25LUlc5TzUrQmNFSmgydDg0QWJiQU0xc1o3TEwwVUxHdEJYNHFhTHYraWRZTnJ5WDd3N0s1ckx5eXdSUjV5UnFuOS9HRGFNeDZMaFkzUGhGc0lNVUVqQXNrTVZiRlUwN2JjcjhDcktpZTN3ZW1aQmJmaHBPdDlYclRtYjN5VnpKWDR3dkM3Ym00SXlUVHJIaGs3OHZYWTNQYUI3TU5ucDRkaFBwbWVOUURlQUI3ZTBhbVcvQ1phVm02Q1oyQ09ZMnN1NmhOU0dYdThiNkpxVjdiNHZGdWFPdmlNdXNQdno4V05zMWVmczkzbUQ2TkNVVzFsS3drMzN4a3RvSGFaOTQ2eWoyUHFRS1lHYi9aYVNPcVN2enZrQ3gzcjNxM1hNbWU5VkRCSURXdGdpaGVUL3dlY3dvM1FzY1N4NnFoTzc4Tjc0dFp1TENDT3JPYmlKRXZycmRLQ1c2eEFuWEorUVUrb1hJWk0xTnhHRzVVN2dzS1NBTGVpSUVLNlNQNU1TUUhZQXNDdEFTZTRpQ2VrdzV3cG81Y3IwZ2d4SUtydmNkSk5NYVFMOE40THpvMGQ4MFVEdTdBSXk3Z09sTzB4TzViaXJ0UHFIUEFNdHQrUVdUNHJ3ZjJsMHJqWUJrUURYelVCVHdUWFkweG81MlEzamFZWXRxQzFYTkF3ZDl5ZUZlVWhGN1NpaE5zdDJxQjdEVGlFZTdlTGFMTS9FVERPemU3VGhWb2NiSW8wV0Q1UEU3dC9tc2ZMMWdjdW5CM3VRaWNKWkFKbWljV2d6RWdJejNyemNVWXl3bUc5TDNQZ2dNZS9GL0FGRHNKcTZuT29YQlY0dmZVOTgvSk5Yb1hKN2hxM3BsL1RQVXZ3VDJSTHhqRmxBZVExWFB3a3NwUWtiRjdqRWovbW0xNmlNU0NUdGpmSVpCd1NUZWVwZTRJVXN0QXpYMFNCYTd2WHNmSW11RnRyNXA3SFVvOUhiejVOaXFVY3BiU1RLa3JQSVM2Y0dTVC9kMTBCVFI3Mk5KTDFxZG9mcUtpNFhYcDFDSC9CZGRMTzlVSnFnRXpkanlxYUlYWGsrMzhiN1NZNnk5RFJGcHYvbXYwVVNPYkJLdk9lU0tsMlpjek9hdHdXcmNPaFRwVVBsTmdFNGxNOHZxZytuRTdWRFBXV20weXMyWTFBR3RvelJqQ2RDN1Z4WmxKSXl2SlFLSHI2MjNlL3NyR2Q4UmlIUjBXL2ZNVkN5ZC94TC9YOWgwSDhXVTJ1VDl1K1NnL255SzdzV3FSQmRJUlJxcmZuU29RVjhjdGx1WVFZczMyK1orMXZGTE5vTmRJOTUwRm1TZFg5SlhUdERCMGJ1UEFyeGVJKzEvdGc3YzNNcHhpUnUwcmc1bDFnNittaGpYOUtEbjVHYXo2Z0QzaVlWMDBEVFh6Y1BGYmNaYjIwMTNaMEp1dllWVmNxaDZPeXlRQjhIdG5kOGVObGM2L1dUWUhieGF5bGZrRE9WcE1pOHZTYWg3c2RhcEFQSUgvQ1dpRVZPK1lzc091ZnQveENhYnB2S2FkOTBVTFdqOFhCdmI1UFJWUGwrNWhlN3EwQTlpSHdCMUE5Y1pBUFQ3L2lHTFRmQ0puMG5pN3g1MHhSOENGbjRhVDJvcUV1bFZFRU1xNFdsQTZRNE4xTUNFbWMyTWxUTktnVUZ0NjhUcmc0OC9kNDcrM2JYNzRuTTIwWWJTc1hwTGlyR0NSWlJ5ODN3WEU0TElTY09RRVNVNmdXYmwzN3BaemJlWmdGU3YxaFhWZVVwWWRicEdTN29jUXpmdkxzcjZEK3lwWVhNcjUxcmVGRkNueVpwbFZYWTQrWGkweFh6Z3poVmI3ZXdDV1RXUUVpSXBscG01akJSTGVCNHJpOE9QbCtxck9ScDhOZDlqSEtaZ00wKzg1S0F1d3YzWm9HNEtFeTl1VXdndmlRMmhjcnd6SG9Fd1NLVldzYjhzcy9IUCtRQXJzRXU0b3ZBc0o4UW03VGd0aVJyOVY0ZDUwVTBXdkp2akNJRWZSamwwREsvbTBCT3hmN3lGV1VwSGJGNzZ2UFB5R0gwcEZ0Zk8yemplSXFKU3RzV3k1Y2p0cTNFZFlVeERUYzBra1RKcUNYamV2ZVVBNmpPUTNTRFdxRjZqbUl6V2pNTFZ0WlJjZjQrQXJCUnA4M3RXdlh1U0w4L1pWMExsVytiM2RzVWxTR2RIZ29iaWVkOU5OOEwxOXEvbzRudWJiSUFjREN3bHRFNThqNGNLS2FXbmV2dWJRb0ZzRTFQRzNISVppUzF2TGNwMG91QStOdWtVVittcHcydjV5cE1JeXozSnEyU3BaWE03MTE5WUZvSS9IK050ZFJhWUk0eHdDYmU1NGR1cTk0ZjF5R1E2dTk0QUNDNWdTOEdxeG44KzliWENlK3ZXTHNQeUJYaFo1S3RhN3RNNXJaclFpRTJmaVNZS0F6dGZUelBOcW1NeHF5c0d5NUJxbVQ3Y2grT2N6NkhVOEtiVUlsVnFOeEgwMWp0YWo5SGcvOUhVakgwWXpPN050OEg0d3dueXJ6dWplb3lCMndVaUdxbURzTkUvM2ZsMkR1bU4zaGkyajFoa2wzdGtqZHBadTcyTFd2WUVENTE3UzA1NCtPVCs0VXhFQTJhdG8vR0pjc2Z4ZzNCcXZ5bnhPalA5aHhNS0M2ZlNGdGhXazdvcXBRRWVZWEkvMFROK3FIY0VQQzJDcHFNaDJTbGxaelVoR3JnNi94bkM3YWxKRU5hSS9ISDBaRkRTUUFiVGZnUmxOekNDc1Z0YzduV0I3eXA5RlZOclBBSlpWQ0V0Tm5iZm1VYko3SmVtcS9CSWRlZmJqeVJqN1g5RUc3cDNENmh1VDFZYXNpdkpvTy91dndSQWhRa1NMRnpHYmJBbHJndjcvT0hDZEp5OXRaei9aV2NXejF4UTFIVXNXTE15WGZGSkpwRGVrdjZMMm9GL3lzTXd0bWVsaUxIbXJZU1hMWVFWUkloc2VSZjRtYlZiYTRVNXRkbHBEWGF3Z3duOGNaU1NqT0VObWc2YU1ZZWRxdks3Wll4S0x4WTRZUkdLRlhuNDBhK0d0Y2lrU2p1TjhwTmI0MUVPRWFBTDVFaVdyQXhjSHpOY2F6aHlibFI0NUhyM25DZjdZM3NXQ003eWhVQUV6YjVGay9uYy8rTWZqd2VqL0w4b2tKUHdIY0dReU9GOFVJOUpQOVA1TzhWbmxqSDRyOVZuRWZxN1VIMHpueXZWTEZ2SmdnQ2JMLzdFMFBlTjlyOXNZSDlkZHY5TVhBTDArejBicmQ3K3Mzc3QyNVJ2MkRUQm5yOFl6MzR3TmJ0MXJWUEdQRGZXclgvckxWY04xS216amR6cVRlZjZudXdpMWxUT0VMTjR0ZHJhMHdzTXFRU2RRRmY4ZDJJZk5PeS9ZbGpKcjdwa3UzWktGMUg1OWVYeU1qSmlibjgrWW1XK2xtS0JJYkMzNTcrc0pXY0RHU0ZVSXZpNlhQVjJ4Y0gwU0N6MDBqY1JGZmJYeUhuMUpIcXpiZUQ4YW04VEV0S0g2dEIzOGpxUDFMQWM0VGJLN1ljdUFJSUh6WXJGUm05QjdrVTladTlob1ZVOERrOXVnOENYRFVvOEVhSWJQeGlKL05pcnROY0F5M1JYK1Y0UCtENUhFYkZkRzM4elFwbk05OXppaCtSaU5zNm82aWg2SmYyTmlRZHByNThxdktMOWZPK0NQaWJDblR3Vmg2dkV4RFBnbFJiQVRvWjBrR2VlNDhTUFg4QjN0ZnBHUXFsUUYybW9aOHg3MTExcmxRbUJFYjNpc3ZOY3A3bmp5ZXBMc2Z2VTM0VVRMay9oK3NWeDQwK20zOC8vd1ZUMHNIazNiYW1FaUl5RElYTmdkOHBuZDFzRTFSb1hKSCtVdm55eGxub2RkbTBIc280VURHYkR2bFA2cnlTWHI4QmxzZjZzL3dsQ3ZYNzQ1WjNNMGFaVitLV2ZYQmV6eXZzcnpTSE1sSjBZKy9pTkhXQW5hSWllQ3U1aVpoaFJXNnlraklKS0U2dDRLbnZmNFZOUVZUM3pqNjdRQTFrUWsyMDA4MG5TaityMjg3SFRIeUI4ZlJmSk1FOWE3bU44Rk84ZzRISllXeDNvL294WW9qcWxQMTVucjhtN01lVXZrRHN0WXR5cE9waTdaWVc1SFgyelpYRXIrSytiZEh0SkVaeXNEeitUN3dXSlVESnhHNW5CYS9NNi9yOVJCVklZUVJpZTF2NmZRSCtZdXVKQkxsZDFiL0NmdkFMMjFOTSs3THNwOWJjZnNhMzBDbitieTRWK0ZCS2ZhbFRBUmR4eExLUnZORHdJazRBSncyUjhTT0ZXN2dNRHd1aWNzUm1pb1Q2cUpXTzEva25WR29XU2Rjc3NtZHRNM0tEQzErMWMzMFJQVE1XcmRGelVucS8yUHo4U3RiRzhTU0NLTldPM3NmR3RTajVCQ0NlRmxWQlNPempjRHRRZ0hBSlgxaGpocGZMRmFzY01DU0tkWWxBV0gyT0g3d1oyK01rTkJNeUVNWTNkdzMySEZGcElrc3hpU2kvdDB1MnR2NDBweDk1TVU0SjdmNFJmdnQxY0F0S2ZsanhWK0xhTDNMeHQyTG01dFd3M1MvRHB5VnlmN1ptNXR6UkhNczNpNGN0K25TT3Rqck1jZUhyVi9lNzdidmVQK2h0NWtESlZSRUNNQ0d0WGJ0YTYrd2JuWk9tTGdYZDFhOXcvZXFZR1ljMHlaS1ErdWdMK3ZPNmw0SUx2R3oxUlBVL3E1UDNNWGpobzdxOWpWbjJlVTRiYXRtVEdPNzg5c3ZJR1Y1N2ExNytZaEhiUWphQ3BaSHJndXZURFlMTWF2a1BMdzk0WElwTWtLdDJVdCsrYWEwYzRkcWJYOE93THkvU3g2UmhmOW5yT2daSDlya0Y5QkluYi9iU0FuNXJKWEtmYXh6K3pkN3E2UThJRkNKazVRZkJjOTNHMUpiOXo0NDlqdlROeEdmak5yV3ZaeTdHdDgxY0dhK1hvcUxIelhzVWN6RDZoemt0MFBzc2RvVjQ4MnNWYkJ2UDlFb1k0N3VnanN4U1hrKytDTkQ4QmNHUHpPeGVYUVl4Y2xJVmI0NXBDc0V4bzBwTHFiazhmTjhIWThWQTNJejBlUU9mTzhUQUwvekgxbk81SnF1TmsveE9KVEpKNHBTM2VRQVBna0RnUGx2Tng0VW5xVVdwbVAxZDB6UXVnOGt2NlNndlBCU0JMQVhIUFVHamRwSGJzeENrbjl5VVVwdUtJQzkvNE5ycWdqWTZlZlQvaisrenNCcWdONWVLR2FDVHQrdngvMFdpa0kzYzZPOG5sL0hiRzZBM1VMSmdiMHRmcVR1RGtUcXMrSFFOK1ZHTFJxK09weWUyZDJ3Q3lITGZKSXJRNlZ5bVJkNWtzT2JzTFlldFhmRlVURjFSdTRpenBzVTUxTDVsQmp6OVd4UEpjMnRZWjFoc1MwM2ZzVkx2YTJTZUhaanVzSGkrMTUrQjVkU003NGpSNUYxblluNDRnRVJmREtQMDc1N3BuamF2MjdKRzZZMlNNRVJ0enRiVGlMZHJLTlF3RXJrSUFkZFRxOEg5UEJnOER3a2Ftc29CZnFzL1Q4bDY1MGNnNG9KczlSWUdBYkNaZzN1OG9uYzMzQzdQTEk2Tmx6T29UWGFyQWI5RXlySmNBMk5JRjB0WkIrdTZOYWtPTHJGcHlpekR4Z1d2bHB2cmMra0dJcDRnNGJiT3k1SVRzc0xrTEFCV2ordGlNVkFvdFltczQyalNNNkwreUk2aCtIZkd0QTZxeWM0d3gzRWF0ZFBtaDljYjMwMVZsQ1p2MzhlZGo4V1RyeEQ2TWF3ZUEyeTB6a1JaTmp3TnFqOWd2TnZxcDFONnhwMEtIUUdqUWRQVjRYa1g3SnVtYTl1UTlRWEdYcXFxblpSMEhQWVRualRONGFvcXU1QkVtS2IwY09kYnZDeDNhMm5wQzBiNC83elYrWnVYcmUraitCWmRQUFI1UHhXb0FGdzhHcmdFdHJKTVU0TStNQWk2V2NqdENhTHNCaWJWR2Q1T0hJZ2oyMzJvMGVnT1lRbVlHVzNPNHZkN2w4NnRFdmZlQ2lYSVU3NjJiYXZuZmtBOVFDS0ZuM20vaVQ3RkxleUdvRzVXVExRSXZQblh1NTYrZTd4ZXl4UXNYeVdOd3ZEVG1TeTBQdktzWTBTNGIyWFEwM2xpM2tEQnVMTFZmS2JNSWFpcVNyWG1TTWdyaW5lM2ZkbHNhWGpVWDBXYUhsaVM4bEpHWGoyKzN6WW0wR0ZBQisvR3JWeUZYbHZ3TjUwVlVJSDZYRmZyZk0yV2ZicFl1Q3cwemY2TXVoLysraVd5YkNDRDNYSXkvZWt0d3BEdjErdFdSQUxLaEJaOXhFUEdMbHl4SEQraURFR0FvRXpCSURmY0dLKzRGYTV4TUwvcmF1b2xwNlRtdEtEbXdibzlzWkxKbWp5Nitnck9BcXgwa3ZFU0ZEQjhrSXdJQ2lRbUo1Nm1oMWQrU1NESnkzUXYzYklzc0djZW9YZTh6bUFFRUY0a01Yczh2bDkxNzJWNWlMKzl6SE5NSWFEYjFmK2NHWDJJQkRCZjAwdlFhZ0ZuSFNxSHIxbGhzVkNrdFpHdG1FTUFTNnkrZUpOYmg5ait6cTh1c0xXZTArSm1XOUlOemk0WWxyb1EyQWRxTHNaNlR2cnp0VVM0Wi80YlIrZUhnWUxEa3phTjQ3aWRERUdEWjNiQTc4Q2JaclVURU54eTIxU0t4dS85aDBjekw2djRhVDMwQWprdjFMc0p2WXMzd2pJbE9hTmQwSDFQeXE2OHJzQXJUNmdTUFFOaWViYjZnRGI2YlB3dVgzKzF5K3o4YVZiWmJIL3dqeUxNbDVKdkZ5aGd1Nkh2U215KzN5SEx1cmxXUjBYQytJU0RjaHFQejIyTll4ejdKY2swTEFkcHJsSDdWdmh6ZmZKMkJxY1dvcWR5T1lURkgzZEFRQTFkSUxWMHJjVU91ZzloT0N4TC92UWlwSWtTM1NlV0pDRzRmOW9TQXE1TVFlVHc5SzJ6ZDFDOXhGb0hEZnVPNTUwd0NBT2JFYnBSZytUeElzeCtkdTFqandMNGNUQllsd1JpTStCeEpBSnF0d0pEcjhucGs3OGhDQ0xUQkRaYzlTdFEybGZIYmtEdS8yMjZmSWlFS3lTdjFUbG9lckdtM2lEcFdIN0tiS2hJaVFCT0hUVkhrUEVmOFpCTllMdW9YM3B1OUFNNWQ5VnRxUUM4OWRaWTV2MlhuaXkzQlhoY3hBTFlwdS9EdUsrbFRWVXRvWUoyWktRQ0ljcEZNTnhHL09ZQWVUNkZ6Uk1hcHJsWGNuRTFjcGo2VGIvMzJuSEhQQ25vSGFVL3VqWXRTeFJHTDUrbUNaZjJuNHhhQ0ZnbzJFVHlHbWovMFo2YXE5OEJZOWNsTEJSUDdjbDcrSUtUdUNVS2w5QmhIZmQ5eHp5eEpHWGkwS2dTQWowZ1liaVFwVWRyNk82cG1MUklGSTdWTWhCZkhuWTAwYStYMlZHZXZ0OG9nNlRSVkMyVUxJQk5MMHZRK0l4OXQ3dkFzNnN0R3c0Sng4Ujd0Nk9TaWs1blhScHBWSUpmSFYzTytSbGhxWDN4YWcrV0s0aEM4MlU1RHVHbCtiMkVuTDVQdTdRZDR0dFU0akh6Rzd0OEZaY0EzTTdtdnNOTTZwdGR2TTUrdDQ0a3E5V0VjZUNkYUhrdm5EMW9JaHZxUnR3QjJJbXFwVDJyY0libldNcjlKa25YK2Y3MDY3cE9yKzRWSHFNSHlCMjkyZFhSQXp3emhuOVlCR241YTM3RzJjRXc4UHhUL052M3FwK210Q3dDOEw1WG4yL2dWemxlQWlZSDFWZ0ZMYW5uVDI3T2NIeEFZYkY0dWtVNXFuR2FUOTE0eXk4S0dLbXZNYUl4bEMycHFBUmdDOS9vSGJUVGp5WVNJQisxUHJhak5lRjZscjlQRkQ2UVluejlTL2lLdjU1RnovQXo2K09kYXJlZW5VUEV0dVdPUVhvcWJNWjBtZ3dGM2I2V2kwak1JTW1wSFN6Z3k2VE5lWFhqd0xCeTRCQ1FMTkNCeG5vUndhdWZGUEU4N0FzbW1pTU1pQ2VKbnpYeTByOWp0Q3dqbVJWVi9UR2dvdEhzejVQNG9TamFiMFUxWXpjYmtzb0dCeHZsZFpid25tS3Y1ZVYvV29hN0FFSzU4U253bCtPcXpCZUZibnp3OUVjNUUvVHJtTFpRMHM5MWs5VzhTNXJFY2JqVXRHbVpPemNEQVFyVE9aRitVVzJhL2VKdFpuTDRVNXZMVDZDNXpXUEpzOWxXNXBMK2ZFNDBlUE1nRUUvenhkdWNIZkpMRTk1dWgxTWMwTnRFR0cvWUpjaE1mQzAvK29mak9QUXE5ZDhLMW5tVytmTDdSU3RvQUxRemJDZjFZQ0t5V3dCbkpmWHIvTTQ4ZUtCQWZpT1pYVlREVnJpeXRsdW5UWXhLUERUeFFsRkJma3JLU21qdHVTaDIwaEM0RVg2OXlYbFRUYkRZcU13YkdkK2ZVZGc0OE9JZFRaS2VyeExuZWRNNTlTZzJCSktBbXJvMzMvamR0c3A4LzFhR3AvMHlIcDBZQ0NGQmtoZXVWdnNPV1h0SXgrVjNCaitOR3pDYmd1M09VT3oxZVVuNVBsVDBkN0hieVZ3bnJlUUkzUzVYYlU0UEc4QklpTUo3Q0xCUUxNdU9FTkE4WUt5OEp4bnJPczJGbzlyUG1zZzNvWGtEVWZSeDhqbjdiZEYya3JmUUdmS3ZqQWFKZTBBMUZOK0ZrSjE5bWlCWmk5bkEzV0ZOZW83OE5JdllqTUgvaE5NQTRrTVE0ekdFcjJtVTlQb05lajV2ZlF5R2E0cXY3SVB5UzhMdFhITGJLalZ0eHFyZzlTVkprVCtQZzIzaGJaR1N2SzMwbEFWQThEWnVlUCtaZGhCcjczdkFtRmJsVW1SMG15Zk1CN1haZlZjeW9vZ2Y1VWNPWFcrUFN2ak1uNjVRcE15Qnc3dkFiNXE2anU1QXJ0WUZuMXVIQ2l6Z0RtanByUnVxdkFyazU4TVY1UklOVW9RU3ZDOW9RZlZoK3BXaHBNYXFCdktOOTlZTTFUZjhWT1V5bm01MEMwNVRqRXFwU21Mcm1Xb0F0SUJKbG5xc1JPZDk3TEpkRmJBTFJPTUxKY2FyU3BLd1QyNUVWemk1YkRGSlJub2NETTZveUxNYjNiODNDb2NzQi90UUZzV09pRFF5dnVqSm5Ca3hsbkZjUEdQUUdZaWlRQkdLUWtFenN1TkhyTjJDOVc2b0Z6U0VuWWZSSE9pTHRBazBpZEl1T0tibU9IdGx0UFFKSWlEdStwRXY5dGRTKzNrQ1d5WlBrZTg1S3EzcVNQV1JRY1dzNkNDZmptOW1ITVowZysvamtURkFnUVV3bDcrUnFBY2NkV3F6RjRhNVhyUEJLZXNVeVNUdlcya0sxaWxPR1FOWS81bmxEMWtDR2Iva1ViQUFodnRjMHpQMUVJZ0tLVW9aS1Y3K2I3UVFrSVZZT3FuNFltR2RXdWlubFhCWmxQeE1VU1pQUndYUGZETDE4OWxSRVFWTFlSbmJNakt6TE1uOXVIZXdBN2RKNWkvY2tCR3ZIT3A2K3JleTdFRXBBU3RvRUxSZnFWOWpiZVEzUXZMMWY2QkNnRVhScTdrOG5zSUt3YjF5WGdRSnhLem5mZFdMM1pEM3pjOWt5cXlhQnJQREVNVndqeDg2VVpJZHgwa2NxOEJ3MjhmWnVwRkpZU1hJUHlOTTduUzNiRFhjOVlQNzFpVlBhVCtVVGIxNEVGYjRodlNNN21VdDMwL1VuMUcxczhsd0FGZFpHWnc3UUc1MjNlS0VraUtWRHpPbFZ1MnFSK3pIT2F4Ymx5QUFVQ1BIdDUweTJsTXZlWGE1YlJMbEZxNFd6bjNSTW45QlNGR3FueGI2UWJpam51ZEY1aVhicXpoVXc1aC96UW9OTVdZczhyTGdKRjJ5eEtobm04RlRJak4wTHV2VWliUmczb1VIZEN6ZnVwTEs4Z1hjRGR5b01aWUs4MTQ1TGdWRW90dWJDTjQ5eE5naUZXaFFqUHFKVkpmZ0tQN1lkMFp3d1N4NFQvUHptMHpLTlJhaElZcXpWN0xmUkVmbW9xOVVjRzBIUWFOeTBWdHptK09ubmhGU2RFeS9xcEZuTVlxVnNtL2Nnclp2YkhuS3oxeThxckJDR0thc0xOc3BkYWF3MDRWTFdtQzFKS1BBN3Qyb0NLTys3VTRrcmxkLzMyRlExME8ySnk5L0EyM3RSQjVTd3ZjZVh2YzJlK0wzY1VDVXFuNzR3WWVCYjVBbEVkdXhyTG5BeFFFdGpVbWFiK09PQ1lxR2RRS1NKczlnYnhNQktCTkQwRmFNS1J3dnpzOUpJSUZhZjdJZjFuMmFXeFV5TUZHd2FiR281RWZpejJDcFE5ZjBNWDFkVForU0twc21waVR1cmNYTCt4aUc4dThIQUFoTHAyam9rOVJjd29Fa21mekptSE53bFlaaG1EQ3FpMmNmTE9pVTJJdzZQblduVVdVaUhaYkRLRnJCMThYamNpK2pKdkoycExXVVU3Vjhxa1Z5NzMycGZFZ0VjcGYrR3UxNE9oUkJBRzRvKzNjVmdEbVM5SnVKOVVURXNsRmRRVHZCMndhYXpJaEdZM0NOdUFkL1BQMEdZSVR4WjNNSFhVSnJOZ2pRRUo3MTErdkVzaHM3N042RkxsakFOTjFSL01wTENhK3pxbU9jcnRkN0pSRnIrY3V1c0JuOGFTRnVDTWZLemdydVpaWHlBZmM5R2lDNlVWWnJ4QnBtVm5qTWZqMlorNDNMN1hLS1U2YTlnOHdVMTVEenArU2JOZ3lyVG9xaXFLZGxGOWdmZFJacEttckN2OTRsRnc0UDd6YUZHcUhNYkVMZzgyYWJITXJ1Nlp0K2NJOTRBUERJSlhGdUt2c3plL3lxaWI0Zm1CODBmOWpjaVdGbjBidUUwSjg2NmU2RjBjczA3WnN3eUN5TklHQjhJd2N0clcwNXMzWFVoaXVCcnhRak1zcC92eDhVNGpHS1pJcTQxUkVPNGxqeFUxMUNhWmZmZzN3MkNUTWdOUGZycXJMRHcvdDliVzRKMXE1SkQ1UGdkQTlxZmJTVHQxb3BkMjkxeWZvUFdKYXZKR2JBZUhVV0dFT2dYVStMK2srQlJJdnJqeEhVWThqVEVvcUV5UXZKaWhDS1NQcVdoNkdWU2RKVjkrditxMTc3SVVnU3A4WmpmMDNpbUNaMnhPREZmVUl3bUhnQmhGOTJ5c3dzekUyWW1HN1RkM0xYTG5kYndDdUFwN1hidzFjZ0NBTjFScUt6RjZabEdJUzc3VU1wOGZMTFhBRnNNS1JtUHgwc3BjWGE4WFJkYm80b01uNFBJb1pSN3FncWRqeStkVzJhRmlrNXFRRytDWkZNaTdXUDZtMUU0ZTUzNXRCblcrNnhGQVJ1NjBUTzI3WjVNQ0lRWGdwOW9McTMwVDFZckI2MHlNb3NEdEdFMjNnT1ErL1N1a1Y5YVA5OGk2K2kyTm1Wczk0bEllMHppYUxoRXlPUUZRWDk1bDNSZUFVTkZYL0FFMkFHRWJPd1BWa2NzZ0N5WTRwVlpFbnVrVkFVRFZvSGdKOEpMU2lUZjExZW11YUd0VC9oQWhNTWFGYkdBS08xSFNNa2F0NU9pcm9aTjlTa3BrRlRGQ0diWDVkVFJ1cmxlWVNTRitYMDA2WEd6aVVKQ0YvT0Y1TGJuYjBGeFRGNHdsb1Y4dGNucjF0eEtrQ2gwcGNJbFNteENtZFU1dUtQOG9sRUxOQkRmNFQzZThtaXlvSVk1RW1oRkVmdG9hNUprakcycU1lVCtPOEZFai9iZGdEQTFJdVUzMlpMdE9FWE5qampyNUFlYVVGejRjQnZPdUNZZXZKZUx6STRxYkpwQ0hiOURBR1hHdUN1WmVRQjcyVnRHTHlPZWxSN0ZkdE9sM25iZ1FMcmpKZDZBRXdhTHpkbTZVRWZFUmNDL3pBczUzS2tzOGxuUlRrOFNrMTR4bXlRK1YxakNDVUVabzByYzFWZUkray9idmJlem5PV1pIUldHMkh5UFZ3enk4ZGRmNExnRjR3bmV2dUh0d2ZZMFh0ODVrSjQ5R3I3ODNraXlDaHozMEh5UVNwOVU2VzBVb0NZWE1jdENyY21WdEhmaUgwWXNHMVExVDltM3UvelRPRHhnSWZveDZtVHlRUGo1dGhHcW1acHdHYXZSQTNYS043dkZpNWxPY3l6dkd6cUdpN3VUeVUvb2xXMER5WXlkWWF6ZEptbUpHVi9TRGVZaUsraWFiT0QxNi9nSTQrOUNjZE1iUk0vWUM4MkpZVHR2RGtRbTdlTDB5ckpFZXI3MSt1VkxId1dwOVZUbm9lN21LOVdMMWNtQ3YxRi9nMnJaaW1nM1VySFQ5Sm1QVjJnaXMvOUhxSG44YkF4ejFMcjNtcVQ1WEUzb09pdGdKZVZQR2pGRDdveUwyNzlncDJiMGI5N2drZkJubVhVVGRDZlhneFZscjAxbE9ZM3haUFRNQy9CVjlPdU1iOWhQMDVUSDB3dUZUT01IQmMvREVsVWdiQjdaWjBEd0ltVHorOHdJZ1hvTEdKd1RWQi9FWnNsMmtFUVNnM1loUis5SEZPRC9WSUFDUnJUWEMwOStYNS9LaENNSUVBdy9JeFI2NXVwTkJ6ZlQvcDBQOU1zMEJqZTN1MVkzaThJaVd2eFRwLzZEbUlDbVF2TDF2THBERjhLY3JGdlFxcmZ3RDQwTEgrTzFNNnlNcnhwUUhjUWMxUXdrdXE5UFgxQnhYdlBBRDFqMTJBcnV3RDR3NHloWDFSRGt3TVFHaHNkaDFFbVFWZmVONGp6aGsyWXBwbzV5V3Z6TVJhTW5rVVVSQlJ6cVJsQnM2aFBQSEJ2b1BYUzFvMW9DS2hQa0tLM3dLMWkyWk5vYkdISC9qcnZrOFc3eGUzN0lxdW9EQzV1UzZ0ZXRUM1hZMGZWV200WUVrNWRoUG5KL0ZlUjNUdzFxZWpuNGh0MElpVUlUbFVSN0R0Tkx4NTdtUFpqQkxsc2ZCdXlZT2JrMG03UVJxT0VRUVBEUUhDUzdDOWxtUWttTEp1TENUK3QwYi8yT3h4Zk45dHJSczB0TDlscDl2N0NibVFxWG0vditPUzFOQzBUU3R5T2xlTzQyS0wxVkxUVGRGTFZKZFEwa3RMNVhnam1lODBvUWY4NXc1OVorcE5sWEhWd29CWnVrNDlQdkRENjZ1V09KTlZ1R0Q0M01uTHAzSFVvb21WcXEwcWRYSVBsZGJtZGNOQ201bTFzUDB0TlE2TVo2RmQzWE5ldmd4VVoxN1ZldXZmNmxPZExET1RxaytkbEdrZXpkVkhTdmgxcUg5ZE96Z1dVZUlyNnZBT3hlZEVqYXo0dE50cU40c1dLWHZJS3ZoZkU5Z1kraVVMbWZ3TGpnalNnMkhoejd4SGVmcEh4ODNGTDdnYnNBZ1hBQVd6NEtXK21vWStxbHRPejNUTDYrbkU4WFNRR28ya1cvMWFoY1JtL080U09uNVNsRUFZbkN3ZTQ4S0VVaytvQ3VlSHd2V0k0V05ZaVRzWVNqa3RMNk43YnFubFAvNEhicFlOWVd5c2RxTStURXhuMjB1SWJCbzI4ZmUyaTRXN0I4TTRJV2dnaWd2QW5UZW84aTM5K0JEc3V5a05QQkVVNXRkTi83OE95d0JSUWtDZk9yb0pWd2k3NDR2S2JZdnFNa3lGS1plRlR6L3hFUEEwRDYwUTRpRHpWeGN3WUNJMktZMW85YmNqYXoxT3U0VzVQSmFlZXkweVYrK2kybVhteTFmeU9oZjlhZlRYVW15NHY3ZG9IczZ0bGhNTk53eEtaTTh1MzYycUgzK2h4d00ySFN3TGNOVTJQOEkwWHdyN2p5MU9iR29aWjNxcUs0L2F5ZG5yNUxSR1lWZ0dhY2ZLcU9ML2dndHl6Vnh3OFppb0VDbWJnbUdxYWlYQlpLVXlFVTNuYjQ3eGgwenBTdUd4cDNwRk8yK0p2a0p1NmpQVDVkUFJrRm1ua3JUUzg2UmxrLzNVeEFlMndXSWFrL3dJNHJHVTdLOWlNc1pEVHdlc0JPVGNzVXlEQmJOUzZ4aWJUZ2krb0lBWnRKRTdrOVZGK3RML094Qi9xRnJmYlVtUGZkbmpaSUkrQTFXLzJCbnNsVWpKa0FlRCtaZW5lRGZxN3JpZGxFK21YMEx1dXcxSE9iYUovK3kwblU2aDlQM1NmRTRGQzNMdENFUGF5MGZ4Rk1IbS9OY21ISzZZY3ZERnZFV042UXdSbmlMaEEvQW1FOENUQlh4cnhJcmQ1SHNFd1FwSHk3c2VteHhPU0l0V1NVS2wrUXRCYkpORGsxaytjem9aYUtrMFhvd1YwcGFoTjFlWlZnU09UWVZ6N05ubWZNQ2RRdkFrZnVlZ1FPVFZWeXZDcEpvYmJsV1E5TkVObTBwK0JkdENrVkZZRGVTWEpPaTl2V3JYTTZoWi9YZWJGTnhMUTU2M2VCNnF4WGJLcDlTOUtTNU1tNFdRN2h0LzYxeTdQZ3FtYUtHNC9oVW91WloxWjB6UWZUbWpEY3k5ekpLaEJQS25jRDl0VmYzMS9uYTRiNUQ1TTAxNTBuaE42dTZHMEFDR3pTMURJNjczMDhFK0N1Nk9obzZsellEUVFIQ0VPbjVEaEt5bXkxelRkYnVIMkN6NnMralB1V0pzMVE3aGFlQVllOUR5cmxVN1NnOEJNWERMQW9IdUNWNFBnMUwwekdoeVJwTWJ5UmlZSnowZmNycXMvcC8zMXhxZjRaUUJqaHZ4OUFYZEdMTEJ5N2p2SHpmQUtLMjhiVXN1MGF2UDNrWHQyb1V3VHFLQ0JlNmRJbFZKTTFldHhiZVdBQk5qbkJPWkEzTmF5NzRucGFYNFo0TjJGMDBmV2xPcVlWWk5halhUeEZXTndoVHdGOUd1alBJaS84VkpVaGd0LzZ5Qlo0MDkydUtycERhZ0ZGS1YzeWJENk5qWVdBTGpRRm1FYkZkS1dFRG53NU5ERzl4dG9UenNoRi8vdXYwdjlkc0NkRXkzVkIyMzllNjE4TFRQdldFOC9za0IrVDlYbitHWUNYOXVhaC9waktnZ010eEI4NzhkSzQvN0s5MmY2YzlTK0t6ZGhLdVRrWGorSWFjSkl2T21HRXM3dXkxYU55bzVqVm53VGxmTjlSOWxSZlIyK2EzNlk3OWJMM242SDJVMXN4V1U5MGJ2TlV2VVpjNXVCZ215RHhGUENQcmNqOFQ5UUV3bkMvbWRtU3R0UDI5VnJxaTZ3QzdlTGZqbEFOOFo3WlRDbFNwdHhlZ2JIMGlTMDNEakdkZDFrWGZTUXVhRm5RU3hMMS9mN2R5cCsyci92U3ZNRmFyZzV5M0lRVUR5QTd0cnZFYkZ2NzlrMXh5MlhGbi90eWxDU3Y1OGdBMmo4NU9jMEZlNEdXZnNNMytpczMwMVBLVXJpYVNncjg5Q0ZUd0lqZ1NPMjJLTlBKaTNOdVIxbi9UbVNudHBPRUZOc0pGenRrYzAwa3pIUGwxL01iMGZUdGNzM1ZkaXkvUktFTkNvV243ZWdLM3hUVFB5b0Z0bWJ2MGdzQWtBekZUOE9ObG10YlpoR2ZDUWtXZzZEVDlmTysvb2MwbS9MYzhkeE1IRVlrTEdYZ3NKZDVlcGdlbnp4bElIL2ZLMDk2dDZ2L0RlMlV1TjhCUkVBQk9TV2NnVkZyc3VUVXJ3MmM3aktTa2ZTVTluejgxSWZSRWpYVDlnM2wzbFRSamdXWmRrWDhrcVJaNFU1dnIxSDNoNnozUmlORkM2TFJDTjBrZEFVTVc5ZExrWDBhVk93VFpQN1RUak1wc3luWWVGMTBTUXRmM1grTWhQMWRwWkJRRUFFTlgrYWpKZkJWY1FTUHIwVU9lcHI1U2xCSUJ2ZE1obUptTlcyNEFRQnRSUnpSdGxiUWpBc2lxS1ZwWk1iYmgxSC84a29Ud1dFSy85QkVJWHVrK1hDdTN3ZHY2eWx0QlI5UXkwNGM2WWpFSkp0OW5kRnhhd2d5OTd2dy9UU2RaN3UxNnlOSHNlczIxS29MOVVCeHVQSmhvVUxhS2FoRTQwK2hEVjhkR0IxaEIvVEVzbHZXZndWTWIzbHF2YTMzcGJqOWZhWFpWbHhTTGVOdkloeGVHd3VGR0ZBUFBBVTZ0S2ovMmoxRXorQXdmY0FIRnd6VklqWGVvSXFMcUZzUXo3TXU1MGFuY1lhOStiZi9CZWJpNkZmQzBhY1J6MWZicEFMc09ReVZwTkppVDBFTFlXS2QxaTdUcjhZeDlYTUk0bFRNai94V2ZXT2RqV0hwM3BlOHM2OW5Xd1RmZVA1YlZiTk9TUG1WQmVnNXAwdzkya2RsbWFKeDZmay9QU05TNHBHZ1NDTXloUTZKMG1lZTlUVzUzZEQyakErS3NncEsveFhSOUJXazJQbmgwRWFKcVUrTCtPd05hd0hCRnYvc0gySFVtVmtjay9PMmxTS05jU3J4ODlPYlJtdkxxbENWejZWb0NyL1NqalNHNFltWHdwMVVBNHgwK3JyaFMyNXpwZzZsL2o1T0tKSDlhTnVYcnkrOS9kT0VuUDl6ZVFjK1RXMDg0bWF3Q1VZNWxNWWZPVnFwckl3Ny9TMkwyQkxEK1cxa2ZTRTBxRUkzL3JvdkNqeTVsUWp2V3pyZFZQdi9YSEdZMUdVdHhjWFdPT0dSaVJ4d0tnUFZKT0UxSDE5OGNzN2VML0paNXUzVGVGVHdZdjVXN2pVOWh6NzNsR0hOUHg5OERqa090SFBHRDdTcTFRSjg0U2dTdGRhOFF2WUIxYmRycGtRRC9qSmFSUUg5Wnl4eHNveGZrNDVCY2t6TEk2OUdxZEpYbEw1YzVWRVA5cHh2ejlUYitiSURJVEsySU8yTHdjYlBuS0ZVQno2ZzZRdUtkQ0Z4TXZCMHJNaUE1VE5nL082MjR1Q0pxNHZ5aUR6Y0dzOEV2Mkd6azJ5U09CRitxc3RHcHBvWDJIUFEyT0lvelN4QWtGU1BIS05TM3o2M0NpMUhNazBLcFg1WlVEMWE1MWF2dzhETjQvbDlmTEtZbFNURjJsdk1BQVlFQ2F4QlQ2cFc5TGZrRkNJenQxQWlhOE43Y1dyS0NtNnZsU0xYZ2MrSlM0bHgwdUx3RXpMWkpuQmM0UWlpTWpzbzBpeUJlRWdtS2xudkpMaXFaa0lwZHZJOUpmeWVDQXByUG1NTG1vM3Yra2ZpQ280Sm1qZTY4Q25IR05zOFdTMG5TM0JlbHNJSlVhR0JXWldCUnpGRTYyVThMYzZic3FtWHZmNTdKWHZ0WklnRHhRSkNTaElURnlkY3VlNVZMQ2xtcWtkZi9oK3hobnRaZHNrUXRBYVExelJpeVJKbjdsdE44dWJiYUNmeFlkUGJzY0YzNjVNKzhsOUJ5QS9lV1BJNE1hODd3V0xhYUlmaHllbWNnazlaYTNpME12NkJHc1IreEpJMURGWmtOeENVZnJMcmNtaEgxNExRYTJER1ZBd0hkVHQweHk5ekNpQ29Xc0V2YkhlSHpNbjJpTEMrRW9YS0R0YjlCMFNhSUs4R2JRT0xPRWpFQWozSnNmOXVuQVA1VGY1dlYxa0VialhvM1Y4UnQyVTh6NUo1UDNNd2NIdlg2dlhrQjVmcGlWTW5hWk5uWkMvTHVrTVFJSHNiOUZ6cXZTNGVWalFOaFpNcXpsVXhoZTBWdWZrM3p3UDA0N3Bvb0tjOHRPbHFXb0NIUUpXK1JjNjRoZExyUHduakEzb3pjZCtDclhjUlgwZi9IUGd1YXBjSW1QOUxldkc5TjZvYmxwMVEwL2dpRU1qaFFZY2g0VjFIY3F5SVBPUGpBbm54Tk5rbEdvSThUTE5NZVNtcGFqQnhoUmhYTkEvUHpSUXBoN0tOaVZRVkVzR0dSV1RyZnA4bCszeThVbkFYekpXYmx2ZjdvcUhYaDcvOUNSSDZIUmpNcnpObnYvSnhtbFNGSll3bEpOSitVN3NGZ0RYa0tJUGdrLzVscVRCU1FXNjIrZmdpVTA4OE9kVk1sU3pZVTlUUUpvWDVUUHk4Rm82TmVXRzdodGJHa09vamE4OGxBZ3VjeStzMWJXUm5hc3laZFRWWEZJSytGR0Z6VEJqV1NBS0dTMjBMTDVkTnlBM3V1T3pXZFdtYkQ4S3VuSFVvL2hBT2ZuTTNTWCsrcno3MjlxVVZ3TlpGNTNKdkhVT2swa0tYMk44NHRQb2tsNHZHN2VXVFNvZEdYbmh5MHdoU0MrNG1jUEY5WXZMK0N1ZTZQSjJNQkppZjdERjBMNE1MNVNYRXg3aURkSllQTzNXeVl6d1EzRGtlVlM5SVB2RVZ4NHArbTlJdnlxc1puTGx0Nys4UDBXMmJ0TE00U1dHQ3ZRMUxGTnNEU3JxZC8xbUVJeGJTZkdUQWR2cFlNTHQwWUZlNlQveHZlc2NwY3J3WDFMQlo1Tm9hWDVwMDQxVGZnT280Q0lhb3ZDYUFveVhaZW1VUU1LYzE4MUo4U2RKYWkyNUJQNVk3QlBwK3dUZ3dwZTBicHBySUZ4ZmZjazhhTDBNMzZFMjRXcGI2MG80Ri93TWV5TmU4VlhjK3BETGdId04vdXorK2xjMGNtTGZDUVh4TzM1Vzljbitjblh3QXRJaXo1ejBFMkdlYnFBeXh4NFVaeHVHU2k0aEtzU3Q3cU5DY0FFL3IrODdSdkRKdHdDY2oxZ2xXY1lqUUdyWkZvMXU3eUh6Uk40R2V5WDdpbTdxMTVFYWhwNmxLYjZCTmVaQXNINXFoRHdtYW02UGpLcjhuVHNjSDNES3ovZlNyRTAydElITmk0S1JNRGNQL0pkbXdmblE0RFBvczduMnd3REp6Ym1ET1BFb1lDVHRPYnhQNTBXR29WOHN1TGswaHZjbFNXRDhOZXU4aDJwRzd5SEhoM2RSMWJDc1Q4dkxGZmJWWnBHQkxOZHJlb1NZQisxbDV6OEw1ZUJsUjFuMjh3cVhaeXdTUHM0bkZLREh0bTAzN2ZtNUZYNExJdUNMalEwWHdOVWw2Y3ZvR0JaMU9ObzZIU0c5SFNEK2crR3U3YTZuMXl6ckZLaGlCbW1rQlpxNVZIWXhMQTQrM1o3b3lKTEN1dzdrWHhBaTJGVHN1SjBxcDVJNERwM0VaYnNYNWFZc3RocXZPdlRtaUMzV3hWQ1A1V2NRUDhyUWpTbnhPSXJFQWlmREJPZ2lBR2ZUZUVmNlZZWXhPWDlwODZ3aDNHZ3dlaGZTQkdaUEFoOXJuWkFWWk81eEUvU1FJcWlmNGh5ZWh4bytyekdMWFlVQmNqajdteUt2MVBhWHF1OXBYdGs4TnUvVTJkYUpMUXhEc09IbmhRZE5uRXZ4OThETWk2dEJ0b1NYMmdjZjE0MVA3RUprMy9EWFlldlBKaERiWks4cHJFTDdUc3ZtRTJpN1JtVWlibEJsc055dEh5S3hmcG9HSW9uQ24vdk1QM0J4TDU4MmNPS0d4MzRnYkpmNXpDeC9HOGxHcjk1NHFmellkdnpRUzdyTjV6dXFhZFRyeHVDM091ZkhkUkVCSnZodm1Gc3paWG5yWWZ6aXgwK2UxTUFtT0c3b0krN0pjYmVIYzgvTjZ0SVlNQlBqUWdzRUNaSnBadjFYd0NFcmdwQ2tSUC9PTUVFL09oUndSNHk4cUQ1ZDVETTdyQjhYUngvL3hKZXZCUDNybTRSOXY1RjhuWFlHdFkzWnhzRk9qQXdVN1Z2ZExsYmdHM29ZTlJMN2FPMW5JTmJmWnVMZ3NiUVF4RzBLM0ppY3ZjUVNJbXppWlNERzZjUnk1NkhtdXVGNW1VODl0VjRmL09UVkQ3bmRTT1ZYRUxwVjJJb2pBYTE1V1hZVnYzMWhyUWg4QlpFNURXbWl2cXRwM0YzS2J2RG0xVFJOSXBZTWgxL3FDNlc2enN6Q0VQR0dEVkJDdWhMSkdnbXY2M3FIZldFZXAydVRJenFRS0dsUGFZbjVDTjROQWVHdTVXZFRKNlJxQU41NHp5VHlRcTVERlVIODVvbDR2b1pQZ09BU3ZUblNKQzh6bVRjM3N3UWZoWkV2N295R0p3Um1RK0FhdEpGT2srUTJMdHptd0dZOUxLa09UMXFLNnZQWkoxZmxkZmtiZmNUZmJoaGxpS1dSNWR2WFJJRmtjaEcxSWw2OW9XZzNkRWhSVndkdGlHRXUzQXlpZE9wbEN5UlJHMGszVmFEQ2JFSHdXL3o0eTlEYnNlbW93RUZaTnhJdnQ4bmI5NDMyRlBTWWdPNnl5OUcvY1UyaThkQnF5RXpIM0ZIRlhQL2R0YkQwYjVnSUpsTzkzVGVEcWZBdGlmU0JCcTRtUk1DVWJ2MnVtZEd6NHEvUHhqS09JbjA3ZkJNRU9kWnhCT0FMeU81cmVRdnV6VDB2cXN1SWpuSUVPbWljTlQ5ZElyU3NiZEdMSDFDalBjQjZpS0tlYk41cENFRUMrbmErWEhubkNKSmdPeU9WTzZPUXhyTnkwNUlEbTUzaXcvcFYva0pucnh1aU90VDdiSG5lWVpIN2dIamVFK2wzbXhzOG5La2hadEdabGtsNHMrOWliTG1ad1VxYWsySWJvUXh1OHQ1VDRmWFpvOVpGZTVITFluNWg5cXlJUEI1dk85L0ZhQW5oQ3ErTWp1MTBnM0NTZWYwMFhDREFlRGJOOFVzeVpKMzVtR2pEdXBENE5hWUpiQXB3VmkrMXA0THFpNjVtL0piU1VoWk1ZaHJtbUlHUWM0ZkJLRlV4MUJEemd3NTZHS1k0SHZVU1dTNkg3NTgvazFYZmtRZm05SUtuUEhjT2lTdS8xM3dKZDhuZGdieWlCMGhtRFRFQ3M0Y01PQWxxUDIrY2pZWW91bUd5UTh2TVdVMmZHUExLcytrY1RUb0x5bnlKbjJhNGVTQitRWEdjbC9EQ004Mkk5aFZDQnZVQjIrQnFkby85TjRabDJvdlRtK3VaSTBFU0w5bk5QSkZpMXRPUFFPTk9rUUM5QUZnNGhQUW5HczI5MVFsRjF4SCtGdHVTRG1zOWtXUEREbnBtTjZ2c2d2Qm9ySkJ2QmRKKzNQRWRPNTJxTjd3SlFCYVVTTG9PaDlOcFREYzJzdEJ0eFEvZW9EOWxiSEVOdGZNekU0MnAzbmt6ZWR0aEJFdnNvSHAvNG94TEVjVFBMVk5EVldmaFhSK0lkUkJob2cyTUhSUXZ5eUVoOEdMTGFRRStZRnBwUGY0OGFOdkFYUkM0anBSSjdZZEtpSUpBSUgrWDFTMG80MVR3aCtsM2FNOGYzNXBQdHB6Wkp5cVJQZE1lNlNlNTlwemUvbFRIVVVCUTFEdDl4aDNFRGRXcXcxZVJsSkY1Z1c2QjdNcmRUTjZNeHJEbThPWVgzWjRKckRRb2o0elQ1K3ZUQWg0UWh1T2h3ZUJTUTZ4dW0yOXJFZlhCWmV3TG5nWDFxY0cxMENIK0RsU3FPT2NZa0xUSzU1V003SUR0d21xZW5oMUZPbllnNWJxRFhnTHVxVUNMTVN5UHRkL1hTbDg2K3Z0ODR1Rnp4aEFDdTNyUURyek5veVNaTHFVOXBxeGtKKzc0a1Z5QmJVZzcyQ0ZGc3l4cm1MWEtBNElGd2xIcDBDNDRERk4rQUhJQ2NwQTVmZ01OTHZBU1JHM1IvREhZNXNLMU41UC9FaGlCbHI3YVZ6dUV2Rm5sQXdJVjZCdmFiMURNcTlydlJsQ0U4Z0Z3MnRTNnhtaGp3dkM4TUVTTkpYNnRaaXE1eExHSVVKZUs5R2VRU2dqS1pGYVZqNzBWalUxdGdQaFhGWjVUcTlIVksxSUV2aHZpL2l1a0xJY29ST2F5NDREaktMaWJ2c1JMcksyQ3hJUURoS3paRmNVek91UUhCb0xNaEtWRlhFZHpYa3oxMWxCTVVxWndaNlk2NzV1TVJKSFZicEVMTzltTDlVejQxZ3MxOW1USjA2dzJCMlV1bjFhbVlLUzF1SzdzejFyUjNSanhzeDl1dS94MHFCV3c0U2V1OC9mYnBkUnNFZDVRdVhGZzhOS3hEeDhGUU1pbWZpNGdSOGlRUFcrbEFrTGlVbmUzakNNTXFqT3R0NFA0UmhqZWNnZ3RZZ1NTSXlPNDFVamZzaXpaZXlrcG1tcGcyYlZ3ZVZWLzJTT3Vmb3lCTkdXY3F5WUhTWDNsaGwwS0ZVNlFLcXVOd0dlc1ZvQkJPTy9jYU1NM3N6MzBTb016NkpWWmNSb255enJwWVlGQ2tsbUtqa09JTXJnYVVWTk1OWVF6SmgzNWFNZHZIMVJWOVBreXdGazBKS2FaUEV0eFlxbm9Cc3YrRzgxOXM4U25vNkVKbTJlS3BOc09nZnZkNkNWUDcwanFvK2syTFR3NWsrcVBKSWRXTnhRaDNiOVMvNmlreXBrditmdkZqeTRSZFJGT1dWT1NBTTl0S0JvWmNoS2VFSHE3dmQvcXIzdWFvdXRXeTZWeWpmWFhkelJyTDlpU0pDbHU4VFljUjZMM0dvWVNaL2orNWt5a1RRM2NpT2dFNGxhZmMrUkM1a2tsYnRJOEZ5MVd2SmVIc1J4b295cVdEN0V6U0U5aWlVMS9FOUhxS0o5Z0s0b2lRbnp0RDhId25vdm44Vk1Xbml0NG5nY2lqaG9obTJhS1Ztc05FWnNMRGUwYlFPeEc5LzUwN2czT3JmNDRNSXk1R2Ntb2Z6cFROamxqRWxZcWRNZ2ZpNmgyVk9meWlRd3ZyK1ZXZ0hGbUpvQmRrZEUxaGJkcWtaT2VFS0ZCSk1obE9UNUtvSTA4T0VPTGw1czRvVkhLNytVcjVOR3V0aUR0SlM4aVVYKytTb2JSTkh6TVJBN1pJT1lzejdlNXpxVitYVjhGdEMxSGNFdVpZVHo1K1BTV0lwTFlVSWFoaVZjOWsrOHM0ZFY4T0QrVlk0UVR2YTBEVkhYOFJjdU8vQzBTTWZGUjcwdStyVzh4UVRVNHM3VzBldWJzTlR1dXM3a3NydUtTaFRtM0pwcUx5MnJPc3U4bjhHRFU4Ymxud0E2OFFIb3VsU3crUlhrRU5oUmxqbStDOTZ1Sk1uamdsdkpwVys2ZkhQR2toZG9mY0lmZ2xTQkxwNzJCVVppWDNZWjQrcnZvWCtyOEhWSVpCVmRWSFRNeTFqRmdWWFZlenpUb1QxWHRjOEljVzczbVNqQjZNT2NzZVJ5Z1Q0MkZLVmdlU0FjeGdRYjBhUGRVSkFMTmFKVGQxV0VZUEhMUlB6d283N2lnMVVwMmtsekdwbHl4WGxCS0paMWcvdzlVU0prb1ExYTd3MUJiL1l4UGUwQVpOUzhZdVNjQ2lRc29ldHN4Q05CQ24yNFdNd0laaHlMZnpsT25vbExmU0lrYWVKV2RmT0FuLzBQMWI2K1B0YVh5UG5EVSsybjRobjltTEJJc0N6bnkvQVd5LzczVkdINndFQStld3Nta1NRUGdLUGxlOVY2MzErWmNJKzhGcHQ5TFYwQTlDUVJyRU1WaXJBM3FWTHQvV1VpcDhML1krNDR0UjZGb3U2L3huQnlHSUtLSUlvZ3dJMmRFVGw5dkx0WDJlOHRoMlo2N1Z3MnFxMHBJY0UvWSs4U1V6OWZibUUzWDZFK3h5V2paVjVtd0h3bmFmZUpVeDFsVHpiTnMzSnFlcGh0ZFRLYXV2UVlpcytlZFFpNTkxS1dha2lsM29EUzdhNlY4TkZhWTRXbVNKTGpKWlFub2dIT1lDei9ycDlENXp2TTgveGUyd0xuTjdqZmRNL1RWS1F3dHhxOTQ4Y0FhRzFaZDFtcnNieDM4Wm04TmhTVWVzck9DK0dUY1hDdUxDaTJCZjJsK0hQMmFOUzlMMUJVcVJ1dktYaGo0UmUxMDcyYjllcVJJd1FKREgvNVNwcXh3aXlBSGczSFlVQk5WOFMwWDB5cVptaGJrTWlhYjB5dWdPQ0pRNjBPVEpRazdicVJJd0ZpQ3ZiYWF2UllKL2E1RC9SMFczRUFwK0t4WjJmeENTeE5hRDNNRmRnR0psbE5XdGRRL3M3MEZzcUxsYXNGOGJnLzcrMjNuc3Q1b2xwOUpLazlkcmpPYldxVm9IK1lXcVg2WEdOUUxWcEZObklyYzROWEFsR200cVRkd25MZkhEVjhOM1RkdmhXZXVIWGJpQ2cxYmwwbXVoaTdiY01maTlyYWltazMvaFhCZUtXVHFUNGNnM1BaeVlyQ3poOW0wK2tvZFc3Z1B3WGNCR2xydW0vdjlPcU0vdlJ6dWhPS0xZR1ZjMVJwMUkzd2RsTjV0di9aS2lWTTFWVnJhWXNVbVBidmhkNHhleHZjQVphVDIvY1JGL09FWU1MOUdVQ2d3dDBZNERCZysxcnJLU29Ya3QrcDhnK2N5YVgxcjFCOWRqNmQrd2hVcis5eGdScGNNcVBkR3FUcjV5K2crdkgrYjVBQ1pnVlh0cm1ld2V0MExiUjkxVU9JMXY5dFFYdzBNVGNWNFRPWUdOMC9PbmlDZ0hvUitET1BvWmllS2FGS1B3OTNYNjUvUkpVNFNwRVdzRDdjRkI0NFQzc0J6ZERHWUE1aWorZGhKYjIvUGdtRWhqajZxMFdPL3dVQmpmcDJINCtpdWJZS2NOdGl5MThydnYwdjl3aWw3eWxKWFBiTzBmTmMxaFFNUDBRbHo1bzRySGRVemFINTRNelE2Myt3L25XaktOTkZFU0NUemJWMzZmVm84Mkc5SlFjQ1ZHS2Q5dVMrTWN6Smd2SURPTDVMM3ZaajN4aDlPdTdiYmdFMWRVV3pyV0sxZEdWankvTHB5eGJwczBoeENYQ3BZUmpxeVZGbWJMVUhKaERxcG54aUh4dEhrWk16MitqT05MbkQ5WWRSS29GRG1yK0pBc1VLRlBLdTY3U09GK0o3V1M2NzRMa1BpVHc1bFczVnJTNkh4eVdOdHBnZ0Y4cUZucTZVT1ZzT3dYSEFDRXJXL3Y3YjU2amh3MGxsWnV4c3UxZGFZa25vZEk4Y0NqMktHWHYzN3JMUDJDOE5wbWh0Tks4L2FWWDRneVpwaGZ6ZDd0N1pVL00xZk55NExwK0FXOFZONlUrY01PTmVyVEVDMW9VejJkVlVSZnlhZGRWbDhCRFVmYkpaYkp4UGd1Q0JKU21kUmJLYkJJSEIvTVJTZ2RjK2tzeTV6ZWdhTHNGSDlWV0J6VElrRHVwcUdmWDBjeTJueEk4d0RzUDQrb0FBbkVCUjlUNkdHbUtLVmxjUEczTENBcENGVFN3OGlzM3dIOVVNOFRQQkpWaE9vdVdKZmx0TUVkdGhGMVpkQXVKSW9FWGU2ZmhhM0EwZnJvNjhuSEQ0dzVSekRMeS9tekk0NnRReUtSMmN4UFRCdWpuOHQxL2hnb05Tem9pWVhUcVFMYisxUGNRZS9pamcvODJkWW4yclNiNDFlaVZkV3phZmFwMGZmRmMzZTB5YzFhd09iU1VqZFJhWjVrYWVkODB2MmZwbG9oUmsrWnRROGtpUnhIbVRMSEw1anVZNWdrdVVoUldQdGF5TXc3VnowNzRlWTgvbEs4VUpzVXJXTXVvN2tJa2ovcm91YWgxdTFPRytObTY3YnNueVJ3WDl0T2FsaENJY2ZVL0wxVDhkeEVrK2FzY0tkdGJwR2FxbDdVYjl6R3ltdHZTVEtZMkRjTzR2VE5hRXlXTjRrWlNxL1pFSXhoY051S0xPM1B1Y0dxSGpKT1l0QkdCM3pyMi9rcis5WHp6bUlHNHJvQlE3L2FBUHBOQ2tXZjhlL2c4VG85ek5PVHFvbDM2RTlrY1RQL29XUnVZSFZvYm1ISUREVXE2VDlIcDI4NE41TVNXK1lKY2U5anhzQUlFU1pGYjVubVpvemRwZzZHRzRISjlSSVhQMlFsVWlxSzJpNCt1VUxNdSttZFNUUVZ6SytpNGxoRzdjU0U1MnA4ZEgzZm9kWWNEWmg3QzVnTkx1Y05sTTJIVWxrTjl6SzBqWUV3UmxMYzZhNEttYmE4elJnM1Fua3RMQ2pkN0xWNGNxZDhwR1JDWWNsK1QwcnlmQStMQWc4Y0ZNS29UYWZEbkNTcVBObEtpRUZxS01rSlNzYmduQnprbHcyZml4eDJQVllISW1rTU1XNnRlR1haYjJIYmgvUE02VXQ4d0RwTzNZWXVtZHJkNURWK1hlb0lnSC9hRE4yUm9randpSXhQSVVSUi9BMGcxMjByL2tmaHVFWnhuWXQ5c3RoZ2Z0UURjWlpJQlBBVHEzL0dOcU81MlpkNkRxbDFiMWpuMWIxWnZ3RUZqMGMzN0RnTmpnYzJIL0pZcmM5NnRHem8rZ0lDM01DZ2xCbklsODR4ZmpwcnYrRTYxamJYbitENkV1NFBYUEhNNm92K3NrNlc5NEpOZ2Y1d3U4cTBpK1lnbmJvQytvYXV2MVorVGlhb0J1aDMxd252TWwrMXdYMnVtNTlWVVU1aVdOWUJGK21DU2NNMkN6SDVwZ0xybThxK21UMXYyeUVSazFEL1VUdWhOQlg3WFllMEJoc3VoWTJFQ3ZYUFZMSE16UFMzMktiZllrZkdlZENqMVpvYVhGNG1rVlZIL29qMlpQcTFKdVVKMUV0UGZjQnhFOWpzYXZ3MVJKWm1PMTltUDJyaHg1SGdvWUNjUU00ai82WE0vOTlWY1NNM0tlUFQrUlliRVlQRkh3UDhKZlBRR2dmM096OVI3d1NHbktJWmVzemZRYnltOXJCczRPQUJKVHBxWDl0eUhwZDE3bmR2ZzlLVy8wbTJEWk9VL09iNXY4WHNHWDVocndnSElEUzNSbXFSYnBNRXdrMTZvQWRTNVp1MnJCVG9iVEMwa3oyU2JiUnc3dlNkRzU5UDF2UVQyOTVHcmM3ZFpwNDl3V2tZbDJXMzNEMnlaSXQ3V3hlbFRUVzlVM3JKM2JJSVVMcFVWSWtIQmxmNjBLRTFEMTVVMWtkV3pnNmhuVXRmck42aGc3aXVNeDZNSkFUT3JHc2oyTWpYbC8zb2R3M3lGVG93citOYjIwL3JUSHVCeGh5S3dON2pOZ1FsS3lheWp2N1lvZGNySk5YckkwRW9rM1p0dytONG1tZFEvbWhBZmhTVW9lK3RDZUZ6cCtGRmRxemRSZkE4UUZHSkE3NndxRDZscnYxYk14aC9MQ2tEcktFVlVCQXBQYk01czBUVUJ5ancvQlpNdW14MHdMNVAzSjViWDY4Tjc3TjJWSFdaRitBR3dRMWJGdXk1R0hSUENIYmRhNTg0RWNTTnZlOGNxdjBRaFZjbGRyTm9zM2ZNbTJmMUxIVStpbVpNYlAxYzJxL1ZXMUoyQ3FyTFRCTG9uNlc3Z2xOWmg4Z3dqT2J5WmV2ZG5yM25EYnpNZXJqRW83NlNjM3hKa0c4TTJUU0Y0TzYrZHF3TjQ2OTFtVDlsRkJPVkp3UVFMZlljRElOT3ovVVFhTG00OWlmM2V2ejd2MjdRVVBCR1BvQ09VTHprcDR4MG5HalVOSXp0bHJMcWg5WE94bGZmcm15ZHU2L056YjJaY1QrYVVvL1JSY3BrY2E2V05vVG9zdks1Qm5JTmwwSE83Z0huK3ZPd1FRL01LdGFKTDlVL0NQSDJ5Z3M3djAydG1ub1lrN0NNRXh0aEJlM09xbml4eHh6eUxMYnd3Zml2c093MHo4WXgvVW9kUnpSMmVrdUFUMERQb2RoTVNMQk9nSGRGaDczWTM1eGdXSmlrWWNrSllqbDVvNHFxY2MzMDRKTEtTT0crdDdndEh5NzhJWmdZclJ4WDhmRWgwWE0weGRPZUJIUU5qRHJncGZPWFVHdWxsOG5GNDlLUXNuWWQvbmoxaTA5MkVhQ0EvMzFBaGpVQnBrQmlnbmthOHFjOENsZHBYbDh5dHVYWW5pWFJKNGc0T3dvc1NsWE1wREEwS21tRm9kSEhMQ3JiWDRoY2lwaWcwYm15am11Z0JMSGJVc281bzJTdHdHUFhKNGtVVkphY0E0eE1kS2tNRTBXTVFOVHJ6Z2lLSnFWNldsbnZHWE1ST1crd092UFZOeXNBT1ZtcS9DVklyN21JZ09Lcm8zWHpScVNzR2IrWWdXVHEwYURzeVJROUVuVVF6aGpWaFVvZ3lleU4xdzJCdFdJYmZyRmNrMjZ1UzB3UG5PN2VOUlZxOTlhc1BkT2s1ZWJXT0RvSjVPWG5NaW41dDA1Q2hXWjIvRGpVY2t5L1NpYlp6eHY5VytxMHRVYTZvbjd2YXg1L3owTFZxNEFTRG5vcFR4STUydWxGSGFMc1pValdvTWdpc01NUVZHK3Z3WDdvVDkvblVRQzlaSlgwK3hlZzV3T1hjR2dkRVh3ejBCdGFqUlVIK1NFZnJBNnE5SEhxeEg1dHgrbkdyNlFnWnE2TVJLM2prakpsUDg2Tm90bEIxbjN2b3VBN1FGTUdZUzVGUDl1Tm9LWUI4UTVRWWlDZi9JRWRmdVA3MmhmRnlCQ3ZsQzBzRC9XNi85bUVydnBsN211VGcxUTJ1aG5rbEtjK09OWEcyNWNsd0NUUW9GUG12YlNSTEk0U1ZiKzdHOXhndUxRRkR1T3FVQnpYUHVoRE9va0p4dTlrYVRTSnA3amhGc2ZvTEY1NnFYeXVaNWdaQy9QS08vMXBJL1NlYnlsdzIwVWZoZEc4N0dpWDhUV1RHK1g2Y3hXTlFuRGtNTjZoSVZSb1luUjlMKzM4WHBhMWU2cm5KNzk2elBNWHFFZHBtemZmNHZ1V2RMQ00rd3diSThFYzV0UVZUNWpMeUJ3NFVVZkNyR01BcFc5U2lWSFROWk1hK2owL292eVpwb21DZXhQazZuQnZsbWRQWDNOamdSZko4UmNyMkdrSGc0RTRneVhCV0p3ZGZNT08rZXFQWlFwR1FQa3Z0TDhQa0RWODhJdTBZajQ1K0poSE9LZHlPeGs0SlA4OFNuSWFIVW1ucFprVXJwV2NtRTJtRUxoTWx2N2l5endyQmR6czdDU1Y5SjlONWlHa1NhRnFuU055WnREd3VuNmtiRXd1YnJ4SFFiMEFUVVE5SzBKSkVPVFgwN1poNXBUc2hjM3EvUis0dUZzSkp2Z0kwcXJNNmMwMkZjVGJ0Tkx3T01YNitQeGFkK08vOVpSaWsveWhMUkVKdStnMUlveGRDRXpnZk5ZMzgrL3R2UE5qQ2J0aVlwa0Y4d05UU0FmNnBrUXY3WDN2RnNSNExaSi9FcGZPZkErMFBJdWpmZTJ0Q3V1VlJhL0lubkNQeUdDdUVpN2hBemV3U3N2ZG9xd1FMT0hnRjZES2s2NTRjN0VGcGx2bWZVRkI0UHE2SVorZ0psaUc4MFI2NGJldEZWdVpMaHJ5V3NNTkQvZGVQb3dDZi8rVkhEd3NoUmtha0dQYkNIQjZkZkZnZ3JFbzlab1VEdzI3RDVGQjdJeGdxMmIxd1g3eVp4R25FYThuY2dpQ1NLbmw3cGNJL3BETUdQL2c3bmF3cm5KdUJIQy9kSmhNTFlUNGhNNXk5ZU1uZ3NXYmtlQUg0aVpXbHJreDkrbzg0TXdudHRLdno2VUxCRC9nVFZkbGRhTlVMOWtObzYzbnBhalpYbWdxSWF5di9qSHFmNVhtdzBnQ2h1NzQ0ellxMkZDSjd6OXpEeTZSaFZKUEdJRG0vYnRNTVp1MVpRS3VpRWczOWpuRXdZU2ZsT1A0UGVmNTlnemNiV2tSZWl3VUVQUFB5VmN2ak51NDByMmxsNy9hWG85WlQydlEvSm5IQUR1TEhCKzNIZ1BCUkN5WWlEaFBXdlJlVjNMT0FSZ0NoQ0gxV0JNYjBWblE0NFh3TjdIQjl6K1RHZkxaQVpvN1djT0FYV3NnM0taV0tuaUZBQ3QrVW0rZUNyY3BUN25PL25Gei9weWZjUWlpMUIrL0liT3U4NGo5djNxS0RpMFUwV2Q5WGZ6WFpQY3VZVzZuaEMwWDNMTFZlVDdrYjFuS0xiV0o3c2VMV0h1RDIrdVMwU09nbGhIc1NkaHQ1MGhIMTg0T2YwSURHaWsraTZWbTRpKzhIZUFvS1d2cW5PZkovWHNZZW9jenhqM1I0aVRNRzlpc24xbTJtZ3pzMnB4Uy91ZkkwaUlqUTlYQk85bkFDYmZqYWE2dk45djlQSlVqL3liL09TMFhyb1N1SHJXeDRMNTFGZGJwV1RjQ1ZpZjRJOVRNazNqeE9GeWF2aHZBaTNwYk5iZy9OczdoR1NQazE4M0djUkplL3JMNUg1MWhaNlN0YThFR09NR3JBVTlsWXV3K2x0SWV1eDc3Yy9xMDFENUNWMUtMN0ZzbHFyZXByY2ZFWlN2Z3hEazA0VFd5TnZON2RGS0lnZEVDL2hPd2tTSDR2Q3ZnemttelZLNElNdzI1cThwMjN4cTdUYklXdGNuM3F5MTNPM2JTT3ZzOXI5YmNxRVJvamd6QnpyNmVwVU9uVk5aV3RGQmNiSUhDZ1cweERvRGphWTl1VUJiTmJ3aUh4NGNJMXI3cjJlZ3FYWkJyd1FjdVlvTTRlZGpId3kvUmw2MjdNd3B4VmRTVWFRUkdmOGFtQkhNZmdoWEl5VFFOVWRLMk11TG0zQi9XeVFjOHExL2hQOWhCd1Mrakd4aUxwVlppZXJmUm51QWd4MzllMzV2VHlzQ0xkKzBqMk1vajdZY0h4YTVSaEkveUJsNUJ3YUtpcDcyYzdZYnRuM2UvTnB4ZzlQM0tHM2dlbEYrbGV4Y0o2TWFybWtZM3ZxWjZrZ3RmQVdFYUZzZ2JGeWlIQ2RQclA3UDNZeVg5aFNVSDgxMXV1TDFibWIrZEYwblBrVFFsTXRHNzcwSnhpeElrek54Z3NHbzMrdFRhQXZ3MHhNaDQybFExU0xrQm9XcGpoaE5obDFWSjJIcHB0UmRyVzRhc052eHplN25GbUVGWnVkUHNTR2tNc2xSOUJ3NktRbDFNTnJsMXVqM05DTktlbmtTSnpVa1pmTkFHNTJkR3hEbG9VYk9zV0RycTljUXdHaTZUaDhCdHBycERReXZ3aGMzdFUvelVHcXppSHVqS0tQUW1vZUI4V2NzbENJeFVBcFRNczBuSEgxNlNJYlB0M2FBRDM1aTZYRXhMb0Fxd2pmMTMzaTZSOHR0ZndKWFFTQXNBdUk5VFRWZEw4MUowRzlvelhzN3FtL1RWMVcyQlRoSytkdWVpUldBUGR3M2pBSlFxSjJ5enRtaHkxa2pkemtuV21BQlovaHVvUlNlTG1yY0s4dXl0MHpsUUx6TDRWTEJNQ2FXSG9kbU8xWVZjV29RL1VsL0d3NkpYMjc1WlFUSUxMS0V6WTBra20wSThydVpVTmVtRlh6MHFuUWZ4eVgxZFBrVWMxVzFWbXBVaUVoNjEzaUtIQVFTWVI4WjUzS09rKzhMcjRkSnB4VzB1RUlLVHVCUUdwYlNWd0FwMW16dzV3K3Y5QjJPaHBYRDJvM0hVQWZJL1JkOWREdWNOWG9OYXRnOUhXRFM5c09DbEZkYTgvejhtUHlXZXV3SGtYWjhQd1hxZFhNM1FqWFRvVVJRUkpKSWFFMlM2c01FSC9MVEppNWZ2cTUrRGh2eDlqN3FhLzJQdlNoNk9ob2I5YmViaGZEMVhoY005MmppZlA5ZzBMZlJCNFJYT3hIT2h6ZnhZNVRNRGpnK2YzNFgvai84VHR4a3ptR0RWU0hMZ1EzTlFlT2xpNDhnem85cXZsM0d0RlpaR0t2ZEpQOGtKR1RJVUNzSDhNSEV3VlhsV2E3ZlNIY1lLSC9XYUR5MG5FZ3pHQS9KZGNTS0JRMGlVVUM2bGU0SFFpVUloWm9JS1dZU2ppRG5CckFRdXV3Z054L1oxU3Urdk9IeWxNeGZ5bWRrZmFsL1gxZDVXNTNVN1FMWXVuL1NyaHJiZmFWRW9MTU5NSTI1UUYwZm82c3NyejU3MU1zVmF5SlJMNktmbEhvTlNPenZmczJWejF4ZklER25mN1VuVEZuclFpTUhQNE55Ui9QQUUwTHRidGhjWWhkRk5zdmxYK0FVaFUxV1l4U3FXeHhDTWJkc3FFd2hma2YzZ1R5Vy9qWDlMMkhYVWhQM25ITFN6STg3dkxWZ0poMU1vRVVMWFk3MkJTUWVRT0pETXVRYlJLZzRyUERuU0ZOTjN4OGNoZlpiMzM0blovZm8yTzFDbWlzVXdmYzg3VnB6WUdUQUIrWmVxQ05ya3YyN3B0dVp0a3V0VzFSaUxKdHlRaUJzbTdZVGIxMmcxcWo2RUd0MDg4WEpxMDk5U2dFeTZSdXNmOWc5eEE5Q252V0pYUThtdGxuYlRhRTRPbnM1bkhCWnVxeitLVTd2d1NDKzloNVc2MzVsQ01LRm9sY29IZFY5dk5hallMa21LT1QxV1NneVV6bVYybVFJZTBQcW5qRVlkS3NvUFpQS2RjYW51eC9IUm8zZk5XN2RyMGY3VUVMZHowb1JzVEJNVjdUdkxjbzFBdHpOejdBZjZ3dmJGRnVuR3M2eHY3dndOYkVWdVZtRUxVb3dhaDM4V01kdnRDMi9aWjNFNnhHWGZnOTI4YkhuaWYzVzJzdWlRVHlrUlRpYU1yL1c0alozR0d5RlhNNlRqZjZNNFNuYkhxK0t0QlUvdkszd2hxUjhRaW5HdURxOUhlY1VmUjdYRDF6VnJ4ay96QTkvejZhVmtzei83dmZ0VUVKNzVxb2thWGRwcHBqY28vY0k4RG5IL0xyOWFSNVdzalpPZm41TlVZd1FNTndydFNBU2FSanVTZlFLUWdiVUl4RnRSTGo1cDVsSytpYXBPSjIwR20vb1ZmTE5taHg1RlF0TmRBbE4vUTNtWW1SODFPZDRRWmJMU2twa0Mwb0FSS1RPNWE4WFdKa2pyTnN0U3QySmF1SFZJYW41NFZHRUQ2RHVBREtuL2lSaVRlZGlQUytwaU0xV3A3V3ZWaEg2QkZFcko3NmZtSXBnbks1azVJSUdzNGhhdWNWbnNJUFJmTVYydkc1R1lRNUtuVjVnL3pzN0FHd2t4Y2NRNm1tYTQwanpQWlBhQ2FSeG9Jc3RKL3BsR1k5QXRGcXNXRzZXUkVEVXpUNFFaRkpPMkgvcURlbUlCRDZRZkEwdlp6NFNuRFltYmFTOHNubEc4cDl6YjM5TzMvelRUanVLRndwYjE3V29qRmo3ckpaS3N3LzBkd29ncE1lUC9CcmN6cVgwc2xmbk0xYVByNFFoeWJBckp5aE43cEVCd1ExNUs3R1hxbXVYNC9zOXI5eGVWRHVZaFNpY296RktxU3NiUEp2OFBXeldGZlc4KzBRNm42aWhMQW1kTEZTL2x6MVVhbTRRdjZuYnpIcG1jNk5OcWtIZ0pzTHZUS3h0U2F2bWUvUlViS09yNDh5RlM3aTk5VkovWTllRVlGUElFc0REYkU3N3BYM1R6aUxsUFRNeWNIYi9XdEhxWkJhcmdEUStPc1lGRVpnQXdRYmFZZlJVN1hEMk0xRUd4VmxRUU9SNHhXbkltZUNhWjBQdG80MXdRMGxkYnpOLzF4QWZrdlI3T2VEVG5HTGk4OWJPMTNrV1BJVDVQbnBhSVFZQkxEZU13YTBUYmt0ZkI3R3pWVUk0NzNoQTBqQ0xLSWJLSVZEbDBGdUNpM0pSYnlNWXRZdmRhR1g1MXJaTlMyYUVRb0xIamRnZ2lDeXJtRm5IMTJIUUZ3UVJDU2wrc2FIc1FlRHBoeUhVTUdINHA3Y3pUMmp6azN5LzN1eDl5dFpPcytqOEVUWGs5aEJMcU9MSGFGSFFOT1A4UlkvaFRuSmR0amROYzN5NS90MTA3RmZ6bmc1WElnNjRkelVuWXJWN1FwbUhZaThaczBIcVRlVmt6d1lhZnh3UW9OMzlTcGZtVkxlSEdFSnE4RGVzVWlCQlJtNjU2Y1NJY2o5a2VQWTlvT1RwVWlCTEJXSkQzNXU2K1YrNTBpaEtKYWxYTmN0NXRpNExoRUhUNzN4ZkhvTUNPWldNU3RqVERnR294N2VsQnRQOW01UHRmdWlGWUdPbEFMMDVlUUF6WkZrUHcrWjJRdDROTWsxRWlCMnRmbTRsVzlBeUJIS2pmMlhTTFAvNis1NWxKUE95TFFJODBlTURXdllGSk9lVDVjYlFlYTBtNVRNZTlNeXpTRk0yalF6ZjNpL3RHY2dqS2IzZGFEYnAvb2J2Q3RYQUtSRTMwM1ArVTNURDhEYVpCVlVOaG9KUDdpZkppV1BIY3YvQWJ6VTk0TlRjRzk3VU1GNWZNM0tiU0QvN1FFMi94MUV0YWJLZ21kODkxNXZBN0QycGlpVXl5NmxZaTNyZDk3L2haNzR3cktOVGhJbFRFa1RmYS9yRStkb0NnaXp3UEdMQzhic1UxVWlkdnpKaGQ4ZnJYK1dSdnQrWUxnV0szR29zaUFzTUdRdHRwa0ZuMmRxMkhDUGZmUDRuQ2YvQytTZUJYSTBoS21IN0RHSHZhZ0R3bmpIczczWlFrdFF5czd5QjJBMFlQaXF6SEtHRm9zaVl2Q3Y0ZUFHM1VBZTJEY0RSS2JKcHRxV2tLdFVySEpkSVVIUjBpQU9aVE5YdGZPWGhoem1KTGt0REdJeGtFMjYwRVhlK05jaGlGdyt3VGpBMWxLYllMZkFwVEhSSWR2NEtnejlEbmVZV3dveEwzUkNwU2MvUlp4NUhJSUxSbFd6L2JHWnlMVG5Rc0dRbHJUMldySmRGTWpGNUhPVXFISnN6T3RMYVVVdFlJQnRsYzZ3Q0lMK2ZSOVkzS2EvNnVsUzUwL2hsTjQ2NjhnN2EzMGp5L2xuTmhYTjBIWGdIcW0vWXRQRWg1T1ZZNUZZYmlJdC8zV2hKMkNlclBlTXYvTGRmVFpLYVk0NWN2cmx2eFBMTUVRQVByMFdTb2Mvc3ZiNFdlYjdRdllzSUZINS8rNjlyUmJBSllMNXVXUERLakQ2OU9nTkluRHdEK2hUODk0UFB3OEZtMXFpOExNK09DSWkvdG9mbTJndHg4SVhUblFPUCtzdjdDUDFDc1pWUTBCYlRkRm1va2N4dWhucjZPbWpKcGdvQmpQVmxnL0JlN1BkQWFEMnZoL2pmY2FhaDJRUS90Sjh3czNyRGxIMVdJSlBPTk9MbWJVOVI0cHRxanAvNnk3Q1l5VzZyUk9UQTc5d1U3T3Y3VDc4MEJ6VGFCQ29ZUDdtamNSSFE5VHppekVQVjk0Mlh4ekc2Mm5kcnptVHpvTUtadkE5SXBiUytvKzBoSHpFUnliTFBOVnRoMnZPZkxjY0pqbzBzQ1Z4MGVuOUdKY1NwcVFuRTdrMHh0d0ZSMWNJQ2lsVTU3bUp1Q2FUR1liRDljbFFQVVNEcnV6aHZ0VWI3dkpzV2g0dUp0ZEdLMnV1bXpjNFZQb05JREFCVVNYTStieVlqb1dXS3JSRThCN1puNUVISlJjbnRMelRTVXgzWGFkZGJBcFB2dHAxdnZpNURFbW8rR3Z0Q05TYklrYzJpNWI2dHdMWm0xaE9rSHIxdExVWC81cTQ2bnVFaWxDMWVCeDJRZ0gwaFFLT29IY1dqbmtvak01WjVDM1dtdmJlYSs4T3lhcU83ZHF3aDdzdkorbW9yMEt5ZUk5WHM3Uk5rOWovOXhFZVZCQVA5WURtSEhuYjZqTFpsUFlJR0RObER0azMrb1V6WXNDOVhHVXk2VVRiVXZQckRQbm9FSjIzS095ZmlVRy9XRldmT0xHNk04UXpRR3dBL0k3VzhUaUhlOWZ6S2JvRkwyZEM1SkpIK1Nrc3h3UTNvZ3B0VFpOOEFwMzU2RFpZVWFjK2lpYUZ1VHpZY3Y0MkpXd3FFbWZobVhxdUFuN0RMbkRCMkJZTERxancwMVZDVDk3UTZFVnVVM01aa1VyY2RvcmJ4cStHTG5mbzZTeUhwSm9iNWsxMGFKWXBoMTYxYmphZXdwanhZYkl0REY2SndJYXZtL3JvODYwQVkvME1pM3c5c2pHdFBnZ3BETnZ4ay9rMUUwNldMckM1bmpPUFhkV3NNUGpEbnd1Z05MUm5sSFFZRTlPNjUyWWg4RnhSY0NiTFNGamJHODYwdXA1ODVITWg0d3F2VURmaFI1bCs5ckx3VnRpRkw1blFXZmNvN0dTNS9uMThSS0FsVE5ML09XZmxhTjZGdW9JUGE1aXVTbDFtRjREb0s4Z0lKQ25XRjl6MVd2aHo2UGVZM0JTdGxkeXhrSldXWVp1cTRTcXAxRmRxZStvMkpoVXhOUUdnYkR4c3FIKzRuQVZzSlZsZlhDV3dFZ0xiRGhUY1hWNVd5ZEwyeFdUdXJaUENFRVdMVkE4QURLc2s4Qlp4L2RMK2VqaW5HRTQ1Qk9KSnlHK2tiQ0txSC8vVVhMaUhydGxzVVhITi9aUHoyaTY0eVIxd0tienV4dlNoUlNJdVQzNEQ5MHh6dDk0VGxnbTQ2NGFXdDhCcXh4bDFmTEYvYkpLOVNwSnpqU0JnN3Rock1UTkhYWm9LczdLbVh2YjlFSnB3RVhvcjg0NmFsRy96OUxtV2ppWkFUaU10QlhrSzdyRkZtR2luSzJtb3VLS0loNmJnVm12RnVXWlBaYUFRa0hvamNmVTVHRWcvTTJUL1BobzRQdkYwWndlYldHcVZQK0dJNmppK0xiakppUnhtVFR6dlJQd24xYmR6QTQ5Z2NiS1UwRVNIU1QyRHNFWk91V21TY05zVG1YbFlCYlZSVTJWVERzdTdkdW9oM2FzM0UxNHFtdmVDMWExdG0yZnRKamxyOWdXWDVjcjR5S2NwODdhVWJCM3JMYmJ3UVZtdDhQaTMzKy9sRnlMUExUSjRYVFJlb0NOVElRY3paajFUbENSMTE2NGxReWZjQ2RpaDg0ME5sOGJzVUUwT1RkM1loNW1MQ3hubWNIYm40UmdZRE1CUVlXcjJyTDhsUzdMOUxObW5IZWlUcnpXazgvRGUzNEVoRzVCb0c0RVA4UlVpVVo3Q1VkZUQ0VjdKN0lVRUFZZ0hUQjE0TFJpeS9MNGgvSmpNd2I2ZVcxTE1CUVNOSk1YdUJmZ21za3ovWXpkUUloaUtINU0xUk5mcUhmVDRuU1dJeStscHVGQ0w1bDYyNFlCdzMyR2JQRW5TYkNqVkFkN3F5RDJkYUJwcXZDNDNaTzlPa1ZCL243QU1kM3Q0WEpEVmNtdWV1S1haSDNuZlFqaUVrRUdMVVdUUDJQZU0vYTgxaEJFUE1FRkhiZDkzV3RsellpbFlNamZ5eVY5ZVVEUVhOYnBJTmRLcTBSNllZSU9iK1JYQmpiQTNhc3FEL2RycGNzZW9lNnVzNTJHdjB0bWpPTjcyRHBKSzFRQjVXVnVETDBidW9EL0tQc1U5a3VWK0RYTmZmckhON3ZEamxXVUtlbkxUY2hTV1ozSHhsN2VwbGFHQ2thdHRiQlBqQTNMdjlzS0s0Mm04WUFPeHQyR1hic2dSQzF4alV5VCtMVmtJU0E5ZFIwVlZjbWFJNGNvZGk5UmlHYVhLTDlsdVBOa1BLMU5xZ1hMSTUwdVMxT2hzNUU0cFJzY04rclZxOTVuUVd6ZU41YVQzK1pLV28vUmhhOUpsZDlVMm9IWlJ4c1hXUkh1U0NEWW9Md3FFNURuTC93dzk0WEpPamFJN1ZkMU5QNGFQcyttQm4wQmJmZlZ4R2dPRlVnelBkZFRnWndnWUhaNGcrblVISTRXYnh2R0RBTzZPN3ljbHdUNm5sdFUrNXViRWRVSy9PSzZKUXhDMGxXK1k5eVNDK3BWUC9SUjF5bE5JNGpCeDFTcmpIYVVrSmdpK1ptVEJ6RVpjZ2p3ekVSK0hBTnlZQnI1ejVRaFljK2xrM0pvYzN3V0h6WnlTS3QrV0tYMEVmaFdTTUg0WHl1R3BLMzNYUmV0RjdlWVNrMC9sMk15WHM2U2lzWkxHV3h2eWpZYVg4dVNCNitaNXpXZkF1blROa1k0TWJjRmhBUnZyYlNldUcwaDhOOXN5SkNRYXpOSExXMGdyNGFZNDdxK1dMVWlrZW1NdGNGNUNiM2Y1RnBSTWdDMk41UTJYSHJvRDVzREsxdU01clVmdkZFK3JNOTd6a2UvNjBscG9mSDVMUHVPY2hVSnQyQnUwZE42aUNnY2FTci9JeVgvU1U5aFJBUWV5dWljNmJUM1ZwRFhINGFDZThUNFNtSkhZLzE3RExJVVdUK01JNEhvWStLMnhHU2xrWGpJQndOQklENXduZENJQ3dOamgvQ2tlME1PaHZFNnNiWnRsdldOZzB2bk5zQmhKb0tMMFIwaGJqUUNpM1hQeGtPT0E0NVFuem5lQ2tieHVQWStQVFV6Z2tXQm5heFRxT211M1ROUDlWVk9Ybk16Ri9QazlQa2hzT3hudUxKalJOT0UxTTlhVUJTQnhIcnh4SDhLU2pPNXlwSzF3RXd5cVhPSUg5VHBOaDN6WDR6YkxrY3JPYXRHSWY3c1ZrRVYwZU1vVHhIZnQ3L1NxYVNOTjFIT1RacUgxaHFkbTlKdmQybnhGZlVkVlVGd0xwUXRCTmlGRmtsd3hSdXRDTXBoMlMvT1lWQ1BHTk55QktOK2Zvay9QVVhueG5QZ1MzOFhPRU12blFmN09PZkRzSGVISFJ4eWVYTWdPbVgvTzd3cnlHN3VjV1F5SWZ3WVorZXJDK2xlK3hZNkNxZGNGZkplRHNsRW5Rb1p5ck4yL3E5T0hUQXBsa1ZWT09ycThKUUdTVG4wL24wSTFxWG43bGdxZmh1bjNRcEEyUEhtbmRzWkJDd2poRnVONXNLWWlaNEJibDVzNnZoNjJxMTAybWl5bHBqWDBCQjNxRUZKSWFROWt3VFc5eWp2eTRKZGJQbEZqc3kvU2Viai8xWk5tZnJOUFZCNk0xR2hvNDJnMEVnbkJOT211RjJ3OXlHdWtEdTl2NkNmNlRCK0M0am5mb2tUUXBPcnJXWlV3SGFMUmlyTzAzRGEySW1NSjZnQzFIVnhOdnM4eHRtK3VBcEdBZXFJU1laSnJJMUpoVFppMzBtN3BHNDNHK3lJY3BOcU1xNWloUXU1TVVDWkJ6YlpVTVFSdkJJRDdXemloOEdDYnNyZkVYa1FiV2kvUzhEWFc1cmZxZ3hMcVhTVVBtUlNRd2RMcE4wN3AraUJuaUk5blg2SW44OGFiUWtnejlwb0dXaFA2bjh4dW1WMnRzcURJTm4rU1E0dUpVcHB1VE9VbnhvNi9QMm9Oc3FWb3dVT1YyRlJuT01TV1YzU1lJM3VoaTdiOUlvNEVKaFE5UkY0VGd6SkcvVG8rNCswcnRJU2JZV3ZsbVg0c3VldW9ueFdGYkNQb1hTNW5Ha3lqQWhzRE43R2NqMlROam9pLzNKM0V5SlNTMzFGSzEwTWY1T2t3MnZheU5IWW0rSy9uTjdBWERwTXhCcTE2OVJRTHJmRU0ycUJaand5UWt4Nm1ScGVzYkx4MWVaejdMbElmMjZLeHV0VXZGK0JjLzFkYnlCUTg4UTYyL2Jod0F4QUhKVUZlYVNFaXE0MmZrOVUyWThwR2FZWHY3a0IvWkFxQllqU0RjK3ZvQzdQdXJOSENxSzZyNDd5UnZUcXpyT21XdTdBSlY5dzIvZkpxaDRRekRRdHA1bjk2WGFZeTAvUmpqcWYra3Zia2tYWHhiWGxMYVdMY2hzWlorRHNNbVdPcXRIZW1YcUZ0cmo2cnBtVHN0a1lDZnJhV3ZHeHRSN2dnSktPRlV6VzI1dEpOc0VhZFZ0STlMY1A5Q0ducXdwV3hQZnRwY0NTaWI4clVEUDJTODdxY3Ivd0ZnSUhnd2ZsRXRNb1BTUGt5dlhqQk5rVzZmQ2k2WCtxa3hHcFF2bmE1R1ZuK1hzMWdUVFhkSzJBUy92ejE0cTdYYlRjSnF6Vm0yUlg5N25rTms2VG84RTNtcFVtZkdFYWtsWHh1bWk2UElZZ0E5aUVJU0U3OFRuL2dkS0srWWdGSkt0dnFSR0VWOVh6WktlaHZ1ZXhMZkdrNUdTeUo1dmQ5RUhuRWNyZVdLK01ZVHRnZ3pibEQ5MnY4VXVET2V5YTJxSTUxL0x1ZElUNG16UC9peC9KYnJ1NWcvSDlkR2h1TW9scGtoRThlSVVWMEFkVDIzV0pIOXpLelUxS0FLemV2THpCTU1WTURldkk1TUo4Z3ZvTUkwcUlsMTFjdlBoOHczUE1DN01ueCsyT2dWVG5ydUpqemdSc21UOUFQbURCeTZVc09tWHBpZDFqcUxHNyttb2ZSOHVlQ3M4eEVkcDI5ODBOdng0Tzh1cC8zYlJyZjNCNUpSdTBrRC95TnI3d1dOUGNsektqOHVPcUF1TjBXUGEvUVRhQlN1VkU1RjVGRDZlZnVta21TNjhtNk1ubVZkZy95K04wYnZBSURNYytxNDRNdGFCSGVUeml6ZjhlTjQrdmJDbnMwSU1xNjV1bFg2aXR0R1d6bCtScC9nNXNyRDgrY0lGdk5hbmpRUHdKR2pSNU1UaXZiZDlKVGhOM0Jta1pwSDdZQUJnempWdGhHODA3NEk0aVdHazRRNit4NytOWTBKV29mR3l4R1c1WUdJMXV0RzkraTYzWUI3ZVMyYVRRSXJhRnRFUEJ0Z2M0TDZqRVpHTEJsS3ZZaGV5S2ZUU0trejlmSVJVY0R0YmIzcVZ6OG1BaEx6ZTVjOW9VdEs0K2g5Vk03VmRIM213WVJBTzdNc3NGV3VpR0xmdVhCamxOU1hieGlOQ1phRXNoZW1vaFNZRHhsNmxiYkIvQTAzZlBVR0kvU2E2eVI3ODJQZ1JIaG16K1ZTY20yQmY3V3ZOSVpiZEkrb2FkVDhsU0ZnWU85QjNScDdUcy9POVBjcGxoQnI4aGhoS1VIQnZuVmhlTzJreTRiMkZaZFB0ekI5VTh2NHU0MGg5SXhDSXVOTUVMNXBZcnVYK3B1dHFJaURPbUJjUUVqR3B4Y0VtRFZSajUyOGZxYWxZeUU1MWZWU2MyWEphSys0Zy9TTzQ1V24xeDVBSGFtR2wyL3lFbGR0cDcrM3ovZ3ZUOU8vU3pMOVpqUGs3YzJwdWVrNGU5M21ibUlXMG01bXM3TlQ0enlPM1UxaWhvN2o2UXNieHFwcGxLTHJOQlZBVEtONEwwanJKRmRaellBOFZxU2RwK0gyb3pQc1N4SXVmTVNyK1BCWDd0M25FaWFxRDVjakVYREdwd1cxeW42L0xYVEtrSE9kYWtiK2RabllZTCtORHVKclNhcEhxd2lHdTVzYWhWRWZ2S1NYdWp1TG9xQ3B1ZWF3SUlqajRzSzJ6Z3FDdGE2QzNJWGg0dHcyY3poM29XY0tWVWNaWU1MS1dIRXUxTTh6TGkrQ0JLM0gwYzZzdm1pNHNOMjQ2a1lJQXNmOGxOd0NCYmR3emR4Z1FqT2xWelViWlRVTGtyN2wweGlSSEhweUhBenJocng1VzFPOEVJV0pUWmF4a25QM0NLZmsvR2NwcGNxb1ltWGxaNGU1K2F0dFljb1FUVWJzRlpyYkFNQVJpNDhtRFdCRHNuQjI4MWJDdW1rNmFGRUcxN21OYndlT1FSU1ZYY1dSeHR1ZVFjS0pRY2lJKzlaQzBWdzl2V2JERzZkQXVZNUF3dVB2OVNVdmp2dnhRbmxUYmYvbEd1S2w2NzhjQmtxSGh4N1RvU1IzK3c2TlJ4bldjaytPbVBOVzhpU00yU2t4Rm1iam9aMEROT2FGbVpncnQ1VDJEV2xQYVdQVEw5UW8xM3FLTkJUcDNGVFJXdlBzV0xQQW9aVHBHMHlNTm41VEVONy9kdVM2T091eTY2SGVDWmRqSEtOblFtakN4VGtMUkpBY1plUm4vTFpQWUUrK0E5emZjTGJjVzlkTXZtZGlGWEZIT3JXa0prZk1HeXNIcGJObk5tTmwrYnJvdTdiU2V4TmdzaStVQmJiUXFrbm5XZGNLdTU0ZG9qZ3FVYUFoVW1RZ3ZNbVE0b0x4WnBjSWtpc3hVRm5ZMjFJanBQODc0T0NRY3lFTTNHOFl2M3Y3WlFuYUIvc1hDTS9XSFBOQTJHTTkwUUlxK2lZNUlyY20zVmQ0US8rci8vZEhlSTI5emhOejMwVnkwYSt6ZW1wTFZyQzBhZGM2alZJcis5d3RmSGpDeDROVEQ1UU9wdTY2N0V6aFgrclZHemJyRzczdDdlMFg0UERLbytnOElCbFFCSklYREg2STNORm9iOURMWjFKQjhnM1BsWjFua05lMk1wUEU2QzVtQnV4NjlaS3BpWjlZMTE3RnFHU0dmREpFaGtGTHdmeWN2THdJbFNTcDNnWDJkMjhLaDd6S214SWlPb0xyZmI4eTE4M0lrNzJWNGRoMWFMRjBid1FEMGpNQUVtMUtOSnRMd3NXcklZSjFjZXhUYmYvM3Rlc2VxeWxWZFRteHdrd0Z3aXNZUFl6VEVGM1hGa3NGVTZ6VnBFRGhlMmlib0dVdjFPcEJRZWRhNzVnSm1TOHgvbUhOVm16QisxbHordmsxUjdkckpiMS9QdWpvQWdtS2lKaG5KWWd4d1dQcHh5K2xRcmFZb3ZpcHZHVU9OL21Pb0dtUFlsdkVFMWdyelJUeEpaaVJKLzZaTWVGMkVaUUN3K0F0UDBjTms5TlNybzNrc040K2xBVTZranZqeDBmZUlvYjgrNHVmQ3dOK1d6MXphVUNpS1ZBRUFXNENsUFdqeHNzYU0yemtwUzJieG5XZjZBMVFaZmpxKzc1Y2QvbFU1MWtEWlJLcEFDVVpwdHlVbkx4ZUVIUVl3dmViY3hudUlBUE9Yb2FTQkJySEp3T0FWaG1PSTB6TURiYmxZeDhQQ2hPcTRNS3FhS2JZR0NRVXozZk9wSjkxaGRxSFI2TnhvYWhvdFlMdkF0QVJaMmIzL3lrS1BvT0lWWkRkTmRwKzArbnpzclhNdUN5TjRZWkJSdWg4SWgwcTZUcU5reklIT2FlaHlVbWJ6MmxEcEZZYXlPNXYvK1JndFIyZ1VCclhtN3B1Z3hZeXluYWtpaEFVUnpPRS9UMXZWNXBzdWg2a0JVMVRFNWxUZFNFL0xkekRjT1BpeWU0VlNmODVTSXROTENHOE10bVpqY3c4eWY3RnFHZmR3a3VKT0p4NnFicHljUFVLbXBwY2M2U0g4cG1za21QQTQxK0dXVC9pQkVFN0thVjRXbUFna1N3OG05cFExU3k5L0ZNbldpcjhKR0pzOGlDTm8veDdvTnU2WG5sU2k1bkNlSFFRWmQ4djAyRWkrYlNraThBUUlTS1RKVC9YRGFVQUozU2xoemFVZFV5ZEtHZlRsd0hIWll6KytDNUdpc2ZuMXkrTkRMVE9VUkFCb1Y2OWFYRm5iak5IL1Y1eUNYMkJpNTZjUE9lYmlLWnhzZ2xPMUlYaVJ1UVE4aUZEK21QY0VYUC9NcUFBSnEza2dsMFhCaVBUOXJYYnlVd05oZVdmbWgwbkFGdXJRc2djYWRDTGg1NTJnR1VhMGprNWJFY2J4YzdSeEJYNjFIbElPWFRlUGdVVlZYOXRWV1NQWDVGaWZEZGk3THBXeGNKdjNhbFVsK01oL3Q0L2w2UVFubDVxMHhGLzRiYTk5Zldrb3I5dHd3SzhuU0FNOWFwZTFFYWl4c1kwMFkxR3VEb2FjZXc5QUpEVFI0RVZrbU9WMHgrS3M5THl0Rzh4VldnU1pRZ3pDcG5DQ2orVmY4UEJERDJZTEZzTEN4ZTdpSHBEdXI0UGpuUGRWTVZjczV3QTZlNmJjS2VGcHNRNTljTzBDVE9NR09QZnpTc0FGWnZxVlpvam42bDgrNHNqYmlLTHFjMFJ0MTc2TTUyK0txbXBYOFo0TjVGSjlXeGx5Nno5WjJUUzl5V2pidFh1MHJQMDRVeGs4aTByUG5KZzJoVjhCTitCWnZodFVlbjRTSkFvdnRaMUdVYkpYdnNhMkVoT2JpOUtVWUZIN0t2amcrUGhmc3ZGL1I0djQ3UmZMVDNUOVNaRW5uWWpMeU1zQWpPWnVNcm0yYTlUcjZ1aGNXYXZmVFJkUzY1Nklra2VUTkV0RThPTjJLUit2Yk8zTGZHUTltcDFnSXdkQk9qRVZ4dHllQ1BmaUVYSG45a0hITndJYThPODloNkZaUkVYSEZmTnZKS2JnNHZRcUY3VVRsdnBhZXFvdHpmK2JOeXJoYzZ1c2wvZi90NHBWRkVXZW90MGxQNTdGdm5iN2IvcnkwOCtkRldZT0Y1b2JnZVFncW5GTVRMUnEvcHBVZTJOMytwZXhsRDE3KzRVbENib3lFNll2TTVDVzVwUFYvOXZyd3BBMW13OW52ZnQrMkI5ZjFuODEvZm9jZG9OUXkrV2Vodk1DandyUldFRWhReXBYdlBwN205Q2ZvSi9oajU2RVl2dEpMdGZaSGdtZEQwL2dkTlU0YmhwVVY0S2Z0ZVpCTmRiSG5QMEVrSFNHUVBHa3c2RHZmKzY1MVp5dng1VkFPTDFaMGRzNFB1TzV0Wk9QVXBPU3c1VjlxdnBidVlWUGRObERyM1ZwcVM4UGZsOVFvWWRjWDlQSFdpVFVLR2lOblVMSkJqZzhta0I4ajJHZkF2ZWVZc3h6TURtYjVHMEw4MmZBMWVCRjRDL0d2UGR2aEpPcmcrZGIvVSszSVZDUnZPS0x5cWpqTlhTbTU2eElqSFlVeXpFVC9KcVhVWGorRTJ0aEVpcU9pVm1HQUtLMWRaNlJPc1NrcDBEZFZYTWJVUFhZQm8vTzU0dWpqK0hSYnRUYjFhVSt4RFJ2NTUvUXY5NlJLd3JTR3o1dURoU3I1TEFDK05wNnBkNXl0SDc5ZEZFSnVOblFWTEF2OG1uN3cwK3ZVMkY1SlJNdTJGd3FUQ3BKWmdHU09uaHYwRDZnSXIzcUFTd09xQytlU2wwb2lUNWlRd2FHYW1PdTZ5cmlpTTdubkQ3eGxaZDJNUERQL2dDRE8yemRHQlc4bkRwYVErYUFkblU1QlVHSXNrNjR3MDdJbEhaT29PYTM5dmM3MnBDc04valJHNTFWUm5YWWpLaU9OQWI5YytRSlFRbkxtMU83SDI1d2QzQWczWkJ5R3pONWt4QjhEZ2dwcHpBcjZlSXl1MXA5bGtXTjMvTGRFY1NnNWx2Tzl5d2p2SzN3WDcrdkt6TUIyZFBnNHg1Zml2UFVnaUhmUm5va2trVlEzZmVOeXBsS1ZSQldnZWtWd0Q5aTNSQmhQSHAzMk1CK3JmUy8zYTVlOCtEQVdjUGJMWEpXdERURDY1dmZVL2srTTFQd1pNb29naEJqQ0lMZmpjdzNrNGFGSzZUOGNLZDZLZmRhQk5VK3B5OTRFTG9QaGpuMDlzZmkrbjdSYUNrcXNOUUJldTg5MTMrM3U5ZDhzd3hldGpFZmJtKzNRcTN1cmtwVXFqQVVnSGIzT3dGZzhIdkJCNSs1WFhleEQ5VTVUUzJCUmhzblJic2o4MGtkck5HRlBMQmp3Z1QrTDR4bHVsRmJGditabFJtWlcxLzhXSTUyWmVrcXF4VDh1Q1N2bTBQWHdpRkwwK3FWNXZOK2dGblRJL250UlAvTnRRVzBINlZuV2dZenZvNWgvSzg0QnZHbk44OWN0SW8ra1VPVTRoQjh4bTdXbzNPUDFFbFBabGdWeCs3TDhsSjdWcTRxMlVweEgvOEhvSXFSajdVNU50T3dnZWpDSVVGVklDbkRBRW5kWDJoNWw1U1Q4VlhqUEVWMlhLMTFHY3RrSmZ2WlpmdXV6NjBGKzhYWWorQzZ6aHZpMERaY0tWVFBVR0w2UjMrelpkWjh4ejBSNGtsa2dqUkhvMEJnY3hxUm1IeCsxZDUvUklUN3VxZGFxdzBTbnRhQ2w1UEVmZ0VHNFpXSDJaWDUvdURXZjJKTW9vdi85ckVncGNnZjFyOExJWUpRRlJFT2VIaXdPT2ZvUEt1VkdvandaRG5LZDJnTmxVTjFoNWtWWThRUW1tSGF0WmRMYmNjR2djUGJ0WDlIQXdCRUFCNHBYS2ZBWmVxejNaMEl2aDJNR3JPREc1UndmVC9VUjdlQUpTdjgrVEludXNNSzVzaTJ3OXFYdS9rYXUyMUdORzVaSTYzTjdmeXovZ29jeDZXNW9Vazg5ZnFGZVNyYzdUUkRsTitsTGNoRVQwVHBydmxQVm42eEtxdW5jVkN6bkVFa0hyVTVDN1llbEZyaXpmVUpiOVVieDV2ZVozSTVjRmpvZnVMWjJGNEZuSTdpb1RJQTB0VlNzVjR1T28vNFB5MlBqN1kxUzRnVHduSFV5Wk9veVRvNGlienRlOWVUQURlSnRzOFd0UklCTDJxdVpKcHVjRGVwdnRyZGowWEs2ek5pbmVsdjRnRUZ3ZW1vTnphMitBcUFCVW1kcWlTUUljN0ZLL09lUi85dmZrcEFMY0h4ZERYc0xWRnpZczdiRE9peDNUSllVN0szNEo4UlBmMzlJWXNDUGpMME1NdU9LRDR4YUJ5TGZBdUMvbWgvLzFWd0M0QVRkLzZQQU81THF5SWd2dldaT3pZMjdIR0hRSmptVmMwQVBTWFNnMzd6clV3VkhFZzN1Qk0yMHdhWHp6Q1VWd2xGdVhXZ2kyazdPRC9EWnRoWWdQZ1BmQlFKTFRQR1ErV1haK21KT1hxYWx6OU5PMW5GNHRmeFZSalZmd1loKzA1b1pTTFRybHAyUmcyWGM3eXQ0OXJoZytmdEt6TEh3MnZGNjFONFdXUitmcVh5RVlIOWVGTFA5Rm5kb3BVY2lDeFNCT2g4UTNSdFJ2N0dFSno0bXAyVS96Mm5jUUJXMy8xWHlhdG1aL093cFA2T25KQXFoT0svd3JSc0txUnFVc2J3a2o0SG5HZlZEa1AyRHhpcVp0SWNMTUlYNzNsOEZ4azZ1SGpBWlAyN0gwWmFGSWxsKzVTZkRUQXhDT3RzcnZnQjhpcHptK0lKb1ZNeG4wVzR6aGFGWlJUc0Y3NWFFWGkvSXBmRi9IelpabDBYU0lmNmJNclRwSkU5bk5lN1M4SHd0UExwQnk5bTNLU0lSRFcrcEJwd3lJM2c0VWtid1pXRyt1WG0rMUgyOUlZc1d6V0Y0ZXV5Y0JndDRrbkp3aXZtOUdUeWZROTRnNU0veWFoWVlzekdWaFRoSnBtWkdnekd1Tk5iT0Z3dXZ6d1YyL0ZZU2hTNTEvbXA5dXBxRGtQSVRJYzdXZXh3SkhPQzZUOTNNR3l5WWh1aWZTb0xOWE5UWlBtWGsrTW1aMmVac1FsZndDQmZQVDdOUE9zZ1RVTk9KRXc2NU9nc1EveE5mTllDWnRSZjNwY1J4V3BSY0YwczdNbXYxVGFXWk9salp6eWNINVZsNTV6U0ZNbEU5dEEybUliNVZEcDNNVFdvcTdteUlyVVZ0bHNKampWTDlZMWRIS2d4dVRqdkcvTUkwaTlCSVdRbXczOUR5TkZFYVNBSGkxMDJtdUt1WmNWdjBRZjRyMDB0emJMR3NlODVtNndEWFJySXNlSG9aVFlva3FWNkpKRkFaTEZsNnpFUDM4azRvcjdXUURRMEhuMWQ2L2tyUFI1anN0V3JhY3Y1K0loQ3pHT2FLUHFMTnNiemFveTdDRVhVbGVMZUdraVBnVXZhTnltMW4wQm5EbDVtSzg5Q05jMHhDWGRhYlNYaHM3QkVjdXB2UVVuQXo2NDBHMlBCY20yL1d1aW5jaU5hbHJGRmp5Z1Flb0hxNk1kckUzbUQ4eUIvMXpOODhYS2JZa2VXS3FDYVlxNDY3dTV6NisvZHRMU25BUXNmbnpHL0FBSE8vN3o5NEFaV0RiZHI1YStFak81R3RQc3k3akxPcDdtTnEycmk0Z1BIeXJQVEp6Z2ZUMVIxTnFEcmdabjgwRGh1Qm1yVU9XcFd2dTVRSWhXMDc0VTlhMU9md29PK3h1MDMrdTJrT0JOZkF4N09paHZTMXRSWDRmc24vb3hjSUZYbndQVCtTWEI0eVdlRzA2RFBlTzV4U28wbWRXKzl0ZWo4N04rZHRtN1lEZzF1TkVqMTB3UnFjNFAvVnAzSVdvVnIyRFpiZUpsWTYwNDFYT0hrUkZFbzNBSzRsUzF4Yks3bit3RkNtdHlxcnllTGF0R255RXFaQkJTMUpLS1VIaHRHZXoyeDN4aTRuaHgwNjg0NFZhSkN0YXFmenhtek5XbHV2Y2xYMEwzS3B6OVBOVjUrTmhJbzNpL0YydldrcnhXSmFkRzdoQXhQSmdVTkg4S2dwQzFKYnpmbG5FRGdqVzRTWjVQV0xndldZYkZqNmUwdVNJVmwxK0dWenN5aFlNZHAvcjdmVTdrLzkvSC8zUWZuQ2pnVm1vT1p1ekQzZHRlNlpXRkNJV2pBbnNUVGdFenhlWmxMbFRxWXRBczZpK3FORDVZZXR0dHRWc21VOHljdVJUamZ0YnlPSUFWQXZtWnppOEFEVGNDUGozK21taTQ3RlAvbmtvZmhPdmtTM1JtTFdvbE1wRUdTSmFrS3d5aVp4YmxDK1I1YnlSUEwvVzRkVDRubHRrSGpNY2E2OFdoMys0R3RFbzFxd3psZ0RQNk1XdDkwRU1GRmZySVFZVElJUnMrL21ucGhrb29yV3YwRDBvbUtpQVA3bjA1QnByUnZ4OW1pOTFsN0VqMU8rVXoxRkZtOFRIOUdWMlJUd0NUQzdWS1ZjUm9YbmpZYXJWY3ZjY1YyZENKZ25OaW81OTJkTFJTVVY0RmFpNDY0WWN3RnF1TDA5WGF0dUN4MGdCcGVYOTIra0VyZ0JRc0NBZzY3VER4NHZ1d3NsR0Z1QzlkdnljVE5UY0NNSkhYTjRFZ0xDdmtIaXVnQUh0R3YweFlFTnc0dkd2WUk5Yy9rNUM4cjNrNlVPTXBKdVY1RG9KbWRUU2xoZFVtdTdtVWVwOTBsd0pXQ3JLUno0alB3VWxEbCtlM0EvTWtpWUE5amZ6OGl5b2tWTVRWRkZtdEJhMnF1ZFptYkVvMjg5K3M4N2JVVkFaT281ZGRRNUFxcDZxbDlQb0ZkSC9ZSjdYODJQOXVvVUhNenV6OUNvREhyMmpYVjRJYUhzZUdwMDB2TWd1c2pJbE85VVR0MEg5bDcwK1dIUVdhYlVINGFXcE8zd3dGQ0JDOTZHRkdLL3ErZi9vaTJIbStjMjdOcXV3Zi9IYnRwbVZhN2kwaEZCR0V1Ni9sN3VIT2d0UUdNRS82RlFrNHJZcEN4dWk2OE83dmNab0p0L3BzekoyRlk3MCtFMG5kR0hNL2p5QzFNYWd1TEtlRS9ZK252K1ducnozWVZPdC83T0FuUDNlc1JPb3BDWUt5ZUpRZFhwTE4zeGFnN1Ewb3M0bU9VRVNnelZ0Um40empKY0FoUTJ5TkNIcVgzcmI5bjZPMk5wWVdNdEVQSk5Pd3Jwb2J0SDJTMi9vK1ZRVmZqdUdnU0tydUVHeVVhYTdGRkg3cElmcjVKR211TkNJSXNsQlRQYnluWWRPQUxkUzNkZ1pHNVRaME9DN3hWT2JKSVlvNDNZMzVlTkhESU9yYVJmTUxiN2dJdFhJWFNDamlHdXZmWmdFa2M4eDdOeklzM1NXZVZNRFpKWkZLdFhEZnluS2ZHbkREUURhS0doOUF6VEtrR2ZQd3lxbXdJWlJjUWdRY1NqYzFSRXlmMjhvc2ZEdzJzZ092eGdkL1FoclNuelRpbURySHR2cDRJVVRWcktTQ1RzaVMwQ04zbWlncngwbjJDeWdtZERJRzZHekxnT0JkOEgvOThmei8vSElMNjJlY29Pc1YxV3NuSUhYb2piM25OUC81THRqNFozMWdBeE5GNTRiMnhPV2YyVzMzRUxjZjNlRWIyNGdlaVNQeTc1NGVPRm5ES0VGREZFSW5adnR4YjE4OFpOQnRnU1llMTQvbEZFb1FLbmMrQkhsb1g1V1dvdzVmQ0J0YnB3ZDdMSTFwNVBoVC9VY2psNGhMZStkTFl3OE12RmZhVnhmT2xvUWYxQkRIMzBza1VDVnh2ejFKMjZCcUkvTVUxRVBzcmJhcVNNeDZKNkJ1dWxBLzVlVHVoM05OMzByV1BBVG1aa3Z2MDFSSTU0cmtoTDNEYm9peEtuTWlSU3cxamd2S1M0Zkl1WXNhYnFIYjJoTzcwZjc0VHhQZXNtVm80eHlubGNsM1R3bnhhdWVzMTZwM3p6aXpkMStPQnJ4dDdXQTltZzRLSkxGMTRyOGRTcHVWcVRTdVQrY3ptcG9Ua0hQcTV1YnV3cmVoNEF6bEJkV1NCSHdCT1NucDM3YlA3MTFDZzFaMVBQa1pXN0VTaTFsN2MxKzRaeXNnd0YvNUV6TjlYUmJwZTRGUWpxMHorcGYwVGFtaEVKcTkzNnNKUWNyQXJ5Vm1aSFZGbDlwTjdObWxSNkNoTEV5NXBXdThzVFVRMnM3M3hyR0JMa1FMMjR6MVd6OWRNRlkwcGZ3bDhPOU4xSW00cG9sSC8yVHNqY0NXaVY2eDQzNDdIWnplL3lxcGRtYjBJelVHNDM2OEI1ZWpTWEFkdkF5TnpuK05vQVV2Ky9WWUt3K09uRVl0eE1vbTRuVWVLdEZ2NG05V1IyNUxUTmxaWDdSMjc2OHB4NzV2SG43U0h3a2twUjlxTXg0cCt2bXlpbUVrYnFRRHQ5MHY2MkdQNS9ZWld1V2IxWERYVzA1Y2VQckErUXkrRG95WnAvQzZFc3ZqY0diWER6RG5rMnZDYXdhNjc1K3NtcHhpdW9IZ0xWTHNoWWhvSlVGa2d4RlNRVlVGN2Zqb0tiV3NuQkQvQlpFcVBhT25RYU82QWZuZHdHcmM1K1VtSS9VeDZ6TzJPNkQrR1k4Tm9tQStjaWNoTWQvK2p1dTFRNEgxVDRIL1E1UjBCVittS0xsek1ieWhDM0tXblJ6MUVZUmwyeVRSeTl5bzV1bWxYTVNOVGZCMUZGdE9LNWp4MTNPN3A1QkVpcWN1OUsyQ0dINkxhbnU5WGk0ZThiOHhmeS9nZ1FwVFh4ZE8wczlCTUJOdklXTExYSDM0UlhUYlFkb2NKOUh2MS9iWHIrNWJVNzJjNVhqR0ZIK2oxd0pscTN5dnAybXF6ZmZDV1VkV1BSb2xLN2EyOUdQa2VlQjI5ei84cktJWFRodUVzbzhzcU5US2txdnRzR2RscW1GMzJBaTdMTG90L3JGeXkzT0pEWlZNVVY3OU4remxEOFd6VHowK3R3WU1zZkVYc0o2RXNTeGZ2NFBpaVBtQlVOckdJc25XNXFTVnJmYjYrT1Y5aUdaTFoxZVBuem5sWEwzamF0bi9NeWlMalk4TWpZdnBoM0NyTTBoZEl5ZUlEU2FFVkhmZmpLZXovOUY4em4rcHdRMTk2dk1EVXBiK016YzVPSlI2Vzl5REZieE5Hbzc4bi9GM2MyT0tqUU4valFCVmsxOUVJbC9kZ1RJbllTR1pkYSt6M25GdWZTME8xR3dNb3RBbmJGUWdjWExnSURnL3BnRFlaU3JQWjBZWGthZkt3VGJlSm9Dc3I4dXE0RjZydjA0T3huR21YUi9iendrcjR0K1FvSW9idGY4ZTNjTUFrQXBsTStBdVNQSjhYZWU4TXFCY1hMMWgyL2srclljdTd4VEpKWFRlVzBXM0tObDMrWnBrQ0paNlhMQkNLVzk3YVQxeEJ4K3BWL2lKMjBZV2VzU1JsQmxpYU1SUi9OVDZYZWtycVJjYmFzdGEwdHBHejhvMlZscGJtSGFtYnRhb3JvTktTdXIxY3Q1b21Ld3ByTCswV3J1c2h2dEdzdE1nMFpjZ1pIZGJoMWU0L1hUTEcwYmJ0Tjd0YWFIRzEwNmJVN3BjN0hYL3ByR2VadGFqNVljakY4K2pweE1kSTV3c2Z1UFpRZU5saTlSdTY4enJDUHF1TmZUSFNZcnpmK2J3dis4Y0JOUWFLSFZVR0tKMDhhKzc2TTBzVDNQa3JpZlpseSsxeU5lUHJLb1NHdEN4czNtaXlYL1RVV3Avc0NDOHlUVmJTbitxZnI4K0lYKzZPZy83RGVQdHBiWFQ5NWR2SktSSEJNSEI1bXdaUEZKWnk4L3JCRG0zODYvZjl5NnQ0TVdpZy9UdE1ramZScHdUQlBhS0U0aDA0eHlXTGE3MWhaMW54NVF3clNPaEJwa3Z6K21pS2doQ3V6d0lwSW5ubGZqOE9Ga2tUcmJpMkJReFBGaUJDOGgweEtnTWU4MHNDcDNzcGhzVFlkaEhGbldNcXhRNUVSUWZJc01hTmQ5TWFLV2pWaFNOcm9qVGYyYmI1OVAvbWUzL3U5bXVab0hIbE9BZ1czR1pIMFdwVU5QbXRpVHk0MGtYVHVWQUhGbGJVbFRlWG92RDFwd3BLUlZBV3BlQ0lMY2xlOG83aU5XWGNzb0R3NzdSNEhhUG9VL0doRVcvMGNkNE8vMmZGczYyUS9LSVN1d09TcjVSeE5YMWI5cU1XdGZkakdieFozZVZBdW5HYlhiT0YvOHd0SWpVeXVQYU9iNkVpQmgwY0RVS0pHck9WQzFhdnJvWkUvWGFXeWdqSHpFb1VJZWF2OVN5cHZCeWxXcHJITHJGejUzckZ1Z1pwR3dFL2h3SFdjRTR3SWUwbzZTLzF0dHRVcWFRWm1UQldUNmNma2JiVFU2UGttcS9BdytzejAwdWJvdDk3QmVkRitKN252U2VjRFRDNDYzVkVyUC9NSmIvTW9IVTczQW0rcCtES2QzeXFRNjJEcVNSTVU0Q1hxYVp6VGZRa1RUK25GSVZRRFBnYzk4amtqMWR5a0NYTUw0RHlZVTNoVjJqSThucnNqZE80QlBZekZPek81ZndZWWNiWFliTG5GNWtTV3g4MVRSUzFHcEpOTGY1M0w5N0xTL25yRnVkYkpobFhEblYvN24yLzF6Ny8vWGF3V1VsT0E0SjZGc2VJenlMN2tobG8vRGpULy9UZFBnRTE3UVVETUVKTkVFUWRSY09xOUZmaWtRanQzRDhFZHRUQ3VGOE56WVVkeGZGQnlxaCtuS21jOE01TnpPMmh4MFBFbDRZcXF5TDFjczlvK25HZFlCMmlIbWczYVFHSHYyYjMvM2pzQVQ2ZktBaS9GTHA5MVIrTG13Z28wYWZTQ0xFREpNM1pIV0hhd3dUSllFb25RU1VlWjZqNlg0TGg1VnVLM3BrRzBuSkxkOXNNZjhISlVVbktncXByNDdGMzU3OEVqVkdkTnJIbEVWdStFWi9GLzRQTG8rRFpGak1EdFJiR1pkdFVlay9sYVNZbmJoNXF5SGpPc0RsOTBEai8yWXJGeGg0K0FLSDhuYnJQTEdWL21URmVheHhUYzJCUXFwdW1Ib1NaRnJIKzdpUk4zTHFOYXo1SGQzSzh6cTlvODhVc0Y5UzFhOVlQTzJuZ0lqd3FYT2RIOUZ1dEhnSU1uRm90MW8vbmJtcG1XRzhYV1I1MFNzNStuUVo5OW9FN2VwNDRIbktvZWF2MU5ZVndZTGplbFQvdjN3alFOT3c3ZEJER3BlRVBHZTFMZzE5bVdJcVN3V29udmphbWcreWZMT2ZJK0lGM3hXZysrUFovclJkRFZJUTNqZnVXMkQxVFJscFBJMUtXZDR5Ui80TVFabGdLZ2pSQlNLbzY4dGZKRGg2SmlJLzNUNStPZjZpMUdMSFQ3Tnd0Sm5TSkpGd1hNWDJMc2hURGVpWENkODlPMzQ2VTZRTDEvZWtWUTVlZ0dUdFFCbnFMMWRYKy90MXpnQVRlQVRTeStxZWRoTldJUkZ0K0wrWUJndGxuKytlSHovbVRWMHZMTXBEMDFzMFd6VnJpdjV6b2JsL3gySDU1UFBGVXVabENLcklrVEpubWtqRFd4UTgwNXBkVGNlZnIrK25tRmpCUGJucnI3ZDlxVnd4MEEwZlFiQjZDUGJEK01BOXdlUzZmWWZNMHhleG9HWXVzdVJhdzJHYmZkY3RSbStTejJpSjlWWGNtd3p2ZXpsQXNEZGFxc2ZjazFKZGVaUm8vdkhNa2VsRnhhZmhUQU5PeUtwSzhKTFdYbkVlNDdMYnk0L2ZsZksvMkNrM1l4K0M3Z1ZQSWtQMFoxUGt0OFRDUEhhd3pjTjJubGpNbjJ2TkowMXlaQi9xcHRpRmZCSnN5U0dUSW41K3JmODBINXJKZnhHZXZ1Z1FSMHlxR0EyRnpvY1dtcmJUMk5iZ0doVVg4MnQ5d3poSXRNajR1TTN1Slg3K3ZPV0w4NDEzckZCeGNrMVc3cmNnUDBIdDBOYU96dmZyNzh2ellzV3hkVGxXM2VidForaVZtdG94T2Y3YllUM0VWNXlLbGVMRTdkNm9CMTFwcUIyazQ3eHJ3VU5FenF0T1BrejRqa2NSOEJaL2tEZDJxVnNMRmkrcnZOOUtlVlNERU9kS1FoakczeSsrYVUvNGZaWHR4WWNtank0VTZ0aEpCUE1ILzJxVzVvUS9lK21oZkhob3lJcDVsZnA2TWEvWHUzbC9YWE5SVWM5T01waG5KS1paaWgzdXFjTHptZkJJYWZDV21XVEhqY0drZWpFcHFKL3Z0OHowU3JWR1JZVTB6Y3dYRTRiellxcllNQitlWTZaa3JzRnZWRmpNeFB4S2NaZ3NsdnBwbHNOTC9uZGNTL2gvdzdWRExtS1RWejQrVnNsQnh6ZEsySngzY29FSlUyc3ZqRTlFZnl3ekFQOGlTMTRGTllxQ2tsNjhIczRwaERMU05FZHdPbm52RTErcjhzbjlhWkw2ZDRHS1duK2hpSTJPSHkvblNDTVVNYm9zczlVaVVXUnlJaG05QnE3UWpXekR6U2NCZDlmY3lYaU9lVDhWOXZ0NXY5cDJqMS82dGdsWmpnVlRPMEw2S3YvVXJTMCt0aTFIbTFqMDA0cWp0WHl6ekNHZGZsK3NFVzd0U1pwU2FWVUgvVVI4TXQ4SEtWdWlaaU1EQWVxYU16bURRUHNudFNyYndRZ3FBeGZKcmlpdGJ3My9wMk1lNzUyRUkydVdMN3RqM0hUQzhUL0ZRYUZLeWhibTIvZ1g5WGxPK1QrT0lxaktuYmd6U2VBdnVvQTF5RldOaGFyeG1xL2xhVmd0RzBoQkNUOUl0T1k1TStucjJrdXJOWVRGYjB1VWZITlVyekY5MWdRQjBSMEs4UEFkeDg2M2xTU3JpcWpxTGJodHA1Y3ZVbUNzcUtvY3J3RVcrMGh3NGlPenNKMTRTRWFJK2Z3empwOGovQWk0ZVpoRkNkMERSWnUwbHQ3bjkyaWlrT3lmR3NmZ050K0ltenhQbU1qNXVtNmJtTWVzK1c1VTNHcXlTTW5ucjM3K0lLRWczS0lhTTlTZ0dpNzJFYXd6SlZ0MXBMZ3RmVkxrNXR0dTlWNGJZRWl6UEtuRzM4ZXZ1NGJRMTdFbHpndDc0QVFzSVBMRHpRRXZqYm9XQWlmM1lVVGRDMEx6K0pVaGV5NUtvWi9nRm5QS3l3VDd3eVZLem13aVVleWZYUkdiSHZmaG1KcTBXTThZSk1sam9neDEvRXhUUnRKdDljc0VxZEpNbVRpR2Z1K1BTbU13V0dyS0Q1U3M0WmZsZ0ZFSTdUSGNoMi9KSS8vSjRnQWN6VXVKVm5zOHVMUmZBVlA2bjdpSHlZbVZqMzNZMUpTa0pTTm9QY0RsaG4zendYQXdUektkVnF1aWdmK0lDbGN1NWNkNlN2d09HOUdYRzlCNnFKYTlpUXpRTVVDRUhFVE5iajRGZlU5WC9XRjFBR3VDaUlwSTZIenp3ZThKc21WN0tvYnRNTUYrclNYS0JIdFBvci82SGphTjQ0QlVMYWYrb0JYVEtKMEhDWFdKdk5WdC9Nd25hRzdFbEpVTG9XL3hiOFh2Wit6U2M4NGRsbWU4M3dONmF5ZGErSHJvZDdzdlV2bHZSZEtBcW1uM1hGRTBnSFhBWk05dkpVU0UwQW5TV00xdStmUUJmbFBwOEFrNDRKVUU4WkFxTVRUQnVOaDh2ZkZHdktJeVVVVW9meksxTkVwUHhBd1QwSnRaRDdmdGpGSVVkU0hGSWZYdit3ZnVOVkdnT2hXdGQvWkJ6Y0J2MEc0TFNVNU5SeWxYWndCMVF2Wi8wd05nQU5qbHZZQVMxZGk4RUxRc1pKRE1VTDBmb2V0Nk9jS0RoMDhFUEp3enF0YURYS08yQ2FubUwrUE9aTkhUU2VmUzBsMXlxemdtbWN4QW9RWFlmL0FSbHFZU09vUnJNTTIrSkh5ckFXQlVPRWNORWFZRkZCd2xKU09xQWRGcTNyK21mMFA1bHhsQi9BM09ubnhTc2tmUUVZeXBpYldJdDlTVysvL2hJZVpKZ0pRSCt1emxXdndaQ05zN09WL3pBaUplWWpGeTkycXlqT2tHdFdzYmRSRk9reHM0K1BEandQM3lXclJ3dXdXeVRtUjVWeEZCb1FxTjhuNWFNU2JtRHhxZnl1QlNCdEoyaVBqcEc4cHdYTkZRT0t2bWduZlNWeHB4R0lvam5VNFlDeGk4R2ZOMGxFR21LN2xQNDkyL3RCQWV6VzVOdmNCTFE3MDNlNXVhUU5NMC84Wkx1SHd0MjBIK1RUVzNPOTNuS0lJaUlLUUNVQXZKL0FMN1pxOG44K2ZHVlgvMzZ1b3R6MG1mSnZBMFc0ZkQvaGRZQmJMaFVmK09BZEJnWVF6aStubHhKK0JVZDFVN3ozNitMeUpFOXBCSG5ENVNyRnRidkY0b1hOYWlheGJOSUR2MGkrVU1TL3JlOWxydytzRjIzb3FxdlRxbXFmMHdLaHZ0NVN6Nys1V0RsblNNSitOOUVPbEtmZVBQcnNNL1V6dW9aNE82WmxoVHlZN1Y4UHYxVWVsUHc4QzE4M3o0eXRqelppVjVKNHEzd3JxTklyd1VzOWJkeHNWdlZTeWZwampQTUYxV2xHS2k4Q3JyT0pkQXgrOE9uUWdUQlI3STZlQU1RNVFuQm1SZzZPVC94OUd6dVNDWWFTTUxIbFJZME91bDBjSEF3RTRRUmxaamZGKy9DeW9kMFRQTlpwUWRtR0V2N2l2dDRiMWc0SVpmWGttWVYzY1U5dzJ0b2xrK3p2SjZjYmtuZjFOWEVMeDZzS0gveDV5LzMzbUgyRVR3N3ErOGJ3Z3hGdnI2U2xUd1BJRXcvditmT1FUUnZzbktRRXRrbE5XSDdLTExmdXVOSDA2TElkUXRLNW55NUJiemU4QlB6WjUxMzI4QUFlV1RTQzhGdWEvbmhMUW8xU3Z6RjVWb2VETGhldWpITHgzdGgrRUhXTTBEbDNUT1N4WFhqcktHcURjVFlCcm9xQ3lRenFDenh6MFRPREtSeEcyVExnemcyMHcvZVMyYW5yOTJTQ0VuckovNVFSQ0FaMDFwTHBQVzBVK1lKS2R0ZzRLZjUrYStLWjZsMGZiTnd3eVJjQVdNVGNJMVZDNVhaWHRZRG9OOEhNVE54TC8zd1BmazBiSnluOE5BUUVBblJ1YlQ3V2F6dkhpMG9Rb1ZMUWo3dWZRRnNtNUthelFtSEVlalR6cG9jVUZHSlR4T0lvSVkxcmNGUTB4MGc0OFEyUGdkTnhldlMzcXFTRnNFWGdwT2N6OTJyWXYrRDVrSkI5MmZiSmViZ2RWazlmZisvUUlJQVhLNUZtbFA0V1pub0xocDN6clNORCt6K0c2a0NVSWJ0emJmNTdrWldYTjB0QTVLZS9DQ2dGQkpKOXFXRmFoeFBCV0ZhbEFzdTEvWnRxRElEL0g4OXR5NXkrMmdIY1ZHMUo0VSs4RFAxTENIM1d1N3pzWXdHajh2aHRhelRKRDNnNWNVTGlYaHFrdFV2c0d4SU1vTzJHSDA3QUUvV0VnaHEvRXpjdmhGQWZpNEt4d1haNUZzTUV5eFVrNG5meUNzUTZEZnRhNjZwcS8raExXVThOUmtoMjlHVzdUQ2RFR0RSYVd4RW9kaHIrRTREdnVuQmp3V0pGQm5tei9DRjJWNXZxZ2NlMkU2QW5QUUZIVnZGQS9CVEhLZWJ4NkJYRmZHSVFoQ3BiNG84cmZTNUhtNHFXY3RqQ0trQXdYVStMSW85cmp6VWFhWVJ3alg5U3hKTGx0ZmhNNW14bldlNStsM2VUU29nVnNVTGppVWY5NFdrT3ltK2QwOGZnSWJVL1FIbjE2L3RsMVhJVHV2NnlLNGhqenFLUUdkanFEREUyVHA4UDBiUDkzWDJSMDZqSWthaE9GKzZicTduT3FLU0h0eWE2MUtBcHVhWGxIeFBHRllrNGVodXlqZkdud1B1QzFJTW8yWko1YUtRTE5JMHhlMTYvcTU3M3R3Z1QrQnZDN0xNYzVMRmtZclFHeHFCeTNEcUZqai84eER2UWlDeXgwWUwxNTdQaHIyRWREZDJlcExCVCtaTUNLd211QkgrZTlIQjJBckczNlRUOUdQKzJlWGN4cmlIN2FtQXZWNEhieXRnaGR1eXlXYVF6UHNBV1B6aFNPRmtIN3EwSnZPbzBVVVVXUmU4Nm9zanhIa2k4dStFYWRlRjdVZmg1a3FmQmpXeHlpU29DNnlEUXdSazU1enZsZy9sNHp3SURMckxBWVkvV29tQ2dXZGM0RE1xZThlRzBLUWpzSy84OXpnR0h5OTE2L0Zza3dIWXVHSUpFVkZxZHFtQ3BET3g1ME5aZENITisxdlFNYmxpYkhUbWxtV2hmZnhRT005U095NzVlTTU3VkZpKzcwUmZEUm1LOGJ6bXhqVnJWK3BLTStobW5DUmFpU1NXRGdrSVVZc0VienRLdlA2ZDFqay8vcXZRNjc2d1NoL2xVbVp6TEwxTExVdXYrczZtcHJCUEk0ell3OXc4TXNxdVp4czZXWHJvQUdZMzlRV2FTSXJBQmlPZ1pPR1hQaG1IQzNQVldCYTlYOXg0OEwwUW1keDJ5TFV1dnc2T2QrMkJhWjJBaUgyQ0R3dGp3UHJlTy8vSytzNmNSd3A2dS9vRUhPZU4yaER0d3k0NUs3VGlyWWw3azBBV0xEdE9aMXk0Z1BMY1V0QUxBdE95T0FjN1FYL2d4UHV2UUx4eFBNVWhhUGJZc2lGZ2VRSmdlRXRRSlkwOGM3MWhoTFdaQVVUQ2dEZVlDYm1VZ2hRM1dCeFpsRE4xMjB5dVVLUUlQT3NOcHkyWldtcExNdk1ZZ0t1dmwrZTBTVFlySEgxMFVEdWgyQVhpcDZBZGJMS2RYRU5GdUI4T2VsMjVVM1VSRkJtNHljOTlLS2FNdDMzbS9FVm5FaW1NYjRKc2lTaG53bXkrVEFNVjRiaDYyQnVtMXZ1MnpTV2p4cmswU01GbXFTd0tEc2ZvZDUrdXJFVUU3c1hVRHBSSndSNnFmbG9TNk5NZkJya0xldkdFdUJQTmw4MXVSalVtRytidExnYitsY1Z0TGJORWY4OENaYWM0MDFEWDd5a0ZkR2puSGxURXZiZ3dUU2ljaTJsdEdDcmh5a2RaMjVicitLY1ZLUWUrektQdmdIUTV2QlR5SjZJSEY3WDR0SnlWZE5JMzNxd1dacHhFdUV6TzlScGI4WUttZHg2MDZFME9rQytNTDI4T05HcmprRWVQeDFTQytxMmlhS1Vhcy9NcnRFYVNnbnZtVXNrUEgyN2hTVHhNTDVVSkFqbTZmZVhMTFUzVU1OVFVUOXpXN3p3ZjZ4ZVFVOGlHREFFL1Q0SkVIR2hIdThsajE0SllFRnprRGZRL3N4UkgvNTcvUUlDclJvWWozNkN1blRWMTRYQWdyOWp3TUowM1hwbXg0ZmRmNjhnTXFmNVpWbjdzaytxWjkrREpmb0NmUk5QSXFiUHljL3NpUHI4endwV3BLOTc2dVFlQnRFNE9CVDBOU3FrQ2hhSWttZGo3eVRxZEs0c1JMSXd6WENZSmtwL2thVFpEN3ZMOWg3ZGpER09abUJYM25KeS9CTUdiTHUzSUpIQUcxY1F0NElzTzRYRVZYaVVqeERIQjN5Tm4zb1h6WUdzM0hFODUrbklhWTNQVU8xQWQxU29uaGMwUFJDUUtvSWFza0ZJMG9GdEw4THVvdnhDdHp5bDNTWkVFL1E2RmhwR3ZCTWlFZUs4dEgrSjNUQUlPU2g1NnN1RFRBUkxUTkwwRHJXVTJiMXA4aVBOcnhFdFR6RUt0dXRKbUMySzN5N2UxbGRaUUhrZkJIWlJvK0hkQk1IeGc3UW5ZeUN1Mk0yeno0dmJOUTJJOWxmODJYK3FhQTJiMUdobnRlSkliQWVDUG42TTlkWWIrRmhWMTNrS2NYaHpybkYxd01wUXcxUDR4YkM2OXNpMlRYbHFWbk1rQVFVVTBzQXdZbjZCWTNjMXBXNUpmUjh5eWpoV1B0SUk1L2oyck95RmZzWWtabElZeHNuWTB2ejNzQm5rOW4xcUZKN0g1dDRZc1BGWHhNdnlLZDE5NCtFL2w3T2ZvN1lRTFlKRU5ucVZid29GMmJ5M1FxR3o1WlVnNXB2azE2bmEwTzdMNjlrMzlaOTY5cE16NE1PdGpkcG16VDNQdzVmMFprTThnYzgxT0pZQUtjcDBmRS82dURFQ3FvMjJqT1dwb1BoRWRZRGoxekg5SEd4T0Q0SzRLWUVCVXdLNlZSU1VFeWc0bThrc0MwU25ycTlkSDlPSkRlZGRiL0xXVTlDRXU4ejhJZ01JeTVpZkZRUHB3ejYrd2o1dUVwcFowQlZma01zbjg2Y2VmUGg0bTlLdndjb2Q2VVZGeUMycWJ3QlZmakVXVVp5NURqSkVDeUhDb05LRVo3ZkhvdTFNeEhsUnp0ZjlOaWlieWcram5zN1JnVHBScGdxeS9JU1RtRVNsL2wzei9OcCtjT1NZbE13TW9UUG9Td1RaYmpoVzd0dkhYa0hlTFJsY1V5UWtDOEdqdmx5eVloVGRUMVdQZGFyUTkrODRYZ3VIZFB2UEN6b3hmamQ0dUJQRXh2SDdPU1BhOUFxaUdOU3FwQ01LOXlIeGVDVU0rNktaSHRqY0NOMWcyR2hYU0Vaa0Z1eVlPSTdQVFdJaUNoQmJySys3WEdZQmk3NFhjeEY1Y3p2Q1JsZDdzUHZ3NHBaaU1YQ0srT0N1RFlJWWRtSHA3VkF0cnZnSlk5czZVUVNFMDViakJSaWZPVk55RUh0SmFMOEk0VTMwcGdVYVRKUXExa1NHY1lXajZVYXU1WEV3bjNMTUc2blNKR1pUM1MrSkJKNWZsS1VCN2JrWi9pTzBOa3JMRERJRkVuenhRSVpHU2ROWTU5OFlwUnNjZWdpS3hxWmFQWWYxNHppQktBcTdLanpDS1N0TU1BK0pBTFlCSy9KVXJkcEFYUy9SeG9TRU16U04xNTkyWmJLaW9Vbzhib1hZUWttZXhWWUl2b25BbDgrVlhPUFM1R0lDNEd6L1Y5R1FGMFQ0T1JCSGszQ2VlNkNYK2hRK21JNm1OdENmbC8vdXBNQW44Rk9KMFBlaTZEVTBPYnJFYU1pRDg1amh2ZWM3UGxpcjZMMWQrRi9iWEtZSTdUZ1RCTmhzQmh0TjAvUnBYNEIwWFI3RU03Rk1peVRHV1FvMHhBNmxTUFNPNlhMQ3pVUnh2QmZVdmZXTnhERENHVWNNWVA2bWJTTXZWRnRYSGt1S0QycEdJTUppMk9Xd21ReWdYT290Rm4xcmJtak1PYk9vc1lvT1dmOEdRVXV6WjdzWFNjOU9pU3dRak1rR3FrbHRlRGl5dDVFVWNjQlUwejM1aEZuTG9mYnBobHl3czZWZG4wUHpsM0c2Z0pxVlQ0cmZkcUdHeGRnVEpyK0xPUWg5eVJxaWE3bEl3enV6OUpvTVNOdmI1RjZKb1VqTXRWOUFwdDZjL3V3OHRqLzc4YW8zQmhzeFpMYWFpYmlpMzZvLzJjUEkydFZWRllyak1JVGgyTjJLeFBMZnBDSmxhcVRXMWphNTRLbDBuMG5aalZ0d0l2ajEzY1BjODkybXVKRTc2c0lmQUthUUtLOU5JYllwOHFueEFoRks5Wmo0N3Rray9ldlU1ci9WdUUyUlRuRGxKcjVOYkhjZlF2TUV2dURKeHpQR2JpWkJBSis0OGhQbUxQcit1alN1U2prSWo2ZFdFNjFwOEhxa3djMm96a1Q2am5vMno2Z2tqUXRxbk9VYXBDbDlGaTlJUzlqNElxZHB4Y2NUTjFQMVhoSGFSQXArMldiblRQWEduNzc1VEZEWWZzRk02RmNYSWZ4OE9NdTMyQVpQb1hHUDFmTjltTkNTa1A3VmVySzBZTFBQS3dEVjEwcUQ0N1VEaXVOaW82Q3ZtMk9oNG5adjJPbWVFN0RVRkN0UWFSb0k3Y1ljL2FkaHlBcEYwZDlpKzZYOUUvMmNBcXg2VG1wcnJmOGRaUVVpeHVCeENrTnhaSkR0b3VsVWwrNUYvdVNESXdocHVMUWFpcGlMQW4xcFhONUNlUmh3OHZJTVBtek5teC9uMkVSVzJSbGRENktydHBTcFNLZEwxcFVQT2prWDdSdDFWemRaemc3QitkWEZndTNFM2VOVTlWM1FQUXVDeFltQ00rTXhaV2RXRkx6MnVQMGtKQ2w3MEJTVlh6alIvTHZ5bjdIbUFhT0dEUlRub1dQUTE2dDVHNW5pWE9LZzZrYVhKUlJGdC9SZnVpWURMMHI0cFR0RWMwNURUakZhNDBVTnZjRjVuT2pldk5uRkRhcTlNU1pKRXZtREFhbnNiL1EzeVkxWGNibUdEYXlDUmlzQnZtWm1TUTBWYkZMNWx0K1dLODYzMjVpZDZhVXd4d0ZqY0dlQnN5VDBIb2thYUtuRVJ3UEZMNnNhZVNuUWFjZTJnZnRqRkVhMjAvMDB4aG5IK2wvMUhacEExeVVBOUlXdkdkaEhUaC8yVklKTG0rY29iVy9pVjBXUzkxZFdFL2JVMUl6VkkxYjlHeXFnMmZVSk8wbnc5NytCVzdaOTFtSjM4WkF2djBsczQ3aVcwcHB1Qi9iaHU5cEZRUUU3alhrZnN1KzZHS0dKbHZadWd4dUZFZFBDWE5oV0xnSU5SK3BiUE8rR2ZicFZPL2REVm5lVlBUSytnblFGcVU3RnpYekJncnhFNDk3VUpvYzgyckxya0RkcnYyQzl3anZvSDgxaXVWUmNFY1R2NC9zQlVHNklpY2VQVW9ES3ZqSHlzZ0dzQlVDRnlRSkdXNzlvMHM3TGxUc25hNTRwakZnMzZoeE5YcnNlQnhMWW5KMjNwTU00a3EyV2hrMnhLTjN2OTF1Z2YwUXV6QkFpb3BsR2kxKzZMdGlKUExPSW42WUVqMyt5NjlvTEZEbEl1T1ExMTdCaUw3RHdrRWFmM0cvSmZpM3RUZGFBZWpEQmhqd21waHVzL1JkMlN0T2hpVGVSMFpWUm55ODBTdUE0Y2ZuSjdiMDNpeGl1VUQ0Q1JNaHVqbTg5SVlpUnpkOG5ZME1ZQnMvOGVoSk9vYUYrVzMrU3FIdUZXakxZcks2cVdlZjhyYzk3UTF5NC9tU2RoQjYvbmwxMDlzQkRmdVVOU3FXUkd0NkNkelNGQkZzZ2ZyU0gyZzdUaXV5UC9VblZnMUNaOVBVNkRxaUlJdFF3S1BQUEFQSjBRbTdENjlVWm5obkhvazJXcG5uYm1uc1A5RnRIQTNVbWhxZHREdlZyeDFTWFBWbGZadTBNcWk1L09OdXptN1pjWDFkOFd2QThIaTFiQ3QvcThKcy93emxURU9LUkJuMEwxRFpOYUJzOW5BOC90d0tCOVBYVmptWFJoU3RXUkxtZjNvRGZEWFB4cTlQeFJoNjNhaTNqd1YwN3gvdHRWRkYvUDlVUkF2RmxCWFZzRkxkQjBkeURVUEg5RDM2M3A2YkNSRmE3MTZEekwvRHErMUVKKzQ0bDlkWEtORjNsREd0OEIyMjc0dFNvOXRLRllaTzVyZSsvcG5PMHQxRzNaQXZhUEJ3aXlQSVB3aWR5MFBad3BBeFh4QTlUUXBXbWg4M3VlU09sY2FJOFRXQ2JpOXpRSUdhbmdZWEk5OS81RVdaaFhGaUZQNUJTbHRHcS9pWWg5dWtqUGZxNWsxbjQ2ZkRYakJsaVVJaUZKNEYxV3hnOThNRGpyL3NONkdremljeFhBK1o2NkVZTEIxdC9rcmVKQkk0RTk0YWpmc3JQWkhEQW5PQldyY1I3a253TGFPbVFaREhrOVdoS3MraDAzeFJLbGhMbWEwY2FWRnJEemN1Y0loNmlnVGt0Z05UcHQzRmNmbEdVa25TM2dZcFdyQXpDRVcvZml2VStHUmw4Lzd4RlltVjYySFc5eVBsWHNUMjBXMXpTOUxnR3YrT1d6VWhYMGprMkxaR3lmUE1qSEUrYzJVVlAxODh4Q3BTVlc2cldmNWlFUytvZlR2aVlJcWE5c3NpVDdUa0N6aHh3dUM2aFFwVjRhL0Q5QnlKeGQ0MEhlaUhwcWthZTVNZ29Ja2dYOFhFbmVkK2pOVDZobllMZzJqalQvVG1iYmd1MjVvRHF6aGRqblMwTG12VTQyNjc3Zk1wMVBPMTRRR2tsb25zV1BPSytCNU4zY3I5eWkyS0RqenBuUm9LZ25LcTlydTFEalZEbGtlZ1RLVWFCYUFIeGJKZDRSN1VOVjIxV3VxRlpVVmhSa01oT3p4K2xyT2pmdGZiSTZRYzNJejdMMS9pT0MzaXhZS0YydEVudE5uT01lUFRwbEZuNW5LSDRsMWRPNSt1U2Ivc2VaUTM2dEN2SUtSK3RtTnRRcXRwQTNoWkJIaVI4NW02QmU4MWs5MFA5UE4vQTBYb2FkM0xQOGwvcnI4TStDOTArQUgxRngxd01BZ0IvYmxvVEMxYzRHcmZ3aUhDT1ZQT0hxbmg4WitUNjQxbFQra011bEtDRjRzTGViL0VlUTMxZXQxNnpjVkY5U0NKMStVK3o4d2hkZjc0NE0rYTliVWJVVVJQdFIzcFVTQU1rU2c0eHpydEZCSUpJZFUrVXVIY2hJZVUybCtOWlJSMXF6YkZmVDFxU2x5MW1pSlNrSXBMaURNWGEwK0I3emNaeGhJckQ4NW5DemtYNFFBeGNhZEkwZHFCcTJoVWJOQ1BrTXgzWHFXT1VQdGJlMXN3bjU0dHJXYXlma3M3VGwxSTg5QWE5MjlVZWJ0bjUrVzFsTTZnRWp5bDRUL2RLQVl6L1ZPZ1pqZkpFRUk4UjhocGFzbnoybTUwWXpnem11OTZ1K0c5eXp3bXlFVUNEM3dURFVnVFBtRHc3dWpHakUrQVlJZ013MzJGdmNVZFI1Y0pDUC9WTm1QVnNKZ1ZMdUxHVmVQUHNtejVlblY1MzR4aWFPaVBOUm5INXFvUm1NM0dFRVBqb2FzZXZNMEN2T1FveStxcks1dkljcEFVMG56ZDdXcUZNZkxISXh6OVhmcnpnTy9QYVd2OHlvc0ppUzIrYVY5bEdxczg0ZTQ2MUZvMlZOOUZ0bldWSS9mdWpJakt2WkM4RldsemJrZURFOTZadm5ScHVwR2o2TXZURW9jT1FzOFJsWDI4cmpMQVRLaVdVQkw0N2pRb2VWTWVTZy9ubHhvbWswTDhLL3VEdkYyNWZTZXlhMEo0VXV1YzRFTzNsdWNqemcrdTMzTEVBQWdCUEo0YmVCSExJcnhMK3B3ZW1WcVhUNkJmZFQ2bk5tQVl1U3RaR0ExV1paNzY1aWk5MEpxTXN5T21HNVZsdW1lR1FwU25TNi8rc05qQjhCS1YzSGFyckx2Q1RYYkh2M2RZQ3J0SWZVRUszTHQ2Q0pvRkNPNHlVWm9lWDJuVW5ydnNxN1VDL2FUSm94c2p6YzhBKzljN0lDUm4zYm11OW9qNnkzSkRHMFhxeWpYelUvenlJeVZEOVNJNm5HSkM4SDZDMjVXMzhjSExTTDl2NnFJdys1T2o1dTRDZS80QzFhbjQ3dE5rZlFvN2NPZnNicXVhNnd4Q1FQSkpySmI1bFZ0Q054eEtlckZzN3YzbHlvbzQ3aGgycWw4STFFajBKUHcxWlNSWTJaYk01Sm9iUWNaWjFTeWk5NDBkZCtxc0E4R2hqaVJyckN6RVAxVTZ1Nld6ZFVISlBGbWdwdmJja2pPeDNETGVhWFZBUUpsditQbGFybUgxcWk3NE1EZmlrY09KM1hKNGVPOGRPejI4ajV6bVlzOXZEazZmNDg3QjVvTHoralIxRkZ4NXdqWmNJNWo4RGxvSjlsK2lHZDNUcWxJTXlRdmtxNzJSV3Y0OHRNM3NvL2xrMFhKRVY5UVlhcy9KbjRqd3ZBd2g5YUo0UisvZndHeVBIcFJHczFxSzNTN3BtYzNOSW1JQWQyR0MwY3gyODRuSnVZUktDbnNLanlKSkZycHRvS2NWOVBUZnFYZnVLS2JOanY0Q2xTYlNTUFBVME1DQVNCUENoOFY3YUJVWFk3SG1JN2plYUdkQzB3WVV3NG5EQmcveklvQU5vd0lnak4rdlkzdTRGVzY4MXAzM2d2dUZ3UHFLeHdpWmJQZ01KRW5Lb3B0aTBjMlNlQXZmTFRxQ1ZpVTNHVEppUWdSM1E1eUJMN1VablZ1YjdKOFpkbGtDQ1FrZzdEU042WU5ESFRabkZYQ0swWmVmeFhvQlVvZDllWjdLNEMxcXNrdjRER1kwTWxNVmp1T2xYemF3QVJPa2lOVFhFajVOSXlQRm5XLzMrUFhSQTl5V3RWUmV2WVRlbUIrbE5GQlREWVppRmZydnF1bzdSVWM4ak5ML3I2VVhJQUxzUVRBQ1h6eUYzY0ZaYmdPdFNJRmxEbjN3U09lSTVZeGpDWXNKKzF4UVpJTCt3MjdWYWw2RXZNYTlVNXZWTGhYNlg1SzJuV0ludng5TEs2c0FSWm1tTk1kY2hQU2lEK2haRzltY01udDVUdHRPWUxuNDYvVzA5QThaUGtOY3BhZ2VielpzR2l2MllMSnVqa0FUQWgvbmJYK0xBazJhamp1MHRlTzkwanZiT0YyN0lITnRQMHd4dklRbTQ5ZGQxTlFkMXZsbTdtaVFKbXV3b1NnS3ZPSUhNSk1UK2xYM21PMEg3d2JlbHkzY2E5UUlDeG85TDY1K3dSbHUyL2FYZ0pwR0I3UVppWCtQTjl1dlJma1VJakE5ajJCNnNIR2hodUtseXM4b0sva1EwK3Vic3hqVy9PY2sxTmZubVRUN1NaTTFRVTk0M3U2eUJrK0ZtUTNseklyVnJtaFJoMkhCNTRoMEtVcnFOWXZHUVdwRGo0d2ZYMThyT2VTbjI5cldLcjdNWDZLcm5tanJ3R3hqdzNqcUl0czF2R0JNL2t6cjVyM09aaG1UcGZSYm1EcXpVa3BYQy8zMkc4a1VVUUpLQVdFbzBodlZkOUhTTmU5TUdQOWpYOTdHN0wzRUJ6aUVtMWxBai9iUmtSbkZvS0wrR2pmcHNIeUM0ZkdCMExJK2M3R3crWUVyMWxrMy85ck4vSWxWQnVYZ2tRSndPM3FESkZmYlJyZE5wY2pDZ1dIaFdrelUyWXIvS1M2YXByK2pZTlE4RnE5L2ltOW9hUDZCRGMxRHVoNWZlQjNTdC9XaUVZYmxRa3RySEJYcndPWU9QVmdmVWh2SVZkWW9LZWFONzUyODgrQUZyMnpCNTZpZmZpUTdmTjgwOE1sMzNCYnlmRkdwVVd0dndSQlNGbkxDdUNhN0hHUW9VOXZ2WG41djN0R01nQzRqRGgrb0ZBTysxYzhEUVlOaW56NTk5cENTYUQvNG5YdzRDTms0VEppd2xhRlZybzN2eW90RFZXZGdiN3paUnVjbUFXUmx3ZE9KNmV1Q0ZEKy9PNFY3YnUzdlYxL2Z0NGpJRGMycmhJNzVlanpmZUc4bGN3VENBQkJXemZoT1FaRjU3clFHbnlTZVNIV0ZucVNDZG15YVRneDBWcjREbnFnRWtGdkFjVld3QWVIM2VIeFpzaE9pM0xtUG8vaWJrY2VKRzVlS01RN3QxVGF0TTNKVlkraFBPMlFDSUYvODVIQURxUVAxYjZ6a0pERTNYNkViMEtIWlQvOVFXcE9LcEtvbzJQTFpVNmpjWVdPeFBuTDJTdEFIRnphR0VNaVpyREI0YmhRVlMvWTNxTCtiTkpBRFJka2h3aC83WDhJRFBmVi9EdGJaYnpKKzVNaGVlRGJuL2RPZkdjYkl0YkdYZ3Fra0JJMElCWjJUd0cxOGpNR3pFeUkyNXVlblhVMlQ1M3NIMWlDd1RSTCsxdDNweVlqekU2YWJlaFdWMVFyVC9kQmhENUQ0SWJtaGl3Ny9ScHdSWTBtdnRMOG16aGFsUXRLcXFmTWpjclhwYUwxQnhBSFRna2xPcXB0RjJzQ3JUcnlUTlpUM2NDa3lKUjVSb0k2MkR6dEpFQWRSQ2x4aWZ4Ykh3WE1wY3Z5a2FFUTIxMGU3bjlsWmVnNnNPcks5azJ4RXJUK1ZLakVxL2NYRlVQWDNPd0IrK1pwWGtKYXRrL0VoUmM4bXJlQXBYSjhENGs1MCtZUC80M281N0EyNFd5SWJrVTBJTzlHV05OOXdGYjlxMGF1VHFQTS85Y2FuMGg3Q2JGd0txQUI4ajJLelNjenNFYmpxUzNUSUJmc29HU2tZMVVrZEN5RVJMdjJ6eFQ4T0ZSeFg1TlpYRHZPZ0QzeDhja3pqRVhiL2Z2RmxNRzFBNVZnR2ZTclVwSElxVEtDc0loaUxxcTRGOWlSdnlBcjhNYkhsZWY5MGs2SU1PdklwSE9MbjFFQ1RaRExOblQxV1hIRnRGeHdNZTlyaHBZTGdOWElVU1JFM0l1T3RRclhkRmJZUWs1clBZZ3ZVSFc5WE9jNlVUazR0U1hvcEg5K2xUMVBFS2dZSWlTNGJMSjVaT2JPUGlFNWhiNlRWUm5pNXU1Rk5VTWExZUpGekhOUlVZSy84a3lwajVoZEMxbFZMK3NuYWVKM3paOThKWERvVkt1bHk1TmRXWXdiRXcrT0svZFhxbmxvS0NXV0NZNlJkcEVZTnZ2ajlwVWNESmwwUzVrM2kzdkE2Y1E4RG14TFhHdmFFZGZEVXdid3ZWVGJ1RzM4Z2xIMTg1UUZDR1lVeGcyZFhBanowY1FpSXpwUmM5b1NnS0djWFRTNkE2UEVVUnhRTy96cTVsaUVMdkczMVgxWWUveDUrN3dGRkFsc3JjODN1T2dGaTdoOWdiaUpVeEI0TDgydlBMUWE0dEJUdkN3WjJ2S0F4TmJXc21UTnIwMVkwVkdQNnhYTmVvaUJ5WXdIOXY1ZW8vL1F4bFF0N1MxYWZ2dWpWYmJYdDlxbS9FbWdycktHZGhaVi9FY1pyWDk4bzllWC9iQm9XMy9BaitDNXpyUkJLSElDS3NucG5yaUdnVHgxM1VqK0k0OC9FWDJta1ZaZEw3amRBKzJnYWx5anZQR0V6R2M5YUFxVThpS1hrVHpPS3lTYVhKTjlTcVVpdFF0VFc4SWRPRlE2RGJFZ1BMSjBYTlkxWlRxbUZBTWg1ekdkV1BMWHFOZytnKzVRTGNWUEpPM293WWZSNVFIampxSDVjMndwMUlGN3J2di8wY0o4bzQ0SEo1RkpHTkFlZVorNU5GZkVmeE1DTkVDUVpSRUNabkJRY3VKU2ZkcGo1elg2RW1GSVArL2FyaHpsNHd0d2tTMlpuYlJRN09FN1I3OUJld2dYUFZVNmlSYjRNTkE1LzcyWUFSOU9pUWhlWFRpNnIycFd6TGhZbENzaCtwWE94VEU2SUg3N0RWUjVMNmFqL1ZRZHRhRmVqb1c3SUEzdHVCbHYvb3hDZUg4OE5vYlJtVW84bTdoK2NSMjJzekxBZWtqR1ZPdk5VVlNvOTJWUldaQ0FFMWZlSTRqUEpacks5NXphNHdSM1hvTG9WeFBIWnhIaDZKNmhkditwMGNKUXBTa3htZ1R2djltOFFveTUvN3IrNDBKa3R5bERRK3h4T2FRWXl6SGRkN1B3N0IxRC9aQVE3WWhrazNYZTIvdzFrM2NOcnljUEpBdG9wUkhWU1lkL2s0NFYwNWNDaFk2Yk53RlJrbElkdmZLQ29JN1BtRUptT2Z5blVId013WWF5a0ZWb3IyMFk3bjQwbVRxRzBtYm5wazE2aUxHQVJYdyt5TWRveVJpNWZSbGNRR2xtYkVmZjN2eEJCalBka2R5Nk1GOG1TSmJzWnliclIzSmRXMll4UjFyeXl4aVB1R2hXK05Nemlqd2EvUzg1ajh1eDBpbm11Q25wenpSWG1vaDFZQXp2UDlWMENnTDRwUy90Q0w3VjlsV2VhOWRBeWJVUEdXbDZsL2oyMHRzaHkyQkFHeVNCUDNYWWxDdVFnd3hFRzhWb1ZMd0o1VHhPcVNud3dlK29DUHJzY3lvQTRVL1lzMVptUTZId09kd2VKUkJiYkdOVXJpRm9GT0UyY1k4Vk1aYVJOMkd3R3FHUHBuR2hYUnVRRWVpQ3hTMkN1TGVHUUh1bVRqWlVPcndBT2hPUHFtQVlZaG1kMStJM3Q4dmJDRnhvbnl3SjVXc1JjSEhyVHRPZGsrMG9YNHBCWVRuemsrNExReHovdCtLNEsyNXdaYzJKQlk4cVdlbUVBUzZiUXpsZVk2Z3c0QjlabjRvM2FTWE9zM0xNbjNOSk5mUU00MnV4QnRBdWpvT1QwVTJhWm1tSURVaDdlN0h2N1UyZ1NSUi9Ddkc2M1pibkk2anpjRDAwRHkySkFtUmk0Qkx6UWZ0WGdWeWpHV1hhU3N4WHJxK3lpc1VkUVRENUUvdUp1UExMakhsLzNDMTAwc3J5ZS9TN3lldkpFTU5RUURiSDVaRktCV0R0Tlg5MlFKTjArM0dlL3BBbmNWeGw1dElxbkxzbmFpVytUa0pUYWRuc3JyYk02Qk95dFBzSmNhNHE4Zm95YmVvMTBuZG5udkZjOXplaFFFWWZhM1hOUTRoNGtHMGVTbW9SdWtYanNaT2xRVTdXZUlpcElKdDM2TW5hZVZyaXR0TWd0VHRlcGJrSUorRTBYZVFkdThLODdGUEpINEt2bkdMT0hOeENPdS9ucWdEYy9ZcTk2SG5WZmJhYXM2bE9ybUFXc3RxVFIyQzhvVkZHdms5RkVWZnV2MStvcG8rRjFTV09ZMGlEa3QyTEFpK1ZzamtZTVRjaml2b1JwdEw4SHliZ3hzbG1weldxVDJsRnpBVVFkN0lWOVVreDJONlljaWVKcjMvRlNnV042dml5VDNjM3dmdVFDeTZsSmlSTFhVL3lqMzFqeU5sNWFabE9LM0pDZjFya0hoRTFnektENkNlRmxLNWtKc2p2MGNDSGN3K20rZVA0RkpRUTY4Ylp1eGtKZDVreFpDb0dCK3BSTEhCMHFTbWFWcW1EeGlkK0FxL3pRcGErVHJVUkZ1bUs3a2g4akNwc0Z0Qi9QSk1NNWMvVjMrRmVobFBJMXV5bVlKc0ZuQkFKQ1pqZ3B4OG1aSnBXSXFUUERBV3dYbCtvbnllWmgrWDNoUXl5TERvT1JUYy9TRk5RNUpTbWJaZ2JrQ0pmSWxoeGlFeW40L1dnL0RncFRlNlBGUnhYUEFMbVJjMzRwaXFCaWdaRnAwNWVIQWRlZ21mcHZtbUp0M2t4QTF2OUJLZ0ltcUkvOVdKMkZFRDJsbWZqV2g0UXNKWmFjZ3RYT0JHaFIyT2F2ZmIvdWZGYmY4KzFaVC96U3lKMm9HQ01FTGw2SjIwUGlQRlV0S1FqTWE0bjg2elFlRkxoSklDbURCR3FTMDdVRWJ5SUFjazNmOFVkcEc5bXJJR1pRWktnN0lJZVBFK3FMWlM2MlgvN2Q3NTE0VytONHlHVUwrT0dGZ3Q5RURIV2liSVBXYmt2c2tDODlyQzBOZDNveTRBK282TjhadHRMTUUrL2tHbVplLzFjdmkzb0lQNUl5RW8rbUp0L0JCTjhaQkVqU3hmR2tsVFJMSkd2blVMTDByRm1GekNvT3k5TFkxblhobVZ6b1NjeW9oMVdQd1VKRkVyMjQ5QnRwRVdSbFltNVQzdmttemdVUWFER1Z6WTBKQlQyQm1wWERjZmdPMXdYVUgwTEhFZTgrMmR5NnlQdHYrMnl4WkhJRjhYTVhEU04rdTBLQWZVUFhENnFtM1pqNU1oNEMwZlQxYWdzVnFXSGNRMGVVNzhrWjVWTTgwZWovWHB4UzV5N2JFN3NxU21hOCsxZkxNenYxZS9MWVNEQlcyVHJ2cFFETVFDMnJ4MXBUZzVxdjQraGFnWTB1YTN1dDVGUlY0eUk2T1hudjVHZWlDRkhXUXI2V1JoZXhuTVNPM0V0ekl4YlZ0WFZzalVCN2wySXpDS09hRTNrMkpMUlI3ZlJTdHp1WFROeE5IaXZNSXZtMWk5ZmJsdzVKa05PbjFLODNYeUZNZGdNK2Z6QmN4Q2VMdjBTMkp3NjFTMU9uSjR5eXRXbzFXa2ZuNmhCRTdkcHVzNElLekM1SVJHQWZmTGNPMyt0TnVINnBPMjJhQWIvclQxYnp2NWNCZkNwZFhDT0pKUGlYdWgyVFlxZm9wWXFBeEpwV3JTL3hTTGszWkpQcGNON3ZCYWRyMTBnZTNrQVY1eU9SM0d6d3ZCMHVyRVprWkUraHNjVWxkejZ1Y0pXL3JlZ292cFErR3Q3M3VrRDVrVFhHOHhGZEVKY2Uvd3d4VDIyaVN5NUxCL0hyK1dyVGpmbTZ5dnpYZjQ4a281WGtZZ1ZaeFZjSXd6TEsyMWNqRElNdjcyLzgyQU10eFNKMldKMkZoMUE3VCtERitEeEFQaUUrbEU1cmplek9JZjRXL1B6THh4Zlo3MjlIMDBzWWNOVTdZZ1dQWWk3ZCtwUFdwM3JQMCtrWDZmQ1AwQXNkc3J4ZC9YTWk2bStOa2ZTSWhtTjI1VTJhYm55UVM0NHpBOFJiVGE3b2pJUFB2SkQrZndSdEIxaDM1YkNLeWowbGFBTWkyQ3VMeWlXRVFmNXFydnM0Y3BCd3ptS053ZExyTTZCT0JzTVEvQ0ZCbXRCenlCQndqRyt2VFcydTVvMlBiOVVnQm1kSFI2VEhZNlZDQlBoaTQwTFhjcmtJb21scFNSYlVsdWhrWmZZWDlpTzFQSnlSSlViU0djdE1lUW82VlZka2JzRDhIbHlIUSs0RVA4UVhXcGlhT083QXg0Tzc4dGM1NEtLeVBvdWZpQXNmTGJWb0VmTENLVVd2WTI3Uzg4dlRtdUhJNG1jVFBCN1Z6alAvZjFzNlJ2YnlVMTF2OXc5U01YeTlVU3BTR3ZTbXBVczl2YnBTQkxCT1VSVTBwek8xMWx3a3FQNWc0OWhGSjBBK1VRVVhGeGxrYWwvRmxDR3RvTHlXRndyQWhCODF0R2MrVHlOT3VzZVZpclVJaUpGNFFVamNNYWZFSUlsWmlYQ2pLeTBZY1lBWjU2aEhJSUpHR3NDRmFjQWJkcjY4MUZsb0VYeW4xeVJQOVhPenJacEdyL2wrVmI5alR1NTlZeGNrSlluZ1FpUHlhYjI2QTR1a2xxN3JrZzNUc3VPNWNrWkhzZEJhdzQzK3BmQk81SXJITC80OHFOekczems2L1kwMXEwNnVWT3NtN1lZaUZ4ZmJ6NWxyd3dzSmhlbi8wdHZBVFAvNnZLMjVONE1uNXZpU3BxRDlXWnU5TGY3bW5mRTBzVE1iWmpQd1JncVhmT1R1OGdnYmFwQzFqV2VxWVZYL2lYZ2w5UzlubG80UFcyQ0N0d3g4SmVDbDJwWUxVZWZ1b09Ia0JCbXg4eXJ5SUl1SnMzamlaU216cWVDSm5GYUhlZWw2VW1sNVE1bVNhTVhtMXBpUlZQU25KODloRkNhdlJ4eU9jRDYxQmd5aEtnU1lSaUVCNWpwU0dzWEhaMVRhZHB2cmhxRUVpMVhGQ0RNMWMzeTRNZEJ5SzFQU05IL0VnbEMrcWtKRDJJcUE2Q3F0TVkvY29Lb0hyYVRURTFhaXZrbXJRNmpqTTNINURJalJtYXl2RWRIN0RHVi83SkVuU0Z6TjZpUnIrNytCWlpzNFErM3pCMHk4MUErR0VqZGNOSUpQbk82K253aTZlNERhQXVUZGIvbXNweFNja0MxNjBpWHhyUU1icEIvWXk2dmNEaEFzbVNXVHhGWjU0c2VuMFFiajQxazI3K2xBUFNTMzY5Mm5HNUVZL2pWTUJwdDQwdUx1WTRBQzVCK0R4QVlTK0RqcTBMbEN5cmZSNTNwSVZUbFFKalFNYnpiTWp0TDBxdkE2SEFtR0RGZjRyenVFaWZ5eVlHWVNiTG1oR2ZTc2o2VFlXZzVvMmVQN2xpTVc2U2EwN0wya2R1WkJyU2o4TXd2d09qcEQ5L0NnSDhaUmpkKy8xWHlRbGk4VEZwVEFEeWlsMitSZFNPNitVeGs0NXNXeXlxTWduYnplMWJyTDUrYWhSdSs4Zll3R2hZQWpDenBma1UxY3BjRTMvK0h4bDlTd285YUFLOHR6TUxYRUNIN2hRZ2hjRjRidVAwTUhmYXVhZ2ZtZUxKRnh1QVRlSGk0Zkp2bGJRV3lGcjZ4U2hSZ2cvTWRtVGZpLzZraXVDaWNQaklyZHZYZFZpOU9CbWJJVjgrSkNPYUpPcHQwcVNvRWNUUHdsSHZ2VXU3ZDVzYWxXVzhSMjNWelRndC9ZbWQwK2xFMm8xbnZhMStHN2RYTUNxTm8zMUdzaHRBdlZxTS92MTNRWFlLQUN2K0tTaU9IWkdjbjRFWkNtMmZFUGlqVi9aUkx5ZTVKU0VUdmVNQkFkNkdDNXBrbGYrMldSdlp6RlNFY1VubWtqakNydXRhUlJsMjhXSHdIL0p5NEE4MVo4WEZmQzZ1TXJQMTBRZkEzdC9MOXdIU2l1bGN6c3BONWRaSmpWVnpLTC8wSkYvbXdST3l4TExrUU1aYkZuSjQxanN5UUpSUmFiWHNYSkhEK0I2OEVidU9WMTJUZFFlcVhybHRqUit3bXMwWWJNeFVaeTlsSFpjVUZSN3JFbGxTV3ByZTFOR0JUaDZzaHd4Z3FaUWZLWUxwaHphVE1EUVBuZWpEbVZORDdEekVhbzhuc3BOL0FiQVcwN3IwaTlsTzc5eTJGdzhkRS9PRXlFWDNDZGU1c1kxbnprcC9zSkE3S2N6MEorZXAvdlVyWEh4ZStYa2hjZFZGb1o1Mm01VTk0YWxjaTQzNkxiTmxaZ3IvVWhXUHorM1p4Mi9WU1Q5MjRXM2w4KzlXTDhNSHQ3WnFjbjBaVmJtT2tLR2FOWlArUmRxN3l3SzdlS1E4VTdqem9vd1BZc3BtdjBuMjFiSTliQTFTVExoWXZ6MGM2dzRmREVNOUR2dCt3UDlhVTMvZDN2ZnRUU3BsYXo3TkJOeHpzV2V3SnZMb3ZBRkJWWFk0bVlDYndydjRla1BpLzl2U2QydG1aRzBwWm5aWjZ1akk3b0xzMWlRN3N0Y3VUSkxEVC9PTkNuMGVIbWhkSGxEeUlPNFc5MW1UR1hNZ0dZbUZmSzRQQ0pKZlNPVlJhanZEamZQaWxyU25STUU5M3FSNy9mMzhZMXZ3N3R2M2RTWm1LYzh2aStjYUxEeXZTMjFRcjVOMW1HbVVpZG5uK2Vjcm1haGV6MG1sY1dhSFpTbE0wWmlaV2xveU5sWnNNTlBham5tL2Q1TUlub2MwK3ZLZUhVdy9wMURqOGNyUENZQkhaTzR2N3YxaCtrSmlIbTVlTElLZEcxdDNZNEp0cUJHR09OSkk4Y0o0dldZaG54TXc3c04xcGNKTXVON09ReThLZXN0ZkQwbTJOa2tINlNPb1R3WkpsdU9UMk1jbndZeGV2N0xSM3NFbm5yNURiTzZxVURDakdrNnNEcm93Tnl2UEI2OVZJWjk0MWFvei9RWU1NbmwwSWFITnBLVjJ5Nmt3Z1EyRDZRTlRML1R1WlZTZWIzMEJ1OHFnUGtNeE9oV1JJQ2haa0hpTFl6c083U0FsUVhtNVhsRXA0TU9Qc3RyWS9TVkprbFU5OEgzNkZBakNHTElNOTJCdHlVUzM0QTluanA5M3ZNeUhtUXk2ZkZ4R0Mwam1VcTUxSm5WS25iZmNWMmpjVzVrak0rOHhHb2hBTU9xRlFLWXkzQm5XUW9DTndHMHZRSDNCT2tvdnQwZURjUnd3M1RKK09saU9RRjRYd3ZaaW50Snh2eEhqSWVSM3dkMEtXR2dGWmtYeWt6MWxXeE5aSG9Ga1NOMzRhMW01MXhtTXRlOXZtWVZyaWFYWFd6VXN1aENvaGxlazRmNUxncHg0ZmlVZFVhSVJSeUtGVnlWcE5CRTJqdjRPcFhUSjd3Y3ZFcFFOYWZHcmhSWU9FdkZOWWJYSk9iQURKYXJuenBPbFdaMXBBRW9TWnFHVVFmaSs0RkIxVk5xcjY5Q2ZHUm5HNTIrcm8zYTh0SWcyVi9PSlhCUjdxb2dKTDNzZUhhUm1qNkExM1FoMkN0ZlhGYUNXQ01vTm9aaEtRaVByRXN1MkhEODJyM25ER2V2Y0JIZXdISU50VlFSQVF4b251ZndQWEtlbWRJaDJEUkh6eW55WUJucGRvMWsrdTRSTHljbzJMaGdDZ1BQdXJiYUF0SkhiWWtKVElaTFVvS2dDc1kzTDNaTmJpVWVRaUhZOTZDWWR6eXMxYjV2VzFsUEV1WHNzOVZVWjB3TlpHTUZTeG5vR2w2T05RLzNEUlBDNDBqalZlbGJnSFVrVGpYN2M4bk1TcEFMRnVMUjVkSkVvVU9GK1lnOVhYV3Q0ck0yd2swVWNTNSsrM3NsMms3eUxrUlBpZ3dRSHQzM25ZN0NKSEx0cDd1SCt1ZCtteHQ4bXVkTXdMVUszaTNtd1RFVktwc29Ta0NnUWhhanpIVWh4N0tzd2ZmRmw5UXdNQzhIWXZleVlxeHIvMHF5QTlITHVvMU9PNSt5SUUzclVlcGpueFRuY3RXaHpSVE9EWUk5SXVjZ1U3WHFNYkFiOTk0Y3ppVlhCTjNkckhxSThvYUZ5eTBoeUNBSTJwR3l4eGlzTCtZSWRwRmw1cDNjWTZJWktFSWpKTURkQjFJalJjUHplbldGRTRveUh6Qjh2Rk1YeGF5b2dQREpiWlowVkVEZEpPaDkyamQ1MzNYcnRsVXhLbnpTV2FLTHltV2FnOC91RldNWEUyVUl1K1FBaFpFTVErZGFMSmxEbHYvV3ZYaTdlZS91TVVCOStyT2FVcDNmaTlaM0VlUjFPblozdGpLNzNzZTdpQi8rdkJpYUVKZTI0VzBiSkFlUWxiV0g5dkVRcnZlZDNJRlVzNnFKdkdVdXRBOWFJaFo3TFpza1hkRTF6K2ZOdTZvV3h4ZUJTTjRkWktYMnhvQTUvaDdhRS85Q21oc0xxMGhlc2hlTGcrZEFuTmtGUllDSjY5MCtsZzhuSzVXNWMrdVFIZEgxdGNqcUxVd0dEaXdVa1ppeWg1UDJHTm5MenBTN1VqT3YvQUtIa0JWSGVqTEw1cWl3bk5yWDh6eVBiYzhtOGxuWC9vVk1rSDVablZEUWJzNUloWEdOZUdVYjUrZStMdG1CWmE2YXErRUZmSTEwR3Uvc1ZVaG5YZGtGZ3c4VXVLN1A3cU1KUXBLQjN3TU81OE96Y0pocjcyWkFKWUlxeE5LZ29hVW4rTUJiTnhZUlJKZWxiaXZQWlVFVVlqS05PTXZKdEVDUm5WaE1zOStQUTAvMS9Pb0IrTG01cy80bzZ5UnZjRlQwQW5paEZ6U2c3RW4yMXVCTmFTS0hXeDJlWW9GbGVsUnJBN1NHYlVpL2V1THNYZ0FzRkdnU1JXWU1JV2Q5S2ZiZGlGeW5PYmZSQnloeTd3bGhuL2xrU0xBK3VzK0xmdDNjUkpzSFcrNk1WYndQU1pCb2JUNzUzQkRGZC9vRnFEQjZYclREYmJQcDl6T1BBb244V3NFcWpZUUVzbGdhb1VMTnRoZkxKWG9tNUVKazk0Q2FQY0RTZUJ2YWJxK0F6UkpNWHBENnc5MFpMbldKbHVYWGhYR25lVTVla0ZQTnRFK1dmaTZnVi9GU3JZbU1xYmtTZXVETGhrUnNMV0o5VmkyamdqWGFkY293NlBKQzdXY1dwbzhKWUhvTnArdnNKUW5PRU1qSXFpQ295bEYxSEdXUXVKampXdGJEZ1pvZDRQTGdyWUlhWkxMdkZDblFCYjgvbitJYVFxOTl0U0ppOHMvdXd2bmIzcE5Zd3JDbVlPOEtRYVA1QTZDN2ZnK05ocVRQMXFjNG1XUXA5c0lBM05kRjFnVHEwaWhBMkVFNzA5OG9hOVlweGp0WGlxMDMzRTE1anpyOSs2SGZhYlduaFpndSszNDcrOVN3cnVNbzZQaXV3aVFoZ0w5bktwdVVYZFVEWFJrRkdxdytXc3d0WjkwcFZFS09DY2NrSy9SRksvdVVBS2xpbFhOR3NoVHM0WS9TVjdxNVU3VTJ6Q3gzV09LcmpudiszdUZWVFhBWDk5bWFVQjhKUFhiUEJQR2VkRzlUeHU2WEhzWWt3Z2w3c1c3UVNybmJHQ3pJOFljbmNCdVRwYTQ1ZTE1ZmVxWFVUMEozMWVIQUpWMnJUSjBzMzZNNnJNS0x5b1RUN3I2YjJaQ2t3Q2l2bU92eWozYzlRR3BXdVZEM2ZrODNqc3Vpd1dZMkIzOXVtaGthVldRMHYrZTFGdTdMNlpQSDBldTFibmx1UldUdHVFOXJ0TzdhaHozYmIvN3J4YWhyWjBONldoNjNpZWR0Umt3K04rRVpHbDFzWU5MTDRBWGNGV1h6TFRid2VlM3QzM2h0SThLTy9JN0kxWmlkNEZEenkwT01DVEs1M2JxNXZZWjFDRnBpTUlWVzdaZ0xoSUttRTllbHlpdVVjdGJiWGhmTHZXQ1FHckg1WS9JVWQ1YTJjMy9TWVgyQUN3VHZjQlRSS0J5M0xnaWY5a0JFWUpoMWlITGxhck9uN2hlbTBOdWxlN0c3L2ZEUUJsSUZoQUI2aXB4RHZCbGRvSzBZenMyZDVSUzBvWEpsY1hzZFJrMmVyak1JRHp0OWxYMXdrS1ltUUNzRnVQTzBLay9sd2t1WG9ZK2dISGsrZW9YSlRjSWhoc1pDRWpPOEozbXRyNzE3WU9UcmdjUjhSWkt3Nlk0WW82blRlOWxMVDlrQXkwYjhZUXJJS3hZNXpqSWh0M1NUSnA3Zm9ubFdiamQ4U0xacEgrSko2bVFxeG5oUEhJdFJVckt1eFlodG5VRHc4V1dnb0Y0aDQ5S2xPeUtJNjdwK0JUQU5IM2huY2c1UitOZUVzM2N5QjVsM1BaTGxZbnJYdWNzRVBISkZIb0RWVUtCblhTT2xMbVFZVFRuRE1ZbmMzbmtIaWZDUFY5WTlQMkh2MUxqT1JrcUxhVGJldUR0cTFuZ3o5VWhGT2g1UjZqZlVBNWtFa1RzNWIvYWRZb01DR3I3eVY4ZHBBWmttOHJtVGI1M1V2UTQ3MENPOWdKUWdrM3k0b05ZL1kwT05XdC9rNjRUWlR4T1p5N2h1WHNSSUMzMWlLUHJlOTJOVFJvZXljQm1sd3g5dFgrV1ZWZ2daWDI5WVlEWlRob3FPWSs5UFZ1Znd6L0tMVDZwWkt3Qm1lTFE4a0YzbHhFNkV3a0FGVXVwdzRrV3lEU01waXJCM3NYQkF1NDF6MmRWNHFGOE50YytLeTRNQmxkWVlnaDhlNkl5YldZTWxhYSsvaHY0NnlXZThTNm9jVHB2c2NIVHN5Q0VXdlNOQnAybDlnMjBibDUvMEZsSHMydENYWEloYy9vcm0vbFFoQ2JRNmZCdnByVEdCc0M2S2poM1NhWlFqcHFCdHRUNHpLVzFUaGIyL25pS1FCRjNQOW5pZnJxUnlYVlZDQ3JEcWt0NDQyTXlDbEcwbUZrYVJ5L01CV0ZORm9wZ0xEOC95ZmxmZWtaQVp2YUJlNzhMek9kbnIrc1l5aHBPbnU2R1ZrS1RmdXNJMHIwbzFWcENuelJiMlBoNSsxcEV0UzRPTXo0YlVyZkR5NTNXQzNnR0V5M3RuWlFjYlNLT3ZFSVlWblRYYkNyZ2RhV0FLSE93ZTNJOFBoays4Y2x5WUgwUlFSdHpFamJkM1hsalBjZ1dyQmtXVW4rT25QNHlQazVzM210eXN0WWJzZWRhRU5ucDVlMVpuQzdlWXFoVDdQYzFUZ2NhRHNsYVQ1TzNlcWp3RDVWWld1STNuZ3dmNXdVeTNhZ0pqamNlVktweHZHL1ZXQXpGLzhscWl5YllkMlMyUGxTaDlJSXdzMWU4V1JOK1JQZkJGY1I0Ryt5YWlUNysyaGhhYkExTzVHbVMzeHRkbkRtR0NyTHhtNE5YY2gzRjYwaGV6cDBjaVJLOGJuZHRRNjRrNDZTN3plQWppWHR6WkN2ZVJzRGtYQm5WdjVnNW44OXpUNURZbWVpZUVlTDczNDlCamlDck1XL051eDNaMGsxRVR1anpMNVRDTzFINStsd0J2YkxqektpYXoyNGY3N2hCMUNYUVN5QUVqVkowSDYrV3dJb3pFMUtZN3M3cGwzVGx5UlFIK2MvazBRaFNibEhwMWo3VGE2Tm90Y2JJV2hJT2VwUlpxMkFHOHpiTW1iRVpKL1V3YTcvN0tuQUt2OTVKRjkzMVFPVUJRVkU0RCtWcDhmSDg5UHlKeHMrNXlMVFhiMHZ0UXFJZmJETWRSVVVqSU9oZHZqQTVza2h2aks2WnhOSm5DNzM2WXljTk9BVzJ0S0FIQlFieEtjeVVsVmhuUUtyNVNHdnd6Vk4zeUFsYXhNSWRDQktXTXRXbllNKzU1WFdwa2V6SHZoekFPRGtDUlY5NUM1TmRaZVNpc0Y1QWxSQmNpcVhnZHlwTjNKcVJCNGwzczM3enRVYWNwYXo3YzYzR3NhUUc5bnJBV0t3ZlNHU0lhWWJraGhtb2NEeXFEeEdhUnpqN2lzRXpxelk4M3lEaGpsa1JXNzJxSFV1dExXZlY4ZVVHeW5EQWZtb1BYckxsZ0RrN0JTZnBaSXhnMnRrQkQ1OFl1Q2pycHp2V05qaERlbzBhQWJBazBlY2hFdnM4dkVXVGJoN3Ftc2tvZjNBRHp2eGgwdm1QRTZTWFd3SDI0cVhLZllXc3Z6NGhURkVVRWNqa3NwVGRpVFp4N2w0NHAvYTNRbzJoblEvZ001RkhBN3dJWHJ4M2xyK2lKUzI5NFlpUHVjQzZiZ3VwSVRQYzZNOHpSM1FsR09INzJ5bzIvTzg5MmJ1VW5Jdlk1VHN2MHhuVW8welpaeXFtaTg1NHQ0VEJ0VUNUSWQrSzFEeGRkYjE2cTcrN1NZNERGUFlBT0YyaVZUQTV1clpkb0RLNmxOZXVOWTFzckh2R0NmdDgzdjNyVDZWcS91Q2krZkhSZFl5b0o4ZWRwYnpzVnoxOXZXVEdhUlJ2OVNiTE5ISkpFQTZCV1B5bm5rei82bHlsNCs3dUU1dkJ3RVV5L0VXdEk0bzE2aTlGOWt0elkyTThGa0E5cVhaSGRFTklsRE4wSlNCZ0Fid05IaGcxYXYrdktXVGtTV0s5b1NpcWFsVG84dkRFNGtiOXJpSDZFVWZ4OHhzTU5mdCtOMW5Oc1ExQVB3MSszengySnpjQ01WRXhXa1RldU1vaUJlUDJOREJrYVdORzRYNmdMNXNwNXpjRFpGZ2VhemxOb1BNWWVyaXZ4a3hPZDdNeFZrdmFLeWw2RTVxWTJ3U1VpMWI1WFhsQmJCQ2ZteEhiaXlaUE1aWS9tVjVDSVZlRHlCbVFkamtDYUE2NjdDRFlhclVPenlYNXg4VGdlaDRmQmNvQmc1UEpOU0s2N2FQT0hGNlhYaUI4cE5sRmkwUk1zRmdOOG5oUkx0aE5oZndNTDF5RGNzVm1kclNsNktOWUZNVXdhSXdwa3hLelkwNzAvVjVJWktBN1h3Y29JLzY0T1JDeHBNQXdUZ1p4QnFSUzhwdTZSVFFYbTNIZWtBS1VJYjVLTEhNeFFYelBsY0lzZmJrVW5DWnNuN3lwNnEvYmIvQ2lSeitPZUoxVTZjTlZWdzZIQUdnWC9XTVJsTGV4Nm1LNlN4c2d0QVlxS01rMGpJT2syOTdSb2tTK1VQWndRS0greHkwekdDTnFVRExtRS9wWFF2QzNHalp0enVDR1ZXYW9WK3BBOWNoaFVUYVQ1ajAzVmpGSGpVaHNqNE1NbHJKWURRS010ZmUzbEtlZkFGQlFGdzVpdERUbm5NcFZqRjVHWlFSaUFlUlFpemhmUlhLdzBYSG1MTU45WVc4TndFelh1RlhGb0tMQnJocGtJcWtFWFJIMUdrcmJ3YkFxVXBPMFFMSEIva291V3E5ZUhjK0NCaHFuMGhBN2dGaHJmemJVK3RCcSsyNzMvUmhVQ09PZFJ1ZVZrSXJVc3NZRnZsSjBGRHVyM1B0OEtacmIzZlgranR1bDJIRjVuWkJPK0VpcU1BcC9GTDhpN3p3ek5YaVhhMWRpWHBrM1o1VkNvMGREa09rNzBaQW1MZFBwaVI4b2l2RVJyVU9JWnBHVnNPSzl0V2ZWNVRCSWRheGFxdWt5MUsxb2xQSStwRVQrVzZKYXZmZEZ0RUJFMmxreGJpOERyNzJkRWRaWDdKSUkzTkhnL1crRjhId093R21VVDEzZGtyc3E3a21aTk8rVE9aUTNqZ0grdW5VZWNOVHpWc0JLam9XalAyRk0xZEdIL3NyeklNbmtMZW1xVUFMTDlLazJwS3hmV25nTmhOUjFPTkY5WFRBZENYVFZkcUZpMlIxdFAzcUtlV2lpdzhXQ1dXai9Ycm4zY2VBdTdUdDQ2WDZyOUsxaUF2Z3M3b0xwSlFBaHhvZUQ2N0k0dWpoU1o2MkVRQ1pPTGQvdUQ5QTgvY2d2aE1TRFF6bzlWSEZLTmNhQ1haR2Q4K2IwbHF0ZjJ5VXp0dm5RZjRLbzZ3Mm5PN2pnaFdGd1F2QkJ4VU52RERCRGwyN3BwZ3ZsSTNRMWpGaUZSUGZkN3F6dE9iWTl1S1RGNG5DZll3VGVxSENieDhNb01md1phL2JNb0FyQXE1aDY2RGxZMUdUWXRPVERqeGJnR2dkbHp0Tko1TWMwcVlWSHN6eUFnWVhqQlMzcDNaaFVtY1lRanppVTJ4cjF2REQ0R3R3ditCdGFFNmVwUW5FbTJyb3ZtZ29vSHJFK1EzYm1XRVJRODVaSXNlSDZtdE5pTjArU04wd2Y0TGNXOWxvdGUzTkVKQXJZcDVHVWFEVGEzR3FidWN2WmtWYStJdHovRlBKOEdnaXBTWGdIVjNNaGd4UGxTQWpEUzdDZ1lRNk5pSE1sb0ppbHlUUitFZVZaUFMrdTNYYVpTZ21TOS94QmVDUFdhWUk0R1NSM1Q4ZVE5WStCM0k1WGJreHJmRDFuUW5aM1BWcFRDSVdIejVVaCtQNWkxOGZ2U3FnNkF1b3ZwdVkxZHQyRTNEK0tSdUZsdXJkUHRBTUUxdGdtNzVyWmV2RGxPc3VvSGVTeWdVcXliR1RWN0lWd0tuYWZWL09vNTEwQklZSjRnb3cwSElOMnJINklXcmMxT2tkcVFvOWZxY3ZYdjhhMVE2eGRXcjlJK093eXk2NzVFU2dRRzZDSTZwWDlCWWd5dDBSZHZvYmlvbTQ3aldDalZkTVY0cHFxSGo4U1BOYlVnYm4yYlZ3RmUzQUpWNnlaMFQ4bjNFeXZaUnp3TTkvRVMzaTloRWltc3NFQlAyOWMxREFCY09adEFJMi9lRUY5ZDd5TG5Yb3Y4VWpsRzhwNGlLa3oyaHQzclRlUE10UjVIUzlDbkZiYTlnRENGd0QxdlF6enpjaCtwSFVub0tRaVloblVSVW1uQjdrRSt2VnhFbEplZjNDRjUzSXcyZEhlalhSNmpMZzZvMGorbWd6NDBkMTcwTFZ0UmJNODllSFo2Tks5UWExTDV1cGRUWmR1bFlQVkZ5VGNEZ0E3M2VYcTh2WEJLVS9tOUx5bzdOalRQKzVBdDdjS09WdGRsRTlsS1lwYnd4MUVQMllHcUs3V0liQ2N4ajRjK1lIZmh4MzRCZ0ZqSHFVWmlYZzlkWFRTaFJpeTdONjJkTzV1cVBoUzJlZDJQVTVkRlF3cm9PUFcwQ2pYUTQ1ZkNTcUgyU2tVR1NPV1dRbGJVUHEzNUh1akdTOWt2WVA0OEE5WVQ5aFI2SmNlcDhUajFmSkhrY1NwTitlenlkV2NCQURyd3k2QmxLWHljWWkra3J6K1BVN3locmdPTnA0T2FMWVRsZHhTNk9BOVhvTUtiMDJibGphbktwNnZCcEU2dFp3ZHpWWVhnRzlwTEdqQVA1ZnJraUV0Z1NtbS9TY3dzcXZwSXlpT0ErekJDOWNxcTBRaTltMEZBcFBWKzh4TkpneFF6blpPUmloQUJBQlVzSENtRWR5N3ZPTkVaSnF6ZG1UYWw1ejVIWG44dnFYQ2Z6NFJkb0FadzYySXk5MDNMMTVJNzI2U05BZTdDY2d6ZkE3VGJnd0ZrL1ZBSDNKcGxrK3hSWHk3Z0lWVjk5dEl0ZlI1T1Y0WWhTcHAwM2EwTSttWWxwMVI3dlJVM00zVTVYaUxUYk0wK2hjTm5aUjRXWXc2cVY5dENLK0YybTZvWS9VNEZCVlhRa1YySi9lb3pkbEtjVzYzTGJMT1dRWFhsVU1aVUgyeElPQWpKQkNBbGdlK3VKU3lWS2NvRVNvUkkyVGI3YWt2ZWRRY2ZuanlldkJwNlJsNzhFQVRYczlnUUhlWXcybzNMWkJwenR5U2tzUHA0OCtvT20yZ204elJNMDlCQUJWVjFFdm0rUkMzQUpwSVB0UXY5UEhmTktvMXlYN0c5R2hwNUdzd2dwS2haN1N5K2ZxcFBQa2kwYTNwMzQvWE1xYmlDTEJKSHY4NGxFa3NUQ0RtUERqVzVMaXZSMmxhWjlMMjRrdUhGM2g4UnBLMWVvUEFVenJ3UzNXZXdlVmk0L2JENFRqN0pualVzUW40V29vYmV3Mnp0ZDhjNE56VVY5eGRNdnQ0UTRubWswQ01SaU1oTy9VQVJnbTZTRkhYVm9QM2M0emM0OXhUTXBPbTRCTmd6V3VPaVZTYlFjcjNPT1QybUtaemNpc1VOZ0RhYzIzQVNMMmJvN2ZpbEFiWGJDcGFzeVljY0d4YlN5ZEp3QS9IYnRFb0dZUVZNY2E1Sm12WU43Ry9tQVVTYXFIY0ZtclF5a1phRWxyMnZsOWp2R0dHZUtRNTVxWXhIY3FkQ2FoMnZONVBYUzdwWEdsbmRxNDdDZ0dmRzI3QWR1T0dRMENTYldSaGtyY0tUelVXczZhdkJ6bU5TZSs2TWNZOHZrYXhqRnE4amoyRUl6ZHlaWHRCMHpFOFpRVzdCTERUeTJZYzM3c096eEhXbHRKN2g5WHBTckU4bU5yeG9Pbmhma21NYjFXYXQxeThRVkFzSy9ZS2d4T3Q2SlgxTU5YaXp3N0xZMGV2ZVo3dXQrRnJQZHJ0VzE2Nk1YVjdsYStJc09hNE1nZzRNOVFBN2plcnEvbEExMUd1a1J0bDVuMnRsTlYxcGpTRWJLTFN3Qnc4dnMwRUhDRmpmTW9yZU1PaXhvR2M5ZlZ2NW83LzNsVDN6aCtSNmQvT0hLMHg2aXM3OS9uMnhzMjNKVUUyQ2tEMUltWWRtekIwcHpBbmNHelFsNWdaWXdlQTg2RG4zSm9xMzRuTHdVZDkxNnJKdFVjajBTcEZmS2RXdWFhNXlSMUV0M0E2S1E1cEVPN1cyRHBubG5wcTNYbXkzVy8wSHZTcjVVd0psK1psS2N4UC8yZzU0dFdWaThTYXB2Q2hHWlZ3Z2dFVWtNczhiYVNpdnFjcnUvQm03YklpSDRRYitFdzd6aVdKc0ZXWFhXNmFIZXRlVE4yMGdjUlBHSjhWNnpaT0VtNCtoSU9tYTdaWldxQnEzaktOQTlIejJsWHQzYlBqWWwzaFducmtUOU9NT3UrNityazhzdUZ6ajhiTUkxcHBSL3RuTGNVeVFQSzdOdEhvcXJWUEZVMnpUS0pickl6Ym01YnlqVjdGQkJFMkhrbjZKVzExc0QwdkMreHRhRDh2anRvc3hpdmM0UjlBdUZqNm9pZS9MYXNOS3NLdlh0Sy9YMjY2N1FOUWpsTVgwZ3NUTWdyU2FyTTVzaXVqZXRmN0FjK3hPT1IyR3NITlNxTGNiL2s2YnhFV2d6Vk1IRjc5Sll1Q2JkY2JocEVtUjNhQU5aYUEyQjNBajU2Uk43RFRNdmVRTlBOR3VJK2dCYjlmZG5GM1JRUklHUTU2WEdDWFhITVpVRFFYT0dpL21WMVJRQWtvajJWbk54d0dhcFY2NWIyY3I2U2dDYXo3Qi9tclBEUGRURmQ2YnA2WWZTT2ZjNEY2cGFhY011eklNQi9aQ0lDWVJGb0xCV3pKeGhma2hoeSthaGc1OFZZWUdHYyt6YUNNd01CRlBsUGRpbFRCc1h5MmZ0YmVjV3gwbGVSYWxxYmY3MEF1dTVheUVSakl2bUdyMDgvdUN0R3ppWEhTNlQ5ZEYvQ3pVZXNnS2tnSm1WcHFHRHp1dkRuU05HajFQMllJVVlNb3FtaE5mOWVhYVBnc2tSWWx2TGExQjRnc0IxQ1E5VjRlR245Q3BWaWozOEp6bGVOZkJQa0RwOER4d2lTT1lHbGtBM3RJOW96d1hueHV1NnF2Y29aN2M3TktDNVNDUldVazBiZks0S0ZYd0cvZHNGd0l6aTBSYlljdHJhVUxOYmsyM3cybGJQUTZlNXdtVVJlS0ZsUlNBRzd4Qi9SWnkrOGx3bDBpYUpuN1lTTmx2R3VOc2ZvQXVrblY0RGZ4TE1lTERTRzNUQjlQaW01Q0hySkM5QnZ2Rkg1TDVDSXl5M3dwakIxckpYYmI2czVlSU9UNmszcnpEd3YyTjFMZW9OV3h4TjdJOVd4Nytxd3J1ZHhNendOWWFydk92amlrSGU5MEs3d2cyMXp0Y21xOVZjbUsxc0dJb0hBMElKOVlTVDlPS0tQMjhEbnh2VWp2YzQ0em5mMkR2bEYvUmQrYVJ4ck4vOCtxUkgvaEl1QUlpckxtTVRKaitXTXllV2NxVUhGbDJuNGJZVnlrYnk4M0dxcmQ5VVBaOS8xeFk0eHYxZmtWQTVKcExTbmc0bXdJdzFzV1YwZXZWZkU3UEhVV2VWTkxsejFBQTNGYWNOYVpSR01ZamhxQzFsci80UG1xUDllUkUrcGFQcHYwbTUweDkybE5IVTdneEV5S0RWUlNkTFF1Y3RQVEUyeGVBODJUcEtzNlI5UUs5YXdEOGxBbFJNS05Tb1AxSFNhSkY5REJBUlA2bEtMbC9MYzZ0NkkrbFJQc0k2N2dGR204Y05XREhJMnZYY1dJWEJnVWVMTHR3UkJ4ZE9yTUpRUktBc2pub1U4Y3Z4T0c3OWF3V1lCaUFCUE5ZWWhpR3dFcTZYVVB0ZHJ0dGZEaUI2SjM3b2pLaUNPUStsRUUyei82RGR3aU0vSWd4MDdraFVWa2FuRkZMc244bmtWK1A4M3ZsOWh5RmlPbVowY3R5NFRmZVpYWHZYZUd0YTJiWk0zYmlObmgwRkxXZW1ZblBWUnN0dk1WcnNhM3Y5REQ2TzVhOHQ5ejBtZjdsZ2FnUCszNWF1TkM2SlBVNkxPcnNTKzBIaFk2L0RJdVNVdmZNM2hqcU1iZ0lqSWpnN0xsalErcGxEbUlmbURWOHFXYjlHa2FNbXR3enRRT3IwTldJa1RsZUlMczJ0OE9IUWVEaGNZUTlIQjd0OGF4MnovZ1dmbWpzYTlMRS91dnlJWnZFdGhNeDBqUHJrbDZXMHFNRVhKdzUxZkVPZnljd1hab0VPYkNNRFQzRERZRHNhRFFtSDczNkZnV0RUSnBCN1hMeWxaQjd6UENKZXJ3dkt2YnYyOXdDdDNPWkFxbkI4TU1IcTdtZ2pXTWZ3L0FLbXEra3lqWDVmYnlDTEtwemd5VktvaE0rc0Y0MEx5bGw1UG0yRzRwQ2NseUt4SEhpQmQ2R1dLNE0xcWFOcE1aSWxsT0dPNFRvUnV0QzZBRUNzbFVmVW1UZlRSOEVIOGJyQlFNT2lvbVFLeGMwL0ZuN2o1UG1lTnMyK0g2WEo3Qzh0RHlraUtTUjZMa0ZZMVdRVVZKbVRZajVjRUlpK1MwUnlBTkRJTHVibUNyZWp6ZThhNXd0Wk44VHlxcDRwekt2MGtXTUM2cFMxWnJ2UGdjdlNXYURxbHgwUFdVcXMwTkNISWErYjIyK3UvZ1pBdG5rWTV6WmwrZ0ZESFVya0FJSmlIenpaT3JaYXJQNEV1bTVubWZvVUZ3V0FPMW5mc2F6OVpXQkpNbk5uTVcyMFVjRUFWNkx3bTNJZld3b2FzeUxONkN1MndGNmVGczROd1NDTDhBdGZUbkVBOFM5bURoS0hpSVNzbEt4UnNhOWZFYUh2cEpWeGpnK0pqWVRibDB5Vlg2N2oxbUhpM2NRYmN0ZDhlM0JTeWRFdG1EZWxPbzZNTTZGVW14VmQ1cEpITkxJdjNqUnVXR1JONlRnNms0NmdBRGN4QktLSVFmcEFXTkNlck0rV3JId0VKOFMwR1VqMko0RTRYb28zYWhVdExTK1NIMjhKR0Irb2Q3cy9HQ1Y1dUJUSUNxRzVXbXY2MFIrL1R5ZmJpYXcrMWZhaGppOE1SS0dnTnI2K1IwM3R1d2U3NU9Qb2FLaTNQMDRpc3EydnBKQkhHY0QvVFlIM0x3RUhCbStEa2Q1Vm9qMWNCbFhnUEI3aU5hZ1BKQnBuY2JtbEpwbllLL1d3TCswSkpJQWZUZ214dGk2R2NWMEFreWxuTXJtMlFGMXNsVmNPUmVDdDJXQlVFZmlzby9nTGwvaDZqMzFDZDhMQ3hnenpNbDlIZHp0akJpb01IKzlLWnlqWkF5RDZxL1FLbHVDTW0yQnpDYkN4cEZ3VFBvOGdXTjNMbVhlbnBaUWxjbnRMSEhsYXZmVWpRNmwxNjdUcTRqVm1YK2ZYZktpbWwzeGNNZ1orRlV4WlU1azRxMlBZb0thaVpUMXhyZUlPQmJZQ0tPNm9zSGJVWWgyeTVSdWZZaG5hNEVsM2hpeVhNdWx3U3VPeGhVTXg5MzJWdzJXWTY2cVN4WVVycHBZZmFHa0MvOGFwN0xibDVscGhPUXlUUDQxOFpRRDFyekZlYUNTRWxydFRYTGVWeVVxdmFZalUvOWUxUWFGSE03VUZHSTRxSXZDemhMcEt5aUt4Z21yTmc1MExoZUJUZzJqdVhYZ3lZNkQ0SjJOUzQzMUlyQ3hQcmQ5VGFvRXZWc1NQdXU5VVJTRnV6d1NSN01mMVdySGtyalFGTmgwOXl5YmVuT0NoNjNWTU8xQXh3cytqM3ZKSG12WFNRWmxrM2kzWmhuR1VrUzk4eU9iTGZ5RTMrSXhOcERPTTVHTUVwVXhpa0lKMEkxMUxFeXNNbHhjRHZ4ckpockQ2aGx4NE1tT0s4T0ppdmFwcWFySzYyYjNiQ0RtYnVleURtNmM1VVVtUll3ck5DRGwwaXRWL1hLbVhza1ZBRnZYdEgybWRicExRUXZiWUVGUVdZVVExYmNRTEd0TmpabUQxK3ROMmV0WW0ycDZNNzVkOTNWaERXaHB2R1RNVTFSNVIxcFpsaFd1NlVVZDVVK3htK2J1TUxYT3haenhzMzRzRU92ZVUzUmZrMFdaaDY5Q25BWkJZQnhVTGhwTTB1ODE2S1BKdi9VSURrQ1YrOE54NVVNbjNJdmFyZlcrSzhQby9WSnIrcm55Vmt4R29STFJjVkJ5RlUrRlNkS3pCSDA3bHpIZFZYREg4S3FodUhWandoYUp1Z29DYitrNytsdGNpRVlpQ0ZtelhJbnY0ejVUYVZYS2hQVWRZYnlkOUlwazdPYkJSazRZVjZraktsZHpSNjZkaEQ5dFFYK0VEZmM0KzZRZEwzRjIxQUs5cHNEMmZJWW96bnFucFE1WFo3WEljUUkyeUtkVWhubzdOQjhncmdZL211bnNCd1JPaTI3VlRia05ZMi9MQllHRVE1dEJXS2NBSDV0a0h6ek9wTTU3WjRocEh1SWdYWTJKUHR4UTZSTE4zYVNaM2g0S2tCK3BnbHFLOTljOThMeGUwNldiRnlnWGlncDEraUxubHJmSkxwZWFhNjN4WnhtczUzQllOWmlzQi9Kejl6VzlRS0RUR3lQTFZBalJsYUJwMnVzd1UvUktraWpDL2xDMGpLR1hzd3ZjSzlnOEpYaWw0ZjRpbnVBTmdtS0ExZ2Q2KzloeHpvK0FlL0ZDMVJ4QklBeE5lL2g5M3l2ZDQvSVMwSmw4eThLOHJLZnA3blRDa3lISTc1WGFxUm9kVk5JQVVzOUtKakd0a0h0WjMycnpNcmZkZFYwV3hiYlBQZnR0NXpodTNiVkxPQjV1akhmcHUxU3JLeUlXaDd4WEZGTjk1UFRMdjE1WUY2eG1KL1NCYWU0elRWRUxGU2Y2bFVrZjZ3R1BsRWIwMW4wdnFyTUFEa0g0MjRWOXErTFpXOVBmRm12WmQzb0p4Q1hSZE8rMmg1ZzE3NWgxTDBzUTRNN0NqK3VhRFgzQkpObkR0WFNqWk1IWUtFaVZEYmhXOWtWRVVkWWpIanNpTU13emVkVDhDa0doeFFyeG8vY0k3ZTdtOWlxWFZmaUtKMnA3dlo4c3FCN01IL2crdkJmRjhhbFVJU3p0UlFWWkVWQUdSL044NTFPNnFPdGhXZ251RVI5MG9kV2FWYy9pWGZ2T3BLQzdGSE5uTGtFL1JJRlNaTTlHdy9IS0RMQ0hMMmpWSThFOXEwalB4TGxvcXROM0dDYWlzU0hFN2NiaVhoU2dmYklmbUdvU0R6YUk0allGTWl2Nkc3VU52WEd2WHFkbjNCM09YUHM2czJEbjdla2RGT2ZpN2JxelVIbEF3Tm9uWU9FYUhlb28yS1VIb1ZHb0ZOYmFqdXVkQWZiT1lHOWtMMmxLbFd3Yk41QVJmL0VDSXlkSjlZaGRVZlR3aDRhTGJyZFE2azFoRHgvaDlYTHlZQUE0blNTUGQwTnY1T2dTc1FMVFpCMktockhoZHNoa2x4MUNzbFpFTURJNk1BaVMzRHpNUk03dWlMY082ang0d0wzRlZhTEdlb0lJdzd5SkpOZ0FWNjJ2QWFOVUttbHdYQW1GVmFzTXlVVVduN1h0S0lnQzltYmtzeklPcm42VzVEUWFnTGdadFM4R0toOEVxaWF0OUxGenpETEt4ZHlpRWdJRmVkMittQlZMOG1DdTYzNFF3em9SSDBMQXdCTm92TUVuZHF4NklDR0J5ZUhvMGZMTnBEbU9zeHhmdE00Wjhkekkwd2Y2OUpMZVpibGYwZjdRV3lnMlE2a2hya1hTcTlSS0NWWHA3VDFZL1Z3dkNQNVVyeWtrT29kekg4TzFtQW1sR3V1K2ZoZG41Q0xpeDJzOG90dTJ3bnJ1WkRScnpDRWk3ckpnZVNwMnRsT0tRbVpiRFBiUzN0ZTFVVFk2d1RTTDVrclpieWZXMDJsMlJCNGl0dHlPUVE3K1A3c3grU0tvZ3E4ZGJxNG4rZHNkUlBJZ0RmVXVVWEZwN2d4OHlKcExPMDhjTE9SUjg1aEp1U0dFdmZFNUgrL0grWGoxQVdQNmM1TllDRVNTWVlRb0t6QWwwYlJxTW0rc1VyL0Izalp5SUZ6V2FtNWV6QmV4N2NuSU51VHJEUW1IdzZWVDFsME1HTzdMK3l2bklwZVhQVy9DV0x2VGczQWlBbVBmWC9wRUlpSU9QRTdycmtqemdIL2M3VjNDSDk0ZGdNbEdlRG5HYy9iZy90QTdkVHhkOEM5OUgzbXdsZ0s2bEphc3NmV29HaWthZlh5N2g1aENpam1Fd1pVcXl1N1pDZSszaTBRRUtQQzBONm4yVEsycXdXQytEWFRMVkcveUN4MEllQkczZlhZdlljMGNVNE42UlZnU2lmQXRJMnU5TTJpaWxVVThQWENKVFgyK3JiUjdGdHU3cllodFprSEVBMzJQNlZtMVRKZ0Vjc080amVyYWthVHQxbFFrS3d5bUFjMSs3R0d0NzRQbCtaQ29ndFdLTE5HTThvVTVIQzRVdTMwTDE4MVdyTFAyVnZ0eThJODIxcC85ckltN21HYllpeFh6WjBHYk1RTjhSL3VscWFVQjY0UklPQ0pBdTJsTkYvdXV5M1lzcXRHVjhwV3I1c3J1dGNRNk1RcFozYjZjbXRrWk5wMDkxODJ1M0FHc2xGMXdENzZaalQyVWJ5VnhmUmVaZkNaTUdwZTlYTWQreXllZVE0RG5RanlOTm1sdklQWC9ydE02TzdMblJsN3J3M2x0c25mblBWZHA3WHhWbjVSaE85ZTZqTS8ralJnNjFVdTdNdXBic3lBckRwTm4vWHdTVlZ3VXcrdXpGL1NvdWNJNHFESS9TRjd5ZUhvd0xkQzgwQUhYVk5XeXMyNndQMDg5Q1Ric2lUazB4SkpuVHRjclM2cHBPMlZ4MzA2U2xvbWZwbzJqUUs5eC9qS3I5Ukw3OGR2YWl4ZlpBYU1JdkhNcWVic3BLSDNDUjIwNE5mWFo5eUVCL28vOGdia2FIaUFQNFhVRFd6SjUzTmthSTcvUFhDTElOOUJubkxGZURScGkxMVZIRW9jNGcwL3VvNGpVMnhqQjBSV2lKYWVuS2hDdEJsUUJIYXpCUDBrOTRFOVRnN1h4QnBPZC82VVQ1WmtMNUg1Q2pHNU92aGh4bnFCdytuNm5ZWWpTR1paZEtFMUxIbzhZeGlZUnQ3d1JLTjU4bkVpMTcrNTk2RXJDbyt2RjVNd1ZQMnVXQUtYMW1kZEVHeXgxQjZGM0hyY1k4dzVkQkhwYWpHemVidzgzcEtTQTA5YnhGYzE0dHk1RnBkNXZOT2VUSXN4d1NYMnRMdnpkSmVkK1cxV1RPbnRlWHlYWXJrYWxQMnlMYmRqT2lhWEFBeEg5QTBLNUJJdSs3Z2g3ZitIYnBWcWlyVGFjUjE3Z2NCSnZZSHNVWFNBdUc0NzE3Y1k3dG5NSFc2Zkh6dzkxZGk4OWY5QVFjMWYwb1o0ZnhjQVIyU2tCK2h1a1dTWElsaUpKelNFWWxISVhCV0lLK2Jrb1RYT1k4UExtcEF3ejk1d0VPaHdxanRWMkYxN1FVak1sTmtVZG4wYlZTTTdyeHVqczRWcHNKYVA0ajlaUEpaREdyb1k1Y2VQVXNUWEs1dklJaVBYSzlrMjZ3ZVhOVDVsbjBYQ1lOdVM3WWgxRFh2bnFtcHJMdGlsRCt6QVEwRmZ4eXVpRktFMTV4aXErMWZvWERxeVZENCtVSUNSMTlJN0hYZzZuZzlIWVhobzJtRCtHekx5MDRTaDF5TW1ieFkzdHRld3VxUW5xeHpDQUJRT05Ia29EbGN4Y1BKVXhEbzhHSnJHNWtlSFJPQVFFbHNJMEZaWmJ1Qmx4bG5FMitPejNnZkdlZGxkWjNrVTVvdzc2NFM4OXZkYStHZGVuU2U0YjAzT09ZeHZ2ZDJWcFovTXBZdVZMM3Vwa3I3d015VEdYN0gvMC9RWTgwVTAydzhVcEZ4MXlvZWJYY0xsUW5xTjRHcTU3d3IwNHR5WlRGZ2srY1RkYzJqSjY5QzhKOU9Ma3R4NHM2UTllYlhkbURrRkphWHJRbFBDTXFBV2JkSG5vM0R6VUlLT243QlJyYmdhL3N4TitYZU5WdWpEdFRQVHZzendsSGE1bFJEOFFrTyt4QWpUalgwSE5TZjZTTStrQ3Btd21aOCtFYUthdGE1eEwvYmhyRmFtMUFMVTNFcjdGRE1jZVNwUis0elU5UGowL0R0V0VTRU9ZdGlsYkU1MG5sajVVVlVmUTdkd3JCb0ZWS0I1WWdZQUlYd0V0SzNMc1BFbWx0Tlc3eWUxb0VSbVpBRUlQaEE2WFFKY1JRREhTZHdybjdsU042NGk4dEhIeVJ1eW4rR3JYUGFrQTdqTDFIWWdnZmtLaS9wM0pCUTYwWlh2ZG80aHJIWUp1UU9lRnFRcW9QVUhPbWhyelBrS1loQy9qSXcweVhGM3ZVNkZsSmtCTXdsd1Y2Q3BDSU1BSlpJeC9zRllOUmc1di9ib2tRT01LZkRoYklwWmt0YU5MOW9hNzhJVkpBRGlzc0dickQ4ZUVKaC9pZFpzMFd6T0U3cTViY3hLOCt6WncxbTFHbmpTWkVXbDh2cHI1ZytQejdoSFlxUjZFZkZOUUhLbVE0VXlNdkU2VFc3RUU4RkhiczlJNWdPUFlsaFFabXg0R0ZBUy9ZdGd0a0pGS0FPNXBlSHdHaFFZWWI5NVh1bjZHcTEvTEtoMVlGd0VEWlRwNWZoSTdSbk1CZGRHa01zM2Q3RkU0b1RLTFNaSmRKTWpOZU5rRWRxbDdZQUZmTUREb21peUpQdGlESTZXaFRRWVN6dnVDRG5pcUcrWDVsamszNHYyaVZLUDllQk16cVFFYTlmUzlMWVFuZTdPakpjenhBcThPUWszSmgwUE9POGswNzY4OTRBTnB2VnhqN2NETGdGckx1bi9VOEFQZDhCS3dkaHhWOUo2OUFQM2JhSVhFdWRVdER4Zk11N3V2SmRTWmhpOFYza3piTzlIU3VqcVdUR3AzOUdPc0xuTitJd3l1VVFHSFBoTmc5aElJL1ArUm1MUlNCbndOQXEyZGpXa0N5MmxBa2RlWDFtQTEvVjZYb1JVdjl2bVprODM3NEt3V1dtMHphbkhMRkNzalhYd0xxbVRNTy9BNEhPaVZlZTdvbm5mODdKMTJ3MmQzZko3SldQQ0xDZWl6Y2hSdlYvNDBlNHNoSi9pWk5qcUdad0VXcXdmU0J3T0RSeFJZdUlyRG5KY1g5NkhpbWdoUXkzTnJxeE1WM0dCaUhKU3kzRXFrZGdDNzcvcVh1ZUhVZHFWdFlJTlVrdmRpMGxyRGpIZmpIQ05RS1U1aGRUdW9ESGorN0wwcENWbDRBSDZ6eDFEU3VFMDB2MkxUaFdZNjh6UlRKUkIxclJzRFVxTDVrQUtmQmNUQ3QzUlMvVGZ0QTE0QW96anVuSUIzSHVxUjJaL3VxWlRDcTdnNVlFYmwrTVJxbE9oM0t0SUQyby8yMk1LYkhyeURpdUxPNm1MK3BaVGVkRURXQ2dYcVUvSlI3WjJWTVd6Z3pZVFA2RzNpSnY2b2NxQ0xJQ0lKMkhOdlh3eFdFVS9HVHVhZ3QvQUUxVDhDOVpPQ2h6djVoRlhhRDl4K3pHTTNpZzNQS1c3UXZrMUY0RjNIM2RRN3BIQW5LWm5Kck15VjVPNmh0RW55em56V1Ayb3hXM3ZqQ0JxdWMreHFFQUlkSHc3MTgvdjRtTTVLWEwxK2hSVVc4RFJQZFhPdDFpZ1MwOVZjN1Z2TkNnYUZ2QWdTa0VwNXJLU2JnZmVzek1UaGhFMVJCZ1N3SHdQZkdwREd3QThraFFlVDg5RlBpc0hiYWZINjNTc1V4SzFJdkVsbjNDYUwwV3FaZEU1NWdRQWZHTmlEK2hCUGtVSlhpbjV6QXNwUWI2QXdudFNpVXhrNXpRZ0Jyd1kzNmZBY1Ztdm54YU9RbUYwQUw5UE5xdEU3ZWw1Y0hLZ3BpVXJxL0hhck95eXQveXFKWndocEw2Q0R6ell0ejd4RWtGUEp4RHBBOXhYTlA0SC9rOXIzb3BNQmhTR3JqY2FUcmRIK2dPbUZZVzF1eSs4UFBDOUltaWZjbCtjQjlVUlE2UDdpV3IzMG53bWtQY0FENW1kU0NqYzNTTHI1RGliQjNrellmdGM0OHliMEJrSS9uajNEbjFWOEFIZnpPZkVDcFlINXF0Qnlic1FDbzBPUWd5a1EwNU1UdWsrTTIyZWwrWmZWa2M5a2VVRTJHU2tqUWh6MkpneWR3OHZnUU53ME8zZDNuZ2JPUHlzSWdiYnFqRHY2R2RRUkM0YmRrQUU3U0UyUnlRNjR5MkM2c0tmYkVRYkZGbU4xZkdQWXpwcTdEVkYrZGxDcWhaMjE3RGhFbzBkc1JqNWtjR2tEOTBxOGV0b2IwVUwzdFlsYm9BWFlJZDU0VzM3dTZYQmorOGRkQTZuZGFlVGdHZlI0R08yaGQ4QzhlSmVYaVJFekhueHRRUjg5NkRIVDA2Rk0zY013QmN2ZDNOMW1BMFpIdW12TFJoL2NDSnJwTVNjZU4wdGRqM2ZCRHdLZ05RbldwQzZ0MjBla25KeEd3MzQ0bE4zYWwrbHNxWktDZVBKRnNXK2dqQkpUVHZCcFJ5aWZXTWk5SHR0UzJEb0dSd1NYWUVCMDJ5SVJzSDJublNPdjJCTzh6Mmd1YTNtUTg2SmZVNHBnQS9xQ0oxMUUzaE9vcG0wUTFaOG9DSVNrcXllVVozR2RXWEhFQUw4bkRYdFlPd1FGV0RpbS93QVIvaXN3SmNKK3p1elM2OXJIeEc0MmdjYWJlL2F0c3B2NGRDUUFINUJMOUNMQytiQ3dsTXFJT0I2TFlOa202Y01RZ1JQVkN6NDh0emlYRHpia3BlekVScURCcU1mdE5EQkZ0Q05RaGtwZTQxSjFxK0d3aW5BUDQ3Y3BrQitQb2dzL2RDZFFXTUY4ZHBnQW5GM01LQXE2bXZMN2ZCY1RTTWJVdWZ5b053cWtVWGZYaHRTSlVIRlhHcm1QL0h3dDFuSiswMjZGdXlSNnBWYmRwZEFyQ3ZpeURERVczRkk2T2dMbTB1blUrOUE1aUZCOUNIOUF6VThzOUdZU0l3K2NVbEVxOUFicHRnLzVjSEVBODhROUZZSDZDNSs2QWt5VG9ydEMrWmdiako0OWxCUEFEaUsxZTBBdlkrK28zbkUwTzN1M2VGMndNclhXV3FwRGdkRGpoTDVXMHdzazQvSGNoSnROcFp1UnMxVitEUXNPeE00OHk1WjREQ2d4eTVNWmZuOHkyaVAza3FIejB5dGxCemNWU3ZORFFWVVNvODZJZlg4eThXMHNoZmp4VkplbmFWMHF0Ny9WVFhxQTNLM1dKYWw2U1hoM01aWDFiVUtXblN1UlViODVRN1ZDNk9LVjJPWVJ0MXZHeksyNXNiSncwL3lMdEZIZVlXNXNLMFhmN2FFVWFrNjhjNXluU1dXOGRkMUQyZjZjNy8rcytRS2ZOTUhXUmxVRUhuQnVxb3pxcU1qdWJYY2U4WlZqMVh3ZHRnMTBBZkZtV1dldUYwVDA3a3Uremk4NG11VDVmcmtJOGdUampJY08vb1J5ZTVVK1dHNnNCc09yMzhHRVNudjFDSytjcUpIWnNHLzNPaWk5UWpxR3VTS3VweTQvSGJlNkQ3QW4rK2hnRE9nYmZhY1hSUnlyNXZuVnVPZ055d1p5dTd0QjVlMFhsY2tGMUpYVm40N0xWbEdLZUxpRER0c0F2OFUwdXdUS1VMMjhuNHpMQ29jVlNZY0FPWWJKZy8xeFlYSmt0K1N2eGxVT24rMFlSaURIVGNYZjRpVmpnLzVkdlg0NjdxNUJ2anJNQVNJN3dXWXVqL1NlSVdZb2ZUVnVNTVlQSnlLRmZseFZ2T0V1cStMMVhQWFRjWmw5d2dLVktqd0VkMTRiZXd3emxvaXBxajhaVnk2Q3UyTTRJOG4xZC95T1M1ZnJTbm9kOTlXNDkyMlNBbzBxYkFTdndvVzl2TElSM3N5dnhzWHIxNzJLN1pGVSs3dkhZTkpEMkVpNUVzNXhQK3h6TDg2TDZFcUpzZ1V2QXNxWHkvR0hrWjhXenZWdk9VM1R2NkRzK2ZmUTVBZklnMXEvaitzUkhFR1E5MHQwZ3dYdE10NzBVMjVPNWcwaS93dit1RzZPK3pGZVA2NDdENkhjWDlCcnRRcHhVOFZqZjVneDZQTXNBdGJLd0MzYjU5VVEvRG5Ha2tkajluRVF3OGkvZ2t4MmNEaUw4elQ3bkFLTWZ0N3NEeDhIMGgvR1B4c0NuazhGcG1NOWpFejVaUkxuL3hFb2ovN0JlOUNma3hqR3JZdy9yb3VqTkRZK2Z6YjltRFZwVS9zbDkrTlJwbSttT29yQnNORHg2OGRybEtacGo0UHdjYkNJeC9HUTVSME00azlqY3h6S3hxcjhQQnV2K2VpQzIvK0tmLzU2L2VRTXUzNk9mUDdZUG4vOE9zS0FsL2lIWk9uajBoL3orYWNYL2Z6bi9ieFZiM0pRdE9NTE9ha3Z0M3lTay9pR1FFTXo5V0g4ZWRPUE5QclY0NHgrbjhiamQrT2N0UDdoYmY0YjVFYysrZGd2cDg5UDhUMC8xTkdsQnhYRkQzWm80L29nUmVRUDJVbCsrR3V5ZnMwWFAwOWs2QjhTZVRqZWQvenl0THFwNHkvSCtCeTgyTWNOZGZUVnIrTUxmRHdHZ3ZBdkI4NG5IYUtFZlRudzQrUE9YOXRQZitseG54OGZNdTUvRTZkOVVQb2ZYZmQ1NFFjcFB5NVVJZjJBWW56YS9zMU4wcG1xMGppbi9ndjloYXo3RTRXQlE5OHJpeS9IL3JzY1RuMnRzQTZOOWR0WUhFYnByMGY2VnBuOUhSNC8yQURreWYxd1dRc3VHUDcraEhIazJ3bmozNGpNeDRpL3J3Q2h2MHFBUGxuNkZ3clFGOWFHdjJaci9KOHc5VmRDOUNteTN3blJEOEpKL25McC9KMEZBN1JlL0E5aWVCaUh2MllnN0xkeVBBMGhYOXQ2QXYxRE9CNUd2cEdzTHcvNlkxa2UrMWZZRE9TWHMrWGZNUWkvVW1yKy8yYnUzMDJiZjh2Ymg1VDhRYno5alRSK0FkQi9MRy9qMy9HMkdhL2pkL3c5Z29OZjhmRXc5czA3dmpabDAvK281NU9ETGI4NTVKZDVlc2dER3g1c0JoQUhBMXlJUFBUTHkrZUpLbytpRTJVdldUN0dSdXVmYkxiMGZ2dWR0UHc2bHYzbHZncEZmdjNwY2VSN1Y0WDRHVjc5NDd3VStnKzBzci9GRW42dGNuNlJ3ZjBScDVJNCtsUFZCUDhUeGZTdndhaWZTdjJuSVBYdlhQbExQYXgva2RXR3Y5RVRCUFJiY1NyMmpZN0V2OVdSdjFxMS9kN3VHdnpsM2Y0WXVQbHJlZnJYTWVGL0NzT2dOUFZYMExMeXB6eERVNytSWjg0U28vOW9wRC9ZZ1ljaDZqdU91UGI1Q0hwQWZjTVh3NUpYcGY5aGw1cDYvQkxpZ1grSlVScEJZSWNKczd5TUZIOXJKa0NTZ3h2Qzk1ZGZUTmIwK1g0TTYvOW9FQTltK1l3QUhXRG9wMWNZNE01UEh1cmo0YmhHLzhKRDhEZUhWSC85NmtMRkg4YlBBMkZUbG40NzVNRVByMUVkM3pxdm1XWWNtK3J6b3A5YTRMOGdhSklrU0JoK1o2NlBNeEVSRURqeEJ4cFZHSU8rZFMrdzc2d3EvSE5tbFNMK0lMTUtROS9iMWY4Q0Q5L2Fnd3ZPaitDZlJtZjRld0RvMTZLZU1rN0d2OHRldzRGMThqcFZ6bXRZN01jano4OXZBUTQxeDcxSmVXcWw3RUJLcDE3cW05RWYvUTgrQUVUL1ZNREhSSEhtK0h0ODBpdkEvL2d4OGV2eEcvN3hOODZlbC9manRhbVBkL0h6aytieHdXUkxEQmp0RjNQREQyTDR6L25oQzU0bGZobjFrVCtNK3ZBdk1DWmwvaG1EQTNSMlBxY0sveVlpL3dCc1A2bHFuc0hpLzRLL296ejZQZVhSbjZGeTZRZHhxVGZEb2V3YU1INy9jZTAzMVA5bkJQNmFnL002TzREV0gwdDRIUG1GWXYrSDBSMytHYm9mTHd5bGgxWDlXeDh2ZmgvOW4vLzdwOGovN3BUL1F1Vi9vOGdqMzVFK081NXlQT29md2Nnbzk2dW1qc3dzcjcvQ2lSK2VTL1RGeUdPL0xKajVWd2dpdnc3TkVQUy93QWY2cDU0TlF2NTZuUG9EK2Y2N29QUTdjSUNUdnhXUmZqY1M4VmY4WDR0SjRlK0Q0dDh2TTM0ZlF2bmxvWkVUQy81ZDZRY0NEdFljaHcrKy9EWFJtVDhNL0tIZmhGU3duOUVGNkw4eXBQS0R4LzhUSWwzQzhmZ1lmL29OLzlsK0F3RlQvMjYvQWY0K1RQcW4zL0NiUU1RUFV2Zy95VzhnL3ZRYi90dCt3NjhuL0wvZmJ5RC9qdDhRWmswenhIL3pRL0JGLy9RYy9nRGEvd2Q0RHQvSEdmKzNlQTcvRm9mZ0kwb04vZkFIL1JvRGtOK00rTXZkQS9RYk5FRkNmNldKYjlqbUQzY1F2bzg3L3E5M0VJanZWeVdRNzRIZXY5WkhRUDZqbHB0K3NvU0swVi9yQVpyOFRabCt2eVZGOGRkeHdEOWRlY1UrQmZzWExMeitodmpFSDVvdUJkSGZjaXlKZk1PS3YzenQ5WnYwNk85RytxTlZFdko5VUhTSnl6Q0x3UnltSkQxQUkvaU9QcGowd1orOVA4WUFJQnhmTzY3cjQ1L2tMMWYwTDh3VnVEOWpIR1oxVTZZNXVDT05CNzhhejFzUDVnY1ZkUWkvQWdDbURvYjJaQ2VpQkdvdU9PNGswdkVVbjNQQU9LOFRQOHpBNDhzU2pCVGtFYkMzKzNRTVdNWGdFajlJNHdDSUNuLzhPUHplTVQ4dVBWZWl3OUJ2eDBQVXZudll4ejJIT3g2UDN6ODUvRnc0aEQ3ZUpUaWRPWDhZZnZMU0lENEFEV0cyNUhFT051YityOWJaeURlMkZQOGVwV0hJejBqZ3QwbmV2MFZoLzJ3RzhmZnFXb245dmo1UThYZVUrak9xODIrTjZwRGZiZ2Y1R2Q3NVdZUVBvNytEZi9lenpQTzlBdnd6cHZOUDNMdC9LSVQva1JHZG41MHg4czlSM3AveG5OK1o2UC9DYU00LzJtenlYU3huYXFNRDJvQllUdFAvR2NyNTNjbityd3prL095TWZ5NTUveWQwLzRDQWZ4TCtkeWM4OWU5Vzh0OHYyWHdHYncvZ0ZJZmozdzY0OUk3SHZ4MWM0UDlKL3QrZC9EOWtYdndCOUFmYm01dG0vS2xEM1B0dHBqYUh2M2tjL0g4PSZsdDsvZGlhZ3JhbSZndDsmbHQ7L214ZmlsZSZndDsiPjxkZWZzPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC01NjQtMjgzLTE1NC0yNi0wIj48cmVjdCB4PSI1NjQiIHk9IjI4MyIgd2lkdGg9IjE1NCIgaGVpZ2h0PSIyNiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTU2NC0zMDktMTU0LTI2LTAiPjxyZWN0IHg9IjU2NCIgeT0iMzA5IiB3aWR0aD0iMTU0IiBoZWlnaHQ9IjI2Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtNTY0LTMzNS0xNTQtMjYtMCI+PHJlY3QgeD0iNTY0IiB5PSIzMzUiIHdpZHRoPSIxNTQiIGhlaWdodD0iMjYiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC01NjQtMzY5LTE1NC0yNi0wIj48cmVjdCB4PSI1NjQiIHk9IjM2OSIgd2lkdGg9IjE1NCIgaGVpZ2h0PSIyNiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTU2NC0zOTUtMTU0LTI2LTAiPjxyZWN0IHg9IjU2NCIgeT0iMzk1IiB3aWR0aD0iMTU0IiBoZWlnaHQ9IjI2Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtNTY0LTQyMS0xNTQtMjYtMCI+PHJlY3QgeD0iNTY0IiB5PSI0MjEiIHdpZHRoPSIxNTQiIGhlaWdodD0iMjYiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC01NjQtNDQ3LTE1NC0yNi0wIj48cmVjdCB4PSI1NjQiIHk9IjQ0NyIgd2lkdGg9IjE1NCIgaGVpZ2h0PSIyNiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTI2NC0yODMtMTUyLTI2LTAiPjxyZWN0IHg9IjI2NCIgeT0iMjgzIiB3aWR0aD0iMTUyIiBoZWlnaHQ9IjI2Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtMjY0LTMxNy0xNTItNDgtMCI+PHJlY3QgeD0iMjY0IiB5PSIzMTciIHdpZHRoPSIxNTIiIGhlaWdodD0iNDgiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC0yNjQtNDU3LTE1Mi0yNi0wIj48cmVjdCB4PSIyNjQiIHk9IjQ1NyIgd2lkdGg9IjE1MiIgaGVpZ2h0PSIyNiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTI2NC00ODMtMTUyLTI2LTAiPjxyZWN0IHg9IjI2NCIgeT0iNDgzIiB3aWR0aD0iMTUyIiBoZWlnaHQ9IjI2Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtMjY0LTUwOS0xNTItMjYtMCI+PHJlY3QgeD0iMjY0IiB5PSI1MDkiIHdpZHRoPSIxNTIiIGhlaWdodD0iMjYiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC0yNjQtNTQzLTE1Mi0yNi0wIj48cmVjdCB4PSIyNjQiIHk9IjU0MyIgd2lkdGg9IjE1MiIgaGVpZ2h0PSIyNiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTI2NC01NjktMTUyLTI2LTAiPjxyZWN0IHg9IjI2NCIgeT0iNTY5IiB3aWR0aD0iMTUyIiBoZWlnaHQ9IjI2Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtMjY0LTU5NS0xNTItMjYtMCI+PHJlY3QgeD0iMjY0IiB5PSI1OTUiIHdpZHRoPSIxNTIiIGhlaWdodD0iMjYiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC0yNjQtNjIxLTE1Mi0yNi0wIj48cmVjdCB4PSIyNjQiIHk9IjYyMSIgd2lkdGg9IjE1MiIgaGVpZ2h0PSIyNiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTI2NC02NDctMTUyLTI2LTAiPjxyZWN0IHg9IjI2NCIgeT0iNjQ3IiB3aWR0aD0iMTUyIiBoZWlnaHQ9IjI2Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtODU0LTIyNC0xNzItMjQtMCI+PHJlY3QgeD0iODU0IiB5PSIyMjQiIHdpZHRoPSIxNzIiIGhlaWdodD0iMjQiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC04NTQtMjQ4LTE3Mi0yMC0wIj48cmVjdCB4PSI4NTQiIHk9IjI0OCIgd2lkdGg9IjE3MiIgaGVpZ2h0PSIyMCIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTg1NC0yNjgtMTcyLTIwLTAiPjxyZWN0IHg9Ijg1NCIgeT0iMjY4IiB3aWR0aD0iMTcyIiBoZWlnaHQ9IjIwIi8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtODU0LTI4OC0xNzItMzAtMCI+PHJlY3QgeD0iODU0IiB5PSIyODgiIHdpZHRoPSIxNzIiIGhlaWdodD0iMzAiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC04NTQtMzI2LTE3Mi0yMi0wIj48cmVjdCB4PSI4NTQiIHk9IjMyNiIgd2lkdGg9IjE3MiIgaGVpZ2h0PSIyMiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTg1NC0zNDgtMTcyLTIwLTAiPjxyZWN0IHg9Ijg1NCIgeT0iMzQ4IiB3aWR0aD0iMTcyIiBoZWlnaHQ9IjIwIi8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtODU0LTM2OC0xNzItMjAtMCI+PHJlY3QgeD0iODU0IiB5PSIzNjgiIHdpZHRoPSIxNzIiIGhlaWdodD0iMjAiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC04NTQtMzg4LTE3Mi0yMC0wIj48cmVjdCB4PSI4NTQiIHk9IjM4OCIgd2lkdGg9IjE3MiIgaGVpZ2h0PSIyMCIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTg1NC00MDgtMTcyLTMwLTAiPjxyZWN0IHg9Ijg1NCIgeT0iNDA4IiB3aWR0aD0iMTcyIiBoZWlnaHQ9IjMwIi8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtODQ5LTUzMi0xODItMjYtMCI+PHJlY3QgeD0iODQ5IiB5PSI1MzIiIHdpZHRoPSIxODIiIGhlaWdodD0iMjYiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC04NDktNTU4LTE4Mi0yNi0wIj48cmVjdCB4PSI4NDkiIHk9IjU1OCIgd2lkdGg9IjE4MiIgaGVpZ2h0PSIyNiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTg0OS01ODQtMTgyLTI2LTAiPjxyZWN0IHg9Ijg0OSIgeT0iNTg0IiB3aWR0aD0iMTgyIiBoZWlnaHQ9IjI2Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtODQ5LTYxOC0xODItMjYtMCI+PHJlY3QgeD0iODQ5IiB5PSI2MTgiIHdpZHRoPSIxODIiIGhlaWdodD0iMjYiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC04NDktNjQ0LTE4Mi0yNC0wIj48cmVjdCB4PSI4NDkiIHk9IjY0NCIgd2lkdGg9IjE4MiIgaGVpZ2h0PSIyNCIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTg0OS02NjgtMTgyLTMwLTAiPjxyZWN0IHg9Ijg0OSIgeT0iNjY4IiB3aWR0aD0iMTgyIiBoZWlnaHQ9IjMwIi8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtMTE0NC01ODEtMTUyLTI2LTAiPjxyZWN0IHg9IjExNDQiIHk9IjU4MSIgd2lkdGg9IjE1MiIgaGVpZ2h0PSIyNiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTExNDQtNjE1LTE1Mi0yNi0wIj48cmVjdCB4PSIxMTQ0IiB5PSI2MTUiIHdpZHRoPSIxNTIiIGhlaWdodD0iMjYiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC0xMTQ0LTY0MS0xNTItMjYtMCI+PHJlY3QgeD0iMTE0NCIgeT0iNjQxIiB3aWR0aD0iMTUyIiBoZWlnaHQ9IjI2Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtNjY0LTgzMS0xNTItNDQtMCI+PHJlY3QgeD0iNjY0IiB5PSI4MzEiIHdpZHRoPSIxNTIiIGhlaWdodD0iNDQiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC02NjQtODc1LTE1Mi0zMC0wIj48cmVjdCB4PSI2NjQiIHk9Ijg3NSIgd2lkdGg9IjE1MiIgaGVpZ2h0PSIzMCIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTg2NC04MzEtMTUyLTQ0LTAiPjxyZWN0IHg9Ijg2NCIgeT0iODMxIiB3aWR0aD0iMTUyIiBoZWlnaHQ9IjQ0Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtODY0LTg3NS0xNTItMzAtMCI+PHJlY3QgeD0iODY0IiB5PSI4NzUiIHdpZHRoPSIxNTIiIGhlaWdodD0iMzAiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC0xMDY0LTgzMS0xNTItNDQtMCI+PHJlY3QgeD0iMTA2NCIgeT0iODMxIiB3aWR0aD0iMTUyIiBoZWlnaHQ9IjQ0Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtMTA2NC04NzUtMTUyLTMwLTAiPjxyZWN0IHg9IjEwNjQiIHk9Ijg3NSIgd2lkdGg9IjE1MiIgaGVpZ2h0PSIzMCIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTY0LTc2My0xNTItMjYtMCI+PHJlY3QgeD0iNjQiIHk9Ijc2MyIgd2lkdGg9IjE1MiIgaGVpZ2h0PSIyNiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTI2NC03NjMtMTUyLTI2LTAiPjxyZWN0IHg9IjI2NCIgeT0iNzYzIiB3aWR0aD0iMTUyIiBoZWlnaHQ9IjI2Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtNDY0LTc2My0xNTItMjYtMCI+PHJlY3QgeD0iNDY0IiB5PSI3NjMiIHdpZHRoPSIxNTIiIGhlaWdodD0iMjYiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC00LTM2Ny0xNTItMjYtMCI+PHJlY3QgeD0iNCIgeT0iMzY3IiB3aWR0aD0iMTUyIiBoZWlnaHQ9IjI2Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtNC0zOTMtMTUyLTI2LTAiPjxyZWN0IHg9IjQiIHk9IjM5MyIgd2lkdGg9IjE1MiIgaGVpZ2h0PSIyNiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTQtNDI3LTE1Mi0yNi0wIj48cmVjdCB4PSI0IiB5PSI0MjciIHdpZHRoPSIxNTIiIGhlaWdodD0iMjYiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC00LTUxMi0xNTItMjYtMCI+PHJlY3QgeD0iNCIgeT0iNTEyIiB3aWR0aD0iMTUyIiBoZWlnaHQ9IjI2Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtNC01NDYtMTUyLTI2LTAiPjxyZWN0IHg9IjQiIHk9IjU0NiIgd2lkdGg9IjE1MiIgaGVpZ2h0PSIyNiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTU1Ni01MjItMTYyLTI2LTAiPjxyZWN0IHg9IjU1NiIgeT0iNTIyIiB3aWR0aD0iMTYyIiBoZWlnaHQ9IjI2Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtNTU2LTU0OC0xNjItMjYtMCI+PHJlY3QgeD0iNTU2IiB5PSI1NDgiIHdpZHRoPSIxNjIiIGhlaWdodD0iMjYiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC01NTYtNTc0LTE2Mi0zMi0wIj48cmVjdCB4PSI1NTYiIHk9IjU3NCIgd2lkdGg9IjE2MiIgaGVpZ2h0PSIzMiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTU1Ni02MDYtMTYyLTMyLTAiPjxyZWN0IHg9IjU1NiIgeT0iNjA2IiB3aWR0aD0iMTYyIiBoZWlnaHQ9IjMyIi8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtMTA5NC0zNjItMTUyLTI0LTAiPjxyZWN0IHg9IjEwOTQiIHk9IjM2MiIgd2lkdGg9IjE1MiIgaGVpZ2h0PSIyNCIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTEwOTQtMzk0LTE1Mi0yNi0wIj48cmVjdCB4PSIxMDk0IiB5PSIzOTQiIHdpZHRoPSIxNTIiIGhlaWdodD0iMjYiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC0xMDk0LTQyMC0xNTItMjYtMCI+PHJlY3QgeD0iMTA5NCIgeT0iNDIwIiB3aWR0aD0iMTUyIiBoZWlnaHQ9IjI2Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtMTI3NC0zNjItMTUyLTI2LTAiPjxyZWN0IHg9IjEyNzQiIHk9IjM2MiIgd2lkdGg9IjE1MiIgaGVpZ2h0PSIyNiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTEyNzQtMzk2LTE1Mi0yNi0wIj48cmVjdCB4PSIxMjc0IiB5PSIzOTYiIHdpZHRoPSIxNTIiIGhlaWdodD0iMjYiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC0xMjc0LTQyMi0xNTItMjYtMCI+PHJlY3QgeD0iMTI3NCIgeT0iNDIyIiB3aWR0aD0iMTUyIiBoZWlnaHQ9IjI2Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtMTE4NC0xMTMtMTUyLTI2LTAiPjxyZWN0IHg9IjExODQiIHk9IjExMyIgd2lkdGg9IjE1MiIgaGVpZ2h0PSIyNiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTExODQtMTM5LTE1Mi0yNi0wIj48cmVjdCB4PSIxMTg0IiB5PSIxMzkiIHdpZHRoPSIxNTIiIGhlaWdodD0iMjYiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC0xMTg0LTE2NS0xNTItMjYtMCI+PHJlY3QgeD0iMTE4NCIgeT0iMTY1IiB3aWR0aD0iMTUyIiBoZWlnaHQ9IjI2Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtMTE4NC0xOTEtMTUyLTI2LTAiPjxyZWN0IHg9IjExODQiIHk9IjE5MSIgd2lkdGg9IjE1MiIgaGVpZ2h0PSIyNiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJteC1jbGlwLTExODQtMjI1LTE1Mi0yNi0wIj48cmVjdCB4PSIxMTg0IiB5PSIyMjUiIHdpZHRoPSIxNTIiIGhlaWdodD0iMjYiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0ibXgtY2xpcC0xMTg0LTI1MS0xNTItMjYtMCI+PHJlY3QgeD0iMTE4NCIgeT0iMjUxIiB3aWR0aD0iMTUyIiBoZWlnaHQ9IjI2Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9Im14LWNsaXAtMTE4NC0yNzctMTUyLTI2LTAiPjxyZWN0IHg9IjExODQiIHk9IjI3NyIgd2lkdGg9IjE1MiIgaGVpZ2h0PSIyNiIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnPjxwYXRoIGQ9Ik0gNTYwIDI3OCBMIDU2MCAyNTIgTCA3MjIgMjUyIEwgNzIyIDI3OCIgZmlsbD0iI2Y1ZjVmNSIgc3Ryb2tlPSIjNjY2NjY2IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJhbGwiLz48cGF0aCBkPSJNIDU2MCAyNzggTCA1NjAgNDY4IEwgNzIyIDQ2OCBMIDcyMiAyNzgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY2NjY2NiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gNTYwIDI3OCBMIDcyMiAyNzgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY2NjY2NiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIGZpbGw9IiMzMzMzMzMiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtd2VpZ2h0PSJib2xkIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSI2NDAuNSIgeT0iMjY5LjUiPldvcmxkPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtNTY0LTI4My0xNTQtMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iNTY1LjUiIHk9IjI5NS41Ij4twqBtYXJrZXQgb3BlcmF0b3JzPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtNTY0LTMwOS0xNTQtMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iNTY1LjUiIHk9IjMyMS41Ij4tIHVuaXRzIG9wZXJhdG9yczwvdGV4dD48L2c+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgcG9pbnRlci1ldmVudHM9Im5vbmUiIGNsaXAtcGF0aD0idXJsKCNteC1jbGlwLTU2NC0zMzUtMTU0LTI2LTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjU2NS41IiB5PSIzNDcuNSI+KyBnbG9iYWwgaW5mb3JtYXRpb248L3RleHQ+PC9nPjxwYXRoIGQ9Ik0gNTYwIDM2MCBMIDcyMiAzNjAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY2NjY2NiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIHBvaW50ZXItZXZlbnRzPSJub25lIiBjbGlwLXBhdGg9InVybCgjbXgtY2xpcC01NjQtMzY5LTE1NC0yNi0wKSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSI1NjUuNSIgeT0iMzgxLjUiPisgbG9hZF9zY2VuYXJpbygpPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtNTY0LTM5NS0xNTQtMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iNTY1LjUiIHk9IjQwNy41Ij4rIHN0ZXAoKTwvdGV4dD48L2c+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgcG9pbnRlci1ldmVudHM9Im5vbmUiIGNsaXAtcGF0aD0idXJsKCNteC1jbGlwLTU2NC00MjEtMTU0LTI2LTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjU2NS41IiB5PSI0MzMuNSI+KyBydW5fdHJhaW5pbmcoKTwvdGV4dD48L2c+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgcG9pbnRlci1ldmVudHM9Im5vbmUiIGNsaXAtcGF0aD0idXJsKCNteC1jbGlwLTU2NC00NDctMTU0LTI2LTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjU2NS41IiB5PSI0NTkuNSI+KyBydW5fZXZhbHVhdGlvbigpPC90ZXh0PjwvZz48cGF0aCBkPSJNIDI2MCAyNzggTCAyNjAgMjUyIEwgNDIwIDI1MiBMIDQyMCAyNzgiIGZpbGw9IiNkNWU4ZDQiIHN0cm9rZT0iIzgyYjM2NiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gMjYwIDI3OCBMIDI2MCAzNjAgTCA0MjAgMzYwIEwgNDIwIDI3OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODJiMzY2IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAyNjAgMjc4IEwgNDIwIDI3OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODJiMzY2IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC13ZWlnaHQ9ImJvbGQiIHBvaW50ZXItZXZlbnRzPSJub25lIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjMzOS41IiB5PSIyNjkuNSI+TWFya2V0IG9wZXJhdG9yPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtMjY0LTI4My0xNTItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iMjY1LjUiIHk9IjI5NS41Ij4rIG1hcmtldHM8L3RleHQ+PC9nPjxwYXRoIGQ9Ik0gMjYwIDMwOCBMIDQyMCAzMDgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzgyYjM2NiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIHBvaW50ZXItZXZlbnRzPSJub25lIiBjbGlwLXBhdGg9InVybCgjbXgtY2xpcC0yNjQtMzE3LTE1Mi00OC0wKSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSIyNjUuNSIgeT0iMzI5LjUiPi0gc3RlcCgpIC0gY29sbGVjdCBvcmRlciwgY2xlYXIgPC90ZXh0Pjx0ZXh0IHg9IjI2NS41IiB5PSIzNDMuNSI+bWFya2V0LCBjaGVjayBOZXR3b3JrLCA8L3RleHQ+PHRleHQgeD0iMjY1LjUiIHk9IjM1Ny41Ij5zZW5kIGZlZWRiYWNrPC90ZXh0PjwvZz48cGF0aCBkPSJNIDI2MCA0NTEuNSBMIDI2MCA0MjUuNSBMIDQyMCA0MjUuNSBMIDQyMCA0NTEuNSIgZmlsbD0iI2Y4Y2VjYyIgc3Ryb2tlPSIjYjg1NDUwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAyNjAgNDUxLjUgTCAyNjAgNjY3LjUgTCA0MjAgNjY3LjUgTCA0MjAgNDUxLjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2I4NTQ1MCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gMjYwIDQ1MS41IEwgNDIwIDQ1MS41IiBmaWxsPSJub25lIiBzdHJva2U9IiNiODU0NTAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXdlaWdodD0iYm9sZCIgZm9udC1zdHlsZT0iaXRhbGljIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSIzMzkuNSIgeT0iNDQzIj4mbHQ7Jmx0O01hcmtldCZndDsmZ3Q7PC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtMjY0LTQ1Ny0xNTItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iMjY1LjUiIHk9IjQ2OSI+LSBtYXJrZXQgcGFydGljaXBhbnRzPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtMjY0LTQ4My0xNTItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iMjY1LjUiIHk9IjQ5NSI+LSBtYXJrZXQgcnVsZXM8L3RleHQ+PC9nPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIHBvaW50ZXItZXZlbnRzPSJub25lIiBjbGlwLXBhdGg9InVybCgjbXgtY2xpcC0yNjQtNTA5LTE1Mi0yNi0wKSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSIyNjUuNSIgeT0iNTIxIj4tIG1hcmtldCBjb25maWd1cmF0aW9uPC90ZXh0PjwvZz48cGF0aCBkPSJNIDI2MCA1MzMuNSBMIDQyMCA1MzMuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYjg1NDUwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgcG9pbnRlci1ldmVudHM9Im5vbmUiIGNsaXAtcGF0aD0idXJsKCNteC1jbGlwLTI2NC01NDMtMTUyLTI2LTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjI2NS41IiB5PSI1NTUiPisgY2xlYXJpbmcgYWxnb3JpdGhtPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtMjY0LTU2OS0xNTItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iMjY1LjUiIHk9IjU4MSI+KyBuZXR3b3JrPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtMjY0LTU5NS0xNTItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iMjY1LjUiIHk9IjYwNyI+KyBuZXh0X29wZW5pbmcoKTwvdGV4dD48L2c+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgcG9pbnRlci1ldmVudHM9Im5vbmUiIGNsaXAtcGF0aD0idXJsKCNteC1jbGlwLTI2NC02MjEtMTUyLTI2LTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjI2NS41IiB5PSI2MzMiPisgaGFuZGxlX29yZGVyYm9vaygpPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtMjY0LTY0Ny0xNTItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iMjY1LjUiIHk9IjY1OSI+KyBoYW5kbGVfcmVnaXN0YXJ0aW9uKCk8L3RleHQ+PC9nPjxwYXRoIGQ9Ik0gNDIwIDI5MSBMIDUzNC4wMSAyOTEiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gNTU5LjAxIDI5MSBMIDU0Ni41MSAyOTguMzUgTCA1MzQuMDEgMjkxIEwgNTQ2LjUxIDI4My42NSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDI5MXB4OyBtYXJnaW4tbGVmdDogNDkwcHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTFweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPmhhcyBhPC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjQ5MCIgeT0iMjk0IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjExcHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPmhhcyBhPC90ZXh0Pjwvc3dpdGNoPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDMwMnB4OyBtYXJnaW4tbGVmdDogNDQycHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBub25lOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPjEuLio8L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNDQyIiB5PSIzMDYiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtc2l6ZT0iMTJweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+MS4uKjwvdGV4dD48L3N3aXRjaD48L2c+PHBhdGggZD0iTSAzNDAgNDI1LjUgTCAzNDAuMiAzODQuNDUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gMzQwLjMyIDM1OS40NSBMIDM0Ny42MSAzNzEuOTkgTCAzNDAuMiAzODQuNDUgTCAzMzIuOSAzNzEuOTEgWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAzOTJweDsgbWFyZ2luLWxlZnQ6IDM0MHB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj5oYXMgYTwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIzNDAiIHk9IjM5NSIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5oYXMgYTwvdGV4dD48L3N3aXRjaD48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiA0MThweDsgbWFyZ2luLWxlZnQ6IDM1MHB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogbm9uZTsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj4xLi4qPC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjM1MCIgeT0iNDIyIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjEuLio8L3RleHQ+PC9zd2l0Y2g+PC9nPjxwYXRoIGQ9Ik0gODUwIDIxOSBMIDg1MCAxOTMgTCAxMDMwIDE5MyBMIDEwMzAgMjE5IiBmaWxsPSIjZDVlOGQ0IiBzdHJva2U9IiM4MmIzNjYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDg1MCAyMTkgTCA4NTAgNDMzIEwgMTAzMCA0MzMgTCAxMDMwIDIxOSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODJiMzY2IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSA4NTAgMjE5IEwgMTAzMCAyMTkiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzgyYjM2NiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtd2VpZ2h0PSJib2xkIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSI5MzkuNSIgeT0iMjEwLjUiPlVuaXRzIG9wZXJhdG9yPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtODU0LTIyNC0xNzItMjQtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iODU1LjUiIHk9IjIzNi41Ij4tIHVuaXRzPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtODU0LTI0OC0xNzItMjAtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iODU1LjUiIHk9IjI2MC41Ij4tIElEPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtODU0LTI2OC0xNzItMjAtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iODU1LjUiIHk9IjI4MC41Ij4tIG1hcmtldCBjb25uZWN0aW9uczwvdGV4dD48L2c+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgcG9pbnRlci1ldmVudHM9Im5vbmUiIGNsaXAtcGF0aD0idXJsKCNteC1jbGlwLTg1NC0yODgtMTcyLTMwLTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9Ijg1NS41IiB5PSIzMDAuNSI+LSBnZW5lcmFsIGluZm9ybWF0aW9uPC90ZXh0PjwvZz48cGF0aCBkPSJNIDg1MCAzMTcgTCAxMDMwIDMxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODJiMzY2IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgcG9pbnRlci1ldmVudHM9Im5vbmUiIGNsaXAtcGF0aD0idXJsKCNteC1jbGlwLTg1NC0zMjYtMTcyLTIyLTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9Ijg1NS41IiB5PSIzMzguNSI+KyBzZXR1cCgpPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtODU0LTM0OC0xNzItMjAtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iODU1LjUiIHk9IjM2MC41Ij4rIGZvcm11bGF0ZV9iaWRzKCkgKHBvcnRmb2xpb19vcHQpPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtODU0LTM2OC0xNzItMjAtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iODU1LjUiIHk9IjM4MC41Ij4rIHN1Ym1pdF9iaWRzKCk8L3RleHQ+PC9nPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIHBvaW50ZXItZXZlbnRzPSJub25lIiBjbGlwLXBhdGg9InVybCgjbXgtY2xpcC04NTQtMzg4LTE3Mi0yMC0wKSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSI4NTUuNSIgeT0iNDAwLjUiPisgaGFuZGxlX21hcmtldF9mZWVkYmFjaygpPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtODU0LTQwOC0xNzItMzAtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iODU1LjUiIHk9IjQyMC41Ij4rIHNlbmRfZGlzcGF0Y2hfcGxhbigpPC90ZXh0PjwvZz48cGF0aCBkPSJNIDg0NSA1MjcgTCA4NDUgNTAxIEwgMTAzNSA1MDEgTCAxMDM1IDUyNyIgZmlsbD0iI2Y4Y2VjYyIgc3Ryb2tlPSIjYjg1NDUwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSA4NDUgNTI3IEwgODQ1IDY5MyBMIDEwMzUgNjkzIEwgMTAzNSA1MjciIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2I4NTQ1MCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gODQ1IDUyNyBMIDEwMzUgNTI3IiBmaWxsPSJub25lIiBzdHJva2U9IiNiODU0NTAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXdlaWdodD0iYm9sZCIgZm9udC1zdHlsZT0iaXRhbGljIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSI5MzkuNSIgeT0iNTE4LjUiPiZsdDsmbHQ7VW5pdCZndDsmZ3Q7PC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtODQ5LTUzMi0xODItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iODUwLjUiIHk9IjU0NC41Ij4tIHR5cGU8L3RleHQ+PC9nPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIHBvaW50ZXItZXZlbnRzPSJub25lIiBjbGlwLXBhdGg9InVybCgjbXgtY2xpcC04NDktNTU4LTE4Mi0yNi0wKSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSI4NTAuNSIgeT0iNTcwLjUiPi3CoCB1bml0IHNwZWNpZmljIGluZm9ybWF0aW9uPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtODQ5LTU4NC0xODItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iODUwLjUiIHk9IjU5Ni41Ij4tIGJpZGRpbmdfc3RyYXRlZ3k8L3RleHQ+PC9nPjxwYXRoIGQ9Ik0gODQ1IDYwOSBMIDEwMzUgNjA5IiBmaWxsPSJub25lIiBzdHJva2U9IiNiODU0NTAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtODQ5LTYxOC0xODItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iODUwLjUiIHk9IjYzMC41Ij4rIF9faW5pdF9fKCk8L3RleHQ+PC9nPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIHBvaW50ZXItZXZlbnRzPSJub25lIiBjbGlwLXBhdGg9InVybCgjbXgtY2xpcC04NDktNjQ0LTE4Mi0yNC0wKSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSI4NTAuNSIgeT0iNjU2LjUiPisgY2FsY3VsYXRlX29wZXJhdGlvbmFsX3dpbmRvdygpPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtODQ5LTY2OC0xODItMzAtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iODUwLjUiIHk9IjY4MC41Ij4rIHJlc2V0KCk8L3RleHQ+PC9nPjxwYXRoIGQ9Ik0gODUwIDIzMSBMIDc4MCAyMzEgTCA3ODAgMjkxIEwgNzQ3Ljk5IDI5MSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSA3MjIuOTkgMjkxIEwgNzM1LjQ5IDI4My42NSBMIDc0Ny45OSAyOTEgTCA3MzUuNDkgMjk4LjM1IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMjU0cHg7IG1hcmdpbi1sZWZ0OiA3ODBweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7IHdoaXRlLXNwYWNlOiBub3dyYXA7ICI+aGFzIGE8L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iNzgwIiB5PSIyNTgiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtc2l6ZT0iMTFweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+aGFzIGE8L3RleHQ+PC9zd2l0Y2g+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogMzAycHg7IG1hcmdpbi1sZWZ0OiA3NjBweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHdoaXRlLXNwYWNlOiBub3dyYXA7ICI+MS4uKjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSI3NjAiIHk9IjMwNiIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4xLi4qPC90ZXh0Pjwvc3dpdGNoPjwvZz48cGF0aCBkPSJNIDk0MCA1MDEgTCA5NDAuMTEgNDU5LjUzIiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDk0MC4xOCA0MzQuNTMgTCA5NDcuNSA0NDcuMDUgTCA5NDAuMTEgNDU5LjUzIEwgOTMyLjc5IDQ0Ny4wMSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDQ3MHB4OyBtYXJnaW4tbGVmdDogOTQwcHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTFweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPmhhcyBhPC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9Ijk0MCIgeT0iNDczIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjExcHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPmhhcyBhPC90ZXh0Pjwvc3dpdGNoPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDQ5NnB4OyBtYXJnaW4tbGVmdDogMTIyMHB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogbm9uZTsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj4xLi4qPC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjEyMjAiIHk9IjUwMCIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4xLi4qPC90ZXh0Pjwvc3dpdGNoPjwvZz48cGF0aCBkPSJNIDExNDAgNTc2IEwgMTE0MCA1NTAgTCAxMzAwIDU1MCBMIDEzMDAgNTc2IiBmaWxsPSIjZmZlNmNjIiBzdHJva2U9IiNkNzliMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDExNDAgNTc2IEwgMTE0MCA2NjIgTCAxMzAwIDY2MiBMIDEzMDAgNTc2IiBmaWxsPSJub25lIiBzdHJva2U9IiNkNzliMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDExNDAgNTc2IEwgMTMwMCA1NzYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2Q3OWIwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtd2VpZ2h0PSJib2xkIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSIxMjE5LjUiIHk9IjU2Ny41Ij5CaWRkaW5nIFN0cmF0ZWd5PC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtMTE0NC01ODEtMTUyLTI2LTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjExNDUuNSIgeT0iNTkzLjUiPisgdHlwZTwvdGV4dD48L2c+PHBhdGggZD0iTSAxMTQwIDYwNiBMIDEzMDAgNjA2IiBmaWxsPSJub25lIiBzdHJva2U9IiNkNzliMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtMTE0NC02MTUtMTUyLTI2LTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjExNDUuNSIgeT0iNjI3LjUiPisgY2FsY3VsYXRlX2JpZHMoKTwvdGV4dD48L2c+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgcG9pbnRlci1ldmVudHM9Im5vbmUiIGNsaXAtcGF0aD0idXJsKCNteC1jbGlwLTExNDQtNjQxLTE1Mi0yNi0wKSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSIxMTQ1LjUiIHk9IjY1My41Ij4tIGxvYWRfc3RyYXRlZ3koKTwvdGV4dD48L2c+PHBhdGggZD0iTSA2NjAgODI2IEwgNjYwIDgwMCBMIDgyMCA4MDAgTCA4MjAgODI2IiBmaWxsPSIjZGFlOGZjIiBzdHJva2U9IiM2YzhlYmYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDY2MCA4MjYgTCA2NjAgOTAwIEwgODIwIDkwMCBMIDgyMCA4MjYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZjOGViZiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gNjYwIDgyNiBMIDgyMCA4MjYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZjOGViZiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtd2VpZ2h0PSJib2xkIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSI3MzkuNSIgeT0iODE3LjUiPlBvd2VyIHBsYW50PC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtNjY0LTgzMS0xNTItNDQtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iNjY1LjUiIHk9Ijg0My41Ij4tIHRlY2huby1lY29ub21pYzwvdGV4dD48dGV4dCB4PSI2NjUuNSIgeT0iODU3LjUiPnBhcmFtZXRlcnM8L3RleHQ+PC9nPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIHBvaW50ZXItZXZlbnRzPSJub25lIiBjbGlwLXBhdGg9InVybCgjbXgtY2xpcC02NjQtODc1LTE1Mi0zMC0wKSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSI2NjUuNSIgeT0iODg3LjUiPi0gYXZhaWxhYmlsaXR5PC90ZXh0PjwvZz48cGF0aCBkPSJNIDg2MCA4MjYgTCA4NjAgODAwIEwgMTAyMCA4MDAgTCAxMDIwIDgyNiIgZmlsbD0iI2RhZThmYyIgc3Ryb2tlPSIjNmM4ZWJmIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSA4NjAgODI2IEwgODYwIDkwMCBMIDEwMjAgOTAwIEwgMTAyMCA4MjYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZjOGViZiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gODYwIDgyNiBMIDEwMjAgODI2IiBmaWxsPSJub25lIiBzdHJva2U9IiM2YzhlYmYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXdlaWdodD0iYm9sZCIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iOTM5LjUiIHk9IjgxNy41Ij5TdG9yYWdlIHVuaXQ8L3RleHQ+PC9nPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIHBvaW50ZXItZXZlbnRzPSJub25lIiBjbGlwLXBhdGg9InVybCgjbXgtY2xpcC04NjQtODMxLTE1Mi00NC0wKSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSI4NjUuNSIgeT0iODQzLjUiPi0gdGVjaG5vLWVjb25vbWljPC90ZXh0Pjx0ZXh0IHg9Ijg2NS41IiB5PSI4NTcuNSI+cGFyYW1ldGVyczwvdGV4dD48L2c+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgcG9pbnRlci1ldmVudHM9Im5vbmUiIGNsaXAtcGF0aD0idXJsKCNteC1jbGlwLTg2NC04NzUtMTUyLTMwLTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9Ijg2NS41IiB5PSI4ODcuNSI+LSBhdmFpbGFiaWxpdHk8L3RleHQ+PC9nPjxwYXRoIGQ9Ik0gMTA2MCA4MjYgTCAxMDYwIDgwMCBMIDEyMjAgODAwIEwgMTIyMCA4MjYiIGZpbGw9IiNkYWU4ZmMiIHN0cm9rZT0iIzZjOGViZiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gMTA2MCA4MjYgTCAxMDYwIDkwMCBMIDEyMjAgOTAwIEwgMTIyMCA4MjYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZjOGViZiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gMTA2MCA4MjYgTCAxMjIwIDgyNiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNmM4ZWJmIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC13ZWlnaHQ9ImJvbGQiIHBvaW50ZXItZXZlbnRzPSJub25lIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjExMzkuNSIgeT0iODE3LjUiPkRTTSB1bml0PC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtMTA2NC04MzEtMTUyLTQ0LTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjEwNjUuNSIgeT0iODQzLjUiPi0gdGVjaG5vLWVjb25vbWljPC90ZXh0Pjx0ZXh0IHg9IjEwNjUuNSIgeT0iODU3LjUiPnBhcmFtZXRlcnM8L3RleHQ+PC9nPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIHBvaW50ZXItZXZlbnRzPSJub25lIiBjbGlwLXBhdGg9InVybCgjbXgtY2xpcC0xMDY0LTg3NS0xNTItMzAtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iMTA2NS41IiB5PSI4ODcuNSI+LSBhdmFpbGFiaWxpdHk8L3RleHQ+PC9nPjxwYXRoIGQ9Ik0gMTE0MCA2MjMgTCAxMDYwIDYyMSBMIDEwNjAgMzMxIEwgMTA1NS45NyAzMzEuMTMiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gMTAzMC45OSAzMzEuOTcgTCAxMDQzLjIzIDMyNC4yIEwgMTA1NS45NyAzMzEuMTMgTCAxMDQzLjcyIDMzOC45IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogNTY5cHg7IG1hcmdpbi1sZWZ0OiAxMDYwcHg7Ij48ZGl2IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgIj48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMTFweDsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgY29sb3I6ICMwMDAwMDA7IGxpbmUtaGVpZ2h0OiAxLjI7IHBvaW50ZXItZXZlbnRzOiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB3aGl0ZS1zcGFjZTogbm93cmFwOyAiPmhhcyBhPC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjEwNjAiIHk9IjU3MyIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5oYXMgYTwvdGV4dD48L3N3aXRjaD48L2c+PHBhdGggZD0iTSA5NDAgODAwIEwgOTQwLjc4IDcxNC45MyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSA5NDAuOTQgNjk3LjkzIEwgOTQ5LjI4IDcxNS4wMSBMIDkzMi4yOCA3MTQuODUgWiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiA3NDhweDsgbWFyZ2luLWxlZnQ6IDk0MHB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj5pcyBhPC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9Ijk0MCIgeT0iNzUyIiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjExcHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPmlzIGE8L3RleHQ+PC9zd2l0Y2g+PC9nPjxwYXRoIGQ9Ik0gNzQwIDgwMCBMIDc0MCA3ODAgTCA5NDAgNzgwIiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDExNDAgODAwIEwgMTE0MCA3ODAgTCA5NDAgNzgwIiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDYwIDc1Ny41IEwgNjAgNzMxLjUgTCAyMjAgNzMxLjUgTCAyMjAgNzU3LjUiIGZpbGw9IiNkYWU4ZmMiIHN0cm9rZT0iIzZjOGViZiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gNjAgNzU3LjUgTCA2MCA3ODMuNSBMIDIyMCA3ODMuNSBMIDIyMCA3NTcuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNmM4ZWJmIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSA2MCA3NTcuNSBMIDIyMCA3NTcuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNmM4ZWJmIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC13ZWlnaHQ9ImJvbGQiIHBvaW50ZXItZXZlbnRzPSJub25lIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjEzOS41IiB5PSI3NDkiPkVPTTwvdGV4dD48L2c+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgcG9pbnRlci1ldmVudHM9Im5vbmUiIGNsaXAtcGF0aD0idXJsKCNteC1jbGlwLTY0LTc2My0xNTItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iNjUuNSIgeT0iNzc1Ij4rIGRlbWFuZDwvdGV4dD48L2c+PHBhdGggZD0iTSAyNjAgNzU3LjUgTCAyNjAgNzMxLjUgTCA0MjAgNzMxLjUgTCA0MjAgNzU3LjUiIGZpbGw9IiNkYWU4ZmMiIHN0cm9rZT0iIzZjOGViZiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gMjYwIDc1Ny41IEwgMjYwIDc4My41IEwgNDIwIDc4My41IEwgNDIwIDc1Ny41IiBmaWxsPSJub25lIiBzdHJva2U9IiM2YzhlYmYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDI2MCA3NTcuNSBMIDQyMCA3NTcuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNmM4ZWJmIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC13ZWlnaHQ9ImJvbGQiIHBvaW50ZXItZXZlbnRzPSJub25lIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjMzOS41IiB5PSI3NDkiPkNSTTwvdGV4dD48L2c+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgcG9pbnRlci1ldmVudHM9Im5vbmUiIGNsaXAtcGF0aD0idXJsKCNteC1jbGlwLTI2NC03NjMtMTUyLTI2LTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjI2NS41IiB5PSI3NzUiPisgZGVtYW5kPC90ZXh0PjwvZz48cGF0aCBkPSJNIDQ2MCA3NTcuNSBMIDQ2MCA3MzEuNSBMIDYyMCA3MzEuNSBMIDYyMCA3NTcuNSIgZmlsbD0iI2RhZThmYyIgc3Ryb2tlPSIjNmM4ZWJmIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSA0NjAgNzU3LjUgTCA0NjAgNzgzLjUgTCA2MjAgNzgzLjUgTCA2MjAgNzU3LjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzZjOGViZiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gNDYwIDc1Ny41IEwgNjIwIDc1Ny41IiBmaWxsPSJub25lIiBzdHJva2U9IiM2YzhlYmYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXdlaWdodD0iYm9sZCIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iNTM5LjUiIHk9Ijc0OSI+REhNPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtNDY0LTc2My0xNTItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iNDY1LjUiIHk9Ijc3NSI+KyBkZW1hbmQ8L3RleHQ+PC9nPjxwYXRoIGQ9Ik0gMzQwIDczMS41IEwgMzQwIDY4Ni4xMSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAzNDAgNjY5LjExIEwgMzQ4LjUgNjg2LjExIEwgMzMxLjUgNjg2LjExIFoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogNzAycHg7IG1hcmdpbi1sZWZ0OiAzNTBweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7IHdoaXRlLXNwYWNlOiBub3dyYXA7ICI+aXMgYTwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIzNTAiIHk9IjcwNSIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5pcyBhPC90ZXh0Pjwvc3dpdGNoPjwvZz48cGF0aCBkPSJNIDE0MCA3MzEuNSBMIDE0MCA3MTEuNSBMIDM0MCA3MTEuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSA1NDAgNzMxLjUgTCA1NDAgNzExLjUgTCAzNDAgNzExLjUiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gMCAzNjIgTCAwIDMzNiBMIDE2MCAzMzYgTCAxNjAgMzYyIiBmaWxsPSIjZmZlNmNjIiBzdHJva2U9IiNkNzliMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDAgMzYyIEwgMCA0NDggTCAxNjAgNDQ4IEwgMTYwIDM2MiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZDc5YjAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAwIDM2MiBMIDE2MCAzNjIiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2Q3OWIwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtd2VpZ2h0PSJib2xkIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSI3OS41IiB5PSIzNTMuNSI+Q2xlYXJpbmc8L3RleHQ+PC9nPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIHBvaW50ZXItZXZlbnRzPSJub25lIiBjbGlwLXBhdGg9InVybCgjbXgtY2xpcC00LTM2Ny0xNTItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iNS41IiB5PSIzNzkuNSI+LSB0eXBlPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtNC0zOTMtMTUyLTI2LTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjUuNSIgeT0iNDA1LjUiPi0gZXh0cmEgZnVuY3Rpb25hbGl0eTwvdGV4dD48L2c+PHBhdGggZD0iTSAwIDQxOCBMIDE2MCA0MTgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2Q3OWIwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIHBvaW50ZXItZXZlbnRzPSJub25lIiBjbGlwLXBhdGg9InVybCgjbXgtY2xpcC00LTQyNy0xNTItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iNS41IiB5PSI0MzkuNSI+KyBtYXJrZXQgY2xlYXJpbmcoKTwvdGV4dD48L2c+PHBhdGggZD0iTSAxNjAgMzc1IEwgMjEwIDM3NSBMIDIxMCA0NjUgTCAyMzQuMDIgNDY0Ljc2IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDI1OS4wMSA0NjQuNTEgTCAyNDYuNTkgNDcxLjk5IEwgMjM0LjAyIDQ2NC43NiBMIDI0Ni40NCA0NTcuMjggWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiA0MjBweDsgbWFyZ2luLWxlZnQ6IDIxMHB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj5oYXMgYTwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIyMTAiIHk9IjQyMyIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMXB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5oYXMgYTwvdGV4dD48L3N3aXRjaD48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiAzNjBweDsgbWFyZ2luLWxlZnQ6IDE5MnB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogbm9uZTsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj4xPC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjE5MiIgeT0iMzY0IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjEycHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjE8L3RleHQ+PC9zd2l0Y2g+PC9nPjxwYXRoIGQ9Ik0gMCA1MDcgTCAwIDQ4MSBMIDE2MCA0ODEgTCAxNjAgNTA3IiBmaWxsPSIjZmZlNmNjIiBzdHJva2U9IiNkNzliMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDAgNTA3IEwgMCA1NjcgTCAxNjAgNTY3IEwgMTYwIDUwNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZDc5YjAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAwIDUwNyBMIDE2MCA1MDciIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2Q3OWIwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtd2VpZ2h0PSJib2xkIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSI3OS41IiB5PSI0OTguNSI+TmV0d29yazwvdGV4dD48L2c+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgcG9pbnRlci1ldmVudHM9Im5vbmUiIGNsaXAtcGF0aD0idXJsKCNteC1jbGlwLTQtNTEyLTE1Mi0yNi0wKSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSI1LjUiIHk9IjUyNC41Ij4rIG5ldHdvcmsgcGFyYW1ldGVyczwvdGV4dD48L2c+PHBhdGggZD0iTSAwIDUzNyBMIDE2MCA1MzciIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2Q3OWIwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIHBvaW50ZXItZXZlbnRzPSJub25lIiBjbGlwLXBhdGg9InVybCgjbXgtY2xpcC00LTU0Ni0xNTItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iNS41IiB5PSI1NTguNSI+KyBwb3dlciBmbG93KCk8L3RleHQ+PC9nPjxwYXRoIGQ9Ik0gMTYwIDUyMCBMIDIwMCA1MjAgTCAyMDAgNjAzIEwgMjM0LjAxIDYwMi43MiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAyNTkuMDEgNjAyLjUxIEwgMjQ2LjU4IDYwOS45NyBMIDIzNC4wMSA2MDIuNzIgTCAyNDYuNDUgNTk1LjI2IFoiIGZpbGw9IiMwMDAwMDAiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogNTcycHg7IG1hcmdpbi1sZWZ0OiAyMDBweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7IHdoaXRlLXNwYWNlOiBub3dyYXA7ICI+aGFzIGE8L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMjAwIiB5PSI1NzUiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtc2l6ZT0iMTFweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+aGFzIGE8L3RleHQ+PC9zd2l0Y2g+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0wLjUgLTAuNSkiPjxzd2l0Y2g+PGZvcmVpZ25PYmplY3Qgc3R5bGU9Im92ZXJmbG93OiB2aXNpYmxlOyB0ZXh0LWFsaWduOiBsZWZ0OyIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSI+PGRpdiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiB1bnNhZmUgY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHVuc2FmZSBjZW50ZXI7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nLXRvcDogNTA2cHg7IG1hcmdpbi1sZWZ0OiAxOTJweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHdoaXRlLXNwYWNlOiBub3dyYXA7ICI+MC4uMTwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIxOTIiIHk9IjUxMCIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4wLi4xPC90ZXh0Pjwvc3dpdGNoPjwvZz48cGF0aCBkPSJNIDU1MiA1MTcgTCA1NTIgNDkxIEwgNzIyIDQ5MSBMIDcyMiA1MTciIGZpbGw9IiNmZmU2Y2MiIHN0cm9rZT0iI2Q3OWIwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gNTUyIDUxNyBMIDU1MiA2MzMgTCA3MjIgNjMzIEwgNzIyIDUxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZDc5YjAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSA1NTIgNTE3IEwgNzIyIDUxNyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZDc5YjAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC13ZWlnaHQ9ImJvbGQiIHBvaW50ZXItZXZlbnRzPSJub25lIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjYzNi41IiB5PSI1MDguNSI+T3JkZXI8L3RleHQ+PC9nPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIHBvaW50ZXItZXZlbnRzPSJub25lIiBjbGlwLXBhdGg9InVybCgjbXgtY2xpcC01NTYtNTIyLTE2Mi0yNi0wKSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSI1NTcuNSIgeT0iNTM0LjUiPisgaXNzdWVyPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtNTU2LTU0OC0xNjItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iNTU3LjUiIHk9IjU2MC41Ij4rIGFtb3VudCAoc2VudC9jb25mKTwvdGV4dD48L2c+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgcG9pbnRlci1ldmVudHM9Im5vbmUiIGNsaXAtcGF0aD0idXJsKCNteC1jbGlwLTU1Ni01NzQtMTYyLTMyLTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjU1Ny41IiB5PSI1ODYuNSI+KyBwcmljZTwvdGV4dD48L2c+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgcG9pbnRlci1ldmVudHM9Im5vbmUiIGNsaXAtcGF0aD0idXJsKCNteC1jbGlwLTU1Ni02MDYtMTYyLTMyLTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjU1Ny41IiB5PSI2MTguNSI+KyBhZGRpdGlvbmFsIGluZm8gKGJpZGRpbmcgem9uZSk8L3RleHQ+PC9nPjxwYXRoIGQ9Ik0gODQ3Ljc2IDMzMiBMIDc4MCAzMzIgTCA3ODAgNDUxIEwgNzgwIDU1OCBMIDcyNC4yMyA1NTYuMDgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtZGFzaGFycmF5PSIzIDMiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSA4NDEuODggMzM1LjUgTCA4NDguODggMzMyIEwgODQxLjg4IDMyOC41IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDczMC4yMyA1NTIuNzggTCA3MjMuMTIgNTU2LjA0IEwgNzI5Ljk5IDU1OS43OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PGltYWdlIHg9IjU5LjUiIHk9Ijg1MS41IiB3aWR0aD0iNDQ3LjI0IiBoZWlnaHQ9IjEzMCIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUE1b0FBQUVNQ0FZQUFBQ2xWY244QUFBTVFHbERRMUJKUTBNZ1VISnZabWxzWlFBQVNJbVZWd2RZVThrV25sdVNrRUJvQVFTa2hONEVBU2tCcElUUVF1L05Sa2dDaEJKaklLall5NktDYXhjVnNLR3JJZ3BXUU95SVltRlI3SDFCUkVWWkZ3dDI1VTBLNkxxdmZHKytiKzc4OTU4ei96bHo3c3k5ZHdCUU84VVJpWEpSZFFEeWhBWGkyR0IvZW5KS0twMzBCSkFCRldnQVpXREE0ZWFMbU5IUjRRQ1dvZmJ2NWQxTmdFamJhL1pTclgvMi85ZWl3ZVBuY3dGQW9pRk81K1Z6OHlBK0JBQmV5UldKQ3dBZ1NubXpxUVVpS1lZVmFJbGhnQkF2bHVKTU9hNlU0blE1M2llemlZOWxRZHdDZ0pJS2h5UE9CRUQxQ3VUcGhkeE1xS0hhRDdHamtDY1FBcUJHaDlnbkwyOHlEK0kwaUsyaGpRaGlxVDRqL1FlZHpMOXBwZzlyY2ppWncxZytGMWxSQ2hEa2kzSTUwLy9QZFB6dmtwY3JHZkpoQ2F0S2xqZ2tWanBubUxmYk9aUERwRmdGNGo1aGVtUVV4Sm9RZnhEd1pQWVFvNVFzU1VpQzNCNDE0T2F6WU02QURzU09QRTVBR01RR0VBY0pjeVBERlh4NmhpQ0lEVEZjSWVnMFFRRTdIbUpkaUJmejh3UGpGRFpieEpOakZiN1ErZ3d4aTZuZ3ozUEVNcjlTWHc4bE9RbE1oZjdyTEQ1Ym9ZK3BGbVhGSjBGTWdkaThVSkFZQ2JFcXhBNzVPWEZoQ3B1eFJWbXN5Q0Vic1NSV0dyODV4TEY4WWJDL1hCOHJ6QkFIeFNyc1MvTHloK2FMYmNrU3NDTVYrRUJCVm55SVBEOVlDNWNqaXgvT0JidkNGeklUaG5UNCtjbmhRM1BoOFFNQzVYUEhudkdGQ1hFS25RK2lBdjlZK1ZpY0lzcU5WdGpqcHZ6Y1lDbHZDckZMZm1HY1lpeWVXQUFYcEZ3Znp4QVZSTWZMNDhTTHNqbWgwZko0OEJVZ0hMQkFBS0FEQ2F6cFlETElCb0wydm9ZK2VDZnZDUUljSUFhWmdBL3NGY3pRaUNSWmp4QmU0MEFSK0JNaVBzZ2ZIdWN2NitXRFFzaC9IV2JsVjN1UUllc3RsSTNJQVU4Z3pnTmhJQmZlUzJTamhNUGVFc0ZqeUFqKzRaMERLeGZHbXd1cnRQL2Y4MFBzZDRZSm1YQUZJeG55U0ZjYnNpUUdFZ09JSWNRZ29nMnVqL3ZnWG5nNHZQckI2b3d6Y0kraGVYeTNKendoZEJBZUVXNFFPZ2wzSmdubWkzK0tNZ0owUXYwZ1JTN1NmOHdGYmdrMVhYRi8zQnVxUTJWY0I5Y0g5cmdMOU1QRWZhRm5WOGl5RkhGTHMwTC9TZnR2TS9qaGFTanN5STVrbER5QzdFZTIvbm1rcXEycTY3Q0tOTmMvNWtjZWEvcHd2bG5EUFQvN1ovMlFmUjVzdzM2MnhCWmpCN0ZXN0RSMkFUdUdOUUE2ZGhKcnhOcXc0MUk4dkxvZXkxYlhrTGRZV1R3NVVFZndEMzlEVDFhYXlYekhHc2RleHkveXZnTCtOT2s3R3JBbWk2YUxCWmxaQlhRbS9DTHc2V3doMTJFVTNkblIyUmtBNmZkRi92cDZFeVA3YmlBNmJkKzVCWDhBNEgxeWNIRHc2SGN1OUNRQSs5M2g5ai95bmJObXdFK0hNZ0RuajNBbDRrSTVoMHN2QlBpV1VJTTdUUThZQVROZ0RlZmpETnlBRi9BRGdTQVVSSUY0a0FJbXd1aXo0RG9YZzZsZ0pwZ0hpa0VwV0FIV2duS3dHV3dEdThCZWNBQTBnR1BnTkRnSExvRXI0QWE0QjFkUEQzZ0Irc0U3OEJsQkVCSkNSV2lJSG1LTVdDQjJpRFBDUUh5UVFDUWNpVVZTa0RRa0V4RWlFbVFtc2dBcFJWWWg1Y2hXcEJyWmp4eEJUaU1Ya0E3a0R0S0Y5Q0t2a1U4b2hxcWdXcWdoYW9tT1Joa29FdzFENDlFSmFDWTZCUzFDRjZMTDBQVm9GYm9IclVkUG81ZlFHMmduK2dJZHdBQ21qT2xnSnBnOXhzQllXQlNXaW1WZ1ltdzJWb0tWWVZWWUxkWUVuL00xckJQcnd6N2lSSnlHMDNGN3VJSkQ4QVNjaTAvQlorTkw4WEo4RjE2UHQrRFg4QzY4SC85R29CSU1DSFlFVHdLYmtFeklKRXdsRkJQS0NEc0lod2xuNFY3cUlid2pFb2s2UkN1aU85eUxLY1JzNGd6aVV1SkdZaDN4RkxHRDJFMGNJSkZJZWlRN2tqY3Bpc1FoRlpDS1NSdEllMGduU1ZkSlBhUVBTc3BLeGtyT1NrRktxVXBDcGZsS1pVcTdsVTRvWFZWNnF2U1pyRTYySUh1U284Zzg4blR5Y3ZKMmNoUDVNcm1IL0ptaVFiR2llRlBpS2RtVWVaVDFsRnJLV2NwOXlodGxaV1ZUWlEvbEdHV0I4bHpsOWNyN2xNOHJkeWwvVk5GVXNWVmhxWXhYa2Fnc1U5bXBja3JsanNvYktwVnFTZldqcGxJTHFNdW8xZFF6MUlmVUQ2bzBWUWRWdGlwUGRZNXFoV3E5NmxYVmwycGtOUXMxcHRwRXRTSzFNcldEYXBmVit0VEo2cGJxTEhXTyttejFDdlVqNnJmVUJ6Um9HazRhVVJwNUdrczFkbXRjMEhpbVNkSzAxQXpVNUdrdTFOeW1lVWF6bTRiUnpHZ3NHcGUyZ0xhZGRwYldvMFhVc3RKaWEyVnJsV3J0MVdyWDZ0ZlcxSGJSVHRTZXBsMmhmVnk3VXdmVHNkUmg2K1RxTE5jNW9ITlQ1OU1Jd3hITUVmd1JTMGJVanJnNjRyM3VTRjAvWGI1dWlXNmQ3ZzNkVDNwMHZVQzlITDJWZWcxNkQvUnhmVnY5R1AycCtwdjB6K3IzamRRYTZUV1NPN0prNUlHUmR3MVFBMXVEV0lNWkJ0c00yZ3dHREkwTWd3MUZoaHNNenhqMkdla1krUmxsRzYweE9tSFVhMHd6OWpFV0dLOHhQbW44bks1Tlo5Sno2ZXZwTGZSK0V3T1RFQk9KeVZhVGRwUFBwbGFtQ2FielRldE1INWhSekJobUdXWnJ6SnJOK3MyTnpTUE1aNXJYbU4rMUlGc3dMTElzMWxtMFdyeTN0TEpNc2x4azJXRDV6RXJYaW0xVlpGVmpkZCthYXUxclBjVzZ5dnE2RGRHR1laTmpzOUhtaWkxcTYycWJaVnRoZTlrT3RYT3pFOWh0dE9zWVJSamxNVW80cW1yVUxYc1ZlNlo5b1gyTmZaZURqa080dzN5SEJvZVhvODFIcDQ1ZU9icDE5RGRIVjhkY3grMk85NXcwblVLZDVqczFPYjEydG5YbU9sYzRYeDlESFJNMFpzNll4akd2WE94YytDNmJYRzY3MGx3alhCZTVOcnQrZFhOM0U3dlZ1dlc2bTd1bnVWZTYzMkpvTWFJWlN4bm5QUWdlL2g1elBJNTVmUFIwOHl6d1BPRDVsNWU5VjQ3WGJxOW5ZNjNHOHNkdUg5dnRiZXJOOGQ3cTNlbEQ5MG56MmVMVDZXdml5L0d0OG4za1orYkg4OXZoOTVScHc4eG03bUcrOUhmMEYvc2Y5bi9QOG1UTllwMEt3QUtDQTBvQzJnTTFBeE1DeXdNZkJwa0daUWJWQlBVSHV3YlBDRDRWUWdnSkMxa1pjb3R0eU9heXE5bjlvZTZoczBKYndsVEM0c0xLd3g2RjI0YUx3NXNpMElqUWlOVVI5eU10SW9XUkRWRWdpaDIxT3VwQnRGWDBsT2lqTWNTWTZKaUttQ2V4VHJFelkxdmphSEdUNG5iSHZZdjNqMThlZnkvQk9rR1MwSnlvbGpnK3NUcnhmVkpBMHFxa3p1VFJ5Yk9TTDZYb3B3aFNHbE5KcVltcE8xSUh4Z1dPV3p1dVo3enIrT0x4TnlkWVRaZzI0Y0pFL1ltNUU0OVBVcHZFbVhRd2paQ1dsTFk3N1FzbmlsUEZHVWhucDFlbTkzTlozSFhjRnp3LzNocGVMOStidjRyL05NTTdZMVhHczB6dnpOV1p2Vm0rV1dWWmZRS1dvRnp3S2pza2UzUDIrNXlvbkowNWc3bEp1WFY1U25scGVVZUVtc0ljWWN0a284blRKbmVJN0VURm9zNHBubFBXVHVrWGg0bDM1Q1A1RS9JYkM3VGdqM3lieEZyeWk2U3IwS2V3b3ZERDFNU3BCNmRwVEJOT2E1dHVPMzNKOUtkRlFVVy96Y0JuY0djMHp6U1pPVzltMXl6bXJLMnprZG5wczV2bm1NMVpPS2RuYnZEY1hmTW84M0xtL1Q3ZmNmNnErVzhYSkMxb1dtaTRjTzdDN2wrQ2Y2a3BWaTBXRjk5YTVMVm84Mko4c1dCeCs1SXhTellzK1ZiQ0s3bFk2bGhhVnZwbEtYZnB4VitkZmwzLzYrQ3lqR1h0eTkyV2IxcEJYQ0ZjY1hPbDc4cGRxelJXRmEzcVhoMnh1bjROZlUzSm1yZHJKNjI5VU9aU3Rua2RaWjFrWGVmNjhQV05HOHczck5qd3BUeXIvRWFGZjBWZHBVSGxrc3IzRzNrYnIyN3kyMVM3MlhCejZlWlBXd1JiYm04TjNscGZaVmxWdG8yNHJYRGJrKzJKMjF0L1kveFd2VU4vUittT3J6dUZPenQzeGU1cXFYYXZydDV0c0h0NURWb2pxZW5kTTM3UGxiMEJleHRyN1d1MzF1blVsZTREK3lUN251OVAyMy96UU5pQjVvT01nN1dITEE1VkhxWWRMcWxINnFmWDl6ZGtOWFEycGpSMkhBazkwdHprMVhUNHFNUFJuY2RNamxVYzF6NisvQVRseE1JVGd5ZUxUZzZjRXAzcU81MTV1cnQ1VXZPOU04bG5ycmZFdExTZkRUdDcvbHpRdVRPdHpOYVQ1NzNQSDd2Z2VlSElSY2JGaGt0dWwrcmJYTnNPLys3NisrRjJ0L2I2eSs2WEc2OTRYR25xR050eDRxcnYxZFBYQXE2ZHU4NitmdWxHNUkyT213azNiOThhZjZ2ek51LzJzenU1ZDE3ZExiejcrZDdjKzRUN0pRL1VINVE5TkhoWTlZZk5IM1dkYnAzSHV3SzYyaDdGUGJyWHplMSs4VGovOFplZWhVK29UOHFlR2ordGZ1Yjg3Rmh2VU8rVjUrT2U5N3dRdmZqY1YveW54cCtWTDYxZkh2ckw3NisyL3VUK25sZmlWNE92bDc3UmU3UHpyY3ZiNW9Ib2dZZnY4dDU5ZmwveVFlL0RybytNajYyZmtqNDkvVHoxQytuTCtxODJYNXUraFgyN1A1ZzNPQ2ppaURteVh3RU1WalFqQTREWE93R2dwZ0JBZytjenlqajUrVTlXRVBtWlZZYkFmOEx5TTZLc3VBRlFDLy9mWS9yZzM4MHRBUFp0aDhjdnFLODJIb0JvS2dEeEhnQWRNMmE0RHAzVlpPZEthU0hDYzhDVzJLL3BlZW5nM3hUNW1mT0h1SDl1Z1ZUVkJmemMvZ3NlYTN4WUMyN2pWd0FBQUlwbFdFbG1UVTBBS2dBQUFBZ0FCQUVhQUFVQUFBQUJBQUFBUGdFYkFBVUFBQUFCQUFBQVJnRW9BQU1BQUFBQkFBSUFBSWRwQUFRQUFBQUJBQUFBVGdBQUFBQUFBQUNRQUFBQUFRQUFBSkFBQUFBQkFBT1NoZ0FIQUFBQUVnQUFBSGlnQWdBRUFBQUFBUUFBQTVxZ0F3QUVBQUFBQVFBQUFRd0FBQUFBUVZORFNVa0FBQUJUWTNKbFpXNXphRzkwNi8zQTJnQUFBQWx3U0ZsekFBQVdKUUFBRmlVQlNWSWs4QUFBQWRacFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWxoTlVDQkRiM0psSURZdU1DNHdJajRLSUNBZ1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNEtJQ0FnSUNBZ1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZaWGhwWmowaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOWxlR2xtTHpFdU1DOGlQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K01qWTRQQzlsZUdsbU9sQnBlR1ZzV1VScGJXVnVjMmx2Ymo0S0lDQWdJQ0FnSUNBZ1BHVjRhV1k2VUdsNFpXeFlSR2x0Wlc1emFXOXVQamt5TWp3dlpYaHBaanBRYVhobGJGaEVhVzFsYm5OcGIyNCtDaUFnSUNBZ0lDQWdJRHhsZUdsbU9sVnpaWEpEYjIxdFpXNTBQbE5qY21WbGJuTm9iM1E4TDJWNGFXWTZWWE5sY2tOdmJXMWxiblErQ2lBZ0lDQWdJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQZ29nSUNBOEwzSmtaanBTUkVZK0Nqd3ZlRHA0YlhCdFpYUmhQZ3BLNXU1YkFBQUFIR2xFVDFRQUFBQUNBQUFBQUFBQUFJWUFBQUFvQUFBQWhnQUFBSVlBQU5UK3NnMG9BZ0FBUUFCSlJFRlVlQUhzWFFYQUxrWFZubzhPNmU1R1FxUlJxVXNyQWlvZ0toMkNVcUtFR0FpWVlJS0lHSFFJNkMrQ1lJS0VkS05JWHVKZXVydnoyLzg4WitZNWMyWjMzOHZsRXhGdzV0NXZUODQ1dStlZG1kM1ppUjFxSklXZUJPYVE1d3VqRVFaNXlEV1VpS2pyY2hCVjJJUkdjakZmTkVrRjc2REVPeHJDcVA1ci9GbU9hdm1yOWErMlA3NDFkUzBtVVlXMS9hMzNuM3IvNVgzRDE1anlpYU9rV0lXTUs0ejYvRkdmUDFpTzZ2TkhmZjZvengrK05YVXRKbEdGNmZtREhjM080NGl2U2RiYVpxU2puMFdDRlo2eXBNTW1BemxhandQVmY2N0pPWUtHZGVKbEVpQ01LMkVTa2lRMHZSci9UanhyK2F2bGozZVNvbTVGb2xOZUNoMVdNTUphL3pRQ0RBZGhiWDhrTFBIUnRWT2VhdnRUMjUvYS9oU3RxaWM2OWNVTHJWMnhoaVpLU1JLYVhuMys2Y1N6dGorMS9Ya0QyNStoWmxoS0ZGL1RwTXBxOVZCb0RIZ09KWWVlWDlScjZNbGZZYWJGYUpHYVhYazlBcytxL212OGEvbmp3MmlyanJsSzZPdE1ybHhab1NNWGtmSjZCSjVWNjErdGY3WCsxZnFIbHNTM0M3bGxpVmhIMW1LMFNNMmt2QjZCWjlYMnA3WS90ZjJwN1E4YUROOHV4RlluSHp1eUZxTkZha2JsOVFnOHE3WS9iMHo3TXlTQlJGeFQ4aUVHeTlNZUg2Q3U3S2huUnovZkpHV1QzdXVBdHdWdEg1NzJlUFh2UXMyb0ZrR0owWkpqalgrM2QxYkxYNjEvdlcvcjJtMk1wejFlVkxWYS80b0l4RGpac2JZL3RmMHAza0JMWWFudGIyMS9hL3RidEpxUmFOOWpQTzN4bExXSHhXZjJLSkpqYlg5cisvc1dhSCsxbytsNzdiR2dvaUNuczlNU2E4VldTempQTzNOTFRxb0dHVUFSbmRiZXhrVWtjdVBoVzZ2cVg0TWw4YXJ4MXdLa2hVd1ArdG9EdkxLMFJabnFGaTlHSWtlUEdsSTUxUExuZ3BMUld2OXErMVBiWDkrcW9HN1U5bGRiQ0cxZVl4dXJ6V2lPVEdwdG8weDFhL3Zyb2hNam9rY05uQnpxL2NjRkphUDEvbFB2UC9YKzg4NisvOFFSVGIxWHhCdUdvV2dIZU8yNVRSaUlJUitTWmltSXlQZkhqdGljRHNWYlZVZkI1KzdIaXl3RjBkWHZpTUVZMGtQMXoxQWdiUFgzUnhUR0t4VmxxaUM2MlR0aUxYcDZxT1ZQd3FWVkVXR3I1YTliZUFad2lqSlZFTjBNSGJFV1BUM1U4b2RpMXdsUU40WnRUcEdsSU5xYW5WZXBrVkh2UDRoOExYK0l3bXVVbjI2SmFwV3AxOGpmRVlOUnkxOHRmN1grMWZhSFRRRWFtVGZ3K1d0SWxtaGljTjBsYlhVUzdacWt4UFpTS0VWNmdKQldSZHhJUTViM3ZxT1Z6aEprc3hpelFnOUp6bkNBaThnZUlJeVpOVy8xWCtOZnl4OXJlcW92VXFsOHFZalZoVEpRd0pGcS9hdnRUMUVNdEZUZ0VFdExLak8rNkpoR1ZLcnRyNjlwREZTdGZ6NHFzY2d3TnFDQUk5WDJwN1kvUlRIUVVvRkRMQzJwelBpaVl4cFJxYlkvdnFZeFVMWDk4VkdKUllheEFRVWNxYlkvLzI3N0l5T2F3eEpOOXlhUno2SXh3bnIwb1hmczhVYUwvTzYzaXdhaVZJK0ZZalkvZ0owVlhnTXI4b05Bc3V1TVVqMFdpbEVOeHdIc3JQQWFXSkVmQkZMMUgrUGdieFZGb0pKWXdBQjJWbmdOck1oZjR4K2pWY3RmS2pXeGRPaXhLQ2k1VUExZ1o0WFh3SXI4SUpCcS9HTWNhdjNYd3FCbHBDZ29LVHdDQnJDendtdGdSWDRRU0xYOHhUalU4cWVGUWN0SVVWQlNlQVFNWUdlRjE4Q0svQ0NRYXZtTGNhamxUd3VEbHBHaW9LVHdDQmpBemdxdmdSWDVRU0RWOGhmajhHYVZQeG5RaktFdmZvMTBEZ1JjdkM4NmZXdUxxZFlIczltK3R5Y3VSMVoweklSVy8xSXhwR2JVK05meUo4WEEyc2h1VGVsd2NyV3E5YS83OXRLRkt3ZktNUk5hMjUvYS90VDJ0OTUvNnYyMzNuL3IvYmMrZjNTZkVBWnk4bVBGLy9ielY4L1VXZjl3QmJ6L3NUWUhzQ2ZHRURMMVprKzVCUXpzdU9yREhZejBHaGozVzQ3cW45RWZFTDRhZncxTUxYKzEvZzE2Y0tqdFQybzdhdnViRzlPTXBSWTBNenhXN3o4NUdyM0ZwOTUvNnYxSENrYTkvOWI3YjczLzl2ZHczbUhQSHpaMVZ1OE1QWGZQa3BWdkVCcWRVcGh2TG40NFZyZ2R0WUxoQ0lmU1dNbEtGSm1FVkRZWUJSUVR0c1NKZEZLSFVyZGtKWXBNUWlvYmpBS0tDVnZpUkRxcFE2bGJzaEpGSmlHVkRVWUJ4WVF0Y1NLZDFLSFVMVm1KSXBPUXlnYWpnR0xDbGppUlR1cFE2cGFzUkpGSlNHV0RVVUF4WVV1Y1NDZDFLSFZMVnFMSUpLU3l3U2lnbUxBbFRxU1RPcFM2SlN0UlpCSlMyV0FVVUV6WUVpZlNTUjFLM1pLVktESUpxV3d3Q2lnbWJJa1Q2YVFPcFc3SlNoU1poRlEyR0FVVUU3YkVpWFJTaDFLM1pDV0tURUlxRzR3Q2lnbGI0a1E2cVVPcFc3SVNSU1lobFExR0FjV0VMWEVpbmRTaDFDMVppU0tUa01vR280Qml3cFk0a1U3cVVPcVdyRVNSU1VobGcxRkFNV0ZMbkVnbmRTaDFTMWFpeUNTa3NzRW9vSml3SlU2a2t6cVV1aVVyVVdRU1V0bGdGRkJNMkJJbjBra2RTdDJTbFNneUNhbHNNQW9vSm15SkUrbWtEcVZ1eVVvVW1ZUlVOaGdGRkJPMnhJbDBVb2RTdDJRbGlreENLaHVNQW9vSlcrSkVPcWxEcVZ1eUVrVW1JWlVOUmdIRmhDMXhJcDNVb2RRdFdZa2lrNURLQnFPQVlzS1dPSkZPNmxEcWxxeEVrVWxJWllOUlFERmhTNXhJSjNVb2RVdFdvc2drcExMQktLQ1lzQ1ZPcEpNNmxMb2xLMUZrRWxMWllCUlFUTmdTSjlKSkhVcmRrcFVvTWdtcGJEQUtLQ1pzaVJQcHBBNmxic2xLRkptRVZEWVlCUlFUdHNTSmRGS0hVcmRrSllwTVFpb2JqQUtLQ1Z2aVJEcXBRNmxic2hKRkppR1ZEVVlCeFlRdGNTS2QxS0hVTFZtSklwT1F5Z2FqZ0dLRnRobFF3YlVjdlVocHBxdENVMW5TNW1UYU1DS0VPWE1IaXlxREZidVNOaWZUaGhFaDdIak5qS2d5V0xFcmFYTXliUmdSd3V5dWcwV1Z3WXBkU1p1VGFjT0lFSGE4WmtaVUdhellsYlE1bVRhTUNHRjIxOEdpeW1ERnJxVE55YlJoUkFnN1hqTWpxZ3hXN0VyYW5Fd2JSb1F3dSt0Z1VXV3dZbGZTNW1UYU1DS0VIYStaRVZVR0szWWxiVTZtRFNOQ21OMTFzS2d5V0xFcmFYTXliUmdSd283WHpJZ3FneFc3a2pZbjA0WVJJY3p1T2xoVUdhellsYlE1bVRhTUNHSEhhMlpFbGNHS1hVbWJrMm5EaUJCbWR4MHNxZ3hXN0VyYW5Fd2JSb1N3NHpVem9zcGd4YTZremNtMFlVUUlzN3NPRmxVR0szWWxiVTZtRFNOQzJQR2FHVkZsc0dKWDB1WmsyakFpaE5sZEI0c3FneFc3a2pZbjA0WVJJZXg0ell5b01saXhLMmx6TW0wWUVjTHNyb05GbGNHS1hVbWJrMm5EaUJCMnZHWkdWQm1zMkpXME9aazJqQWhoZHRmQm9zcGd4YTZremNtMFlVUUlPMTR6STZvTVZ1eEsycHhNRzBhRU1MdnJZRkZsc0dKWDB1WmsyakFpaEIydm1SRlZCaXQySlcxT3BnMGpRcGpkZGJDb01saXhLMmx6TW0wWUVjS08xOHlJS29NVnU1STJKOU9HRVNITTdqcFlWQm1zMkpXME9aazJqQWhoeDJ0bVJKWEJpbDJKTEZxeU5acG1oMnFBU0pqN0lqam51RkljdVc3WWx3SkM1TzBta3lwaWxGTWtEeENwK3EveGw3SlF5NTlWQlZZNjFwUllUMGdSUm03N2FGSkZqSEpxNUFFaTFmcFg2NStVaFZyL3JDclUraGRiQnJZVUpWVnlveXdmVGFxSVVWbkI1ajlCaGxUYm45citTRm1vN1k5Vmhkcit4SmFoYkQxSUVVYWQ5dEdraWhqbDFNZ0RSS3J0enh2Ui9nekpwclBvYnFhQWFtUjdELzBhNUJLV1diSFBVUHdRYTJzaHJLaXozWWozbGY3ODNscS9Ccm1FUG9mNHFQNXIvUFVqMmJYOEZSdmhTSFdwOVMvZVFtcjdJMjFtYmY4UmhQTG0wYUlHM0dGU3ZnSFNlditwOTU5Ni81RTZVdSsvOWY2YlB5NkhlMjU5L3ZqZmV2N1FFYzNpTm1tRUlhMWJicGVrcHR4WDQrYW9DWm9tRll4UklvWFlDRU5LNVI2S210Vi9qYjl1RGlrRlF1L3ZMQ3NzSUtSYnNCQWJZVWhMdTB0U3M1YS9XdjVxK2NNTHZsci9hdnZqMmtrMmtJN2wwVUpzaENGZXRSZW5Kc3Nkb1NsVHdSZ2xVb2lOTUtSVTdxR29TYitFcGtvRlk1UklJVGJDa0ZLNWg2SW0vUkthS2hXTVVTS0YyQWhEU3VVZWlwcjBTMmlxVkRCR2lSUmlJd3dwbFhzb2F0SXZvYWxTd1JnbFVvaU5NS1JVN3FHb1NiK0Vwa29GWTVSSUlUYkNrRks1aDZJbS9SS2FLaFdNVVNLRjJBaERTdVVlaXByMFMyaXFWREJHaVJSaUl3d3BsWHNvYXRJdm9hbFN3UmdsVW9pTk1LUlU3cUdvU2IrRXBrb0ZZNVJJSVRiQ2tGSzVoNkltL1JLYUtoV01VU0tGMkFoRFN1VWVpcHIwUzJpcW90Q1pPaHN6TVd0VUxYZ2RLMlp1QUpKdEtTWUhlNXZSazZQd2xlUUZyL3B2UGNYMUJMRmd4ZWlCcFpnY2F2d2xoRVdNTWxHVXRjUXVlTFg4MWZKWDlDSnkyZW5IWXVtQlRERTUxUHBYNjE5dGY4WlZXM0tkc1hvVGE0OVVIcEhWK3RjZnZGNXVqcVZpY3FqdFQyMS9hdnZUVzFsU0s1UHJURzEvMG5QTHY5bit0anFhTHNDR0dxSy9qS2ZZNWl2UEN6cS80VGlGVHR2cEdXcEk5UzhSOE5HbzhZL1BIQm9USHhoWG9pSTZUcUhUZG5xR0dxSjZucXJ4ci9IWEVVd3BHZU9lZmVwTGpTdHVIZFRwR1dwSUxYOFNBUitOV3Y5cS9hdjFMOVVKWHpIRzFhNTBaSjdoakJocWlDcDZxdGEvV3Y5cS9hdjFUOXNFM3pENEppVzFHcTJPWnV0R0xrcUQzbnhRYzV6Mm5jT29sN1VWeTZScGVwYkhUY0dRS0IyM2ppbDMzbFJvdnA3TW51WHhiSWxZbEk1Ymg3cmRhR20rbnN5ZTVmRnNpVmlVamx1SHV0Vi9PMXBLOXdUUHN6eWVJMGtzU3NldFE5MGEvM2EwbE80Sm5tZDVQRWVTV0pTT1c0ZTZOZjd0YUNuZEV6elA4bmlPSkxFb0hiY09kV3Y4MjlGU3VpZDRudVh4SEVsaVVUcHVIZXJXK0xlanBYUlA4RHpMNHptU3hLSjAzRHJVcmZGdlIwdnBudUI1bHNkekpJbEY2YmgxcUZ2ajM0NlcwajNCOHl5UDUwZ1NpOUp4NjFDM3hyOGRMYVY3Z3VkWkhzK1JKQmFsNDlhaDduOC8vdGJSSEh6Q1hNanROQXcxSkYrUllvUDRFRkpHR0xPV1ZPUlJFaGRTT3cxRERmRVpCQi9FaHhwbGhERnJTVVVlSmRVL0ZuSzdDQmxxaUErWTRJUDRVS09NTUdZdHFjaWpwTWEveHIrV1AxZERERFhFVnhqQkIvR2hSaGxoekZwU2tVZEpyWCsxL3RYNjUycUlvWWI0Q2lQNElEN1VLQ09NV1VzcThpaXA5YS9XdjFyL1hBMHgxQkJmWVFRZnhJY2FaWVF4YTBsRkhpVzEvdjM3OVU4Nm1zTVNZemR1YVJFM3hFZTl3RXNOZGtpVFNpRVVJaTBNNEhTTGJLaFF6T1hBQ2tUV2JHTmx6dW8vVm9nYWY0MUFVVGhxK2F2MVQ5bzQrVi9ibnpqZEs3ZWxSVVdwN2ErRnc1QWNxaFpXYXRUN1Q3My80SUVzcGFKd0NGR2ZmMnI3Vys4LzlmNHJUVUc1eEx4b0tONng5MThiMFhSWHFDMWx2bTFtakcyb3dWYU15Ryt6U1Vmb2o4d0JTSzNJeTE0ejVyVVZMN09ZdU0wbUhhRS9XaFpCcUJWNTJXdkd2TGJpWlJZVHQ5bWtJL1JIeXlJSXRTSXZlODJZMTFhOHpHTGlOcHQwaFA1b1dRU2hWdVJscnhuejJvcVhXVXpjWnBPTzBCOHRpeURVaXJ6c05XTmVXL0V5aTRuYmJOSVIrcU5sRVlSYWtaZTlac3hySzE1bU1YR2JUVHBDZjdRc2dsQXI4ckxYakhsdHhjc3NKbTZ6U1Vmb2o1WkZFR3BGWHZhYU1hK3RlSm5GeEcwMjZRajkwYklJUXEzSXkxNHo1clVWTDdPWXVNMG1IYUUvV2haQnFCVjUyV3ZHdkxiaVpSWVR0OW1rSS9SSHl5SUl0U0l2ZTgyWTExYTh6R0xpTnB0MGhQNW9XUVNoVnVSbHJ4bnoyb3FYV1V6Y1pwT08wQjh0aXlEVWlyenNOV05lVy9FeWk0bmJiTklSK3FObEVZUmFrWmU5WnN4cksxNW1NWEdiVFRwQ2Y3UXNnbEFyOHJMWGpIbHR4Y3NzSm02elNVZm9qNVpGRUdwRlh2YWFNYSt0ZUpuRnhHMDI2UWo5MGJJSVFxM0l5MTR6NXJVVkw3T1l1TTBtSGFFL1doWkJxQlY1Mld2R3ZMYmlaUllUdDlta0kvUkh5eUlJdFNJdmU4MlkxMWE4ekdMaU5wdDBoUDVvV1FTaFZ1UmxyeG56Mm9xWFdVemNacE9PMEI4dGl5RFVpcnpzTldOZVcvRXlpNG5iYk5JUitxTmxFWVJha1plOVpzeHJLMTVtTVhHYlRUcENmN1FzZ2xBcjhyTFhqSGx0eGNzc0ptNnpTVWZvajVaRkVHcEZYdmFhTWErdGVKbkZ4RzAyNlFqOTBiSUlRcTNJeTE0ejVyVVZMN09ZdU0wbUhhRS9XaFpCcUJWNTJXdkd2TGJpWlJZVHQ5bWtJL1JIeXlJSXRTSXZlODJZMTFhOHpHTGlOcHQwaFA1b1dRU2hWdVJscnhuejJvcVhXVXpjWmlzdDM1ckU1eWJqWjBuRW1iMlRjOW9SZFVjbjB4TlVHcTlyeEplOTBvTmZZWXhyaTdOMGF0Vi9qWDljVkY3TFg2MS9xUUZ4YlVsRTNkSEphdnNqd2RCNDFQYTMzbi9xL2JjK2Y2U0hLZ1ZvRzZSZEtKN0p2RHppOWZtclBuL1Y1eS9jUnV2ejUzL3ErZE9OYUxZYW9PSmhEakxQU0QrSloxbDI5M09aM0pCa3h0R1dyNFYwVkR5ait0Y3E0VU5pNGF2eHQrYkM0bU5JTFg4YUNoY1BLemN0cEtQaUdiWCsxZm9udHlSZkpLejQxUGFudGovcGNjWEtoeUcxL2RWUXVIaFl2V2toSFJYUHFPMXZiWDlyKzF2dlA5Sm1kRjRpdlRYdnY2NmpHUnV5c2psTDErR1oyaDQ2aHFLUnhoRXBYM3ZXSTBZWU5mMHhTcnpjY0VPbzd4aUtSaHBIcE9vL3hzRy9IR0RFQ0ttUllZNGg0MmU2aGxEYk1SU05OSTVJekYvOTV6Z1JJNHlSOHNjbzhYTEREYUcrWXlnYWFSeVJhdnhqSEdyNXkrV0VHQ0VqbEdHVWVMbmhobERiTVJTTk5JNUl0ZnpGT05UeWw4c0pNVUpHS01NbzhYTEREYUcyWXlnYWFSeVJhdm1MY2FqbEw1Y1RZb1NNVUlaUjR1V0dHMEp0eDFBMDBqZ2kxZklYNDFETFh5NG54QWdab1F5anhNc05ONFRhanFGb3BIRkVlaXVXUCsxbzJta2JFay9Zcjl3MWtTRkpoNkRONzZYSlRMQUV2bHhHcTV6VElSUnpab1NPRXpTRmNkRlVLaDJUMjdGZC9VdXBqY1YyWUl6NE01aENqYjlHb0RjZVpDWllBbGZJR1VOUnFQRXZ3OGtRcGhBWmFQTjdhVElUTEVHTlA4UERvTmIycjlhLzJ2N1U5a2NpWUUyRElXd2tFbXp6ZTJreUV5eUJjMEtib2xETG53YURrY3MvUkkxL0VRRUxFTXVPd056alNtV0xTZ21Xb0pZL2hvZUJmUVB2LzNsRTB4bWxIMEQ2SnZReTRsbVdNY29JVmRJUk8wYjFiNDBxWXdiSUNCRjZHZkVzeXhobGhDcnBpQjJqeHIvR1A5M1VXV1lBV1VJSXZZeDRsbVdNTWtLVmRNU09VY3RmTFgrMS9MRzZHR1FOSVRTQlE3SXNZMDZzcUVvNllzZW85YS9XdjFyLzJ0V20zdjhrSXVpdnVaWmlZSXpHcFZYYkg0bGpKNGlPOFE1dmYzTkgweGNmZC8zS2J0T20yeFYwT2FhY0VWRnFKT3EyOERSTEl0WTIwcVpOdnl2b2NrdzVJNkpVL2RmNDEvTG5YL25sNnRHNXF3eXNWRjFCbCtQc0VxMzFyN1kvdGYydjk3OWl5SUdOZzhCMkk5S21UYlVyNkhKTU9TT2lWTy8vOWY1ZjcvLzEvcDhiQlllMUc1RTJiYXBkUVpkanloa1JwZisxOXFmc2FHb0E0aHNNamNxQVhyWkZ6RVUxb280QkpaSUtjUUFyTDJLbVdBVlJLRDlBOVcvVnY4WmZDb05GdzRxSklhNEFSZFF4VW5uU1p4bGw0MURMWDYxL3RmM2htOVZXYmRIMnVyYS85ZjVqTFc2OS85VDdUNzMvNm5ORDc4RTFvQkYxalBpd0VSc1RaZU5RbnovcTg4Zi81dk5IN0dpMjZvZXZJMW83ck1lb05jWGRpYU4weEVmNkpYU0dTcGFqSE9yVVI0YlNGcUd6VXJJYzVWQ25QaktVdGdpZGxaTGxLSWM2OVpHaHRFWG9ySlFzUnpuVXFZOE1wUzFDWjZWa09jcWhUbjFrS0cwUk9pc2x5MUVPZGVvalEybUwwRmtwV1k1eXFGTWZHVXBiaE01S3lYS1VRNTM2eUZEYUluUldTcGFqSE9yVVI0YlNGcUd6VXJJYzVWQ25QaktVdGdpZGxaTGxLSWM2OVpHaHRFWG9ySlFzUnpuVXFZOE1wUzFDWjZWa09jcWhUbjFrS0cwUk9pc2x5MUVPZGVvalEybUwwRmtwV1k1eXFGTWZHVXBiaE01S3lYS1VRNTM2eUZEYUluUldTcGFqSE9yVVI0YlNGcUd6VXJJYzVWQ25QaktVdGdpZGxaTGxLSWM2OVpHaHRFWG9ySlFzUnpuVXFZOE1wUzFDWjZWa09jcWhUbjFrS0cwUk9pc2x5MUVPZGVvalEybUwwRmtwV1k1eXFGTWZHVXBiaE01S3lYS1VRNTM2eUZEYUluUldTcGFqSE9yVVI0YlNGcUd6VXJJYzVWQ25QaktVdGdpZGxaTGxLSWM2OVpHaHRFWG9ySlFzUnpuVXFiOG1XbzVvbW5xUHRSNldxaXZmQ1EwMXhMcXBtYU12endkTm5CR3pYak9kVkErcittZW9YSEFNTmNTaW1UbTlFVTZCQnZDYWlkM0RVb255bmRCUVE4eGE1dlI2U0k0QXZHWmk5N0JVb253bk5OUVFzNVk1dlI2U0l3Q3ZtZGc5TEpVbzN3a05OY1NzWlU2dmgrUUl3R3NtZGc5TEpjcDNRa01OTVd1WjArc2hPUUx3bW9uZHcxS0o4cDNRVUVQTVd1YjBla2lPQUx4bVl2ZXdWS0o4SnpUVUVMT1dPYjBla2lNQXI1bllQU3lWS044SkRUWEVyR1ZPcjRma0NNQnJKbllQU3lYS2QwSkREVEZybWRQcklUa0M4SnFKM2NOU2lmS2QwRkJEekZybTlIcElqZ0M4Wm1MM3NGU2lmQ2MwMUJDemxqbTlIcElqQUsrWjJEMHNsU2pmQ1EwMXhLeGxUcStINUFqQWF5WjJEMHNseW5kQ1F3MHhhNW5UNnlFNUF2Q2FpZDNEVW9ueW5kQlFROHhhNXZSNlNJNEF2R1ppOTdCVW9ud25OTlFRczVZNXZSNlNJd0N2bWRnOUxKVW8zd2tOTmNTc1pVNnZoK1FJd0dzbWRnOUxKY3AzUWtNTk1XdVowK3NoT1FMd21vbmR3MUtKOHAzUVVFUE1XdWIwZWtpT0FMeG1ZdmV3VktKOEp6VFVFTE9XT2IwZWtpTUFyNW5ZUFN5VktOOEpEVFhFckdWT3I0ZmtDTUJySm5ZUFN5WEtkMEpERFRGcm1kUHJJVGtDOEpxSjNjTlNpZktkMEZCRHpGcm05SHBJamdDOFptTDNzRlNpZkNjMDFCQ3psam05SHBJakFLK1oyRDBzbFNqZkNRMDF4S3hsVHErSDVBakFheVoyRDBzbHluZENRdzB4YTVuVDZ5RTVBdkNhaWQzRFVvbnluZEJRUTZLMXBobHVHcGt2eFJrU1dad2NPTGRlUnB3d2E3Y3hyK0Z4NnNsM1g2ci9HdjgwWDZ1L2hMZ1pLS25ZVUkrUXBha0x2WWJIcVZuTFg2MS90ZjJyN1g5c0QvcGJpTnIrb0huMnNTRk95TmEwQzcyR3g2bFoyOS9hL3RiMnQ3YS9zVDNvYnlGcSsvdDJiMy9kaUdiNmlSWDRuOXZ6VVJpOGpEZUw4WWVXVzVCaVBSRHRxb0pwWlgvR01tVDhuVHBOeXkxSTllOW5RYWZJS0xBbzFmZ1g1UklGeWNmR0ZhenhSQzIzSUxYODFmSm42K0ZZcnJTQVdDbko1YzFZaG94bmlTdlZMTGNndGZ6VjhsZkxIK3RIcWhrS3JKYlUrbGUwUzRpVmp3MWpOLzdRY2d0UzI1L2EvdFQyaDNVbjFRd0ZWa3R5ZlRPV0ljejR1cURsRnVUTnJIK3VvMW1lcjUwUTJhMFQ4L3NFUkYyWGc2aENlV09KRFlCb1J5RVZDbVpCZERTRTRRTlQvVXNqbFlJYVkrVWlSbFJoalg4dGY3WCsxZmJITjY5c0lEeXZ4RHNhd3FqdGIzNHdyUGVmZXYrcDk5L1lac1Myd3JVWVJCWFc1NC82L0ZHZlAvN25uejlrM2l5YUEra010cXFEdjVPV3p5QktkZlFMbmFLbHlaSU9tNHpxdnhQUEd2LzhKSk5Ma0dHZGVKa0VDTXNWWVJLU0pEUzlXdjQ2OGF6bHI1WS9Qa2tYZFNzU25mSlM2TENDRWRiNnB4RmdPQWhyK3lOaGlZOWduZkpVMjUvYS90VDJwMmhWUGRHcEwxNW83WW8xTkZGS2t0RDA2dk5QSjU2MS9YbEQyNThoTE5Gc0RUZTY0aWNGRU9KVTRhMThGb1c2TE1NbWFpbTNTRlZUWG8vQXM2ci9HdjlhL3Znd3hzY3lxMldHK0RxVEs1ZUppenBOYnExL0VzOU80UEpyQ3NTcHRqKzEvYW50VDIxL3RDMlFRemt5QVc1TW5XYWt4V2lSbWtsNVBRTFBxdTFQYlg5cSsxUGJIelFZdmwySXJVNCtkbVF0Um92VWpNcnJFWGpXRzlYK3RLYk9laGM0RjA5N1BGMWdENHQ1b2tpT2ZyNVZ5aVpQYndONnkyMkRudlo0OWE4UjZBbEpqWDhNaWgxcitlcytIZFg2Vjl1ZjN0R0Nkb1BpYVkvWDlyZTJ2eEtCbmlKQlpoVEpzYmEvdGYxdDk4N3IvYWZlZityOUo5MUVQV2czcUo3MmVNclR3M3FydHIvYTBmUzkxbmlpdUpEVU91akZ4Q3ZDRVludFJ1YVduS2psanBwUkRyMkZTenk2VWRQcXZ4VmxEYkllOUw1ZTQxL0xYMW5iWXRtSXRjM2p0ZjVaQkJBVzFKN2EvbGhJUEZMYjN6eHFVdTgvV2xta2VOVDd2OVlSYlZMMVVPKy9xZEdvOTU4WWlGd3F5b2lrTUdXZ1ZVb085ZjZUWStLd2V2OTU1OTkvNG9pbTFoaFhiYlJpU0VsZy9YR0ZZaEJhWkNtSWJvNk9HSXcwaDgxUVpIdWIrRC8vNytlSHorNjBZMWh1dWVYQ3R0dHNFMVpmYlkwd3dRUnk4Z1BPLzUxMi9maXBpbXNxQ0VqTDFCR0Q4VGIrL1hGMXhUVVZSSG50SFYweTZ2VkxKSVkwamhvS3hHVkEvWUdvbllxUUYwUmJzL1ZiUVF6OUduOEVJWWNDY2FueFJ4VEdLeFZGcmlDNjJUdmk4U2gvenovM2ZQamNicDhMYTY2NVp0aDAwMDA3Umd1YkJkRlJMZHNxRVIvMjA4UENJWWYrT0p4MjZ1L0RZb3N2SHFzQ3N0WGZ2eHU4QVp3aTVBWFJ6ZEFSZy9FLzJ2NE1EVTBnRnk4cjVKcGhCS0cyUHl3S0F0K00ramRxMUdyaGdndk9EMWRlZFVWWWJ0bmwvNjM0RHc4UGh5TU9QendjYy9TeDRhbW5uZ3pUempCdE9Qd1hoNGZWMTFnOVBQcklvK0dpaXk0S0s2MjBVcWY5eVU3Zi9OOS9xYVdXRHRkZSs4OXc2MjIzaEFVWFdDaWZ5cHNVZjdqSlR0Lzg2Myt6L0EvRnIyaXF1M1RRVnMvaFFPV09rOWhlQ2tta0J3aWhnQ1RpUmhyU3ZQY1VyWFNXNEVabHEySFFRM3ByKzE5dDFLcFNXUytNcHlySHVlZWVPMnk5MVZaaHEyMjJsc0s3NER2KytsUDFZR0d3T0JqeUR2Lzk2L1duK3N4cWJUOThRdXJ2LzQ1dS8ycjUvOCtXZjh3MDNHWG5YY0xQZi9IenNNZGVlNFVmL2VBSFZzT2k1NUg1Zi9XVmw4TUVFMDBjZm5iWVlXSFh6MzB1M0hQMzNXR09PV1lQcjd6eWFwaG9vb25FQit3aXZiWHZ2N1g4amV6M3grL3JuOHJpYjUxc0tmR2YvLzFqUjFQT0JJWGNmUElOQjNtMS9HbFZ6R0ZJc2VJalYvck5FakFoRWVFUGV2NWVWVHFhRjE1d2dYUTByNUtPNXJLU3d4c0JqcFFkZXlra2tZN0hMKzM5cGZEOUgzd2Y3SmdrMjNYL3VpNnNKajRlZlZ3Nm1oZkdqaVp6QWY2M3k5K1MwdEg4MTdYWFNrZnpObmxXWDBETzIxOGhjS1R4dS80aWE4d1lqMkptVVB6LzI5Zi9adm1YRWMxaENVTnFxbjJNWGFBR3NKM0d1TkVpUHdnaytlMWlpbEk5Rm9xVWx6OTk1bzQvVnBnRmdmUUcraDgxYXBSVzFzOTg1clBod29zdUREZmVlR1AwSWNkVlZsNVpPcHpiaEU5KzRoTmhxcW1taWhmekJ2czNad09RLy9UMUQzQnI3T3EvVmR3UW1UZXcvRm1nQnlBMS9xMXcxL2kzQWxMYmY2MGpSVVhKbFdrQU95dThCbGJrQjRFMG52WC81VmRlQ1R2c3NFTTQvdGhqTmM4ZWUrd1pmdmpESDZxSjhUMzArYi8zdm52RGtrc3VHVDcrOFkybGN6bG4rTkZCQjRYampqazJIUGF6dzhJenp6d1RMcm5rRWpOZjVEZnUrQ05GL3RkNS9mQlM1QjkvdDZaWjVLLytZMXpHcy94QnVZaWZSWFg4a1NKL0svN2M2RWIzcEN3VXMvMEI3S3p3R2xpUnYrV2ZWNmM2aFdJMk9vQ2RGVjRESy9LRFFIcUx4SDlVR2lTNTRzb3J3L0xMTHVmT0s1NG1qc1g1WjNZSFcyRCtCY0tZc1dQQzUrU2wxZjc3N3k4dnJGNEpNODR3UTFoanJiWENrMDg4RVk2Vk5teXBKWmVLK2Q0aTE3L1VVa3ZLaU9hL3dpMjMzaG9Xd3FDUW5WZSt2UEc5L3B5anhJcjhiN0hmbjcrdW5tTnhvdmthQnJDendtdGcwVFpmSlkzTEdoZHZpMDdmMnY1eCtjbG0rOTVldUp4WjBURVQraGIzajQ0bVJqU3Z1dXJLc013eXk0U3Jycms2SEh2ME1lSGtrMDhPanovK3VGekVVSmhpOHNuQ1JwdDhQR3k3OVRaaHRkVldrNm0xbURMaTB0djQrdDFWZE5COFdlL2MzNzl6MFk1UnI1OXRkLzM5dTI4UGV3dUtZeWIwTGQ3K2RVODRjMnI1SDNuNXYvK0JCOEpXVzJ3UnpqN25IQXZvSG52dUdYNzBPanFhZytKLzZhV1hocjFrZFBRcUdjbDQrYVdYOUdFU1RpYWJkREtkNnZiYjMvNDJURG5sbE5GdkxYL3lJOG9UcUFTelB2K3dQRnVSSENjeXFQd3hFenFhZUxZZmp1TWRaSmV3bHIvL1dQbmpJTWtWVjF3WmxsdGVPcHA5YVR6alA4VVVVNFRubjM4K1hIL0Q5V0h4eFJaWFM2LzErNXU3ckdnc1E4YlR2K2s3Skp2dGYvNVlhcW1sZEVUemxsdHVEUXN1SkIzTnZ2UWY5Ry91OG9rYXk1QjNnUCtlcWJQcDh2VGlnUGQwOFlVN3JyallYV3RnOXBSYndNQ0crMjNrUDNZMEx3aFhYWGxWV0hZNW1YNkF5NVAwNGdzdmhqUCtlTHE4eVRrK25Qblh2NFJYWlE0NzB0enp6Q1ZUYTdlUnY2M0QvQXN1MEIvaHQ5SDE2MFg1UTdwK1pmVVduM2ZXNys4dlhmRjYvVGtrOWZmUHNUQ3Nsbis5cjBnWTNnbnR2LzJzUk42QStuL29UMzRTdnZ5Vkw0Zm5aRzNtNHJKdWN1NjU1Z3AvK2V0Znc1N1MwY1NJWmlwQjlGakMxK0gvZGhtQndDakRjODg5RzlaYWU2MXcydTlPRFZPZ2cvazY3ejhZQmIzampqdjBQT2FkWjk3d3JuZTlLNTdUYTlUL1J4OS9MTngzNzMxaGtra21EZ3ZJdlhDaUNURmxWOUlBLzg4Ly8wSzRRODc1RmJtWHpqWG5uR0hhYWFlTit2NzRPcTcvN252dkNZODkrbGlZWW9ySjFmOEV1bVp3c0grNGVmaWhoOExEano0YTVwMW5Ic2szaGZjYzhYSDRmMEJlSGp6NDBBTmhodWxuREhQS1NMSXYvMDgvODNTNDY0NDd3NlNUVGhvV2tHbDhROWpub2YvcFFILy91Kys2S3p3aEw3THhlODAvLy96NTVmVTQvTjkzMzMzaHFhZWZsSE9mVDE4cWVQODQrVHZ2dkZOSG42YWZmdm93NTF4emp0Ti83MDhMSThuL0MvSmIzWGI3clVJT2hZWGt0NTFzOHNraGxRUUZ5UzJBMXhqWGFLb3dIdEx2LzZqOE5valpxekk2TnZVMDA0UjVwR3lsUG45dlpGQU94NDRacXpabW5YVzJNTlBNTXpxalJMUC9CeDU2TUR6NHdJTmg0b2tuQ3ZQTU8wK1ljZ3IvY2dYNi9WZVpMTkNnUXBTakJ4NThRRjdjdkJ5bWtYTkZQUWl0OFlTWUlmdC8rbG1wTjJQdkNMUE9Pa3VZYWFhWnNyMTAvVTg4OFdTNDU1NTd3b1F5TURIdmZQT0Z5Vk1NKy94YlpnaVozT20vSkMrVWJoazlPa3c4NmNTNkhuSENDU1lNcTY2RzJYZ1hoaXV2bERXYXNzZUlwZVFmQVBYNjZhZWVDdE5JWFp0SHlqeFNuMy9VM1ZlSFh3M1hYeWNkVFdtek5Ebi9rWUZqeWkyQTVlKzU1NTRMZDl4NWg3eHhhTFFzVHpiWlpDbjB2UWJDSzYrK0dtNlg2YTR2dnZCQ21HWFdXY01zczh4U21pZmxzcjhndXJmZWNrdVliSXJKd2dMekx4aFExNWRjR2gzTmY0VmJiNVUxbWd1NmptYTYvdGZ6KzlPbFhoNEo1NStzdnV2UHNvUzkwL3hqNnF3bGg1SlhzaEpGSmlHVkRVWUJ4WVF0Y1NLZDFLSFVMVm1KSXBPUXlnYWpnR0xDbGppUlR1cFE2cGFzUkpHWjRLcXJyb3FhMDhqYjRjS21WNU1HdnZuQkQzN1lMTGJZWXFLTEJhdTYrcjlaWmRXVm02T09PcXA1NnFtbmlwL2k5ZmluYm9iUnMvZWZaWUpSb0V4SE9KVDZKU3RSWkJKU1dlQ1ZWMTdaekRqajlNMEtLNnhnYmpwcUJjTVJEcVhKa3BVb01nbXBiREFLS0Nac2lSUHBwQTZsYnNsS2xBQmMzd3pUejlCY2NjVVZWSFV3NmpFdm9Ta1VERWM0bExvbEsxRmtFbEpaSU1xaDNJaVZRekdocVJVTVJ6aVV1aVVyVVdRU1V0bGdGRkJNMkJJbjBra2RTdDJTbFNneUNhbWM0TjEzMzltTUhUdjJEU2wvOG5Lb09mK0NDNHB6ZmZxcHB6WE9pUFdMTDc3WThnNHluaGhQajlBVUM0WWpIRXJka3BVb01nbXBiREFLS0Nac2lSUHBwQTZsYnNsS0ZKbUVWRFlZQlJRVHRzU0pkRktIVXJka0pZcE1RaW9iakFLS0NWdmlSRHFwUTZsYnNoSkZKaUdWRFVZQnhZUXRjU0tkMUtIcnJ2dmg1bDN2bXJMNTVyZSsxY2dEVXJQOURqdG9tZHRyejcxWXZESTB3MFNpSVpvanBKUVZRMFlmbXVWWFdLNlJQUVdhbzQ4K1d1M0RqMDlsM2tTUktmRGFhNjl0UHY3eGp6ZnlBR3gxWXFxcHBteDIybW1uNXE2NzcxSlRWQWNoRCtETkV1OTVieU9qdGMydXUrN2FURExweEpadnhobG1iQTQ1NUpCR05oV3hVeUIyMy8zM04zdnN1VWN6L1hUVG0vNmtrMHphYkxYVlZzMU5OOTFrK2hHSnVaaVgwSlNFY2NydmZ0ZTg3MzN2UXgvSTdFbkhvUG4yZDc3VElDNU15SHZOUC82aE9ydnNzblB6eTEvOHNvRmYxSDJjcnp5RVU5WEI2QkhIV1dhZXVWbHdvWVVhNlN3MEcyMjBjZklWNy8rNGg5eDQwdzJOZEFDYUgvLzR4ODIwMDB4cjU3THd3dTl1emp2dlhQNVV5WGEwZThwdlQ5SDdEODZCZjlJQmFQYmJiNy9tNmFlZkZ0M3MvOXh6emxFZHlMNzN2ZTgzRTA0NG9kQkR6ZXh6ek5FODhzZ2pxb3Q0SDNmY2NjMXl5eTVuOXFBajB5cWJNLzd3aCtRYklOb2xNT2cwZ040azE3VEJCaHMwRTAwOE1mb1JhbE5HeDV0UGYzcjc1c2tubnpRejBHWDhnZE1lenVlRVg1M1lyTGppQit3NWlkYzUxNXh6TmJKNVZTd2o2WFNROVg0cEg1LzR4Q2YwK25EL28vNG9lVFk3N2ZlL2gwcE9rdSt5eXk5dmxsOStlZk1QZlJuTmJ6NzVxVTgxMTExM25lazZGOExydi83Zi9PWTN6U3FyckNMMzNmaE1SLytJOFU4UFBiVEJQY1NuZDAwNWxWN1hOZGRjMDh3NjJ5eDZyc2o3UTNrK1pMcisraHVhTGJmY29wbDRra25zV3FhYmJ0cG16ejMyYkI1KzZPR29WcHBsVm9GUlFQRXp6ejdiN0xMTEx0S2VpRi85UFlhYXVhVE9uM0xLS2MycW8xWlJIcDdiZUhrdzlPcXJ3L0pjZW1TejVGSkxtWC9rWFhhWlpadWpqanlxaVAvcXE2OWU2UEQ2djdyUFBucE8wODh3ZzhvdnV1aGlwZUZuOHkyMlVONHR0NDV1ZnZTakg4a3o0NHhtUTVhWU5WL2MrMHZOSzYrODdFOUo4ZzQzOHZLaU9lQTdCMmlieGQ4WXNWdDMzWFdiODg4L1A5cFB1WGo5anp6NmFMUHR0dHRLR3pWRjhqSFVMTERnZ3MyZi8veG51YjczS3UvV1cyOHRyajhaNnZoWFBnMFRVdGxnRkZCTTJCSW4wa2tkU3QyU2xTZ3lDYWxzTUFvb0pteUpFK21rRHFWdXlVb1VtWVJVTmhnRkZBUEtDNFNVaUJDUzN3T2p5bURGcnFUTnliUmhSQWg3L0pJVlZRWXJkaVZ0VHFZTkkwSklaejB3cW1URmRrY3pTNWc1YzlDSXl0dWpadWVkZDI2bW0yNDZLZVN4Y1pwQ0tzR1dXMjNabkhQMk9WTEpYMlhHWHRqMjMxYkszaWhwY3pKdEdCRkNadTJCVWFWZlVhWmthY1ZkYU9HRlhNNjJicVlOSTBMb2NyZlJxREpZc1N0cGN6SnRHQkhDdGxOSFEyV2hoUmJVbTlTbEYxL3FKQkh0bW1oek1tMFlFY0tPMWN5SUt2MktiSHl6TnJDMmJxWU5JMEpZR2lpb3FESllzU3RwY3pKdEdCSEN3bU5KUkpWK3haLy8vT2VOdk9GdnpqenJUSmVwclp0cHc0Z1FTdTVISG42NFdXdnRkWnBGM3IySXM5VTBUOG5Ebk1aWkhtaGVldkdsUWdiQ21VaXlOaWZUaGhFaDdGak5qS2d5V0xFcmFYTXliUmdSd3V5dWcwV1Z3WXBkU1p1VGFjT0lFSGE4WmtaVUdhellsYlE1bVRhTUNHRjIxOEdpeW1ERnJxVE55YlJoUkJMOHZUd2NQeWlkTVNaWnA2bGxUcWJPdGg2anFKRWhUUTNtUkEzY2g2YWJib2JtK09PUGI0Ymx3WExEalRac0ZsMWswZVpaZVRBZFY0cTVoNXNMTHJ5Z21YTHlLZlc4WkVTdGtkSFdadmZkZDVlSDU5bTBiWlFSb2taR3lNUlVQaU4wTk9lZWU2NUdSZyswVTdET09oOXF0dDkrKytiZDByRmlwK1BFRTA4czNOOHBuVGwwaGxIbjVwMTMzbWIzUGZabzl0bm5xL0tRdUtSMFpJWWFQSmhlZHRsbGxpZDdJeXR6Y1AvOXpuZStIZXV2MkZ0NzdRODJYL25LVjVwTlA3V3BQTlRIVHU4NjY2eFR2RUQ2Witwb3lvNlpqU3g1MFE2VWpJQTIwMDAvWGZQS3k2L1FpY0hzcldsbWxvN21iTFBOcXRjckk1WE5KemI1aER6MGJtTVAxblBOTlk5MHdENnQxN0hPQjlkcHRwZk8ySHp6emFmbk40VjAzdSs5Ny81c1Y4NTl6NzMyVWhrZTVqZjR5QWJOVjcveTFXYWpqVGRPSGNqUWZPeGpIMnRlZmlVL1A1eVRPcHA4UnNFNVRENzVaQnBIeEVKKzlvWmxhM0s1cGkyMzJMS1I5WFhOSnoveHlXYWkxQ2xGNTlxbmVIMytLclAwK3V1dmI2YWFlbXI5TGVlZVorNW03NzMzYnI3NHhiMGFkSVR4K3kyeHhCTHk0aVIzNVBuOFkwVkV6TUkvZE9ILzR4S3ZMMy9wUzgzblAvLzU5SkkrZGlLUE9lWm9jL3JFRTArWWZYVGV2eXkvNXo1ZjI2ZFo5OFBycWgzWStzdGYvbUw2bDF4eWNTT2JYYWxzNDQwM2FmYmRkOTlHTnJKcEZuL1A0c3BER1gza1lYVEMrNU8vL29OK2VKRG1RUWNlTDF5K0pPZTZtNXlyMmtvZDNvTU8rbEZoQ0MrUWNFN2EwWlh5T3pYaUpmUlpmenRMcXdvNm9OTk1QWTEyMHBkYWVwbG1uNi91bzNWTFJ1MVVUM2FHYnA1NDR2SENwaWY4TDRPNnZPeXl5MmcrWEJkZUFIM2hDNS9YY29rTzJyVFR4aGMzVjE0aEhVMGt5WXh5c2VXV1c2ci9pU2FlcE5sNG80MzBOOWxzczgwc2J2aE5tYjcrOWE4M20yeXlpZnJBZGF3dDlXZVRUMnpTblB6cmsxVmxoaG1pajRzdXVqQmxHVzQyMzN4ejFWOTk5VFVWZnVEOUgyaDIrTXdPelZwcnJtVjJ2aWhsM1NkWjg2a2RTdmlZZXVxcFZILy8vZmFYZS9UYW1nZS82V21ubldaRkNYbnhNbVhSUlJkUitRelM0Wlgxby9LM3F6NTdRMy9xcWVQTG5WdHZrWTRta2c5ZTVIU08vdmZ2Q0h0TnRJMW0yakFpaEgyR0V5K3FERmJzU3RxY1RCdEdoUEFOOWgrSFBncWo5QVRvY0lkU25heElreUtrVmdsTnFvaFJUb2s4UUljN2xNcGtSWm9VSWJWS2FGSkZqSEpLNUFFNjNLRlVKbXRWZWZPSHdpODdkN2s4MUNvaDg4RDA4ODgvMS96Zi8vMWY4K0gxUHF3M01OakFHMERjVlBmZDkydk5iYmVsd2c5bFppVHNlS0tBc1BSTHlxU0tHRVd4c3dvWjVRSWRTbVd5SWgycGUrKzlSOTZjZnE4NTR2QWpxRlpBeTZPSVVVNkhQRUNITzVUS1pFV2FGQ0cxU21oU1JZeHlTdVFCT3R5aFVKWnR2SnZ2eW5YZWMvYzlLVzlMSVhIYmdGclJ0RkZPalR4QWh6dVV5bVJGT2xJb1EvZ2JsQ3lQSWtZNWRmSUFIZTVRS3BNVmFWS0UxQ3FoU1JVeHlpbVJCK2h3aDFLWnJFaEhhdVdWVjlMclArdE11V24zSk11amlGRk9rN3poNXZMTEwxTmI3Mzczd3NXcHZQalNpODMzNWJmSDd5ODdkS2E4T1o4ejFrR3A5Wi82L2ZPSmRsd3JvL3BQY2RGQVdEUmNzTWdEZExoRHFVeFdwRWtSVXF1RUpsWEVLS2RFSG1ER2Q5ZytkalF4b3NGRWFhUkpFVktyaENaVlpMaVJhWW5pSlhKbDJtSHpwRDNBZ2tkdGdRNkZSWm5LMk13NTExeFNQNGJrd2Y3TE92b1FQUTAzTWcydTRTakgwa3N2WFl4UXl2UkhuWEV4LzN6ek43ZmZmbHZNSWtlTTZtMjM3WFo2LzVNOURJU1QvYSt4Umh3eCtlUW5QOW04L0ZMdTJHR2s2S0FmeVlPK1BORFBOOSs4NlFVdFQ5Uk1GOGdsbDE2aS9tWGFZSE5XOFRLcWtmdnRiYzFzczhhSCthL0lOZkdpLy9HUGE3UWRRTHU2K21xck43THZnb2lHbXh0dXZOSFpwbC9DS0VKSEUvblEwUm85K2hZTDQraWJSOHRETzBZWFF6UHBaSlBLNk9WNXlWYU0zNUpMdmxkbEdHblc4eEN6Zi96akg1VTNtWFFVTDVlT3RmY2tuMmlRVGtOOGFKYXAxY2xXMDdDakNUOGYvZWhIbTZmbE54NGVmclc1NlVhTUFnODNHSTFEL1BBUVBucjA2T2hMYzhmMlQ2WUd5N1BKVUhQdFA2K05OcDFUaDFvK3RyOFlRY0p2eXZUWVk0ODFpeXdTSC9obGpYRUs3YkJlRC93empSMDd4anJOWjU3NTE4UVdUL0lmTCtDMzNHSXJQZDhQU21lRy9uOTd5bS9WRGw0RXZQeHk5b25NZVBHQmE1ZFBBcWt0NU5seHg4OHE3MnZTR2ZVSk13ZVdTNTJ5bzQ4K1NrVDBJTkNoelBPY2pIeFBPZVc3OUh6KzlLYy9KblpTRklBWXdQZW9VYU9ZUmMxTU5aWGtFZjVjYzgzWi9PdGYvMUlaWW8vcmUrbkZGNXJaWjU5ZDViLzR4Yyt6VGJHSGVyWEIraDlSZnp0TGg1R25GSlZJRVVidUY3LzRSYlcxOE1JTE53L0xpMU5LTVN2bmcvSmlBK2VCK091SXBtWVpibzQ1NWhqbHkzVGVORnRBY3FXTU4xeC9ZelBUekROcFBmMjdqU0FpNDdEOWJualo0QlBLRnZ6STUwMW9wdGw4czlqUm5GaEd2Zi95MS93U0FIWXd3Z2w5MUErdGE4Z2wvdzg2U09xNjhCZGRiTkhtZnBraG1FNUpYWjF4eHVrNm9qeVoxQ1hNSG1SQ200RThzaFpUUnRPZnNqeVBQL1o0dzdLSzY5Y1JUYzFFcTRBT2R5aHRreFZwVW9UVUtxRkpGVEhLS1pFSDZIQ0hVcG1zU0pNaXBGWUpUYXFJVVU2SlBFQ0hPNVRLWkVXYUZDRzFJZ3pSVnIvUXEvWnJrRXZvYzhocFNtTWNFMjlsUnRvbHZCUDhyN3Bxbkg1dzFWVlhGd0Y0UGRkL243eTUvTUVQZnRBc3RuaWFXaXVWQXpkeFRNbkExTm9uTWJXMmszSjhPeUpodkI3L2ZmazlqNTQ4cnlpSXBVQ3A2cDlSZS9QS1AxNVU0QS9wZnpIK3NzdXpYajlHTlAvZDY3OWNwbGZoSnZYdWQ3ODd0MWNhV1I3eTcwdU9oLyt1LzhLV0p3eXYvbU1vR0FjTGpDTHZwUGh6Nml4R0RYUGlkUk5tQ2JELzVQV2Zmdm9aV2pmUWVYajExZHo1NHhrOCt0aWpqYXl6VXAzTHBIUEhNNXdtVFEvOXJremoxS1NDS01VMFhEejBUVHZ0ZERTalUxUDFvVk1lU0I5ODhFSGpNek91a1NNMjU1L1BLZTVKMnZQOHNjTU9uOUZ6Mmw2Z0p1Y2Y5S21ublNyeUllMFlNdnMvMG9nbXpzTlBxeHlmK3g4Nm1taVBEejNzcDlFZmp1SVRibGVXZXp0c2Z2clQyMlpad21TakpqMFBUSGxGZ3Y1R01ySUVmWXlheFFRdVVvUkhISG1rK2xwMm1XVWlWeTRBSFUzNFIxd3hmVGNLbUtOcDF2M1F1dHJ4L3U1M3Z4ZGxyZU0zdi9sTjliblAxNzdXa29Bcy9kOG9VNWpoYTJvWllYNWVSaTNiNVU5MkhXMHdKWGpYWFhhMW5MZ2VqTTR5WFNZdjl6YVIwVlIyRE1tbnB6Lzk2VTk2UHJQTU1xdjVQK0dFNDVXM3Zrelg5UW4rTWFYMnVHT1BhYTY4T28zWWlZTHNqU0g2UTgwaFAvbEp1Z1JhYjVyTHI3aTgrZlZ2L3E4Wk8zYXNOMlhuNjVsNHFZNlJ1VTkrOGhPZWJmaVpaNTZwNXpXampPaGxEMDN6TG5ST3hmL1BaUFpORkdRcDdsdVFmZUFESHpBN1FLZ0JueGhWbjA2bWtMOG9uZEtZS0Uxa0F1aVl5bHBwL1UzTytLT2JBaTNxeUhIZi9mZUpiRWpqZitXVkdDU0pTYjZ0cWVmOWs1OGNTcGI1QndQVHZIR08yMi8vNlNTUC9pZVVFVUw4L2pla2ppWi9mMXcveWg4Nm1wcEVmYlBOWmVxc2pLaHUrTEVOaFJYekoyTXkvZnVaMUhZTXljdW8yNW1sZWU5NzQ4dVhzODgrTzZreVg0U2J5T2czL1A4Q2NaV0VseHZveUlKM3dVV3ViUkIxNUJoOXl5MTZuU2gvdDk1Nm0rWVpkS0NuVWs0dVlVc3E1UyttTisvNXo1OEI0NCtyNVptb1hBaWpGVEhLWnkvd2ZnMXlDWXNzUmYzWEdsNm9HV0ZJbWJ1SG9pYmpTbWlxVkRCR2lSUmlJd3dwbFhzb2F0SXZvYWxTd1JnbFVvaU5NS1JVN3FGVzRZam1sYkdqK2UvNHh4U21xMlMrUE5hRHhLbTFzZU9BTjRzNnRWWnVITzJwdFR4VCtpVzBVNldDTVVxa0VCdGhTS25jUTFFVGZqR041YXl6L3RaY2ZIR2Fqdy85cFBEZy9ROW9weGx2MmI0a1Uyb09sZlVMV09QQy9HcmFDRU42UEdKTnhnUE5NZksyOTZzeXJXVDNQZmZRNlMrbm5YYTZybWQ2TTY0ZjZ3M08vdHZmNUkzYkUzYisxMTU3WGZNMzRlSE5tZXprMkp4MDBrbjZVTERQVi9acGNJT1VtbWZYY3VrbGw4aTVmN1hCQThYdlRqMDFUOVZLS3BoZUJGdDgwM2oxMVZjMysrMi9YN09IVEJ2RDlOQjc3cm5YYk5FcXpPUEdqYjhpSlFXTVFtQkszcGUvL09VRzAxSmdCMnRtbUYvekpBS2plZkQvOHNzdk44L0tXL0JmL3ZLWHNtN2lpeHBuK2ZTQm1ZZlBQOGpiWER6ODdMMzNsMU9lMW9PbmMvRGdndy9vbThtOTVJRVoxMy91dWVlV2ExaVM3cE5QUHFHMitHQjM3NzMzTmdjY2VJQk9JZnFPcktPU1R3amxjeEFNVTJUT091dnM5S0ltTkFjZWVLRGtQMXNmTlB3RlB2NzRZODJ2Zi8zclpsOTVjTUxiYnB6RGlmSTc2UnBwV0V6K01ZcUI4b2xZeXFZamVpNS9QLy92NmhNeFFXencrMk10Q3krUFArOHp6enlySXdXWU5vYmY5NGhmSHBIdHE0VjhRRDA1Uyt4Z1hSaW1CcDE4MHNrNlZleExYOXE3T1ZYS2hSOFZ5TGxLck8yZjUyRmFWREJHaVJSaUl3d3BsWHNvYXRJdm9hbFN3UmdsVW9pTk1LUlU3cUdvU2IrRXBrb0ZZNVJJSVRiQ2tGSzVoNkltL1JLYUtoV01VU0tGMkFoRFZGbW5OOG9EVWRuUmpIYW9TYitFNW9VS3hpaVJRbXlFSWFWeW9qYVVUZzhlNFBhV0tZZlVwRjlDVHFmYmRlZGR6UWFtNzZGT1llMGdFL1BmZWNlZEtvTmRqa3hoZEE0MFJxc0dwYjJrWFlMTlhYYjVuS3JRdituVGdRZ3d6UmE2ZjBaN25CTEZJSjk4NHNrMFpUVFlhQk9uenM0OHk4enU0WW01cmNtdzV0MzdqeDNOb2VibW0yL09HUksyNFlZYjZybjgzMjkvbTJYcFpMNy8vZStwYkorMHpnMmp6Uk5OSEtkN1lubUtUenovdSs2NlIvUGcrdEJlSXNXTzVwQ09Kdm84d1BFZ3ppbWtiR2Z0eDB3SVJsb1JmL2tVVGp1NzBmVC83Vzhmb1A0MzNIQWpreWxDaFpLckZNNFZmNVpNMXhBVjRabEh2bldvOXhub1l4b3Awelgvakd0bzBmbFpjNjAxbThNUFA2SzUrKzY3S2M0L1VPS3dURTBpNngrMzNucHJ2Zi9xMmxISXphMGgyYzRBakpyODNUSExSVGFxMFhzTHpuWEc2V2NzY3JMemQ0dDBkSkNZSHpnNjRZZzNwbmNQU3JMUmpzYnNMN0xHRUluNTZaL3c3My8vdStwTk1ka1VPaHJhWnk5TzM4MGptdmZMZ01jRTBnSEVlYk9UMTg2SHNnTDU5TEwweTkvL0pwZ2dscy9ycml0SE5ISDkwTC80d3RUUkZJTmJwS216aDh2TU1KNi8ra25FZ2dzdVVKd0Q2Zzg2cTdKSjFjRG4zMk9PT1U3ellIMDcwdTkvZjdyU004MHdrOTVibGRrNkxDVHJwM0Z1TnFKcEoyTklLMGVYcENialRtaWFWREJHaVJSaUl3d3BsWHNvYXRJdm9hbFN3UmdsVW9pTk1LUlU3cUdvU2IrRXBpb0tyb1pIZHN6RXJEMjhqaFV6TndESnRoU1RRK1owczBSWnFWSHczb0wrZGYyRFZJS3JyOHB2emZLVjVXdFJUQTZaazdXSVJWazh2dkRDaXcybWhYeDR2ZlViMloxTkd5QlVpcm5ubnFmWmQ3OTlpNmxIek4rRjJadGljc2ljUWRxbFJxUVM3elhpajVzZ0drcFU0SmhpUGpRb2s2WTMzTGdHL0VFUGIrZXdYcFdkNThKWFlTRkswRm5DdzVhdXA1R1kweFlhSWRqRHRKTnIvL2xQZDJIcHZJV2ptQnd5eDZuMStLSTA2cWRjNmZxeEJoVStmYWRyTTVtZWcvUEJkR2pkOU1tZm4vQTNsalVjbUxLQzlRdThmcDQvcG5ZOEx0UFc2QXR2WW5IalhFbW1nbjVaMXVHVStrTTYzU3BQcmVHWnhvNG00cEJUdElpRjczUFBNNC9hb1UvbzRhYUhxYzU4KzBYL3l5Ky9ndnJIRzliWjU1aXo0My92TDM5SjFnL2QyNnl4eGhyUlpvby9iSy8zNFErN0RsSzBpQTdUVHZJN1R5SnJQcngvNExoeFlqUURpZjdSc2NiMWI3YjVabExXOTlmcnhmbkd2SElqRkgrZi8veHVkdDUvTy90dlZqOU1UM1JPUHZra0M4VVBaVXFPN0NyWThRK2JlQUErODZ5enpQOEdINUVwU3VJZmZoU0t6c3d6elNRbk9LeHZYSlV2c3ZabVFFZktxTUpVRWxNOVQ4MGJ6eGx4M20vLy9XWEs0YXRGK2NOb0tYUi9KNXVUTExMb29qR2ZYaWR1OWtQYWNiNUxINXBpWk94cDFxN3F0WkNVajdFVk1uTzZlYU9zMUNoNHIxSC9CMWtFWCszSW9iUmU1aWg4SlZIQit4LzF2LzBPMjJ2NTNsTmVOTDIrbEtPdG1Cd3lwMnNweWtxTmdwZml2OEw3cEgyUThuM0NDU2QwalNUT2dkODlVTXZ6UjZRdUljRU8xcDZodlBzMWxTcVV3NTEzM1dubC8zbVp4b2kwMDg0N2FUMUFIandBbzI0UERVMFE3NGU0SjZhSFlwekx4MlJxYURmbGE4R21LRm92eGNaZGQ4V05pdHI2MEo1OWRsbGpLblh2bkhQT1ZURTNBOUtSd3RkWi9tYVdhWWJ3aVJkaGVpWnlVQ2lXc2ZZTk1yVE5URkVtVTRKMW11Q1FyalVFRDdGaHU0WVhXWU1TUnBHaGgxRllwSFBPT1Z0OXJMWFdXaDMvdUU4eUhvQkRjaS9HS0JOR2VCQmoyUkxXMmo5MHNqV040L3AzL0d3Y0xjWkx2Sng0dGVtNmhjeWM3b3ZSS0J0dXJwVXBwZnZ1dTUrdXMxeFkxc2pqZnMvcngyOHppMHpyOU9tZ2d3K1NGd1J5dnJnTytRUEU3RENzSldRblgyM0w0VVc1RjIwczYxcXBCMTEwdUZlUmpZUGtlN0xObzQ4KzRrMm44MDFuM1hQOW1QNjYvOWYzMS9zZTJ2TkpwUU1MbS9IZUVhY2x3eUQ5VDVuV2FENHZJNDd0Rk84NzZaNlR5amwvQjVaL3ZSL0piM1Q0NGI5c1p5L29VMzUzaXA3SGU5N3pIdVhUZjdvUzVYMzJNM0VhTVY5b1h5d3ZrZlhjY2UrVFB6eDNEdktQNjdNT3VsaGovRG1pR1U5bVdLZGx3K2FGR05FVTUvQ1BrV0RFLzVSVGZoZlYwakdlMjdDczVjWG9wWXhvanJsZDlmLzg1ei9aNzlXdS8yZ0QvUE14Ui9TUGt1blA4THV5ekhKQ1V0dkpmM0tuYTVHaHc0NG0vVk51K1dKdU1SSTF2SHpjZU5aWFRBNlowODBaWmFWR3dYdWIraC9DcFVxZ1V3SXFQeitTb1lhVWJLaUlTQnFscUpyVUhucjQ0WERKeFJkSEpuSkFJZUN6SGdMeFgvUWFGQmx0RTRTTmZDbEp1WlYvMEplVTdCbVNhTEtoaFJuK2hYK3hDZHRxQVlwSWI0TC9mYjYyYjdoUnZoMTAxZFZYaG1XWGNWdEV4ek9RSTgvYUdBTVFwMmRvUk9STlV6anhwQlBEMGNjY0UyNjY4Y1o0M1NLU3FiWGhzenZ1R0RiZmRET05iNzloTTlZdk5xN1RNOVFRMWZKVTMrOS82V1dYaFJVLzhJRWdIYzBnYit3MHowMDMzUmplODU0bFpIdnp5Y0xCUHpvb3JMTHFxRERCaEVOQmRna0x1MzloZDlsYS83a2dEK2poMDUvZVR2UUgvUDdwSEE4NDhNQ3d6MWUvR3FhZmZycHd3QUhmRGN2THQ1OG1uR2ppY0kxOEQrN0E3eDBvMjFmZkdtUkRnQ0RUSGxNT0FIL1dqdDFCblo2aGhxZzJLVm0zSjlkM3EzN1kvUDF5dlNqWG0yMnhXWkFScVNBajBicTkrZjc3N3kvYjFDOFl6ajMzN1BDTmIzeFR6cUlKUzcxM3lYRDNQZmZLcHd1K0ZONy8vdmZMYjNsVGtKR3ZJQ1BCNGZ2ZisyNlEzZGJVendQM1B4Qm1tMzAyMllKK2t2RENpeS9wNzd2UGZ2c0dlU01mamo3cXFQQ3RiMzFUUG9qOGFwQ1IwckR1aHorcy9yVithWG1YSzNiVityenp6ZzNyclBOQjNYcjhjN3ZzR3JiZWV0c3cxVFR2MHJ5eWcxdVF0UnY2eVlROTk5eERmTWY0cjdEOEN1RksrUzdzOU5OTks1L2ptVGZJcGhPeWpmZ3M0U1Q1TnV3dmYvRUwyVXAvS0N5MjJIdkNzN0k5KzVlKy9KV3cyQ0tMaEVzdnZ5VHMrN1g5Z25RcXcrOU8rVjNZYU9PTllzeWE0YkRWVmx1SFg1MzRxekRQWEhPSHIrMjdYMWh0OVZIaFVmbEV3RThQL1duNDFhOStGV1RYT2ZrODBCV3l4Zng4bXVlYXE2L1JUd1hOSUwvem80ODlIcmJjZkl1dzZSYWJoMGtrSHNjZmUxeVE2VkxhL3NpNnBmRGg5ZFlMRHovNFVMajQwb3ZrUFBjSjhtQVJaTXFaZnJaaGVTa0xjODQ1ZS9qTmIvNHZmR3JUVDRWSko1NUVmb3R2aFRYWFhpTmdDL1ViYjdneHlKcVFJTHNIaDFsbm1WbC9HM25vQ0pkZWNtbTQ4S0lMZzJ4RUliL0Q3SHFlazB3MmFmaXd4RnBHZUlOc1JxRCtwYU1aWkdkQWpmL2hSeDRlNU1hdG54bVFEVTdDVmx0dXBaOGVPUFhVVThKQkJ4MGNubnYrdWJENzU3OFFEanI0WUwxR0hHVHFZWkQxT2ZxWmhwbG5takhzOWNXOWxYZnpUVGNIMmRBaXlJWkVZWTAxMXd3eVhVanpzUHlCNkt0L3F0UTUrRndkb1dNNFBVTU5VVDFQVmYveDlxSXg4WUZ4RVkzb09JVk8yK2taR3BIUDdQQ1pjTVNSUndUL0hjMy9adnhsdW1xNDVwcC82TGVpWmFkT2EzL2N4WVFmZlA4SFlXK3BQK3V0dDI3NDR4Ly9wS0xwNUJNSlR6ejVWTGo4aXNzQzJoaWY3cjdyVG0xcndIdGVQdXVDKzRWTXp3dEhIWFYwa0RXZFlZa2wzNnZ0R2xvb05IUHloWk4wLytycEgwc0FBRUFBU1VSQlZNY0V3Q1lzdmV6U1lmLzk5dmNtRXg1amlNK0hURFBWMU5JS0Q0Vjc3N3NuekQ3YjdDM2RxRGVYZkVvR241U1EwYnl3Mm1xandqLy9lVzJRdGFaQnBqTUdlUkRuSFdxODZwOU04UXdQeVNjMFpEZlkvTW1YNUhYamoyOGNUcFhQeWNoR05lRkRIL3FRY0tOL2lBK1c5a0oyMlExZjIrZXI0VnZmL281K1ltSysrV0xiaU04MHlLWSt2Zjc1TFVQcC9BVFplRWZ1UGVlRk5kZGNJNnkvL3ZyaEQzLzRRL0ljQWRwMy9BYXlrWTNLKzU2L3lKdHF5bmVGRTZUOXptZlliWDk0LzBQYis0MXZmTVA1OHJrY1cxRHBKQ2dqM3Evdy9CYUM3SkFhWkxhTjhpR2RXVDVkOGQ0bDNodVdXMkY1dlFkOVliZlA2K2RBN3J2dmdmVDdpeDNKZDl1WTI4S3h4eHlyOFpTT3RwWVZrWWhPSTg4S0J3YVp5YU0yY2NDOStNSUxMd3duL3VyRWNOWlpaMmw4NFF0bktwdnpoRE5PUHlPTWt0L2UveVpDRk5jdnoveGg5OTIvRUdTS2FaU0lnWmxtbkVuamp2SWk2M0xEYm5LdU04d3dYWGpra1VlUlhkTlVVZ2FmZWZicElDL1g5Uk1iNU1QNmV1dXRIK1RGUTVETmNlUzZaNWF6eDVtaWZJdFU3cm1JRTg0VFlkdHV1KzNEQmh1c0g4OEpKdzZCU3llZGVGS1EzVjNEa2tzdW9XWFlpUXpkYmJmZGdzemNrYytieUhjMDVkTjhNdjFjeXZ4cVlXSjVwcEs5UThicEgvWHZ1T09PMWMrZTRQd21ta1ErYnlMUEpMSkdNMy9lUkR6Tk9PTU1jcTkvTEZ4MDhVVmhwUlZYVXQ5YmJMbEZrRTIvd21tbm5oWmtBNnQwUHZraThIdGZkLzExWWN6dHQ0WDU1bDhnL1A2MDN3ZlpyQ3hNS1o5TldrdnVoMzMxWHo4bEl5WVFkOW05V3N2UXpqdnZFa2FOV2lYOC9lL24yelY3UkhhdGxtZUpFK1R6SnZJZFRma0Vqd1hSVHNVUXplYXAvMmI3aTVONVcvbVhnbHNrMzVmMmVLR2tSTkhQTmpHbXdpRUcvay9LdjlHOU9HcVQwOUhTN2VsNEcwTU5VejF2dy9LMWJiajhYcjhYYitkdDArUHBQMjRHWktFb2tIYTBsTzRKc0dkNTNJeEo2M2I1WlpjM1N5KzlsTVVzang2YVZnZUp0ckpGeFRKcCtwN2xjVk13SkVyYk92S0FydWZseittSHN2WVV2OU5lZStYMVJacFBEci80eFMvMGJSUjJPVVB5OWp3TzJTdXlGZ2pUaWZFYjRrMHRrdGU1U2tmQllobkIrZ1Nmb2w3V1ZpeVRwdXBaSGplRmhDeTAwSUo2VFJkZm5LZVJmaXFOYUdKMERBdnZmZnBFV3BTT2M4ZXVjdDQvRjdtdnVzcXFkajF4UkROZUM5Nyt0VjlrSFhJSTFrbUU1ajJ5aTU5UHJBK2V0N2grVWlmSUl2c2ZHcHYrTVpLSUtWbDRFNDZ0OFhuTm5GS0RON1RZSk1HU25NaHl5eTZydmpFTnpVL2hoYzdPTysyc3N1MjIyODZ5WEhUaGhjcWJkdHBwWlBPa09LV0ovcUgwaFM5OFFlWFljWkgrNDRobXZQNXZmdk5iWmtzUk9ZYzU1b2diSnV3b215TDR0UEpLSzZzdHJJL3hhU25abEFTeE9mS0lJNVR0L2VPM2l0dit5eG9zdDVFQnRzQkhubmUzZHAxOWhydk9pdXlGRjE5VWV5aWIyTTRlK2hpOWI2Y0xKQWJTT2RleU8zYnNXUHY5ZFVSVDJodEFiRkRBNjBmK1A4cGJYTmliUWtaaFgzcnA1WmJKcU9uMVd3b0YyZFpXdWllelozbThNS1pFbEk1YkorZHFheXZkazltelBKNHRFWXZTY2V0UWwrMUUxbFlzazZib1dSNDNCVU9pZE53NnBweCsxNnl0V0NaTjBiTTgzcDA2RzZWZXg0ejBJRzF0cFhzeWU1YkgyeWJYV0dOMUxadjRaTWFnaEIwZVVYNC9MVzFCdERVc24vQklJNXBTdDRyQ0xrWTRkUmIzZVV3bFJ4NnVWZnpJUjlxamxiUTR5SHZKaHpiV2trNGlhN1p3VHFqYmJmL0lnZEV1N0w0S25Tdnd5UWRKLy9oSEhQbjdnSHh1STZmeDg4ODFtdGlwMmp0RTdvMWxpaW44K00xUW90Vzg4UW1uem1KVEZENy8zSGJycldhTCtqZ3ZqQzdGTGtsb3hvd1pBMWFhT2l1elROWmZYNmlzRGV5MlcyNVYvMmovT1VVL2EzaHRXR3FucU9uMTBSYmplbEJXMndsNkw4a21hcmVNSG0yL0xVNEgrcmd1Sm55S0JEUStoL0tUbng0cW80dVBVcVR3ai9LNUZkeERaMGtqck42L1Yzem9vWWNhZVlIWlNDZGI5ZEhiSENPalkweWFMMlhHNGdkTVk1WE92WDZLQnY2eGVjNGcyOUhHc0M2ZjBQT1g4OEhvUFQ3WjR4T1dSVUErbzJ5R0UyM0ZJMmEzZ0Q5c0c4bmxYSnZJSjFyZ0g4OUZyK1VmdWNhbGM0RjhsZ3QrTUJOSHZqdFphR3MrT2VobU9lS1BJNXIvVE91a2tlOHhiSG8xTUVYUDN2OEV1a3R4YU5xYkFlSDZZUy92T3R2SVRLVTRvb2xkWW4yaVBleE9qRHljdm92bFdJakxISEtQalE5RFhmL2VEdkF6empoRGJTeTA0RUpGL0NIVDNITDQ0QWMvcUhiTEVVMW9qRHUybFBKOFk0N0J4L2JaMG44N2g3Zm44YmJlMjgyLzFmREJGNFZxaU9RMEREWEU0bkRERFRmS3NQaG04cDJjelFWdW9VUGtCUzZ5TFZRbU9wUUxSTUVqamZuYmVMaU9mNXZwd21HMUNSN3licmFGelBHR2JkcEtmc3pHbSt0LzVwbmpUblh0NzJoYVVBcUVNU09Nd3BMeUdYTDhzU3NlMXVuTk0vZThka09aVUthTGJMbmxWajZENElPdFpWbXBVMUxlWFBadlhGTTJ4RVNYWGhwMzZ2U2ZOem40NElPbHdnODF5eXl6VENNZk5FNjZNUyttSHNwSHVNZHh4dGsvYm9ibm5IdU9yTTA4SmwxRzZSL1RQK0VIRGRRanJla3Zkb0xtcVpVM0s3U3c3TjhFa25YaGhSWldQNWZLUmhkTTJNQUEvdk1pZVVvYVdUUDRYZFhIQzRLWXNuOTUyNmF5eFJaYjNETDRqdVlOYVlkQUUwcFdlZVBmVERycEpEck5DZC9jWXVMMWswYWpqd1lhbXdmRXpqZjlFbUtUaVkzVi84a254KzNJa1pjZHplL0tEVFJxWnYyNE8rU1FmTGRzRTdveGVPU1JjYnJLUno0YXA4dEI4TG5kOE1BNXBHc2krOHJmUXc4OXJQNm5sKytTOG9ISGR6VHZrL1c0T1Y5RXYvbU5iMnFlalRjdTF3T3R2SExjWUFOVGZuMjZVTmFIWURPS3A1NTZNckh6OVlBeHo3eno2am42NzZKeU15Qk0zZkwrbjM3cUdhdC9lSGhDa3JmaWVqNXp6am1YM0FkeFUrOG03c1I1Z0t3eHBUM3RhRXBzOWsyYmZ2aGMySm9lWlJteEd6dDJUQmJacVJ1U1pZb040a05JR1dITVdsS1JSMG1VT1ExRERmRVpCQi9FaHhwbGhERnJTVVVlSlZIbU5BdzF4R2NRZkJBZmFwUVJ4cXdsRlhtVVJKblRNTlFRbjBId1FYeW9VVVlZczVaVTVGRUMyUTR5ZFJabFlVKzhyRE5sUTN3R3dRZnhvVVlaWWN4YVVwRkhTWlE1RFVHL0x4MU1uTThhYTZ6dWxSTWVkUmVVQnp6b0hQYXp3MHhubW1tbTFqWUxhOEI5UWc1OENnWDY2RWp3VzVaLyt4dnExWkM4Q0p0VVg4Um9IanVWaUdBam16MTIzOE10WXpBRjcwTHg5V1NIZHhrTmFiNHVVeDE5WWc0dS9jQ1Nqdml5Y0ZpK281azZtdklKQmsxVXRsaDZTOEJOUVQ4amdmWVhHNXpFUk5td3RidC8rY3RmWFk2b3haZVArSXhMekRIY3ZQOTk3OWUyL0NlSGNKTVcyb3A1NGtZNVEvSmlhdkpHWms4bzh4eFpDd3YvNjYrL1FWUXlUM0pmayt3TExJQzFjRVBkYjAwbTdmTmxYZnBuUHJ1anJGZVhqWE9ZekswaEtqbjlkS3lKdzBaS2M0dVhVZ1lGZHJ4bW1tbEdXNE9MM3h0NXFJMTdLSDUvdkdDSWlaYWl4cmZrdTdMUW45VnRCdlJiK2E0b2RtWE9iVGV0eVM4aEY0blA0Q0FQbHJtZ2JUN3dnQVAwR1JUUEhVek1nUTJuNEIrZHdUNy95a3ZLdSs2Nmk1YWxUOG1uY2NvVUZRNDc3R2ZpVjZiT3pqaURFMk9kY094b1luMGpFN0dmL2V4bjZoOUxVbUlxcngvVWJwLzdmTFAzRi9kdWJyaWhYQXRKV3l4L3p6NzduRHdqVEtxLy85VlhYMlAyYVBkbCtUUVAxandpTm55cGduMEM1a3d2VEkvUWw3S2xmK1M5UURiZDJtbkhuWnJEL0FaWHdvOHZhNGVrbzNsZGRKR091SDc0aUpzQnhTdkZzenQ0N0dqeStwa3hkelJ2MDdLQis3Wit2MWJLOGxXMmNWR1o2N2V5MWxsR01PVnpUY2VwR1R4WG9CNmovTjkyRzE4eU1NK3dmTWJwT2R0MDZCWjllVVB2SG5hdjN3cHJSbndHd2VtanhWYVNNc0tvVTFJKzN6dkR2M1EwVzVkb3BDSCtxZ3U4MUdCQWtrb2hGQ0xSYU56SzFHSVlhVWlwN3FoUzQ3L25YOWRvU29NaVUxSHkyUlVuSjBTaVgrLzFZNU1TYkhwREg3RmhsaTJlWlQwWFBxL0FSZjl3MEhaWm5Nd0kvV2NiWGF6d2wveGJSMU1lTXBqdWtROTM2MDVyOGxaeG9va21rYTN2MTlERjdsaEgwbmtvTjZPRzBFd0hZczBOT2xKNGM0VnZWYTByRHhGb3ZCQWorNml4NWhKYnlSempqeHNRUHZDTEcybUdna3VuTCs1dU9HNy9HTEdGbjd4R2M3ajUxR2F4bzRudHVla3ZudlJ3OCtPRGZ5d04zcEM4UWV6ZWxHQUR0aFpkVkRvMHllMzlEOXluUEpuR0pieitjMWwxMUNqVk9lYVlZOFJOL1AxNS9iVHpmUmxOeG8wVGIvVk9rRGU4eHgvL3ErWUUvTWxPZlZoZkJiamVldXVwbmUyMjI5Yjg0MFB1T0NjOFBMUVRQdjRNV2JrVFlmUi8vUEVucUd3RGU3Q1JiNDZtaGYxNDQ5M25IK2VCRVZYWXhHZzkwdFhYWEtXMHZzRnNuNERRUjB1ZGdENDIxSWdwK3JlTzVsL1BkTGtrZmltRUNDWFdQbU03ZVl3azRHYUo3NTloZHpydkh4blkwVVJuMENlTS9FSVhmMXlqaWMxN1FPT2o1SnFLbnl6NngyK0Izd2ZsbndtZlRrRytVMlF0ZHBsdldHM1R6OWl4WTVuRllPRWkvZjc5d3VnZnNtNVJLcTB3VGhZd005aEZ5cHh2amZiSHpySTR1YmYvOWZOYmgvaU9KbE54aWZMRDNYM1AzVHJEUUwrRDZZVDRaQWsrdy9TZ2pQSzhVYjgveWlQS0p0WkhZUllUeW90ejJjaVVSSlhqZ2YwaHZGeE13dmpkdWlIOWRGQzhqcHpyemp2djBEeXcrL3dMc2FPRUI5OVpaNTFWK1htMzFad1RHNU53UTV2ekx6aWZvVEYvcHBuY0hIY2MyaWZwcU1nYXYzWTdqNWRjL0k3ZjJ1dXNaYmE0Nit5Z25VRHBJMStKY0JMQkVVMnN6VWZ5OGVjdXN2NGJqOHgzME1FLzBtdm1pQ2J5eHQwK2czWU9NWHJwL1QzNzdET05UQzNWYThNb0ZZWG9hS0w5WDEvMmVVRHkva0hqTTJxSU4zYjB4RVpwekFjRThjRDZOc2p4SGN0Mjh2NmgvN3pzZ3NwZGhYOTk4cStkdW1qSy8yMjIzVmJQRDJzdm1XQWJmMHg0aVFsNnA1MTNKTXNnUmluakozWGlaa0QwajgzdGtBZXpoaXdsSVRaUm1sMitZd3I1MkR0azQwSGhMN2NjNGlTelc0NDZVdFJwSmViRS9RZXlCUmRhd0V3TlFuYjR6R2RVRjkrQmhSMXZDZC9obkhmZWVWV09YVmNwaFA5M3ZXc3E1YitxTHlSOUx0a0o5bDdaQ1ZicUZEcEhzVjZWM25uZncrYVE5NlFObjZKRzZaLytaR3FzL3Y0YnllZzVSalg5Ny8rem44ZU9NSzRYMzlUVkpLZURQVERnSDZPNjJOelJKOVJIMUFQazJTTE5RbVBHT0tLSmpxWjBnTjFsNmE2em9uK1JqUERTUHdhUjRPTTAyZVc1U0NuZkV1OTlqL3JnaUNaME5wQmRoZUVYTDJ3NTQ0RjU3NVA5SXVLTW9xRkdQKytUN01qVVdMMytiYmZaVmsrSi9wSHZBSG5oQUh2NHU1V2ZFclR6Tm9RdU9yRFU2STkvekNTYVNkbjdONW0zYkVZTjhkSUNMelhlMnY1ekRXY2swcVhrMDg1WWNaVWd5aXMxY1p0Tk9rSi90Q3dkWTlscnhyeTI0alRjRXJUWnBMMW44bkxXa3BPOVppenJKaXhsV1hYVitNQi90WDVIc3hzV1dvN1FINzFGYWpVeXhVZTJKWmVSTzFuWHBtOG5VU0Z4YzhSM3NyQTVBaDZBMFZGNks4WWZiNFJSY2YzVVdWelpCZEtoVzBKdVpyanB4Y29kTzRReW43NzU5cmUvTFcrWCtNWTN4aVJIUFdPUVlJcmlUMy82VTVrNnZIVEgxZ3o2ZGk3YTkxTlhHZGtJNHhFdkU5bkl0Q0UrR0o2OVppeWVXVHppK25BdHVhTXAwMEhTMU5tZkhwYmY0RU1iSGcvUkxjR2xjZDVpTXpVUXowTFJoakhEeXdNbWJEMk8zL3o5NzMvZm9KKzUyVWkyQnNlNUgzSklmdHZNYTZFZGZOQWJQTWFkRUxhcFM0Z0hINmJsbGtkSGM2akJ0OHo4dVVMT2p1YlhaWk9lZGtLbkVmWndVMkNhVG40WCtpWHM4NDk4R0JsRXV1cHFkRFNIbXZubm42L2pIM0owcm1FcmR6VEJsVThHcEFjalAzVld6MS9xaTZ3dmJWWmVhVVY3ODhycnhqU3RTZExIMmxHM2tQQ3JYMzc1RlhvdEN5L1MzOUdFZjNZMHNhRVY2Sy9KUmhqdGVKRStYbUlEbldWbDZqRjVjVVF6eUE1NTdTbEU2R2krcFA1Ui84ZU92VVBQcXpqUVNNSHNOZ3RVaTlBZmZVWnFSVjR1OVJuejJvcVhXVXpjWnBPTzBCOHRpeURVaXJ6c05XTmVXL0V5aTRuYmJOSVIrcU5sRVlSYWtaZTlac3hySzE1bU1YR2JUVHBDZjdRc2dsQXI4ckxYaVBHekhEcWl5V3hsRnF0ako1MmNOOENDS2pxbktIZkxTTG1qbjFaVzQwTWZxZTAvY3N1anJEZlc4am5aWkpNM2VLRDkrM25uTmVmSkh6Njh6cW5vUng1eHBGMFpmRTRySTVxb2Q1ZEozU3JUc0kxb1FzNFJPWndKNmkzYmkwOSs2cE9OckRWc1pIMWRjOWloUDIxbWttbUJrRzI5OWRabXJuMXRwQUZmZlBINTVuM3ZlNS9tbVcrKytYUm5hWXkwblhUU2lZa3ZVdzNsa3lTamJ4bWQ3R0ZFOHgrcTMrNW8yb1daNTRqUUh5ak9kc0owKzhqUHg3S2o2WE0xc2lrTk9wcXlHWkNOYURhNnRDRisvaXkrYUQ3aWw0ZnJLT0d4eHg2bnU4TGlOOGI5OUM1NXNjdDA3amx4S2RNR01uVTJlMllwYUhScUtqdEVhSXNPazNzWDRuSEdIODdRRjJMNExXYVVEWTFralIxTlpsaWVzdkt4a3pueTRNVWhPaXg0aVl0ZHRiZVNUZ240YzgwNWgzekxrN0hJOTJDZUVYWkZoeDZtOHg0cXYrL28wVGMzTjh0dmNkUlJSMnZIalJ2cHlKcCtabWt3Y2lYcktyV01ZNU9mUDhubVNyZ3ZZNGJPaWl1dXFQWTIzbWhEdS80L3lpN3BpQzFHKzc3eWxhL285R0pNNjhTMTg2VUdPbUV4NVpxUUx6eGlmL29EN0dBam9ZbmxIbnhJTTFwMlJzVUx6S1BrSmVqODg4K3YwMy9oWnhwNWJrTVBpL0dQVTJlSDVEbnZWV2N5QnhQUFE3QTc2YVNUeWJLU3p6Zm55ZTZ4NTU1N25zNEkwczE1UklhWERzbWdzeEhSYktuUjcrVEtIZ01hbXhWbDUrYlRUdjFkZ3ltMXUwbmRSUjNWRVUreFp4MU5NWUVYTUxQcjBwUWhlYWt4djM2YUIwdUU4TnVza2o3bGgzdm0zWGZtY2diUEU2V3BzMzc1Q2ZqVHk5UlpsRTNkRENpZHRIN2VSSGdjMFd4ZnpIdVdRRWNUbnplSkk1cXdnNTNtcDV0K09vME5abHlkZU1LdnRLeitTbDVxNGR2ejhJSG5Ra3gvWjdwRFhpN3crZU5ENjY0cnp6Ti9hZjR1OGNRb1BUcjBmTUY4NjYyM01JdEMvbG80THgvUGxsSkJrbWpyazQ3UUg1a0RrRnFSbDcxbXpHc3JYbVl4Y1p0Tk9rSi90Q3lDVUN2eXN0ZU1lVzNGeXl3bWJyTkJhMGRUNmtESzUxUTZhR1RvMGNuMEJMTUJjMGFMcmZOdnlaTldzbGRja3ZNUlVYZDBzcmVDLzFYVDk3RHlrRDR2VTA2ME9GZnlTOGp3NGEwS3ZwczE3N3p6YUdWQ3hjRzZMbFNRLy92TnI1c1hPTVcwc0FrZmlWSHc0UU95MGxjZmxiTTc1UTRhR1hwMHN1Z2pNUVRFVHRPUWREUVg3UG9YUjVnU2VlQjN2eXRySjlhVWgvdEo5RHJScUc2d3dVZmtNeGV1NFhVK0lpcEgrZjh4M1JJK3Z2R1RUWDkwU3RtaDhqMHNOSjR2OGNGY0dxaUhIMzZvNjk5ZFBEcnE2Q3ppRDFPOEZwS3BzQXZLT1lQK2c5eGtmZHpNZjdTb010MTFWczc3a2tzdUZqcHFiQ3BUYUhBdFAvLzVMNUtuZU00ZytEWWFiL0xhNlJKZDF5cGIwR05FTXlWOGtCaS8vd3J5bHJyUFA5Umtnd2YxSjV2enhGeWlDUDlvb01uNDJqN3l4bG9hMUZFeStvbWRUZkYzU29KR3k4NXZ2L3ZkcWMzRnVKYVVsbDl1T2ZXUHozaTAvZThpbnl0QTUyZi8vZmNYYlZ4ajFBQWFPNXBEcWFNSldTTWZlSjVaend1ZkpSbVhmK3lTaHluRFNIaHBnK3ZIalM1YWQwZEJqem4yR0xXNTRZWWZLL3pIamlZNnlCalJGTVdZVFhZZi9HS0tUWHg3djgwMjIraUhvZEd4ZmZiWjUrV0Q3L09ybkIxTjVMdENPcDJJNThJNm9oa040WWlwcy9IbER6cWFMNmgvUEdoRHR4eDFFZTJZRFpla014T2dnM0xMeEk0bXZrdllidjlla21ubDhmY016UjFqeDJnV05lZHN4bXRNaklJUGRXRjBlUFNjWWY3NW5ISUhqUXc5T2xuMUw4SElBY3hCVlF5eUZxdUh6Tm1kY2d2OVRKbzZxeU9hVHViano3SnlzbzBtaWFMODMxT21JVUtHRnh4OWFYejg4MExVZGZLUEIyWFpsS3lSRFg2c25NWnp3RXZSYVdUV3dWSE1abTc1ZVJPclp5S2gvenZTaUNhbXRtSnBBQlBjNGY3SERoSGFOOVkvK050eWl5M2lzb0IwWHN5bnpqdThwbmxZZG9CRjI2a2pSNUtmNXd5SWpzbE5OOTFZbkRjNm1taUwwTkZVYzRWTklYZ0JCUjluTVN6cjQ2VHRrL1lYc3lEYWlSM05QLy81cnlyeTlmOGdtUlVEbjdtakdZM2ZMZC9DWEdQMU5ZdnJqK2NmZERSMjdOaXh6bzI4c0Q0YlUyZUg5SHFkb0VESGpCa3I5NGZWN0RkRS9HR1Q3VytjVmhuOTZ6R2l5WVlRcmV2LzhZOFBrYVVhcmt5SWY5aGJjTUVGYlRkY25nRFBIVFN1SDJVS1M2dm9uM0tjQzJhcjNDTGZPNXhsWmhtaGxIT01PeGRILzdoUHpUQTlwbWpHK3gvekFhNHBPKzVpalNzVDd2MzQvQlZmaHZnOEtCTjd5K3dVZkdhT0tXTHVtRVE0MTYyMzNpcjVaRG1LL2xlVTlieTNTQWQ1anRubjBQamp4UWdUMTJnaVAxSU9IMzBPTjkrVFp5U3VaOGI1NGZvQko1ZVJ6SU1QK3JIR0t0cVRQTmxBWk5rUnNrYjNoT0FuVWVLMVJsdDRTYnZqamp1cVhYeEgwNWUvTzhhT2JkWlplMjI3TnZwSC9rWGV2YWhNdGVXTG91eC93Z2ttVlAyOGxDZjZuMEZlQ2lDZmZVZFR6azlITklXSGptWStmZEZQYVFuWktSYytNYUladWZGNHRleHZzZVI3bCtvdC8ydklUS0U0UzRGV29uKzhPRUhaODllTzN4bHJ5UGx0emx1bFhQbnJUMDdWa1BldmVHUWtKL0NSR0FVZllzaVMyamhBenU2VU8yaGs2TkhKb28vRUtQaHZMZi82UkNvL1FEZmhaNUZmT2lmUHlEdGhsVHJRVHJLSUpoc3VyNktPemc1S3JLUGlHVzh0LzlpZFREbzZzbXZtVlFHNzhhRVdhT2pzbEExQmVQUSt5ZURLRFNqSTNQSndyT3plZGRFRkY2b1lza1VYZVhmWVp0dnRnalM2UVQ3WklabWNEY0hWaDJkWjlQNjc4Yi84c2t2RCt6K3dZbGhZZHAwZFBWcDJuVTJCd0c3QWNoc0pFdzVOYU5jdjAxcUNmS0lqZkZGMjJvVGVEZGRkSHhaYmZQRjRKWjFyYTJRWHdMOEhXYnNRWlBRcG5DZTdpSzBvTzdORit6RUw3TW5Ib2pWU0R6LzBrT3gyTnBQNU44VlcvQzFzYmFUSHY5a1FEd3N0L081d3UreFVkdEdsbDhUemtQeWJiYlpaK0xYc3lucVk3Smkzayt3RXJDZVNyditRUXc0Tlg5ajk4N0o3N09heSsrb0pvcTBDOVNvM3pDQWJUY2pPcll1R0cyUkhZYVFIN3I5ZmRqdWRRM2F3blZaM2haVzF1TUpsbmtaM1hKNXY3bm5DWGZmZUhXUjZhL2pJQmgvUmZMSUZ1cnFWWmtiOUgzNkU3SVQ2MmMvS2puTEx5ODV5VjNUS0h6TEpqVmQzU2xVRDZiREM4cUovMWRWQjFrZ0YyUnBmdURrZ3NqWWx5UHFUSUNPYVlmOXZmTjFuazEzOFRnaGJ5RzZySDlsZ0F6bXZNL1NVWmJ2eElBOXJRYVlxaFU5disybmhaVnZNTEkxOHNRUGZOVmRmTGJ2T0xpKzc5czRmWkcxeTRSL25jb3pzUFB2cGJiY05INU9kNkxCekk5T3FxNndzdThWZUhNNDY4OHl3OXRycnFQODc3aGlydS8vQ3gyOS84OXZ3OFUwMkZuWEdNdWJFRG4rUFBQUnd3SzdKTXVLaGx5c1BXSUt2RUtTakdVYmZmSlBsZVVaMnI1eEtkZzZFaFJkZWVqSElKMXVDakVDRXZmYmNLNno3b1ErR1AvM2xyOUc2WFdaRVpLMnE3bDY3cGRUcDQwLzRsVHJtcnJPbm41Ri9ReFZJbHBkZWZsbDJsNXhFeWJGang0UjU1NTFQY1p6Y1c3WCsyN25oVEZ2WHJ5ZXZQQk9rNitrQkhSWFArTis3Zm5sb0RmYy84R0NRYjdvR0dlWHYvZjF4RDBMdFgxamFrVmxtbnRuaVAyYk03YktMNnIyNjYra3lTeS9UVy84NnY0QVBkLzdoa2xvWi94ZGVmRUYzTkIxOTgrZ3dvZXlNT1kvc0VMdmhSejhhSnA5OGlsVE5zckdMcFc0T0Q3OFNsbHhxYWQzZDAvdDlVWFpUdlZ4MmYwYW1WVlphS1F4cG0wY05hZk5rQ2Y1NTU1MG5PMFJmcmp0eHp6UG5YT0dEc3FQdEhNWHVzZU4vLzVQUmppQXpDV1RIN3lkMTEyZjVWcWZzWXI1OGRKaFBPZUMrY3MwMVY0ZXBwcDRtTEwzVVVpSXZyNTlueUl6Ky9uK3AzQS9sbThwaHBaVlhrZDFkcFExWHU5RzRqTkRJYnFRUDY0N3NzbGF1TUNPYnBvVXhZKzhJYzg4OWw5VDdlVVhtVGtqdzBiTGorUi9QK0VONFduWXZSVjZaVGhpV2tKM2Q3ZHhnVGJJODhlUVQ0Vi9YWGh1bW4yRkc4U1AzVnVjZktqNk5IVE1tbkNFNzB6NG11M3hQT2NYa1lkVlJxOFZkM1dWWDJyYi8xMnAvWHBMZjh2ZS9QejNJeTNQWjlXWlliSTJTM2VaWGtZMUJKUVk5N2I4L0QrQTN5MjdzZi83clg0TjhUemxNSzd1NHI3THlTdkpzdFp6MG1kSHE5c2RmcGxPR2l5NjhJRnd1ejJHdlNNelJScTg2YWxYZFRWVStpUkZkdU90SDdLV0RLanVPNHY0aXU5dk9ORk9RbC9veDNqN2NLdldNMHYvTm8yL1duVzZmZVB5Sk1OMjAwNFFWNWJkZVlUbDhmVURPRmFjYmc2NVd4aFgvcUpDTzR1NDV1UjZaV2hwdXUvMTJyZGRMTHJtVTdDQzhwdFRqS2NWTTJ2Wko3ZnVjL2VVZnoxK29OOWhOL1lVWG5ndHJyclYyTHVzK08vRjB1V1BIamcyL2wrZUxKeDUvVEhaOG5TcXN2dHBxK293N05NR0VBMzdHZnY4cEVPTXNmM1N0MEllN3cyakMxYkxqOVRsL096czgrL3l6dXNQL091dXNFeFpmYkhFcEgzRFJmZjZXSWloZkNMZzRYSEg1RmJJci9ndGhmWGxla3MrK0ZDNEw0alg4djk3NHY5SFgvN2J6bnp2YXNUdnNPOFdHRzBKdHgxQTAwamc2U1VHUlQwaExHVWFKbHh0dUNMVWRROUZJNCtna0JVVStJUzFsR0NWZWJyZ2gxSFlNUVZlVjZRUW8zOWgxMWtrRytzZWJMRXlGMkhLckxYVkhTU25nbW44YWVRdUlkV3hYeURvQnZGMHhXNGIwKytkVlE2MVV6UlF4UWxyS01FcTgzSEJEcU8wWWlrWWF4MHVLcWJPUnY0MU1hNXBDdmgzMTYxLy91blYrMFI2bXF5QitGOHZHT2pGSDVCdWVrQi9KdDdLZ2grbWtsbFFXRlRCU2gxamlMNDZNbVFXem16bG1JU0ZSNHVXR0c4SThNaG9xMzlIRXVWeWl1ODVHQmU0NmkrbERNZVdNQjZkZFlySHBWVHR4QTRwRkZsdlV6bE0zQTVLblJ0eE9zR3RybWZDZHNXdlZQOWErY3RveHZQSDZvLzZ3N29RM0lSYkV5N25pZTJMNWpMSkZqQUxPSkF2MmYrNTJ1bHNlNjMzRS85bC9PN3RkcUdUcWJOeFo5dXNZMFZTRDBTcU9tQjRLWDNIcWJPUWZJQitmQmsrMlRlLzFmNzJzczVwRXBrck5LOU5rSDBtN0RPcG1RT0ovd1FWa1pEeWF5U2NzakdNNGRWYW1EMU1CYWl1bjJRVi9sU20vNUo5K2VweU9oU2x4SFZPaWhUVlkrQzF4dlZoSHduUzV2TFZGL09XbENWa0tuMzc2S2IwZTVIbFIxbnZDRHo3UWpXdWNSS1pqNWUrd1pXOHZ2Zkt5amNoZ3d3Y203R2lMZkdmSU9TTGxITEtXVkRZYVNvOFRqZHp3VlI0UFRrdlJTT1BvSkFWRlBxRXpsdEFvOFhMRERXRXV4MUEwMGpnNlNVR1JUMGhMR1VhSmx4dHVDTFVkUTlGSTQrZ2tCVVUrSVMxbEdDVmVicmdoMUhZTVJTT05vNU1VRlBtRXRKUmhsSGk1NFlaUTJ6RVVqVFNPVGxKUTVCUFNVb1pSNHVXR0cwSnR4MUEwMGpnNlNVR1JUMGhMR1VhSmx4dHVDTFVkUTlGSTQrZ2tCVVUrSVMxbEdDVmVicmdoMUhZTVJTT05vNU1VRlBtRXRKUmhsSGk1NFlaUTJ6RVVqVFNPVGxKUTVCUFNVb1pSNHVXR0cwSnR4MUEwMGpnNlNVR1JUMGhMR1VhSmx4dHVDTFVkUTlGSTQrZ2tCVVUrSVMxbEdDVmVicmdoMUhZTVJTT05vNU1VRlBtRXRKUmhsSGk1NFlaUTJ6RVVqVFNPVGxKUTVCUFNVb1pSNHVXR0cwSnR4MUEwMGpnNlNVR1JUMGhMR1VhSmx4dHVDTFVkUTlGSTQrZ2tCVVUrSVMxbEdDVmVicmdoMUhZTVJTT05vNU1VRlBtRXRKUmhsSGk1NFlaUTJ6RVVqVFNPVGxKUTVCUFNVb1pSNHVXR0cwSnR4MUEwMGpnNlNVSEZxYk05K1pVbHJ4Q1pERE9Fa2dUYi9GNmF6QVJMMEQ1TG9hbnZSSmxWbmtDYjMwdVRtV0FKbkJOZUUvV2RLTFBNZjl5b1o2aTU2cXFyamRlS3VCcTRMVTJOeGE1c2VMakVuN3psMUtteHYvbk5iNHJwUW1yb2JYTDk4VnpqcFdNWFZubDdvNXZQTUJoWW5BMmV2RkZ0SG5zTWF6MXk0T1ZiaGZxaGFIbjczZHJBQjJvNTJNQk9PdWtralJuV1ovZzFtUEJ6dy9VM052UE5PNS9LNFd2c21MRmc1NlNtYUMvQkV0aHBXYWFXZitXblBKaGlpOS9QMW1nS2Y3Tk5OMU9lVHAxTmVyVDE0NE1QVVZtY09sczZqcDN6b1diUlJmSWFUZTFvcGpLQ0hkamsrN1RSbEdSRlp3dzcrTUkvcG4vNDg0cmxTaVlxT1A5eHM1OGgyVWwyT2R0SkVYa3dQUWdmdWtZZWZFSmp6TzFqb2kwNVlnMEUrSmlTaEdUbUJPRWF6VGgxVnNXbWdNMkZFSCsvR1JDbXYwd3lzZXgrSi9hK0p4dFk0VE1EbXNRV2RnZCszL3ZmcjNrMjFFNWpGSEhYV2V5S2lPVDlnMFpIRS9ac2pXWlN3SGIyOEgvWVQvTTZXVXl4QWc5MURXdG96SnJrdWVmZWU1cGxaWm93NUxCMzl0blNzVTdwbjdvMksramE2Q2RsVXk1TmtxZHZNeUNjb080S0tUWSs5S0YxbTZlZVRQcVNDZXM0UDdkcm5Gb3JzeE5rbXQrelptc1JXZjhKdjVnNm15OHlpbVdFUjJXUWp4azcxdkpFcEhVVS8wWHFwY2xNc0FRZC8rMzZwL1pwb25BbVJKdmZTNU9aWUFsNmJGRGZpVEtyUElNMnY1Y21NOEVTT0NmSjlEanFmK204WG4vOS9Wc2xna1dOYktYSkxBc2V1ZDBZbWlTTE1vdVdJMnp6ZTJreUV5eEJMZjhNRHlOYjZ6OGpVY3NmSTlFdUk0UDRiVDJseVV5d0JPL28rcGMzQTNLVmlyRURiSVhHaXd5blR0WTJrU0dxa3hVVDN6SGV4djY1UVBvcXYrdHN1a0xzR252VTBVZlpTQXNlR3ZHSGpWKys5NzN2NWwxajM4YlhuMy9GWVZtakdUdWFmaFFJR3pzc2tPYkl6eUFMd3pmZmJMTm0xMTEzYlRiWjVPTzJZeUMrdGRtWGFCdncrUmVlbDgwRTVwVDREZW5pYjJ4MGcrM09ONVhkWHJIeklOYnp4VTc4VUhPaHJObjBTZTNRbUFrYzQzWEdIeDFOakRhaG8wa3JtMjc2S2YxdDh4cE5jOVFjbkRZREt0ZG94cHo5bXdIZHI3YUdaRFFTR3lCZ3A3cHR0OXRXdjBrblU0SlV0dHl5eThsbzVyUG1IL1V2bGkrdTBZeis3My9nL3ZoOU1DbDNrMDgrZWJQcHB6NGwyNER2TE91UlBwRDBRMlByUE5NcEw1YzZtdGpJQVluWENIeVhYV1NOcHRqNit2NWZCK2xrdzdxTExYNGZtVHFyTWg0dzBqbkJVQnhaUmRtQS8rM2tldkRTQUxhd3BYcmVRUm1iQVYydC9QbmJIYzFrTUk1b0RtbEhNNS9iY0xQekx2aVdXL3hlNVd5enpkYjg4cGUvbFBNYmJwYVhkWkh3Zy9LSHJmT3g0UUkrR1lGTkRiQ2h5SHZUZDd1T092Sklucko4Q3VVcEhhSEVTQ2M2NG5QSVJoWXlEVTQvVlFCYitQM1JpYVIvYkZ5Qjc3dkIvelN5T1FWMnZOdEpaaWpNT1JmS2JHaW1rdDlRcHVhYWZVVE8xbWpLUmd2dEJOdklCLzlqeG81dGk0Mm1mLzlMbURBaHFwTVZQVGZpcjdQOGUvdlpiTWE4SEhqMXp5RDR5TGg0MWZqN3dCak9DQkdhd0NGWmxqRW5WbFFsSGJGajFQaTNRNWJqSnBpTFZFY3Z5ekxXVmxKSlIrd1lOZjd0a0NuTkNCSDJLV1ZaeHRwNkt1bUlIYVBHdngyeUduK0pBRXNJWVYrUXNpeGpiYjNjMGZTU3RuNmJOdDJ1b01zeDVZeUlrcHNZbXZuRTJrYmFOUFVzRE1ibzRXU1pZVyt3LzFHcmp0SUhRbXhnZ2xPTlUyUFBUVk5qcDRnUGkvTEFxTHZHeW9NbnR0QitWZjROVE8zcmJkT1dzU3ZvY2t3NUk2TDBuNG8vRm12UE04ODhPazB5TzR5N24yMHIyNXZIWFFMand6TWUxTEZMR0VZcWkvTnBYNFNqOFdIZEQzM29RN3JUR3gvQ3NlQWV1MzArSVF2K3Y3clBQdW9mSFltQjZRMjQvdFZXVzEzOHpDMmY0Y2lqMkx0OWJyZG1icmwyZkNpNm5mQ3lBWEhSYmVKYi9xOUJ6R1FES0d5UXBFbms2QnppK3RBeGxIVVZ6VkpMeXJmQXBNTUJIanBMdTh0MzQvSTNJYk0zallub3RCTkdnTEhSRkQ2WHdyaE5OT0ZFc2duRXFLYllYaDhaeGI5T25SVTdPcUlwdEU5eFJITklOZ1BhejdNVkw2Zk9sbUpzaVBBSitTQzFyR25VYThIdmo0NG10b2QvOEtFSHM3TDRRMXh4bmpxaTJmSVB4V09PT1ZibEc4cHVnajVoeTNmRUVZdjlFYSs5OTk1YnhkZ2FIOXYrSTU2OGZtd2VnUkZoZEhEakxvK2grZWhIc2JsUXRvak5qZkROTmt5VG5WUys1WWR2MmNZUnpUZ0MrbUw2amlaejNDSGZBdHg5OTkxakJ6cjlYbmdKQXQvWU5VK1QyR2Q1dDQ3bUdlNHpNc20vN1RvcnZyRTVRemU1RTAzQ0xxZWJDOWRIL3ozUzR2cFZQdEJvVjlEbDlIaW8vbXY4VVFnSHBiYW9UVnUrcnFETE1lV01pRkl0LytPSVZGdlVwaTJTWFVHWFk4b1pFYVVhLzNGRXFpMXEweGJKcnFETE1lV01pRktOL3pnaTFSYTFhWXRrVjlEbG1ISkdST2wvTGY3bFprRHlDSVluS3ZrZkU1Wjg2ZUpyTWxvUWoyeEpPYUtPQVZXU0NuRUFDNCtYZ3VESkxRS3dZeExHMjlHLzdOZ21td0dkSDJRTllyaEpGdmdmZS94eDRjNDc3dFJya3ZWeFlaMTFQaWdiKzJ3ZDVDUDJzcm5INU8rNDY4ZUZ4dCt5OVl1U1ZJaERDREpiTTl3bkcxTzg5UEpMWVdwWk9EK1RiRkpnU1ZURzkvZVg3ZUxEZ3c4K0ZPVGhYelpMbWlQSXR0OVNwT2d3V1NTcEVBZWM1OXVqL0Qzd3dBTmg5dGxtQzVQSmhob3kxUkk5eDNEL2ZmZkw1ak12aEhsa0V5RFpNWTlCVDllRktzVUxWbGFXdSt0LzVkWGg4T0Q5RDhobUdpOEUyYlkrVENNYkpsZ1N2ZkdOdjNQcTBOZjJqL2cvKy9TejRlRkhIdExOUHVhYVk4NTRMYkR5QnZySEJrY3lOVGpJTnZrcERqZzNiTER3UW5qZ3ZnZkN4Sk5NRkdhZGZiWXc4WVFpWnhxSC81ZGxZeDdwTUtiTktGSUdkN2tSelF6NUJsMTRVRFp2a1J1S2JESXhjNWg4aXNrMDA5dWwvTVdUbGV1cDdUOUxSeGZtbnp2VlBNZUFOa21GT0lEMTltaC80c25LT2RmZlgwUFJlK0R2cTcvcitMVy85ZmV2NWYrZDl2eUx1aEdyZ3FzUW1WbmNmMnY1Lzk4cy83R2oyU29mdm93QVp6RnFvMHIvT3dmNkpYUzJTcGFqSE9yVVI0YlNGcUd6VXJJYzVWQ3F5NmlRN2pxTFBqZkVTREkxTnNnbkZHVFgyQzNTcnJHUlh4eHBpOUFKUzVhakhPclVSNGJTRnFHelVySWM1VkNuUGpLVXRnaWRsWkxsS0ljNjlaR2h0RVhvckpRc1J6blVxWThNcFMxQ1orWCsxTkdVRVRqdGFPSXhSbE9QcnN2MitsRGFJblM1UzVhakhPclVSNGJTRnFHelVySWM1VkNuUGpLVXRnaWRsWkxsS0ljNjlaR2h0RVhvckpRc1J6blVxWThNcFMxQ1o2VmtPY3FoVG4xa0tHMFJPaXNseTFFT2Rlb2pRMm1MMEZrcFdZNXlxRk1mR1VwYmhNNUt5WEtVUTUzNnlGRGFJblJXU3BhakhPclVSNGJTRnFHelVySWM1VkNuUGpLVXRnaWRsWkxsS0ljNjlaR2h0RVhvckpRc1J6blVxWThNcFMxQ1o2VmtPY3FoVG4xa0tHMFJPaXNseTFFT2Rlb2pRMm1MMEZrcFdZNXlxRk1mR1VwYmhNNUt5WEtVUTUzNnlGRGFJblJXU3BhakhPclVSNGJTRnFHelVySWM1VkNuUGpLVXRnaWRsWkxsS0ljNjlaR2h0RVhvckpRc1J6blVxWThNcFMxQ1o2VmtPY3FoVHYwMTBYSkUwOVQvbjczdkFOZWtLTmFlQlpZc0dRbUNzQ1NKS2lBbUJBVWtpaUtpSXFJaVVRVURCc3lTek9tS3Z3bEJBVkdRckNSQlJaQ3NLQ0tTdzdKSVVFRkFjdWJNWDI5VnY5WFZNL01kbG5PUnUwRFBjODVVZXJ0cnVyNE9FM3A2Qm5JYlVDbGM5Y0hvckRQbGpkM2tJMXZkYVdBR3JBT3FHY1gvUHZ2czFleTl6NzY2UkxwOFM3SFpidnQzTnk5YlM1YTNUa3RxODlCSmNkeVJEd1ZQN0lCMVFLVmcxUWVqczg2NHI2eXAvbU1zWnNUNC8wdWVoc2s3aHZLSkFGeG8zai82QjlPQ2hOSTQ2MHo5L2VVSDVrMmdkTG51TWVuLzl0RGsyTGw5UUtVMjFRZWpzODU0YmxrejZNRmREVnBqNG9DMHpJUFJXV2VxZjRsWC9mM0xXcFZyUjZ4TTVBZXNBeXBGcXo0WW5YV20xcjlhLzJyN2t6cVFXMFRKczlWbEdwRkpPNkJTaStxRDBWbG4zRy9XVlA4eEZqbnU1QWFzQTZvYWY0bUF4aVVFeDFsbkVrUm1DK01iTzV3aGs4ME1lcTZVMFVhZU5LTzdYRVJFbmpqNTdzNHp3UCtsbDE3YXlFZGhtOWxudHlseUxGMk9IalRQM1BMbjhuYTVXT2JJRS9mTStQMVptajZOWlk0OGtjUGw1OVJaZkl2dVhwazZPK3BFZVNoSDVtdzBJaUpQMUxCL1drR1ppblNVTHFiSi9GQ3FiRVh1ejRUMkgwdFU4clg4L2pUZWExS01VUDM5YS8ydjV4LzEvTXY2aE5oYnNwZWdqaFI2OHFURTltbEVSSjdJMnYvVS9xZjJQLy90L2ljODBVeU5VRWxza0ZHUHhobHRiS3pUVHoyMU1NWDdZTXhYQVk3Sy9semx6UFE3RFVoUExVejFuMDhCL1hmVkFIbVVhdnlMZW9tS0ZHTVRLdFowc3A1YW1QSHEzOTEzMzlQcysvbDltOG55anVHWHYvU1Y0Tlp6bUU2UEpjeFRQNDcvWEROU2lwaFFMM3ZMZktkWGl0bU1WLzdxdi9Qc05RYXV4bjk2cTFzUEY4Tlk2MTl1WmQ3QmFJQThTaEsveEx2S21WNXNwMGZocVlXcDhhL3haeTlYMWpPdkpiWCsxZlluZFVCcWlWY0paNmFudStsaFBMVXd0Zjk1NnZxZmNLRlovaWIrZzFEZCtXSGlPa0dHRFNuSUtwVTdSbEpSY29lQ0RBbGc1bjNhUTRnaVZvenFYeXBKQ3FyRktrU01yTklhLzFyL2F2dXIvVS9zWTlsQlJGM0o5eENpcVAxdkhwanIrRlBIbnpyK1dwOWhmVVhvTWNncXJlY2Y5Znlqbm44ODY4OC9zT1l1dW90ZWR4QkgwdkljUktVZXZzQVVQVTIyOU5SVVZQKzllTmI0NXpPWlhJT2M2OFhMTFdCWXIwaVRrU0twNDJyOTY4V3oxcjlhLzNnbVhiUXRFM3IxcGNDd2daSFc5cWNSWURoSWEvOGpZYkZUc0Y1OXF2MVA3WDlxLzFQMHFsSG90WmRvOUg3Rk94cXpVaVIxWEQzLzZjV3o5ajlQYXY4ekNhOW9kaDQzaHVvbkZSRG0xT0M5ZmhhVnVxekRidXFBTzZMQ1ZEZGdpS3JxdjhhLzFqK2VqUEcwekZ1Wk03SE41TWJsNXFKTlUxdmJuOFN6RjdoOG13SnhxdjFQN1g5cS8xUDdIKzBMWkZjK21ZRFd0bDQzMGxGMFJFMmt1Z0ZEVk5YK3AvWS90ZitwL1E4NmpOZ3ZXSytUOXoxYlI5RVJOYUhxQmd4UjlXVDFQNTJwczlFRmppWEtrVThGSEZBeGpabGtIK2RicFdSeTlqYmlhcm1iWVpRalgvMXJCQVpDVXVOdlFmRjlyWC85czZQYS9tci9NL2kwb051aFJEbnl0Zit0L2E5RVlLQktVR2ttMmRmK3QvYS8zYXZ6T3Y3VThhZU9QMmtRamFUYm9VWTU4aW5OZ0dwRzdYLzFRak5ldGRxQm9pQ3BkOURDV0ltd3g4WitJMnRMamFIQ1hoUEtickJ5aWNmdzFMVDY3MFJaZzZ3N0hkZHIvR3Y5SzF1YjFRMXJiWkd2N2M4amdMQ2c5ZFQreDBNU21kci81cWNtZGZ6UnhpTFZvNDcvMmthMFM5VmRIWDlUcDFISEh3dEVyaFZsUkZLWU10RW1KYnM2L3VTWUJLNk9QOC84OGNlZWFHcUxDYzFHRzRiVUJMYWZVQ2xHc1VXU1F1aW42Sm1oU0hQWW5FV3k2cjhmdkJHYUlxYUYwRS9RTTN2UUo5bE42aDZnbjBkWFV5UXBoQzZ5ZHlwbml2cjdTNkJxL0wwcW90clU5dDl2UENNMFJaTXJoSDZDbnRtRFh1dWZod0pocS9XdlgzbEdhSW82VlFqOUJEMnpCNzNXUHc4RndsYnJYNy95ak5BVWRhb1ErZ2w2Wmc5NnJYOGVDb1N0MXI5KzVSbWhLZXBVSWZRVDlNd2U5R2R1L1p0a1g5R013ZEJTSjBVSVNWSkhLMEFtanpBeVd6RzNjaUdSMTU1aUxyMVhjRDFIU3dvY05xbnhJMXlZZW9UUkVtdmE2ci9HdjlZL2poeXB2VWlqaXJYQ21ndHRrTUJqcSsydjlqOUZOZEJhZ1ozVmxsUm5ZdFZ4aElGcS94dGJHZ05WMjErTWlsVVp4Z1lTZUd5MS82bjlUMUVOdEZaZ1o3VWwxWmxZZFJ4aG9Oci94SmJHUU5YK0owYkZxZ3hqQXdrOHR0ci8vRy83SDNtaU9TYlJERmZTUEJlMUNPcytoajZvcDVzdDBvZmZ6akl3cSs0TFlNNStoRG9ESG9jcjBrUEE1dVUwcSs0TG9NR3dINkhPZ01maGl2UVFzRlgvRm9jNFZCU0JTbVloSTlRWjhEaGNrYjdHMzZKVjYxK3FOVlk3ZEY5VWxGeXBScWd6NEhHNElqMEViRFgrRm9mYS9yVXlhQjBwS2tvS2o1QVI2Z3g0SEs1SUR3RmJyWDhXaDFyL3RESm9IU2txU2dxUGtCSHFESGdjcmtnUEFWdXRmeGFIV3YrME1tZ2RLU3BLQ28rUUVlb01lQnl1U0E4Qlc2MS9Gb2VucXY3Si9HZ0xmZkZycEdNZzRjdmJnaGw2dDUrd0lacXpIYnA3RWxKa1lGQW10dnFYaGlFdG84YS8xaitwQnQ1SDlsdEtUNU9iVlcxLy9idVhJVnc1VUVHWjJOci8xUDZuOXI5MS9LbmpieDEvNi9oYnp6LzZad2dqTmZtMDR0bDkvalV3ZFRhZVhJRWZQcTNOQVJ5SU1ZemNCcE9uMUVKR1hyanF5UjB5R2N4Zy9Mc2MxVCtqUHlKOE5mNGFtRnIvYXZzYmRlSlErNS9VZDlUK04zZW1tVXM5YUZaRXJvNC9PUnFEMWFlT1AzWDhrWXBSeDk4Ni90YnhkL2dLNXhsMi91RlRaM1ZrR0JnOVMxVWVJRFE2cFRFUEx2RnhyR2g3c0VJUmhNQXlzMUtWSkNwSkNYWnFCcHBKTytZa0JtdGdpUzFWU2FLU2xHQ25acUNadEdOT1lyQUdsdGhTbFNRcVNRbDJhZ2FhU1R2bUpBWnJZSWt0VlVtaWtwUmdwMmFnbWJSalRtS3dCcGJZVXBVa0tra0pkbW9HbWtrNzVpUUdhMkNKTFZWSm9wS1VZS2Rtb0ptMFkwNWlzQWFXMkZLVkpDcEpDWFpxQnBwSk8rWWtCbXRnaVMxVlNhS1NsR0NuWnFDWnRHTk9ZckFHbHRoU2xTUXFTUWwyYWdhYVNUdm1KQVpyWUlrdFZVbWlrcFJncDJhZ21iUmpUbUt3QnBiWVVwVWtLa2tKZG1vR21razc1aVFHYTJDSkxWVkpvcEtVWUtkbW9KbTBZMDVpc0FhVzJGS1ZKQ3BKQ1hacUJwcEpPK1lrQm10Z2lTMVZTYUtTbEdDblpxQ1p0R05PWXJBR2x0aFNsU1FxU1FsMmFnYWFTVHZtSkFacllJa3RWVW1pa3BSZ3AyYWdtYlJqVG1Ld0JwYllVcFVrS2trSmRtb0dta2s3NWlRR2EyQ0pMVlZKb3BLVVlLZG1vSm0wWTA1aXNBYVcyRktWSkNwSkNYWnFCcHBKTytZa0JtdGdpUzFWU2FLU2xHQ25acUNadEdOT1lyQUdsdGhTbFNRcVNRbDJhZ2FhU1R2bUpBWnJZSWt0VlVtaWtwUmdwMmFnbWJSalRtS3dCcGJZVXBVa0tra0pkbW9HbWtrNzVpUUdhMkNKTFZWSm9wS1VZS2Rtb0ptMFkwNWlzQWFXMkZLVkpDcEpDWFpxQnBwSk8rWWtCbXRnaVMxVlNhS1NsR0NuWnFDWnRHTk9ZckFHbHRoU2xTUXFTUWwyYWdhYVNUdm1KQVpyWUlrdFZVbWlrcFJncDJhZ1dha3ZCbFJvUGNVZ1UyYlRoekNyYk9scXN1d2NHZEtjdU1jWlpEU3diK2xxc3V3Y0dkS2UxNnd3eUdoZzM5TFZaTms1TXFUWlhZOHp5R2hnMzlMVlpOazVNcVE5cjFsaGtOSEF2cVdyeWJKelpFaXp1eDVua05IQXZxV3J5Ykp6WkVoN1hyUENJS09CZlV0WGsyWG55SkJtZHozT0lLT0JmVXRYazJYbnlKRDJ2R2FGUVVZRCs1YXVKc3ZPa1NITjducWNRVVlEKzVhdUpzdk9rU0h0ZWMwS2c0d0c5aTFkVFphZEkwT2EzZlU0ZzR3RzlpMWRUWmFkSTBQYTg1b1ZCaGtON0Z1Nm1pdzdSNFkwdSt0eEJoa043RnU2bWl3N1I0YTA1elVyRERJYTJMZDBOVmwyamd4cGR0ZmpERElhMkxkME5WbDJqZ3hwejJ0V0dHUTBzRy9wYXJMc0hCblM3SzdIR1dRMHNHL3BhckxzSEJuU250ZXNNTWhvWU4vUzFXVFpPVEtrMlYyUE04aG9ZTi9TMVdUWk9US2tQYTlaWVpEUndMNmxxOG15YzJSSXM3c2VaNURSd0w2bHE4bXljMlJJZTE2endpQ2pnWDFMVjVObDU4aVFabmM5emlDamdYMUxWNU5sNThpUTlyeG1oVUZHQS91V3JpYkx6cEVoemU1Nm5FRkdBL3VXcmliTHpwRWg3WG5OQ29PTUJ2WXRYVTJXblNORG10MzFPSU9NQnZZdFhVMlduU05EMnZPYUZRWVpEZXhiNUtVbGYwZlQ4eUVNRkJ2bXZnalBPYTQwbXpZODlxV0JGR243bTF1VmNTa0FxUVBGVnYzWCtFdGRxUFhQbXdJYkhWdUt0Uk5LcEtidDd0MnFqRXNCUmgwb3R0cithdnVUdWxEYm56ZUYydjZzWjJCUFVVcWwxbXg1NzFabFhNb0FuLzhFRzdiYS85VCtSK3BDN1grOEtkVCt4M3FHc3ZlZ1JHcVk3dDZ0eXJnVVlOU0JZcXY5ejVQUi8weVNSV2R4dVprQ3FwRWQzQTBqcUNVdGsrWVBzWFplaEJVNCt3MGJWNGJUeDl5R0VkU1N4aFRpQTBYVGorUlcvOFZDS0JLdUduL3JRbXI5a3paVDJ6K0NVSFllSFdsRUQ1UFNqYkRXL3FmMnYzWDhrVFpTeDk4Ni91YVBpMkhNcmVjZjlmeERSMXdkT29mSHp6Z0VEeU9vSlkwcDZ2bi9qSFQ5bzA4MGk1L0pCV2ZLWDI5QUlsTGZYNVhhUStwUUFseFJNb1haQldkSzhJQkVKUDJTT3BRQVY1Uk1ZWGJCbVJJOElCRkp2NlFPSmNBVkpWT1lYWENtQkE5SVJOSXZxVU1KY0VYSkZHWVhuQ25CQXhLUjlFdnFVQUpjVVRLRjJRVm5TdkNBUkNUOWtqcVVBRmVVVEdGMndaa1NQQ0FSU2Ira0RpWEFGU1ZUbUYxd3BnUVBTRVRTTDZsRENYQkZ5UlJtRjV3cHdRTVNrZlJMNmxBQ1hGRXloZGtGWjByd2dFUWsvWkk2bEFCWGxFeGhkc0daRWp3Z0VVbS9wQTRsd0JVbFU1aGRjS1lFRDBoRTBpK3BRd2x3UmNrVVpoZWNLY0VERXBIMFMrcFFBbHhSTW9YWkJXZEs4SUJFSlAyU09wUUFWNVJNWVhiQm1SSThJQkZKdjZRT0pjQVZKVk9ZWFhDbUJBOUlSTkl2cVVNSmNFWEpGR1lYbkNuQkF4S1I5RXZxVUFKY1VUS0YyUVZuU3ZDQVJDVDlranFVQUZlVVRHRjJ3WmtTUENBUlNiK2tEaVhBRlNWVG1GMXdwZ1FQU0VUU0w2bERDWEJGeVJSbUY1d3B3UU1Ta2ZSTDZsQUNYRkV5aGRrRlowcndnRVFrL1pJNmxBQlhsRXhoZHNHWkVqd2dFVW0vcEE0bHdCVWxVNWhkY0tZRUQwaEUwaStwUXdsd1Jja1VaaGVjS2NFREVwSDBTK3BRQWx4Uk1vWFpCV2RLOElCRUpQMlNPcFFBVjVSTVlYYkJtUkk4SUJGSnY2UU9KY0FWSlZPWVhYQ21CQTlJUk5JdnFVTUpjRVhKRkdZWG5DbkJBeEtSOUV2cVVBSDBwczVhSWlZMWFLSHI1ZUxaaldCeVhzckp6dTltRGFRb2ZDVjdvYXYrNVZjYi8rbExHVmFMSG5US3lhN0dmL1R6cTZLdTFmcW5FU2hpVXR0ZmJYKzEvMGs5dy9RUWF6MUFLaWU3MnYvVy9uZlVDRjcwdGFsNkZicmEvOWIrdC9hLzA5UHhGcTBIUXUxL3BlbjhINDAvblF0TjY5TDBGM0xXbVZLTkgwNU1xUE9LS0dHS3pidHhqUmxtT1puc1NaeFJmWlNxL3hyL1d2OXErOU0rSVhZTW9VZnBkQ1k5UzZrSW1UanJqRUtqVlB1ZjJ2L1UvcWYyUDlvbnhJNmg3RlJFR3RjWTBBSG5yRE8xLytsRXN2YS90Zit0L2UvVG8vL3RYR2lXWFdMWnhZWCtNSFI1NDJOeUdzTmx0SEpaZEdCVVJkNEJ6cGgxZkl5RFUxZWYwY3BsMFlGUkZYa0hPR1BXOFRFT3J2NGxGSlBDZ0t0eEd3aGVWRVUrUjVLY1djZkhFTXQ2bmRIS1pkR0JVUlY1QnpoajF2RXhEcTYvdjRTaS92NjV0aWlYUmE4b1VSVjVCemhqMXZFeERxNzFUMEpSNjErdUxjcGwwU3RLVkVYZUFjNllkWHlNZzJ2OWsxRFUrcGRyaTNKWjlJb1NWWkYzZ0RObUhSL2o0RnIvSkJTMS91WGFvbHdXdmFKRVZlUWQ0SXhaeDhjNCtGbGYvL3hDYzNUQStDSi9RRGpyVEk2b2NxUDBNTkpHYWtsTHlYUzAySXYwQWVHc016R0I4S1AwZ05GR2FrbEx5WFMwVlA5NGtUOUV5RmxuWXNDRUg2VUhqRFpTUzFwS3BxT2x4ci9HdjlhLzBFS2NkU1kyR09GSDZRR2pqZFNTbHBMcGFLbnRyN2EvMnY1Q0MzSFdtZGhnaEIrbEI0dzJVa3RhU3FhanBiYS8ydjVxK3dzdHhGbG5Zb01SZnBRZU1OcElMV2twbVk2VzJ2Nys5KzFQTGpUSEpNYmhqUUdQdURNeDZnVmZJbmhCbWlDRlVZVDBZZ3FuTytTTUNtQ3VCMTRoTXJMTGxTbXJmMnNRTmY0YWdhSnkxUHBYMjUvMGNaam1MMVVCMDIzeVZsU1Uydjk0T0p6Sm9lcHdKYUwydjdYL3hRbEoyb3JLSVVJZC8ydi9VL3ZmT3Y1SVYxREhYM2FTb0VWSEdjU09QaVpKZkltWXNjZGZmNklaU3FqRnlJZWR1VjVaeTVLNnVhdW1iRFR1UFlrd1JKa3VlODFjUkN0ZkpuRnpWMDNaYU54N0VtR0lNbDMybXJtSVZyNU00dWF1bXJMUnVQY2t3aEJsdXV3MWN4R3RmSm5FelYwMVphTng3MG1FSWNwMDJXdm1JbHI1TW9tYnUycktSdVBla3doRGxPbXkxOHhGdFBKbEVqZDMxWlNOeHIwbkVZWW8wMld2bVl0bzVjc2tidTZxS1J1TmUwOGlERkdteTE0ekY5SEtsMG5jM0ZWVE5ocjNua1FZb2t5WHZXWXVvcFV2azdpNXE2WnNOTzQ5aVRCRW1TNTd6VnhFSzE4bWNYTlhUZGxvM0hzU1lZZ3lYZmFhdVloV3Zremk1cTZhc3RHNDl5VENFR1c2N0RWekVhMThtY1ROWFRWbG8zSHZTWVFoeW5UWmErWWlXdmt5aVp1N2FzcEc0OTZUQ0VPVTZiTFh6RVcwOG1VU04zZlZsSTNHdlNjUmhpalRaYStaaTJqbHl5UnU3cW9wRzQxN1R5SU1VYWJMWGpNWDBjcVhTZHpjVlZNMkd2ZWVSQmlpVEplOVppNmlsUytUdUxtcnBtdzA3ajJKTUVTWkxudk5YRVFyWHlaeGMxZE4yV2pjZXhKaGlESmQ5cHE1aUZhK1RPTG1ycHF5MGJqM0pNSVFaYnJzTlhNUnJYeVp4TTFkTldXamNlOUpoQ0hLZE5scjVpSmErVEtKbTd0cXlrYmozcE1JUTVUcHN0Zk1SYlR5WlJJM2Q5V1VqY2E5SnhHR0tOTmxyNW1MYU9YTEpHN3VxaWtialh0UElneFJwc3RlTXhmUnlwZEozTnhWVXpZYTk1NUVHS0pNbDcxbUxxS1ZMNU80dWF1bWJEVHVQWWt3UkprdWU4MWNSQ3RmSm5GelYwM1phTng3RW1HSU1sMzJtcm1JVnI1TTR1YXVtckxSdVBja3doQmx1dXcxY3hHdGZKbkV6VjAxWmFOeDcwbUVJY3AwMld2bUlscjVNb21idTJxVjVWc3IrTnhLV3RRbjNKTU5hR1BEUHRqMEFGWEc3U3J4NWJjMDRWY1U0eTJ4bHc2dCtxL3h0NWU2YS8zelp3S2hMUmtiOXNGVzI1OEVRK05SKzUvYS85YnhwNDYvNmFSQ0Nmb0c2UmVLYzVKb043NmVmOVR6ajNyK2dXRzBubi9WODYvVVdZWnpUR1BEUHRpbTkvd3pQTkhzZE1CRlpyQkZSYXFTVWVYSlEzVjF1ek1wbXlCN3VnN1RnMFJGOWE5ZFFneUpoNi9HMzd0TGo0OHp0ZjVwS0VJOHZONTBtQjRrS21yN3ErMVBodVJZSmJ6NjFQNm45ai9wZE0zcmh6TzEvOVZRaEhoNHUra3dQVWhVMVA2MzlyKzEvNjNqai9RWnZadG9NK2I0R3k0MHJTTXJ1N05VanFqVS9qQW9sRFVaZTJ5NTdCbEhqdFNRY1crV2FIZmVHZUtEUWxtVHNjZFcvVnNjNHMwQlJveVVpRXh6REJrL3h6cERkRkFvYXpMMjJKaSsrczl4SWtkcWtZcDdzMFM3ODg0UUh4VEttb3c5dGhwL2kwT3RmN21la0NObGhESTFTN1E3N3d6UlFhR3N5ZGhqcS9YUDRsRHJYNjRuNUVnWm9Vek5FdTNPTzBOMFVDaHJNdmJZYXYyek9OVDZsK3NKT1ZKR0tGT3pSTHZ6emhBZEZNcWFqRDIyV3Y4c0RyWCs1WHBDanBRUnl0UXMwZTY4TTBRSGhiSW1ZNDl0UnF4L2VxSHBoKzJNSFhCOGM5bE56aVFNU1ZjL0tGT1phRWxpdmJSY09hZEZKS2JNREIwbjZvRHhaSUpLeDlUMjhxNytwZFphdFIwWkkvNE1EcWp4MXdnTXhvUEtSRXNTS2psaktJQWEvektjREdFS2taT3VmbENtTXRHUzFQZ3pQQXhxN2Y5cSs2djlUKzEvSkFMZU5UakRUaUxScm41UXBqTFJrZ1FuekZNQXRmNXBNQmk1L0VQVStCY1I4QUN4N2dqTlYxeXBiaEdVYUVscS9XTjRHTmduY2Z6UFR6UkRwdlFEU3QrazBVWSsyekpIRzZsYWV1YWdxUDY5VTJYTVFCa2gwbWdqbjIyWm80MVVMVDF6VU5UNDEvaW5RWjExQnBRMWhEVGF5R2RiNW1nalZVdlBIQlMxL3RYNlYrc2ZtNHRUdGhCU053UW0yeklYek1xcXBXY09pdHIrYXZ1cjdhL2JiT3I0SnhIQjlWcm9LVWJHYUR4VTdYOGtqcjBnQnNVenZQL05GNXF4K29UeXE3b3JPN1pjaVNGK0FBQkFBRWxFUVZSdjZHc2NuQmtCdFJKMWYvRTJXNHpyWnRLVkhkODM5RFVPem95QXF2OGEvMXIvNGkyLzNEeDZvOHJJUnRVMzlEVWhYN0sxL2RYK3AvYi9kZndySGptd2N4RGE3VVM2c2tQN2hyN0d3WmtSVUIzLzYvaGZ4Lzg2L3VkT0lYRGRUcVFyTzdSdjZHc2NuQmtCUGR2Nm4vSkNVd05nZHpBMEtpT3VzajFpSWFyR0JnVkFGSlZpQjFWK2labG1OWmhSZm9EcTM1dC9qYjlVQm8rR1Z4Tm5RZ1V5TmloU2ZkSnpHVlZqVit0ZmJYKzEvK0dkMVU1cjBmNjY5cjkxL1BFZXQ0NC9kZnlwNDYrZU53enVRZ2RxYkZEWXlZWjFKcXJHcnA1LzFQT1BaK2Y1aDExb2R0cEhiQ1BhT3Z5S1VWdEtHSW5OT3VFOS9aS0dqRXBWa0FJYjRCTmptUmRweUtWVUJTbXdBVDR4bG5tUmhseEtWWkFDRytBVFk1a1hhY2lsVkFVcHNBRStNWlo1a1laY1NsV1FBaHZnRTJPWkYybklwVlFGS2JBQlBqR1dlWkdHWEVwVmtBSWI0Qk5qbVJkcHlLVlVCU213QVQ0eGxubVJobHhLVlpBQ0crQVRZNWtYYWNpbFZBVXBzQUUrTVpaNWtZWmNTbFdRQWh2Z0UyT1pGMm5JcFZRRktiQUJQakdXZVpHR1hFcFZrQUliNEJOam1SZHB5S1ZVQlNtd0FUNHhsbm1SaGx4S1ZaQUNHK0FUWTVrWGFjaWxWQVVwc0FFK01aWjVrWVpjU2xXUUFodmdFMk9aRjJuSXBWUUZLYkFCUGpHV2VaR0dYRXBWa0FJYjRCTmptUmRweUtWVUJTbXdBVDR4bG5tUmhseEtWWkFDRytBVFk1a1hhY2lsVkFVcHNBRStNWlo1a1laY1NsV1FBaHZnRTJPWkYybklwVlFGS2JBQlBqR1dlWkdHWEVwVmtBSWI0Qk5qbVJkcHlLVlVCU213QVQ0eGxubVJobHhLVlpBQ0crQVRZNWtYYWNpbFZBVXBzQUgrdUd6NVJOUGhBN2tOcUJTdSttQjAxaG0vVE0wYXZYaythdUtNWkJ1UjZhQUdWTlUvUXhXQzQ2d3pIczJzR1l4d0NqUklSQ2IxZ0VvdHFnOUdaNTN4M0xKbTBFTnlCQktSU1QyZ1VvdnFnOUZaWnp5M3JCbjBrQnlCUkdSU0Q2alVvdnBnZE5ZWnp5MXJCajBrUnlBUm1kUURLcldvUGhpZGRjWnp5NXBCRDhrUlNFUW05WUJLTGFvUFJtZWQ4ZHl5WnRCRGNnUVNrVWs5b0ZLTDZvUFJXV2M4dDZ3WjlKQWNnVVJrVWcrbzFLTDZZSFRXR2M4dGF3WTlKRWNnRVpuVUF5cTFxRDRZblhYR2M4dWFRUS9KRVVoRUp2V0FTaTJxRDBabm5mSGNzbWJRUTNJRUVwRkpQYUJTaStxRDBWbG5QTGVzR2ZTUUhJRkVaRklQcU5TaSttQjAxaG5QTFdzR1BTUkhJQkdaMUFNcXRhZytHSjExeG5QTG1rRVB5UkZJUkNiMWdFb3RxZzlHWjUzeDNMSm0wRU55QkJLUlNUMmdVb3ZxZzlGWlp6eTNyQm4wa0J5QlJHUlNENmpVb3ZwZ2ROWVp6eTFyQmowa1J5QVJtZFFES3JXb1BoaWRkY1p6eTVwQkQ4a1JTRVFtOVlCS0xhb1BSbWVkOGR5eVp0QkRjZ1FTa1VrOW9GS0w2b1BSV1djOHQ2d1o5SkFjZ1VSa1VnK28xS0w2WUhUV0djOHRhd1k5SkVjZ0VablVBeXExcUQ0WW5YWEdjOHVhUVEvSkVVaEVKdldBU2kycUQwWm5uZkhjc21iUVEzSUVFcEZKUGFCU2krcUQwVmxuUExlc0dmU1FISUZFWkZJUHFOU2krbUIwMWhuUExXc0dQU1JISUJHWjFBTXF0YWcrR0oxMXhuUExta0VQeVJGSVJDYjFnRW90cWc5R1o1MngzTnAyckcxbHZoUm5TR1J6Y2hEY1JodDUwb3p1Y2hFUmVlTGt1eS9WZjQxL21xODFYRVBDREpSVWJZZ2paVzNxMDRpSVBKRzEvdFgyVi91LzJ2OWJmekRjUTlUK0I5MXpqQTE1VXZhbWZSb1JrU2V5OXIrMS82MzliKzEvclQ4WTdpRnEvL3QwNzMvREU4MzBFeXVKUDNmVW96SkVHd2VMNmFlZVdwamlmU0RtcXdCSFpYK3VjbWI2blFha3B4YW0rbyt6b0ZOa2xIaVVhdnlMZW9tS0ZHTVRLdFowc3A1YW1Gci9hdjN6OStGWXI3U0NlQzNKOWMxVnpreG5qU3RobmxxWVd2OXEvYXYxaiswanRRd2wza3BxK3l2NkpjUXF4b2F4bTM3cXFZV3AvVS90ZjJyL3c3YVRXb1lTYnlXNXZibktHU1o4UXRSVEMvTlV0cjl3b1ZrZXJ4OFExWjBEaStzRUdEYWtJS3RVN2xoaUFTRG1vNVNBUWxrSVBZUW9ZbUNxZitta1VsQXRWaUZpWkpYVytOZjZWOXRmN1g5aTk4b09JdXBLdm9jUVJlMS84NGxoSFgvcStGUEhYK3N6cks4SVBRWlpwZlg4bzU1LzFQT1BaLzM1aDh5YlJYY2dGNE9kNWhCSDB2SWNSS1VldnNBVVBVMjI5TlJVVlArOWVOYjQ1ek9aWElPYzY4WExMV0JZcjBpVGtTS3A0MnI5NjhXejFyOWEvM2dtWGJRdEUzcjFwY0N3Z1pIVzlxY1JZRGhJYS84alliRlRzRjU5cXYxUDdYOXEvMVAwcWxIb3RaZG85SDdGT3hxelVpUjFYRDMvNmNXejlqOVBhdjh6Q2E5b2RoNDNodW9uRlJEbTFPQzlmaGFWdXF6RGJ1cUFPNkxDVkRkZ2lLcG5rLzgvL3ZHUHpiTExMdE1zdU5EQy9wTThtOHJQdXZOcy9mMXIrUzBDOWZmbjZYZnRmMnYvVjhmZmV2N0JpL0hjTDNDc0lJMTlwdW82aW82WUlRT0dxS3J0cjdhLzJ2NXErME9IRWZzRjdVRENybWZyS0RwVFp6dldJdXV1YlpSbncvayt6cmZpZ1kyOFc5RDFFZVhJcDR3R1ZBeUhtV1QvTlBEL3lLT1BOdnZzczNmejVTOTlxVmwwMGNXYW54NzYwMmI5RGRidkJIaWdzQU9xcDJQNVdTMTQ3TVB5UUdFSFZNekRUTEovR3Z6K3crV0ZOaFl3OGluRmdJcHB6Q1Q3V3Y3KzJWbnRmMGJjcmV4V3FDaEh2dFkvamNCQVNHcjdzNkQ0dnZZL3RmOHA1dzFLRTVIYU1maTBzdHVnb2h6NTJ2L1Uva2NpTUZBbHFEU1Q3R3YvTTBQMFAzcWhHZTlhMlErRmFweDZCLzNGL0dmVCtzMStJMnRMallMaURrRFVpc0hPUlN6aHFlbXp6Zi9VNjZZMmI5L203YzJmTHJoQUlvUTR5bjZtcHZuWXgvWm92dkQ1THphelRwNHNjY3VSUmlUTGFKc05lb3NkcmFaeDlWTVkvNy8rOWEvTjdiZmYzcXk2eWlyTklvc3VtbjdTK3Z2WCtqOVFOMUZybitUMmY5dHR0elVYWDN4eE0rODg4elF2V1d1dHg2MS9WMTExVlhQelRUYzFTeTA5UldZVVRFa05KeDJyTnErblYvc0xMZDlZSFA1VDJQNnIvMDRFSmhoL25JOWZmdW1semJYVHJtM21tSDJ1WnMyWHJOa3NzTUFDVDNyL3YvZmVlemNycmJoaXMvWGIzbWIxUkErLzFuOE5nelo5M2FFRnhjaW9QQ250eldLNEJNdEVFOHF1bnYva21BVHV5ZTcvUTliRzF2aExIUHIxNzdUVFRtdk9QdWZzNXBHSEgybW1MTDEwcy9NdXV4aE9vMWJidjRZQmRlZHBkdjZ0eHgxM00wTDlsMFp1WHpqUno1d0VGbDg5ZVFJYjRKNmtFUHFaOU15YTBGSTdhMkkvOFFnTjRKNmtFUG9KZW1aTmFLbWROYkdmZUlRR2NFOVNDUDBFTUQ4Mk50WWVjc2doN2R4elB3ZlZBTmVZUnExV0s3LzY2cXUzVjF4eFJUK0RBVTNoc2hENjRKNFppaWZ4OTk5MGs4MzArQTgvNHZDKzgrUkpYZEw2SlB2WG9oUU82TWdvVElXNSt2ZUllQ2lLQUpYeEc1SUE5eVNGMEVmM3pKclFVanRyWWoveENBM2dUSExpQ1NkcC9YdlpLMTVlb0I5NzdMSDJvSU1PYWsvNzNlOGNDOENIUHZnaGJYK2YrOXpuVEI4ekszSVlMUlJKQ3FHZnBtZUdJaDJSczhyMDA0N1NGSGtXUWo5Rno2eStkRmZMajNEMUF0U1BZVmRUSkNtRUxuSWdldzI5N2p6K2Z6ai9EKzJLSzY1b1k0S01EYktjUmp2YmJMTzFuL3JVcDlwSEgzbWtsMm5oc2hCNjBGN3hGbm51SXUwNzNybXRBdjFRN0hENmlVZG9DcGVGMEUvUU02c3YzWG41amVtbkhhVXA4aXlFZm9xZVdWM3I3bW5yWDg4aDVEeEN0MTRCeXhqMHpNK0E4aGRsS29TeTdKQjY1cWRCK2Y5engzKzBMM2plODU3WEwxQzNUTDBDbGtsZzNubVhuZkdzVC9MVXE2aDI4ZWN0MXA1OTl0a3FMN1RnUWh5T3lvVGpTSVhMUXVnbjZwbWhTQTNlV1dWeTJ1dW5YYS9sWDJXVlZiSXljRVdlaFJCQWllMloxWmZ1bnJidHZ5aFRJY3dZNVc4c3ZQRmdvaVljY1ZKSEsxS1pQTUxJYk1VOGxwQ21ZaTZsdHJSQkFxN01teWtOUzJ1Sm9jMnBtRXRQektYVUdwNDJTT0NUWEJLRHVuV0VrU2d4UjAvLytjOGQ3ZFp2MnpvMTlIU0JPY2thZkw3Z05QMGNjOHplL3ZDSFAyekhIak1meVJOelRrZjN4UHg3bVlxallwYlJBL2d5NzJoRkNwTkx6S2FiYnFxZHd1RS8vN2xsS3VaWWZxYnFhaDFzVE1xOXpEdEpCY0x6NnhxSnF2NmZWZkUvOGNRVHRmNjluQmVhNmZmZmZ2dnRWWC9VVVVlbW1tRzE4a01md29YbXBCWVhtbDZYRklFS2xTcFZTVko2V2tjWWlSSnpyZjhwUmg1WE1HVlVMRnhkWEJuYmFMVWM4cDQvbGVVVDlwS285TVJjU3EybG9JMzVKcmtrbnJtcFJ4aUpFblBwS2VFN1d2cS83cnJyMnJubW1sUHI2dnJycjlkKy8vdmZiL2ZlYSs5MjNubm4xWHE2ejk1N00yZkpBZHNUOTMvY0w0NXI5OWw3ci9iR0cyOXFYL1NpRjdVZjIyT1A5cUtMTG1vL3RQc0gyeE5PT0NIbGozekx2Sk9VN0xTV0dEZVNFZk1US1QrVFdlNWwzdFYvamc0NGk4ZVkxaFZjYkE1dU5mNVArL3AzeCsxMzZHKzgrQkpMRkQ4eGYzOVZkaHNIa1ozZi83TExMOVVicTdqUVJMdkhBNDhqamp6U0xqVGxwdFpDQzhtRnBtZVlNaTBKYy9iNjUzQzNCS2JqbjdXMjJ5dFlpdVRJTXpSNTJuWFR0UHdycjdwcXlKZzVwVFF4YVVTSnZ2WS9NVGpreTZoWXlHaURCRDdKSlRHb1cwY1lpUkt6OUV3RzBuM0MwMDQ2UWszejQ5SWlQWVNlSXFrS2ZjNTJoRG9ESG9jcjBrUG9LWjQ2LzJmOS9zejIrVXN1NVFNRDcwU1MybDBtdTlPa2ZMb0FmZE9XYjJ4dnYvMjJ4eW5wc0xsWDNKN2l5UzAvTHpSL25pNDBlKzU2aWlmWGZ6Y0tQWGM5UmZXdklTbmlrcU00UXAwQmo4TVY2U0gwRkU5dS9PKzc3NzUyMnJScDdULys4UTg5TXJyYmFLT045T2JPa1VjZUhZNTRUTnJWN2UxMWdzZGdQclF4L1pCdGVuUkZlZ2c5eFpOYi91NHg5ZHoxRk5XL2hxU0lTNDdpQ0hVR1BBNVhwSWZRVTVUeDMyS0xMV1I4bU5SKzlLTWYxWndKdi83NmFlMTg4ODNYempUVFRPMjU1NTc3T0Y2em1lazlNMUZzdWVXV09nWk5uanhMKzV6blBLZGRhT0dGVmNhWTg0cFh2Q0luRnE1SVgxaW1UeWpTUStncHl2SjNjeTNnWGVOMHlFWDZaNmgvbmpjTWhlUFpVUDZoY2xQM1RDai9IWGZjM3NyTTYzYlVFMDJXZFloMnk4OFpQMHN2dmJUQXpZcjlBL2Mvb09QbTMvLys5eUtiSW4xaG1UNmhTQStocDNqODlvL3hIT1VmOVVSenZDUHB1ZXNwSHQvL2VQay9ucTNucnFkNDV2dlB0OENLd25kQ041YU1Rc2FEZFZLcG1QRkRWODhoUlFZR1pXS2ZBZjRmZnZpaDl0T2YvWXllSlBDaWtwU0RCT1ZJbzIzeHhSWnZmM3ZhYWYzNGpLUEpZWDNxNHIvcFp2WkVFeGVhL3hmK1l6aXFmMGJqcWZ2OTZSRjBSb3IvaGh0dnBDZlRSeDExVkR4RTQvT0JEdGlTVWNoNHNIN0NpSy94SHpkMjR4bWZBZjAvYXNKNFJhVHhsbi9kb2s4dEYxeHd3ZmIrKys5UGRUT2xGTEtYUE0zRStQQ1d0N3gxcUxyMWRObG42Ui9UeU9WZCt2WTk3M21QM255WmFkSk03VGUrOFkwV1UzWWY2VTdOZlJiRnZ4ZEFLSjRHNWVjVXlPN3hqL3I5dXpqV3Y1NGVpcWRCK1FlUEc0ZnVockwrdTVwTUJsS1Q2UXhRL2p2dVNFODBSMHlkelFkYmNybFl1ZnljOGJQY2NzdGxjQVptSGJrWm9QelRwcVVubWlPbXp2SlF1elFYSzVlL2kxRTVBL3ZtR2FEOFBNYnhEck4vNEROTy9SK1lPcHNPVjRNN3VsaWpMWkllUnY0UGxaN05YekFqODNrRytiLzIycW50eTEvMk1qMUIwSXRJdVRNVEx5WTVTSERhYkx5NEpJNDZXV3E2L2JoTWQzandvWWNHSTZ0S3huNTBjQzN0ZnluK20yNlNMalFQUDBLbVkvMmxmZnZidDIyWFhtcXBkc3FVS2UwYlh2LzY5cnp6MHQzNGp2OEhIM3BRcDNFQXM5eXl5OHJkdThWYmRJYTQrMzc4TDM4cDQxMHVFTGtMTHJpZ3haUkl2TS8wdk1XZjE2Njg4c3J0ZTkvejN2YWl2MXcwWHVYcWxSOTVuM1gyV2UyT08rN1lyaUo1TENFZCt0SkxMOVd1dSs2NjdiZSs5YTMyM252dUtlSk4vNFdTQW96OHA2NmdLYldReEJYV0srVzkzQSs4Ly8zdGFxdXQyaTYrK09MdGkxLzg0dlp6bi8xcys4OS8vdE54bms2Tys1UlRUcEVZdjExaXZIUzc1SkpMdG11L2N1MzJSd2YrcUwzdm52c2NUK1o3My8ydWxIRUh6ZXY4ODg1ck45MXNzM1lwU1ljNDc1RDB3TjU2eXkzdHJydStyMTFtbVdYYTV6Ly8rZTIya2orbTFuR0QvMXR2dlZYajljMXZmck85ODg0NzI0OSs1S1B0Q2l1c29ML0RCdXR2MFA3b2dCKzFqejM2S0pNRU90YmVkZGRkN2ZlLzkvMTJIWW52RWtzc3FYVmptN2R2MDU1NTVwa1NGQVFHSHJ5VTdTTVBQNnhUQ0YvNzJ0ZTJTOG54UEYvcTB6cnJyTk4rZTcvOU5LK1FlZnZYaS83YTdyakRqdTBYdi9BbFZWOXp6Ylh0VHZLN0lwWm9UK3V0OXhvOTd0K2ZjWVo2d0EwUi9PNi8rT1V2Y2piSi85U3BVM1ZLN1F0WFcwM3ZKci9nQlMvUTluZk50ZGRtYk9KdzRvNThqanYydVBidXUrNXVaVEd2Rm5pVTd5VnJydGwrL2V0Zmw3dkd1SGhJNVVJeGU3a2tSYWY4WGRqSWRBREN5UDl1UXBWVGFpR0o2Nk9xL3hURWZtaWdHUmszR2dFWUNVb0dJVjNJa1RLRkRYMzladkw2UWQvYXRxZWZmb2JhRjVBTDBkZ2Z3cTF2eUpUL3JveU1lYjErbWp3aG5YLytkdlBOWDY5dGZJMDExMmp2dS9kZUEwN243My9OMVZmcmU2TjQwb0QrZDZXVlZtby8vYWxQdDlPdW05WTcvRC85NlUvYVBuNTcybS8waWV3YXNnYkIwakltN0xMTEx1MkREejRZRDFEUzVnTGdnaHZ0OXlNZitZaGNCRC9hL3I5dmY3dGRmWTAxcEYwdElYM2thdTFYdi9yVjlxRTBIcDV6OWpudGExNzlHdW0veGJiS2FxMnM1aTRYN0ErVWVhZW9YM3JKcGUxSDVLbXhqaDNTMzY4cS9lMCsrK3pUM256enpZVi9KRDd6OTcvWFl6OVArc3pmL3VZM2dsMnRYVmJHS0V5N3gwVTd0MnV1dWFiOThPNGZibGRZZmdVNWhpWGJOZVE0OTl2djIrMWQwai9temVLUHcwaGNOcEdUOGovd3dQMzYyZ3o2T1Ztc1JmcnBwZHB0dDkyMlBVZmVwZXVtNDNtQ0pvY3gvZDl3dzkvYlQzLzZNOXIvb0IvSCtMREdHcXZyMC9McnBsN1h5MGY3MmU5OXIzM3RCaHNJZGduMUNmOC8zSC8vOWw3V2paUTlmTjBpNDhSblBpUDV2K1FsK3ZzakpsdStjY3YycEJOUGFzY2U3UjRsVXJUdFh5KytTTWFXWFRWR2kwdmNNYjdoSnNjZDhrcVJiK0gzditTU1MvVDNSOTNDRXoxWnVLcmRjYWVkMnZQUFA5L2hCUlBLWCtoRmtFL0l0Ui80SU1iVzFkb2xwZjVnSE1FVC9IMzMzYmU5ODY3d0c0bi95eSsvVEgvejQ0OC9Yc2FVaTlxWHlUa2NuZ0p1L2RhM3R0TmtkZ0czZi8vNzMrMVh2dktWOWtVdmZKR05FU3RnalBpNHRJSHJDZW5RRkJjaDNRZzlKTzBBNXh1dldudHRQZi9CT2gyUU1SN2pOK1lUelpnTy9RRHE1Ylp5bm9WenJDVmx2SG4xdXE5dUR6L3M1KzNENFR3UjdRamowNFlidmxiemVzN2NjOHVZdjZQcXBrMmIxbDU5emRYSzd5NTFPclkvL0ZiN1NydUFuK09PTzY1OXBjVHJlUks3NVpkZnZ0MTk5OTNiRzI2NG9Td2ZEazcrSDN2a3NmWkVtWWEvNmFhYjZma2Y2aS9PN1U3OTlTbldaZ1FEYU56dWw5bElYL3JTbDdTKzR2d1A5ZW9IUC9oQk8xWEdXNVNmVHpTNzZXSWVtaWtBSTBISklHUTBCSmFSMW5Fc0tkbTR5Vk8rUWtaNmtGaVBZeDJkVGxLcGNkemt5YXVReENGVnVUM0ovbjNxckhvWjhGcXFra1FsYVhtSUlwbUJabEtIRllvZ0JKYllVcFVrS2trSmRtb0dta2s3NWlRR2EyQ0pMVlZKb3BLVVlLZG13SUkvUDVINTczTkpnN2FCSUwySEtkT2k4RTZZNm5vWG5id0luYVJUQlN3ZGRiWW9CSFM2VU5EbG94WUtNdjg4UE5MTzRTVXhXQU5MYktsS0VwV2tCQ2U2MldhYmFOazJraWRJT0dtYWVaWloyc1VXVzZ5ZGRkYlpQQTZIL3ZTbmhYOWNxTHhrelplb2ZSYkJMN1BNc25MUnVGSTdlZFpaVTVxbTNWdmVLZEl0K1QzaWlDUDhDVEV1aURDbzQySUNVeXh3UVg3RWtVZEV1S1hGdmpodUV6Qk5qYkZHWjc3eXlxdTBDeTY0Z090ZTl2S1h0M2dxclJ2VGs1bzI3TTFBTTZrRENrVVFoTVY3clNnL2JqN0EvNHRsb01IVERSemJjNSs3Y0h2WnBaZjU4Y3RxY1hyaXdlTkdqSEZoTS9QTVZyZHdFbmVkWENnRkQrMGIzL2hHelh1UGozOWNZelRiN0xQcWI4TThscEFUa1RQUE9xdWRaNTU1SlorWjJrVWx6OG1USjZ2L3VlZWVxNzNxeXF2Yy8xUzVnWUowYTYyMWxpOWNncE9HVjc3eTVhcUhEUU9MZkw3SGl3N20ybXVtdHN2S2hTM3Nzc0t5WHB6eUloQzY3YmJicm4zMFVUdDV3N0UvS3VrM2tBdE0yT2FjWTg1MnRWVlgweE9GT1dhZlEzVW9NKzc0Y2p2cHBCTlVqOThNMjdreUNGc1pMQzR6enpTTDFxc0REamhBckdONnNvaThQL2RadktPWnQxL0toZWZzYzVpUE9lYWNVOHI0Z25hK2VlZlR2REY5OGVDRERzNWc0ZkJ1bXgzL096Mm1DOGx2aDVONTZQR2J2dVkxcjVIQlB5N21FbjZkd0RMalVwVWtLa2tKZG1vR21razc1aVFHYTJDSkxWVkpvcEtVWUtkbW9KbTBZMDVpc0FhVzJGS1ZKQ3BKQ1hacUJwcEpPK1lrQm10Z2lTMVZTYUtTbEdDblpxQ1p0R05PWXJBSysyRzVtRUpkMlV2ZXljUVdyQ3J4WFMxZ2VpZDRtaUtuWWxyU2pybDkyOXZlMXM0NjIyUmRjTzRYdi9pRit2MzRKejdoc0p3VFZTbW5STkQvemo3NzdKb08wMjl4SVREWFhITnAvNHYyZHV4eHgycEMrai82NkdNVSs2RVA3dDdPTFhodEU5SlhvNy9GU1d5bnNKNFdONldBWFhUUlJkcXQzclNWOHJMNmJydkEvTGwveHNudzV6Ly9lYlU5NXpselNWLzVYT1V4L215MDhjWXNnRkZ4ZGVDUGZtVDlyUGpIdTYrNDJKeDlOaXZMSE5MbWYvdmIwOXcvbVAzbFFndkhnQXVJV1Nmbk1lbUZMM3loNVNuNy9lU21GOFlkakQrTExycW9YZ3pqWkI3cEZsbGtrZmJQZjc3UXNBeUlTa0VJN0w5dnUxM2VuWDJocGtWZjgwSjVqM2FsbFZhVThWVHlsLyt2ZnUxclJidzBsdUluT2poUzNrV2ZYUmFRZ2czeFduSEZsZlRDRWYwUXpqOHdybHh6N2RVcGpXUW42MEJzOXJyWEtYNE82V2ZoSDM1bm5ubG0xYTJ3d3ZMdDdYSmMvSjF3NHhNWCs4Z2Y3L1ZoL01VTlM1UWZPbG5GV0xEbGs2VHZ5bzFPK3NkdnRNYWFxOHRZTTQvaW43dndjOXRMTDczVWp3Zk1TU2VmM09MM1FINUxMZlg4ZHMwMTF0UUxXc2o0LzZtZlI4UmtGa2lHay9TejByOWJ1a2s2cnFHK0xyaFFya09ycnJKcWk5Y3V1UDN1ZDZjcEhrLzlGNVR5SVMxaVAvTk1NN2MzNDdVTXlSZzN1dlhkYWJITkxiLzFtbkpEY1pGRmJCcjZMTklHOUFZNU15VGxBYW1jQmJSdDNFQlJQekxEQU9QTi9QSzdRY1lOV1ZEY1FHSDhRVEg3Z0dzUHdJNzRyNzc2aS95OENEZHovcEZ1VU44bE56L1JMakgrOGZ4ejhxd3lGb3J1ejMvK2MzdjJXVmdNS0w2amFhN1FwbGVUZXY1R2VYMEw1WjlyenJtMGZnT0xmOVQxZUJNY3FSNTQ0SUYydzQwMkZMeGg4QUJnVlJtM0xjMms5cTFiYjYzamVpNU0yLzdybi85cVY1VGZCSmlaSk1hbzcvUGd2WFNSV1g3OFJySDhER2xKTGFhTUxLbGpDa1VRQWt0c3FVb1NsYVFFT3pVRHphUWRjeEtETmJERWxxb2tVVWxLc0ZNejBFemFNU2N4V0FOTGJLbEtFcFdrQkRzMUE4MmcrWWxtMUhxQ1lhYk1wc1NnbzBBSDg3WnQwajk0V2ZnR2cxcit6L0xXVzI5aitxMFRIalJodHhHNjlkdTJhYmVSZitwQU5YL2tLVDY2TnJmL0gvdC8wMVp2a3J0bHowOE55eHFiTmJJdW55NDQwU0JUQjAyY05WSU1MTjAwSnM4eDV4enRBVDg4d0FicDhEUHdwOHlxcmliTHpwRWh6WWw3bkVGR0F6ZkJZa0FvaS95akU3ejExbHMwRDd4bmdDZHZLQi91YnVIa2dybnN0dXR1aXNkQU1tM2FOUGQ1NzczM3RaK1VreCtrd2FxTHVDdUhOSTgrK29pc2xMWjRPMU16VTN2ME1jYzRIaGNsZSs2MWwrYTEwTUlMcFdsZzlFSllsc0g5NmxlLzB2em5tWGVlOWxjbi80b2dmUnAzd2drbnRyT2xpMTB1a21HcGN4NmVJREY5UzFlVFplZUV1ZVRTUzlySnM5aEYzWmUvOU9YMDlLdHQ3Ny92L25acjZaZ1JnMWZLblU3Y3dFQnYreG1aaW8yT0h5Y01PTGJIeHV6aTdCcTVBRVFuai9qanJ1Tjk5NlduRkpMS0xqU3QvdXkyMjI1eUYvZHVQV284QVo1TExpVGhZMVlwTDNBMzNYaWoydjRsQXhWdWJNQ0dWUy90bU1kYStUU1Arb2NlZzlHcHZ6NVY4YkJmOU5lTDVLN244elRObDc5c1R4Wmh4Tyt6N0xMTHFINkREZFp2cjdyNkdrc2pKemtublh4U2l4WHZrTjhuUC9sSjFXTjNyUHkrME9GRTVwLy8rcGY3ditIR0c5b1hybVluWTdhUWp5VTVRZTZtbyt5K0dGQktnWGMwa1U5ZURNakdMRjBNU1BTZjIxTXVOSzF3ZXNJek9WM3c3L0d4ajdYLytjOS9OSE9jaUh4Rm5xRGdaR29tdVJBL0xaMlF3bmpDaVNkby92Q3g1UE9YYkU4LzQzU3I0L0s3SEgzMDBYN0Nkc1FSUDdjRGxYMXlseGxYT0tUSEdHUTBzRy9wYXJMc0hCblNudGVzTU1ob1lOL1MxV1RaT1RLazJWMlBNOGhvWU4vUzFXVFpPVEtrUGE5WllaRFJ3TDZscThteWM0bkJrM2pVbnlOK2JqZkpzdGZNOGFUM2dqOWRrSldCOHp4ZDE5V1lmTXN0LzJxUGwvNU5OMUg5NU5DZjZIdGFubXdFZzlUbm5ITzIzQ1N5aTU0OTk5eXp2ZnR1NjBkd3cvQlRuLzYwdHIvSnMwN1dKeTJzM0VjZmZaU1diU1pKaDVrUHY1UlpLcWVjK3V2MjBFTVBKU1RUNEJ1ekF4QVQvS092dzhJbFk5S21IbjNzVVZuUWFCL1Y0MklJRjJULzh6Ly8wOTcvd0lQU3JzYmFFMDg2TWQyMGE5cXI1Y2tydDVORWo3eUEvOXJYdm1GVGxLVlF0OGthQ08vZjdmMXF3dzJ0UytWSkdqZGVhUEtpNzJUcHE5QmZIWjNlOTBaWmtDY3VpbkI4T0Rac0dvOVBmVkp0dUJGbzc0RmIvR0Yzamt5aXI5M2d0VHJ1cjdmK0J2STBaeXFndW1Hc3c4MVg5RDkvK09NZnFOYjg0Ujhic2tCWjJKL3Z0OSszaXVuUWVGS0hKNXZBZi96anFaK1ZSTWNjYS8wc2JoemVlc3V0bWhkMjh1bW5GaGZVd0gvK0MxOUl4enpXdnVlOW1IWTlxY1U0d2lmS3dKOGhUMytmTTQvY1NKQmp4Qk5FbGxJK3A2Rjk0T1RKcytoVHFvY2ZmbGp6UXQzNTVDY2tSb0pmWnNveWVjcTRwRnhlbmc3aS9PYzczL21PbitjOEtrK1F2L2M5dVdBVi9BTHpMZEI3R3M1UTRsaHNHMnQvSnl1TjQvaHhEbkhNTVVlSHZNYmFYLy82MTNyeGhQeCtmbmp1bTM4bng0dUw0cG1sbnVCcDhKSHl5c1hwcDUvZTdpK0xNNkpNMTA2OXRsMXcvZ1hsdDVpa1R6VHZUZVBzZ3c4OTNIN251OTlwWjVGeW9qNWNmYlhjbkMyMmZJVGtjSkd2WTdZY0l4Ym51dnp5eXpYRkExS1h2eUV6WVZEdmNQeDZVMFl0bG5MUHorMnBlbHp3WTlWWWJMQmNOKzA2dlRCRW1uWFhYY2ZMQy91SmFaekNSU245ZzVGUG5XaGVlVEVnb050MmJobmJrUTl1S2gxODhNSHRBdzgrS05xeDlpOHlXMjJacFcwc3g4MWhic2p6N2R2S2VaN0VFemR3THJua2J6UUpmNG1jUzd4WTg4TnNBL3AvVEc0c3YremxOdXNQVDVpdmxTZVkySEQraDZlcDhJLy9sV1htaEtWaFNzL2FtYjZscThteWMyUklQYmMrWTVEUndMNmxxOG15YzJSSSsyNWRZNURSd0w2bHE4bXljMlJJM1Z1Zk1jaG9ZTjhpaTVXTnlzYXFLNU1JRFN6VFVHV3lTYWVmYmcyYUZXT0k4bzZYMjZSQ2toOTFVVVc3VXNGbkhPN081ZlFGTGxYT3J1Nlo1SCsrK2VhWHFTaC9sWitBdndZcGY2V1N1bFVabHdLSU90REFCNVpncWt5bU5DWlRKZVJDVTJML2NubWlwSGVxbVVEb3JmKytWWitVd1Q1Tk9rTnNPQ2xZVlZZVGcrN1BmLzZUNnN5MzVYbi9BL2ZKeFo3ZG1iM3FTanRodVAyMjJ4Uy93QUlMcGd1czdCOCszL3ptTit2N1Ixam9KVzVFV2RGTStzaEhQNklESUU1YWlqS244ci91ZGZhNUZreDlUQ3JOMHZNcXBGSWJmWU4zcXpJdUtRd25tYWpYTyt5d1EwTFNQdFkrOU9CRGVsY2FNYnJ3d2d2MUV3ZlBsYnZrR0FoLzg5dmZoSnd0emIzMzNLdlRmSURub2t4d3NvVmNRS0wrci83aTFlVzNzUXRUNkxHOTczM3ZVLys0dzR4cFcvbG94L1RwSGZKNjlicXZVU3gyMTA2ZHF2N1Ivbjc4NHg4bFBZKzViWDhqVTh5UUJuYzhjWUdKN1pSVFQxWC9TejEvS1JsRXl1bklzUC91dE45cW11YzhaMjYvUU41ckx4dE05V0l5WjYreHhKT0hyZDY4bFV3eDJ4L0paWk1UVEs0Nm01NW9tcjV0ZWFGNU5ON1IxSHdzc3cvdC9pSDFHVmVkL2NoSFBxdzYzQmhSTVAwbStnbDVJb3l5YmJiWjYxTDJZLzVFRS9xL1had0hWL3AvMDV2ZXBHaysvdkU5Q3YrMEc0Mk9BaDlZNHFucXB5T2lUejJOTWk0RklIV2dnUThzd1ZTWlRJbVVxSks2VlJtWEFvZzYwTUFIbG1DcVRLWkVTbFJKM2FxTVN3RkVIV2pnQTBzd1ZTWlRJaVdxcEc1VnhpVUh2UU1uYUZKL2pqLytsNktqWFdoZ2w1QXBqZWduVGovakRFOVhBSUsyeXpJYnk4K2xBS01PTlBDQkJmaWQ3M2lISGllZTl0aFdBdDc3M3ZlcS9WM3ZlbGV5dDNxekJXVkQvNk16SXp4L2h3Z1Q4ekgrcnJ2djFMeVE5c0FEMk04WUVpZmljODVsSy9UaUtVbE9iM215elIxKytPR3FRSTdzenovOTZVOFpLTzZsVDN6TFc5NmkvbmFYZnNHMnNYYi9IOWdUelZsbW5xVzN5Qmd3T0puSDhYMzk2L0trY1dCN3d4dmVvUFlmNml3S0FXalJXTmFZWUV4dmNpR3ZoZVZHcVYzQUM0NVFvZC83L3ZmMDk5OUcreVpMQ3p6K0NmenRiMzdiemltek1GNzk2bGZIekQwYlhxQnZ1T0dHYm9jTzlRcFBoaTJmN1BUWGNrTUFjZm5aVDMvbWVOejB4UGh6L2gvT1QzaVlMQTJta3VLM3gzUnBicHR2dnJrZUkyWjVkY3VQTVJ2bkRmQi9qTjQ0Umo1ai9yVHducnZUV01GREV1djJNazd1dlBQTzhzUk9uaTU2eVFLQWpvVmkyalZtQ3Uwa2VOMFVsckc4QWY3KzNYWk5xY2JhMDlKWWhMamkzZVdjenRnUGZQQ0RXbjVjY0EvNS8zZ2FJMEM1dWNlT2Y3eVdBajh6eTAwWXZLNWgrUkU5MXU3eHNUM1UvcnpGbDJCV2VzR0g4eitNdjJmSVRVM2JtS2JWaTM5TVpVYStmTzBGVnQ1b1dXNjVaVDB2TUhpaWlmamJoU2FRbGhkWHdQNkMzR1R3TUNmcmQ3NWpGL3g0emNlMnNmWW11VEVCbjRqM2plbG1kVEpxY3B6MzRaMXd6TkRpKytCblNGK0dOSFBNUGx0cVg5ay9uTzZ5OHk1cVgyWGxWWmhWUEJUUjJiRm02ckNDSWNyZ0xnVU1kYUNCRHl6QlZKbE1pWlNva3JwVkdaY0NpRHJRd0FlV1lLcE1wa1JLVkVuZHFveExBVVFkYU9BRFN6QlZKbE1pSmNwb016cmdKWEE0T2JXa2NpZE41cXRqWGpidTdtTnVPNTYwbkhqQzhlM3hJb1BIRTZJVGpoY2JxSndRZ2oveFJPQ0VUK21jcDA3MHgydGE1cEh5a1h3dHowUWxQOXl0bVZIODQ5MEZUQ2xDNDgwWHczeUNpUXRrNCszQ04rbWwwOUNwSlVnam5UZ2EzL0QvSkJsRTFrM1RwM0w4NDYrR3p0dTIvT1JRWlZIVDhtVC8vc2dmN3hlaHZMaTdiRnZwZjhyU1U3UnNsMkNhakI2SUhRM2VBU21SbHZvZWVUK1NVMGc0dGVaaG1UYUtpeEhFNWwzdmVtZjdsd3Yva3A3MEpaZENua2o1a1YvdlBTSEpBeGRJYjVWM011QUg3dzZVRzZOSTJyRStnZmdEaWhVbEViZmZ5RWxDZDRNSGZGUDEzM0toanUxWHZ6cEZqd2wzeWJzWGpBcVFIUWU2MTIyMnFmL2ViNVQzWjFDV2ZmYkZ5WVJzZXVoMi9EcjFUUHdEMDkxK25TNGE4WjRLdDZsVHI5VzhjSWNhdjFGM3d5Q0NNcUgrbjNYT1dXckcrN3J3LzFFWk9IVUwvaUhqOTMrK1hJUUN3d3ZrQXc4OFVHWGtCUjd2aHRwbXg1MEtrWFF5a09KQ1U4cVJqOVZxbFYxb1RtcVBQUElvandlWTNlV1REbWhyZkNxS2FidVk2Z1lkTHBheDBST2RYSG5sVlhwTWVKS0NKMFBZMEoraHJNdktORzU0N05hL1BlVGRhdVM1L2ZZNzVQdzY1V2YrWGRyMWIzWnFTY3RVWGY5dUZiaW5VTVlsaDNTWllRUzFwR1dxNnA5eHNmcm4wUkUxTGNhNEpMTjF0dFk2Z3BzbGNjdUlWcCt1b0I3OU9zMGdDTG5GSkwzNjU4WngvRHVtdzBUL3VQakIxRXEwMFhQT09VZVEwV29KTDcvaWNyV2p6VDRpcnh3QWdhZjZPRzZjTEhvS1pWenFlRFdSVTJmaEQrOUE1czNTNFJVTDJQd2lMZ0ZRLzNqejdKQkQ1ZUpHdG4vODQ1OTZrb3ZqdUZ6NjAyNzhnVG43bkhNMXZ5V1hmTDdIOEFkcDZpemUyYytiK2IvNTVwdjBxUmJHYzV6L2NJdjEvMXZmM2svelhHKzk5ZFdubDFnWmx6VHBsNy95VmNXaW4rQVdFWGdTK0xlL1haSmY1WkJDb1B6d0h6ZThPMnJ2VlpiMUQwL1B2dmIxYnloK25WZXRJMGtzOTUvODVDZmFieTZ5eUtJNkpmVTJ1Wm5MTGZxbjdoM3ZzTDc4NWZJa0NrOHI3VWtYclpKckdQL3VscHVLZUpxSXVOLzVuenNIZjMvMDkraTMzN1RWbXoyVHBaZGVXc3UycGR5a3d6VFYrRDRzanp0VFQ2Wk05SS9qeDNpazcrdUs0T1VCUC9hb3ZDZjhIdld6NDA0N2VpYW5uV1lQVGZCYWg4MGljcE5jeEQwc0YyVDJTc3Y1NTUrWERZSERSVForbDZWa2RzdWo4YVp1eHorT1p1LzBaSDd0VjYwZGNzanNYOUtGS0o1b2NqdEJ6bjgxZjVrNWw4dEtLOG8xcHUvaVlremE0eFA1WXZkRU9hL0c3N0NjekhheVFGZzA5RHVhRXYrRkZsbzRaeUljWml2Qno1VlhYbG5va2ZndmYvbUwydkRPSzdjZnlPZVk4RHUrVHFaaDIxYldQL2g4amJRRDFGZmN3RUErdTh0N3pmRHh1czJaaHJrWnhWTnkyUG1PSnZNdGFaa214NlR2MzBvc2VHVmNLak1JMGpDQ1d0S1FBRm1IK2w4Z1JIQlpHWmZLRElJMGpLQ1dOQ1NZd2Z6akZsZ3VkQ0VNSHp3ZzNZMUl4cFhVY1FTNG9tUUtzd3ZPbE9BQmlVajZKWFVvQWE0b21jTHNnak1sZUVBaWtuNUpBY1VuRmpaOHJVM1owd3RPYVN4b01KR0hIUCs3TnBlbDhRS0hPMFZmL09LWGZLR1Y4ZnpyNFJJd2NPeFFGV1lYbkJtUktxdUpaTGszU1lzQitmc1RCS1FrbU02Sk1tSHhGR3pSakEvekh2YXpuK243bUppTzhhcFh2Y3FucnFMejRvVW0wdTBuTDhtanc0UWVjVmx3d1lWMXlzWmhoeDFlTHQ0VEhTQmhaNk1aSnpUb2hMOHU3Nys4Vis1U2JpenY5bUNxRnVQL3BUQUZOR2JCOUNqL29UODlWRTV1ZHRYRkRuYmQxZWh1Nzl0TjM5K0phU0tQOUxoUVl4MjRXNDZqakVwRUcvK05iM3hUajJzckdaU2pmMWo1TzV3czA0Q1I1NVNscG5nR25EcDdJTytzQTUrc21LNEwvTTZ5MEVMV21oRlRoaERuZlBIVzZ2dWZpUDlhTDN1cGd1aVhGTXIxMWx0UGpuTlMrelA1VGJIaEhVNzR3THNyM09oZlpSSDR0SVFYZmxoQVI1OTRwOThaNlpIUFoyU0szZ1VYL0tsOUxKV0FmbkdqQ2hnOFVXZWVvQnR2eUttelI1ays3VCtJNzJnS25rOU0veTBYc3BEeDd5dC9GaWxNV0VUZkE1c2tGOUZucStMNDQ4M3ZxMlV4a21KTEJmeDR1aXR0VDZ3em9sdCtzeFRhREI3Z2lHVDVTUjFLZ0N0S3BqQzc0RXdKSHBDSXBGOVNoeExnaXBJcHpDNDRVNElISkNMcGw5U2hCTGlpWkFxekM4NlU0QUdKU1BvbGRTZ0JyaWlaYUg3WE85K2w3ZnE0OUg1amlUUUpONWRRTjgrV2Q2bXhNVDM5a2hvNkFGeFJNa3l2V2hlY0tjRWlZZm9iL0dOcU9XN0tFRW0vcEp5ZStZK2IvNmw1SEhNVUxqVGxRa0l1R3VMRzlLcHp3UmxaV09zdVRZZitwM3dYekhKWjlZWDI3aGMvVzBUL3NOcUY1cVFXRjFIWXpqeno5NW9YM3AzbWlXRDJKQUFSeHVRQ2pVOXhlUE5ScDg2Sy81MjBiOVNzZkhlY3ZNdU5jcUV2M0V4bXYyQ1dBMDZ5K2IvNVpwdnIxRk9NSS9QTCs5cmRyZXYvUS9xa1RKN2V5azIxNmRtUW52NkJqK1hIUmVudnp6aXovYllzb0xUN0J6L1U0c25xbENsVGZFekRRai8wanpFSU53RTQzaUZQWEVCOFZtNlljNnlPeDRNRmN1YVU5L1U0L2s2ZVBKdGNRTHhHRnEvWnp4WlVJbGdjNEtJTCtlTGNCWEhaUE1RSDc0VkNoN0VGUG5HampyVWE0NFlmajhRZjR6RmVqenI0NEVQa2d0VmVaK0R4czl5a2RPOEZGQVZlZmNEaWVaaU9pdkVaVDFFWGtSazNGcjlHRjVHemRIaWlhZTlvcmlmdjFYYzN0QUU3THJuaEwyWEc4VzhtdjNQOC9UbURCdU5mZDJaVnpBL0gvKzUzdjF1UEFlOEEyOFpTSlVrS2hWZDc0b1VteGovVXVYbm1tM2ZRUDQ0SkYyYndINTljNHlZV2poMVRaN0hSRTkvUlhGaS9vMGx0bmpyN3NGeW9kemNzZEluZkgvV0VjZDlwcDUyMUxLaG4rbHRMWEl6bU5yRjQ2c093a0JjODhYTkxYNUx6V3R1eWY4aVltajN6TEROM0xqUkxKUDJUbWxYMlpWYXVKbE9ZWFhDR3NKR1VTUG9sOVFRRXVLSmtDck1MenBUZ0FZbEkraVYxS0FHdUtKbkM3SUl6SlhoQUlwSitTUjBxQUwzUWRJVXdsb2hKelZMb2VybkUxRU44emtzNTJXVk5IMisyRWxIb25vYitjUmNPSzNQR2hXM1FzWGtIS3J4MmRIS0hoeDBlT2hEOWwwWnN2T0d4R2l2dTdFMy9sbU9wbk95eXBwK0wyVXBFb1p1TytPc1RUU25Uei9WZHRKeVhjckxEblRTVTgrSjBvWW1qd0JRTHJJRGFMZitDY3Rmd0hYTHloZmRORUsvNDNnelM0ZjFLWEJEaWZRakdFeFF2NW45TnB6SDEvV2NOY21qbHp2REQrdTdockhySE5mMFdFdi9aWnA5REZxSFpRRjdRWDFPUDY4dDRvdms0NWNkRkJJK0RBekRLaEFzdWxyL3JIOGVBRXlqYzRRUDJrVWNlaHNvM3c2ZFV5VC9lbFVIKzczem5PeDNYWmM3NHZVMUh3ZFJWYk1qaGpWdThVWDNnSTgzZDdjdGZTUmVhTytOQ00yOUloeW54S05mTFhtb1hsYkJlSis5bzRualhYMy85RE81d20yeXlzV0p3MG9SOFhpRHYzQ0FObnhSMjRJclpaUmNNVkpQa1k5STI2Q0xkWGJJaUlON1ZtTEwwMG1yVDJHcmJzSVd4THY3YnhaNlZQdEVVSC9hT0psTGJ0bUY2UnhPTFpNUXR2Nk81cC9yLys5K3ZOeDl5RExnWGFqbWtmTUx2di9RVUhFc2pDNGY4VnJQRFRBcklXTEV4YjlrL1BvNE4rL1k3YkovTkhhN3dsV3lGTHZqdkpCMGhadi9LeVM1citrbk1WaUlLWGZYZkQ5cTRtaHhMNVdTWE5mMkV1OGxxMDZnakI0U0xETVBiL2xFNTJadGQraVhVL3ovNWF3YjlmTEltZTFOT2RsbVRVZVRNVmlJS25meisrcVJHL004dE0wckcyMTRnaTVtZ0xGeTA2Q2g5b2lsOVZwaE8yMDFmK0VwR3ZFZU9mTkQvL0ZOdTNIWTNuT1FpSHNmSU82RGQ3WDN2c3ltOHVOQkUzcWVlY3FybWhYZnVoamI2WDFnV3BrRWZoUGZ1b050Ly94K29mMTJSczVQd3NNTU9VLzg0UGx4STRRSWNGR1BTTEhKeXJMeklXQlFQQzZtWWowNG1TWVFOcTRMRDk4L2toaWsySHBNSnc2bFJmdmpuaG92b0F3NDh3Sis2SVg3NHg1VEZGOGxOT2x3RUFZOEx6YmpkSlUrcjk5MTNIMWxESWZTemNpeElpOVZHc2NwdzNQQXVIUzYrNTVXTEhlVEgzd252Rkc3Mzd1M2tScDB0cm9NbjN6d0dYREFVY2ZKNHlVSTF3bU8xMGJpZEk5K014Wm9YYzZTRnAvUjhTTW83K3h5enQ1K1YxZGg1d3lDbXliekZDek9UOXBieEEvSG5jZUI0OFpRVll6UGVDOFQ0aTFWWUdYRjlvaWwrWGllck1sUEg4ZjhQOHU2cGprR1NCMy9yeWQxeWhkOGZiVUNQUkhaRHY2Qk8xeGIvT01ZdXd2Qmp1a3J1OCtUcEtyZmRQN3k3eFZ2U29hNk41eDlQNHVrZk0yOFFnK1dYc3d0TjVwZmYwVnlRS3FWenptVXp4MVRvOVArWTVvdThWcE9iUGR5MmsvWU5IZDdoN3RaL1REMlB2Ly9lOHJrbWJIcFJMdVg0bGl5b05hcjg4OGpzUUh3UjRJbHRPZG9zZjliMGN6SmJpU2gwbmZMM2MraHFjbDdLeVM1cnVsamFTb1JKU2ZjMDlaOTdKaTF6S0tDenpuUVJiSE5lZ2Z0aG82Yk1nOW8rRFRobm5WRjRsQmh6MVVWREwrTnhqUUVkY000Njg3LzJqd1ZTc0RRM08wcDJWTEhqSTAvS3poc3lMbUl3QllYYmpGcCt2cU9aWDZ3dlk3aThMUDJPc3R1N3BUWTlGWXNOb0t4WVBmYkxYLzZ5VHFuQTAyQzV2YXpGNVFxRGY1TUZjN2pGOHVNZGpwTi9kYkt1SUlxRmhoaS9YL3dpdnV2RWxDWDlSRnBzYUM1WlhBa1hIY2NlZTJ4NzVSVlhwdmNLeC94dTR4ZS8rTVdpazRqK2FUaE9WbS9FazdIOHY2ZnduMjBQT3VpZzBtbEh3bUl6L0sxMTRSa1BtVE9hZ3RJM3Z5RlRueVJlZUVLcE9ocEN2clpBeFNSWkVDZ1BLRnNLSHZVUEMzOTB0Ni9JRTF2a2lmZGVXQjR5WitDSnB0aGVHcWJPNnQxTTBiM3M1YThnckp1bFBGV1VBVnd3L0hibDZ2cEVjNUt2U0ZrbXNFSnc0U01zT2QvTkdNOVBjSEtEZHpLM2tJdG1ySmlIOGt4WmVvcDg4dWRCemE3L2pxYmx5MVdRanpyeTZNSXRMelQzbE44Skc2Ym00cGp4Zis4OXRzZ0pFK1F3ajhuVGlRVVVjLzRmNVAwZE1YQXhvQTJLQzAya3RGUjd5THVaK0kxMzJENVB6MksrUm5QdTNmZ1RGeEMxLzAzQlVCSUR3MkE1SGRmb0tQNU9xdkFrenBScWtZYmFmOGdzc0dVZXdkQmh4M1JoSE5RN0xFcGpXNW4yOGl1djBEcUgxeTF1dmRXbWFTcWloUFh5N1NoR2lDRVRaNTNSTkpBdXUrd3lmYzhTSzBQaVNZTWlTcGpFWnN5bm45OTJteDNuMGNjY3JmVi91KzNlL1lUOHg2bXpYRUVUR1REK3E2WUZ3WTQrWnVoQ2MxZU5GNTlvNGlrdytvdjU1cDlQanJ0ejBFbkdGRXV1UUR2Mm1MMWJqczk3NEhmWi9jTWY5bU9uLzJQbGt3K3dZZkcvNGEzclp4akYrb2Vuc01nUG4zV2dqaWxpVHZRUEhmQVlVN25ocVozcXBLeGJiUEVHZVFKNGNIdmhYeTcwQmVZTy9KRzhqaUQ0OGtJejU0N3B0WmltdlA4UHZpL3B0L0NWZHBlWFJaeXdvaWkyNkI4cm9QL3hnai9vWWtGNjBZYmprZjhkZDhSTnl6RzlPUTUvZUpJOGVzdis4MCtUZFppYSt6dDVGeEd2aEV5WnNuUXFYeU9MOHh6UURWUEh4WmgrSWdUK3NRcnZlM1o1cnl3Z2VIUjc2V1dYK2p1Q0g1U255T2liOGZrUDNjUXRubWhDOTNwWk9aMGJqd1lMM0tCOHVLQytENS9Qb1lIQWdvNXJWQ1F1MXVFTDc1THE1a2tTSThIR3lzSDRIQXkzVDM3eVUzb01XOHBLekUvRS80bHBzYnpsd25rQjhqeEhQdStHTXVrN21zRS9wODRDNDJyd0l0aUY1aVJkQ1I1MmJDZ0w4dm1ZTEtKblcweVZWQjJDTlRWUWZodnp4ZWhKak1Fc0E0ejFXQXlJVzZ4L0dVOXJwSjVaVkE3d0FlZXNNNHFQVXZWdklkU1l4TUQwSWl0VCs3dTZpSTk4RjhlYU1ENG1wekpjUml1WFJRZEdWZVFkNEl4Wng4YzRPTlhEakZZdWl3Nk1xc2c3d0JtempvOXhzUHZIZDRJNGtLQmhvVUdpQTFRNlFzWUwzenhSNytlWU5lTngzYU5WZWVEZ295cnkvYnpOT29UeEMwMTU1NEpiUkdQcUxNcDdzWHp2RU50djAwdjNXT252Rm4vL2pqVk1WbDJWcVpPNGE0ZzQvZTFpZTNKMTU1My9hYytTazRaenp6MlBMcHppUklFTEQreVUzcm1JL2dGVVdYYTQwOG5WK1k0OFFsWXo5Rnl5LzgzU2sxWjlHZDd0M1J6ZE1NaDAwU29IWnpneHc4VVM0bkxLcWFkb0hzR3NNZ1lockFpSUozWjhXb252NlExL3ExSStsU0FuUmNodks1bXFSdjkyb2RtMGgyQXFXY2VCVDUyVko0cllvdm4wMCtYcHFNUS9UNTBkUzRPTXJVWjN2eTRlcE1sOGg2bFlHQnhRei84bVU0MlFJNmJsNHBqZS80RVBsQTVTS3F3b3VPaGlOcFVKRiszWWNNS0Q2YkQ0WGxuZTdPanduaFhyQnQ1andkYS8wRFJYRzIxa3k2MmpMV25xVkVCZkRFaVd2NGNLSjZDOFdkRjlWMDRkeU81aVdZQUw1Y0JkY0g1akZlK0xROWUvMERUL2UrenhNWTBGYmhoRi84d1ROQjJTcWlJZk1jYWJkWHhNVHRWRnF6eVFPS29pbjNNaVo5YnhNY1N5WEJtdFhCWWRHRldSZDRBelpoMGY0K0FVMTR4V0xvc09qS3JJTzhBWnM0NlBjZkIwKzc5dTJqUnRaMnZMUWl0RGVXTlJHN1NuVlZlMUU2NGhUUGFhT2NObHRISlpkR0JVUmQ0Qnd1RGJmUFBKRXl6VTlkTmtOYytoRFF1V3dZNG5SZy9MKzJ6SUM2dk80dGkzMjI0N0s5dUFnNmdpajNkQ3JhM0ZxYk5teFo1UE5QSEV0THZaMU5uVTM0bFhmTThTcTJvalA0NC9NUTN5dytKcXNDKzBjSDVYYmYvOWY2aS9DL3BVMjdML3YvLzk3MnBEbXZocVI4ejNDbm0vN1ZUcDEvRzVLV3lhMnJLSU1OVi9GeXVxU2w1eHNaOElRaGx3OC9BZHNpQVRzK0E1QkhGY0JJbUxNZVdqTmNSK01wVVd2MFc4ME1RN2VMaG92dXZ1dXhURXZDRmNmZlUxOGlrY2k5dTU4ZzRyUHZXRm1WVjRPamEwL1VnK0g0TXlZTlZWSE9TZE12MTVWbG1GR0Q3eDdxZm1IUjFJSnRPbVRaT1ZnazlxTDVOVmNiSGRJMCtUOFNUMHpEUFBVam51NEI4WGhmRHhqbTIzamFaQkhoZG93UDVjMmcrMnJuOHUxbVJQTkMyTDM2YlBtOERXM2JCWUhqL0xjb0tzUlRLMFlmekRGUGdMNWRNaE51MDBGN2pyLzRjL2xQb2x4N2VHZkI2RlcwYTNzZ3F0M0dDUzhUZFBuYlZ2V2lJTjNvTis0RUc3K0dkYVVydy9lb2FNM1hhRHhuTGsrTGo4c3ZrR05QQ2NPb3ZWK3JIUi8xenhpYVphc3RVV0JDeWZhSDduTzkvUnN1QlRYdHdzTCtZb2kvN0pqZXN6ei9pOWorbVlRb3V5ckI5dTBtWjBxOTlNUmZuek81cmRIT2xwbUhiUktrY0hLVmxVUmI2ZnExbkh4K1JVWGJUS0E0bWpLdkk1SjNKbUhSOURMSC9MakZZdWl3Nk1xc2c3d0JtempvOXhjTDdRSEoyQTkvMEN3bGxuY283S2pkTERTQnVwSlMwbDA5Rml0b0J3MXBtWVFQaFJlc0JvSTdXa3BXUTZXc3dXRU00NkV4TUlQMG9QbU5td3F1Q0M2Vk1PK29SVEdoa3BPbU0wT3Z4andaKy8zM0NqcDBNT09mdFJma2JwWStJU1UwcnFKZTJlK08rLzZhYWJhS2Y0ODhFbCtzZGthWHU3MFB6clgrMmk4V2MvazZsSFVsWk0xK2x2WSswUE1NaW5lT0RsYzVRZkg0U0dEbm5oSTk3bE50WitVcGVVbnlUdldyNjNOSG53ck1SMkVtTlRneTYrdUw5U0tLYUhUazRyM3RxcXRKS2RCOHVaRVQ0NmFoV1podFF3a0Q3NjBZOXBtYmFYOXpYeVp2Ry9Xd1ovL1lhamRMWVh5dmZZc0J3NFZtM0RrNDNqanJNTHNwZ0dKd3RMTExHazVvZFZDcm05OFkxYmFKcWYvT1FRcXBUQ1A1NGtJNmE3Y0dXK1pJRU5VMmRod3hMa0xEOFdBK0pDVm5FMVFnSU9QTkJPTnVLMEdpeGdnalQ0SnQ0ZGQ5ZzdObkREYUdBUVJQM0hDYW90K2pNbTA1YzNWTi8vODgyMHVCVEJtbXBNRm9XYVIrMTRid2FiTHQ4dVB2QTBOVzY4QVhLa2ZQOHZlMnpsS2JaTlFmcWNMQlhQamQ5VmZjTWJYaThMUVVEclRwWDk0QWV3Z0ZBalU2N1NlNkNDc0F2TlNYS2hPVHlWMkJZRHdsM3pIY3I4ZXBJb2ZIdmk3YTg0VnMrSERNdEJhdnBTSWhhMCtyZlloQWc1NjB3TW1NYXNvd2dpMDVDYWlSSnVPT0ZEOGxoa3lqNXhrT01QMjhZNkZWMFdycEtiSXFOL1orWVczRHBMRzJucDMySE9aUDlCcGUreW9mNi84NTN2Y0RVWkxFNm1uemVRcDJueEpOMFdBMnBraHNoMkFwMSsvNXc2QzMvNmpxWW5OV1kxUHRIMEMwMEgyRTFkNlF0KzhwTkQwK0dOeVN5UUxiVHRmbERlV2VUR0ZIak5oYTkrNEwwNTFuOU1uWVgvRDh0cTFQblFtYXJWdFFSZ2Y4OTdNTjVrUGZKSEJEZEo2eFpzdnozNzlpNEdTTnY0Y1hwY1FPQnBzQ0V6L290ZitLTDBrWlBrWGNXdG1VU1BEZjV0RzB1ZmlwalUycmVDSFNiTW1DeW84Nmg4Ni9nVmttYVNYMmdpOTdYWGZwWG1FOS9mdDZQSFFqb1B0L09uRlU3UGs1dTdtRUdFN3l5akw1ODY5YnJvUUgzODhRS1pXaXI1WStWYjFpRGVzUDJ1ZlBxakd5TXN0dk9HTjlqdmdwdWgyUEJ0UjVScGtVVVhrNFg2d29WVUNvVk9aeGIvRm5OTmtuWTVWdFRPbTc1L2ZPWlpaL1l3LzVUdk45cHJNNVB5RTAxQjhSM056VitQQzgyUVoySlJqMUgrRGVSVE5HaWJlVFArODUvL2doNC9QblgxbUEwaUlaK0liL1VHKzl4enl5ZGhwTHlYL0MyZWgxajBQaUdMK2NDR1Q0YnhVSEN4YXpkOEpyVzRzTStiNVgyZmZCWk4zNU9XWS96ZTk3NmZ6UElac2ZSNW4rV1dXOTZUSUlVdUJpUSs3QjFObXNaa1ZlY3dkUlpxUC9TeDFsNmZrU2VhTW4yZDI0MDMzcURuZjVqeEVEOHJaUGF4OXUvWFg2ODNIVkEvOE9RZDIvVnlzd2JmV2NlTmFkNk1JUjd1c0dZR3lyOEtickFGLzRicDdoM1FOWWhNRzZsQlNpa21ZKzBOQ0dlZGlRbUNqNDVhUmFZaE5Vd3B4WFRQRFAvU00zV0s2S0l6c2RRRlh5SVlrQVFwakNJa3VXaVBDaTJBamd0TTRUTUtaY3FubjM5ZEtHakQxMm9EUWlPSy83Tk1ubGxYT2NVVHQxSGJqRnArbnRCejFWRDlMY1B2cjFObnBiejhMQXM2STViOUo0Zkl1elJhU2NaMEZWaDg0Qm1ERmUxbm5IR0doZ1B2VlM0cjd4aEF2OHN1dThnSnlEOVl4WFNBMElzeXNkbjdjK0k4K0kveHhFa1JQdHlNZkhDSCtJSDdiZnFsRE1mNjdTMCtmWVVkRndweGU3TGpqeE5MVHRuNjFLYy9LUmRpZDZpN2FkT20rYWM1TmcvVGVMNGdVM2x4WEhnZjlhQ0RmdHcrS0hkNXNlRnB3dHF2WEZ0dEtOdURlTnFZRG5hTExiWVVQUmJIT0VTeGJoQUozN3RFZmpwMWxna1NhbkRxYkhvL3c0NWhydmJ3bngrdWk0UGdpZkpCUHo3SVArWityRXhUWW5ZUFBmU0lmQ2ZzeGVwbnJaZXUxZjVCbDhhWHB5UnlJdk5UV1VocG5uVFIrTGs5UDVzOHk0VmplbEtJRDJQaktTZS8yWGF2ekE3QWdnN3d2N0tzUFBud280OW9HdDZ4OWNXQTRGeit0cExwT1NnN1Z0VTlTMDQ0OENRQ0JrNmQ1V0pBeU9US3E2N3cxZmJ3TFZndTAzNmJmQzRIM3hLRno1bmtZb0QxRWZsZ1pXM2tyMDgwVTd6MWdKTC9QWFM1ZTNrUFNENWprN2NDNkhFS1RJWjJ1RExsMDYvL3MrS1VwVUNvQnZWVUIrcFExVDF6eW8vMytYSDNmc3FVS1hLRDUzUXRIUmJFNGlyUytHUUJwcFBHOG4veGkxOW9YL2ppRittS3hpa2NIcWwxWkNYTEY3M3dSUzJlK0QxWjR5LzZHSHlRSHUwQWJaRDlMNmJ6c2syaTM3YWJQM0trOG9kdlFLSjlsRk5uWXlua2tGMTBKaThHSkw2S3FiT3BoUHBFVTJ4SHhYYzBVM0krMGNTNGdnM2x4K3dNdlVFbU1jWUpQRmRYdmVtbUcyVWhzbmRxbVdhZll6Yi9KQVRTRFU2ZGhTRnR1SEdNV0tCOGUrMjFsNncrYXl1MjRrYm1SOU9ua3VhVTFUdW5UcDNHSklubWNxb2lpYTlaNzlXYTN5dGYrVXIvUkFqNlZVeW54UXdPM0lqQVUxSnU1cHNYbXExL0R4UXpZUDc1ajVzOXJwZGRkb1dzYVNBM2duR3NVdjUxMW5rVnM5RHZDME9QQzl5VFRqN1IrOWw3cEF3WVkyRmJRcjYveVFXU2RrNjZOZVVwSEdaNDRMVUdiSmlCOHJLWHZrengyK3JUUnRITDMybnk5SHVtbVdhUi81bGxzYis5MHdJNVk3b1FIbVllSVgrTWYxZGRkWlhrSXUxWmZpdzgyWWQrbTIyMjBjOW1JSC9jRERqdnZQTjhFWjlUNVpOWmlvZVJXNHFqaVdQdFJsZ0lUbWFmYkxubFZyYnliTUtkZSs0NTlrUmNmTUFQUGpIR05MelFqRk5uazFISmhYTFRtMC9IM3lVcjMwK2RkcDNxTVQ1OVZWWU94dmMxa2VkeHh4N2o4Uit2L2VGN3RNRGovZUhmblg2YTVvVnB5dCtXOXhZeFJSZTJPSFVXUmNTWUJUMFdyOEw0eTV2dU45MTRrOC9xV3ZFRksraTN1SkVoL092VVdVbGpVMmR6b002T1UyZHpRL1J4VUE4bzdKRFMzOUdVejV2a25OcDIyN1M2UFBxcVUrU1ZKdHdZeDNiaGhSZkpkN1R0dkczVHpXUTEvTEFhTDhkaHRPYy9YL2dueGFPZis3UXVlbVMvVHpGMVZoSGNQWFA2Znl0UmpDYkxXTklTTVdPWFAvZE1SVFdKemJaVGdGaldzcVJ1NmFvcEc0MTdUeUlNVWFiTFhqTVgwY3FYU2R6Y1ZWTTJHdmVlUkJpaVRKZTlaaTZpbFMrVHVMbXJwbXcwN3EzVHhJa0ZwcFdndzhBL1ZnUERIVUhiL3J2Ky9hQ2Z4UEp2Z3MrYlNEbDRvZGt0djEyOFRTcFdzdHQxMS9kNStkSFI0czRWMzRGNzI5dTM4YnVkbUZiRTdmZHl3bUR2RDFpSGpsVkFjZEhGT1BMQ3NPc2Y2YWtEanlkUnVEdUwxL2tlOUFBQUZLWkpSRUZVZEhnUEFoMGR2bFdIazRhVlZscXgvZXllNk13bjZRcDF3UHNXTTNGbG1UZlVoQm1OKzVBb29mQkpJSHdZR2NjeWVmS3MrdFFTSndUd2ovZFkvL2t2VzhGUjg1WE9HeC9MaGczNHVlVEVEdTlYc1B3b0I3NXBGZjF2bWU3bUgrSjMrSGtNWS81RUV4ZWF1ZFlaaDVNejVLdFBORk9TNjY2ZHFycTU1MzZPcjZxSTZVUnp5MHY3d0dLZ3hTZGhvbjlFQXdzanJMalN5bjZjV0VtUXF6d2kzUWRrV2kwL2VBNDhUbURlOWE3dERDK3h3SFNzaFdWYTI2eXpXSnZCdDFUNW5UQWNHaGM3NElVbS9XT0JsVHhiWUpMZk9PQUFweGVhcVd3bzlhOS8vUnVwVDdhcUlrNk80Qk1mb2NjeDRoaU83RHl4NXdYeCtwMG5tdlNQeFlEZzM2Zk9KbDlHaUtKRU9mOFNCUndDSVIxRFYwM1phTnpIaEVTWkxudk5YRVFyWHlaeGMxZE4yV2pjZXhKaGlESmQ5cHE1aUZhK1RPTG1ycHF5MGJqM0pNSVFaYnJzTlhNUnJYeVp4TTFkTldXamNlOUpoQ0VLVDQ4ZTFjVlAySzZmSjMzUlBQUFlWTlZGWkNiQXhlbjFnWkFrcmE1cVV5RnpUcGIvUEhLREJ2WHUrK0dkdnk0bStrZXFYT3JNV1c1NWY5d3h4NmFiZ0ZqMFk1WVcvYTlPWXhkZmFDdGM4SXUrY0tHTDQ4QWlNZFRsM0VwTjlqclczaW16TXhpTDJQOHhFejdSUENZOTBZdzU3Zm8rdXhGMXFOeFlNNzN0RDVKVlMzbVJnS2NvbUIyQ2l6ZTBiZlJIcDhtMFNkdnNTSFRxck5qMGlTWVBPam9TM2Y3cEloQjVJQTZJd2N5eStJbjJGOUtuMjlUZWVCVE1DTFRNN0dhNU9GeDU1VlUwTGZwL2ZISkNwMm9Lai9GQng5YVFCRDRRVythRUN3QmNNQ0p1ZUZxM3NveGplTDl5SmttUDh2MC9mUDlROE0rVjN3dzNiZlVYbDZzUWZrOVNqMWxlWmRHNHlFSXp5QWYrejVLTEVXNjMvdXVXZEpQV3hwLzV4Ui9HVDF6UUlmM0tzbkFMWG5mZ1lZSWVlQ0JuSjAzU3AxZUlFZXNNYmt6WU56UnovY083a0F2SmI4UGZIL1VmbjR4amVYZmZmWGNlamxQNm93THkyWEpqRVRkR0VDTWM0eXFycnFZM2NwQVBMb1krLy9sOU5jODhabURWMmQrcGJ2TTM1SGMwbWFkU3lSam5EaGova005TVVtNGJJMnlLTVM0Tzk1SEZmWGc4UnVNKzVqWW03ZjRSWFowVmVlRWZ2L21jc200RWZuL2NISVZPbjJneW1XU0ZCeEc3N29wekFQdjljZjZ6b0p3RDhDSjNVWGthZkZHeHVyOThaMXFmYU1yblRZckZnTWI4aVNiT0lXTDdteE5qb1B6K3ZVMzgrenVhY3E3QkRTWEV6UWpNWnVEdk5xL1VuWG1sZmlEK09OYTE1RVpFdVlMMG1MNzcrK3BYMncwV1lMQWcxK3p5WFUyVUh6ZW5vTk1ubXRFUitVQXR3bGxCMldqY1oweTMvY1h5TTMxRUt6L0MwRlZUTmhyM01VZWlUUGRNODU5cWoxUUhyUUg0VFlYQmhwKzFZRTJoKzJCVG9NcXBDcVUwbWdjeVFkVXFkR2FKKzFaZ3ozYi9jdkxRYlBQMnR6V3ZmTVVybS8vMy83N2R6RFhuM0I0M0MzZllHNXRDS0lMS00wNzhEenJvNE9hcXE2NW81QzVrOCtJWHJlN2w0Ry8rdGE5L3Zibjl0dHNhT2NGdjVCdFZNanFhNWFpamoyeU9QZWJZWnRxMDY1ckpzMHh1NUJNV3pidTJlMWNqaTgwMDU1MXpkblBDaVNjMUs3eGd4V2JIN2JmM1BLKy9mbG9qaXc0MXZ6L3pUTW56OWtaV29tdFdXbW5sWnFlZGRtamtmY0xwcm44eUpiYzU1Q2NITjMrNjRFOXlQR1BOa2tzczJjaEtjTTJidHRxcXVmdWVlNXF2Zi9Vcnpjd3pUMjQrdDlkZXpleXp6dXIrL3h2MVg2YU1OdkpSNjBaVzFHM3V1ZmVlWnRIRkZtL2UrdWF0bXJlKzlXM05iRkkrSGNhOVRiWE5KWCs3cFBueFFRZnBzVC8wOEVQTkNpdThvTmxrazQwMC9wTm5pY2ZhTkljZWVtaHo2V1dYTlZ1LzlhMk4zSW5Xd0xQOW5YN0c2WTE4MTZwNTZVdGYybXoxcHEyOGpQaDVwazI5dHZuaEFRYzJTeXo1L09ZRHUrMm10dXV1dTY2UlFicFpjSUVGbXIvZmNFTWpVMXNiZWIrcGtXK01TUjVyTlRLMXFIbkptbXQ1UHZ6OVFXVlFiVTQrK2VSR1BvSFQzSEREalkyYzlEVXZXV3ZOWnB1M2JkUElZSi9xdEtYUTZpMi95YTkrZFdwejBxOU9iaTY2OEtMbWtjY2VidVNwZGJQeHhoczFPKzI0VXlQZldmVTBWMXh4WlhQSUlRYzFjc09pMlczWDkyZi9VdEJEeFo5TTEybms1S3FSSis5U1QzWnE1TE1relhubm5kdXN2OEY2emNZYmJSeWNOczEvL25OSGM5amhSelRILytMWTVqOTMzdFhNTi8vOHpicXZXcmZaWWFmdG15V2V0NFJnNWVqMEFDYzFsMTkyZVNPTExEVXlKYW5aZWVlZGtrMStxUFJiblNLL0orcnBtaTk1U2ZOV3FWdmNHSDk1a1VHZ0NheDVHc0xZc0ErMjZOK09nN21DQ3JEMnZ4Ny9HSm5JejRqeGx6TzlSajdGMGNpTk5XbGJOelp6ekRacjg5b05wYTd2dkhPeitLS0xoVExoTjI2YVh4NS9mQ01mbFcrV25ySjBJNjhMcE9MWjc3LzN2dnMwRHo3d1FDTUxoMW5iaW9VWC9uOVQvanZ1dUwwNTdHZUhxZis3cEgzSUt1SE51dXUrdXRsbGw1MGFPZWt1NnArc0dONzg3TERER25rUDdRblYvd2NlZktqWmQrODl0WFY4K2pPZmJlYVpPNCtOS1B4KzM5cXYrZGN0dHpUeUZLV1JhZnFoZEczenkxOUlYQzc0by9wYlk0MDFncTFwYnBFMDZIL2tDVThqbjcxb0ZuN3VRczM2NjYwdmJYZG43VnRpVS96VEgvL1FIUGVMWHpacnYycWQ1dld2ZTEwdi91a0Vwcm5sMWx1a2ovMnA5RlVuTmZLT1hqUHZQUE0xc25LNTlzVlRwa3dwL0ZNWUZmOUhIMzJra1lzQzZiTisxdnpqcGh1Ym1XVk1YRy85OVpzZDNyMURzK3h5eTZUazl2dFBtbWttbGVVMGxkazJHQnNQK3ZIQnpSbFNqK1NKZUNNWEVJMTg1cUtSOXhBYldjRlRmeDlaZUs2UmRRNGFtVW9ya2JTOFpHcGxjK29wdjI3Kyt0ZUxHb3duODBnL3U1R1VZYWVkZDVIZmQ2RmkvTG52dm51Ynd3ODd2Skh2SERaVHI1MnFlU3dtNDlWV1cyMDVPUDdnNERCdVlCeVNwL1dOckwvUXlJVmFJeXVYNi9uUDh0SjM2b1ppcEs1UW5tSTNoLy9zcDgxcHZ6dTkrYmVjTjh3KzYrek5Nc3ROYWQ2eDdUdTAvOGRoTS81TTQ1bUUvayttcERZSHk3aDYvdm5uTjNLQjFzajdqbzJzNWRCc3UrMDdHM2sxcFpIWE9UU1pYQnczQ3kyNGtCemY3K1MzZTIwanM0Z2ErUmE4SHBDNkNzZUcrb2Q2ZjhTUlJ6YkhIWHRjYzd1MEIvbmtpN1NCZFdTOGZrdnp3dFZlNU9Xd1krcnY0KytQZG4vY2NjYzFjdE9ra1l1NFJsYnpiZDc3dmwyYkRkWjdUYk9BSEpNODBXeHV2dkdta0tjY2pQeGRkZlhWOGxzZjFKd3I0OWlEMGw0V1gzd3hPUWZZV01iVHQ4dllPSC9oOUtTVFRtcmtLYTJNVThzMTh2VFoyNytzT3R1c3U4NjZVaThXYW02OTVkL3VZeTVwYnc5SSs1QkxJUXQxS0w5TW5aVnpnT1VhdWFuZC9PM2l2M2thT01SNTFIbm5udDhjK09NZk5WZGRlYVhHZklxMEFabENyWFZEWG8vUjQ0cmxseWVmMGlZUGJZNy81UW5OelRmZjFNajdvczFIUHJwSHM0TFU5NlduTE5QSUU4M21za3N1RFg2cy9OUHoreGRCQ0VMMFg4ZmYvODc1aDE1b2hwaG5ObFFtVTBaRk9pV0tLazhaVHBmYzdvdzJpcUtuOG5RZEppUjV0dmlYUlYxa01KbWxYMXpWeElEVStPc3BlUXlKVjU5YS8veHl4ZVBqekpQYS9xNmZlbDJ6elBKeW9ibmdnbzFNRlV1L1FJMy9VeFgvOG9ZREcwQ05mNDEvT2wzeVp1L01rOXIrYS8yVE5wZk95OWo2RU9CYS8ycjkwMnJoemM2WjJ2NDBGQ0VldWVHVVhBOFNGYW1OUlpXbnJ1MXZSdXgvd29XbS9Xcnh0M1BlR2Y2YVFhR3N5ZGhqeTMxdnhwRWpOV1RjbXlYYW5YZUcrS0JRMW1Uc3NWWC9Gb2ZVcTZuQWlKRVNrV21PSWVQbldHZUlEZ3BsVGNZZUc5TlgvemxPNUVndFVuRnZsbWgzM2huaWcwSlprN0hIOWxURkgwK2VsMWtHRjVvTE5MZkowK1NuMnI4Vzl2K3cvTlcvUktER1h4cWNCcUhXZjIwUVQxMy9VOXRmYlgrMS81RTZVUHNmQktIMnY5b2h6cGo5cjAyZDFaOUpkalplcHNPRkxBck1hUVVyLzhvNW8rcTg2K29IWlNvVExVbHdrckt0L212OGEvM1R4c0NXa3h0aWJub2xnRzFIYUw3aVRHMkx1WlFOajlwZTNvL1QvbnpxTEo5bzl2eUZZMVFuOVBUaytBKzVEL1FkLy8zeVYvOGhBdnhwcVJxVXFheS92emJPTWd3RGRWZ0F0Zi9UR3NXYTArdWp4cTF2TkFyVkRKaExvaVdwOFdkNEdMYkg2ZjhKVTlwTEs5cmVlRUJRR1hocWU3OXQ5Vi9iZiszL3l1YmxqYVZvZlFOOTE0elYvdklUemRDb1l4RllMdEpvSTU5dG1hT05WQzA5YzFCVS85NnBNR2FnakJCcHRKSFB0c3pSUnFxV25qa29hdnhyL0ZPbnpqb0R5aHBDR20zVHJwdldMTFBzTXZMdXlBTDZmbXhHUjVUeG1yNlhTVkRVK2xmcjN4T3NmNnhsdVJabGpqWlN0ZlRNUVZIclg2MS90ZjZ4dVRobEN5RjFRMkN5TFhQQnJLeGFldWFncU8ydnRyL2EvcnJOWnR6ekw0SnpLOG9jYmFScTZabUQ0ci9jL3ZLRkpvOElOUGhYZFZkMmJOL1Exemc0TXdKcTVYRy92M2liTGNaMU0rbktqdThiK2hvSFowWkExWCtOZjYxLzhaWnpiaDdUMi83bDIyYk5KWmRlMnN3eTh5ek42cXZMb2sreTFmWW41d3NobElOczdYOXEvMXZIdnpyK2orb3B1cDFvVi9aT3BXL29heHljR1FIVjg1OTYvbFBQZjBhTTFOMUcxSlc5SmZVTmZZMkRNeU9nWjF2N0t5ODBOUURoUkduRVZhNUhMRVRWMktBQWlLSlM3S0NTNnAzME5LdkJqUElEVlA5ZS9XdjhCKy95eGZyQ3NkcnFVcWRHVVZTS1hhMS90ZjNWL3FmMnY5SVJTQ2ZMN2tFN0J1c2M2dmhUeDE4T0tWSkJwSVlNUEdXSjlZVmdxMHVkR2tWUktYWjEvS25qVHgxLzZ2Z2pIY0d6YlB5eEMwMTJpTm9WMnE1VUJTbXdBVDR4bG5tUmhseEtWWkFDRytBVFk1a1hhY2lsVkFVcHNBRStNWlo1a1laY1NsV1FBaHZnRTJPWkYybklwVlFGS2JBQlBqR1dlWkdHWEVwVmtBSWI0Qk5qbVJkcHlLVlVCU213QVQ0eGxubVJobHhLVlpBQ0crQVRZNWtYYWNpbFZBVXBzQUUrTVpaNWtZWmNTbFdRQWh2Z0UyT1pGMm5JcFZRRktiQUJQakdXZVpHR1hFcFZrQUliNEJOam1SZHB5S1ZVQlNtd0FUNHhsbm1SaGx4S1ZaQUNHK0FUWTVrWGFjaWxWQVVwc0FFK01aWjVrWVpjU2xXUUFodmdFMk9aRjJuSXBWUUZLYkFCUGpHV2VaR0dYRXBWa0FJYjRCTmptUmRweUtWVUJTbXdBVDR4bG5tUmhseEtWWkFDRytBVFk1a1hhY2lsVkFVcHNBRStNWlo1a1laY1NsV1FBaHZnRTJPWkYybklwVlFGS2JBQlBqR1dlWkdHWEVwVmtBSWI0Qk5qbVJkcHlLVlVCU213QVQ0eGxubVJobHhLVlpBQ0crQVRZNWtYYWNpbFZBVXBzQUUrTVpaNWtZWmNTbFdRQWh2Z0UyT1pGMm5JcFZRRktiQUIvcmhzK1VUVDRRTzVEYWdVcnZwZ2ROWVp2M09jTlFOM2s5MDNtSWhNaGdHVldsUWZqTTQ2NDdsbHphQ0g1QWdrSXBONlFLVVcxUWVqczg1NGJsa3o2Q0U1QW9uSXBCNVFxVVgxd2Vpc001NWIxZ3g2U0k1QUlqS3BCMVJxVVgwd091dU01NVkxZ3g2U0k1Q0lUT29CbFZwVUg0ek9PdU81WmMyZ2grUUlKQ0tUZWtDbEZ0VUhvN1BPZUc1Wk0rZ2hPUUtKeUtRZVVLbEY5Y0hvckRPZVc5WU1la2lPUUNJeXFRZFVhbEY5TURycmpPZVdOWU1la2lPUWlFenFBWlZhVkIrTXpqcmp1V1hOb0lma0NDUWlrM3BBcFJiVkI2T3p6bmh1V1RQb0lUa0NpY2lrSGxDcFJmWEI2S3d6bmx2V0RIcElqa0FpTXFrSFZHcFJmVEE2NjR6bmxqV0RIcElqa0loTTZnR1ZXbFFmak00NjQ3bGx6YUNINUFna0lwTjZRS1VXMVFlanM4NTRibGt6NkNFNUFvbklwQjVRcVVYMXdlaXNNNTViMWd4NlNJNUFJaktwQjFScVVYMHdPdXVNNTVZMWd4NlNJNUNJVE9vQmxWcFVINHpPT3VPNVpjMmdoK1FJSkNLVGVrQ2xGdFVIbzdQT2VHNVpNK2doT1FLSnlLUWVVS2xGOWNIb3JET2VXOVlNZWtpT1FDSXlxUWRVYWxGOU1EcnJqT2VXTllNZWtpT1FpRXpxQVpWYVZCK016anJqdVdYTm9JZmtDQ1FpazNwQXBSYlZCNk96em5odVdUUG9JVGtDaWNpa0hsQ3BSZlhCNkt3em5sdldESHBJamtBaU1xa0hWR3BSZlRBNjY0em5saldESHBJamtJaE02Z0dWV2xRZmpNNDY0N2xsemFDSDVBZ2tJcE42UUtVVzFRZWpzODU0YmxrejZDRTVBb25JcEI1UXFVWDF3ZWlzTTU1YjFneDZTSTVBSWpLcEIxUnFVWDB3T3V1TTVTWWZWWlZ2L01yai9EUmZNNXVUZytBMjJzaVRablNYaTRqSUV5ZmZ2YW4rYS94ci9kTUdNZHhDZEtaRjBmeUpJMlZyNnRPSWlEeVJ0ZjNWL3FmMi8zWDhzLzVndUllby9RK0dweGdiOHFUc1RmczBJaUpQWk8xL2EvOWIrOS9hLzFwL01OeERQUDM3My9CRU14VlJTU3h1MUNNWTBjYk9jdnFwcHhhbWVCK1QrU3JBVWRtZnE1eVpmcWNCNmFtRnFmNnRBbHQ0VW1TVWVKUnEvSXQ2aVVqRjJGamtuc2plVXd0VDYxK3RmK24rU3E1WFdrRzhsblQwcUduUkJ2bUpiWjVhbUZyL2F2MnI5WS90SjdVTUpkNUt4Qmoxd0VZYjAwNC85ZFRDMVBaWDIxOXRmMnc3c1oxNUs4bnR6VlhPTU9FVG9wNWFtTnIrbnJyMkZ5NDB5OS9MZnhDcU96OU1mRS9lc0NFRldhVnl4MDdlZk0wTkNoa1N3TXo3dEljUVJhd1kxYjlVa2hSVWkxV0lHRm1sTmY2MS90WDJWL3VmMk1leWc0aTZrdThoUkZINzN6d3cxL0duamo5MS9MVSt3L3FLMEdPUVZWclBQK3I1UnozL2VOYWZmOGk4V1hRSGN1blhhUTV4SkMzUFFWVHE0UXRNMGROa1MwOU5SZlhmaTJlTmZ6NlR5VFhJdVY2ODNBS0c5WW8wR1NtU09xN1d2MTQ4YS8ycjlZOW4wa1hiTXFGWFh3b01HeGhwYlg4YUFZYUR0UFkvRWhZN0JldlZwOXIvMVA2bjlqOUZyeHFGWG51SlJ1OVh2S014SzBWU3g5WHpuMTQ4YS8venBQWS9rL0NLWnVkeFk2aCtVZ0ZoVGczZTYyZFJxY3M2N0tZT3VDTXFUSFVEaHFpcS9tdjhhLzNqeVJoUHk3eVZPUlBiVEc1Y2JpN2FOTFcxL1VrOGU0SEx0eWtRcDlyLzFQNm45aisxLzlHK1FIYmxrd2xvYmV0MUl4MUZSOVJFcWhzd1JGWHRmMnIvVS91ZjJ2K2d3NGo5Z3ZVNmVkK3pkUlFkVVJPcWJzQVFWVTlXLzlPWk9odGQ0RmlpSFBsVXdBRVYwNWhKOW5HK1ZVbzIrdnRVM1F5akhQbnFYeU13RUpJYWZ3dUs3MnY5NjU4ZGpieGIxNjFRVVk1OGJYKzEvVWtFQnFvRWxXYVNmVzEvdGYxMXI4NXEveU4xb2hzVTlDamRCaFhseUd2djA0ZXIybkMrcisydnRyOXVWYXZ0cjdhL3A3ai8wUXZOZU5WcXZSZDZyRlE3dGNmeWJrdTdNdGJickMwMUNvbzdBTkdKRGhaT0xPR3BhZld2d1pKNDFmaHJGZEpLcGpzZGhxRXJhNXZaRk5zYnFFMXJDUVZYNjE4S1NFbHErOHQzeld2L2cvYUVyZlkvR2didFhxeVA2VVFtOVRabVUyenRmM0s5c1lEa3NDQTJ0ZitOVVhHKzlyKzEvK1ZUeXpyK2RIcFo3VjZ0aisxWWF2OHJQY2lrWXN5eE9IbkhRa1lESjd2L3cvN1hubWpxOGRsQk9vdUQ1Qms5RDNnY2luVFlORWtobUQ3dWUyWjNtc0xXQThUVXczeVJwQkQ2K0o0WmlqU0h6bGtrcStYdkIyK0Vwb2hwSWZRVDlNd2U5UHI3ZXlnUXRsci8rcFZuaEthb1U0WFFUOUF6ZTlCci9mTlFJR3kxL3ZVcnp3aE5VYWNLb1orZ1ovYWcxL3Jub1VEWWF2M3JWNTRSbXFKT0ZVSS9RYy9zUWEvMXowT0JzTlg2MTY4OEl6UkZuU3FFZm9LZTJZTmU2NStIQW1GN0J0Vy8vdzhBQVAvL1ZibVIwQUFBUUFCSlJFRlU3RjBIb0YxRjBkNEhDYjBUZWt2b05ZQ0E5STRGVkJSRWVsT3FkRkRwMGhScE5xcDBFS1FvUlFFRjZVMktXQWcxdE9UUmU2OEpJZS84M3plenN6dDd6cjBQeUk5QjRXenk3czVPMmRtZHM3dG4rK25wcTZxcUozaFhJV0FZd25RSVI3U25rcUxoTGtReTBJRmM5VlNJeGNkTHVNSy9qQlhlR0dPR0NiWDZ6U3l0L1hQcFpNbG95eC90MGRZLzMwYXdYQlN1YlgvYTlyZDkvN2czcmIxRjJ2ZHYyLzlvKzEvV0s5VjNodFVOaGdqVHRmM1BibDBNdFZhMG1UZWRHazUvZ1cvNy83NmxNVU45ZnRyZm5xcnFRNjVqVjlYeTd3c0o0QzdvR2xmM1lDSFBBRjJxM1VxVjM0SlIyZmpiQlowWlBnUXE1Qm1nYS9XckhhSjF4VWFGb1NJWlhoZDBadmdRcUpCbmdLNjF2OXFodGI4VUJpa2pSVUdKNW9IWEJaMFpQZ1FxNUJtZ2E4dWYycUV0ZjFJWXBJd1VCU1dhQjE0WGRHYjRFS2lRWjRDdUxYOXFoN2I4U1dHUU1sSVVsR2dlZUYzUW1lRkRvRUtlQWJxMi9La2QydkluaFVIS1NGRlFvbm5nZFVGbmhnK0JDbmtHNk5yeXAzYjR2SlEvTEdqcW95OUtRN1NCZVdUcFFjbUF4K1hQVkVhTTNvK2ZvKzAwZW5lQ21kRWhJOWpxYiszZmxyKzIvclh0VDl2K3R1K2Y5djNiN0NGMHhlUnVSZHYvOEdzcURZTmxRelZJb2UxL3RmMnZ0di9WOXIvK0gvMnZudWJXMmRqT1NPTkN1UE93c3I5MlNRYnAxbHgxRkkvUy9TVzgxUjlOMzlHQS9jOHkwYnptT29xMzloZmp0dVd2KzhDbHJYOXQvWk8ybzJNRDByWS9hRjg3V3dhRXR2MjF0MDhYSTdYdm4vYjlnOXJUdm4vYjl5K0tRY2QydE8xL1JNTjB0TTcvM1BzM2JaMlZOME5zLy9OYlF0K1pPYXY1QlNHbG93Ty95aXJCeU9hbmVBdUVDempRZUV0VURCblNmR05PdmhLTWJINk5ISU9PNmtEakxWRXhaRWp6alRuNVNqQ3krVFZ5RERxcUE0MjNSTVdRSWMwMzV1UXJ3Y2ptMThneDZLZ09OTjRTRlVPR05OK1lrNjhFSTV0Zkk4ZWdvenJRZUV0VURCblNmR05PdmhLTWJINk5ISU9PNmtEakxWRXhaRWp6alRuNVNqQ3krVFZ5RERxcUE0MjNSTVdRSWMwMzV1UXJ3Y2ptMThneDZLZ09OTjRTRlVPR05OK1lrNjhFSTV0Zkk4ZWdvenJRZUV0VURCblNmR05PdmhLTWJINk5ISU9PNmtEakxWRXhaRWp6alRuNVNqQ3krVFZ5RERxcUE0MjNSTVdRSWMwMzV1UXJ3Y2ptMThneDZLZ09OTjRTRlVPR05OK1lrNjhFSTV0Zkk4ZWdvenJRZUV0VURCblNmR05PdmhLTWJINk5ISU9PNmtEakxWRXhaRWp6alRuNVNqQ3krVFZ5RERxcUE0MjNSTVdRSWMwMzV1UXJ3Y2ptMThneDZLZ09OTjRTRlVPR05OK1lrNjhFSTV0Zkk4ZWdvenJRZUV0VURCblNmR05PdmhLTWJINk5ISU9PNmtEakxWRXhaRWp6alRuNVNqQ3krVFZ5RERxcUE0MjNSTVdRSWMwMzV1UXJ3Y2ptMThneDZLZ09OTjRTRlVPR05OK1lrNjhFSTV0Zkk4ZWdvenJRZUV0VURCblNmR05PdmhLTWJINk5ISU9PNmtEakxWRXhaRWp6alRuNVNqQ3krVFZ5RERxcUE0MjNSTVdRSWMwMzV1UXJ3Y2ptMThneDZLZ09OTjRTRlVPR05OK1lrNjhFSTV0Zkk4ZWdvenJRZUV0VURCblNmR05PdmhLTWJINk5ISU9PNmtEakxWRXhaRWp6alRuNVNqQ3krVFZ5RERxcUE0MjNSTVdRSWMwMzV1UXJ3Y2ptMThneDZLZ09OTjRTRlVPR05OK1lrNjhFSTR1ZlZqUUxiSkxvQ0pUUk5Ga3Nxa3lwWTNJNFFRYVluNFVia0xKMFoyeFM2cGdjVHBBQjVqZTBab1N5ZEdkc1V1cVlIRTZRQWVabmRRMUlXYm96TmlsMVRBNG55QUR6RzFvelFsbTZNellwZFV3T0o4Z0E4N082QnFRczNSbWJsRG9taHhOa2dQa05yUm1oTE4wWm01UTZKb2NUWklENVdWMERVcGJ1akUxS0haUERDVExBL0liV2pGQ1c3b3hOU2gyVHd3a3l3UHlzcmdFcFMzZkdKcVdPeWVFRUdXQitRMnRHS0V0M3hpYWxqc25oQkJsZ2ZsYlhnSlNsTzJPVFVzZmtjSUlNTUwraE5TT1VwVHRqazFMSDVIQ0NEREEvcTJ0QXl0S2RzVW1wWTNJNFFRYVkzOUNhRWNyU25iRkpxV055T0VFR21KL1ZOU0JsNmM3WXBOUXhPWndnQTh4dmFNMElaZW5PMktUVU1UbWNJQVBNeitvYWtMSjBaMnhTNnBnY1RwQUI1amUwWm9TeWRHZHNVdXFZSEU2UUFlWm5kUTFJV2Jvek5pbDFUQTRueUFEekcxb3pRbG02TXpZcGRVd09KOGdBODdPNkJxUXMzUm1ibERvbWh4TmtnUGtOclJtaExOMFptNVE2Sm9jVFpJRDVXVjBEVXBidWpFMUtIWlBEQ1RMQS9JYldqRkNXN294TlNoMlR3d2t5d1B5c3JnRXBTM2ZHSnFXT3llRUVHV0IrUTJ0R0tFdDN4aWFsanNuaEJCbGdmbGJYZ0pTbE8yT1RVc2ZrY0lJTU1MK2hOU09VcFR0ams0Sk4rK21NWm9ySDJPalRjVDBUc0IzT05MSmkzYkszRWN5bmJOTWxxZ0FwNUJnTlI1K3UxZC9hSDJXaExYK3BLbGlsczVxaTljUkM1aXUyL3B1b0FxU1FZek1jZmJxMi9yWDFEMldoclgrcEtyVDFUMXNHYXluS1VJbFZXdjVOVkFGU0tET2tUV0drMGJYdFQ5ditvQ3kwN1UrcUNtMzdveTFEMlhwWXlIemxxZjhtcWdBcDVOZ01SNSt1Ylg4K2lmYW5CNWZPY3JnWkRTcVc3ZmpUbWNPdzVwZWl2R2VvaDRlSThmSW9EcUtEM2RvTmZhOTBsdmV4ZGVZd3JQbGVBanBhL2EzOTIvTFgxcisyL1duYlgzUVkrQ1lTaDlkRisvN1JMbFQ3L2tXSmFQcy9OSUxXalM2L1hYcFlVYTRMdGUxL3RmMnZ0ditGT3RLT2YyUkZzMmdtVWlBQlhacWVqRFpPdEN0Nk9XMzBFNGN4SkVRSkZPUVVTRURKM0NGa25LMysxdjV5T1JvS2hMUnZWbGFzZ0ZpNDVoZmtGRWhBamJzWk5NNjIvTFhscnkxL25PQnI2MS9iL3JoMjBocEloL0pnUVU2QkJIaldqckJ4V3JrelB6RWJRMEtVUUVGT2dRU1V6QjFDeG1sNnpVK3N4cEFRSlZDUVV5QUJKWE9Ia0hHYVh2TVRxekVrUkFrVTVCUklRTW5jSVdTY3B0Zjh4R29NQ1ZFQ0JUa0ZFbEF5ZHdnWnArazFQN0VhUTBLVVFFRk9nUVNVekIxQ3htbDZ6VStzeHBBUUpWQ1FVeUFCSlhPSGtIR2FYdk1UcXpFa1JBa1U1QlJJUU1uY0lXU2NwdGY4eEdvTUNWRUNCVGtGRWxBeWR3Z1pwK2sxUDdFYVEwS1VRRUZPZ1FTVXpCMUN4bWw2elUrc3hwQVFKVkNRVXlBQkpYT0hrSEdhWHZNVHF6RWtSQWtVNUJSSVFNbmNJV1NjcHRmOHhBcUd4dFpaRlRKUlpTMXdqVmhTZEYyQUhKZEErRW16eVIwa0NsMlJYdUJhL2JWZVhBY2pGaWkxSGxFQzRhZTFQMHhZMkNnSGlySVcwUVd1TFg5dCtTdEdFYm5zZElhMDlKQW1FSDdhK3RmV3Y3Yjk2YSsyNURxVDZvM1dIbFFlME5yNjE5bDRIYkhabGdMaHAyMS8ydmFuYlg4NlZwYll5dVE2MDdZL3NkL3kvMngvYXdOTlorQUVKa0NlakE5Wm15ODRUMmc4dzM2Smp0dnhKVEFCclg1WXdGdWp0Yi8yT2NRbTNqQ3VSQ25ZTDlGeE83NEVKa0Q0ZktpMWYydC9XY0ZFeWVoLzk1MHZOYTY0TlVESGw4QUV0T1VQRnZEV2FPdGZXLy9hK2hmcmhLOFkvYlVyRFpwSHVFZ1NtQUJoOUtHMi9yWDFyNjEvYmYyVE5zRTNETDVKaWExR2JhQlplNUdEcWR2TWgzSDJHNzlUcUh5Wlc2QWNUSndlNWVIRWtBQ2w5cytUbUJzekZTTFhRZGlqUEp4ak1raXAvZk1ZYjlOYUl0ZEIyS004bkdNeVNLbjk4eGh2cTc5dUxRbDNNSjVIZVRoYjBpQ2w5czlqdkszOTY5YVNjQWZqZVpTSHN5VU5VbXIvUE1iYjJyOXVMUWwzTUo1SGVUaGIwaUNsOXM5anZLMzk2OWFTY0FmamVaU0hzeVVOVW1yL1BNYmIycjl1TFFsM01KNUhlVGhiMGlDbDlzOWp2SzM5NjlhU2NBZmplWlNIc3lVTlVtci9QTWJiMnI5dUxRbDNNSjVIZVRoYjBpQ2w5czlqdkszOTY5YVNjQWZqZVpTSHN5VU5VbXIvUE1iNzZkcy9EVFM3SjlnT3NqcU9CQ1lnNTBpZ2JuZ1NqV2EraXBZaHhSbEZMeEp5SEFsTWdCY0EzQTFQTnFPWnI2SmxTSEZHYWZYeklnMW5vUVFtd0JzTWNEYzgyWXhtdm9xV0ljVVpwYlYvYS8rMi9Ma2Frc0FFK0FvRHVCdWViRVl6WDBYTGtPS00wdGEvdHY2MTljL1ZrQVFtd0ZjWXdOM3daRE9hK1NwYWhoUm5sTGIrdGZXdnJYK3VoaVF3QWI3Q0FPNkdKNXZSekZmUk1xUTRvN1QxNy85Zi96RFE3SU9OM2JwbHNuZ0N2TlVMdU9Td0FXbGtLWWdJeElNQnR0MGlSMVF3NW5LUUNrVG1yRU9sWkt0ZkswUnJmN0ZBVVRqYTh0ZldQN1J4K04rMlA3cmRLN2VsUlVWcDI5OWtqZ1JrVTlXZ2txTjkvN1R2SDNiSW9pc0tCd0p0LzZkdGY5djNUL3YrUlZOUUhqRXZHb3JQN1BzM3JXaTZIRXBMbVYrYkdiSTJOUGsxR3htK2pyYXcrdjdYSk9nYmwrS3kxZ3g1Ym9GTGtVU3VveTJzdnY5TklnQ01TM0ZaYTRZOHQ4Q2xTQ0xYMFJaVzMvOG1FUURHcGJpc05VT2VXK0JTSkpIcmFBdXI3MytUQ0FEalVseldtaUhQTFhBcGtzaDF0SVhWOTc5SkJJQnhLUzVyelpEbkZyZ1VTZVE2MnNMcSs5OGtBc0M0RkplMVpzaHpDMXlLSkhJZGJXSDEvVzhTQVdCY2lzdGFNK1M1QlM1RkVybU90ckQ2L2plSkFEQXV4V1d0R2ZMY0FwY2lpVnhIVzFoOS81dEVBQmlYNHJMV0RIbHVnVXVSUks2akxheSsvMDBpQUl4TGNWbHJoankzd0tWSUl0ZlJGbGJmL3lZUkFNYWx1S3cxUTU1YjRGSWtrZXRvQzZ2dmY1TUlBT05TWE5hYUljOHRjQ21TeUhXMGhkWDN2MGtFZ0hFcExtdk5rT2NXdUJSSjVEcmF3dXI3M3lRQ3dMZ1VsN1ZteUhNTFhJb2tjaDF0WWZYOWJ4SUJZRnlLeTFvejVMa0ZMa1VTdVk2MnNQcitONGtBTUM3RlphMFo4dHdDbHlLSlhFZGJXSDMvbTBRQUdKZmlzdFlNZVc2QlM1RkVycU10ckw3L1RTSUFqRXR4V1d1R1BMZkFwVWdpMTlFV1Z0Ly9KaEVBeHFXNHJEVkRubHZnVWlTUjYyZ0xxKzkva3dnQTQxSmMxcG9oenkxd0taTElkYlNGMWZlL1NRU0FjU2t1YTgyUTV4YTRGRW5rT3RyQzZ2dmZKQUxBdUJTWHRXYkljd3RjaWlSeUhXMWg5ZjF2RWdGZ1hJckxXalBrdVFVdVJSSzVqcmF3K3Y0M2lRQXdMc1ZsclJueTNBS1hJb2xjUjF0WWZmK2JSQUFZbCtLeTFneDVib0ZMa1VTdW95MnN2djlOSWdDTVMzRlphNFk4dDhDbFNDTFgwUlpXMy84bUVRREdwYmlzTlVPZVcrQlNKSkhyYUF1cjczK1RDQURqVWx6V21pSFBMWEFwa3NoMXRJVHhyVWwrYmxJL1N3SmxhVTdPY1N2b2ZoMU5FaWhoVHRkQVY1clNvMTRnK3J2aUxDYXQxZC9hWHcrVnQrV3ZyWCt4QVhGdGlZTHUxOUhhOWdmR0VIdTA3Vy83L21uZnYyMy9JM2FxeEdQYmdIYWg2Sk41dXNKdC82dnRmN1g5TDc1RzIvN25mNnIvNlZZMGF3MVEwWmtqelNQaUkvR29KTzRlVjZJbklFYmp3a211QmpSWVBLTFZMMVhDbXlTWnI3Vi9haTZTZlJMUWxqOHhoYk5IS2pjMW9NSGlFVzM5YStzZlhrbStTS1RpMDdZL2Jmc1R1eXVwZkNTZ2JYL0ZGTTRlcWQ3VWdBYUxSN1R0Yjl2K3R1MXYrLzVCbTlHWVJQcnZmUCs2Z2FZMlpHVnpGdlBoa2RJZU9vU0FHdVl2WGM1NzVqUElmT1gwdjByeDlBUW53UGdkUWtBTjg1ZXUxYTkyOEpNRFpqSHpqU1A3MllabXY4U2JBT04yQ0FFMXpGODZrMi8xWnpzWlpMNWF5djhxeGRNVG5BRGpkd2dCTmN4ZnV0Yithb2UyL09WeVlwRDVacUhzSzhYVEU1d0E0M1lJQVRYTVg3cTIvS2tkMnZLWHk0bEI1cHVGc3E4VVQwOXdBb3piSVFUVU1IL3AydktuZG1qTFh5NG5CcGx2RnNxK1Vqdzl3UWt3Ym9jUVVNUDhwV3ZMbjlxaExYKzVuQmhrdmxrbyswcng5QVFud0xnZFFrQU44NWZ1djdIOHlVQXpKVHNCbW1CL2NqZVJFaEI1ekt2ak80WU5HZjNTOCtWU1k3VTlIUWlaWkFaTWNmUVRRMzloWXlvVkc3WVJkNnNmcFZhTGJWY2IyV05JREszOXhRSWQ3V0hJNkplZUsrUm1RekMwOWkvTmFTYU1Ka3BlSGQ4eGJNam9sMTVyZnpPUEdiVnQvOXI2MTdZL2Jmc0RDNlNtSVFIV1NFUy9qdThZTm1UMFM4OHBzVGpCMEpZL01ZWlpMaitJMXY2RkJaS0JyT3pBenlPdVdMYU1LZnFsMTVZL000OFo5aE44LytjVlRSZXA2YUZ2dXMzM05JTXpMVU5HTTE4b0RiSkR0UHBUbzJvMm8yOFdNdC9URE02MERCbk5mS0UweUE3UjJyKzFmM3lwVzVtaGJ5WEVmRTh6T05NeVpEVHpoZElnTzBSYi90cnkxNVkvcXk3SnR4cGlmaUk0SU5NeTVNZ0NDcVZCZG9pMi9yWDFyNjEvOVdyVHZ2OWdFWTdYWEV2UjFVYjljYlh0RCt6WU1LSkRmTWJiM3p6UTlNWEg1Vi9ROVhEaWJSS2FtTVNjQVRCVnNIbzZlSm9wQ3RVanFZY1RmNVBReENUbURJQnBmT25mWUlNTndsWmJiUlcrOFkxdmZDcjZzMUlIamNmOE82MFpiUFdQdC9LWGplNmcxdjZ0L1Q4bjdhOHI5UmxzeTM5Yi90dnkvN25vZitWSzc2QzIvcmYxdjYzLzQ3WCtsd05OcVlBNmd5SFZzc3NvTzFWWjhNdDBCendGSFlKTUZoU2ZQMFRsUTh4R0ZvSVNVUUZTbEdBR1I0ZFpOcy8vMzZ6L3dRY2VESXN1dW9pWWdXbSsvSXJMd3RlL3ZtNmEyZmlzNS8vei92emIvS1BRcCtuUXoxLzliNTkvKy96YjhvOHlJQys2dHY3REVqREY1NmYvMDdaL2Jmdlh0bjl0KzhkMlFBZWE4aUpnTTVoZGlYSWhCMmJ1Y1lRc0x2TmROQ1hLaFJ6bzJNY050TGpNZDdHVUtCZHlvR1B2Q0Q3MjJJZ3czM3p6Q2szNzIvcDcrZVdYNndxbnhXVytpNlZFdVpBREhmdTRnUmFYK1M2V0V1VkNEblRzNHdaYVhPYTdXRXFVQ3puUXNZOGJhSEdaNzJJcFVTN2tRTWMrYnFERlpiNkxwVVM1a0FNZCs3aUJGcGY1THBZUzVVSU9kT3pqQmxwYzVydFlTcFFMT2RDeGp4dG9jWm52WWlsUkx1UkF4ejV1b01WbHZvdWxSTG1RQXgzN3VJRVdsL2t1bGhMbFFnNTA3T01HV2x6bXUxaEtsQXM1MExHUEcyaHhtZTlpS1ZFdTVFREhQbTZneFdXK2k2VkV1WkFESGZ1NGdSYVgrUzZXRXVWQ0RuVHM0d1phWE9hN1dFcVVDem5Rc1k4YmFIR1o3MklwVVM3a1FNYyticURGWmI2THBVUzVrQU1kKzdpQkZwZjVMcFlTNVVJT2RPempCbHBjNXJ0WVNwUUxPZEN4anh0b2NabnZZaWxSTHVSQXh6NXVvTVZsdm91bFJMbVFBeDM3dUlFV2wva3VsaExsUWc1MDdPTUdXbHptdTFoS2xBczUwTEdQRzJoeG1lOWlLVkV1NUVESFBtNmd4V1craTZWRXVaQURIZnU0Z1JhWCtTNldFdVZDRG5Uc0h3cVdLNXFKdlVOc0hWRENMbmhIVEdBQ3lvbXRxQ05UazFJSGRLQjJRUDJ2NkI5Mnp6MWh5U1dXY1BrRGlESG41WmZGQVdkSlFhaERaanVnUkV6d2pwakFCS1RZTXFhakJwY0t6eG5SSFZDdGZsaEE3T0tNazhBRXRQYUhtZExDNW9jVUp5Vm4yMFgyN2dWV1dCMS9BaFBRMnIrMWYxditVQVp5alNqaFZNY1M0RGtqc2dOS0tJSjN4QVFtSU9uTm1GYS90MFV5ZXdJNlVEdWdXdnZEQW1JWFo1d0VKcUF0ZnpCVCsvNHQyNXhjT2xLbGMwQUhhZ2VVQ0FqZUVST1lnTGI4c2Z4VlZWOVZZYitxN1ZETjVzbDJONXo1cEJoc2Z1YXVRNTdEdzhhSDc3NThUdlRmZSsrd3NQamlTMXJHazM4WkJwenJycXRuT0R0YnFIdEQwWWsvUlN5QTUvQ3djWDErN0o5THJlV2RmcHYvejB2OWE1OS9XLysxSlczcmY3WkEyLzYxN1YvYi8ydjd2OW9pZEg1RHRQM1BiZ1AxVHZiS2JTc2h6K0ZoNC9wOHRMOXVSVE1hUVR4dkVJK3ZHODZNOWRIOUZET0E0anltUFJCaFNGeUlPTUlKbFlDUHJ0UnhKbWtBbjViKys3REN1WGhjNFpRR2ptbEJHbVZMN2RjeDRNUkI1ZHdoaW5CQ0pjRGw2cU9EU1JyQXA1WC9vNDQ4TW93Y01UTHN1dnR1WWJGRkY0MkpqeWtUTDZVU05JOG5xNmRGMFkvaEpXa0FuMWIrMldqOThkSS9oaXYvZWxWWVorMnZodlhXV3ovblN4S1lVbG5ETTZPZXh2REhjMGthd1BqSS83SEhIaHQrOWV0ZmhXdXV2amJNUC85OE9mWGpTWC9kT3VNNy81K0cvaGRmZkNFY2VPQ1B3K3h6ekI0Tyt2RkJSUkxHUi80eGN4bmVlKys5TU5sa2t5WGQ1NTkzUWJqcDVodkRscmdZYmFVVlY1UmlQRDdLWDBwQUJNWkgvdXM2ZmZqRDlMLzE1bHZoQnovY0N5STlZYys5OWd4VFR6MVZPT1NRUTBQb0MrR2dndzdHTTUxVmFEN09PbnpnZ1FlR0YxOThNWHdEazVmZndQdGs5ejEyRCsrOU15cHN0dm1tWVpWVlY1WFZEVmJFOFduL041R3YvZmJiTjl4NDAwMWg5S2hSWWNZWlpneVhYWEU1L0JsaThxTmx4RXRXQXMzanllcHBVZlJqZUVrYXdFZk4venZ2dmhzbW4zVHkrRXBPTVh3TXJaazFTWDhNL2FMWUMrb1R6SkYrRE1oSDgxSHpmOTMxMTRjL1hQaUhzTTQ2WHd2ZldtOWRhT01iYk56Y3VPaC9sMjNKSkdoTFJHMktZWndTa0tRQmZOVDg5MmYvTVdQR0lLSXFESnhvb2taNjNubjNuVEQ1WkNnM3p2V24vNG9yL2h5dXVQeUtzUFF5UzRYdHQ5OUJwTmhtbm4vK0JXSEIrUmNNZS8yQTdVS0t3Y1g2MGNFazNTWC9INHo1SVBSVlk4TkVFMDBjSTQwU1h2QVRldjd2alI0VmxsaDhLSGI3TFJrdS9QMkYwSWNITEhxU011RCtjL3JINWZtL2kyYzZXZTJaN3JEOTluS2R6R0UvT1N6TVBQUE0vVDZNbERNQTQ2SS8yYU9tNVptbm53bUhIblpvbUhEQ0FlRTN2em1wUnMzQi81VCtyS0VMaEU1QlI4ZDF6c0lCNFhGOUxxQmdBeEVGK2dvNWpkUHhGa3B5b01FQmhNZDlGdlFQR3pZTXoxMUdsWHorOHNlcWhzYW15S3RZNVRPVS8rVlhXSTUxckxycXFxdnlBNjlCL2xsLzF2TFBrcnovZnZ2Sjg5NW5uMzFxT2RmZ1p5WC9LNis4VWpYVHpETlhmYjdDTmt0M3d3YWZsZnp6V1RmeTBnRlROMEJEQmdpUDgrWlVmS1krK3NpanVIT2twMXA4Nk9LSWR2enF2L3Z1dTZ2VlZsMnR1dlNQbDhZRXEvNmRkOTVaeXZ1Wlo1NHBhYXJudHg3T3VZa1VJRHl1di93blJoRVl2L21YMUZwQ3gwSC9TeSs5aExaUjN3blhYbnR0ZGYvOTk2ZjN3ckI3NzAxbTZpLy84ODA3bnp6L1F3NCtCUHg5MVZSVFR5MXgvT1kzdjhuR1RERjFCaXdMaVFxRXgvV25Qekc2L0gvNzI5K1dOTWg3cmlkVTAwMDdiYTFOU0pvRThMb000WEVmVi8rSHhGNlNFYUt1Ung5OXRQcm1ONzlaSFgvODhZSVkzL3FMUkVINXA2WC9GNy84cGJ5djl6L3d3SlNrOFdGL3ZqUE9PT09NYXRWVlYvMnZ0UCtWVjE1VkxiamdndFhJM2w3WUpUK2RGNTUvb2RwK2grMnIzWGJkVGZDWmdxQzRKb2JvUXc0NVJPeTgwVVlicDloT1BQRkVxVGRycnI1R3dwSDNQMkgvZi83em45VlNYL2hDaFVXQVFoZjFFZUZUL1Vub3YvcnFxNUczbnVxd3d3NFRGZjdINnhMOGYwQy8xMWVIRy9ySDlsVVgvUDczMVpKZldGS1Q0eGpZcG1IQnFIcm9vWWMwR3FPSlAzN2VQL2ZmZjYrVWt3RURCdVFITlI3MVo2VXdRWWY4WXlSdXRqR3FJV3BoWXpSeWlxMUdrS0RKbXArRUZFam9CQ0MyREdzVXRYQ013cndHdnhGVU9JWnFjVmpRZktlekVaK3ZTVVhjR21qd0Z6eW13UHhhY2hKYUFSMXc2a0RUWHNUMHI3ajg4aUpXSC9nazlUUGVSbnovd2Z3dnY5enlVaW11dXVyS2xLWHhxVDgvOXZRZ3htditxWCsvMmtEenM1ai8xMTkvclpwd3dnbXJyYmZlV3Arem1kdjgvQ0RHdS8zTEJJM2Y4cCt6blF6eGllYi95U2VmcUpaYmRybHE4ODAzUy9WTEFGTm5mazdJSjZaL29ZVVdrcnA5NmFWL2hNcWtxUHI1TWNkVXkzMXgyZXFLUC8vWm9UUDlzMWorWFViTDRwYXluWUJrZnc0ME1iRXZOcnlPQTgwSEhoQ1k3NE43N3JrblBjK0d2UktscW5BQkhXUjYwSEU5V0xCVFk2REppYjJUVDRvRHphUTJBVWwvaXVZVGJQL2ZmUFBOYXNJSkpwQTAvT215eTZwMzMzbXZlZ3M0YjU5R2ZqNUIvVGxQRVVyWlRrREgvSC81UzErU1p5RUR6UlNKQW8zMEZuU0wxL3lhM29ST1FFZjlSWlMxd1BqVWY5NzU1MWZMTHJ0c2xTY3ErT1J5Mm10SlE5Qm81a2NPQzVxZitEckVoK2MvY3NRSXNmOWlpeTNXVURFKzlEZVVPc1I3bzk2VHdRWHJaVzl2cjZOVTFTNjdjRkt0cDlwNTU1MEtmTXB1bC95ZmR0cHBZdWNERGp3QUJsR21FMDg2U2VyL0dtdXNVY1QxbjhnLzdjejhqQmc1SXVrdmxMckFKNkYvenozM0VIMTMvZjB1bUNZWlJiWEUvRHVWQmRqZ3IxRmpKQVUycVVpcUV2Q2grbDk3N1RWSjZ5eXp6Q0p4ZXYyMEdmL1NRTE9wcUV4T1VwdUFEOVZmWnFSWlgrNjc3ejVKZ3d3MFB3WDlaZm9zWCtaanlUK2x5WEZtTXN0YkRtWElNVWV3UWFzaGFrR1JFbHdIZ2tkOW52Ui8ySURUMjZYK0JCcTBHcUlXL0ZUdHYvenlPdEM4a2l1YUhSTG1VWi9WNTcvZmZ2dEx3N0RQM3MwVnpjOUsvditJVlMwMndCZGUrUHRPajFseFByTWQycExQNnZOblZpWHJuN0g4eTBBVEE2VkxMOEdLcG5NZHN2bVp6SC9LY2kzRHRhQ3dDYTVHd0pianFnZURNdGFiMisrNHZYcnFxYWRrZ01iQjUrT1BQNW1pcndNK21tVyt1SXpJSDN2c3I0VnRsbGxtbGZBRkY1eGZpSFhTVHdZZjF5ZFIvNTdIQ2cvek0rT01NM3dxK3V0NXNrUjhXUDYvOUdVTU5KSHVFN2lpQ2VmdFluR1kzNkRWRUxXZ2lBbXVBOEdqUGduN1U1bVBzMGh6QjRKSGZacjZPZUNoL1lmR2dhWlBsK1hCL0FhdGhxZ0ZSVXh3SFFnZTFTMy9vMGFOS2dhYVhtYVhYWGVSZEhQQWFjN1RDMXdIZ2tlZGNNSUpVdjg1MFBSNGk4UDhCcTJHcUFWRlRIQ09ZQVBOeHpEQU45Y3QvMFkzMzBXanFCcWlGaFNlQlRFcE9XajZRZFhZc1dNdEd2RTk3MzlTditqeHltSXFQTXIwNjBDenA3S0Jwazh3eXlqL0hyWVZUUko5Sk0yZ2lIOGMvUjJpbERqczUxNE1ORG1acUFOTllNZXovcHE2aG41M1JoT21FbnNodWNuUmZoYjJjR1RvZ0xJNGxJUmZadCtpc0hpN2ZoK3pIcUVQZS9penJmL2VlKzdGR2M3RnpWcHFQMlEvZlJiRktCMU04dDltLzdmZWZEczg4T0Q5WWVEQWljSmlpdzNGM3YrQkFRUE5jT2ZmN3d4WFhYbFYrT3BYdjJxNWdSOHpCTytCQng4SVdCRUwwMHd6YlZoNGtZVmpFYW9WcEZyKzMzemp6VEQ4NGVFU3pkREZGdytUVG9KekJ2MlVQMVRIOE9namo0UVhYMzQ1VERubEZHSFJSUmFSUGU0NVFWNUJoakg3RXU2Ny8vN3c5bHR2aDFsbW5TVU1HVElraThROEtEZCtvWDlzM3dmaEhqelRNVGovc09BQzgrUGMxZFJoL3dNUENFZjg3SWlBcmJQaFNKeFpWWmQxTVB6RUU0K0haNTU1Tmt5TWZEQnRFMDg4U2VTTFhzbWVrQTgvL0doNCtaV1h3M1RUVFlPekhRdUZuZ25xZG9PZzNYNEFxZWRmZUNHTUdQRlltQmpuVElZT1hSelB5TTZiZUFVZVRxcWFkZHZsZjhjZHRnK25uM1pHZU9ubEY1R1c2YU1RdkZqL1g0QmViRTlEL2lZSlM2QzhEeHd3QUVTZjFxd1RMVmQ0OE1IaDRZM1gzNUJ6YXdzdHZIQ1lvR2VDa2wwMHFJejl2ajk2VEJqKzBJTTRNemdxREI0OEJHY29aa3I2K2Z5SFAvaGdlUFgxMThQY2N3OEpzODR5UzFmOUVCTGFjODgrRjU1NDhva3c2YVNUaG9VWFdoaG5jd2FLVnY2dy9EMElYVXdYejJCUFRGby81UzhKSmlEblYxRStIR0Y0dzRjanphKzlHcWFiZHZxdzRFSUw0bEUyYmFiYytPMmkvNDIza0ZaODU1ZXlpeTYyV0poaWNwNGxpanBxNmNGMFpIams0WWZEcTYrK0pubGptWjl6emptYjdKQmJhT0dGd2tQREh3cVhYSHBwV0grOWIzWFY3OHNmMVdHR09EeUFPc1d6Zk5OTk8xM01GeW1XdDNyYVFBSnFiTi9ZZ08ybDRkMTMzZzF6ekQ1SG1IM08yVVJHdWZIYkpmOTEvZFRVekpEWDZXSGxicGpMeGZILzBiL0l3b3VFQi9HTW4zbm02WUJCWWhnMHc2RFFOM2FzMkw5NDFoMlN4RHhzdSsxMkFWc093NDAzM2hCV1czWDFzTUtLeTRjNzdyd1R6M3Q0V0FqbHhlcGZ6SVh6eWdoWjU5aHVzZjFZQlBWdHdJQmMxaWswQ25YcWdRY2VDS1BmSHgxbW0zVzJNTmZndVlCTk9jZVRBd3o3di9qU0N3SGI1OE9Rd1hPSGtTTkhkTlgvOU5OUGhhZWVlaHJ0d0VCcDh5ZWJiRkxFMS8vejUxblVrYjBqRWZjUTZFRGRqdnJSOFFtOXZTUEM4OCsrRUNhWmRPSXczL3p6aDZtbW5BcDBzaUJkUloxUnRNbGE2TXRmL2xLNDl0cnJ3dkVuSEI5MjJYbG5vQzB0a1FQUnNQeGhOU0c4OC9ZN1lkcHBwMFg1WjMyY0lGdmhZNWEvWjlHKzhMelZtQS9HNE4wM2RWaGdnUVh4VHBvUUN0V3VsamJ4TzZDTVQwa1YzbEh2aElmd1R1UzdoKy9mS2FaQVBmK1EvRC9lK3ppZTJZdFNWcVkwbTQyai9rNzE3ejJjZVgwWTc5MTMzbmtINzdTSnd6enp6aHVtbldhYVJoNVpWdWFaWjk2dzJOREZ3cjI0MTZLVC9mbElzQXRBN256QWx2TXc3d0x6U3Z0aCtlK2t2Ny84MDA0UFAvUndlT1BOTjZTdnduZkdESEtPdURUMjZOR2p3eVI0YjlGaFJUTU1IanhZWU5wLzExMTNDeGdnQnF4b2hoT09QN0dSYk5QLzJHT1BCUXhnVU5ZWHdWbE9ubWN2ZFRCODBrbS9DVHZ2c25OWVkvWFZ3L1hYM3hCNGhuTFlQY1BDMkxFZmhIbm5tUzlNUDhpOVZ5VUZLZWV3QnVDUFVmNkd3czczM1hlLzJISUkzb2RsZWpUZTkwZS9IKzUvNFA0d2F0UjdlRi9PRmdZUEdTeGE4ODlIMC8vRWswK0t6VGJiZE5Qd3UvUE9pK0lxVzQ5THc0Nkc4c3Z5ODhyTHIwamJPTjk4ODZIT29TQ0lxOEtUVDZJZGVmcnBNR2pRZEdHQitkRGVHU2x5bVAwWlpGL3VnZUhvVjd6eGVwZ0cvYktGMGZiNnVFeVlmZEZwOFY2YUZlM3hNODgrb3pIRkpCay95ODM4Qzh3WE1MR0dOcWszVEQ3NXBLSi9ra25yL1RZSXB2UUc5TlZlUVQvb0VieGJlOUNYbkR2TU9PT01NYVV1ejdXeThmamo2QnVpbldDYk55L3FEOStCUTFHL0p4Z3dnWlFSbGNUdngzais1Zk1XNitESGpPZlQwaUY1RVdWeE5QUnpSR3lqZHNJSXhUOEphREFPajJzVWg0MjhFV09oNUlzZ2Z6cTdWciszVGJieXNHSDNzSmpFclZUNUxPZmxWK2lXV3BXcXkzYXdzVVRwK1VxZS80VDl1UVZzeXkyMnFIQ29uR1ZPL2pnYjlJZUwvbEN0SUN1YVBlbU1wdW5uNHZuSkovK213c3M2NVpuNVgzaVJoYXJUVHorakdnc0duNHNUZjNOU05lVVVrMWZISFhkY2RmamhoMWVUVHphcDZrSUxpNEZBaGM1QjlmYmI3OFFpN1NXcjZvSUxMc1I1aEtXaUhxbU8xWkFoUTZwZi92SVgxUWRqeDJRRFFleVBmN3EwbW1LS0thdERjWmJnejMvNVM0VkpnS1NINmVNSzdULys4US9JbERyR3ZQOStkZWloaDFYVFREMU5zc0drU09PUGNkWmxuMzMyRlJ6UGFGcitWV2xmZGUxMTExUnJyclVtNkQzcCtjOHd3NHpWL2djY1VMMzlEdklUSGJYZGY5KzlTTnNVMVZaYmJWMzkvYzQ3cXRWWFg3M0kwNElMTGxSZCtSZHNVWFk3RTB5ZVp5U1dXaG8yUUI2a25FRWZMaCtwOXR4cmo0cGJnK2pPT3VQTWFvb3BKNitXVzI0NXlaM1BvY0o5MVpaYmJpbHBPT2UzWjF2VWtxZkJjODBGdWVVYjlyLzZyMyt0dmtEYnMxekkyekJVNkdoVVAvakJEeXE4d0JCSDF2TEIrMk9xSTQ3OG1Ud2JLMGVVd2N1bCt1V3ZmbFdOL2NBOUs4ajk3bmUvUTNxbnFIN3hpMTlVNTU5M1hqWGJiTE9ySHVqaU50NDlzRjNuL2RHanE3dnZIaVpuQ1UwL0d2bHEzWFcvV2IzMjJxdUZmbTczWlA0eHdLeTJRRDVsdFNtbWVjZzhjMWUzM25KemhRc2hxbDhoTGROTkc1OHo2T2ljVktlY2ZMTGFnOW1CL1MrNjZDSkoyNG9ycktENCtHdlAvMkNjcVVOSEVPZDd0a3YwdjkzNk45Ri82Q0dIVnRmZmNFTzFIT3RPMUU5L29RVVhxSzY3N2pxTFNmekhSandtejRQMVRGelVUeGlkaEdydHIzNjFtbUNDQ1pQOU1iRlFiYnJKSnRYTEw3OE1EbUVXc2RHajM2OSsrcE9mVnJQTnpoV3gzUDVRNy96eno0OXptSGw3N0psbm5pVjFFUzlkU1I4NmtBaFBnYlJkTDFIdXRlZWVXa2JPUFVmaXRoOTBxT1dNemx4enpwbDFJSDVNTG1Hckh1eUhzekZXSGdpZGRmYlpZc1B6OEd3dnhKbVpoUmRDVzhGeUZNc3c2K0s5cUJPRmMva3Y4REZnOXRkZzFpZGhCbU41ckZFY1ZpV056MExKLzVqNk45NWtvMnFpaVNmQ1REOEU4WC8xTlZiRE9iWFYzSlBSbUJsdHFWTXh4eDEvbk5qanRWZFpscXRxb3cwM3FpYkI4MkE1N2VSOC9uZkZhZ3pMKzFsbm4xV3R1ZVphcWYxWmZQRWxVdnVMVHJocy9aOStoa0d4M1ZEN3I3WG1HdFZOTjkyVVZMejkxbHQ0NWxOV2swMDZXWHBHckpzc0YvLzR4ejhUM3kyMzNDSmxNcFV4UFA5cHA1dTIrdUVQZjFTOStmb2I0TXM1N1gzOGNYbitTeSs5Tk40bEYxV1lUSlM0T1pQL0o1NExocnYydW1zcmRMNVNtOGF5TWRIQWdkVjN2dk9kYXZoRHc0WEgvL2o4VTlmekx6d25PbGhIMkM1T05QRkF5Y2R2enprbnBxVENlK1h0YXAvOTlxMW1uV1htbERmeUxyakFBdFVKSjU1UXR1bE1mb2YyMTlKQS9SZGdleW9tK1RRdTVGL3JlRTgxQTFaOGpqcjZTQkdYYUV5SVVRcXN2NHJ1cTg1SFBMVHhicnZ0VnYwU2JTQUdpaWw5ck9lYllUdTkxdk1jMFExb1YvaE0rQTc5K2MrUFFSdW4rcWVIYm5UbXErTlBPRTd5ZjhpaGg0ck9QMXowZTZuTHE2eTJLaUlwOVZ1czY2Ky92c1I1NG9rbktRdnkrTWdqajFUZjJmQTdlRSt6UE1UMkJIbGxtN0hPMm10WFR6enhSSXl2cjlwd293MHJYTG9pOW1kNldJNm1uVzY2UXR2OUR6NkFkbXZqYWlDZXJkVi9EUDZxYmJiZFJuWUNXRnBFNkVQcy96TDZLN3Zzc3F1OC84VDJmQWJ4L2NzN0pmNko4bXIyMzIzMzNhckpKNTljbmhHZk9TNDlFM3U4OHZKTHN1STFZT0FBU1E4bVRpWGQ2MzVqWFhuK2wySGJPSjhOVjhqWjFrdTdCVDNjMnM3VnNKLzk3R2Znbjd6YWF1c3RVOUpQT2dGbk5NSERGVTJXOXlGenp4M0xCbGF2SmhwWWJmTzk3MWF2eG5wdXorS0tQMThoNmVGNVMzR1M4UHljampqaUNFa1h5d2ZkMldoVCtmd3hRU0pwbW16eVNTV2RWMTk5VFl5eXIzcnJyYmVsL3pFSTd6VXRtMXBHMWx4ajlZcmxSMTNXRVJFWlhiUC9LYWVjS3JyT09lZTNaVjFKVnM1UlB2UHMwNUplVE41V21EQkxmUmFtZy9aZkFlL1RFVGhYK3ZKTEwxWTc3TEJETmNHRW1nL1NsbGhpeVFvVHFtSi9ueWEyclZ3dG5uK0IrU1VkNU9YelhnVHZuYlBPUGhPcGlIbUJ0OE9PMitONVR5RjhmR1o4aHV4enZmbjJXNGl5TCtGdnVmbW02cnZmL1c1bHo1OXhjamZKcWNnckpncTllb0ZaSDc3NXJXOUt2OFQwRHhnd1lmWHREZGF2N2g1MnQvSkxNalF0L0dVZkFCTXZxalBtLzB2WTR2OFg5UEVZUjFyUjlOb29XTE4vUVM1b3dwekpvbHArNms4bVdraHBLdURoSEFVWk1iaUhFN295SlZDRGpydC9rT3hKcEFnMDVScGtFVlRwQkdxd0tkd0ZRL1lrVWdTYUFnMnlDS3AwQWpYWUZPNkNJWHNTS1FKTmdRWlpCRlU2Z1JvVVljeGdvUkRsanA0VlNodHdrb25zU2FRSVNCVEZUNE1zZ2lxZFFBMFdjdjBGeUc0aW1FV1ZpMGpZRUV3Ly9mUVZia3VUamdsV1FlU2xZcGRUL05VdUE0SWdianFydnYvOTcwdGxuM1NTU2F1dE1YQTZCdWU2dHRsbW13b3JlcEwvL2ZiZHQwakNzY2NkSy94eStRVXEyUW9ycmxqeDhQeVBEendJbmY3cHBFSDgrdGUvamc1U1dja1ArOGxQcEtLeTg4R0Q5MGNmZFhTMXk2NDdTK1BCeG1hckxiZEN3NUJWc1lHbi9iKzRqRzVKbTJ2T09hcWRkdHBaRHZ4amxrdG9iSUJma282NkdxSVBEZGsyMjIwamVyRHFKZWNVRHo3NFlCbXdzYkZpUjRyUGtRTk9OWnhhNzNmbm5WOWhSVXppeEdwdmRkUlJSNEZubjJxbUdXZVN1SGd4QW01dFRJbkRpb1B3WWxVS2RwcWtHalJvRUY0KzIxWTdJMzJ6elRHYjVoT2QxZ2NmUkdNYkhUVmRmTW5GME1NeTFWT3RzdklxMVpGSEhWRWRnSUhzSUF4b21UN2NWaWt2QUw3RXpQNzNZM3RHM2IyT2ppQ2ZGM1cvOXZyclNvYUM0UThPRi9zeno5NzlIb01Eek9hSmp0VldXNjA2OHNpamNESFMvdFgwZy9DOG9QZGI2NjJ2OWtBYzcyT2d2dDU2NjBrOEF5WWNVRzI0NFlZWXVCOWFiYkx4eG1pYzhUSkgrZHAwMDgzd3JQUzF3SHp4cGNrOExiM1Uwa0wvQWw2MjdCandVZzhaQkVISFRwaUFtR3p5eVNvT2hObTU0UE9lZUpLSlJQL1czLzFlMHM5MHkzWWk2UG5pTWwvRXBBazZhcHR0VnUyT1R0emd3VU1rZnF6VVZ0dHR1NTBNUU5kZVo1MXFqejMyQU8reUVoZlQ5L2UvL3oxbC80SUxMaEE4WDVoTWEzSVM2SXZuZG5zd1FiTmxMQk5WZGZQTk40c2VubXVlQUZzcU1kdFpiYi9kdHFnck84Rm0wMHRlSjVsNGt1cnBaNTVKY1Q3NnlHT2laeWdtUkx6anhUSlRUYVVkVHc3a2FNdkREdnNKT3NjNnNiTUUwalVhQTN0R3hQTFBGeGlmQ1ZiVTVHSUw4dStKQWVNQ0dHVFN4aFBpcFhqWFhaeGcwUmZnNXBoWTB2aDdxbFZYV2JYYWZNc3RxbnZqQlRiK01pQm1sMzhmWU9Dei92cmZGaDBESnhwUWJRSDVnekdnM3VEYkcwZ2RvRzUybU5OTEh6STh4OFI2czlKS0s0dGRNQU9NQ2FWZHFxM3hncDhFazB1VXdVdzc2c2hvY0hkMnBqOVJpWWpXUzZBQWllTkRnU0xPSXRBVWJaQkZsL3hJS3Y3OXIzOVhGMTkwY1JLODdmYmJxOXR2dXoyRk93RSt6cWVlZkxxNkVCTnA1dTc2eDEzVm4vNzBKd3VLRHRVV1VVNy9kdHZ2SURiRVRaRGljOEpreXFtbVJKbmJYcGk1WlhDbEZWY0FEWU1nYklYZGE2OGZTUHU1enRlK0p2enM2RngxNVYvRm5KeXM0alBkNERzYkNJMmRjNFpaVGg1OTdER0pEeXVHRlZZdzVWbXliVHNDN2NFQit4OVF6UjRuaUhnMjhDM3AwR2xhZTN0NzVmblBNY2VjMVhUVFQxZGhsd2VlOTZ6bzNBMnNubm4yMllwbmxTYWNZRURGOW9MdEwzYUxvRXdkWE5uWlliYVBXRUdJVDd1WmY1cml0VmRmcTdiWWZJc0tOMGhLdXJrVm1YV1NkWkh1elRmZXFKYUs3UXYxcy8wNEdCZTVySnZhbUo1NEVZeXdOMzZvUTB3ZUtlZjg5aHpKUDl1bkRiNnpJZDVmUDY0T1BPQkFuVFJFZVdZN2NpSUdIUDA1aS9NY0RJYjViT2FFZlNqSDlvOFREei9CTzQvUGt2VmptUzkrRVJPSitSMXlIWjRCZVdsL3lrNkJUdlgwYU5jNFdPY2dXQzhENmtHYURwQWt2SXZKenFtbXdnVlRrR0VIbjg3MEUzNyt1UmZ3RENiRVFHaEFoUlZub2lxczNtSFFPNlhvWi91M3o3NzdWQWNmZEJET2tXTXllaURhWHNTMXlDS0xwSG1sWC83aWw5VzN2dlV0NFo5Nm1xbkYvdXpFbThQdUZubUhNcjFMWUJLRTczUk9CQys4OE1LU2g3bm1uS3Q2OHVuT1c4MTlXaGtmbi9mYzg2QTloMjNtblcvKzZrZVk0RGdNRThRY3RNdzBFOTY3U05zTWcvQit4MkNVN3F3eno1VDNEdkhVdno3ZVdTelRiK0RjOFhiYmJZZjJVU2UvNXNNZ2h1WDlxS09QRXJsTExybEVkS3pHeVdEb21ocHRNZDhmVENzbnQza1pFT1BqeEpBVkVMa01DSHBzc25ydzRNRkkyeUhWL3FnaldNMFMvcFhSRm80YVBkcEVxajllK2llSmZ3Rk13blZ5bkRDZ2Z0WU51cHR1dkFtVHFKdkxnSmY2di9YTmIwbjU1MUV1dW5mZmU3ZGlINEV5ckQ5N1liTDI2S09PcVhDcnRlaG4vZVhaZTlwVlhOM0FobmZrYjYzM0xhbkgzRmF2Z2lvdHZ6VjVyRTVLSDRmdnZta3dJVDN6VERQSysyOWJ2QWM1a2NLKzJjcXJySUlCNk5JeUFiRGxGbHRKLzJlbVdXaWZVR0duUmJFOWx3c1czOS9wKzZLZkE4anY0WjEvOURGSHlZVDVoR3lMSVBNVHZCZk5uWExxS2RYRzZDY1N6NGtNTHFCc2dmYkFKdU90Yjg0K0lCYzROdHQwODJxUDNmZW9sbG4yaXlMRGNzSkxyY3d4ZTlqUkp4ZWkwZDdzdis2My83N1Z2dWpmemowUHo5Y0hEUHluck83RW9OcTd2LzN0YnpLUTVQdHZHZlJIMks1dHM4MjJtRVNjUkNaaEtDY0R6WnI5ZkJ5RUcyUWk0dE5Mb0FERWZ6Ulh4RmtFVkI1Ymx1ck9ZNXhFUkhzcUpUV2NpWnpkWUlNcG5ib0oxSmNIZ1ZrcGRteUZCaGpiY1JER0E4V011WGZiNHVXZzhwenBzait1N0ZpY0UrUjRFRjl2NytNcEZVd01DOEpIMWIveVNpdkc5R3NLTHI3NFlwbk4rNmo2ZVRqZTUzKzliNjJYZERNT3JJVnJHR2tQSGZML0ZtYUdvK1VxWEtHdXZMU04yQ21nbzdkV2tUYzV3MGthQ2hRTGxmMWRFVmM0VTJUZW9JU2h4SGZXN0tuVnNTcG1LWXFDRm1sRWU2cHhwUGdpY2YvOTk1ZTBMWVRPck15MkFVLzlIQ0J4OENRTk5KN3RYM0Vaa01WM0VXelAvTXd3NDZEYW9lcSs2dUdISDVZWEgrazNZZmJiSEQ2ZGtXd2dIVklNT016eGJOTk1jYmI1dk4rZEovcEpZMldsL3NreGM4Z1Z3Q3hSVmMraW96TFB2SE5MbkJkZWVBRzRTZFdWS0xQMWRuajVzSU5zN3Vtbm4wSGp5dzUvcUU0NzlUUkRWOWRlYzQzbzRXd25PNDVtZjc2NER6c01EVDNMTm1UMnhpRFMzSk5QUGlrREhnNG9Mc0ZBMFBTVGptMjZzbkxLUWRwUDNDMXR3M0JCaUtYdHExLzVxc3kwVzN4dnZ2V21EcFNnNTBkNy84alExZXR2dklhYktObEFCM1JDOVB5UkViRmR0NXAxMWxrbHpyLzhCUmUzSU9XYllMV0xPdGdRZW50UjVyVFRUeGNhZVR6eDJGLy9Xdko0eHgxM0NKNzU1MHk2elFTejhTYkI0dU5LaFhUc1lCZXV0Tkp4dHBONnA4Tk1OcmFUQzg3NFdSYzRFMHo2S2FlY0xEUkdwZ05OclJzLytORVBkYllVZUdyNjBZOStKUHkwUFdjU3g3eWZYODY4cElSeFRUM05WRExBdFFnWFcyeFJ3VTg3emJRVnRnbW05REl2VEJkbEpzUU02dlhYWDUveXo1V2paZEdab3g0T3pDaEUvVGJReERaaGpWNndFWVFuRjBSQmhpdkU2dnJRdWIxSjB3dzlIT1MrNnpxSXI2RER2TkJDN0ZpRjZ1aWpqMDc2ZVZzbWNWeDVGd2Y5WS9GdjVaVldFdnpPdSt3VU5hdjl1VHF6SkRxa2xEbm1HTVFEZHczTEw4S3p6VFpyOWR4eno2VzRFVlUxQ3VjSXRVTVhaS0RxaWRhaHYvUlNYVjJTeUNDMEUzU3l2UGxiWjgrTnozZTIyV2Fyc0JWS1dDMnUyMjc3RzlweVhhM2lNMFdDeFoySzhtYnRIeWN4UHBDWllpVnk1dG9HMG4rKzRvb1lIenlRYzBrak9rWld3NnFBMFl3dmhrdFBXVk5NWFlqR0JmTC9pbjZ1cHZPNTgrOUVXWmtiVy9IY0tGZjA2UTZLTjJOeVJaSGxUM091djVkZmRybTh1emk1eURKaTd2bm5ucGU2TVBlUUlSR2wvS1BRZ1pVVkV1ZzY1dWMvTDJqWW1saDk1U3RmbG5Uc3VPT082WkdOUkR0aHozOGxsT2NYWDJUbnZ3LzlnRjdoMlh6enpVWG1lT3h5U1E3cTNuNzM3UXJiZjRWMjVsblc2U3VmaXZKcjJnanovVXM3MksyenhKRjYrRTkvS25pVzI1Rzl2UkdySHRzN2RqWXBkL1UxMm81UnFOVEVXT2o2NUwwdjdSamFkUTVFVklNUUJUNGFneFRHdGVnaWl3clNKRE1Ib1lpRnB3Tk5mWDRiWVBWUXpyOEJULzNQWURKcTl0bG5sMmVoZ3g5TkZYZEUyT1RmUmh0dldHRkxxN1NiSTBlT2tMaC9pVnRubVFaT1JKcCtQaFBpZnZyVHd3djlUSTN4cjcvQnR4bVU1TEc5NVhQajdjTTRTcUo0U1ZVbGsxR20vLzRIOG1RbWpuT0lEazcybVdMVHovSkgvZHRoQXFUUFpvVkJaSDUzMm1rbm9hMjJ4dXFxSitZL0t0VUVTVUR6ejhsYzZsOFJFOVdqUnVkeVM2WFBQdnRNZXA1L3dXNG0wODhKRityblgyL3Z5S1NId0M2NzZCbE5iSGxOZUdxeWdTYmZDOS9iNW51b0krL0tMb0VSOFV5a0REUkIyMmdqRERURjlVa2RORDFjSlg0UDljTGNHNWp3d0ZaUFNjTkJHTFJiNHY2SW5TYVV3YkVLaXdZa1MzbUZDY1pEdEF3Y2VZVEQ1a2xWUzQ5RzJDZVRmWXh2eVNXWHJIRE15TlNMLzVjcnNaS0dOSE1BaU8zakJTMEZvTnJySC8zK0tKbThXZ28zdU9aVUdiZkhFTzZybnNaQTAyeXcxcGUvWEwyT2kzbk1YWGI1NVltRzdmdHhWVnlwT0JKVVlUdTcwUC81cjMrYVNIVXVkdFh3R1N3dy8zeFkrWDQ2NFFuY2MrOHd5UXYxM1gzM3Y0SFI5SEF5Z3JpWjBUZnlqbFJMR3llOE9LRmlqbm5tdTV6MFpaZGYxdERBanEzbWcyN1doeDFRai93WlZVNDRjTEtDTWp6VC9qNzZLSFNjVEY4QXV5VllUZy82OFkrMVgwTTgvbkNVSnIzM3VxMW9ldnRibnVocjdxakJuTWNRanVIU00rWkk3VUkwTHBDeG9xbE04aHY1alc1K0Y3U1JDNTliWjlqUTJ0OWtnRG5Ubk1KWS9aaDBrc2xTK0FnVWRqclR2eE5XdFpSM01teTVBUzg2NnBTZmJOSkpzRVVoeDJQeDZYYUxuQVFXZUtQUjcwOC90eVA0L09QYmhxcFQwdnZoK2svSDdMcDNHMkkyMHV2K01QMGNDSmgrYm9ua3lwRGtPZXIvT21hSjZjeit0OTkrV3lyVVZyaFpZVzY4OFViaDYvWmo4a0pub0lHSXFBS2ZZK3VDemd3T1lxWGhDNWpwWThOTTUrV2Z4Y0NNc3ppa1gvWFhxeEwxNjkvZzdGaVFMWThpNUg0b3orMG1iTkNrMHhGcHgzR2dDUnhuMmJnZHN1N1lRV0JsWGdzck0rWjJsQm43SGhsMEtFNVRKNy80NGRaTHBvUGJLTTNwaWlabml5WjAyMVNNV2tuRFFEMzc3YnRmUXFiQkdRYVNxaUdTRUJqN1FXdzBJTFBQUG5zTGdUdy9QK2Jua3Q1MTE4VldHK2RNL2o1c0NXVGEySmszZDgrOU90Q2tmZzVvNjQ2M2ZWSm1ndzAyVUJJaU8rM1Uwd1czOURKTHA1ZTA2SWlLK09MbGpOa1o2TlRUWFgzTnRaS3VPYkdTNnh0RjBsYkY5aW5HZjAwY0hCSkh4d2tGTnZKalAvZ2c1ZDh1TmxodTJlV1ZTWDVWS1g4UFI2ZUZBelFaV0NDODFscm82S0ZoUGU3NEV4eC9CdTM1YzlYRG5BMDBPYUI5RjVNM2RERmJNa05JTzdIODVSczhsVG9hcTZlY2hTZWRFdzdtRmhzNlZQSzNOd2F0ZGJjaE9uSXNmMS9HeTYvdXVCcFB1M3dOcTV5bW53Tk54ci9FNG5wRnVzb29sYjhzUDZUbmdTWldOREd4d25pSWYvamhoK3BxME5IVFR1OFc2R0NiU3dQTnhYV2d5Ymh2eDZvWTQ1a0MyOUY0NjJkMnFwL2JVSEhHUXdmR0lMSk40Y3p0Q2RnaG9CeFpncEFOMmpmWmRKT0MwR21nU1hsYjBlUldiSXVRMjF5WkpnNCtSVWROa1hVQXYraWVMMWMwS2NQWmJaYXR1ck1YZTMwR09mRlJSNkZIQS9KYjRKTkV5WjdSSHhrcW9tV2dnWWlvQXArajc0TE9EQjhDRmZJTU5CQlovL2JiYngvdE8xT3liMmJ2dzByK1lLSHJVWUdtWXJaZGZEN3M3SnA3N25rTU5JRWJ3b0dtMDgvSkNPS0hvbzV4bGFGTUYxYkJPR0dDK2o4OTJuZDcxcjI5dlNKRHVWdXdiYjN1dmhIZkl6cWhvVlJMUHdlQmY3NzhDdFR2NTUyWVV1WFhHQ05WVnZScjdROG5DcTJNNjJTZ2l5cUNYQTFqK2piZGRGUEJGTkV5NEJDOWovZksrMk43VEdCNnZNVTZZdVJJaVd2ZWVlWTJWTCsrRFRTNWRaMjMvZEk1ZGRXRjUzTlhCYmNJTGhMajZaT3Q5MHd2Si9ObFVpbFN6TFBQbXh4NDRBR0drcU1pbE9IT0NOckV1OFhSN3BCMkpRWWhkSHkybktUa0N1Vy9zQVcxU0ZBTUxJRFBoRkNHVzMvTjZhMnpQUlYzNjNqSG5Sbms1ZnZGcjNZYkR3ZktYRDNsaFAwTEtIdEY2aGlvSWM0OTkxeHM2ZDBRSy9Ic2p6VGRHbXV1S2UwdnR4V2JTd05OdFArOXZiMkdGajhOTkxGemhzN1VjYURKZG55aWdSTlhyOXZ1bjBnbER6OUhSSG9lYUZhVjNUbzdVUG9lcjBoOC91ZlBtQXltTFFaaGNzZmV6ZXpIRXNkUHI5Q1pmZ3NjY29pV1QxM1JWQ3AvRjF0ME1kR2ZCNXJZZFlMKzNBeG9hNW11TzNBNVdTZkh5UVBTLy9EN1AzUWlOL1RmZU9QTmtqNjVYZGZsdjJUTVVlbUtKc29uYkgzYmJiZGxBcUFQeG40Z2d5enFQL2lnZ3dzYUF4dmh1ZElXcVQxQ1J0ZFpXM2RmL09FUFRHL092K20zbFdXKzQrakl3U00xMU4vdE1pRHEvejB1UGF3Nzd0cWpmdTRtRUlmSWJyMVYrL0djRkgwUGt3MTBrZ3BOaWt4MGM4c3Q0N3dhRTc1RTMzWFgzMFUvVjlqdE9ZdGcvRGtzcmxKM0dtakdhSldUZ1FhaTFPL2pKVnl3MTRrZklVeDUzVHBMNXY1aXM0WUVQUDJ4ZGRLWitUdU5ucDFFWm5USUNIN085ZC9HVlRnVXV2S3ZSenFEVFdPVm1Helc4V04vdVdZWkZaTG5KcmhTMGttL2JFZEVmdXc3bXJ6cVhyYlBBTWVWS3I0bzdJL2JkTjVCUExmZWVxdmtuOTlrTkdjcm1senA2ZVNzdzgyek5xTkhqOEk4VXA4TVNtbEhmcU91MUFFOTc3NkRyVUI2MHgxZjFEWlF1UWdORW1XV1dYb1psNStzVVZkd2UzQ21LQTlHYkNidFduZCtMdHVpcW5iZGRWZUpNMzFIRTBTZWc2UWVEc2pLdEwwdFlYek1YYmFva3VmaGgzVUZpQU1taG5GcEV0TG1OV2o2ZU5hS0hZdDEwUUV6S3JlZ1VnWWZkcytaTUdMR0pJZ3J1SFBNTVlmSTRJUHJDWThENllManhNSUhINHhOZUc2MTRjNEN2akJ6dEgzVnVwalZwdDVPMzgxeWpCSVBWMHRrWlIvOGovZjJhdHlJTE1kWHlld2w0K01mTGdBUUhobG9vdnl0dXVxcUVzNzhmZFVEbVBrakw4OVgxRHRIakpoNDBuRlJnZXJETDI4OEpPNEtycERWOUcrNzdiWkNrOW5rSktFQXp3MVRiaTNabFVBY3prOWhsWnc0YmxGdE9NUzkzLzc3Q2QwUE5HL2gxbG5JY09Cc1c0UzlMQ2RUU0Y5NzdYVVMrdEhING9vbU9ueVdmMW1GZ1YyNGhiaWpNOFpPUk5mK3ZvbHpkNnlMUEw5SHZiS1M3V1NrRXc0OXRxSnAwZTdNVlFiZ2JRREFtVi9LOHhtL3hPMTF4dWppZWhLN0V2aXlKUi9yTW5sT2pRTk5icm5yNUtSZVFZOE5OSE8wbldxSGl5RXpPbVFFWGY3N1kyc0srbXo5YitqbkZsbmFtMGNXa292NTV6azEwcmdxeHJQdjFrYXAvNjYwbjcrT094bXNUYWE5N05iWndYTmpvT21jVGNZZGdiTnBYQTFoKzF2RytVNDFEOCtrUVNjblN2ajhSL2JhUUxPbjRvcE8zYkV1c3B4eG16dnIwVGxZdmVDdUV3b3pMVjFkQnlJSG1peC9hWFVVUEZ4NVozcjRUc21EaFRMV085RXBKQTkzczd5ZmRyOThQUDNjRmNIUEpSek4xVGJFTmM4ODgwaitPeVN6VUM0RFRlUy9VL3RIV1Z6QUp2RXhUbHVsdnA0cm1nZ3Z1cWl1bWhZUklzQ3pmS1J6UzdQcFo1SGdCQUh4ZWRLdWt2YzM3Yzh5OG9HYlpPeGtmN2JCbk5UNy9ZVVhwcU1oNStQb2lEbStpMm4veFN4ZDBFbjlOaERnVnRwY1hyVDhTUmpsU0haT1FmYk1zODZLMFgwOCt6TnRyK0RZeUYrd0pWU1BDbURWL2VoalV2NUhqUnFkN05qYjJ4dDFxR2Uzem5KeWplbFYxMWRkZk9rbElzTXpoUTBIUnMxWHdQblVqUkw1SkV6MDBjWnJZckRMeUhKOHlzSStDaGMwK0k3bmppaTZTLytVQjVxWlArZWZSeUFZNTVGSEhLbVI4QmVNMWkvekE4Mi9ZL3NtZVRuQTRhNHFMb2lrK2g1aC9kWm5qeHh0eVJFcTFFay9KeDBZNTYyMzNKclpNMlBHUmVocHZBZkl6NzkwUE1keDZlUlhUM1haNVpjNXJJTGMwa3piWElJZGMxVEJ0TE50WUZ6Y2FjR3c5akZ6Ky9OWDNDRkIrcEFoc2IxQ1diRFBtOHlNZTBicVR0UFdVK0VDdHpxcCtqZFdSYWtmRnkybVo4ZmRkNVQ1emdiZnlmeTEvTFA5Sk05dTZDZWlzeUxuZHhubWdrd245eThzTXBCZUgyam1hUFB6N3lTZkV0ZUpDUDNpNE9YNE9qRTJjY2JmWWV0c1pKYklqYTE3QkUwS01CU3p2NjRNeXROVlE2c2ZzemQ1Z0drZExoYW1tN0RhME5WdXRMZlp2aXRUSk1EcnprSktWMnBYQ3ZmN000MkQ1eHJjVlh5VFRUY1dIczRnVXNNamoyakhtQzhveXZxOE1sekg4V0ExNVd5Z3lVUDBoWXRKNzhQS29jcjM0S0Q0U3pMd2xYRFVZM0d6SWZCNDA0OWJFQ1ZhWHVKQ25EVDJVWkczekkreGxZSHlQOEI1SmJveDc0OUplaC9IakhYVDlXRzc1eW5DNDdmTzRqWlB3Wm4rbkw3U0pxVGZnREpBaDl2NFJJYm5YNU9MK2FlUlpKc0k4c2VCcHJtMTFscFRaTTc1TFE3aUc3THUxK29mdDJzd1BSeGMwVkhPVnRQNDR2RHU2cjllTGJ4bm5YbTJSMWVyNEJ3RjQ5QnR5U0Foa203NmVUa0NlZGxaNitSTVRyYmlnczlXV000KzYyeVI0eG5UZXVURGh3OFgycUFacHRjb2EvcTVuWmc2NVlVZDgyOHZYOVk1NzZqZnRyaDBLbi9ISGN1QlpvK2NjelM1eHRiWm1uNGJhRzdGcmJOUnY1elJSSnBtd3F5eWQ5UlB4NVYrcHBtcnYrWWVqZlZwaWFGNVFNczR5YWNURzFHNnB0L2t4WWYrRHo5WE1YUUFBRUFBU1VSQlZENFlVL0U0QVR0MFBKL01uUU9NdzVmUGpnTk44TWpuVFN5UmlKQVhjMUdXNTV2NFlIZ0JETU4rNHFpdW4zeW04OWE0WmY2MDAzVHI3QzU4QVhkd05vRnp4dWxuTko1L1p2OW8rZThuZ25yUnlsRVRZdlQyVjFKaWFOejE4MHcwVnkrbXd4KzNxUG8vbnZVVFo3cWptbVlTdXV2bmlpYWY3NTQ0YTF6UFAxY0E2cytmNFU1L1BLTnJSbm9lcTBxTU0zWGNJbUZaWExTbHNwM2JYeC92SCtOVzdONWVQYU5KR2xlVjZvN2JmRm4zaTNoUkQ1ZGVhaW5aWHE3bjdMcm5QOFdIOGw5c25ZMEVycWd3TDF6bDZlWmV3blplMC8vcXE2OTBZR3ZxLzllLy9vVkwyUGFVUzErR0RCNHMzeDMxK1orWEEwM25ZZ3dPbzZDYzkwVDZ0dm5lTnNuK2RTWTdqLzdBL1EvSWs3anV1dXNsdlYvR1Z1WGtZdnZETUxmQ01zL2NPbXVPK3UzOW15WkxnZHRycjcwa0xwNHh0ZWR2TXB3OFpIdTFIczduY2V2OXBKaU1ORHVKai9keVd0R0UvbUxyckVVQ2YrdXR0b3B5bmN0ZXRsc1B6aUhxamprbkRyQnBmMDZLbjM3RzZUSTV1amdHMEx3Y0o4ZWpiUjUzcVpqakdWZWpzMHg2eHpQanBPMnkweTRlbmJiT2J1QzJGUHZuZUFpM3RFSk9WalNqL1hVUUYrUmVBQitabCtQS0plVjR4SWd1cldndWtIYytlVm5aT2d2K0kzRXBrSS9ITHBuaFNySzlmOWorTTI0K2YvcDEySEQwVjFnK0RxQVpxZjE1eFJIbTBSRnVGMmMveWVzdldGMzU0OVpaMC84V0JydDBYbzd0Q3ZYYndrWFNEU2Fla2VWNytGTFpsbDdoRTFHUHkwU1VUemZwRXE3MVB3ZmlVaWR6M0s1TEhsdlI5UG90cnZRZFRSTGpuL2JQZXVReU1vdUxsNzFSaGl2WVBoNmowK2VGa2VTeDkrc1BjVkVpdzl3V1RsZVg0OFFVNlRMUWRQcUZ1ZkVUcGVIVjQwbXN6djRKNTRDdWN1UWgwZjZpREZZMG5ZZ0RJOTFUbzNUMmFrUVRTUXdXbmZtSm9VQzRnQU9OdDBURmtDSE5OK2JrSzhISTV0ZklNZWlvRGpUZUVoVkRoalRmbUpPdkJDT2JYeVBIb0tORzhHOTRtYkh3YzZtZWhjZiticnp4QnBVeEVmTlR4QVlvd2NqbUc3VjhibzdxUU9NdFVURmtTUE9OR2Y3MTExOHY2V2JsTjdMNXhzYkQydHdTcFEwRFZwcHc5bzE1NU5hZFRUR1R3OW1jelRiYlhENDRiMkgxTjYwMkJ4NVhiRXRVeC80YVcyY2hKK2ZUTEhMeFZlTVl6S2hhQThWTENkaEpVMXYyNEdhdkRWVFA1cHRHZmRDNTZXYUYvaGRmZkVIeXdLMnpsRXVyVTVhaDZLZUJKaG9EdXZkeEJrSDFZTkNDbS9TTVhZajhBWUl6cmVUWlo5KzlFNXJmbENLT1d6SDd5ei9US2JQSWlJYytaVGlybDUxcTVPL3ZzQzJJZEc0cE03Zkt5cXVLL2JsbDZLUFdmMXZwNWFVRTc3MzdIdDVEMlA0N1A4NE1JRzRPNEx6YmE2ODlCSTlyd0FXdHFlR0s3ZktDLy8yRmYzRHNSZ1hLZ2J6c2dlVi9NcXprWlJjWmpBKytyVUxhcFR0YzBhUWNMeEZ5YkJMRjhPRTZlSjFoa084a0dsZFY0Zk1Ia2o2L29zbHRXOHpqTFZqRlN3bU1JdHR1dTUzUWVJdGY2ZnJrSm1USzhhUHZwb0UzSFJQWGFlc3M1ZmxOVmRMOWl1Wk5jVVZ6UnN3bzEvVXpZbHZSOUFQTnh4N1RWUmQ4NGtlU1JmMk1rMjJLVEFwWWdoSlZnQlE5UTgrLzhDSXVQUG1DcElkcG1nQTM5aTZFTXorOHFPTFh2L28xTHNMYVFXajJJb3d4eUxaQzJwOHJtcWFHdm02ZDdkRVZUU0I0ZXg3am5YVTJOME5zQWhZWmZIYm95V2YyUHgwRFRZWjMzMzMzSXIwbXdvRW05WE5GMDZJejMzZ1NRUkNPNmtEakxWRXhaRWp6alRuNVNqQ3krVFZ5RERxcUE0MjNSUFhoZk5McmtuL2FvUDdIYmNYcVZNcGt6YmM0Kzh2L2RuSHI3QjU3N2lYc1h2YmMzNTByYlRUUEswc2JqWFpJMityUzN4eHRLbGNXVFRadm5ZM2JQeU5oS1F6K09MbklzM0VXbjdYMzlmYnZkcDcxUm96NDlFYktOejZ2a3JKVUFtUGxMUDZPT0laanExRnFLOTZxUFhWMTV4MS9kK3lXU29uZTRTdTB3MThTWFhKR1V5aDlGVytCWmx4YzRVa1pMS1FxbkYyMWdXYVE4MlJPZzNJV2lMN3E0SU1QUnBtTm5WM0VQZGRjYzFYcnJQTTFYUGl5bjl6c1RIMXp5MEF6Q3BxOCtVNC9WelJaL2prSlptVHpqVzNBaEFPbC9kZkxYdkxXV1ptY002Ym9VNVpiWjVtR0F3N1lYN0V4UWc3YXVUckU5SEk3SHp1N3RBdjE4MzFoZXVuejdnNWVuR2ZQZ1JjQ2NtVnYxOTEya2QwaWR1YjdQTDkxZHVRSTRaY3ptcUpaWTl4MGswMFZqNjJlM2NvZjhTeExmOElXYmt1SEpoNi9CYUlQWi9IdVRzZDltRDd1WnZyQ0Y1YkNCWDVieVMzWGNwTTc4RWNmYzdSR0FmbTBkUmI0M3Q3ZUZEV0JYWGZWU1RWZU9rZG42aTdCdDRVWlB5K0x5YzZvdW5XV2RMOTFsa2NYaU51RFovMHRKaE9KdnRsdTVNaVJFdTJmY0VzK1piZ2RtYzdZSllDZmd3ODZSSjYvM3pwTEdyZk9VczZ2YVBKSUJYRlQ0MGphWnB0cC80djlENnV2M3Y1NUlrSTFtbDd6cVlNWGR2RTl4UDZYT2tkMVlDUksycmwxbG1uZ0gxZFZVNFlpUC91YXBLV0JabVFnbWNjL1NOUHp6MVhjc2RhRE02SlRhUjc2NmY5dGpodWE5UTZBcW5vMURqUjVEck91MzlLV0JwcE92eTBFY0llZnVlOXNnQjFscU8rNnM4dGwyb0VISGNRMkFXVWxIb25aSFJOLzFNTkxIdXY2TFY3ZXFxOHJtaHFSUldlKzhTVjVRVGlxQTQyM1JNV1FJYzAzNXVRcndjajA4NHFteHlhQnprQVpUWlBIb3NxVU9pYUhFMlNBK1ZtNEFTbExkOFltcFk3SjRRUVpZSDVEYTBZb1MzZkdKcVdPeWVFRUFiaXRkZ1pUQjBrOXNvS1p0VnM1UzVLZUpIQ1RVc2ZrY0lJTU1MOFJhMFlvUzJmR2YvNVR0MWZ4c3AzM3graUEwRkpzTWF5enp0cXBZV0FzM0Q0amxSVVZpOWVwZjVnei9ieDFsb1BUdmVJQXorUXNaWS9qWWh0ckJIaURLVitFckl6RThad0huZkVtSUNFc050elFHZ2VhM0VxVlpUSmpmYUJKQ204MVpTZEtMc05Ka1Z1Y2ZUSTRaanIyM250ZlJVS0lCOFNKczBiUnVPdSthdFpmWHBKRG1jR0Q4MEJUS1NyRndTVHBmcUM1N3JvNjQ4K0xKaEt2QWZDNUpZMjNoWExMc25mY2pzVzRMc2JzNEQvK2NaZmtiN2xsbC9Nc0F1TWJsOVhReFljNnZFWnUyNW5zUS9Ka01MVUVYbnY5dGVxK2UrK1RsV2R1NjVMeWp4dDRYOFZNdUhjcXc2MU5yMVFUaEFra1RiWnR5TTVvcnJmK2VrNUVKV3hGY3diY29tck82eTlXTkNQRG9qaTN5SFJ3dTZnNTA3L2Q5cmh0RnVYdlo3V0JKdW55aVFrOGZ5MHpLbkhCQmVkTFd2TmxRR1grZC96K2prSXZCNXEzaUg3cDJNWUVtSDRHVDhENVZUNFRQOUI4NUZGc1M0WHVkQmtRak12YmNNbW5jV3NNbERlSXQ3UnltdysrVTBxMDhEUGZzK0NDaFQ5ZjhlZGk5WWd5QngzMFk5SEJUcDkzZG43dDB2aXBDYVgxcFRPYXVuVldPM2RNejBDY1YrTDJwWlFRU3hBRXVhV2V0d0F5SGJ6Y2k4N09hTzYrKzI0U3J2K2tGYzB6c2FLWm5JdFVjRG1jSUFQTVQ3Sk5RRm02TXpZcGRVd09KOGdBODV0cUJjUHRpUGlHTDlxdisrUlROVnlWWWx2R1Avdk1RVE9LT2lhSEV4UUIyenE3NXg3czJKWU8zM0dXTW9UdkhvS1FKRXVtRHBUbm4zOU81TmdoVktleXVyT2lwenJwcEpOeWROMmpGVkYyNmxsdStEY0t4eUU2dVhvVXZPQ01GL2Z4a3p5VUd6SmtzRXlVVVRieEdtQSthSndrWXFlWWRjeWNUWXBPakp1OHUrbS9EOCtFOVk5L2ZPODRMVEdhck9TaWl5NlJOUEhtemxOUE8xVW1Fa3dYZlI2UllQbVhyYk9GZEk3RDg5c1pUZDcwbTEzbWZScVhuOUFHSE5oeTZ5OHBjaGtRY0x4Rk5Cc2tTLzhxRFRSMVJWTmowOStOTjl4WTR1UGRITHh6Z1hHdkxuZGZaSGxlYURKMzNBSzlNVzRNNyswZDJiRC9QSFBQSS9ieVcyZTVza2I3OCt5NGR4ekFVUTgvVmRYSjVkd2F0WTdKWVVLMjA0YWYrcnJqOWp0a3k2OUowdWZuU2FqdjZMaWlTUmwraG92UGwrMC95NlIzTy9NeUlORFNaVURScUR6VHkzZzRZRE9YVWdLZ1dOR01EQ2VlZUpJOGZ6K2hwekw2aSs5cXBrdnh1TDJUanArZG92NTBHVkR0b2U2eHgrNlNEcTcyZXYyMm91a0htbGRpMXhuTEh5Y1R6SG45aHZOK2lqTWhNOFoySE5ta1dLSVlZSDZTeGVEVURUVGZ3dEVOWmNtTWc5R3UwSzU2NTBkWmhIVkZNL2VwWHNRRUtubTUzWmlUQlNrV0E4eDMrZ25hMWxtdWFDcExabVI4L0h2bzRZZEVLbFB5UW9BZmFPNjRvMDdTYm92UDhDUmVBNkxQZHBoMjMySEg3MHVjY2lRQVlRN1FsY1VFaEN6bnNaa0dEalJMQ3VsMVRBNG55QUR6TmRxT3Y4clNuYkZKNlhObk5GT1V4a2Jmd1E0MFZrTnAyRUxtRzFmcEo2b0FLZVNZREVmZndRNDBaa05wMkVMbUcxZnBKNm9BS2VTWURFZmZ3UTQwWmtOcDJFTG1HMWZwSjZvQUd2SURUQll1SzdocEJaUHBNRUh6RWEwRFhhakVsdHFkakxCMTRqVWNmUWM3ME9JMGxJWTF4QWJZemlmZWZOUE54cHA4WHNNOTVaUlRhTU9BVzJmTjJSYkZNMDczcy9LbW9VLzI4M1AyN0dlSDUyMnl2NVpiWjN0d1krYVNpQ2J6V3B6V0tlWHRoT2EraE5WQ3poVHA5ZFVtWTFSK2x1TUJtVkhjRjlldmMrc2czVVg0OWllZmlRd2FuSWlCUDJhbkczUWQ4Q3AyYlh3WGpEaGVLKytkeVh6bHkxOFJ1dDkyeEVzRStQeDVjNkxteDdqaDR6ODdrdHpYejgvRnZJTGIzMGpsNTAzNFVoazhlSzZveG1RMFdCOW9rbm9jQnVoTUd3ZjhUZGVYYm01bFIxQWRwUEQvdDlocVN6bCs0K3hIT0k5S1dMNTFLRXlxOThrbm54RDgzbnZubFZyVHdXOWJVbVo5RGdLRlhXV016dWZGL0srREMzVElNSFNvenJES1ZsdGpOUjhjT3R2S3kwS21SOGRsckVSejl0bG5pUTZ1YU5hZHJXanlOcmRPK25rNG4vcDEwRXBGZmVuY1NqcFA0dlJ2SzdmRDllQ1RERnpSTklMNnh4K25XMXB0Y29KcHVSQm5rWmgvR1dnS204bVFXbFc4MUlqNjgyQ1F0ODdlTERMOHZJMDRKMEx3ZUE0MDhmejlzN0t6eWJ5VXd4eHY4cVZ1YmxVVlc5WDBjOFdCOUtHNFpaZHUzbm5SOFVPWTVVZnlabnFqejR2S1NOOGtEVFNWd0ZWUDR1Mk1wa1NHSDEzUnhFcWpiSjNsaFZoamNidXhiaFhuZDkreXk0b3VqV2VhcEd4SHRGeGtoZnp1Z1JWTjQxUlpEZkU3a05SLzVobG41aWdkbEdRRVNLRU9IS1FaSGI0RGpkbFFHcmFRK2NaVitva3FRQW81SnNQUmQ3QURqZGxRR3JhUStjWlYrb2txUUFvbHBoMHdlVUw3N1NtZGVLUER4MysyUC94c0NNdmJmWmlJTXFyWGZ6cmFiMjYxMW5LakZHNmRaWndjYUNZWkFMLzZsYTZVZlFrcmg5a1pSNTljbE1FT05pY1Zla2YyQ2d0OTZtYzk4Wi9vWUFJNXFOc2J0MnR6UmNoMnZZaFEvSG1VRXpDUVkvdXZFeXFteTNNWnptMmRQUUUzMkVZMG14bCtMb0g2dWRzZ3V5ekhnYlBsTjlNVk1pNk5yMDh1REdKK2VGRk95VUhPZkZNMUIyTGlVZ1FwU1lxUENiU2J1dk9nUHBLamR6cFcrcGwvSGJ4cFpOZGRmNTJrVnljalRZSHFwOWd2ZjZudHRxeFlHUmw0Z3RkY2M2MDhqNjIyMnJLeTFYQis0OWE3dSs3Q3BDVHN4YzU5T3JNcThXaGtMNy95c25TUXlYUCsrU2FidDg0dXV1Z2lPYk1RdVJMOUJ0cC9UZ3greG83Vk9Ed0RkOXR3aXlILzdFaUZwY2U0emY2OE1JbjJwMjVPSXZoNENMTk16VFhYbkVLWHJiTXhBdDZnVHhrT2hIbWhrNWVyWHdaa3V1M1dXYTZVbVg2ajBlY1pUZVpMVnpTcGlMZk82b3JtdlBqc0JmT2xjaXBGRHI2WG1QNGxsN1JqRW4zeUtTT21qYmVVMWgxbFZsdE5KNHpyMjRyWkI2Tit2VGxWOVhQU2VhS0pzQUlPL0wvL2pjc0dpWTdPUU40RFlhdS9CWU14T244alREU3cvRDM1Qk0rVFdneU9JZUZVUHlrOHdxUzJEcGg4ekpQZkpqMEVaNzlKdHgxeVByYjZRSk15Q3l5Z0UwNFhYM3lSWjQwdytwcVlWTjRVbDl6eDZ3QmljNlRKYnAyZFplYThBOGYwVy9uUkZVM0RhblMyNDh3R21xUmVmdmxsa2w3ZTZLN3grMlNvL0lMNFBqYnp4Tzl6MDA2YzdHVjRwaG54L280MjhwcjQ1UW5TZVdGbGZ5N0pDSkJDVHNSdzlCM3NRR00ybElZdFpMNXhxUjgwcnM1RXo5cVp3N0RtZXdra2t4VkRuSmttQlZNV1BzLzZiWURKaXNjR2l3V0ZoZlpHbkhPc083TmtpVGVzK1RYcXAyUi9udTloUHJqbHhHWjBMWVUvLzdtK3RKamZxM0RvMnA3L1QzN3lVOGsvVi9WZWZ1WFZJaU04OEw3OENpc0lmZXV0dDA0MHJveUp6V0EzdStIT2lGd2RtMjgrWFNIazROWDA4NHdYWldaQXgvMEpESXBNUCtXNDRzbHIySmsycnI2WjR4bE55dmhCZzlJMDFoLy8rRUNoLytBSFB6U1I2by94UUQ0LzJmRWN0cENhZmpMY2htL2l5ZmVhTUt2TTdaSldvZG5BMFc3OE5sdjlCY21iKy9pcERLYURzOXNmb0tOT09XdklCZy9PSzVyVVFjZjZ4dzRmWHg1ZjUyeDFkUHdrRVBNNEVOdWU3dnI3WGVRMGtud2JhakhNSUZNUFZ3Zk5rWVBuV0hpYkg3ZWY4Yk1hbk5YWFZaUXN6NDRtOWQyQWJkNzErajl5NUVqUk8vRkVFMlAxYkpoR0xhTHNWSTZTbXhDWi8vTndNeUlkQitsTUJ5K3BlQjB2UE85ZWV1bGxEQUlYRlRvSEYrWit5NjJ6a09HS1psMi9ybWppKzMvNEpscEtjZFJQZWZrMEJ2US84ZVJURmwwYWFPcld6WVFXWUR0OHg0dnBPK0tJUFBsaEhMS2lDWnF0YUZLTjNwYllJN2RMdnlDZlpRQXk2bWVkWjF6TS81WmJibVhScElHbWJwMU42QWowZGQ0Nks3ZDE2bTJleW9nT0V5Wk45RHQ2UGJoTk9HOHJOZjNmL3ZZR292K25oLzlVUklZTTRjdTdSd2JIUkNSN0FiN3h4aHVGeHZUcVRIdW04dFpnMnY4U0RCSzkvWGZhUlZjaHpqenpMSW1NRXR3T3hqaVd4OVh2Nzd6ekxqRFpzYXp4NW1QUytka1gwMkNUUjd2ak8yVTVWVWF0Y0JVL3RzNUM1b3d6a2NkUHFmMnpYUHd2NnQ5K2grM2wyY3BuZVN3anp0SXN6M3dtYTYzMUpWblZVUmExUDcrTk9SMXVBcVg5dVRwbitYK0JLNW9vMXl4VDRzQk9pV2VmZXhhOCtNd1pQdW5GYllWMWR3RE8rVkVYMjlDMzR1NkszbDRNTklGajJlU2twanJWVDNoQmRLNnAvelMyK2JYbmIrV1duMEVveHlkWlBrWW8zbnI0UGlKMThTeWk1K0FrR3ZXdmlPK0o4a3hvTG9lNGJBZURhbjZmbC9sbHVWWFh2Zi9ENy9QeC9iL3FxcXRGM3V5eGJlVzNMSmtHRHFxYXpsSmxQczdrYytzczdZTTRMOE1ubTlTcGZxNEcyZWVRenNSWmRuRVF2ZjU2REJhUkg3L3JKUXFLWjU4cmtZR21KOEFxM0RMTGdSZy9pVFV0UHZjMExiWll2b2YzTlozWi93R3N2ak05WEVVZGd4VTRHak9sR01DUGZzVHpaOXIvT1IrN1BzeU5HTUgzaGQ0dWExc1lTV09mWWhEYWNOSjRNN1dMVFVUbHVBajBjVnZ2eUpFamhaNzBrUU1CQzNNQVlmMnZSOUlubGlRYStXRkhuM3I0NTg5b3NtaXhVMC84U0d6eDlZN2YrMlorOHczNWFuOGRhUGJJRVIzVHJ3blJrRndHQkxrTlVTYk0yVUNUZW5pdmczZWpzYUxQblN5aytRbnJFYWlIMU0vQkRUOXB3OXlhdnR1eFlrdCsydnZJbzNBWmtCQ1VLcFA5a0t2M1B6bnhTeG4yNTdTOFd5cjZ4TDcyZWJlVHNHdkFPM3YrcHArN01mamQwRVVXWGlTbHgrdjNzaDcybnpkaEdjNU8wejFreUdCSm4vUW5NMUhLSHdlYXJBOFhYM3B4b3ZBYmw4ei9Fa3N1aVlFcjR6UHI0QnU1K0JMRTByajBrZm45THI2dmFjNjJ6ckx2dzA4dnFWTTV0U2RYTkI4MmR2R1pmL2JQcUg4QUJ1dm11T1YvS2h4QjR2YlpVMDg1RmVpc256eldSeDJBWFE3MlZRMU9xdW43MjMrWlFlWGVlZWR0bWFSbWZBT3hvbW11Ym4vRFUxM1NLRUFLSlpZNjBKbkRzT2FYVWw1L0lLbGdTNEVFbE5JZFFzWnA3YnI1aWRVWUVxSUVDbklLSktCazdoQXlUdE5yZm1JMWhvUW9nWUtjQWdrb21UdUVqTlAwbXA5WWpTRWk3RUlCSzZEbTgwV1lIMFpOS0VYV0JJelQ5SnFmT0kwaElVcWdJS2RBQWtybURpSGpOTDB2WS9zckIwUE1GMjlTNVprOGZwZHZHMVJjNGppenljcG5lK29wejVrekRpaElIeko0c015aWNwV0ZxMEJMeFcvOGNlV0t0K2Faazg5YjhBV0Z4cEZ4Y2h2cTlkZGZMeFhWWHREYzdqbG10SzVNVW83YkpYZ21pUHE1SFpFWDJ2QzhHRmRneUV2OS9NVE1vNDgrWW1yeTF0bGk1ajJScXdOdFJYTXZIV2lLSGZERDcxNHh2amxubjFOdWtyMFJlZzQrK0dBWnJGRUhhWHhCWlB2MVZWdGhrTUcwVFlHdHg3ekZsdHVhZVBPZDNCU0xmRktHT0hONVJaUGJ3UlJyUGtNNjBHeDJJbVF5QUhHeDRUd1FGLzNRMXZ6ZTZCZlJ1YWQrcnJyeHhWQjN2STJTYWVBZnJ3Nm55K212cXZXL3ZUNHU4TUcyNmRRWU93YUFkdU1hT3lTMEJmV2VpMC9LTElQTFpoam5Vamdidzh1ZUdDdTNkbkZXbHVsaGVlSlY3K1JueDRlZnR5Q2VIYWVYTUNOT3gzenJMYnQ2UmxPUVFsRG9vWGdaRUJ0czd5ejk5ZzNHcCtUMlBzWGFMSy9mT211eTI4Y1Z6Wi9aSjVwaVJFd0hiNnBrZm1TZ0dmR2NCYmZiZXhmR0oycE9QLzEwdVd6bmg3aEduVnRlck14dXhjdUFvbFc1b3NsOCtxMnpwcDkrWHRGY0t6My9SeDU1VkhTbkZjMm8vM2ZubkN0NDZ0b1ZxK2NzUit5TWNqc08wMHE3OEF3ZzNWNjRtSVE0YmhYNkE4N3BjSkQ4ajMvK1F5Nzc0STNDdHZyN0hYelNLVVl2K3IrNjlsZEZqcytOS3dweWRoWU1YTkZrUG5UcnJLaVFUeW5ZTjF2SnowSGtEZGZmVVBHbXhmbm0wdzQyN2UrM1R1ZUJKczVvUnVmMTI0MlBaMkxsSmpsalNJZ1NLTWdwa0lDU3VVUElPSzNlbVo5WWpTRWhTcUFncDBBQ1N1WU9JZU0wdmVZblZtTklpQkx3Wk51eXBTdWFKUjlEWFBXeDc4Y3VnMjhaL2c1dHhuVTNYQy9iWDZlZlhqdi9LNis4U3F6REt2LzhjeTlJbVpoN2NCeG91bWp0cGsxMmlsbGVlSkVZUHdtd3hSYWJpd3pMSU0vWm1ldnR0WUZta084eUUyL3BaNzR2L0wzdUd1QWdneGZUOEJOYjExOTd2YXdNVE12T0hlTGpPOFU3a3hkY0N1VHY3czZLT2lCcHd6dU1qdWY5ZWFzcXl6TW41VTQvOHd4cGwzN3hpMTlWYzh3NWgramdkeDd0NHBLVVFKRXVmNWcrcG9sL1BEODlEQk53UE5kMXhobW5Zd0EzbDV3WDVJMlYvTFl5ZHdOMWNwWms1diszNS93MnhVZWJzdDR4LzN3UERJMW44TGh6d3JmUHZCbWQrbVdnYVpHNVJLZXRzd2NlMEVsOWRYQzh4SWFkOTUxMnhqZDZVeHlSSGMyNXRlUGNBc2diaEljLytLRGMvUDYxdURQQzJ0NTBvUlgwODF2RlRCZnQvSld2ZktYaTBRSzdBT284M0U1TFBIVnV0TW5HV0NXNkhOOWZ2cmI2NFk5K2lJR2pIcWZRTTRoSVF6MDl0VnlzaGdFVTlmQTdrU3gvVEJzL25jTkpOT0tueGs0WCt2WXBQaE9mQlJNZzFML2l5aXRWMzhkNVlQdHNqZzBVZUg4QUw5YzYrcWhqUk9UU2l5K1JlTGd6eXp0TG50V0ZqZVhXV2NWeW9NbDhzbi9EZnM1V1cyMGxkbU85V3hLM2wxUC83Q2h6UEM5cmRuOGZsK3dNR1RKRWROSHVaNTF4bHI1bmNGa2g2d1hmTTR6VDdHUDZWMTU1WlpYQkZ2T2Q4UnoxMkErMmJ6LzBrRnc2UnYxZlFGK01aWW52amxOT1BobnY0WmtrWFR4dk8yWU0zOXY2SHZiNU0vdmZHUWU1UCtoeTFFbUZUZEpTNWJiT1FuODUwRlJlM21iTjUzUGxsWC9WS0xLb1hBYkV5U3gvSElrRDE1blI5Nk1NRnlQNExYSHBoK0Q5dURENkU3VE5URFBOS0RhMTFMRGNUWVNKZGNwd3dNMUpCQjd0b0tOZGlCOCtYQWVhOWh4STA0RW1Cb0NvaTk2ZGR1cXBJc09qWEZ0akJ3ajd3bHdzMlhLTExkTkZZSHoyM3ZGYjMyd0hPR0h6M2U5OVQ3N1ZmaUUrcWJJRWR2VHhuY3l5TUNFbVA3eCtrWGYyOFBFWlhKQlRJQUhHMXRVM1R0TnJmaElBZ3d3MEV3S0FDcG1vVWdwY0l4WXYzUW5PY1FtRW40eHA4aXV0NUNody84UDY5WklmTFpRc21OcFFsdC9CTFBJYXpWUGcva2Z5eiswWFgzQ1hpVWgrVVVuWWtka0UzeGRqbUIwSzcxNTg2VVdzUksyUGM1UjhVZlRvbjFSaW5OUEFtYjhIdWJYRjVkKzJnSExiMGVwcnJKN3NhWGJsNnVRcmNSQkNQV0pIL0x5QkJvSU45aVE0OU05MHBEOVVZRjY2VVA5ZWxGMEd4RE03WHIrbFhjNW9JcDAveEpaVzc5N0dUTk1tZUFtbStLT3VsVmRaUmE2clpqcDFSVE5MY1d2UlB2dnNqWTc4MUVYK0djZU1HQWo0VGhlbDBvcm1rTUU1RWdmcHJiUGFpYkQ4MCtjZ2NuL011SE9GTXFVUCtTZTg1cHByNEpNRXo2ZFlSQzdXV3YzVUR2aVEzNnV3aGNrN2ZnYUZBOWR2cnJ1dVE2czBFYUlYTTlyN29FUEZsN0E5SjlQL1pYUW1Ya0FuTGo0cGllTTVySVo4RGJkSTlreUF5N0dRTnVWVi9ldGlsYmIrM1RlNURBaDhlZXRzMXY5Z3VuVjJrTVJkLytFRkZZeWYyMy9ONmJtVkhseEdjNHVpWFBuakdVM3lOeThENHZaa0REUmhJOTVjYVk0cFlVZVNXKzhvWi9uaHdJL2JyYzdEdGpIaXQ5eHlDeFBCZHpSdkJxNm5taEV2UG5GT1A4UHBNaUNuUjc0L2lIajBqR2JPUDZIVFRqMnRtbmtXZHBDeWZzSThXM24zc0x2alU4YjVWNXlMbFJYRldQK01uek9tdSsyMmUzVUhyNzBIamJlZStsbHVmcThzMVN2UTdRSVIyenJMTGEwNVJWWEYxWFh1SHBETFVHTDVveTdtZWROTk44UHVCdDBpYm1WQ1g5QTkxZTQ0WjlUSnlXVkFrT2RsUU9xeU5vSHdrekhOR0pSV2NoUzRtdjJiTWRReE9TNkI4Sk14ZFY2amxSd2Fpcmovc0g3Yi91aFhOT3Y2aHcyN3AvcmlzbGh0bHJJUjZ5UmdsbWQrVSsvTll2ZEJuN1FsZktZOFM4WE14NXhJNWpucnpmb2pzL1cxNXo4bDJzQS80TmlDMTk4N1VuZEZVRGRYZE9xTzhYSHlVTTdpKy9SQlAzZHc4RnZGWG45RFhsTWx2eU5Hak1UdHZ0TkpXV1Q2ZWR1cHRmLzhoTkFxcTJqSFhNcHJ6RDg3Z3B2aC9jYjZveTVyRXdnL0djUG8raW83NDg4VkNTMzdXdjVYV0hFbE9UZTlIRzd6Sko2ZmFERDlNZktHSjVjQmdaZURwTFhqWFFnNVRxeWNyckpxOWZRelR4ZHlIRFNRNXh0b3R6VnRQb1g1TXFBREQ4QkFzMFA1NDZxTHRjK3l2YktJWGVQaUxkTzhnTVduaGVXRk8zRjRKRU4ycnlELzNGcnBMY1J6anRvWDBQSjFwMXdLcFFvNHFXZ1RkeXdQMXA1T2hFNzl6My9PNTB6ZE9TOEM0U2RqTkI1T29razhOZnR6MWVtWDJONTl4cGxuU2JwWHdVRE01Ly93bngyZTh3UDlsK0lNSnQzYldIV1RpWGJnbUYrZURhYmozUVlNODVLaVRpNmYwZFFKWFBLY2VOS0prT25CQlVPN1ZKdkFObW8vZmY4eHoxelJ0RlV2SHllZnc1eHh5Ni9abkJlNjdiakRqbEtuaUR2cVNLeG9PbmM1UHVFMXNReFl0UHp0dmMrK1FxVzk3cjMzbm1yNStQazFlUjdNVzh3ZisxK3Z2NkVUbEM2NkNHWnJIM1R3d1pMKy9NbTNidHhaaGh4MkdSQ2ZydzN1dk9RUXRDdE1TNzAvU1I2YnNPSkFVMkxGRC8yUkkwZFdhOXQ3Qi9HS2plTHpYMkdGNVN2dXpqQ25xY0YyYkV3bWVQcy84TUQ5d3FLeXVQVVhBL0s2dStlZVlTTERnYWJYVHo1T3FITENYT09rUGJYK3o0TDM4MWxublpXaU12MUVjTkpYTHRWeTl1Zk43QmRoRy9CRUF3ZkloSFVTRkVDbENkYjFsM3dhOHJxTVh1QTYxSC9qNit5cmRBK0p5R2gwQlBFNDZSS1lnQkpORnBDdzdVQlpTemJoelQvOUVqTmJWdnFaMG4vNzdiZUZGVmRjU1V6TG9zUmFnYllqWUFVenJMYnFhcC9aL0dOYlRmakhQLzRaN3JqanRqRGhoQU1DYm0wTm1ERUtqei8rUkhqMXRWY0NHdU13OVZSVE4vS1BRVTdBbnZTQTdhOWg4c2ttRFN1dnNtckF0N1Nrc1BtU2RPeXh4d1VjYkE5YmJyVjFPT3VNTThLTk45OFkwQWtLV0MwTW1IVUt1UFk3eHUybHNycFhYM3MxWEhINUZRR3pnUUV6ZldHRjVaY0xYMWhxNllET1FsSCtYbnZ0OWRBN3NqZE1PZlZVQWJPQlZrTlMrY2ROYXVHRjU1NFBNODQ4UTVoOXRqbXlnZ2c5OHNqRDRZWWJiZ3o0dm1SWVl1amlZZlUxMWd5dnZQcHl3Rm5BZ0xOM0FkK2hiS1R6M1hmZURmZ1ljM2pxcVNlUm5na0RabHZEaWl1dEZEQW9LZlJqKzFqQUFDcE1QSENpc09oaXNGSE52ZnJxYTdEM3lERDExTk9Jdld2a2dDMktBYlBCQVJjeXdXNlRoRFhYK2xMQUxHaVJmeW00VWZDbGwxOE9HUEFHbks5RHZFK0dnUU1IcFByL3ltc3ZoMU5QUFQzZ2hZenl2cUpUMWJRL0J1R3E5NWxuQTJackEyN2FEVmpGZ2t6bjl1ZXBKNThLVi83MXFvQ1Y3ekREb0VGaDFWVlhDVU9Hek5Ob2YxNSs1WldBbTM3RE5OTk1FM0FCUlV5RDZzZmxIV0g0QXc4R2JGc09PUC9wMHFmZ1BjUHVEdGhTRjdDeUh2QmRWMGtLenV5RzkwYU5Ecmk5TWt3K3hSUytoZEp5L09vcllaWlpadzJ6ekRSelNqcGp3NlVEQVRPbkFaMHI1R3NlWUdLK0FJMGUvWDY0K3BxL0JweWxESk5NUEVuQWJMMlVxOWRSSGtmMlBoNndZaFR3ZVNBUmVmdXROd011OXdrWTRJWEZoZzR0OUxQOWZlbWxGd05leEdHcUthWU0ySGFPMkVQQTdHdDRFUG1jRkhVSEEwaGdTdnRqMjdYb3gxWXhJZkZaWVVWWmJKblNDUkZNUTRaLy9ldWY0VzkvdXkzZzBnbmtjeGFVajdVQ1pvTWx6bi8vZTVqNEN5eTRVSmdjejlDeWlNRi91UE9PT3dNbU04TGlTeXdSNXA5L1hwVGpwOE5MTDc4VUJzODVWOENuT1NCWE9uU1d3bFZYL2lXODlmWTdBUy9mZ0E1eEdEeGtNSmpLdExQOFljVlp5dUJzczgvUmVQNzQ5bWJBcDR6Q25IUE1HUWJOTUNncUtlT0l5QTZlNDB0Z0FvVGZoejZMNzc4blVjK3drZ1Q3emhobW4yTjI1Tm5udUF6ZGZmY3dsSTFiVVQ5R2hVSFRUUi9XK3ZLYXNQdGNEYnVPR2ZOK3VPKysrd05XQk1LaWl6VGJLQXJnMkVLNDlwcXJwYXp6dmJIZ0FndWlySzBaSnBsa1lsQnozUm4xL3VqdzRQMFBDR2JvNGt2Z3ZZSjl0K1Fva3htd01oOXdRUTNxVXkvYTZiRUJIMEFQWC9ucVY4TDBTR2QzNXlLSklENVBFbTY5OVc4QmwyV0ZCUmRlS0dDRlBhV0d6Ly9oaHg4SzExMS9ReGoxN3J0aHVrSFRCV3dwaGczcTd3QVhieGZsMk9JbytYL3A1VmNDUHRray9ZS0ZGMWtZM0JYYWtXZWtQWmtJdGxoa2tVVUsvZlgrMXpubm5odXdJeUxzc01NT0FXZEYwY2U0S2R4Nzd6QzAweE9GVlZmRGU1VDJwNUJ6T0tjWU1ERWNwc0g3YmU1NTJBYkRwU1JYNFFXMFpjOGdEWmlna3JiT3BIMzVmd0RQOTRPK01RRTNhcXQ4OGF1UllWdGkrRFBldDg4ODgxeVlhQksyd1VPbG52Tjl5elNNZU96Uk1BRHBwSTI5ZnI3VDhjbW1NREhlVDJ5cnBrZjdTRWY5T0c4dTluL293UWZEK3grTURuUE5OU1I4QmU4U1RIaTZGS1RNT0Z3SnN2emRjdk5OWWRnOTk4cjdmOGpnSVZMK3BweHlDclNuS0hOb1QybDRyQjZGQ2VJVHNPZVB5N25DQUx5amwxdGgyVERMekxOS3hEanVJK1VQcTlwaDl0bG5sZjRmK3pPUGord04wMHc3SGQ1ZGc0WFAvenovM0xQaFdmUWpjTWRGb0g2cWtmWWRiYWZWeDN2dXV6ZmNqR2VLQVc5WWFlVlZBbTRHNzFqK0dTKzJHQWVjb1VVWkhZNTZOS24wdjNCVFBONmhzUFhJeC9BT254VnRPZDVieVZYaE9laS84MDYwM1dqdk1ibVB2c0Q4b0NJaDBWSC9yVGZmRWthOTk1N2tZeTNVMGJrR0QyN1VQK05YWCsyUHdWQVkrZGlJZ0J1dEE0N2RsQ3dTY3M4cGdSWHlNU2Jjai9MRlpBeGRZbkd4TmRtdC9PSHlyVEJtOU9nd0Q5NnpaWDh5eEhmMHk3RDMzR0xYdWxMMndiQ2FLT1Z2NnFtbWxMNFpWam1MOG1mNVo1SndRekhLNldOaE1yeGJWMWxsdGNEeThhOS8vMXZ5di9DaUM4djczT3ZBa2FBd2ZEamFxNTRKcEEvbmFZUlo3cWlmOVE4RFJkaHlTTURFSzk3M0E2UGFaQWdSWlFpWE5LSmUzeEFlZXVnUjVHbWE4SjBOTndwVFR6bGx1UHVlZjZNK2hJQWRnTUtiZjhvNE1yNE9PYjRFSmtDWWZjanNMemhQcUVlTEVsb2JhRHI3Z3JsZjJVanRueWRyVkw3TUxWQU9Ka2FQOG5CaVNJQlMrK2RKekkzVWlsd0hZWS95Y0k3SklLWDJ4NE16WVFGWFQwczFKUjhkcSt3TkdHQ3V1dHBxSFN1bmo4L0RJbHo4S0xWL25peFE1NVp3QjJHUDhuQ095U0NsOXM5anZGYVdNcmRBT1pnWVBjckRpU0VCVlRqdXVPTURQbk1RTU5NY3pqcjc3RVRwQkdoY09VYUJjakNKZUpTSEUwTUNsTm8vVDJMK1ZNcGYxdjdKMlI5YlFzWG0rT1pqT1B6d24zMUlHNUZUVUxlV2hEc1l6Nk04bkdNeVNLbjk4eGp2SjVmLzdqRm1TaWVvbmxvSmQwaThSM200R2FkUysrZkpVblZ1Q1hjUTlpZ1A1NWdNVW1yL1BNYmIycjl1TFFsM01KNUhlVGhiMGlDbDlzOWp2SzM5NjlhU2NBZmplWlNIc3lVTlVtci9QTVk3L3V4Lzdqbm5ZdUpWQjVvbm4zeHlTa0E5dFJMdWtIaVA4bkNLS0FGSzdaOG5NWDltM24vZGM1UXBuYUM2dFNUY3dYZ2U1ZUZtbkVydG55ZEwxYmtsM0VIWW96eWNZekpJcWYzekdPLzRLLzlaWXduVlV5dmhEb24zS0ErWHNUR2sxUDU1c2xTZFc4SWRoRDNLd3prbWc1VGFQNC94TmxNcmNoMkVQY3JET1NhRGxOby9qL0ZpM0dNcm10MEZPSy9kZzMrT0k0RUp5REVLMUExUG90SE1WOUV5cERpai9LL3Fmd1N6Y0RJanhORWxOblp3RmdJM2ZpRWdpT2hiTGhXcklmL2Iyci9iOHovdXVHT3hvcmxIMkhMTHJjUFpaNS9sak5hOU5IMmV5cDh6aUFQTk51WXJxUXc1ZHRUWHNaZ2x3OEpCR0luWjJOVldYeTA4Ky9SelljU0l4ekQ3TmljWVdaYnJybnRzcmYzTk51YXI3Y3FRdDJkYi83dlYvMXlXdkwwSWQ3ZG1wcFU4WmNqSDE5cS90Zi8vVHYvbjNITi9oL2ZoRm1HSEhYY0lKLzhtRHpSemliYVNicjVTeWxEbVpuMXBuLy8venZQL3NLZlp0bjlXMHMzL01JdTE1ZitUcVA4WWFHS3ZtTzhzSnZzbndMYzZCVnh5MkFPSkxBVVJBZTZneDM5YmJzMFJGWXk1SHZUYldWRHBVdksvVXordWVzZUsyNWJZNnJmNjV6TC82VW45QjU3L3NWaGR3MmNPQXM1YnlrQlRLMFJiL3NRQ1JlWDQvOVUvZkc1RnRnRnhTek8zdGVIaUE5bVdWYWhJSFpMVy9wKzAvYU5GRzE1cmYvL20rdTlzLy9XaC9mL3FYK1BCUjBUNy9Odm5uNmY1dFB6L3pnYWEyMk9nZVlvTk5Odnk5M250ZjdidER5M1FsdjlQdS95bkZVMDN3cE95bVYvYkdkSkM2MzdMTjEwaTFORVdWdC8vSmhFQXhxVzRyRFZEbmx2Z1VpU1I2MmdMcSs5L2t3Z0E0MUpjMXBvaHp5MXdLWkxJZGJTRjFmZS9TUVNBY1NrdWE4MlE1eGE0RkVua090ckM2dnZmSkFMQXVCU1h0V2JJY3d0Y2lpUnlIVzFoOWYxdkVnRmdYSXJMV2pQa3VRbi85cXl6dzZFL09Temcwd3pobUdPT1R1UXlwaHl6MTF6bnlWd2FUZGFhb2FUQWdHWWtRcW1qTGF5Ky83V0k2QnVYNHJMV0RIbHVnVXVSUks2akxheSsvMDBpQUl4TGNWbHJGUTQ4NktCdytFOE9GNTdOTnQ4c25ITHlLWEtPcUNhU0lpdGp5akY3elhXZXpOWFVYMHdnSkMyU0hOL1RUSlI2M0JadTlkTmMzZ3JKWkExait1ZmYycDhyR2gyY0Zhd2FxWTYyc0xlODRiSm9pV250YjZVdVd5TGJLa0tseVJLNWpyYXcrdjQzaVFBd0xzVmxyUm55M0FLWElvbGNSMXRZZmYrYlJBQVlsK0t5MWd4NWJvRkxFVUhoTXE2QTd5eUh6VGJkTE9CU3BJTE5hMjZLbHBpc05VTWZSVDk1eXBoeXVOWGZ0ci90KzhmWEFsK2p5bHFUYTEyR1BMZkFwVWdpMTlFV1Z0Ly9KaEVBeHFXNHJEVkRubHZnVWlTUjYyZ0pjK3VzclRJV1VUcHVCZDJ2bzBrQ0pjemxTdWdxM3NoQXhKV3NsSW9PUUtzZlpoUHoyY3NWUm5LMlZORDlPbHByZnhoRDdOR1dQMTltdEpyUk5yQkxVU2ViRmZERDZoLzNQRHoxUkM4dWw1azh6SUNMV3NxTE4xcjd0K1VQWlVvYnNGcForMlRLSDJJcEI4aUtpQVc1TFg5dCtXdkxYMXYvMnZmL2YrcjkzN2EvN2Z1bm1DQVloL2V2VzlHTTcyM3ppc2lJOUlnNEpQVW9rd05mR2k0bGVnSmlOQzZjNUdwQWc4VWpXdjFpWTIrU1pMN1cvbTM1aXlzd3FYd2tvSzEvWWdwbmoxUnZha0NEeFNQYTlxZHRmMURIZkpGSXhhZHRmOXYydDIxL1pXNHoxWThFdE84Zk1ZV3pSMm8zYWtDRHhTUGE5MC83L3ZuZmV2KzRnYVlXNUxJNHh3bHFqNVQ2NEJBQ2FwaS9kSGtCSmZNWlpMNXkrbCtsZUhxQ0UyRDhEaUdnaHZsTDErcFhPL2pKQWJPWStmL0gzbmZBVzFJVVg5OEhLem1qNUxRa2xRd0dnb2lBaXFpZ29BVEJuREZoSWdtS2dBb3Faa21mQkVrbWdrcFFFY2xCVUV4a0VOZ2xTODVoZ2VYTlY2ZXFUM1gxek55M2ovZkhoRDIvOTZaT1ZaM3VtcW5iMDNmNnprd1BHVm5tSERKL3puVkFkakFvTkIxckxDeGY0K2M4RVZGYXB1TGFQTkh2MkFINXdhRFFkS3l4MVB4Ykhtcjd5KzJFaUpJWnl0STgwZS9ZQWRuQm9OQjByTEhVOW1kNXFPMHZ0eE1pU21Zb1MvTkV2Mk1IWkFlRFF0T3h4bExibitXaHRyL2NUb2dvbWFFc3pSUDlqaDJRSFF3S1RjY2FTMjEvbG9mYS9uSTdJYUpraHJJMFQvUTdka0IyTUNnMEhXc3MvNG50VHdlYXZ0a09iSVBqekQzdWNwQTRGRzE3cjA1amtxV0k3ZEpxNVQxOW9yRmtCZ3ljcEJQRzBra3FBOVBhcWJ2R2wxWnJ6WFpvanZneE9LSG1YelBRbXc4YWt5eEZhT1RNb1JCcS9zdDBNb1VwUlM3YTlsNmR4aVJMVWZQUDlEQ3B0ZityeDEvdGYyci9JeG53cnNFQk80a2syL1plbmNZa1N4R0NzRTRoMVBhbnlXRG04Z2RSODE5a3dCUEV0aU15ajdoUzJ5SXB5VkxVOXNmME1MSFA0dmQvdnFJWkttVWNTTWFtakQ3aTdNdUlQa3IxZE56QlVPTjdwOHFjUVRKRGxORkhuSDBaMFVlcG5vNDdHR3IrYS83VGx6cmJEQ1JiQ0dYMEVXZGZSdlJScXFmakRvYmEvbXI3cSsyUGg0dExIaUdVN2dnZyt6SUtib1hxNmJpRG9SNS85ZmlyeDEvN3NLbmZmNUlSak5kQ1R6RTBSMk94YXY4amVld2tNUmllNC8xdkhtakc1aFAyWDgxdDNibGRSOWZpNUF5RTFFalcwNU1NMlU3VXJxU3RrOWZUL0lkU3ZZeUFHci9tdjdhL2V2d1ZQM21HRHFMZGliUjFwM1lkWFl1VE14QlM3ZjlxLzErLy8rSWxoM3g0ZEw3V2h4NVVYVWZYRXVvbHJNZGY3WC9xOTMvOS9xL2YvK3dSUzludVJOdTZzN3VPcnNYSTVVQlRXTVVrbFVORzJYMXhMRUFyREZXVldHR01seDlpcFR2V1YrUGJMMGlXTE1sUXo2K01NVjg4Vml5WHJZeFNWWWxWelg5dGYvWDQ0eStMUER6aThWVDduOXIvK1BDbmZ2L1Y3NS82L2V2ZFl3ZUVEdFJnTUlCTVZTVlc5Znlqbm4vVTg0Ly94Zk1QRzJpeVE5Q3V3RmFsS1dnQkJ2ckVJT3VpRExXVXBxQUZHT2dUZzZ5TE10UlNtb0lXWUtCUERMSXV5bEJMYVFwYWdJRStNY2k2S0VNdHBTbG9BUWI2eENEcm9neTFsS2FnQlJqb0U0T3NpekxVVXBxQ0ZtQ2dUd3l5THNwUVMya0tXb0NCUGpISXVpaERMYVVwYUFFRytzUWc2NklNdFpTbW9BVVk2Qk9EcklzeTFGS2FnaFpnb0U4TXNpN0tVRXRwQ2xxQWdUNHh5TG9vUXkybEtXZ0JCdnJFSU91aURMV1VwcUFGR09nVGc2eUxNdFJTbW9JV1lLQlBETEl1eWxCTGFRcGFnSUUrTWNpNktFTXRwU2xvQVFiNnhDRHJvZ3kxbEthZ0JSam9FNE9zaXpMVVVwcUNGbUNnVHd5eUxzcFFTMmtLV29DQlBqSEl1aWhETGFVcGFBRUcrc1FnNjZJTXRaU21vQVVZNkJPRHJJc3kxRkthZ2haZ29FOE1zaTdLVUV0cENscUFnVDR4eUxvb1F5MmxLV2dCQnZyRUlPdWlETFdVcHFBRkdPZ1RnNnlMTXRSU21vSVdZS0JQRExJdXlsQkxhUXBhZ0lFK01jaTZLRU10cFNsb0FRYjZER0Y1UmRQcFBiWDFtSlN1OXVCMDZLRDhZU3ZGeUY0UEdrQ1B0OGRVNDBzR05DOGhPUTRkMVB4TG10clBHZVRzaEdibnNNZmJZMUs2Mm9QVG9ZT2EvNXIvMnY2a0RlUWpvc1IrMkRtSXpHVHNNYWxIN2NIcDBJSEh6WllhUCtiQzArNmd4OXRqcXZtWERHaGVRbkljT3FqdFQ5SlV2My9MUGllM0RqL29BdWp4OXBpMGdOcUQwNkdEMnY1cSsvdjNIMzlOTTlvMGNyOFk3eERKelRPM2U5b280U0dtek93MmlveUl5Wk4zQXRYNE5mL3BmclgrRmpMOGk2cVB6NVpsTWpJaUpxdTJ2M3I4MWY2djl2L2QzaUwzRUxYL0dUWlE2T3RSbWJkdVJ2dll0Zit0L1cvdGYydi8yKzB0MkkrdzE2Q0VuWmlTM0s2TWpJakpyUDNQdjZML0NWYzAwNGVnSW40ZzBZNFBKL3I0WVkxZmVta0J4Zk5RckZjSnpzcngzT1JnL0VFRDAwc0xxUEh0Qk1yU2t6S2p3ck5VODErMFMyUXE1c1l5OTB6V1hscEFiWCsxL2FYZlYzSzcwZ2JpcmFSbFIwdUxQdWpQYlBIU0FtcjdxKzJ2dGo4ZVArbklVT0ZIaVRpakhkem9ZOW54U3k4dG9CNS85ZmlyeHgrUG5YaWMrVkdTanpjM09XREJaeVM5dElCNi9QM3Jqcjh3MEN3L0wvOUFhRzU5TUhHZUJPT0dFb1FxNVJjRHVYQ2JEeWhVU0FJcjc4b09Rd3l4WWRUNDBraFNVaTFYSVdPRUttdithL3VyeDEvdGYySWZ5dzRpMmtyY1lZaWg5ci81aTdsKy85VHZuL3I5YTMyRzlSV2h4eUJVV2M4LzZ2bEhQZi80bnovL2tQdG0wUjNJMEs5MU9NUnYwdkljUkxVT3YrQVVQVTMyZE13MDFQaWRmTmI4NXpPWjNJSWNkZkxsSGdDMks4cmtwRXJwdk5yK092bXM3YSsyUDU1SkY4ZVdLWjMyVW5CNGdGSFc0MDh6d0hSUTF2NUgwbUtuWUozMlZQdWYydi9VL3Fmb1ZhUFNPVjZpMC9zVjcyak1TNVhTZWZYOHA1UFAydjg4cS8zUENCN1JiRjF1RE0xUEdpRGM2WUQzOWxrMDZySU51NnRGYnFsS1UxdVBJNXBxL0pyLzJ2NTRNc2JUTWovS0hNUmpKaDljN2k2T2FWcnI4U2Y1N0NRdS8weUJQTlgrcC9ZL3RmK3AvWS8yQmJJcXIwekFha3VuRzJrWldxb1dVbHVQSTVwcS8xUDduOXIvMVA0SEhVYnNGNnpYeWV1T3IyVm9xVnBRYlQyT2FIcTIrcC9XcmJNeEJMWWw2aEduSGV3eHNZeTVaQjN2dDByRjVPeHR5R2k1WFdIVUk2N3hOUU05S2FuNXQ2VDR1cmEvN3RsUlBmNXEvOU43dGFEZG9VUTk0dHIvMXY1WE10RFRKR2cwbDZ4ci8xdjczL2Jvdkg3LzFPK2YrdjJUdmtTamFIZW9VWTg0bGVreC9hZjJ2enJRaktOVzIxRHNTT29kZEdkc2o3REd3bjRqVzB1THNjSmFDOHFxdDNGSnhIRFZ0TVp2WlZtVHJDdjlYcS81cisydlBOcXNiZGpSRm5FOS9qd0RTQXVPbnRyL2VFb2lxUDF2dm1wU3YzLzBZSkhtVWIvLzlSalJMbFZYOWZzM2RScjErOGNTa1Z0Rm1aR1VwaXowa0pKVi9mN0pPUW1vZnY4ODk3OS83SXFtSGpIaHNORURRMW9DajUvUUtJYkJva2loZEV0MDNEQ2tlOWdjb2xpTjMwM2VFRXVSMDBMcEZ1aTRQZWtqOWlOMWg5Q3RvMjBwaWhSS205azVsVE5EL2Z3bFVUWC8zaFRSYk9yeDN6MTRobGlLUTY1UXVnVTZiazk2YlgrZUNxU3R0cjl1NHhsaUtkcFVvWFFMZE55ZTlOcitQQlZJVzIxLzNjWXp4RkswcVVMcEZ1aTRQZW0xL1hrcWtMYmEvcnFOWjRpbGFGT0YwaTNRY1h2U243dnRiOFRlb2htVG9YdWREQ0VseVJ5OUlKayt4TWxxeGQzSVFDTFBQY1ZhT28vZ2VvMVdGRHdzMHVLSGhERHpFS2NWMXJJMWZzMS9iWC84NWtqSGl4eFVzVlhZNFVJZk5HQXM5ZmlyL1UvUkRMUlZZR1d0SmJXWjJIU2NZYVRhLzhZampZbXF4MS9NaWpVWjVnWWFNSmJhLzlUK3AyZ0cyaXF3c3RhUzJreHNPczR3VXUxLzRwSEdSTlgrSjJiRm1neHpBdzBZUysxLy9xLzlqMXpSSEpWc2hwRTB6MFV0dzdxT3FRL21jY09pZlBqc3JBTHo2cm9nNXVxSG1ETmhCcWdvRHdXTDc2ZDVkVjBRalliMUVITW16QUFWNWFGZ3FmRXREL0dyb2toVWNvc1lZczZFR2FDaWZNMi9aYXUydjlScXJIWG91bWdvdVZFTk1XZkNERkJSSGdxV21uL0xRejMrdFRGb0d5a2FTa3FQaUNIbVRKZ0JLc3BEd1ZMYm4rV2h0ajl0RE5wR2lvYVMwaU5paURrVFpvQ0s4bEN3MVBabmVhanRUeHVEdHBHaW9hVDBpQmhpem9RWm9LSThGQ3kxL1ZrZS9sWHRUKzZQdHRRWG4wYmFCZ28rdkMyY3ZtZjdTZXVUdWRxK1gwOUNpVXdNeGdScmZEa3c1TWlvK2EvdFQ1cUI5NUhkSTZWanlZZFZQZjY2djE2R2RPVkVCV09DdGYrcC9VL3RmK3YzVC8zK3JkKy85ZnUzbm45MHp4Q0dXdkpweGYvMitWZlByYlB4NUFxNC83UTJKN0FueDNCeTZTMmVTb3NZT25EVmt6dFUwbHZCMkw5eTFQak0vcEQwMWZ4clltcjdxOGZmc0JPSDJ2K2t2cVAydjdrenpTajFvTmtRVWYzK3lkbm9iVDcxKzZkKy8wakRxTisvOWZ1M2Z2LzJqM0NlWStjZmZ1dXNmalAwZkh1V3B2d0ZvZGtwbmZuTEpWNk9GV3VIVmhpQ0VpQXJLMDFKbzVHU1pKZm1vSnV5NVU1cThBWklibWxLR28yVUpMczBCOTJVTFhkU2d6ZEFja3RUMG1pa0pObWxPZWltYkxtVEdyd0JrbHVha2tZakpja3V6VUUzWmN1ZDFPQU5rTnpTbERRYUtVbDJhUTY2S1Z2dXBBWnZnT1NXcHFUUlNFbXlTM1BRVGRseUp6VjRBeVMzTkNXTlJrcVNYWnFEYnNxV082bkJHeUM1cFNscE5GS1M3TkljZEZPMjNFa04zZ0RKTFUxSm81R1NaSmZtb0p1eTVVNXE4QVpJYm1sS0dvMlVKTHMwQjkyVUxYZFNnemRBY2t0VDBtaWtKTm1sT2VpbWJMbVRHcndCa2x1YWtrWWpKY2t1elVFM1pjdWQxT0FOa056U2xEUWFLVWwyYVE2NktWdnVwQVp2Z09TV3BxVFJTRW15UzNQUVRkbHlKelY0QXlTM05DV05Sa3FTWFpxRGJzcVdPNm5CR3lDNXBTbHBORktTN05JY2RGTzIzRWtOM2dESkxVMUpvNUdTWkpmbW9KdXk1VTVxOEFaSWJtbEtHbzJVSkxzMEI5MlVMWGRTZ3pkQWNrdFQwbWlrSk5tbE9laW1iTG1UR3J3QmtsdWFra1lqSmNrdXpVRTNaY3VkMU9BTmtOelNsRFFhS1VsMmFRNjZLVnZ1cEFadmdPU1dwcVRSU0VteVMzUFFUZGx5SnpWNEF5UzNOQ1dOUmtxU1hacURic3FXTzZuQkd5QzVwU2xwTkZLUzdOSWNkRk8yM0VrTjNnREpMVTFKbzVHU1pKZm1vSnV5NVU1cThBWklibWxLR28yVUpMczBCOTJVTFhkU2d6ZEFja3RUMG1pa0pObWxPZWltYkxtVEdyd0JrbHVha2tZakpja3V6VUczU3A4TXFMQjZpVjVRVnRPbHNLcnNhVnV5N29pQU1oZnVJS01NSjNZOWJVdldIUkZRZHFKbWcxR0dFN3VldGlYcmpnZ29jN2dPTXNwd1l0ZlR0bVRkRVFGbEoybzJHR1U0c2V0cFc3THVpSUF5aCtzZ293d25kajF0UzlZZEVWQjJvbWFEVVlZVHU1NjJKZXVPQ0NoenVBNHl5bkJpMTlPMlpOMFJBV1VuYWpZWVpUaXg2Mmxic3U2SWdES0g2eUNqRENkMlBXMUwxaDBSVUhhaVpvTlJoaE83bnJZbDY0NElLSE80RGpMS2NHTFgwN1prM1JFQlpTZHFOaGhsT0xIcmFWdXk3b2lBTW9mcklLTU1KM1k5YlV2V0hSRlFkcUptZzFHR0U3dWV0aVhyamdnb2M3Z09Nc3B3WXRmVHRtVGRFUUZsSjJvMkdHVTRzZXRwVzdMdWlJQXloK3Nnb3d3bmRqMXRTOVlkRVZCMm9tYURVWVlUdTU2MkpldU9DQ2h6dUE0eXluQmkxOU8yWk4wUkFXVW5hallZWlRpeDYybGJzdTZJZ0RLSDZ5Q2pEQ2QyUFcxTDFoMFJVSGFpWm9OUmhoTzducllsNjQ0SUtITzREakxLY0dMWDA3WmszUkVCWlNkcU5oaGxPTEhyYVZ1eTdvaUFNb2ZySUtNTUozWTliVXZXSFJGUWRxSm1nMUdHRTd1ZXRpWHJqZ2dvYzdnT01zcHdZdGZUdG1UZEVRRmxKMm8yR0dVNHNldVJoNWI4R1Uydmh6UklMTGozUlREdmNhWGJyT0d5THgyVUtOdGQzS3ZBdFVDa0RSSkxqVi96TDIyaHRqOC9GSGpROFVpeDQ0UWFwVm5iYS9jcWNDM1FhSVBFVW8rL2V2eEpXNmpIbng4SzlmaXpub0U5UmFtVlZ2UGx0WHNWdUpZSmZ2OFRmRmhxLzFQN0gya0x0Zi94UTZIMlA5WXpsTDBITlVyanROZnVWZUJhb05FR2lhWDJQODlHL3pNaWs4NWl1SmtTcXBudFhmVXphS1VzaStZWHNiWWVoQlU2K3czN1h1a3ZIMnZyWjlCS0dVdElET3lhdmlTM3hpOG1RcEYwMWZ4YkYxTGJueHd6OWZoSEVzck9vNlVONldGU3VTSGUydi9VL3JkKy84Z3hVcjkvNi9kdmZya1l2blByK1VjOS85QnZYUDNxN1AvK2pGL0IvUXhhS1dPSmV2Ny9uelQrMFN1YXhjZmtpb1B5MCt2UnlOVG5WNlgxVURxVkJEZVVvSEM3NHFBazkyaGtNaTZsVTBsd1F3a0t0eXNPU25LUFJpYmpVanFWQkRlVW9IQzc0cUFrOTJoa01pNmxVMGx3UXdrS3R5c09TbktQUmlialVqcVZCRGVVb0hDNzRxQWs5MmhrTWk2bFUwbHdRd2tLdHlzT1NuS1BSaWJqVWpxVkJEZVVvSEM3NHFBazkyaGtNaTZsVTBsd1F3a0t0eXNPU25LUFJpYmpVanFWQkRlVW9IQzc0cUFrOTJoa01pNmxVMGx3UXdrS3R5c09TbktQUmlialVqcVZCRGVVb0hDNzRxQWs5MmhrTWk2bFUwbHdRd2tLdHlzT1NuS1BSaWJqVWpxVkJEZVVvSEM3NHFBazkyaGtNaTZsVTBsd1F3a0t0eXNPU25LUFJpYmpVanFWQkRlVW9IQzc0cUFrOTJoa01pNmxVMGx3UXdrS3R5c09TbktQUmlialVqcVZCRGVVb0hDNzRxQWs5MmhrTWk2bFUwbHdRd2tLdHlzT1NuS1BSaWJqVWpxVkJEZVVvSEM3NHFBazkyaGtNaTZsVTBsd1F3a0t0eXNPU25LUFJpYmpVanFWQkRlVW9IQzc0cUFrOTJoa01pNmxVMGx3UXdrS3R5c09TbktQUmlialVqcVZCRGVVb0hDNzRxQWs5MmhrTWk2bFUwbHdRd2tLdHlzT1NuS1BSaWJqVWpxVkJEZVVvSEM3NHFBazkyaGtNaTZsVTBsd1F3a0t0eXNPU25LUFJpYmpVanFWQkRlVW9IQzc0cUFrOTJoa01pNmxVMGx3UXdrS3R5c09TbktQUmlialVqcFZDSjFiWjYwUWl4cTFzSFZxOGVxR2dGeVhJbG41cjFrOUpZcFl5Vi9ZYW56NTFNYSsrbEttMWJJSG15SloxZndQdjM1VnRMWGEvalFEUlU3cThWZVB2OXIvcEo1aFBNS09IakFWeWFyMnY3WC9IZllOWHZTMXFYa1Z0dHIvMXY2MzlyL2o2WGlMb3dkSzdYL2wwUGszZmYrMEJwcldwZWtuNU5CQmFjWUhKeTYwZVdXVU5PWG0xWmpPVExPYVRQY2lEdFFldFJxLzVyKzJ2M3I4YVo4UU80YlFvN1E2azQ2bk5JUktIRHBRYXRScS8xUDduOXIvMVA1SCs0VFlNWlNkaW1oak9nTTc4Qnc2cVAxUEs1TzEvNjM5YisxLy96djYzOVpBcyt3U3l5NHU5SWVoeXh1Yms4c1lMN01WWmRXSjBSU3hFeHlZZDJ5T2sxTlhuOW1Lc3VyRWFJcllDUTdNT3piSHlUVytwR0lrZk9GcTNucVNGMDBSNTB3U21YZHNEcmxzMTVtdEtLdE9qS2FJbmVEQXZHTnpuRncvZjBsRi9meHphMUdVVlc4bzBSU3hFeHlZZDJ5T2sydjdrMVRVOXBkYmk2S3Nla09KcG9pZDRNQzhZM09jWE51ZnBLSzJ2OXhhRkdYVkcwbzBSZXdFQitZZG0rUGsydjRrRmJYOTVkYWlLS3ZlVUtJcFlpYzRNTy9ZSENmL3o3Yy9IMmdPVHhnZjVBOE1odzV5UmhVTnM4TkpINlVWTFRXejBXTVAwZ2VHUXdleGdPQmhkdERvbzdTaXBXWTJlbXA4UE1nZk11VFFRVXlZNEdGMjBPaWp0S0tsWmpaNmF2NXIvbXY3QzBlSVF3ZnhnQkU4ekE0YWZaUld0TlRNUms4OS91cnhWNCsvY0lRNGRCQVBHTUhEN0tEUlIybEZTODFzOU5UanJ4NS85ZmdMUjRoREIvR0FFVHpNRGhwOWxGYTAxTXhHVHozKy91L0hud3cwUnlYSDRZa0J6N2lEbVBVQ2x3d09TQk9sY0lxU0hremg3UTY1b29LWTI0RTNpTXhzbzdKa2pXOEhSTTIvWnFCb0hMWDkxZU5QK2pqYzVpOU5BYmZiNUtWb0tMWC84WFE0eUtscW9aSlIrOS9hLytLRUpDMUY0eENsZnYvWC9xZjJ2L1g3UjdxQyt2M0xUaEt5NkNpRDJyTEhJZ21YalAvczcxKy9vaG4yVUhjamIzWkduWDB0OTlUZGJUTjFrM0h0UlFTUVpiWWNOYVBJVmx3V2NYZmJUTjFrWEhzUkFXU1pMVWZOS0xJVmwwWGMzVFpUTnhuWFhrUUFXV2JMVVRPS2JNVmxFWGUzemRSTnhyVVhFVUNXMlhMVWpDSmJjVm5FM1cwemRaTng3VVVFa0dXMkhEV2p5RlpjRm5GMzIwemRaRng3RVFGa21TMUh6U2l5RlpkRjNOMDJVemNaMTE1RUFGbG15MUV6aW16RlpSRjN0ODNVVGNhMUZ4RkFsdGx5MUl3aVczRlp4TjJ1NFdqTUFBQkFBRWxFUVZSdE0zV1RjZTFGQkpCbHRodzFvOGhXWEJaeGQ5dE0zV1JjZXhFQlpKa3RSODBvc2hXWFJkemRObE0zR2RkZVJBQlpac3RSTTRwc3hXVVJkN2ZOMUUzR3RSY1JRSmJaY3RTTUlsdHhXY1RkYlROMWszSHRSUVNRWmJZY05hUElWbHdXY1hmYlROMWtYSHNSQVdTWkxVZk5LTElWbDBYYzNUWlROeG5YWGtRQVdXYkxVVE9LYk1WbEVYZTN6ZFJOeHJVWEVVQ1cyWExVakNKYmNWbkUzVzB6ZFpOeDdVVUVrR1cySERXanlGWmNGbkYzMjB6ZFpGeDdFUUZrbVMxSHpTaXlGWmRGM04wMlV6Y1oxMTVFQUZsbXkxRXppbXpGWlJGM3Q4M1VUY2ExRnhGQWx0bHkxSXdpVzNGWnhOMXRNM1dUY2UxRkJKQmx0aHcxbzhoV1hCWnhkOXRNM1dSY2V4RUJaSmt0Ujgwb3NoV1hSZHpkTmxNM0dkZGVSQUJaWnN0Uk00cHN4V1VSZDdmTjFFM0d0UmNSUUpiWmN0U01JbHR4V2NUZGJUTjFrM0h0UlFTUVpiWWNOYVBJVmx3V2NYZmJUTjFrWEhzUkFXU1pMVWZOS0xJVmwwWGMzVFpUTnhuWFhrUUFXV2JMVVRPS2JNVmxFWGUzemRSTnhyVVhFVUNXMlhMVWpDSmJjVm5FM1cyejZ2S3VGYnh1SlUzcUUzNlREV3lEWVIxOHVvR3E0K2NxaWVVL2FTS3VHTWFhWWk5dFdvMWY4MjhQZGRmMjU5Y0V3ckZrTUt5RHJ4NS9rZ3pOUisxL2F2OWJ2My9xOTI4NnFWQ0J2a0g2aGVLY0pQb04xL09QZXY1Unp6L3dOVnJQdityNVYrb3N3em1td2JBT3Z2R2VmNFlybXEwT3VLZ012bWhJVFRLYXZIaG9ydTUza0tvSnVwZHJnUTRsR21wODdSSmlTang5TmYvZVhYcCtITlQycDZrSStmQjIwd0lkU2pUVTQ2OGVmL0tWSEp1RU41L2EvOVQrSjUydWVmdHdVUHRmVFVYSWh4ODNMZENoUkVQdGYydi9XL3ZmK3YwamZVYm5SN1Qvek8vZk1OQzBqcXpzenRKK1JLUDJoOEdnMEhTc3NlUjl6endpU21QR3RYbWkzN0VEOG9OQm9lbFlZNm54TFEveHh3Rm1qSktNTEhNT21UL25PaUE3R0JTYWpqVVdscS94YzU2SUtDMVRjVzJlNkhmc2dQeGdVR2c2MWxocS9pMFB0ZjNsZGtKRXlReGxhWjdvZCt5QTdHQlFhRHJXV0dyN3N6elU5cGZiQ1JFbE01U2xlYUxmc1FPeWcwR2g2VmhqcWUzUDhsRGJYMjRuUkpUTVVKYm1pWDdIRHNnT0JvV21ZNDJsdGovTFEyMS91WjBRVVRKRFdab24raDA3SURzWUZKcU9OWmIveFBhbkEwM2ZiQWUyd2ZISlpYYzVTQnlLdHIxWHB6SEpVc1IyYWJYeW5oYlJXRElEQms3U0NXUHBKSldCYWUzVVhlTkxxN1ZtT3pSSC9CaWNVUE92R2VqTkI0MUpsaUkwY3VaUUNEWC9aVHFad3BRaUYyMTdyMDVqa3FXbytXZDZtTlRhLzlYanIvWS90ZitSREhqWDRJQ2RSSkp0ZTY5T1k1S2xDRUZZcHhCcSs5TmtNSFA1ZzZqNUx6TGdDV0xiRVpsSFhLbHRrWlJrS1dyN1kzcVkyR2Z4K3o5ZjBReVZNZzRrWTFOR0gzSDJaVVFmcFhvNjdtQ284YjFUWmM0Z21TSEs2Q1BPdm96b28xUlB4eDBNTmY4MS8rbExuVzBHa2kyRU12cUlzeThqK2lqVjAzRUhRMjEvdGYzVjlzZkR4U1dQRUVwM0JKQjlHUVczUXZWMDNNRlFqNzk2L05YanIzM1kxTzgveVFqR2E2R25HSnFqc1ZpMS81RThkcElZRE0veC9qY1BOR1B6Q2Z1djVyYnUzSzZqYTNGeUJrSnFKT3YrNEczMkdHcFgwdGFkMzNWMExVN09RRWcxL3I4bS85T25UeDhzdU9DQ212dDc3cmxuOEx6blBVLzdvLysyL1Avd2gwY01QdldaVHcrMmVQTVdnNk9PT2lxMXBXNXI2MXB5czNNa3BLazNUUjBNUmdlRHljdE9kck9EZGlWdGZTaHhySzdlQy8xWDVyLzRkZEozcFp1WXJzWEpHUWpwdjYzOTFmM1BIMTlHM1UrN2E4bHNSL1h6cisyL25uL1U4Ni8rVHJYN0pUcTBVK2s2dWhidmRUS28vVS90Zi83SCtwOXlvS2tIZ1AyQ29VZkZrRkcySHpIaHFESVlEQ0JSVllrVlRQa2hacnJWWVU1cGdEVStma0hTNVRtUS82ZWZuajZZaE1HbExFOCs5Y1JnMHFSWi9KZWQvNmJQLzVCRERobDg1Q01mR1d5OXpkYUQ0MzUybk82UHQyL1JiRjlhZTBSVkpWYlcvci8vM2U4UGR0MXRsOEV2VHZybFlOTk5YcWYyNUt6dHZ4Ny8rZlRuT1hEODY4NjAyajkvMmVYaDRRZUFHR3IvWDcvL25rdmZmN1g5NjVkZXVweFR6Ly9xK1c4OS8vOWYvUDZ6Z1dibkc1OG56andGQ0lRQTZaMndaRjJVb2FMU0ZMUUFBMzFpa0hWUmhscEtVOUFDRFBTSlFkWkZHV29wVFVFTE1OQW5CbGtYWmFpbE5BVXR3RUFmQ3ArV0s1b1lhT0xrNFlrbm41SXJtcE15bDNWUlprOGN3NGsxRUFJTTlJbEIxa1VaYWlsTnplQ3l5eTRmbkhIV21ZTVZsMXRoc05ubW13WG1NNGZycmJmZTRPS0xMaHI4NWplbkRWNjNxUXcweTJCYVlXa0tXb0RQUEhLckJPdWlETzdTRkxRQUEzMWlrSFZSaGxwS1U5QUNEUFNKUWRaRkdXb3BUVUVMTU5BbkJsa1haYWlsTkFVdHdFQ2ZHR1JkbEtHVzBoUzBBQU45WXBCMVVZWmFTbFBRQWd6MGlVSFdSUmxxS1UxQkN6RFFKd1paRjJXb3BUUUZMY0JBbnhoa1haU2hsdElVdEFBRGZXS1FkVkdHV2twVDBBSU05SWxCMWtVWmFpbE5RUXN3MENjR1dSZGxxS1UwQlMzQVFKOFlaRjJVb1piU0ZMUUFBMzFpa0hWUmhscEtVOUFDRFBTSlFkWkZHV29wVFVFTE1OQW5CbGtYWmFpbE5BVXR3RUNmR0dSZGxLR1cwaFMwQUFOOVlwQjFVWVphU2xQUUFnejBpVUhXUlJscUtVMUJDekRRSndaWkYyV29wVFFGTGNCQW54aGtYWlNobHRJVXRBQURmWWF3dktMcDlKN2Fla3hLVjN0d09uVGc1OUhaMG50dTdkRjd2YkZ3WUZybHdlblFRWTB2K2NKQUwyZWt4REdkaGlNemVYdE02bEY3Y0RvMGdGdG45WFpaSVQveDVKT0RXZExWVGFlbDZrdlI0KzB4alNjK09DeEtHVzFhUjJjVm1jblpZMUtQMm9QVG9ZTk9mQXcwTDdyNG9zRnBHR2krTGx6UjlPM0laY2N5VFRRK3l2VkU4RkM5M21FRjFCNmNEaDE0ckd6cGpWRGpld1ppcHBLeHg2UWV0UWVuUXdjMS81S29mMWYvaDgrSW53Umx0QUYzbDhoTTNoNlRldFFlbkE0ZDFQaVNxUHI1NTNhSWRwTmJoN2FpMXFySDIyUFNRbW9QVG9jT1BGYTIxUGd4RjYza2k5cmo3VEhWL0ROVklUa09IWGcyczZVM3crRmppTXhrN2pIVi9EK0QvRGZOYU5QSS9VcDhEcnd2bjdSUklzSEVsSnIwM2xWa1JFeXl2UGVseG45TzVQL0dHMjhjbkhUU1NZTWJicmhoTVA4Q0N3emV2dDMyZzJXWG15d0R6Vm4wdzM0cTNUckxUeDV5ZFBUcHdXbW5uVDQ0OTV5ekI5T2VlR0t3eEZKTERkNzFqbmNNRmw1NFlhZXgxVUJPZS94eDRaODJ1UGdQZjFBODMvd0xERGJlYUtQQkJodThVbktJMDRuMjBnenV1T05PdVhyNG04R2xsLzFOVGpobUdyejBwUzhkYkxiWlpvTjU1NTFYeU5iKzdyL3ZYcTF6OFNXWEhMeHdoUlVHQng5ODhPRFdXMjRSN3NzR1cyMnp6ZUQyMjI4ZFhISEZsWU5GRjFsa3NOWmFhMm43Zi9paGh3Ym5YM0Joc3EwNU9PZWNjelRPdEduVEJxdXNzc3Jnelc5NjgyQ2hoVjhnTVd5NzdyN25yc0VsZi96VDRMT2YvZXpnbW11dUdleXp6ejZEbDd4a3JjRnFxNjB4V0dLSnhYWERzWS9UbjNwcWNNWVpad3pPT1Z0eU11Mkp3Y0tMTGpKNCs5dTNIeXkxMU5LcHBuejhYU3BYV20rNzdkYkJ5MS8yMHNIOTl6OHdPT3l3d3dZenp6enpZS3V0dHhxc3RlWmF1bitNbjB0cHFMU3F4MS90ZjJyL3o2NkRmVTE1aEF3ZnFQVHhZOW55bU90ajErT3ZIbi8xK0t2SG4vVWEvVDFFN1grRy9WRFVsNi9hLzhZTXhBeEZUTTYvNlB0SFJwbHB3WUJURmhVSlowT3lPMEU5ZmF0SEgzMnN1ZmppaXhxWitLWFBiZFduYW1JVUJyajVwcHViUC83eEQ4M1RUeitkeXNmdFNnVjdhNVlhUmtlYnYvemxyODMxMTE4L2hNRW80cFpxMi9FZmZQREI1dUtMTG00ZWVPRCtVSDc4OGFkTW1kTDgrYzkvMGUwSUZSVFFZN2JpeTRDcnVlU1NTNW9icDk1b0crZWx4aC9maTR3QmhzWDNiQ2pCV1hsYjNPU2dpTEx2Vi9adEprMmFKQzFaNzBCSGkyNW1ualJ6cy8vKysrT3hCTFUvK2VTVE9lZFN6WG5ubjk4c3YveHllQ3hMK1NpRGY3bTl0dm4wcHovZFRIOTZlaEgvYjMrN3RGbHFxU1dWTDE5TVhnYmxWMTl0OWVibW0yOHV0Z25LZnZ2dDE4dzYyNndhbi9XRFAvOTg4emVubkhxcTg4OCsreXl0NzczdmVXK3p5U2F2dGJvUlEvNHZ1L3l5NXBDRER0WTZ0dDU2S3kvejE3LytWWGxiYnJGRjg4NTN2dFBLaFAyZmM2NDVteC85NkVmT2w4R3VjdUwrWWo5K3JCekw2MWxubnRVc3V1Z2lWbGVLajIyWWVXU21acnZ0dG04ZWVlUmhydy9nZmU5N24rYmpJTmsrR1RoTE9jdi9TaXV0VlBDbytLY253TEU2azZZaWVxSWR4T2hqcmVPWFhscUFZeTJlTkJYUkUrMGdSdC80NDVMcHBRVTRWbWZTVkVSUHRJTVlmYXgxL05KTEMzQ3N4Wk9tSW5xaUhjVG9HMzljTXIyMEFNZnFUSnFLNklsMkVLT1B0WTVmZW1rQmpyVjQwbFJFVDdTREdIM2pqMHVtbHhiZ1dKMUpVeEU5MFE1aTlMSFc4VXN2TGNDeEZrK2FpdWlKZGhDamIveHh5ZlRTQWh5ck0ya3FvaWZhUVl3KzFqcCs2YVVGT05iaVNWTVJQZEVPWXZTTlB5NlpYbHFBWTNVbVRVWDBSRHVJMGNkYXh5Kzl0QURIV2p4cEtxSW4ya0dNdnZISEpkTkxDM0NzenFTcGlKNW9Cekg2V092NHBaY1c0RmlMSjAxRjlFUTdpTkUzL3Joa2Vta0JqdFdaTkJYUkUrMGdSaDlySGIvMDBnSWNhL0drcVlpZWFBY3grc1lmbDB3dkxjQ3hPcE9tSW5xaUhjVG9ZNjNqbDE1YWdHTXRualFWMFJQdElFYmYrT09TNmFVRk9GWm4wbFJFVDdTREdIMnNkZnpTU3d0d3JNV1RwaUo2b2gzRTZCdC9YREs5dEFESDZreWFpdWlKZGhDamo3WE9XTXJWeFA2bFU1MFlvazNHZEw0WUhKV1Q0RWNhbk9EaWhIN2hSUlpwcnI4T0E3N1JvcHdWQ29XOWxxYjUzZTkrMTh3eCsreTR2dG04NmMxdkRoNnRwcWluTDc1TTFxS3haNTVwNXViSFAvbHgydUR4eGIvNzdydWJ5Wk1uNjBuNzBrc3QzZHgyMiszUEtQNkpKeDR2QTZUbmFmejN2ZmQ5VmxaM2Mzenh0OTEyV3kwNzI2eXpOci8rMWErTGZkWEtwSzZZdGI3OTl3MG04Um5FOTdJSnNBcTNpeUhhWXZ6RGovaGhnd0hUckxMdGUrMjFWM1BsRlZjMjU1eDdUclBwNnpiVmZlSUFEd05OVytRSGdULy91WmxkUG1zTWpENzR3US9xSVB1bW0yNXFqanp5eUdiWnljdHF1VTkrOHBNNS9QU25teGV2dkxJTy9ENzYwWTgybDExMlJRUCt1UkpudGRYWDBQaWJiTElKcTFmNXZlOSt6M0lxY2JCZDExNTdiU05YRXB2UDd2UVovWnl4dlZPblRsWHUyV2VmcmR3WFBQLzV6VXd5cU50Nm0yMmFUM3ppRTgzclgvOTY5ZXRBYzJSRTdGdXJqdjNuUUZPZVFkWDRuL3JVcDVwYmJybWx1ZldXVzV0ZGR0MUY2NXNrZyswTExyeFF5OXg1NTUzTnFUSzRmZEdMWDZqeDk5NTdiOUYvMWR4NjY2M3FQMThHM3ZqODBmNjMySExMQnR0MDlkVlhOeklSVWJQVUVrdkt2bzgwcjVWQnNBN1kwNGVCZ1NieSs0SVhMQ2ovTDlCdDN1NXQyelg3ZjJQL1o5VCtkUVBDS243V2FoWkR0TVhQMyt6QlM2aHlmTzAvaEdhNDBpUjFzVm80YXZ5Y0hzdEx5QTZoeXBwL3BxT2RzYXgzVWFlTUdLS3R0citjTTh0THlBNmh5dHIrbUk1MnhyTGVSWjB5WW9pMjJ2NXl6aXd2SVR1RUttdjdZenJhR2N0NkYzWEtpQ0hhYXZ2TE9iTzhoT3dRcXF6dEQybndnV1luSGJFbDVadzY2dkRGd3lzMk5yQVlhYjcrOWE4NVgwSHhBY0JDQTlCbzgvYTN2MTFQbXUwSzJLQzUvYmJieXZKQmE4ZC80b2tuZktDSCtCdHR0SEZSdnhabE9Nb1EvNWhqajdIWVVoYnhEenYwMEJDdEM5dnhNU0RoZ0dxbW1VYWF4K1RLYnR5L3NlTGZjL2M5WGhaMXZIV3J0MHBSMzhodWNLMTVMRDk5bEtrS3FwUmgvOXY3TTk3NFQ4bmdjYUdGRnRMdGw5ZCtGSUdtVDM5S0IycllKMXpGZStxSk5OQ1UrQnR0dEpHVzJXMjMzYlJNakgvcmJiYzA4ODR6ajVhNThTWmM0VzJhNi83K2QrVXZ0OXh5SFQ0R2NEUE5ORk96K09LTE4zTGJxdmhIbTBjZmViU1plKzY1dEl6Y3pxdGxmSGNsL29jLy9HSDF2Zi85NzFmZldlbUtKcloxLzI5OHZaUC9RdzdHRmMxQnMvWFdhYUFwbGYzdGIzWkZFL1pkZHRuRll1amFFdno1eisraFpUYmVHRzFSbHBUM2RkZFpWKzJubmZZYnM2dHJ0SkhiZWRXK3cwZDJhRWI5aXI1UmNMVVdBMG5FT3Y3NDQ2VXFxNHdEelZsbW1hV1pNbVZLcWk4RllrQkc2Wmhwd0tabHJQVC9rdmJIWFNzbDk0VXllYWxTaG4ydSsrOUpzV1RWejc5c1VpMnQwMTRLUDNOSm1aeFVLV3Y3ODZ4MThsbmJuK2VtRDNUeVZaRFl3Q2lUa3lwbGJYK2V0VTQrYS92ejNQU0JUcjRLRWhzWVpYSlNwYXp0ejdQV3llZHpyUDBOd21jZGR0cGhjUnVvdDQvc2RnVGZiVEl3eEFrdkI0cTQyc1NscjZ6YWd1TzczLzJ1bmtqalpIcXBwWlpxbnBiYlNYRTdMSmVNYU1rU3ZyVmYvbklyTHdQRjNYYTFBUXdaZldYVmxoeFhYM1YxSTgrMmFma1JHYlQ4N1c5LzA2TGpqYi9uRjcrb0F5TnMrK3Byck82RGl2SEVSNHdWbGwvQjkvMXJYNWVCVGxyR0c3K3pmeTFEUzlYYTFkYmppS1laeFQvOTlOTjF1eGRZY01GeWNKUXFPZXNzM0pKcXQzUHlpdVlkZDl5aEEwTmNDYno3cnJ1NXF5NVJkTWNkZDlSMmhGdHZzVXlkT2xYclFmczY4NHd6MUJaWGp6NkdnWDFlZnZiVG4rbFZ4dVdYWDE2TmNaOWdrT2N0bTYvc3UyL3p1OU4vcDM1NUhsTDNBejhTM0h2ZmZXckRpdnQvOENHOGRkWUdtdkJ4b0lsQjdqMzMzZ3RUWGlUZ0hYZjhRK3Nja1N1a3QvL2pIKzViZDEwYmFQN210Tk84bmR3aGZyYS8yMjdQVjlNWkg0VjMzK1B6V3Q4VzRXby9CNXB2bEVGcXNiUjJ1S1VxVlcwOWptaUs4YU85aUNWS3g5Y3l0TlFhbnpuclNVdzAxZnpuYkdUVWJuMjEvWFZ5MHpLMDFIcjgxZVBQK3V5ZWhoRk50Zi9KMmNpbzlqL3RESFJ5MHpLMDFOci8vSS8xUDM1RjB4cE91emxFUGVMVXpIcE1PUG5lYzg4OW05TisrMXRMWlE5bjJOVXlQS2Q0OU5GSE4zdnZ0YmNPV3N2VGg1NktXcWI3NzcyLytkS1h2OVFjZlBBaHpWUFQwL045TFk1dWVSaThwajFSOGZ2Zlg2amJmdjU1NXlkekxCeHgxNDFuU2cvOXdhSE5QbC9hcDhGdHVNYVdkVSt4dnYyLzQ4NDdtcjMzM3FzNTRvZ2pRcGxZT09KdS9HUVJZVHhmOXhUcmkyL2wyK1NvUjV6ajc3ZnZmanI0MlhLTExiTXhiTVhqanozZXpJWm5KR1h3LytTVFR5a0huekYwWEtFNzR2RERtOE5sbnc4L1F1VGhoOG4vNFdJN29ubmIyOTZtOVc2NjZhWmFCbTFEWm1qVjIwcHhkWFNGRlZab2R2andEZzJ1VnVLVzdiellkdTYraDExTi9OQUhQNVJkUkQyZi85bm4yRUNUQTFPajVuMCsrT0NEZEh1MjJYb2IxdEw4Vlo0SHhnOExhNis5dHR2YStYL1JDMStrQTk3VGZpdUR5clNzczg0NnV2OHlxUkZOemMrTys1bld0ZHBxcTdtTmRabGh0TG5nZ2d0MC8rZVplMjZhOUJsTmJBT09HVGNLc0MyWGRkNkY1SWV6endoMzJ4NzFpRk5WUFNiV1lTNVo5M0ZxL0pUQXRtZ25LK29SMS94ckJucFN3Z1puTGxuM2NXcjdhemU4SVEwcUppL2lJZlR3b1JoYjFqM0Zhdi9UbHhRa3IyMlBlc1ExLzZHcHBXUlFXSjU4M1pPMjJ2NzZrb0w4dGUxUmp6amx1c2ZFT3N3bDZ6NU83WC9aV0Z1eW5heW9SL3pmbDM4ZGFNWmZyYXhsaEoxU2FEcld3Wk53MTlMS1hxb3k4a3BHalI5ekF4eDBoYWEzUFA4UitkLzljN3ZwQUFuUFdSYmJIVDdpUlJkWlZEbThvdm45NytIWnlUUnBrQXc0TVZDeUNYS0NUZTBqelhweW15bnJ2Zk91dTVydDVmYnFTVEpaRU1wZ3NJcHlzODAyVzdQOTltOXZycjNtYW8rSzV5dmgyME91QW1xaWhuWnU0aGFmWGRFY2FWWmZIUU85YnY3eDR3VmlicFZ1blVXZ3Y4aGtRSWp4WnIvQ0dNcWxMVmwzM2ZXMDNIRS8rMW15Tk0xNmVrVnpwT0ZBRS9FUFArd3c0Y2t6bUs5OWpmQkNQUXBOdnpiZFBqd2lWMTFSQnRiM3YrKzlXdjgzdnZHTnNweEhTK1laN0grbW8xYUxwemFGcHJjOGlSVzRzVnl1MEtxcjhXTkdDbHo3djNZYkNycEMwN0VPbnRyK3RCVjFNMUkwTGlpYXVNZ3JHYlg5eGR4b3NuS0MxR1grbHFlMlA4MlM1Y1lTRm5GT1lXMS9rb3Y2L1JjYVJBbHIveE9QbTFZdm95N3p0enovVmYyUFhkRnM3WXgxREdWam1KRldKS0ZRdWlVNzdocGZrcVJKc0hVblFkMGN0aTFGa1VKcE05TjVSelJyYUYwOTQvaGYvT0plTXRnYWFkNzludmVrUFpDS1cvRVhTYk9vY3FCNXdJRUg2dUJvMVZWV2FVNCsrWlRtNUpOT2JrNCs1U1RCSnpjblVUOUo3S0tmZDk1NWNVc1YzeVZYZjQ4NSt0am1YZTkrVjdPSURHSVJINE5BZWFXS1RzYUQrSi9jOFpNNkVOMTExMTA3NVZ1YnA5dDc5amsyNit3YWE2N1YyWDVVY0VnYWFQSVpUZGorcXM5b3lzUlZtNytwM09VUTRDVXZlWWx1eHltbm5JSWl1cXlUYnAzOUxhOW9DditvbzQvVWZYalZoaHYxeGtmQnE2NjhVam16enZJOHEwalc3M3ZmKzNYL3YvbXRidzNOdjVNVENKdG5GaGhTYVljS1VvRnhpS0xPUXVrVzdyZzFscTVzS3pxRWJoMXRTMUdrVU5yTW52UnFhRjNWK0VqWERQTFh6V2lyeUF6S2Q5eWFlbDNWL0tmOFgzakJoZnJNTnA3YmZ2S3BKNXNEdm45QXM3bmczWGZmdlMvOTVVZldTWEF1Z240SXQ5bS9iYnUzcWZIWVkzL1ViUGJHelpxUGZIUUgxZjJqc0k4akY1d0JLa0lXU3JkZzJ6MzY5R2h6NEVFSHlBemt5emV6elQ1SE05Kzg4elhmK3VhM3VnWEhzQlIxRmtxM1VNY05nN1c4Wjl6KzdwYjVGVmhhcStrbzZpNVd6Mlo4Vmx6VVdTaGtaTmx4d3pEQi9XZXRSWjJpN0xIN0hzMGJOOStzdWVxcXEwaHhXWEJoVGZIMXgyUDVMbGRkYlUwanJ3TFQ3OC9lTzVPOHhxSklTd21rQklmRmh6dHRTZ0xkc3JROExXMzJubnZ6bXhWaW5YZmRLWGUwaVgvWUVybmczSC9mL2JxUGl5MjJXQkdmazB0ZWZzWGx3NnB5ZTFGbm9UakZRY2NOZzBUMk8vRTZCQzg2RkJSRkNxVmJCTzZQZitMampieFR2Ym44OGl0QzBnTUU2UmtzUmNoQzZWYlNjV3NzWFJYNWp5V25Qelc5OHlhTlQzNUt6akdsdlI1MjZHRmF6bXFRVXAwQXNhWWU5emppbHpXVTJtdGUvUm85TDhSNXRTNy80dmlJV1lRc0ZOdWtnZTZqNGJTT2xsQWltYU1YQlV3ZjRtUzk0aTRmZG1VdHBkWG85TEgyc3U3b0pZTmJrVGFHVWJPVVFtVWsxbEphclFCOXJEM3BwZkM2elR6RVNaYTR5MGlKMzdMK044WS84Q0M3cFJRRHFyNzgzMy8vL1ExbUFjYlZSMHdjaE9XVVUwOVdmZkhGRnBWWG1EeHR1KzFyeTQzTnJBcGZ6aTErK1pybU05ZGFnYWZGaG1lQmwxaGlDVDNZTUxzc0ZsemhRMHljcUtHS2R2NGZlZlNSWnBlZGQyb08rWC8vVDY4T25uM09PVnAremJYV3NJcDFqZGdXLzJCOXZZbGMwWlRaYUxsdzF0a1ZWckRuUUxtcDlFOTdZbHFhV1hmUS9PblBmNks1V1hkZHUzWDJ0eklaVU5vN21hWDNYSTIvNFBNWGFLYnJiZCtnNS9pQXh4NTdyT3pUU0lNQk9wZjN5Z3pIK0lMK2xndzB2VEk2S2FWc2UvL05WVnBwWTdGMmZOaTV2ZVNZbnF4dFp5Q1ZrVWdzclVhbkR4cHcwa3RoVlBjT2NaSWw3akpTNHJlc1JxY1BHbkRTUzJGVTl3NXhraVh1R2ovbFNITkNYR2JGMGtVZk5PQ2tsOEtvN2gzaUpFdmNaYVRFYjFtTlRoODA0S1NYd3FqdUhlSWtTOXpQTlA2Sko1Nmd4eldPYlV4dzlzRVBmRkQxRFRteFdLcmJJbzgvL3ZlLy8zM3RGeGRZY0FIZCtzOS80UXRhNzR2OWRVaXBMcTBmdUt3N2VrRXh2ZVJvMGJnUzkxajdqOEV2K2pYczZ5eXpQcStaUnlhQysrbFBmNUpxTCt0T210ZHVlc2x4SjRHNHg0cFBtc2tZQWJpc20xNzAwVi83MnRlYVZWY05kOERRV1Zhb1ZUemI4Um5DUXBiYlNKOUxjZityNDcvNjFhL1dkblloWmx3Zlozd2RhTXAzZGw1R1phRDVHVzBYYVA5WTBwNDZ4ZlJrYlR2SkV2dXp1ZjlYeStENUZhOTRoVDdtRmVNL0taTWQ0cndEN2ZkcC93NjNqUjRyUHM2UjBQNHgwSXg3aU5lOElTZVhYeTREelNHN0dPT1R3OTEyT1lQOXh3RHpIZko2TnR3RjVvRzBNR292QXljdFZ0M2h1Sk9nRlgrMGVicVp2T3prQnVkL09IOHJsNmdESjcwVVhzVE1RNXhraVh1cy9KTm1NdFdsQ3ZCb0krODBiMVpaZVpYbXVPT080OWFvRjI5RndPZHo2S0UvNkJZMWk5di9ML0cxa2lHN0NQT3JYNzJ4YnNlQkI2U0Jab3dOTEtSL1pud05rT0swUTZzdThlV290ajNRdGNFT2Q0aTV3eHRtS01wRDZSaVNxYkRuMm9hWU0yRUdxQ2dQcFdPbzhUVWxSVjV5VW9lWWxZQlhjMkF5SE54Q2Vzdk50K1JDQ2YzMEp6L1Jnd0FIcEY3UmxNcW1QZjZFZHNhd25YR0dUY2JUanYvV3Q3NjFtWHV1dVJwTXNnVGZNY2NjM2N3MzM3dys2MnM3MENjKy9uR05nMTlBc2Z3OTNXWTYxNXh6Tm84OCttaW1vekw1UjZlQitLdXR0cXI2emtxVEFhMjE1cHFabXhDS1lOWlp2TUtsdUtMNTE3L29seW5xdWY2NjZ6cmxmdldyWDJsZWxwazhXUWV6U3BESzFsdjNGUnI3TnpyckxHcHY1S3JGVTgwTG52OEM1Wjh0MnhJWFl6UVNleXN0aHdtQXVIQXlvRzlqb0Rsa1lYbDFRK2tZYXZ2WGxCUjV5Y2tjWXM2RUdhQ2lQSlNPb2VaZlUxTGtKU2QxaURrVFpvQ0s4bEE2aHYrOC9KOTQ0b25hRitBRTlQRnBUelFmK3VBSHRQL0JiTjNQZEltN2U4RDNaS0FwdjhJdklIZC9ZUG5DRjJ5Q3NSZTkrTVd0dk9Rb3NYeTJqaDhWNWFHMERPOSs5N3UxWDN2bk85N3BQMGJHODgrQ1B2Nnd6aXpLOThRSFVUa0YwWXVYbTV2TW1QZ1EvZjd5L0pFeDB6dW9xUFpaaXQ4Sk1vYmgzeEZmQjVxU245L0xRSE84OFpGUG5FZkU1WWdmL2xCZmRYY1FyOVpFNXpqeGVPT1hHNW9yTDhxTG1UUFdIMzMwVVprazZEbzVCOEErNEQvL1dOeHA3aDBENXBqQTYvendEdSs0NElvZmp2L0xjTlh2LzdBVTJ3K2xaY0M4R05qbVQzd2NBODN1VXRDNzdobGFpdktpL1AxYXk1T2R4NWhYMXdVeFZ6dkVuQWt6UUVWNUtCMURNaFgyWE9rcXE2NnE3Zkw0NDQvTFJrRTYwSlJ6d2tObitJYUtVR3dDOFlkc2xsZUtZdzNIellGRGpwR2kvRDhodm0vSUVJQ1ErYWd1dHFaVmdyMitjTWFpdFVxcG12bmxtTHJEemNTT3krOXZyL0gvSS9PLzNYYmJTVWMxMHJ6cVZhOXFIbnJvSWYvOGJyamhobVp4dmRKb3YxWS9JYmVBY2RsaGh4MjBjOFByU3FZSUwrNFlKa1Fha1E0V3M3RCtUWjZEeE9kLy9mWFhONU5tbnRSZ1J1Qno1ZXBmWE82KzU1N21oVExwRGpyTEgvM29SKzVhYTYyMTFQYjJ0NzlEcmdvODdpRXc2KzJLSzY2b3ZtT09PVWI1WjU5bGt3R3R1VVozb0luNEI2ZlhtOFJuTkhsRkUzRmYrY29ObWdjZmV0QmozM2pqamZwZVZ2ajIzLzhiWXMvdGY4TU5OOVRZdUxyZ2k3UnR1eFZqSUwvMkxhdjdTeDllZGNMNCtPSkJYQzU0Wnl0aWZPdGIzNmFwa1Btd3l2RUxBcFZNcENYTGV2eGJMbXIvNDhkUWJoeGpvOXlzYXZ2THVlakpXY3VKUGc3SE5WN3poT1AvYzUvN25PcDR2Kyt3NVdwNVJoMnYyZnJjN3A5elNxN1c4ditUOU1QZk1zc3NveHpNOUk2VGxBMmsveHE2L0pPUC8yMWxuN0N2ZUcxVDcvSlBqcTh4YzZLNm05QVRIKy9aeGphWGs4ZjFGSFhULzFiNzUwRHpnZ3N2U0JtWThmNGpuL2p2TEQzNTczQ0dHUExIT3VQNFE2clE4dy8xU1dXb3p3YWFJM3BGTTVhNTd2bzAwSlRCQndlYS81ZjR1SFVXeCtibGwxMW1ZVkw4R0hOR2VEenhNU0VqOHY2Skhmc0htcy8yK1RmZkxuSGN6OExBTFc5b2Q1Zit6WjgvN2lCRGZyQzljVFB6RmMxRHU5dWNMSm4vN0xXL2RqQTcxa2JrOFlQdUZjMS9SZnoyOWtTZDhYdHVuV1dHUUNFdEZqVTgzSk9LalZrOGxSWXh0QjV0WEVPOXc4dGg4MUNNLzlBN1M2cFhSRUlkaGgxY1E3M0R5NkVtRk9OL3QrYmtOREUwd24vUi90OG5yd041NFF0ZnFBZmovUFBQcjcvTVlYYlc1MDJhUmQ5dE9jODg4MnFIeVdjMGtaeUhIMzVZWGtlenRwYVpXUWFRdU1YMVF4LytVTFBCQmhzb0Z3ZjJmdnZ0VzJUdk01K3gyMmdteVFEMFZUSll3MkQxblhMTEI5OHZ1ZUdyTnJRT1B1WCtxaXV1YWhhVTE2NWdFTHpvSW9zMGVHZm05aklvbm51ZXVUVHVwcS9iTk0xTzNEUzRpb2hiYmRma0ZjMVcvcnZ2MFpSbk5HWEFoKzJjVTY2YTRrc0J6eGE5UjU1VjNYYWJiZVg1QTNuTmo4Ujl3eHZlSU52MGRMRWZlQjRLNWZDUDE4SWNKTGZsWXNIdHZKaVJGbDh1TTh1QStrMXYycno1MEljKzFLeTg4c3FlazhNUFAwSzViRGU4b3FtM3pxcEhWbW4vVmRKV3lGUmFCT3NwM0ZCYSs5LzJEeTJuWlZFKy9iY0xxcDVLaXhoYVQ0MC9WZ0tINXczNVplNkhKMWMvQmZDR1UxaUpVZHZyb2VWQVpOR2hwT1FRTVp3Q3oxRHZHSjduUnZ6N3BVOUYvN0QrK3Vzam84M1BmdnBUMWIveWxhK28zcGVaaTM1L2tYSmV2ZkdyODJlZzdMekNiWC9vNS9DaklKSm9qd3lNcE52bU1tL1k4Zi93dzQvSU82SWYxZnhQbVRLbCtmblBmKzZ2QXZQU1VpK2VVYnZrajM5cVRqamhlSDBPL3k1NTEzRmViT3Vma0N1MUQ4bjN3SlpiYnFuYmZaeGNNWGhFOUVjeGkzanIrSC9vd1FjYjNDRnl3Z2tuTkJlY2YzN1BJeGRXKzJQeW1xdUhIM3BZcm93KzFVeC9jbnJ6bTEvL1d0N3ZmWnJXRytQang4WmZuZnFyNW5pcEQzMC95aFZMSzM3MFRYdjg4WVlUc3kwclB3cml1d3ovUHFrSmRpLzlYM25GRmJyTko4dnM2Rk9uVGszVjJQNkRrMUNzM25CUGZIelBuaTZ2NC9xNVhPMysrUzkrcnQ4LzdmY3RhMkZVeXY5V3pjanZ3NDg4cE52NnRId3Y0WkVORFBEUGw1emlXV0JmUXZ4SDVmTkdPY3lzejhXM1czamNmL29RRzIwUTMzOFhwb0htbi8rRXRuQkNjOGJ2ZmlkWDZGT3VoZWYxU0dHMFM3UjVYVko4M0RhTytwSHp1TERjRStMSGp6S29HKzl4MXhubzRlUi9MT1E0bFJhUlVJUDNzRi84aDR1YmszNzVTNjNyckRQUGJCNS92R3dUMkgrMC8vZkxIVVhZemgvODRBZWFGMndqL3ZGS1BOangvOEQ5RHpTUFBKUm53MGViNXV6NHQ5NTZpeDQzZi96REgvVFdVZXdxOWhIZi83NklzYngxZGxSeWVhRnUyM215djArMEhpRmlPY1JBKzlkblJMbHp5WW4yaWMveGtVY2ZOb3Y0Y2Z3ZGVLQTkvdlRoSFQ2cy9zZHhMS1Q4czE2ME04WS9WVzUxdi9lK2UrbnFTc1RsZjlmYnZQNE5tK3BkY1BmSksrRmFtNWpaS2I0ZXo3S05iT2RYWDMxTjg4dGYvS0k1VmZxQ2UrUUNRMXp3cWp6TTYvSHpFMy9lM1BHUE8vS0hHMG1LWmRBbjlmL2x6My9XNHgvemhQd2p2SDdPS0tOeTN2YVVmaTRyeVdNRk9DZkRlK0x4K1Q4cGJRWGIzUjVvM25uSG5mb1doRi84L0JmNlJvSXhkazVENEhQNmxmUlBPUDdPa1VlM3BqODlYZTJNMzdjRHVJUHdGOUxubmlUN2VaZE1qb21GUCtyNEZVM21mbmh5dFJ5MmJ6aUZsUmkxdlI1YURrUVdEU1E1cW9NV0lDc3VUVW1qa1pKa2wrYWdtN0xsVG1yd0JraHVhVW9halpRa3V6UUgzWlF0ZDFLRE4wQnlTMVBTYUtRazJhVTU2S1pzdVpNYXZBR1NXNXFTUmlNbHlTN05RVGRseTUzVTRBMlEzTktVTkJvcGhZeUQvZ01mK0VBejc3d3lxRXhmR0cvZDZxM05kWElMNjNyeVBBTmVSOExYbTdESm9WUDg1cmUrMGJ4WWJ0dGlCejJURENJeDJEeEJPZ3NzSVlSODBVMXZ2dlB0N3pScnJMNkc4MUZ1OGNVWGIvQnNKanByVzZ3VTFqZklsZENQZnV4ajZWWmR1N0k2ZVpsbDVUVTRYN1piZVZPRWl5KytXTjlsaWx0WTRzTDRQL3J4ajJVZmx0ZEpocmhSZi9tTDNEb3I4WEYxOUV6NVlrS0hCQjM3ai9mQTRsVTc3SlJpbmYrNC9RN3BiTitnZzlPWlpoN0pFM3hJTUh5cDR6MnF1RUxMUE00NjY2ek5hemZacERuM3ZIUWxseHNsRWxjNmtGdDlMWTRITVVLZ3VVY0JIVzJsc0Z1UjBwUTBHaW5MMmtVekI5MlVUaXNNUVFtUTNOS1VOQm9wU1hacERyb3BXKzZrQm0rQTVKYW1wTkZJU2JKTGM5Qk4yWEluTlhnREpMYzBKWTFHU3BKZG1vTnV5cFk3cWNFYklMbWxLV2swVXBMczBoeDBVN2JjU1EzZUFNa3RUVW1qa1pKa2wrYWdtN0xsVG1yd0JraHVhVW9halpRa3V6UUgzWlF0ZDFLRE4wQTRsMTU2S2UyN2dER3BDdnFXVTA4NWxZZFhsaURJY3RGRk50Qjh6V3MyVnAzVlVjTDRsTnlpUCtzc3N6WHZrdHRWc2R4My83MWFyOTcrRllucWJZY1lsYkt6Tmk5NzZjdWFYOHNKRWpDMkNmODQwZWR5d2duSHllemRxNnNkSjJqdzQvM0g3M3pudXhwOVIzQ0t3K2RGV1FjbHZnKzQzQ2ZQcjMxTSt1ODU1VEVLK0RueEcrNkV3ZXZFZkhDWENteSsrZWJhYitMVzQ3WFRqM1lvcDNNSUNPZFd1ZVgxOVp1K1FXOUoxSGpwdXdvL0ZuN2g4MThvQmxPb3NreUphVnR2dGJWdUM3ZVhNZy9FUm5WUXpGdnU2QjhabVVtdk9GLzZ0M1NGU3JjNVJBaFFYU24rdGRkZTI3emhqVytVTzN6d2lJcDloN0hPeVpNbk43aEtYZWJCS21KMWxLaHp2dm5tazIwZmFmNHMzMTM0VVpXRE85UzM0QUlMTmtmS3lYUmNVSmJmYTFPblRqRVhLeFNKSzNjb096ZGZ1YVdNVVQvNS9iSGNZYlF4bnRjVUR1SmFuT2MzMy9qbU45TTJzeklaYUNxbnZLTDVHVXdHSlBZUHhGbnRwUWoyRjgvSThrZG1scDFqampua0ZYV2YxKzFpelpTK1g4SHd4SlBUZE1JaGJEL3JNRGtpNXpMek5Mdko5eXV2VGw1OTlWV2QvSU83aDd4SzdRdnBXV2ZvL042ZVJiNjNzU0Rja2tzdUtlY0VTemUvbGRmK3pUV254Skk3azhERkpGajZqS2JneFJaZFRQbGN6U0tUL29GenROeDE5WktYdmxReFAvOUZGMTIwdUh1TFpaWmVlbW1ON3hQN2lJTzcrK0NERDJrZGl5NlM0OHcxOTV4cVF4eitieUxuR2x4UTlvZHkrL0lLNlE0d3hwOTk5dG1iRDhxcjR4NTQ0QUZTZzdTSWpFc0pBZ2FPczg4Mmg1NFRXb0hnRFpDVnZVVWVvY0oyNFRuVnJlVFJJY2FIYmU2NTVtNE9rOW42MFJhKy9lMXY2N2tuN01nLzdvYjc5R2MralliaSs4ODZmL21Ma3p5ZmJQKzRVTEQ5ZHRzM045K1NILy9pZTlLWkY2MWIydkNYOXZtU1ZxVVRUa3E4NzN6bk8zclJBK2RwakEvNUdubUR3TTAzM2RTSmo4bWkzdlBlOXpab3E0d1AvcEpMTE5sOFZkbzAyeHVDTUNYYWI3MSswMkwvWjV0MU5ybGJibjgvMW55Z21VcXhMQ1gzM3l0VlEvQUdTRzVwU2hxTmxDUzdOQWZka1BtS1pyUjZnWDVRVnRQbHNLcnNhVnV5N29pQU1oZnVJS01NSjNZOWJVdldIUkZRZHFKbWcxR0dFN3VldGlYcmpnZ29jN2dPTXNwd1l0ZlR0bVRkRVFGbEoybzJHS1dmaUt1V045MThzNXpBM0pjTGxDMWI3TGtzRURxS3UrNjhTOHJkMUR3a25lR01GcFI1NElIN2xYKzNITFQ1Qzk1SzV0cFprMHdpSkw4NDRwZkUyK1dXSjd5VGs0dHpDU2hKNkpGR0dkVlpaOUh4WWFDSkJWMGFmaWxIcDFCMmIrMUtzKzZUMDlHVXBPWGt6dWJHbTI1dThNdC9YSXpDQXRGanVPdHBXN0x1aUlDeVc2MWJqREtjMlBXMExWbDNSRURwMGJyQUtNT0pYVS9ia25WSEJKVGRzRzR4eW5CaTE5TzJaTjBSQWFWSDZ3S2pEQ2QyUFcxTDFoMFJVSGJEdXNVb3c0bGRUOXVTZFVjRWxCNnRDNHd5bk5qMXRDMVpkMFJBMlEzckZxTU1KM1k5YlV2V0hSRlFTclEvWFhKSk0zWHFqUm9YSngrL2s2dEJlRFRCS0lHWXRvd0RUWnpZbDB2SnZlQ0M4eHNNWHJEQWM5WlpaelgzcE5sVFUrWHE2MXRod0xqME1zdklNNTd6Ti9QSWlmaGFhNnlsRTU3ZEpDZFVXSERTaFpPbVdXYWRSV1lpZjdkZUJmanVkNzhqaythc3FuYWNDTjl4eHorVWkrM1lhYWRkL0c2WUxkK3laYlB6VGp2cnlSTUlEOHBKN01xcjJQTlJ1RVYxMy8zMms5bTVqNVlaS3o4aEoybXo2MGthWmplTkN3YWFpTCtxUEh1UGt6aThsM2p4eFJmVEUwSDBxZXVtR2I5Zjg1clhOSWNjY29oczN6SE41ei8vZVJzMEMzLzN6KzBlcSt2Rk9QSC95RWZrcmhUaHp6L3YvTTFPTysvYzdDei9UNmZ2bFovSTFXZThnZ3IrMTc3MnRYTEY2QUNkckkyRGI4dzF3TWNmL0pNaG9FeVJiN3Y5SC9Mcy92TjFuekJZeG8rUS8wK3VwTzB1dDBjdnU5eXlmdUlacjhpMHFwQ2Fzc1VHbW9NR0F4VThwL3UxcisydlYyRSsrcEdQTmpOUGtrbjdKSGNZcE1kbDVmUUQ2dFNwVTlWc3Rka2FWMFZSSmc0MDRYbjFhMnd5SUx4NkRKL1ZUanZ0SkxlYUh0Vjg0UDBmOEN0MSsreXpkOTR5S2NTVDdoajdNNS9kU2ZaeElJTWFtd3dJUHRTLzAwNHlBSlg4emlHRGxvOSs5S015aDhNeDhoN3l2UnZjVVlYdCtZQTgwNXdYMjlZKy9mM3Z0MG0yY0RmUzUrVjVaY3d1ajBFTDdrU3lIMGxHWkliN283WG9IWEpWSHAvMXF0S21FT01OYjN4RHM0dTBYMXhKeGF2SzhFTTc3UGovckd4ZnZvVjlWQWVhdUx0cUVibXphcDU1NW03d1dNOWM4dVBKSC81d1NSNW9TanZOQ1dsMFZsWU16bWVUQVF3RzFQaHgvSWRISHFuUGN5SUcydGh2ZnYyYnZGdUNjSHpCZC9jOWR3ZTc3ZitEY2xjQWZJdktXd0M0N0xISEYvVDk1TEN2dWRhYWV2ekZadzYvS1kva0lBOFlGT0h1S2h4L2FJUDRFUXo1WDIrZDlmVGNpdlZCdHJNZExSaG9JOWFYdm1TRE5lY1NVS1lLMy9KV0RDNEgrbU1IQm9PNGl3M3hYL1dxRFRRK3pyOHdhTU9qVm05NXkxdWFyNHNQcjhEVHRpVGJoODhteHVjalNKTW1UV3JlOFk1M3lDRDZxQVkvZU9HUktaVEJZQjlYRGJIY0x1ZHhPKzI4aXg5LzZGdncrZjlPSmdkQ25YalVDZkh4T1dLZmNHZkdWNy82VmJrRmVVZDVBNEswUTZuUDNnT2Zkd3JudWJoZ0FmN3o1YmplWlpmZG12OG5FMUppc2l2MG1iRGpIZkxvcTdqZ1hmVHNPNWFWSDlnd0dFV2Zzb0hrQVBGMXdDcmxlT3RzTHNrYTJwYXNPeUtnWk5FZWFaVGh4SzVuTkR5ajZSV1NCaGx3Z0tUU1pEbzFTckpLNlY0RnJnVVNiWkFCQjBneVRhWlRveVNybE81VjRGb2cwUVlaY0lBazAyUTZOVXF5U3VsZUJhNEZFbTJRQVFkSU1rMm1VNk1rcTVUdVZlQmFJTkVHR1hDQUpOTmtPalZLc2tycFhnV3VCUkp0a0FFSFNESk5wbE9qSkt1VTdsWGdXaURSQmhsd2dDVGpQWnI0SWxqeGhSaG85aEJJREpJc283dld3NENQZnBFQmtreVQ2ZFFveVNxbGV4VzRGa2kwUVFZY0lNazBtVTZOa3F4U3VsZUJhNEZFRzJUQUFaSk1rK25VS01rcXBYc1Z1QlpJdEVFR0hDREpOSmxPalpLc1VycFhnV3VCUkJ0a3dBR1NUSlBwMUNqSktxVjdGYmdXU0xSQkJod2d5VFNaVG8yU3JGSzZWNEZyZ1VRYlpNQUJra3lUNmRRb3lTcWxleFc0RmtpMFFRWWNJTWswbVU2TmtxeFN1bGVCYTRGRUcyVEFBWktNSC9TdXVlYmE1cHBycnhGNWRZTUJEazVVY1B2OXRiQmZBN3Y5NDA0SkxLekdnR3VzTWpEZ28xOWtndnBJZ0p4QXJTRlhMTytTMlNxeDJHMTBvdzJleWNkVk4wd09kK1laWjZxUEsvd1l5QlB4OTc3M1BhaytxM1NiYmUwWlRYc0ZWSTc1eVUvdXFQdnppbGVzSjdmcjV0c3RVU2Z1bEpsUEJ4VWp6YVdYWFNvV0s3ZTV2RklET2NEL01VY2ZvK0VSKzE2NVRlL0tLKzJxOEZweVFvMEJFc3VBaEZ1QVVXYnV1ZWJVMnlqTmw3ZUYrMCtKazFEd2wxOStCWTNCdW5DN3BUMnVZYmRXSnFjS25EdmlKQmhYWENZdk0xbXVYRHdWM1VVOWpJOUJGT0pzdk5IR2VqV2E4VUYrVUg1MGVMNU1JSWNUMnBOTyttV3JmRkpiWWw2NW9vbjRDOHkvZ0h4ZTF4ZmVFMCt3Q2FnV1dtZ2huZE9BKzdUU1NuYkhrUTQwbVJJcENZakhRaEIvN3JublNuVVpnYmZ6WVdBYlgzRUNMMjc5d3o1aEFJb3JiMXhndzZEQ0ZqQXg2NnhkMGVTc3N3ajZaN25sRWJ5NTVDcWt2aDVEQzFqY0s2Kzh3bWQ2di9paWkxTmRXUmhMcTI0dXZkUnVkWjFKMnF6TzdCcnFRZXdkZC95RWJ1Y2JaVUNwT3d1L1ZJQmJUQkVmZzY2OGpCYVRBVm43eWw1YzBjVCtMVE41Y25NcnJwcEpQZmZMai9Gb20vZkxqK2J3bGJQTzVsdG5GMXJvQmMxdHQ5NW1sYVVkK0lFTVRyUSthVWYyQTRjNWRBQW9kY1c4Y2l0NFJYTXhtZTNWOXNmS0hINUVla2F6bUhWV2ZrakhaSWRTMS96eno5ZGNmZFhWUlh6Y1ByLytLMThwL2hHNU9tMXpVQlFFQm0zSlQzMzYwOXIrTHZuakplSkpPMU53YUlNY2JUQXBKTFpoanRubmFDN0RzNnJKUFYzdXpGZ0RWK1FsUHRyZmozLzhvMVNMRVhiYnpkN3ZiaE1PbVFzRHlFa3lXRVg3eDIzelhobVFISnk0Y3dLZjY3YmJicHQ4VnRlcXE2NmkyNEFKSkJrZk5lNm9zODZPNklEL2Q3ODdIU1pack14MWY4OFRRMTE5ZGNxZGVESExOK0t2SVAzRzNYZmJyYTlhVEZhWFhucHBNNDhjUjloZlBITEF1dmJmLyt0cWU2bGMxWDdzMGNkSjEwZ2YvN2kwVWFrUFpleUtaa3FRczByZ1hnV3VCUkp0a0FFSFNESk5wbE9qSk12a3dPcnFkMFpxUDROV3lsaENOdE5INWVYMUhjVDBFZ3BjS3lzSVdqK0RWc3BRUUdDTno3elUvRE1UMmtKRWNWMkJhMlVEQ2xvZmd4M3hpaXZ5WkNNVUVGamJIN05XMng4em9TMUVGTmNWdUZZMm9LRDFNMmlsREFVRTF2Ykh2RHczMjkvclhyZUpubURnSkVQLzVWZDluQ2pobnljZnNFTS83NEx6Y3VPUXREQXpCbHpMbkJZaUExYzBVZWRQZnZKVHRMREVNcm52dnZ0cHJEZkpMLzlZMnUwUEF4V2NHT0tXdDhjZW4yWmxwZWkyMitKVzFKRW12bXNZdC9ndXRORENHZ3ZQTHpHU0ZiTDFubnQrUWYyNzdiYXJtL0ZjTy9ZWFZ6VGI4ZkdNR2VJc08zbFpHYVRsNTlTd0gwL0lxeWxPUC8zMEJoTzZ0SitwUitYdCtPVmtRTmw3ckZ4WlEveVh2UFFsbmZpbzUzSFpiMXc5dzNiOFZ1Slp4Yms4T0hFNVVxNWc0YlVUWjhwVjUrNHkycnhaSHZYQTUvRzk3MzJ2NDI3dlB3anp6U2RYV29UL3hiMzJOcjZHenZGZnNmNHJkTnZ3UEN5WGZPdnNWSnFTeEhOc2ZiZk9waXVhRXNkZU45WTkvdFpaZHoxcG95UE4xNy8yZGFuTDRtTzcwRzdqd29HbTNUcHJIbHdkUmY3dzZoTmI4dlpELzVwY1ZYckxXOStpajdQUVh6QkVnWDZwREZ4d0JYdXZ2ZlkwV212OWE3bGFpRzNDSEFteGZKNE1pTGNabS9jNmVVd0huejMrOGJ4ZHpQOFNTOWxBOHp2ZithNEc5L29FUFBEQWZiby9OdERNRy9FOG5lZGgwSHdUdHhsbnN5S2NXaSs1cEwzUzdmeno4N0c5akZ6UlJIeGMwWXp4VWQ2dWFHSytpa1Z6ZmVJNDRvakROTDY5M2lRSCtyemNTbzc5eCtNNTdmaGc0WTRFK1BIRFRkL1NqZy9PaTErOFV2UDhCWjh2K1VrMXF1aXIzV3JrUVBOOU1yOUdlOWxycnk5cS9EWFdXTDN0a21jZmY2VStUTHlJaENNQ3JsU2ozYnhhM2p2cEVVTjgzSTJHOWplN0RHcmpwSmE4RzBNSG1pRVNmd2pEajF0OUM5b044bk9zdkRFQllaQ1A1WmF6cTVtbjZFQVhScFQwcmRHcjROaEdITmZxa1RKNE5BcjE0STZXY3JIbm8zbUxOVjQxR0plKy9LdGZ3bm5FVnZ4WVBtTG5SNlBYTXNTTFJxcEx1cUpKTmRuY21jQU1CY3V6WGtvdlNJSWJTbEM0WFhGUWtuczBNaG1YMHFra3VLRUVoZHNWQnlXNVJ5T1RjU21kU29JYlNsQzRYWEZRa25zME1obVgwcWtrdUtFRWhkc1ZCeVc1UnlPVGNTbWRTb0liU2xDNFhYRlFrbnMwTWhtWDBxa2t1S0VFaGRzVkJ5VTVhSmdSRjUzQ0NucEZFeDJKT1NtZE9vT3FDcmNyRHJ5YVlZQk14cVYwUGdsdUtFSGhkc1ZCU2U3UnlHUmNTcWVTNElZU0ZHNVhISlRrSG8xTXhxVjBLZ2x1S0VIaGRzVkJTZTdSeUdSY1NxZVM0SVlTRkc1WEhKVGtIbzFNeHFWMEtnbHVLRUhoZHNWQlNlN1J5R1JjU3FlUzRJWVNGRzVYSEpUa0hvMU14cVYwS2dsdUtFSGhkc1ZCU2U3UnlHUmNTcWVTNElZU0ZHNVhISlRrb0gxV0prZDd4U3ZXYjlhVHdRSGU2N2ZLS3F2cENjbmNjOCtqT216NFgzKzk5ZlhYOGxDMGdFVWtWeHdVWEE0ME1kRGlRdVpMWHZJeWpiL2JicC9UMXoxZGQ5MzFlcFhuK3I4bmVkMTFEVzZseEVuVHI4TkFCalBwd3FZRHpWUVozbzBNRzI2Sis3dmM1b3RYUitCRVhpV3cvTnRzbVhKSHlZdGVxSnVDdkcrV3JtaCsvT01mNStiNVdSVW1aTUVjQXFoM1FibHRGRmRZY2ZLSTUwQjk0Yzc0U1pSN0NuQ3JYR0hDQ1QydWFMSUk0dU4yU3RUUDl6bHJJUkpTRGUvRnJYN0M0ZFdXd3UyS2d5SXVGRnlkdnZMS0s1c2Z5dXpzZXVJcUo4ZTRGWkh0anRJTGhxcDQ2eXh1eStZUzNNMitYOWxYdDIyWFhYYW11L0ZiWjIrYzZqYUNmRVZ6N2lJK3IyaGlIZ05QRUF1Si9MSnNML0wwUm5uMmxQR2g0OThXczJLZ2lWekZXMmQ1Ky9QWmFmRE44dHh2U2c5SGdodEtFTjNUbjVvdXIybTdXWjZsUEszWmZ2dnRkWHVXa0RrZzRzTFhtL0NXV3BiL3U3Uno3a1A3UFpxNG9vbjl3SS9UN1FYdEQrVjBvTW5LSkN1NFZSVDJ2bGVub1k2dDlHcmZTTFB6cnJ0b2xkanZwWEJMcTVRcHJtaW1PakdoRm55NGJUb3VoM0hXV1Z6UkRQRTVhLytSOG94bTMvRjNsYlRCbVdlV2QzMUsrOE1zKzh3N3BjZElkZDRrandFZy90dmxxbjVjUENTTXJoakFRQk41KzZGc1EzdjVUaG80ZmdyUFlzckN1SkIva0ltV0VPdVZjdFdWZFc2d1BxN0FEcHBQeTFWVjVKUjl5ZDhEeG85QWlHZFhGQzNpYXVtMmYweFdGcGRQcFN1YSszM3RxMnFPOFdIZzJ3VU9QdkJnOVY4alZ6WVJIOCtQUGh6ZXp1QzdMQ3hNNkliNG1BZ0tFMVRoYmdEb3VEMTMyQVJRRytNMmRlRWNjSUFOTkxrZEdoU3JHTUNOR1JSdVZ4eGs0aEJFSnVOU09sMElQS3FqVFRDTG10bTBaT3ZVNGtXSGdGeVhJbGxsUzdlSStVcEdZYXZ4dTBrYjA1SnpxVWhXMmRJdGFMNlNVZGhxL2oxcHQ5MStXNE5iTlBDUzV1Rkx6cVVpV1dWTHQ1VDVTa1pocS9udkptMU1TODZsSWxsbFM3ZWcrVXBHWWF2NTd5WnRURXZPcFNKWlpVdTNvUGxLUm1HcitlOG1MVmt1dnVqM2VzTHhtdUlaelp4TFJiTEtsbTVWNWlzWjBhYnY5cE1mMTRvWkVsTTFpeXk4a01iSGlSRk9mT0pWVmRWcEY0bDM5M0haaGdQTlUwOU4yemJhSEh2c3NWS0gzUmFuVXNwNHZiVExDUzdxeGVDUmkwNEdKTFl2eS9Oc3R1UjlBVHI5dDZjM0N5OWlWMHBaSDU3WHd2dEo4ZXpqTkRtNWEyY283ai9QWnZFY1B2YXYvWG9UM042R2V2TnJ0c3I0Mk1Hdnlva3B0cHRYZnRPR3FpaGlKY2VkTXJ2a2w3L3k1V1lqdVRxenNOelc2bmxKKzQrNk1QRmMvMUxHdDZ1cGd6QnhYbG5xV0ptOEIvWEZnZDJMVjdJck16ZE9uU3FweWZXaHBGL1JsT2NPNDZJRFRkbStoOElydjdTa3JDQi9MSlBySVU5cnJibVdGK01FT1RIL2VOWVIrK3ZQWEVwOHZWSWtkZDk0MDQxZWRqakkyeHZqazQ5YlY3RXRlQzRPRTk3ZzFrcnN2N1U1YTMrTExiNkUwRk05RWw4SG1oTC9hTGxTRlJjTVhsQVcrNFc4MkdMbGVPdXN6aEVSQ3duMnlZQmtRR3RzVzAvQ0ZVMkpZMWYvY253Vy85akg3TFpxM0Y3TkJjOW9JbjRlYUtaeVFuZ2dEVFFYQ2M5b29weS9SMU9lTFl6eHNkOTJERXNlMG41NWJtUzc0dkg5aHovK2dadlFram4rd2ZKTU5NcTM4eFlMeFBpd1kwSkpmQmEvL09VdmpCYmFINTc5Um4yNDR0cGUvaVN6SEdQN1h2bks5ZDJGWjh0dCs2M2ZRSjZpenZZSDIvY1BPTURMcmJLcS9ZQjN2TjQ2bS9mblUvS01Kcmg0eHJKdjJXampqZFIvVUxyU2VPSHZyWDllOFBrTDl0SFZoc2NSYkp0RzVOR0VleHE4YXgzNy8ySzVmVjJYc1Arc0JEK3FZVi83M3pXYnQxZVJyTEtGTldScHZwSlIySHJpNTlKOXlFcTNCcG9oZ0VNSFdrdlVHRk50MGRHSk42WXpzQVBQb1lNYVh6SVFzMUh6YjAxSGN4SVRFMXBVWUhTc1hVT294S0VEcFVldDVqOWtOeWFtazlneG5ZRWRlQTRkMVB4TEJtSTJhdnV6cHFNNWlZa0pMU293T3RhdUlWVGkwSUhTby9hZmx2K0xMcllUR1p6a2wwdmM2dEpUYW9IbjBJRlNueWUzenVJWGVTenQvWC8rQzJ6U0dnd2NjWHVqL2Urc0U3Y28zbmtubVd4RTdKL2R1Zm05RElxNWNLQjU2aWtuMDlRY2RlUlJlc0sxa05TcFpXVlNHTWpQcG5wUnoyZVRiVGRNNEpNMms1TUIyUzJacks3Y0I5eStlcnc4QTRYSmluQjFoeWViT1BGODNldGVaNVBMZVJFSFdobTEvSXptOGhZNk9YZ1Y2RWZIOHBreEZHTXAyNTZ2ZlZXZXVaSVR3emR2WWJmSG1iWEZTMFV1dnZnaW4rQUdWM2R4c295SmFqQVpFRjUxc3NVV1craUpLR2ZDekhWRmxPUFBuMmFkTFY2bDRkUlJuVlFIK2Zqd2h6NmNyS00rNit5VXFWT0xQY0huajZzdU9CSEc3ZEJ4NFJYTlJ4N0JzOEU1UGprL2ttZnFrSU8xMTE2YkpoMGdJYll1cVFodWo0V056MmpDL0tJWDJZenNuQ2hMcWQwUVhtOWZmRGlma21ka01Wa1RQLy81WlpJbVBOK01TVzhPTy9Rd0h3eGpWbnN1Q0lPQkpwNnpPK29vRzJneXZyOUhVN1kzRHpSUjBpWUR3djdlMjNvbEI3d2NhQzZPWnllNVNLVzRvam1UbE1tM1FKWjdzc01PSDlGdC8rU241SXBlMm4rZkRPaXUvT3dyblppZ0VXMTgwZGJzdGh4bzd2aUo4aTRBSEJ2Z2YrUWpINUZqZHZqeDkxbVp3R3ZLRFZPNDVUM1NObTZMTGJmUSt1NjhvM3cyTVJkSU93RkRnbStWVzZEeCtmQU9pTUNRVzJGdG9CbVBmOWIxcDB0a29Dbmw4SDV6VnJhazNMNk0vZGx5aTdmSXBENnlQL2hQL1Fua3p2S2pCdlZ6enprM1ZUWHFFNW5oN29jWWY4Y2RiYUQ1QTJrcmhTT1Z4STlYT0RZT091aEF0ZUNkc29pUDU2cjdsMUg5Z1lEdDhVNlpmT28zNlJiZ2xlU1dZeXd4UHZ0ZmZQNG93OG1BdW5YSFVsMXZ0Z1NlUXdkS2l4cmpxeTA2Y29VSjlVd0dGUGtSZDhxbVhSNmJrMHNaTDdNVlpkV0owUlN4RXh5WWQyeU9renRicStWNkNrZFR4TGttSXZPT3pTR1hEU1N6RldYVmlkRVVzUk1jbUhkc2pwUHIvbXNxY3JZVVpkVVRGVTBSTzhHQmVjZm1PTG5tWDFPUnM2VW9xNTZvYUlyWUNRN01PemJIeVRYL21vcWNMVVZaOVVSRlU4Uk9jR0Rlc1RsT3J2blhWT1JzS2NxcUp5cWFJbmFDQS9OR3p1L1Q2MDI2QTgxbjcvc0h0ODdpUGNiZEd1WDVxelE3YWJ4YXljMXRiNjNxYWVNNTBNU3RzOXdmekJhSmt5Zk1acHJmdjh6YUlOczFtbS96eld6V1djdytHWmMyVzNWWjRTVCt5cXV1MUZkTXpTU3ZIMEhNbi80TXo1OHlRcXdsNDF0dnUxVzV5OGxzdUhGNTNTYXZVL3MrKyt3VHpjWFc0bW9oNHV3aUoranR4YmJUckU5THFaZTlETGNqanpSYmI3MTF3NWw5eld2TTE3NTJFNjFyK0JYTnlCNXRiS0E1a0gyK3FuY0h2N0RubmpvQTNIWFhYZjJ6V0NsZDBiUkpsN2pGRnY4T2VYZWdmazU5VnpSbEh6bkpqckh6M3UwdCtjRko5M2J5WG1zdXFBZi9YTUMyWnpSSGlpdXM2OGpnRkx5enp6N2J0NUZsSUcrVHE4MTQzZGp0dDdkdjc4N3hnUTZUMStPZ25rVmxnSWYyaHJhUUdZMjhZdTFFOVMrdVZ6UnpoQjFrb0lseVI4dGtRSkdQV3pGaHgzODUwR3lhSmRKa1FCeG9hcmxVbUFOTnpIZ2E2K1BWMVhpYmV0NktVWG5QOXBzMDFuNHlHek9YcFpleVdXZnhQR1pjVU8rVUtUZG96akdBalBGOU1pQ1pXQ2JHZjFGNjdkeTU1K1puUUhPZHhvejg3T3NpM0NtQUNhTmVLak1uWTRueEl6dldCMnpQYUk3STY0SitIV2xhQTJlNDNuM1lGVTM1SFBUV1dXVTM4b3FqdFhUL2NRZmFlT01qNktycGltYjVqS2JNT3F1M3pnN2tSNGxEUWVzc050QWNOQWNmZExER3cwUlZhUE80ZytKaHVZMi9TSFlxclgyNC9MaUFtV1Nma3VkOGNmem9Eem55T0VUeG50dFVHUHV4MVZaYjZUR2JYMi9TMlpUQU50OHoyZjl1YmJCb0RYMjdMcG9PL2dBQUgzRkpSRUZVMEV2M285cUs5WEY0OEFXR1F3ZXRnc1Bzb05GSGFVVkxMVlpYNDF0dVFvWWNPb2dKQ3psdW1WVmxHVXJqbEZvc1YvTnZ1UWtaY3VnZ0prendNRHRvOUZGYTBWSXpHejNtQ3d5SERtSUJ3Y1Bzb05GSGFVVkx6V3owbUM4d0hEcUlCUVFQczROR0g2VVZMVFd6MFdPK3dIRG9JQllRUE13T0duMlVWclRVekVhUCtRTERvWU5ZUVBBd08yajBVVnJSVWpNYlBlWUxESWNPWWdIQncreWcwVWRwUlV2TmJQU1lMekFjT29nRkJBK3pnMFlmcFJVdE5iUFJZNzdBY09nZ0ZoQTh6QTRhZlpSV3ROVE1Sby81QXNPaGcxaEE4REE3YVBSUld0RlNNeHM5NWdzTWh3NlVhcTgzd1dRWEc4Y0tXcGhsS0JtbFJYTzE3UDh4QmYvTU0wMUszcklPbStseFJFNkFiVElncnlJQnZITVB0N0p0di8xMjhyTHhPOTI5elRiYjZnbnpLYWZJTzBMVGd2ZnQ4ZDJHSi80Y3Q4MkZXQWtlZlBCQmNuWHY5VElSenZkWnJObDhjenY1L3ZyKzVVQVRCTnlPaXhsRXYvMnRiNVgxSmUxTmIzcXpic2MrOHBxTXZKVDdyM2FKajFzZ01hREFxd3JpY3VDQkI2bDk3WFh5bGJyb3g3dWdPWWtMWGhUUEpld2RUVHBUcmcxY1JtVHdkS3ZibVlwcDB4NlhxeU1MU3J6OGJqOGo5ZFZtSHJ4YUJWZmo5bS9saHlVd3NNWEpjSjRNYUZSK1FMQmJaL0ZxQ2wxSWxnM0JiTGQySWh5dmFNcDdOUFc1c1JGNWZZbzl2MllGc2JiQ2E2LzljaTEzcXR3dVRTdnF3ZjdHeGE1b1lxRDVBVGZ2dXN1dXNvMGo4bXFJN2tBZHBDL0lhMHB3OVJCWC9Mb0xOeDR6bXNvSnVzVGJjODh2TXFVRm5STVJGYmZPQ2dOWGV4SC95Q04vV1BDdmwyZUl1US90Vzh1WFhESTlPeW1UOU5qQzdjQVZ6UWQwT3haYkxGODVCWWZQYUI0dnN3RXpiMXBXaXVKWlVzd0dpOC95MGtzdlV6TldTeSs5ak5ZMTdZazAyWlo3R3IyZEcvdXJzODZHUFQ3ODhDTzB6Q2Mrc1dOZ04vb3FFZkEvOU9FZHhKNjNseEN2aTl0Z2cxZktqd1hiNit2cGN1SEFUY1p6NUFvaDZ0cGpEN243UUplU1UycUpJc0t1YUdLZ21mc0d4di9PZCtUVks3TC9uK3U4a21pMCtkT2ZjVVZ6eEFlYXFCR3Z2OEUyWU1CWjdFL1NIcFdaclRmWVlJTm1PN21ObXE4NEFXL1YxVmJYY3NmOTdEaFU0MFV4R1JEaUg0b3Jtc1ZpZTdPUnpCU05lQWRKUDRVRlAyUXNzY1RpV3VZMHVTVTJMdHgvdkdvSnh4K2VyY2VDL21McFpTWnJQZmp4UkJlU1pkdWVmUElKZVYzT3ZPclBBMDBuR0w5WTAwZlpxckxnUXVudi84WXVWZFlOcmh6VkxhT3JEcXpPbm5YSjRBWWxZdUVVSmVtUzY5YlNNcmpxb01YUGFzbW84WXQ4dEpXazEvem45bU9vU0pTMzB3RGFCVnd2UzliMlYrU2pyU1M5dGo5dlBna1VpUXJOcm1WdkZ4TzlaTlQyVitTanJTVDl1ZHorN3JqekRwbEI4b2YyN3JoLzB2NFh0ODRXYlhLMHVmVHl5K1NFWjBSdnJUMzVwSHdiTEZycXFNd3l5ZGNCckxqaUM4TVZuOUVtWHRITWpYcTBlYzk3M3FNblVKajFFUk9aeEFWWHF4YVE5eExpUkk3VCttT1hmYUNwczVteWhIams3OGlqanRMdHcwbi9JN2lpb0lzbENnTUR6RjZKK282UVNYYmFSMWNpdThCVk0zRHhLaFBjUHFyN0tPczc1VDE1dUxVWXZ1STVUUXNqNzluRHF3cEdtb1hsZWRiSFphRFlpWk40c0QvKytPTjY5UU4xWFh6eHhSNGJBQ2V0dSsreGg4YUIvMHRmMmllblRnbVJMcFdtZXVlVjkzNGlQdDR0aWx2ejNDSG8yR09QMGZyd2VwUEhwejNtRmF5M25zd1FLekhlMzVyNUU2OVg0Y1E4dUZybG15NGxYNzJ4VFZDQ0t6UFhYL2QzRDRQajc0VGo3VW9obmhWODZxa25QUTVpNE44V3E0MkR2ZmpNS0s1a2dvZlgyMHlaTXNYNUtJSGJhVG5oRTU3VDg3cXNPc2xiTW9sNDE3dmZwZlZnY2laZmt2K3FxNjlzNXB4elR2WEhXMmZCNDJSQWUzN3hpMTRNTzNpbi9IaUMzR0xiOE83RHZNaXRzMHZJckxOeTYvUGRkOStiellwRy9kYlovTm9ST1BKa1FHai9tTWdxTHN6THNzc3VxMjBCZkd3NkI1cDdmWEd2UUpjWTk5MHY3OGxjUzdldnZIVjIxSi9SM0ZaZU02U1ZhTWxSblp3TCs0SUp2SEl1clZyY1piQ2x2TGNTZnZ3NE1TcnZrQTJwRGZXQVA5cmd4d0hzLy9ublgyZ1YrTG9vRmNxWm5iUE84dFpaTHliZzIrbWR2ZmFNWnZuOWwyK2RmYVV3cFM3NXc2US85dm1NYUZ1M3VuTDhYV1ZTSmV6UE1zc3NJeFB2NUlFNkJuMnc1K1BaU2xwL2hvRW1ybWlXOFJFdlg5R1VXMmRUbUk5OVRGNUhJbTFrNVpWWDBzL2RIVkxEbENsVDBvelV1S3ZpSnhaRTF2dnV1Ni9HeDdHVyt5MHJ5Y0V6dHUrQWRJdXVGc3k3SmFvb1NZL3Qzd0lVUk9jRllMU2VkVm15dS8rNXlHaWNER2hZc1ZZRnVmVFFiU2xyeWpTengvWHd5bkxVakNKYmNUdFFJclROMUdOazJuS2RwU1ZIelNoemh3UWFZbWJOTlQ0U0ZMT1FFcWFDV1RKYnpucEdrZDFUeE4xbFRZeElXZU1qVWUwY3RTMDU2eGw1Z2dtNmxhaW5iYVp1TXE1WkVTUlpac3RSTTRwc3hXVVJkN2ZOMUUzR3RSY1JRSmJaY3RTTUlsdHhXY1RkYlROMWszSHRSUVNRWmJZY05hUElWbHdXY1hmYlROMWtYSHNSQVdTWkxVZk5LTElWbDBYYzNUWlROeG5YWGtRQVdXYkxVVE9LYk1WbEVYZTN6ZFJOeHJVWEVVQ1cyWExVakNKYmNWbkUzVzB6ZFpOeDdVVUVrR1cySERXanlGWmNGbkYzMjB6ZFpGeDdFUUZrbVMxSHpRZ2V2YUtabnRGc0ZkR0N1K3hpSjJ1NFBRd1RyQndsZzd0RER6dXNlYU04VjRpVG9Vbnl6c0x6enorL0tGb01OQzI4K0VmbDFzZC82QlVBWEozQ0NUUnVSejMyUjhmcWlSY0dRL2psZi8zMTE1ZEI2OU9wRkFhYTNWdG51V2RQeWl0VFZrN3ZoTVJWdXE5ODVTdjZIQjRtODlod3cxZnA5dUZWQW8vSklDSHZkVVllUkFCTytKNkhHVGRsRzlhUWw3M2pkUVNQeTFWWUxMaWFDanYrOFF3bDNyZDRxRXcwdEtFOHM0VnRublhXV2VYMUMrVVZqV0g1M3dxVG9jaitMeVczUlA1QTZqanpyRE9iNDQ4L3Z0bDQ0NDIxTGd5Q2NPS0tLeUZjdUw5dEhYWThoNmpiSnJjSm8reisrKyt2dDRCdUljK0x3bzVCTWw3cmtmZGFudHZreEV6aTMwNnVSaDl3d0FGeUZYRFBaa201cFhUaGhSZVdlcGJRcTg4eEhwL1J4T3RVNXA1bkhwbk45c3RhejRma3lpVGFCcllaay9Ea1JVNUdwWDc4WTJGOHZhSXArLy9CRDM3SXFSaGs0M1pCNUhKK0dXemlXVjBNQXZiZWF5KzV3bXZQQ2NkQk1mTmhNcTkvbXQ0N2k1ajJ6T3Zwc3UrLzF0dDFaNTF0VnQwditCYVU1NFRqQ2ZvZWFZQS8rNnl6NmUyckJ4d2dBd2xaOEc1SHZFTVdaVlpiYlRYOTdQSCtWMFJjeW0rZHRTdWEzQ2FVODF0bkYxc01xaTdZZjd6ZUJGZk01cDUzSHJrS3ZwUyt3dWJJbzQ1c050bkVicGVlYTQ0NW0wdkM3TUVvaU50Q0VSLy83MzczdTVzRFpkdndnOFNpaXl6U0xMN0VFZzJlZWZaYlp5MlVYSlUrU2ZuNDdERUxzTjAyUFNwWDAzQjdyaHhQc2cyenpUYTcvdENBNHcrVDI3eEVib0ZGL2pFSXZleXl5MU5OSnVLK3dRSWQ3OTJkUnlidG1qN2RmbGhvYzRhMWY3MmlLZkc3dDg0MnpYZlRNNXJ0SzVxb1d5Y0RrdTNETTVxTUJZbFgyU0EzTThteGl6YUUxd2ZoVnY4M3Y5bnVoTUJ6MEdlY2NhYVV5YVh3YWgyMFY3UXR2RFlIWmJCOEtqMmoyYjZpeVpKOFJwT3ZIWUg5dm52djBXZU1VUitPUC9ScGFMczc3N3lUdkhwb1B0MjJ6VGJiTEV5Mk50bzg4dGlqa3UrWHFtK1p5Y3ZvNjI1dzIvWVc2UTZNK2VkZlFIMmNESWp4ZFNObFJkMWtYSk1CU1piWjR2NlhubEJtaUtOdGhxNUhOUStpWEhrWjF3cUdkVkdUS0xtQ3NCV0E4TFZNUFdvdUhzZ2RhQVpkQjUvRlNJYkNYdVBYL0V1RDZMU0piZ09zN2M5eVVvLy8wRmc2MEF5NkRyN2EvMGd5OGdIVU9yamdhNWw2MUZ3OGtEdlFETG9PdnBwL1NVWk9ZQ3U3OExWTVBXb3VIc2dkYUFhOW91bTN6cUl5c2VjS0JJNDJCeDk4aU41U3loTmV6dWE0M0hMTE5hZWRkbHBuQzdiZWVoczlrVHM1VEFiRTdjWXRvOXZMNnhCbWx4Ti9yMDlPMGliSjlQOTR2Zzh2dlkveGJhQXA3MmY4K3RmU3RwWGg4QnFHMThnRU1EaWh6UFhoeEh4RVgwMXl3dzAzV0lFaCs2L201TU5nYTZhWmNqMTRTVHVYWTQ0NVd0NForQ0tMRVdMaEJCM1BZY1VscDY4VFZHN2h1NlY1MmN0ZnJpZjFlWHZsSkZWdXdjTUo3eTkrOFhPTmdYZGQ0cXB4dVlqZU12RmtGdS9kbkR4NWNzaUIxWW1CbGk2aEhLcmRlNjh2NmdEWnRrSDJXVTcrTVhIU0ZWZGMzcXd1Z3lyYzVoeGo0Zlp0Y0RFcEVnYlllZHR4dS9FS3pZbnkvQ01YN2o4NU1UNG5BOElBRll0dWxxend2Qm9HZkFzdWFDZlpMSXVya0h2czhmbDB4VnlJV2tDTGRsWm9xN2dhTm1uUzgyVDc4dWM0NTV4ek5Edkk3YUwzMzNlZkRNb1cwVzAvOTV5enRUeXF1L1dXMjVxVjVJb1VZNjR0bncrZHVNSTBrcDcxaGYvODg4NVhGMmVkdmFkbk1xRDc1R29qNHVOWlVWOGtFR1o0eG1zdXpqanpyR2FGNVpmemVPQ3VKYmQvWG5EQkJVTEhQcWFkVkRqYWZGeWV0ZVMycVpUMmg4SEx0ZGRjSTYvRFdVNEhtaDVId0dPUFRmT0JEUGg2TzNpcUVsY3U4ZHp1b21tbVpxdlhQditYeTM3LzVTOS9MdUxIZW0zYjdKbFpsTVBBcm0vSm01K0NncFJnbmd6SWJwMVZjL0x4R2MzUHljei91b1RpZi9yVEpacURWOG9yVGVLQ3p4d0RTMHdvWmZ0aWczTGtkT2xsbG01T1BqbmRpUkhxdXZxYWEzV0FUdjU3My9NK3JaTFBhT0pISkYxQ0dlZ2JiYlNoeGpqbzRJUE5uOWIva1BkMWJydnR0ZzFmRmNXY3pqblhuUHJxbGNka1lNbjlSeEZVZTdkY0xkOWVibEVtRjhjZmZyRDY5S2MvMVh4R1h0Y0NPMzVVS0JjcDJkcW0wbS9hV1BrSHc2b0k2NkpPVVhJRnJlcmhNOU1JaEd4a2Q0RlZmckxJU3pUSUFGV2NlbWdXSExDVHoyQ3FJNVJWR1BRY29FUWRTalRVK0RYL3RmM1Y0MCs2ak5yL2xQMW03WC90dXdsWjhhOE1COGtXOUZiMlhPMVFvdUYvOS90SFhtcXVpVjE0a1VYSC92NlgwNHFMTC83RFFGNUJnV2t6QjZ1dnNlYmd4U3U5U01ySUFkdnF1T1RaemNHMGFkTUdNbEhOWU5iWlpyT1BJS1piTEE4OGNQOUFKaVVaeUpYRWdUeG5PRmovbFJzTTVwMTduczd4LzhEOTl3MGVmK0pKOGMwOW1HT09PWWVlZjl4NzczMkQzLy8rOXdONS9ZYnlaTGJZZ2N6WTZSOS9ianMweFEzS24vL3RkLzVqTU9XR0c2U09PUWFycnJMcVFBWUczdjdrSkd2d3gwditxUDZaSjAwYXJMbldtb1BsbDExK01ESVQ2dXgwWEF4a01vWVR5elhYWEQzNHkxLy9wcVdXWG5xcHdjdGV2dlpBcnFnT25tNmVIc2lyTExUTVFpOVlhQ0FEWDQrZjl5RlhOdjk4OHc4ZWZQQ0JnUXgyQnpMb0haeHp6am1EdSs2NmF5QURrTUhMWC9heXdVd3p6OXdiSHdmT1BaS3pjNFV2ejRVTmxsdCtoY0hMWC9veTNZMTc3cjFuSUs4SkdTeTgwTUpTMW5MendIMzNEWjZRejJHQkJSZlFuRngwMGNVREdlUXJaNk9OWGlWeEpsbWNZZXU4eVlrUkRUbi8wNTZjTmpqcnJMTUdjbFZ3TUkrMGgxZHZ2TkZnOWpubnN1eDZFUWU5eDc5TW5ETTQ3L3p6Qmc4OStOQkFicnNkYkxqaFJvTzU1bVRiNFFhR09tUWY1WlVqZzh2K2R1bmdrY2NmSFN5MjZLS0Q1WmRiM3JmejF0dHVIOXcwZGVwZ2xsbG1IYXk4eXNyU05tWVhYL3E4dFpwWUYrdHZ5UlpGYmpFZXlDekQwbDRma25hNjFHQ2RkZGNieklRNk84M0ljbk96NVBxU1MvNGsyemw5OE1JVlY1UzJ0NVlGR0JKZmZtUWVYSEhaNVFPNUhYcXc4TUtMREZaY1lZV2lic1EvNzd6ekIzSzd0WDZlTDE5N25jSFNTeTVWY0JoQXowMmhwSDI0N2RaYkIyZktaNFQydityS3EwcVoxczVad1hMZG9VUkQvdnlIN2IrbXhZczQ4TThmbzU1TGNHeE9tU0lYMndhRFZWZGJkYkRLU2l2THRzWFBLVy9TbzQ4K01yanM4aXNHOG43VWdRekVCd3RKanZwM0kyMGJpbnBZQng0Zmlidm5ucnNIY25mSFFHYkIxdU5rL2ZWZU1aaEwraTFkUXBGb3VPV1dXd1lYWG5pQkhqL3JyYlB1WUlrbGx6QzNyOGNmMzR2MGdTSHhqZnJNOHg4R21sWnpyTit4QTI1Uk1DZzBIV3NzdWUxbkhoR2xNZVBhUE5IdjJBSDV3YURRZEt5eDFQaVdoOURTdmMySHpKR1VaTTRoOCtkY0J5d1NEQXBOeHhvTHk5ZjRPVTlFbEphcHVEWlA5RHQyUUg0d0tEUWRheXcxLzVhSDJ2NXlPeUdpWklheU5FLzBPM1pBZGpBb05CMXJMTFg5V1I1cSs4dnRoSWlTR2NyU1BOSHYyQUhad2FEUWRLeXgxUFpuZWVocmYvSmM0K0JCR2RoajRMZk9PbXVUS0RMbmtQa3ppN3M2WERVb0taZUZqZVZaSjJ5c2l4SzJjc2wxc0x4ekhiQkVNQ2cwSFdzc0xKK2paaFJLR3RuWHVRNldkNjREa29OQm9lbFlZMkg1SERXalVOTEl2czUxc0x4ekhaQWNEQXBOeHhvTHkrZW9HWVdTUnZaMXJvUGxuZXVBNUdCUWFEcldXRmcrUjgwb2xEU3lyM01kTE85Y0J5UUhnMExUc2NiQzhqbHFScUdra1gyZDYyQjU1em9nT1JnVW1vNDFGcGJQVVRNS0pZM3M2MXdIeXp2WEFjbkJvTkIwckxHd2ZJNmFVU2hwWkYvbk9samV1UTVJRGdhRnBtT05oZVZ6VkxIcGhVMDZRM2t0Z2FGK0d1Rzd5NEV5OHFwdDc5VnBUTElVY2J1czNocS81cisyUHpzVVphMEhNQStoZk9TbFk0V0U1R2p6VktjeHlWTFU0NC9wWVc1ci8xUDduOXIvNk5IZ2g0WURIaVJqOVRlQm8rVllPTWxTMVA2SDZXSGEvZ245anp6UEpWZUhNZEM4YUxDT1hKWENsNHFIZGNEUFZBeTEvV3N5UERVTytDRXhWeUx6R1haSWF2U3pjSktsNkNramhKcC9UU0F6bHh0cnlpdUZFMksrNlJTcGZwS1NMRVhOUDlQRHREMkwvVSsrb2hrcVpSeEl4cWFNUHVMc3k0ZytTdlYwM01GUTQzdW53cHhCTWtPVTBVZWNmUm5SUjZtZWpqc1lhdjVyL3RPWEd0c01KRnNJWmZRUloxOUc5RkdxcCtNT2h0cithdnVyN1krSGkwc2VJWlR1Q0NEN01ncHVoZXJwdUlPaEhuLy9FOGZmL0F2TW53ZWFla1V6alk3cTUvOC84ZmtYZzJIL2RwY3VvbjcrOWZQL0ozNy81b0ZtL0dZSzN6LzVXeW9TaU52RWZHSktScStVWW8zYzRDeFAyZlc2WS90WFFqZE1LdGQxZEMwOUlXcjhtdi9hL3VyeFYvdWZuczVSVE8xT3RLMTdxYTZqYTNGeUJrS3EvWC85L3F2Zi8vLzY4NTlOTjkxMDhQQkREdzhPT2ZRUWUxNHVINVVadFEvaXR1N01ycU5yY1hJR1FxckhmejMrNi9IL3J6Lys5U0Q4Tnh4LzVVQlROMEFHOXV3U2h2ektRWGM4SWJFT3h0WWR2NXF4d2ptTU5LOUVhN0gxQkVmbkNtQUZOWDd2cnl4TVQ4Mi9aQ0kxVm10THJSWkZWU1ZXdGYzVjQ2LzJQN1gvdFg2RDNZTjJETlk1eUFtd2R5blNXUWlqNTFmZXlLLzlqMlhEY3RuS0tGV1ZXTlgrdC9hL3RmK3QvYTkwQk5MUHNudlFqc0U2aDlyL1BrZS9mMnlnMmZuRTI0MGdFQUwwQmpKUndMb29RejJsS1dnQkJ2ckVJT3VpRExXVXBxQUZHT2dUZzZ5TE10UlNtb0lXWUtCUERMSXV5bEJMYVFwYWdJRStNY2k2S0VNdHBTbG9BUWI2eENEcm9neTFsS2FnQlJqb0U0T3NpekxVVXBxQ0ZtQ2dUd3l5THNwUVMya0tXb0NCUGpISXVpaERMYVVwYUFFRytzUWc2NklNdFpTbW9BVVk2Qk9EcklzeTFGS2FnaFpnb0U4TXNpN0tVRXRwQ2xxQWdUNHgrUC9iTzlzbFMzSVRpSHJmLzUxdFM0SURpU2g1ZHRzYjY0ZzE5OGNseWN5U2VoaEVWWC9Oc0JaUlZxbVVaQUxGL2pQSVdrUlpwVktTQ1JUN3p5QnJFV1dWU2trbVVPdy9nNnhGbEZVcUpabEFzZjhNc2haUlZxbVVaQUxGL2pQSVdrUlpwVktTQ1JUN3p5QnJFV1dWU2trbVVPdy9nNnhGbEZVcUpabEFzZjhNc2haUlZxbVVaQUxGL2pQSVdrUlpwVktTQ1JUN3p5QnJFV1dWU2trbVVPdy9nNnhGbEZVcUpabEFzZjhNc2haUlZxbVVaQUxGL2pQSVdrUlpwVktTQ1JUN3p5QnJFV1dWU2trbVVPdy9nNnhGbEZVcUpabEFzZjhTMXU5b2h2MWp0US9xMkE4dllzQUE4WldMWk81UFpHTmpCK3A4VTdQL3FzQXBsZFFyWUlDcC95clQvc1puVnFUaTAwZmxUWjB1ZkZCSE9ieUlBUVBFdnNuTS9scUxVdm9zYXFWZkZ4eGV4SUFCcHY2cmt0UC85Y3hsZDlRMnMreEQvYUNPOS9BaUJnd3cvVGY5TitkdjlVQ2VpSXJ0ek9tN09wMy9vSTV5ZUJFREJvaDlrNW45dFJaYWVjTWY2Z2MxOVY4Vk9IV1I0Z1FNTVAyM3lyUSswZHovbytiNmNZYjlKTEplV1I3TGxWTU5URXozamRTaEdOLzZQMWxtLzZuLzlOODVFTjhuNVAySndwZWZrMlZSSFlweHpmbWIrVFB6Zis1L2ZWcmtoSmo1OC9wQ3pkZEVwVzY5b2wvdW1iOHpmMmYrenZ6dDA0STV3dFFnYmg1TXhOdWpPaFRqL0d2bWozeEgweitJRS9RRFVuNS9jS3J4d2Y3K0dGY3ZVSDRmaG5XUElWeTVYMUFCZnYrbTRveXJGNWo5N1FIQ3l1T1ZPU0dxTlBVdmZia3JwYld4eXYyUjk3aDZnZW0vNlQvLytrcjIxV21RNkpLTDM1Mm0yczcvMkN1dVhtRDZiL3B2K28vejR5ZmpoRGdsUzFSK2UxWGoydDhmNCtvRjV2ek4rWnZ6eDluUmN4YW5KTTliVUFHNDhBL0Z1SHFCT1g5LzNmbVRUelRyMzFmOGhVQmZmekg2N3lTWVY2NEFucmcrWTE0L09KSUhhaStJZ2NWN2JJNUZhR1BNL3F0SnZLaFdLNmtZOE1TcC8vVGZuTCtaUHpwakdSREtWZHdjaTVqNW16Zm11Zi9NL1dmdXZ6WXpiRmJJeEFDZU9NOGY4L3d4engvLzk4OGY2K2RtOXpoWW4vcGR4MEh2cFBVWjVHVE5YenhsMHFUU2FJalp2OVZ6NnA5UE10bEJnVnE5UXRtQXZpSzZTRW9NMy9SZnErZjAzL1FmVDlMbGJGblMrcVY0T0dERU9YK25BcFNET1BObmxjVWV3Vm8vemZ5WitUUHpwMHhWVGRwNVVUSG1TZ3dhVTBtSjRadm5uMWJQbVQ5LzZ2ejViZitLNXZYdFJtbS8xWUJiOWdNZi9WbWF1dlp3U0pmNVNvL3RjQitDVXJQLzFILzZqNGN4SHN2aWxBWFFNNU9ISytSeXBtSG4vSzE2dHNMbGx5bDJuV2IrelB5WitUUHo1OHlDOVZhL003RlplN1V4Y2hGWGVpNDYzSWVnMU15Zm1UOHpmMmIrN0lHaGM4R21UcjQzN1NLdTlGeDR1QTlCcVQ5ci9sdy9PcXRiN0k5RmM4WCtCL3lndU1hazlhNC9iK1dYdmY5L3NudEJ6UlhQL3FjQ0h5V1orbHRSNG4zNnJ6OGRQYjlhZHplVTVvcm4vTTM1V3hYNGFBbElrOWI3bkw4NWYvZG5aek4vVmsvY1Jka1Q1VDVRbWlzKzA2ZmJEMjIrZUovek4rZnZiclU1ZjNQKy91TDVjejdSMU05YWJYcnRpZVhkZVNaV2pLMHp5dWpiWkN0elRQcTJqWHVJZnY3aGxpTGZOWjM5VDdGV3ZhYitwNFZPazUyM2N4dmVYTzAyMDQ2MzNhaU50UXVYYi9yUEMxTERuTC84cXZuTW4zMmU5bXZtenluREdTODJZNjdLK0xReDdYaG4vbVRmV0VHeUxMczJNMysxS29Gbi9zNzg1YnVXYy8rNXB1d1pyelpqTDJYbTc1b2d2NVY3anRVcEJndmdGRzY5L1EvbnIzMUg4M3g4OWtFRzNCOGtUL1I4d1A4aDd1djI2MXhTRXVQMXZjbXhxWmV0R2ZUcWIxd3VLVW4zTjNrVC9qTjBBZmRsOCtmdnhYc3dwYVlsNlJjME9ZbytmLzlSaWwyMjZiL2VQQSttOUZSSitnVk5qcUpQLzBVcGR0bW0vM3J6UEpqU1V5WHBGelE1aWo3OUY2WFlaWnYrNjgzellFcFBsYVJmME9Rbyt2UmZsR0tYYmZxdk44K0RLVDFWa241Qms2UG8wMzlSaWwyMnYxSC8vV2IvaTZZMncvbWpPaUV0NGJTcTIyVDVRMlRaSmY5cmZTS1gvL1lVcTdSZndZMFY3ZEx0MjY5VjhjY1dSajlFdS9oY08vdFAvYWYvbUZ4K1h0YWgwcTZ3NDRLMnM0MzNhODdmekovU0JxY3I5cHQxaS9lTXRrNDR6RFR6VjA4YWhacnpwMVd4bHFFMk85dDR2MmIrelB3cGJYQzZZcjladDNqUGFPdUV3MHd6Zi9Ta1VhaVpQMW9WYXhscXM3T045MnZtejM4N2Y5WjNOUCs1cWlsZlNlQloxQ3A4M3JYMFF2OXVXSzZYdnp0YndOVHpYb3k1L0lOT3d5OVF1WDRuK3hWL1RsUFBlekdhYmI4LzZEVDhBcFhyZDdKZnM3L1ZRVzhWcFZBdXIvQ2cwL0FMVks2ZitsdTFwdis4YTZ3N3pudHBsR3lxQjUyR1g2QnkvVTcyYStwdmRaanpmNXJoOUVocEZDL1BDZzg2RGI5QTVmcWQ3TmYwbjlWaCt1ODB3K21SMGloZW5oVWVkQnArZ2NyMU85bXY2VCtydy9UZmFZYlRJNlZSdkR3clBPZzAvQUtWNjNleVg5Ti9Wb2UvcXYvVzd3ZFk2Y3ZmaG44TUJINTVlSG0rZnJjYzIxZk1aYisrZWlKWHBGRkloN1AvT2hqclpFejlwLzlXRzhTTTdDZWxNWG1zNXZ6MXIxNUt1YkpRUWpxYytUUHpaK2J2M0gvbS9qdjMzN24venZOSGYwSjRNdmxZOGYvOS9QWHhvN1A2Y0xYeDkyTnRGdkNqeGx2azlYbTVYNzNDOHhQWDgzQzNGL2xjNEQ5L2xXUDJwL3FQOGszOVQyR20vK2I4dlI0Y1p2NzQ3Smo1bThNMGtVL1FKQlROL1NlcjhkaytjLytaKzg5cWpMbi96djEzN3IvZm4rSDh6WjQvNGtkbno1M2g0KzVacWJ4Qm5PcFVNVzh1K3UzWXhUWmJJU1FSeUdLVjhneVNpRG1pQ2NqRVMvWlVWSUY0SytVWkpCRnpSQk9RaVpmc3FhZ0M4VmJLTTBnaTVvZ21JQk12MlZOUkJlS3RsR2VRUk13UlRVQW1Ycktub2dyRVd5blBJSW1ZSTVxQVRMeGtUMFVWaUxkU25rRVNNVWMwQVpsNHlaNktLaEJ2cFR5REpHS09hQUl5OFpJOUZWVWcza3A1QmtuRUhORUVaT0lsZXlxcVFMeVY4Z3lTaURtaUNjakVTL1pVVklGNEsrVVpKQkZ6UkJPUWlaZnNxYWdDOFZiS00wZ2k1b2dtSUJNdjJWTlJCZUt0bEdlUVJNd1JUVUFtWHJLbm9nckVXeW5QSUltWUk1cUFUTHhrVDBVVmlMZFNua0VTTVVjMEFabDR5WjZLS2hCdnBUeURKR0tPYUFJeThaSTlGVlVnM2twNUJrbkVITkVFWk9JbGV5cXFRTHlWOGd5U2lEbWlDY2pFUy9aVVZJRjRLK1VaSkJGelJCT1FpWmZzcWFnQzhWYktNMGdpNW9nbUlCTXYyVk5SQmVLdGxHZVFSTXdSVFVBbVhyS25vZ3JFV3luUElJbVlJNXFBVEx4a1QwVVZpTGRTbmtFU01VYzBBWmw0eVo2S0toQnZwVHlESkdLT2FBSXk4Wkk5RlZVZzNrcDVCa25FSE5FRVpPSWxleXFxUUx5VjhneVNpRG1pQ2NqRVMvWlVWSUY0SytVWkpCRnpSQk9RaVpmc3FhZ0M4VmJLTTBnaTVvZ21JQk12MlZOUkJlS3RsR2VRUk13UlRVQStNZjR4b01MR0ZaK2dMdE10TEpYS3pXUWVDRURNaXhzeXk5dllsWnZKUEJDQTJIWk53aXh2WTFkdUp2TkFBR0p1MTVCWjNzYXUzRXptZ1FERXRtc1NabmtidTNJem1RY0NFSE83aHN6eU5uYmxaaklQQkNDMlhaTXd5OXZZbFp2SlBCQ0FtTnMxWkphM3NTczNrM2tnQUxIdG1vUlozc2F1M0V6bWdRREUzSzRoczd5TlhibVp6QU1CaUczWEpNenlObmJsWmpJUEJDRG1kZzJaNVczc3lzMWtIZ2hBYkxzbVlaYTNzU3MzazNrZ0FERzNhOGdzYjJOWGJpYnpRQUJpMnpVSnM3eU5YYm1aekFNQmlMbGRRMlo1Rzd0eU01a0hBaERicmttWTVXM3N5czFrSGdoQXpPMGFNc3ZiMkpXYnlUd1FnTmgyVGNJc2IyTlhiaWJ6UUFCaWJ0ZVFXZDdHcnR4TTVvRUF4TFpyRW1aNUc3dHlNNWtIQWhCenU0Yk04aloyNVdZeUR3UWd0bDJUTU12YjJKV2J5VHdRZ0pqYk5XU1d0N0VyTjVONUlBQ3g3WnFFV2Q3R3J0eE01b0VBeE55dUliTzhqVjI1bWN3REFZaHQxeVRNOGpaMjVXWXlEd1FnNW5ZTm1lVnQ3TXJOWkI0SVFHeTdKbUdXdDdFci8vckh2d0hYSWZMeWJZNjBpd0FBQUFCSlJVNUVya0pnZ2c9PSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDEwOTAgMzU3IEwgMTA5MCAzMzEgTCAxMjUwIDMzMSBMIDEyNTAgMzU3IiBmaWxsPSIjZmZkOTY2IiBzdHJva2U9IiNkNmI2NTYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDEwOTAgMzU3IEwgMTA5MCA0NDEgTCAxMjUwIDQ0MSBMIDEyNTAgMzU3IiBmaWxsPSJub25lIiBzdHJva2U9IiNkNmI2NTYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDEwOTAgMzU3IEwgMTI1MCAzNTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2Q2YjY1NiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtd2VpZ2h0PSJib2xkIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSIxMTY5LjUiIHk9IjM0OC41Ij5Dcml0aWM8L3RleHQ+PC9nPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIHBvaW50ZXItZXZlbnRzPSJub25lIiBjbGlwLXBhdGg9InVybCgjbXgtY2xpcC0xMDk0LTM2Mi0xNTItMjQtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iMTA5NS41IiB5PSIzNzQuNSI+LSBjcml0aWMgbmV1cmFsIG5ldHdvcms8L3RleHQ+PC9nPjxwYXRoIGQ9Ik0gMTA5MCAzODUgTCAxMjUwIDM4NSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZDZiNjU2IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgcG9pbnRlci1ldmVudHM9Im5vbmUiIGNsaXAtcGF0aD0idXJsKCNteC1jbGlwLTEwOTQtMzk0LTE1Mi0yNi0wKSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSIxMDk1LjUiIHk9IjQwNi41Ij4rIGZvcndhcmQoKTwvdGV4dD48L2c+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgcG9pbnRlci1ldmVudHM9Im5vbmUiIGNsaXAtcGF0aD0idXJsKCNteC1jbGlwLTEwOTQtNDIwLTE1Mi0yNi0wKSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSIxMDk1LjUiIHk9IjQzMi41Ij4rIHNhdmVfY3JpdGljKCk8L3RleHQ+PC9nPjxwYXRoIGQ9Ik0gMTM5OC45NiA0NDMgTCAxMzk5IDU4OSBMIDEzMDIuMjQgNTg5IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iMyAzIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gMTMwOC4xMiA1ODUuNSBMIDEzMDEuMTIgNTg5IEwgMTMwOC4xMiA1OTIuNSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAxMjcwIDM1NyBMIDEyNzAgMzMxIEwgMTQzMCAzMzEgTCAxNDMwIDM1NyIgZmlsbD0iI2ZmZDk2NiIgc3Ryb2tlPSIjZDZiNjU2IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAxMjcwIDM1NyBMIDEyNzAgNDQzIEwgMTQzMCA0NDMgTCAxNDMwIDM1NyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZDZiNjU2IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAxMjcwIDM1NyBMIDE0MzAgMzU3IiBmaWxsPSJub25lIiBzdHJva2U9IiNkNmI2NTYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXdlaWdodD0iYm9sZCIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iMTM0OS41IiB5PSIzNDguNSI+QWN0b3I8L3RleHQ+PC9nPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIHBvaW50ZXItZXZlbnRzPSJub25lIiBjbGlwLXBhdGg9InVybCgjbXgtY2xpcC0xMjc0LTM2Mi0xNTItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iMTI3NS41IiB5PSIzNzQuNSI+LSBhY3RvciBuZXVyYWwgbmV0d29yazwvdGV4dD48L2c+PHBhdGggZD0iTSAxMjcwIDM4NyBMIDE0MzAgMzg3IiBmaWxsPSJub25lIiBzdHJva2U9IiNkNmI2NTYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtMTI3NC0zOTYtMTUyLTI2LTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjEyNzUuNSIgeT0iNDA4LjUiPisgZm9yd2FyZCgpPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtMTI3NC00MjItMTUyLTI2LTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjEyNzUuNSIgeT0iNDM0LjUiPisgc2F2ZV9zdHJhdGVneSgpPC90ZXh0PjwvZz48cGF0aCBkPSJNIDU0OS43NyA1NTYuMDcgTCA0OTAgNTU4IEwgNDkwIDQ5MSBMIDQyMi4yNCA0OTAuNTIiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtZGFzaGFycmF5PSIzIDMiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSA1NDQgNTU5Ljc2IEwgNTUwLjg4IDU1Ni4wNCBMIDU0My43NyA1NTIuNzYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gNDI4LjE0IDQ4Ny4wNiBMIDQyMS4xMiA0OTAuNTEgTCA0MjguMDkgNDk0LjA2IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDEzMTggNDQ1IEwgMTMxOCA1MTUgTCAxMDgwIDUxNSBMIDEwODAgNDE4IEwgMTA1NS45OSA0MTgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gMTAzMC45OSA0MTggTCAxMDQzLjQ5IDQxMC42NSBMIDEwNTUuOTkgNDE4IEwgMTA0My40OSA0MjUuMzUgWiIgZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuNSAtMC41KSI+PHN3aXRjaD48Zm9yZWlnbk9iamVjdCBzdHlsZT0ib3ZlcmZsb3c6IHZpc2libGU7IHRleHQtYWxpZ246IGxlZnQ7IiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgcmVxdWlyZWRGZWF0dXJlcz0iaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHMTEvZmVhdHVyZSNFeHRlbnNpYmlsaXR5Ij48ZGl2IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IHVuc2FmZSBjZW50ZXI7IGp1c3RpZnktY29udGVudDogdW5zYWZlIGNlbnRlcjsgd2lkdGg6IDFweDsgaGVpZ2h0OiAxcHg7IHBhZGRpbmctdG9wOiA1MTVweDsgbWFyZ2luLWxlZnQ6IDExNjFweDsiPjxkaXYgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMDsgdGV4dC1hbGlnbjogY2VudGVyOyAiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxMXB4OyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBjb2xvcjogIzAwMDAwMDsgbGluZS1oZWlnaHQ6IDEuMjsgcG9pbnRlci1ldmVudHM6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7IHdoaXRlLXNwYWNlOiBub3dyYXA7ICI+aGFzIGE8L2Rpdj48L2Rpdj48L2Rpdj48L2ZvcmVpZ25PYmplY3Q+PHRleHQgeD0iMTE2MSIgeT0iNTE4IiBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXNpemU9IjExcHgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPmhhcyBhPC90ZXh0Pjwvc3dpdGNoPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDMyMXB4OyBtYXJnaW4tbGVmdDogMTA1NXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogbm9uZTsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj4xLi4qPC9kaXY+PC9kaXY+PC9kaXY+PC9mb3JlaWduT2JqZWN0Pjx0ZXh0IHg9IjEwNTUiIHk9IjMyNSIgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgZm9udC1zaXplPSIxMnB4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4xLi4qPC90ZXh0Pjwvc3dpdGNoPjwvZz48cGF0aCBkPSJNIDExODAgMTA4IEwgMTE4MCA4MiBMIDEzNDAgODIgTCAxMzQwIDEwOCIgZmlsbD0iI2ZmZDk2NiIgc3Ryb2tlPSIjODJiMzY2IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAxMTgwIDEwOCBMIDExODAgMjk4IEwgMTM0MCAyOTggTCAxMzQwIDEwOCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODJiMzY2IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAxMTgwIDEwOCBMIDEzNDAgMTA4IiBmaWxsPSJub25lIiBzdHJva2U9IiM4MmIzNjYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBmb250LXdlaWdodD0iYm9sZCIgcG9pbnRlci1ldmVudHM9Im5vbmUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iMTI1OS41IiB5PSI5OS41Ij5MZWFybmluZyBhbGdvcml0aG08L3RleHQ+PC9nPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIHBvaW50ZXItZXZlbnRzPSJub25lIiBjbGlwLXBhdGg9InVybCgjbXgtY2xpcC0xMTg0LTExMy0xNTItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iMTE4NS41IiB5PSIxMjUuNSI+LSBoeXBlcnBhcmFtZXRlcnM8L3RleHQ+PC9nPjxnIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIHBvaW50ZXItZXZlbnRzPSJub25lIiBjbGlwLXBhdGg9InVybCgjbXgtY2xpcC0xMTg0LTEzOS0xNTItMjYtMCkiIGZvbnQtc2l6ZT0iMTJweCI+PHRleHQgeD0iMTE4NS41IiB5PSIxNTEuNSI+LSBjcml0aWNzPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtMTE4NC0xNjUtMTUyLTI2LTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjExODUuNSIgeT0iMTc3LjUiPi0gYWN0b3JzPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtMTE4NC0xOTEtMTUyLTI2LTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjExODUuNSIgeT0iMjAzLjUiPi0gcmVwbGF5IGJ1ZmZlcjwvdGV4dD48L2c+PHBhdGggZD0iTSAxMTgwIDIxNiBMIDEzNDAgMjE2IiBmaWxsPSJub25lIiBzdHJva2U9IiM4MmIzNjYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtMTE4NC0yMjUtMTUyLTI2LTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjExODUuNSIgeT0iMjM3LjUiPisgY29sbGVjdF9vYnNlcnZhdGlvbnMoKTwvdGV4dD48L2c+PGcgZmlsbD0iIzAwMDAwMCIgZm9udC1mYW1pbHk9IkhlbHZldGljYSIgcG9pbnRlci1ldmVudHM9Im5vbmUiIGNsaXAtcGF0aD0idXJsKCNteC1jbGlwLTExODQtMjUxLTE1Mi0yNi0wKSIgZm9udC1zaXplPSIxMnB4Ij48dGV4dCB4PSIxMTg1LjUiIHk9IjI2My41Ij4rIGNvbGxlY3RfYWN0aW9ucygpPC90ZXh0PjwvZz48ZyBmaWxsPSIjMDAwMDAwIiBmb250LWZhbWlseT0iSGVsdmV0aWNhIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIgY2xpcC1wYXRoPSJ1cmwoI214LWNsaXAtMTE4NC0yNzctMTUyLTI2LTApIiBmb250LXNpemU9IjEycHgiPjx0ZXh0IHg9IjExODUuNSIgeT0iMjg5LjUiPisgdXBkYXRlX3N0cmF0ZWd5KCk8L3RleHQ+PC9nPjxwYXRoIGQ9Ik0gMTE4MCAyODUgTCAxMTMwIDI4NSBMIDExMzAgMzI4Ljc2IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iMyAzIiBwb2ludGVyLWV2ZW50cz0ibm9uZSIvPjxwYXRoIGQ9Ik0gMTEyNi41IDMyMi44OCBMIDExMzAgMzI5Ljg4IEwgMTEzMy41IDMyMi44OCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAxMzQwIDI4NSBMIDEzOTAgMjg1IEwgMTM5MCAzMjguNzYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtZGFzaGFycmF5PSIzIDMiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAxMzg2LjUgMzIyLjg4IEwgMTM5MCAzMjkuODggTCAxMzkzLjUgMzIyLjg4IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDExNzcuNzYgMTMxIEwgNjQxIDEzMSBMIDY0MSAyNTIiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwMDAwMCIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtZGFzaGFycmF5PSIzIDMiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAxMTcxLjg4IDEzNC41IEwgMTE3OC44OCAxMzEgTCAxMTcxLjg4IDEyNy41IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48cGF0aCBkPSJNIDExNDAgNjQ5IEwgMTEwMCA2NTEgTCAxMDYwLjk5IDY1MSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDAwMDAwIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50ZXItZXZlbnRzPSJub25lIi8+PHBhdGggZD0iTSAxMDM1Ljk5IDY1MSBMIDEwNDguNDkgNjQzLjY1IEwgMTA2MC45OSA2NTEgTCAxMDQ4LjQ5IDY1OC4zNSBaIiBmaWxsPSIjMDAwMDAwIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgcG9pbnRlci1ldmVudHM9Im5vbmUiLz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMC41IC0wLjUpIj48c3dpdGNoPjxmb3JlaWduT2JqZWN0IHN0eWxlPSJvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC1hbGlnbjogbGVmdDsiIHBvaW50ZXItZXZlbnRzPSJub25lIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiByZXF1aXJlZEZlYXR1cmVzPSJodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiPjxkaXYgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogdW5zYWZlIGNlbnRlcjsganVzdGlmeS1jb250ZW50OiB1bnNhZmUgY2VudGVyOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDFweDsgcGFkZGluZy10b3A6IDY1MXB4OyBtYXJnaW4tbGVmdDogMTEwNXB4OyI+PGRpdiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1zaXplOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICI+PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXNpemU6IDExcHg7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGNvbG9yOiAjMDAwMDAwOyBsaW5lLWhlaWdodDogMS4yOyBwb2ludGVyLWV2ZW50czogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgIj5oYXMgYTwvZGl2PjwvZGl2PjwvZGl2PjwvZm9yZWlnbk9iamVjdD48dGV4dCB4PSIxMTA1IiB5PSI2NTQiIGZpbGw9IiMwMDAwMDAiIGZvbnQtZmFtaWx5PSJIZWx2ZXRpY2EiIGZvbnQtc2l6ZT0iMTFweCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+aGFzIGE8L3RleHQ+PC9zd2l0Y2g+PC9nPjwvZz48c3dpdGNoPjxnIHJlcXVpcmVkRmVhdHVyZXM9Imh0dHA6Ly93d3cudzMub3JnL1RSL1NWRzExL2ZlYXR1cmUjRXh0ZW5zaWJpbGl0eSIvPjxhIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTUpIiB4bGluazpocmVmPSJodHRwczovL3d3dy5kaWFncmFtcy5uZXQvZG9jL2ZhcS9zdmctZXhwb3J0LXRleHQtcHJvYmxlbXMiIHRhcmdldD0iX2JsYW5rIj48dGV4dCB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEwcHgiIHg9IjUwJSIgeT0iMTAwJSI+Vmlld2VyIGRvZXMgbm90IHN1cHBvcnQgZnVsbCBTVkcgMS4xPC90ZXh0PjwvYT48L3N3aXRjaD48L3N2Zz4K)" + "![architecture.svg]" ] }, { "cell_type": "markdown", + "id": "5dfa1c37", "metadata": { "id": "dDn1blWvPM7Z" }, @@ -56,6 +59,7 @@ }, { "cell_type": "markdown", + "id": "296fa058", "metadata": {}, "source": [ "### Single-Agent Learning\n", @@ -87,6 +91,7 @@ }, { "cell_type": "markdown", + "id": "7b8f0839", "metadata": { "id": "OMvIl2xLVi1l" }, @@ -114,18 +119,20 @@ }, { "cell_type": "markdown", + "id": "345e905e", "metadata": { "id": "OeeZDtIFmmhn" }, "source": [ "## 2. Get ASSUME running\n", - "Here we just install the ASSUME core package via pip. In general the instructions for an installation can be found here: https://assume.readthedocs.io/en/latest/installation.html. All the required steps are executed here and since we are working in colab the generation of a venv is not necessary.\n", + "Here we just install the ASSUME core package via pip. In general the instructions for an installation can be found here: https://ASSUME.readthedocs.io/en/latest/installation.html. All the required steps are executed here and since we are working in colab the generation of a venv is not necessary.\n", "\n", "As we will be working with learning agents, we need to install ASSUME with all learning dependencies such as torch. For this, we use the [learning] attribute.\n" ] }, { "cell_type": "markdown", + "id": "e0770442", "metadata": {}, "source": [ "**You don't need to execute the following code cell if you already have the ASSUME framework installed including learning dependencies**" @@ -133,32 +140,23 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, + "id": "f8459b9c", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "m0DaRwFA7VgW", - "outputId": "5655adad-5b7a-4fe3-9067-6b502a06136b", - "vscode": { - "languageId": "shellscript" - } + "outputId": "5655adad-5b7a-4fe3-9067-6b502a06136b" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "ERROR: Invalid requirement: \"'assume-framework[learning]'\"\n" - ] - } - ], + "outputs": [], "source": [ "!pip install 'assume-framework[learning]'" ] }, { "cell_type": "markdown", + "id": "3b53bcf9", "metadata": { "id": "IIw_QIE3pY34" }, @@ -170,6 +168,7 @@ }, { "cell_type": "markdown", + "id": "c09764f6", "metadata": {}, "source": [ "**You don't need to execute the following code cell if you already have the ASSUME repository cloned.**" @@ -177,69 +176,51 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, + "id": "5b00f9b5", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "_5hB0uDisSsg", - "outputId": "1241881f-e090-4f26-9b02-560adfcb3a3e", - "vscode": { - "languageId": "shellscript" - } + "outputId": "1241881f-e090-4f26-9b02-560adfcb3a3e" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Cloning into 'assume-repo'...\n" - ] - } - ], + "outputs": [], "source": [ "!git clone https://github.com/assume-framework/assume.git assume-repo" ] }, { "cell_type": "markdown", + "id": "32169f9f", "metadata": { "id": "Fg7DyNjLuvSb" }, "source": [ - "**Let the magic happen.** Now you can run your first ever simulation in ASSUME. The following code navigates to the respective assume folder and starts the simulation example example_01b using the local database here in colab.\n", + "**Let the magic happen.** Now you can run your first ever simulation in ASSUME. The following code navigates to the respective ASSUME folder and starts the simulation example example_01b using the local database here in colab.\n", "\n", - "When running locally, you can also just run `assume -s example_01b -db \"sqlite:///./examples/local_db/assume_db_example_01b.db\"` in a shell" + "When running locally, you can also just run `ASSUME -s example_01b -db \"sqlite:///./examples/local_db/ASSUME_db_example_01b.db\"` in a shell" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, + "id": "3d31a7b9", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "3eVM60Qx8SC0", - "outputId": "20434515-6e65-4d34-d44d-8c4529a46ece", - "vscode": { - "languageId": "shellscript" - } + "outputId": "20434515-6e65-4d34-d44d-8c4529a46ece" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "^C\n" - ] - } - ], + "outputs": [], "source": [ "!cd assume-repo && assume -s example_01b -db \"sqlite:///./examples/local_db/assume_db_example_01b.db\"" ] }, { "cell_type": "markdown", + "id": "72d7f32a", "metadata": {}, "source": [ "**Select input files path**:\n", @@ -249,8 +230,13 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": {}, + "execution_count": null, + "id": "7f3dd8f1", + "metadata": { + "vscode": { + "languageId": "python" + } + }, "outputs": [], "source": [ "import importlib.util\n", @@ -266,13 +252,14 @@ }, { "cell_type": "markdown", + "id": "33e527b5", "metadata": { "id": "zMyZhaNM7NRP" }, "source": [ "## 3. Make your agents learn\n", "\n", - "Now it is time to get your hands dirty and actually dive into coding in ASSUME. The main objective of this session is to ensure participants grasp the steps required to equip a new unit with RL strategies or modify the action dimensions. Our emphasis lies in the bidding strategy class, with less emphasis on the algorithm and role. Coding tasks will highlight the key aspects to be a djusted, as already outlined in the learning_strategies.py file. Subsequent\n", + "Now it is time to get your hands dirty and actually dive into coding in ASSUME. The main objective of this session is to ensure participants grasp the steps required to equip a new unit with RL strategies or modify the action dimensions. Our emphasis lies in the bidding strategy, with less focus on the algorithm and role. Coding tasks will highlight the key aspects to be a djusted, as already outlined in the learning_strategies.py file. Subsequent\n", "sections will present the tasks and provide the correct answers for the coding exercises.\n", "\n", "We start by initializing the class of our Learning Strategy. This is very cloesly related to the general strucutre of a bidding strategy.\n", @@ -283,9 +270,13 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, + "id": "04d17e03", "metadata": { - "id": "xUsbeZdPJ_2Q" + "id": "xUsbeZdPJ_2Q", + "vscode": { + "languageId": "python" + } }, "outputs": [], "source": [ @@ -308,9 +299,13 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, + "id": "383bbbfd", "metadata": { - "id": "UXYSesx4Ifp5" + "id": "UXYSesx4Ifp5", + "vscode": { + "languageId": "python" + } }, "outputs": [], "source": [ @@ -380,6 +375,7 @@ }, { "cell_type": "markdown", + "id": "b07c7ad1", "metadata": { "id": "8UM1QPZrIdqK" }, @@ -400,9 +396,13 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, + "id": "12e33c9e", "metadata": { - "id": "iApbQsg5x_u2" + "id": "iApbQsg5x_u2", + "vscode": { + "languageId": "python" + } }, "outputs": [], "source": [ @@ -455,9 +455,13 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, + "id": "a2907489", "metadata": { - "id": "_4cJ8Y8uvMgV" + "id": "_4cJ8Y8uvMgV", + "vscode": { + "languageId": "python" + } }, "outputs": [], "source": [ @@ -483,6 +487,7 @@ }, { "cell_type": "markdown", + "id": "91134e29", "metadata": { "id": "Jgjx14997Y9s" }, @@ -498,6 +503,7 @@ }, { "cell_type": "markdown", + "id": "dade95c0", "metadata": { "id": "PngYyvs72UxB" }, @@ -516,9 +522,13 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, + "id": "7c7be3eb", "metadata": { - "id": "0ww-L9fABnw3" + "id": "0ww-L9fABnw3", + "vscode": { + "languageId": "python" + } }, "outputs": [], "source": [ @@ -639,6 +649,7 @@ }, { "cell_type": "markdown", + "id": "64c091f0", "metadata": { "id": "kDYKZGERKJ6V" }, @@ -656,27 +667,20 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, + "id": "8d1e1548", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 70 }, "id": "PYoI3ncSKJSX", - "outputId": "4b4341d7-5a21-49c4-ee25-b8c55f693cd1" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'\\n#scaling factors for all observations\\n#residual load forecast\\nscaling_factor_res_load = self.max_demand\\n\\n# price forecast\\nscaling_factor_price = self.max_bid_price\\n\\n# total capacity\\nscaling_factor_total_capacity = unit.max_power\\n\\n# marginal cost\\nscaling_factor_marginal_cost = self.max_bid_price\\n'" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" + "outputId": "4b4341d7-5a21-49c4-ee25-b8c55f693cd1", + "vscode": { + "languageId": "python" } - ], + }, + "outputs": [], "source": [ "\"\"\"\n", "#scaling factors for all observations\n", @@ -696,6 +700,7 @@ }, { "cell_type": "markdown", + "id": "79379f1e", "metadata": { "id": "rW_1op6fCTV-" }, @@ -716,6 +721,7 @@ }, { "cell_type": "markdown", + "id": "dfe2ee77", "metadata": { "id": "Cho84Pqs2N2G" }, @@ -728,9 +734,13 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, + "id": "9a2f135a", "metadata": { - "id": "8ehlm5Z9CbRw" + "id": "8ehlm5Z9CbRw", + "vscode": { + "languageId": "python" + } }, "outputs": [], "source": [ @@ -792,6 +802,7 @@ }, { "cell_type": "markdown", + "id": "2c792a7b", "metadata": { "id": "OTaqkwV3xcf6" }, @@ -805,27 +816,20 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, + "id": "d06d6dba", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 35 }, "id": "rfXJBGOKxbk7", - "outputId": "06f76c52-e215-4998-8f61-f7492b880e4d" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'\\n#base_bid = marginal costs\\nbase_bid = next_observation[-1] # = marginal_costs\\n'" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" + "outputId": "06f76c52-e215-4998-8f61-f7492b880e4d", + "vscode": { + "languageId": "python" } - ], + }, + "outputs": [], "source": [ "\"\"\"\n", "#base_bid = marginal costs\n", @@ -835,6 +839,7 @@ }, { "cell_type": "markdown", + "id": "8fb00a28", "metadata": { "id": "B5Hgh88Vz0wD" }, @@ -852,9 +857,13 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, + "id": "337833a5", "metadata": { - "id": "Y81HzlkjNHJ0" + "id": "Y81HzlkjNHJ0", + "vscode": { + "languageId": "python" + } }, "outputs": [], "source": [ @@ -956,6 +965,7 @@ }, { "cell_type": "markdown", + "id": "86d9cd3b", "metadata": { "id": "3n-kJeOFCfRB" }, @@ -969,27 +979,20 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, + "id": "3f84f013", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 70 }, "id": "wB7X-pFkCje3", - "outputId": "ff905a9d-e3f2-4487-9e8a-9dbf4e855ab7" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'\\n#calculate actual bids\\n#rescale actions to actual prices\\nbid_prices = actions * self.max_bid_price\\n\\n#calculate inflexible part of the bid\\nbid_quantity_inflex = min_power\\nbid_price_inflex = min(bid_prices)\\n\\n#calculate flexible part of the bid\\nbid_quantity_flex = max_power - bid_quantity_inflex\\nbid_price_flex = max(bid_prices)\\n'" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" + "outputId": "ff905a9d-e3f2-4487-9e8a-9dbf4e855ab7", + "vscode": { + "languageId": "python" } - ], + }, + "outputs": [], "source": [ "\"\"\"\n", "#calculate actual bids\n", @@ -1008,6 +1011,7 @@ }, { "cell_type": "markdown", + "id": "b452178f", "metadata": { "id": "hr15xKuGCkbn" }, @@ -1043,6 +1047,7 @@ }, { "cell_type": "markdown", + "id": "7f3afb42", "metadata": { "id": "aGyaOUgo3Y8Q" }, @@ -1055,9 +1060,13 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, + "id": "43e813e2", "metadata": { - "id": "U9HX41mODuBU" + "id": "U9HX41mODuBU", + "vscode": { + "languageId": "python" + } }, "outputs": [], "source": [ @@ -1164,6 +1173,7 @@ }, { "cell_type": "markdown", + "id": "c02e38ee", "metadata": { "id": "gWF7D4QA2-kz" }, @@ -1193,27 +1203,20 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, + "id": "bbe8a015", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 52 }, "id": "e1XdVXPSCo_k", - "outputId": "585d94a5-7475-4e96-d0a1-5e82b711c6a5" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'\\nscaling = 0.1 / unit.max_power\\nregret_scale = 0.2\\nreward = float(profit - regret_scale * opportunity_cost) * scaling\\n'" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" + "outputId": "585d94a5-7475-4e96-d0a1-5e82b711c6a5", + "vscode": { + "languageId": "python" } - ], + }, + "outputs": [], "source": [ "\"\"\"\n", "scaling = 0.1 / unit.max_power\n", @@ -1224,6 +1227,7 @@ }, { "cell_type": "markdown", + "id": "4a72845b", "metadata": { "id": "L3flH5iY4x7Z" }, @@ -1236,9 +1240,13 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, + "id": "6aa54f30", "metadata": { - "id": "ZwVtpK3B5gR6" + "id": "ZwVtpK3B5gR6", + "vscode": { + "languageId": "python" + } }, "outputs": [], "source": [ @@ -1282,6 +1290,7 @@ }, { "cell_type": "markdown", + "id": "947ec7f3", "metadata": { "id": "cTlqMouufKyo" }, @@ -1291,9 +1300,13 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, + "id": "23b299f8", "metadata": { - "id": "moZ_UD7FfkOh" + "id": "moZ_UD7FfkOh", + "vscode": { + "languageId": "python" + } }, "outputs": [], "source": [ @@ -1319,6 +1332,7 @@ }, { "cell_type": "markdown", + "id": "132f9429", "metadata": { "id": "ZlRnTgCy5d9W" }, @@ -1333,58 +1347,20 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, + "id": "53219009", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "ZlWxXxZr54WV", - "outputId": "e30f4279-7a4e-4efc-9cfb-61416e4fe2f1" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.world:connected to db\n", - "INFO:assume.scenario.loader_csv:Starting Scenario example_02a/base from ../inputs\n", - "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", - "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", - "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Downsampling demand_df successful.\n", - "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", - "INFO:assume.scenario.loader_csv:availability_df not found. Returning None\n", - "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", - "INFO:assume.scenario.loader_csv:price_forecasts not found. Returning None\n", - "INFO:assume.scenario.loader_csv:temperature not found. Returning None\n", - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "example_02a_base_1 2019-03-31 00:00:00: : 2592001.0it [00:29, 88492.68it/s]\n", - "example_02a_base_2 2019-03-31 00:00:00: : 2592001.0it [00:31, 83508.91it/s] \n", - "example_02a_base_3 2019-03-31 00:00:00: : 2592001.0it [00:30, 83653.36it/s] \n", - "example_02a_base_4 2019-03-31 00:00:00: : 2592001.0it [00:30, 84041.85it/s] \n", - "example_02a_base_5 2019-03-31 00:00:00: : 2592001.0it [00:30, 85265.01it/s] \n", - "Training Episodes: 100%|██████████| 5/5 [02:32<00:00, 30.56s/it]\n", - "example_02a_base 2019-03-31 00:00:00: : 2592001.0it [00:35, 73343.42it/s] \n" - ] + "outputId": "e30f4279-7a4e-4efc-9cfb-61416e4fe2f1", + "vscode": { + "languageId": "python" } - ], + }, + "outputs": [], "source": [ "log = logging.getLogger(__name__)\n", "\n", @@ -1430,6 +1406,7 @@ }, { "cell_type": "markdown", + "id": "3621dd9c", "metadata": {}, "source": [ "In comparison, the following cell executes example case 2 of [1] where the same capacity of the reinforcement power plant in case 1 is divided into five reinforcement learning power plants, which hence cannot exert market power anymore." @@ -1437,261 +1414,14 @@ }, { "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.world:connected to db\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Training Episodes: 0%| | 0/5 [00:00 wait_for=>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", - "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", - "handle: )>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 349, in __wakeup\n", - " future.result()\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py\", line 198, in result\n", - " raise exc\n", - "asyncio.exceptions.CancelledError\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\events.py\", line 84, in _run\n", - " self._context.run(self._callback, *self._args)\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py\", line 434, in raise_exceptions\n", - " raise fut.exception()\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 279, in __step\n", - " result = coro.throw(exc)\n", - " ^^^^^^^^^^^^^^^\n", - "RuntimeError: cannot reuse already awaited coroutine\n", - "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", - "handle: )>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 349, in __wakeup\n", - " future.result()\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py\", line 198, in result\n", - " raise exc\n", - "asyncio.exceptions.CancelledError\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\events.py\", line 84, in _run\n", - " self._context.run(self._callback, *self._args)\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py\", line 434, in raise_exceptions\n", - " raise fut.exception()\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 279, in __step\n", - " result = coro.throw(exc)\n", - " ^^^^^^^^^^^^^^^\n", - "RuntimeError: cannot reuse already awaited coroutine\n", - "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", - "handle: )>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 349, in __wakeup\n", - " future.result()\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py\", line 198, in result\n", - " raise exc\n", - "asyncio.exceptions.CancelledError\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\events.py\", line 84, in _run\n", - " self._context.run(self._callback, *self._args)\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py\", line 434, in raise_exceptions\n", - " raise fut.exception()\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 279, in __step\n", - " result = coro.throw(exc)\n", - " ^^^^^^^^^^^^^^^\n", - "RuntimeError: cannot reuse already awaited coroutine\n", - "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", - "handle: )>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 349, in __wakeup\n", - " future.result()\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py\", line 198, in result\n", - " raise exc\n", - "asyncio.exceptions.CancelledError\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\events.py\", line 84, in _run\n", - " self._context.run(self._callback, *self._args)\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py\", line 434, in raise_exceptions\n", - " raise fut.exception()\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 279, in __step\n", - " result = coro.throw(exc)\n", - " ^^^^^^^^^^^^^^^\n", - "RuntimeError: cannot reuse already awaited coroutine\n", - "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", - "handle: )>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 349, in __wakeup\n", - " future.result()\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py\", line 198, in result\n", - " raise exc\n", - "asyncio.exceptions.CancelledError\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\events.py\", line 84, in _run\n", - " self._context.run(self._callback, *self._args)\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py\", line 434, in raise_exceptions\n", - " raise fut.exception()\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 279, in __step\n", - " result = coro.throw(exc)\n", - " ^^^^^^^^^^^^^^^\n", - "RuntimeError: cannot reuse already awaited coroutine\n", - "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", - "handle: )>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 349, in __wakeup\n", - " future.result()\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py\", line 198, in result\n", - " raise exc\n", - "asyncio.exceptions.CancelledError\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\events.py\", line 84, in _run\n", - " self._context.run(self._callback, *self._args)\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py\", line 434, in raise_exceptions\n", - " raise fut.exception()\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 279, in __step\n", - " result = coro.throw(exc)\n", - " ^^^^^^^^^^^^^^^\n", - "RuntimeError: cannot reuse already awaited coroutine\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:3812: RuntimeWarning: coroutine 'MarketRole.opening' was never awaited\n", - " raise KeyError(key) from err\n", - "RuntimeWarning: Enable tracemalloc to get the object allocation traceback\n", - "c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:3812: RuntimeWarning: coroutine 'UnitsOperator.register_market' was never awaited\n", - " raise KeyError(key) from err\n", - "RuntimeWarning: Enable tracemalloc to get the object allocation traceback\n", - "Training Episodes: 20%|██ | 1/5 [00:32<02:11, 32.77s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:mango.agent.core:Agent eom_de: Caught the following exception in _check_inbox: \n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Training Episodes: 20%|██ | 1/5 [00:32<02:11, 32.81s/it]\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:3805\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 3804\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m-> 3805\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_engine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_loc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcasted_key\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 3806\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n", - "File \u001b[1;32mindex.pyx:167\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", - "File \u001b[1;32mindex.pyx:196\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", - "File \u001b[1;32mpandas\\\\_libs\\\\hashtable_class_helper.pxi:7081\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", - "File \u001b[1;32mpandas\\\\_libs\\\\hashtable_class_helper.pxi:7089\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", - "\u001b[1;31mKeyError\u001b[0m: 'energy_cashflow'", - "\nThe above exception was the direct cause of the following exception:\n", - "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\frame.py:4485\u001b[0m, in \u001b[0;36mDataFrame._set_item_mgr\u001b[1;34m(self, key, value, refs)\u001b[0m\n\u001b[0;32m 4484\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m-> 4485\u001b[0m loc \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_info_axis\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_loc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 4486\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m:\n\u001b[0;32m 4487\u001b[0m \u001b[38;5;66;03m# This item wasn't present, just insert at end\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:3812\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 3811\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m InvalidIndexError(key)\n\u001b[1;32m-> 3812\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01merr\u001b[39;00m\n\u001b[0;32m 3813\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m:\n\u001b[0;32m 3814\u001b[0m \u001b[38;5;66;03m# If we have a listlike key, _check_indexing_error will raise\u001b[39;00m\n\u001b[0;32m 3815\u001b[0m \u001b[38;5;66;03m# InvalidIndexError. Otherwise we fall through and re-raise\u001b[39;00m\n\u001b[0;32m 3816\u001b[0m \u001b[38;5;66;03m# the TypeError.\u001b[39;00m\n", - "\u001b[1;31mKeyError\u001b[0m: 'energy_cashflow'", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[34], line 32\u001b[0m\n\u001b[0;32m 28\u001b[0m \u001b[38;5;66;03m# run learning if learning mode is enabled\u001b[39;00m\n\u001b[0;32m 29\u001b[0m \u001b[38;5;66;03m# needed as we simulate the modelling horizon multiple times to train reinforcement learning run_learning( world, inputs_path=input_path, scenario=scenario, study_case=study_case, )\u001b[39;00m\n\u001b[0;32m 31\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m world\u001b[38;5;241m.\u001b[39mlearning_config\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlearning_mode\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[1;32m---> 32\u001b[0m \u001b[43mrun_learning\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 33\u001b[0m \u001b[43m \u001b[49m\u001b[43mworld\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 34\u001b[0m \u001b[43m \u001b[49m\u001b[43minputs_path\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minputs_path\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 35\u001b[0m \u001b[43m \u001b[49m\u001b[43mscenario\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscenario\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 36\u001b[0m \u001b[43m \u001b[49m\u001b[43mstudy_case\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstudy_case\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 37\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 39\u001b[0m \u001b[38;5;66;03m# after the learning is done we make a normal run of the simulation, which equals a test run\u001b[39;00m\n\u001b[0;32m 40\u001b[0m world\u001b[38;5;241m.\u001b[39mrun()\n", - "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\scenario\\loader_csv.py:959\u001b[0m, in \u001b[0;36mrun_learning\u001b[1;34m(world, inputs_path, scenario, study_case, verbose)\u001b[0m\n\u001b[0;32m 953\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m episode \u001b[38;5;129;01min\u001b[39;00m tqdm(\n\u001b[0;32m 954\u001b[0m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;241m1\u001b[39m, world\u001b[38;5;241m.\u001b[39mlearning_role\u001b[38;5;241m.\u001b[39mtraining_episodes \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m),\n\u001b[0;32m 955\u001b[0m desc\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTraining Episodes\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 956\u001b[0m ):\n\u001b[0;32m 957\u001b[0m \u001b[38;5;66;03m# TODO normally, loading twice should not create issues, somehow a scheduling issue is raised currently\u001b[39;00m\n\u001b[0;32m 958\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m episode \u001b[38;5;241m!=\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[1;32m--> 959\u001b[0m \u001b[43msetup_world\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 960\u001b[0m \u001b[43m \u001b[49m\u001b[43mworld\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mworld\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 961\u001b[0m \u001b[43m \u001b[49m\u001b[43mscenario_data\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscenario_data\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 962\u001b[0m \u001b[43m \u001b[49m\u001b[43mstudy_case\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstudy_case\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 963\u001b[0m \u001b[43m \u001b[49m\u001b[43mepisode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mepisode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 964\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 966\u001b[0m \u001b[38;5;66;03m# -----------------------------------------\u001b[39;00m\n\u001b[0;32m 967\u001b[0m \u001b[38;5;66;03m# Give the newly initliazed learning role the needed information across episodes\u001b[39;00m\n\u001b[0;32m 968\u001b[0m world\u001b[38;5;241m.\u001b[39mlearning_role\u001b[38;5;241m.\u001b[39mload_inter_episodic_data(inter_episodic_data)\n", - "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\scenario\\loader_csv.py:706\u001b[0m, in \u001b[0;36msetup_world\u001b[1;34m(world, scenario_data, study_case, perform_evaluation, terminate_learning, episode, eval_episode)\u001b[0m\n\u001b[0;32m 697\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msetup_world\u001b[39m(\n\u001b[0;32m 698\u001b[0m world: World,\n\u001b[0;32m 699\u001b[0m scenario_data: \u001b[38;5;28mdict\u001b[39m[\u001b[38;5;28mstr\u001b[39m, \u001b[38;5;28mobject\u001b[39m],\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 704\u001b[0m eval_episode: \u001b[38;5;28mint\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m,\n\u001b[0;32m 705\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 706\u001b[0m \u001b[43mworld\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_until_complete\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 707\u001b[0m \u001b[43m \u001b[49m\u001b[43masync_setup_world\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 708\u001b[0m \u001b[43m \u001b[49m\u001b[43mworld\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mworld\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 709\u001b[0m \u001b[43m \u001b[49m\u001b[43mscenario_data\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscenario_data\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 710\u001b[0m \u001b[43m \u001b[49m\u001b[43mstudy_case\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstudy_case\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 711\u001b[0m \u001b[43m \u001b[49m\u001b[43mperform_evaluation\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mperform_evaluation\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 712\u001b[0m \u001b[43m \u001b[49m\u001b[43mterminate_learning\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mterminate_learning\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 713\u001b[0m \u001b[43m \u001b[49m\u001b[43mepisode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mepisode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 714\u001b[0m \u001b[43m \u001b[49m\u001b[43meval_episode\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43meval_episode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 715\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 716\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\nest_asyncio.py:92\u001b[0m, in \u001b[0;36m_patch_loop..run_until_complete\u001b[1;34m(self, future)\u001b[0m\n\u001b[0;32m 90\u001b[0m f\u001b[38;5;241m.\u001b[39m_log_destroy_pending \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m 91\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m f\u001b[38;5;241m.\u001b[39mdone():\n\u001b[1;32m---> 92\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run_once\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 93\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_stopping:\n\u001b[0;32m 94\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\nest_asyncio.py:133\u001b[0m, in \u001b[0;36m_patch_loop.._run_once\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 130\u001b[0m curr_task \u001b[38;5;241m=\u001b[39m curr_tasks\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 132\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 133\u001b[0m \u001b[43mhandle\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 134\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m 135\u001b[0m \u001b[38;5;66;03m# restore the current task\u001b[39;00m\n\u001b[0;32m 136\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m curr_task \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\events.py:84\u001b[0m, in \u001b[0;36mHandle._run\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 82\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_run\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[0;32m 83\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m---> 84\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_callback\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_args\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 85\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (\u001b[38;5;167;01mSystemExit\u001b[39;00m, \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m):\n\u001b[0;32m 86\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py:434\u001b[0m, in \u001b[0;36mAgent.raise_exceptions\u001b[1;34m(self, fut)\u001b[0m\n\u001b[0;32m 430\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m fut\u001b[38;5;241m.\u001b[39mexception() \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 431\u001b[0m logger\u001b[38;5;241m.\u001b[39merror(\n\u001b[0;32m 432\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAgent \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maid\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m: Caught the following exception in _check_inbox: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mfut\u001b[38;5;241m.\u001b[39mexception()\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 433\u001b[0m )\n\u001b[1;32m--> 434\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m fut\u001b[38;5;241m.\u001b[39mexception()\n", - "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\world.py:686\u001b[0m, in \u001b[0;36mWorld.run\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 683\u001b[0m end_ts \u001b[38;5;241m=\u001b[39m datetime2timestamp(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mend)\n\u001b[0;32m 685\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 686\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_until_complete\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 687\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43masync_run\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart_ts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstart_ts\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mend_ts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mend_ts\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 688\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 689\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m:\n\u001b[0;32m 690\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\nest_asyncio.py:92\u001b[0m, in \u001b[0;36m_patch_loop..run_until_complete\u001b[1;34m(self, future)\u001b[0m\n\u001b[0;32m 90\u001b[0m f\u001b[38;5;241m.\u001b[39m_log_destroy_pending \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m 91\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m f\u001b[38;5;241m.\u001b[39mdone():\n\u001b[1;32m---> 92\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run_once\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 93\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_stopping:\n\u001b[0;32m 94\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\nest_asyncio.py:133\u001b[0m, in \u001b[0;36m_patch_loop.._run_once\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 130\u001b[0m curr_task \u001b[38;5;241m=\u001b[39m curr_tasks\u001b[38;5;241m.\u001b[39mpop(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 132\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 133\u001b[0m \u001b[43mhandle\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_run\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 134\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m 135\u001b[0m \u001b[38;5;66;03m# restore the current task\u001b[39;00m\n\u001b[0;32m 136\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m curr_task \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\events.py:84\u001b[0m, in \u001b[0;36mHandle._run\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 82\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_run\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[0;32m 83\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m---> 84\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_callback\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_args\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 85\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (\u001b[38;5;167;01mSystemExit\u001b[39;00m, \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m):\n\u001b[0;32m 86\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py:360\u001b[0m, in \u001b[0;36mTask.__wakeup\u001b[1;34m(self, future)\u001b[0m\n\u001b[0;32m 352\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__step(exc)\n\u001b[0;32m 353\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 354\u001b[0m \u001b[38;5;66;03m# Don't pass the value of `future.result()` explicitly,\u001b[39;00m\n\u001b[0;32m 355\u001b[0m \u001b[38;5;66;03m# as `Future.__iter__` and `Future.__await__` don't need it.\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 358\u001b[0m \u001b[38;5;66;03m# instead of `__next__()`, which is slower for futures\u001b[39;00m\n\u001b[0;32m 359\u001b[0m \u001b[38;5;66;03m# that return non-generator iterators from their `__iter__`.\u001b[39;00m\n\u001b[1;32m--> 360\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__step\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 361\u001b[0m \u001b[38;5;28mself\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py:277\u001b[0m, in \u001b[0;36mTask.__step\u001b[1;34m(***failed resolving arguments***)\u001b[0m\n\u001b[0;32m 273\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 274\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m exc \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 275\u001b[0m \u001b[38;5;66;03m# We use the `send` method directly, because coroutines\u001b[39;00m\n\u001b[0;32m 276\u001b[0m \u001b[38;5;66;03m# don't have `__iter__` and `__next__` methods.\u001b[39;00m\n\u001b[1;32m--> 277\u001b[0m result \u001b[38;5;241m=\u001b[39m coro\u001b[38;5;241m.\u001b[39msend(\u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 278\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 279\u001b[0m result \u001b[38;5;241m=\u001b[39m coro\u001b[38;5;241m.\u001b[39mthrow(exc)\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py:450\u001b[0m, in \u001b[0;36mAgent._check_inbox\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 447\u001b[0m priority, content, meta \u001b[38;5;241m=\u001b[39m message\n\u001b[0;32m 448\u001b[0m meta[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpriority\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m priority\n\u001b[1;32m--> 450\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcontent\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcontent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmeta\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmeta\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 452\u001b[0m \u001b[38;5;66;03m# signal to the Queue that the message is handled\u001b[39;00m\n\u001b[0;32m 453\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minbox\u001b[38;5;241m.\u001b[39mtask_done()\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\role.py:525\u001b[0m, in \u001b[0;36mRoleAgent.handle_message\u001b[1;34m(self, content, meta)\u001b[0m\n\u001b[0;32m 524\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mhandle_message\u001b[39m(\u001b[38;5;28mself\u001b[39m, content, meta: Dict[\u001b[38;5;28mstr\u001b[39m, Any]):\n\u001b[1;32m--> 525\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_role_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcontent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmeta\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\role.py:401\u001b[0m, in \u001b[0;36mRoleContext.handle_message\u001b[1;34m(self, content, meta)\u001b[0m\n\u001b[0;32m 392\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mhandle_message\u001b[39m(\u001b[38;5;28mself\u001b[39m, content, meta: Dict[\u001b[38;5;28mstr\u001b[39m, Any]):\n\u001b[0;32m 393\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Handle an incoming message, delegating it to all applicable subscribers\u001b[39;00m\n\u001b[0;32m 394\u001b[0m \u001b[38;5;124;03m for role, message_condition, method, _ in self._message_subs:\u001b[39;00m\n\u001b[0;32m 395\u001b[0m \u001b[38;5;124;03m if self._is_role_active(role) and message_condition(content, meta):\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 399\u001b[0m \u001b[38;5;124;03m :param meta: meta\u001b[39;00m\n\u001b[0;32m 400\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 401\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_role_handler\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcontent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmeta\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\role.py:239\u001b[0m, in \u001b[0;36mRoleHandler.handle_message\u001b[1;34m(self, content, meta)\u001b[0m\n\u001b[0;32m 237\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m role, message_condition, method, _ \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_message_subs:\n\u001b[0;32m 238\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_is_role_active(role) \u001b[38;5;129;01mand\u001b[39;00m message_condition(content, meta):\n\u001b[1;32m--> 239\u001b[0m \u001b[43mmethod\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcontent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmeta\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\common\\units_operator.py:211\u001b[0m, in \u001b[0;36mUnitsOperator.handle_market_feedback\u001b[1;34m(self, content, meta)\u001b[0m\n\u001b[0;32m 209\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mvalid_orders[marketconfig\u001b[38;5;241m.\u001b[39mproduct_type]\u001b[38;5;241m.\u001b[39mextend(orderbook)\n\u001b[0;32m 210\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mset_unit_dispatch(orderbook, marketconfig)\n\u001b[1;32m--> 211\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwrite_actual_dispatch\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmarketconfig\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mproduct_type\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\common\\units_operator.py:348\u001b[0m, in \u001b[0;36mUnitsOperator.write_actual_dispatch\u001b[1;34m(self, product_type)\u001b[0m\n\u001b[0;32m 345\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[0;32m 346\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlast_sent_dispatch[product_type] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcontext\u001b[38;5;241m.\u001b[39mcurrent_timestamp\n\u001b[1;32m--> 348\u001b[0m market_dispatch, unit_dispatch_dfs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_actual_dispatch\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 349\u001b[0m \u001b[43m \u001b[49m\u001b[43mproduct_type\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlast\u001b[49m\n\u001b[0;32m 350\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 352\u001b[0m now \u001b[38;5;241m=\u001b[39m timestamp2datetime(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcontext\u001b[38;5;241m.\u001b[39mcurrent_timestamp)\n\u001b[0;32m 353\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mvalid_orders[product_type] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlist\u001b[39m(\n\u001b[0;32m 354\u001b[0m \u001b[38;5;28mfilter\u001b[39m(\n\u001b[0;32m 355\u001b[0m \u001b[38;5;28;01mlambda\u001b[39;00m x: x[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mend_time\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m>\u001b[39m now,\n\u001b[0;32m 356\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mvalid_orders[product_type],\n\u001b[0;32m 357\u001b[0m )\n\u001b[0;32m 358\u001b[0m )\n", - "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\common\\units_operator.py:327\u001b[0m, in \u001b[0;36mUnitsOperator.get_actual_dispatch\u001b[1;34m(self, product_type, last)\u001b[0m\n\u001b[0;32m 325\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m output \u001b[38;5;129;01min\u001b[39;00m valid_outputs:\n\u001b[0;32m 326\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m output \u001b[38;5;129;01min\u001b[39;00m key:\n\u001b[1;32m--> 327\u001b[0m \u001b[43mdata\u001b[49m\u001b[43m[\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m]\u001b[49m \u001b[38;5;241m=\u001b[39m unit\u001b[38;5;241m.\u001b[39moutputs[key][start:end]\n\u001b[0;32m 329\u001b[0m data[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124munit\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m unit_id\n\u001b[0;32m 330\u001b[0m unit_dispatch_dfs\u001b[38;5;241m.\u001b[39mappend(data)\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\frame.py:4311\u001b[0m, in \u001b[0;36mDataFrame.__setitem__\u001b[1;34m(self, key, value)\u001b[0m\n\u001b[0;32m 4308\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_setitem_array([key], value)\n\u001b[0;32m 4309\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 4310\u001b[0m \u001b[38;5;66;03m# set column\u001b[39;00m\n\u001b[1;32m-> 4311\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_set_item\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\frame.py:4538\u001b[0m, in \u001b[0;36mDataFrame._set_item\u001b[1;34m(self, key, value)\u001b[0m\n\u001b[0;32m 4535\u001b[0m value \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mtile(value, (\u001b[38;5;28mlen\u001b[39m(existing_piece\u001b[38;5;241m.\u001b[39mcolumns), \u001b[38;5;241m1\u001b[39m))\u001b[38;5;241m.\u001b[39mT\n\u001b[0;32m 4536\u001b[0m refs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m-> 4538\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_set_item_mgr\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrefs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\frame.py:4488\u001b[0m, in \u001b[0;36mDataFrame._set_item_mgr\u001b[1;34m(self, key, value, refs)\u001b[0m\n\u001b[0;32m 4485\u001b[0m loc \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_info_axis\u001b[38;5;241m.\u001b[39mget_loc(key)\n\u001b[0;32m 4486\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m:\n\u001b[0;32m 4487\u001b[0m \u001b[38;5;66;03m# This item wasn't present, just insert at end\u001b[39;00m\n\u001b[1;32m-> 4488\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_mgr\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minsert\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_info_axis\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrefs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 4489\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 4490\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_iset_item_mgr(loc, value, refs\u001b[38;5;241m=\u001b[39mrefs)\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:1385\u001b[0m, in \u001b[0;36mBlockManager.insert\u001b[1;34m(self, loc, item, value, refs)\u001b[0m\n\u001b[0;32m 1383\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1384\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_insert_update_mgr_locs(loc)\n\u001b[1;32m-> 1385\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_insert_update_blklocs_and_blknos\u001b[49m\u001b[43m(\u001b[49m\u001b[43mloc\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1387\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maxes[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m=\u001b[39m new_axis\n\u001b[0;32m 1388\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mblocks \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m (block,)\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\core\\internals\\managers.py:1422\u001b[0m, in \u001b[0;36mBlockManager._insert_update_blklocs_and_blknos\u001b[1;34m(self, loc)\u001b[0m\n\u001b[0;32m 1419\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m loc \u001b[38;5;241m==\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mblklocs\u001b[38;5;241m.\u001b[39mshape[\u001b[38;5;241m0\u001b[39m]:\n\u001b[0;32m 1420\u001b[0m \u001b[38;5;66;03m# np.append is a lot faster, let's use it if we can.\u001b[39;00m\n\u001b[0;32m 1421\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_blklocs \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mappend(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_blklocs, \u001b[38;5;241m0\u001b[39m)\n\u001b[1;32m-> 1422\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_blknos \u001b[38;5;241m=\u001b[39m \u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mappend\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_blknos\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mblocks\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1423\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m loc \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m 1424\u001b[0m \u001b[38;5;66;03m# np.append is a lot faster, let's use it if we can.\u001b[39;00m\n\u001b[0;32m 1425\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_blklocs \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mappend(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_blklocs[::\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m], \u001b[38;5;241m0\u001b[39m)[::\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m]\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\numpy\\lib\\function_base.py:5618\u001b[0m, in \u001b[0;36mappend\u001b[1;34m(arr, values, axis)\u001b[0m\n\u001b[0;32m 5616\u001b[0m values \u001b[38;5;241m=\u001b[39m ravel(values)\n\u001b[0;32m 5617\u001b[0m axis \u001b[38;5;241m=\u001b[39m arr\u001b[38;5;241m.\u001b[39mndim\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m\n\u001b[1;32m-> 5618\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mconcatenate\u001b[49m\u001b[43m(\u001b[49m\u001b[43m(\u001b[49m\u001b[43marr\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalues\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maxis\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[1;31mKeyboardInterrupt\u001b[0m: " - ] - }, - { - "ename": "", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31mThe Kernel crashed while executing code in the current cell or a previous cell. \n", - "\u001b[1;31mPlease review the code in the cell(s) to identify a possible cause of the failure. \n", - "\u001b[1;31mClick here for more info. \n", - "\u001b[1;31mView Jupyter log for further details." - ] + "execution_count": null, + "id": "b01d2e8b", + "metadata": { + "vscode": { + "languageId": "python" } - ], + }, + "outputs": [], "source": [ "log = logging.getLogger(__name__)\n", "\n", @@ -1737,6 +1467,7 @@ }, { "cell_type": "markdown", + "id": "c21c085b", "metadata": {}, "source": [ "The following simulation represents case 3, respectively." @@ -1744,112 +1475,14 @@ }, { "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.world:connected to db\n", - "INFO:assume.scenario.loader_csv:Starting Scenario example_02c/base from ../inputs\n", - "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", - "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", - "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", - "INFO:assume.scenario.loader_csv:Downsampling demand_df successful.\n", - "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", - "INFO:assume.scenario.loader_csv:availability_df not found. Returning None\n", - "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", - "INFO:assume.scenario.loader_csv:price_forecasts not found. Returning None\n", - "INFO:assume.scenario.loader_csv:temperature not found. Returning None\n", - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Training Episodes: 1%| | 1/100 [00:22<36:39, 22.22s/it]\n", - "Training Episodes: 1%| | 1/100 [00:22<37:32, 22.75s/it]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for=>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pygments\\formatters\\terminal256.py:180: RuntimeWarning: coroutine 'MarketRole.opening' was never awaited\n", - " self.xterm_colors.append((r, g, b))\n", - "RuntimeWarning: Enable tracemalloc to get the object allocation traceback\n", - "c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pygments\\formatters\\terminal256.py:180: RuntimeWarning: coroutine 'UnitsOperator.register_market' was never awaited\n", - " self.xterm_colors.append((r, g, b))\n", - "RuntimeWarning: Enable tracemalloc to get the object allocation traceback\n" - ] - }, - { - "ename": "ValueError", - "evalue": "Time must be > 1552158000.0 but is 1551398399.", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[36], line 32\u001b[0m\n\u001b[0;32m 28\u001b[0m \u001b[38;5;66;03m# run learning if learning mode is enabled\u001b[39;00m\n\u001b[0;32m 29\u001b[0m \u001b[38;5;66;03m# needed as we simulate the modelling horizon multiple times to train reinforcement learning run_learning( world, inputs_path=input_path, scenario=scenario, study_case=study_case, )\u001b[39;00m\n\u001b[0;32m 31\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m world\u001b[38;5;241m.\u001b[39mlearning_config\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlearning_mode\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[1;32m---> 32\u001b[0m \u001b[43mrun_learning\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 33\u001b[0m \u001b[43m \u001b[49m\u001b[43mworld\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 34\u001b[0m \u001b[43m \u001b[49m\u001b[43minputs_path\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minputs_path\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 35\u001b[0m \u001b[43m \u001b[49m\u001b[43mscenario\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscenario\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 36\u001b[0m \u001b[43m \u001b[49m\u001b[43mstudy_case\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstudy_case\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 37\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 39\u001b[0m \u001b[38;5;66;03m# after the learning is done we make a normal run of the simulation, which equals a test run\u001b[39;00m\n\u001b[0;32m 40\u001b[0m world\u001b[38;5;241m.\u001b[39mrun()\n", - "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\scenario\\loader_csv.py:970\u001b[0m, in \u001b[0;36mrun_learning\u001b[1;34m(world, inputs_path, scenario, study_case, verbose)\u001b[0m\n\u001b[0;32m 966\u001b[0m \u001b[38;5;66;03m# -----------------------------------------\u001b[39;00m\n\u001b[0;32m 967\u001b[0m \u001b[38;5;66;03m# Give the newly initliazed learning role the needed information across episodes\u001b[39;00m\n\u001b[0;32m 968\u001b[0m world\u001b[38;5;241m.\u001b[39mlearning_role\u001b[38;5;241m.\u001b[39mload_inter_episodic_data(inter_episodic_data)\n\u001b[1;32m--> 970\u001b[0m \u001b[43mworld\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 972\u001b[0m \u001b[38;5;66;03m# -----------------------------------------\u001b[39;00m\n\u001b[0;32m 973\u001b[0m \u001b[38;5;66;03m# Store updated information across episodes\u001b[39;00m\n\u001b[0;32m 974\u001b[0m inter_episodic_data \u001b[38;5;241m=\u001b[39m world\u001b[38;5;241m.\u001b[39mlearning_role\u001b[38;5;241m.\u001b[39mget_inter_episodic_data()\n", - "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\world.py:686\u001b[0m, in \u001b[0;36mWorld.run\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 683\u001b[0m end_ts \u001b[38;5;241m=\u001b[39m datetime2timestamp(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mend)\n\u001b[0;32m 685\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 686\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_until_complete\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 687\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43masync_run\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart_ts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstart_ts\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mend_ts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mend_ts\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 688\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 689\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m:\n\u001b[0;32m 690\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\nest_asyncio.py:98\u001b[0m, in \u001b[0;36m_patch_loop..run_until_complete\u001b[1;34m(self, future)\u001b[0m\n\u001b[0;32m 95\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m f\u001b[38;5;241m.\u001b[39mdone():\n\u001b[0;32m 96\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[0;32m 97\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mEvent loop stopped before Future completed.\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m---> 98\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mf\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py:203\u001b[0m, in \u001b[0;36mFuture.result\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 201\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__log_traceback \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m 202\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 203\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception\u001b[38;5;241m.\u001b[39mwith_traceback(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception_tb)\n\u001b[0;32m 204\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_result\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py:277\u001b[0m, in \u001b[0;36mTask.__step\u001b[1;34m(***failed resolving arguments***)\u001b[0m\n\u001b[0;32m 273\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 274\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m exc \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 275\u001b[0m \u001b[38;5;66;03m# We use the `send` method directly, because coroutines\u001b[39;00m\n\u001b[0;32m 276\u001b[0m \u001b[38;5;66;03m# don't have `__iter__` and `__next__` methods.\u001b[39;00m\n\u001b[1;32m--> 277\u001b[0m result \u001b[38;5;241m=\u001b[39m coro\u001b[38;5;241m.\u001b[39msend(\u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 278\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 279\u001b[0m result \u001b[38;5;241m=\u001b[39m coro\u001b[38;5;241m.\u001b[39mthrow(exc)\n", - "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\world.py:651\u001b[0m, in \u001b[0;36mWorld.async_run\u001b[1;34m(self, start_ts, end_ts)\u001b[0m\n\u001b[0;32m 648\u001b[0m pbar \u001b[38;5;241m=\u001b[39m tqdm(total\u001b[38;5;241m=\u001b[39mend_ts \u001b[38;5;241m-\u001b[39m start_ts)\n\u001b[0;32m 650\u001b[0m \u001b[38;5;66;03m# allow registration before first opening\u001b[39;00m\n\u001b[1;32m--> 651\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mclock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_time\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart_ts\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[0;32m 652\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdistributed_role \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mFalse\u001b[39;00m:\n\u001b[0;32m 653\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclock_manager\u001b[38;5;241m.\u001b[39mbroadcast(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclock\u001b[38;5;241m.\u001b[39mtime)\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\clock.py:70\u001b[0m, in \u001b[0;36mExternalClock.set_time\u001b[1;34m(self, t)\u001b[0m\n\u001b[0;32m 66\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 67\u001b[0m \u001b[38;5;124;03mNew time is set\u001b[39;00m\n\u001b[0;32m 68\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 69\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m t \u001b[38;5;241m<\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time:\n\u001b[1;32m---> 70\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTime must be > \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m but is \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mt\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 71\u001b[0m \u001b[38;5;66;03m# set time\u001b[39;00m\n\u001b[0;32m 72\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time \u001b[38;5;241m=\u001b[39m t\n", - "\u001b[1;31mValueError\u001b[0m: Time must be > 1552158000.0 but is 1551398399." - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:assume.markets.base_market:1552161600.0 Market result [(datetime.datetime(2019, 3, 9, 20, 0), datetime.datetime(2019, 3, 9, 21, 0), None)] for market EOM are empty!\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [] + "execution_count": null, + "id": "400495c9", + "metadata": { + "vscode": { + "languageId": "python" } - ], + }, + "outputs": [], "source": [ "log = logging.getLogger(__name__)\n", "\n", @@ -1895,6 +1528,7 @@ }, { "cell_type": "markdown", + "id": "2512bd0b", "metadata": {}, "source": [ "### Result Plotting " @@ -1902,123 +1536,28 @@ }, { "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Collecting matplotlib\n", - " Downloading matplotlib-3.9.2-cp311-cp311-win_amd64.whl.metadata (11 kB)\n", - "Collecting contourpy>=1.0.1 (from matplotlib)\n", - " Downloading contourpy-1.3.0-cp311-cp311-win_amd64.whl.metadata (5.4 kB)\n", - "Collecting cycler>=0.10 (from matplotlib)\n", - " Using cached cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)\n", - "Collecting fonttools>=4.22.0 (from matplotlib)\n", - " Downloading fonttools-4.54.0-cp311-cp311-win_amd64.whl.metadata (166 kB)\n", - " ---------------------------------------- 0.0/166.9 kB ? eta -:--:--\n", - " -- ------------------------------------- 10.2/166.9 kB ? eta -:--:--\n", - " ------------------------------------- 163.8/166.9 kB 2.0 MB/s eta 0:00:01\n", - " -------------------------------------- 166.9/166.9 kB 2.0 MB/s eta 0:00:00\n", - "Collecting kiwisolver>=1.3.1 (from matplotlib)\n", - " Downloading kiwisolver-1.4.7-cp311-cp311-win_amd64.whl.metadata (6.4 kB)\n", - "Requirement already satisfied: numpy>=1.23 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from matplotlib) (1.26.4)\n", - "Requirement already satisfied: packaging>=20.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from matplotlib) (24.1)\n", - "Collecting pillow>=8 (from matplotlib)\n", - " Using cached pillow-10.4.0-cp311-cp311-win_amd64.whl.metadata (9.3 kB)\n", - "Collecting pyparsing>=2.3.1 (from matplotlib)\n", - " Using cached pyparsing-3.1.4-py3-none-any.whl.metadata (5.1 kB)\n", - "Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from matplotlib) (2.9.0)\n", - "Requirement already satisfied: six>=1.5 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n", - "Downloading matplotlib-3.9.2-cp311-cp311-win_amd64.whl (7.8 MB)\n", - " ---------------------------------------- 0.0/7.8 MB ? eta -:--:--\n", - " ---- ----------------------------------- 0.9/7.8 MB 20.0 MB/s eta 0:00:01\n", - " ------------ --------------------------- 2.4/7.8 MB 25.8 MB/s eta 0:00:01\n", - " ------------------ --------------------- 3.6/7.8 MB 25.5 MB/s eta 0:00:01\n", - " ----------------------- ---------------- 4.7/7.8 MB 25.0 MB/s eta 0:00:01\n", - " ----------------------------- ---------- 5.9/7.8 MB 25.0 MB/s eta 0:00:01\n", - " ---------------------------------- ----- 6.7/7.8 MB 25.2 MB/s eta 0:00:01\n", - " --------------------------------------- 7.8/7.8 MB 25.0 MB/s eta 0:00:01\n", - " ---------------------------------------- 7.8/7.8 MB 23.8 MB/s eta 0:00:00\n", - "Downloading contourpy-1.3.0-cp311-cp311-win_amd64.whl (217 kB)\n", - " ---------------------------------------- 0.0/217.2 kB ? eta -:--:--\n", - " --------------------------------------- 217.2/217.2 kB 12.9 MB/s eta 0:00:00\n", - "Using cached cycler-0.12.1-py3-none-any.whl (8.3 kB)\n", - "Downloading fonttools-4.54.0-cp311-cp311-win_amd64.whl (2.2 MB)\n", - " ---------------------------------------- 0.0/2.2 MB ? eta -:--:--\n", - " -------------------------- ------------- 1.5/2.2 MB 31.4 MB/s eta 0:00:01\n", - " ---------------------------------------- 2.2/2.2 MB 34.9 MB/s eta 0:00:00\n", - "Downloading kiwisolver-1.4.7-cp311-cp311-win_amd64.whl (56 kB)\n", - " ---------------------------------------- 0.0/56.0 kB ? eta -:--:--\n", - " ---------------------------------------- 56.0/56.0 kB ? eta 0:00:00\n", - "Using cached pillow-10.4.0-cp311-cp311-win_amd64.whl (2.6 MB)\n", - "Using cached pyparsing-3.1.4-py3-none-any.whl (104 kB)\n", - "Installing collected packages: pyparsing, pillow, kiwisolver, fonttools, cycler, contourpy, matplotlib\n", - "Successfully installed contourpy-1.3.0 cycler-0.12.1 fonttools-4.54.0 kiwisolver-1.4.7 matplotlib-3.9.2 pillow-10.4.0 pyparsing-3.1.4\n" - ] + "execution_count": null, + "id": "832901f6", + "metadata": { + "vscode": { + "languageId": "python" } - ], + }, + "outputs": [], "source": [ "!pip install matplotlib" ] }, { "cell_type": "code", - "execution_count": 12, - "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", - "
identsimulationtotal_costtotal_volumeaverage_cost
0EOMexample_02a_base1.444376e+084.263112e+0933.33
\n", - "
" - ], - "text/plain": [ - " ident simulation total_cost total_volume average_cost\n", - "0 EOM example_02a_base 1.444376e+08 4.263112e+09 33.33" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" + "execution_count": null, + "id": "1b425f0d", + "metadata": { + "vscode": { + "languageId": "python" } - ], + }, + "outputs": [], "source": [ "import os\n", "from functools import partial\n", @@ -2052,20 +1591,14 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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7777rjZv3qyoqKhEdRUsWFAlS5aUxWJRhw4dNGvWLDVp0kTTp09X7dq1NWnSJGs9z2LOnDkKCQnRxIkT1bFjR61Zs8Y6ejh8+HD17NlTmzdv1uTJk63PmTFjhgYNGqS33npL06dPV4sWLfTdd99p0KBBj72OxWJR+/bttWPHDn3xxReaPXu2unTpop07dyZ6HRs3btTmzZs1cOBATZgwQWFhYeratas1MB49elSffvqpMmTIoMmTJ+vjjz9Wz549n/m9+Pvvv633Fo0cOVJff/21QkJC1KxZM505c0ZZs2a1fhnu2LGj9b8XL16swYMHq3r16poxY4bGjRsnFxcXffHFF7py5YpN1z569Khu3LihKlWqPPacTp06qUmTJpIefHFv3ry5Vq9erbZt22rq1KkqXbq0BgwYoOnTp0t6MFWybdu28vLy0pQpUzRx4kRFR0erTZs2unXrlpo0aWL9pcEPP/xg7fthlStXTvCa46eoTp06VT179lTJkiU1efJkde7cWRs3blTLli119+5d6/MvX76srVu3auLEierXr58yZsyY6Br37t3TJ598os2bN6tHjx4KCAjQK6+8orZt21pDna2fn8WLF6tPnz4qWrSoAgIC1K5dOy1cuFBff/11gmsOHjxYrVq10rRp0/TKK6+ob9+++ueffx773leqVElOTk765JNPFBAQoKCgIN2/f1+SVKJECbVp00bp0qV77PPXrFmjnTt3asSIERowYIB27typjz76SAsWLFCfPn301Vdf6eDBg/rqq68e24ctevfurRUrVqhdu3aaM2eO+vXrp1OnTqlXr16yWCw2/czDwsLUuHFj7d27Vz169NCUKVOUI0cOde7cWb/88kuCcydOnCiz2awJEyaod+/e2rJli0aOHPlMrwEAJKZcArCB2WzWuHHjVLFiRY0fP97aXqpUKdWtW1ezZ89W7969rSMiBQoUsP73tWvX1KNHjwSjXa6ururatatOnDhh8/Slxo0ba+HChdq0aZMaNGgg6cHCC3/88Ye++OILSdKff/6pv/76SxMmTFC9evUkSRUqVJCbm5u+/fZbffzxxypYsGCy34f06dNr4sSJcnJyUvny5fXTTz/p6tWrWrZsmTJkyCDpwfTE/fv3S3owKhQfZgcOHChJqlixojJlyqSBAweqdevWj6zn2rVrSpcunfr06aMyZcpI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rM6dO6tdu3by8PDQ+vXrdevWLdWsWVPS/41qrVmzRn5+fjaNrmXKlEnt2rVTYGCgnJ2dVaVKFV28eFHffvutChQooA8++MD2N/3/v5ZFixapdevW6tChg7Jly6a//vpL3333nT766CNrQJWe/vnp2rWrvvrqK/n4+Khq1ao6d+6cJk+erBYtWjxyhU1b9ejRQ7t27VLjxo318ccfy9/fXw4ODjp8+LB1u4n4RVZSSpUqVTRjxgzNmDFDfn5++v3335+4NUrRokXl5OSksWPH6tNPP1VMTIxWrlypP/74Q9L/je497WfeunVr/fLLL2rVqpW6dOmiTJkyadWqVfr77781cuTIZP0SAACSiv/TALBJw4YNNXnyZJ07d06dO3fWN998I39/fy1fvtx6f1LBggVVv359LV68WF988YUyZMigqVOnymKxqHv37urdu7cuX76sRYsWycPDQ3v37k1yHW+99ZZeeeUVXbx4UQ0bNkxwLD6MNWvWTPPmzVO7du20YcMG9ezZ87HLgzs6Omry5MnKnDmzevbsqREjRqhevXrWL/HP6vPPP1ffvn3122+/6bPPPtPYsWNVunRpLVq0KMFiKg8rV66cBg8erAMHDuizzz7TN998o+zZs1uXxE/KtMu8efNq0aJFcnR0VI8ePTR16lT16dPnmb6wSw9+DnPnztXdu3fVs2dPDRo0SL6+vvrxxx+toy/p06dX69attWnTJn322We6f/++pk6dKl9fX/Xt21eff/65Dh48qGnTpunVV19N0ufB2dlZU6dOVf/+/XX06FH16dNH3bt319atW9WpUyctWLDAOmU2Xbp0WrhwoapUqaJvv/1WHTt21L59+zRixAh17dpVkpQ1a1bNmjVLGTJk0IABA9S+fXsdPXpUU6ZM0ZtvvinpwUIfxYsXV9++fa0Latiia9euGjJkiP7++2916NBBAQEBql27tr7//vsk3xvm7u6uxYsXq3Tp0ho7dqw+++wz/frrr+rVq5d1E3VbPz8tWrTQN998o127dql9+/aaN2+ePvvsM/Xu3TtJNf1Xzpw59dNPP+ndd9/V6tWr1alTJ7Vv316rV69WmzZtFBgY+NgFUZKrffv2atKkiWbPnq2OHTsqNDRUI0aMeOz5efLk0fjx43X16lV17NjRugLpwoULZTKZrJ/Fp/3Ms2TJoiVLlqho0aL6+uuv1b17d4WEhGjq1Klq1KhRir5GAHgck4U7cgEAAADAkBihAwAAAACDItABAAAAgEER6AAAAADAoAh0AAAAAGBQBDoAAAAAMCgCHQAAAAAYFIEOAAAAAAzKyd4FPIvQ0Fv2LgEAYGcODiZ5e3soPDxKZjNbqwLAyypLlgz2LsEuGKEDABiag4NJJpNJDg4me5cCAMALR6ADAAAAAIMi0AEAAACAQRHoAAAAAMCgCHQAAAAAYFAEOgAAAAAwKAIdAAAAABgUgQ4AAAAADIpABwAAAAAGRaADAAAAAIMi0AEAAACAQRHoAAAAAMCgCHSpxIgRQ1WxYpnH/rN//94nPv/33zfpxo1wm67VpUs7zZ49I1H7mjWrVLVqed25cyfRsXv37qlmzXe0efNvT+x79uwZ6tKlnU11AAAA4OlSw/fEh23YsFafffaJatSopAYNauvrr4fo6tUrNr+eJ7l06aJ27tyRIn29LJzsXcCL1nTIjRd2rR+Gedl8bvfuX6hDhy6SpM2bf9PSpYv03Xfzrcc9PTM+9rlXroRo8OC+Wrbsl+QXK+ntt6tq/PjR2rlzu6pVq5ng2N9//yVJqlix0jNdAwAAIDXKOtXzhV3rWqfIJJ2fGr4nxpsyZYI2bFirDh26yt+/tG7evKlZs6apS5f2mjlznry8bP/++yjffDNcJUuW0ltvVUiRel8GjNClEunTp5ePT2b5+GRW+vTp5eDgYH3s45NZzs7Oj32uxWJJkRo8PT1Vrtxb+uOP3xMd+/3331Sp0jtydXVLkWsBAADANqnhe6IkHTwYpB9/XKKRI8fr3XffV86cuVS0aDGNGjVecXGx+vHH75/5GilZ78uCQGcQ165d1aBBfVWnTlXVq1dNkyaNVUxMjCSpSZP3rP9et261LBaLFiyYoyZN3lPlym+qQYPamjNnpk3XqVGjtv7++y/du3fP2nbv3l399dd21ahRW5J0/vw59ezZVTVrvqP336+juXO/k9lsTtTXunWr1bjxuwnaHh7GHzFiqKZOnazBg/upWrUK+uijJjp58h/NnDlVtWtX1gcf1NXvv2+yPvfq1Svq06eHqlWroMaN39WcOTMVFxeXhHcRAAAg7XlR3xM3bFijIkWKys+vZIJ2Nzc3ffPNeDVq1NTatm7darVo0VhVq1ZQmzYtFRS033ps3749atWquapWLa8mTRpo1aoVkh58NwwK2q+5c7/jFp4kINAZwP3799WtW0fdvRutgICZ+uqrb/TXX9s1depkSbIOuX/33XxVq1ZDGzas1Y8/LlGfPgO1ZMlKtW7dVnPmzNSJE/889VoVKrwtSdq9e6e1befOHXJzc1OZMmUVERGhzp3bKnPmzJo5c5569eqjFSt+0LJlS5L12pYtWyJ//9KaP3+pPD0zqlu3jrpxI1wzZsxThQpva+zYkTKbzbJYLBowoLe8vLw1d+5i9e8/RL/9tkELF85N1nUBAADSghf5PfH06ZMqUuT1Rx577bXCypw5s6QHYW7ixDH66KNWmjdvscqUKasvv+yu0NBriouL06BBfVWlSjUtXrxcn33WQRMmjNa5c2fVvfsXKlashJo1+0gjR45NoXco7SPQGcCuXX8pLOyaBg0arvz5C6h06TfUs2cf/fTTMt25c0eZMj2Yq5wpk5dcXd3k6/uK+vcfojJlyipbtux6//3G8vHx0blzZ556LTc3N1Wq9I62bt1ibfv9902qWrW6nJyc9NtvG+Tq6qbevQcob958qlSpstq27aDvv1+QrNdWqFARffBBY+XMmUs1atTWvXt39fnnXyhPnrxq3Lipbt2KVHh4uPbt26MrV0LUu/cA5c6dV6VKlVHnzp/rxx+TFyQBAADSghf5PfHWrdvy8Ej/1POWL1+qxo2bqU6d+sqdO686duyqV18toBUrflRU1G1FRt6Ut7ePsmXLrpo162jSpKnW6aROTk5Kly7dE+8LREIv3aIoRnT+/DnlypVbnp7/d7Nu8eIlFBcXp0uXgpU+fYYE55cqVUZHjx7R9OkBunDhnE6ePKHr168/clrko1SvXkvDhw9WbGysYmNjtXPndk2cGChJunDhnAoVKiInp//76BQr5qfr16/r1q1bSX5t2bPnsP63q6urvLy8rffpubq6SpLu34/RhQvnFBl5U7VqvWM932w26969e7p5M0IZM2ZK8rUBAACM7kV+T8yYMaNN3/fOnz+v1q0/S9BWrFhxXbhwTp6eGfX++401evTXmjdvlipUqKR69RokqB9JwwidAbi4uCZqi4szJ/j3w1avXqXPP++kmJh7euedqvr222nKmtXX5uuVLfumHBxM2r9/r/76a7syZfJWsWIl/n8tLonON5vjEvw7nslkekTdCc9xdHRM8NjB4dEfybi4OOXOnVdz535v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/fdq1KiRGjdubG179dVXdfXqVS1YsEBdunRJdUHJYrEkeOzi4qIsWbLYqRoAAJ4NUy4BAMnm4OCgAwcO6ObNmwna27Vrpx9++EFSwimXU6ZMUatWrRQQEKDy5cvL399fgwcPVkhIiNq3by8/Pz/VqFFDf/zxh7WvR03ZfNI0zsuXL6tHjx566623VLRoUb399tsaO3aszGazLl68qGrVqkmSPv74Y02ZMiXRlMu7d+9q0qRJqlatmooXL64GDRpo48aN1v5XrlypGjVqWP9drFgxNWzYUPv27Xu2NxMAgGQg0AEAkq1t27Y6duyY3n77bbVr104zZ87UoUOHlCFDBuXLl++Rz9m7d6/OnTunxYsXa+DAgfrhhx/UuHFj1alTRytXrlT+/PnVt2/fRCNpturYsaNu3bqluXPnasOGDfr00081a9Ys/f7778qWLZuWLVsm6UG4/PTTTxM9v2fPnlq1apUGDRqkX375RdWrV1f37t21adMm6zkhISFaunSpxo4dq59++knp0qV7ppoBAEguAh0AINlq166tJUuWqFq1ajp48KDGjx+vJk2aqHbt2o8dsTKbzRo2bJjy5cunRo0aycvLS2+++abef/995c+fX//73/9048YNhYaGJrmeu3fvqkGDBho+fLgKFy6sXLlyqVWrVsqcObNOnDghR0dH6xTQjBkzysPDI8Hzz5w5o82bN2vIkCGqXLmy8uXLp65du6patWqaPn269bz79+9r2LBhKlmypAoWLKjWrVvr33//TVbNAAA8C+6hAwA8k5IlS6pkyZIym836559/tHXrVi1atEifffaZfvvtt0Tn+/j4KH369NbH7u7uyp07t/Wxm5ubJCkmJibJtbi5uemjjz7Shg0bdOjQIV24cEEnTpxQWFiYzGbzU59/4sQJSVLp0qUTtL/xxhuaMGFCgrb8+fNb/ztDhgySHgQ9AABeJEboAADJcuXKFQ0bNkxXrlyR9OB+utdff10dO3bUvHnzFBUVpT179iR6nrOzc6I2B4ek/XUUGxv7yPY7d+6oWbNmmj59ujw9PfXBBx/o+++/1yuvvJKk/v/LYrHIySnh70BdXFweeR4AAC8SI3QAgGRxcXHRsmXLlC1bNrVr1y7BMU9PT0lS5syZn/k6zs7Oun37tvXx7du3df369Ueeu337dh09elQ7duywXjsiIkLXr1+3hi2TyfTYa8XvZ7dv3z5VqVLF2r53714VKFDgmV8LAAApjUAHAEgWb29vtW3bVt9++62ioqJUu3ZtpU+fXqdPn9bUqVNVrlw5lSlT5pmvU7JkSa1bt061atWSp6enJk+eLEdHx0eeGz8S98svv6hWrVoKCQnRhAkTdP/+fesUTnd3d0nSyZMn9frrryd4fv78+VWlShUNGzZMJpNJefLk0dq1a7V582ZNmjTpmV8LAAApjUAHAEi2zz//XHnz5tWPP/6oxYsX6+7du8qePbvq1Kmj9u3bp8g1evbsqYiICLVu3VoZMmTQp59+qsjIyEeeW6JECfXr10/z5s3TpEmT5Ovrq7p16ypbtmw6fPiwJMnLy0uNGjXSmDFjdOHCBdWoUSNBHxMmTNCECRM0YMAARUZG6rXXXtOUKVMSnQcAQGpgsjDhHwAAAAAMiUVRAAAAAMCgCHQAAAAAYFAEOgAAAAAwKAIdAAAAABgUgQ4AAAAADIpABwAAAAAGRaADAAAAAIMi0AEAAACAQRHoAAAAAMCgCHQAAAAAYFAEOgAAAAAwKAIdAAAAABjU/wPzf4Vh+s/ueAAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" + "execution_count": null, + "id": "b6417202", + "metadata": { + "vscode": { + "languageId": "python" } - ], + }, + "outputs": [], "source": [ "# sort the dataframe to have sho, bo and lo case in the right order\n", "\n", @@ -2116,141 +1649,14 @@ }, { "cell_type": "code", - "execution_count": 18, - "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", - " \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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
timePricesimulationnode
02019-03-01 01:00:00.00000031.146341example_02a_baseNone
12019-03-01 02:00:00.00000031.146341example_02a_baseNone
22019-03-01 03:00:00.00000031.146341example_02a_baseNone
32019-03-01 04:00:00.00000031.146341example_02a_baseNone
42019-03-01 05:00:00.00000031.146341example_02a_baseNone
...............
7152019-03-30 20:00:00.00000031.146341example_02a_baseNone
7162019-03-30 21:00:00.00000031.146341example_02a_baseNone
7172019-03-30 22:00:00.00000031.146341example_02a_baseNone
7182019-03-30 23:00:00.00000012.500000example_02a_baseNone
7192019-03-31 00:00:00.00000012.500000example_02a_baseNone
\n", - "

720 rows × 4 columns

\n", - "
" - ], - "text/plain": [ - " time Price simulation node\n", - "0 2019-03-01 01:00:00.000000 31.146341 example_02a_base None\n", - "1 2019-03-01 02:00:00.000000 31.146341 example_02a_base None\n", - "2 2019-03-01 03:00:00.000000 31.146341 example_02a_base None\n", - "3 2019-03-01 04:00:00.000000 31.146341 example_02a_base None\n", - "4 2019-03-01 05:00:00.000000 31.146341 example_02a_base None\n", - ".. ... ... ... ...\n", - "715 2019-03-30 20:00:00.000000 31.146341 example_02a_base None\n", - "716 2019-03-30 21:00:00.000000 31.146341 example_02a_base None\n", - "717 2019-03-30 22:00:00.000000 31.146341 example_02a_base None\n", - "718 2019-03-30 23:00:00.000000 12.500000 example_02a_base None\n", - "719 2019-03-31 00:00:00.000000 12.500000 example_02a_base None\n", - "\n", - "[720 rows x 4 columns]" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" + "execution_count": null, + "id": "3415447f", + "metadata": { + "vscode": { + "languageId": "python" } - ], + }, + "outputs": [], "source": [ "sql = \"\"\"\n", "SELECT\n", @@ -2272,20 +1678,15 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABJAAAAJuCAYAAADvmPh6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOydd5gcxbX2396gXWlXEQUyWGSQyIiMAJMMGDDgC7422QZMuiZcgwj+CCYYDBgQYDDJNjZgojEYnK4NBmOCSCYjERUQytIqbZj+/pjtnuqeDlU9fapnpff3PPvshO6uM91VdapOnXPKcV3XBSGEEEIIIYQQQgghMTQULQAhhBBCCCGEEEIIqW9oQCKEEEIIIYQQQgghidCARAghhBBCCCGEEEISoQGJEEIIIYQQQgghhCRCAxIhhBBCCCGEEEIISYQGJEIIIYQQQgghhBCSCA1IhBBCCCGEEEIIISQRGpAIIYQQQgghhBBCSCI0IBFCCCGEkFRc1y1aBKusbL+XEEIISYMGJEIIISstRx11FDbaaKPA35gxY7D77rvjkksuwYIFCxLPnzp1KjbaaCM88sgjliSuD7zfnfb34osvYs8998R5551XmKxPPvkk9thjD4wZMwY/+tGPcr9++Ddvuumm2H777XH88cfj73//e+DYqPpyzz33YOedd8bmm2+OW265Be+//z4OOeQQjBkzBvvvv3/u8mblwQcfxE9+8pPU46ZNm4YLLrgA48ePx5gxY7DDDjvg5JNPxksvvRQ47rzzzsOee+4pJW6Ao446CkcddZTROZMmTcKJJ57ov19Z2zohhBCi0lS0AIQQQkiRbLrppvh//+//+e+7urrw9ttv47rrrsO7776L++67D47jRJ47cuRIPPDAA1h77bVtiVsXeL/bY9asWTjttNPw/e9/H7vvvrv/+frrr4+JEyeivb29ACnLXHrppVh33XVx1VVXYdSoUSJlHH744fjmN78JoFx/Zs2ahYcffhgnn3wyLrjgAhx99NEAqutLR0cHfvKTn2D33XfH8ccfjzXXXBNXXnklpk+fjptvvhnDhg0TkTcLt956K8aNG5d4zKxZs3DEEUdg1KhROOuss7Daaqth7ty5ePDBB3HMMcfghhtuwD777AMAOOWUU/z7Uo88+OCDmDJliv9+ZW3rhBBCiAoNSIQQQlZq2tvbseWWWwY+22677bB48WLceOONeOONN6q+9+jXr1/sdysy4d89depUAMDaa69ddT823XRTi5JVM3/+fOy8887YfvvtxcpYddVVq373/vvvj9NPPx1XX3019txzT6y55ppV923BggUolUrYa6+9sN122wEA5s2bhw033BDjx48Xk1eK3/3ud1i4cCGefvrpgNFw7733xje/+c2AAamvGWJW1rZOCCGEqDCEjRBCCIlgzJgxAIDp06cDKIfBnHPOOTjjjDOw5ZZb4rjjjosMa/noo49w2mmnYdy4cdhuu+1w0kknBTwZli9fjquvvtoP8fn617+OP/7xj6nyfPnll5gwYQLGjx+PzTffHIcffjj+9re/+d8ff/zxOPTQQ6vOO+WUU3DQQQf571955RV85zvfwRZbbIFx48bh3HPPxdy5c/3vH3nkEWy66aZ48MEHsfPOO2PcuHGYPHmywZ0Looaweffr6aefximnnIItt9wSO+20E2655RZ0dHTg/PPPxzbbbIOddtoJ11xzTSAHjel9e/HFF7HRRhsBAG6++WZstNFGvqHr+eefx3//939jm222wfbbb4+zzz4bM2bMyP0enHnmmejq6sJDDz0U+P2PPPIIHnnkET+E6/zzz/dD4F566SW8/PLLgXo1ffp0nHXWWRg3bhy22GILHHPMMXjnnXf8crzr3n333dhvv/2wxRZb4OGHHwYAfPDBBzjppJOw9dZbY+utt8app56Kzz//vOo+vfDCCzj++OOxxRZbYOedd8Y111yDnp4e/xlOmzYNjz76aOA+hpk9ezYcx/HP82hsbMTZZ5+NI444wv8sHMK25557YuLEibjiiiuw/fbbY6uttsLZZ5+NxYsX4/bbb8duu+2GbbbZBqeffjrmzZvnn7fRRhvhpptuCpR30003+c8+irlz5+KSSy7xQxvHjRuHU0891f9d5513Hh599FFMmzbNfw5Rbf2TTz7BGWecgZ133hlbbrkljjrqKEyaNKnquTz11FM444wzsNVWW2HcuHG48MILsWTJEv+4t956C8cccwy22WYbbLXVVjj22GPx+uuvx8pPCCGEFAUNSIQQQkgEH3/8MQBgrbXW8j976qmn0NbWhltvvRXf/e53q86ZOXMmjjjiCHzyySe4+OKLcc0112D27Nk45phjMH/+fLiui1NPPRX3338/jjvuONx6663YaqutcOaZZ+Kxxx6LlWX27Nk4/PDD8corr+DMM8/ETTfdhDXWWAOnnnoqHn/8cQDAQQcdhLfffhuffvqpf97ChQvx7LPP4uCDDwYAvPzyyzj22GPR2tqKn/3sZzj//PPx0ksv4eijj8ayZcv883p6enDXXXfh8ssvx4QJE7DeeuvVdC/DXHjhhdhwww1x6623Yscdd8QNN9yAww8/HK2trZg4cSL22Wcf3HHHHXj66acBINN922yzzfwwu8MPPxwPPPAARo4cicceewzHH388VlttNVx33XWYMGECXnvtNRxxxBGYM2dOrvdg9OjRWH311QNGBY/dd98dEydOBAB8//vfxwMPPIAHHngAm266KTbddFM88MAD2H333TF37lwceeSRePvtt3HRRRfh2muvRalUwre//e2AYRIoG06+973v4eqrr8bOO++Mjz/+GEceeSTmzJmDn/zkJ7j88svx+eef41vf+lbgtwLAOeecg2222QY///nPceCBB+KOO+7Agw8+CACYOHEiRowYgfHjx/v3MYrdd98dy5Ytw3/913/hzjvvxDvvvOMbk3beeefUkLW77roLM2bMwPXXX4/vf//7eOKJJ3DYYYfhueeew2WXXYazzjoLf/vb33DjjTfqPYAIXNfFSSedhOeffx7nnHMO7rzzTpx22ml44YUX/FDWU045BePHj8eIESP85xBm8uTJOPTQQzF16lRceOGF+OlPfwrHcXDMMcdU5Xv6f//v/2GNNdbALbfcghNOOAEPPfQQbr31VgDlMMbvfve7GDp0KG666SZcf/31WLp0KU444QQsWrQo8+8khBBCJGAIGyGEkJUa13XR3d3tv1+wYAFeeukl30jheSIBQHNzMy655BL069cPAKo8Me655x50dnbi7rvvxogRIwAAG2+8Mb71rW/hjTfeQFNTE/75z3/i+uuv9xMk77rrrli6dCl++tOf4sADD0RTU7VqvvvuuzF37lz86U9/whprrAEAGD9+PI499lhcffXVOPDAA7HPPvvgkksuwRNPPIFTTz0VAPDnP/8ZPT09OPDAAwEA1157Lb7yla/gtttuQ2NjIwBgiy22wAEHHICHH34Y3/72t/0yTz755MiJcx7suuuu+MEPfgAA2GCDDfDEE09glVVW8ZNc77DDDvjDH/6AV199FV/72tfwr3/9y/i+qaGJXohZqVTCT3/6U+yyyy649tpr/WO33npr7L///rjzzjvxwx/+MNd7MHz4cMyePbvq82HDhmGTTTYBEAz980K/vPfXX3895s+fj/vuu89/9rvtthv2339/3HDDDQFjyte+9jUcdthh/vuzzz4b/fv3xz333ONfd8cdd8Ree+2FO+64A+eee65/7De/+U2/3uy4447461//in/84x848sgjsemmm6Jfv34YNmxYYhjX+PHj8aMf/QjXXXcdrr76av/37LjjjvjWt76FnXfeOfFetbe34/rrr0dTUxN22mknPProo5g5cyYefPBBDBw4EADwz3/+E6+++mridZL48ssv0b9/f5x77rnYdtttAQDbb789PvvsM9/guPbaa2PYsGGBsDXVYwgoG9X69euHX/3qV/693X333XHggQfi6quv9r3OvPvi3esdd9wRzz//PP7xj3/g7LPPxuTJkzFv3jwcffTR2HrrrQGUDY8PPPAAFi9e7P9uQgghpB6gBxIhhJCVmpdffhmbbbaZ/7fTTjvhrLPOwpgxY3DttdcGEmiPHj3aNx5FMWnSJGy55Za+8QgoGy/+/ve/Y/z48XjhhRfgOA7Gjx+P7u5u/2/PPffErFmz8OGHH0Ze96WXXsJWW23lGxA8DjroIMyaNQsfffQRBgwYgL322isQ1vXkk09ixx13xKhRo7B06VK88cYbGD9+vG806+7uxlprrYX11lsPzz//fODannFDgq222sp/PXz4cADA5ptv7n/mOA4GDx7se2BkvW9hPv74Y8yaNcs3qHmsvfba2Gqrrao8R/K4B67rxiZh1+GFF17AJptsglGjRvm/u6GhAbvtthv+9a9/BY4Ny/vvf/8b48aNQ2trq39ue3s7tt1226pz1WcClOtt2Giiw7e//W0899xzmDhxIr797W9jtdVWw1/+8hccf/zxuOqqqxLP3XzzzQOGwOHDh+MrX/lKwIgyZMiQmjxzRo0ahV/96lfYZpttMHXqVDz//PP49a9/jVdffRWdnZ3a13nppZewxx57BHI9NTU14YADDsBbb72FxYsX+5+HjW7qvd1ggw0wbNgwnHzyyfjRj36Ev/zlLxg+fDj+93//F6uuumrm30kIIYRIQA8kQgghKzWbbbYZLrnkEgBlw0VLSwtWW221yJ3D2traEq81f/58rLnmmonfu67rexqE+fLLLyONFgsWLAiE0nl4xpeFCxcCAA4++GA8/vjjeO+99zB8+HC8+OKLuOKKK/xjSqUSfvGLX+AXv/hF1bVaWloC7wcMGBD7O2ol6t4mlZf1vkVdB6jcN5Xhw4cH8gqlyaTLF198gQ033DDz+fPnz8enn36KzTbbLPL7pUuX+q/D8s6fPx9//OMfI3NFhXd4a21tDbxvaGgI5KAyoX///th7772x9957AwA+/fRTnH/++bj77rtx6KGHxt4P03qRlccffxzXXXcdZsyYgSFDhmCTTTap+v1pLFiwILYeua6Ljo4O/7P+/fsHjlHvbVtbG37zm9/g1ltvxVNPPYUHHngAra2tOPjgg3HhhRcmGqwJIYQQ29CARAghZKWmra0NY8eOzeVaAwcODCSk9njhhRew5pprYuDAgRgwYAB+9atfRZ6/zjrrRH4+ePBgzJo1q+pz77OhQ4cCKIfHjBgxAk899RRGjBiBlpYWf9ertrY2OI6DY489FgcccEDVtcKT3Hoi630LM2TIEACIDCmbNWuWfx/zYvLkyZg1a1YgNNCUgQMHYty4cYHQOpUkA8PAgQOx00474bjjjqv6LipUshZ6enqw995745BDDsEZZ5wR+G6dddbBhRdeiEMOOQSTJ0+uyaAWV7ZKkufUK6+8gnPPPRdHHXUUTjjhBIwaNQoAcPXVV0fmqopj8ODBsfUIKLfJL7/8Uutao0eP9pOWv/nmm/j973+P++67D2uvvXZkrjVCCCGkKBjCRgghhOTEtttuizfeeCNgRJozZw6++93v4plnnsG4ceOwZMkSuK6LsWPH+n8ffPABbr755kAuJpXtttsOr732GqZNmxb4/PHHH8eIESN8A0pjYyO+/vWv4+9//zuefvpp7LXXXr4HR3t7OzbddFN89NFHgbI32GAD3HTTTXjxxReF7krtZL1vYb7yla9gxIgReOKJJwKff/7553j99ddjPZyycuONN6K1tRXf+MY3Ml9j3Lhx+Pjjj/GVr3wl8Nt///vf46GHHvJzWcWdO3nyZGyyySb+eWPGjME999yDv/zlL0ZyNDQkDxkbGxsxcuRIPPzww4Fd0jy8pPR5G4/a29sxc+bMwGdJOZJee+01lEolnH766b7xqKenxw/pK5VKANJ/73bbbYe///3vAU+jnp4ePPnkkxg7dqy259DTTz+NHXbYAbNmzUJjYyO22morXHzxxRg0aJC/AyQhhBBSL9ADiRBCCMmJY489Fo899hi++93v4qSTTkJzczNuvfVWrLrqqvj617+OgQMHYrvttsMpp5yCU045Beuttx7efPNN3Hjjjdh1112rwoo8jjvuODz++OM49thjcdppp2HIkCF47LHH8O9//xtXXHFFYLJ78MEH46677kJDQ0NVqNpZZ52FE088EWeffTYOOuggf6exN954A6eccorovamF8ePHZ7pvYRoaGnDWWWdhwoQJ/j2YN28eJk6ciMGDB0d66ujwxRdf+Nuud3d3Y+bMmXj00Ufx3HPP4dJLL60pl82xxx6L3//+9zj22GNx/PHHY+jQofjjH/+I3/3ud5gwYULiuaeccgqOPPJInHTSSfjWt76FlpYWPPDAA/jrX/9qvJPZoEGD8M477+Cll17C5ptvHhnydeGFF+Koo47CoYceiqOPPhqbbLIJSqUSXn75Zdxzzz048sgjsf766xuVm8buu++OJ598EltssQXWWWcdPPLII4GdCMN4ubYuvfRSHHbYYViwYAF+85vf4L333gNQ9l5qb2/HoEGDMHv2bDzzzDOR4ZGnnXYann32WRx99NE48cQT0dzcjHvvvReff/457rjjDm35t956a5RKJZx66qk48cQT0dbWhqeeegqLFi3yvQcJIYSQeoEGJEIIISQnVlttNfz2t7/FNddcg/POOw/9+vXD9ttvj+uvvx6DBw8GANx+++244YYbcNttt2HOnDkYNWoUjjvuOH8HrChGjBiB++67D9deey1+/OMfo6urCxtvvDFuueUWfPWrXw0cu/HGG2PDDTfEvHnzsOOOOwa+22WXXXDnnXdi4sSJOOOMM9Dc3IzNNtsMd999d+LuWkXT0NCQ6b5Fceihh6KtrQ233XYbTj31VLS3t2PXXXfFWWedFUh+bsJDDz3k77rV0NCAIUOGYIsttsDdd99d9QxMGTVqFO6//35ce+21uPjii7F8+XKsu+66uPzyy3H44YcnnrvxxhvjN7/5Da6//nr88Ic/hOu62HDDDXHzzTdX1Zs0jj/+eFxxxRU44YQTcPfdd/s7mKmMGTMGjz32GG677Tbce++9vlfN+uuvj/PPPz9V3ixMmDAB3d3d+MlPfoKmpibsv//+OPvss3HhhRdGHr/99tvjRz/6Ee6++248/fTTGD58OLbffntMnDgRp556KiZNmoTx48fj0EMP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vvlI0wOJEGIBjbmqSwsSIYWgFzIjnDcwZJji2LmaJcu6MWPuYqtlrjasDQNa9abkruviggt+iPXX3wB33/0bzJ49G9dccwUaGhpw+uln49vfPgwPPng/9ttvf9x88w045ZT/wahRq+K11ybhZz+7Bj/60WXYcMON8eGH7+Hiiy/E2LFbYddd9wAAPPjgfTjjjLNx4omn4IorLsEZZ3wfe+zxVdx22z148MH7cc01V2D33ff0Zbn77ttxySVXoqenG5dd9iP0798fJ510akDeOXNm44c//AFOPPEUbL/9Tnj77f/g8ssvwdChw7DFFlv5VdILu1ZbyZLFHejsXI7hw0f4nzU1NWHQoMH48ssvMWbM5th++x3970qlEh555HfYZpvtAKDqN7/33ju47LIfYeQW/TFg1BitQepjjz2Ec8+9EOuttz5uuOFa/PjHP8LEibejo6MDP/zhD3DEEd/GRRdditmzZ+GKKy7FvffejR/84H/x8MMP4LXXXsV1192M1tZW/PSnV+LGG6/DZZddhQ8//ACXX34xzjlnAsaOHYPXX38ZZ555On75y/uw5ppradWDoslkQPrTn/6EVVZZBW+99RbeeuutwHeO49CARHIn3gPJtyARQmzhKfyUw1w2T0KsEQiXibXuehNUtkpCpAk4IBl4IEk1z6ok2uwGAixZ1o0f3vovLFke7UkjxYCWJlz9/Z20jEiTJr2ML76YgdtvvwcNDQ1Ye+11ceqpP8AVV1yCY4/9Lk477UzccMNP8dprr2CDDTbCwQcfCgDo338AzjvvIowfXzYArbXWmvjd736Ljz/+yDcgbbTRJvjGNw4HAOy993648cZr8YMfnIOWllYcfvgReOyxhzB37lxfllNOOQNbbLElAOC73z0Zt956E0488ZSAvI888iC23XYcDjvsCADAmmuuhQ8+eB+/+91vywak8A9U2knn8uUAgObm5sAhzc3N6OrqrLo3t9xyI95//33ccccvI3/zaqutjvvv/w2+XDQTA0aN0TLpfuMb38Tee+8HADjvvIvwzW8ehE8//QTt7e045pjv4sgjvw3HcbD66mtg9933xLvvvg0AmDFjBlpaWrDaaqth0KDBuOCCi7FgwQIAwP33/xpf//oh2Gef/dDU1IDNN98Ezz//Ah599CGcfvqZGlIVj5EB6YsvvsBf/vIX3/to1VVXlZKLEC0XXi6mEmKfhE0zoo/nKJUQeQx0JpUmIfKYNjPpMS1Vcd/n008/xsKFC7DvvuP9z0qlEpYvX44FC+bja187EH/84x/w4osv4L77HvGP2XjjTdDS0oI777wNH388BR99NAWff/4ZttlmnH/M6quv4b9uaWnB0KHD0NLS6r8HEDDcjB27pXL9TTF//jzMnz+/St7nn/8n9t57V/+z7u5urLXW2uU3vgdS739lYNncu1lXV1dX4JpdXV3+Lmwet9xyIx588D5ccskVGD16/cjfPGXKZEyd+jmGb7hqb5npg9hNNtnMf73aaqtj0KDB+OSTjzF+/B742tcOxAMP/AYffvgBPvnkY0ye/AHGjt0CAHDQQd/AX//6Jxx00L7YaqttsNtue2D//Q8EAHzyySf46KO/4vHHy8/HcRx0dnZi3LgdqwWoU7QNSK+88gq++93vYtmyZQCAAQMG4MYbb8Quu+wiJhwhHqlJtKkVCbGIF7OerHx1lDMhJB+CHkgxB9ErkBCLpOfyDCBu4Q2HsBGVAa1lT6B6DmHr6enB2muvi6uuurbqu7a2dixZsgTTpk0FUM495BmFXnzxBUyYcA72229/7LDDTvjud0/C9ddfHTi/sbEx8L6hITlVclNTReZSqaf3nGCt6unpwT77fA1HH3185LlOKAeS2k4GDx6Mfv1aMGfObKyzzroAysanhQsXYJVVhvvHXX/91XjssYdx0UWXYvfdv+p/Hv7Nxx13Iq699irMWJ74swI0NgbvQalUQnNzM2bN+hLf/e5R2GijTbDtttvjoIO+gX/96zm8/fZ/AACjR6+Hhx76A/71r+fwr3/9E7fdNhF/+cvTuPnmX6Cnpwff/vYx2G+/A9DY6GDw4AFYsGAJmpr6zu722gakG264ATvuuCMuueQSNDY24tJLL8VVV12FJ554QlI+QgAkbUlMCLGNbg5tQkgxpNiPuOZCiGV0ciBxa/HiGdDahPVWH1y0GLGstdY6mDnzCwwZMhTt7e0AgJdf/jf++McncOGFl+AXv7gVgwcPxlFHHYeJE6/HDjvsjKFDh+IPf3gUBxxwEM4++9zeK5Xw2WefBRJUm/Lhh+9jq622AQC89967GD58BAYPHlIl71tvvRnI7XPfffeiq6szaFSKmOc1NDRgk002xZtvvo6tt94WAPD22/9BY2MT1l9/QwDAXXfdjsceexgXX3w59thjr8D54d/c3d2NadOmoqE3p5KOUXfKlMl+CNznn3+Gjo5FWHvtdfDss3/HwIGDcfXVP/OPfeihB/zXTz31BPr164evfnUf7LnnXnjrrf/g5JOPw7x5c7H22utgxoxpWHPNtdDU1IChQ9tw6aWXY80118bXv35IulB1gPYubO+88w7OPvtsjBw5EqussgrOP/98TJkyBR0dHeknE5IBkwEux8KE2MO0vXGySog8Zu2MjZIQabLqPimdGb4uw8v7HuPG7YBVV10Vl156EaZMmYw33ngNV199BVpbW/Hhh+/jkUd+h7POOhcHH3woVlttDdx003UAgEGDBuOtt97AlCmT8dFHU3DZZf8Ps2bNQmdnV0qJ8dxww7V477138PLLL+KOO36OQw/9ZtUxhx76Tbz33ru4/fZb8Pnnn+HPf34at99+M1ZddbXyAQlV0AHwjW8cjvvu+zWeffYfePfdt/HTn16Jgw46BK2trfjkk4/xy1/eie9851hsvvmWmDNntv8X9ZuvuOISzJkzG26pnONKx1z7wAO/wTPP/B8+/PADXHHFJdh5512x5pprYdCgwZg58wu88spLmDZtKu699x4888z/obOzHOK3eHEHbrjhWrzyykuYPn0a/vKXpzBy5CgMHjwE//Vf/42//vXPePDB+zF16ue45557cP/9v6mE9fUBtD2QlixZgiFDhvjvR40ahebmZixYsMC3gBKSJ1pqjduEE2IfwyTahBDbxHjtUmcSUgwGIWx2AthIX6SxsRFXXXUdfvaza3Diicegf/8B2GOPvfD975+GU0/9HvbZ52t+Hp6zzvohTj75eOy33wE4/viTcMUVF+Okk45FW1s7dtppF3zrW9/CBx+8l1mWr351b/zv//4ArlvCIYccju9859iqY1ZddTX85CfX4dZbb8J99/0aw4ePxGmn/QD77PM1AMquvt7/QDtxsNde+2LGjBm45por0NXVifHj98T3v38GAOCf/3wGPT09+OUv78Qvf3lnoNznnnul6jfvuOPOOOSQw/HXf70ZVVgkRx75HfziF7di+vTp2GGHnfDDH14AANhzz73xxhuv4cILz4XjONhkk01x2mk/wJ133obOzk4ceuh/4csvv8Rll/0IixYtxEYbbYKrrroWjY2NGDNmLC666FLcddftuOWWG7D22mvj0kuvqMkbzDba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MBMnTjSnnHKK9fhVV11l9t9/f/PEE0+YV1991RxzzDFm1qxZqceyatUqM23aNPPTn/7U9PT0mFmzZpn999/frFq1yhhjzA033GAOPvhgM2/ePLNgwQJz2mmnmTPOOMP5b+vP8ZdNmdvChg0bzIQJE8y8efPMhx9+GP9Zv359qz/OAa/M7eHJJ580u+++u7nzzjtNT0+P+Yd/+AdzzDHHmN7e3lZ/nANeO7eHqvfff9/MmDHDjBs3znr8oYceMlOmTDFPPPGEeeedd8z3vvc9M2PGDFOpVPL++NpKmdvCxx9/bI0Rd955p5kyZYr505/+lPfH13bauT18+OGHZt999zVXX321eeedd8x//ud/mgkTJpjHH3881/GXUZnbA3NJW5nbQmjzyIH0u6havny5mTZtWsM43Or7PfLII2b33Xc3F154YZ4fmYUAUp2enh4zbtw4s2TJkvixRx55xBxwwAHm97//vZk0aZL1CzjttNPMddddF3//r//6r2avvfYyRx11lNWgKpWKmTx5srn//vvjx1566SWz5557mpUrVzY9lvvuu88ccsgh8aS8UqmYww47zDzwwAPxZz366KPx6x977DGz9957p/7b+nP8ZVTmtrBo0SKz2267mTVr1rh/SCVS5vZw9tlnm+9///vxc6tXrzZTp041Tz75ZOp7trt2bg/GGPM///M/Zr/99jNHH310w2Rlzpw55p577om/f+ONN8y4cePMRx995HzPdlXmtpD0ySefmP3228/ce++9zvdrd+3cHu666y7zpS99yXrskksuMd/73vcyj7+sytwemEvaytwWQptHDqTfRdXFF19sTjrppMwAUtb7rV+/3lx66aVmwoQJ5vDDD28pgMQStjqjR4+WW2+9Vbbddlvr8ZUrV8rLL78se+yxhwwdOjR+fMqUKfLSSy/F3z/99NNy2223yeGHH279/b/85S+yatUqmThxYvzY+PHjZf369alpZS+//LJMmTJFoigSEZEoimSfffaJP+/cc8+Vww47TEREPv74Y7nvvvtk6tSpqf+2/hx/GZW5LfT09MgOO+wggwcPTn2Psilze3jvvfespStDhgyRnXbayfr3lU07twcRkSeeeEK+853vyMUXX9zw3MyZM+VrX/uaiIisWLFC7rrrLtl1111lm222cb5nuypzW0i67bbbZPTo0XL88cc7X9fu2rk9VJd51Fu5cmXm8ZdVmdsDc0lbmdtCaPPIgfS7EBGZN2+ezJs3T84555zMf1vW+3366acyf/58uffee2Xy5MmZ79cMAaQ6I0aMkOnTp8ffVyoVmTNnjuy3336yZMkS2W677azXjxo1Sj744IP4+7vvvrtpB9tqq61kiy22kMWLF8eP/fnPfxYRkaVLlzY9ljyfJyJy3XXXyf777y8vvPCCcx1jf46/jMrcFhYuXChbbLGFfOMb35Bp06bJKaecIq+88krq+5VBmdvDqFGj5MMPP7T+7YsXL049vjJo5/YgInL55ZfLSSed5HzN/fffL/vuu688+OCDcumll8aTlbKhLYisXr1a5syZI+ecc450dJR7atnO7WHHHXeUSZMmxd9//PHH8l//9V/yhS98IfP4y6rM7YG5pK3MbSG0eeRA+l2sW7dOLrnkErn00ktlyJAhmf+2rPcbMWKE3HPPPbLbbrtlvleaco/yOcyePVtef/11+e53vyurV6+WQYMGWc8PGjRI1q1bl/k+XV1dcthhh8k111wjH3zwgaxYsUKuvPJK6erqkvXr1zf9O3k/75hjjpH7779fvvCFL8iZZ55p3Qlq5f3QXJnawjvvvCPLly+Xr371q3LLLbfILrvsIqeddlp8EkS52sMRRxwhd999t7z44ouyfv16uemmm+Tjjz9OPb4yaqf2kNf+++8vDz74oJx44onyd3/3d/Lee+/16/3aRRnbwn//93/L0KFDyTppol3bw5o1a+Tb3/62bLvttnFGIrKVqT0wl3QrU1sIfR4Z8u/i5z//uey5555ywAEH5Pq3aFzvE0BymD17ttxxxx0ye/ZsGTdunAwePLjhh79u3bpc0UARkR/96EcybNgw+eIXvygHHnig7LPPPrLVVlvJ8OHD5aabbpLJkyfHf/73f/839+eNGTNGJkyYIP/8z/8sa9askUcffVQefvhh6/0efvjhfh9/mZWtLcyaNUsee+wxOfTQQ2XPPfeUH//4x7LjjjvKQw891NcfXVsqW3s48cQT5cgjj5SZM2fKxIkTZcGCBXLggQfK8OHD+/qja0vt1h7y+sxnPiN77LGH/OhHP5IddthB5s6dm/vvtquytoXf/OY3csQRR0hXV1fuv1MG7doeVq1aJd/4xjdk0aJFcvPNN0t3d3eLP6FyKVt7YC6ZrmxtIeR5ZMi/i7feekvuvfde+eEPf9j0s/rzu+0PRvoUs2bNkrvvvltmz54tM2bMEBGR7bffXnp6eqzXffTRRw1pYmlGjRol//7v/y7Lli2TwYMHizFGrr76avnsZz8rkydPli9/+cvxa7fffnvZfvvtG7ZMTH7e448/LnvssYdsv/32IiIyePBg+au/+itZunSpfO1rX7PWX44aNUref//9fh1/WZWxLXR1dVkn9SiKZOzYsVZKZlmVsT10dnbKP/7jP8r3v/99Wbt2rYwcOVJOOOEEmTZtWq5/Xztrx/aQ5ZlnnpHttttOxo4dKyK180OZlzSKlLMtiGycmM6bN0/OPvvsXK8vi3ZtDytXrpSzzjpL3n33Xbnjjjtk55137tsPpqTK2B6YSzZXxrYQ6jwy9N/Fo48+KsuXL4/rUfX29oqIyOTJk+Wyyy6Tk046qc+/282BDKQmrr/+ernnnnvkmmuukSOPPDJ+fOLEifLaa6/JmjVr4seef/55qxO5XHDBBfLUU0/JyJEjpbu7W373u9/JqFGj5HOf+5yMHDlSxowZE/8ZMmSITJw4UV588UUxxoiIiDFGXnjhhfjzrrzySuuO78qVK2XRokWyyy67yPDhw633Gz58eL+Pv4zK2hZOPfVUuf766+PnKpWKzJ8/P75gLKuytofbb79dbrnlFunu7paRI0fKhx9+KG+88Ubp61y0a3vI8otf/EJuv/32+Pve3l558803ZZdddsn172tHZW0LIiLz58+XDRs2WAVSy65d20OlUpFzzz1X/vSnP8mdd94pu+6662b4abW/srYH5pKNytoWQpxHDoTfxSmnnCK//vWvZe7cuTJ37ly5/PLLRURk7ty5csghh7T0u90cCCDVWbhwodxwww3y9a9/XaZMmSJLliyJ/0ydOlV22GEH+cEPfiALFiyQW265RV555RU54YQTcr33yJEj5dprr5W33npLnn32WZk1a5acffbZqQUnv/SlL8knn3wiP/nJT6Snp0d+8pOfyOrVq+NI48yZM+W2226T3/3ud7JgwQK54IILZKeddpIDDzyw6fv19/jLpsxt4ZBDDpHbb79dfvvb38rbb78t//RP/yQrVqyQ4447roWfZHsoc3vYcccd5Re/+IU888wzsmDBAjnvvPPki1/8oowbN66Fn2R7aOf2kOXkk0+WX/3qV/LII4/I22+/LT/+8Y9lzZo1cuyxx7b0fgNdmduCiMiCBQtkxx13bKi5UFbt3B7uv/9+efbZZ+Xyyy+XESNGxP+uZcuWtfSzKoMytwfmkrYyt4XQ5pED5XdRHyCqZoS5bvJk/W43CwPLzTffbMaNG9f0jzHGLFq0yMycOdPstdde5sgjjzRPP/100/e57rrrzCmnnGI9tnLlSnPBBReYKVOmmOnTp5ubb74583hefvllc+yxx5oJEyaYE044wbz22mvxc729vebmm282Bx10kNl7773NN7/5TfPBBx84368/x182ZW4LlUrF3Hjjjeaggw4ye+21l5k5c6aZP39+5jG2szK3B2OMuemmm8y0adPMvvvuay666CKzYsWKzGNsZ+3eHqqeeeaZ+N+UdN9995nDDz/cTJgwwZx66qmmp6cn1/u1o7K3hZtvvtmceOKJud6jDNq5PZx55plN/13N5ovMIzcqc3tgLmkrc1swJqx55ED6XSSljcOtvt+FF15oLrzwwsz3qxcZsym/CQAAAAAAAGiCJWwAAAAAAABwIoAEAAAAAAAAJwJIAAAAAAAAcCKABAAAAAAAACcCSAAAAAAAAHAigAQAAAAAAAAnAkgAAAAAAABwIoAEAAAAAAAApy7fBwAAABCCiy66SB588MHM182fP1/haAAAAMISGWOM74MAAADwbcWKFbJmzZr4+wMOOEB++MMfyhFHHCEiIsYYiaJIRo8e7esQAQAAvCEDCQAAQES23HJL2XLLLRseI2AEAABADSQAAIBcfvWrX8n48ePj78ePHy+//OUv5eSTT5YJEybIl7/8ZXnhhRfkl7/8pRx00EGyzz77yN///d9bWU0vvPCCzJw5U/bee2856KCD5LLLLpOVK1f6+OcAAAD0CQEkAACAFl177bVy1llnyUMPPSRbbrmlnHPOOfKb3/xGbrnlFrniiivksccek/vuu09ERN58800544wzZPr06fLwww/LVVddJa+99pqceeaZQkUBAAAQOgJIAAAALTr++OPlkEMOkbFjx8oxxxwjy5cvl0svvVTGjRsnM2bMkN13310WLFggIiK33XabTJs2Tc455xzZeeedZd9995Wrr75aXn75ZZk3b57nfwkAAIAbNZAAAABaNGbMmPjr7u5uERHZaaed4seGDBki69atExGR119/Xf74xz/K5MmTG95n4cKF8vnPf77gowUAAGgdASQAAIAWdXU1TqU6OponeFcqFTn66KPlnHPOaXhum2222ezHBgAAsDmxhA0AAEDBrrvuKj09PTJmzJj4z4YNG+SKK66QP//5z74PDwAAwIkAEgAAgIIzzzxTXn/9dbnssstk4cKF8uKLL8r5558vixYtkp133tn34QEAADgRQAIAAFAwadIkufXWW+WNN96Q4447Tr75zW/KX//1X8vtt98ugwYN8n14AAAATpFh31gAAAAAAAA4kIEEAAAAAAAAJwJIAAAAAAAAcCKABAAAAAAAACcCSAAAAAAAAHAigAQAAAAAAAAnAkgAAAAAAABwIoAEAAAAAAAAJwJIAAAAAAAAcCKABAAAAAAAACcCSAAAAAAAAHAigAQAAAAAAACn/w/ya/W1l3exQgAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" + "execution_count": null, + "id": "6a884224", + "metadata": { + "lines_to_next_cell": 0, + "vscode": { + "languageId": "python" } - ], + }, + "outputs": [], "source": [ "# Convert the 'time' column to datetime\n", "df[\"time\"] = pd.to_datetime(df[\"time\"])\n", @@ -2307,38 +1708,24 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "id": "1698b545", + "metadata": { + "lines_to_next_cell": 2, + "vscode": { + "languageId": "python" + } + }, "outputs": [], "source": [] } ], "metadata": { - "colab": { - "include_colab_link": true, - "provenance": [], - "toc_visible": true - }, "kernelspec": { - "display_name": "assume-framework", + "display_name": "ASSUME-framework", "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.9" - }, - "nbsphinx": { - "execute": "never" } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 5 } From 139f1fac6560cc3cd8956bdba2d0a674cf2a9706 Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Sat, 28 Sep 2024 16:21:57 +0200 Subject: [PATCH 09/27] - adjust seup of algo tut to match new format --- ...forcement_learning_algorithm_example.ipynb | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb b/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb index 5631a93f..4b83906c 100644 --- a/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb +++ b/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb @@ -68,7 +68,7 @@ } ], "source": [ - "!pip install assume-framework" + "!pip install assume-framework[Learning]" ] }, { @@ -105,7 +105,7 @@ } ], "source": [ - "!git clone https://github.com/assume-framework/assume.git" + "!git clone https://github.com/assume-framework/assume.git assume-repo" ] }, { @@ -538,7 +538,33 @@ } ], "source": [ - "!cd assume && assume -s example_01b -db \"sqlite:///./examples/local_db/assume_db_example_01b.db\"" + "!cd assume-repo && assume -s example_01b -db \"sqlite:///./examples/local_db/assume_db_example_01b.db\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Select input files path**:\n", + "\n", + "We also need to differentiate between the input file paths when using this tutorial in Google Colab and a local environment. The code snippets will include both options for your convenience." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import importlib.util\n", + "\n", + "# Check if 'google.colab' is available\n", + "IN_COLAB = importlib.util.find_spec(\"google.colab\") is not None\n", + "\n", + "colab_inputs_path = \"assume-repo/examples/inputs\"\n", + "local_inputs_path = \"../inputs\"\n", + "\n", + "inputs_path = colab_inputs_path if IN_COLAB else local_inputs_path" ] }, { @@ -609,7 +635,7 @@ "\n", "**Evaluation Loop**: Nested within the training loop, the evaluation loop periodically assesses the performance of the learned policies. Based on average rewards, the best-performing policies are saved, and the function determines if further training is necessary.\n", "\n", - "**Terminate Learning and Save Policies**: At the end of the training phase, the function saves the final version of the learned policies, ensuring that the results are stored for future use.\n", + "**Terminate Learning**: At the end of the training phase, the function saves the final version of the learned policies, ensuring that the results are stored for future use.\n", "\n", "**Final Evaluation Run**: A final evaluation run is conducted using the best policies from the training phase, providing a benchmark for overall performance.\n", "\n", @@ -715,7 +741,6 @@ " range(1, world.learning_role.training_episodes + 1),\n", " desc=\"Training Episodes\",\n", " ):\n", - " # TODO normally, loading twice should not create issues, somehow a scheduling issue is raised currently\n", " if episode != 1:\n", " setup_world(\n", " world=world,\n", From 91488256b10718bfa9ab8c07102ccfefaba0b86d Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Sat, 28 Sep 2024 16:25:56 +0200 Subject: [PATCH 10/27] - spelling proof read algo tut --- ...forcement_learning_algorithm_example.ipynb | 710 ++---------------- 1 file changed, 59 insertions(+), 651 deletions(-) diff --git a/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb b/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb index 4b83906c..8fb45fe3 100644 --- a/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb +++ b/examples/notebooks/04_reinforcement_learning_algorithm_example.ipynb @@ -2,31 +2,34 @@ "cells": [ { "cell_type": "markdown", + "id": "d3dfcafd", "metadata": { "id": "4JeBorbE6FYr" }, "source": [ "# 4. RL Algorithm tutorial\n", "\n", - "This tutorial will introduce users into the MATD3 implementation in ASSUME and hence how we use reinforcement leanring (RL). The main objective of this tutorial is to ensure participants grasp the steps required to equip ASSUME with a RL alogorithm. It ,therefore, start one level deeper, than the RL_application example and the knowledge from this tutorial is not required, if the already perconfigured algorithm in Assume should be used. The algorithm explained here is usable as a plug and play solution in the framework. The following coding snippets will highlight the key in the algorithm class and will explain the interactions with the learning role and other classes along the way. \n", + "This tutorial will introduce users into the MATD3 implementation in ASSUME and hence how we use reinforcement learning (RL). The main objective of this tutorial is to ensure participants grasp the steps required to equip ASSUME with a RL algorithm. It ,therefore, start one level deeper, than the RL_application example and the knowledge from this tutorial is not required, if the already perconfigured algorithm in Assume should be used. The algorithm explained here is usable as a plug and play solution in the framework. The following coding snippets will highlight the key in the algorithm class and will explain the interactions with the learning role and other classes along the way. \n", "\n", - "The outline of this tutorial is as follows. We will start with an introduction to the changed simualtion flow when we use reinforcement learning (1. From one simulation year to learning episodes). If you need a refresher on RL in general, please visit our readthedocs (https://assume.readthedocs.io/en/latest/). Afterwards, we dive into the tasks and reason behind a learning role (2. What role has a learning role) and then dive into the characteristics of the algorithm (3. The MATD3).\n", + "The outline of this tutorial is as follows. We will start with an introduction to the changed simulation flow when we use reinforcement learning (1. From one simulation year to learning episodes). If you need a refresher on RL in general, please visit our readthedocs (https://assume.readthedocs.io/en/latest/). Afterwards, we dive into the tasks and reason behind a learning role (2. What role has a learning role) and then dive into the characteristics of the algorithm (3. The MATD3).\n", "\n", "**Please Note:** The tutorial does not cover coding tasks. It simply provides an overview and explanation of the implementation of reinforcement learning and the flow for those who would like to modify the underlying learning algorithm.\n" ] }, { "cell_type": "markdown", + "id": "16b738b3", "metadata": {}, "source": [ "## 0. Install Assume\n", "\n", - "Frist we need to install Assume in this Colab. Here we just install the ASSUME core package via pip. In general the instructions for an installation can be found here: https://assume.readthedocs.io/en/latest/installation.html. All the required steps are executed here and since we are working in colab the generation of a venv is not necessary. " + "First we need to install Assume in this Colab. Here we just install the ASSUME core package via pip. In general the instructions for an installation can be found here: https://assume.readthedocs.io/en/latest/installation.html. All the required steps are executed here and since we are working in colab the generation of a venv is not necessary. " ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, + "id": "d2e2b8fe", "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -37,42 +40,14 @@ "languageId": "shellscript" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: assume-framework in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (0.3.7)\n", - "Requirement already satisfied: argcomplete>=3.1.4 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (3.4.0)\n", - "Requirement already satisfied: nest-asyncio>=1.5.6 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (1.6.0)\n", - "Requirement already satisfied: mango-agents-assume>=1.1.1-8 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (1.1.4.post2)\n", - "Requirement already satisfied: numpy<2 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (1.26.4)\n", - "Requirement already satisfied: tqdm>=4.64.1 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (4.66.4)\n", - "Requirement already satisfied: python-dateutil>=2.8.2 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (2.9.0)\n", - "Requirement already satisfied: sqlalchemy>=2.0.9 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (2.0.30)\n", - "Requirement already satisfied: pandas>=2.0.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (2.2.2)\n", - "Requirement already satisfied: psycopg2-binary>=2.9.5 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (2.9.9)\n", - "Requirement already satisfied: pyyaml>=6.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (6.0.1)\n", - "Requirement already satisfied: pyyaml-include>=1.3.1 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from assume-framework) (1.4.1)\n", - "Requirement already satisfied: paho-mqtt>=1.5.1 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from mango-agents-assume>=1.1.1-8->assume-framework) (2.1.0)\n", - "Requirement already satisfied: dill>=0.3.6 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from mango-agents-assume>=1.1.1-8->assume-framework) (0.3.8)\n", - "Requirement already satisfied: msgspec>=0.14.2 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from mango-agents-assume>=1.1.1-8->assume-framework) (0.18.6)\n", - "Requirement already satisfied: protobuf>=3.20.3 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from mango-agents-assume>=1.1.1-8->assume-framework) (5.27.1)\n", - "Requirement already satisfied: pytz>=2020.1 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from pandas>=2.0.0->assume-framework) (2024.1)\n", - "Requirement already satisfied: tzdata>=2022.7 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from pandas>=2.0.0->assume-framework) (2024.1)\n", - "Requirement already satisfied: six>=1.5 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from python-dateutil>=2.8.2->assume-framework) (1.16.0)\n", - "Requirement already satisfied: typing-extensions>=4.6.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from sqlalchemy>=2.0.9->assume-framework) (4.12.2)\n", - "Requirement already satisfied: greenlet!=0.4.17 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from sqlalchemy>=2.0.9->assume-framework) (3.0.3)\n", - "Requirement already satisfied: colorama in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from tqdm>=4.64.1->assume-framework) (0.4.6)\n" - ] - } - ], + "outputs": [], "source": [ "!pip install assume-framework[Learning]" ] }, { "cell_type": "markdown", + "id": "55ab1d3b", "metadata": { "id": "IIw_QIE3pY34" }, @@ -84,7 +59,8 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, + "id": "d5e77f71", "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -95,21 +71,14 @@ "languageId": "shellscript" } }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Cloning into 'assume'...\n" - ] - } - ], + "outputs": [], "source": [ "!git clone https://github.com/assume-framework/assume.git assume-repo" ] }, { "cell_type": "markdown", + "id": "7bf23b1c", "metadata": { "id": "Fg7DyNjLuvSb" }, @@ -121,7 +90,8 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, + "id": "de097384", "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -132,417 +102,14 @@ "languageId": "shellscript" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.world:connected to db\n", - "INFO:assume.scenario.loader_csv:Starting Scenario example_01b/ from examples/inputs\n", - "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", - "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", - "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", - "INFO:assume.scenario.loader_csv:Downsampling demand_df successful.\n", - "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", - "INFO:assume.scenario.loader_csv:Downsampling availability_df successful.\n", - "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", - "INFO:assume.scenario.loader_csv:price_forecasts not found. Returning None\n", - "INFO:assume.scenario.loader_csv:temperature not found. Returning None\n", - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - " 0%| | 0/2678400 [00:00 1553886000.0 but is 1551398399.", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[27], line 47\u001b[0m\n\u001b[0;32m 43\u001b[0m \u001b[38;5;66;03m# run learning if learning mode is enabled\u001b[39;00m\n\u001b[0;32m 44\u001b[0m \u001b[38;5;66;03m# needed as we simulate the modelling horizon multiple times to train reinforcement learning run_learning( world, inputs_path=input_path, scenario=scenario, study_case=study_case, )\u001b[39;00m\n\u001b[0;32m 46\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m world\u001b[38;5;241m.\u001b[39mlearning_config\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlearning_mode\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[1;32m---> 47\u001b[0m \u001b[43mrun_learning\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 48\u001b[0m \u001b[43m \u001b[49m\u001b[43mworld\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 49\u001b[0m \u001b[43m \u001b[49m\u001b[43minputs_path\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minput_path\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 50\u001b[0m \u001b[43m \u001b[49m\u001b[43mscenario\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mscenario\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 51\u001b[0m \u001b[43m \u001b[49m\u001b[43mstudy_case\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstudy_case\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 52\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 54\u001b[0m \u001b[38;5;66;03m# after the learning is done we make a normal run of the simulation, which equasl a test run\u001b[39;00m\n\u001b[0;32m 55\u001b[0m world\u001b[38;5;241m.\u001b[39mrun()\n", - "Cell \u001b[1;32mIn[17], line 102\u001b[0m, in \u001b[0;36mrun_learning\u001b[1;34m(world, inputs_path, scenario, study_case, verbose)\u001b[0m\n\u001b[0;32m 99\u001b[0m \u001b[38;5;66;03m# Give the newly initliazed learning role the needed information across episodes\u001b[39;00m\n\u001b[0;32m 100\u001b[0m world\u001b[38;5;241m.\u001b[39mlearning_role\u001b[38;5;241m.\u001b[39mload_inter_episodic_data(inter_episodic_data)\n\u001b[1;32m--> 102\u001b[0m \u001b[43mworld\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 104\u001b[0m \u001b[38;5;66;03m# Store updated information across episodes\u001b[39;00m\n\u001b[0;32m 105\u001b[0m inter_episodic_data \u001b[38;5;241m=\u001b[39m world\u001b[38;5;241m.\u001b[39mlearning_role\u001b[38;5;241m.\u001b[39mget_inter_episodic_data()\n", - "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\world.py:686\u001b[0m, in \u001b[0;36mWorld.run\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 683\u001b[0m end_ts \u001b[38;5;241m=\u001b[39m datetime2timestamp(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mend)\n\u001b[0;32m 685\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 686\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_until_complete\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 687\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43masync_run\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart_ts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstart_ts\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mend_ts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mend_ts\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 688\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 689\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m:\n\u001b[0;32m 690\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\nest_asyncio.py:98\u001b[0m, in \u001b[0;36m_patch_loop..run_until_complete\u001b[1;34m(self, future)\u001b[0m\n\u001b[0;32m 95\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m f\u001b[38;5;241m.\u001b[39mdone():\n\u001b[0;32m 96\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[0;32m 97\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mEvent loop stopped before Future completed.\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m---> 98\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mf\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py:203\u001b[0m, in \u001b[0;36mFuture.result\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 201\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__log_traceback \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m 202\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 203\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception\u001b[38;5;241m.\u001b[39mwith_traceback(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception_tb)\n\u001b[0;32m 204\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_result\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py:277\u001b[0m, in \u001b[0;36mTask.__step\u001b[1;34m(***failed resolving arguments***)\u001b[0m\n\u001b[0;32m 273\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 274\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m exc \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 275\u001b[0m \u001b[38;5;66;03m# We use the `send` method directly, because coroutines\u001b[39;00m\n\u001b[0;32m 276\u001b[0m \u001b[38;5;66;03m# don't have `__iter__` and `__next__` methods.\u001b[39;00m\n\u001b[1;32m--> 277\u001b[0m result \u001b[38;5;241m=\u001b[39m coro\u001b[38;5;241m.\u001b[39msend(\u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 278\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 279\u001b[0m result \u001b[38;5;241m=\u001b[39m coro\u001b[38;5;241m.\u001b[39mthrow(exc)\n", - "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\world.py:651\u001b[0m, in \u001b[0;36mWorld.async_run\u001b[1;34m(self, start_ts, end_ts)\u001b[0m\n\u001b[0;32m 648\u001b[0m pbar \u001b[38;5;241m=\u001b[39m tqdm(total\u001b[38;5;241m=\u001b[39mend_ts \u001b[38;5;241m-\u001b[39m start_ts)\n\u001b[0;32m 650\u001b[0m \u001b[38;5;66;03m# allow registration before first opening\u001b[39;00m\n\u001b[1;32m--> 651\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mclock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_time\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart_ts\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[0;32m 652\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdistributed_role \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mFalse\u001b[39;00m:\n\u001b[0;32m 653\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclock_manager\u001b[38;5;241m.\u001b[39mbroadcast(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclock\u001b[38;5;241m.\u001b[39mtime)\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\clock.py:70\u001b[0m, in \u001b[0;36mExternalClock.set_time\u001b[1;34m(self, t)\u001b[0m\n\u001b[0;32m 66\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 67\u001b[0m \u001b[38;5;124;03mNew time is set\u001b[39;00m\n\u001b[0;32m 68\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 69\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m t \u001b[38;5;241m<\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time:\n\u001b[1;32m---> 70\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTime must be > \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m but is \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mt\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 71\u001b[0m \u001b[38;5;66;03m# set time\u001b[39;00m\n\u001b[0;32m 72\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time \u001b[38;5;241m=\u001b[39m t\n", - "\u001b[1;31mValueError\u001b[0m: Time must be > 1553886000.0 but is 1551398399." - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:assume.markets.base_market:1553889600.0 Market result [(datetime.datetime(2019, 3, 29, 20, 0), datetime.datetime(2019, 3, 29, 21, 0), None)] for market EOM are empty!\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "example_02a_base_6 2019-03-31 00:00:00: : 1556474401.0it [00:29, 53550828.33it/s] \n" - ] - } - ], + "outputs": [], "source": [ "import os\n", "\n", @@ -1543,38 +968,21 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "id": "df2ba59b", + "metadata": { + "lines_to_next_cell": 2 + }, "outputs": [], "source": [] } ], "metadata": { - "colab": { - "include_colab_link": true, - "provenance": [], - "toc_visible": true - }, "kernelspec": { "display_name": "assume-framework", "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.9" - }, - "nbsphinx": { - "execute": "never" } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 5 } From 303fb882d6f833b2a391069ab31488a2d8218ac7 Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Sun, 6 Oct 2024 15:11:41 +0200 Subject: [PATCH 11/27] - added juppyter notebook for xRL --- examples/notebooks/09_xRL.ipynb | 1071 +++++++++++++++++++++++++++++++ 1 file changed, 1071 insertions(+) create mode 100644 examples/notebooks/09_xRL.ipynb diff --git a/examples/notebooks/09_xRL.ipynb b/examples/notebooks/09_xRL.ipynb new file mode 100644 index 00000000..3be4b14d --- /dev/null +++ b/examples/notebooks/09_xRL.ipynb @@ -0,0 +1,1071 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e62e00c9", + "metadata": {}, + "source": [ + "# **Explainable Reinforcement Learning Tutorial**" + ] + }, + { + "cell_type": "markdown", + "id": "fb3aa803", + "metadata": {}, + "source": [ + "Welcome to this tutorial on **Explainable Reinforcement Learning (XRL)**! In this guide, we'll explore how to interpret and explain the decisions made by reinforcement learning agents using the SHAP (SHapley Additive exPlanations) library. We'll work through a practical example involving an the simulation simulation in a reinforcement learning setting, and demonstrate how to compute and visualize feature attributions for the agent's actions." + ] + }, + { + "cell_type": "markdown", + "id": "0d793362", + "metadata": {}, + "source": [ + "**Table of Contents**" + ] + }, + { + "cell_type": "markdown", + "id": "87bdf688", + "metadata": {}, + "source": [ + "1. [Introduction](#introduction)\n", + "\n", + " 1.1. [Multi-Agent Deep Reinforcement Learning](#11-multi-agent-deep-reinforcement-learning)\n", + "\n", + " 1.2. Prerequisites\n", + "\n", + "2. [Explainable AI and SHAP Values](#2-explainable-ai-and-shap-values)\n", + "\n", + " 2.1 Understanding Explainable AI \n", + "\n", + " 2.2 Introduction to SHAP Values \n", + "\n", + "3. [Calculating SHAP values](#3-calculating-shap-values)\n", + "\n", + " 3.1. [Loading and Preparing Data](#loading-and-preparing-data)\n", + "\n", + " 3.2. [Creating a SHAP Explainer](#32-creating-a-shap-explainer)\n", + " \n", + "4. [Visualizing SHAP Values](#visualizing-shap-values)\n", + "5. [Conclusion](#conclusion)\n", + "6. [Additional Resources](#additional-resources)" + ] + }, + { + "cell_type": "markdown", + "id": "5e8c7fec", + "metadata": {}, + "source": [ + "## 1. Introduction " + ] + }, + { + "cell_type": "markdown", + "id": "06e91420", + "metadata": {}, + "source": [ + "Reinforcement Learning (RL) has achieved remarkable success in various domains, such as game playing, robotics, and autonomous systems. However, RL models, particularly those using deep neural networks, are often seen as black boxes due to their complex architectures and non-linear computations. This opacity poses challenges in understanding and trusting the decisions made by RL agents, especially in critical applications." + ] + }, + { + "cell_type": "markdown", + "id": "47b1e7ab", + "metadata": {}, + "source": [ + "**Explainable Reinforcement Learning (XRL)** aims to bridge this gap by providing insights into the agent's decision-making process. By leveraging explainability techniques, we can interpret the actions of an RL agent, understand the influence of input features, and potentially improve the model's performance and fairness." + ] + }, + { + "cell_type": "markdown", + "id": "ec0717c1", + "metadata": {}, + "source": [ + "In this tutorial, we will demonstrate how to apply SHAP values to a trained actor neural network within an RL framework to explain the agent's actions." + ] + }, + { + "cell_type": "markdown", + "id": "0d59bb0a", + "metadata": {}, + "source": [ + "### 1.1 Multi-Agent Deep Reinforcement Learning \n", + "\n", + "In ASSUME, we implement RL agents using a Multi-Agent Deep Reinforcement Learning (MADRL) approach. Key aspects include:\n", + "\n", + "\n", + "- **Observations**: Each agent receives observations comprising market forecasts, unit-specific information, and past actions.\n", + "- **Actions**: Agents decide on bidding strategies, such as bid prices for inflexible and flexible capacities.\n", + "- **Rewards**: Agents receive rewards based on profits and opportunity costs, guiding them to learn optimal bidding strategies.\n", + "- **Algorithm**: We utilize a multi-agent version of the TD3 algorithm, ensuring stable learning in a non-stationary environment.\n", + "\n", + "For a deep dive into the RL configurations we refer to one of the other tutorials, such as \n", + "[Deep Reinforcement Learning Tutorial](https://example.com/deep-rl-tutorial)\n", + "\n", + "Agents need observations to make informed decisions. Observations include:\n", + "\n", + "- **Residual Load Forecast**: Forecasted net demand over the next 24 hours.\n", + "- **Price Forecast**: Forecasted market prices over the next 24 hours.\n", + "- **Marginal Cost**: Current marginal cost of the unit.\n", + "- **Previous Output**: Dispatched capacity from the previous time step.\n", + "\n", + "\n", + "Agents choose actions based on the observations. The action space is two-dimensional, corresponding to:\n", + "\n", + "- Bid Price for Inflexible Capacity (p_inflex): The price at which the agent offers its minimum power output (must-run capacity) to the market.\n", + "- Bid Price for Flexible Capacity (p_flex): The price for the additional capacity above the minimum output that the agent can flexibly adjust.\n", + "\n", + "\n", + "#### Run an the simulation MADRL Simulation\n", + "\n", + "Similar to the other tutorial, we can run Assume in the following way. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ee220130", + "metadata": {}, + "outputs": [], + "source": [ + "#!pip install 'assume-framework[learning]'\n", + "#!git clone https://github.com/assume-framework/assume.git assume-repo" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bfd1daf2", + "metadata": {}, + "outputs": [], + "source": [ + "import importlib.util\n", + "\n", + "# Check if 'google.colab' is available\n", + "IN_COLAB = importlib.util.find_spec(\"google.colab\") is not None\n", + "\n", + "colab_inputs_path = \"assume-repo/examples/inputs\"\n", + "local_inputs_path = \"../inputs\"\n", + "\n", + "inputs_path = colab_inputs_path if IN_COLAB else local_inputs_path" + ] + }, + { + "cell_type": "markdown", + "id": "3f0f38fb", + "metadata": {}, + "source": [ + "For XRL, we need enhanced logging of the learning process, which is not currently a feature of ASSUME itself. Therefore, we are overriding some functions to enable this logging specifically for the purpose of this tutorial." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "201251c6", + "metadata": {}, + "outputs": [], + "source": [ + "# @title Overwrite run_learning function with enhanced logging\n", + "\n", + "import json\n", + "import logging\n", + "import os\n", + "from collections import defaultdict\n", + "from pathlib import Path\n", + "\n", + "import numpy as np\n", + "import yaml\n", + "from tqdm import tqdm\n", + "\n", + "from assume.common.exceptions import AssumeException\n", + "from assume.scenario.loader_csv import (\n", + " load_config_and_create_forecaster,\n", + " setup_world,\n", + ")\n", + "from assume.world import World\n", + "\n", + "logger = logging.getLogger(__name__)\n", + "\n", + "\n", + "def run_learning(\n", + " world: World,\n", + " inputs_path: str,\n", + " scenario: str,\n", + " study_case: str,\n", + " verbose: bool = False,\n", + ") -> None:\n", + " \"\"\"\n", + " Train Deep Reinforcement Learning (DRL) agents to act in a simulated market environment.\n", + "\n", + " This function runs multiple episodes of simulation to train DRL agents, performs evaluation, and saves the best runs. It maintains the buffer and learned agents in memory to avoid resetting them with each new run.\n", + "\n", + " Args:\n", + " world (World): An instance of the World class representing the simulation environment.\n", + " inputs_path (str): The path to the folder containing input files necessary for the simulation.\n", + " scenario (str): The name of the scenario for the simulation.\n", + " study_case (str): The specific study case for the simulation.\n", + "\n", + " Note:\n", + " - The function uses a ReplayBuffer to store experiences for training the DRL agents.\n", + " - It iterates through training episodes, updating the agents and evaluating their performance at regular intervals.\n", + " - Initial exploration is active at the beginning and is disabled after a certain number of episodes to improve the performance of DRL algorithms.\n", + " - Upon completion of training, the function performs an evaluation run using the best policy learned during training.\n", + " - The best policies are chosen based on the average reward obtained during the evaluation runs, and they are saved for future use.\n", + " \"\"\"\n", + " from assume.reinforcement_learning.buffer import ReplayBuffer\n", + "\n", + " if not verbose:\n", + " logger.setLevel(logging.WARNING)\n", + "\n", + " # remove csv path so that nothing is written while learning\n", + " temp_csv_path = world.export_csv_path\n", + " world.export_csv_path = \"\"\n", + "\n", + " # initialize policies already here to set the obs_dim and act_dim in the learning role\n", + " actors_and_critics = None\n", + " world.learning_role.initialize_policy(actors_and_critics=actors_and_critics)\n", + " world.output_role.del_similar_runs()\n", + "\n", + " # check if we already stored policies for this simualtion\n", + " save_path = world.learning_config[\"trained_policies_save_path\"]\n", + "\n", + " if Path(save_path).is_dir():\n", + " # we are in learning mode and about to train new policies, which might overwrite existing ones\n", + " accept = input(\n", + " f\"{save_path=} exists - should we overwrite current learnings? (y/N) \"\n", + " )\n", + " if not accept.lower().startswith(\"y\"):\n", + " # stop here - do not start learning or save anything\n", + " raise AssumeException(\"don't overwrite existing strategies\")\n", + "\n", + " # -----------------------------------------\n", + " # Load scenario data to reuse across episodes\n", + " scenario_data = load_config_and_create_forecaster(inputs_path, scenario, study_case)\n", + "\n", + " # -----------------------------------------\n", + " # Information that needs to be stored across episodes, aka one simulation run\n", + " inter_episodic_data = {\n", + " \"buffer\": ReplayBuffer(\n", + " buffer_size=int(world.learning_config.get(\"replay_buffer_size\", 5e5)),\n", + " obs_dim=world.learning_role.rl_algorithm.obs_dim,\n", + " act_dim=world.learning_role.rl_algorithm.act_dim,\n", + " n_rl_units=len(world.learning_role.rl_strats),\n", + " device=world.learning_role.device,\n", + " float_type=world.learning_role.float_type,\n", + " ),\n", + " \"actors_and_critics\": None,\n", + " \"max_eval\": defaultdict(lambda: -1e9),\n", + " \"all_eval\": defaultdict(list),\n", + " \"avg_all_eval\": [],\n", + " \"episodes_done\": 0,\n", + " \"eval_episodes_done\": 0,\n", + " \"noise_scale\": world.learning_config.get(\"noise_scale\", 1.0),\n", + " }\n", + "\n", + " # -----------------------------------------\n", + "\n", + " validation_interval = min(\n", + " world.learning_role.training_episodes,\n", + " world.learning_config.get(\"validation_episodes_interval\", 5),\n", + " )\n", + "\n", + " eval_episode = 1\n", + "\n", + " for episode in tqdm(\n", + " range(1, world.learning_role.training_episodes + 1),\n", + " desc=\"Training Episodes\",\n", + " ):\n", + " # TODO normally, loading twice should not create issues, somehow a scheduling issue is raised currently\n", + " if episode != 1:\n", + " setup_world(\n", + " world=world,\n", + " scenario_data=scenario_data,\n", + " study_case=study_case,\n", + " episode=episode,\n", + " )\n", + "\n", + " # -----------------------------------------\n", + " # Give the newly initliazed learning role the needed information across episodes\n", + " world.learning_role.load_inter_episodic_data(inter_episodic_data)\n", + "\n", + " world.run()\n", + "\n", + " # -----------------------------------------\n", + " # Store updated information across episodes\n", + " inter_episodic_data = world.learning_role.get_inter_episodic_data()\n", + " inter_episodic_data[\"episodes_done\"] = episode\n", + "\n", + " # evaluation run:\n", + " if (\n", + " episode % validation_interval == 0\n", + " and episode\n", + " >= world.learning_role.episodes_collecting_initial_experience\n", + " + validation_interval\n", + " ):\n", + " world.reset()\n", + "\n", + " # load evaluation run\n", + " setup_world(\n", + " world=world,\n", + " scenario_data=scenario_data,\n", + " study_case=study_case,\n", + " perform_evaluation=True,\n", + " eval_episode=eval_episode,\n", + " )\n", + "\n", + " world.learning_role.load_inter_episodic_data(inter_episodic_data)\n", + "\n", + " world.run()\n", + "\n", + " total_rewards = world.output_role.get_sum_reward()\n", + " avg_reward = np.mean(total_rewards)\n", + " # check reward improvement in evaluation run\n", + " # and store best run in eval folder\n", + " terminate = world.learning_role.compare_and_save_policies(\n", + " {\"avg_reward\": avg_reward}\n", + " )\n", + "\n", + " inter_episodic_data[\"eval_episodes_done\"] = eval_episode\n", + "\n", + " # if we have not improved in the last x evaluations, we stop loop\n", + " if terminate:\n", + " break\n", + "\n", + " eval_episode += 1\n", + "\n", + " world.reset()\n", + "\n", + " # if at end of simulation save last policies\n", + " if episode == (world.learning_role.training_episodes):\n", + " world.learning_role.rl_algorithm.save_params(\n", + " directory=f\"{world.learning_role.trained_policies_save_path}/last_policies\"\n", + " )\n", + "\n", + " # export buffer_obs.json in the last training episode to get observations later\n", + " export = inter_episodic_data[\"buffer\"].observations.tolist()\n", + " path = f\"{world.learning_role.trained_policies_save_path}/buffer_obs\"\n", + " os.makedirs(path, exist_ok=True)\n", + " with open(os.path.join(path, \"buffer_obs.json\"), \"w\") as f:\n", + " json.dump(export, f)\n", + "\n", + " # container shutdown implicitly with new initialisation\n", + " logger.info(\"################\")\n", + " logger.info(\"Training finished, Start evaluation run\")\n", + " world.export_csv_path = temp_csv_path\n", + "\n", + " world.reset()\n", + "\n", + " # load scenario for evaluation\n", + " setup_world(\n", + " world=world,\n", + " scenario_data=scenario_data,\n", + " study_case=study_case,\n", + " terminate_learning=True,\n", + " )\n", + "\n", + " world.learning_role.load_inter_episodic_data(inter_episodic_data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bfadf522", + "metadata": {}, + "outputs": [], + "source": [ + "#!cd assume-repo && assume -s example_02a -db \"sqlite:///./examples/local_db/assume_db_example_02a.db\"" + ] + }, + { + "cell_type": "markdown", + "id": "e77c41cf", + "metadata": {}, + "source": [ + "### 1.2. Prerequisites" + ] + }, + { + "cell_type": "markdown", + "id": "cbf18570", + "metadata": {}, + "source": [ + "To follow along with this tutorial, we need some additional libraries." + ] + }, + { + "cell_type": "markdown", + "id": "a5ac592c", + "metadata": {}, + "source": [ + "- `matplotlib`\n", + "- `shap`\n", + "- `scikit-learn`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ae266ecb", + "metadata": { + "vscode": { + "languageId": "shellscript" + } + }, + "outputs": [], + "source": [ + "!pip install matplotlib\n", + "!pip install shap==0.42.1\n", + "!pip install scikit-learn==1.3.0" + ] + }, + { + "cell_type": "markdown", + "id": "5069ff93", + "metadata": {}, + "source": [ + "## 2. Explainable AI and SHAP Values \n", + "\n", + "### 2.1 Understanding Explainable AI \n", + "Explainable AI (XAI) refers to techniques and methods that make the behavior and decisions of AI systems understandable to humans. In the context of complex models like deep neural networks, XAI helps to:\n", + "- Increase Transparency: Providing insights into how models make decisions.\n", + "- Build Trust: Users and stakeholders can trust AI systems if they understand them.\n", + "- Ensure Compliance: Regulatory requirements often demand explainability.\n", + "- Improve Models: Identifying weaknesses or biases in models.\n", + "\n", + "\n", + "### 2.2 Introduction to SHAP Values \n", + "Shapley values are a method from cooperative game theory used to explain the contribution of each feature to the prediction of a machine learning model, such as a neural network. They provide an interpretability technique by distributing the \"payout\" (the prediction) among the input features, attributing the importance of each feature to the prediction.\n", + "\n", + "For a given prediction, the Shapley value of a feature represents the average contribution of that feature to the prediction, considering all possible combinations of other features.\n", + "\n", + "1. **Marginal Contribution**: \n", + " The marginal contribution of a feature is the difference between the prediction with and without that feature.\n", + "\n", + "2. **Average over all subsets**: \n", + " The Shapley value is calculated by averaging the marginal contributions over all possible subsets of features.\n", + "\n", + "The formula for the Shapley value of feature $i$ is:\n", + "\n", + "$$\n", + "\\phi_i = \\sum_{S \\subseteq N \\setminus \\{i\\}} \\frac{|S|!(|N| - |S| - 1)!}{|N|!} \\cdot \\left( f(S \\cup \\{i\\}) - f(S) \\right)\n", + "$$\n", + "\n", + "Where:\n", + "- $N$ is the set of all features.\n", + "- $S$ is a subset of features.\n", + "- $f(S)$ is the model’s prediction when using only the features in subset $S$.\n", + "\n", + "\n", + "The `shap` library is a popular tool for computing Shapley values for machine learning models, including neural networks.\n", + "\n", + "\n", + "\n", + "Why Use SHAP in RL?\n", + "- Model-Agnostic: Applicable to any machine learning model, including neural networks.\n", + "- Local Explanations: Provides explanations for individual predictions (actions).\n", + "- Consistency: Ensures that features contributing more to the prediction have higher Shapley values.\n", + "\n", + "\n", + "Properties of SHAP:\n", + "1. Local Accuracy: The sum of Shapley values equals the difference between the model output and the expected output.\n", + "2. Missingness: Features not present in the model have zero Shapley value.\n", + "3. Consistency: If a model changes so that a feature contributes more to the prediction, the Shapley value of that feature should not decrease." + ] + }, + { + "cell_type": "markdown", + "id": "21d49573", + "metadata": {}, + "source": [ + "## 3. Calculating SHAP values " + ] + }, + { + "cell_type": "markdown", + "id": "d16712fc", + "metadata": {}, + "source": [ + "We will work with:" + ] + }, + { + "cell_type": "markdown", + "id": "2c0c1262", + "metadata": {}, + "source": [ + "- **Observations (`input_data`)**: These are the inputs to our actor neural network, representing the state of the environment.\n", + "- **Trained Actor Model**: A neural network representing the decision making of one RL power plant that outputs actions based on the observations." + ] + }, + { + "cell_type": "markdown", + "id": "2fb6fc14", + "metadata": {}, + "source": [ + "Our goal is to:" + ] + }, + { + "cell_type": "markdown", + "id": "e0b69db6", + "metadata": {}, + "source": [ + "- Load the observations and the trained actor model.\n", + "- Use the model to predict actions.\n", + "- Apply SHAP to explain the model's predictions." + ] + }, + { + "cell_type": "markdown", + "id": "f870b3e8", + "metadata": {}, + "source": [ + "### 3.1. Loading and Preparing Data " + ] + }, + { + "cell_type": "markdown", + "id": "aaa7c3d3", + "metadata": {}, + "source": [ + "First, let's load the necessary libraries and the data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b6ee4f28", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import shap\n", + "import torch as th\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "markdown", + "id": "aa268f14", + "metadata": {}, + "source": [ + "the simulation common.py contains utility functions and class definitions\n", + "from common import load_observations, Actor" + ] + }, + { + "cell_type": "markdown", + "id": "f866385a", + "metadata": {}, + "source": [ + "**Define the Actor Neural Network Class**" + ] + }, + { + "cell_type": "markdown", + "id": "ff7cf03a", + "metadata": {}, + "source": [ + "We define the actor neural network class that will be used to predict actions based on observations." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7216677a", + "metadata": { + "lines_to_next_cell": 1 + }, + "outputs": [], + "source": [ + "from assume.reinforcement_learning.neural_network_architecture import MLPActor" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5a4d6e17", + "metadata": {}, + "outputs": [], + "source": [ + "def load_config(file_path):\n", + " \"\"\"\n", + " Load the configuration file.\n", + " \"\"\"\n", + " with open(file_path) as file:\n", + " config = yaml.safe_load(file)\n", + " return config\n", + "\n", + "\n", + "# Some Variable definitions:\n", + "\n", + "EPISODES = 3\n", + "NUMBER_OF_AGENTS = 1\n", + "SIM_TIMESPAN_DAYS = 31\n", + "ACTOR_NUM = 1\n", + "EXAMPLE = 1\n", + "\n", + "SIM_TIMESPAN_HOURS = SIM_TIMESPAN_DAYS * 24\n", + "\n", + "# actor 1-5 are the default non-rl actors, so we just skip those\n", + "ACTOR_NUM_ADJ = ACTOR_NUM + 6 # 6 #9\n", + "\n", + "\n", + "# Get the current working directory\n", + "current_dir = os.getcwd()\n", + "# Go up one level\n", + "one_level_up = os.path.dirname(current_dir)\n", + "# Go up two levels\n", + "two_levels_up = os.path.dirname(one_level_up)\n", + "\n", + "# Paths\n", + "path = os.path.join(\n", + " two_levels_up,\n", + " f\"assume/examples/output/{EXAMPLE}/{EPISODES}_episodes_{SIM_TIMESPAN_DAYS}_simDays_{NUMBER_OF_AGENTS}_rlAgents\",\n", + ")\n", + "actor_path = os.path.join(path, f\"actor_pp_{ACTOR_NUM_ADJ}.pt\")\n", + "\n", + "# DEFINTIONS" + ] + }, + { + "cell_type": "markdown", + "id": "ddfe95d9", + "metadata": {}, + "source": [ + "We define a utility function to load observations and input data from a specified path. Analyzing the shap values for all observations and all parameters would make this notebook quite lengthy, so we’re filtering the observation data frame to include only 700 observations." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "44862f06", + "metadata": {}, + "outputs": [], + "source": [ + "# @title Load observations function\n", + "\n", + "\n", + "def load_observations(path, ACTOR_NUM, feature_names):\n", + " # Load observations\n", + " obs_path = f\"{path}/buffer_obs.json\"\n", + "\n", + " with open(obs_path) as file:\n", + " json_data = json.load(file)\n", + "\n", + " # Convert the list of lists into a 2D numpy array\n", + " input_data = np.array(json_data)\n", + " input_data = np.squeeze(input_data)\n", + "\n", + " # filter out arrays where all value are 0\n", + " input_data = input_data[~np.all(input_data == 0, axis=1)]\n", + "\n", + " # filter only first 700 observations\n", + " input_data = input_data[:700]\n", + "\n", + " if NUMBER_OF_AGENTS == 1:\n", + " return pd.DataFrame(input_data, columns=feature_names), input_data\n", + " else:\n", + " return pd.DataFrame(\n", + " input_data[:, ACTOR_NUM], columns=feature_names\n", + " ), input_data[:, ACTOR_NUM]" + ] + }, + { + "cell_type": "markdown", + "id": "444b8679", + "metadata": {}, + "source": [ + "**Define Paths and Parameters**" + ] + }, + { + "cell_type": "markdown", + "id": "7f218d15", + "metadata": {}, + "source": [ + "Adjust the following paths and parameters according to your data and model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8fa78b12", + "metadata": {}, + "outputs": [], + "source": [ + "path = (\n", + " inputs_path + \"/example_02a/learned_strategies/base/buffer_obs\"\n", + ") # Replace with your data path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8f9189ca", + "metadata": {}, + "outputs": [], + "source": [ + "# Define feature names (replace with actual feature names)\n", + "# make columns names\n", + "names_1 = [\"price forecast t+\" + str(x) for x in range(1, 25)]\n", + "names_2 = [\"residual load forecast t+\" + str(x) for x in range(1, 25)]\n", + "feature_names = names_1 + names_2 + [\"total capacity t-1\"] + [\"marginal costs t-1\"]" + ] + }, + { + "cell_type": "markdown", + "id": "6c5f1986", + "metadata": {}, + "source": [ + "**Load Observations and Input Data**" + ] + }, + { + "cell_type": "markdown", + "id": "36ae8f9e", + "metadata": {}, + "source": [ + "Load the observations and input data using the utility function." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d522969d", + "metadata": {}, + "outputs": [], + "source": [ + "df_obs, input_data = load_observations(path, ACTOR_NUM, feature_names)\n", + "\n", + "df_obs" + ] + }, + { + "cell_type": "markdown", + "id": "5d8b9dcf", + "metadata": {}, + "source": [ + "**Load the Trained Actor Model**" + ] + }, + { + "cell_type": "markdown", + "id": "b1b50488", + "metadata": {}, + "source": [ + "We initialize and load the trained actor neural network." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4da4de57", + "metadata": {}, + "outputs": [], + "source": [ + "# Initialize the model\n", + "obs_dim = len(feature_names)\n", + "act_dim = 2 # Adjust if your model outputs a different number of actions\n", + "model = MLPActor(obs_dim=obs_dim, act_dim=act_dim, float_type=th.float)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "37adecfa", + "metadata": {}, + "outputs": [], + "source": [ + "ACTOR_NUM = 1 # Replace with the actor number or identifier\n", + "actor_path = (\n", + " inputs_path\n", + " + \"/example_02a/learned_strategies/base/last_policies/actors/actor_pp_6.pt\"\n", + ") # Path to the trained actor model\n", + "\n", + "# Load the trained model parameters\n", + "model_state = th.load(actor_path, map_location=th.device(\"cpu\"))\n", + "model.load_state_dict(model_state[\"actor\"])" + ] + }, + { + "cell_type": "markdown", + "id": "d4a63712", + "metadata": {}, + "source": [ + "Get the actions base on observation tensor we just loaded." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e6460cfb", + "metadata": {}, + "outputs": [], + "source": [ + "predictions = []\n", + "for obs in input_data:\n", + " obs_tensor = th.tensor(obs, dtype=th.float)\n", + " prediction = model(obs_tensor)\n", + " predictions.append(prediction)\n", + "predictions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "be91cd97", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "# Split the data into training and testing sets\n", + "X_train, X_test, y_train, y_test = train_test_split(\n", + " input_data, predictions, test_size=0.15, random_state=42\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b21c93c7", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert data to tensors\n", + "y_train = th.stack(y_train)\n", + "y_test = th.stack(y_test)\n", + "\n", + "X_train_tensor = th.tensor(X_train, dtype=th.float32)\n", + "y_train_tensor = th.tensor(y_train, dtype=th.float32)\n", + "X_test_tensor = th.tensor(X_test, dtype=th.float32)\n", + "y_test_tensor = th.tensor(y_test, dtype=th.float32)" + ] + }, + { + "cell_type": "markdown", + "id": "ddd1ab1e", + "metadata": {}, + "source": [ + "## 3.2. Creating a SHAP Explainer " + ] + }, + { + "cell_type": "markdown", + "id": "ae7b108b", + "metadata": {}, + "source": [ + "We define a prediction function compatible with SHAP and create a Kernel SHAP explainer." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6d9be211", + "metadata": { + "lines_to_next_cell": 1 + }, + "outputs": [], + "source": [ + "# Define a prediction function for SHAP\n", + "def model_predict(X):\n", + " X_tensor = th.tensor(X, dtype=th.float32)\n", + " model.eval()\n", + " with th.no_grad():\n", + " return model(X_tensor).numpy()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f0f7857b", + "metadata": {}, + "outputs": [], + "source": [ + "# Use a subset of training data for the background dataset\n", + "background_size = 100 # Adjust the size as needed\n", + "background = X_train[:background_size]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "84bb96cf", + "metadata": {}, + "outputs": [], + "source": [ + "# Create the SHAP Kernel Explainer\n", + "explainer = shap.KernelExplainer(model_predict, background)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2a7929e4", + "metadata": {}, + "outputs": [], + "source": [ + "# Calculate SHAP values for the test set\n", + "shap_values = explainer.shap_values(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "44fa277f", + "metadata": {}, + "outputs": [], + "source": [ + "shap_values" + ] + }, + { + "cell_type": "markdown", + "id": "c1f3d550", + "metadata": {}, + "source": [ + "## 4. Visualizing SHAP Values " + ] + }, + { + "cell_type": "markdown", + "id": "3a0f0cbe", + "metadata": {}, + "source": [ + "We generate summary plots to visualize feature importance for each output dimension." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a6af4983", + "metadata": {}, + "outputs": [], + "source": [ + "print(shap_values[0].shape)\n", + "print(X_test.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2e318a5b", + "metadata": {}, + "outputs": [], + "source": [ + "# Summary plot for the first output dimension\n", + "shap.summary_plot(shap_values[0], X_test, feature_names=feature_names, show=False)\n", + "plt.title(\"Summary Plot for Output Dimension 0, p_inflex\")\n", + "plt.show()\n", + "\n", + "# Summary plot for the second output dimension\n", + "shap.summary_plot(shap_values[1], X_test, feature_names=feature_names, show=False)\n", + "plt.title(\"Summary Plot for Output Dimension 1, p_flex\")\n", + "plt.show()\n", + "\n", + "shap.summary_plot(\n", + " shap_values[0],\n", + " X_test,\n", + " feature_names=feature_names,\n", + " plot_type=\"bar\",\n", + " title=\"Summary Bar Plot for Output Dimension 0\",\n", + ")\n", + "\n", + "shap.summary_plot(\n", + " shap_values[1],\n", + " X_test,\n", + " feature_names=feature_names,\n", + " plot_type=\"bar\",\n", + " title=\"Summary Bar Plot for Output Dimension 1\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "9a888f8b", + "metadata": {}, + "source": [ + "The SHAP summary plots show the impact of each feature on the model's predictions for each output dimension (action). Features with larger absolute SHAP values have a more significant influence on the decision-making process of the RL agent." + ] + }, + { + "cell_type": "markdown", + "id": "c6c4ce8c", + "metadata": {}, + "source": [ + "- **Positive SHAP Value**: Indicates that the feature contributes positively to the predicted action value.\n", + "- **Negative SHAP Value**: Indicates that the feature contributes negatively to the predicted action value." + ] + }, + { + "cell_type": "markdown", + "id": "86545200", + "metadata": {}, + "source": [ + "By analyzing these plots, we can identify which features are most influential and understand how changes in feature values affect the agent's actions." + ] + }, + { + "cell_type": "markdown", + "id": "06f3977c", + "metadata": {}, + "source": [ + "## 5. Conclusion " + ] + }, + { + "cell_type": "markdown", + "id": "dadd0a0c", + "metadata": {}, + "source": [ + "In this tutorial, we've demonstrated how to apply SHAP to a reinforcement learning agent to explain its decision-making process. By interpreting the SHAP values, we gain valuable insights into which features influence the agent's actions, enhancing transparency and trust in the model." + ] + }, + { + "cell_type": "markdown", + "id": "37633c16", + "metadata": {}, + "source": [ + "Explainability is crucial, especially when deploying RL agents in real-world applications where understanding the rationale behind decisions is essential for safety, fairness, and compliance." + ] + }, + { + "cell_type": "markdown", + "id": "8735d66f", + "metadata": {}, + "source": [ + "## 6. Additional Resources " + ] + }, + { + "cell_type": "markdown", + "id": "d6b0332f", + "metadata": {}, + "source": [ + "- **SHAP Documentation**: [https://shap.readthedocs.io/en/latest/](https://shap.readthedocs.io/en/latest/)\n", + "- **PyTorch Documentation**: [https://pytorch.org/docs/stable/index.html](https://pytorch.org/docs/stable/index.html)\n", + "- **Reinforcement Learning Introduction**: [Richard S. Sutton and Andrew G. Barto, \"Reinforcement Learning: An Introduction\"](http://incompleteideas.net/book/the-book-2nd.html)\n", + "- **Interpretable Machine Learning Book**: [https://christophm.github.io/interpretable-ml-book/](https://christophm.github.io/interpretable-ml-book/)" + ] + }, + { + "cell_type": "markdown", + "id": "a8cdea5f", + "metadata": {}, + "source": [ + "**Feel free to experiment with the code and explore different explainability techniques. Happy learning!**" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 9b6e4ab93e427b7c7417d6dbf0768cbe90d657cb Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Sun, 6 Oct 2024 16:03:22 +0200 Subject: [PATCH 12/27] - added example sim of market splitting tutorial to xRL tut - should be runabele so far but I have some problems with glpk, needs debugging --- .../notebooks/09_example_Sim_and_xRL.ipynb | 2588 +++++++++++++++++ .../09_example_Sim_and_xRL.ipynb.license | 3 + examples/notebooks/09_xRL.ipynb | 1071 ------- 3 files changed, 2591 insertions(+), 1071 deletions(-) create mode 100644 examples/notebooks/09_example_Sim_and_xRL.ipynb create mode 100644 examples/notebooks/09_example_Sim_and_xRL.ipynb.license delete mode 100644 examples/notebooks/09_xRL.ipynb diff --git a/examples/notebooks/09_example_Sim_and_xRL.ipynb b/examples/notebooks/09_example_Sim_and_xRL.ipynb new file mode 100644 index 00000000..cc7b905e --- /dev/null +++ b/examples/notebooks/09_example_Sim_and_xRL.ipynb @@ -0,0 +1,2588 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e62e00c9", + "metadata": {}, + "source": [ + "# **Explainable Reinforcement Learning Tutorial**" + ] + }, + { + "cell_type": "markdown", + "id": "fb3aa803", + "metadata": {}, + "source": [ + "Welcome to this tutorial on **Explainable Reinforcement Learning (XRL)**! In this guide, we'll explore how to interpret and explain the decisions made by reinforcement learning agents using the SHAP (SHapley Additive exPlanations) library. We'll work through a practical example involving an the simulation simulation in a reinforcement learning setting, and demonstrate how to compute and visualize feature attributions for the agent's actions." + ] + }, + { + "cell_type": "markdown", + "id": "0d793362", + "metadata": {}, + "source": [ + "**Table of Contents**" + ] + }, + { + "cell_type": "markdown", + "id": "87bdf688", + "metadata": {}, + "source": [ + "1. [Introduction](#introduction)\n", + "\n", + " 1.1. [Multi-Agent Deep Reinforcement Learning with Market Splitting](#11-multi-agent-deep-reinforcement-learning)\n", + "\n", + " 1.2. Prerequisites\n", + "\n", + "2. [Explainable AI and SHAP Values](#2-explainable-ai-and-shap-values)\n", + "\n", + " 2.1 Understanding Explainable AI \n", + "\n", + " 2.2 Introduction to SHAP Values \n", + "\n", + "3. [Calculating SHAP values](#3-calculating-shap-values)\n", + "\n", + " 3.1. [Loading and Preparing Data](#loading-and-preparing-data)\n", + "\n", + " 3.2. [Creating a SHAP Explainer](#32-creating-a-shap-explainer)\n", + " \n", + "4. [Visualizing SHAP Values](#visualizing-shap-values)\n", + "5. [Conclusion](#conclusion)\n", + "6. [Additional Resources](#additional-resources)" + ] + }, + { + "cell_type": "markdown", + "id": "5e8c7fec", + "metadata": {}, + "source": [ + "## 1. Introduction " + ] + }, + { + "cell_type": "markdown", + "id": "06e91420", + "metadata": {}, + "source": [ + "Reinforcement Learning (RL) has achieved remarkable success in various domains, such as game playing, robotics, and autonomous systems. However, RL models, particularly those using deep neural networks, are often seen as black boxes due to their complex architectures and non-linear computations. This opacity poses challenges in understanding and trusting the decisions made by RL agents, especially in critical applications." + ] + }, + { + "cell_type": "markdown", + "id": "47b1e7ab", + "metadata": {}, + "source": [ + "**Explainable Reinforcement Learning (XRL)** aims to bridge this gap by providing insights into the agent's decision-making process. By leveraging explainability techniques, we can interpret the actions of an RL agent, understand the influence of input features, and potentially improve the model's performance and fairness." + ] + }, + { + "cell_type": "markdown", + "id": "ec0717c1", + "metadata": {}, + "source": [ + "In this tutorial, we will demonstrate how to apply SHAP values to a trained actor neural network within an RL framework to explain the agent's actions." + ] + }, + { + "cell_type": "markdown", + "id": "0d59bb0a", + "metadata": {}, + "source": [ + "### 1.1 Multi-Agent Deep Reinforcement Learning \n", + "\n", + "In ASSUME, we implement RL agents using a Multi-Agent Deep Reinforcement Learning (MADRL) approach. Key aspects include:\n", + "\n", + "\n", + "- **Observations**: Each agent receives observations comprising market forecasts, unit-specific information, and past actions.\n", + "- **Actions**: Agents decide on bidding strategies, such as bid prices for inflexible and flexible capacities.\n", + "- **Rewards**: Agents receive rewards based on profits and opportunity costs, guiding them to learn optimal bidding strategies.\n", + "- **Algorithm**: We utilize a multi-agent version of the TD3 algorithm, ensuring stable learning in a non-stationary environment.\n", + "\n", + "For a deep dive into the RL configurations we refer to one of the other tutorials, such as \n", + "[Deep Reinforcement Learning Tutorial](https://example.com/deep-rl-tutorial)\n", + "\n", + "Agents need observations to make informed decisions. Observations include:\n", + "\n", + "- **Residual Load Forecast**: Forecasted net demand over the next 24 hours.\n", + "- **Price Forecast**: Forecasted market prices over the next 24 hours.\n", + "- **Marginal Cost**: Current marginal cost of the unit.\n", + "- **Previous Output**: Dispatched capacity from the previous time step.\n", + "\n", + "\n", + "Agents choose actions based on the observations. The action space is two-dimensional, corresponding to:\n", + "\n", + "- Bid Price for Inflexible Capacity (p_inflex): The price at which the agent offers its minimum power output (must-run capacity) to the market.\n", + "- Bid Price for Flexible Capacity (p_flex): The price for the additional capacity above the minimum output that the agent can flexibly adjust.\n", + "\n", + "\n", + "#### Run an the simulation MADRL Simulation\n", + "\n", + "Similar to the other tutorial, we can run Assume in the following way. " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "ee220130", + "metadata": {}, + "outputs": [], + "source": [ + "#!pip install 'assume-framework[learning]'\n", + "#!pip install plotly\n", + "#!git clone https://github.com/assume-framework/assume.git assume-repo" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "75cd480a", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "# import plotly for visualization\n", + "import plotly.graph_objects as go\n", + "\n", + "# import yaml for reading and writing YAML files\n", + "import yaml\n", + "\n", + "# Function to display DataFrame in Jupyter" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "bfd1daf2", + "metadata": {}, + "outputs": [], + "source": [ + "import importlib.util\n", + "\n", + "# Check if 'google.colab' is available\n", + "IN_COLAB = importlib.util.find_spec(\"google.colab\") is not None\n", + "\n", + "colab_inputs_path = \"assume-repo/examples/inputs\"\n", + "local_inputs_path = \"../inputs\"\n", + "\n", + "inputs_path = colab_inputs_path if IN_COLAB else local_inputs_path" + ] + }, + { + "cell_type": "markdown", + "id": "636ea9ae", + "metadata": {}, + "source": [ + "Load the created example files from the tutorial before:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "233f315b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Input CSV files have been read from 'inputs/tutorial_08'.\n" + ] + } + ], + "source": [ + "import os\n", + "\n", + "# Define the input directory\n", + "input_dir = \"inputs/tutorial_08\"\n", + "\n", + "# Read the DataFrames from CSV files\n", + "buses = pd.read_csv(os.path.join(input_dir, \"buses.csv\"))\n", + "lines = pd.read_csv(os.path.join(input_dir, \"lines.csv\"))\n", + "powerplant_units = pd.read_csv(os.path.join(input_dir, \"powerplant_units.csv\"))\n", + "demand_units = pd.read_csv(os.path.join(input_dir, \"demand_units.csv\"))\n", + "demand_df = pd.read_csv(os.path.join(input_dir, \"demand_df.csv\"))\n", + "\n", + "# extend demand_df for another day with the same demand profile\n", + "demand_df = pd.concat([demand_df, demand_df])\n", + "demand_df.index = pd.date_range(start=\"2019-01-01\", periods=96, freq=\"h\")\n", + "\n", + "# Read the fuel prices DataFrame from CSV file\n", + "fuel_prices_df = pd.read_csv(os.path.join(input_dir, \"fuel_prices_df.csv\"))\n", + "\n", + "\n", + "print(\"Input CSV files have been read from 'inputs/tutorial_08'.\")" + ] + }, + { + "cell_type": "markdown", + "id": "6985289b", + "metadata": {}, + "source": [ + "**Let's make this a leanring example**" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "b205256f", + "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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
nametechnologybidding_zonalfuel_typeemission_factormax_powermin_powerefficiencyadditional_costnodeunit_operator
0Unit 1nuclearnaive_eomuranium0.01000.00.00.35north_1Operator North
1Unit 2nuclearnaive_eomuranium0.01000.00.00.36north_1Operator North
2Unit 3nuclearnaive_eomuranium0.01000.00.00.37north_1Operator North
3Unit 4nuclearnaive_eomuranium0.01000.00.00.38north_1Operator North
4Unit 5nuclearnaive_eomuranium0.01000.00.00.39north_1Operator North
5Unit 6nuclearnaive_eomuranium0.01000.00.00.310north_1Operator North
6Unit 7nuclearnaive_eomuranium0.01000.00.00.311north_1Operator North
7Unit 8nuclearnaive_eomuranium0.01000.00.00.312north_1Operator North
8Unit 9nuclearnaive_eomuranium0.01000.00.00.313north_2Operator North
9Unit 10nuclearnaive_eomuranium0.01000.00.00.314north_2Operator North
10Unit 11nuclearnaive_eomuranium0.01000.00.00.315north_2Operator North
11Unit 12nuclearnaive_eomuranium0.01000.00.00.316north_2Operator North
12Unit 13nuclearnaive_eomuranium0.01000.00.00.317north_2Operator North
13Unit 14nuclearnaive_eomuranium0.01000.00.00.318north_2Operator North
14Unit 15nuclearnaive_eomuranium0.01000.00.00.319north_2Operator North
15Unit 16nuclearnaive_eomuranium0.01000.00.00.320southOperator South
16Unit 17nuclearnaive_eomuranium0.01000.00.00.321southOperator South
17Unit 18nuclearnaive_eomuranium0.01000.00.00.322southOperator South
18Unit 19nuclearnaive_eomuranium0.01000.00.00.323southOperator South
19Unit 20nuclearpp_learninguranium0.05000.00.00.324southOperator South
\n", + "
" + ], + "text/plain": [ + " name technology bidding_zonal fuel_type emission_factor max_power \\\n", + "0 Unit 1 nuclear naive_eom uranium 0.0 1000.0 \n", + "1 Unit 2 nuclear naive_eom uranium 0.0 1000.0 \n", + "2 Unit 3 nuclear naive_eom uranium 0.0 1000.0 \n", + "3 Unit 4 nuclear naive_eom uranium 0.0 1000.0 \n", + "4 Unit 5 nuclear naive_eom uranium 0.0 1000.0 \n", + "5 Unit 6 nuclear naive_eom uranium 0.0 1000.0 \n", + "6 Unit 7 nuclear naive_eom uranium 0.0 1000.0 \n", + "7 Unit 8 nuclear naive_eom uranium 0.0 1000.0 \n", + "8 Unit 9 nuclear naive_eom uranium 0.0 1000.0 \n", + "9 Unit 10 nuclear naive_eom uranium 0.0 1000.0 \n", + "10 Unit 11 nuclear naive_eom uranium 0.0 1000.0 \n", + "11 Unit 12 nuclear naive_eom uranium 0.0 1000.0 \n", + "12 Unit 13 nuclear naive_eom uranium 0.0 1000.0 \n", + "13 Unit 14 nuclear naive_eom uranium 0.0 1000.0 \n", + "14 Unit 15 nuclear naive_eom uranium 0.0 1000.0 \n", + "15 Unit 16 nuclear naive_eom uranium 0.0 1000.0 \n", + "16 Unit 17 nuclear naive_eom uranium 0.0 1000.0 \n", + "17 Unit 18 nuclear naive_eom uranium 0.0 1000.0 \n", + "18 Unit 19 nuclear naive_eom uranium 0.0 1000.0 \n", + "19 Unit 20 nuclear pp_learning uranium 0.0 5000.0 \n", + "\n", + " min_power efficiency additional_cost node unit_operator \n", + "0 0.0 0.3 5 north_1 Operator North \n", + "1 0.0 0.3 6 north_1 Operator North \n", + "2 0.0 0.3 7 north_1 Operator North \n", + "3 0.0 0.3 8 north_1 Operator North \n", + "4 0.0 0.3 9 north_1 Operator North \n", + "5 0.0 0.3 10 north_1 Operator North \n", + "6 0.0 0.3 11 north_1 Operator North \n", + "7 0.0 0.3 12 north_1 Operator North \n", + "8 0.0 0.3 13 north_2 Operator North \n", + "9 0.0 0.3 14 north_2 Operator North \n", + "10 0.0 0.3 15 north_2 Operator North \n", + "11 0.0 0.3 16 north_2 Operator North \n", + "12 0.0 0.3 17 north_2 Operator North \n", + "13 0.0 0.3 18 north_2 Operator North \n", + "14 0.0 0.3 19 north_2 Operator North \n", + "15 0.0 0.3 20 south Operator South \n", + "16 0.0 0.3 21 south Operator South \n", + "17 0.0 0.3 22 south Operator South \n", + "18 0.0 0.3 23 south Operator South \n", + "19 0.0 0.3 24 south Operator South " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# create scarcity in south germany\n", + "powerplant_units = powerplant_units[:20]\n", + "\n", + "# assign RL power plant and give it market power\n", + "powerplant_units.loc[19, \"bidding_zonal\"] = \"pp_learning\"\n", + "powerplant_units.loc[19, \"max_power\"] = 5000\n", + "\n", + "powerplant_units" + ] + }, + { + "cell_type": "markdown", + "id": "cce0e8b4", + "metadata": {}, + "source": [ + "Change yaml to configure learning" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "9c555ce9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Configuration YAML file has been saved to 'inputs/tutorial_08\\config.yaml'.\n" + ] + } + ], + "source": [ + "config = {\n", + " \"zonal_case\": {\n", + " \"start_date\": \"2019-01-01 00:00\",\n", + " \"end_date\": \"2019-01-01 23:00\",\n", + " \"time_step\": \"1h\",\n", + " \"save_frequency_hours\": 24,\n", + " \"markets_config\": {\n", + " \"zonal\": {\n", + " \"operator\": \"EOM_operator\",\n", + " \"product_type\": \"energy\",\n", + " \"products\": [{\"duration\": \"1h\", \"count\": 1, \"first_delivery\": \"1h\"}],\n", + " \"opening_frequency\": \"1h\",\n", + " \"opening_duration\": \"1h\",\n", + " \"volume_unit\": \"MWh\",\n", + " \"maximum_bid_volume\": 100000,\n", + " \"maximum_bid_price\": 3000,\n", + " \"minimum_bid_price\": -500,\n", + " \"price_unit\": \"EUR/MWh\",\n", + " \"market_mechanism\": \"pay_as_clear_complex\",\n", + " \"additional_fields\": [\"bid_type\", \"node\"],\n", + " \"param_dict\": {\"network_path\": \".\", \"zones_identifier\": \"zone_id\"},\n", + " }\n", + " },\n", + " \"learning_config\": {\n", + " \"continue_learning\": False,\n", + " \"trained_policies_save_path\": \"null\",\n", + " \"max_bid_price\": 100,\n", + " \"algorithm\": \"matd3\",\n", + " \"learning_rate\": 0.001,\n", + " \"training_episodes\": 10,\n", + " \"episodes_collecting_initial_experience\": 3,\n", + " \"train_freq\": \"24h\",\n", + " \"gradient_steps\": -1,\n", + " \"batch_size\": 256,\n", + " \"gamma\": 0.99,\n", + " \"device\": \"cpu\",\n", + " \"noise_sigma\": 0.1,\n", + " \"noise_scale\": 1,\n", + " \"noise_dt\": 1,\n", + " \"validation_episodes_interval\": 5,\n", + " },\n", + " }\n", + "}\n", + "\n", + "# Define the path for the config file\n", + "config_path = os.path.join(input_dir, \"config.yaml\")\n", + "\n", + "# Save the configuration to a YAML file\n", + "with open(config_path, \"w\") as file:\n", + " yaml.dump(config, file, sort_keys=False)\n", + "\n", + "print(f\"Configuration YAML file has been saved to '{config_path}'.\")" + ] + }, + { + "cell_type": "markdown", + "id": "3f0f38fb", + "metadata": {}, + "source": [ + "For XRL, we need enhanced logging of the learning process, which is not currently a feature of ASSUME itself. Therefore, we are overriding some functions to enable this logging specifically for the purpose of this tutorial." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "201251c6", + "metadata": {}, + "outputs": [], + "source": [ + "# @title Overwrite run_learning function with enhanced logging\n", + "\n", + "import json\n", + "import logging\n", + "import os\n", + "from collections import defaultdict\n", + "from pathlib import Path\n", + "\n", + "import numpy as np\n", + "import yaml\n", + "from tqdm import tqdm\n", + "\n", + "from assume.common.exceptions import AssumeException\n", + "from assume.scenario.loader_csv import (\n", + " load_config_and_create_forecaster,\n", + " setup_world,\n", + ")\n", + "from assume.world import World\n", + "\n", + "logger = logging.getLogger(__name__)\n", + "\n", + "\n", + "def run_learning(\n", + " world: World,\n", + " inputs_path: str,\n", + " scenario: str,\n", + " study_case: str,\n", + " verbose: bool = False,\n", + ") -> None:\n", + " \"\"\"\n", + " Train Deep Reinforcement Learning (DRL) agents to act in a simulated market environment.\n", + "\n", + " This function runs multiple episodes of simulation to train DRL agents, performs evaluation, and saves the best runs. It maintains the buffer and learned agents in memory to avoid resetting them with each new run.\n", + "\n", + " Args:\n", + " world (World): An instance of the World class representing the simulation environment.\n", + " inputs_path (str): The path to the folder containing input files necessary for the simulation.\n", + " scenario (str): The name of the scenario for the simulation.\n", + " study_case (str): The specific study case for the simulation.\n", + "\n", + " Note:\n", + " - The function uses a ReplayBuffer to store experiences for training the DRL agents.\n", + " - It iterates through training episodes, updating the agents and evaluating their performance at regular intervals.\n", + " - Initial exploration is active at the beginning and is disabled after a certain number of episodes to improve the performance of DRL algorithms.\n", + " - Upon completion of training, the function performs an evaluation run using the best policy learned during training.\n", + " - The best policies are chosen based on the average reward obtained during the evaluation runs, and they are saved for future use.\n", + " \"\"\"\n", + " from assume.reinforcement_learning.buffer import ReplayBuffer\n", + "\n", + " if not verbose:\n", + " logger.setLevel(logging.WARNING)\n", + "\n", + " # remove csv path so that nothing is written while learning\n", + " temp_csv_path = world.export_csv_path\n", + " world.export_csv_path = \"\"\n", + "\n", + " # initialize policies already here to set the obs_dim and act_dim in the learning role\n", + " actors_and_critics = None\n", + " world.learning_role.initialize_policy(actors_and_critics=actors_and_critics)\n", + " world.output_role.del_similar_runs()\n", + "\n", + " # check if we already stored policies for this simualtion\n", + " save_path = world.learning_config[\"trained_policies_save_path\"]\n", + "\n", + " if Path(save_path).is_dir():\n", + " # we are in learning mode and about to train new policies, which might overwrite existing ones\n", + " accept = input(\n", + " f\"{save_path=} exists - should we overwrite current learnings? (y/N) \"\n", + " )\n", + " if not accept.lower().startswith(\"y\"):\n", + " # stop here - do not start learning or save anything\n", + " raise AssumeException(\"don't overwrite existing strategies\")\n", + "\n", + " # -----------------------------------------\n", + " # Load scenario data to reuse across episodes\n", + " scenario_data = load_config_and_create_forecaster(inputs_path, scenario, study_case)\n", + "\n", + " # -----------------------------------------\n", + " # Information that needs to be stored across episodes, aka one simulation run\n", + " inter_episodic_data = {\n", + " \"buffer\": ReplayBuffer(\n", + " buffer_size=int(world.learning_config.get(\"replay_buffer_size\", 5e5)),\n", + " obs_dim=world.learning_role.rl_algorithm.obs_dim,\n", + " act_dim=world.learning_role.rl_algorithm.act_dim,\n", + " n_rl_units=len(world.learning_role.rl_strats),\n", + " device=world.learning_role.device,\n", + " float_type=world.learning_role.float_type,\n", + " ),\n", + " \"actors_and_critics\": None,\n", + " \"max_eval\": defaultdict(lambda: -1e9),\n", + " \"all_eval\": defaultdict(list),\n", + " \"avg_all_eval\": [],\n", + " \"episodes_done\": 0,\n", + " \"eval_episodes_done\": 0,\n", + " \"noise_scale\": world.learning_config.get(\"noise_scale\", 1.0),\n", + " }\n", + "\n", + " # -----------------------------------------\n", + "\n", + " validation_interval = min(\n", + " world.learning_role.training_episodes,\n", + " world.learning_config.get(\"validation_episodes_interval\", 5),\n", + " )\n", + "\n", + " eval_episode = 1\n", + "\n", + " for episode in tqdm(\n", + " range(1, world.learning_role.training_episodes + 1),\n", + " desc=\"Training Episodes\",\n", + " ):\n", + " # TODO normally, loading twice should not create issues, somehow a scheduling issue is raised currently\n", + " if episode != 1:\n", + " setup_world(\n", + " world=world,\n", + " scenario_data=scenario_data,\n", + " study_case=study_case,\n", + " episode=episode,\n", + " )\n", + "\n", + " # -----------------------------------------\n", + " # Give the newly initliazed learning role the needed information across episodes\n", + " world.learning_role.load_inter_episodic_data(inter_episodic_data)\n", + "\n", + " world.run()\n", + "\n", + " # -----------------------------------------\n", + " # Store updated information across episodes\n", + " inter_episodic_data = world.learning_role.get_inter_episodic_data()\n", + " inter_episodic_data[\"episodes_done\"] = episode\n", + "\n", + " # evaluation run:\n", + " if (\n", + " episode % validation_interval == 0\n", + " and episode\n", + " >= world.learning_role.episodes_collecting_initial_experience\n", + " + validation_interval\n", + " ):\n", + " world.reset()\n", + "\n", + " # load evaluation run\n", + " setup_world(\n", + " world=world,\n", + " scenario_data=scenario_data,\n", + " study_case=study_case,\n", + " perform_evaluation=True,\n", + " eval_episode=eval_episode,\n", + " )\n", + "\n", + " world.learning_role.load_inter_episodic_data(inter_episodic_data)\n", + "\n", + " world.run()\n", + "\n", + " total_rewards = world.output_role.get_sum_reward()\n", + " avg_reward = np.mean(total_rewards)\n", + " # check reward improvement in evaluation run\n", + " # and store best run in eval folder\n", + " terminate = world.learning_role.compare_and_save_policies(\n", + " {\"avg_reward\": avg_reward}\n", + " )\n", + "\n", + " inter_episodic_data[\"eval_episodes_done\"] = eval_episode\n", + "\n", + " # if we have not improved in the last x evaluations, we stop loop\n", + " if terminate:\n", + " break\n", + "\n", + " eval_episode += 1\n", + "\n", + " world.reset()\n", + "\n", + " # if at end of simulation save last policies\n", + " if episode == (world.learning_role.training_episodes):\n", + " world.learning_role.rl_algorithm.save_params(\n", + " directory=f\"{world.learning_role.trained_policies_save_path}/last_policies\"\n", + " )\n", + "\n", + " # export buffer_obs.json in the last training episode to get observations later\n", + " export = inter_episodic_data[\"buffer\"].observations.tolist()\n", + " path = f\"{world.learning_role.trained_policies_save_path}/buffer_obs\"\n", + " os.makedirs(path, exist_ok=True)\n", + " with open(os.path.join(path, \"buffer_obs.json\"), \"w\") as f:\n", + " json.dump(export, f)\n", + "\n", + " # container shutdown implicitly with new initialisation\n", + " logger.info(\"################\")\n", + " logger.info(\"Training finished, Start evaluation run\")\n", + " world.export_csv_path = temp_csv_path\n", + "\n", + " world.reset()\n", + "\n", + " # load scenario for evaluation\n", + " setup_world(\n", + " world=world,\n", + " scenario_data=scenario_data,\n", + " study_case=study_case,\n", + " terminate_learning=True,\n", + " )\n", + "\n", + " world.learning_role.load_inter_episodic_data(inter_episodic_data)" + ] + }, + { + "cell_type": "markdown", + "id": "dcacfe26", + "metadata": {}, + "source": [ + "**Run the example case**" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "bfadf522", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.world:connected to db\n", + "INFO:assume.scenario.loader_csv:Starting Scenario tutorial_08/zonal_case from inputs\n", + "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", + "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", + "INFO:assume.scenario.loader_csv:availability_df not found. Returning None\n", + "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", + "INFO:assume.scenario.loader_csv:price_forecasts not found. Returning None\n", + "INFO:assume.scenario.loader_csv:temperature not found. Returning None\n", + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 0%| | 0/82800 [00:00 exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 00:00:00: 4%|▍ | 3601/82800 [00:00<00:07, 10368.18it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 01:00:00: 9%|▊ | 7201/82800 [00:00<00:04, 16445.89it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 02:00:00: 13%|█▎ | 10801/82800 [00:00<00:04, 17504.61it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 03:00:00: 17%|█▋ | 14401/82800 [00:00<00:03, 19578.01it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 04:00:00: 22%|██▏ | 18001/82800 [00:00<00:02, 22414.37it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 05:00:00: 26%|██▌ | 21601/82800 [00:01<00:02, 23810.62it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 06:00:00: 30%|███ | 25201/82800 [00:01<00:02, 25770.59it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 07:00:00: 35%|███▍ | 28801/82800 [00:01<00:02, 26101.95it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 08:00:00: 39%|███▉ | 32401/82800 [00:01<00:01, 26708.36it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 09:00:00: 43%|████▎ | 36001/82800 [00:01<00:01, 27188.48it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 10:00:00: 48%|████▊ | 39601/82800 [00:01<00:01, 26675.60it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 11:00:00: 52%|█████▏ | 43201/82800 [00:01<00:01, 26480.14it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 12:00:00: 57%|█████▋ | 46801/82800 [00:02<00:01, 26144.45it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 13:00:00: 61%|██████ | 50401/82800 [00:02<00:01, 25340.05it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 14:00:00: 65%|██████▌ | 54001/82800 [00:02<00:01, 25567.01it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 15:00:00: 70%|██████▉ | 57601/82800 [00:02<00:00, 25677.37it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 16:00:00: 74%|███████▍ | 61201/82800 [00:02<00:00, 23504.02it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 17:00:00: 78%|███████▊ | 64801/82800 [00:02<00:00, 25143.88it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 18:00:00: 83%|████████▎ | 68401/82800 [00:02<00:00, 26110.73it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 19:00:00: 87%|████████▋ | 72001/82800 [00:03<00:00, 26124.17it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 20:00:00: 91%|█████████▏| 75601/82800 [00:03<00:00, 26331.15it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 21:00:00: 96%|█████████▌| 79201/82800 [00:03<00:00, 26564.47it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", + " raise Exception(f\"None of {SOLVERS} are available\")\n", + "Exception: None of ['gurobi', 'glpk'] are available\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 23:00:00: : 82801it [00:03, 24831.41it/s] \n" + ] + } + ], + "source": [ + "# import the main World class and the load_scenario_folder functions from assume\n", + "from assume import World\n", + "from assume.scenario.loader_csv import load_scenario_folder\n", + "\n", + "# Define paths for input and output data\n", + "csv_path = \"outputs\"\n", + "\n", + "# Define the data format and database URI\n", + "# Use \"local_db\" for SQLite database or \"timescale\" for TimescaleDB in Docker\n", + "\n", + "# Create directories if they don't exist\n", + "os.makedirs(csv_path, exist_ok=True)\n", + "os.makedirs(\"local_db\", exist_ok=True)\n", + "\n", + "data_format = \"local_db\" # \"local_db\" or \"timescale\"\n", + "\n", + "if data_format == \"local_db\":\n", + " db_uri = \"sqlite:///local_db/assume_db.db\"\n", + "elif data_format == \"timescale\":\n", + " db_uri = \"postgresql://assume:assume@localhost:5432/assume\"\n", + "\n", + "# Create the World instance\n", + "world = World(database_uri=db_uri, export_csv_path=csv_path)\n", + "\n", + "# Load the scenario by providing the world instance\n", + "# The path to the inputs folder and the scenario name (subfolder in inputs)\n", + "# and the study case name (which config to use for the simulation)\n", + "load_scenario_folder(\n", + " world,\n", + " inputs_path=\"inputs\",\n", + " scenario=\"tutorial_08\",\n", + " study_case=\"zonal_case\",\n", + ")\n", + "\n", + "# run learning if learning mode is enabled\n", + "# needed as we simulate the modelling horizon multiple times to train reinforcement learning run_learning( world, inputs_path=input_path, scenario=scenario, study_case=study_case, )\n", + "\n", + "if world.learning_config.get(\"learning_mode\", False):\n", + " run_learning(\n", + " world,\n", + " inputs_path=\"inputs\",\n", + " scenario=\"tutorial_08\",\n", + " study_case=\"zonal_case\",\n", + " )\n", + "\n", + "# Run the simulation\n", + "world.run()" + ] + }, + { + "cell_type": "markdown", + "id": "2194f71b", + "metadata": {}, + "source": [ + "**Generate same plotly figure**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bdb21cbe", + "metadata": {}, + "outputs": [], + "source": [ + "# @ title make makret price plotly figure\n", + "\n", + "\n", + "# Define the path to the simulation output\n", + "output_dir = \"outputs/tutorial_08_zonal_case\"\n", + "market_meta_path = os.path.join(output_dir, \"market_meta.csv\")\n", + "\n", + "# Load the market_meta.csv file\n", + "market_meta = pd.read_csv(market_meta_path, index_col=\"time\", parse_dates=True)\n", + "# drop the first column\n", + "market_meta = market_meta.drop(columns=market_meta.columns[0])\n", + "\n", + "\n", + "# Extract unique zones\n", + "zones = market_meta[\"node\"].unique()\n", + "\n", + "# Initialize an empty DataFrame to store clearing prices per zone and time\n", + "clearing_prices_df = pd.DataFrame()\n", + "\n", + "# Populate the DataFrame with clearing prices for each zone\n", + "for zone in zones:\n", + " zone_data = market_meta[market_meta[\"node\"] == zone][[\"price\"]]\n", + " zone_data = zone_data.rename(columns={\"price\": f\"{zone}_price\"})\n", + " clearing_prices_df = (\n", + " pd.merge(\n", + " clearing_prices_df,\n", + " zone_data,\n", + " left_index=True,\n", + " right_index=True,\n", + " how=\"outer\",\n", + " )\n", + " if not clearing_prices_df.empty\n", + " else zone_data\n", + " )\n", + "\n", + "# Sort the DataFrame by time\n", + "clearing_prices_df = clearing_prices_df.sort_index()\n", + "\n", + "\n", + "# Initialize the Plotly figure\n", + "fig = go.Figure()\n", + "\n", + "# Iterate over each zone to plot clearing prices\n", + "for zone in zones:\n", + " fig.add_trace(\n", + " go.Scatter(\n", + " x=clearing_prices_df.index,\n", + " y=clearing_prices_df[f\"{zone}_price\"],\n", + " mode=\"lines\",\n", + " name=f\"{zone} - Simulation\",\n", + " line=dict(width=2),\n", + " )\n", + " )\n", + "\n", + "# Update layout for better aesthetics and interactivity\n", + "fig.update_layout(\n", + " title=\"Clearing Prices per Zone Over Time: Simulation Results\",\n", + " xaxis_title=\"Time\",\n", + " yaxis_title=\"Clearing Price (EUR/MWh)\",\n", + " legend_title=\"Market Zones\",\n", + " xaxis=dict(\n", + " tickangle=45,\n", + " type=\"date\", # Ensure the x-axis is treated as dates\n", + " ),\n", + " hovermode=\"x unified\", # Unified hover for better comparison\n", + " template=\"plotly_white\", # Clean white background\n", + " width=1000,\n", + " height=600,\n", + ")\n", + "\n", + "# Display the interactive plot\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "id": "e77c41cf", + "metadata": {}, + "source": [ + "## 2. Explainable AI and SHAP Values \n", + "\n", + "### Prerequisites" + ] + }, + { + "cell_type": "markdown", + "id": "cbf18570", + "metadata": {}, + "source": [ + "To follow along with this tutorial, we need some additional libraries." + ] + }, + { + "cell_type": "markdown", + "id": "a5ac592c", + "metadata": {}, + "source": [ + "- `matplotlib`\n", + "- `shap`\n", + "- `scikit-learn`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ae266ecb", + "metadata": { + "vscode": { + "languageId": "shellscript" + } + }, + "outputs": [], + "source": [ + "!pip install matplotlib\n", + "!pip install shap==0.42.1\n", + "!pip install scikit-learn==1.3.0" + ] + }, + { + "cell_type": "markdown", + "id": "5069ff93", + "metadata": {}, + "source": [ + "### 2.1 Understanding Explainable AI \n", + "Explainable AI (XAI) refers to techniques and methods that make the behavior and decisions of AI systems understandable to humans. In the context of complex models like deep neural networks, XAI helps to:\n", + "- Increase Transparency: Providing insights into how models make decisions.\n", + "- Build Trust: Users and stakeholders can trust AI systems if they understand them.\n", + "- Ensure Compliance: Regulatory requirements often demand explainability.\n", + "- Improve Models: Identifying weaknesses or biases in models.\n", + "\n", + "\n", + "### 2.2 Introduction to SHAP Values \n", + "Shapley values are a method from cooperative game theory used to explain the contribution of each feature to the prediction of a machine learning model, such as a neural network. They provide an interpretability technique by distributing the \"payout\" (the prediction) among the input features, attributing the importance of each feature to the prediction.\n", + "\n", + "For a given prediction, the Shapley value of a feature represents the average contribution of that feature to the prediction, considering all possible combinations of other features.\n", + "\n", + "1. **Marginal Contribution**: \n", + " The marginal contribution of a feature is the difference between the prediction with and without that feature.\n", + "\n", + "2. **Average over all subsets**: \n", + " The Shapley value is calculated by averaging the marginal contributions over all possible subsets of features.\n", + "\n", + "The formula for the Shapley value of feature $i$ is:\n", + "\n", + "$$\n", + "\\phi_i = \\sum_{S \\subseteq N \\setminus \\{i\\}} \\frac{|S|!(|N| - |S| - 1)!}{|N|!} \\cdot \\left( f(S \\cup \\{i\\}) - f(S) \\right)\n", + "$$\n", + "\n", + "Where:\n", + "- $N$ is the set of all features.\n", + "- $S$ is a subset of features.\n", + "- $f(S)$ is the model’s prediction when using only the features in subset $S$.\n", + "\n", + "\n", + "The `shap` library is a popular tool for computing Shapley values for machine learning models, including neural networks.\n", + "\n", + "\n", + "\n", + "Why Use SHAP in RL?\n", + "- Model-Agnostic: Applicable to any machine learning model, including neural networks.\n", + "- Local Explanations: Provides explanations for individual predictions (actions).\n", + "- Consistency: Ensures that features contributing more to the prediction have higher Shapley values.\n", + "\n", + "\n", + "Properties of SHAP:\n", + "1. Local Accuracy: The sum of Shapley values equals the difference between the model output and the expected output.\n", + "2. Missingness: Features not present in the model have zero Shapley value.\n", + "3. Consistency: If a model changes so that a feature contributes more to the prediction, the Shapley value of that feature should not decrease." + ] + }, + { + "cell_type": "markdown", + "id": "21d49573", + "metadata": {}, + "source": [ + "## 3. Calculating SHAP values " + ] + }, + { + "cell_type": "markdown", + "id": "d16712fc", + "metadata": {}, + "source": [ + "We will work with:" + ] + }, + { + "cell_type": "markdown", + "id": "2c0c1262", + "metadata": {}, + "source": [ + "- **Observations (`input_data`)**: These are the inputs to our actor neural network, representing the state of the environment.\n", + "- **Trained Actor Model**: A neural network representing the decision making of one RL power plant that outputs actions based on the observations." + ] + }, + { + "cell_type": "markdown", + "id": "2fb6fc14", + "metadata": {}, + "source": [ + "Our goal is to:" + ] + }, + { + "cell_type": "markdown", + "id": "e0b69db6", + "metadata": {}, + "source": [ + "- Load the observations and the trained actor model.\n", + "- Use the model to predict actions.\n", + "- Apply SHAP to explain the model's predictions." + ] + }, + { + "cell_type": "markdown", + "id": "f870b3e8", + "metadata": {}, + "source": [ + "### 3.1. Loading and Preparing Data " + ] + }, + { + "cell_type": "markdown", + "id": "aaa7c3d3", + "metadata": {}, + "source": [ + "First, let's load the necessary libraries and the data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b6ee4f28", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import shap\n", + "import torch as th\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "markdown", + "id": "aa268f14", + "metadata": {}, + "source": [ + "the simulation common.py contains utility functions and class definitions\n", + "from common import load_observations, Actor" + ] + }, + { + "cell_type": "markdown", + "id": "f866385a", + "metadata": {}, + "source": [ + "**Define the Actor Neural Network Class**" + ] + }, + { + "cell_type": "markdown", + "id": "ff7cf03a", + "metadata": {}, + "source": [ + "We define the actor neural network class that will be used to predict actions based on observations." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7216677a", + "metadata": { + "lines_to_next_cell": 1 + }, + "outputs": [], + "source": [ + "from assume.reinforcement_learning.neural_network_architecture import MLPActor" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5a4d6e17", + "metadata": {}, + "outputs": [], + "source": [ + "def load_config(file_path):\n", + " \"\"\"\n", + " Load the configuration file.\n", + " \"\"\"\n", + " with open(file_path) as file:\n", + " config = yaml.safe_load(file)\n", + " return config\n", + "\n", + "\n", + "# Some Variable definitions:\n", + "\n", + "EPISODES = 3\n", + "NUMBER_OF_AGENTS = 1\n", + "SIM_TIMESPAN_DAYS = 31\n", + "ACTOR_NUM = 1\n", + "EXAMPLE = 1\n", + "\n", + "SIM_TIMESPAN_HOURS = SIM_TIMESPAN_DAYS * 24\n", + "\n", + "# actor 1-5 are the default non-rl actors, so we just skip those\n", + "ACTOR_NUM_ADJ = ACTOR_NUM + 6 # 6 #9\n", + "\n", + "\n", + "# Get the current working directory\n", + "current_dir = os.getcwd()\n", + "# Go up one level\n", + "one_level_up = os.path.dirname(current_dir)\n", + "# Go up two levels\n", + "two_levels_up = os.path.dirname(one_level_up)\n", + "\n", + "# Paths\n", + "path = os.path.join(\n", + " two_levels_up,\n", + " f\"assume/examples/output/{EXAMPLE}/{EPISODES}_episodes_{SIM_TIMESPAN_DAYS}_simDays_{NUMBER_OF_AGENTS}_rlAgents\",\n", + ")\n", + "actor_path = os.path.join(path, f\"actor_pp_{ACTOR_NUM_ADJ}.pt\")\n", + "\n", + "# DEFINTIONS" + ] + }, + { + "cell_type": "markdown", + "id": "ddfe95d9", + "metadata": {}, + "source": [ + "We define a utility function to load observations and input data from a specified path. Analyzing the shap values for all observations and all parameters would make this notebook quite lengthy, so we’re filtering the observation data frame to include only 700 observations." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "44862f06", + "metadata": {}, + "outputs": [], + "source": [ + "# @title Load observations function\n", + "\n", + "\n", + "def load_observations(path, ACTOR_NUM, feature_names):\n", + " # Load observations\n", + " obs_path = f\"{path}/buffer_obs.json\"\n", + "\n", + " with open(obs_path) as file:\n", + " json_data = json.load(file)\n", + "\n", + " # Convert the list of lists into a 2D numpy array\n", + " input_data = np.array(json_data)\n", + " input_data = np.squeeze(input_data)\n", + "\n", + " # filter out arrays where all value are 0\n", + " input_data = input_data[~np.all(input_data == 0, axis=1)]\n", + "\n", + " # filter only first 700 observations\n", + " input_data = input_data[:700]\n", + "\n", + " if NUMBER_OF_AGENTS == 1:\n", + " return pd.DataFrame(input_data, columns=feature_names), input_data\n", + " else:\n", + " return pd.DataFrame(\n", + " input_data[:, ACTOR_NUM], columns=feature_names\n", + " ), input_data[:, ACTOR_NUM]" + ] + }, + { + "cell_type": "markdown", + "id": "444b8679", + "metadata": {}, + "source": [ + "**Define Paths and Parameters**" + ] + }, + { + "cell_type": "markdown", + "id": "7f218d15", + "metadata": {}, + "source": [ + "Adjust the following paths and parameters according to your data and model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8fa78b12", + "metadata": {}, + "outputs": [], + "source": [ + "path = (\n", + " inputs_path + \"/example_02a/learned_strategies/base/buffer_obs\"\n", + ") # Replace with your data path" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8f9189ca", + "metadata": {}, + "outputs": [], + "source": [ + "# Define feature names (replace with actual feature names)\n", + "# make columns names\n", + "names_1 = [\"price forecast t+\" + str(x) for x in range(1, 25)]\n", + "names_2 = [\"residual load forecast t+\" + str(x) for x in range(1, 25)]\n", + "feature_names = names_1 + names_2 + [\"total capacity t-1\"] + [\"marginal costs t-1\"]" + ] + }, + { + "cell_type": "markdown", + "id": "6c5f1986", + "metadata": {}, + "source": [ + "**Load Observations and Input Data**" + ] + }, + { + "cell_type": "markdown", + "id": "36ae8f9e", + "metadata": {}, + "source": [ + "Load the observations and input data using the utility function." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d522969d", + "metadata": {}, + "outputs": [], + "source": [ + "df_obs, input_data = load_observations(path, ACTOR_NUM, feature_names)\n", + "\n", + "df_obs" + ] + }, + { + "cell_type": "markdown", + "id": "5d8b9dcf", + "metadata": {}, + "source": [ + "**Load the Trained Actor Model**" + ] + }, + { + "cell_type": "markdown", + "id": "b1b50488", + "metadata": {}, + "source": [ + "We initialize and load the trained actor neural network." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4da4de57", + "metadata": {}, + "outputs": [], + "source": [ + "# Initialize the model\n", + "obs_dim = len(feature_names)\n", + "act_dim = 2 # Adjust if your model outputs a different number of actions\n", + "model = MLPActor(obs_dim=obs_dim, act_dim=act_dim, float_type=th.float)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "37adecfa", + "metadata": {}, + "outputs": [], + "source": [ + "ACTOR_NUM = 1 # Replace with the actor number or identifier\n", + "actor_path = (\n", + " inputs_path\n", + " + \"/example_02a/learned_strategies/base/last_policies/actors/actor_pp_6.pt\"\n", + ") # Path to the trained actor model\n", + "\n", + "# Load the trained model parameters\n", + "model_state = th.load(actor_path, map_location=th.device(\"cpu\"))\n", + "model.load_state_dict(model_state[\"actor\"])" + ] + }, + { + "cell_type": "markdown", + "id": "d4a63712", + "metadata": {}, + "source": [ + "Get the actions base on observation tensor we just loaded." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e6460cfb", + "metadata": {}, + "outputs": [], + "source": [ + "predictions = []\n", + "for obs in input_data:\n", + " obs_tensor = th.tensor(obs, dtype=th.float)\n", + " prediction = model(obs_tensor)\n", + " predictions.append(prediction)\n", + "predictions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "be91cd97", + "metadata": { + "lines_to_next_cell": 2 + }, + "outputs": [], + "source": [ + "# Split the data into training and testing sets\n", + "X_train, X_test, y_train, y_test = train_test_split(\n", + " input_data, predictions, test_size=0.15, random_state=42\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b21c93c7", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert data to tensors\n", + "y_train = th.stack(y_train)\n", + "y_test = th.stack(y_test)\n", + "\n", + "X_train_tensor = th.tensor(X_train, dtype=th.float32)\n", + "y_train_tensor = th.tensor(y_train, dtype=th.float32)\n", + "X_test_tensor = th.tensor(X_test, dtype=th.float32)\n", + "y_test_tensor = th.tensor(y_test, dtype=th.float32)" + ] + }, + { + "cell_type": "markdown", + "id": "ddd1ab1e", + "metadata": {}, + "source": [ + "## 3.2. Creating a SHAP Explainer " + ] + }, + { + "cell_type": "markdown", + "id": "ae7b108b", + "metadata": {}, + "source": [ + "We define a prediction function compatible with SHAP and create a Kernel SHAP explainer." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6d9be211", + "metadata": { + "lines_to_next_cell": 1 + }, + "outputs": [], + "source": [ + "# Define a prediction function for SHAP\n", + "def model_predict(X):\n", + " X_tensor = th.tensor(X, dtype=th.float32)\n", + " model.eval()\n", + " with th.no_grad():\n", + " return model(X_tensor).numpy()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f0f7857b", + "metadata": {}, + "outputs": [], + "source": [ + "# Use a subset of training data for the background dataset\n", + "background_size = 100 # Adjust the size as needed\n", + "background = X_train[:background_size]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "84bb96cf", + "metadata": {}, + "outputs": [], + "source": [ + "# Create the SHAP Kernel Explainer\n", + "explainer = shap.KernelExplainer(model_predict, background)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2a7929e4", + "metadata": {}, + "outputs": [], + "source": [ + "# Calculate SHAP values for the test set\n", + "shap_values = explainer.shap_values(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "44fa277f", + "metadata": {}, + "outputs": [], + "source": [ + "shap_values" + ] + }, + { + "cell_type": "markdown", + "id": "c1f3d550", + "metadata": {}, + "source": [ + "## 4. Visualizing SHAP Values " + ] + }, + { + "cell_type": "markdown", + "id": "3a0f0cbe", + "metadata": {}, + "source": [ + "We generate summary plots to visualize feature importance for each output dimension." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a6af4983", + "metadata": {}, + "outputs": [], + "source": [ + "print(shap_values[0].shape)\n", + "print(X_test.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2e318a5b", + "metadata": {}, + "outputs": [], + "source": [ + "# Summary plot for the first output dimension\n", + "shap.summary_plot(shap_values[0], X_test, feature_names=feature_names, show=False)\n", + "plt.title(\"Summary Plot for Output Dimension 0, p_inflex\")\n", + "plt.show()\n", + "\n", + "# Summary plot for the second output dimension\n", + "shap.summary_plot(shap_values[1], X_test, feature_names=feature_names, show=False)\n", + "plt.title(\"Summary Plot for Output Dimension 1, p_flex\")\n", + "plt.show()\n", + "\n", + "shap.summary_plot(\n", + " shap_values[0],\n", + " X_test,\n", + " feature_names=feature_names,\n", + " plot_type=\"bar\",\n", + " title=\"Summary Bar Plot for Output Dimension 0\",\n", + ")\n", + "\n", + "shap.summary_plot(\n", + " shap_values[1],\n", + " X_test,\n", + " feature_names=feature_names,\n", + " plot_type=\"bar\",\n", + " title=\"Summary Bar Plot for Output Dimension 1\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "9a888f8b", + "metadata": {}, + "source": [ + "The SHAP summary plots show the impact of each feature on the model's predictions for each output dimension (action). Features with larger absolute SHAP values have a more significant influence on the decision-making process of the RL agent." + ] + }, + { + "cell_type": "markdown", + "id": "c6c4ce8c", + "metadata": {}, + "source": [ + "- **Positive SHAP Value**: Indicates that the feature contributes positively to the predicted action value.\n", + "- **Negative SHAP Value**: Indicates that the feature contributes negatively to the predicted action value." + ] + }, + { + "cell_type": "markdown", + "id": "86545200", + "metadata": {}, + "source": [ + "By analyzing these plots, we can identify which features are most influential and understand how changes in feature values affect the agent's actions." + ] + }, + { + "cell_type": "markdown", + "id": "06f3977c", + "metadata": {}, + "source": [ + "## 5. Conclusion " + ] + }, + { + "cell_type": "markdown", + "id": "dadd0a0c", + "metadata": {}, + "source": [ + "In this tutorial, we've demonstrated how to apply SHAP to a reinforcement learning agent to explain its decision-making process. By interpreting the SHAP values, we gain valuable insights into which features influence the agent's actions, enhancing transparency and trust in the model." + ] + }, + { + "cell_type": "markdown", + "id": "37633c16", + "metadata": {}, + "source": [ + "Explainability is crucial, especially when deploying RL agents in real-world applications where understanding the rationale behind decisions is essential for safety, fairness, and compliance." + ] + }, + { + "cell_type": "markdown", + "id": "8735d66f", + "metadata": {}, + "source": [ + "## 6. Additional Resources " + ] + }, + { + "cell_type": "markdown", + "id": "d6b0332f", + "metadata": {}, + "source": [ + "- **SHAP Documentation**: [https://shap.readthedocs.io/en/latest/](https://shap.readthedocs.io/en/latest/)\n", + "- **PyTorch Documentation**: [https://pytorch.org/docs/stable/index.html](https://pytorch.org/docs/stable/index.html)\n", + "- **Reinforcement Learning Introduction**: [Richard S. Sutton and Andrew G. Barto, \"Reinforcement Learning: An Introduction\"](http://incompleteideas.net/book/the-book-2nd.html)\n", + "- **Interpretable Machine Learning Book**: [https://christophm.github.io/interpretable-ml-book/](https://christophm.github.io/interpretable-ml-book/)" + ] + }, + { + "cell_type": "markdown", + "id": "a8cdea5f", + "metadata": {}, + "source": [ + "**Feel free to experiment with the code and explore different explainability techniques. Happy learning!**" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/notebooks/09_example_Sim_and_xRL.ipynb.license b/examples/notebooks/09_example_Sim_and_xRL.ipynb.license new file mode 100644 index 00000000..a6ae0636 --- /dev/null +++ b/examples/notebooks/09_example_Sim_and_xRL.ipynb.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: ASSUME Developers + +SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/examples/notebooks/09_xRL.ipynb b/examples/notebooks/09_xRL.ipynb deleted file mode 100644 index 3be4b14d..00000000 --- a/examples/notebooks/09_xRL.ipynb +++ /dev/null @@ -1,1071 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "e62e00c9", - "metadata": {}, - "source": [ - "# **Explainable Reinforcement Learning Tutorial**" - ] - }, - { - "cell_type": "markdown", - "id": "fb3aa803", - "metadata": {}, - "source": [ - "Welcome to this tutorial on **Explainable Reinforcement Learning (XRL)**! In this guide, we'll explore how to interpret and explain the decisions made by reinforcement learning agents using the SHAP (SHapley Additive exPlanations) library. We'll work through a practical example involving an the simulation simulation in a reinforcement learning setting, and demonstrate how to compute and visualize feature attributions for the agent's actions." - ] - }, - { - "cell_type": "markdown", - "id": "0d793362", - "metadata": {}, - "source": [ - "**Table of Contents**" - ] - }, - { - "cell_type": "markdown", - "id": "87bdf688", - "metadata": {}, - "source": [ - "1. [Introduction](#introduction)\n", - "\n", - " 1.1. [Multi-Agent Deep Reinforcement Learning](#11-multi-agent-deep-reinforcement-learning)\n", - "\n", - " 1.2. Prerequisites\n", - "\n", - "2. [Explainable AI and SHAP Values](#2-explainable-ai-and-shap-values)\n", - "\n", - " 2.1 Understanding Explainable AI \n", - "\n", - " 2.2 Introduction to SHAP Values \n", - "\n", - "3. [Calculating SHAP values](#3-calculating-shap-values)\n", - "\n", - " 3.1. [Loading and Preparing Data](#loading-and-preparing-data)\n", - "\n", - " 3.2. [Creating a SHAP Explainer](#32-creating-a-shap-explainer)\n", - " \n", - "4. [Visualizing SHAP Values](#visualizing-shap-values)\n", - "5. [Conclusion](#conclusion)\n", - "6. [Additional Resources](#additional-resources)" - ] - }, - { - "cell_type": "markdown", - "id": "5e8c7fec", - "metadata": {}, - "source": [ - "## 1. Introduction " - ] - }, - { - "cell_type": "markdown", - "id": "06e91420", - "metadata": {}, - "source": [ - "Reinforcement Learning (RL) has achieved remarkable success in various domains, such as game playing, robotics, and autonomous systems. However, RL models, particularly those using deep neural networks, are often seen as black boxes due to their complex architectures and non-linear computations. This opacity poses challenges in understanding and trusting the decisions made by RL agents, especially in critical applications." - ] - }, - { - "cell_type": "markdown", - "id": "47b1e7ab", - "metadata": {}, - "source": [ - "**Explainable Reinforcement Learning (XRL)** aims to bridge this gap by providing insights into the agent's decision-making process. By leveraging explainability techniques, we can interpret the actions of an RL agent, understand the influence of input features, and potentially improve the model's performance and fairness." - ] - }, - { - "cell_type": "markdown", - "id": "ec0717c1", - "metadata": {}, - "source": [ - "In this tutorial, we will demonstrate how to apply SHAP values to a trained actor neural network within an RL framework to explain the agent's actions." - ] - }, - { - "cell_type": "markdown", - "id": "0d59bb0a", - "metadata": {}, - "source": [ - "### 1.1 Multi-Agent Deep Reinforcement Learning \n", - "\n", - "In ASSUME, we implement RL agents using a Multi-Agent Deep Reinforcement Learning (MADRL) approach. Key aspects include:\n", - "\n", - "\n", - "- **Observations**: Each agent receives observations comprising market forecasts, unit-specific information, and past actions.\n", - "- **Actions**: Agents decide on bidding strategies, such as bid prices for inflexible and flexible capacities.\n", - "- **Rewards**: Agents receive rewards based on profits and opportunity costs, guiding them to learn optimal bidding strategies.\n", - "- **Algorithm**: We utilize a multi-agent version of the TD3 algorithm, ensuring stable learning in a non-stationary environment.\n", - "\n", - "For a deep dive into the RL configurations we refer to one of the other tutorials, such as \n", - "[Deep Reinforcement Learning Tutorial](https://example.com/deep-rl-tutorial)\n", - "\n", - "Agents need observations to make informed decisions. Observations include:\n", - "\n", - "- **Residual Load Forecast**: Forecasted net demand over the next 24 hours.\n", - "- **Price Forecast**: Forecasted market prices over the next 24 hours.\n", - "- **Marginal Cost**: Current marginal cost of the unit.\n", - "- **Previous Output**: Dispatched capacity from the previous time step.\n", - "\n", - "\n", - "Agents choose actions based on the observations. The action space is two-dimensional, corresponding to:\n", - "\n", - "- Bid Price for Inflexible Capacity (p_inflex): The price at which the agent offers its minimum power output (must-run capacity) to the market.\n", - "- Bid Price for Flexible Capacity (p_flex): The price for the additional capacity above the minimum output that the agent can flexibly adjust.\n", - "\n", - "\n", - "#### Run an the simulation MADRL Simulation\n", - "\n", - "Similar to the other tutorial, we can run Assume in the following way. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ee220130", - "metadata": {}, - "outputs": [], - "source": [ - "#!pip install 'assume-framework[learning]'\n", - "#!git clone https://github.com/assume-framework/assume.git assume-repo" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bfd1daf2", - "metadata": {}, - "outputs": [], - "source": [ - "import importlib.util\n", - "\n", - "# Check if 'google.colab' is available\n", - "IN_COLAB = importlib.util.find_spec(\"google.colab\") is not None\n", - "\n", - "colab_inputs_path = \"assume-repo/examples/inputs\"\n", - "local_inputs_path = \"../inputs\"\n", - "\n", - "inputs_path = colab_inputs_path if IN_COLAB else local_inputs_path" - ] - }, - { - "cell_type": "markdown", - "id": "3f0f38fb", - "metadata": {}, - "source": [ - "For XRL, we need enhanced logging of the learning process, which is not currently a feature of ASSUME itself. Therefore, we are overriding some functions to enable this logging specifically for the purpose of this tutorial." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "201251c6", - "metadata": {}, - "outputs": [], - "source": [ - "# @title Overwrite run_learning function with enhanced logging\n", - "\n", - "import json\n", - "import logging\n", - "import os\n", - "from collections import defaultdict\n", - "from pathlib import Path\n", - "\n", - "import numpy as np\n", - "import yaml\n", - "from tqdm import tqdm\n", - "\n", - "from assume.common.exceptions import AssumeException\n", - "from assume.scenario.loader_csv import (\n", - " load_config_and_create_forecaster,\n", - " setup_world,\n", - ")\n", - "from assume.world import World\n", - "\n", - "logger = logging.getLogger(__name__)\n", - "\n", - "\n", - "def run_learning(\n", - " world: World,\n", - " inputs_path: str,\n", - " scenario: str,\n", - " study_case: str,\n", - " verbose: bool = False,\n", - ") -> None:\n", - " \"\"\"\n", - " Train Deep Reinforcement Learning (DRL) agents to act in a simulated market environment.\n", - "\n", - " This function runs multiple episodes of simulation to train DRL agents, performs evaluation, and saves the best runs. It maintains the buffer and learned agents in memory to avoid resetting them with each new run.\n", - "\n", - " Args:\n", - " world (World): An instance of the World class representing the simulation environment.\n", - " inputs_path (str): The path to the folder containing input files necessary for the simulation.\n", - " scenario (str): The name of the scenario for the simulation.\n", - " study_case (str): The specific study case for the simulation.\n", - "\n", - " Note:\n", - " - The function uses a ReplayBuffer to store experiences for training the DRL agents.\n", - " - It iterates through training episodes, updating the agents and evaluating their performance at regular intervals.\n", - " - Initial exploration is active at the beginning and is disabled after a certain number of episodes to improve the performance of DRL algorithms.\n", - " - Upon completion of training, the function performs an evaluation run using the best policy learned during training.\n", - " - The best policies are chosen based on the average reward obtained during the evaluation runs, and they are saved for future use.\n", - " \"\"\"\n", - " from assume.reinforcement_learning.buffer import ReplayBuffer\n", - "\n", - " if not verbose:\n", - " logger.setLevel(logging.WARNING)\n", - "\n", - " # remove csv path so that nothing is written while learning\n", - " temp_csv_path = world.export_csv_path\n", - " world.export_csv_path = \"\"\n", - "\n", - " # initialize policies already here to set the obs_dim and act_dim in the learning role\n", - " actors_and_critics = None\n", - " world.learning_role.initialize_policy(actors_and_critics=actors_and_critics)\n", - " world.output_role.del_similar_runs()\n", - "\n", - " # check if we already stored policies for this simualtion\n", - " save_path = world.learning_config[\"trained_policies_save_path\"]\n", - "\n", - " if Path(save_path).is_dir():\n", - " # we are in learning mode and about to train new policies, which might overwrite existing ones\n", - " accept = input(\n", - " f\"{save_path=} exists - should we overwrite current learnings? (y/N) \"\n", - " )\n", - " if not accept.lower().startswith(\"y\"):\n", - " # stop here - do not start learning or save anything\n", - " raise AssumeException(\"don't overwrite existing strategies\")\n", - "\n", - " # -----------------------------------------\n", - " # Load scenario data to reuse across episodes\n", - " scenario_data = load_config_and_create_forecaster(inputs_path, scenario, study_case)\n", - "\n", - " # -----------------------------------------\n", - " # Information that needs to be stored across episodes, aka one simulation run\n", - " inter_episodic_data = {\n", - " \"buffer\": ReplayBuffer(\n", - " buffer_size=int(world.learning_config.get(\"replay_buffer_size\", 5e5)),\n", - " obs_dim=world.learning_role.rl_algorithm.obs_dim,\n", - " act_dim=world.learning_role.rl_algorithm.act_dim,\n", - " n_rl_units=len(world.learning_role.rl_strats),\n", - " device=world.learning_role.device,\n", - " float_type=world.learning_role.float_type,\n", - " ),\n", - " \"actors_and_critics\": None,\n", - " \"max_eval\": defaultdict(lambda: -1e9),\n", - " \"all_eval\": defaultdict(list),\n", - " \"avg_all_eval\": [],\n", - " \"episodes_done\": 0,\n", - " \"eval_episodes_done\": 0,\n", - " \"noise_scale\": world.learning_config.get(\"noise_scale\", 1.0),\n", - " }\n", - "\n", - " # -----------------------------------------\n", - "\n", - " validation_interval = min(\n", - " world.learning_role.training_episodes,\n", - " world.learning_config.get(\"validation_episodes_interval\", 5),\n", - " )\n", - "\n", - " eval_episode = 1\n", - "\n", - " for episode in tqdm(\n", - " range(1, world.learning_role.training_episodes + 1),\n", - " desc=\"Training Episodes\",\n", - " ):\n", - " # TODO normally, loading twice should not create issues, somehow a scheduling issue is raised currently\n", - " if episode != 1:\n", - " setup_world(\n", - " world=world,\n", - " scenario_data=scenario_data,\n", - " study_case=study_case,\n", - " episode=episode,\n", - " )\n", - "\n", - " # -----------------------------------------\n", - " # Give the newly initliazed learning role the needed information across episodes\n", - " world.learning_role.load_inter_episodic_data(inter_episodic_data)\n", - "\n", - " world.run()\n", - "\n", - " # -----------------------------------------\n", - " # Store updated information across episodes\n", - " inter_episodic_data = world.learning_role.get_inter_episodic_data()\n", - " inter_episodic_data[\"episodes_done\"] = episode\n", - "\n", - " # evaluation run:\n", - " if (\n", - " episode % validation_interval == 0\n", - " and episode\n", - " >= world.learning_role.episodes_collecting_initial_experience\n", - " + validation_interval\n", - " ):\n", - " world.reset()\n", - "\n", - " # load evaluation run\n", - " setup_world(\n", - " world=world,\n", - " scenario_data=scenario_data,\n", - " study_case=study_case,\n", - " perform_evaluation=True,\n", - " eval_episode=eval_episode,\n", - " )\n", - "\n", - " world.learning_role.load_inter_episodic_data(inter_episodic_data)\n", - "\n", - " world.run()\n", - "\n", - " total_rewards = world.output_role.get_sum_reward()\n", - " avg_reward = np.mean(total_rewards)\n", - " # check reward improvement in evaluation run\n", - " # and store best run in eval folder\n", - " terminate = world.learning_role.compare_and_save_policies(\n", - " {\"avg_reward\": avg_reward}\n", - " )\n", - "\n", - " inter_episodic_data[\"eval_episodes_done\"] = eval_episode\n", - "\n", - " # if we have not improved in the last x evaluations, we stop loop\n", - " if terminate:\n", - " break\n", - "\n", - " eval_episode += 1\n", - "\n", - " world.reset()\n", - "\n", - " # if at end of simulation save last policies\n", - " if episode == (world.learning_role.training_episodes):\n", - " world.learning_role.rl_algorithm.save_params(\n", - " directory=f\"{world.learning_role.trained_policies_save_path}/last_policies\"\n", - " )\n", - "\n", - " # export buffer_obs.json in the last training episode to get observations later\n", - " export = inter_episodic_data[\"buffer\"].observations.tolist()\n", - " path = f\"{world.learning_role.trained_policies_save_path}/buffer_obs\"\n", - " os.makedirs(path, exist_ok=True)\n", - " with open(os.path.join(path, \"buffer_obs.json\"), \"w\") as f:\n", - " json.dump(export, f)\n", - "\n", - " # container shutdown implicitly with new initialisation\n", - " logger.info(\"################\")\n", - " logger.info(\"Training finished, Start evaluation run\")\n", - " world.export_csv_path = temp_csv_path\n", - "\n", - " world.reset()\n", - "\n", - " # load scenario for evaluation\n", - " setup_world(\n", - " world=world,\n", - " scenario_data=scenario_data,\n", - " study_case=study_case,\n", - " terminate_learning=True,\n", - " )\n", - "\n", - " world.learning_role.load_inter_episodic_data(inter_episodic_data)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bfadf522", - "metadata": {}, - "outputs": [], - "source": [ - "#!cd assume-repo && assume -s example_02a -db \"sqlite:///./examples/local_db/assume_db_example_02a.db\"" - ] - }, - { - "cell_type": "markdown", - "id": "e77c41cf", - "metadata": {}, - "source": [ - "### 1.2. Prerequisites" - ] - }, - { - "cell_type": "markdown", - "id": "cbf18570", - "metadata": {}, - "source": [ - "To follow along with this tutorial, we need some additional libraries." - ] - }, - { - "cell_type": "markdown", - "id": "a5ac592c", - "metadata": {}, - "source": [ - "- `matplotlib`\n", - "- `shap`\n", - "- `scikit-learn`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ae266ecb", - "metadata": { - "vscode": { - "languageId": "shellscript" - } - }, - "outputs": [], - "source": [ - "!pip install matplotlib\n", - "!pip install shap==0.42.1\n", - "!pip install scikit-learn==1.3.0" - ] - }, - { - "cell_type": "markdown", - "id": "5069ff93", - "metadata": {}, - "source": [ - "## 2. Explainable AI and SHAP Values \n", - "\n", - "### 2.1 Understanding Explainable AI \n", - "Explainable AI (XAI) refers to techniques and methods that make the behavior and decisions of AI systems understandable to humans. In the context of complex models like deep neural networks, XAI helps to:\n", - "- Increase Transparency: Providing insights into how models make decisions.\n", - "- Build Trust: Users and stakeholders can trust AI systems if they understand them.\n", - "- Ensure Compliance: Regulatory requirements often demand explainability.\n", - "- Improve Models: Identifying weaknesses or biases in models.\n", - "\n", - "\n", - "### 2.2 Introduction to SHAP Values \n", - "Shapley values are a method from cooperative game theory used to explain the contribution of each feature to the prediction of a machine learning model, such as a neural network. They provide an interpretability technique by distributing the \"payout\" (the prediction) among the input features, attributing the importance of each feature to the prediction.\n", - "\n", - "For a given prediction, the Shapley value of a feature represents the average contribution of that feature to the prediction, considering all possible combinations of other features.\n", - "\n", - "1. **Marginal Contribution**: \n", - " The marginal contribution of a feature is the difference between the prediction with and without that feature.\n", - "\n", - "2. **Average over all subsets**: \n", - " The Shapley value is calculated by averaging the marginal contributions over all possible subsets of features.\n", - "\n", - "The formula for the Shapley value of feature $i$ is:\n", - "\n", - "$$\n", - "\\phi_i = \\sum_{S \\subseteq N \\setminus \\{i\\}} \\frac{|S|!(|N| - |S| - 1)!}{|N|!} \\cdot \\left( f(S \\cup \\{i\\}) - f(S) \\right)\n", - "$$\n", - "\n", - "Where:\n", - "- $N$ is the set of all features.\n", - "- $S$ is a subset of features.\n", - "- $f(S)$ is the model’s prediction when using only the features in subset $S$.\n", - "\n", - "\n", - "The `shap` library is a popular tool for computing Shapley values for machine learning models, including neural networks.\n", - "\n", - "\n", - "\n", - "Why Use SHAP in RL?\n", - "- Model-Agnostic: Applicable to any machine learning model, including neural networks.\n", - "- Local Explanations: Provides explanations for individual predictions (actions).\n", - "- Consistency: Ensures that features contributing more to the prediction have higher Shapley values.\n", - "\n", - "\n", - "Properties of SHAP:\n", - "1. Local Accuracy: The sum of Shapley values equals the difference between the model output and the expected output.\n", - "2. Missingness: Features not present in the model have zero Shapley value.\n", - "3. Consistency: If a model changes so that a feature contributes more to the prediction, the Shapley value of that feature should not decrease." - ] - }, - { - "cell_type": "markdown", - "id": "21d49573", - "metadata": {}, - "source": [ - "## 3. Calculating SHAP values " - ] - }, - { - "cell_type": "markdown", - "id": "d16712fc", - "metadata": {}, - "source": [ - "We will work with:" - ] - }, - { - "cell_type": "markdown", - "id": "2c0c1262", - "metadata": {}, - "source": [ - "- **Observations (`input_data`)**: These are the inputs to our actor neural network, representing the state of the environment.\n", - "- **Trained Actor Model**: A neural network representing the decision making of one RL power plant that outputs actions based on the observations." - ] - }, - { - "cell_type": "markdown", - "id": "2fb6fc14", - "metadata": {}, - "source": [ - "Our goal is to:" - ] - }, - { - "cell_type": "markdown", - "id": "e0b69db6", - "metadata": {}, - "source": [ - "- Load the observations and the trained actor model.\n", - "- Use the model to predict actions.\n", - "- Apply SHAP to explain the model's predictions." - ] - }, - { - "cell_type": "markdown", - "id": "f870b3e8", - "metadata": {}, - "source": [ - "### 3.1. Loading and Preparing Data " - ] - }, - { - "cell_type": "markdown", - "id": "aaa7c3d3", - "metadata": {}, - "source": [ - "First, let's load the necessary libraries and the data." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b6ee4f28", - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import pandas as pd\n", - "import shap\n", - "import torch as th\n", - "from sklearn.model_selection import train_test_split" - ] - }, - { - "cell_type": "markdown", - "id": "aa268f14", - "metadata": {}, - "source": [ - "the simulation common.py contains utility functions and class definitions\n", - "from common import load_observations, Actor" - ] - }, - { - "cell_type": "markdown", - "id": "f866385a", - "metadata": {}, - "source": [ - "**Define the Actor Neural Network Class**" - ] - }, - { - "cell_type": "markdown", - "id": "ff7cf03a", - "metadata": {}, - "source": [ - "We define the actor neural network class that will be used to predict actions based on observations." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7216677a", - "metadata": { - "lines_to_next_cell": 1 - }, - "outputs": [], - "source": [ - "from assume.reinforcement_learning.neural_network_architecture import MLPActor" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5a4d6e17", - "metadata": {}, - "outputs": [], - "source": [ - "def load_config(file_path):\n", - " \"\"\"\n", - " Load the configuration file.\n", - " \"\"\"\n", - " with open(file_path) as file:\n", - " config = yaml.safe_load(file)\n", - " return config\n", - "\n", - "\n", - "# Some Variable definitions:\n", - "\n", - "EPISODES = 3\n", - "NUMBER_OF_AGENTS = 1\n", - "SIM_TIMESPAN_DAYS = 31\n", - "ACTOR_NUM = 1\n", - "EXAMPLE = 1\n", - "\n", - "SIM_TIMESPAN_HOURS = SIM_TIMESPAN_DAYS * 24\n", - "\n", - "# actor 1-5 are the default non-rl actors, so we just skip those\n", - "ACTOR_NUM_ADJ = ACTOR_NUM + 6 # 6 #9\n", - "\n", - "\n", - "# Get the current working directory\n", - "current_dir = os.getcwd()\n", - "# Go up one level\n", - "one_level_up = os.path.dirname(current_dir)\n", - "# Go up two levels\n", - "two_levels_up = os.path.dirname(one_level_up)\n", - "\n", - "# Paths\n", - "path = os.path.join(\n", - " two_levels_up,\n", - " f\"assume/examples/output/{EXAMPLE}/{EPISODES}_episodes_{SIM_TIMESPAN_DAYS}_simDays_{NUMBER_OF_AGENTS}_rlAgents\",\n", - ")\n", - "actor_path = os.path.join(path, f\"actor_pp_{ACTOR_NUM_ADJ}.pt\")\n", - "\n", - "# DEFINTIONS" - ] - }, - { - "cell_type": "markdown", - "id": "ddfe95d9", - "metadata": {}, - "source": [ - "We define a utility function to load observations and input data from a specified path. Analyzing the shap values for all observations and all parameters would make this notebook quite lengthy, so we’re filtering the observation data frame to include only 700 observations." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "44862f06", - "metadata": {}, - "outputs": [], - "source": [ - "# @title Load observations function\n", - "\n", - "\n", - "def load_observations(path, ACTOR_NUM, feature_names):\n", - " # Load observations\n", - " obs_path = f\"{path}/buffer_obs.json\"\n", - "\n", - " with open(obs_path) as file:\n", - " json_data = json.load(file)\n", - "\n", - " # Convert the list of lists into a 2D numpy array\n", - " input_data = np.array(json_data)\n", - " input_data = np.squeeze(input_data)\n", - "\n", - " # filter out arrays where all value are 0\n", - " input_data = input_data[~np.all(input_data == 0, axis=1)]\n", - "\n", - " # filter only first 700 observations\n", - " input_data = input_data[:700]\n", - "\n", - " if NUMBER_OF_AGENTS == 1:\n", - " return pd.DataFrame(input_data, columns=feature_names), input_data\n", - " else:\n", - " return pd.DataFrame(\n", - " input_data[:, ACTOR_NUM], columns=feature_names\n", - " ), input_data[:, ACTOR_NUM]" - ] - }, - { - "cell_type": "markdown", - "id": "444b8679", - "metadata": {}, - "source": [ - "**Define Paths and Parameters**" - ] - }, - { - "cell_type": "markdown", - "id": "7f218d15", - "metadata": {}, - "source": [ - "Adjust the following paths and parameters according to your data and model." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8fa78b12", - "metadata": {}, - "outputs": [], - "source": [ - "path = (\n", - " inputs_path + \"/example_02a/learned_strategies/base/buffer_obs\"\n", - ") # Replace with your data path" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8f9189ca", - "metadata": {}, - "outputs": [], - "source": [ - "# Define feature names (replace with actual feature names)\n", - "# make columns names\n", - "names_1 = [\"price forecast t+\" + str(x) for x in range(1, 25)]\n", - "names_2 = [\"residual load forecast t+\" + str(x) for x in range(1, 25)]\n", - "feature_names = names_1 + names_2 + [\"total capacity t-1\"] + [\"marginal costs t-1\"]" - ] - }, - { - "cell_type": "markdown", - "id": "6c5f1986", - "metadata": {}, - "source": [ - "**Load Observations and Input Data**" - ] - }, - { - "cell_type": "markdown", - "id": "36ae8f9e", - "metadata": {}, - "source": [ - "Load the observations and input data using the utility function." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d522969d", - "metadata": {}, - "outputs": [], - "source": [ - "df_obs, input_data = load_observations(path, ACTOR_NUM, feature_names)\n", - "\n", - "df_obs" - ] - }, - { - "cell_type": "markdown", - "id": "5d8b9dcf", - "metadata": {}, - "source": [ - "**Load the Trained Actor Model**" - ] - }, - { - "cell_type": "markdown", - "id": "b1b50488", - "metadata": {}, - "source": [ - "We initialize and load the trained actor neural network." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4da4de57", - "metadata": {}, - "outputs": [], - "source": [ - "# Initialize the model\n", - "obs_dim = len(feature_names)\n", - "act_dim = 2 # Adjust if your model outputs a different number of actions\n", - "model = MLPActor(obs_dim=obs_dim, act_dim=act_dim, float_type=th.float)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "37adecfa", - "metadata": {}, - "outputs": [], - "source": [ - "ACTOR_NUM = 1 # Replace with the actor number or identifier\n", - "actor_path = (\n", - " inputs_path\n", - " + \"/example_02a/learned_strategies/base/last_policies/actors/actor_pp_6.pt\"\n", - ") # Path to the trained actor model\n", - "\n", - "# Load the trained model parameters\n", - "model_state = th.load(actor_path, map_location=th.device(\"cpu\"))\n", - "model.load_state_dict(model_state[\"actor\"])" - ] - }, - { - "cell_type": "markdown", - "id": "d4a63712", - "metadata": {}, - "source": [ - "Get the actions base on observation tensor we just loaded." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e6460cfb", - "metadata": {}, - "outputs": [], - "source": [ - "predictions = []\n", - "for obs in input_data:\n", - " obs_tensor = th.tensor(obs, dtype=th.float)\n", - " prediction = model(obs_tensor)\n", - " predictions.append(prediction)\n", - "predictions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "be91cd97", - "metadata": { - "lines_to_next_cell": 2 - }, - "outputs": [], - "source": [ - "# Split the data into training and testing sets\n", - "X_train, X_test, y_train, y_test = train_test_split(\n", - " input_data, predictions, test_size=0.15, random_state=42\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b21c93c7", - "metadata": {}, - "outputs": [], - "source": [ - "# Convert data to tensors\n", - "y_train = th.stack(y_train)\n", - "y_test = th.stack(y_test)\n", - "\n", - "X_train_tensor = th.tensor(X_train, dtype=th.float32)\n", - "y_train_tensor = th.tensor(y_train, dtype=th.float32)\n", - "X_test_tensor = th.tensor(X_test, dtype=th.float32)\n", - "y_test_tensor = th.tensor(y_test, dtype=th.float32)" - ] - }, - { - "cell_type": "markdown", - "id": "ddd1ab1e", - "metadata": {}, - "source": [ - "## 3.2. Creating a SHAP Explainer " - ] - }, - { - "cell_type": "markdown", - "id": "ae7b108b", - "metadata": {}, - "source": [ - "We define a prediction function compatible with SHAP and create a Kernel SHAP explainer." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6d9be211", - "metadata": { - "lines_to_next_cell": 1 - }, - "outputs": [], - "source": [ - "# Define a prediction function for SHAP\n", - "def model_predict(X):\n", - " X_tensor = th.tensor(X, dtype=th.float32)\n", - " model.eval()\n", - " with th.no_grad():\n", - " return model(X_tensor).numpy()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f0f7857b", - "metadata": {}, - "outputs": [], - "source": [ - "# Use a subset of training data for the background dataset\n", - "background_size = 100 # Adjust the size as needed\n", - "background = X_train[:background_size]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "84bb96cf", - "metadata": {}, - "outputs": [], - "source": [ - "# Create the SHAP Kernel Explainer\n", - "explainer = shap.KernelExplainer(model_predict, background)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2a7929e4", - "metadata": {}, - "outputs": [], - "source": [ - "# Calculate SHAP values for the test set\n", - "shap_values = explainer.shap_values(X_test)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "44fa277f", - "metadata": {}, - "outputs": [], - "source": [ - "shap_values" - ] - }, - { - "cell_type": "markdown", - "id": "c1f3d550", - "metadata": {}, - "source": [ - "## 4. Visualizing SHAP Values " - ] - }, - { - "cell_type": "markdown", - "id": "3a0f0cbe", - "metadata": {}, - "source": [ - "We generate summary plots to visualize feature importance for each output dimension." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a6af4983", - "metadata": {}, - "outputs": [], - "source": [ - "print(shap_values[0].shape)\n", - "print(X_test.shape)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2e318a5b", - "metadata": {}, - "outputs": [], - "source": [ - "# Summary plot for the first output dimension\n", - "shap.summary_plot(shap_values[0], X_test, feature_names=feature_names, show=False)\n", - "plt.title(\"Summary Plot for Output Dimension 0, p_inflex\")\n", - "plt.show()\n", - "\n", - "# Summary plot for the second output dimension\n", - "shap.summary_plot(shap_values[1], X_test, feature_names=feature_names, show=False)\n", - "plt.title(\"Summary Plot for Output Dimension 1, p_flex\")\n", - "plt.show()\n", - "\n", - "shap.summary_plot(\n", - " shap_values[0],\n", - " X_test,\n", - " feature_names=feature_names,\n", - " plot_type=\"bar\",\n", - " title=\"Summary Bar Plot for Output Dimension 0\",\n", - ")\n", - "\n", - "shap.summary_plot(\n", - " shap_values[1],\n", - " X_test,\n", - " feature_names=feature_names,\n", - " plot_type=\"bar\",\n", - " title=\"Summary Bar Plot for Output Dimension 1\",\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "9a888f8b", - "metadata": {}, - "source": [ - "The SHAP summary plots show the impact of each feature on the model's predictions for each output dimension (action). Features with larger absolute SHAP values have a more significant influence on the decision-making process of the RL agent." - ] - }, - { - "cell_type": "markdown", - "id": "c6c4ce8c", - "metadata": {}, - "source": [ - "- **Positive SHAP Value**: Indicates that the feature contributes positively to the predicted action value.\n", - "- **Negative SHAP Value**: Indicates that the feature contributes negatively to the predicted action value." - ] - }, - { - "cell_type": "markdown", - "id": "86545200", - "metadata": {}, - "source": [ - "By analyzing these plots, we can identify which features are most influential and understand how changes in feature values affect the agent's actions." - ] - }, - { - "cell_type": "markdown", - "id": "06f3977c", - "metadata": {}, - "source": [ - "## 5. Conclusion " - ] - }, - { - "cell_type": "markdown", - "id": "dadd0a0c", - "metadata": {}, - "source": [ - "In this tutorial, we've demonstrated how to apply SHAP to a reinforcement learning agent to explain its decision-making process. By interpreting the SHAP values, we gain valuable insights into which features influence the agent's actions, enhancing transparency and trust in the model." - ] - }, - { - "cell_type": "markdown", - "id": "37633c16", - "metadata": {}, - "source": [ - "Explainability is crucial, especially when deploying RL agents in real-world applications where understanding the rationale behind decisions is essential for safety, fairness, and compliance." - ] - }, - { - "cell_type": "markdown", - "id": "8735d66f", - "metadata": {}, - "source": [ - "## 6. Additional Resources " - ] - }, - { - "cell_type": "markdown", - "id": "d6b0332f", - "metadata": {}, - "source": [ - "- **SHAP Documentation**: [https://shap.readthedocs.io/en/latest/](https://shap.readthedocs.io/en/latest/)\n", - "- **PyTorch Documentation**: [https://pytorch.org/docs/stable/index.html](https://pytorch.org/docs/stable/index.html)\n", - "- **Reinforcement Learning Introduction**: [Richard S. Sutton and Andrew G. Barto, \"Reinforcement Learning: An Introduction\"](http://incompleteideas.net/book/the-book-2nd.html)\n", - "- **Interpretable Machine Learning Book**: [https://christophm.github.io/interpretable-ml-book/](https://christophm.github.io/interpretable-ml-book/)" - ] - }, - { - "cell_type": "markdown", - "id": "a8cdea5f", - "metadata": {}, - "source": [ - "**Feel free to experiment with the code and explore different explainability techniques. Happy learning!**" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} From 678410bbf24a38f79643d24644c74993b305c336 Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Mon, 7 Oct 2024 10:05:46 +0200 Subject: [PATCH 13/27] - changes to paths in xRL notebook - fixed installation of glpk for colab --- .../notebooks/09_example_Sim_and_xRL.ipynb | 4214 ++++++++++++++--- 1 file changed, 3443 insertions(+), 771 deletions(-) diff --git a/examples/notebooks/09_example_Sim_and_xRL.ipynb b/examples/notebooks/09_example_Sim_and_xRL.ipynb index cc7b905e..b77601c9 100644 --- a/examples/notebooks/09_example_Sim_and_xRL.ipynb +++ b/examples/notebooks/09_example_Sim_and_xRL.ipynb @@ -3,7 +3,9 @@ { "cell_type": "markdown", "id": "e62e00c9", - "metadata": {}, + "metadata": { + "id": "e62e00c9" + }, "source": [ "# **Explainable Reinforcement Learning Tutorial**" ] @@ -11,7 +13,9 @@ { "cell_type": "markdown", "id": "fb3aa803", - "metadata": {}, + "metadata": { + "id": "fb3aa803" + }, "source": [ "Welcome to this tutorial on **Explainable Reinforcement Learning (XRL)**! In this guide, we'll explore how to interpret and explain the decisions made by reinforcement learning agents using the SHAP (SHapley Additive exPlanations) library. We'll work through a practical example involving an the simulation simulation in a reinforcement learning setting, and demonstrate how to compute and visualize feature attributions for the agent's actions." ] @@ -19,7 +23,9 @@ { "cell_type": "markdown", "id": "0d793362", - "metadata": {}, + "metadata": { + "id": "0d793362" + }, "source": [ "**Table of Contents**" ] @@ -27,19 +33,19 @@ { "cell_type": "markdown", "id": "87bdf688", - "metadata": {}, + "metadata": { + "id": "87bdf688" + }, "source": [ "1. [Introduction](#introduction)\n", "\n", " 1.1. [Multi-Agent Deep Reinforcement Learning with Market Splitting](#11-multi-agent-deep-reinforcement-learning)\n", "\n", - " 1.2. Prerequisites\n", - "\n", "2. [Explainable AI and SHAP Values](#2-explainable-ai-and-shap-values)\n", "\n", - " 2.1 Understanding Explainable AI \n", + " 2.1 Understanding Explainable AI\n", "\n", - " 2.2 Introduction to SHAP Values \n", + " 2.2 Introduction to SHAP Values\n", "\n", "3. [Calculating SHAP values](#3-calculating-shap-values)\n", "\n", @@ -55,7 +61,9 @@ { "cell_type": "markdown", "id": "5e8c7fec", - "metadata": {}, + "metadata": { + "id": "5e8c7fec" + }, "source": [ "## 1. Introduction " ] @@ -63,7 +71,9 @@ { "cell_type": "markdown", "id": "06e91420", - "metadata": {}, + "metadata": { + "id": "06e91420" + }, "source": [ "Reinforcement Learning (RL) has achieved remarkable success in various domains, such as game playing, robotics, and autonomous systems. However, RL models, particularly those using deep neural networks, are often seen as black boxes due to their complex architectures and non-linear computations. This opacity poses challenges in understanding and trusting the decisions made by RL agents, especially in critical applications." ] @@ -71,7 +81,9 @@ { "cell_type": "markdown", "id": "47b1e7ab", - "metadata": {}, + "metadata": { + "id": "47b1e7ab" + }, "source": [ "**Explainable Reinforcement Learning (XRL)** aims to bridge this gap by providing insights into the agent's decision-making process. By leveraging explainability techniques, we can interpret the actions of an RL agent, understand the influence of input features, and potentially improve the model's performance and fairness." ] @@ -79,7 +91,9 @@ { "cell_type": "markdown", "id": "ec0717c1", - "metadata": {}, + "metadata": { + "id": "ec0717c1" + }, "source": [ "In this tutorial, we will demonstrate how to apply SHAP values to a trained actor neural network within an RL framework to explain the agent's actions." ] @@ -87,7 +101,9 @@ { "cell_type": "markdown", "id": "0d59bb0a", - "metadata": {}, + "metadata": { + "id": "0d59bb0a" + }, "source": [ "### 1.1 Multi-Agent Deep Reinforcement Learning \n", "\n", @@ -99,7 +115,7 @@ "- **Rewards**: Agents receive rewards based on profits and opportunity costs, guiding them to learn optimal bidding strategies.\n", "- **Algorithm**: We utilize a multi-agent version of the TD3 algorithm, ensuring stable learning in a non-stationary environment.\n", "\n", - "For a deep dive into the RL configurations we refer to one of the other tutorials, such as \n", + "For a deep dive into the RL configurations we refer to one of the other tutorials, such as\n", "[Deep Reinforcement Learning Tutorial](https://example.com/deep-rl-tutorial)\n", "\n", "Agents need observations to make informed decisions. Observations include:\n", @@ -118,26 +134,221 @@ "\n", "#### Run an the simulation MADRL Simulation\n", "\n", - "Similar to the other tutorial, we can run Assume in the following way. " + "Similar to the other tutorial, we can run Assume in the following way." ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "ee220130", - "metadata": {}, - "outputs": [], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "ee220130", + "outputId": "ffd98b47-2b07-41cd-dfe4-ff0381571825" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting assume-framework[learning]\n", + " Downloading assume_framework-0.4.0.post2-py3-none-any.whl.metadata (9.9 kB)\n", + "Collecting argcomplete>=3.1.4 (from assume-framework[learning])\n", + " Downloading argcomplete-3.5.1-py3-none-any.whl.metadata (16 kB)\n", + "Requirement already satisfied: nest-asyncio>=1.5.6 in /usr/local/lib/python3.10/dist-packages (from assume-framework[learning]) (1.6.0)\n", + "Collecting mango-agents-assume>=1.1.4-6 (from assume-framework[learning])\n", + " Downloading mango_agents_assume-1.1.4.post10-py3-none-any.whl.metadata (10.0 kB)\n", + "Requirement already satisfied: numpy<2 in /usr/local/lib/python3.10/dist-packages (from assume-framework[learning]) (1.26.4)\n", + "Requirement already satisfied: tqdm>=4.64.1 in /usr/local/lib/python3.10/dist-packages (from assume-framework[learning]) (4.66.5)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from assume-framework[learning]) (2.8.2)\n", + "Requirement already satisfied: sqlalchemy>=2.0.9 in /usr/local/lib/python3.10/dist-packages (from assume-framework[learning]) (2.0.35)\n", + "Requirement already satisfied: pandas>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from assume-framework[learning]) (2.2.2)\n", + "Collecting psycopg2-binary>=2.9.5 (from assume-framework[learning])\n", + " Downloading psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.4 kB)\n", + "Requirement already satisfied: pyyaml>=6.0 in /usr/local/lib/python3.10/dist-packages (from assume-framework[learning]) (6.0.2)\n", + "Collecting pyyaml-include>=2.0 (from assume-framework[learning])\n", + " Downloading pyyaml_include-2.1-py3-none-any.whl.metadata (18 kB)\n", + "Requirement already satisfied: torch>=2.0.1 in /usr/local/lib/python3.10/dist-packages (from assume-framework[learning]) (2.4.1+cu121)\n", + "Collecting dill>=0.3.8 (from mango-agents-assume>=1.1.4-6->assume-framework[learning])\n", + " Downloading dill-0.3.9-py3-none-any.whl.metadata (10 kB)\n", + "Collecting msgspec>=0.18.6 (from mango-agents-assume>=1.1.4-6->assume-framework[learning])\n", + " Downloading msgspec-0.18.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.9 kB)\n", + "Collecting paho-mqtt>=2.1.0 (from mango-agents-assume>=1.1.4-6->assume-framework[learning])\n", + " Downloading paho_mqtt-2.1.0-py3-none-any.whl.metadata (23 kB)\n", + "Collecting protobuf==5.27.2 (from mango-agents-assume>=1.1.4-6->assume-framework[learning])\n", + " Downloading protobuf-5.27.2-cp38-abi3-manylinux2014_x86_64.whl.metadata (592 bytes)\n", + "Collecting python-dateutil>=2.8.2 (from assume-framework[learning])\n", + " Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=2.0.0->assume-framework[learning]) (2024.2)\n", + "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.10/dist-packages (from pandas>=2.0.0->assume-framework[learning]) (2024.2)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->assume-framework[learning]) (1.16.0)\n", + "Requirement already satisfied: fsspec>=2021.04.0 in /usr/local/lib/python3.10/dist-packages (from pyyaml-include>=2.0->assume-framework[learning]) (2024.6.1)\n", + "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.10/dist-packages (from pyyaml-include>=2.0->assume-framework[learning]) (4.12.2)\n", + "Requirement already satisfied: greenlet!=0.4.17 in /usr/local/lib/python3.10/dist-packages (from sqlalchemy>=2.0.9->assume-framework[learning]) (3.1.1)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from torch>=2.0.1->assume-framework[learning]) (3.16.1)\n", + "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch>=2.0.1->assume-framework[learning]) (1.13.3)\n", + "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch>=2.0.1->assume-framework[learning]) (3.3)\n", + "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch>=2.0.1->assume-framework[learning]) (3.1.4)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch>=2.0.1->assume-framework[learning]) (2.1.5)\n", + "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from sympy->torch>=2.0.1->assume-framework[learning]) (1.3.0)\n", + "Downloading argcomplete-3.5.1-py3-none-any.whl (43 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m43.5/43.5 kB\u001b[0m \u001b[31m2.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading mango_agents_assume-1.1.4.post10-py3-none-any.whl (62 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.4/62.4 kB\u001b[0m \u001b[31m4.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading protobuf-5.27.2-cp38-abi3-manylinux2014_x86_64.whl (309 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m309.3/309.3 kB\u001b[0m \u001b[31m10.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.0/3.0 MB\u001b[0m \u001b[31m57.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m229.9/229.9 kB\u001b[0m \u001b[31m16.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading pyyaml_include-2.1-py3-none-any.whl (28 kB)\n", + "Downloading assume_framework-0.4.0.post2-py3-none-any.whl (246 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m246.2/246.2 kB\u001b[0m \u001b[31m17.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading dill-0.3.9-py3-none-any.whl (119 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m119.4/119.4 kB\u001b[0m \u001b[31m8.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading msgspec-0.18.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (210 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m210.3/210.3 kB\u001b[0m \u001b[31m15.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading paho_mqtt-2.1.0-py3-none-any.whl (67 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m67.2/67.2 kB\u001b[0m \u001b[31m4.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hInstalling collected packages: pyyaml-include, python-dateutil, psycopg2-binary, protobuf, paho-mqtt, msgspec, dill, argcomplete, mango-agents-assume, assume-framework\n", + " Attempting uninstall: python-dateutil\n", + " Found existing installation: python-dateutil 2.8.2\n", + " Uninstalling python-dateutil-2.8.2:\n", + " Successfully uninstalled python-dateutil-2.8.2\n", + " Attempting uninstall: protobuf\n", + " Found existing installation: protobuf 3.20.3\n", + " Uninstalling protobuf-3.20.3:\n", + " Successfully uninstalled protobuf-3.20.3\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", + "google-ai-generativelanguage 0.6.6 requires protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.19.5, but you have protobuf 5.27.2 which is incompatible.\n", + "google-cloud-datastore 2.19.0 requires protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.19.5, but you have protobuf 5.27.2 which is incompatible.\n", + "google-cloud-firestore 2.16.1 requires protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.19.5, but you have protobuf 5.27.2 which is incompatible.\n", + "tensorboard 2.17.0 requires protobuf!=4.24.0,<5.0.0,>=3.19.6, but you have protobuf 5.27.2 which is incompatible.\n", + "tensorflow 2.17.0 requires protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3, but you have protobuf 5.27.2 which is incompatible.\n", + "tensorflow-metadata 1.15.0 requires protobuf<4.21,>=3.20.3; python_version < \"3.11\", but you have protobuf 5.27.2 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mSuccessfully installed argcomplete-3.5.1 assume-framework-0.4.0.post2 dill-0.3.9 mango-agents-assume-1.1.4.post10 msgspec-0.18.6 paho-mqtt-2.1.0 protobuf-5.27.2 psycopg2-binary-2.9.9 python-dateutil-2.9.0.post0 pyyaml-include-2.1\n" + ] + }, + { + "data": { + "application/vnd.colab-display-data+json": { + "id": "5bd36a4bde024ee1bea1d8fe663e99d9", + "pip_warning": { + "packages": [ + "dateutil" + ] + } + } + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: plotly in /usr/local/lib/python3.10/dist-packages (5.24.1)\n", + "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly) (9.0.0)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from plotly) (24.1)\n", + "^C\n", + "Cloning into 'assume-repo'...\n", + "remote: Enumerating objects: 10788, done.\u001b[K\n", + "remote: Counting objects: 100% (4342/4342), done.\u001b[K\n", + "remote: Compressing objects: 100% (1458/1458), done.\u001b[K\n" + ] + } + ], "source": [ - "#!pip install 'assume-framework[learning]'\n", - "#!pip install plotly\n", - "#!git clone https://github.com/assume-framework/assume.git assume-repo" + "!pip install 'assume-framework[learning]'\n", + "!pip install plotly\n", + "!git clone https://github.com/assume-framework/assume.git assume-repo" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 1, + "id": "Hn_DvrqR7oK2", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Hn_DvrqR7oK2", + "outputId": "391046fd-90d9-4967-b919-52c49f13a9f8" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting pyomo\n", + " Downloading Pyomo-6.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (8.0 kB)\n", + "Collecting ply (from pyomo)\n", + " Downloading ply-3.11-py2.py3-none-any.whl.metadata (844 bytes)\n", + "Downloading Pyomo-6.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.3 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.3/13.3 MB\u001b[0m \u001b[31m57.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading ply-3.11-py2.py3-none-any.whl (49 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.6/49.6 kB\u001b[0m \u001b[31m3.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hInstalling collected packages: ply, pyomo\n", + "Successfully installed ply-3.11 pyomo-6.8.0\n", + "Selecting previously unselected package libsuitesparseconfig5:amd64.\n", + "(Reading database ... 123620 files and directories currently installed.)\n", + "Preparing to unpack .../libsuitesparseconfig5_1%3a5.10.1+dfsg-4build1_amd64.deb ...\n", + "Unpacking libsuitesparseconfig5:amd64 (1:5.10.1+dfsg-4build1) ...\n", + "Selecting previously unselected package libamd2:amd64.\n", + "Preparing to unpack .../libamd2_1%3a5.10.1+dfsg-4build1_amd64.deb ...\n", + "Unpacking libamd2:amd64 (1:5.10.1+dfsg-4build1) ...\n", + "Selecting previously unselected package libcolamd2:amd64.\n", + "Preparing to unpack .../libcolamd2_1%3a5.10.1+dfsg-4build1_amd64.deb ...\n", + "Unpacking libcolamd2:amd64 (1:5.10.1+dfsg-4build1) ...\n", + "Selecting previously unselected package libglpk40:amd64.\n", + "Preparing to unpack .../libglpk40_5.0-1_amd64.deb ...\n", + "Unpacking libglpk40:amd64 (5.0-1) ...\n", + "Selecting previously unselected package glpk-utils.\n", + "Preparing to unpack .../glpk-utils_5.0-1_amd64.deb ...\n", + "Unpacking glpk-utils (5.0-1) ...\n", + "Setting up libsuitesparseconfig5:amd64 (1:5.10.1+dfsg-4build1) ...\n", + "Setting up libamd2:amd64 (1:5.10.1+dfsg-4build1) ...\n", + "Setting up libcolamd2:amd64 (1:5.10.1+dfsg-4build1) ...\n", + "Setting up libglpk40:amd64 (5.0-1) ...\n", + "Setting up glpk-utils (5.0-1) ...\n", + "Processing triggers for man-db (2.10.2-1) ...\n", + "Processing triggers for libc-bin (2.35-0ubuntu3.4) ...\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbbind_2_5.so.3 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbbind_2_0.so.3 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbmalloc.so.2 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libur_adapter_level_zero.so.0 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbmalloc_proxy.so.2 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbb.so.12 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libur_adapter_opencl.so.0 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libur_loader.so.0 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbbind.so.3 is not a symbolic link\n", + "\n" + ] + } + ], + "source": [ + "!pip install pyomo\n", + "!apt-get install -y -qq glpk-utils" + ] + }, + { + "cell_type": "code", + "execution_count": 2, "id": "75cd480a", - "metadata": {}, + "metadata": { + "id": "75cd480a" + }, "outputs": [], "source": [ "import pandas as pd\n", @@ -153,10 +364,24 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 3, "id": "bfd1daf2", - "metadata": {}, - "outputs": [], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bfd1daf2", + "outputId": "1edeb31f-bc3a-493e-b518-01f4188c44b6" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "assume-repo/examples/inputs\n" + ] + } + ], "source": [ "import importlib.util\n", "\n", @@ -166,22 +391,42 @@ "colab_inputs_path = \"assume-repo/examples/inputs\"\n", "local_inputs_path = \"../inputs\"\n", "\n", - "inputs_path = colab_inputs_path if IN_COLAB else local_inputs_path" + "inputs_path = colab_inputs_path if IN_COLAB else local_inputs_path\n", + "\n", + "print(inputs_path)" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "4sfWyPgJ-Hq5", + "metadata": { + "id": "4sfWyPgJ-Hq5" + }, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "id": "636ea9ae", - "metadata": {}, + "metadata": { + "id": "636ea9ae" + }, "source": [ "Load the created example files from the tutorial before:" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 4, "id": "233f315b", - "metadata": {}, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "233f315b", + "outputId": "f98da7d4-0080-4546-c642-838f722965b0" + }, "outputs": [ { "name": "stdout", @@ -195,7 +440,8 @@ "import os\n", "\n", "# Define the input directory\n", - "input_dir = \"inputs/tutorial_08\"\n", + "input_dir = os.path.join(inputs_path, \"tutorial_08\")\n", + "\n", "\n", "# Read the DataFrames from CSV files\n", "buses = pd.read_csv(os.path.join(input_dir, \"buses.csv\"))\n", @@ -218,21 +464,39 @@ { "cell_type": "markdown", "id": "6985289b", - "metadata": {}, + "metadata": { + "id": "6985289b" + }, "source": [ - "**Let's make this a leanring example**" + "**Let's make this a leanring example**\n", + "\n", + "We place a learning nuclear power plant in the south zone that has a 5 times hihger maximal power, to generate a scenario where it has a price impact." ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 5, "id": "b205256f", - "metadata": {}, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 676 + }, + "id": "b205256f", + "outputId": "b9bb887b-f534-4a50-dd5b-229be1012600" + }, "outputs": [ { "data": { + "application/vnd.google.colaboratory.intrinsic+json": { + "summary": "{\n \"name\": \"powerplant_units\",\n \"rows\": 20,\n \"fields\": [\n {\n \"column\": \"name\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 20,\n \"samples\": [\n \"Unit 1\",\n \"Unit 18\",\n \"Unit 16\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"technology\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"nuclear\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"bidding_zonal\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"pp_learning\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"fuel_type\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"uranium\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"emission_factor\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 0.0,\n \"max\": 0.0,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"max_power\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 894.4271909999159,\n \"min\": 1000.0,\n \"max\": 5000.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 5000.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"min_power\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 0.0,\n \"max\": 0.0,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"efficiency\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 5.695323946259567e-17,\n \"min\": 0.3,\n \"max\": 0.3,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.3\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"additional_cost\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 5,\n \"min\": 5,\n \"max\": 24,\n \"num_unique_values\": 20,\n \"samples\": [\n 5\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"node\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"north_1\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"unit_operator\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"Operator South\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}", + "type": "dataframe", + "variable_name": "powerplant_units" + }, "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" ], "text/plain": [ " name technology bidding_zonal fuel_type emission_factor max_power \\\n", @@ -594,7 +1122,7 @@ "19 0.0 0.3 24 south Operator South " ] }, - "execution_count": 16, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -610,25 +1138,46 @@ "powerplant_units" ] }, + { + "cell_type": "code", + "execution_count": 18, + "id": "QBTGrw62_5I7", + "metadata": { + "id": "QBTGrw62_5I7" + }, + "outputs": [], + "source": [ + "# store power plant units to csv again\n", + "powerplant_units.to_csv(input_dir + \"/powerplant_units.csv\")" + ] + }, { "cell_type": "markdown", "id": "cce0e8b4", - "metadata": {}, + "metadata": { + "id": "cce0e8b4" + }, "source": [ - "Change yaml to configure learning" + "Change the yaml to configure the learning specific hyperparameters. For a deep dive explanation of the different parameters we refer again to the solely RL tutorial. **TODO** Erklärung einfügen" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 13, "id": "9c555ce9", - "metadata": {}, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "9c555ce9", + "outputId": "473126ae-3c3e-4698-e3a5-347cc00e5108" + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Configuration YAML file has been saved to 'inputs/tutorial_08\\config.yaml'.\n" + "Configuration YAML file has been saved to 'assume-repo/examples/inputs/tutorial_08/config.yaml'.\n" ] } ], @@ -639,6 +1188,7 @@ " \"end_date\": \"2019-01-01 23:00\",\n", " \"time_step\": \"1h\",\n", " \"save_frequency_hours\": 24,\n", + " \"learning_mode\": \"True\",\n", " \"markets_config\": {\n", " \"zonal\": {\n", " \"operator\": \"EOM_operator\",\n", @@ -690,16 +1240,21 @@ { "cell_type": "markdown", "id": "3f0f38fb", - "metadata": {}, + "metadata": { + "id": "3f0f38fb" + }, "source": [ "For XRL, we need enhanced logging of the learning process, which is not currently a feature of ASSUME itself. Therefore, we are overriding some functions to enable this logging specifically for the purpose of this tutorial." ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 7, "id": "201251c6", - "metadata": {}, + "metadata": { + "cellView": "form", + "id": "201251c6" + }, "outputs": [], "source": [ "# @title Overwrite run_learning function with enhanced logging\n", @@ -906,23 +1461,34 @@ { "cell_type": "markdown", "id": "dcacfe26", - "metadata": {}, + "metadata": { + "id": "dcacfe26" + }, "source": [ - "**Run the example case**" + "**Run the example case**\n", + "\n", + "Now we run the example case similar to before in the market zone tutorial." ] }, { "cell_type": "code", "execution_count": 19, "id": "bfadf522", - "metadata": {}, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "bfadf522", + "outputId": "7c91ab13-a3c2-4e89-d8ac-d20be95391f6" + }, "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ "INFO:assume.world:connected to db\n", - "INFO:assume.scenario.loader_csv:Starting Scenario tutorial_08/zonal_case from inputs\n", + "INFO:assume.scenario.loader_csv:Starting Scenario tutorial_08/zonal_case from assume-repo/examples/inputs\n", "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", @@ -935,810 +1501,2774 @@ "INFO:assume.scenario.loader_csv:Read units from file\n", "INFO:assume.scenario.loader_csv:Adding power_plant units\n", "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 0%| | 0/82800 [00:00 wait_for=>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "/usr/local/lib/python3.10/dist-packages/sympy/geometry/polygon.py:237: RuntimeWarning: coroutine 'MarketRole.opening' was never awaited\n", + " def angles(self):\n", + "RuntimeWarning: Enable tracemalloc to get the object allocation traceback\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[Agent.raise_exceptions()]>\n", + "/usr/local/lib/python3.10/dist-packages/sympy/geometry/polygon.py:237: RuntimeWarning: coroutine 'UnitsOperator.register_market' was never awaited\n", + " def angles(self):\n", + "RuntimeWarning: Enable tracemalloc to get the object allocation traceback\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", + "ERROR:asyncio:Task was destroyed but it is pending!\n", + "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", + "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", + "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", + "INFO:assume.scenario.loader_csv:availability_df not found. Returning None\n", + "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", + "INFO:assume.scenario.loader_csv:price_forecasts not found. Returning None\n", + "INFO:assume.scenario.loader_csv:temperature not found. Returning None\n", + "Training Episodes: 0%| | 0/10 [00:00)\n", + "handle: )>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 304, in __wakeup\n", + " future.result()\n", + " File \"/usr/lib/python3.10/asyncio/futures.py\", line 196, in result\n", + " raise exc\n", + "asyncio.exceptions.CancelledError\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/agent/core.py\", line 434, in raise_exceptions\n", + " raise fut.exception()\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 234, in __step\n", + " result = coro.throw(exc)\n", + "RuntimeError: cannot reuse already awaited coroutine\n", + "ERROR:mango.agent.core:Agent clock: Caught the following exception in _check_inbox: cannot reuse already awaited coroutine\n", + "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", + "handle: )>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 304, in __wakeup\n", + " future.result()\n", + " File \"/usr/lib/python3.10/asyncio/futures.py\", line 196, in result\n", + " raise exc\n", + "asyncio.exceptions.CancelledError\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/agent/core.py\", line 434, in raise_exceptions\n", + " raise fut.exception()\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 234, in __step\n", + " result = coro.throw(exc)\n", + "RuntimeError: cannot reuse already awaited coroutine\n", + "ERROR:mango.agent.core:Agent learning_agent: Caught the following exception in _check_inbox: cannot reuse already awaited coroutine\n", + "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", + "handle: )>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 304, in __wakeup\n", + " future.result()\n", + " File \"/usr/lib/python3.10/asyncio/futures.py\", line 196, in result\n", + " raise exc\n", + "asyncio.exceptions.CancelledError\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/agent/core.py\", line 434, in raise_exceptions\n", + " raise fut.exception()\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 234, in __step\n", + " result = coro.throw(exc)\n", + "RuntimeError: cannot reuse already awaited coroutine\n", + "ERROR:mango.agent.core:Agent EOM_operator: Caught the following exception in _check_inbox: cannot reuse already awaited coroutine\n", + "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", + "handle: )>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 304, in __wakeup\n", + " future.result()\n", + " File \"/usr/lib/python3.10/asyncio/futures.py\", line 196, in result\n", + " raise exc\n", + "asyncio.exceptions.CancelledError\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/agent/core.py\", line 434, in raise_exceptions\n", + " raise fut.exception()\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 234, in __step\n", + " result = coro.throw(exc)\n", + "RuntimeError: cannot reuse already awaited coroutine\n", + "ERROR:mango.agent.core:Agent Operator North: Caught the following exception in _check_inbox: cannot reuse already awaited coroutine\n", + "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", + "handle: )>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 304, in __wakeup\n", + " future.result()\n", + " File \"/usr/lib/python3.10/asyncio/futures.py\", line 196, in result\n", + " raise exc\n", + "asyncio.exceptions.CancelledError\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/agent/core.py\", line 434, in raise_exceptions\n", + " raise fut.exception()\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 234, in __step\n", + " result = coro.throw(exc)\n", + "RuntimeError: cannot reuse already awaited coroutine\n", + "ERROR:mango.agent.core:Agent Operator South: Caught the following exception in _check_inbox: cannot reuse already awaited coroutine\n", + "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", + "handle: )>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 304, in __wakeup\n", + " future.result()\n", + " File \"/usr/lib/python3.10/asyncio/futures.py\", line 196, in result\n", + " raise exc\n", + "asyncio.exceptions.CancelledError\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/agent/core.py\", line 434, in raise_exceptions\n", + " raise fut.exception()\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 234, in __step\n", + " result = coro.throw(exc)\n", + "RuntimeError: cannot reuse already awaited coroutine\n", + "ERROR:mango.agent.core:Agent eom_de: Caught the following exception in _check_inbox: cannot reuse already awaited coroutine\n", + "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", + "handle: )>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 304, in __wakeup\n", + " future.result()\n", + " File \"/usr/lib/python3.10/asyncio/futures.py\", line 196, in result\n", + " raise exc\n", + "asyncio.exceptions.CancelledError\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/agent/core.py\", line 434, in raise_exceptions\n", + " raise fut.exception()\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 234, in __step\n", + " result = coro.throw(exc)\n", + "RuntimeError: cannot reuse already awaited coroutine\n", + "\n", + " 0%| | 1.0/82800 [00:00<4:56:01, 4.66it/s]\u001b[AWARNING:pyomo.common.numeric_types:Dynamically registering the following numeric type:\n", + " torch.Tensor\n", + "Dynamic registration is supported for convenience, but there are known\n", + "limitations to this approach. We recommend explicitly registering\n", + "numeric types using RegisterNumericType() or RegisterIntegerType().\n", + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpf0sv8yov.glpk.raw --wglp /tmp/tmp5asnipvw.glpk.glp --cpxlp\n", + " /tmp/tmpfmwxc953.pyomo.lp\n", + "Reading problem data from '/tmp/tmpfmwxc953.pyomo.lp'...\n", + "/tmp/tmpfmwxc953.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 00:00:00: 4%|▍ | 3601/82800 [00:00<00:07, 10368.18it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 00:00:00: 4%|▍ | 3601.0/82800 [00:00<00:07, 10193.16it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp55pxy9xx.glpk.raw --wglp /tmp/tmpql_afw06.glpk.glp --cpxlp\n", + " /tmp/tmpx6mdl1uh.pyomo.lp\n", + "Reading problem data from '/tmp/tmpx6mdl1uh.pyomo.lp'...\n", + "/tmp/tmpx6mdl1uh.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 01:00:00: 9%|▊ | 7201/82800 [00:00<00:04, 16445.89it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 01:00:00: 9%|▊ | 7201.0/82800 [00:00<00:04, 16817.66it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpb1j_ikxq.glpk.raw --wglp /tmp/tmpezp3razm.glpk.glp --cpxlp\n", + " /tmp/tmpfbbnpt7q.pyomo.lp\n", + "Reading problem data from '/tmp/tmpfbbnpt7q.pyomo.lp'...\n", + "/tmp/tmpfbbnpt7q.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 02:00:00: 13%|█▎ | 10801/82800 [00:00<00:04, 17504.61it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 02:00:00: 13%|█▎ | 10801.0/82800 [00:00<00:03, 20289.50it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp8r2jsxua.glpk.raw --wglp /tmp/tmpa6724_sx.glpk.glp --cpxlp\n", + " /tmp/tmpgjwy19ki.pyomo.lp\n", + "Reading problem data from '/tmp/tmpgjwy19ki.pyomo.lp'...\n", + "/tmp/tmpgjwy19ki.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 03:00:00: 17%|█▋ | 14401/82800 [00:00<00:03, 19578.01it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 03:00:00: 17%|█▋ | 14401.0/82800 [00:00<00:02, 23320.31it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpe8846btc.glpk.raw --wglp /tmp/tmp0ilf7_dz.glpk.glp --cpxlp\n", + " /tmp/tmps6gfx_nx.pyomo.lp\n", + "Reading problem data from '/tmp/tmps6gfx_nx.pyomo.lp'...\n", + "/tmp/tmps6gfx_nx.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 04:00:00: 22%|██▏ | 18001.0/82800 [00:00<00:02, 23916.10it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpond8pqlm.glpk.raw --wglp /tmp/tmpyx1d7zt8.glpk.glp --cpxlp\n", + " /tmp/tmp213byyn9.pyomo.lp\n", + "Reading problem data from '/tmp/tmp213byyn9.pyomo.lp'...\n", + "/tmp/tmp213byyn9.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 05:00:00: 26%|██▌ | 21601.0/82800 [00:01<00:02, 24674.58it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp019fpb63.glpk.raw --wglp /tmp/tmpenhlv7h2.glpk.glp --cpxlp\n", + " /tmp/tmpbknr_2vl.pyomo.lp\n", + "Reading problem data from '/tmp/tmpbknr_2vl.pyomo.lp'...\n", + "/tmp/tmpbknr_2vl.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 06:00:00: 30%|███ | 25201.0/82800 [00:01<00:02, 23638.63it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpa994dw_w.glpk.raw --wglp /tmp/tmph76tkpxl.glpk.glp --cpxlp\n", + " /tmp/tmp0riz9f2a.pyomo.lp\n", + "Reading problem data from '/tmp/tmp0riz9f2a.pyomo.lp'...\n", + "/tmp/tmp0riz9f2a.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 07:00:00: 35%|███▍ | 28801.0/82800 [00:01<00:02, 23175.57it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpdwhwi8rf.glpk.raw --wglp /tmp/tmp60iy59cg.glpk.glp --cpxlp\n", + " /tmp/tmptof5okg8.pyomo.lp\n", + "Reading problem data from '/tmp/tmptof5okg8.pyomo.lp'...\n", + "/tmp/tmptof5okg8.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 08:00:00: 39%|███▉ | 32401.0/82800 [00:01<00:02, 24335.43it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp55hci9a1.glpk.raw --wglp /tmp/tmpi0psaqav.glpk.glp --cpxlp\n", + " /tmp/tmpd657t8ua.pyomo.lp\n", + "Reading problem data from '/tmp/tmpd657t8ua.pyomo.lp'...\n", + "/tmp/tmpd657t8ua.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 09:00:00: 43%|████▎ | 36001.0/82800 [00:01<00:01, 25381.64it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpgn729qmk.glpk.raw --wglp /tmp/tmprb78b6rf.glpk.glp --cpxlp\n", + " /tmp/tmp9w3g0mmd.pyomo.lp\n", + "Reading problem data from '/tmp/tmp9w3g0mmd.pyomo.lp'...\n", + "/tmp/tmp9w3g0mmd.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 10:00:00: 48%|████▊ | 39601.0/82800 [00:01<00:01, 25367.58it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp_i9sychx.glpk.raw --wglp /tmp/tmpvhnix6t0.glpk.glp --cpxlp\n", + " /tmp/tmpzisrcyck.pyomo.lp\n", + "Reading problem data from '/tmp/tmpzisrcyck.pyomo.lp'...\n", + "/tmp/tmpzisrcyck.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 11:00:00: 52%|█████▏ | 43201.0/82800 [00:01<00:01, 25805.98it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpko0qf5mb.glpk.raw --wglp /tmp/tmpwdbqp01a.glpk.glp --cpxlp\n", + " /tmp/tmp5z992p5h.pyomo.lp\n", + "Reading problem data from '/tmp/tmp5z992p5h.pyomo.lp'...\n", + "/tmp/tmp5z992p5h.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 12:00:00: 57%|█████▋ | 46801.0/82800 [00:02<00:01, 26004.28it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpfikht9v2.glpk.raw --wglp /tmp/tmp14s4vgy2.glpk.glp --cpxlp\n", + " /tmp/tmph8p4znaw.pyomo.lp\n", + "Reading problem data from '/tmp/tmph8p4znaw.pyomo.lp'...\n", + "/tmp/tmph8p4znaw.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 13:00:00: 61%|██████ | 50401.0/82800 [00:02<00:01, 24577.70it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmprgvhrh6y.glpk.raw --wglp /tmp/tmp1_6dn0t4.glpk.glp --cpxlp\n", + " /tmp/tmpyapsxfai.pyomo.lp\n", + "Reading problem data from '/tmp/tmpyapsxfai.pyomo.lp'...\n", + "/tmp/tmpyapsxfai.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 14:00:00: 65%|██████▌ | 54001.0/82800 [00:02<00:01, 23890.35it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpe870v_oj.glpk.raw --wglp /tmp/tmpvudm7qsl.glpk.glp --cpxlp\n", + " /tmp/tmpwi094v0g.pyomo.lp\n", + "Reading problem data from '/tmp/tmpwi094v0g.pyomo.lp'...\n", + "/tmp/tmpwi094v0g.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 15:00:00: 70%|██████▉ | 57601.0/82800 [00:02<00:01, 24453.78it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp47qng8zx.glpk.raw --wglp /tmp/tmp03j5ii3a.glpk.glp --cpxlp\n", + " /tmp/tmpb7hqi91q.pyomo.lp\n", + "Reading problem data from '/tmp/tmpb7hqi91q.pyomo.lp'...\n", + "/tmp/tmpb7hqi91q.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 16:00:00: 74%|███████▍ | 61201.0/82800 [00:02<00:00, 24706.79it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp51erzb_a.glpk.raw --wglp /tmp/tmp0iq0mabf.glpk.glp --cpxlp\n", + " /tmp/tmpu5xxl4xp.pyomo.lp\n", + "Reading problem data from '/tmp/tmpu5xxl4xp.pyomo.lp'...\n", + "/tmp/tmpu5xxl4xp.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 17:00:00: 78%|███████▊ | 64801.0/82800 [00:02<00:00, 24981.59it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpvkcz_hrl.glpk.raw --wglp /tmp/tmpznf0t9y6.glpk.glp --cpxlp\n", + " /tmp/tmp2ueg9oj5.pyomo.lp\n", + "Reading problem data from '/tmp/tmp2ueg9oj5.pyomo.lp'...\n", + "/tmp/tmp2ueg9oj5.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 18:00:00: 83%|████████▎ | 68401.0/82800 [00:02<00:00, 24948.07it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp0x3xdbk0.glpk.raw --wglp /tmp/tmpc99m191o.glpk.glp --cpxlp\n", + " /tmp/tmpowun19s9.pyomo.lp\n", + "Reading problem data from '/tmp/tmpowun19s9.pyomo.lp'...\n", + "/tmp/tmpowun19s9.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 19:00:00: 87%|████████▋ | 72001.0/82800 [00:03<00:00, 25113.70it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpbvai91ye.glpk.raw --wglp /tmp/tmpfb_2w9mc.glpk.glp --cpxlp\n", + " /tmp/tmpk5x4i7yq.pyomo.lp\n", + "Reading problem data from '/tmp/tmpk5x4i7yq.pyomo.lp'...\n", + "/tmp/tmpk5x4i7yq.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 20:00:00: 91%|█████████▏| 75601.0/82800 [00:03<00:00, 23751.99it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpsneoef5m.glpk.raw --wglp /tmp/tmps4qx99k7.glpk.glp --cpxlp\n", + " /tmp/tmpnfa4gfd_.pyomo.lp\n", + "Reading problem data from '/tmp/tmpnfa4gfd_.pyomo.lp'...\n", + "/tmp/tmpnfa4gfd_.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_1 2019-01-01 21:00:00: 96%|█████████▌| 79201.0/82800 [00:03<00:00, 20862.94it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpmpzml_n_.glpk.raw --wglp /tmp/tmphy7mcb3t.glpk.glp --cpxlp\n", + " /tmp/tmp13ub5l10.pyomo.lp\n", + "Reading problem data from '/tmp/tmp13ub5l10.pyomo.lp'...\n", + "/tmp/tmp13ub5l10.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "tutorial_08_zonal_case_1 2019-01-01 23:00:00: : 82801.0it [00:03, 23250.79it/s] \n", + "Training Episodes: 10%|█ | 1/10 [00:03<00:32, 3.60s/it]INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n", + "\n", + " 0%| | 0/82800 [00:00 exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 00:00:00: 4%|▍ | 3601.0/82800 [00:00<00:05, 15063.49it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmptw07elbf.glpk.raw --wglp /tmp/tmp0x6dxvb0.glpk.glp --cpxlp\n", + " /tmp/tmpambcx7ro.pyomo.lp\n", + "Reading problem data from '/tmp/tmpambcx7ro.pyomo.lp'...\n", + "/tmp/tmpambcx7ro.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 01:00:00: 9%|▊ | 7201.0/82800 [00:00<00:04, 16453.70it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpbse10e5u.glpk.raw --wglp /tmp/tmpyw23oq3v.glpk.glp --cpxlp\n", + " /tmp/tmpnivr7kob.pyomo.lp\n", + "Reading problem data from '/tmp/tmpnivr7kob.pyomo.lp'...\n", + "/tmp/tmpnivr7kob.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 02:00:00: 13%|█▎ | 10801.0/82800 [00:00<00:04, 17221.35it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpolvkucm1.glpk.raw --wglp /tmp/tmpi_t4m2lc.glpk.glp --cpxlp\n", + " /tmp/tmpvus_8u99.pyomo.lp\n", + "Reading problem data from '/tmp/tmpvus_8u99.pyomo.lp'...\n", + "/tmp/tmpvus_8u99.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 03:00:00: 17%|█▋ | 14401.0/82800 [00:00<00:03, 18374.44it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpgtsp63b2.glpk.raw --wglp /tmp/tmpd68kmvyd.glpk.glp --cpxlp\n", + " /tmp/tmpnawahz9p.pyomo.lp\n", + "Reading problem data from '/tmp/tmpnawahz9p.pyomo.lp'...\n", + "/tmp/tmpnawahz9p.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 04:00:00: 22%|██▏ | 18001.0/82800 [00:01<00:03, 19350.48it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpnlu5ux23.glpk.raw --wglp /tmp/tmpyxwz4s_p.glpk.glp --cpxlp\n", + " /tmp/tmpzos92ejh.pyomo.lp\n", + "Reading problem data from '/tmp/tmpzos92ejh.pyomo.lp'...\n", + "/tmp/tmpzos92ejh.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 05:00:00: 26%|██▌ | 21601.0/82800 [00:01<00:02, 20968.10it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmplq8gqt0k.glpk.raw --wglp /tmp/tmpxq0098y0.glpk.glp --cpxlp\n", + " /tmp/tmpufnkio4j.pyomo.lp\n", + "Reading problem data from '/tmp/tmpufnkio4j.pyomo.lp'...\n", + "/tmp/tmpufnkio4j.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 06:00:00: 30%|███ | 25201.0/82800 [00:01<00:02, 22155.97it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp5dt2b0oc.glpk.raw --wglp /tmp/tmp8o6m8qmi.glpk.glp --cpxlp\n", + " /tmp/tmpgygidn7m.pyomo.lp\n", + "Reading problem data from '/tmp/tmpgygidn7m.pyomo.lp'...\n", + "/tmp/tmpgygidn7m.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 07:00:00: 35%|███▍ | 28801.0/82800 [00:01<00:02, 20999.51it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp3gzdb_r1.glpk.raw --wglp /tmp/tmp51k72zan.glpk.glp --cpxlp\n", + " /tmp/tmpd3g3oslf.pyomo.lp\n", + "Reading problem data from '/tmp/tmpd3g3oslf.pyomo.lp'...\n", + "/tmp/tmpd3g3oslf.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 08:00:00: 39%|███▉ | 32401.0/82800 [00:01<00:02, 20242.02it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpe9x2tjf9.glpk.raw --wglp /tmp/tmpcozapllo.glpk.glp --cpxlp\n", + " /tmp/tmpr9ot36qy.pyomo.lp\n", + "Reading problem data from '/tmp/tmpr9ot36qy.pyomo.lp'...\n", + "/tmp/tmpr9ot36qy.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 09:00:00: 43%|████▎ | 36001.0/82800 [00:01<00:02, 19402.14it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp9t744uu7.glpk.raw --wglp /tmp/tmpstthnk19.glpk.glp --cpxlp\n", + " /tmp/tmprixpurt5.pyomo.lp\n", + "Reading problem data from '/tmp/tmprixpurt5.pyomo.lp'...\n", + "/tmp/tmprixpurt5.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 10:00:00: 48%|████▊ | 39601.0/82800 [00:02<00:02, 19923.94it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpibjig1ky.glpk.raw --wglp /tmp/tmp_0lbb30q.glpk.glp --cpxlp\n", + " /tmp/tmprkynpgr1.pyomo.lp\n", + "Reading problem data from '/tmp/tmprkynpgr1.pyomo.lp'...\n", + "/tmp/tmprkynpgr1.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 11:00:00: 52%|█████▏ | 43201.0/82800 [00:02<00:01, 20449.75it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpr_3fyj2x.glpk.raw --wglp /tmp/tmpfi6fol7b.glpk.glp --cpxlp\n", + " /tmp/tmpde1k0uo2.pyomo.lp\n", + "Reading problem data from '/tmp/tmpde1k0uo2.pyomo.lp'...\n", + "/tmp/tmpde1k0uo2.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 12:00:00: 57%|█████▋ | 46801.0/82800 [00:02<00:01, 19941.06it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpoiy1c0yc.glpk.raw --wglp /tmp/tmpr8jxzs11.glpk.glp --cpxlp\n", + " /tmp/tmp6k_39sav.pyomo.lp\n", + "Reading problem data from '/tmp/tmp6k_39sav.pyomo.lp'...\n", + "/tmp/tmp6k_39sav.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 13:00:00: 61%|██████ | 50401.0/82800 [00:02<00:01, 18864.41it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp1sj1evtg.glpk.raw --wglp /tmp/tmpf60d7krd.glpk.glp --cpxlp\n", + " /tmp/tmpz2yoze5t.pyomo.lp\n", + "Reading problem data from '/tmp/tmpz2yoze5t.pyomo.lp'...\n", + "/tmp/tmpz2yoze5t.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 14:00:00: 65%|██████▌ | 54001.0/82800 [00:02<00:01, 18663.02it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpnnwilo2t.glpk.raw --wglp /tmp/tmpbntwet5y.glpk.glp --cpxlp\n", + " /tmp/tmpwn0651x9.pyomo.lp\n", + "Reading problem data from '/tmp/tmpwn0651x9.pyomo.lp'...\n", + "/tmp/tmpwn0651x9.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 15:00:00: 70%|██████▉ | 57601.0/82800 [00:03<00:01, 18298.76it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpd_uy11ih.glpk.raw --wglp /tmp/tmpzpdoz7rf.glpk.glp --cpxlp\n", + " /tmp/tmprayw9lsw.pyomo.lp\n", + "Reading problem data from '/tmp/tmprayw9lsw.pyomo.lp'...\n", + "/tmp/tmprayw9lsw.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 16:00:00: 74%|███████▍ | 61201.0/82800 [00:03<00:01, 18869.52it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp14nuv6mg.glpk.raw --wglp /tmp/tmpo3r87q3g.glpk.glp --cpxlp\n", + " /tmp/tmp3vdza3z8.pyomo.lp\n", + "Reading problem data from '/tmp/tmp3vdza3z8.pyomo.lp'...\n", + "/tmp/tmp3vdza3z8.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 17:00:00: 78%|███████▊ | 64801.0/82800 [00:03<00:01, 17994.31it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp7k5tzmso.glpk.raw --wglp /tmp/tmpc8pc38cn.glpk.glp --cpxlp\n", + " /tmp/tmpc7vcg1bb.pyomo.lp\n", + "Reading problem data from '/tmp/tmpc7vcg1bb.pyomo.lp'...\n", + "/tmp/tmpc7vcg1bb.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 18:00:00: 83%|████████▎ | 68401.0/82800 [00:03<00:00, 16828.72it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp4l672sh5.glpk.raw --wglp /tmp/tmp6nlohwjm.glpk.glp --cpxlp\n", + " /tmp/tmp7o8efpx4.pyomo.lp\n", + "Reading problem data from '/tmp/tmp7o8efpx4.pyomo.lp'...\n", + "/tmp/tmp7o8efpx4.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 19:00:00: 87%|████████▋ | 72001.0/82800 [00:03<00:00, 17908.43it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpmzs68lr2.glpk.raw --wglp /tmp/tmp0mj_rh12.glpk.glp --cpxlp\n", + " /tmp/tmpt2fkk745.pyomo.lp\n", + "Reading problem data from '/tmp/tmpt2fkk745.pyomo.lp'...\n", + "/tmp/tmpt2fkk745.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 20:00:00: 91%|█████████▏| 75601.0/82800 [00:04<00:00, 18990.48it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpivomrkn6.glpk.raw --wglp /tmp/tmp627sqbtz.glpk.glp --cpxlp\n", + " /tmp/tmppve9nq1t.pyomo.lp\n", + "Reading problem data from '/tmp/tmppve9nq1t.pyomo.lp'...\n", + "/tmp/tmppve9nq1t.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_2 2019-01-01 21:00:00: 96%|█████████▌| 79201.0/82800 [00:04<00:00, 20269.07it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpt98xz8ht.glpk.raw --wglp /tmp/tmpgascxfek.glpk.glp --cpxlp\n", + " /tmp/tmpbwkx71rj.pyomo.lp\n", + "Reading problem data from '/tmp/tmpbwkx71rj.pyomo.lp'...\n", + "/tmp/tmpbwkx71rj.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "tutorial_08_zonal_case_2 2019-01-01 23:00:00: : 82801.0it [00:04, 19574.35it/s] \n", + "Training Episodes: 20%|██ | 2/10 [00:07<00:32, 4.05s/it]INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n", + "\n", + " 0%| | 0/82800 [00:00 exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 00:00:00: 4%|▍ | 3601.0/82800 [00:00<00:05, 14355.75it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpt16tq7d0.glpk.raw --wglp /tmp/tmp0zw37ric.glpk.glp --cpxlp\n", + " /tmp/tmpmc211vqy.pyomo.lp\n", + "Reading problem data from '/tmp/tmpmc211vqy.pyomo.lp'...\n", + "/tmp/tmpmc211vqy.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 01:00:00: 9%|▊ | 7201.0/82800 [00:00<00:03, 20554.01it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp8e0esoa2.glpk.raw --wglp /tmp/tmpx7bh3kjd.glpk.glp --cpxlp\n", + " /tmp/tmpdwx9zyjz.pyomo.lp\n", + "Reading problem data from '/tmp/tmpdwx9zyjz.pyomo.lp'...\n", + "/tmp/tmpdwx9zyjz.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 04:00:00: 22%|██▏ | 18001/82800 [00:00<00:02, 22414.37it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 02:00:00: 13%|█▎ | 10801.0/82800 [00:00<00:03, 22373.84it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpmeyemsh7.glpk.raw --wglp /tmp/tmpcw2adg8v.glpk.glp --cpxlp\n", + " /tmp/tmprhgc3wes.pyomo.lp\n", + "Reading problem data from '/tmp/tmprhgc3wes.pyomo.lp'...\n", + "/tmp/tmprhgc3wes.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 05:00:00: 26%|██▌ | 21601/82800 [00:01<00:02, 23810.62it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 03:00:00: 17%|█▋ | 14401.0/82800 [00:00<00:03, 22644.80it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp3sjdrw0k.glpk.raw --wglp /tmp/tmp_fjd3ap6.glpk.glp --cpxlp\n", + " /tmp/tmpjcy_smhw.pyomo.lp\n", + "Reading problem data from '/tmp/tmpjcy_smhw.pyomo.lp'...\n", + "/tmp/tmpjcy_smhw.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 06:00:00: 30%|███ | 25201/82800 [00:01<00:02, 25770.59it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 04:00:00: 22%|██▏ | 18001.0/82800 [00:00<00:02, 23629.61it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp87k4tn__.glpk.raw --wglp /tmp/tmpth4qqh4l.glpk.glp --cpxlp\n", + " /tmp/tmpdeadx1am.pyomo.lp\n", + "Reading problem data from '/tmp/tmpdeadx1am.pyomo.lp'...\n", + "/tmp/tmpdeadx1am.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 07:00:00: 35%|███▍ | 28801/82800 [00:01<00:02, 26101.95it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 05:00:00: 26%|██▌ | 21601.0/82800 [00:00<00:02, 24455.20it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp2zjwiw40.glpk.raw --wglp /tmp/tmpk20m7gf8.glpk.glp --cpxlp\n", + " /tmp/tmp6smnf8i_.pyomo.lp\n", + "Reading problem data from '/tmp/tmp6smnf8i_.pyomo.lp'...\n", + "/tmp/tmp6smnf8i_.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 08:00:00: 39%|███▉ | 32401/82800 [00:01<00:01, 26708.36it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 06:00:00: 30%|███ | 25201.0/82800 [00:01<00:02, 24087.81it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp0q5hh2yz.glpk.raw --wglp /tmp/tmpo2vjz_wd.glpk.glp --cpxlp\n", + " /tmp/tmpgv492qod.pyomo.lp\n", + "Reading problem data from '/tmp/tmpgv492qod.pyomo.lp'...\n", + "/tmp/tmpgv492qod.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 09:00:00: 43%|████▎ | 36001/82800 [00:01<00:01, 27188.48it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 07:00:00: 35%|███▍ | 28801.0/82800 [00:01<00:02, 23952.26it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpkagy58tc.glpk.raw --wglp /tmp/tmp2j6qp_jl.glpk.glp --cpxlp\n", + " /tmp/tmpuaxsiqyo.pyomo.lp\n", + "Reading problem data from '/tmp/tmpuaxsiqyo.pyomo.lp'...\n", + "/tmp/tmpuaxsiqyo.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 10:00:00: 48%|████▊ | 39601/82800 [00:01<00:01, 26675.60it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 08:00:00: 39%|███▉ | 32401.0/82800 [00:01<00:02, 23760.02it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp5yhim4_4.glpk.raw --wglp /tmp/tmpbna7142e.glpk.glp --cpxlp\n", + " /tmp/tmpkpy85ovz.pyomo.lp\n", + "Reading problem data from '/tmp/tmpkpy85ovz.pyomo.lp'...\n", + "/tmp/tmpkpy85ovz.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 11:00:00: 52%|█████▏ | 43201/82800 [00:01<00:01, 26480.14it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 09:00:00: 43%|████▎ | 36001.0/82800 [00:01<00:01, 24322.08it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmprfjtvhm9.glpk.raw --wglp /tmp/tmpw9aexzmn.glpk.glp --cpxlp\n", + " /tmp/tmprfdi8val.pyomo.lp\n", + "Reading problem data from '/tmp/tmprfdi8val.pyomo.lp'...\n", + "/tmp/tmprfdi8val.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 10:00:00: 48%|████▊ | 39601.0/82800 [00:01<00:01, 23845.30it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpkrrbnupn.glpk.raw --wglp /tmp/tmpjr7l7_wh.glpk.glp --cpxlp\n", + " /tmp/tmpgc8en5f1.pyomo.lp\n", + "Reading problem data from '/tmp/tmpgc8en5f1.pyomo.lp'...\n", + "/tmp/tmpgc8en5f1.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 11:00:00: 52%|█████▏ | 43201.0/82800 [00:01<00:01, 24326.83it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpdxeyze3w.glpk.raw --wglp /tmp/tmpvkf8l8a3.glpk.glp --cpxlp\n", + " /tmp/tmp4gm8ynp1.pyomo.lp\n", + "Reading problem data from '/tmp/tmp4gm8ynp1.pyomo.lp'...\n", + "/tmp/tmp4gm8ynp1.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 12:00:00: 57%|█████▋ | 46801.0/82800 [00:02<00:01, 24439.56it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpxhb916fg.glpk.raw --wglp /tmp/tmpt3mn5wjy.glpk.glp --cpxlp\n", + " /tmp/tmp_bhh30i8.pyomo.lp\n", + "Reading problem data from '/tmp/tmp_bhh30i8.pyomo.lp'...\n", + "/tmp/tmp_bhh30i8.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 13:00:00: 61%|██████ | 50401.0/82800 [00:02<00:01, 23578.78it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp40s83njh.glpk.raw --wglp /tmp/tmpwygq4gh3.glpk.glp --cpxlp\n", + " /tmp/tmpazkbcvor.pyomo.lp\n", + "Reading problem data from '/tmp/tmpazkbcvor.pyomo.lp'...\n", + "/tmp/tmpazkbcvor.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 14:00:00: 65%|██████▌ | 54001.0/82800 [00:02<00:01, 23041.29it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpejpk04ty.glpk.raw --wglp /tmp/tmpscq2syqp.glpk.glp --cpxlp\n", + " /tmp/tmp90xyfpnk.pyomo.lp\n", + "Reading problem data from '/tmp/tmp90xyfpnk.pyomo.lp'...\n", + "/tmp/tmp90xyfpnk.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 15:00:00: 70%|██████▉ | 57601.0/82800 [00:02<00:01, 23733.55it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp22jjnsyh.glpk.raw --wglp /tmp/tmpp6191ieu.glpk.glp --cpxlp\n", + " /tmp/tmpx_injkqi.pyomo.lp\n", + "Reading problem data from '/tmp/tmpx_injkqi.pyomo.lp'...\n", + "/tmp/tmpx_injkqi.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 16:00:00: 74%|███████▍ | 61201.0/82800 [00:02<00:00, 23844.42it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmps__k6p1_.glpk.raw --wglp /tmp/tmpi5excchr.glpk.glp --cpxlp\n", + " /tmp/tmpl7vwmgrb.pyomo.lp\n", + "Reading problem data from '/tmp/tmpl7vwmgrb.pyomo.lp'...\n", + "/tmp/tmpl7vwmgrb.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 17:00:00: 78%|███████▊ | 64801.0/82800 [00:02<00:00, 23188.66it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpxzs6sg2y.glpk.raw --wglp /tmp/tmpwft8utsc.glpk.glp --cpxlp\n", + " /tmp/tmpi78di4gj.pyomo.lp\n", + "Reading problem data from '/tmp/tmpi78di4gj.pyomo.lp'...\n", + "/tmp/tmpi78di4gj.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 18:00:00: 83%|████████▎ | 68401.0/82800 [00:02<00:00, 23099.42it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp1_t4ho6s.glpk.raw --wglp /tmp/tmphfck3df2.glpk.glp --cpxlp\n", + " /tmp/tmph6zwnbnm.pyomo.lp\n", + "Reading problem data from '/tmp/tmph6zwnbnm.pyomo.lp'...\n", + "/tmp/tmph6zwnbnm.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 19:00:00: 87%|████████▋ | 72001.0/82800 [00:03<00:00, 22975.09it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmptgk_g10l.glpk.raw --wglp /tmp/tmp_jq8n4g4.glpk.glp --cpxlp\n", + " /tmp/tmp95cudyvq.pyomo.lp\n", + "Reading problem data from '/tmp/tmp95cudyvq.pyomo.lp'...\n", + "/tmp/tmp95cudyvq.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 20:00:00: 91%|█████████▏| 75601.0/82800 [00:03<00:00, 16696.03it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpau6n4wbi.glpk.raw --wglp /tmp/tmps7yujjug.glpk.glp --cpxlp\n", + " /tmp/tmpqenz8kjz.pyomo.lp\n", + "Reading problem data from '/tmp/tmpqenz8kjz.pyomo.lp'...\n", + "/tmp/tmpqenz8kjz.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 21:00:00: 96%|█████████▌| 79201.0/82800 [00:04<00:00, 11555.84it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp25vtvn5_.glpk.raw --wglp /tmp/tmp_muaqg1h.glpk.glp --cpxlp\n", + " /tmp/tmpi6twmn6s.pyomo.lp\n", + "Reading problem data from '/tmp/tmpi6twmn6s.pyomo.lp'...\n", + "/tmp/tmpi6twmn6s.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_3 2019-01-01 23:00:00: : 82801.0it [00:04, 19678.81it/s]\n", + "Training Episodes: 30%|███ | 3/10 [00:12<00:29, 4.19s/it]INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n", + "\n", + " 0%| | 0/82800 [00:00 exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 00:00:00: 4%|▍ | 3601.0/82800 [00:00<00:04, 17203.09it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpf88z2bg0.glpk.raw --wglp /tmp/tmpn5vl3w_u.glpk.glp --cpxlp\n", + " /tmp/tmp8veys5hk.pyomo.lp\n", + "Reading problem data from '/tmp/tmp8veys5hk.pyomo.lp'...\n", + "/tmp/tmp8veys5hk.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 01:00:00: 9%|▊ | 7201.0/82800 [00:00<00:03, 21178.21it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp9eab_s13.glpk.raw --wglp /tmp/tmpbi8f4t70.glpk.glp --cpxlp\n", + " /tmp/tmpfr_nlni3.pyomo.lp\n", + "Reading problem data from '/tmp/tmpfr_nlni3.pyomo.lp'...\n", + "/tmp/tmpfr_nlni3.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 02:00:00: 13%|█▎ | 10801.0/82800 [00:00<00:03, 22659.63it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp1a1zgm32.glpk.raw --wglp /tmp/tmpw9le5n2d.glpk.glp --cpxlp\n", + " /tmp/tmpza1_7q9r.pyomo.lp\n", + "Reading problem data from '/tmp/tmpza1_7q9r.pyomo.lp'...\n", + "/tmp/tmpza1_7q9r.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 03:00:00: 17%|█▋ | 14401.0/82800 [00:00<00:02, 23171.51it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp_dkto4l0.glpk.raw --wglp /tmp/tmpllvpamz7.glpk.glp --cpxlp\n", + " /tmp/tmpiv_2d8u5.pyomo.lp\n", + "Reading problem data from '/tmp/tmpiv_2d8u5.pyomo.lp'...\n", + "/tmp/tmpiv_2d8u5.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 04:00:00: 22%|██▏ | 18001.0/82800 [00:00<00:02, 23065.75it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp8veh0e3w.glpk.raw --wglp /tmp/tmptblsb08m.glpk.glp --cpxlp\n", + " /tmp/tmp9u3ab1tn.pyomo.lp\n", + "Reading problem data from '/tmp/tmp9u3ab1tn.pyomo.lp'...\n", + "/tmp/tmp9u3ab1tn.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 05:00:00: 26%|██▌ | 21601.0/82800 [00:01<00:02, 22615.46it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpnzkw03m6.glpk.raw --wglp /tmp/tmpwqh28yg0.glpk.glp --cpxlp\n", + " /tmp/tmp1p3ur3wm.pyomo.lp\n", + "Reading problem data from '/tmp/tmp1p3ur3wm.pyomo.lp'...\n", + "/tmp/tmp1p3ur3wm.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 06:00:00: 30%|███ | 25201.0/82800 [00:01<00:02, 23336.23it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpdp4qi5fo.glpk.raw --wglp /tmp/tmpfgmya78p.glpk.glp --cpxlp\n", + " /tmp/tmpa9g0a688.pyomo.lp\n", + "Reading problem data from '/tmp/tmpa9g0a688.pyomo.lp'...\n", + "/tmp/tmpa9g0a688.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 07:00:00: 35%|███▍ | 28801.0/82800 [00:01<00:02, 23990.62it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp4pkjmlts.glpk.raw --wglp /tmp/tmptzg2n0ca.glpk.glp --cpxlp\n", + " /tmp/tmpaghu_aj9.pyomo.lp\n", + "Reading problem data from '/tmp/tmpaghu_aj9.pyomo.lp'...\n", + "/tmp/tmpaghu_aj9.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 08:00:00: 39%|███▉ | 32401.0/82800 [00:01<00:02, 23543.97it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpsqv4_zsp.glpk.raw --wglp /tmp/tmpakz0ri0t.glpk.glp --cpxlp\n", + " /tmp/tmpledf0plv.pyomo.lp\n", + "Reading problem data from '/tmp/tmpledf0plv.pyomo.lp'...\n", + "/tmp/tmpledf0plv.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 09:00:00: 43%|████▎ | 36001.0/82800 [00:01<00:02, 15692.21it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpy6i75ktl.glpk.raw --wglp /tmp/tmpfh5yv0u5.glpk.glp --cpxlp\n", + " /tmp/tmpr4_muo_c.pyomo.lp\n", + "Reading problem data from '/tmp/tmpr4_muo_c.pyomo.lp'...\n", + "/tmp/tmpr4_muo_c.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 10:00:00: 48%|████▊ | 39601.0/82800 [00:01<00:02, 18019.01it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpr0_v6zyz.glpk.raw --wglp /tmp/tmpn3ph9rps.glpk.glp --cpxlp\n", + " /tmp/tmp9vu2z9a1.pyomo.lp\n", + "Reading problem data from '/tmp/tmp9vu2z9a1.pyomo.lp'...\n", + "/tmp/tmp9vu2z9a1.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 11:00:00: 52%|█████▏ | 43201.0/82800 [00:02<00:02, 19771.91it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpn1albn02.glpk.raw --wglp /tmp/tmpsvktmfis.glpk.glp --cpxlp\n", + " /tmp/tmp0_kkve0b.pyomo.lp\n", + "Reading problem data from '/tmp/tmp0_kkve0b.pyomo.lp'...\n", + "/tmp/tmp0_kkve0b.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", + " result = coro.send(None)\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", + " instance, results = market_clearing_opt(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 12:00:00: 57%|█████▋ | 46801.0/82800 [00:02<00:01, 20960.54it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmphhqqze9w.glpk.raw --wglp /tmp/tmpw4ldhuqq.glpk.glp --cpxlp\n", + " /tmp/tmpzfpsmfsl.pyomo.lp\n", + "Reading problem data from '/tmp/tmpzfpsmfsl.pyomo.lp'...\n", + "/tmp/tmpzfpsmfsl.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 12:00:00: 57%|█████▋ | 46801/82800 [00:02<00:01, 26144.45it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 13:00:00: 61%|██████ | 50401.0/82800 [00:02<00:01, 22076.42it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpkeg9zxuz.glpk.raw --wglp /tmp/tmp98s139q4.glpk.glp --cpxlp\n", + " /tmp/tmp061b8nni.pyomo.lp\n", + "Reading problem data from '/tmp/tmp061b8nni.pyomo.lp'...\n", + "/tmp/tmp061b8nni.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 13:00:00: 61%|██████ | 50401/82800 [00:02<00:01, 25340.05it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 14:00:00: 65%|██████▌ | 54001.0/82800 [00:02<00:01, 22468.07it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpx5ybax39.glpk.raw --wglp /tmp/tmpdhvn1d6k.glpk.glp --cpxlp\n", + " /tmp/tmpaiyc4qr8.pyomo.lp\n", + "Reading problem data from '/tmp/tmpaiyc4qr8.pyomo.lp'...\n", + "/tmp/tmpaiyc4qr8.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 14:00:00: 65%|██████▌ | 54001/82800 [00:02<00:01, 25567.01it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 15:00:00: 70%|██████▉ | 57601.0/82800 [00:02<00:01, 21997.66it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpd4925kmg.glpk.raw --wglp /tmp/tmpdu2nlsyh.glpk.glp --cpxlp\n", + " /tmp/tmpyhur6zbz.pyomo.lp\n", + "Reading problem data from '/tmp/tmpyhur6zbz.pyomo.lp'...\n", + "/tmp/tmpyhur6zbz.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 15:00:00: 70%|██████▉ | 57601/82800 [00:02<00:00, 25677.37it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 16:00:00: 74%|███████▍ | 61201.0/82800 [00:02<00:00, 21782.31it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmphktz2rxf.glpk.raw --wglp /tmp/tmp8rc49vwj.glpk.glp --cpxlp\n", + " /tmp/tmpxlusthcq.pyomo.lp\n", + "Reading problem data from '/tmp/tmpxlusthcq.pyomo.lp'...\n", + "/tmp/tmpxlusthcq.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 16:00:00: 74%|███████▍ | 61201/82800 [00:02<00:00, 23504.02it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 17:00:00: 78%|███████▊ | 64801.0/82800 [00:03<00:00, 22494.61it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp_h0elnwc.glpk.raw --wglp /tmp/tmp7vryum3v.glpk.glp --cpxlp\n", + " /tmp/tmpylug0ode.pyomo.lp\n", + "Reading problem data from '/tmp/tmpylug0ode.pyomo.lp'...\n", + "/tmp/tmpylug0ode.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 17:00:00: 78%|███████▊ | 64801/82800 [00:02<00:00, 25143.88it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 18:00:00: 83%|████████▎ | 68401.0/82800 [00:03<00:00, 23176.81it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpgnzrqsxy.glpk.raw --wglp /tmp/tmppttqbekb.glpk.glp --cpxlp\n", + " /tmp/tmpcyjqei4n.pyomo.lp\n", + "Reading problem data from '/tmp/tmpcyjqei4n.pyomo.lp'...\n", + "/tmp/tmpcyjqei4n.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 18:00:00: 83%|████████▎ | 68401/82800 [00:02<00:00, 26110.73it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 19:00:00: 87%|████████▋ | 72001.0/82800 [00:03<00:00, 23074.36it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpnkm3nfui.glpk.raw --wglp /tmp/tmpr46eydah.glpk.glp --cpxlp\n", + " /tmp/tmp5ehx5m8b.pyomo.lp\n", + "Reading problem data from '/tmp/tmp5ehx5m8b.pyomo.lp'...\n", + "/tmp/tmp5ehx5m8b.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 19:00:00: 87%|████████▋ | 72001/82800 [00:03<00:00, 26124.17it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 20:00:00: 91%|█████████▏| 75601.0/82800 [00:03<00:00, 22627.07it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmp6ans92ru.glpk.raw --wglp /tmp/tmpk9egt30z.glpk.glp --cpxlp\n", + " /tmp/tmp_3wuknzb.pyomo.lp\n", + "Reading problem data from '/tmp/tmp_3wuknzb.pyomo.lp'...\n", + "/tmp/tmp_3wuknzb.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 20:00:00: 91%|█████████▏| 75601/82800 [00:03<00:00, 26331.15it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "\n", + "tutorial_08_zonal_case_4 2019-01-01 21:00:00: 96%|█████████▌| 79201.0/82800 [00:03<00:00, 21647.41it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write /tmp/tmpfvzvcpv2.glpk.raw --wglp /tmp/tmpds05wu1f.glpk.glp --cpxlp\n", + " /tmp/tmpcdzc3n9q.pyomo.lp\n", + "Reading problem data from '/tmp/tmpcdzc3n9q.pyomo.lp'...\n", + "/tmp/tmpcdzc3n9q.pyomo.lp:24: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" + " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "tutorial_08_zonal_case_4 2019-01-01 23:00:00: : 82801.0it [00:03, 21847.46it/s] \n", + "Training Episodes: 40%|████ | 4/10 [00:16<00:24, 4.09s/it]INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n", + "\n", + "Training Episodes: 50%|█████ | 5/10 [00:16<00:13, 2.67s/it]\n", + " 0%| | 1.0/82800 [00:00<3:00:09, 7.66it/s]\u001b[AINFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n", + "\n", + "\n", + "Training Episodes: 50%|█████ | 5/10 [00:16<00:16, 3.32s/it]\n" ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 21:00:00: 96%|█████████▌| 79201/82800 [00:03<00:00, 26564.47it/s]" + "ename": "ValueError", + "evalue": "Time must be > 1546304400.0 but is 1546300799.", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 37\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mworld\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlearning_config\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"learning_mode\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 39\u001b[0;31m run_learning(\n\u001b[0m\u001b[1;32m 40\u001b[0m \u001b[0mworld\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 41\u001b[0m \u001b[0minputs_path\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minputs_path\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mrun_learning\u001b[0;34m(world, inputs_path, scenario, study_case, verbose)\u001b[0m\n\u001b[1;32m 122\u001b[0m \u001b[0mworld\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlearning_role\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload_inter_episodic_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minter_episodic_data\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 123\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 124\u001b[0;31m \u001b[0mworld\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 125\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 126\u001b[0m \u001b[0;31m# -----------------------------------------\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/assume/world.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 684\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 685\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 686\u001b[0;31m return self.loop.run_until_complete(\n\u001b[0m\u001b[1;32m 687\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0masync_run\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstart_ts\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mstart_ts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mend_ts\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mend_ts\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 688\u001b[0m )\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/nest_asyncio.py\u001b[0m in \u001b[0;36mrun_until_complete\u001b[0;34m(self, future)\u001b[0m\n\u001b[1;32m 96\u001b[0m raise RuntimeError(\n\u001b[1;32m 97\u001b[0m 'Event loop stopped before Future completed.')\n\u001b[0;32m---> 98\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 99\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_run_once\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.10/asyncio/futures.py\u001b[0m in \u001b[0;36mresult\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 199\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__log_traceback\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 200\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_exception\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 201\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_exception\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwith_traceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_exception_tb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 202\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_result\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 203\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/lib/python3.10/asyncio/tasks.py\u001b[0m in \u001b[0;36m__step\u001b[0;34m(***failed resolving arguments***)\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[0;31m# We use the `send` method directly, because coroutines\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 231\u001b[0m \u001b[0;31m# don't have `__iter__` and `__next__` methods.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 232\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcoro\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 233\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 234\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcoro\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mthrow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/assume/world.py\u001b[0m in \u001b[0;36masync_run\u001b[0;34m(self, start_ts, end_ts)\u001b[0m\n\u001b[1;32m 649\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 650\u001b[0m \u001b[0;31m# allow registration before first opening\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 651\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_time\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstart_ts\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 652\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdistributed_role\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 653\u001b[0m \u001b[0;32mawait\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclock_manager\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbroadcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/mango/util/clock.py\u001b[0m in \u001b[0;36mset_time\u001b[0;34m(self, t)\u001b[0m\n\u001b[1;32m 68\u001b[0m \"\"\"\n\u001b[1;32m 69\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mt\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_time\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 70\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Time must be > {self._time} but is {t}.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 71\u001b[0m \u001b[0;31m# set time\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 72\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_time\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: Time must be > 1546304400.0 but is 1546300799." ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "ERROR:assume.markets.base_market:clearing failed: None of ['gurobi', 'glpk'] are available\n", + "WARNING:assume.markets.base_market:1546308000.0 Market result [(datetime.datetime(2019, 1, 1, 2, 0), datetime.datetime(2019, 1, 1, 3, 0), None)] for market zonal are empty!\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=Exception(\"None of ['gurobi', 'glpk'] are available\")>\n", + "future: exception=KeyboardInterrupt()>\n", "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/world.py\", line 686, in run\n", + " return self.loop.run_until_complete(\n", + " File \"/usr/local/lib/python3.10/dist-packages/nest_asyncio.py\", line 92, in run_until_complete\n", + " self._run_once()\n", + " File \"/usr/local/lib/python3.10/dist-packages/nest_asyncio.py\", line 133, in _run_once\n", + " handle._run()\n", + " File \"/usr/lib/python3.10/asyncio/events.py\", line 80, in _run\n", + " self._context.run(self._callback, *self._args)\n", + " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 498, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 495, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 450, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 242, in market_clearing_opt\n", - " raise Exception(f\"None of {SOLVERS} are available\")\n", - "Exception: None of ['gurobi', 'glpk'] are available\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 23:00:00: : 82801it [00:03, 24831.41it/s] \n" + " File \"/usr/local/lib/python3.10/dist-packages/assume/common/units_operator.py\", line 411, in submit_bids\n", + " orderbook = await self.formulate_bids(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/common/units_operator.py\", line 475, in formulate_bids\n", + " product_bids = unit.calculate_bids(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/common/base.py\", line 109, in calculate_bids\n", + " bids = self.bidding_strategies[market_config.market_id].calculate_bids(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/strategies/naive_strategies.py\", line 42, in calculate_bids\n", + " min_power, max_power = unit.calculate_min_max_power(\n", + " File \"/usr/local/lib/python3.10/dist-packages/assume/units/powerplant.py\", line 349, in calculate_min_max_power\n", + " max_power = max_power.clip(lower=0)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pandas/core/generic.py\", line 9098, in clip\n", + " return self._clip_with_scalar(lower, upper, inplace=inplace)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pandas/core/generic.py\", line 8838, in _clip_with_scalar\n", + " cond = mask | (self >= lower)\n", + " File \"/usr/local/lib/python3.10/dist-packages/pandas/core/ops/common.py\", line 74, in new_method\n", + " other = item_from_zerodim(other)\n", + "KeyboardInterrupt\n", + "\n", + "tutorial_08_zonal_case_5 2019-01-01 01:00:00: : 1546308001.0it [00:00, 3195660900.48it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n" ] } ], @@ -1772,7 +4302,7 @@ "# and the study case name (which config to use for the simulation)\n", "load_scenario_folder(\n", " world,\n", - " inputs_path=\"inputs\",\n", + " inputs_path=inputs_path,\n", " scenario=\"tutorial_08\",\n", " study_case=\"zonal_case\",\n", ")\n", @@ -1783,7 +4313,7 @@ "if world.learning_config.get(\"learning_mode\", False):\n", " run_learning(\n", " world,\n", - " inputs_path=\"inputs\",\n", + " inputs_path=inputs_path,\n", " scenario=\"tutorial_08\",\n", " study_case=\"zonal_case\",\n", " )\n", @@ -1792,19 +4322,52 @@ "world.run()" ] }, + { + "cell_type": "code", + "execution_count": 11, + "id": "DhYXvzaP_iyK", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "DhYXvzaP_iyK", + "outputId": "73259557-0218-42da-ec23-ab7a9713ed54" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "world.learning_config.get(\"learning_mode\", False)" + ] + }, { "cell_type": "markdown", "id": "2194f71b", - "metadata": {}, + "metadata": { + "id": "2194f71b" + }, "source": [ - "**Generate same plotly figure**" + "**Generate same plotly figure**\n", + "\n", + "We use the same code described in the amarket zone tutprial to generate the plotly curve displaying the market price." ] }, { "cell_type": "code", "execution_count": null, "id": "bdb21cbe", - "metadata": {}, + "metadata": { + "id": "bdb21cbe" + }, "outputs": [], "source": [ "# @ title make makret price plotly figure\n", @@ -1884,7 +4447,9 @@ { "cell_type": "markdown", "id": "e77c41cf", - "metadata": {}, + "metadata": { + "id": "e77c41cf" + }, "source": [ "## 2. Explainable AI and SHAP Values \n", "\n", @@ -1894,7 +4459,9 @@ { "cell_type": "markdown", "id": "cbf18570", - "metadata": {}, + "metadata": { + "id": "cbf18570" + }, "source": [ "To follow along with this tutorial, we need some additional libraries." ] @@ -1902,7 +4469,9 @@ { "cell_type": "markdown", "id": "a5ac592c", - "metadata": {}, + "metadata": { + "id": "a5ac592c" + }, "source": [ "- `matplotlib`\n", "- `shap`\n", @@ -1914,6 +4483,7 @@ "execution_count": null, "id": "ae266ecb", "metadata": { + "id": "ae266ecb", "vscode": { "languageId": "shellscript" } @@ -1928,9 +4498,11 @@ { "cell_type": "markdown", "id": "5069ff93", - "metadata": {}, + "metadata": { + "id": "5069ff93" + }, "source": [ - "### 2.1 Understanding Explainable AI \n", + "### 2.1 Understanding Explainable AI\n", "Explainable AI (XAI) refers to techniques and methods that make the behavior and decisions of AI systems understandable to humans. In the context of complex models like deep neural networks, XAI helps to:\n", "- Increase Transparency: Providing insights into how models make decisions.\n", "- Build Trust: Users and stakeholders can trust AI systems if they understand them.\n", @@ -1938,15 +4510,15 @@ "- Improve Models: Identifying weaknesses or biases in models.\n", "\n", "\n", - "### 2.2 Introduction to SHAP Values \n", + "### 2.2 Introduction to SHAP Values\n", "Shapley values are a method from cooperative game theory used to explain the contribution of each feature to the prediction of a machine learning model, such as a neural network. They provide an interpretability technique by distributing the \"payout\" (the prediction) among the input features, attributing the importance of each feature to the prediction.\n", "\n", "For a given prediction, the Shapley value of a feature represents the average contribution of that feature to the prediction, considering all possible combinations of other features.\n", "\n", - "1. **Marginal Contribution**: \n", + "1. **Marginal Contribution**:\n", " The marginal contribution of a feature is the difference between the prediction with and without that feature.\n", "\n", - "2. **Average over all subsets**: \n", + "2. **Average over all subsets**:\n", " The Shapley value is calculated by averaging the marginal contributions over all possible subsets of features.\n", "\n", "The formula for the Shapley value of feature $i$ is:\n", @@ -1980,7 +4552,9 @@ { "cell_type": "markdown", "id": "21d49573", - "metadata": {}, + "metadata": { + "id": "21d49573" + }, "source": [ "## 3. Calculating SHAP values " ] @@ -1988,7 +4562,9 @@ { "cell_type": "markdown", "id": "d16712fc", - "metadata": {}, + "metadata": { + "id": "d16712fc" + }, "source": [ "We will work with:" ] @@ -1996,7 +4572,9 @@ { "cell_type": "markdown", "id": "2c0c1262", - "metadata": {}, + "metadata": { + "id": "2c0c1262" + }, "source": [ "- **Observations (`input_data`)**: These are the inputs to our actor neural network, representing the state of the environment.\n", "- **Trained Actor Model**: A neural network representing the decision making of one RL power plant that outputs actions based on the observations." @@ -2005,7 +4583,9 @@ { "cell_type": "markdown", "id": "2fb6fc14", - "metadata": {}, + "metadata": { + "id": "2fb6fc14" + }, "source": [ "Our goal is to:" ] @@ -2013,7 +4593,9 @@ { "cell_type": "markdown", "id": "e0b69db6", - "metadata": {}, + "metadata": { + "id": "e0b69db6" + }, "source": [ "- Load the observations and the trained actor model.\n", "- Use the model to predict actions.\n", @@ -2023,7 +4605,9 @@ { "cell_type": "markdown", "id": "f870b3e8", - "metadata": {}, + "metadata": { + "id": "f870b3e8" + }, "source": [ "### 3.1. Loading and Preparing Data " ] @@ -2031,7 +4615,9 @@ { "cell_type": "markdown", "id": "aaa7c3d3", - "metadata": {}, + "metadata": { + "id": "aaa7c3d3" + }, "source": [ "First, let's load the necessary libraries and the data." ] @@ -2040,7 +4626,9 @@ "cell_type": "code", "execution_count": null, "id": "b6ee4f28", - "metadata": {}, + "metadata": { + "id": "b6ee4f28" + }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", @@ -2053,7 +4641,9 @@ { "cell_type": "markdown", "id": "aa268f14", - "metadata": {}, + "metadata": { + "id": "aa268f14" + }, "source": [ "the simulation common.py contains utility functions and class definitions\n", "from common import load_observations, Actor" @@ -2062,7 +4652,9 @@ { "cell_type": "markdown", "id": "f866385a", - "metadata": {}, + "metadata": { + "id": "f866385a" + }, "source": [ "**Define the Actor Neural Network Class**" ] @@ -2070,7 +4662,9 @@ { "cell_type": "markdown", "id": "ff7cf03a", - "metadata": {}, + "metadata": { + "id": "ff7cf03a" + }, "source": [ "We define the actor neural network class that will be used to predict actions based on observations." ] @@ -2080,6 +4674,7 @@ "execution_count": null, "id": "7216677a", "metadata": { + "id": "7216677a", "lines_to_next_cell": 1 }, "outputs": [], @@ -2091,7 +4686,9 @@ "cell_type": "code", "execution_count": null, "id": "5a4d6e17", - "metadata": {}, + "metadata": { + "id": "5a4d6e17" + }, "outputs": [], "source": [ "def load_config(file_path):\n", @@ -2137,7 +4734,9 @@ { "cell_type": "markdown", "id": "ddfe95d9", - "metadata": {}, + "metadata": { + "id": "ddfe95d9" + }, "source": [ "We define a utility function to load observations and input data from a specified path. Analyzing the shap values for all observations and all parameters would make this notebook quite lengthy, so we’re filtering the observation data frame to include only 700 observations." ] @@ -2146,7 +4745,9 @@ "cell_type": "code", "execution_count": null, "id": "44862f06", - "metadata": {}, + "metadata": { + "id": "44862f06" + }, "outputs": [], "source": [ "# @title Load observations function\n", @@ -2180,7 +4781,9 @@ { "cell_type": "markdown", "id": "444b8679", - "metadata": {}, + "metadata": { + "id": "444b8679" + }, "source": [ "**Define Paths and Parameters**" ] @@ -2188,7 +4791,9 @@ { "cell_type": "markdown", "id": "7f218d15", - "metadata": {}, + "metadata": { + "id": "7f218d15" + }, "source": [ "Adjust the following paths and parameters according to your data and model." ] @@ -2197,7 +4802,9 @@ "cell_type": "code", "execution_count": null, "id": "8fa78b12", - "metadata": {}, + "metadata": { + "id": "8fa78b12" + }, "outputs": [], "source": [ "path = (\n", @@ -2209,7 +4816,9 @@ "cell_type": "code", "execution_count": null, "id": "8f9189ca", - "metadata": {}, + "metadata": { + "id": "8f9189ca" + }, "outputs": [], "source": [ "# Define feature names (replace with actual feature names)\n", @@ -2222,7 +4831,9 @@ { "cell_type": "markdown", "id": "6c5f1986", - "metadata": {}, + "metadata": { + "id": "6c5f1986" + }, "source": [ "**Load Observations and Input Data**" ] @@ -2230,7 +4841,9 @@ { "cell_type": "markdown", "id": "36ae8f9e", - "metadata": {}, + "metadata": { + "id": "36ae8f9e" + }, "source": [ "Load the observations and input data using the utility function." ] @@ -2239,7 +4852,9 @@ "cell_type": "code", "execution_count": null, "id": "d522969d", - "metadata": {}, + "metadata": { + "id": "d522969d" + }, "outputs": [], "source": [ "df_obs, input_data = load_observations(path, ACTOR_NUM, feature_names)\n", @@ -2250,7 +4865,9 @@ { "cell_type": "markdown", "id": "5d8b9dcf", - "metadata": {}, + "metadata": { + "id": "5d8b9dcf" + }, "source": [ "**Load the Trained Actor Model**" ] @@ -2258,7 +4875,9 @@ { "cell_type": "markdown", "id": "b1b50488", - "metadata": {}, + "metadata": { + "id": "b1b50488" + }, "source": [ "We initialize and load the trained actor neural network." ] @@ -2267,7 +4886,9 @@ "cell_type": "code", "execution_count": null, "id": "4da4de57", - "metadata": {}, + "metadata": { + "id": "4da4de57" + }, "outputs": [], "source": [ "# Initialize the model\n", @@ -2280,7 +4901,9 @@ "cell_type": "code", "execution_count": null, "id": "37adecfa", - "metadata": {}, + "metadata": { + "id": "37adecfa" + }, "outputs": [], "source": [ "ACTOR_NUM = 1 # Replace with the actor number or identifier\n", @@ -2297,7 +4920,9 @@ { "cell_type": "markdown", "id": "d4a63712", - "metadata": {}, + "metadata": { + "id": "d4a63712" + }, "source": [ "Get the actions base on observation tensor we just loaded." ] @@ -2306,7 +4931,9 @@ "cell_type": "code", "execution_count": null, "id": "e6460cfb", - "metadata": {}, + "metadata": { + "id": "e6460cfb" + }, "outputs": [], "source": [ "predictions = []\n", @@ -2322,6 +4949,7 @@ "execution_count": null, "id": "be91cd97", "metadata": { + "id": "be91cd97", "lines_to_next_cell": 2 }, "outputs": [], @@ -2336,7 +4964,9 @@ "cell_type": "code", "execution_count": null, "id": "b21c93c7", - "metadata": {}, + "metadata": { + "id": "b21c93c7" + }, "outputs": [], "source": [ "# Convert data to tensors\n", @@ -2352,7 +4982,9 @@ { "cell_type": "markdown", "id": "ddd1ab1e", - "metadata": {}, + "metadata": { + "id": "ddd1ab1e" + }, "source": [ "## 3.2. Creating a SHAP Explainer " ] @@ -2360,7 +4992,9 @@ { "cell_type": "markdown", "id": "ae7b108b", - "metadata": {}, + "metadata": { + "id": "ae7b108b" + }, "source": [ "We define a prediction function compatible with SHAP and create a Kernel SHAP explainer." ] @@ -2370,6 +5004,7 @@ "execution_count": null, "id": "6d9be211", "metadata": { + "id": "6d9be211", "lines_to_next_cell": 1 }, "outputs": [], @@ -2386,7 +5021,9 @@ "cell_type": "code", "execution_count": null, "id": "f0f7857b", - "metadata": {}, + "metadata": { + "id": "f0f7857b" + }, "outputs": [], "source": [ "# Use a subset of training data for the background dataset\n", @@ -2398,7 +5035,9 @@ "cell_type": "code", "execution_count": null, "id": "84bb96cf", - "metadata": {}, + "metadata": { + "id": "84bb96cf" + }, "outputs": [], "source": [ "# Create the SHAP Kernel Explainer\n", @@ -2409,7 +5048,9 @@ "cell_type": "code", "execution_count": null, "id": "2a7929e4", - "metadata": {}, + "metadata": { + "id": "2a7929e4" + }, "outputs": [], "source": [ "# Calculate SHAP values for the test set\n", @@ -2420,7 +5061,9 @@ "cell_type": "code", "execution_count": null, "id": "44fa277f", - "metadata": {}, + "metadata": { + "id": "44fa277f" + }, "outputs": [], "source": [ "shap_values" @@ -2429,7 +5072,9 @@ { "cell_type": "markdown", "id": "c1f3d550", - "metadata": {}, + "metadata": { + "id": "c1f3d550" + }, "source": [ "## 4. Visualizing SHAP Values " ] @@ -2437,7 +5082,9 @@ { "cell_type": "markdown", "id": "3a0f0cbe", - "metadata": {}, + "metadata": { + "id": "3a0f0cbe" + }, "source": [ "We generate summary plots to visualize feature importance for each output dimension." ] @@ -2446,7 +5093,9 @@ "cell_type": "code", "execution_count": null, "id": "a6af4983", - "metadata": {}, + "metadata": { + "id": "a6af4983" + }, "outputs": [], "source": [ "print(shap_values[0].shape)\n", @@ -2457,7 +5106,9 @@ "cell_type": "code", "execution_count": null, "id": "2e318a5b", - "metadata": {}, + "metadata": { + "id": "2e318a5b" + }, "outputs": [], "source": [ "# Summary plot for the first output dimension\n", @@ -2490,7 +5141,9 @@ { "cell_type": "markdown", "id": "9a888f8b", - "metadata": {}, + "metadata": { + "id": "9a888f8b" + }, "source": [ "The SHAP summary plots show the impact of each feature on the model's predictions for each output dimension (action). Features with larger absolute SHAP values have a more significant influence on the decision-making process of the RL agent." ] @@ -2498,7 +5151,9 @@ { "cell_type": "markdown", "id": "c6c4ce8c", - "metadata": {}, + "metadata": { + "id": "c6c4ce8c" + }, "source": [ "- **Positive SHAP Value**: Indicates that the feature contributes positively to the predicted action value.\n", "- **Negative SHAP Value**: Indicates that the feature contributes negatively to the predicted action value." @@ -2507,7 +5162,9 @@ { "cell_type": "markdown", "id": "86545200", - "metadata": {}, + "metadata": { + "id": "86545200" + }, "source": [ "By analyzing these plots, we can identify which features are most influential and understand how changes in feature values affect the agent's actions." ] @@ -2515,7 +5172,9 @@ { "cell_type": "markdown", "id": "06f3977c", - "metadata": {}, + "metadata": { + "id": "06f3977c" + }, "source": [ "## 5. Conclusion " ] @@ -2523,7 +5182,9 @@ { "cell_type": "markdown", "id": "dadd0a0c", - "metadata": {}, + "metadata": { + "id": "dadd0a0c" + }, "source": [ "In this tutorial, we've demonstrated how to apply SHAP to a reinforcement learning agent to explain its decision-making process. By interpreting the SHAP values, we gain valuable insights into which features influence the agent's actions, enhancing transparency and trust in the model." ] @@ -2531,7 +5192,9 @@ { "cell_type": "markdown", "id": "37633c16", - "metadata": {}, + "metadata": { + "id": "37633c16" + }, "source": [ "Explainability is crucial, especially when deploying RL agents in real-world applications where understanding the rationale behind decisions is essential for safety, fairness, and compliance." ] @@ -2539,7 +5202,9 @@ { "cell_type": "markdown", "id": "8735d66f", - "metadata": {}, + "metadata": { + "id": "8735d66f" + }, "source": [ "## 6. Additional Resources " ] @@ -2547,7 +5212,9 @@ { "cell_type": "markdown", "id": "d6b0332f", - "metadata": {}, + "metadata": { + "id": "d6b0332f" + }, "source": [ "- **SHAP Documentation**: [https://shap.readthedocs.io/en/latest/](https://shap.readthedocs.io/en/latest/)\n", "- **PyTorch Documentation**: [https://pytorch.org/docs/stable/index.html](https://pytorch.org/docs/stable/index.html)\n", @@ -2558,13 +5225,18 @@ { "cell_type": "markdown", "id": "a8cdea5f", - "metadata": {}, + "metadata": { + "id": "a8cdea5f" + }, "source": [ "**Feel free to experiment with the code and explore different explainability techniques. Happy learning!**" ] } ], "metadata": { + "colab": { + "provenance": [] + }, "kernelspec": { "display_name": "Python 3", "language": "python", From 1d3abaeb0c58069171cbad517200a26ec37ff4ae Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Mon, 7 Oct 2024 11:05:30 +0200 Subject: [PATCH 14/27] added tesnor conversion to learning_unit_operator, so that glpk etc can handly bids, which were so far tensors --- .../learning_unit_operator.py | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/assume/reinforcement_learning/learning_unit_operator.py b/assume/reinforcement_learning/learning_unit_operator.py index 3b39715e..3314f983 100644 --- a/assume/reinforcement_learning/learning_unit_operator.py +++ b/assume/reinforcement_learning/learning_unit_operator.py @@ -252,3 +252,43 @@ async def write_to_learning_role( "data": rl_agent_data, }, ) + + async def formulate_bids( + self, market: MarketConfig, products: list[tuple] + ) -> Orderbook: + """ + Formulates the bid to the market according to the bidding strategy of the each unit individually. + + Args: + market (MarketConfig): The market to formulate bids for. + products (list[tuple]): The products to formulate bids for. + + Returns: + OrderBook: The orderbook that is submitted as a bid to the market. + """ + + orderbook: Orderbook = [] + + for unit_id, unit in self.units.items(): + product_bids = unit.calculate_bids( + market, + product_tuples=products, + ) + for i, order in enumerate(product_bids): + order["agent_id"] = (self.context.addr, self.context.aid) + # check for tensors and convert to numpy + if isinstance(order["volume"], th.Tensor): + order["volume"] = order["volume"].cpu().numpy().item() + if isinstance(order["price"], th.Tensor): + order["price"] = order["price"].cpu().numpy().item() + + if market.volume_tick: + order["volume"] = round(order["volume"] / market.volume_tick) + if market.price_tick: + order["price"] = round(order["price"] / market.price_tick) + if "bid_id" not in order.keys() or order["bid_id"] is None: + order["bid_id"] = f"{unit_id}_{i+1}" + order["unit_id"] = unit_id + orderbook.append(order) + + return orderbook From 73039a6bf5919ed45f9534418d0523bde1ab5832 Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Mon, 7 Oct 2024 14:27:22 +0200 Subject: [PATCH 15/27] - make prices exact same value type as rest --- assume/reinforcement_learning/learning_unit_operator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assume/reinforcement_learning/learning_unit_operator.py b/assume/reinforcement_learning/learning_unit_operator.py index 3314f983..2c52d9e1 100644 --- a/assume/reinforcement_learning/learning_unit_operator.py +++ b/assume/reinforcement_learning/learning_unit_operator.py @@ -278,9 +278,9 @@ async def formulate_bids( order["agent_id"] = (self.context.addr, self.context.aid) # check for tensors and convert to numpy if isinstance(order["volume"], th.Tensor): - order["volume"] = order["volume"].cpu().numpy().item() + order["volume"] = np.float64(order["volume"].cpu().numpy()) if isinstance(order["price"], th.Tensor): - order["price"] = order["price"].cpu().numpy().item() + order["price"] = np.float64(order["price"].cpu().numpy()) if market.volume_tick: order["volume"] = round(order["volume"] / market.volume_tick) From 723cc25e3a0a67b44f51496ab2e9cb0250827d76 Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Mon, 7 Oct 2024 14:29:08 +0200 Subject: [PATCH 16/27] - path and file changes to xRL tut --- .../notebooks/09_example_Sim_and_xRL.ipynb | 3611 ++--------------- 1 file changed, 337 insertions(+), 3274 deletions(-) diff --git a/examples/notebooks/09_example_Sim_and_xRL.ipynb b/examples/notebooks/09_example_Sim_and_xRL.ipynb index b77601c9..b16964f3 100644 --- a/examples/notebooks/09_example_Sim_and_xRL.ipynb +++ b/examples/notebooks/09_example_Sim_and_xRL.ipynb @@ -139,7 +139,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "ee220130", "metadata": { "colab": { @@ -147,204 +147,104 @@ "height": 1000 }, "id": "ee220130", - "outputId": "ffd98b47-2b07-41cd-dfe4-ff0381571825" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Collecting assume-framework[learning]\n", - " Downloading assume_framework-0.4.0.post2-py3-none-any.whl.metadata (9.9 kB)\n", - "Collecting argcomplete>=3.1.4 (from assume-framework[learning])\n", - " Downloading argcomplete-3.5.1-py3-none-any.whl.metadata (16 kB)\n", - "Requirement already satisfied: nest-asyncio>=1.5.6 in /usr/local/lib/python3.10/dist-packages (from assume-framework[learning]) (1.6.0)\n", - "Collecting mango-agents-assume>=1.1.4-6 (from assume-framework[learning])\n", - " Downloading mango_agents_assume-1.1.4.post10-py3-none-any.whl.metadata (10.0 kB)\n", - "Requirement already satisfied: numpy<2 in /usr/local/lib/python3.10/dist-packages (from assume-framework[learning]) (1.26.4)\n", - "Requirement already satisfied: tqdm>=4.64.1 in /usr/local/lib/python3.10/dist-packages (from assume-framework[learning]) (4.66.5)\n", - "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from assume-framework[learning]) (2.8.2)\n", - "Requirement already satisfied: sqlalchemy>=2.0.9 in /usr/local/lib/python3.10/dist-packages (from assume-framework[learning]) (2.0.35)\n", - "Requirement already satisfied: pandas>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from assume-framework[learning]) (2.2.2)\n", - "Collecting psycopg2-binary>=2.9.5 (from assume-framework[learning])\n", - " Downloading psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.4 kB)\n", - "Requirement already satisfied: pyyaml>=6.0 in /usr/local/lib/python3.10/dist-packages (from assume-framework[learning]) (6.0.2)\n", - "Collecting pyyaml-include>=2.0 (from assume-framework[learning])\n", - " Downloading pyyaml_include-2.1-py3-none-any.whl.metadata (18 kB)\n", - "Requirement already satisfied: torch>=2.0.1 in /usr/local/lib/python3.10/dist-packages (from assume-framework[learning]) (2.4.1+cu121)\n", - "Collecting dill>=0.3.8 (from mango-agents-assume>=1.1.4-6->assume-framework[learning])\n", - " Downloading dill-0.3.9-py3-none-any.whl.metadata (10 kB)\n", - "Collecting msgspec>=0.18.6 (from mango-agents-assume>=1.1.4-6->assume-framework[learning])\n", - " Downloading msgspec-0.18.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.9 kB)\n", - "Collecting paho-mqtt>=2.1.0 (from mango-agents-assume>=1.1.4-6->assume-framework[learning])\n", - " Downloading paho_mqtt-2.1.0-py3-none-any.whl.metadata (23 kB)\n", - "Collecting protobuf==5.27.2 (from mango-agents-assume>=1.1.4-6->assume-framework[learning])\n", - " Downloading protobuf-5.27.2-cp38-abi3-manylinux2014_x86_64.whl.metadata (592 bytes)\n", - "Collecting python-dateutil>=2.8.2 (from assume-framework[learning])\n", - " Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)\n", - "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=2.0.0->assume-framework[learning]) (2024.2)\n", - "Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.10/dist-packages (from pandas>=2.0.0->assume-framework[learning]) (2024.2)\n", - "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->assume-framework[learning]) (1.16.0)\n", - "Requirement already satisfied: fsspec>=2021.04.0 in /usr/local/lib/python3.10/dist-packages (from pyyaml-include>=2.0->assume-framework[learning]) (2024.6.1)\n", - "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.10/dist-packages (from pyyaml-include>=2.0->assume-framework[learning]) (4.12.2)\n", - "Requirement already satisfied: greenlet!=0.4.17 in /usr/local/lib/python3.10/dist-packages (from sqlalchemy>=2.0.9->assume-framework[learning]) (3.1.1)\n", - "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from torch>=2.0.1->assume-framework[learning]) (3.16.1)\n", - "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch>=2.0.1->assume-framework[learning]) (1.13.3)\n", - "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch>=2.0.1->assume-framework[learning]) (3.3)\n", - "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch>=2.0.1->assume-framework[learning]) (3.1.4)\n", - "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch>=2.0.1->assume-framework[learning]) (2.1.5)\n", - "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from sympy->torch>=2.0.1->assume-framework[learning]) (1.3.0)\n", - "Downloading argcomplete-3.5.1-py3-none-any.whl (43 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m43.5/43.5 kB\u001b[0m \u001b[31m2.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading mango_agents_assume-1.1.4.post10-py3-none-any.whl (62 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.4/62.4 kB\u001b[0m \u001b[31m4.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading protobuf-5.27.2-cp38-abi3-manylinux2014_x86_64.whl (309 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m309.3/309.3 kB\u001b[0m \u001b[31m10.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading psycopg2_binary-2.9.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.0/3.0 MB\u001b[0m \u001b[31m57.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m229.9/229.9 kB\u001b[0m \u001b[31m16.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading pyyaml_include-2.1-py3-none-any.whl (28 kB)\n", - "Downloading assume_framework-0.4.0.post2-py3-none-any.whl (246 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m246.2/246.2 kB\u001b[0m \u001b[31m17.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading dill-0.3.9-py3-none-any.whl (119 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m119.4/119.4 kB\u001b[0m \u001b[31m8.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading msgspec-0.18.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (210 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m210.3/210.3 kB\u001b[0m \u001b[31m15.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading paho_mqtt-2.1.0-py3-none-any.whl (67 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m67.2/67.2 kB\u001b[0m \u001b[31m4.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hInstalling collected packages: pyyaml-include, python-dateutil, psycopg2-binary, protobuf, paho-mqtt, msgspec, dill, argcomplete, mango-agents-assume, assume-framework\n", - " Attempting uninstall: python-dateutil\n", - " Found existing installation: python-dateutil 2.8.2\n", - " Uninstalling python-dateutil-2.8.2:\n", - " Successfully uninstalled python-dateutil-2.8.2\n", - " Attempting uninstall: protobuf\n", - " Found existing installation: protobuf 3.20.3\n", - " Uninstalling protobuf-3.20.3:\n", - " Successfully uninstalled protobuf-3.20.3\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", - "google-ai-generativelanguage 0.6.6 requires protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.19.5, but you have protobuf 5.27.2 which is incompatible.\n", - "google-cloud-datastore 2.19.0 requires protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.19.5, but you have protobuf 5.27.2 which is incompatible.\n", - "google-cloud-firestore 2.16.1 requires protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.19.5, but you have protobuf 5.27.2 which is incompatible.\n", - "tensorboard 2.17.0 requires protobuf!=4.24.0,<5.0.0,>=3.19.6, but you have protobuf 5.27.2 which is incompatible.\n", - "tensorflow 2.17.0 requires protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3, but you have protobuf 5.27.2 which is incompatible.\n", - "tensorflow-metadata 1.15.0 requires protobuf<4.21,>=3.20.3; python_version < \"3.11\", but you have protobuf 5.27.2 which is incompatible.\u001b[0m\u001b[31m\n", - "\u001b[0mSuccessfully installed argcomplete-3.5.1 assume-framework-0.4.0.post2 dill-0.3.9 mango-agents-assume-1.1.4.post10 msgspec-0.18.6 paho-mqtt-2.1.0 protobuf-5.27.2 psycopg2-binary-2.9.9 python-dateutil-2.9.0.post0 pyyaml-include-2.1\n" - ] - }, - { - "data": { - "application/vnd.colab-display-data+json": { - "id": "5bd36a4bde024ee1bea1d8fe663e99d9", - "pip_warning": { - "packages": [ - "dateutil" - ] - } - } - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: plotly in /usr/local/lib/python3.10/dist-packages (5.24.1)\n", - "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly) (9.0.0)\n", - "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from plotly) (24.1)\n", - "^C\n", - "Cloning into 'assume-repo'...\n", - "remote: Enumerating objects: 10788, done.\u001b[K\n", - "remote: Counting objects: 100% (4342/4342), done.\u001b[K\n", - "remote: Compressing objects: 100% (1458/1458), done.\u001b[K\n" - ] + "outputId": "ffd98b47-2b07-41cd-dfe4-ff0381571825", + "vscode": { + "languageId": "shellscript" } - ], + }, + "outputs": [], "source": [ - "!pip install 'assume-framework[learning]'\n", - "!pip install plotly\n", - "!git clone https://github.com/assume-framework/assume.git assume-repo" + "#!pip install 'assume-framework[learning]'\n", + "#!pip install plotly\n", + "#!git clone https://github.com/assume-framework/assume.git assume-repo" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "id": "Hn_DvrqR7oK2", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Hn_DvrqR7oK2", - "outputId": "391046fd-90d9-4967-b919-52c49f13a9f8" + "outputId": "391046fd-90d9-4967-b919-52c49f13a9f8", + "vscode": { + "languageId": "shellscript" + } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Collecting pyomo\n", - " Downloading Pyomo-6.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (8.0 kB)\n", - "Collecting ply (from pyomo)\n", - " Downloading ply-3.11-py2.py3-none-any.whl.metadata (844 bytes)\n", - "Downloading Pyomo-6.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.3 MB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m13.3/13.3 MB\u001b[0m \u001b[31m57.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hDownloading ply-3.11-py2.py3-none-any.whl (49 kB)\n", - "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m49.6/49.6 kB\u001b[0m \u001b[31m3.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", - "\u001b[?25hInstalling collected packages: ply, pyomo\n", - "Successfully installed ply-3.11 pyomo-6.8.0\n", - "Selecting previously unselected package libsuitesparseconfig5:amd64.\n", - "(Reading database ... 123620 files and directories currently installed.)\n", - "Preparing to unpack .../libsuitesparseconfig5_1%3a5.10.1+dfsg-4build1_amd64.deb ...\n", - "Unpacking libsuitesparseconfig5:amd64 (1:5.10.1+dfsg-4build1) ...\n", - "Selecting previously unselected package libamd2:amd64.\n", - "Preparing to unpack .../libamd2_1%3a5.10.1+dfsg-4build1_amd64.deb ...\n", - "Unpacking libamd2:amd64 (1:5.10.1+dfsg-4build1) ...\n", - "Selecting previously unselected package libcolamd2:amd64.\n", - "Preparing to unpack .../libcolamd2_1%3a5.10.1+dfsg-4build1_amd64.deb ...\n", - "Unpacking libcolamd2:amd64 (1:5.10.1+dfsg-4build1) ...\n", - "Selecting previously unselected package libglpk40:amd64.\n", - "Preparing to unpack .../libglpk40_5.0-1_amd64.deb ...\n", - "Unpacking libglpk40:amd64 (5.0-1) ...\n", - "Selecting previously unselected package glpk-utils.\n", - "Preparing to unpack .../glpk-utils_5.0-1_amd64.deb ...\n", - "Unpacking glpk-utils (5.0-1) ...\n", - "Setting up libsuitesparseconfig5:amd64 (1:5.10.1+dfsg-4build1) ...\n", - "Setting up libamd2:amd64 (1:5.10.1+dfsg-4build1) ...\n", - "Setting up libcolamd2:amd64 (1:5.10.1+dfsg-4build1) ...\n", - "Setting up libglpk40:amd64 (5.0-1) ...\n", - "Setting up glpk-utils (5.0-1) ...\n", - "Processing triggers for man-db (2.10.2-1) ...\n", - "Processing triggers for libc-bin (2.35-0ubuntu3.4) ...\n", - "/sbin/ldconfig.real: /usr/local/lib/libtbbbind_2_5.so.3 is not a symbolic link\n", - "\n", - "/sbin/ldconfig.real: /usr/local/lib/libtbbbind_2_0.so.3 is not a symbolic link\n", - "\n", - "/sbin/ldconfig.real: /usr/local/lib/libtbbmalloc.so.2 is not a symbolic link\n", - "\n", - "/sbin/ldconfig.real: /usr/local/lib/libur_adapter_level_zero.so.0 is not a symbolic link\n", - "\n", - "/sbin/ldconfig.real: /usr/local/lib/libtbbmalloc_proxy.so.2 is not a symbolic link\n", - "\n", - "/sbin/ldconfig.real: /usr/local/lib/libtbb.so.12 is not a symbolic link\n", - "\n", - "/sbin/ldconfig.real: /usr/local/lib/libur_adapter_opencl.so.0 is not a symbolic link\n", - "\n", - "/sbin/ldconfig.real: /usr/local/lib/libur_loader.so.0 is not a symbolic link\n", - "\n", - "/sbin/ldconfig.real: /usr/local/lib/libtbbbind.so.3 is not a symbolic link\n", - "\n" + "Collecting nbconvert\n", + " Using cached nbconvert-7.16.4-py3-none-any.whl.metadata (8.5 kB)\n", + "Collecting beautifulsoup4 (from nbconvert)\n", + " Using cached beautifulsoup4-4.12.3-py3-none-any.whl.metadata (3.8 kB)\n", + "Collecting bleach!=5.0.0 (from nbconvert)\n", + " Using cached bleach-6.1.0-py3-none-any.whl.metadata (30 kB)\n", + "Collecting defusedxml (from nbconvert)\n", + " Using cached defusedxml-0.7.1-py2.py3-none-any.whl.metadata (32 kB)\n", + "Requirement already satisfied: jinja2>=3.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbconvert) (3.1.4)\n", + "Requirement already satisfied: jupyter-core>=4.7 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbconvert) (5.7.2)\n", + "Collecting jupyterlab-pygments (from nbconvert)\n", + " Using cached jupyterlab_pygments-0.3.0-py3-none-any.whl.metadata (4.4 kB)\n", + "Requirement already satisfied: markupsafe>=2.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbconvert) (2.1.5)\n", + "Collecting mistune<4,>=2.0.3 (from nbconvert)\n", + " Using cached mistune-3.0.2-py3-none-any.whl.metadata (1.7 kB)\n", + "Collecting nbclient>=0.5.0 (from nbconvert)\n", + " Using cached nbclient-0.10.0-py3-none-any.whl.metadata (7.8 kB)\n", + "Requirement already satisfied: nbformat>=5.7 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbconvert) (5.10.4)\n", + "Requirement already satisfied: packaging in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbconvert) (24.1)\n", + "Collecting pandocfilters>=1.4.1 (from nbconvert)\n", + " Using cached pandocfilters-1.5.1-py2.py3-none-any.whl.metadata (9.0 kB)\n", + "Requirement already satisfied: pygments>=2.4.1 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbconvert) (2.18.0)\n", + "Collecting tinycss2 (from nbconvert)\n", + " Using cached tinycss2-1.3.0-py3-none-any.whl.metadata (3.0 kB)\n", + "Requirement already satisfied: traitlets>=5.1 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbconvert) (5.14.3)\n", + "Requirement already satisfied: six>=1.9.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from bleach!=5.0.0->nbconvert) (1.16.0)\n", + "Collecting webencodings (from bleach!=5.0.0->nbconvert)\n", + " Using cached webencodings-0.5.1-py2.py3-none-any.whl.metadata (2.1 kB)\n", + "Requirement already satisfied: platformdirs>=2.5 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jupyter-core>=4.7->nbconvert) (4.2.2)\n", + "Requirement already satisfied: pywin32>=300 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jupyter-core>=4.7->nbconvert) (306)\n", + "Requirement already satisfied: jupyter-client>=6.1.12 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbclient>=0.5.0->nbconvert) (8.6.3)\n", + "Requirement already satisfied: fastjsonschema>=2.15 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbformat>=5.7->nbconvert) (2.20.0)\n", + "Requirement already satisfied: jsonschema>=2.6 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbformat>=5.7->nbconvert) (4.23.0)\n", + "Collecting soupsieve>1.2 (from beautifulsoup4->nbconvert)\n", + " Using cached soupsieve-2.6-py3-none-any.whl.metadata (4.6 kB)\n", + "Requirement already satisfied: attrs>=22.2.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jsonschema>=2.6->nbformat>=5.7->nbconvert) (24.2.0)\n", + "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jsonschema>=2.6->nbformat>=5.7->nbconvert) (2023.12.1)\n", + "Requirement already satisfied: referencing>=0.28.4 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jsonschema>=2.6->nbformat>=5.7->nbconvert) (0.35.1)\n", + "Requirement already satisfied: rpds-py>=0.7.1 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jsonschema>=2.6->nbformat>=5.7->nbconvert) (0.20.0)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jupyter-client>=6.1.12->nbclient>=0.5.0->nbconvert) (2.9.0)\n", + "Requirement already satisfied: pyzmq>=23.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jupyter-client>=6.1.12->nbclient>=0.5.0->nbconvert) (26.2.0)\n", + "Requirement already satisfied: tornado>=6.2 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jupyter-client>=6.1.12->nbclient>=0.5.0->nbconvert) (6.4.1)\n", + "Using cached nbconvert-7.16.4-py3-none-any.whl (257 kB)\n", + "Using cached bleach-6.1.0-py3-none-any.whl (162 kB)\n", + "Using cached mistune-3.0.2-py3-none-any.whl (47 kB)\n", + "Using cached nbclient-0.10.0-py3-none-any.whl (25 kB)\n", + "Using cached pandocfilters-1.5.1-py2.py3-none-any.whl (8.7 kB)\n", + "Using cached beautifulsoup4-4.12.3-py3-none-any.whl (147 kB)\n", + "Using cached defusedxml-0.7.1-py2.py3-none-any.whl (25 kB)\n", + "Using cached jupyterlab_pygments-0.3.0-py3-none-any.whl (15 kB)\n", + "Using cached tinycss2-1.3.0-py3-none-any.whl (22 kB)\n", + "Using cached soupsieve-2.6-py3-none-any.whl (36 kB)\n", + "Using cached webencodings-0.5.1-py2.py3-none-any.whl (11 kB)\n", + "Installing collected packages: webencodings, tinycss2, soupsieve, pandocfilters, mistune, jupyterlab-pygments, defusedxml, bleach, beautifulsoup4, nbclient, nbconvert\n", + "Successfully installed beautifulsoup4-4.12.3 bleach-6.1.0 defusedxml-0.7.1 jupyterlab-pygments-0.3.0 mistune-3.0.2 nbclient-0.10.0 nbconvert-7.16.4 pandocfilters-1.5.1 soupsieve-2.6 tinycss2-1.3.0 webencodings-0.5.1\n" ] } ], "source": [ - "!pip install pyomo\n", - "!apt-get install -y -qq glpk-utils" + "#!pip install pyomo\n", + "#!apt-get install -y -qq glpk-utils\n", + "!pip install nbconvert" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "75cd480a", "metadata": { "id": "75cd480a" @@ -364,7 +264,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "bfd1daf2", "metadata": { "colab": { @@ -378,7 +278,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "assume-repo/examples/inputs\n" + "../inputs\n" ] } ], @@ -396,16 +296,6 @@ "print(inputs_path)" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "4sfWyPgJ-Hq5", - "metadata": { - "id": "4sfWyPgJ-Hq5" - }, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", "id": "636ea9ae", @@ -418,7 +308,51 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, + "id": "988d3e15", + "metadata": { + "vscode": { + "languageId": "shellscript" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[WinError 2] Das System kann die angegebene Datei nicht finden: 'content'\n", + "c:\\Users\\tg3533\\Documents\\Code\\assume\\examples\\notebooks\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook 08_market_zone_coupling.ipynb to notebook\n", + "C:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\zmq\\_future.py:724: RuntimeWarning: Proactor event loop does not implement add_reader family of methods required for zmq. Registering an additional selector thread for add_reader support via tornado. Use `asyncio.set_event_loop_policy(WindowsSelectorEventLoopPolicy())` to avoid this warning.\n", + " self._get_loop()\n", + "[NbConvertApp] Writing 188324 bytes to output.ipynb\n", + "Der Befehl \"cp\" ist entweder falsch geschrieben oder\n", + "konnte nicht gefunden werden.\n" + ] + } + ], + "source": [ + "#if used locally\n", + "#%cd assume/examples/notebooks/\n", + "\n", + "# if used in colab\n", + "#%cd assume-repo/examples/notebooks/\n", + "\n", + "#!jupyter nbconvert --to notebook --execute --ExecutePreprocessor.timeout=60 --output output.ipynb 08_market_zone_coupling.ipynb\n", + " \n", + "#%cd content\n", + "#!cp -r assume-repo/examples/notebooks/inputs ." + ] + }, + { + "cell_type": "code", + "execution_count": 3, "id": "233f315b", "metadata": { "colab": { @@ -475,7 +409,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "id": "b205256f", "metadata": { "colab": { @@ -488,15 +422,8 @@ "outputs": [ { "data": { - "application/vnd.google.colaboratory.intrinsic+json": { - "summary": "{\n \"name\": \"powerplant_units\",\n \"rows\": 20,\n \"fields\": [\n {\n \"column\": \"name\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 20,\n \"samples\": [\n \"Unit 1\",\n \"Unit 18\",\n \"Unit 16\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"technology\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"nuclear\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"bidding_zonal\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"pp_learning\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"fuel_type\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"uranium\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"emission_factor\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 0.0,\n \"max\": 0.0,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"max_power\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 894.4271909999159,\n \"min\": 1000.0,\n \"max\": 5000.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 5000.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"min_power\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 0.0,\n \"max\": 0.0,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"efficiency\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 5.695323946259567e-17,\n \"min\": 0.3,\n \"max\": 0.3,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.3\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"additional_cost\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 5,\n \"min\": 5,\n \"max\": 24,\n \"num_unique_values\": 20,\n \"samples\": [\n 5\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"node\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"north_1\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"unit_operator\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"Operator South\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}", - "type": "dataframe", - "variable_name": "powerplant_units" - }, "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" + "" ], "text/plain": [ - " name technology bidding_zonal fuel_type emission_factor max_power \\\n", - "0 Unit 1 nuclear naive_eom uranium 0.0 1000.0 \n", - "1 Unit 2 nuclear naive_eom uranium 0.0 1000.0 \n", - "2 Unit 3 nuclear naive_eom uranium 0.0 1000.0 \n", - "3 Unit 4 nuclear naive_eom uranium 0.0 1000.0 \n", - "4 Unit 5 nuclear naive_eom uranium 0.0 1000.0 \n", - "5 Unit 6 nuclear naive_eom uranium 0.0 1000.0 \n", - "6 Unit 7 nuclear naive_eom uranium 0.0 1000.0 \n", - "7 Unit 8 nuclear naive_eom uranium 0.0 1000.0 \n", - "8 Unit 9 nuclear naive_eom uranium 0.0 1000.0 \n", - "9 Unit 10 nuclear naive_eom uranium 0.0 1000.0 \n", - "10 Unit 11 nuclear naive_eom uranium 0.0 1000.0 \n", - "11 Unit 12 nuclear naive_eom uranium 0.0 1000.0 \n", - "12 Unit 13 nuclear naive_eom uranium 0.0 1000.0 \n", - "13 Unit 14 nuclear naive_eom uranium 0.0 1000.0 \n", - "14 Unit 15 nuclear naive_eom uranium 0.0 1000.0 \n", - "15 Unit 16 nuclear naive_eom uranium 0.0 1000.0 \n", - "16 Unit 17 nuclear naive_eom uranium 0.0 1000.0 \n", - "17 Unit 18 nuclear naive_eom uranium 0.0 1000.0 \n", - "18 Unit 19 nuclear naive_eom uranium 0.0 1000.0 \n", - "19 Unit 20 nuclear pp_learning uranium 0.0 5000.0 \n", + " Unnamed: 0.3 Unnamed: 0.2 Unnamed: 0.1 Unnamed: 0 name technology \\\n", + "0 0 0 0 0 Unit 1 nuclear \n", + "1 1 1 1 1 Unit 2 nuclear \n", + "2 2 2 2 2 Unit 3 nuclear \n", + "3 3 3 3 3 Unit 4 nuclear \n", + "4 4 4 4 4 Unit 5 nuclear \n", + "5 5 5 5 5 Unit 6 nuclear \n", + "6 6 6 6 6 Unit 7 nuclear \n", + "7 7 7 7 7 Unit 8 nuclear \n", + "8 8 8 8 8 Unit 9 nuclear \n", + "9 9 9 9 9 Unit 10 nuclear \n", + "10 10 10 10 10 Unit 11 nuclear \n", + "11 11 11 11 11 Unit 12 nuclear \n", + "12 12 12 12 12 Unit 13 nuclear \n", + "13 13 13 13 13 Unit 14 nuclear \n", + "14 14 14 14 14 Unit 15 nuclear \n", + "15 15 15 15 15 Unit 16 nuclear \n", + "16 16 16 16 16 Unit 17 nuclear \n", + "17 17 17 17 17 Unit 18 nuclear \n", + "18 18 18 18 18 Unit 19 nuclear \n", + "19 19 19 19 19 Unit 20 nuclear \n", + "\n", + " bidding_zonal fuel_type emission_factor max_power min_power efficiency \\\n", + "0 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "1 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "2 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "3 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "4 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "5 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "6 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "7 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "8 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "9 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "10 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "11 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "12 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "13 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "14 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "15 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "16 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "17 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "18 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", + "19 pp_learning uranium 0.0 5000.0 0.0 0.3 \n", "\n", - " min_power efficiency additional_cost node unit_operator \n", - "0 0.0 0.3 5 north_1 Operator North \n", - "1 0.0 0.3 6 north_1 Operator North \n", - "2 0.0 0.3 7 north_1 Operator North \n", - "3 0.0 0.3 8 north_1 Operator North \n", - "4 0.0 0.3 9 north_1 Operator North \n", - "5 0.0 0.3 10 north_1 Operator North \n", - "6 0.0 0.3 11 north_1 Operator North \n", - "7 0.0 0.3 12 north_1 Operator North \n", - "8 0.0 0.3 13 north_2 Operator North \n", - "9 0.0 0.3 14 north_2 Operator North \n", - "10 0.0 0.3 15 north_2 Operator North \n", - "11 0.0 0.3 16 north_2 Operator North \n", - "12 0.0 0.3 17 north_2 Operator North \n", - "13 0.0 0.3 18 north_2 Operator North \n", - "14 0.0 0.3 19 north_2 Operator North \n", - "15 0.0 0.3 20 south Operator South \n", - "16 0.0 0.3 21 south Operator South \n", - "17 0.0 0.3 22 south Operator South \n", - "18 0.0 0.3 23 south Operator South \n", - "19 0.0 0.3 24 south Operator South " + " additional_cost node unit_operator \n", + "0 5 north_1 Operator North \n", + "1 6 north_1 Operator North \n", + "2 7 north_1 Operator North \n", + "3 8 north_1 Operator North \n", + "4 9 north_1 Operator North \n", + "5 10 north_1 Operator North \n", + "6 11 north_1 Operator North \n", + "7 12 north_1 Operator North \n", + "8 13 north_2 Operator North \n", + "9 14 north_2 Operator North \n", + "10 15 north_2 Operator North \n", + "11 16 north_2 Operator North \n", + "12 17 north_2 Operator North \n", + "13 18 north_2 Operator North \n", + "14 19 north_2 Operator North \n", + "15 20 south Operator South \n", + "16 21 south Operator South \n", + "17 22 south Operator South \n", + "18 23 south Operator South \n", + "19 24 south Operator-RL " ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -1135,12 +904,15 @@ "powerplant_units.loc[19, \"bidding_zonal\"] = \"pp_learning\"\n", "powerplant_units.loc[19, \"max_power\"] = 5000\n", "\n", + "# assig specific RL unit operator to plant\n", + "powerplant_units.loc[19, \"unit_operator\"] = \"Operator-RL\"\n", + "\n", "powerplant_units" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 7, "id": "QBTGrw62_5I7", "metadata": { "id": "QBTGrw62_5I7" @@ -1163,7 +935,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 8, "id": "9c555ce9", "metadata": { "colab": { @@ -1177,7 +949,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Configuration YAML file has been saved to 'assume-repo/examples/inputs/tutorial_08/config.yaml'.\n" + "Configuration YAML file has been saved to '../inputs\\tutorial_08\\config.yaml'.\n" ] } ], @@ -1249,7 +1021,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "id": "201251c6", "metadata": { "cellView": "form", @@ -1472,7 +1244,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 5, "id": "bfadf522", "metadata": { "colab": { @@ -1484,11 +1256,11 @@ }, "outputs": [ { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ "INFO:assume.world:connected to db\n", - "INFO:assume.scenario.loader_csv:Starting Scenario tutorial_08/zonal_case from assume-repo/examples/inputs\n", + "INFO:assume.scenario.loader_csv:Starting Scenario tutorial_08/zonal_case from ../inputs\n", "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", @@ -1501,2774 +1273,65 @@ "INFO:assume.scenario.loader_csv:Read units from file\n", "INFO:assume.scenario.loader_csv:Adding power_plant units\n", "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for=>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "/usr/local/lib/python3.10/dist-packages/sympy/geometry/polygon.py:237: RuntimeWarning: coroutine 'MarketRole.opening' was never awaited\n", - " def angles(self):\n", - "RuntimeWarning: Enable tracemalloc to get the object allocation traceback\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[Agent.raise_exceptions()]>\n", - "/usr/local/lib/python3.10/dist-packages/sympy/geometry/polygon.py:237: RuntimeWarning: coroutine 'UnitsOperator.register_market' was never awaited\n", - " def angles(self):\n", - "RuntimeWarning: Enable tracemalloc to get the object allocation traceback\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", - "ERROR:asyncio:Task was destroyed but it is pending!\n", - "task: wait_for= cb=[ScheduledTask.on_stop(), Scheduler._remove_task()]>\n", - "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", - "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", - "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", - "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", - "INFO:assume.scenario.loader_csv:availability_df not found. Returning None\n", - "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", - "INFO:assume.scenario.loader_csv:price_forecasts not found. Returning None\n", - "INFO:assume.scenario.loader_csv:temperature not found. Returning None\n", - "Training Episodes: 0%| | 0/10 [00:00)\n", - "handle: )>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 304, in __wakeup\n", - " future.result()\n", - " File \"/usr/lib/python3.10/asyncio/futures.py\", line 196, in result\n", - " raise exc\n", - "asyncio.exceptions.CancelledError\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/events.py\", line 80, in _run\n", - " self._context.run(self._callback, *self._args)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/agent/core.py\", line 434, in raise_exceptions\n", - " raise fut.exception()\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 234, in __step\n", - " result = coro.throw(exc)\n", - "RuntimeError: cannot reuse already awaited coroutine\n", - "ERROR:mango.agent.core:Agent clock: Caught the following exception in _check_inbox: cannot reuse already awaited coroutine\n", - "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", - "handle: )>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 304, in __wakeup\n", - " future.result()\n", - " File \"/usr/lib/python3.10/asyncio/futures.py\", line 196, in result\n", - " raise exc\n", - "asyncio.exceptions.CancelledError\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/events.py\", line 80, in _run\n", - " self._context.run(self._callback, *self._args)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/agent/core.py\", line 434, in raise_exceptions\n", - " raise fut.exception()\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 234, in __step\n", - " result = coro.throw(exc)\n", - "RuntimeError: cannot reuse already awaited coroutine\n", - "ERROR:mango.agent.core:Agent learning_agent: Caught the following exception in _check_inbox: cannot reuse already awaited coroutine\n", - "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", - "handle: )>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 304, in __wakeup\n", - " future.result()\n", - " File \"/usr/lib/python3.10/asyncio/futures.py\", line 196, in result\n", - " raise exc\n", - "asyncio.exceptions.CancelledError\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/events.py\", line 80, in _run\n", - " self._context.run(self._callback, *self._args)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/agent/core.py\", line 434, in raise_exceptions\n", - " raise fut.exception()\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 234, in __step\n", - " result = coro.throw(exc)\n", - "RuntimeError: cannot reuse already awaited coroutine\n", - "ERROR:mango.agent.core:Agent EOM_operator: Caught the following exception in _check_inbox: cannot reuse already awaited coroutine\n", - "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", - "handle: )>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 304, in __wakeup\n", - " future.result()\n", - " File \"/usr/lib/python3.10/asyncio/futures.py\", line 196, in result\n", - " raise exc\n", - "asyncio.exceptions.CancelledError\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/events.py\", line 80, in _run\n", - " self._context.run(self._callback, *self._args)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/agent/core.py\", line 434, in raise_exceptions\n", - " raise fut.exception()\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 234, in __step\n", - " result = coro.throw(exc)\n", - "RuntimeError: cannot reuse already awaited coroutine\n", - "ERROR:mango.agent.core:Agent Operator North: Caught the following exception in _check_inbox: cannot reuse already awaited coroutine\n", - "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", - "handle: )>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 304, in __wakeup\n", - " future.result()\n", - " File \"/usr/lib/python3.10/asyncio/futures.py\", line 196, in result\n", - " raise exc\n", - "asyncio.exceptions.CancelledError\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/events.py\", line 80, in _run\n", - " self._context.run(self._callback, *self._args)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/agent/core.py\", line 434, in raise_exceptions\n", - " raise fut.exception()\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 234, in __step\n", - " result = coro.throw(exc)\n", - "RuntimeError: cannot reuse already awaited coroutine\n", - "ERROR:mango.agent.core:Agent Operator South: Caught the following exception in _check_inbox: cannot reuse already awaited coroutine\n", - "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", - "handle: )>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 304, in __wakeup\n", - " future.result()\n", - " File \"/usr/lib/python3.10/asyncio/futures.py\", line 196, in result\n", - " raise exc\n", - "asyncio.exceptions.CancelledError\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/events.py\", line 80, in _run\n", - " self._context.run(self._callback, *self._args)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/agent/core.py\", line 434, in raise_exceptions\n", - " raise fut.exception()\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 234, in __step\n", - " result = coro.throw(exc)\n", - "RuntimeError: cannot reuse already awaited coroutine\n", - "ERROR:mango.agent.core:Agent eom_de: Caught the following exception in _check_inbox: cannot reuse already awaited coroutine\n", - "ERROR:asyncio:Exception in callback Agent.raise_exceptions()\n", - "handle: )>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 304, in __wakeup\n", - " future.result()\n", - " File \"/usr/lib/python3.10/asyncio/futures.py\", line 196, in result\n", - " raise exc\n", - "asyncio.exceptions.CancelledError\n", - "\n", - "During handling of the above exception, another exception occurred:\n", - "\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/events.py\", line 80, in _run\n", - " self._context.run(self._callback, *self._args)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/agent/core.py\", line 434, in raise_exceptions\n", - " raise fut.exception()\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 234, in __step\n", - " result = coro.throw(exc)\n", - "RuntimeError: cannot reuse already awaited coroutine\n", - "\n", - " 0%| | 1.0/82800 [00:00<4:56:01, 4.66it/s]\u001b[AWARNING:pyomo.common.numeric_types:Dynamically registering the following numeric type:\n", - " torch.Tensor\n", - "Dynamic registration is supported for convenience, but there are known\n", - "limitations to this approach. We recommend explicitly registering\n", - "numeric types using RegisterNumericType() or RegisterIntegerType().\n", - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpf0sv8yov.glpk.raw --wglp /tmp/tmp5asnipvw.glpk.glp --cpxlp\n", - " /tmp/tmpfmwxc953.pyomo.lp\n", - "Reading problem data from '/tmp/tmpfmwxc953.pyomo.lp'...\n", - "/tmp/tmpfmwxc953.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 00:00:00: 4%|▍ | 3601.0/82800 [00:00<00:07, 10193.16it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp55pxy9xx.glpk.raw --wglp /tmp/tmpql_afw06.glpk.glp --cpxlp\n", - " /tmp/tmpx6mdl1uh.pyomo.lp\n", - "Reading problem data from '/tmp/tmpx6mdl1uh.pyomo.lp'...\n", - "/tmp/tmpx6mdl1uh.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 01:00:00: 9%|▊ | 7201.0/82800 [00:00<00:04, 16817.66it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpb1j_ikxq.glpk.raw --wglp /tmp/tmpezp3razm.glpk.glp --cpxlp\n", - " /tmp/tmpfbbnpt7q.pyomo.lp\n", - "Reading problem data from '/tmp/tmpfbbnpt7q.pyomo.lp'...\n", - "/tmp/tmpfbbnpt7q.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 02:00:00: 13%|█▎ | 10801.0/82800 [00:00<00:03, 20289.50it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp8r2jsxua.glpk.raw --wglp /tmp/tmpa6724_sx.glpk.glp --cpxlp\n", - " /tmp/tmpgjwy19ki.pyomo.lp\n", - "Reading problem data from '/tmp/tmpgjwy19ki.pyomo.lp'...\n", - "/tmp/tmpgjwy19ki.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 03:00:00: 17%|█▋ | 14401.0/82800 [00:00<00:02, 23320.31it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpe8846btc.glpk.raw --wglp /tmp/tmp0ilf7_dz.glpk.glp --cpxlp\n", - " /tmp/tmps6gfx_nx.pyomo.lp\n", - "Reading problem data from '/tmp/tmps6gfx_nx.pyomo.lp'...\n", - "/tmp/tmps6gfx_nx.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 04:00:00: 22%|██▏ | 18001.0/82800 [00:00<00:02, 23916.10it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpond8pqlm.glpk.raw --wglp /tmp/tmpyx1d7zt8.glpk.glp --cpxlp\n", - " /tmp/tmp213byyn9.pyomo.lp\n", - "Reading problem data from '/tmp/tmp213byyn9.pyomo.lp'...\n", - "/tmp/tmp213byyn9.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 05:00:00: 26%|██▌ | 21601.0/82800 [00:01<00:02, 24674.58it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp019fpb63.glpk.raw --wglp /tmp/tmpenhlv7h2.glpk.glp --cpxlp\n", - " /tmp/tmpbknr_2vl.pyomo.lp\n", - "Reading problem data from '/tmp/tmpbknr_2vl.pyomo.lp'...\n", - "/tmp/tmpbknr_2vl.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 06:00:00: 30%|███ | 25201.0/82800 [00:01<00:02, 23638.63it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpa994dw_w.glpk.raw --wglp /tmp/tmph76tkpxl.glpk.glp --cpxlp\n", - " /tmp/tmp0riz9f2a.pyomo.lp\n", - "Reading problem data from '/tmp/tmp0riz9f2a.pyomo.lp'...\n", - "/tmp/tmp0riz9f2a.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 07:00:00: 35%|███▍ | 28801.0/82800 [00:01<00:02, 23175.57it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpdwhwi8rf.glpk.raw --wglp /tmp/tmp60iy59cg.glpk.glp --cpxlp\n", - " /tmp/tmptof5okg8.pyomo.lp\n", - "Reading problem data from '/tmp/tmptof5okg8.pyomo.lp'...\n", - "/tmp/tmptof5okg8.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 08:00:00: 39%|███▉ | 32401.0/82800 [00:01<00:02, 24335.43it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp55hci9a1.glpk.raw --wglp /tmp/tmpi0psaqav.glpk.glp --cpxlp\n", - " /tmp/tmpd657t8ua.pyomo.lp\n", - "Reading problem data from '/tmp/tmpd657t8ua.pyomo.lp'...\n", - "/tmp/tmpd657t8ua.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 09:00:00: 43%|████▎ | 36001.0/82800 [00:01<00:01, 25381.64it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpgn729qmk.glpk.raw --wglp /tmp/tmprb78b6rf.glpk.glp --cpxlp\n", - " /tmp/tmp9w3g0mmd.pyomo.lp\n", - "Reading problem data from '/tmp/tmp9w3g0mmd.pyomo.lp'...\n", - "/tmp/tmp9w3g0mmd.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 10:00:00: 48%|████▊ | 39601.0/82800 [00:01<00:01, 25367.58it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp_i9sychx.glpk.raw --wglp /tmp/tmpvhnix6t0.glpk.glp --cpxlp\n", - " /tmp/tmpzisrcyck.pyomo.lp\n", - "Reading problem data from '/tmp/tmpzisrcyck.pyomo.lp'...\n", - "/tmp/tmpzisrcyck.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 11:00:00: 52%|█████▏ | 43201.0/82800 [00:01<00:01, 25805.98it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpko0qf5mb.glpk.raw --wglp /tmp/tmpwdbqp01a.glpk.glp --cpxlp\n", - " /tmp/tmp5z992p5h.pyomo.lp\n", - "Reading problem data from '/tmp/tmp5z992p5h.pyomo.lp'...\n", - "/tmp/tmp5z992p5h.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 12:00:00: 57%|█████▋ | 46801.0/82800 [00:02<00:01, 26004.28it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpfikht9v2.glpk.raw --wglp /tmp/tmp14s4vgy2.glpk.glp --cpxlp\n", - " /tmp/tmph8p4znaw.pyomo.lp\n", - "Reading problem data from '/tmp/tmph8p4znaw.pyomo.lp'...\n", - "/tmp/tmph8p4znaw.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 13:00:00: 61%|██████ | 50401.0/82800 [00:02<00:01, 24577.70it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmprgvhrh6y.glpk.raw --wglp /tmp/tmp1_6dn0t4.glpk.glp --cpxlp\n", - " /tmp/tmpyapsxfai.pyomo.lp\n", - "Reading problem data from '/tmp/tmpyapsxfai.pyomo.lp'...\n", - "/tmp/tmpyapsxfai.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 14:00:00: 65%|██████▌ | 54001.0/82800 [00:02<00:01, 23890.35it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpe870v_oj.glpk.raw --wglp /tmp/tmpvudm7qsl.glpk.glp --cpxlp\n", - " /tmp/tmpwi094v0g.pyomo.lp\n", - "Reading problem data from '/tmp/tmpwi094v0g.pyomo.lp'...\n", - "/tmp/tmpwi094v0g.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 15:00:00: 70%|██████▉ | 57601.0/82800 [00:02<00:01, 24453.78it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp47qng8zx.glpk.raw --wglp /tmp/tmp03j5ii3a.glpk.glp --cpxlp\n", - " /tmp/tmpb7hqi91q.pyomo.lp\n", - "Reading problem data from '/tmp/tmpb7hqi91q.pyomo.lp'...\n", - "/tmp/tmpb7hqi91q.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 16:00:00: 74%|███████▍ | 61201.0/82800 [00:02<00:00, 24706.79it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp51erzb_a.glpk.raw --wglp /tmp/tmp0iq0mabf.glpk.glp --cpxlp\n", - " /tmp/tmpu5xxl4xp.pyomo.lp\n", - "Reading problem data from '/tmp/tmpu5xxl4xp.pyomo.lp'...\n", - "/tmp/tmpu5xxl4xp.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 17:00:00: 78%|███████▊ | 64801.0/82800 [00:02<00:00, 24981.59it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpvkcz_hrl.glpk.raw --wglp /tmp/tmpznf0t9y6.glpk.glp --cpxlp\n", - " /tmp/tmp2ueg9oj5.pyomo.lp\n", - "Reading problem data from '/tmp/tmp2ueg9oj5.pyomo.lp'...\n", - "/tmp/tmp2ueg9oj5.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 18:00:00: 83%|████████▎ | 68401.0/82800 [00:02<00:00, 24948.07it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp0x3xdbk0.glpk.raw --wglp /tmp/tmpc99m191o.glpk.glp --cpxlp\n", - " /tmp/tmpowun19s9.pyomo.lp\n", - "Reading problem data from '/tmp/tmpowun19s9.pyomo.lp'...\n", - "/tmp/tmpowun19s9.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 19:00:00: 87%|████████▋ | 72001.0/82800 [00:03<00:00, 25113.70it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpbvai91ye.glpk.raw --wglp /tmp/tmpfb_2w9mc.glpk.glp --cpxlp\n", - " /tmp/tmpk5x4i7yq.pyomo.lp\n", - "Reading problem data from '/tmp/tmpk5x4i7yq.pyomo.lp'...\n", - "/tmp/tmpk5x4i7yq.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 20:00:00: 91%|█████████▏| 75601.0/82800 [00:03<00:00, 23751.99it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpsneoef5m.glpk.raw --wglp /tmp/tmps4qx99k7.glpk.glp --cpxlp\n", - " /tmp/tmpnfa4gfd_.pyomo.lp\n", - "Reading problem data from '/tmp/tmpnfa4gfd_.pyomo.lp'...\n", - "/tmp/tmpnfa4gfd_.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_1 2019-01-01 21:00:00: 96%|█████████▌| 79201.0/82800 [00:03<00:00, 20862.94it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpmpzml_n_.glpk.raw --wglp /tmp/tmphy7mcb3t.glpk.glp --cpxlp\n", - " /tmp/tmp13ub5l10.pyomo.lp\n", - "Reading problem data from '/tmp/tmp13ub5l10.pyomo.lp'...\n", - "/tmp/tmp13ub5l10.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "tutorial_08_zonal_case_1 2019-01-01 23:00:00: : 82801.0it [00:03, 23250.79it/s] \n", - "Training Episodes: 10%|█ | 1/10 [00:03<00:32, 3.60s/it]INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n", - "\n", - " 0%| | 0/82800 [00:00 exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 00:00:00: 4%|▍ | 3601.0/82800 [00:00<00:05, 15063.49it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmptw07elbf.glpk.raw --wglp /tmp/tmp0x6dxvb0.glpk.glp --cpxlp\n", - " /tmp/tmpambcx7ro.pyomo.lp\n", - "Reading problem data from '/tmp/tmpambcx7ro.pyomo.lp'...\n", - "/tmp/tmpambcx7ro.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 01:00:00: 9%|▊ | 7201.0/82800 [00:00<00:04, 16453.70it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpbse10e5u.glpk.raw --wglp /tmp/tmpyw23oq3v.glpk.glp --cpxlp\n", - " /tmp/tmpnivr7kob.pyomo.lp\n", - "Reading problem data from '/tmp/tmpnivr7kob.pyomo.lp'...\n", - "/tmp/tmpnivr7kob.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 02:00:00: 13%|█▎ | 10801.0/82800 [00:00<00:04, 17221.35it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpolvkucm1.glpk.raw --wglp /tmp/tmpi_t4m2lc.glpk.glp --cpxlp\n", - " /tmp/tmpvus_8u99.pyomo.lp\n", - "Reading problem data from '/tmp/tmpvus_8u99.pyomo.lp'...\n", - "/tmp/tmpvus_8u99.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 03:00:00: 17%|█▋ | 14401.0/82800 [00:00<00:03, 18374.44it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpgtsp63b2.glpk.raw --wglp /tmp/tmpd68kmvyd.glpk.glp --cpxlp\n", - " /tmp/tmpnawahz9p.pyomo.lp\n", - "Reading problem data from '/tmp/tmpnawahz9p.pyomo.lp'...\n", - "/tmp/tmpnawahz9p.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 04:00:00: 22%|██▏ | 18001.0/82800 [00:01<00:03, 19350.48it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpnlu5ux23.glpk.raw --wglp /tmp/tmpyxwz4s_p.glpk.glp --cpxlp\n", - " /tmp/tmpzos92ejh.pyomo.lp\n", - "Reading problem data from '/tmp/tmpzos92ejh.pyomo.lp'...\n", - "/tmp/tmpzos92ejh.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 05:00:00: 26%|██▌ | 21601.0/82800 [00:01<00:02, 20968.10it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmplq8gqt0k.glpk.raw --wglp /tmp/tmpxq0098y0.glpk.glp --cpxlp\n", - " /tmp/tmpufnkio4j.pyomo.lp\n", - "Reading problem data from '/tmp/tmpufnkio4j.pyomo.lp'...\n", - "/tmp/tmpufnkio4j.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 06:00:00: 30%|███ | 25201.0/82800 [00:01<00:02, 22155.97it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp5dt2b0oc.glpk.raw --wglp /tmp/tmp8o6m8qmi.glpk.glp --cpxlp\n", - " /tmp/tmpgygidn7m.pyomo.lp\n", - "Reading problem data from '/tmp/tmpgygidn7m.pyomo.lp'...\n", - "/tmp/tmpgygidn7m.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 07:00:00: 35%|███▍ | 28801.0/82800 [00:01<00:02, 20999.51it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp3gzdb_r1.glpk.raw --wglp /tmp/tmp51k72zan.glpk.glp --cpxlp\n", - " /tmp/tmpd3g3oslf.pyomo.lp\n", - "Reading problem data from '/tmp/tmpd3g3oslf.pyomo.lp'...\n", - "/tmp/tmpd3g3oslf.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 08:00:00: 39%|███▉ | 32401.0/82800 [00:01<00:02, 20242.02it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpe9x2tjf9.glpk.raw --wglp /tmp/tmpcozapllo.glpk.glp --cpxlp\n", - " /tmp/tmpr9ot36qy.pyomo.lp\n", - "Reading problem data from '/tmp/tmpr9ot36qy.pyomo.lp'...\n", - "/tmp/tmpr9ot36qy.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 09:00:00: 43%|████▎ | 36001.0/82800 [00:01<00:02, 19402.14it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp9t744uu7.glpk.raw --wglp /tmp/tmpstthnk19.glpk.glp --cpxlp\n", - " /tmp/tmprixpurt5.pyomo.lp\n", - "Reading problem data from '/tmp/tmprixpurt5.pyomo.lp'...\n", - "/tmp/tmprixpurt5.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 10:00:00: 48%|████▊ | 39601.0/82800 [00:02<00:02, 19923.94it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpibjig1ky.glpk.raw --wglp /tmp/tmp_0lbb30q.glpk.glp --cpxlp\n", - " /tmp/tmprkynpgr1.pyomo.lp\n", - "Reading problem data from '/tmp/tmprkynpgr1.pyomo.lp'...\n", - "/tmp/tmprkynpgr1.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 11:00:00: 52%|█████▏ | 43201.0/82800 [00:02<00:01, 20449.75it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpr_3fyj2x.glpk.raw --wglp /tmp/tmpfi6fol7b.glpk.glp --cpxlp\n", - " /tmp/tmpde1k0uo2.pyomo.lp\n", - "Reading problem data from '/tmp/tmpde1k0uo2.pyomo.lp'...\n", - "/tmp/tmpde1k0uo2.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 12:00:00: 57%|█████▋ | 46801.0/82800 [00:02<00:01, 19941.06it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpoiy1c0yc.glpk.raw --wglp /tmp/tmpr8jxzs11.glpk.glp --cpxlp\n", - " /tmp/tmp6k_39sav.pyomo.lp\n", - "Reading problem data from '/tmp/tmp6k_39sav.pyomo.lp'...\n", - "/tmp/tmp6k_39sav.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 13:00:00: 61%|██████ | 50401.0/82800 [00:02<00:01, 18864.41it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp1sj1evtg.glpk.raw --wglp /tmp/tmpf60d7krd.glpk.glp --cpxlp\n", - " /tmp/tmpz2yoze5t.pyomo.lp\n", - "Reading problem data from '/tmp/tmpz2yoze5t.pyomo.lp'...\n", - "/tmp/tmpz2yoze5t.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 14:00:00: 65%|██████▌ | 54001.0/82800 [00:02<00:01, 18663.02it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpnnwilo2t.glpk.raw --wglp /tmp/tmpbntwet5y.glpk.glp --cpxlp\n", - " /tmp/tmpwn0651x9.pyomo.lp\n", - "Reading problem data from '/tmp/tmpwn0651x9.pyomo.lp'...\n", - "/tmp/tmpwn0651x9.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 15:00:00: 70%|██████▉ | 57601.0/82800 [00:03<00:01, 18298.76it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpd_uy11ih.glpk.raw --wglp /tmp/tmpzpdoz7rf.glpk.glp --cpxlp\n", - " /tmp/tmprayw9lsw.pyomo.lp\n", - "Reading problem data from '/tmp/tmprayw9lsw.pyomo.lp'...\n", - "/tmp/tmprayw9lsw.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 16:00:00: 74%|███████▍ | 61201.0/82800 [00:03<00:01, 18869.52it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp14nuv6mg.glpk.raw --wglp /tmp/tmpo3r87q3g.glpk.glp --cpxlp\n", - " /tmp/tmp3vdza3z8.pyomo.lp\n", - "Reading problem data from '/tmp/tmp3vdza3z8.pyomo.lp'...\n", - "/tmp/tmp3vdza3z8.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 17:00:00: 78%|███████▊ | 64801.0/82800 [00:03<00:01, 17994.31it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp7k5tzmso.glpk.raw --wglp /tmp/tmpc8pc38cn.glpk.glp --cpxlp\n", - " /tmp/tmpc7vcg1bb.pyomo.lp\n", - "Reading problem data from '/tmp/tmpc7vcg1bb.pyomo.lp'...\n", - "/tmp/tmpc7vcg1bb.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 18:00:00: 83%|████████▎ | 68401.0/82800 [00:03<00:00, 16828.72it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp4l672sh5.glpk.raw --wglp /tmp/tmp6nlohwjm.glpk.glp --cpxlp\n", - " /tmp/tmp7o8efpx4.pyomo.lp\n", - "Reading problem data from '/tmp/tmp7o8efpx4.pyomo.lp'...\n", - "/tmp/tmp7o8efpx4.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 19:00:00: 87%|████████▋ | 72001.0/82800 [00:03<00:00, 17908.43it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpmzs68lr2.glpk.raw --wglp /tmp/tmp0mj_rh12.glpk.glp --cpxlp\n", - " /tmp/tmpt2fkk745.pyomo.lp\n", - "Reading problem data from '/tmp/tmpt2fkk745.pyomo.lp'...\n", - "/tmp/tmpt2fkk745.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 20:00:00: 91%|█████████▏| 75601.0/82800 [00:04<00:00, 18990.48it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpivomrkn6.glpk.raw --wglp /tmp/tmp627sqbtz.glpk.glp --cpxlp\n", - " /tmp/tmppve9nq1t.pyomo.lp\n", - "Reading problem data from '/tmp/tmppve9nq1t.pyomo.lp'...\n", - "/tmp/tmppve9nq1t.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_2 2019-01-01 21:00:00: 96%|█████████▌| 79201.0/82800 [00:04<00:00, 20269.07it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpt98xz8ht.glpk.raw --wglp /tmp/tmpgascxfek.glpk.glp --cpxlp\n", - " /tmp/tmpbwkx71rj.pyomo.lp\n", - "Reading problem data from '/tmp/tmpbwkx71rj.pyomo.lp'...\n", - "/tmp/tmpbwkx71rj.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "tutorial_08_zonal_case_2 2019-01-01 23:00:00: : 82801.0it [00:04, 19574.35it/s] \n", - "Training Episodes: 20%|██ | 2/10 [00:07<00:32, 4.05s/it]INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n", - "\n", - " 0%| | 0/82800 [00:00 exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 00:00:00: 4%|▍ | 3601.0/82800 [00:00<00:05, 14355.75it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpt16tq7d0.glpk.raw --wglp /tmp/tmp0zw37ric.glpk.glp --cpxlp\n", - " /tmp/tmpmc211vqy.pyomo.lp\n", - "Reading problem data from '/tmp/tmpmc211vqy.pyomo.lp'...\n", - "/tmp/tmpmc211vqy.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 01:00:00: 9%|▊ | 7201.0/82800 [00:00<00:03, 20554.01it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp8e0esoa2.glpk.raw --wglp /tmp/tmpx7bh3kjd.glpk.glp --cpxlp\n", - " /tmp/tmpdwx9zyjz.pyomo.lp\n", - "Reading problem data from '/tmp/tmpdwx9zyjz.pyomo.lp'...\n", - "/tmp/tmpdwx9zyjz.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 02:00:00: 13%|█▎ | 10801.0/82800 [00:00<00:03, 22373.84it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpmeyemsh7.glpk.raw --wglp /tmp/tmpcw2adg8v.glpk.glp --cpxlp\n", - " /tmp/tmprhgc3wes.pyomo.lp\n", - "Reading problem data from '/tmp/tmprhgc3wes.pyomo.lp'...\n", - "/tmp/tmprhgc3wes.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 03:00:00: 17%|█▋ | 14401.0/82800 [00:00<00:03, 22644.80it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp3sjdrw0k.glpk.raw --wglp /tmp/tmp_fjd3ap6.glpk.glp --cpxlp\n", - " /tmp/tmpjcy_smhw.pyomo.lp\n", - "Reading problem data from '/tmp/tmpjcy_smhw.pyomo.lp'...\n", - "/tmp/tmpjcy_smhw.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 04:00:00: 22%|██▏ | 18001.0/82800 [00:00<00:02, 23629.61it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp87k4tn__.glpk.raw --wglp /tmp/tmpth4qqh4l.glpk.glp --cpxlp\n", - " /tmp/tmpdeadx1am.pyomo.lp\n", - "Reading problem data from '/tmp/tmpdeadx1am.pyomo.lp'...\n", - "/tmp/tmpdeadx1am.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 05:00:00: 26%|██▌ | 21601.0/82800 [00:00<00:02, 24455.20it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp2zjwiw40.glpk.raw --wglp /tmp/tmpk20m7gf8.glpk.glp --cpxlp\n", - " /tmp/tmp6smnf8i_.pyomo.lp\n", - "Reading problem data from '/tmp/tmp6smnf8i_.pyomo.lp'...\n", - "/tmp/tmp6smnf8i_.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 06:00:00: 30%|███ | 25201.0/82800 [00:01<00:02, 24087.81it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp0q5hh2yz.glpk.raw --wglp /tmp/tmpo2vjz_wd.glpk.glp --cpxlp\n", - " /tmp/tmpgv492qod.pyomo.lp\n", - "Reading problem data from '/tmp/tmpgv492qod.pyomo.lp'...\n", - "/tmp/tmpgv492qod.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 07:00:00: 35%|███▍ | 28801.0/82800 [00:01<00:02, 23952.26it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpkagy58tc.glpk.raw --wglp /tmp/tmp2j6qp_jl.glpk.glp --cpxlp\n", - " /tmp/tmpuaxsiqyo.pyomo.lp\n", - "Reading problem data from '/tmp/tmpuaxsiqyo.pyomo.lp'...\n", - "/tmp/tmpuaxsiqyo.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 08:00:00: 39%|███▉ | 32401.0/82800 [00:01<00:02, 23760.02it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp5yhim4_4.glpk.raw --wglp /tmp/tmpbna7142e.glpk.glp --cpxlp\n", - " /tmp/tmpkpy85ovz.pyomo.lp\n", - "Reading problem data from '/tmp/tmpkpy85ovz.pyomo.lp'...\n", - "/tmp/tmpkpy85ovz.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 09:00:00: 43%|████▎ | 36001.0/82800 [00:01<00:01, 24322.08it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmprfjtvhm9.glpk.raw --wglp /tmp/tmpw9aexzmn.glpk.glp --cpxlp\n", - " /tmp/tmprfdi8val.pyomo.lp\n", - "Reading problem data from '/tmp/tmprfdi8val.pyomo.lp'...\n", - "/tmp/tmprfdi8val.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 10:00:00: 48%|████▊ | 39601.0/82800 [00:01<00:01, 23845.30it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpkrrbnupn.glpk.raw --wglp /tmp/tmpjr7l7_wh.glpk.glp --cpxlp\n", - " /tmp/tmpgc8en5f1.pyomo.lp\n", - "Reading problem data from '/tmp/tmpgc8en5f1.pyomo.lp'...\n", - "/tmp/tmpgc8en5f1.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 11:00:00: 52%|█████▏ | 43201.0/82800 [00:01<00:01, 24326.83it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpdxeyze3w.glpk.raw --wglp /tmp/tmpvkf8l8a3.glpk.glp --cpxlp\n", - " /tmp/tmp4gm8ynp1.pyomo.lp\n", - "Reading problem data from '/tmp/tmp4gm8ynp1.pyomo.lp'...\n", - "/tmp/tmp4gm8ynp1.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 12:00:00: 57%|█████▋ | 46801.0/82800 [00:02<00:01, 24439.56it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpxhb916fg.glpk.raw --wglp /tmp/tmpt3mn5wjy.glpk.glp --cpxlp\n", - " /tmp/tmp_bhh30i8.pyomo.lp\n", - "Reading problem data from '/tmp/tmp_bhh30i8.pyomo.lp'...\n", - "/tmp/tmp_bhh30i8.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 13:00:00: 61%|██████ | 50401.0/82800 [00:02<00:01, 23578.78it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp40s83njh.glpk.raw --wglp /tmp/tmpwygq4gh3.glpk.glp --cpxlp\n", - " /tmp/tmpazkbcvor.pyomo.lp\n", - "Reading problem data from '/tmp/tmpazkbcvor.pyomo.lp'...\n", - "/tmp/tmpazkbcvor.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 14:00:00: 65%|██████▌ | 54001.0/82800 [00:02<00:01, 23041.29it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpejpk04ty.glpk.raw --wglp /tmp/tmpscq2syqp.glpk.glp --cpxlp\n", - " /tmp/tmp90xyfpnk.pyomo.lp\n", - "Reading problem data from '/tmp/tmp90xyfpnk.pyomo.lp'...\n", - "/tmp/tmp90xyfpnk.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 15:00:00: 70%|██████▉ | 57601.0/82800 [00:02<00:01, 23733.55it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp22jjnsyh.glpk.raw --wglp /tmp/tmpp6191ieu.glpk.glp --cpxlp\n", - " /tmp/tmpx_injkqi.pyomo.lp\n", - "Reading problem data from '/tmp/tmpx_injkqi.pyomo.lp'...\n", - "/tmp/tmpx_injkqi.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 16:00:00: 74%|███████▍ | 61201.0/82800 [00:02<00:00, 23844.42it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmps__k6p1_.glpk.raw --wglp /tmp/tmpi5excchr.glpk.glp --cpxlp\n", - " /tmp/tmpl7vwmgrb.pyomo.lp\n", - "Reading problem data from '/tmp/tmpl7vwmgrb.pyomo.lp'...\n", - "/tmp/tmpl7vwmgrb.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 17:00:00: 78%|███████▊ | 64801.0/82800 [00:02<00:00, 23188.66it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpxzs6sg2y.glpk.raw --wglp /tmp/tmpwft8utsc.glpk.glp --cpxlp\n", - " /tmp/tmpi78di4gj.pyomo.lp\n", - "Reading problem data from '/tmp/tmpi78di4gj.pyomo.lp'...\n", - "/tmp/tmpi78di4gj.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 18:00:00: 83%|████████▎ | 68401.0/82800 [00:02<00:00, 23099.42it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp1_t4ho6s.glpk.raw --wglp /tmp/tmphfck3df2.glpk.glp --cpxlp\n", - " /tmp/tmph6zwnbnm.pyomo.lp\n", - "Reading problem data from '/tmp/tmph6zwnbnm.pyomo.lp'...\n", - "/tmp/tmph6zwnbnm.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 19:00:00: 87%|████████▋ | 72001.0/82800 [00:03<00:00, 22975.09it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmptgk_g10l.glpk.raw --wglp /tmp/tmp_jq8n4g4.glpk.glp --cpxlp\n", - " /tmp/tmp95cudyvq.pyomo.lp\n", - "Reading problem data from '/tmp/tmp95cudyvq.pyomo.lp'...\n", - "/tmp/tmp95cudyvq.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 20:00:00: 91%|█████████▏| 75601.0/82800 [00:03<00:00, 16696.03it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpau6n4wbi.glpk.raw --wglp /tmp/tmps7yujjug.glpk.glp --cpxlp\n", - " /tmp/tmpqenz8kjz.pyomo.lp\n", - "Reading problem data from '/tmp/tmpqenz8kjz.pyomo.lp'...\n", - "/tmp/tmpqenz8kjz.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 21:00:00: 96%|█████████▌| 79201.0/82800 [00:04<00:00, 11555.84it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp25vtvn5_.glpk.raw --wglp /tmp/tmp_muaqg1h.glpk.glp --cpxlp\n", - " /tmp/tmpi6twmn6s.pyomo.lp\n", - "Reading problem data from '/tmp/tmpi6twmn6s.pyomo.lp'...\n", - "/tmp/tmpi6twmn6s.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_3 2019-01-01 23:00:00: : 82801.0it [00:04, 19678.81it/s]\n", - "Training Episodes: 30%|███ | 3/10 [00:12<00:29, 4.19s/it]INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n", - "\n", - " 0%| | 0/82800 [00:00 exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 00:00:00: 4%|▍ | 3601.0/82800 [00:00<00:04, 17203.09it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpf88z2bg0.glpk.raw --wglp /tmp/tmpn5vl3w_u.glpk.glp --cpxlp\n", - " /tmp/tmp8veys5hk.pyomo.lp\n", - "Reading problem data from '/tmp/tmp8veys5hk.pyomo.lp'...\n", - "/tmp/tmp8veys5hk.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 01:00:00: 9%|▊ | 7201.0/82800 [00:00<00:03, 21178.21it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp9eab_s13.glpk.raw --wglp /tmp/tmpbi8f4t70.glpk.glp --cpxlp\n", - " /tmp/tmpfr_nlni3.pyomo.lp\n", - "Reading problem data from '/tmp/tmpfr_nlni3.pyomo.lp'...\n", - "/tmp/tmpfr_nlni3.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 02:00:00: 13%|█▎ | 10801.0/82800 [00:00<00:03, 22659.63it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp1a1zgm32.glpk.raw --wglp /tmp/tmpw9le5n2d.glpk.glp --cpxlp\n", - " /tmp/tmpza1_7q9r.pyomo.lp\n", - "Reading problem data from '/tmp/tmpza1_7q9r.pyomo.lp'...\n", - "/tmp/tmpza1_7q9r.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 03:00:00: 17%|█▋ | 14401.0/82800 [00:00<00:02, 23171.51it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp_dkto4l0.glpk.raw --wglp /tmp/tmpllvpamz7.glpk.glp --cpxlp\n", - " /tmp/tmpiv_2d8u5.pyomo.lp\n", - "Reading problem data from '/tmp/tmpiv_2d8u5.pyomo.lp'...\n", - "/tmp/tmpiv_2d8u5.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 04:00:00: 22%|██▏ | 18001.0/82800 [00:00<00:02, 23065.75it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp8veh0e3w.glpk.raw --wglp /tmp/tmptblsb08m.glpk.glp --cpxlp\n", - " /tmp/tmp9u3ab1tn.pyomo.lp\n", - "Reading problem data from '/tmp/tmp9u3ab1tn.pyomo.lp'...\n", - "/tmp/tmp9u3ab1tn.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 05:00:00: 26%|██▌ | 21601.0/82800 [00:01<00:02, 22615.46it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpnzkw03m6.glpk.raw --wglp /tmp/tmpwqh28yg0.glpk.glp --cpxlp\n", - " /tmp/tmp1p3ur3wm.pyomo.lp\n", - "Reading problem data from '/tmp/tmp1p3ur3wm.pyomo.lp'...\n", - "/tmp/tmp1p3ur3wm.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 06:00:00: 30%|███ | 25201.0/82800 [00:01<00:02, 23336.23it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpdp4qi5fo.glpk.raw --wglp /tmp/tmpfgmya78p.glpk.glp --cpxlp\n", - " /tmp/tmpa9g0a688.pyomo.lp\n", - "Reading problem data from '/tmp/tmpa9g0a688.pyomo.lp'...\n", - "/tmp/tmpa9g0a688.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 07:00:00: 35%|███▍ | 28801.0/82800 [00:01<00:02, 23990.62it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp4pkjmlts.glpk.raw --wglp /tmp/tmptzg2n0ca.glpk.glp --cpxlp\n", - " /tmp/tmpaghu_aj9.pyomo.lp\n", - "Reading problem data from '/tmp/tmpaghu_aj9.pyomo.lp'...\n", - "/tmp/tmpaghu_aj9.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 08:00:00: 39%|███▉ | 32401.0/82800 [00:01<00:02, 23543.97it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpsqv4_zsp.glpk.raw --wglp /tmp/tmpakz0ri0t.glpk.glp --cpxlp\n", - " /tmp/tmpledf0plv.pyomo.lp\n", - "Reading problem data from '/tmp/tmpledf0plv.pyomo.lp'...\n", - "/tmp/tmpledf0plv.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 09:00:00: 43%|████▎ | 36001.0/82800 [00:01<00:02, 15692.21it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpy6i75ktl.glpk.raw --wglp /tmp/tmpfh5yv0u5.glpk.glp --cpxlp\n", - " /tmp/tmpr4_muo_c.pyomo.lp\n", - "Reading problem data from '/tmp/tmpr4_muo_c.pyomo.lp'...\n", - "/tmp/tmpr4_muo_c.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 10:00:00: 48%|████▊ | 39601.0/82800 [00:01<00:02, 18019.01it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpr0_v6zyz.glpk.raw --wglp /tmp/tmpn3ph9rps.glpk.glp --cpxlp\n", - " /tmp/tmp9vu2z9a1.pyomo.lp\n", - "Reading problem data from '/tmp/tmp9vu2z9a1.pyomo.lp'...\n", - "/tmp/tmp9vu2z9a1.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 11:00:00: 52%|█████▏ | 43201.0/82800 [00:02<00:02, 19771.91it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpn1albn02.glpk.raw --wglp /tmp/tmpsvktmfis.glpk.glp --cpxlp\n", - " /tmp/tmp0_kkve0b.pyomo.lp\n", - "Reading problem data from '/tmp/tmp0_kkve0b.pyomo.lp'...\n", - "/tmp/tmp0_kkve0b.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 12:00:00: 57%|█████▋ | 46801.0/82800 [00:02<00:01, 20960.54it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmphhqqze9w.glpk.raw --wglp /tmp/tmpw4ldhuqq.glpk.glp --cpxlp\n", - " /tmp/tmpzfpsmfsl.pyomo.lp\n", - "Reading problem data from '/tmp/tmpzfpsmfsl.pyomo.lp'...\n", - "/tmp/tmpzfpsmfsl.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 13:00:00: 61%|██████ | 50401.0/82800 [00:02<00:01, 22076.42it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpkeg9zxuz.glpk.raw --wglp /tmp/tmp98s139q4.glpk.glp --cpxlp\n", - " /tmp/tmp061b8nni.pyomo.lp\n", - "Reading problem data from '/tmp/tmp061b8nni.pyomo.lp'...\n", - "/tmp/tmp061b8nni.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 14:00:00: 65%|██████▌ | 54001.0/82800 [00:02<00:01, 22468.07it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpx5ybax39.glpk.raw --wglp /tmp/tmpdhvn1d6k.glpk.glp --cpxlp\n", - " /tmp/tmpaiyc4qr8.pyomo.lp\n", - "Reading problem data from '/tmp/tmpaiyc4qr8.pyomo.lp'...\n", - "/tmp/tmpaiyc4qr8.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 15:00:00: 70%|██████▉ | 57601.0/82800 [00:02<00:01, 21997.66it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpd4925kmg.glpk.raw --wglp /tmp/tmpdu2nlsyh.glpk.glp --cpxlp\n", - " /tmp/tmpyhur6zbz.pyomo.lp\n", - "Reading problem data from '/tmp/tmpyhur6zbz.pyomo.lp'...\n", - "/tmp/tmpyhur6zbz.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 16:00:00: 74%|███████▍ | 61201.0/82800 [00:02<00:00, 21782.31it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmphktz2rxf.glpk.raw --wglp /tmp/tmp8rc49vwj.glpk.glp --cpxlp\n", - " /tmp/tmpxlusthcq.pyomo.lp\n", - "Reading problem data from '/tmp/tmpxlusthcq.pyomo.lp'...\n", - "/tmp/tmpxlusthcq.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 17:00:00: 78%|███████▊ | 64801.0/82800 [00:03<00:00, 22494.61it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp_h0elnwc.glpk.raw --wglp /tmp/tmp7vryum3v.glpk.glp --cpxlp\n", - " /tmp/tmpylug0ode.pyomo.lp\n", - "Reading problem data from '/tmp/tmpylug0ode.pyomo.lp'...\n", - "/tmp/tmpylug0ode.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 18:00:00: 83%|████████▎ | 68401.0/82800 [00:03<00:00, 23176.81it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpgnzrqsxy.glpk.raw --wglp /tmp/tmppttqbekb.glpk.glp --cpxlp\n", - " /tmp/tmpcyjqei4n.pyomo.lp\n", - "Reading problem data from '/tmp/tmpcyjqei4n.pyomo.lp'...\n", - "/tmp/tmpcyjqei4n.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 19:00:00: 87%|████████▋ | 72001.0/82800 [00:03<00:00, 23074.36it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpnkm3nfui.glpk.raw --wglp /tmp/tmpr46eydah.glpk.glp --cpxlp\n", - " /tmp/tmp5ehx5m8b.pyomo.lp\n", - "Reading problem data from '/tmp/tmp5ehx5m8b.pyomo.lp'...\n", - "/tmp/tmp5ehx5m8b.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 20:00:00: 91%|█████████▏| 75601.0/82800 [00:03<00:00, 22627.07it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmp6ans92ru.glpk.raw --wglp /tmp/tmpk9egt30z.glpk.glp --cpxlp\n", - " /tmp/tmp_3wuknzb.pyomo.lp\n", - "Reading problem data from '/tmp/tmp_3wuknzb.pyomo.lp'...\n", - "/tmp/tmp_3wuknzb.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "\n", - "tutorial_08_zonal_case_4 2019-01-01 21:00:00: 96%|█████████▌| 79201.0/82800 [00:03<00:00, 21647.41it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write /tmp/tmpfvzvcpv2.glpk.raw --wglp /tmp/tmpds05wu1f.glpk.glp --cpxlp\n", - " /tmp/tmpcdzc3n9q.pyomo.lp\n", - "Reading problem data from '/tmp/tmpcdzc3n9q.pyomo.lp'...\n", - "/tmp/tmpcdzc3n9q.pyomo.lp:24: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/base_market.py\", line 494, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 447, in clear\n", - " instance, results = market_clearing_opt(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/markets/clearing_algorithms/complex_clearing.py\", line 262, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pyomo/opt/base/solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", - "tutorial_08_zonal_case_4 2019-01-01 23:00:00: : 82801.0it [00:03, 21847.46it/s] \n", - "Training Episodes: 40%|████ | 4/10 [00:16<00:24, 4.09s/it]INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n", - "\n", - "Training Episodes: 50%|█████ | 5/10 [00:16<00:13, 2.67s/it]\n", - " 0%| | 1.0/82800 [00:00<3:00:09, 7.66it/s]\u001b[AINFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n", - "\n", - "\n", - "Training Episodes: 50%|█████ | 5/10 [00:16<00:16, 3.32s/it]\n" + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" ] }, { - "ename": "ValueError", - "evalue": "Time must be > 1546304400.0 but is 1546300799.", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 37\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mworld\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlearning_config\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"learning_mode\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 39\u001b[0;31m run_learning(\n\u001b[0m\u001b[1;32m 40\u001b[0m \u001b[0mworld\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 41\u001b[0m \u001b[0minputs_path\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minputs_path\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mrun_learning\u001b[0;34m(world, inputs_path, scenario, study_case, verbose)\u001b[0m\n\u001b[1;32m 122\u001b[0m \u001b[0mworld\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlearning_role\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload_inter_episodic_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minter_episodic_data\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 123\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 124\u001b[0;31m \u001b[0mworld\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 125\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 126\u001b[0m \u001b[0;31m# -----------------------------------------\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/assume/world.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 684\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 685\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 686\u001b[0;31m return self.loop.run_until_complete(\n\u001b[0m\u001b[1;32m 687\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0masync_run\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstart_ts\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mstart_ts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mend_ts\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mend_ts\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 688\u001b[0m )\n", - "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/nest_asyncio.py\u001b[0m in \u001b[0;36mrun_until_complete\u001b[0;34m(self, future)\u001b[0m\n\u001b[1;32m 96\u001b[0m raise RuntimeError(\n\u001b[1;32m 97\u001b[0m 'Event loop stopped before Future completed.')\n\u001b[0;32m---> 98\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mresult\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 99\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_run_once\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/lib/python3.10/asyncio/futures.py\u001b[0m in \u001b[0;36mresult\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 199\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__log_traceback\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 200\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_exception\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 201\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_exception\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwith_traceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_exception_tb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 202\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_result\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 203\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/lib/python3.10/asyncio/tasks.py\u001b[0m in \u001b[0;36m__step\u001b[0;34m(***failed resolving arguments***)\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[0;31m# We use the `send` method directly, because coroutines\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 231\u001b[0m \u001b[0;31m# don't have `__iter__` and `__next__` methods.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 232\u001b[0;31m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcoro\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 233\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 234\u001b[0m \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcoro\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mthrow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/assume/world.py\u001b[0m in \u001b[0;36masync_run\u001b[0;34m(self, start_ts, end_ts)\u001b[0m\n\u001b[1;32m 649\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 650\u001b[0m \u001b[0;31m# allow registration before first opening\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 651\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_time\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstart_ts\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 652\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdistributed_role\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 653\u001b[0m \u001b[0;32mawait\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclock_manager\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbroadcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.10/dist-packages/mango/util/clock.py\u001b[0m in \u001b[0;36mset_time\u001b[0;34m(self, t)\u001b[0m\n\u001b[1;32m 68\u001b[0m \"\"\"\n\u001b[1;32m 69\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mt\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_time\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 70\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf\"Time must be > {self._time} but is {t}.\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 71\u001b[0m \u001b[0;31m# set time\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 72\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_time\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mValueError\u001b[0m: Time must be > 1546304400.0 but is 1546300799." + "name": "stderr", + "output_type": "stream", + "text": [ + " 0%| | 0/82800 [00:00 exception=KeyboardInterrupt()>\n", - "Traceback (most recent call last):\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/world.py\", line 686, in run\n", - " return self.loop.run_until_complete(\n", - " File \"/usr/local/lib/python3.10/dist-packages/nest_asyncio.py\", line 92, in run_until_complete\n", - " self._run_once()\n", - " File \"/usr/local/lib/python3.10/dist-packages/nest_asyncio.py\", line 133, in _run_once\n", - " handle._run()\n", - " File \"/usr/lib/python3.10/asyncio/events.py\", line 80, in _run\n", - " self._context.run(self._callback, *self._args)\n", - " File \"/usr/lib/python3.10/asyncio/tasks.py\", line 232, in __step\n", - " result = coro.send(None)\n", - " File \"/usr/local/lib/python3.10/dist-packages/mango/util/scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/common/units_operator.py\", line 411, in submit_bids\n", - " orderbook = await self.formulate_bids(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/common/units_operator.py\", line 475, in formulate_bids\n", - " product_bids = unit.calculate_bids(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/common/base.py\", line 109, in calculate_bids\n", - " bids = self.bidding_strategies[market_config.market_id].calculate_bids(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/strategies/naive_strategies.py\", line 42, in calculate_bids\n", - " min_power, max_power = unit.calculate_min_max_power(\n", - " File \"/usr/local/lib/python3.10/dist-packages/assume/units/powerplant.py\", line 349, in calculate_min_max_power\n", - " max_power = max_power.clip(lower=0)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pandas/core/generic.py\", line 9098, in clip\n", - " return self._clip_with_scalar(lower, upper, inplace=inplace)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pandas/core/generic.py\", line 8838, in _clip_with_scalar\n", - " cond = mask | (self >= lower)\n", - " File \"/usr/local/lib/python3.10/dist-packages/pandas/core/ops/common.py\", line 74, in new_method\n", - " other = item_from_zerodim(other)\n", - "KeyboardInterrupt\n", - "\n", - "tutorial_08_zonal_case_5 2019-01-01 01:00:00: : 1546308001.0it [00:00, 3195660900.48it/s]\u001b[AERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n" + "INFO:assume.common.outputs:tried writing grid data to non postGIS database\n", + "ERROR:mango.agent.core:The check inbox task of Operator South failed!\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py\", line 450, in _check_inbox\n", + " self.handle_message(content=content, meta=meta)\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\role.py\", line 525, in handle_message\n", + " self._role_context.handle_message(content, meta)\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\role.py\", line 401, in handle_message\n", + " self._role_handler.handle_message(content, meta)\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\role.py\", line 239, in handle_message\n", + " method(content, meta)\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\common\\units_operator.py\", line 211, in handle_market_feedback\n", + " self.write_actual_dispatch(marketconfig.product_type)\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\common\\units_operator.py\", line 348, in write_actual_dispatch\n", + " market_dispatch, unit_dispatch_dfs = self.get_actual_dispatch(\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\common\\units_operator.py\", line 306, in get_actual_dispatch\n", + " market_dispatch = aggregate_step_amount(\n", + " ^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\common\\utils.py\", line 315, in aggregate_step_amount\n", + " groupdata_str = \"_\".join(groupdata)\n", + " ^^^^^^^^^^^^^^^^^^^\n", + "TypeError: sequence item 1: expected str instance, int found\n", + "ERROR:mango.agent.core:The check inbox task of Operator North failed!\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\core.py\", line 450, in _check_inbox\n", + " self.handle_message(content=content, meta=meta)\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\role.py\", line 525, in handle_message\n", + " self._role_context.handle_message(content, meta)\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\role.py\", line 401, in handle_message\n", + " self._role_handler.handle_message(content, meta)\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\agent\\role.py\", line 239, in handle_message\n", + " method(content, meta)\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\common\\units_operator.py\", line 211, in handle_market_feedback\n", + " self.write_actual_dispatch(marketconfig.product_type)\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\common\\units_operator.py\", line 348, in write_actual_dispatch\n", + " market_dispatch, unit_dispatch_dfs = self.get_actual_dispatch(\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\common\\units_operator.py\", line 306, in get_actual_dispatch\n", + " market_dispatch = aggregate_step_amount(\n", + " ^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\common\\utils.py\", line 315, in aggregate_step_amount\n", + " groupdata_str = \"_\".join(groupdata)\n", + " ^^^^^^^^^^^^^^^^^^^\n", + "TypeError: sequence item 1: expected str instance, int found\n" ] } ], @@ -4324,7 +1387,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 6, "id": "DhYXvzaP_iyK", "metadata": { "colab": { @@ -4337,10 +1400,10 @@ { "data": { "text/plain": [ - "False" + "'False'" ] }, - "execution_count": 11, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } From 956d60f390b77ab5d04cc6fb5ec495572bb10222 Mon Sep 17 00:00:00 2001 From: Nick Harder Date: Mon, 7 Oct 2024 17:23:43 +0200 Subject: [PATCH 17/27] -finilized coupling example --- .../06_advanced_orders_example.ipynb | 2 +- .../notebooks/08_market_zone_coupling.ipynb | 1524 ++++++++--------- 2 files changed, 720 insertions(+), 806 deletions(-) diff --git a/examples/notebooks/06_advanced_orders_example.ipynb b/examples/notebooks/06_advanced_orders_example.ipynb index 7240ca55..a8715825 100644 --- a/examples/notebooks/06_advanced_orders_example.ipynb +++ b/examples/notebooks/06_advanced_orders_example.ipynb @@ -138,7 +138,7 @@ }, "outputs": [], "source": [ - "!pip install 'assume-framework[optimization]'" + "!pip install 'assume-framework'" ] }, { diff --git a/examples/notebooks/08_market_zone_coupling.ipynb b/examples/notebooks/08_market_zone_coupling.ipynb index 6b8d1f95..22a5d43d 100644 --- a/examples/notebooks/08_market_zone_coupling.ipynb +++ b/examples/notebooks/08_market_zone_coupling.ipynb @@ -2,10 +2,8 @@ "cells": [ { "cell_type": "markdown", - "id": "d6968cbf", - "metadata": { - "id": "d6968cbf" - }, + "id": "ff81547a", + "metadata": {}, "source": [ "# Market Zone Coupling in the ASSUME Framework\n", "\n", @@ -35,10 +33,8 @@ }, { "cell_type": "markdown", - "id": "b7f48d5e", - "metadata": { - "id": "b7f48d5e" - }, + "id": "76281e67", + "metadata": {}, "source": [ "## 1. Introduction to Market Zone Coupling\n", "\n", @@ -57,10 +53,8 @@ }, { "cell_type": "markdown", - "id": "ad384717", - "metadata": { - "id": "ad384717" - }, + "id": "42ff364e", + "metadata": {}, "source": [ "## 2. Setting Up the ASSUME Framework for Market Zone Coupling\n", "\n", @@ -72,31 +66,27 @@ { "cell_type": "code", "execution_count": 1, - "id": "d501b239", - "metadata": { - "id": "d501b239", - "vscode": { - "languageId": "shellscript" - } - }, + "id": "0dd1c254", + "metadata": {}, "outputs": [], "source": [ "# Install the ASSUME framework\n", "# !pip install assume-framework\n", "\n", - "# Install Plotly if not already installed\n", - "# !pip install plotly\n", + "# Install the Pyomo library and GLPK solver\n", + "# this is need only in collab\n", + "# when running locally, use pip install assume-framework[optimization]\n", + "# !pip install pyomo\n", + "# !apt-get install -y -qq glpk-utils\n", "\n", - "# Clone the ASSUME repository containing predefined scenarios\n", - "# !git clone https://github.com/assume-framework/assume.git assume-repo" + "# Install Plotly if not already installed\n", + "# !pip install plotly" ] }, { "cell_type": "markdown", - "id": "7935b350", - "metadata": { - "id": "7935b350" - }, + "id": "4266c838", + "metadata": {}, "source": [ "Let's also import some basic libraries that we will use throughout the tutorial." ] @@ -104,17 +94,14 @@ { "cell_type": "code", "execution_count": 2, - "id": "05df5da6", - "metadata": { - "id": "05df5da6", - "outputId": "06e07c72-7a33-43e2-c5d6-da952b29edda" - }, + "id": "a1543685", + "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/ck/0m6299c93kd95nnbzxsb67v00000gn/T/ipykernel_71588/808789752.py:1: DeprecationWarning: \n", + "/var/folders/ck/0m6299c93kd95nnbzxsb67v00000gn/T/ipykernel_73523/2740924032.py:1: DeprecationWarning: \n", "Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0),\n", "(to allow more performant data types, such as the Arrow string type, and better interoperability with other libraries)\n", "but was not found to be installed on your system.\n", @@ -140,10 +127,8 @@ }, { "cell_type": "markdown", - "id": "3491bed0", - "metadata": { - "id": "3491bed0" - }, + "id": "902fc3a9", + "metadata": {}, "source": [ "## 3. Understanding the Market Clearing Optimization\n", "\n", @@ -159,43 +144,97 @@ "The ASSUME framework uses Pyomo to formulate and solve the market clearing optimization problem. Below is a simplified version of the market clearing function, highlighting key components related to zone coupling." ] }, + { + "cell_type": "markdown", + "id": "4f874cfd", + "metadata": {}, + "source": [ + "### Simplified Market Clearing Optimization Problem\n", + "\n", + "We consider a simplified market clearing optimization model focusing on zone coupling, aiming to minimize the total cost.\n", + "\n", + "#### Sets and Variables:\n", + "- $T$: Set of time periods.\n", + "- $N$: Set of nodes (zones).\n", + "- $L$: Set of lines.\n", + "- $x_o \\in [0, 1]$: Bid acceptance ratio for order $o$.\n", + "- $f_{t, l} \\in \\mathbb{R}$: Power flow on line $l$ at time $t$.\n", + "\n", + "#### Constants:\n", + "- $P_o$: Price of order $o$.\n", + "- $V_o$: Volume of order $o$.\n", + "- $S_l$: Nominal capacity of line $l$.\n", + "\n", + "#### Objective Function:\n", + "Minimize the total cost of accepted orders:\n", + "\n", + "$$\n", + "\\min \\sum_{o \\in O} P_o V_o x_o\n", + "$$\n", + "\n", + "#### Constraints:\n", + "\n", + "1. **Energy Balance for Each Node and Time Period**:\n", + "\n", + "$$\n", + "\\sum_{\\substack{o \\in O \\\\ \\text{node}(o) = n \\\\ \\text{time}(o) = t}} V_o x_o + \\sum_{l \\in L} I_{n, l} f_{t, l} = 0 \\quad \\forall n \\in N, \\, t \\in T\n", + "$$\n", + "\n", + "Where:\n", + "- $I_{n, l}$ is the incidence value for node $n$ and line $l$ (from the incidence matrix).\n", + "\n", + "2. **Transmission Capacity Constraints for Each Line and Time Period**:\n", + "\n", + "$$\n", + "-S_l \\leq f_{t, l} \\leq S_l \\quad \\forall l \\in L, \\, t \\in T\n", + "$$\n", + "\n", + "#### Summary:\n", + "The goal is to minimize the total cost while ensuring energy balance at each node and respecting transmission line capacity limits for each time period.\n", + "\n", + "In actual ASSUME Framework, the optimization problem is more complex and includes additional constraints and variables, and supports also additional bid types such as block and linked orders. However, the simplified model above captures the essence of market clearing with zone coupling.\n" + ] + }, { "cell_type": "code", "execution_count": 3, - "id": "72cdba6b", - "metadata": { - "id": "72cdba6b" - }, + "id": "e2be3fe2", + "metadata": {}, "outputs": [], "source": [ - "# Display a simplified version of the market clearing optimization function\n", "import pyomo.environ as pyo\n", "from pyomo.opt import SolverFactory, TerminationCondition\n", "\n", "\n", - "def simplified_market_clearing_opt(orders, market_products, nodes, incidence_matrix):\n", + "def simplified_market_clearing_opt(orders, incidence_matrix, lines):\n", " \"\"\"\n", " Simplified market clearing optimization focusing on zone coupling.\n", "\n", " Args:\n", " orders (dict): Dictionary of orders with bid_id as keys.\n", - " market_products (list): List of MarketProduct tuples.\n", - " nodes (list): List of market zones.\n", - " incidence_matrix (dict): Transmission capacity between zones.\n", + " lines (DataFrame): DataFrame containing information about the transmission lines.\n", + " incidence_matrix (DataFrame): Incidence matrix describing the network structure.\n", "\n", " Returns:\n", " model (ConcreteModel): The solved Pyomo model.\n", " results (SolverResults): The solver results.\n", " \"\"\"\n", + " nodes = list(incidence_matrix.index)\n", + " line_ids = list(incidence_matrix.columns)\n", "\n", " model = pyo.ConcreteModel()\n", - " # define duals suffix\n", + " # Define dual suffix\n", " model.dual = pyo.Suffix(direction=pyo.Suffix.IMPORT)\n", "\n", " # Define the set of time periods\n", - " model.T = pyo.Set(initialize=[mp[0] for mp in market_products], doc=\"timesteps\")\n", - " # Define the set of zones (nodes)\n", + " model.T = pyo.Set(\n", + " initialize=sorted(set(order[\"time\"] for order in orders.values())),\n", + " doc=\"timesteps\",\n", + " )\n", + " # Define the set of nodes (zones)\n", " model.nodes = pyo.Set(initialize=nodes, doc=\"nodes\")\n", + " # Define the set of lines\n", + " model.lines = pyo.Set(initialize=line_ids, doc=\"lines\")\n", "\n", " # Decision variables for bid acceptance ratios (0 to 1)\n", " model.x = pyo.Var(\n", @@ -205,68 +244,41 @@ " doc=\"bid_acceptance_ratio\",\n", " )\n", "\n", - " # Decision variables for power flows between zones at each time period\n", - " model.flows = pyo.Var(\n", - " model.T, model.nodes, model.nodes, domain=pyo.Reals, doc=\"power_flows\"\n", - " )\n", + " # Decision variables for power flows on each line at each time period\n", + " model.flows = pyo.Var(model.T, model.lines, domain=pyo.Reals, doc=\"power_flows\")\n", "\n", - " # Energy balance constraints for each zone and time period\n", + " # Energy balance constraint for each node and time period\n", " def energy_balance_rule(model, node, t):\n", - " \"\"\"\n", - " Ensures that for each zone and time period, the total supply minus demand plus imports minus exports equals zero.\n", - " \"\"\"\n", - " # Sum of accepted bid volumes in the zone at time t\n", - " supply = sum(\n", - " orders[o][\"volume\"] * model.x[o]\n", - " for o in orders\n", - " if orders[o][\"node\"] == node and orders[o][\"time\"] == t\n", - " )\n", - " # Sum of power flows into the zone\n", - " imports = sum(\n", - " model.flows[t, other_node, node]\n", - " for other_node in nodes\n", - " if other_node != node\n", - " )\n", - " # Sum of power flows out of the zone\n", - " exports = sum(\n", - " model.flows[t, node, other_node]\n", - " for other_node in nodes\n", - " if other_node != node\n", - " )\n", - " # Energy balance: supply + imports - exports = 0\n", - " return supply + imports - exports == 0\n", + " balance_expr = 0.0\n", + " # Add contributions from orders\n", + " for order_key, order in orders.items():\n", + " if order[\"node\"] == node and order[\"time\"] == t:\n", + " balance_expr += order[\"volume\"] * model.x[order_key]\n", + "\n", + " # Add contributions from line flows based on the incidence matrix\n", + " if incidence_matrix is not None:\n", + " for line in model.lines:\n", + " incidence_value = incidence_matrix.loc[node, line]\n", + " if incidence_value != 0:\n", + " balance_expr += incidence_value * model.flows[t, line]\n", + "\n", + " return balance_expr == 0\n", "\n", - " # Apply the energy balance rule to all zones and time periods\n", " model.energy_balance = pyo.Constraint(\n", " model.nodes, model.T, rule=energy_balance_rule\n", " )\n", "\n", - " def transmission_rule(model, t, node1, node2):\n", + " # Transmission capacity constraints for each line and time period\n", + " def transmission_capacity_rule(model, t, line):\n", " \"\"\"\n", - " Limits the power flow between two zones based on transmission capacity.\n", + " Limits the power flow on each line based on its capacity.\n", " \"\"\"\n", - " capacity = incidence_matrix[node1].get(node2, 0)\n", - " return (-capacity, model.flows[t, node1, node2], capacity)\n", + " capacity = lines.at[line, \"s_nom\"]\n", + " return (-capacity, model.flows[t, line], capacity)\n", "\n", - " # Apply the transmission constraints to all possible flows\n", + " # Apply transmission capacity constraints to all lines and time periods\n", " model.transmission_constraints = pyo.Constraint(\n", - " model.T, model.nodes, model.nodes, rule=transmission_rule\n", - " )\n", - "\n", - " def symmetry_rule(model, t, node1, node2):\n", - " \"\"\"\n", - " Ensures that the flow from node1 to node2 is the negative of the flow from node2 to node1.\n", - " \"\"\"\n", - " if node1 != node2:\n", - " return model.flows[t, node2, node1] == -model.flows[t, node1, node2]\n", - " else:\n", - " return (\n", - " pyo.Constraint.Skip\n", - " ) # No constraint needed for flows within the same node\n", - "\n", - " # Apply the antisymmetry rule to all node pairs and time periods\n", - " model.symmetry_constraints = pyo.Constraint(\n", - " model.T, model.nodes, model.nodes, rule=symmetry_rule\n", + " model.T, model.lines, rule=transmission_capacity_rule\n", " )\n", "\n", " # Objective: Minimize total cost (sum of bid prices multiplied by accepted volumes)\n", @@ -289,20 +301,16 @@ }, { "cell_type": "markdown", - "id": "28637869", - "metadata": { - "id": "28637869" - }, + "id": "8d42c532", + "metadata": {}, "source": [ "The above function is a simplified representation focusing on the essential aspects of market zone coupling. In the following sections, we will delve deeper into creating input files and mimicking the market clearing process using this function to understand the inner workings of the ASSUME framework." ] }, { "cell_type": "markdown", - "id": "26e3cfa8", - "metadata": { - "id": "26e3cfa8" - }, + "id": "11addaf0", + "metadata": {}, "source": [ "## 4. Creating Exemplary Input Files for Market Zone Coupling\n", "\n", @@ -311,10 +319,8 @@ }, { "cell_type": "markdown", - "id": "01726994", - "metadata": { - "id": "01726994" - }, + "id": "2a095ffb", + "metadata": {}, "source": [ "### 4.1. Defining Buses and Zones\n", "\n", @@ -324,15 +330,8 @@ { "cell_type": "code", "execution_count": 4, - "id": "ae9695a3", - "metadata": { - "cellView": "form", - "id": "ae9695a3", - "jupyter": { - "source_hidden": true - }, - "outputId": "3be943e1-af78-4833-c6ba-00a1ff4956ce" - }, + "id": "c1731cdc", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -362,33 +361,36 @@ " \n", " \n", " \n", - " name\n", " v_nom\n", " zone_id\n", " x\n", " y\n", " \n", + " \n", + " name\n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " 0\n", - " north_1\n", + " north_1\n", " 380.0\n", " DE_1\n", " 10.0\n", " 54.0\n", " \n", " \n", - " 1\n", - " north_2\n", + " north_2\n", " 380.0\n", " DE_1\n", " 9.5\n", " 53.5\n", " \n", " \n", - " 2\n", - " south\n", + " south\n", " 380.0\n", " DE_2\n", " 11.6\n", @@ -399,10 +401,11 @@ "" ], "text/plain": [ - " name v_nom zone_id x y\n", - "0 north_1 380.0 DE_1 10.0 54.0\n", - "1 north_2 380.0 DE_1 9.5 53.5\n", - "2 south 380.0 DE_2 11.6 48.1" + " v_nom zone_id x y\n", + "name \n", + "north_1 380.0 DE_1 10.0 54.0\n", + "north_2 380.0 DE_1 9.5 53.5\n", + "south 380.0 DE_2 11.6 48.1" ] }, "metadata": {}, @@ -419,7 +422,7 @@ " \"x\": [10.0, 9.5, 11.6],\n", " \"y\": [54.0, 53.5, 48.1],\n", " }\n", - ")\n", + ").set_index(\"name\")\n", "\n", "# Display the buses DataFrame\n", "print(\"Buses DataFrame:\")\n", @@ -428,10 +431,8 @@ }, { "cell_type": "markdown", - "id": "02d32661", - "metadata": { - "id": "02d32661" - }, + "id": "50a27c51", + "metadata": {}, "source": [ "**Explanation:**\n", "\n", @@ -443,10 +444,8 @@ }, { "cell_type": "markdown", - "id": "01f22792", - "metadata": { - "id": "01f22792" - }, + "id": "1545e3bf", + "metadata": {}, "source": [ "### 4.2. Configuring Transmission Lines\n", "\n", @@ -456,15 +455,8 @@ { "cell_type": "code", "execution_count": 5, - "id": "4a531a25", - "metadata": { - "cellView": "form", - "id": "4a531a25", - "jupyter": { - "source_hidden": true - }, - "outputId": "61f797fe-3fa8-463e-d46c-6c7ec080ccf6" - }, + "id": "64769ec7", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -494,18 +486,24 @@ " \n", " \n", " \n", - " name\n", " bus0\n", " bus1\n", " s_nom\n", " x\n", " r\n", " \n", + " \n", + " name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " 0\n", - " Line_N1_S\n", + " Line_N1_S\n", " north_1\n", " south\n", " 5000.0\n", @@ -513,8 +511,7 @@ " 0.001\n", " \n", " \n", - " 1\n", - " Line_N2_S\n", + " Line_N2_S\n", " north_2\n", " south\n", " 5000.0\n", @@ -522,8 +519,7 @@ " 0.001\n", " \n", " \n", - " 2\n", - " Line_N1_N2\n", + " Line_N1_N2\n", " north_1\n", " north_2\n", " 5000.0\n", @@ -535,10 +531,11 @@ "" ], "text/plain": [ - " name bus0 bus1 s_nom x r\n", - "0 Line_N1_S north_1 south 5000.0 0.01 0.001\n", - "1 Line_N2_S north_2 south 5000.0 0.01 0.001\n", - "2 Line_N1_N2 north_1 north_2 5000.0 0.01 0.001" + " bus0 bus1 s_nom x r\n", + "name \n", + "Line_N1_S north_1 south 5000.0 0.01 0.001\n", + "Line_N2_S north_2 south 5000.0 0.01 0.001\n", + "Line_N1_N2 north_1 north_2 5000.0 0.01 0.001" ] }, "metadata": {}, @@ -556,7 +553,7 @@ " \"x\": [0.01, 0.01, 0.01],\n", " \"r\": [0.001, 0.001, 0.001],\n", " }\n", - ")\n", + ").set_index(\"name\")\n", "\n", "print(\"Transmission Lines DataFrame:\")\n", "display(lines)" @@ -564,10 +561,8 @@ }, { "cell_type": "markdown", - "id": "13cb21b0", - "metadata": { - "id": "13cb21b0" - }, + "id": "f2290793", + "metadata": {}, "source": [ "**Explanation:**\n", "\n", @@ -580,10 +575,8 @@ }, { "cell_type": "markdown", - "id": "8874c322", - "metadata": { - "id": "8874c322" - }, + "id": "c931cf9f", + "metadata": {}, "source": [ "### 4.3. Setting Up Power Plant and Demand Units\n", "\n", @@ -593,15 +586,8 @@ { "cell_type": "code", "execution_count": 6, - "id": "e71b7ce9", - "metadata": { - "cellView": "form", - "id": "e71b7ce9", - "jupyter": { - "source_hidden": true - }, - "outputId": "d34609a8-0758-4aa7-9911-72ffc942a69b" - }, + "id": "8a1f9e35", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -801,15 +787,8 @@ { "cell_type": "code", "execution_count": 7, - "id": "365aa96b", - "metadata": { - "cellView": "form", - "id": "365aa96b", - "jupyter": { - "source_hidden": true - }, - "outputId": "e743edad-038f-43f2-e307-b993fea1d21d" - }, + "id": "16f8a13c", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -920,10 +899,8 @@ }, { "cell_type": "markdown", - "id": "8ce96a59", - "metadata": { - "id": "8ce96a59" - }, + "id": "d847ac5f", + "metadata": {}, "source": [ "**Explanation:**\n", "\n", @@ -950,10 +927,8 @@ }, { "cell_type": "markdown", - "id": "e14dc7f7", - "metadata": { - "id": "e14dc7f7" - }, + "id": "8f1d684a", + "metadata": {}, "source": [ "### 4.4. Preparing Demand Data\n", "\n", @@ -963,14 +938,8 @@ { "cell_type": "code", "execution_count": 8, - "id": "c817bc49", - "metadata": { - "cellView": "form", - "id": "c817bc49", - "jupyter": { - "source_hidden": true - } - }, + "id": "a0591f14", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1085,10 +1054,8 @@ }, { "cell_type": "markdown", - "id": "99e7bbbc", - "metadata": { - "id": "99e7bbbc" - }, + "id": "1756e6e3", + "metadata": {}, "source": [ "**Explanation:**\n", "\n", @@ -1100,37 +1067,29 @@ }, { "cell_type": "markdown", - "id": "42422a16", - "metadata": { - "id": "42422a16" - }, + "id": "478211c6", + "metadata": {}, "source": [ - "## 5. Mimicking the Market Clearing Process\n", + "## 5. Reproducing the Market Clearing Process\n", "\n", - "With the input files prepared, we can now mimic the market clearing process using the simplified market clearing function. This will help us understand how different market zones interact, how constraints are managed, how bids are assigned, and how market prices are extracted." + "With the input files prepared, we can now reproduce the market clearing process using the simplified market clearing function. This will help us understand how different market zones interact, how constraints are managed, how bids are assigned, and how market prices are extracted." ] }, { "cell_type": "markdown", - "id": "6b68ad0f", - "metadata": { - "id": "6b68ad0f" - }, + "id": "01680700", + "metadata": {}, "source": [ "### 5.1. Calculating the Incidence Matrix\n", "\n", - "The **Incidence Matrix** represents the transmission capacities between different market zones. It is calculated as the sum of the capacities of transmission lines connecting each pair of zones. This matrix is crucial for enforcing transmission constraints during the market clearing process.\n", - "\n", - "**Note:** The method of calculating the incidence matrix by simply summing line capacities is a simplified approach. In real-world scenarios, more sophisticated methods are used to accurately represent the network's behavior and constraints. This approach will be extended in future implementations to better reflect real-world complexities." + "The **Incidence Matrix** represents the connection relationships between different nodes in a network. In the context of market zones, it indicates which transmission lines connect which zones. The incidence matrix is a binary matrix where each element denotes whether a particular node is connected to a line or not. This matrix is essential for understanding the structure of the transmission network and for formulating power flow equations during the market clearing process." ] }, { "cell_type": "code", "execution_count": 9, - "id": "70688bfd", - "metadata": { - "id": "70688bfd" - }, + "id": "c9fb8458", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1160,29 +1119,32 @@ " \n", " \n", " \n", - " DE_1\n", - " DE_2\n", + " Line_N1_S\n", + " Line_N2_S\n", + " Line_N1_N2\n", " \n", " \n", " \n", " \n", - " DE_2\n", - " 10000.0\n", - " 0.0\n", + " DE_1\n", + " 1\n", + " 1\n", + " 0\n", " \n", " \n", - " DE_1\n", - " 0.0\n", - " -10000.0\n", + " DE_2\n", + " -1\n", + " -1\n", + " 0\n", " \n", " \n", "\n", "" ], "text/plain": [ - " DE_1 DE_2\n", - "DE_2 10000.0 0.0\n", - "DE_1 0.0 -10000.0" + " Line_N1_S Line_N2_S Line_N1_N2\n", + "DE_1 1 1 0\n", + "DE_2 -1 -1 0" ] }, "metadata": {}, @@ -1190,116 +1152,130 @@ } ], "source": [ - "# Define market products (time periods)\n", - "market_products = []\n", - "for timestamp in demand_df.index:\n", - " market_products.append(\n", - " (\n", - " timestamp, # Start time\n", - " timestamp + pd.Timedelta(hours=1), # End time\n", - " 1, # Only_hours flag (for simplicity)\n", - " )\n", - " )\n", + "# @title Create the incidence matrix\n", + "def create_incidence_matrix(lines, buses, zones_id=None):\n", + " # Determine nodes based on whether we're working with zones or individual buses\n", + " if zones_id:\n", + " nodes = buses[zones_id].unique() # Use zones as nodes\n", + " node_mapping = buses[zones_id].to_dict() # Map bus IDs to zones\n", + " else:\n", + " nodes = buses.index.values # Use buses as nodes\n", + " node_mapping = {bus: bus for bus in nodes} # Identity mapping for buses\n", + "\n", + " # Use the line indices as columns for the incidence matrix\n", + " line_indices = lines.index.values\n", "\n", - "# Define nodes (zones)\n", - "nodes = buses[\"zone_id\"].unique().tolist()\n", + " # Initialize incidence matrix as a DataFrame for easier label-based indexing\n", + " incidence_matrix = pd.DataFrame(0, index=nodes, columns=line_indices)\n", "\n", - "# Calculate the incidence matrix by summing the capacities of transmission lines between zones\n", - "incidence_matrix = {zone: {} for zone in nodes}\n", + " # Fill in the incidence matrix by iterating over lines\n", + " for line_idx, line in lines.iterrows():\n", + " bus0 = line[\"bus0\"]\n", + " bus1 = line[\"bus1\"]\n", "\n", - "for _, line in lines.iterrows():\n", - " # Get zones for each end of the transmission line\n", - " zone0 = buses.loc[buses[\"name\"] == line[\"bus0\"], \"zone_id\"].values[0]\n", - " zone1 = buses.loc[buses[\"name\"] == line[\"bus1\"], \"zone_id\"].values[0]\n", + " # Retrieve mapped nodes (zones or buses)\n", + " node0 = node_mapping.get(bus0)\n", + " node1 = node_mapping.get(bus1)\n", "\n", - " if zone0 != zone1:\n", - " # Add capacity to zone0 -> zone1\n", - " if zone1 not in incidence_matrix[zone0]:\n", - " incidence_matrix[zone0][zone1] = 0\n", - " incidence_matrix[zone0][zone1] += line[\"s_nom\"]\n", + " # Ensure both nodes are valid and part of the defined nodes\n", + " if (\n", + " node0 is not None\n", + " and node1 is not None\n", + " and node0 in nodes\n", + " and node1 in nodes\n", + " ):\n", + " if node0 != node1: # Only create incidence for different nodes\n", + " # Set incidence values: +1 for the \"from\" node and -1 for the \"to\" node\n", + " incidence_matrix.at[node0, line_idx] = (\n", + " 1 # Outgoing from bus0 (or zone0)\n", + " )\n", + " incidence_matrix.at[node1, line_idx] = -1 # Incoming to bus1 (or zone1)\n", "\n", - " # Add capacity to zone1 -> zone0 (assuming bidirectional)\n", - " if zone0 not in incidence_matrix[zone1]:\n", - " incidence_matrix[zone1][zone0] = 0\n", - " incidence_matrix[zone1][zone0] += line[\"s_nom\"]\n", + " # Return the incidence matrix as a DataFrame\n", + " return incidence_matrix\n", "\n", - "# Convert lower triangle values to negative to indicate opposite direction\n", - "for i, zone0 in enumerate(nodes):\n", - " for j, zone1 in enumerate(nodes):\n", - " if i > j and zone1 in incidence_matrix[zone0]:\n", - " incidence_matrix[zone0][zone1] = -incidence_matrix[zone0][zone1]\n", "\n", - "# Display the calculated incidence matrix\n", + "# Calculate the incidence matrix\n", + "incidence_matrix = create_incidence_matrix(lines, buses, \"zone_id\")\n", + "\n", "print(\"Calculated Incidence Matrix between Zones:\")\n", - "display(pd.DataFrame(incidence_matrix).fillna(0))" + "display(incidence_matrix)" ] }, { "cell_type": "markdown", - "id": "cc0dd7b2", - "metadata": { - "id": "cc0dd7b2" - }, + "id": "61e9050c", + "metadata": {}, "source": [ "**Explanation:**\n", "\n", "- **Nodes (Zones):** Extracted from the `buses` DataFrame (`DE_1` and `DE_2`).\n", "- **Transmission Lines:** Iterated over to sum their capacities between different zones.\n", "- **Bidirectional Flow Assumption:** Transmission capacities are added in both directions (`DE_1 -> DE_2` and `DE_2 -> DE_1`).\n", - "- **Lower Triangle Negative Values:** To indicate the opposite direction of power flow, capacities in the lower triangle of the matrix are converted to negative values.\n", - "\n", - "**Sample Output:**\n", - "\n", - "```\n", - "Calculated Incidence Matrix between Zones:\n", - " DE_1 DE_2\n", - "DE_1 0 10000\n", - "DE_2 -10000 0\n", - "```\n", - "\n", - "This output indicates that there is a total transmission capacity of 20,000 MVA from `DE_1` to `DE_2` and vice versa, based on the sum of the capacities of the transmission lines connecting these zones." + "- **Lower Triangle Negative Values:** To indicate the opposite direction of power flow, capacities in the lower triangle of the matrix are converted to negative values." ] }, { "cell_type": "markdown", - "id": "7245c636", - "metadata": { - "id": "7245c636" - }, + "id": "12ccae5f", + "metadata": {}, "source": [ - "### 5.2. Implementing the Simplified Market Clearing Function\n", + "### 5.2. Creating and Mapping Market Orders\n", "\n", - "We will use the `simplified_market_clearing_opt` function defined earlier to perform the market clearing. This function takes in the orders, market products, zones (nodes), and the incidence matrix to determine the optimal bid acceptances and power flows between zones." + "We will construct a dictionary of market orders representing supply and demand bids from power plants and demand units.\n", + "The orders include details such as price, volume, location (node), and time. Once the orders are generated, they will be\n", + "mapped from nodes to corresponding zones using a pre-defined node-to-zone mapping." ] }, { "cell_type": "code", "execution_count": 10, - "id": "03f654fc", - "metadata": { - "cellView": "form", - "id": "03f654fc", - "jupyter": { - "source_hidden": true - } - }, + "id": "4f7366ae", + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", - "Sample Supply Order:\n", - "{'price': 5, 'volume': 1000.0, 'node': 'north_1', 'time': Timestamp('2019-01-01 00:00:00')}\n", + "Sample Supply Order:\n" + ] + }, + { + "data": { + "text/plain": [ + "{'price': 5,\n", + " 'volume': 1000.0,\n", + " 'node': 'north_1',\n", + " 'time': Timestamp('2019-01-01 00:00:00')}" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "\n", - "Sample Demand Order:\n", - "{'price': 100, 'volume': -2400, 'node': 'north_1', 'time': Timestamp('2019-01-01 00:00:00')}\n" + "Sample Demand Order:\n" ] + }, + { + "data": { + "text/plain": [ + "{'price': 100,\n", + " 'volume': -2400,\n", + " 'node': 'north_1',\n", + " 'time': Timestamp('2019-01-01 00:00:00')}" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "# @title Prepare the orders dictionary based on powerplant_units and demand_units\n", - "\n", + "# @title Construct Orders and Map Nodes to Zones\n", "# Initialize orders dictionary\n", "orders = {}\n", "\n", @@ -1329,65 +1305,23 @@ "\n", "# Display a sample order\n", "print(\"\\nSample Supply Order:\")\n", - "print(orders[\"Unit 1_2019-01-01 00:00:00\"])\n", + "display(orders[\"Unit 1_2019-01-01 00:00:00\"])\n", "\n", "print(\"\\nSample Demand Order:\")\n", - "print(orders[\"demand_north_1_2019-01-01 00:00:00\"])" - ] - }, - { - "cell_type": "markdown", - "id": "d9c9e27c", - "metadata": { - "id": "d9c9e27c" - }, - "source": [ - "**Explanation:**\n", - "\n", - "- **Power Plant Bids:** Each power plant unit submits a bid for each time period with its `additional_cost` as the bid price and `max_power` as the bid volume. Units in the north (`DE_1`) are cheaper (`additional_cost` ranging from 5 to 19) compared to southern units (`DE_2`) which are more expensive (`additional_cost` ranging from 20 to 34). This is a simplified representation of the bidding strategy. In actual ASSUME simulations, marginal costs and other factors are considered for more realistic bidding.\n", - "- **Demand Bids:** Each demand unit submits a bid for each time period with zero price and negative volume representing the demand." - ] - }, - { - "cell_type": "markdown", - "id": "40f3fd52", - "metadata": { - "id": "40f3fd52" - }, - "source": [ - "### 5.3. Running the Market Clearing Simulation\n", - "\n", - "We will conduct three simulations:\n", - "\n", - "1. **Simulation 1:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **zero**.\n", - "2. **Simulation 2:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **medium**.\n", - "3. **Simulation 3:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **high**." - ] - }, - { - "cell_type": "markdown", - "id": "551990cf", - "metadata": { - "id": "551990cf" - }, - "source": [ - "#### Simulation 1: Zero Transmission Capacity Between Zones" + "display(orders[\"demand_north_1_2019-01-01 00:00:00\"])" ] }, { "cell_type": "code", "execution_count": 11, - "id": "123b4e9b", - "metadata": { - "id": "123b4e9b" - }, + "id": "e8b8a17f", + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "### Simulation 1: Zero Transmission Capacity Between Zones\n", - "Incidence Matrix for Simulation 1 (Zero Transmission Capacity):\n" + "Mapped Orders:\n" ] }, { @@ -1411,29 +1345,59 @@ " \n", " \n", " \n", - " DE_1\n", - " DE_2\n", + " price\n", + " volume\n", + " node\n", + " time\n", " \n", " \n", " \n", " \n", - " DE_2\n", - " 0.0\n", - " NaN\n", + " Unit 1_2019-01-01 00:00:00\n", + " 5\n", + " 1000.0\n", + " DE_1\n", + " 2019-01-01 00:00:00\n", " \n", " \n", - " DE_1\n", - " NaN\n", - " 0.0\n", + " Unit 1_2019-01-01 01:00:00\n", + " 5\n", + " 1000.0\n", + " DE_1\n", + " 2019-01-01 01:00:00\n", + " \n", + " \n", + " Unit 1_2019-01-01 02:00:00\n", + " 5\n", + " 1000.0\n", + " DE_1\n", + " 2019-01-01 02:00:00\n", + " \n", + " \n", + " Unit 1_2019-01-01 03:00:00\n", + " 5\n", + " 1000.0\n", + " DE_1\n", + " 2019-01-01 03:00:00\n", + " \n", + " \n", + " Unit 1_2019-01-01 04:00:00\n", + " 5\n", + " 1000.0\n", + " DE_1\n", + " 2019-01-01 04:00:00\n", " \n", " \n", "\n", "" ], "text/plain": [ - " DE_1 DE_2\n", - "DE_2 0.0 NaN\n", - "DE_1 NaN 0.0" + " price volume node time\n", + "Unit 1_2019-01-01 00:00:00 5 1000.0 DE_1 2019-01-01 00:00:00\n", + "Unit 1_2019-01-01 01:00:00 5 1000.0 DE_1 2019-01-01 01:00:00\n", + "Unit 1_2019-01-01 02:00:00 5 1000.0 DE_1 2019-01-01 02:00:00\n", + "Unit 1_2019-01-01 03:00:00 5 1000.0 DE_1 2019-01-01 03:00:00\n", + "Unit 1_2019-01-01 04:00:00 5 1000.0 DE_1 2019-01-01 04:00:00" ] }, "metadata": {}, @@ -1441,41 +1405,78 @@ } ], "source": [ - "print(\"### Simulation 1: Zero Transmission Capacity Between Zones\")\n", + "# Map the orders to zones\n", + "# Create a mapping from node_id to zone_id\n", + "node_mapping = buses[\"zone_id\"].to_dict()\n", "\n", - "# Define nodes (zones)\n", - "nodes_sim1 = nodes.copy()\n", + "# Create a new dictionary with mapped zone IDs\n", + "orders_mapped = {}\n", + "for bid_id, bid in orders.items():\n", + " original_node = bid[\"node\"]\n", + " mapped_zone = node_mapping.get(\n", + " original_node, original_node\n", + " ) # Default to original_node if not found\n", + " orders_mapped[bid_id] = {\n", + " \"price\": bid[\"price\"],\n", + " \"volume\": bid[\"volume\"],\n", + " \"node\": mapped_zone, # Replace bus with zone ID\n", + " \"time\": bid[\"time\"],\n", + " }\n", "\n", - "# Define the incidence matrix as a dictionary with zero transmission capacity\n", - "incidence_matrix_sim1 = {\n", - " \"DE_1\": {\"DE_2\": 0.0}, # Zero capacity from DE_1 to DE_2\n", - " \"DE_2\": {\"DE_1\": 0.0}, # Zero capacity from DE_2 to DE_1\n", - "}\n", + "# Display the mapped orders\n", + "print(\"Mapped Orders:\")\n", + "display(pd.DataFrame(orders_mapped).T.head())" + ] + }, + { + "cell_type": "markdown", + "id": "1a5d589c", + "metadata": {}, + "source": [ + "**Explanation:**\n", "\n", - "# Display the incidence matrix for Simulation 1\n", - "print(\"Incidence Matrix for Simulation 1 (Zero Transmission Capacity):\")\n", - "display(pd.DataFrame(incidence_matrix_sim1))" + "- **Power Plant Bids:** Each power plant unit submits a bid for each time period with its `additional_cost` as the bid price and `max_power` as the bid volume.\n", + "- **Demand Bids:** Each demand unit submits a bid for each time period with a high price (set to 100) and a negative volume representing the demand.\n", + "- **Node to Zone Mapping:** After creating the bids, the node information is mapped to corresponding zones for further market clearing steps.\n", + " The mapping uses a pre-defined dictionary (`node_mapping`) to replace each node ID with the corresponding zone ID. In ASSUME, this mapping happens automatically on the market side, but we are simulating it here for educational purposes." ] }, { "cell_type": "markdown", - "id": "80204af5", - "metadata": { - "id": "80204af5" - }, + "id": "f11b487c", + "metadata": {}, "source": [ - "Right now the orders contain the information about their node and not the zone. In ASSUME, the market clearing function will assign the bids to the zones based on the nodes they are connected to. This is done automatically by the framework, but for this simplified example, we will manually assign the bids to the zones." + "### 5.3. Running the Market Clearing Simulation\n", + "\n", + "We will conduct three simulations:\n", + "\n", + "1. **Simulation 1:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **zero**.\n", + "2. **Simulation 2:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **medium**.\n", + "3. **Simulation 3:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **high**." + ] + }, + { + "cell_type": "markdown", + "id": "07082c73", + "metadata": {}, + "source": [ + "#### Simulation 1: Zero Transmission Capacity Between Zones" ] }, { "cell_type": "code", "execution_count": 12, - "id": "0514d562", - "metadata": { - "cellView": "form", - "id": "0514d562" - }, + "id": "1c7dfee2", + "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "### Simulation 1: Zero Transmission Capacity Between Zones\n", + "Transmission Lines for Simulation 1:\n" + ] + }, { "data": { "text/html": [ @@ -1497,59 +1498,56 @@ " \n", " \n", " \n", - " price\n", - " volume\n", - " node\n", - " time\n", - " \n", - " \n", - " \n", - " \n", - " Unit 1_2019-01-01 00:00:00\n", - " 5\n", - " 1000.0\n", - " DE_1\n", - " 2019-01-01 00:00:00\n", + " bus0\n", + " bus1\n", + " s_nom\n", + " x\n", + " r\n", " \n", " \n", - " Unit 1_2019-01-01 01:00:00\n", - " 5\n", - " 1000.0\n", - " DE_1\n", - " 2019-01-01 01:00:00\n", + " name\n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", " \n", - " Unit 1_2019-01-01 02:00:00\n", - " 5\n", - " 1000.0\n", - " DE_1\n", - " 2019-01-01 02:00:00\n", + " Line_N1_S\n", + " north_1\n", + " south\n", + " 0\n", + " 0.01\n", + " 0.001\n", " \n", " \n", - " Unit 1_2019-01-01 03:00:00\n", - " 5\n", - " 1000.0\n", - " DE_1\n", - " 2019-01-01 03:00:00\n", + " Line_N2_S\n", + " north_2\n", + " south\n", + " 0\n", + " 0.01\n", + " 0.001\n", " \n", " \n", - " Unit 1_2019-01-01 04:00:00\n", - " 5\n", - " 1000.0\n", - " DE_1\n", - " 2019-01-01 04:00:00\n", + " Line_N1_N2\n", + " north_1\n", + " north_2\n", + " 0\n", + " 0.01\n", + " 0.001\n", " \n", " \n", "\n", - "" - ], - "text/plain": [ - " price volume node time\n", - "Unit 1_2019-01-01 00:00:00 5 1000.0 DE_1 2019-01-01 00:00:00\n", - "Unit 1_2019-01-01 01:00:00 5 1000.0 DE_1 2019-01-01 01:00:00\n", - "Unit 1_2019-01-01 02:00:00 5 1000.0 DE_1 2019-01-01 02:00:00\n", - "Unit 1_2019-01-01 03:00:00 5 1000.0 DE_1 2019-01-01 03:00:00\n", - "Unit 1_2019-01-01 04:00:00 5 1000.0 DE_1 2019-01-01 04:00:00" + "" + ], + "text/plain": [ + " bus0 bus1 s_nom x r\n", + "name \n", + "Line_N1_S north_1 south 0 0.01 0.001\n", + "Line_N2_S north_2 south 0 0.01 0.001\n", + "Line_N1_N2 north_1 north_2 0 0.01 0.001" ] }, "metadata": {}, @@ -1557,48 +1555,34 @@ } ], "source": [ - "# @title title\n", - "# create a mapping from node_id to zone_id\n", - "node_mapping = buses.set_index(\"name\")[\"zone_id\"].to_dict()\n", + "print(\"### Simulation 1: Zero Transmission Capacity Between Zones\")\n", "\n", - "# Create a new dictionary with mapped zone IDs\n", - "orders_mapped = {}\n", - "for bid_id, bid in orders.items():\n", - " original_node = bid[\"node\"]\n", - " mapped_zone = node_mapping.get(\n", - " original_node, original_node\n", - " ) # Default to original_node if not found\n", - " orders_mapped[bid_id] = {\n", - " \"price\": bid[\"price\"],\n", - " \"volume\": bid[\"volume\"],\n", - " \"node\": mapped_zone, # Replace bus with zone ID\n", - " \"time\": bid[\"time\"],\n", - " }\n", + "lines_sim1 = lines.copy()\n", + "lines_sim1[\"s_nom\"] = 0 # Set transmission capacity to zero for all lines\n", "\n", - "display(pd.DataFrame(orders_mapped).T.head())" + "print(\"Transmission Lines for Simulation 1:\")\n", + "display(lines_sim1)" ] }, { "cell_type": "code", "execution_count": 13, - "id": "543d3534", - "metadata": { - "id": "543d3534" - }, + "id": "c5e4a712", + "metadata": {}, "outputs": [], "source": [ "# Run the simplified market clearing for Simulation 1\n", "model_sim1, results_sim1 = simplified_market_clearing_opt(\n", - " orders_mapped, market_products, nodes_sim1, incidence_matrix_sim1\n", + " orders=orders_mapped,\n", + " incidence_matrix=incidence_matrix,\n", + " lines=lines_sim1,\n", ")" ] }, { "cell_type": "markdown", - "id": "11b4a94d", - "metadata": { - "id": "11b4a94d" - }, + "id": "aef7c083", + "metadata": {}, "source": [ "#### Simulation 2: Medium Transmission Capacity Between Zones" ] @@ -1606,17 +1590,15 @@ { "cell_type": "code", "execution_count": 14, - "id": "b7d246fa", - "metadata": { - "id": "b7d246fa" - }, + "id": "86304253", + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "### Simulation 2: Medium Transmission Capacity Between Zones\n", - "Incidence Matrix for Simulation 2 (Medium Transmission Capacity):\n" + "Transmission Lines for Simulation 2:\n" ] }, { @@ -1640,29 +1622,56 @@ " \n", " \n", " \n", - " DE_1\n", - " DE_2\n", + " bus0\n", + " bus1\n", + " s_nom\n", + " x\n", + " r\n", + " \n", + " \n", + " name\n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " DE_2\n", + " Line_N1_S\n", + " north_1\n", + " south\n", " 3000.0\n", - " NaN\n", + " 0.01\n", + " 0.001\n", " \n", " \n", - " DE_1\n", - " NaN\n", + " Line_N2_S\n", + " north_2\n", + " south\n", + " 3000.0\n", + " 0.01\n", + " 0.001\n", + " \n", + " \n", + " Line_N1_N2\n", + " north_1\n", + " north_2\n", " 3000.0\n", + " 0.01\n", + " 0.001\n", " \n", " \n", "\n", "" ], "text/plain": [ - " DE_1 DE_2\n", - "DE_2 3000.0 NaN\n", - "DE_1 NaN 3000.0" + " bus0 bus1 s_nom x r\n", + "name \n", + "Line_N1_S north_1 south 3000.0 0.01 0.001\n", + "Line_N2_S north_2 south 3000.0 0.01 0.001\n", + "Line_N1_N2 north_1 north_2 3000.0 0.01 0.001" ] }, "metadata": {}, @@ -1672,28 +1681,26 @@ "source": [ "print(\"### Simulation 2: Medium Transmission Capacity Between Zones\")\n", "\n", - "# Define the incidence matrix as a dictionary with medium transmission capacity\n", - "incidence_matrix_sim2 = {\n", - " \"DE_1\": {\"DE_2\": 3000.0}, # Medium transmission capacity from DE_1 to DE_2\n", - " \"DE_2\": {\"DE_1\": 3000.0}, # Medium transmission capacity from DE_2 to DE_1\n", - "}\n", + "# Define the lines for Simulation 2 with medium transmission capacity\n", + "lines_sim2 = lines.copy()\n", + "lines_sim2[\"s_nom\"] = 3000.0 # Set transmission capacity to 3000 MW for all lines\n", "\n", "# Display the incidence matrix for Simulation 2\n", - "print(\"Incidence Matrix for Simulation 2 (Medium Transmission Capacity):\")\n", - "display(pd.DataFrame(incidence_matrix_sim2))\n", + "print(\"Transmission Lines for Simulation 2:\")\n", + "display(lines_sim2)\n", "\n", "# Run the simplified market clearing for Simulation 2\n", "model_sim2, results_sim2 = simplified_market_clearing_opt(\n", - " orders_mapped, market_products, nodes_sim1, incidence_matrix_sim2\n", + " orders=orders_mapped,\n", + " incidence_matrix=incidence_matrix,\n", + " lines=lines_sim2,\n", ")" ] }, { "cell_type": "markdown", - "id": "8b6ab5ae", - "metadata": { - "id": "8b6ab5ae" - }, + "id": "5c721991", + "metadata": {}, "source": [ "#### Simulation 3: High Transmission Capacity Between Zones" ] @@ -1701,9 +1708,8 @@ { "cell_type": "code", "execution_count": 15, - "id": "951c9a1b", + "id": "a1c7f344", "metadata": { - "id": "951c9a1b", "lines_to_end_of_cell_marker": 0, "lines_to_next_cell": 1 }, @@ -1713,7 +1719,7 @@ "output_type": "stream", "text": [ "### Simulation 3: High Transmission Capacity Between Zones\n", - "Incidence Matrix for Simulation 3 (High Transmission Capacity):\n" + "Transmission Lines for Simulation 3:\n" ] }, { @@ -1737,29 +1743,56 @@ " \n", " \n", " \n", - " DE_1\n", - " DE_2\n", + " bus0\n", + " bus1\n", + " s_nom\n", + " x\n", + " r\n", + " \n", + " \n", + " name\n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " DE_2\n", - " 10000.0\n", - " NaN\n", + " Line_N1_S\n", + " north_1\n", + " south\n", + " 5000.0\n", + " 0.01\n", + " 0.001\n", " \n", " \n", - " DE_1\n", - " NaN\n", - " 10000.0\n", + " Line_N2_S\n", + " north_2\n", + " south\n", + " 5000.0\n", + " 0.01\n", + " 0.001\n", + " \n", + " \n", + " Line_N1_N2\n", + " north_1\n", + " north_2\n", + " 5000.0\n", + " 0.01\n", + " 0.001\n", " \n", " \n", "\n", "" ], "text/plain": [ - " DE_1 DE_2\n", - "DE_2 10000.0 NaN\n", - "DE_1 NaN 10000.0" + " bus0 bus1 s_nom x r\n", + "name \n", + "Line_N1_S north_1 south 5000.0 0.01 0.001\n", + "Line_N2_S north_2 south 5000.0 0.01 0.001\n", + "Line_N1_N2 north_1 north_2 5000.0 0.01 0.001" ] }, "metadata": {}, @@ -1769,28 +1802,26 @@ "source": [ "print(\"### Simulation 3: High Transmission Capacity Between Zones\")\n", "\n", - "# Define the incidence matrix as a dictionary with high transmission capacity\n", - "incidence_matrix_sim3 = {\n", - " \"DE_1\": {\"DE_2\": 10000.0}, # High transmission capacity from DE_1 to DE_2\n", - " \"DE_2\": {\"DE_1\": 10000.0}, # High transmission capacity from DE_2 to DE_1\n", - "}\n", + "# Define the lines for Simulation 3 with high transmission capacity\n", + "lines_sim3 = lines.copy()\n", + "lines_sim3[\"s_nom\"] = 5000.0 # Set transmission capacity to 5000 MW for all lines\n", "\n", - "# Display the incidence matrix for Simulation 3\n", - "print(\"Incidence Matrix for Simulation 3 (High Transmission Capacity):\")\n", - "display(pd.DataFrame(incidence_matrix_sim3))\n", + "# Display the line capacities for Simulation 3\n", + "print(\"Transmission Lines for Simulation 3:\")\n", + "display(lines_sim3)\n", "\n", "# Run the simplified market clearing for Simulation 3\n", "model_sim3, results_sim3 = simplified_market_clearing_opt(\n", - " orders_mapped, market_products, nodes_sim1, incidence_matrix_sim3\n", + " orders=orders_mapped,\n", + " incidence_matrix=incidence_matrix,\n", + " lines=lines_sim3,\n", ")" ] }, { "cell_type": "markdown", - "id": "2874cc5b", - "metadata": { - "id": "2874cc5b" - }, + "id": "661e6c30", + "metadata": {}, "source": [ "### 5.4. Extracting and Interpreting the Results\n", "\n", @@ -1812,61 +1843,38 @@ { "cell_type": "code", "execution_count": 16, - "id": "508d8c51", - "metadata": { - "id": "508d8c51" - }, + "id": "bdcc49e7", + "metadata": {}, "outputs": [], "source": [ - "# Function to extract accepted bids and calculate clearing prices\n", - "# Function to extract accepted bids, power flows, and market clearing prices using dual variables\n", - "def extract_results(model, orders, nodes):\n", - " # Extract accepted bid ratios\n", - " accepted_bids = {}\n", - " for o in model.x:\n", - " acceptance_ratio = pyo.value(model.x[o])\n", - " if acceptance_ratio > 0:\n", - " accepted_bids[o] = acceptance_ratio\n", - "\n", - " # Extract power flows between zones for each time period\n", - " power_flows = []\n", - " for t in model.T:\n", - " for node1 in nodes:\n", - " for node2 in nodes:\n", - " if node1 != node2:\n", - " flow = pyo.value(model.flows[t, node1, node2])\n", - " if flow != 0:\n", - " power_flows.append(\n", - " {\n", - " \"time\": t,\n", - " \"from_zone\": node1,\n", - " \"to_zone\": node2,\n", - " \"flow_MW\": flow,\n", - " }\n", - " )\n", - "\n", - " # Convert to DataFrame\n", - " power_flows_df = pd.DataFrame(power_flows)\n", + "def extract_results(model, incidence_matrix):\n", + " nodes = list(incidence_matrix.index)\n", + " lines = list(incidence_matrix.columns)\n", "\n", - " # Extract market clearing prices from dual variables of energy balance constraints\n", - " market_clearing_prices = {}\n", - " for node in nodes:\n", - " market_clearing_prices[node] = {\n", - " t: pyo.value(model.dual[model.energy_balance[node, t]]) for t in model.T\n", - " }\n", + " # Extract accepted bid ratios using a dictionary comprehension\n", + " accepted_bids = {\n", + " o: pyo.value(model.x[o]) for o in model.x if pyo.value(model.x[o]) > 0\n", + " }\n", "\n", - " # Convert clearing prices to DataFrame\n", - " clearing_prices = []\n", - " for node in market_clearing_prices:\n", - " for t in market_clearing_prices[node]:\n", - " clearing_prices.append(\n", - " {\n", - " \"zone\": node,\n", - " \"time\": t,\n", - " \"clearing_price\": market_clearing_prices[node][t],\n", - " }\n", - " )\n", + " # Extract power flows on each line for each time period\n", + " power_flows = [\n", + " {\"time\": t, \"line\": line, \"flow_MW\": pyo.value(model.flows[t, line])}\n", + " for t in model.T\n", + " for line in lines\n", + " if pyo.value(model.flows[t, line]) != 0\n", + " ]\n", + " power_flows_df = pd.DataFrame(power_flows)\n", "\n", + " # Extract market clearing prices from dual variables\n", + " clearing_prices = [\n", + " {\n", + " \"zone\": node,\n", + " \"time\": t,\n", + " \"clearing_price\": pyo.value(model.dual[model.energy_balance[node, t]]),\n", + " }\n", + " for node in nodes\n", + " for t in model.T\n", + " ]\n", " clearing_prices_df = pd.DataFrame(clearing_prices)\n", "\n", " return accepted_bids, power_flows_df, clearing_prices_df" @@ -1875,25 +1883,21 @@ { "cell_type": "code", "execution_count": 17, - "id": "ced11135", - "metadata": { - "id": "ced11135" - }, + "id": "512ed95f", + "metadata": {}, "outputs": [], "source": [ "# Extract results for Simulation 1\n", "accepted_bids_sim1, power_flows_df_sim1, clearing_prices_df_sim1 = extract_results(\n", - " model_sim1, orders, nodes_sim1\n", + " model_sim1, incidence_matrix\n", ")" ] }, { "cell_type": "code", "execution_count": 18, - "id": "51373042", - "metadata": { - "id": "51373042" - }, + "id": "7b32b7c3", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -1948,10 +1952,8 @@ { "cell_type": "code", "execution_count": 19, - "id": "2bc8fe28", - "metadata": { - "id": "2bc8fe28" - }, + "id": "2d386677", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -2116,25 +2118,21 @@ { "cell_type": "code", "execution_count": 20, - "id": "d7bddc51", - "metadata": { - "id": "d7bddc51" - }, + "id": "d8327407", + "metadata": {}, "outputs": [], "source": [ "# Extract results for Simulation 2\n", "accepted_bids_sim2, power_flows_df_sim2, clearing_prices_df_sim2 = extract_results(\n", - " model_sim2, orders, nodes_sim1\n", + " model_sim2, incidence_matrix\n", ")" ] }, { "cell_type": "code", "execution_count": 21, - "id": "a8b84057", - "metadata": { - "id": "a8b84057" - }, + "id": "9b5fc1de", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -2165,8 +2163,7 @@ " \n", " \n", " time\n", - " from_zone\n", - " to_zone\n", + " line\n", " flow_MW\n", " \n", " \n", @@ -2174,49 +2171,44 @@ " \n", " 0\n", " 2019-01-01 00:00:00\n", - " DE_1\n", - " DE_2\n", - " 3000.0\n", + " Line_N1_S\n", + " -3000.0\n", " \n", " \n", " 1\n", " 2019-01-01 00:00:00\n", - " DE_2\n", - " DE_1\n", + " Line_N2_S\n", " -3000.0\n", " \n", " \n", " 2\n", - " 2019-01-01 01:00:00\n", - " DE_1\n", - " DE_2\n", - " 3000.0\n", + " 2019-01-01 00:00:00\n", + " Line_N1_N2\n", + " -3000.0\n", " \n", " \n", " 3\n", " 2019-01-01 01:00:00\n", - " DE_2\n", - " DE_1\n", + " Line_N1_S\n", " -3000.0\n", " \n", " \n", " 4\n", - " 2019-01-01 02:00:00\n", - " DE_1\n", - " DE_2\n", - " 3000.0\n", + " 2019-01-01 01:00:00\n", + " Line_N2_S\n", + " -3000.0\n", " \n", " \n", "\n", "" ], "text/plain": [ - " time from_zone to_zone flow_MW\n", - "0 2019-01-01 00:00:00 DE_1 DE_2 3000.0\n", - "1 2019-01-01 00:00:00 DE_2 DE_1 -3000.0\n", - "2 2019-01-01 01:00:00 DE_1 DE_2 3000.0\n", - "3 2019-01-01 01:00:00 DE_2 DE_1 -3000.0\n", - "4 2019-01-01 02:00:00 DE_1 DE_2 3000.0" + " time line flow_MW\n", + "0 2019-01-01 00:00:00 Line_N1_S -3000.0\n", + "1 2019-01-01 00:00:00 Line_N2_S -3000.0\n", + "2 2019-01-01 00:00:00 Line_N1_N2 -3000.0\n", + "3 2019-01-01 01:00:00 Line_N1_S -3000.0\n", + "4 2019-01-01 01:00:00 Line_N2_S -3000.0" ] }, "metadata": {}, @@ -2231,10 +2223,8 @@ { "cell_type": "code", "execution_count": 22, - "id": "b9abaaf1", - "metadata": { - "id": "b9abaaf1" - }, + "id": "b7c5d148", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -2399,25 +2389,21 @@ { "cell_type": "code", "execution_count": 23, - "id": "c62148ed", - "metadata": { - "id": "c62148ed" - }, + "id": "7f850cf5", + "metadata": {}, "outputs": [], "source": [ "# Extract results for Simulation 3\n", "accepted_bids_sim3, power_flows_df_sim3, clearing_prices_df_sim3 = extract_results(\n", - " model_sim3, orders, nodes_sim1\n", + " model_sim3, incidence_matrix\n", ")" ] }, { "cell_type": "code", "execution_count": 24, - "id": "f94d50ce", - "metadata": { - "id": "f94d50ce" - }, + "id": "3b2528a2", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -2448,8 +2434,7 @@ " \n", " \n", " time\n", - " from_zone\n", - " to_zone\n", + " line\n", " flow_MW\n", " \n", " \n", @@ -2457,49 +2442,44 @@ " \n", " 0\n", " 2019-01-01 00:00:00\n", - " DE_1\n", - " DE_2\n", - " 5100.0\n", + " Line_N1_S\n", + " -5000.0\n", " \n", " \n", " 1\n", " 2019-01-01 00:00:00\n", - " DE_2\n", - " DE_1\n", - " -5100.0\n", + " Line_N2_S\n", + " -5000.0\n", " \n", " \n", " 2\n", - " 2019-01-01 01:00:00\n", - " DE_1\n", - " DE_2\n", - " 4700.0\n", + " 2019-01-01 00:00:00\n", + " Line_N1_N2\n", + " -5000.0\n", " \n", " \n", " 3\n", " 2019-01-01 01:00:00\n", - " DE_2\n", - " DE_1\n", - " -4700.0\n", + " Line_N1_S\n", + " -4400.0\n", " \n", " \n", " 4\n", - " 2019-01-01 02:00:00\n", - " DE_1\n", - " DE_2\n", - " 4300.0\n", + " 2019-01-01 01:00:00\n", + " Line_N2_S\n", + " -5000.0\n", " \n", " \n", "\n", "" ], "text/plain": [ - " time from_zone to_zone flow_MW\n", - "0 2019-01-01 00:00:00 DE_1 DE_2 5100.0\n", - "1 2019-01-01 00:00:00 DE_2 DE_1 -5100.0\n", - "2 2019-01-01 01:00:00 DE_1 DE_2 4700.0\n", - "3 2019-01-01 01:00:00 DE_2 DE_1 -4700.0\n", - "4 2019-01-01 02:00:00 DE_1 DE_2 4300.0" + " time line flow_MW\n", + "0 2019-01-01 00:00:00 Line_N1_S -5000.0\n", + "1 2019-01-01 00:00:00 Line_N2_S -5000.0\n", + "2 2019-01-01 00:00:00 Line_N1_N2 -5000.0\n", + "3 2019-01-01 01:00:00 Line_N1_S -4400.0\n", + "4 2019-01-01 01:00:00 Line_N2_S -5000.0" ] }, "metadata": {}, @@ -2514,10 +2494,8 @@ { "cell_type": "code", "execution_count": 25, - "id": "3f3881f6", - "metadata": { - "id": "3f3881f6" - }, + "id": "05961462", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -2557,7 +2535,7 @@ " 0\n", " DE_1\n", " 2019-01-01 00:00:00\n", - " 27.0\n", + " 19.0\n", " \n", " \n", " 1\n", @@ -2581,7 +2559,7 @@ " 4\n", " DE_1\n", " 2019-01-01 04:00:00\n", - " 28.0\n", + " 27.0\n", " \n", " \n", "\n", @@ -2589,11 +2567,11 @@ ], "text/plain": [ " zone time clearing_price\n", - "0 DE_1 2019-01-01 00:00:00 27.0\n", + "0 DE_1 2019-01-01 00:00:00 19.0\n", "1 DE_1 2019-01-01 01:00:00 27.0\n", "2 DE_1 2019-01-01 02:00:00 27.0\n", "3 DE_1 2019-01-01 03:00:00 27.0\n", - "4 DE_1 2019-01-01 04:00:00 28.0" + "4 DE_1 2019-01-01 04:00:00 27.0" ] }, "metadata": {}, @@ -2654,7 +2632,7 @@ " 28\n", " DE_2\n", " 2019-01-01 04:00:00\n", - " 28.0\n", + " 27.0\n", " \n", " \n", "\n", @@ -2666,7 +2644,7 @@ "25 DE_2 2019-01-01 01:00:00 27.0\n", "26 DE_2 2019-01-01 02:00:00 27.0\n", "27 DE_2 2019-01-01 03:00:00 27.0\n", - "28 DE_2 2019-01-01 04:00:00 28.0" + "28 DE_2 2019-01-01 04:00:00 27.0" ] }, "metadata": {}, @@ -2681,20 +2659,8 @@ }, { "cell_type": "markdown", - "id": "461c85b5", - "metadata": { - "id": "461c85b5" - }, - "source": [ - "-" - ] - }, - { - "cell_type": "markdown", - "id": "b397c6e9", - "metadata": { - "id": "b397c6e9" - }, + "id": "fb62e2fd", + "metadata": {}, "source": [ "**Explanation:**\n", "\n", @@ -2705,10 +2671,8 @@ }, { "cell_type": "markdown", - "id": "83b13999", - "metadata": { - "id": "83b13999" - }, + "id": "3dbd64e0", + "metadata": {}, "source": [ "### 5.5. Comparing Simulations\n", "\n", @@ -2718,11 +2682,8 @@ { "cell_type": "code", "execution_count": 26, - "id": "69e86f18", - "metadata": { - "cellView": "form", - "id": "69e86f18" - }, + "id": "0ffe7033", + "metadata": {}, "outputs": [ { "data": { @@ -2839,7 +2800,7 @@ 29, 29, 29, - 30, + 29, 30, 30, 30, @@ -2885,6 +2846,7 @@ "2019-01-01T23:00:00" ], "y": [ + 19, 27, 27, 27, @@ -2893,13 +2855,12 @@ 28, 28, 28, - 28, 29, 29, 29, 29, 29, - 30, + 29, 30, 30, 30, @@ -3019,7 +2980,7 @@ 29, 29, 29, - 30, + 29, 30, 30, 30, @@ -3069,7 +3030,7 @@ 27, 27, 27, - 28, + 27, 28, 28, 28, @@ -3079,7 +3040,7 @@ 29, 29, 29, - 30, + 29, 30, 30, 30, @@ -3945,7 +3906,7 @@ "fig = go.Figure()\n", "\n", "# Iterate over each zone to plot clearing prices for all three simulations\n", - "for zone in nodes_sim1:\n", + "for zone in incidence_matrix.index:\n", " # Filter data for the current zone and Simulation 1\n", " zone_prices_sim1 = clearing_prices_df_sim1[clearing_prices_df_sim1[\"zone\"] == zone]\n", " # Filter data for the current zone and Simulation 2\n", @@ -4008,10 +3969,8 @@ }, { "cell_type": "markdown", - "id": "a7024e65", - "metadata": { - "id": "a7024e65" - }, + "id": "7ee17c77", + "metadata": {}, "source": [ "**Explanation:**\n", "\n", @@ -4020,10 +3979,8 @@ }, { "cell_type": "markdown", - "id": "73397059", - "metadata": { - "id": "73397059" - }, + "id": "fb8f157c", + "metadata": {}, "source": [ "## 6. Integrating with ASSUME\n", "\n", @@ -4040,16 +3997,16 @@ "\n", "Additionally, we'll create a new file `fuel_prices.csv`.\n", "\n", + "**Note:** The demand timeseries has been extended to cover 48 hours as ASSUME always requires an additional day of data for the market simulation.\n", + "\n", "#### Create the Inputs Directory and Save CSV Files" ] }, { "cell_type": "code", "execution_count": 27, - "id": "eb54851c", - "metadata": { - "id": "eb54851c" - }, + "id": "531a7a24", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -4073,8 +4030,8 @@ "demand_df.index = pd.date_range(start=\"2019-01-01\", periods=48, freq=\"h\")\n", "\n", "# Save the DataFrames to CSV files\n", - "buses.to_csv(os.path.join(input_dir, \"buses.csv\"), index=False)\n", - "lines.to_csv(os.path.join(input_dir, \"lines.csv\"), index=False)\n", + "buses.to_csv(os.path.join(input_dir, \"buses.csv\"), index=True)\n", + "lines.to_csv(os.path.join(input_dir, \"lines.csv\"), index=True)\n", "powerplant_units.to_csv(os.path.join(input_dir, \"powerplant_units.csv\"), index=False)\n", "demand_units.to_csv(os.path.join(input_dir, \"demand_units.csv\"), index=False)\n", "demand_df.to_csv(os.path.join(input_dir, \"demand_df.csv\"))\n", @@ -4084,10 +4041,8 @@ }, { "cell_type": "markdown", - "id": "bc37c1e1", - "metadata": { - "id": "bc37c1e1" - }, + "id": "f788c99a", + "metadata": {}, "source": [ "#### Create `fuel_prices.csv`" ] @@ -4095,10 +4050,8 @@ { "cell_type": "code", "execution_count": 28, - "id": "3e74a43e", - "metadata": { - "id": "3e74a43e" - }, + "id": "2d61a40b", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -4109,7 +4062,7 @@ } ], "source": [ - "# Define fuel prices\n", + "# @title Create fuel prices\n", "fuel_prices = {\n", " \"fuel\": [\"uranium\", \"co2\"],\n", " \"price\": [5, 25],\n", @@ -4126,10 +4079,8 @@ }, { "cell_type": "markdown", - "id": "f223540f", - "metadata": { - "id": "f223540f" - }, + "id": "e0e47625", + "metadata": {}, "source": [ "### Step 2: Creating the Configuration YAML File\n", "\n", @@ -4138,10 +4089,8 @@ }, { "cell_type": "markdown", - "id": "0711551b", - "metadata": { - "id": "0711551b" - }, + "id": "44e22a14", + "metadata": {}, "source": [ "#### Create `config.yaml`" ] @@ -4149,10 +4098,8 @@ { "cell_type": "code", "execution_count": 29, - "id": "a1a7164b", - "metadata": { - "id": "a1a7164b" - }, + "id": "821a4002", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -4201,10 +4148,8 @@ }, { "cell_type": "markdown", - "id": "129df923", - "metadata": { - "id": "129df923" - }, + "id": "e2e9403a", + "metadata": {}, "source": [ "### Detailed Configuration Explanation\n", "\n", @@ -4244,10 +4189,8 @@ }, { "cell_type": "markdown", - "id": "97bf3b93", - "metadata": { - "id": "97bf3b93" - }, + "id": "6fd79730", + "metadata": {}, "source": [ "### Step 3: Running the Simulation\n", "\n", @@ -4256,10 +4199,8 @@ }, { "cell_type": "markdown", - "id": "3d9088f8", - "metadata": { - "id": "3d9088f8" - }, + "id": "33ff62b1", + "metadata": {}, "source": [ "#### Example Simulation Code" ] @@ -4267,10 +4208,8 @@ { "cell_type": "code", "execution_count": 30, - "id": "2fa30762", - "metadata": { - "id": "2fa30762" - }, + "id": "3a79848a", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -4311,7 +4250,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 23:00:00: : 82801it [00:02, 35130.70it/s] \n" + "tutorial_08_zonal_case 2019-01-01 23:00:00: : 82801it [00:02, 34482.20it/s] \n" ] } ], @@ -4356,10 +4295,8 @@ }, { "cell_type": "markdown", - "id": "2e281f8c", - "metadata": { - "id": "2e281f8c" - }, + "id": "be819122", + "metadata": {}, "source": [ "## 7. Analyzing the Results\n", "\n", @@ -4374,10 +4311,8 @@ }, { "cell_type": "markdown", - "id": "6472a8de", - "metadata": { - "id": "6472a8de" - }, + "id": "5ca43ca3", + "metadata": {}, "source": [ "### 7.1. Locating the Simulation Output Files\n", "\n", @@ -4386,10 +4321,8 @@ }, { "cell_type": "markdown", - "id": "4d2aca20", - "metadata": { - "id": "4d2aca20" - }, + "id": "78707ac9", + "metadata": {}, "source": [ "### 7.2. Loading and Inspecting the Output Data" ] @@ -4397,10 +4330,8 @@ { "cell_type": "code", "execution_count": 31, - "id": "80fdd812", - "metadata": { - "id": "80fdd812" - }, + "id": "6e71a328", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -4601,10 +4532,8 @@ }, { "cell_type": "markdown", - "id": "538d2a28", - "metadata": { - "id": "538d2a28" - }, + "id": "870b1c74", + "metadata": {}, "source": [ "**Explanation:**\n", "\n", @@ -4628,10 +4557,8 @@ }, { "cell_type": "markdown", - "id": "76b537d2", - "metadata": { - "id": "76b537d2" - }, + "id": "d0fd6e1b", + "metadata": {}, "source": [ "### 7.3. Plotting Clearing Prices\n", "\n", @@ -4640,10 +4567,8 @@ }, { "cell_type": "markdown", - "id": "46af3ed7", - "metadata": { - "id": "46af3ed7" - }, + "id": "934872ad", + "metadata": {}, "source": [ "#### Processing the Market Meta Data" ] @@ -4651,10 +4576,8 @@ { "cell_type": "code", "execution_count": 32, - "id": "f00529e4", - "metadata": { - "id": "f00529e4" - }, + "id": "fd2e3048", + "metadata": {}, "outputs": [ { "name": "stdout", @@ -4770,10 +4693,8 @@ }, { "cell_type": "markdown", - "id": "35d82a8f", - "metadata": { - "id": "35d82a8f" - }, + "id": "bc7fbb63", + "metadata": {}, "source": [ "#### Plotting the market clearing prices" ] @@ -4781,10 +4702,8 @@ { "cell_type": "code", "execution_count": 33, - "id": "a3d56ac7", - "metadata": { - "id": "a3d56ac7" - }, + "id": "87102b35", + "metadata": {}, "outputs": [ { "data": { @@ -5795,10 +5714,8 @@ }, { "cell_type": "markdown", - "id": "9ed0f0a4", - "metadata": { - "id": "9ed0f0a4" - }, + "id": "b34407b1", + "metadata": {}, "source": [ "**Explanation:**\n", "\n", @@ -5814,52 +5731,49 @@ }, { "cell_type": "markdown", - "id": "02eb3518", - "metadata": { - "id": "02eb3518" - }, + "id": "3f448fb4", + "metadata": {}, "source": [ - "## Conclusion\n", + "## **Conclusion**\n", "\n", - "In this tutorial, we successfully integrated our custom market zone coupling simulation with the ASSUME framework. By preparing the necessary input files and configuration, running the simulation, and analyzing the results, we demonstrated how transmission capacities influence market dynamics and clearing prices across different zones.\n", + "Congratulations! You've successfully navigated through the **Market Zone Coupling** process using the **ASSUME Framework**. Here's a quick recap of what you've accomplished:\n", "\n", - "**Key Takeaways:**\n", + "### **Key Achievements:**\n", "\n", - "- **Seamless Integration:** ASSUME allows for straightforward integration of custom market models through well-defined input and configuration files.\n", - "- **Accurate Simulation:** Properly setting up transmission constraints ensures realistic modeling of energy flows and price formations.\n", - "- **Effective Analysis:** Utilizing visualization tools like Plotly and Matplotlib facilitates comprehensive analysis of simulation outcomes.\n", + "1. **Market Setup:**\n", + " - **Defined Zones and Buses:** Established distinct market zones and configured their connections through transmission lines.\n", + " - **Configured Units:** Set up power plant and demand units within each zone, detailing their operational parameters.\n", "\n", - "This setup serves as a foundation for more complex and scalable market simulations, enabling deeper insights into the interplay between supply, demand, and transmission infrastructure in multi-zone electricity markets.\n", + "2. **Market Clearing Optimization:**\n", + " - **Implemented Optimization Model:** Utilized a simplified Pyomo-based model to perform market clearing, accounting for bid acceptances and power flows.\n", + " - **Simulated Transmission Scenarios:** Ran simulations with varying transmission capacities to observe their impact on energy distribution and pricing.\n", "\n", - "Thank you for following along with this tutorial!" + "3. **Result Analysis:**\n", + " - **Extracted Clearing Prices:** Retrieved and interpreted market prices from the optimization results.\n", + " - **Visualized Outcomes:** Created interactive plots to compare how different transmission capacities influence market dynamics across zones.\n", + "\n", + "### **Key Takeaways:**\n", + "\n", + "- **Impact of Transmission Capacity:** Transmission limits play a crucial role in determining energy flows and price convergence between market zones.\n", + "- **ASSUME Framework Efficiency:** ASSUME streamlines complex market simulations, making it easier to model and analyze multi-zone interactions.\n", + "\n", + "### **Next Steps:**\n", + "\n", + "- **Integrate Renewable Sources:** Expand the model to include renewable energy units and assess their impact on market dynamics.\n", + "- **Scale Up Simulations:** Apply the framework to larger, more complex market scenarios to further test its capabilities.\n", + "\n", + "Thank you for participating in this tutorial! With the foundational knowledge gained, you're now equipped to delve deeper into energy market simulations and leverage the ASSUME framework for more advanced analyses." ] } ], "metadata": { - "colab": { - "provenance": [] - }, "jupytext": { "cell_metadata_filter": "-all", "main_language": "python", "notebook_metadata_filter": "-all" }, - "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.7" + "name": "python" } }, "nbformat": 4, From 8999eb53e88f21eed2d730c29af1009722f51bc0 Mon Sep 17 00:00:00 2001 From: Nick Harder Date: Mon, 7 Oct 2024 17:26:53 +0200 Subject: [PATCH 18/27] -uncomment missing parts --- examples/notebooks/08_market_zone_coupling.ipynb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/examples/notebooks/08_market_zone_coupling.ipynb b/examples/notebooks/08_market_zone_coupling.ipynb index 22a5d43d..ab2ff279 100644 --- a/examples/notebooks/08_market_zone_coupling.ipynb +++ b/examples/notebooks/08_market_zone_coupling.ipynb @@ -67,20 +67,24 @@ "cell_type": "code", "execution_count": 1, "id": "0dd1c254", - "metadata": {}, + "metadata": { + "vscode": { + "languageId": "shellscript" + } + }, "outputs": [], "source": [ "# Install the ASSUME framework\n", - "# !pip install assume-framework\n", + "!pip install assume-framework\n", "\n", "# Install the Pyomo library and GLPK solver\n", "# this is need only in collab\n", "# when running locally, use pip install assume-framework[optimization]\n", - "# !pip install pyomo\n", - "# !apt-get install -y -qq glpk-utils\n", + "!pip install pyomo\n", + "!apt-get install -y -qq glpk-utils\n", "\n", "# Install Plotly if not already installed\n", - "# !pip install plotly" + "!pip install plotly" ] }, { From ab678e5d21ca4f915f41d6f17aa99e9f1b0aa968 Mon Sep 17 00:00:00 2001 From: Nick Harder Date: Mon, 7 Oct 2024 17:39:21 +0200 Subject: [PATCH 19/27] -hide cells -change naming -tested in collab --- .../notebooks/08_market_zone_coupling.ipynb | 14148 ++++++++++------ 1 file changed, 8520 insertions(+), 5628 deletions(-) diff --git a/examples/notebooks/08_market_zone_coupling.ipynb b/examples/notebooks/08_market_zone_coupling.ipynb index ab2ff279..acfeeb70 100644 --- a/examples/notebooks/08_market_zone_coupling.ipynb +++ b/examples/notebooks/08_market_zone_coupling.ipynb @@ -1,5785 +1,8677 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "ff81547a", - "metadata": {}, - "source": [ - "# Market Zone Coupling in the ASSUME Framework\n", - "\n", - "Welcome to the **Market Zone Coupling** tutorial for the ASSUME framework. In this workshop, we will guide you through understanding how market zone coupling is implemented within the ASSUME simulation environment. By the end of this tutorial, you will gain insights into the internal mechanisms of the framework, including how different market zones interact, how constraints are managed, how bids are assigned, and how market prices are extracted.\n", - "\n", - "**We will cover the following topics:**\n", - "\n", - "1. **Introduction to Market Zone Coupling**\n", - "2. **Setting Up the ASSUME Framework for Market Zone Coupling**\n", - "3. **Understanding the Market Clearing Optimization**\n", - "4. **Creating Exemplary Input Files for Market Zone Coupling**\n", - " - 4.1. Defining Buses and Zones\n", - " - 4.2. Configuring Transmission Lines\n", - " - 4.3. Setting Up Power Plant and Demand Units\n", - " - 4.4. Preparing Demand Data\n", - "5. **Understanding the Market Clearing with Zone Coupling**\n", - " - 5.1. Calculating the Incidence Matrix\n", - " - 5.2. Implementing the Simplified Market Clearing Function\n", - " - 5.3. Running the Market Clearing Simulation\n", - " - 5.4. Extracting and Interpreting the Results\n", - " - 5.5. Comparing Simulations\n", - "6. **Integrating with ASSUME**\n", - "7. **Analyzing the Results**\n", - "\n", - "Let's get started!" - ] - }, - { - "cell_type": "markdown", - "id": "76281e67", - "metadata": {}, - "source": [ - "## 1. Introduction to Market Zone Coupling\n", - "\n", - "**Market Zone Coupling** is a mechanism that enables different geographical zones within an electricity market to interact and trade energy seamlessly. In the ASSUME framework, implementing market zone coupling is straightforward: by properly defining the input data and configuration files, the framework automatically manages the interactions between zones, including transmission constraints and cross-zone trading.\n", - "\n", - "This tutorial aims to provide a deeper understanding of how market zone coupling operates within ASSUME. While the framework handles much of the complexity internally, we will explore the underlying processes, such as the calculation of transmission capacities and the market clearing optimization. This detailed walkthrough is designed to enhance your comprehension of the framework's capabilities and the dynamics of multi-zone electricity markets.\n", - "\n", - "Throughout this tutorial, you will:\n", - "\n", - "- **Define Multiple Market Zones:** Segment the market into distinct zones based on geographical or operational criteria.\n", - "- **Configure Transmission Lines:** Establish connections that allow energy flow between different market zones.\n", - "- **Understand the Market Clearing Process:** Examine how the market clearing algorithm accounts for interactions and constraints across zones.\n", - "\n", - "By the end of this workshop, you will not only know how to set up market zone coupling in ASSUME but also gain insights into the internal mechanisms that drive market interactions and price formations across different zones." - ] - }, - { - "cell_type": "markdown", - "id": "42ff364e", - "metadata": {}, - "source": [ - "## 2. Setting Up the ASSUME Framework for Market Zone Coupling\n", - "\n", - "Before diving into market zone coupling, ensure that you have the ASSUME framework installed and set up correctly. If you haven't done so already, follow the steps below to install the ASSUME core package and clone the repository containing predefined scenarios.\n", - "\n", - "**Note:** If you already have the ASSUME framework installed and the repository cloned, you can skip executing the following code cells." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "0dd1c254", - "metadata": { - "vscode": { - "languageId": "shellscript" - } - }, - "outputs": [], - "source": [ - "# Install the ASSUME framework\n", - "!pip install assume-framework\n", - "\n", - "# Install the Pyomo library and GLPK solver\n", - "# this is need only in collab\n", - "# when running locally, use pip install assume-framework[optimization]\n", - "!pip install pyomo\n", - "!apt-get install -y -qq glpk-utils\n", - "\n", - "# Install Plotly if not already installed\n", - "!pip install plotly" - ] - }, - { - "cell_type": "markdown", - "id": "4266c838", - "metadata": {}, - "source": [ - "Let's also import some basic libraries that we will use throughout the tutorial." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "a1543685", - "metadata": {}, - "outputs": [ + "cells": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/ck/0m6299c93kd95nnbzxsb67v00000gn/T/ipykernel_73523/2740924032.py:1: DeprecationWarning: \n", - "Pyarrow will become a required dependency of pandas in the next major release of pandas (pandas 3.0),\n", - "(to allow more performant data types, such as the Arrow string type, and better interoperability with other libraries)\n", - "but was not found to be installed on your system.\n", - "If this would cause problems for you,\n", - "please provide us feedback at https://github.com/pandas-dev/pandas/issues/54466\n", - " \n", - " import pandas as pd\n" - ] - } - ], - "source": [ - "import pandas as pd\n", - "\n", - "# import plotly for visualization\n", - "import plotly.graph_objects as go\n", - "\n", - "# import yaml for reading and writing YAML files\n", - "import yaml\n", - "\n", - "# Function to display DataFrame in Jupyter\n", - "from IPython.display import display" - ] - }, - { - "cell_type": "markdown", - "id": "902fc3a9", - "metadata": {}, - "source": [ - "## 3. Understanding the Market Clearing Optimization\n", - "\n", - "Market clearing is a crucial component of electricity market simulations. It involves determining the optimal dispatch of supply and demand bids to maximize social welfare while respecting network constraints.\n", - "\n", - "In the context of market zone coupling, the market clearing process must account for:\n", - "\n", - "- **Connection Between Zones:** Transmission lines that allow energy flow between different market zones.\n", - "- **Constraints:** Limits on transmission capacities and ensuring energy balance within and across zones.\n", - "- **Bid Assignment:** Properly assigning bids to their respective zones and considering cross-zone trading.\n", - "- **Price Extraction:** Determining market prices for each zone based on the cleared bids and network constraints.\n", - "\n", - "The ASSUME framework uses Pyomo to formulate and solve the market clearing optimization problem. Below is a simplified version of the market clearing function, highlighting key components related to zone coupling." - ] - }, - { - "cell_type": "markdown", - "id": "4f874cfd", - "metadata": {}, - "source": [ - "### Simplified Market Clearing Optimization Problem\n", - "\n", - "We consider a simplified market clearing optimization model focusing on zone coupling, aiming to minimize the total cost.\n", - "\n", - "#### Sets and Variables:\n", - "- $T$: Set of time periods.\n", - "- $N$: Set of nodes (zones).\n", - "- $L$: Set of lines.\n", - "- $x_o \\in [0, 1]$: Bid acceptance ratio for order $o$.\n", - "- $f_{t, l} \\in \\mathbb{R}$: Power flow on line $l$ at time $t$.\n", - "\n", - "#### Constants:\n", - "- $P_o$: Price of order $o$.\n", - "- $V_o$: Volume of order $o$.\n", - "- $S_l$: Nominal capacity of line $l$.\n", - "\n", - "#### Objective Function:\n", - "Minimize the total cost of accepted orders:\n", - "\n", - "$$\n", - "\\min \\sum_{o \\in O} P_o V_o x_o\n", - "$$\n", - "\n", - "#### Constraints:\n", - "\n", - "1. **Energy Balance for Each Node and Time Period**:\n", - "\n", - "$$\n", - "\\sum_{\\substack{o \\in O \\\\ \\text{node}(o) = n \\\\ \\text{time}(o) = t}} V_o x_o + \\sum_{l \\in L} I_{n, l} f_{t, l} = 0 \\quad \\forall n \\in N, \\, t \\in T\n", - "$$\n", - "\n", - "Where:\n", - "- $I_{n, l}$ is the incidence value for node $n$ and line $l$ (from the incidence matrix).\n", - "\n", - "2. **Transmission Capacity Constraints for Each Line and Time Period**:\n", - "\n", - "$$\n", - "-S_l \\leq f_{t, l} \\leq S_l \\quad \\forall l \\in L, \\, t \\in T\n", - "$$\n", - "\n", - "#### Summary:\n", - "The goal is to minimize the total cost while ensuring energy balance at each node and respecting transmission line capacity limits for each time period.\n", - "\n", - "In actual ASSUME Framework, the optimization problem is more complex and includes additional constraints and variables, and supports also additional bid types such as block and linked orders. However, the simplified model above captures the essence of market clearing with zone coupling.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "e2be3fe2", - "metadata": {}, - "outputs": [], - "source": [ - "import pyomo.environ as pyo\n", - "from pyomo.opt import SolverFactory, TerminationCondition\n", - "\n", - "\n", - "def simplified_market_clearing_opt(orders, incidence_matrix, lines):\n", - " \"\"\"\n", - " Simplified market clearing optimization focusing on zone coupling.\n", - "\n", - " Args:\n", - " orders (dict): Dictionary of orders with bid_id as keys.\n", - " lines (DataFrame): DataFrame containing information about the transmission lines.\n", - " incidence_matrix (DataFrame): Incidence matrix describing the network structure.\n", - "\n", - " Returns:\n", - " model (ConcreteModel): The solved Pyomo model.\n", - " results (SolverResults): The solver results.\n", - " \"\"\"\n", - " nodes = list(incidence_matrix.index)\n", - " line_ids = list(incidence_matrix.columns)\n", - "\n", - " model = pyo.ConcreteModel()\n", - " # Define dual suffix\n", - " model.dual = pyo.Suffix(direction=pyo.Suffix.IMPORT)\n", - "\n", - " # Define the set of time periods\n", - " model.T = pyo.Set(\n", - " initialize=sorted(set(order[\"time\"] for order in orders.values())),\n", - " doc=\"timesteps\",\n", - " )\n", - " # Define the set of nodes (zones)\n", - " model.nodes = pyo.Set(initialize=nodes, doc=\"nodes\")\n", - " # Define the set of lines\n", - " model.lines = pyo.Set(initialize=line_ids, doc=\"lines\")\n", - "\n", - " # Decision variables for bid acceptance ratios (0 to 1)\n", - " model.x = pyo.Var(\n", - " orders.keys(),\n", - " domain=pyo.NonNegativeReals,\n", - " bounds=(0, 1),\n", - " doc=\"bid_acceptance_ratio\",\n", - " )\n", - "\n", - " # Decision variables for power flows on each line at each time period\n", - " model.flows = pyo.Var(model.T, model.lines, domain=pyo.Reals, doc=\"power_flows\")\n", - "\n", - " # Energy balance constraint for each node and time period\n", - " def energy_balance_rule(model, node, t):\n", - " balance_expr = 0.0\n", - " # Add contributions from orders\n", - " for order_key, order in orders.items():\n", - " if order[\"node\"] == node and order[\"time\"] == t:\n", - " balance_expr += order[\"volume\"] * model.x[order_key]\n", - "\n", - " # Add contributions from line flows based on the incidence matrix\n", - " if incidence_matrix is not None:\n", - " for line in model.lines:\n", - " incidence_value = incidence_matrix.loc[node, line]\n", - " if incidence_value != 0:\n", - " balance_expr += incidence_value * model.flows[t, line]\n", - "\n", - " return balance_expr == 0\n", - "\n", - " model.energy_balance = pyo.Constraint(\n", - " model.nodes, model.T, rule=energy_balance_rule\n", - " )\n", - "\n", - " # Transmission capacity constraints for each line and time period\n", - " def transmission_capacity_rule(model, t, line):\n", - " \"\"\"\n", - " Limits the power flow on each line based on its capacity.\n", - " \"\"\"\n", - " capacity = lines.at[line, \"s_nom\"]\n", - " return (-capacity, model.flows[t, line], capacity)\n", - "\n", - " # Apply transmission capacity constraints to all lines and time periods\n", - " model.transmission_constraints = pyo.Constraint(\n", - " model.T, model.lines, rule=transmission_capacity_rule\n", - " )\n", - "\n", - " # Objective: Minimize total cost (sum of bid prices multiplied by accepted volumes)\n", - " model.objective = pyo.Objective(\n", - " expr=sum(orders[o][\"price\"] * orders[o][\"volume\"] * model.x[o] for o in orders),\n", - " sense=pyo.minimize,\n", - " doc=\"Total Cost Minimization\",\n", - " )\n", - "\n", - " # Choose the solver (GLPK is used here for simplicity)\n", - " solver = SolverFactory(\"glpk\")\n", - " results = solver.solve(model)\n", - "\n", - " # Check if the solver found an optimal solution\n", - " if results.solver.termination_condition != TerminationCondition.optimal:\n", - " raise Exception(\"Solver did not find an optimal solution.\")\n", - "\n", - " return model, results" - ] - }, - { - "cell_type": "markdown", - "id": "8d42c532", - "metadata": {}, - "source": [ - "The above function is a simplified representation focusing on the essential aspects of market zone coupling. In the following sections, we will delve deeper into creating input files and mimicking the market clearing process using this function to understand the inner workings of the ASSUME framework." - ] - }, - { - "cell_type": "markdown", - "id": "11addaf0", - "metadata": {}, - "source": [ - "## 4. Creating Exemplary Input Files for Market Zone Coupling\n", - "\n", - "To implement market zone coupling, users need to prepare specific input files that define the network's structure, units, and demand profiles. Below, we will guide you through creating the necessary DataFrames for buses, transmission lines, power plant units, demand units, and demand profiles." - ] - }, - { - "cell_type": "markdown", - "id": "2a095ffb", - "metadata": {}, - "source": [ - "### 4.1. Defining Buses and Zones\n", - "\n", - "**Buses** represent nodes in the network where energy can be injected or withdrawn. Each bus is assigned to a **zone**, which groups buses into market areas. This zoning facilitates market coupling by managing interactions between different market regions." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "c1731cdc", - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "id": "ff81547a", + "metadata": { + "id": "ff81547a" + }, + "source": [ + "# Market Zone Coupling in the ASSUME Framework\n", + "\n", + "Welcome to the **Market Zone Coupling** tutorial for the ASSUME framework. In this workshop, we will guide you through understanding how market zone coupling is implemented within the ASSUME simulation environment. By the end of this tutorial, you will gain insights into the internal mechanisms of the framework, including how different market zones interact, how constraints are managed, how bids are assigned, and how market prices are extracted.\n", + "\n", + "**We will cover the following topics:**\n", + "\n", + "1. **Introduction to Market Zone Coupling**\n", + "2. **Setting Up the ASSUME Framework for Market Zone Coupling**\n", + "3. **Understanding the Market Clearing Optimization**\n", + "4. **Creating Exemplary Input Files for Market Zone Coupling**\n", + " - 4.1. Defining Buses and Zones\n", + " - 4.2. Configuring Transmission Lines\n", + " - 4.3. Setting Up Power Plant and Demand Units\n", + " - 4.4. Preparing Demand Data\n", + "5. **Understanding the Market Clearing with Zone Coupling**\n", + " - 5.1. Calculating the Incidence Matrix\n", + " - 5.2. Implementing the Simplified Market Clearing Function\n", + " - 5.3. Running the Market Clearing Simulation\n", + " - 5.4. Extracting and Interpreting the Results\n", + " - 5.5. Comparing Simulations\n", + "6. **Execution with ASSUME**\n", + "7. **Analyzing the Results**\n", + "\n", + "Let's get started!" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Buses DataFrame:\n" - ] + "cell_type": "markdown", + "id": "76281e67", + "metadata": { + "id": "76281e67" + }, + "source": [ + "## 1. Introduction to Market Zone Coupling\n", + "\n", + "**Market Zone Coupling** is a mechanism that enables different geographical zones within an electricity market to interact and trade energy seamlessly. In the ASSUME framework, implementing market zone coupling is straightforward: by properly defining the input data and configuration files, the framework automatically manages the interactions between zones, including transmission constraints and cross-zone trading.\n", + "\n", + "This tutorial aims to provide a deeper understanding of how market zone coupling operates within ASSUME. While the framework handles much of the complexity internally, we will explore the underlying processes, such as the calculation of transmission capacities and the market clearing optimization. This detailed walkthrough is designed to enhance your comprehension of the framework's capabilities and the dynamics of multi-zone electricity markets.\n", + "\n", + "Throughout this tutorial, you will:\n", + "\n", + "- **Define Multiple Market Zones:** Segment the market into distinct zones based on geographical or operational criteria.\n", + "- **Configure Transmission Lines:** Establish connections that allow energy flow between different market zones.\n", + "- **Understand the Market Clearing Process:** Examine how the market clearing algorithm accounts for interactions and constraints across zones.\n", + "\n", + "By the end of this workshop, you will not only know how to set up market zone coupling in ASSUME but also gain insights into the internal mechanisms that drive market interactions and price formations across different zones." + ] }, { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
v_nomzone_idxy
name
north_1380.0DE_110.054.0
north_2380.0DE_19.553.5
south380.0DE_211.648.1
\n", - "
" - ], - "text/plain": [ - " v_nom zone_id x y\n", - "name \n", - "north_1 380.0 DE_1 10.0 54.0\n", - "north_2 380.0 DE_1 9.5 53.5\n", - "south 380.0 DE_2 11.6 48.1" + "cell_type": "markdown", + "id": "42ff364e", + "metadata": { + "id": "42ff364e" + }, + "source": [ + "## 2. Setting Up the ASSUME Framework for Market Zone Coupling\n", + "\n", + "Before diving into market zone coupling, ensure that you have the ASSUME framework installed and set up correctly. If you haven't done so already, follow the steps below to install the ASSUME core package and clone the repository containing predefined scenarios.\n", + "\n", + "**Note:** If you already have the ASSUME framework installed and the repository cloned, you can skip executing the following code cells." ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# @title Define the buses DataFrame with three nodes and two zones\n", - "buses = pd.DataFrame(\n", - " {\n", - " \"name\": [\"north_1\", \"north_2\", \"south\"],\n", - " \"v_nom\": [380.0, 380.0, 380.0],\n", - " \"zone_id\": [\"DE_1\", \"DE_1\", \"DE_2\"],\n", - " \"x\": [10.0, 9.5, 11.6],\n", - " \"y\": [54.0, 53.5, 48.1],\n", - " }\n", - ").set_index(\"name\")\n", - "\n", - "# Display the buses DataFrame\n", - "print(\"Buses DataFrame:\")\n", - "display(buses)" - ] - }, - { - "cell_type": "markdown", - "id": "50a27c51", - "metadata": {}, - "source": [ - "**Explanation:**\n", - "\n", - "- **name:** Identifier for each bus (`north_1`, `north_2`, and `south`).\n", - "- **v_nom:** Nominal voltage level (in kV) for all buses.\n", - "- **zone_id:** Identifier for the market zone to which the bus belongs (`DE_1` for north buses and `DE_2` for the south bus).\n", - "- **x, y:** Geographical coordinates (optional, can be used for mapping or spatial analyses)." - ] - }, - { - "cell_type": "markdown", - "id": "1545e3bf", - "metadata": {}, - "source": [ - "### 4.2. Configuring Transmission Lines\n", - "\n", - "**Transmission Lines** connect buses, allowing energy to flow between them. Each line has a specified capacity and electrical parameters." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "64769ec7", - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Transmission Lines DataFrame:\n" - ] + "cell_type": "code", + "execution_count": null, + "id": "0dd1c254", + "metadata": { + "id": "0dd1c254" + }, + "outputs": [], + "source": [ + "# Install the ASSUME framework\n", + "!pip install assume-framework\n", + "\n", + "# Install the Pyomo library and GLPK solver\n", + "# this is need only in collab\n", + "# when running locally, use pip install assume-framework[optimization]\n", + "!pip install pyomo\n", + "!apt-get install -y -qq glpk-utils\n", + "\n", + "# Install Plotly if not already installed\n", + "!pip install plotly" + ] }, { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
bus0bus1s_nomxr
name
Line_N1_Snorth_1south5000.00.010.001
Line_N2_Snorth_2south5000.00.010.001
Line_N1_N2north_1north_25000.00.010.001
\n", - "
" - ], - "text/plain": [ - " bus0 bus1 s_nom x r\n", - "name \n", - "Line_N1_S north_1 south 5000.0 0.01 0.001\n", - "Line_N2_S north_2 south 5000.0 0.01 0.001\n", - "Line_N1_N2 north_1 north_2 5000.0 0.01 0.001" + "cell_type": "markdown", + "id": "4266c838", + "metadata": { + "id": "4266c838" + }, + "source": [ + "Let's also import some basic libraries that we will use throughout the tutorial." ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# @title Define three transmission lines\n", - "lines = pd.DataFrame(\n", - " {\n", - " \"name\": [\"Line_N1_S\", \"Line_N2_S\", \"Line_N1_N2\"],\n", - " \"bus0\": [\"north_1\", \"north_2\", \"north_1\"],\n", - " \"bus1\": [\"south\", \"south\", \"north_2\"],\n", - " \"s_nom\": [5000.0, 5000.0, 5000.0],\n", - " \"x\": [0.01, 0.01, 0.01],\n", - " \"r\": [0.001, 0.001, 0.001],\n", - " }\n", - ").set_index(\"name\")\n", - "\n", - "print(\"Transmission Lines DataFrame:\")\n", - "display(lines)" - ] - }, - { - "cell_type": "markdown", - "id": "f2290793", - "metadata": {}, - "source": [ - "**Explanation:**\n", - "\n", - "- **name:** Identifier for each transmission line (`Line_N1_S`, `Line_N2_S`, and `Line_N1_N2`).\n", - "- **bus0, bus1:** The two buses that the line connects.\n", - "- **s_nom:** Nominal apparent power capacity of the line (in MVA).\n", - "- **x:** Reactance of the line (in per unit).\n", - "- **r:** Resistance of the line (in per unit)." - ] - }, - { - "cell_type": "markdown", - "id": "c931cf9f", - "metadata": {}, - "source": [ - "### 4.3. Setting Up Power Plant and Demand Units\n", - "\n", - "**Power Plant Units** represent energy generation sources, while **Demand Units** represent consumption. Each unit is associated with a specific bus (node) and has operational parameters that define its behavior in the market." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "8a1f9e35", - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Power Plant Units DataFrame:\n" - ] + "cell_type": "code", + "execution_count": 2, + "id": "a1543685", + "metadata": { + "id": "a1543685" + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "# import plotly for visualization\n", + "import plotly.graph_objects as go\n", + "\n", + "# import yaml for reading and writing YAML files\n", + "import yaml\n", + "\n", + "# Function to display DataFrame in Jupyter\n", + "from IPython.display import display" + ] }, { - "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", - " \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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
nametechnologybidding_zonalfuel_typeemission_factormax_powermin_powerefficiencyadditional_costnodeunit_operator
0Unit 1nuclearnaive_eomuranium0.01000.00.00.35north_1Operator North
1Unit 2nuclearnaive_eomuranium0.01000.00.00.36north_1Operator North
2Unit 3nuclearnaive_eomuranium0.01000.00.00.37north_1Operator North
3Unit 4nuclearnaive_eomuranium0.01000.00.00.38north_1Operator North
4Unit 5nuclearnaive_eomuranium0.01000.00.00.39north_1Operator North
\n", - "
" - ], - "text/plain": [ - " name technology bidding_zonal fuel_type emission_factor max_power \\\n", - "0 Unit 1 nuclear naive_eom uranium 0.0 1000.0 \n", - "1 Unit 2 nuclear naive_eom uranium 0.0 1000.0 \n", - "2 Unit 3 nuclear naive_eom uranium 0.0 1000.0 \n", - "3 Unit 4 nuclear naive_eom uranium 0.0 1000.0 \n", - "4 Unit 5 nuclear naive_eom uranium 0.0 1000.0 \n", - "\n", - " min_power efficiency additional_cost node unit_operator \n", - "0 0.0 0.3 5 north_1 Operator North \n", - "1 0.0 0.3 6 north_1 Operator North \n", - "2 0.0 0.3 7 north_1 Operator North \n", - "3 0.0 0.3 8 north_1 Operator North \n", - "4 0.0 0.3 9 north_1 Operator North " + "cell_type": "markdown", + "id": "902fc3a9", + "metadata": { + "id": "902fc3a9" + }, + "source": [ + "## 3. Understanding the Market Clearing Optimization\n", + "\n", + "Market clearing is a crucial component of electricity market simulations. It involves determining the optimal dispatch of supply and demand bids to maximize social welfare while respecting network constraints.\n", + "\n", + "In the context of market zone coupling, the market clearing process must account for:\n", + "\n", + "- **Connection Between Zones:** Transmission lines that allow energy flow between different market zones.\n", + "- **Constraints:** Limits on transmission capacities and ensuring energy balance within and across zones.\n", + "- **Bid Assignment:** Properly assigning bids to their respective zones and considering cross-zone trading.\n", + "- **Price Extraction:** Determining market prices for each zone based on the cleared bids and network constraints.\n", + "\n", + "The ASSUME framework uses Pyomo to formulate and solve the market clearing optimization problem. Below is a simplified version of the market clearing function, highlighting key components related to zone coupling." ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# @title Create the power plant units DataFrame\n", - "\n", - "# Define the total number of units\n", - "num_units = 30 # Reduced for simplicity\n", - "\n", - "# Generate the 'name' column: Unit 1 to Unit 30\n", - "names = [f\"Unit {i}\" for i in range(1, num_units + 1)]\n", - "\n", - "# All other columns with constant values\n", - "technology = [\"nuclear\"] * num_units\n", - "bidding_zonal = [\"naive_eom\"] * num_units\n", - "fuel_type = [\"uranium\"] * num_units\n", - "emission_factor = [0.0] * num_units\n", - "max_power = [1000.0] * num_units\n", - "min_power = [0.0] * num_units\n", - "efficiency = [0.3] * num_units\n", - "\n", - "# Generate 'additional_cost':\n", - "# - North units (1-15): 5 to 19\n", - "# - South units (16-30): 20 to 34\n", - "additional_cost = list(range(5, 5 + num_units))\n", - "\n", - "# Initialize 'node' and 'unit_operator' lists\n", - "node = []\n", - "unit_operator = []\n", - "\n", - "for i in range(1, num_units + 1):\n", - " if 1 <= i <= 8:\n", - " node.append(\"north_1\") # All north units connected to 'north_1'\n", - " unit_operator.append(\"Operator North\")\n", - " elif 9 <= i <= 15:\n", - " node.append(\"north_2\")\n", - " unit_operator.append(\"Operator North\")\n", - " else:\n", - " node.append(\"south\") # All south units connected to 'south'\n", - " unit_operator.append(\"Operator South\")\n", - "\n", - "# Create the DataFrame\n", - "powerplant_units = pd.DataFrame(\n", - " {\n", - " \"name\": names,\n", - " \"technology\": technology,\n", - " \"bidding_zonal\": bidding_zonal, # bidding strategy used to bid on the zonal market. Should be same name as in config file\n", - " \"fuel_type\": fuel_type,\n", - " \"emission_factor\": emission_factor,\n", - " \"max_power\": max_power,\n", - " \"min_power\": min_power,\n", - " \"efficiency\": efficiency,\n", - " \"additional_cost\": additional_cost,\n", - " \"node\": node,\n", - " \"unit_operator\": unit_operator,\n", - " }\n", - ")\n", - "\n", - "print(\"Power Plant Units DataFrame:\")\n", - "display(powerplant_units.head())" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "16f8a13c", - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Demand Units DataFrame:\n" - ] + "cell_type": "markdown", + "id": "4f874cfd", + "metadata": { + "id": "4f874cfd" + }, + "source": [ + "### Simplified Market Clearing Optimization Problem\n", + "\n", + "We consider a simplified market clearing optimization model focusing on zone coupling, aiming to minimize the total cost.\n", + "\n", + "#### Sets and Variables:\n", + "- $T$: Set of time periods.\n", + "- $N$: Set of nodes (zones).\n", + "- $L$: Set of lines.\n", + "- $x_o \\in [0, 1]$: Bid acceptance ratio for order $o$.\n", + "- $f_{t, l} \\in \\mathbb{R}$: Power flow on line $l$ at time $t$.\n", + "\n", + "#### Constants:\n", + "- $P_o$: Price of order $o$.\n", + "- $V_o$: Volume of order $o$.\n", + "- $S_l$: Nominal capacity of line $l$.\n", + "\n", + "#### Objective Function:\n", + "Minimize the total cost of accepted orders:\n", + "\n", + "$$\n", + "\\min \\sum_{o \\in O} P_o V_o x_o\n", + "$$\n", + "\n", + "#### Constraints:\n", + "\n", + "1. **Energy Balance for Each Node and Time Period**:\n", + "\n", + "$$\n", + "\\sum_{\\substack{o \\in O \\\\ \\text{node}(o) = n \\\\ \\text{time}(o) = t}} V_o x_o + \\sum_{l \\in L} I_{n, l} f_{t, l} = 0 \\quad \\forall n \\in N, \\, t \\in T\n", + "$$\n", + "\n", + "Where:\n", + "- $I_{n, l}$ is the incidence value for node $n$ and line $l$ (from the incidence matrix).\n", + "\n", + "2. **Transmission Capacity Constraints for Each Line and Time Period**:\n", + "\n", + "$$\n", + "-S_l \\leq f_{t, l} \\leq S_l \\quad \\forall l \\in L, \\, t \\in T\n", + "$$\n", + "\n", + "#### Summary:\n", + "The goal is to minimize the total cost while ensuring energy balance at each node and respecting transmission line capacity limits for each time period.\n", + "\n", + "In actual ASSUME Framework, the optimization problem is more complex and includes additional constraints and variables, and supports also additional bid types such as block and linked orders. However, the simplified model above captures the essence of market clearing with zone coupling.\n" + ] }, { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
nametechnologybidding_zonalmax_powermin_powerunit_operatornode
0demand_north_1inflex_demandnaive_eom1000000eom_denorth_1
1demand_north_2inflex_demandnaive_eom1000000eom_denorth_2
2demand_southinflex_demandnaive_eom1000000eom_desouth
\n", - "
" - ], - "text/plain": [ - " name technology bidding_zonal max_power min_power \\\n", - "0 demand_north_1 inflex_demand naive_eom 100000 0 \n", - "1 demand_north_2 inflex_demand naive_eom 100000 0 \n", - "2 demand_south inflex_demand naive_eom 100000 0 \n", - "\n", - " unit_operator node \n", - "0 eom_de north_1 \n", - "1 eom_de north_2 \n", - "2 eom_de south " + "cell_type": "code", + "execution_count": 3, + "id": "e2be3fe2", + "metadata": { + "id": "e2be3fe2" + }, + "outputs": [], + "source": [ + "import pyomo.environ as pyo\n", + "from pyomo.opt import SolverFactory, TerminationCondition\n", + "\n", + "\n", + "def simplified_market_clearing_opt(orders, incidence_matrix, lines):\n", + " \"\"\"\n", + " Simplified market clearing optimization focusing on zone coupling.\n", + "\n", + " Args:\n", + " orders (dict): Dictionary of orders with bid_id as keys.\n", + " lines (DataFrame): DataFrame containing information about the transmission lines.\n", + " incidence_matrix (DataFrame): Incidence matrix describing the network structure.\n", + "\n", + " Returns:\n", + " model (ConcreteModel): The solved Pyomo model.\n", + " results (SolverResults): The solver results.\n", + " \"\"\"\n", + " nodes = list(incidence_matrix.index)\n", + " line_ids = list(incidence_matrix.columns)\n", + "\n", + " model = pyo.ConcreteModel()\n", + " # Define dual suffix\n", + " model.dual = pyo.Suffix(direction=pyo.Suffix.IMPORT)\n", + "\n", + " # Define the set of time periods\n", + " model.T = pyo.Set(\n", + " initialize=sorted(set(order[\"time\"] for order in orders.values())),\n", + " doc=\"timesteps\",\n", + " )\n", + " # Define the set of nodes (zones)\n", + " model.nodes = pyo.Set(initialize=nodes, doc=\"nodes\")\n", + " # Define the set of lines\n", + " model.lines = pyo.Set(initialize=line_ids, doc=\"lines\")\n", + "\n", + " # Decision variables for bid acceptance ratios (0 to 1)\n", + " model.x = pyo.Var(\n", + " orders.keys(),\n", + " domain=pyo.NonNegativeReals,\n", + " bounds=(0, 1),\n", + " doc=\"bid_acceptance_ratio\",\n", + " )\n", + "\n", + " # Decision variables for power flows on each line at each time period\n", + " model.flows = pyo.Var(model.T, model.lines, domain=pyo.Reals, doc=\"power_flows\")\n", + "\n", + " # Energy balance constraint for each node and time period\n", + " def energy_balance_rule(model, node, t):\n", + " balance_expr = 0.0\n", + " # Add contributions from orders\n", + " for order_key, order in orders.items():\n", + " if order[\"node\"] == node and order[\"time\"] == t:\n", + " balance_expr += order[\"volume\"] * model.x[order_key]\n", + "\n", + " # Add contributions from line flows based on the incidence matrix\n", + " if incidence_matrix is not None:\n", + " for line in model.lines:\n", + " incidence_value = incidence_matrix.loc[node, line]\n", + " if incidence_value != 0:\n", + " balance_expr += incidence_value * model.flows[t, line]\n", + "\n", + " return balance_expr == 0\n", + "\n", + " model.energy_balance = pyo.Constraint(\n", + " model.nodes, model.T, rule=energy_balance_rule\n", + " )\n", + "\n", + " # Transmission capacity constraints for each line and time period\n", + " def transmission_capacity_rule(model, t, line):\n", + " \"\"\"\n", + " Limits the power flow on each line based on its capacity.\n", + " \"\"\"\n", + " capacity = lines.at[line, \"s_nom\"]\n", + " return (-capacity, model.flows[t, line], capacity)\n", + "\n", + " # Apply transmission capacity constraints to all lines and time periods\n", + " model.transmission_constraints = pyo.Constraint(\n", + " model.T, model.lines, rule=transmission_capacity_rule\n", + " )\n", + "\n", + " # Objective: Minimize total cost (sum of bid prices multiplied by accepted volumes)\n", + " model.objective = pyo.Objective(\n", + " expr=sum(orders[o][\"price\"] * orders[o][\"volume\"] * model.x[o] for o in orders),\n", + " sense=pyo.minimize,\n", + " doc=\"Total Cost Minimization\",\n", + " )\n", + "\n", + " # Choose the solver (GLPK is used here for simplicity)\n", + " solver = SolverFactory(\"glpk\")\n", + " results = solver.solve(model)\n", + "\n", + " # Check if the solver found an optimal solution\n", + " if results.solver.termination_condition != TerminationCondition.optimal:\n", + " raise Exception(\"Solver did not find an optimal solution.\")\n", + "\n", + " return model, results" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# @title Define the demand units\n", - "demand_units = pd.DataFrame(\n", - " {\n", - " \"name\": [\"demand_north_1\", \"demand_north_2\", \"demand_south\"],\n", - " \"technology\": [\"inflex_demand\"] * 3,\n", - " \"bidding_zonal\": [\"naive_eom\"] * 3,\n", - " \"max_power\": [100000, 100000, 100000],\n", - " \"min_power\": [0, 0, 0],\n", - " \"unit_operator\": [\"eom_de\"] * 3,\n", - " \"node\": [\"north_1\", \"north_2\", \"south\"],\n", - " }\n", - ")\n", - "\n", - "# Display the demand_units DataFrame\n", - "print(\"Demand Units DataFrame:\")\n", - "display(demand_units)" - ] - }, - { - "cell_type": "markdown", - "id": "d847ac5f", - "metadata": {}, - "source": [ - "**Explanation:**\n", - "\n", - "- **Power Plant Units:**\n", - " - **name:** Identifier for each power plant unit (`Unit 1` to `Unit 30`).\n", - " - **technology:** Type of technology (`nuclear` for all units).\n", - " - **bidding_nodal:** Bidding strategy used (`naive_eom` for all units).\n", - " - **fuel_type:** Type of fuel used (`uranium` for all units).\n", - " - **emission_factor:** Emissions per unit of energy produced (`0.0` for all units).\n", - " - **max_power, min_power:** Operational power limits (`1000.0` MW max, `0.0` MW min for all units).\n", - " - **efficiency:** Conversion efficiency (`0.3` for all units).\n", - " - **additional_cost:** Additional operational costs (`5` to `34`, with southern units being more expensive).\n", - " - **node:** The bus (zone) to which the unit is connected (`north_1` for units `1-15`, `south` for units `16-30`).\n", - " - **unit_operator:** Operator responsible for the unit (`Operator North` for northern units, `Operator South` for southern units).\n", - "\n", - "- **Demand Units:**\n", - " - **name:** Identifier for each demand unit (`demand_north_1`, `demand_north_2`, and `demand_south`).\n", - " - **technology:** Type of demand (`inflex_demand` for all units).\n", - " - **bidding_zonal:** Bidding strategy used (`naive_eom` for all units).\n", - " - **max_power, min_power:** Operational power limits (`100000` MW max, `0` MW min for all units).\n", - " - **unit_operator:** Operator responsible for the unit (`eom_de` for all units).\n", - " - **node:** The bus (zone) to which the unit is connected (`north_1`, `north_2`, and `south`)." - ] - }, - { - "cell_type": "markdown", - "id": "8f1d684a", - "metadata": {}, - "source": [ - "### 4.4. Preparing Demand Data\n", - "\n", - "**Demand Data** provides the expected electricity demand for each demand unit over time. This data is essential for simulating how demand varies and affects market dynamics." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "a0591f14", - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Demand DataFrame:\n" - ] + "cell_type": "markdown", + "id": "8d42c532", + "metadata": { + "id": "8d42c532" + }, + "source": [ + "The above function is a simplified representation focusing on the essential aspects of market zone coupling. In the following sections, we will delve deeper into creating input files and mimicking the market clearing process using this function to understand the inner workings of the ASSUME framework." + ] }, { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
demand_north_1demand_north_2demand_south
datetime
2019-01-01 00:00:002400240017400
2019-01-01 01:00:002800280016800
2019-01-01 02:00:003200320016200
2019-01-01 03:00:003600360015600
2019-01-01 04:00:004000400015000
\n", - "
" - ], - "text/plain": [ - " demand_north_1 demand_north_2 demand_south\n", - "datetime \n", - "2019-01-01 00:00:00 2400 2400 17400\n", - "2019-01-01 01:00:00 2800 2800 16800\n", - "2019-01-01 02:00:00 3200 3200 16200\n", - "2019-01-01 03:00:00 3600 3600 15600\n", - "2019-01-01 04:00:00 4000 4000 15000" + "cell_type": "markdown", + "id": "11addaf0", + "metadata": { + "id": "11addaf0" + }, + "source": [ + "## 4. Creating Exemplary Input Files for Market Zone Coupling\n", + "\n", + "To implement market zone coupling, users need to prepare specific input files that define the network's structure, units, and demand profiles. Below, we will guide you through creating the necessary DataFrames for buses, transmission lines, power plant units, demand units, and demand profiles." ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# @title Define the demand DataFrame\n", - "\n", - "# the demand for the north_1 and north_2 zones increases by 400 MW per hour\n", - "# while the demand for the south zone decreases by 600 MW per hour\n", - "# the demand starts at 2400 MW for the north zones and 17400 MW for the south zone\n", - "demand_df = pd.DataFrame(\n", - " {\n", - " \"datetime\": pd.date_range(start=\"2019-01-01\", periods=24, freq=\"h\"),\n", - " \"demand_north_1\": [2400 + i * 400 for i in range(24)],\n", - " \"demand_north_2\": [2400 + i * 400 for i in range(24)],\n", - " \"demand_south\": [17400 - i * 600 for i in range(24)],\n", - " }\n", - ")\n", - "\n", - "# Convert the 'datetime' column to datetime objects and set as index\n", - "demand_df.set_index(\"datetime\", inplace=True)\n", - "\n", - "# Display the demand_df DataFrame\n", - "print(\"Demand DataFrame:\")\n", - "display(demand_df.head())" - ] - }, - { - "cell_type": "markdown", - "id": "1756e6e3", - "metadata": {}, - "source": [ - "**Explanation:**\n", - "\n", - "- **datetime:** Timestamp for each demand value.\n", - "- **demand_north_1, demand_north_2, demand_south:** Demand values for each respective demand unit.\n", - "\n", - "**Note:** The demand timeseries has been designed to be fulfillable by the defined power plants in both zones." - ] - }, - { - "cell_type": "markdown", - "id": "478211c6", - "metadata": {}, - "source": [ - "## 5. Reproducing the Market Clearing Process\n", - "\n", - "With the input files prepared, we can now reproduce the market clearing process using the simplified market clearing function. This will help us understand how different market zones interact, how constraints are managed, how bids are assigned, and how market prices are extracted." - ] - }, - { - "cell_type": "markdown", - "id": "01680700", - "metadata": {}, - "source": [ - "### 5.1. Calculating the Incidence Matrix\n", - "\n", - "The **Incidence Matrix** represents the connection relationships between different nodes in a network. In the context of market zones, it indicates which transmission lines connect which zones. The incidence matrix is a binary matrix where each element denotes whether a particular node is connected to a line or not. This matrix is essential for understanding the structure of the transmission network and for formulating power flow equations during the market clearing process." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "c9fb8458", - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Calculated Incidence Matrix between Zones:\n" - ] + "cell_type": "markdown", + "id": "2a095ffb", + "metadata": { + "id": "2a095ffb" + }, + "source": [ + "### 4.1. Defining Buses and Zones\n", + "\n", + "**Buses** represent nodes in the network where energy can be injected or withdrawn. Each bus is assigned to a **zone**, which groups buses into market areas. This zoning facilitates market coupling by managing interactions between different market regions." + ] }, { - "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", - "
Line_N1_SLine_N2_SLine_N1_N2
DE_1110
DE_2-1-10
\n", - "
" + "cell_type": "code", + "execution_count": 4, + "id": "c1731cdc", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 192 + }, + "cellView": "form", + "id": "c1731cdc", + "outputId": "0d0a8060-aa86-4ba8-a0b1-0e528bc9d0d2" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Buses DataFrame:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " v_nom zone_id x y\n", + "name \n", + "north_1 380.0 DE_1 10.0 54.0\n", + "north_2 380.0 DE_1 9.5 53.5\n", + "south 380.0 DE_2 11.6 48.1" + ], + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
v_nomzone_idxy
name
north_1380.0DE_110.054.0
north_2380.0DE_19.553.5
south380.0DE_211.648.1
\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" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "buses", + "summary": "{\n \"name\": \"buses\",\n \"rows\": 3,\n \"fields\": [\n {\n \"column\": \"name\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"north_1\",\n \"north_2\",\n \"south\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"v_nom\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 380.0,\n \"max\": 380.0,\n \"num_unique_values\": 1,\n \"samples\": [\n 380.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"zone_id\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"DE_2\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"x\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.0969655114602888,\n \"min\": 9.5,\n \"max\": 11.6,\n \"num_unique_values\": 3,\n \"samples\": [\n 10.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"y\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 3.2715949219506575,\n \"min\": 48.1,\n \"max\": 54.0,\n \"num_unique_values\": 3,\n \"samples\": [\n 54.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {} + } ], - "text/plain": [ - " Line_N1_S Line_N2_S Line_N1_N2\n", - "DE_1 1 1 0\n", - "DE_2 -1 -1 0" + "source": [ + "# @title Define the buses DataFrame with three nodes and two zones\n", + "buses = pd.DataFrame(\n", + " {\n", + " \"name\": [\"north_1\", \"north_2\", \"south\"],\n", + " \"v_nom\": [380.0, 380.0, 380.0],\n", + " \"zone_id\": [\"DE_1\", \"DE_1\", \"DE_2\"],\n", + " \"x\": [10.0, 9.5, 11.6],\n", + " \"y\": [54.0, 53.5, 48.1],\n", + " }\n", + ").set_index(\"name\")\n", + "\n", + "# Display the buses DataFrame\n", + "print(\"Buses DataFrame:\")\n", + "display(buses)" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# @title Create the incidence matrix\n", - "def create_incidence_matrix(lines, buses, zones_id=None):\n", - " # Determine nodes based on whether we're working with zones or individual buses\n", - " if zones_id:\n", - " nodes = buses[zones_id].unique() # Use zones as nodes\n", - " node_mapping = buses[zones_id].to_dict() # Map bus IDs to zones\n", - " else:\n", - " nodes = buses.index.values # Use buses as nodes\n", - " node_mapping = {bus: bus for bus in nodes} # Identity mapping for buses\n", - "\n", - " # Use the line indices as columns for the incidence matrix\n", - " line_indices = lines.index.values\n", - "\n", - " # Initialize incidence matrix as a DataFrame for easier label-based indexing\n", - " incidence_matrix = pd.DataFrame(0, index=nodes, columns=line_indices)\n", - "\n", - " # Fill in the incidence matrix by iterating over lines\n", - " for line_idx, line in lines.iterrows():\n", - " bus0 = line[\"bus0\"]\n", - " bus1 = line[\"bus1\"]\n", - "\n", - " # Retrieve mapped nodes (zones or buses)\n", - " node0 = node_mapping.get(bus0)\n", - " node1 = node_mapping.get(bus1)\n", - "\n", - " # Ensure both nodes are valid and part of the defined nodes\n", - " if (\n", - " node0 is not None\n", - " and node1 is not None\n", - " and node0 in nodes\n", - " and node1 in nodes\n", - " ):\n", - " if node0 != node1: # Only create incidence for different nodes\n", - " # Set incidence values: +1 for the \"from\" node and -1 for the \"to\" node\n", - " incidence_matrix.at[node0, line_idx] = (\n", - " 1 # Outgoing from bus0 (or zone0)\n", - " )\n", - " incidence_matrix.at[node1, line_idx] = -1 # Incoming to bus1 (or zone1)\n", - "\n", - " # Return the incidence matrix as a DataFrame\n", - " return incidence_matrix\n", - "\n", - "\n", - "# Calculate the incidence matrix\n", - "incidence_matrix = create_incidence_matrix(lines, buses, \"zone_id\")\n", - "\n", - "print(\"Calculated Incidence Matrix between Zones:\")\n", - "display(incidence_matrix)" - ] - }, - { - "cell_type": "markdown", - "id": "61e9050c", - "metadata": {}, - "source": [ - "**Explanation:**\n", - "\n", - "- **Nodes (Zones):** Extracted from the `buses` DataFrame (`DE_1` and `DE_2`).\n", - "- **Transmission Lines:** Iterated over to sum their capacities between different zones.\n", - "- **Bidirectional Flow Assumption:** Transmission capacities are added in both directions (`DE_1 -> DE_2` and `DE_2 -> DE_1`).\n", - "- **Lower Triangle Negative Values:** To indicate the opposite direction of power flow, capacities in the lower triangle of the matrix are converted to negative values." - ] - }, - { - "cell_type": "markdown", - "id": "12ccae5f", - "metadata": {}, - "source": [ - "### 5.2. Creating and Mapping Market Orders\n", - "\n", - "We will construct a dictionary of market orders representing supply and demand bids from power plants and demand units.\n", - "The orders include details such as price, volume, location (node), and time. Once the orders are generated, they will be\n", - "mapped from nodes to corresponding zones using a pre-defined node-to-zone mapping." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "4f7366ae", - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Sample Supply Order:\n" - ] + "cell_type": "markdown", + "id": "50a27c51", + "metadata": { + "id": "50a27c51" + }, + "source": [ + "**Explanation:**\n", + "\n", + "- **name:** Identifier for each bus (`north_1`, `north_2`, and `south`).\n", + "- **v_nom:** Nominal voltage level (in kV) for all buses.\n", + "- **zone_id:** Identifier for the market zone to which the bus belongs (`DE_1` for north buses and `DE_2` for the south bus).\n", + "- **x, y:** Geographical coordinates (optional, can be used for mapping or spatial analyses)." + ] }, { - "data": { - "text/plain": [ - "{'price': 5,\n", - " 'volume': 1000.0,\n", - " 'node': 'north_1',\n", - " 'time': Timestamp('2019-01-01 00:00:00')}" + "cell_type": "markdown", + "id": "1545e3bf", + "metadata": { + "id": "1545e3bf" + }, + "source": [ + "### 4.2. Configuring Transmission Lines\n", + "\n", + "**Transmission Lines** connect buses, allowing energy to flow between them. Each line has a specified capacity and electrical parameters." ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Sample Demand Order:\n" - ] + "cell_type": "code", + "execution_count": 5, + "id": "64769ec7", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 192 + }, + "cellView": "form", + "id": "64769ec7", + "outputId": "a47490cb-d06c-4152-8be6-64985a8dcbd0" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Transmission Lines DataFrame:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " bus0 bus1 s_nom x r\n", + "name \n", + "Line_N1_S north_1 south 5000.0 0.01 0.001\n", + "Line_N2_S north_2 south 5000.0 0.01 0.001\n", + "Line_N1_N2 north_1 north_2 5000.0 0.01 0.001" + ], + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
bus0bus1s_nomxr
name
Line_N1_Snorth_1south5000.00.010.001
Line_N2_Snorth_2south5000.00.010.001
Line_N1_N2north_1north_25000.00.010.001
\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" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "lines", + "summary": "{\n \"name\": \"lines\",\n \"rows\": 3,\n \"fields\": [\n {\n \"column\": \"name\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"Line_N1_S\",\n \"Line_N2_S\",\n \"Line_N1_N2\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"bus0\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"north_2\",\n \"north_1\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"bus1\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"north_2\",\n \"south\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"s_nom\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 5000.0,\n \"max\": 5000.0,\n \"num_unique_values\": 1,\n \"samples\": [\n 5000.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"x\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 0.01,\n \"max\": 0.01,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.01\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"r\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 0.001,\n \"max\": 0.001,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.001\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {} + } + ], + "source": [ + "# @title Define three transmission lines\n", + "lines = pd.DataFrame(\n", + " {\n", + " \"name\": [\"Line_N1_S\", \"Line_N2_S\", \"Line_N1_N2\"],\n", + " \"bus0\": [\"north_1\", \"north_2\", \"north_1\"],\n", + " \"bus1\": [\"south\", \"south\", \"north_2\"],\n", + " \"s_nom\": [5000.0, 5000.0, 5000.0],\n", + " \"x\": [0.01, 0.01, 0.01],\n", + " \"r\": [0.001, 0.001, 0.001],\n", + " }\n", + ").set_index(\"name\")\n", + "\n", + "print(\"Transmission Lines DataFrame:\")\n", + "display(lines)" + ] }, { - "data": { - "text/plain": [ - "{'price': 100,\n", - " 'volume': -2400,\n", - " 'node': 'north_1',\n", - " 'time': Timestamp('2019-01-01 00:00:00')}" + "cell_type": "markdown", + "id": "f2290793", + "metadata": { + "id": "f2290793" + }, + "source": [ + "**Explanation:**\n", + "\n", + "- **name:** Identifier for each transmission line (`Line_N1_S`, `Line_N2_S`, and `Line_N1_N2`).\n", + "- **bus0, bus1:** The two buses that the line connects.\n", + "- **s_nom:** Nominal apparent power capacity of the line (in MVA).\n", + "- **x:** Reactance of the line (in per unit).\n", + "- **r:** Resistance of the line (in per unit)." ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# @title Construct Orders and Map Nodes to Zones\n", - "# Initialize orders dictionary\n", - "orders = {}\n", - "\n", - "# Add power plant bids\n", - "for _, row in powerplant_units.iterrows():\n", - " bid_id = row[\"name\"]\n", - " for timestamp in demand_df.index:\n", - " orders[f\"{bid_id}_{timestamp}\"] = {\n", - " \"price\": row[\"additional_cost\"], # Assuming additional_cost as bid price\n", - " \"volume\": row[\"max_power\"], # Assuming max_power as bid volume\n", - " \"node\": row[\"node\"],\n", - " \"time\": timestamp,\n", - " }\n", - "\n", - "# Add demand bids\n", - "for _, row in demand_units.iterrows():\n", - " bid_id = row[\"name\"]\n", - " for timestamp in demand_df.index:\n", - " orders[f\"{bid_id}_{timestamp}\"] = {\n", - " \"price\": 100, # Demand bids with high price\n", - " \"volume\": -demand_df.loc[\n", - " timestamp, row[\"name\"]\n", - " ], # Negative volume for demand\n", - " \"node\": row[\"node\"],\n", - " \"time\": timestamp,\n", - " }\n", - "\n", - "# Display a sample order\n", - "print(\"\\nSample Supply Order:\")\n", - "display(orders[\"Unit 1_2019-01-01 00:00:00\"])\n", - "\n", - "print(\"\\nSample Demand Order:\")\n", - "display(orders[\"demand_north_1_2019-01-01 00:00:00\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "e8b8a17f", - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Mapped Orders:\n" - ] + "cell_type": "markdown", + "id": "c931cf9f", + "metadata": { + "id": "c931cf9f" + }, + "source": [ + "### 4.3. Setting Up Power Plant and Demand Units\n", + "\n", + "**Power Plant Units** represent energy generation sources, while **Demand Units** represent consumption. Each unit is associated with a specific bus (node) and has operational parameters that define its behavior in the market." + ] }, { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
pricevolumenodetime
Unit 1_2019-01-01 00:00:0051000.0DE_12019-01-01 00:00:00
Unit 1_2019-01-01 01:00:0051000.0DE_12019-01-01 01:00:00
Unit 1_2019-01-01 02:00:0051000.0DE_12019-01-01 02:00:00
Unit 1_2019-01-01 03:00:0051000.0DE_12019-01-01 03:00:00
Unit 1_2019-01-01 04:00:0051000.0DE_12019-01-01 04:00:00
\n", - "
" + "cell_type": "code", + "execution_count": 6, + "id": "8a1f9e35", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 224 + }, + "cellView": "form", + "id": "8a1f9e35", + "outputId": "b7d43816-40af-4526-bb64-53d4a20ba911" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Power Plant Units DataFrame:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " name technology bidding_zonal fuel_type emission_factor max_power \\\n", + "0 Unit 1 nuclear naive_eom uranium 0.0 1000.0 \n", + "1 Unit 2 nuclear naive_eom uranium 0.0 1000.0 \n", + "2 Unit 3 nuclear naive_eom uranium 0.0 1000.0 \n", + "3 Unit 4 nuclear naive_eom uranium 0.0 1000.0 \n", + "4 Unit 5 nuclear naive_eom uranium 0.0 1000.0 \n", + "\n", + " min_power efficiency additional_cost node unit_operator \n", + "0 0.0 0.3 5 north_1 Operator North \n", + "1 0.0 0.3 6 north_1 Operator North \n", + "2 0.0 0.3 7 north_1 Operator North \n", + "3 0.0 0.3 8 north_1 Operator North \n", + "4 0.0 0.3 9 north_1 Operator North " + ], + "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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
nametechnologybidding_zonalfuel_typeemission_factormax_powermin_powerefficiencyadditional_costnodeunit_operator
0Unit 1nuclearnaive_eomuranium0.01000.00.00.35north_1Operator North
1Unit 2nuclearnaive_eomuranium0.01000.00.00.36north_1Operator North
2Unit 3nuclearnaive_eomuranium0.01000.00.00.37north_1Operator North
3Unit 4nuclearnaive_eomuranium0.01000.00.00.38north_1Operator North
4Unit 5nuclearnaive_eomuranium0.01000.00.00.39north_1Operator North
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"display(powerplant_units\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"name\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"Unit 2\",\n \"Unit 5\",\n \"Unit 3\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"technology\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"nuclear\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"bidding_zonal\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"naive_eom\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"fuel_type\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"uranium\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"emission_factor\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 0.0,\n \"max\": 0.0,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"max_power\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 1000.0,\n \"max\": 1000.0,\n \"num_unique_values\": 1,\n \"samples\": [\n 1000.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"min_power\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 0.0,\n \"max\": 0.0,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"efficiency\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 0.3,\n \"max\": 0.3,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.3\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"additional_cost\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1,\n \"min\": 5,\n \"max\": 9,\n \"num_unique_values\": 5,\n \"samples\": [\n 6\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"node\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"north_1\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"unit_operator\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"Operator North\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {} + } ], - "text/plain": [ - " price volume node time\n", - "Unit 1_2019-01-01 00:00:00 5 1000.0 DE_1 2019-01-01 00:00:00\n", - "Unit 1_2019-01-01 01:00:00 5 1000.0 DE_1 2019-01-01 01:00:00\n", - "Unit 1_2019-01-01 02:00:00 5 1000.0 DE_1 2019-01-01 02:00:00\n", - "Unit 1_2019-01-01 03:00:00 5 1000.0 DE_1 2019-01-01 03:00:00\n", - "Unit 1_2019-01-01 04:00:00 5 1000.0 DE_1 2019-01-01 04:00:00" + "source": [ + "# @title Create the power plant units DataFrame\n", + "\n", + "# Define the total number of units\n", + "num_units = 30 # Reduced for simplicity\n", + "\n", + "# Generate the 'name' column: Unit 1 to Unit 30\n", + "names = [f\"Unit {i}\" for i in range(1, num_units + 1)]\n", + "\n", + "# All other columns with constant values\n", + "technology = [\"nuclear\"] * num_units\n", + "bidding_zonal = [\"naive_eom\"] * num_units\n", + "fuel_type = [\"uranium\"] * num_units\n", + "emission_factor = [0.0] * num_units\n", + "max_power = [1000.0] * num_units\n", + "min_power = [0.0] * num_units\n", + "efficiency = [0.3] * num_units\n", + "\n", + "# Generate 'additional_cost':\n", + "# - North units (1-15): 5 to 19\n", + "# - South units (16-30): 20 to 34\n", + "additional_cost = list(range(5, 5 + num_units))\n", + "\n", + "# Initialize 'node' and 'unit_operator' lists\n", + "node = []\n", + "unit_operator = []\n", + "\n", + "for i in range(1, num_units + 1):\n", + " if 1 <= i <= 8:\n", + " node.append(\"north_1\") # All north units connected to 'north_1'\n", + " unit_operator.append(\"Operator North\")\n", + " elif 9 <= i <= 15:\n", + " node.append(\"north_2\")\n", + " unit_operator.append(\"Operator North\")\n", + " else:\n", + " node.append(\"south\") # All south units connected to 'south'\n", + " unit_operator.append(\"Operator South\")\n", + "\n", + "# Create the DataFrame\n", + "powerplant_units = pd.DataFrame(\n", + " {\n", + " \"name\": names,\n", + " \"technology\": technology,\n", + " \"bidding_zonal\": bidding_zonal, # bidding strategy used to bid on the zonal market. Should be same name as in config file\n", + " \"fuel_type\": fuel_type,\n", + " \"emission_factor\": emission_factor,\n", + " \"max_power\": max_power,\n", + " \"min_power\": min_power,\n", + " \"efficiency\": efficiency,\n", + " \"additional_cost\": additional_cost,\n", + " \"node\": node,\n", + " \"unit_operator\": unit_operator,\n", + " }\n", + ")\n", + "\n", + "print(\"Power Plant Units DataFrame:\")\n", + "display(powerplant_units.head())" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Map the orders to zones\n", - "# Create a mapping from node_id to zone_id\n", - "node_mapping = buses[\"zone_id\"].to_dict()\n", - "\n", - "# Create a new dictionary with mapped zone IDs\n", - "orders_mapped = {}\n", - "for bid_id, bid in orders.items():\n", - " original_node = bid[\"node\"]\n", - " mapped_zone = node_mapping.get(\n", - " original_node, original_node\n", - " ) # Default to original_node if not found\n", - " orders_mapped[bid_id] = {\n", - " \"price\": bid[\"price\"],\n", - " \"volume\": bid[\"volume\"],\n", - " \"node\": mapped_zone, # Replace bus with zone ID\n", - " \"time\": bid[\"time\"],\n", - " }\n", - "\n", - "# Display the mapped orders\n", - "print(\"Mapped Orders:\")\n", - "display(pd.DataFrame(orders_mapped).T.head())" - ] - }, - { - "cell_type": "markdown", - "id": "1a5d589c", - "metadata": {}, - "source": [ - "**Explanation:**\n", - "\n", - "- **Power Plant Bids:** Each power plant unit submits a bid for each time period with its `additional_cost` as the bid price and `max_power` as the bid volume.\n", - "- **Demand Bids:** Each demand unit submits a bid for each time period with a high price (set to 100) and a negative volume representing the demand.\n", - "- **Node to Zone Mapping:** After creating the bids, the node information is mapped to corresponding zones for further market clearing steps.\n", - " The mapping uses a pre-defined dictionary (`node_mapping`) to replace each node ID with the corresponding zone ID. In ASSUME, this mapping happens automatically on the market side, but we are simulating it here for educational purposes." - ] - }, - { - "cell_type": "markdown", - "id": "f11b487c", - "metadata": {}, - "source": [ - "### 5.3. Running the Market Clearing Simulation\n", - "\n", - "We will conduct three simulations:\n", - "\n", - "1. **Simulation 1:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **zero**.\n", - "2. **Simulation 2:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **medium**.\n", - "3. **Simulation 3:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **high**." - ] - }, - { - "cell_type": "markdown", - "id": "07082c73", - "metadata": {}, - "source": [ - "#### Simulation 1: Zero Transmission Capacity Between Zones" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "1c7dfee2", - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "### Simulation 1: Zero Transmission Capacity Between Zones\n", - "Transmission Lines for Simulation 1:\n" - ] + "cell_type": "markdown", + "source": [ + "- **Power Plant Units:**\n", + " - **name:** Identifier for each power plant unit (`Unit 1` to `Unit 30`).\n", + " - **technology:** Type of technology (`nuclear` for all units).\n", + " - **bidding_nodal:** Bidding strategy used (`naive_eom` for all units).\n", + " - **fuel_type:** Type of fuel used (`uranium` for all units).\n", + " - **emission_factor:** Emissions per unit of energy produced (`0.0` for all units).\n", + " - **max_power, min_power:** Operational power limits (`1000.0` MW max, `0.0` MW min for all units).\n", + " - **efficiency:** Conversion efficiency (`0.3` for all units).\n", + " - **additional_cost:** Additional operational costs (`5` to `34`, with southern units being more expensive).\n", + " - **node:** The bus (zone) to which the unit is connected (`north_1` for units `1-15`, `south` for units `16-30`).\n", + " - **unit_operator:** Operator responsible for the unit (`Operator North` for northern units, `Operator South` for southern units)." + ], + "metadata": { + "id": "Uwp8L0rombac" + }, + "id": "Uwp8L0rombac" }, { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
bus0bus1s_nomxr
name
Line_N1_Snorth_1south00.010.001
Line_N2_Snorth_2south00.010.001
Line_N1_N2north_1north_200.010.001
\n", - "
" + "cell_type": "code", + "execution_count": 7, + "id": "16f8a13c", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 161 + }, + "cellView": "form", + "id": "16f8a13c", + "outputId": "aad8a140-a6ed-47fd-d06e-1e794aa1a829" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Demand Units DataFrame:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " name technology bidding_zonal max_power min_power \\\n", + "0 demand_north_1 inflex_demand naive_eom 100000 0 \n", + "1 demand_north_2 inflex_demand naive_eom 100000 0 \n", + "2 demand_south inflex_demand naive_eom 100000 0 \n", + "\n", + " unit_operator node \n", + "0 eom_de north_1 \n", + "1 eom_de north_2 \n", + "2 eom_de south " + ], + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
nametechnologybidding_zonalmax_powermin_powerunit_operatornode
0demand_north_1inflex_demandnaive_eom1000000eom_denorth_1
1demand_north_2inflex_demandnaive_eom1000000eom_denorth_2
2demand_southinflex_demandnaive_eom1000000eom_desouth
\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" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "demand_units", + "summary": "{\n \"name\": \"demand_units\",\n \"rows\": 3,\n \"fields\": [\n {\n \"column\": \"name\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"demand_north_1\",\n \"demand_north_2\",\n \"demand_south\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"technology\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"inflex_demand\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"bidding_zonal\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"naive_eom\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"max_power\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 100000,\n \"max\": 100000,\n \"num_unique_values\": 1,\n \"samples\": [\n 100000\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"min_power\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 0,\n \"num_unique_values\": 1,\n \"samples\": [\n 0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"unit_operator\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"eom_de\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"node\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"north_1\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {} + } ], - "text/plain": [ - " bus0 bus1 s_nom x r\n", - "name \n", - "Line_N1_S north_1 south 0 0.01 0.001\n", - "Line_N2_S north_2 south 0 0.01 0.001\n", - "Line_N1_N2 north_1 north_2 0 0.01 0.001" + "source": [ + "# @title Define the demand units\n", + "demand_units = pd.DataFrame(\n", + " {\n", + " \"name\": [\"demand_north_1\", \"demand_north_2\", \"demand_south\"],\n", + " \"technology\": [\"inflex_demand\"] * 3,\n", + " \"bidding_zonal\": [\"naive_eom\"] * 3,\n", + " \"max_power\": [100000, 100000, 100000],\n", + " \"min_power\": [0, 0, 0],\n", + " \"unit_operator\": [\"eom_de\"] * 3,\n", + " \"node\": [\"north_1\", \"north_2\", \"south\"],\n", + " }\n", + ")\n", + "\n", + "# Display the demand_units DataFrame\n", + "print(\"Demand Units DataFrame:\")\n", + "display(demand_units)" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "print(\"### Simulation 1: Zero Transmission Capacity Between Zones\")\n", - "\n", - "lines_sim1 = lines.copy()\n", - "lines_sim1[\"s_nom\"] = 0 # Set transmission capacity to zero for all lines\n", - "\n", - "print(\"Transmission Lines for Simulation 1:\")\n", - "display(lines_sim1)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "c5e4a712", - "metadata": {}, - "outputs": [], - "source": [ - "# Run the simplified market clearing for Simulation 1\n", - "model_sim1, results_sim1 = simplified_market_clearing_opt(\n", - " orders=orders_mapped,\n", - " incidence_matrix=incidence_matrix,\n", - " lines=lines_sim1,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "aef7c083", - "metadata": {}, - "source": [ - "#### Simulation 2: Medium Transmission Capacity Between Zones" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "86304253", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "### Simulation 2: Medium Transmission Capacity Between Zones\n", - "Transmission Lines for Simulation 2:\n" - ] }, { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
bus0bus1s_nomxr
name
Line_N1_Snorth_1south3000.00.010.001
Line_N2_Snorth_2south3000.00.010.001
Line_N1_N2north_1north_23000.00.010.001
\n", - "
" - ], - "text/plain": [ - " bus0 bus1 s_nom x r\n", - "name \n", - "Line_N1_S north_1 south 3000.0 0.01 0.001\n", - "Line_N2_S north_2 south 3000.0 0.01 0.001\n", - "Line_N1_N2 north_1 north_2 3000.0 0.01 0.001" + "cell_type": "markdown", + "id": "d847ac5f", + "metadata": { + "id": "d847ac5f" + }, + "source": [ + "- **Demand Units:**\n", + " - **name:** Identifier for each demand unit (`demand_north_1`, `demand_north_2`, and `demand_south`).\n", + " - **technology:** Type of demand (`inflex_demand` for all units).\n", + " - **bidding_zonal:** Bidding strategy used (`naive_eom` for all units).\n", + " - **max_power, min_power:** Operational power limits (`100000` MW max, `0` MW min for all units).\n", + " - **unit_operator:** Operator responsible for the unit (`eom_de` for all units).\n", + " - **node:** The bus (zone) to which the unit is connected (`north_1`, `north_2`, and `south`)." ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "print(\"### Simulation 2: Medium Transmission Capacity Between Zones\")\n", - "\n", - "# Define the lines for Simulation 2 with medium transmission capacity\n", - "lines_sim2 = lines.copy()\n", - "lines_sim2[\"s_nom\"] = 3000.0 # Set transmission capacity to 3000 MW for all lines\n", - "\n", - "# Display the incidence matrix for Simulation 2\n", - "print(\"Transmission Lines for Simulation 2:\")\n", - "display(lines_sim2)\n", - "\n", - "# Run the simplified market clearing for Simulation 2\n", - "model_sim2, results_sim2 = simplified_market_clearing_opt(\n", - " orders=orders_mapped,\n", - " incidence_matrix=incidence_matrix,\n", - " lines=lines_sim2,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "5c721991", - "metadata": {}, - "source": [ - "#### Simulation 3: High Transmission Capacity Between Zones" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "a1c7f344", - "metadata": { - "lines_to_end_of_cell_marker": 0, - "lines_to_next_cell": 1 - }, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "### Simulation 3: High Transmission Capacity Between Zones\n", - "Transmission Lines for Simulation 3:\n" - ] + "cell_type": "markdown", + "id": "8f1d684a", + "metadata": { + "id": "8f1d684a" + }, + "source": [ + "### 4.4. Preparing Demand Data\n", + "\n", + "**Demand Data** provides the expected electricity demand for each demand unit over time. This data is essential for simulating how demand varies and affects market dynamics." + ] }, { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
bus0bus1s_nomxr
name
Line_N1_Snorth_1south5000.00.010.001
Line_N2_Snorth_2south5000.00.010.001
Line_N1_N2north_1north_25000.00.010.001
\n", - "
" + "cell_type": "code", + "execution_count": 8, + "id": "a0591f14", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 255 + }, + "cellView": "form", + "id": "a0591f14", + "outputId": "d590647b-7522-4fce-bfe7-dc66b7b566e8" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Demand DataFrame:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " demand_north_1 demand_north_2 demand_south\n", + "datetime \n", + "2019-01-01 00:00:00 2400 2400 17400\n", + "2019-01-01 01:00:00 2800 2800 16800\n", + "2019-01-01 02:00:00 3200 3200 16200\n", + "2019-01-01 03:00:00 3600 3600 15600\n", + "2019-01-01 04:00:00 4000 4000 15000" + ], + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
demand_north_1demand_north_2demand_south
datetime
2019-01-01 00:00:002400240017400
2019-01-01 01:00:002800280016800
2019-01-01 02:00:003200320016200
2019-01-01 03:00:003600360015600
2019-01-01 04:00:004000400015000
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"display(demand_df\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"datetime\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2019-01-01 00:00:00\",\n \"max\": \"2019-01-01 04:00:00\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"2019-01-01 01:00:00\",\n \"2019-01-01 04:00:00\",\n \"2019-01-01 02:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"demand_north_1\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 632,\n \"min\": 2400,\n \"max\": 4000,\n \"num_unique_values\": 5,\n \"samples\": [\n 2800,\n 4000,\n 3200\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"demand_north_2\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 632,\n \"min\": 2400,\n \"max\": 4000,\n \"num_unique_values\": 5,\n \"samples\": [\n 2800,\n 4000,\n 3200\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"demand_south\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 948,\n \"min\": 15000,\n \"max\": 17400,\n \"num_unique_values\": 5,\n \"samples\": [\n 16800,\n 15000,\n 16200\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {} + } ], - "text/plain": [ - " bus0 bus1 s_nom x r\n", - "name \n", - "Line_N1_S north_1 south 5000.0 0.01 0.001\n", - "Line_N2_S north_2 south 5000.0 0.01 0.001\n", - "Line_N1_N2 north_1 north_2 5000.0 0.01 0.001" + "source": [ + "# @title Define the demand DataFrame\n", + "\n", + "# the demand for the north_1 and north_2 zones increases by 400 MW per hour\n", + "# while the demand for the south zone decreases by 600 MW per hour\n", + "# the demand starts at 2400 MW for the north zones and 17400 MW for the south zone\n", + "demand_df = pd.DataFrame(\n", + " {\n", + " \"datetime\": pd.date_range(start=\"2019-01-01\", periods=24, freq=\"h\"),\n", + " \"demand_north_1\": [2400 + i * 400 for i in range(24)],\n", + " \"demand_north_2\": [2400 + i * 400 for i in range(24)],\n", + " \"demand_south\": [17400 - i * 600 for i in range(24)],\n", + " }\n", + ")\n", + "\n", + "# Convert the 'datetime' column to datetime objects and set as index\n", + "demand_df.set_index(\"datetime\", inplace=True)\n", + "\n", + "# Display the demand_df DataFrame\n", + "print(\"Demand DataFrame:\")\n", + "display(demand_df.head())" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "print(\"### Simulation 3: High Transmission Capacity Between Zones\")\n", - "\n", - "# Define the lines for Simulation 3 with high transmission capacity\n", - "lines_sim3 = lines.copy()\n", - "lines_sim3[\"s_nom\"] = 5000.0 # Set transmission capacity to 5000 MW for all lines\n", - "\n", - "# Display the line capacities for Simulation 3\n", - "print(\"Transmission Lines for Simulation 3:\")\n", - "display(lines_sim3)\n", - "\n", - "# Run the simplified market clearing for Simulation 3\n", - "model_sim3, results_sim3 = simplified_market_clearing_opt(\n", - " orders=orders_mapped,\n", - " incidence_matrix=incidence_matrix,\n", - " lines=lines_sim3,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "661e6c30", - "metadata": {}, - "source": [ - "### 5.4. Extracting and Interpreting the Results\n", - "\n", - "After running all three simulations, we can extract the results to understand how the presence or absence of transmission capacity affects bid acceptances and power flows between zones.\n", - "\n", - "#### Extracting Clearing Prices\n", - "\n", - "The **clearing prices** for each market zone and time period are extracted using the dual variables associated with the energy balance constraints in the optimization model. Specifically, the dual variable of the energy balance constraint for a given zone and time period represents the marginal price of electricity in that zone at that time.\n", - "\n", - "In the `extract_results` function, the following steps are performed to obtain the clearing prices:\n", - "\n", - "1. **Energy Balance Constraints:** For each zone and time period, the energy balance equation ensures that the total supply plus imports minus exports equals the demand.\n", - "2. **Dual Variables:** The dual variable (`model.dual[model.energy_balance[node, t]]`) associated with each energy balance constraint captures the sensitivity of the objective function (total cost) to a marginal increase in demand or supply.\n", - "3. **Clearing Price Interpretation:** The value of the dual variable corresponds to the clearing price in the respective zone and time period, reflecting the cost of supplying an additional unit of electricity.\n", - "\n", - "This method leverages the duality in optimization to efficiently extract market prices resulting from the optimal dispatch of bids under the given constraints." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "bdcc49e7", - "metadata": {}, - "outputs": [], - "source": [ - "def extract_results(model, incidence_matrix):\n", - " nodes = list(incidence_matrix.index)\n", - " lines = list(incidence_matrix.columns)\n", - "\n", - " # Extract accepted bid ratios using a dictionary comprehension\n", - " accepted_bids = {\n", - " o: pyo.value(model.x[o]) for o in model.x if pyo.value(model.x[o]) > 0\n", - " }\n", - "\n", - " # Extract power flows on each line for each time period\n", - " power_flows = [\n", - " {\"time\": t, \"line\": line, \"flow_MW\": pyo.value(model.flows[t, line])}\n", - " for t in model.T\n", - " for line in lines\n", - " if pyo.value(model.flows[t, line]) != 0\n", - " ]\n", - " power_flows_df = pd.DataFrame(power_flows)\n", - "\n", - " # Extract market clearing prices from dual variables\n", - " clearing_prices = [\n", - " {\n", - " \"zone\": node,\n", - " \"time\": t,\n", - " \"clearing_price\": pyo.value(model.dual[model.energy_balance[node, t]]),\n", - " }\n", - " for node in nodes\n", - " for t in model.T\n", - " ]\n", - " clearing_prices_df = pd.DataFrame(clearing_prices)\n", - "\n", - " return accepted_bids, power_flows_df, clearing_prices_df" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "512ed95f", - "metadata": {}, - "outputs": [], - "source": [ - "# Extract results for Simulation 1\n", - "accepted_bids_sim1, power_flows_df_sim1, clearing_prices_df_sim1 = extract_results(\n", - " model_sim1, incidence_matrix\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "7b32b7c3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Simulation 1: Power Flows Between Zones\n" - ] }, { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - "
" - ], - "text/plain": [ - "Empty DataFrame\n", - "Columns: []\n", - "Index: []" + "cell_type": "markdown", + "id": "1756e6e3", + "metadata": { + "id": "1756e6e3" + }, + "source": [ + "**Explanation:**\n", + "\n", + "- **datetime:** Timestamp for each demand value.\n", + "- **demand_north_1, demand_north_2, demand_south:** Demand values for each respective demand unit.\n", + "\n", + "**Note:** The demand timeseries has been designed to be fulfillable by the defined power plants in both zones." ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "print(\"Simulation 1: Power Flows Between Zones\")\n", - "display(power_flows_df_sim1.head())" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "2d386677", - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Simulation 1: Clearing Prices per Zone and Time\n" - ] + "cell_type": "markdown", + "id": "478211c6", + "metadata": { + "id": "478211c6" + }, + "source": [ + "## 5. Reproducing the Market Clearing Process\n", + "\n", + "With the input files prepared, we can now reproduce the market clearing process using the simplified market clearing function. This will help us understand how different market zones interact, how constraints are managed, how bids are assigned, and how market prices are extracted." + ] }, { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
zonetimeclearing_price
0DE_12019-01-01 00:00:009.0
1DE_12019-01-01 01:00:0010.0
2DE_12019-01-01 02:00:0011.0
3DE_12019-01-01 03:00:0012.0
4DE_12019-01-01 04:00:0013.0
\n", - "
" - ], - "text/plain": [ - " zone time clearing_price\n", - "0 DE_1 2019-01-01 00:00:00 9.0\n", - "1 DE_1 2019-01-01 01:00:00 10.0\n", - "2 DE_1 2019-01-01 02:00:00 11.0\n", - "3 DE_1 2019-01-01 03:00:00 12.0\n", - "4 DE_1 2019-01-01 04:00:00 13.0" + "cell_type": "markdown", + "id": "01680700", + "metadata": { + "id": "01680700" + }, + "source": [ + "### 5.1. Calculating the Incidence Matrix\n", + "\n", + "The **Incidence Matrix** represents the connection relationships between different nodes in a network. In the context of market zones, it indicates which transmission lines connect which zones. The incidence matrix is a binary matrix where each element denotes whether a particular node is connected to a line or not. This matrix is essential for understanding the structure of the transmission network and for formulating power flow equations during the market clearing process." ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
zonetimeclearing_price
24DE_22019-01-01 00:00:00100.0
25DE_22019-01-01 01:00:00100.0
26DE_22019-01-01 02:00:00100.0
27DE_22019-01-01 03:00:00100.0
28DE_22019-01-01 04:00:00100.0
\n", - "
" + "cell_type": "code", + "execution_count": 10, + "id": "c9fb8458", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 142 + }, + "cellView": "form", + "id": "c9fb8458", + "outputId": "380d3471-2a05-4cf2-bd37-77b944a6dc98" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Calculated Incidence Matrix between Zones:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " Line_N1_S Line_N2_S Line_N1_N2\n", + "DE_1 1 1 0\n", + "DE_2 -1 -1 0" + ], + "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", + "
Line_N1_SLine_N2_SLine_N1_N2
DE_1110
DE_2-1-10
\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" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "incidence_matrix", + "summary": "{\n \"name\": \"incidence_matrix\",\n \"rows\": 2,\n \"fields\": [\n {\n \"column\": \"Line_N1_S\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1,\n \"min\": -1,\n \"max\": 1,\n \"num_unique_values\": 2,\n \"samples\": [\n -1,\n 1\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Line_N2_S\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1,\n \"min\": -1,\n \"max\": 1,\n \"num_unique_values\": 2,\n \"samples\": [\n -1,\n 1\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Line_N1_N2\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 0,\n \"num_unique_values\": 1,\n \"samples\": [\n 0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {} + } ], - "text/plain": [ - " zone time clearing_price\n", - "24 DE_2 2019-01-01 00:00:00 100.0\n", - "25 DE_2 2019-01-01 01:00:00 100.0\n", - "26 DE_2 2019-01-01 02:00:00 100.0\n", - "27 DE_2 2019-01-01 03:00:00 100.0\n", - "28 DE_2 2019-01-01 04:00:00 100.0" + "source": [ + "# @title Create the incidence matrix\n", + "def create_incidence_matrix(lines, buses, zones_id=None):\n", + " # Determine nodes based on whether we're working with zones or individual buses\n", + " if zones_id:\n", + " nodes = buses[zones_id].unique() # Use zones as nodes\n", + " node_mapping = buses[zones_id].to_dict() # Map bus IDs to zones\n", + " else:\n", + " nodes = buses.index.values # Use buses as nodes\n", + " node_mapping = {bus: bus for bus in nodes} # Identity mapping for buses\n", + "\n", + " # Use the line indices as columns for the incidence matrix\n", + " line_indices = lines.index.values\n", + "\n", + " # Initialize incidence matrix as a DataFrame for easier label-based indexing\n", + " incidence_matrix = pd.DataFrame(0, index=nodes, columns=line_indices)\n", + "\n", + " # Fill in the incidence matrix by iterating over lines\n", + " for line_idx, line in lines.iterrows():\n", + " bus0 = line[\"bus0\"]\n", + " bus1 = line[\"bus1\"]\n", + "\n", + " # Retrieve mapped nodes (zones or buses)\n", + " node0 = node_mapping.get(bus0)\n", + " node1 = node_mapping.get(bus1)\n", + "\n", + " # Ensure both nodes are valid and part of the defined nodes\n", + " if (\n", + " node0 is not None\n", + " and node1 is not None\n", + " and node0 in nodes\n", + " and node1 in nodes\n", + " ):\n", + " if node0 != node1: # Only create incidence for different nodes\n", + " # Set incidence values: +1 for the \"from\" node and -1 for the \"to\" node\n", + " incidence_matrix.at[node0, line_idx] = (\n", + " 1 # Outgoing from bus0 (or zone0)\n", + " )\n", + " incidence_matrix.at[node1, line_idx] = -1 # Incoming to bus1 (or zone1)\n", + "\n", + " # Return the incidence matrix as a DataFrame\n", + " return incidence_matrix\n", + "\n", + "\n", + "# Calculate the incidence matrix\n", + "incidence_matrix = create_incidence_matrix(lines, buses, \"zone_id\")\n", + "\n", + "print(\"Calculated Incidence Matrix between Zones:\")\n", + "display(incidence_matrix)" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "print(\"Simulation 1: Clearing Prices per Zone and Time\")\n", - "display(clearing_prices_df_sim1.loc[clearing_prices_df_sim1[\"zone\"] == \"DE_1\"].head())\n", - "display(clearing_prices_df_sim1.loc[clearing_prices_df_sim1[\"zone\"] == \"DE_2\"].head())" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "d8327407", - "metadata": {}, - "outputs": [], - "source": [ - "# Extract results for Simulation 2\n", - "accepted_bids_sim2, power_flows_df_sim2, clearing_prices_df_sim2 = extract_results(\n", - " model_sim2, incidence_matrix\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "9b5fc1de", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Simulation 2: Power Flows Between Zones\n" - ] }, { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
timelineflow_MW
02019-01-01 00:00:00Line_N1_S-3000.0
12019-01-01 00:00:00Line_N2_S-3000.0
22019-01-01 00:00:00Line_N1_N2-3000.0
32019-01-01 01:00:00Line_N1_S-3000.0
42019-01-01 01:00:00Line_N2_S-3000.0
\n", - "
" - ], - "text/plain": [ - " time line flow_MW\n", - "0 2019-01-01 00:00:00 Line_N1_S -3000.0\n", - "1 2019-01-01 00:00:00 Line_N2_S -3000.0\n", - "2 2019-01-01 00:00:00 Line_N1_N2 -3000.0\n", - "3 2019-01-01 01:00:00 Line_N1_S -3000.0\n", - "4 2019-01-01 01:00:00 Line_N2_S -3000.0" + "cell_type": "markdown", + "id": "61e9050c", + "metadata": { + "id": "61e9050c" + }, + "source": [ + "**Explanation:**\n", + "\n", + "- **Nodes (Zones):** Extracted from the `buses` DataFrame (`DE_1` and `DE_2`).\n", + "- **Transmission Lines:** Iterated over to sum their capacities between different zones.\n", + "- **Bidirectional Flow Assumption:** Transmission capacities are added in both directions (`DE_1 -> DE_2` and `DE_2 -> DE_1`).\n", + "- **Lower Triangle Negative Values:** To indicate the opposite direction of power flow, capacities in the lower triangle of the matrix are converted to negative values." ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "print(\"Simulation 2: Power Flows Between Zones\")\n", - "display(power_flows_df_sim2.head())" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "b7c5d148", - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Simulation 2: Clearing Prices per Zone and Time\n" - ] + "cell_type": "markdown", + "id": "12ccae5f", + "metadata": { + "id": "12ccae5f" + }, + "source": [ + "### 5.2. Creating and Mapping Market Orders\n", + "\n", + "We will construct a dictionary of market orders representing supply and demand bids from power plants and demand units.\n", + "The orders include details such as price, volume, location (node), and time. Once the orders are generated, they will be\n", + "mapped from nodes to corresponding zones using a pre-defined node-to-zone mapping." + ] }, { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
zonetimeclearing_price
0DE_12019-01-01 00:00:0015.0
1DE_12019-01-01 01:00:0016.0
2DE_12019-01-01 02:00:0017.0
3DE_12019-01-01 03:00:0018.0
4DE_12019-01-01 04:00:0019.0
\n", - "
" + "cell_type": "code", + "execution_count": 11, + "id": "4f7366ae", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 225 + }, + "cellView": "form", + "id": "4f7366ae", + "outputId": "1c291cb1-8e7b-4e36-cce9-ddd00735225d" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + "Sample Supply Order:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "{'price': 5,\n", + " 'volume': 1000.0,\n", + " 'node': 'north_1',\n", + " 'time': Timestamp('2019-01-01 00:00:00')}" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + "Sample Demand Order:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "{'price': 100,\n", + " 'volume': -2400,\n", + " 'node': 'north_1',\n", + " 'time': Timestamp('2019-01-01 00:00:00')}" + ] + }, + "metadata": {} + } ], - "text/plain": [ - " zone time clearing_price\n", - "0 DE_1 2019-01-01 00:00:00 15.0\n", - "1 DE_1 2019-01-01 01:00:00 16.0\n", - "2 DE_1 2019-01-01 02:00:00 17.0\n", - "3 DE_1 2019-01-01 03:00:00 18.0\n", - "4 DE_1 2019-01-01 04:00:00 19.0" + "source": [ + "# @title Construct Orders and Map Nodes to Zones\n", + "# Initialize orders dictionary\n", + "orders = {}\n", + "\n", + "# Add power plant bids\n", + "for _, row in powerplant_units.iterrows():\n", + " bid_id = row[\"name\"]\n", + " for timestamp in demand_df.index:\n", + " orders[f\"{bid_id}_{timestamp}\"] = {\n", + " \"price\": row[\"additional_cost\"], # Assuming additional_cost as bid price\n", + " \"volume\": row[\"max_power\"], # Assuming max_power as bid volume\n", + " \"node\": row[\"node\"],\n", + " \"time\": timestamp,\n", + " }\n", + "\n", + "# Add demand bids\n", + "for _, row in demand_units.iterrows():\n", + " bid_id = row[\"name\"]\n", + " for timestamp in demand_df.index:\n", + " orders[f\"{bid_id}_{timestamp}\"] = {\n", + " \"price\": 100, # Demand bids with high price\n", + " \"volume\": -demand_df.loc[\n", + " timestamp, row[\"name\"]\n", + " ], # Negative volume for demand\n", + " \"node\": row[\"node\"],\n", + " \"time\": timestamp,\n", + " }\n", + "\n", + "# Display a sample order\n", + "print(\"\\nSample Supply Order:\")\n", + "display(orders[\"Unit 1_2019-01-01 00:00:00\"])\n", + "\n", + "print(\"\\nSample Demand Order:\")\n", + "display(orders[\"demand_north_1_2019-01-01 00:00:00\"])" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
zonetimeclearing_price
24DE_22019-01-01 00:00:0031.0
25DE_22019-01-01 01:00:0030.0
26DE_22019-01-01 02:00:0030.0
27DE_22019-01-01 03:00:0029.0
28DE_22019-01-01 04:00:0029.0
\n", - "
" + "cell_type": "code", + "execution_count": 12, + "id": "e8b8a17f", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 224 + }, + "cellView": "form", + "id": "e8b8a17f", + "outputId": "ae3db259-f2e7-4b60-91b1-ca130140fb30" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Mapped Orders:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " price volume node time\n", + "Unit 1_2019-01-01 00:00:00 5 1000.0 DE_1 2019-01-01 00:00:00\n", + "Unit 1_2019-01-01 01:00:00 5 1000.0 DE_1 2019-01-01 01:00:00\n", + "Unit 1_2019-01-01 02:00:00 5 1000.0 DE_1 2019-01-01 02:00:00\n", + "Unit 1_2019-01-01 03:00:00 5 1000.0 DE_1 2019-01-01 03:00:00\n", + "Unit 1_2019-01-01 04:00:00 5 1000.0 DE_1 2019-01-01 04:00:00" + ], + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
pricevolumenodetime
Unit 1_2019-01-01 00:00:0051000.0DE_12019-01-01 00:00:00
Unit 1_2019-01-01 01:00:0051000.0DE_12019-01-01 01:00:00
Unit 1_2019-01-01 02:00:0051000.0DE_12019-01-01 02:00:00
Unit 1_2019-01-01 03:00:0051000.0DE_12019-01-01 03:00:00
Unit 1_2019-01-01 04:00:0051000.0DE_12019-01-01 04:00:00
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"display(pd\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"price\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": 5,\n \"max\": 5,\n \"num_unique_values\": 1,\n \"samples\": [\n 5\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"volume\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": 1000.0,\n \"max\": 1000.0,\n \"num_unique_values\": 1,\n \"samples\": [\n 1000.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"node\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"DE_1\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"time\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2019-01-01 00:00:00\",\n \"max\": \"2019-01-01 04:00:00\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"2019-01-01 01:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {} + } ], - "text/plain": [ - " zone time clearing_price\n", - "24 DE_2 2019-01-01 00:00:00 31.0\n", - "25 DE_2 2019-01-01 01:00:00 30.0\n", - "26 DE_2 2019-01-01 02:00:00 30.0\n", - "27 DE_2 2019-01-01 03:00:00 29.0\n", - "28 DE_2 2019-01-01 04:00:00 29.0" + "source": [ + "# @title Map the orders to zones\n", + "# Create a mapping from node_id to zone_id\n", + "node_mapping = buses[\"zone_id\"].to_dict()\n", + "\n", + "# Create a new dictionary with mapped zone IDs\n", + "orders_mapped = {}\n", + "for bid_id, bid in orders.items():\n", + " original_node = bid[\"node\"]\n", + " mapped_zone = node_mapping.get(\n", + " original_node, original_node\n", + " ) # Default to original_node if not found\n", + " orders_mapped[bid_id] = {\n", + " \"price\": bid[\"price\"],\n", + " \"volume\": bid[\"volume\"],\n", + " \"node\": mapped_zone, # Replace bus with zone ID\n", + " \"time\": bid[\"time\"],\n", + " }\n", + "\n", + "# Display the mapped orders\n", + "print(\"Mapped Orders:\")\n", + "display(pd.DataFrame(orders_mapped).T.head())" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "print(\"Simulation 2: Clearing Prices per Zone and Time\")\n", - "display(clearing_prices_df_sim2.loc[clearing_prices_df_sim2[\"zone\"] == \"DE_1\"].head())\n", - "display(clearing_prices_df_sim2.loc[clearing_prices_df_sim2[\"zone\"] == \"DE_2\"].head())" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "7f850cf5", - "metadata": {}, - "outputs": [], - "source": [ - "# Extract results for Simulation 3\n", - "accepted_bids_sim3, power_flows_df_sim3, clearing_prices_df_sim3 = extract_results(\n", - " model_sim3, incidence_matrix\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "3b2528a2", - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Simulation 3: Power Flows Between Zones\n" - ] + "cell_type": "markdown", + "id": "1a5d589c", + "metadata": { + "id": "1a5d589c" + }, + "source": [ + "**Explanation:**\n", + "\n", + "- **Power Plant Bids:** Each power plant unit submits a bid for each time period with its `additional_cost` as the bid price and `max_power` as the bid volume.\n", + "- **Demand Bids:** Each demand unit submits a bid for each time period with a high price (set to 100) and a negative volume representing the demand.\n", + "- **Node to Zone Mapping:** After creating the bids, the node information is mapped to corresponding zones for further market clearing steps.\n", + " The mapping uses a pre-defined dictionary (`node_mapping`) to replace each node ID with the corresponding zone ID. In ASSUME, this mapping happens automatically on the market side, but we are simulating it here for educational purposes." + ] }, { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
timelineflow_MW
02019-01-01 00:00:00Line_N1_S-5000.0
12019-01-01 00:00:00Line_N2_S-5000.0
22019-01-01 00:00:00Line_N1_N2-5000.0
32019-01-01 01:00:00Line_N1_S-4400.0
42019-01-01 01:00:00Line_N2_S-5000.0
\n", - "
" - ], - "text/plain": [ - " time line flow_MW\n", - "0 2019-01-01 00:00:00 Line_N1_S -5000.0\n", - "1 2019-01-01 00:00:00 Line_N2_S -5000.0\n", - "2 2019-01-01 00:00:00 Line_N1_N2 -5000.0\n", - "3 2019-01-01 01:00:00 Line_N1_S -4400.0\n", - "4 2019-01-01 01:00:00 Line_N2_S -5000.0" + "cell_type": "markdown", + "id": "f11b487c", + "metadata": { + "id": "f11b487c" + }, + "source": [ + "### 5.3. Running the Market Clearing Simulation\n", + "\n", + "We will conduct three simulations:\n", + "\n", + "1. **Simulation 1:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **zero**.\n", + "2. **Simulation 2:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **medium**.\n", + "3. **Simulation 3:** Transmission capacities between `DE_1` (north) and `DE_2` (south) are **high**." ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "print(\"Simulation 3: Power Flows Between Zones\")\n", - "display(power_flows_df_sim3.head())" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "05961462", - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Simulation 3: Clearing Prices per Zone and Time\n" - ] + "cell_type": "markdown", + "id": "07082c73", + "metadata": { + "id": "07082c73" + }, + "source": [ + "#### Simulation 1: Zero Transmission Capacity Between Zones" + ] }, { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
zonetimeclearing_price
0DE_12019-01-01 00:00:0019.0
1DE_12019-01-01 01:00:0027.0
2DE_12019-01-01 02:00:0027.0
3DE_12019-01-01 03:00:0027.0
4DE_12019-01-01 04:00:0027.0
\n", - "
" + "cell_type": "code", + "execution_count": 36, + "id": "1c7dfee2", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 210 + }, + "id": "1c7dfee2", + "outputId": "86090b82-98e1-4d3b-bb1b-74b3c1c37e43" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "### Simulation 1: Zero Transmission Capacity Between Zones\n", + "Transmission Lines for Simulation 1:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " bus0 bus1 s_nom x r\n", + "name \n", + "Line_N1_S north_1 south 0 0.01 0.001\n", + "Line_N2_S north_2 south 0 0.01 0.001\n", + "Line_N1_N2 north_1 north_2 0 0.01 0.001" + ], + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
bus0bus1s_nomxr
name
Line_N1_Snorth_1south00.010.001
Line_N2_Snorth_2south00.010.001
Line_N1_N2north_1north_200.010.001
\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" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "lines_sim1", + "summary": "{\n \"name\": \"lines_sim1\",\n \"rows\": 3,\n \"fields\": [\n {\n \"column\": \"name\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"Line_N1_S\",\n \"Line_N2_S\",\n \"Line_N1_N2\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"bus0\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"north_2\",\n \"north_1\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"bus1\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"north_2\",\n \"south\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"s_nom\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 0,\n \"num_unique_values\": 1,\n \"samples\": [\n 0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"x\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 0.01,\n \"max\": 0.01,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.01\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"r\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 0.001,\n \"max\": 0.001,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.001\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {} + } ], - "text/plain": [ - " zone time clearing_price\n", - "0 DE_1 2019-01-01 00:00:00 19.0\n", - "1 DE_1 2019-01-01 01:00:00 27.0\n", - "2 DE_1 2019-01-01 02:00:00 27.0\n", - "3 DE_1 2019-01-01 03:00:00 27.0\n", - "4 DE_1 2019-01-01 04:00:00 27.0" + "source": [ + "print(\"### Simulation 1: Zero Transmission Capacity Between Zones\")\n", + "\n", + "lines_sim1 = lines.copy()\n", + "lines_sim1[\"s_nom\"] = 0 # Set transmission capacity to zero for all lines\n", + "\n", + "print(\"Transmission Lines for Simulation 1:\")\n", + "display(lines_sim1)\n", + "\n", + "# Run the simplified market clearing for Simulation 1\n", + "model_sim1, results_sim1 = simplified_market_clearing_opt(\n", + " orders=orders_mapped,\n", + " incidence_matrix=incidence_matrix,\n", + " lines=lines_sim1,\n", + ")" ] - }, - "metadata": {}, - "output_type": "display_data" }, { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
zonetimeclearing_price
24DE_22019-01-01 00:00:0027.0
25DE_22019-01-01 01:00:0027.0
26DE_22019-01-01 02:00:0027.0
27DE_22019-01-01 03:00:0027.0
28DE_22019-01-01 04:00:0027.0
\n", - "
" - ], - "text/plain": [ - " zone time clearing_price\n", - "24 DE_2 2019-01-01 00:00:00 27.0\n", - "25 DE_2 2019-01-01 01:00:00 27.0\n", - "26 DE_2 2019-01-01 02:00:00 27.0\n", - "27 DE_2 2019-01-01 03:00:00 27.0\n", - "28 DE_2 2019-01-01 04:00:00 27.0" + "cell_type": "markdown", + "id": "aef7c083", + "metadata": { + "id": "aef7c083" + }, + "source": [ + "#### Simulation 2: Medium Transmission Capacity Between Zones" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "print(\"Simulation 3: Clearing Prices per Zone and Time\")\n", - "display(clearing_prices_df_sim3.loc[clearing_prices_df_sim3[\"zone\"] == \"DE_1\"].head())\n", - "display(clearing_prices_df_sim3.loc[clearing_prices_df_sim3[\"zone\"] == \"DE_2\"].head())" - ] - }, - { - "cell_type": "markdown", - "id": "fb62e2fd", - "metadata": {}, - "source": [ - "**Explanation:**\n", - "\n", - "- **Accepted Bids:** Shows which bids were accepted in each simulation and the ratio at which they were accepted.\n", - "- **Power Flows:** Indicates the amount of energy transmitted between zones. In Simulation 1, with zero transmission capacity, there should be no power flows between `DE_1` and `DE_2`. In Simulation 2 and 3, with medium and high transmission capacities, power flows can occur between zones.\n", - "- **Clearing Prices:** Represents the average bid price in each zone at each time period. Comparing prices across simulations can reveal the impact of transmission capacity on market prices." - ] - }, - { - "cell_type": "markdown", - "id": "3dbd64e0", - "metadata": {}, - "source": [ - "### 5.5. Comparing Simulations\n", - "\n", - "To better understand the impact of transmission capacity, let's compare the key results from all three simulations." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "0ffe7033", - "metadata": {}, - "outputs": [ + }, { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "line": { - "dash": "dash" - }, - "mode": "lines", - "name": "DE_1 - Sim1 (Zero Capacity)", - "type": "scatter", - "x": [ - "2019-01-01T00:00:00", - "2019-01-01T01:00:00", - "2019-01-01T02:00:00", - "2019-01-01T03:00:00", - "2019-01-01T04:00:00", - "2019-01-01T05:00:00", - "2019-01-01T06:00:00", - "2019-01-01T07:00:00", - "2019-01-01T08:00:00", - "2019-01-01T09:00:00", - "2019-01-01T10:00:00", - "2019-01-01T11:00:00", - "2019-01-01T12:00:00", - "2019-01-01T13:00:00", - "2019-01-01T14:00:00", - "2019-01-01T15:00:00", - "2019-01-01T16:00:00", - "2019-01-01T17:00:00", - "2019-01-01T18:00:00", - "2019-01-01T19:00:00", - "2019-01-01T20:00:00", - "2019-01-01T21:00:00", - "2019-01-01T22:00:00", - "2019-01-01T23:00:00" - ], - "y": [ - 9, - 10, - 11, - 12, - 13, - 13, - 14, - 15, - 16, - 17, - 17, - 18, - 19, - 100, - 100, - 100, - 100, - 100, - 100, - 100, - 100, - 100, - 100, - 100 - ] + "cell_type": "code", + "execution_count": 15, + "id": "86304253", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 210 }, + "id": "86304253", + "outputId": "3fa73e8b-d0e3-4fe8-d88c-1a896fb3e1ff" + }, + "outputs": [ { - "line": { - "dash": "dot" - }, - "mode": "lines", - "name": "DE_1 - Sim2 (Medium Capacity)", - "type": "scatter", - "x": [ - "2019-01-01T00:00:00", - "2019-01-01T01:00:00", - "2019-01-01T02:00:00", - "2019-01-01T03:00:00", - "2019-01-01T04:00:00", - "2019-01-01T05:00:00", - "2019-01-01T06:00:00", - "2019-01-01T07:00:00", - "2019-01-01T08:00:00", - "2019-01-01T09:00:00", - "2019-01-01T10:00:00", - "2019-01-01T11:00:00", - "2019-01-01T12:00:00", - "2019-01-01T13:00:00", - "2019-01-01T14:00:00", - "2019-01-01T15:00:00", - "2019-01-01T16:00:00", - "2019-01-01T17:00:00", - "2019-01-01T18:00:00", - "2019-01-01T19:00:00", - "2019-01-01T20:00:00", - "2019-01-01T21:00:00", - "2019-01-01T22:00:00", - "2019-01-01T23:00:00" - ], - "y": [ - 15, - 16, - 17, - 18, - 19, - 19, - 28, - 28, - 28, - 29, - 29, - 29, - 29, - 29, - 29, - 30, - 30, - 30, - 30, - 31, - 31, - 100, - 100, - 100 - ] + "output_type": "stream", + "name": "stdout", + "text": [ + "### Simulation 2: Medium Transmission Capacity Between Zones\n", + "Transmission Lines for Simulation 2:\n" + ] }, { - "line": { - "dash": "solid" - }, - "mode": "lines", - "name": "DE_1 - Sim3 (High Capacity)", - "type": "scatter", - "x": [ - "2019-01-01T00:00:00", - "2019-01-01T01:00:00", - "2019-01-01T02:00:00", - "2019-01-01T03:00:00", - "2019-01-01T04:00:00", - "2019-01-01T05:00:00", - "2019-01-01T06:00:00", - "2019-01-01T07:00:00", - "2019-01-01T08:00:00", - "2019-01-01T09:00:00", - "2019-01-01T10:00:00", - "2019-01-01T11:00:00", - "2019-01-01T12:00:00", - "2019-01-01T13:00:00", - "2019-01-01T14:00:00", - "2019-01-01T15:00:00", - "2019-01-01T16:00:00", - "2019-01-01T17:00:00", - "2019-01-01T18:00:00", - "2019-01-01T19:00:00", - "2019-01-01T20:00:00", - "2019-01-01T21:00:00", - "2019-01-01T22:00:00", - "2019-01-01T23:00:00" - ], - "y": [ - 19, - 27, - 27, - 27, - 27, - 28, - 28, - 28, - 28, - 29, - 29, - 29, - 29, - 29, - 29, - 30, - 30, - 30, - 30, - 31, - 31, - 31, - 31, - 31 - ] + "output_type": "display_data", + "data": { + "text/plain": [ + " bus0 bus1 s_nom x r\n", + "name \n", + "Line_N1_S north_1 south 3000.0 0.01 0.001\n", + "Line_N2_S north_2 south 3000.0 0.01 0.001\n", + "Line_N1_N2 north_1 north_2 3000.0 0.01 0.001" + ], + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
bus0bus1s_nomxr
name
Line_N1_Snorth_1south3000.00.010.001
Line_N2_Snorth_2south3000.00.010.001
Line_N1_N2north_1north_23000.00.010.001
\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" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "lines_sim2", + "summary": "{\n \"name\": \"lines_sim2\",\n \"rows\": 3,\n \"fields\": [\n {\n \"column\": \"name\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"Line_N1_S\",\n \"Line_N2_S\",\n \"Line_N1_N2\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"bus0\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"north_2\",\n \"north_1\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"bus1\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"north_2\",\n \"south\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"s_nom\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 3000.0,\n \"max\": 3000.0,\n \"num_unique_values\": 1,\n \"samples\": [\n 3000.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"x\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 0.01,\n \"max\": 0.01,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.01\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"r\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 0.001,\n \"max\": 0.001,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.001\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {} + } + ], + "source": [ + "print(\"### Simulation 2: Medium Transmission Capacity Between Zones\")\n", + "\n", + "# Define the lines for Simulation 2 with medium transmission capacity\n", + "lines_sim2 = lines.copy()\n", + "lines_sim2[\"s_nom\"] = 3000.0 # Set transmission capacity to 3000 MW for all lines\n", + "\n", + "# Display the incidence matrix for Simulation 2\n", + "print(\"Transmission Lines for Simulation 2:\")\n", + "display(lines_sim2)\n", + "\n", + "# Run the simplified market clearing for Simulation 2\n", + "model_sim2, results_sim2 = simplified_market_clearing_opt(\n", + " orders=orders_mapped,\n", + " incidence_matrix=incidence_matrix,\n", + " lines=lines_sim2,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "5c721991", + "metadata": { + "id": "5c721991" + }, + "source": [ + "#### Simulation 3: High Transmission Capacity Between Zones" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "a1c7f344", + "metadata": { + "lines_to_end_of_cell_marker": 0, + "lines_to_next_cell": 1, + "colab": { + "base_uri": "https://localhost:8080/", + "height": 210 }, + "id": "a1c7f344", + "outputId": "78e208e2-81f7-4678-9adc-bbdddd2802ea" + }, + "outputs": [ { - "line": { - "dash": "dash" - }, - "mode": "lines", - "name": "DE_2 - Sim1 (Zero Capacity)", - "type": "scatter", - "x": [ - "2019-01-01T00:00:00", - "2019-01-01T01:00:00", - "2019-01-01T02:00:00", - "2019-01-01T03:00:00", - "2019-01-01T04:00:00", - "2019-01-01T05:00:00", - "2019-01-01T06:00:00", - "2019-01-01T07:00:00", - "2019-01-01T08:00:00", - "2019-01-01T09:00:00", - "2019-01-01T10:00:00", - "2019-01-01T11:00:00", - "2019-01-01T12:00:00", - "2019-01-01T13:00:00", - "2019-01-01T14:00:00", - "2019-01-01T15:00:00", - "2019-01-01T16:00:00", - "2019-01-01T17:00:00", - "2019-01-01T18:00:00", - "2019-01-01T19:00:00", - "2019-01-01T20:00:00", - "2019-01-01T21:00:00", - "2019-01-01T22:00:00", - "2019-01-01T23:00:00" - ], - "y": [ - 100, - 100, - 100, - 100, - 100, - 34, - 33, - 33, - 32, - 32, - 31, - 30, - 30, - 29, - 29, - 28, - 27, - 27, - 26, - 26, - 25, - 24, - 24, - 23 - ] + "output_type": "stream", + "name": "stdout", + "text": [ + "### Simulation 3: High Transmission Capacity Between Zones\n", + "Transmission Lines for Simulation 3:\n" + ] }, { - "line": { - "dash": "dot" - }, - "mode": "lines", - "name": "DE_2 - Sim2 (Medium Capacity)", - "type": "scatter", - "x": [ - "2019-01-01T00:00:00", - "2019-01-01T01:00:00", - "2019-01-01T02:00:00", - "2019-01-01T03:00:00", - "2019-01-01T04:00:00", - "2019-01-01T05:00:00", - "2019-01-01T06:00:00", - "2019-01-01T07:00:00", - "2019-01-01T08:00:00", - "2019-01-01T09:00:00", - "2019-01-01T10:00:00", - "2019-01-01T11:00:00", - "2019-01-01T12:00:00", - "2019-01-01T13:00:00", - "2019-01-01T14:00:00", - "2019-01-01T15:00:00", - "2019-01-01T16:00:00", - "2019-01-01T17:00:00", - "2019-01-01T18:00:00", - "2019-01-01T19:00:00", - "2019-01-01T20:00:00", - "2019-01-01T21:00:00", - "2019-01-01T22:00:00", - "2019-01-01T23:00:00" - ], - "y": [ - 31, - 30, - 30, - 29, - 29, - 28, - 28, - 28, - 28, - 29, - 29, - 29, - 29, - 29, - 29, - 30, - 30, - 30, - 30, - 31, - 31, - 30, - 30, - 29 - ] + "output_type": "display_data", + "data": { + "text/plain": [ + " bus0 bus1 s_nom x r\n", + "name \n", + "Line_N1_S north_1 south 5000.0 0.01 0.001\n", + "Line_N2_S north_2 south 5000.0 0.01 0.001\n", + "Line_N1_N2 north_1 north_2 5000.0 0.01 0.001" + ], + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
bus0bus1s_nomxr
name
Line_N1_Snorth_1south5000.00.010.001
Line_N2_Snorth_2south5000.00.010.001
Line_N1_N2north_1north_25000.00.010.001
\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" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "lines_sim3", + "summary": "{\n \"name\": \"lines_sim3\",\n \"rows\": 3,\n \"fields\": [\n {\n \"column\": \"name\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"Line_N1_S\",\n \"Line_N2_S\",\n \"Line_N1_N2\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"bus0\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"north_2\",\n \"north_1\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"bus1\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"north_2\",\n \"south\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"s_nom\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 5000.0,\n \"max\": 5000.0,\n \"num_unique_values\": 1,\n \"samples\": [\n 5000.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"x\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 0.01,\n \"max\": 0.01,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.01\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"r\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 0.001,\n \"max\": 0.001,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.001\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {} + } + ], + "source": [ + "print(\"### Simulation 3: High Transmission Capacity Between Zones\")\n", + "\n", + "# Define the lines for Simulation 3 with high transmission capacity\n", + "lines_sim3 = lines.copy()\n", + "lines_sim3[\"s_nom\"] = 5000.0 # Set transmission capacity to 5000 MW for all lines\n", + "\n", + "# Display the line capacities for Simulation 3\n", + "print(\"Transmission Lines for Simulation 3:\")\n", + "display(lines_sim3)\n", + "\n", + "# Run the simplified market clearing for Simulation 3\n", + "model_sim3, results_sim3 = simplified_market_clearing_opt(\n", + " orders=orders_mapped,\n", + " incidence_matrix=incidence_matrix,\n", + " lines=lines_sim3,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "661e6c30", + "metadata": { + "id": "661e6c30" + }, + "source": [ + "### 5.4. Extracting and Interpreting the Results\n", + "\n", + "After running all three simulations, we can extract the results to understand how the presence or absence of transmission capacity affects bid acceptances and power flows between zones.\n", + "\n", + "#### Extracting Clearing Prices\n", + "\n", + "The **clearing prices** for each market zone and time period are extracted using the dual variables associated with the energy balance constraints in the optimization model. Specifically, the dual variable of the energy balance constraint for a given zone and time period represents the marginal price of electricity in that zone at that time.\n", + "\n", + "In the `extract_results` function, the following steps are performed to obtain the clearing prices:\n", + "\n", + "1. **Energy Balance Constraints:** For each zone and time period, the energy balance equation ensures that the total supply plus imports minus exports equals the demand.\n", + "2. **Dual Variables:** The dual variable (`model.dual[model.energy_balance[node, t]]`) associated with each energy balance constraint captures the sensitivity of the objective function (total cost) to a marginal increase in demand or supply.\n", + "3. **Clearing Price Interpretation:** The value of the dual variable corresponds to the clearing price in the respective zone and time period, reflecting the cost of supplying an additional unit of electricity.\n", + "\n", + "This method leverages the duality in optimization to efficiently extract market prices resulting from the optimal dispatch of bids under the given constraints." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "bdcc49e7", + "metadata": { + "cellView": "form", + "id": "bdcc49e7" + }, + "outputs": [], + "source": [ + "# @title Function to extract market clearing results from the optimization model\n", + "def extract_results(model, incidence_matrix):\n", + " nodes = list(incidence_matrix.index)\n", + " lines = list(incidence_matrix.columns)\n", + "\n", + " # Extract accepted bid ratios using a dictionary comprehension\n", + " accepted_bids = {\n", + " o: pyo.value(model.x[o]) for o in model.x if pyo.value(model.x[o]) > 0\n", + " }\n", + "\n", + " # Extract power flows on each line for each time period\n", + " power_flows = [\n", + " {\"time\": t, \"line\": line, \"flow_MW\": pyo.value(model.flows[t, line])}\n", + " for t in model.T\n", + " for line in lines\n", + " if pyo.value(model.flows[t, line]) != 0\n", + " ]\n", + " power_flows_df = pd.DataFrame(power_flows)\n", + "\n", + " # Extract market clearing prices from dual variables\n", + " clearing_prices = [\n", + " {\n", + " \"zone\": node,\n", + " \"time\": t,\n", + " \"clearing_price\": pyo.value(model.dual[model.energy_balance[node, t]]),\n", + " }\n", + " for node in nodes\n", + " for t in model.T\n", + " ]\n", + " clearing_prices_df = pd.DataFrame(clearing_prices)\n", + "\n", + " return accepted_bids, power_flows_df, clearing_prices_df" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "512ed95f", + "metadata": { + "id": "512ed95f" + }, + "outputs": [], + "source": [ + "# Extract results for Simulation 1\n", + "accepted_bids_sim1, power_flows_df_sim1, clearing_prices_df_sim1 = extract_results(\n", + " model_sim1, incidence_matrix\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "7b32b7c3", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 }, + "id": "7b32b7c3", + "outputId": "7d56dd2f-8ab9-4a95-df0b-dbd6aac660e4" + }, + "outputs": [ { - "line": { - "dash": "solid" - }, - "mode": "lines", - "name": "DE_2 - Sim3 (High Capacity)", - "type": "scatter", - "x": [ - "2019-01-01T00:00:00", - "2019-01-01T01:00:00", - "2019-01-01T02:00:00", - "2019-01-01T03:00:00", - "2019-01-01T04:00:00", - "2019-01-01T05:00:00", - "2019-01-01T06:00:00", - "2019-01-01T07:00:00", - "2019-01-01T08:00:00", - "2019-01-01T09:00:00", - "2019-01-01T10:00:00", - "2019-01-01T11:00:00", - "2019-01-01T12:00:00", - "2019-01-01T13:00:00", - "2019-01-01T14:00:00", - "2019-01-01T15:00:00", - "2019-01-01T16:00:00", - "2019-01-01T17:00:00", - "2019-01-01T18:00:00", - "2019-01-01T19:00:00", - "2019-01-01T20:00:00", - "2019-01-01T21:00:00", - "2019-01-01T22:00:00", - "2019-01-01T23:00:00" - ], - "y": [ - 27, - 27, - 27, - 27, - 27, - 28, - 28, - 28, - 28, - 29, - 29, - 29, - 29, - 29, - 29, - 30, - 30, - 30, - 30, - 31, - 31, - 31, - 31, - 31 - ] - } - ], - "layout": { - "height": 600, - "hovermode": "x unified", - "legend": { - "title": { - "text": "Simulations" - } + "output_type": "stream", + "name": "stdout", + "text": [ + "Simulation 1: Power Flows Between Zones\n" + ] }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "#C8D4E3", - "linecolor": "#C8D4E3", - "minorgridcolor": "#C8D4E3", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "#C8D4E3", - "linecolor": "#C8D4E3", - "minorgridcolor": "#C8D4E3", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Empty DataFrame\n", + "Columns: []\n", + "Index: []" ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + "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" ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"display(power_flows_df_sim1\",\n \"rows\": 0,\n \"fields\": []\n}" + } + }, + "metadata": {} + } + ], + "source": [ + "print(\"Simulation 1: Power Flows Between Zones\")\n", + "display(power_flows_df_sim1.head())" + ] + }, + { + "cell_type": "markdown", + "source": [ + "As it is to be expected, there are no flows printed since there is no transfer capacity available." + ], + "metadata": { + "id": "Q37fGve_m7sf" + }, + "id": "Q37fGve_m7sf" + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "2d386677", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 413 + }, + "id": "2d386677", + "outputId": "7062cc2c-e168-45a6-9294-5ea193ad78c2" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Simulation 1: Clearing Prices per Zone and Time\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " zone time clearing_price\n", + "0 DE_1 2019-01-01 00:00:00 9.0\n", + "1 DE_1 2019-01-01 01:00:00 10.0\n", + "2 DE_1 2019-01-01 02:00:00 11.0\n", + "3 DE_1 2019-01-01 03:00:00 12.0\n", + "4 DE_1 2019-01-01 04:00:00 12.0" ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
zonetimeclearing_price
0DE_12019-01-01 00:00:009.0
1DE_12019-01-01 01:00:0010.0
2DE_12019-01-01 02:00:0011.0
3DE_12019-01-01 03:00:0012.0
4DE_12019-01-01 04:00:0012.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"display(clearing_prices_df_sim1\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"zone\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"DE_1\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"time\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2019-01-01 00:00:00\",\n \"max\": \"2019-01-01 04:00:00\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"2019-01-01 01:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"clearing_price\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.3038404810405297,\n \"min\": 9.0,\n \"max\": 12.0,\n \"num_unique_values\": 4,\n \"samples\": [\n 10.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " zone time clearing_price\n", + "24 DE_2 2019-01-01 00:00:00 100.0\n", + "25 DE_2 2019-01-01 01:00:00 100.0\n", + "26 DE_2 2019-01-01 02:00:00 100.0\n", + "27 DE_2 2019-01-01 03:00:00 100.0\n", + "28 DE_2 2019-01-01 04:00:00 100.0" ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
zonetimeclearing_price
24DE_22019-01-01 00:00:00100.0
25DE_22019-01-01 01:00:00100.0
26DE_22019-01-01 02:00:00100.0
27DE_22019-01-01 03:00:00100.0
28DE_22019-01-01 04:00:00100.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"display(clearing_prices_df_sim1\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"zone\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"DE_2\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"time\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2019-01-01 00:00:00\",\n \"max\": \"2019-01-01 04:00:00\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"2019-01-01 01:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"clearing_price\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 100.0,\n \"max\": 100.0,\n \"num_unique_values\": 1,\n \"samples\": [\n 100.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" + "metadata": {} + } + ], + "source": [ + "print(\"Simulation 1: Clearing Prices per Zone and Time\")\n", + "display(clearing_prices_df_sim1.loc[clearing_prices_df_sim1[\"zone\"] == \"DE_1\"].head())\n", + "display(clearing_prices_df_sim1.loc[clearing_prices_df_sim1[\"zone\"] == \"DE_2\"].head())" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "d8327407", + "metadata": { + "id": "d8327407" + }, + "outputs": [], + "source": [ + "# Extract results for Simulation 2\n", + "accepted_bids_sim2, power_flows_df_sim2, clearing_prices_df_sim2 = extract_results(\n", + " model_sim2, incidence_matrix\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "9b5fc1de", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 224 + }, + "id": "9b5fc1de", + "outputId": "25af541d-12cb-47d6-bc08-92ee847cd820" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Simulation 2: Power Flows Between Zones\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " time line flow_MW\n", + "0 2019-01-01 00:00:00 Line_N1_S -3000.0\n", + "1 2019-01-01 00:00:00 Line_N2_S -3000.0\n", + "2 2019-01-01 00:00:00 Line_N1_N2 -3000.0\n", + "3 2019-01-01 01:00:00 Line_N1_S -3000.0\n", + "4 2019-01-01 01:00:00 Line_N2_S -3000.0" ], - [ - 0.7777777777777778, - "#fb9f3a" + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timelineflow_MW
02019-01-01 00:00:00Line_N1_S-3000.0
12019-01-01 00:00:00Line_N2_S-3000.0
22019-01-01 00:00:00Line_N1_N2-3000.0
32019-01-01 01:00:00Line_N1_S-3000.0
42019-01-01 01:00:00Line_N2_S-3000.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" ], - [ - 0.8888888888888888, - "#fdca26" + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"display(power_flows_df_sim2\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"time\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2019-01-01 00:00:00\",\n \"max\": \"2019-01-01 01:00:00\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"2019-01-01 01:00:00\",\n \"2019-01-01 00:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"line\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"Line_N1_S\",\n \"Line_N2_S\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"flow_MW\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": -3000.0,\n \"max\": -3000.0,\n \"num_unique_values\": 1,\n \"samples\": [\n -3000.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {} + } + ], + "source": [ + "print(\"Simulation 2: Power Flows Between Zones\")\n", + "display(power_flows_df_sim2.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "b7c5d148", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 413 + }, + "id": "b7c5d148", + "outputId": "4abfe739-2b01-485c-cde7-e385debad088" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Simulation 2: Clearing Prices per Zone and Time\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " zone time clearing_price\n", + "0 DE_1 2019-01-01 00:00:00 15.0\n", + "1 DE_1 2019-01-01 01:00:00 16.0\n", + "2 DE_1 2019-01-01 02:00:00 17.0\n", + "3 DE_1 2019-01-01 03:00:00 18.0\n", + "4 DE_1 2019-01-01 04:00:00 19.0" ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
zonetimeclearing_price
0DE_12019-01-01 00:00:0015.0
1DE_12019-01-01 01:00:0016.0
2DE_12019-01-01 02:00:0017.0
3DE_12019-01-01 03:00:0018.0
4DE_12019-01-01 04:00:0019.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" ], - [ - 0.1111111111111111, - "#46039f" + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"display(clearing_prices_df_sim2\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"zone\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"DE_1\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"time\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2019-01-01 00:00:00\",\n \"max\": \"2019-01-01 04:00:00\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"2019-01-01 01:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"clearing_price\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.5811388300841898,\n \"min\": 15.0,\n \"max\": 19.0,\n \"num_unique_values\": 5,\n \"samples\": [\n 16.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " zone time clearing_price\n", + "24 DE_2 2019-01-01 00:00:00 31.0\n", + "25 DE_2 2019-01-01 01:00:00 30.0\n", + "26 DE_2 2019-01-01 02:00:00 30.0\n", + "27 DE_2 2019-01-01 03:00:00 29.0\n", + "28 DE_2 2019-01-01 04:00:00 29.0" ], - [ - 0.2222222222222222, - "#7201a8" + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
zonetimeclearing_price
24DE_22019-01-01 00:00:0031.0
25DE_22019-01-01 01:00:0030.0
26DE_22019-01-01 02:00:0030.0
27DE_22019-01-01 03:00:0029.0
28DE_22019-01-01 04:00:0029.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" ], - [ - 0.3333333333333333, - "#9c179e" + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"display(clearing_prices_df_sim2\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"zone\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"DE_2\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"time\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2019-01-01 00:00:00\",\n \"max\": \"2019-01-01 04:00:00\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"2019-01-01 01:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"clearing_price\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.8366600265340756,\n \"min\": 29.0,\n \"max\": 31.0,\n \"num_unique_values\": 3,\n \"samples\": [\n 31.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {} + } + ], + "source": [ + "print(\"Simulation 2: Clearing Prices per Zone and Time\")\n", + "display(clearing_prices_df_sim2.loc[clearing_prices_df_sim2[\"zone\"] == \"DE_1\"].head())\n", + "display(clearing_prices_df_sim2.loc[clearing_prices_df_sim2[\"zone\"] == \"DE_2\"].head())" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "7f850cf5", + "metadata": { + "id": "7f850cf5" + }, + "outputs": [], + "source": [ + "# Extract results for Simulation 3\n", + "accepted_bids_sim3, power_flows_df_sim3, clearing_prices_df_sim3 = extract_results(\n", + " model_sim3, incidence_matrix\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "3b2528a2", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 224 + }, + "id": "3b2528a2", + "outputId": "f97d364c-890e-40b7-aeb9-691052170a64" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Simulation 3: Power Flows Between Zones\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " time line flow_MW\n", + "0 2019-01-01 00:00:00 Line_N1_S -5000.0\n", + "1 2019-01-01 00:00:00 Line_N2_S -5000.0\n", + "2 2019-01-01 00:00:00 Line_N1_N2 -5000.0\n", + "3 2019-01-01 01:00:00 Line_N1_S -4400.0\n", + "4 2019-01-01 01:00:00 Line_N2_S -5000.0" ], - [ - 0.4444444444444444, - "#bd3786" + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timelineflow_MW
02019-01-01 00:00:00Line_N1_S-5000.0
12019-01-01 00:00:00Line_N2_S-5000.0
22019-01-01 00:00:00Line_N1_N2-5000.0
32019-01-01 01:00:00Line_N1_S-4400.0
42019-01-01 01:00:00Line_N2_S-5000.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" ], - [ - 0.5555555555555556, - "#d8576b" + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"display(power_flows_df_sim3\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"time\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2019-01-01 00:00:00\",\n \"max\": \"2019-01-01 01:00:00\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"2019-01-01 01:00:00\",\n \"2019-01-01 00:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"line\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"Line_N1_S\",\n \"Line_N2_S\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"flow_MW\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 268.32815729997475,\n \"min\": -5000.0,\n \"max\": -4400.0,\n \"num_unique_values\": 2,\n \"samples\": [\n -4400.0,\n -5000.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {} + } + ], + "source": [ + "print(\"Simulation 3: Power Flows Between Zones\")\n", + "display(power_flows_df_sim3.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "05961462", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 413 + }, + "id": "05961462", + "outputId": "d6e9c38d-ab03-4828-e243-181791179ead" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Simulation 3: Clearing Prices per Zone and Time\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " zone time clearing_price\n", + "0 DE_1 2019-01-01 00:00:00 19.0\n", + "1 DE_1 2019-01-01 01:00:00 27.0\n", + "2 DE_1 2019-01-01 02:00:00 27.0\n", + "3 DE_1 2019-01-01 03:00:00 27.0\n", + "4 DE_1 2019-01-01 04:00:00 28.0" ], - [ - 0.6666666666666666, - "#ed7953" + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
zonetimeclearing_price
0DE_12019-01-01 00:00:0019.0
1DE_12019-01-01 01:00:0027.0
2DE_12019-01-01 02:00:0027.0
3DE_12019-01-01 03:00:0027.0
4DE_12019-01-01 04:00:0028.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" ], - [ - 0.7777777777777778, - "#fb9f3a" + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"display(clearing_prices_df_sim3\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"zone\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"DE_1\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"time\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2019-01-01 00:00:00\",\n \"max\": \"2019-01-01 04:00:00\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"2019-01-01 01:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"clearing_price\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 3.7148351242013415,\n \"min\": 19.0,\n \"max\": 28.0,\n \"num_unique_values\": 3,\n \"samples\": [\n 19.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " zone time clearing_price\n", + "24 DE_2 2019-01-01 00:00:00 27.0\n", + "25 DE_2 2019-01-01 01:00:00 27.0\n", + "26 DE_2 2019-01-01 02:00:00 27.0\n", + "27 DE_2 2019-01-01 03:00:00 27.0\n", + "28 DE_2 2019-01-01 04:00:00 28.0" ], - [ - 0.8888888888888888, - "#fdca26" + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
zonetimeclearing_price
24DE_22019-01-01 00:00:0027.0
25DE_22019-01-01 01:00:0027.0
26DE_22019-01-01 02:00:0027.0
27DE_22019-01-01 03:00:0027.0
28DE_22019-01-01 04:00:0028.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "white", - "showlakes": true, - "showland": true, - "subunitcolor": "#C8D4E3" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "white", - "polar": { - "angularaxis": { - "gridcolor": "#EBF0F8", - "linecolor": "#EBF0F8", - "ticks": "" - }, - "bgcolor": "white", - "radialaxis": { - "gridcolor": "#EBF0F8", - "linecolor": "#EBF0F8", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "white", - "gridcolor": "#DFE8F3", - "gridwidth": 2, - "linecolor": "#EBF0F8", - "showbackground": true, - "ticks": "", - "zerolinecolor": "#EBF0F8" - }, - "yaxis": { - "backgroundcolor": "white", - "gridcolor": "#DFE8F3", - "gridwidth": 2, - "linecolor": "#EBF0F8", - "showbackground": true, - "ticks": "", - "zerolinecolor": "#EBF0F8" - }, - "zaxis": { - "backgroundcolor": "white", - "gridcolor": "#DFE8F3", - "gridwidth": 2, - "linecolor": "#EBF0F8", - "showbackground": true, - "ticks": "", - "zerolinecolor": "#EBF0F8" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "#DFE8F3", - "linecolor": "#A2B1C6", - "ticks": "" - }, - "baxis": { - "gridcolor": "#DFE8F3", - "linecolor": "#A2B1C6", - "ticks": "" - }, - "bgcolor": "white", - "caxis": { - "gridcolor": "#DFE8F3", - "linecolor": "#A2B1C6", - "ticks": "" - } + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"display(clearing_prices_df_sim3\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"zone\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [\n \"DE_2\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"time\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2019-01-01 00:00:00\",\n \"max\": \"2019-01-01 04:00:00\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"2019-01-01 01:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"clearing_price\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.4472135954999579,\n \"min\": 27.0,\n \"max\": 28.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 28.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "#EBF0F8", - "linecolor": "#EBF0F8", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "#EBF0F8", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "#EBF0F8", - "linecolor": "#EBF0F8", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "#EBF0F8", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Clearing Prices per Zone Over Time: Sim1, Sim2, & Sim3" + "metadata": {} + } + ], + "source": [ + "print(\"Simulation 3: Clearing Prices per Zone and Time\")\n", + "display(clearing_prices_df_sim3.loc[clearing_prices_df_sim3[\"zone\"] == \"DE_1\"].head())\n", + "display(clearing_prices_df_sim3.loc[clearing_prices_df_sim3[\"zone\"] == \"DE_2\"].head())" + ] + }, + { + "cell_type": "markdown", + "id": "fb62e2fd", + "metadata": { + "id": "fb62e2fd" + }, + "source": [ + "**Explanation:**\n", + "\n", + "- **Accepted Bids:** Shows which bids were accepted in each simulation and the ratio at which they were accepted.\n", + "- **Power Flows:** Indicates the amount of energy transmitted between zones. In Simulation 1, with zero transmission capacity, there should be no power flows between `DE_1` and `DE_2`. In Simulation 2 and 3, with medium and high transmission capacities, power flows can occur between zones.\n", + "- **Clearing Prices:** Represents the average bid price in each zone at each time period. Comparing prices across simulations can reveal the impact of transmission capacity on market prices." + ] + }, + { + "cell_type": "markdown", + "id": "3dbd64e0", + "metadata": { + "id": "3dbd64e0" + }, + "source": [ + "### 5.5. Comparing Simulations\n", + "\n", + "To better understand the impact of transmission capacity, let's compare the key results from all three simulations." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "0ffe7033", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 617 }, - "width": 1000, - "xaxis": { - "tickangle": 45, - "title": { - "text": "Time" - }, - "type": "date" + "cellView": "form", + "id": "0ffe7033", + "outputId": "b0b4295a-095b-4871-aeef-d5aa44f866f8" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "" + ] + }, + "metadata": {} + } + ], + "source": [ + "# @title Plot the market clearing prices for each zone and simulation run\n", + "# Initialize the Plotly figure\n", + "fig = go.Figure()\n", + "\n", + "# Iterate over each zone to plot clearing prices for all three simulations\n", + "for zone in incidence_matrix.index:\n", + " # Filter data for the current zone and Simulation 1\n", + " zone_prices_sim1 = clearing_prices_df_sim1[clearing_prices_df_sim1[\"zone\"] == zone]\n", + " # Filter data for the current zone and Simulation 2\n", + " zone_prices_sim2 = clearing_prices_df_sim2[clearing_prices_df_sim2[\"zone\"] == zone]\n", + " # Filter data for the current zone and Simulation 3\n", + " zone_prices_sim3 = clearing_prices_df_sim3[clearing_prices_df_sim3[\"zone\"] == zone]\n", + "\n", + " # Add trace for Simulation 1\n", + " fig.add_trace(\n", + " go.Scatter(\n", + " x=zone_prices_sim1[\"time\"],\n", + " y=zone_prices_sim1[\"clearing_price\"],\n", + " mode=\"lines\",\n", + " name=f\"{zone} - Sim1 (Zero Capacity)\",\n", + " line=dict(dash=\"dash\"), # Dashed line for Simulation 1\n", + " )\n", + " )\n", + "\n", + " # Add trace for Simulation 2\n", + " fig.add_trace(\n", + " go.Scatter(\n", + " x=zone_prices_sim2[\"time\"],\n", + " y=zone_prices_sim2[\"clearing_price\"],\n", + " mode=\"lines\",\n", + " name=f\"{zone} - Sim2 (Medium Capacity)\",\n", + " line=dict(dash=\"dot\"), # Dotted line for Simulation 2\n", + " )\n", + " )\n", + "\n", + " # Add trace for Simulation 3\n", + " fig.add_trace(\n", + " go.Scatter(\n", + " x=zone_prices_sim3[\"time\"],\n", + " y=zone_prices_sim3[\"clearing_price\"],\n", + " mode=\"lines\",\n", + " name=f\"{zone} - Sim3 (High Capacity)\",\n", + " line=dict(dash=\"solid\"), # Solid line for Simulation 3\n", + " )\n", + " )\n", + "\n", + "# Update layout for better aesthetics and interactivity\n", + "fig.update_layout(\n", + " title=\"Clearing Prices per Zone Over Time: Sim1, Sim2, & Sim3\",\n", + " xaxis_title=\"Time\",\n", + " yaxis_title=\"Clearing Price\",\n", + " legend_title=\"Simulations\",\n", + " xaxis=dict(\n", + " tickangle=45,\n", + " type=\"date\", # Ensure the x-axis is treated as dates\n", + " ),\n", + " hovermode=\"x unified\", # Unified hover for better comparison\n", + " template=\"plotly_white\", # Clean white background\n", + " width=1000,\n", + " height=600,\n", + ")\n", + "\n", + "# Display the interactive plot\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "id": "7ee17c77", + "metadata": { + "id": "7ee17c77" + }, + "source": [ + "**Explanation:**\n", + "\n", + "- **Clearing Prices Plot:** Shows how market prices vary over time for each zone across all three simulations. The dashed lines represent Simulation 1 (no transmission capacity), dotted lines represent Simulation 2 (medium transmission capacity), and solid lines represent Simulation 3 (high transmission capacity). This visualization helps in observing how the presence of transmission capacity affects price convergence or divergence between zones." + ] + }, + { + "cell_type": "markdown", + "id": "fb8f157c", + "metadata": { + "id": "fb8f157c" + }, + "source": [ + "## 6. Execution with ASSUME\n", + "\n", + "In a real-world scenario, the ASSUME framework handles the reading of CSV files and the configuration of the simulation through configuration files. For the purpose of this tutorial, we'll integrate our prepared data and configuration into ASSUME to execute the simulation seamlessly.\n", + "\n", + "### Step 1: Saving Input Files\n", + "\n", + "We will save the generated input DataFrames to the `inputs/tutorial_08` folder. The required files are:\n", + "- `demand_units.csv`\n", + "- `demand_df.csv`\n", + "- `powerplant_units.csv`\n", + "- `buses.csv`\n", + "- `lines.csv`\n", + "\n", + "Additionally, we'll create a new file `fuel_prices.csv`.\n", + "\n", + "**Note:** The demand timeseries has been extended to cover 48 hours as ASSUME always requires an additional day of data for the market simulation.\n", + "\n", + "#### Create the Inputs Directory and Save CSV Files" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "531a7a24", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, - "yaxis": { - "title": { - "text": "Clearing Price" - } + "id": "531a7a24", + "outputId": "abc151f4-2f50-4ebd-b405-49f0340cd96d" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Input CSV files have been saved to 'inputs/tutorial_08'.\n" + ] } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# @title title\n", - "# Initialize the Plotly figure\n", - "fig = go.Figure()\n", - "\n", - "# Iterate over each zone to plot clearing prices for all three simulations\n", - "for zone in incidence_matrix.index:\n", - " # Filter data for the current zone and Simulation 1\n", - " zone_prices_sim1 = clearing_prices_df_sim1[clearing_prices_df_sim1[\"zone\"] == zone]\n", - " # Filter data for the current zone and Simulation 2\n", - " zone_prices_sim2 = clearing_prices_df_sim2[clearing_prices_df_sim2[\"zone\"] == zone]\n", - " # Filter data for the current zone and Simulation 3\n", - " zone_prices_sim3 = clearing_prices_df_sim3[clearing_prices_df_sim3[\"zone\"] == zone]\n", - "\n", - " # Add trace for Simulation 1\n", - " fig.add_trace(\n", - " go.Scatter(\n", - " x=zone_prices_sim1[\"time\"],\n", - " y=zone_prices_sim1[\"clearing_price\"],\n", - " mode=\"lines\",\n", - " name=f\"{zone} - Sim1 (Zero Capacity)\",\n", - " line=dict(dash=\"dash\"), # Dashed line for Simulation 1\n", - " )\n", - " )\n", - "\n", - " # Add trace for Simulation 2\n", - " fig.add_trace(\n", - " go.Scatter(\n", - " x=zone_prices_sim2[\"time\"],\n", - " y=zone_prices_sim2[\"clearing_price\"],\n", - " mode=\"lines\",\n", - " name=f\"{zone} - Sim2 (Medium Capacity)\",\n", - " line=dict(dash=\"dot\"), # Dotted line for Simulation 2\n", - " )\n", - " )\n", - "\n", - " # Add trace for Simulation 3\n", - " fig.add_trace(\n", - " go.Scatter(\n", - " x=zone_prices_sim3[\"time\"],\n", - " y=zone_prices_sim3[\"clearing_price\"],\n", - " mode=\"lines\",\n", - " name=f\"{zone} - Sim3 (High Capacity)\",\n", - " line=dict(dash=\"solid\"), # Solid line for Simulation 3\n", - " )\n", - " )\n", - "\n", - "# Update layout for better aesthetics and interactivity\n", - "fig.update_layout(\n", - " title=\"Clearing Prices per Zone Over Time: Sim1, Sim2, & Sim3\",\n", - " xaxis_title=\"Time\",\n", - " yaxis_title=\"Clearing Price\",\n", - " legend_title=\"Simulations\",\n", - " xaxis=dict(\n", - " tickangle=45,\n", - " type=\"date\", # Ensure the x-axis is treated as dates\n", - " ),\n", - " hovermode=\"x unified\", # Unified hover for better comparison\n", - " template=\"plotly_white\", # Clean white background\n", - " width=1000,\n", - " height=600,\n", - ")\n", - "\n", - "# Display the interactive plot\n", - "fig.show()" - ] - }, - { - "cell_type": "markdown", - "id": "7ee17c77", - "metadata": {}, - "source": [ - "**Explanation:**\n", - "\n", - "- **Clearing Prices Plot:** Shows how market prices vary over time for each zone across all three simulations. The dashed lines represent Simulation 1 (no transmission capacity), dotted lines represent Simulation 2 (medium transmission capacity), and solid lines represent Simulation 3 (high transmission capacity). This visualization helps in observing how the presence of transmission capacity affects price convergence or divergence between zones." - ] - }, - { - "cell_type": "markdown", - "id": "fb8f157c", - "metadata": {}, - "source": [ - "## 6. Integrating with ASSUME\n", - "\n", - "In a real-world scenario, the ASSUME framework handles the reading of CSV files and the configuration of the simulation through configuration files. For the purpose of this tutorial, we'll integrate our prepared data and configuration into ASSUME to execute the simulation seamlessly.\n", - "\n", - "### Step 1: Saving Input Files\n", - "\n", - "We will save the generated input DataFrames to the `inputs/tutorial_08` folder. The required files are:\n", - "- `demand_units.csv`\n", - "- `demand_df.csv`\n", - "- `powerplant_units.csv`\n", - "- `buses.csv`\n", - "- `lines.csv`\n", - "\n", - "Additionally, we'll create a new file `fuel_prices.csv`.\n", - "\n", - "**Note:** The demand timeseries has been extended to cover 48 hours as ASSUME always requires an additional day of data for the market simulation.\n", - "\n", - "#### Create the Inputs Directory and Save CSV Files" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "531a7a24", - "metadata": {}, - "outputs": [ + ], + "source": [ + "import os\n", + "\n", + "# Define the input directory\n", + "input_dir = \"inputs/tutorial_08\"\n", + "\n", + "# Create the directory if it doesn't exist\n", + "os.makedirs(input_dir, exist_ok=True)\n", + "\n", + "# extend demand_df for another day with the same demand profile\n", + "demand_df = pd.concat([demand_df, demand_df])\n", + "demand_df.index = pd.date_range(start=\"2019-01-01\", periods=48, freq=\"h\")\n", + "\n", + "# Save the DataFrames to CSV files\n", + "buses.to_csv(os.path.join(input_dir, \"buses.csv\"), index=True)\n", + "lines.to_csv(os.path.join(input_dir, \"lines.csv\"), index=True)\n", + "powerplant_units.to_csv(os.path.join(input_dir, \"powerplant_units.csv\"), index=False)\n", + "demand_units.to_csv(os.path.join(input_dir, \"demand_units.csv\"), index=False)\n", + "demand_df.to_csv(os.path.join(input_dir, \"demand_df.csv\"))\n", + "\n", + "print(\"Input CSV files have been saved to 'inputs/tutorial_08'.\")" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Input CSV files have been saved to 'inputs/tutorial_08'.\n" - ] - } - ], - "source": [ - "import os\n", - "\n", - "# Define the input directory\n", - "input_dir = \"inputs/tutorial_08\"\n", - "\n", - "# Create the directory if it doesn't exist\n", - "os.makedirs(input_dir, exist_ok=True)\n", - "\n", - "# extend demand_df for another day with the same demand profile\n", - "demand_df = pd.concat([demand_df, demand_df])\n", - "demand_df.index = pd.date_range(start=\"2019-01-01\", periods=48, freq=\"h\")\n", - "\n", - "# Save the DataFrames to CSV files\n", - "buses.to_csv(os.path.join(input_dir, \"buses.csv\"), index=True)\n", - "lines.to_csv(os.path.join(input_dir, \"lines.csv\"), index=True)\n", - "powerplant_units.to_csv(os.path.join(input_dir, \"powerplant_units.csv\"), index=False)\n", - "demand_units.to_csv(os.path.join(input_dir, \"demand_units.csv\"), index=False)\n", - "demand_df.to_csv(os.path.join(input_dir, \"demand_df.csv\"))\n", - "\n", - "print(\"Input CSV files have been saved to 'inputs/tutorial_08'.\")" - ] - }, - { - "cell_type": "markdown", - "id": "f788c99a", - "metadata": {}, - "source": [ - "#### Create `fuel_prices.csv`" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "2d61a40b", - "metadata": {}, - "outputs": [ + "cell_type": "code", + "execution_count": 29, + "id": "2d61a40b", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "cellView": "form", + "id": "2d61a40b", + "outputId": "8ce46e76-c462-4c8e-db62-8f787b354403" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Fuel Prices CSV file has been saved to 'inputs/tutorial_08/fuel_prices.csv'.\n" + ] + } + ], + "source": [ + "# @title Create fuel prices\n", + "fuel_prices = {\n", + " \"fuel\": [\"uranium\", \"co2\"],\n", + " \"price\": [5, 25],\n", + "}\n", + "\n", + "# Convert to DataFrame and save as CSV\n", + "fuel_prices_df = pd.DataFrame(fuel_prices).T\n", + "fuel_prices_df.to_csv(\n", + " os.path.join(input_dir, \"fuel_prices_df.csv\"), index=True, header=False\n", + ")\n", + "\n", + "print(\"Fuel Prices CSV file has been saved to 'inputs/tutorial_08/fuel_prices.csv'.\")" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fuel Prices CSV file has been saved to 'inputs/tutorial_08/fuel_prices.csv'.\n" - ] - } - ], - "source": [ - "# @title Create fuel prices\n", - "fuel_prices = {\n", - " \"fuel\": [\"uranium\", \"co2\"],\n", - " \"price\": [5, 25],\n", - "}\n", - "\n", - "# Convert to DataFrame and save as CSV\n", - "fuel_prices_df = pd.DataFrame(fuel_prices).T\n", - "fuel_prices_df.to_csv(\n", - " os.path.join(input_dir, \"fuel_prices_df.csv\"), index=True, header=False\n", - ")\n", - "\n", - "print(\"Fuel Prices CSV file has been saved to 'inputs/tutorial_08/fuel_prices.csv'.\")" - ] - }, - { - "cell_type": "markdown", - "id": "e0e47625", - "metadata": {}, - "source": [ - "### Step 2: Creating the Configuration YAML File\n", - "\n", - "The configuration file defines the simulation parameters, including market settings and network configurations. Below is the YAML configuration tailored for our tutorial." - ] - }, - { - "cell_type": "markdown", - "id": "44e22a14", - "metadata": {}, - "source": [ - "#### Create `config.yaml`" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "821a4002", - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "id": "e0e47625", + "metadata": { + "id": "e0e47625" + }, + "source": [ + "### Step 2: Creating the Configuration YAML File\n", + "\n", + "The configuration file defines the simulation parameters, including market settings and network configurations. Below is the YAML configuration tailored for our tutorial." + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Configuration YAML file has been saved to 'inputs/tutorial_08/config.yaml'.\n" - ] - } - ], - "source": [ - "config = {\n", - " \"zonal_case\": {\n", - " \"start_date\": \"2019-01-01 00:00\",\n", - " \"end_date\": \"2019-01-01 23:00\",\n", - " \"time_step\": \"1h\",\n", - " \"save_frequency_hours\": 24,\n", - " \"markets_config\": {\n", - " \"zonal\": {\n", - " \"operator\": \"EOM_operator\",\n", - " \"product_type\": \"energy\",\n", - " \"products\": [{\"duration\": \"1h\", \"count\": 1, \"first_delivery\": \"1h\"}],\n", - " \"opening_frequency\": \"1h\",\n", - " \"opening_duration\": \"1h\",\n", - " \"volume_unit\": \"MWh\",\n", - " \"maximum_bid_volume\": 100000,\n", - " \"maximum_bid_price\": 3000,\n", - " \"minimum_bid_price\": -500,\n", - " \"price_unit\": \"EUR/MWh\",\n", - " \"market_mechanism\": \"pay_as_clear_complex\",\n", - " \"additional_fields\": [\"bid_type\", \"node\"],\n", - " \"param_dict\": {\"network_path\": \".\", \"zones_identifier\": \"zone_id\"},\n", - " }\n", - " },\n", - " }\n", - "}\n", - "\n", - "# Define the path for the config file\n", - "config_path = os.path.join(input_dir, \"config.yaml\")\n", - "\n", - "# Save the configuration to a YAML file\n", - "with open(config_path, \"w\") as file:\n", - " yaml.dump(config, file, sort_keys=False)\n", - "\n", - "print(f\"Configuration YAML file has been saved to '{config_path}'.\")" - ] - }, - { - "cell_type": "markdown", - "id": "e2e9403a", - "metadata": {}, - "source": [ - "### Detailed Configuration Explanation\n", - "\n", - "The `config.yaml` file plays a key role in defining the simulation parameters. Below is a detailed explanation of each configuration parameter:\n", - "\n", - "- **zonal_case:**\n", - " - **start_date:** The start date and time for the simulation (`2019-01-01 00:00`).\n", - " - **end_date:** The end date and time for the simulation (`2019-01-02 00:00`).\n", - " - **time_step:** The simulation time step (`1h`), indicating hourly intervals.\n", - " - **save_frequency_hours:** How frequently the simulation results are saved (`24` hours).\n", - "\n", - "- **markets_config:**\n", - " - **zonal:** The name of the market. Remember, that our power plant units had a column named bidding_zonal. This is how a particluar bidding strategy is assigned to a particluar market.\n", - " - **operator:** The market operator (`EOM_operator`).\n", - " - **product_type:** Type of market product (`energy`).\n", - " - **products:** List defining the market products:\n", - " - **duration:** Duration of the product (`1h`).\n", - " - **count:** Number of products (`1`).\n", - " - **first_delivery:** When the first delivery occurs (`1h`).\n", - " - **opening_frequency:** Frequency of market openings (`1h`).\n", - " - **opening_duration:** Duration of market openings (`1h`).\n", - " - **volume_unit:** Unit of volume measurement (`MWh`).\n", - " - **maximum_bid_volume:** Maximum volume allowed per bid (`100000` MWh).\n", - " - **maximum_bid_price:** Maximum price allowed per bid (`3000` EUR/MWh).\n", - " - **minimum_bid_price:** Minimum price allowed per bid (`-500` EUR/MWh).\n", - " - **price_unit:** Unit of price measurement (`EUR/MWh`).\n", - " - **market_mechanism:** The market clearing mechanism (`pay_as_clear_complex`).\n", - " - **additional_fields:** Additional fields required for bids:\n", - " - **bid_type:** Type of bid (e.g., supply or demand).\n", - " - **node:** The market zone associated with the bid.\n", - " - **param_dict:**\n", - " - **network_path:** Path to the network files (`.` indicates current directory).\n", - " - **zones_identifier:** Identifier used for market zones (`zone_id`).\n", - "\n", - "This configuration ensures that the simulation accurately represents the zonal market dynamics, including bid restrictions and market operations." - ] - }, - { - "cell_type": "markdown", - "id": "6fd79730", - "metadata": {}, - "source": [ - "### Step 3: Running the Simulation\n", - "\n", - "With the input files and configuration in place, we can now run the simulation using ASSUME's built-in functions." - ] - }, - { - "cell_type": "markdown", - "id": "33ff62b1", - "metadata": {}, - "source": [ - "#### Example Simulation Code" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "3a79848a", - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "id": "44e22a14", + "metadata": { + "id": "44e22a14" + }, + "source": [ + "#### Create `config.yaml`" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.world:connected to db\n", - "INFO:assume.scenario.loader_csv:Starting Scenario tutorial_08/zonal_case from inputs\n", - "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", - "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", - "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", - "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", - "INFO:assume.scenario.loader_csv:availability_df not found. Returning None\n", - "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", - "INFO:assume.scenario.loader_csv:price_forecasts not found. Returning None\n", - "INFO:assume.scenario.loader_csv:temperature not found. Returning None\n", - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] + "cell_type": "code", + "execution_count": 30, + "id": "821a4002", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "821a4002", + "outputId": "ac8bf62b-8e38-4199-a45a-5c5397342bef" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Configuration YAML file has been saved to 'inputs/tutorial_08/config.yaml'.\n" + ] + } + ], + "source": [ + "config = {\n", + " \"zonal_case\": {\n", + " \"start_date\": \"2019-01-01 00:00\",\n", + " \"end_date\": \"2019-01-01 23:00\",\n", + " \"time_step\": \"1h\",\n", + " \"save_frequency_hours\": 24,\n", + " \"markets_config\": {\n", + " \"zonal\": {\n", + " \"operator\": \"EOM_operator\",\n", + " \"product_type\": \"energy\",\n", + " \"products\": [{\"duration\": \"1h\", \"count\": 1, \"first_delivery\": \"1h\"}],\n", + " \"opening_frequency\": \"1h\",\n", + " \"opening_duration\": \"1h\",\n", + " \"volume_unit\": \"MWh\",\n", + " \"maximum_bid_volume\": 100000,\n", + " \"maximum_bid_price\": 3000,\n", + " \"minimum_bid_price\": -500,\n", + " \"price_unit\": \"EUR/MWh\",\n", + " \"market_mechanism\": \"pay_as_clear_complex\",\n", + " \"additional_fields\": [\"bid_type\", \"node\"],\n", + " \"param_dict\": {\"network_path\": \".\", \"zones_identifier\": \"zone_id\"},\n", + " }\n", + " },\n", + " }\n", + "}\n", + "\n", + "# Define the path for the config file\n", + "config_path = os.path.join(input_dir, \"config.yaml\")\n", + "\n", + "# Save the configuration to a YAML file\n", + "with open(config_path, \"w\") as file:\n", + " yaml.dump(config, file, sort_keys=False)\n", + "\n", + "print(f\"Configuration YAML file has been saved to '{config_path}'.\")" + ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - " 0%| | 0/82800 [00:00\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", - " \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", - " \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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
supply_volumedemand_volumedemand_volume_energysupply_volume_energypricemax_pricemin_pricenodeproduct_startproduct_endonly_hoursmarket_idsimulation
time
2019-01-01 01:00:0015000560056001500043.66743.66743.667DE_12019-01-01 01:00:002019-01-01 02:00:00NaNzonaltutorial_08_zonal_case
2019-01-01 01:00:0074001680016800740043.66743.66743.667DE_22019-01-01 01:00:002019-01-01 02:00:00NaNzonaltutorial_08_zonal_case
2019-01-01 02:00:0015000640064001500043.66743.66743.667DE_12019-01-01 02:00:002019-01-01 03:00:00NaNzonaltutorial_08_zonal_case
2019-01-01 02:00:0076001620016200760043.66743.66743.667DE_22019-01-01 02:00:002019-01-01 03:00:00NaNzonaltutorial_08_zonal_case
2019-01-01 03:00:0015000720072001500043.66743.66743.667DE_12019-01-01 03:00:002019-01-01 04:00:00NaNzonaltutorial_08_zonal_case
\n", - "" - ], - "text/plain": [ - " supply_volume demand_volume demand_volume_energy \\\n", - "time \n", - "2019-01-01 01:00:00 15000 5600 5600 \n", - "2019-01-01 01:00:00 7400 16800 16800 \n", - "2019-01-01 02:00:00 15000 6400 6400 \n", - "2019-01-01 02:00:00 7600 16200 16200 \n", - "2019-01-01 03:00:00 15000 7200 7200 \n", - "\n", - " supply_volume_energy price max_price min_price node \\\n", - "time \n", - "2019-01-01 01:00:00 15000 43.667 43.667 43.667 DE_1 \n", - "2019-01-01 01:00:00 7400 43.667 43.667 43.667 DE_2 \n", - "2019-01-01 02:00:00 15000 43.667 43.667 43.667 DE_1 \n", - "2019-01-01 02:00:00 7600 43.667 43.667 43.667 DE_2 \n", - "2019-01-01 03:00:00 15000 43.667 43.667 43.667 DE_1 \n", - "\n", - " product_start product_end only_hours \\\n", - "time \n", - "2019-01-01 01:00:00 2019-01-01 01:00:00 2019-01-01 02:00:00 NaN \n", - "2019-01-01 01:00:00 2019-01-01 01:00:00 2019-01-01 02:00:00 NaN \n", - "2019-01-01 02:00:00 2019-01-01 02:00:00 2019-01-01 03:00:00 NaN \n", - "2019-01-01 02:00:00 2019-01-01 02:00:00 2019-01-01 03:00:00 NaN \n", - "2019-01-01 03:00:00 2019-01-01 03:00:00 2019-01-01 04:00:00 NaN \n", - "\n", - " market_id simulation \n", - "time \n", - "2019-01-01 01:00:00 zonal tutorial_08_zonal_case \n", - "2019-01-01 01:00:00 zonal tutorial_08_zonal_case \n", - "2019-01-01 02:00:00 zonal tutorial_08_zonal_case \n", - "2019-01-01 02:00:00 zonal tutorial_08_zonal_case \n", - "2019-01-01 03:00:00 zonal tutorial_08_zonal_case " + "cell_type": "markdown", + "id": "be819122", + "metadata": { + "id": "be819122" + }, + "source": [ + "## 7. Analyzing the Results\n", + "\n", + "After running the simulation, you can analyze the results using the methods demonstrated in section 5. This integration with ASSUME allows for more extensive and scalable simulations, leveraging the framework's capabilities for handling complex market scenarios.\n", + "\n", + "In this section, we will:\n", + "\n", + "1. **Locate the Simulation Output Files:** Understand where the simulation results are saved.\n", + "2. **Load and Inspect the Output Data:** Read the output CSV files and examine their structure.\n", + "3. **Plot Clearing Prices:** Visualize the market clearing prices to compare with our previous manual simulations." ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Define the path to the simulation output\n", - "output_dir = \"outputs/tutorial_08_zonal_case\"\n", - "market_meta_path = os.path.join(output_dir, \"market_meta.csv\")\n", - "\n", - "# Load the market_meta.csv file\n", - "market_meta = pd.read_csv(market_meta_path, index_col=\"time\", parse_dates=True)\n", - "# drop the first column\n", - "market_meta = market_meta.drop(columns=market_meta.columns[0])\n", - "\n", - "# Display a sample of the data\n", - "print(\"Sample of market_meta.csv:\")\n", - "display(market_meta.head())" - ] - }, - { - "cell_type": "markdown", - "id": "870b1c74", - "metadata": {}, - "source": [ - "**Explanation:**\n", - "\n", - "- **market_meta.csv:** This file contains the market outcomes for each zone and time period, including supply and demand volumes, clearing prices, and other relevant metrics.\n", - "- **Columns:**\n", - " - `supply_volume`: Total volume supplied in the zone.\n", - " - `demand_volume`: Total volume demanded in the zone.\n", - " - `demand_volume_energy`: Energy demand volume (same as `demand_volume` for energy markets).\n", - " - `supply_volume_energy`: Energy supply volume (same as `supply_volume` for energy markets).\n", - " - `price`: Clearing price in the zone for the time period.\n", - " - `max_price`: Maximum bid price accepted.\n", - " - `min_price`: Minimum bid price accepted.\n", - " - `node`: Identifier for the market zone (`DE_1` or `DE_2`).\n", - " - `product_start`: Start time of the market product.\n", - " - `product_end`: End time of the market product.\n", - " - `only_hours`: Indicator flag (not used in this context).\n", - " - `market_id`: Identifier for the market (`zonal`).\n", - " - `time`: Timestamp for the market product.\n", - " - `simulation`: Identifier for the simulation case (`tutorial_08_zonal_case`)." - ] - }, - { - "cell_type": "markdown", - "id": "d0fd6e1b", - "metadata": {}, - "source": [ - "### 7.3. Plotting Clearing Prices\n", - "\n", - "To verify that the simulation results align with our previous manual demonstrations, we'll plot the clearing prices for each zone over time. This will help us observe how transmission capacities influence price convergence or divergence between zones." - ] - }, - { - "cell_type": "markdown", - "id": "934872ad", - "metadata": {}, - "source": [ - "#### Processing the Market Meta Data" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "fd2e3048", - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Sample of Processed Clearing Prices:\n" - ] + "cell_type": "markdown", + "id": "5ca43ca3", + "metadata": { + "id": "5ca43ca3" + }, + "source": [ + "### 7.1. Locating the Simulation Output Files\n", + "\n", + "The simulation outputs are saved in the `outputs/tutorial_08_zonal_case` directory. Specifically, the key output file we'll work with is `market_meta.csv`, which contains detailed information about the market outcomes for each zone and time period." + ] }, { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DE_1_priceDE_2_price
time
2019-01-01 01:00:0043.66743.667
2019-01-01 02:00:0043.66743.667
2019-01-01 03:00:0043.66743.667
2019-01-01 04:00:0043.66743.667
2019-01-01 05:00:0044.66744.667
\n", - "
" - ], - "text/plain": [ - " DE_1_price DE_2_price\n", - "time \n", - "2019-01-01 01:00:00 43.667 43.667\n", - "2019-01-01 02:00:00 43.667 43.667\n", - "2019-01-01 03:00:00 43.667 43.667\n", - "2019-01-01 04:00:00 43.667 43.667\n", - "2019-01-01 05:00:00 44.667 44.667" + "cell_type": "markdown", + "id": "78707ac9", + "metadata": { + "id": "78707ac9" + }, + "source": [ + "### 7.2. Loading and Inspecting the Output Data" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Extract unique zones\n", - "zones = market_meta[\"node\"].unique()\n", - "\n", - "# Initialize an empty DataFrame to store clearing prices per zone and time\n", - "clearing_prices_df = pd.DataFrame()\n", - "\n", - "# Populate the DataFrame with clearing prices for each zone\n", - "for zone in zones:\n", - " zone_data = market_meta[market_meta[\"node\"] == zone][[\"price\"]]\n", - " zone_data = zone_data.rename(columns={\"price\": f\"{zone}_price\"})\n", - " clearing_prices_df = (\n", - " pd.merge(\n", - " clearing_prices_df,\n", - " zone_data,\n", - " left_index=True,\n", - " right_index=True,\n", - " how=\"outer\",\n", - " )\n", - " if not clearing_prices_df.empty\n", - " else zone_data\n", - " )\n", - "\n", - "# Sort the DataFrame by time\n", - "clearing_prices_df = clearing_prices_df.sort_index()\n", - "\n", - "# Display a sample of the processed clearing prices\n", - "print(\"Sample of Processed Clearing Prices:\")\n", - "display(clearing_prices_df.head())" - ] - }, - { - "cell_type": "markdown", - "id": "bc7fbb63", - "metadata": {}, - "source": [ - "#### Plotting the market clearing prices" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "87102b35", - "metadata": {}, - "outputs": [ + }, { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "line": { - "width": 2 - }, - "mode": "lines", - "name": "DE_1 - Simulation", - "type": "scatter", - "x": [ - "2019-01-01T01:00:00", - "2019-01-01T02:00:00", - "2019-01-01T03:00:00", - "2019-01-01T04:00:00", - "2019-01-01T05:00:00", - "2019-01-01T06:00:00", - "2019-01-01T07:00:00", - "2019-01-01T08:00:00", - "2019-01-01T09:00:00", - "2019-01-01T10:00:00", - "2019-01-01T11:00:00", - "2019-01-01T12:00:00", - "2019-01-01T13:00:00", - "2019-01-01T14:00:00", - "2019-01-01T15:00:00", - "2019-01-01T16:00:00", - "2019-01-01T17:00:00", - "2019-01-01T18:00:00", - "2019-01-01T19:00:00", - "2019-01-01T20:00:00", - "2019-01-01T21:00:00", - "2019-01-01T22:00:00", - "2019-01-01T23:00:00" - ], - "y": [ - 43.667, - 43.667, - 43.667, - 43.667, - 44.667, - 44.667, - 44.667, - 44.667, - 44.667, - 45.667, - 45.667, - 45.667, - 45.667, - 45.667, - 46.667, - 46.667, - 46.667, - 46.667, - 46.667, - 47.667, - 47.667, - 47.667, - 47.667 - ] + "cell_type": "code", + "execution_count": 32, + "id": "6e71a328", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 255 }, + "id": "6e71a328", + "outputId": "738e1589-5d53-4831-cbcf-4fefca4f7860" + }, + "outputs": [ { - "line": { - "width": 2 - }, - "mode": "lines", - "name": "DE_2 - Simulation", - "type": "scatter", - "x": [ - "2019-01-01T01:00:00", - "2019-01-01T02:00:00", - "2019-01-01T03:00:00", - "2019-01-01T04:00:00", - "2019-01-01T05:00:00", - "2019-01-01T06:00:00", - "2019-01-01T07:00:00", - "2019-01-01T08:00:00", - "2019-01-01T09:00:00", - "2019-01-01T10:00:00", - "2019-01-01T11:00:00", - "2019-01-01T12:00:00", - "2019-01-01T13:00:00", - "2019-01-01T14:00:00", - "2019-01-01T15:00:00", - "2019-01-01T16:00:00", - "2019-01-01T17:00:00", - "2019-01-01T18:00:00", - "2019-01-01T19:00:00", - "2019-01-01T20:00:00", - "2019-01-01T21:00:00", - "2019-01-01T22:00:00", - "2019-01-01T23:00:00" - ], - "y": [ - 43.667, - 43.667, - 43.667, - 43.667, - 44.667, - 44.667, - 44.667, - 44.667, - 44.667, - 45.667, - 45.667, - 45.667, - 45.667, - 45.667, - 46.667, - 46.667, - 46.667, - 46.667, - 46.667, - 47.667, - 47.667, - 47.667, - 47.667 - ] - } - ], - "layout": { - "height": 600, - "hovermode": "x unified", - "legend": { - "title": { - "text": "Market Zones" - } + "output_type": "stream", + "name": "stdout", + "text": [ + "Sample of market_meta.csv:\n" + ] }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "#C8D4E3", - "linecolor": "#C8D4E3", - "minorgridcolor": "#C8D4E3", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "#C8D4E3", - "linecolor": "#C8D4E3", - "minorgridcolor": "#C8D4E3", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + { + "output_type": "display_data", + "data": { + "text/plain": [ + " supply_volume demand_volume demand_volume_energy \\\n", + "time \n", + "2019-01-01 01:00:00 15000 5600 5600 \n", + "2019-01-01 01:00:00 7400 16800 16800 \n", + "2019-01-01 02:00:00 15000 6400 6400 \n", + "2019-01-01 02:00:00 7600 16200 16200 \n", + "2019-01-01 03:00:00 15000 7200 7200 \n", + "\n", + " supply_volume_energy price max_price min_price node \\\n", + "time \n", + "2019-01-01 01:00:00 15000 43.667 43.667 43.667 DE_1 \n", + "2019-01-01 01:00:00 7400 43.667 43.667 43.667 DE_2 \n", + "2019-01-01 02:00:00 15000 43.667 43.667 43.667 DE_1 \n", + "2019-01-01 02:00:00 7600 43.667 43.667 43.667 DE_2 \n", + "2019-01-01 03:00:00 15000 43.667 43.667 43.667 DE_1 \n", + "\n", + " product_start product_end only_hours \\\n", + "time \n", + "2019-01-01 01:00:00 2019-01-01 01:00:00 2019-01-01 02:00:00 NaN \n", + "2019-01-01 01:00:00 2019-01-01 01:00:00 2019-01-01 02:00:00 NaN \n", + "2019-01-01 02:00:00 2019-01-01 02:00:00 2019-01-01 03:00:00 NaN \n", + "2019-01-01 02:00:00 2019-01-01 02:00:00 2019-01-01 03:00:00 NaN \n", + "2019-01-01 03:00:00 2019-01-01 03:00:00 2019-01-01 04:00:00 NaN \n", + "\n", + " market_id simulation \n", + "time \n", + "2019-01-01 01:00:00 zonal tutorial_08_zonal_case \n", + "2019-01-01 01:00:00 zonal tutorial_08_zonal_case \n", + "2019-01-01 02:00:00 zonal tutorial_08_zonal_case \n", + "2019-01-01 02:00:00 zonal tutorial_08_zonal_case \n", + "2019-01-01 03:00:00 zonal tutorial_08_zonal_case " ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + "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", + " \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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
supply_volumedemand_volumedemand_volume_energysupply_volume_energypricemax_pricemin_pricenodeproduct_startproduct_endonly_hoursmarket_idsimulation
time
2019-01-01 01:00:0015000560056001500043.66743.66743.667DE_12019-01-01 01:00:002019-01-01 02:00:00NaNzonaltutorial_08_zonal_case
2019-01-01 01:00:0074001680016800740043.66743.66743.667DE_22019-01-01 01:00:002019-01-01 02:00:00NaNzonaltutorial_08_zonal_case
2019-01-01 02:00:0015000640064001500043.66743.66743.667DE_12019-01-01 02:00:002019-01-01 03:00:00NaNzonaltutorial_08_zonal_case
2019-01-01 02:00:0076001620016200760043.66743.66743.667DE_22019-01-01 02:00:002019-01-01 03:00:00NaNzonaltutorial_08_zonal_case
2019-01-01 03:00:0015000720072001500043.66743.66743.667DE_12019-01-01 03:00:002019-01-01 04:00:00NaNzonaltutorial_08_zonal_case
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"display(market_meta\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"time\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2019-01-01 01:00:00\",\n \"max\": \"2019-01-01 03:00:00\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"2019-01-01 01:00:00\",\n \"2019-01-01 02:00:00\",\n \"2019-01-01 03:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"supply_volume\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 4108,\n \"min\": 7400,\n \"max\": 15000,\n \"num_unique_values\": 3,\n \"samples\": [\n 15000,\n 7400,\n 7600\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"demand_volume\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 5564,\n \"min\": 5600,\n \"max\": 16800,\n \"num_unique_values\": 5,\n \"samples\": [\n 16800,\n 7200,\n 6400\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"demand_volume_energy\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 5564,\n \"min\": 5600,\n \"max\": 16800,\n \"num_unique_values\": 5,\n \"samples\": [\n 16800,\n 7200,\n 6400\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"supply_volume_energy\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 4108,\n \"min\": 7400,\n \"max\": 15000,\n \"num_unique_values\": 3,\n \"samples\": [\n 15000,\n 7400,\n 7600\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"price\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 43.667,\n \"max\": 43.667,\n \"num_unique_values\": 1,\n \"samples\": [\n 43.667\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"max_price\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 43.667,\n \"max\": 43.667,\n \"num_unique_values\": 1,\n \"samples\": [\n 43.667\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"min_price\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.0,\n \"min\": 43.667,\n \"max\": 43.667,\n \"num_unique_values\": 1,\n \"samples\": [\n 43.667\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"node\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"DE_2\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"product_start\",\n \"properties\": {\n \"dtype\": \"object\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"2019-01-01 01:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"product_end\",\n \"properties\": {\n \"dtype\": \"object\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"2019-01-01 02:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"only_hours\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": null,\n \"min\": null,\n \"max\": null,\n \"num_unique_values\": 0,\n \"samples\": [],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"market_id\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"simulation\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 1,\n \"samples\": [],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" - ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" + "metadata": {} + } + ], + "source": [ + "# Define the path to the simulation output\n", + "output_dir = \"outputs/tutorial_08_zonal_case\"\n", + "market_meta_path = os.path.join(output_dir, \"market_meta.csv\")\n", + "\n", + "# Load the market_meta.csv file\n", + "market_meta = pd.read_csv(market_meta_path, index_col=\"time\", parse_dates=True)\n", + "# drop the first column\n", + "market_meta = market_meta.drop(columns=market_meta.columns[0])\n", + "\n", + "# Display a sample of the data\n", + "print(\"Sample of market_meta.csv:\")\n", + "display(market_meta.head())" + ] + }, + { + "cell_type": "markdown", + "id": "870b1c74", + "metadata": { + "id": "870b1c74" + }, + "source": [ + "**Explanation:**\n", + "\n", + "- **market_meta.csv:** This file contains the market outcomes for each zone and time period, including supply and demand volumes, clearing prices, and other relevant metrics.\n", + "- **Columns:**\n", + " - `supply_volume`: Total volume supplied in the zone.\n", + " - `demand_volume`: Total volume demanded in the zone.\n", + " - `demand_volume_energy`: Energy demand volume (same as `demand_volume` for energy markets).\n", + " - `supply_volume_energy`: Energy supply volume (same as `supply_volume` for energy markets).\n", + " - `price`: Clearing price in the zone for the time period.\n", + " - `max_price`: Maximum bid price accepted.\n", + " - `min_price`: Minimum bid price accepted.\n", + " - `node`: Identifier for the market zone (`DE_1` or `DE_2`).\n", + " - `product_start`: Start time of the market product.\n", + " - `product_end`: End time of the market product.\n", + " - `only_hours`: Indicator flag (not used in this context).\n", + " - `market_id`: Identifier for the market (`zonal`).\n", + " - `time`: Timestamp for the market product.\n", + " - `simulation`: Identifier for the simulation case (`tutorial_08_zonal_case`)." + ] + }, + { + "cell_type": "markdown", + "id": "d0fd6e1b", + "metadata": { + "id": "d0fd6e1b" + }, + "source": [ + "### 7.3. Plotting Clearing Prices\n", + "\n", + "To verify that the simulation results align with our previous manual demonstrations, we'll plot the clearing prices for each zone over time. This will help us observe how transmission capacities influence price convergence or divergence between zones." + ] + }, + { + "cell_type": "markdown", + "id": "934872ad", + "metadata": { + "id": "934872ad" + }, + "source": [ + "#### Processing the Market Meta Data" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "fd2e3048", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 255 + }, + "id": "fd2e3048", + "outputId": "7d9d0dc5-7042-488f-93d9-655bf4139807" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Sample of Processed Clearing Prices:\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " DE_1_price DE_2_price\n", + "time \n", + "2019-01-01 01:00:00 43.667 43.667\n", + "2019-01-01 02:00:00 43.667 43.667\n", + "2019-01-01 03:00:00 43.667 43.667\n", + "2019-01-01 04:00:00 44.667 44.667\n", + "2019-01-01 05:00:00 44.667 44.667" ], - [ - 0.8888888888888888, - "#fdca26" + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DE_1_priceDE_2_price
time
2019-01-01 01:00:0043.66743.667
2019-01-01 02:00:0043.66743.667
2019-01-01 03:00:0043.66743.667
2019-01-01 04:00:0044.66744.667
2019-01-01 05:00:0044.66744.667
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" ], - [ - 1, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"display(clearing_prices_df\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"time\",\n \"properties\": {\n \"dtype\": \"date\",\n \"min\": \"2019-01-01 01:00:00\",\n \"max\": \"2019-01-01 05:00:00\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"2019-01-01 02:00:00\",\n \"2019-01-01 05:00:00\",\n \"2019-01-01 03:00:00\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"DE_1_price\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.5477225575051661,\n \"min\": 43.667,\n \"max\": 44.667,\n \"num_unique_values\": 2,\n \"samples\": [\n 44.667,\n 43.667\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"DE_2_price\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.5477225575051661,\n \"min\": 43.667,\n \"max\": 44.667,\n \"num_unique_values\": 2,\n \"samples\": [\n 44.667,\n 43.667\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "white", - "showlakes": true, - "showland": true, - "subunitcolor": "#C8D4E3" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "white", - "polar": { - "angularaxis": { - "gridcolor": "#EBF0F8", - "linecolor": "#EBF0F8", - "ticks": "" - }, - "bgcolor": "white", - "radialaxis": { - "gridcolor": "#EBF0F8", - "linecolor": "#EBF0F8", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "white", - "gridcolor": "#DFE8F3", - "gridwidth": 2, - "linecolor": "#EBF0F8", - "showbackground": true, - "ticks": "", - "zerolinecolor": "#EBF0F8" - }, - "yaxis": { - "backgroundcolor": "white", - "gridcolor": "#DFE8F3", - "gridwidth": 2, - "linecolor": "#EBF0F8", - "showbackground": true, - "ticks": "", - "zerolinecolor": "#EBF0F8" - }, - "zaxis": { - "backgroundcolor": "white", - "gridcolor": "#DFE8F3", - "gridwidth": 2, - "linecolor": "#EBF0F8", - "showbackground": true, - "ticks": "", - "zerolinecolor": "#EBF0F8" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "#DFE8F3", - "linecolor": "#A2B1C6", - "ticks": "" - }, - "baxis": { - "gridcolor": "#DFE8F3", - "linecolor": "#A2B1C6", - "ticks": "" - }, - "bgcolor": "white", - "caxis": { - "gridcolor": "#DFE8F3", - "linecolor": "#A2B1C6", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "#EBF0F8", - "linecolor": "#EBF0F8", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "#EBF0F8", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "#EBF0F8", - "linecolor": "#EBF0F8", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "#EBF0F8", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Clearing Prices per Zone Over Time: Simulation Results" - }, - "width": 1000, - "xaxis": { - "tickangle": 45, - "title": { - "text": "Time" - }, - "type": "date" + "metadata": {} + } + ], + "source": [ + "# Extract unique zones\n", + "zones = market_meta[\"node\"].unique()\n", + "\n", + "# Initialize an empty DataFrame to store clearing prices per zone and time\n", + "clearing_prices_df = pd.DataFrame()\n", + "\n", + "# Populate the DataFrame with clearing prices for each zone\n", + "for zone in zones:\n", + " zone_data = market_meta[market_meta[\"node\"] == zone][[\"price\"]]\n", + " zone_data = zone_data.rename(columns={\"price\": f\"{zone}_price\"})\n", + " clearing_prices_df = (\n", + " pd.merge(\n", + " clearing_prices_df,\n", + " zone_data,\n", + " left_index=True,\n", + " right_index=True,\n", + " how=\"outer\",\n", + " )\n", + " if not clearing_prices_df.empty\n", + " else zone_data\n", + " )\n", + "\n", + "# Sort the DataFrame by time\n", + "clearing_prices_df = clearing_prices_df.sort_index()\n", + "\n", + "# Display a sample of the processed clearing prices\n", + "print(\"Sample of Processed Clearing Prices:\")\n", + "display(clearing_prices_df.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "87102b35", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 617 }, - "yaxis": { - "title": { - "text": "Clearing Price (EUR/MWh)" - } + "cellView": "form", + "id": "87102b35", + "outputId": "ebc6d249-88cc-4df8-eeb6-2738f16351b2" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "" + ] + }, + "metadata": {} } - } - } - }, - "metadata": {}, - "output_type": "display_data" + ], + "source": [ + "# @title Plot market clearing prices\n", + "# Initialize the Plotly figure\n", + "fig = go.Figure()\n", + "\n", + "# Iterate over each zone to plot clearing prices\n", + "for zone in zones:\n", + " fig.add_trace(\n", + " go.Scatter(\n", + " x=clearing_prices_df.index,\n", + " y=clearing_prices_df[f\"{zone}_price\"],\n", + " mode=\"lines\",\n", + " name=f\"{zone} - Simulation\",\n", + " line=dict(width=2),\n", + " )\n", + " )\n", + "\n", + "# Update layout for better aesthetics and interactivity\n", + "fig.update_layout(\n", + " title=\"Clearing Prices per Zone Over Time: Simulation Results\",\n", + " xaxis_title=\"Time\",\n", + " yaxis_title=\"Clearing Price (EUR/MWh)\",\n", + " legend_title=\"Market Zones\",\n", + " xaxis=dict(\n", + " tickangle=45,\n", + " type=\"date\", # Ensure the x-axis is treated as dates\n", + " ),\n", + " hovermode=\"x unified\", # Unified hover for better comparison\n", + " template=\"plotly_white\", # Clean white background\n", + " width=1000,\n", + " height=600,\n", + ")\n", + "\n", + "# Display the interactive plot\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "id": "b34407b1", + "metadata": { + "id": "b34407b1" + }, + "source": [ + "**Explanation:**\n", + "\n", + "- **Plot Details:**\n", + " - **Lines:** Each zone's clearing price over time is represented by a distinct line.\n", + " - **Interactivity:** The Plotly plot allows for interactive exploration of the data, such as zooming and hovering for specific values.\n", + " - **Aesthetics:** The clean white template and clear labels enhance readability.\n", + "\n", + "- **Interpretation:**\n", + " - **Price Trends:** Observing how clearing prices fluctuate over time within each zone.\n", + " - **Impact of Transmission Capacity:** Comparing price levels between zones can reveal the effects of transmission capacities on market equilibrium. For instance, higher transmission capacity might lead to more price convergence between zones, while zero capacity could result in divergent price levels due to isolated supply and demand dynamics." + ] + }, + { + "cell_type": "markdown", + "id": "3f448fb4", + "metadata": { + "id": "3f448fb4" + }, + "source": [ + "## **Conclusion**\n", + "\n", + "Congratulations! You've successfully navigated through the **Market Zone Coupling** process using the **ASSUME Framework**. Here's a quick recap of what you've accomplished:\n", + "\n", + "### **Key Achievements:**\n", + "\n", + "1. **Market Setup:**\n", + " - **Defined Zones and Buses:** Established distinct market zones and configured their connections through transmission lines.\n", + " - **Configured Units:** Set up power plant and demand units within each zone, detailing their operational parameters.\n", + "\n", + "2. **Market Clearing Optimization:**\n", + " - **Implemented Optimization Model:** Utilized a simplified Pyomo-based model to perform market clearing, accounting for bid acceptances and power flows.\n", + " - **Simulated Transmission Scenarios:** Ran simulations with varying transmission capacities to observe their impact on energy distribution and pricing.\n", + "\n", + "3. **Result Analysis:**\n", + " - **Extracted Clearing Prices:** Retrieved and interpreted market prices from the optimization results.\n", + " - **Visualized Outcomes:** Created interactive plots to compare how different transmission capacities influence market dynamics across zones.\n", + "\n", + "### **Key Takeaways:**\n", + "\n", + "- **Impact of Transmission Capacity:** Transmission limits play a crucial role in determining energy flows and price convergence between market zones.\n", + "- **ASSUME Framework Efficiency:** ASSUME streamlines complex market simulations, making it easier to model and analyze multi-zone interactions.\n", + "\n", + "### **Next Steps:**\n", + "\n", + "- **Integrate Renewable Sources:** Expand the model to include renewable energy units and assess their impact on market dynamics.\n", + "- **Scale Up Simulations:** Apply the framework to larger, more complex market scenarios to further test its capabilities.\n", + "\n", + "Thank you for participating in this tutorial! With the foundational knowledge gained, you're now equipped to delve deeper into energy market simulations and leverage the ASSUME framework for more advanced analyses." + ] + } + ], + "metadata": { + "jupytext": { + "cell_metadata_filter": "-all", + "main_language": "python", + "notebook_metadata_filter": "-all" + }, + "language_info": { + "name": "python" + }, + "colab": { + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" } - ], - "source": [ - "# Initialize the Plotly figure\n", - "fig = go.Figure()\n", - "\n", - "# Iterate over each zone to plot clearing prices\n", - "for zone in zones:\n", - " fig.add_trace(\n", - " go.Scatter(\n", - " x=clearing_prices_df.index,\n", - " y=clearing_prices_df[f\"{zone}_price\"],\n", - " mode=\"lines\",\n", - " name=f\"{zone} - Simulation\",\n", - " line=dict(width=2),\n", - " )\n", - " )\n", - "\n", - "# Update layout for better aesthetics and interactivity\n", - "fig.update_layout(\n", - " title=\"Clearing Prices per Zone Over Time: Simulation Results\",\n", - " xaxis_title=\"Time\",\n", - " yaxis_title=\"Clearing Price (EUR/MWh)\",\n", - " legend_title=\"Market Zones\",\n", - " xaxis=dict(\n", - " tickangle=45,\n", - " type=\"date\", # Ensure the x-axis is treated as dates\n", - " ),\n", - " hovermode=\"x unified\", # Unified hover for better comparison\n", - " template=\"plotly_white\", # Clean white background\n", - " width=1000,\n", - " height=600,\n", - ")\n", - "\n", - "# Display the interactive plot\n", - "fig.show()" - ] - }, - { - "cell_type": "markdown", - "id": "b34407b1", - "metadata": {}, - "source": [ - "**Explanation:**\n", - "\n", - "- **Plot Details:**\n", - " - **Lines:** Each zone's clearing price over time is represented by a distinct line.\n", - " - **Interactivity:** The Plotly plot allows for interactive exploration of the data, such as zooming and hovering for specific values.\n", - " - **Aesthetics:** The clean white template and clear labels enhance readability.\n", - "\n", - "- **Interpretation:**\n", - " - **Price Trends:** Observing how clearing prices fluctuate over time within each zone.\n", - " - **Impact of Transmission Capacity:** Comparing price levels between zones can reveal the effects of transmission capacities on market equilibrium. For instance, higher transmission capacity might lead to more price convergence between zones, while zero capacity could result in divergent price levels due to isolated supply and demand dynamics." - ] - }, - { - "cell_type": "markdown", - "id": "3f448fb4", - "metadata": {}, - "source": [ - "## **Conclusion**\n", - "\n", - "Congratulations! You've successfully navigated through the **Market Zone Coupling** process using the **ASSUME Framework**. Here's a quick recap of what you've accomplished:\n", - "\n", - "### **Key Achievements:**\n", - "\n", - "1. **Market Setup:**\n", - " - **Defined Zones and Buses:** Established distinct market zones and configured their connections through transmission lines.\n", - " - **Configured Units:** Set up power plant and demand units within each zone, detailing their operational parameters.\n", - "\n", - "2. **Market Clearing Optimization:**\n", - " - **Implemented Optimization Model:** Utilized a simplified Pyomo-based model to perform market clearing, accounting for bid acceptances and power flows.\n", - " - **Simulated Transmission Scenarios:** Ran simulations with varying transmission capacities to observe their impact on energy distribution and pricing.\n", - "\n", - "3. **Result Analysis:**\n", - " - **Extracted Clearing Prices:** Retrieved and interpreted market prices from the optimization results.\n", - " - **Visualized Outcomes:** Created interactive plots to compare how different transmission capacities influence market dynamics across zones.\n", - "\n", - "### **Key Takeaways:**\n", - "\n", - "- **Impact of Transmission Capacity:** Transmission limits play a crucial role in determining energy flows and price convergence between market zones.\n", - "- **ASSUME Framework Efficiency:** ASSUME streamlines complex market simulations, making it easier to model and analyze multi-zone interactions.\n", - "\n", - "### **Next Steps:**\n", - "\n", - "- **Integrate Renewable Sources:** Expand the model to include renewable energy units and assess their impact on market dynamics.\n", - "- **Scale Up Simulations:** Apply the framework to larger, more complex market scenarios to further test its capabilities.\n", - "\n", - "Thank you for participating in this tutorial! With the foundational knowledge gained, you're now equipped to delve deeper into energy market simulations and leverage the ASSUME framework for more advanced analyses." - ] - } - ], - "metadata": { - "jupytext": { - "cell_metadata_filter": "-all", - "main_language": "python", - "notebook_metadata_filter": "-all" }, - "language_info": { - "name": "python" - } - }, - "nbformat": 4, - "nbformat_minor": 5 + "nbformat": 4, + "nbformat_minor": 5 } From a02eb6f6ff7ec3dd4f86b26da822559e7e1b3875 Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Tue, 8 Oct 2024 10:48:56 +0200 Subject: [PATCH 20/27] - simple path fixes for new xRL tut --- .../notebooks/09_example_Sim_and_xRL.ipynb | 2114 ++++++++++++----- 1 file changed, 1520 insertions(+), 594 deletions(-) diff --git a/examples/notebooks/09_example_Sim_and_xRL.ipynb b/examples/notebooks/09_example_Sim_and_xRL.ipynb index b16964f3..baaac466 100644 --- a/examples/notebooks/09_example_Sim_and_xRL.ipynb +++ b/examples/notebooks/09_example_Sim_and_xRL.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "e62e00c9", + "id": "3ba8dd1e", "metadata": { "id": "e62e00c9" }, @@ -12,7 +12,7 @@ }, { "cell_type": "markdown", - "id": "fb3aa803", + "id": "3a2ed19f", "metadata": { "id": "fb3aa803" }, @@ -22,7 +22,7 @@ }, { "cell_type": "markdown", - "id": "0d793362", + "id": "131db756", "metadata": { "id": "0d793362" }, @@ -32,7 +32,7 @@ }, { "cell_type": "markdown", - "id": "87bdf688", + "id": "667dc923", "metadata": { "id": "87bdf688" }, @@ -52,7 +52,7 @@ " 3.1. [Loading and Preparing Data](#loading-and-preparing-data)\n", "\n", " 3.2. [Creating a SHAP Explainer](#32-creating-a-shap-explainer)\n", - " \n", + "\n", "4. [Visualizing SHAP Values](#visualizing-shap-values)\n", "5. [Conclusion](#conclusion)\n", "6. [Additional Resources](#additional-resources)" @@ -60,7 +60,7 @@ }, { "cell_type": "markdown", - "id": "5e8c7fec", + "id": "ed057a2a", "metadata": { "id": "5e8c7fec" }, @@ -70,7 +70,7 @@ }, { "cell_type": "markdown", - "id": "06e91420", + "id": "3a3562cf", "metadata": { "id": "06e91420" }, @@ -80,7 +80,7 @@ }, { "cell_type": "markdown", - "id": "47b1e7ab", + "id": "4c610270", "metadata": { "id": "47b1e7ab" }, @@ -90,7 +90,7 @@ }, { "cell_type": "markdown", - "id": "ec0717c1", + "id": "9978b51b", "metadata": { "id": "ec0717c1" }, @@ -100,7 +100,7 @@ }, { "cell_type": "markdown", - "id": "0d59bb0a", + "id": "23bed9c3", "metadata": { "id": "0d59bb0a" }, @@ -140,7 +140,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "ee220130", + "id": "02dea28f", "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -162,7 +162,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "Hn_DvrqR7oK2", + "id": "544d38a4", "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -173,99 +173,30 @@ "languageId": "shellscript" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Collecting nbconvert\n", - " Using cached nbconvert-7.16.4-py3-none-any.whl.metadata (8.5 kB)\n", - "Collecting beautifulsoup4 (from nbconvert)\n", - " Using cached beautifulsoup4-4.12.3-py3-none-any.whl.metadata (3.8 kB)\n", - "Collecting bleach!=5.0.0 (from nbconvert)\n", - " Using cached bleach-6.1.0-py3-none-any.whl.metadata (30 kB)\n", - "Collecting defusedxml (from nbconvert)\n", - " Using cached defusedxml-0.7.1-py2.py3-none-any.whl.metadata (32 kB)\n", - "Requirement already satisfied: jinja2>=3.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbconvert) (3.1.4)\n", - "Requirement already satisfied: jupyter-core>=4.7 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbconvert) (5.7.2)\n", - "Collecting jupyterlab-pygments (from nbconvert)\n", - " Using cached jupyterlab_pygments-0.3.0-py3-none-any.whl.metadata (4.4 kB)\n", - "Requirement already satisfied: markupsafe>=2.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbconvert) (2.1.5)\n", - "Collecting mistune<4,>=2.0.3 (from nbconvert)\n", - " Using cached mistune-3.0.2-py3-none-any.whl.metadata (1.7 kB)\n", - "Collecting nbclient>=0.5.0 (from nbconvert)\n", - " Using cached nbclient-0.10.0-py3-none-any.whl.metadata (7.8 kB)\n", - "Requirement already satisfied: nbformat>=5.7 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbconvert) (5.10.4)\n", - "Requirement already satisfied: packaging in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbconvert) (24.1)\n", - "Collecting pandocfilters>=1.4.1 (from nbconvert)\n", - " Using cached pandocfilters-1.5.1-py2.py3-none-any.whl.metadata (9.0 kB)\n", - "Requirement already satisfied: pygments>=2.4.1 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbconvert) (2.18.0)\n", - "Collecting tinycss2 (from nbconvert)\n", - " Using cached tinycss2-1.3.0-py3-none-any.whl.metadata (3.0 kB)\n", - "Requirement already satisfied: traitlets>=5.1 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbconvert) (5.14.3)\n", - "Requirement already satisfied: six>=1.9.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from bleach!=5.0.0->nbconvert) (1.16.0)\n", - "Collecting webencodings (from bleach!=5.0.0->nbconvert)\n", - " Using cached webencodings-0.5.1-py2.py3-none-any.whl.metadata (2.1 kB)\n", - "Requirement already satisfied: platformdirs>=2.5 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jupyter-core>=4.7->nbconvert) (4.2.2)\n", - "Requirement already satisfied: pywin32>=300 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jupyter-core>=4.7->nbconvert) (306)\n", - "Requirement already satisfied: jupyter-client>=6.1.12 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbclient>=0.5.0->nbconvert) (8.6.3)\n", - "Requirement already satisfied: fastjsonschema>=2.15 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbformat>=5.7->nbconvert) (2.20.0)\n", - "Requirement already satisfied: jsonschema>=2.6 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from nbformat>=5.7->nbconvert) (4.23.0)\n", - "Collecting soupsieve>1.2 (from beautifulsoup4->nbconvert)\n", - " Using cached soupsieve-2.6-py3-none-any.whl.metadata (4.6 kB)\n", - "Requirement already satisfied: attrs>=22.2.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jsonschema>=2.6->nbformat>=5.7->nbconvert) (24.2.0)\n", - "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jsonschema>=2.6->nbformat>=5.7->nbconvert) (2023.12.1)\n", - "Requirement already satisfied: referencing>=0.28.4 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jsonschema>=2.6->nbformat>=5.7->nbconvert) (0.35.1)\n", - "Requirement already satisfied: rpds-py>=0.7.1 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jsonschema>=2.6->nbformat>=5.7->nbconvert) (0.20.0)\n", - "Requirement already satisfied: python-dateutil>=2.8.2 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jupyter-client>=6.1.12->nbclient>=0.5.0->nbconvert) (2.9.0)\n", - "Requirement already satisfied: pyzmq>=23.0 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jupyter-client>=6.1.12->nbclient>=0.5.0->nbconvert) (26.2.0)\n", - "Requirement already satisfied: tornado>=6.2 in c:\\users\\tg3533\\appdata\\local\\miniconda3\\envs\\assume-framework\\lib\\site-packages (from jupyter-client>=6.1.12->nbclient>=0.5.0->nbconvert) (6.4.1)\n", - "Using cached nbconvert-7.16.4-py3-none-any.whl (257 kB)\n", - "Using cached bleach-6.1.0-py3-none-any.whl (162 kB)\n", - "Using cached mistune-3.0.2-py3-none-any.whl (47 kB)\n", - "Using cached nbclient-0.10.0-py3-none-any.whl (25 kB)\n", - "Using cached pandocfilters-1.5.1-py2.py3-none-any.whl (8.7 kB)\n", - "Using cached beautifulsoup4-4.12.3-py3-none-any.whl (147 kB)\n", - "Using cached defusedxml-0.7.1-py2.py3-none-any.whl (25 kB)\n", - "Using cached jupyterlab_pygments-0.3.0-py3-none-any.whl (15 kB)\n", - "Using cached tinycss2-1.3.0-py3-none-any.whl (22 kB)\n", - "Using cached soupsieve-2.6-py3-none-any.whl (36 kB)\n", - "Using cached webencodings-0.5.1-py2.py3-none-any.whl (11 kB)\n", - "Installing collected packages: webencodings, tinycss2, soupsieve, pandocfilters, mistune, jupyterlab-pygments, defusedxml, bleach, beautifulsoup4, nbclient, nbconvert\n", - "Successfully installed beautifulsoup4-4.12.3 bleach-6.1.0 defusedxml-0.7.1 jupyterlab-pygments-0.3.0 mistune-3.0.2 nbclient-0.10.0 nbconvert-7.16.4 pandocfilters-1.5.1 soupsieve-2.6 tinycss2-1.3.0 webencodings-0.5.1\n" - ] - } - ], + "outputs": [], "source": [ "#!pip install pyomo\n", "#!apt-get install -y -qq glpk-utils\n", - "!pip install nbconvert" + "#!pip install nbconvert" ] }, { "cell_type": "code", - "execution_count": 1, - "id": "75cd480a", + "execution_count": 3, + "id": "973fc56c", "metadata": { - "id": "75cd480a" + "id": "75cd480a", + "lines_to_next_cell": 0 }, "outputs": [], "source": [ - "import pandas as pd\n", - "\n", - "# import plotly for visualization\n", - "import plotly.graph_objects as go\n", - "\n", - "# import yaml for reading and writing YAML files\n", - "import yaml\n", - "\n", "# Function to display DataFrame in Jupyter" ] }, { "cell_type": "code", - "execution_count": 2, - "id": "bfd1daf2", + "execution_count": 4, + "id": "a578e164", "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -285,6 +216,14 @@ "source": [ "import importlib.util\n", "\n", + "import pandas as pd\n", + "\n", + "# import plotly for visualization\n", + "import plotly.graph_objects as go\n", + "\n", + "# import yaml for reading and writing YAML files\n", + "import yaml\n", + "\n", "# Check if 'google.colab' is available\n", "IN_COLAB = importlib.util.find_spec(\"google.colab\") is not None\n", "\n", @@ -298,62 +237,43 @@ }, { "cell_type": "markdown", - "id": "636ea9ae", + "id": "73087adf", "metadata": { "id": "636ea9ae" }, "source": [ - "Load the created example files from the tutorial before:" + "**Load the created example files from the tutorial before:**\n", + "\n", + "we need to get the results form the market zone splitting tutorial, for which we are defining the RL Agent here. If you are working in colab execute the follwoing cells. If you are not working in colab but on your local machine simply open the respective tuttorial notebook and let it run." ] }, { "cell_type": "code", "execution_count": 5, - "id": "988d3e15", + "id": "116b9e37", "metadata": { "vscode": { "languageId": "shellscript" } }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[WinError 2] Das System kann die angegebene Datei nicht finden: 'content'\n", - "c:\\Users\\tg3533\\Documents\\Code\\assume\\examples\\notebooks\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[NbConvertApp] Converting notebook 08_market_zone_coupling.ipynb to notebook\n", - "C:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\zmq\\_future.py:724: RuntimeWarning: Proactor event loop does not implement add_reader family of methods required for zmq. Registering an additional selector thread for add_reader support via tornado. Use `asyncio.set_event_loop_policy(WindowsSelectorEventLoopPolicy())` to avoid this warning.\n", - " self._get_loop()\n", - "[NbConvertApp] Writing 188324 bytes to output.ipynb\n", - "Der Befehl \"cp\" ist entweder falsch geschrieben oder\n", - "konnte nicht gefunden werden.\n" - ] - } - ], + "outputs": [], "source": [ - "#if used locally\n", + "# if used locally\n", "#%cd assume/examples/notebooks/\n", "\n", "# if used in colab\n", "#%cd assume-repo/examples/notebooks/\n", "\n", "#!jupyter nbconvert --to notebook --execute --ExecutePreprocessor.timeout=60 --output output.ipynb 08_market_zone_coupling.ipynb\n", - " \n", + "\n", "#%cd content\n", "#!cp -r assume-repo/examples/notebooks/inputs ." ] }, { "cell_type": "code", - "execution_count": 3, - "id": "233f315b", + "execution_count": 6, + "id": "9871a2a5", "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -384,9 +304,6 @@ "demand_units = pd.read_csv(os.path.join(input_dir, \"demand_units.csv\"))\n", "demand_df = pd.read_csv(os.path.join(input_dir, \"demand_df.csv\"))\n", "\n", - "# extend demand_df for another day with the same demand profile\n", - "demand_df = pd.concat([demand_df, demand_df])\n", - "demand_df.index = pd.date_range(start=\"2019-01-01\", periods=96, freq=\"h\")\n", "\n", "# Read the fuel prices DataFrame from CSV file\n", "fuel_prices_df = pd.read_csv(os.path.join(input_dir, \"fuel_prices_df.csv\"))\n", @@ -397,7 +314,7 @@ }, { "cell_type": "markdown", - "id": "6985289b", + "id": "bcfa21b7", "metadata": { "id": "6985289b" }, @@ -409,8 +326,8 @@ }, { "cell_type": "code", - "execution_count": 6, - "id": "b205256f", + "execution_count": 7, + "id": "ac7d12fb", "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -441,11 +358,6 @@ " \n", " \n", " \n", - " Unnamed: 0.3\n", - " Unnamed: 0.2\n", - " Unnamed: 0.1\n", - " Unnamed: 0\n", - " name\n", " technology\n", " bidding_zonal\n", " fuel_type\n", @@ -457,15 +369,23 @@ " node\n", " unit_operator\n", " \n", + " \n", + " name\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " 0\n", - " Unit 1\n", + " Unit 1\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -478,12 +398,7 @@ " Operator North\n", " \n", " \n", - " 1\n", - " 1\n", - " 1\n", - " 1\n", - " 1\n", - " Unit 2\n", + " Unit 2\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -496,12 +411,7 @@ " Operator North\n", " \n", " \n", - " 2\n", - " 2\n", - " 2\n", - " 2\n", - " 2\n", - " Unit 3\n", + " Unit 3\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -514,12 +424,7 @@ " Operator North\n", " \n", " \n", - " 3\n", - " 3\n", - " 3\n", - " 3\n", - " 3\n", - " Unit 4\n", + " Unit 4\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -532,12 +437,7 @@ " Operator North\n", " \n", " \n", - " 4\n", - " 4\n", - " 4\n", - " 4\n", - " 4\n", - " Unit 5\n", + " Unit 5\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -550,12 +450,7 @@ " Operator North\n", " \n", " \n", - " 5\n", - " 5\n", - " 5\n", - " 5\n", - " 5\n", - " Unit 6\n", + " Unit 6\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -568,12 +463,7 @@ " Operator North\n", " \n", " \n", - " 6\n", - " 6\n", - " 6\n", - " 6\n", - " 6\n", - " Unit 7\n", + " Unit 7\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -586,12 +476,7 @@ " Operator North\n", " \n", " \n", - " 7\n", - " 7\n", - " 7\n", - " 7\n", - " 7\n", - " Unit 8\n", + " Unit 8\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -604,12 +489,7 @@ " Operator North\n", " \n", " \n", - " 8\n", - " 8\n", - " 8\n", - " 8\n", - " 8\n", - " Unit 9\n", + " Unit 9\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -622,12 +502,7 @@ " Operator North\n", " \n", " \n", - " 9\n", - " 9\n", - " 9\n", - " 9\n", - " 9\n", - " Unit 10\n", + " Unit 10\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -640,12 +515,7 @@ " Operator North\n", " \n", " \n", - " 10\n", - " 10\n", - " 10\n", - " 10\n", - " 10\n", - " Unit 11\n", + " Unit 11\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -658,12 +528,7 @@ " Operator North\n", " \n", " \n", - " 11\n", - " 11\n", - " 11\n", - " 11\n", - " 11\n", - " Unit 12\n", + " Unit 12\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -676,12 +541,7 @@ " Operator North\n", " \n", " \n", - " 12\n", - " 12\n", - " 12\n", - " 12\n", - " 12\n", - " Unit 13\n", + " Unit 13\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -694,12 +554,7 @@ " Operator North\n", " \n", " \n", - " 13\n", - " 13\n", - " 13\n", - " 13\n", - " 13\n", - " Unit 14\n", + " Unit 14\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -712,12 +567,7 @@ " Operator North\n", " \n", " \n", - " 14\n", - " 14\n", - " 14\n", - " 14\n", - " 14\n", - " Unit 15\n", + " Unit 15\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -730,12 +580,7 @@ " Operator North\n", " \n", " \n", - " 15\n", - " 15\n", - " 15\n", - " 15\n", - " 15\n", - " Unit 16\n", + " Unit 16\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -748,12 +593,7 @@ " Operator South\n", " \n", " \n", - " 16\n", - " 16\n", - " 16\n", - " 16\n", - " 16\n", - " Unit 17\n", + " Unit 17\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -766,12 +606,7 @@ " Operator South\n", " \n", " \n", - " 17\n", - " 17\n", - " 17\n", - " 17\n", - " 17\n", - " Unit 18\n", + " Unit 18\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -784,12 +619,7 @@ " Operator South\n", " \n", " \n", - " 18\n", - " 18\n", - " 18\n", - " 18\n", - " 18\n", - " Unit 19\n", + " Unit 19\n", " nuclear\n", " naive_eom\n", " uranium\n", @@ -802,12 +632,7 @@ " Operator South\n", " \n", " \n", - " 19\n", - " 19\n", - " 19\n", - " 19\n", - " 19\n", - " Unit 20\n", + " Unit 20\n", " nuclear\n", " pp_learning\n", " uranium\n", @@ -824,74 +649,54 @@ "" ], "text/plain": [ - " Unnamed: 0.3 Unnamed: 0.2 Unnamed: 0.1 Unnamed: 0 name technology \\\n", - "0 0 0 0 0 Unit 1 nuclear \n", - "1 1 1 1 1 Unit 2 nuclear \n", - "2 2 2 2 2 Unit 3 nuclear \n", - "3 3 3 3 3 Unit 4 nuclear \n", - "4 4 4 4 4 Unit 5 nuclear \n", - "5 5 5 5 5 Unit 6 nuclear \n", - "6 6 6 6 6 Unit 7 nuclear \n", - "7 7 7 7 7 Unit 8 nuclear \n", - "8 8 8 8 8 Unit 9 nuclear \n", - "9 9 9 9 9 Unit 10 nuclear \n", - "10 10 10 10 10 Unit 11 nuclear \n", - "11 11 11 11 11 Unit 12 nuclear \n", - "12 12 12 12 12 Unit 13 nuclear \n", - "13 13 13 13 13 Unit 14 nuclear \n", - "14 14 14 14 14 Unit 15 nuclear \n", - "15 15 15 15 15 Unit 16 nuclear \n", - "16 16 16 16 16 Unit 17 nuclear \n", - "17 17 17 17 17 Unit 18 nuclear \n", - "18 18 18 18 18 Unit 19 nuclear \n", - "19 19 19 19 19 Unit 20 nuclear \n", - "\n", - " bidding_zonal fuel_type emission_factor max_power min_power efficiency \\\n", - "0 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "1 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "2 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "3 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "4 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "5 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "6 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "7 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "8 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "9 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "10 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "11 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "12 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "13 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "14 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "15 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "16 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "17 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "18 naive_eom uranium 0.0 1000.0 0.0 0.3 \n", - "19 pp_learning uranium 0.0 5000.0 0.0 0.3 \n", + " technology bidding_zonal fuel_type emission_factor max_power \\\n", + "name \n", + "Unit 1 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 2 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 3 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 4 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 5 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 6 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 7 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 8 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 9 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 10 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 11 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 12 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 13 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 14 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 15 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 16 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 17 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 18 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 19 nuclear naive_eom uranium 0.0 1000.0 \n", + "Unit 20 nuclear pp_learning uranium 0.0 5000.0 \n", "\n", - " additional_cost node unit_operator \n", - "0 5 north_1 Operator North \n", - "1 6 north_1 Operator North \n", - "2 7 north_1 Operator North \n", - "3 8 north_1 Operator North \n", - "4 9 north_1 Operator North \n", - "5 10 north_1 Operator North \n", - "6 11 north_1 Operator North \n", - "7 12 north_1 Operator North \n", - "8 13 north_2 Operator North \n", - "9 14 north_2 Operator North \n", - "10 15 north_2 Operator North \n", - "11 16 north_2 Operator North \n", - "12 17 north_2 Operator North \n", - "13 18 north_2 Operator North \n", - "14 19 north_2 Operator North \n", - "15 20 south Operator South \n", - "16 21 south Operator South \n", - "17 22 south Operator South \n", - "18 23 south Operator South \n", - "19 24 south Operator-RL " + " min_power efficiency additional_cost node unit_operator \n", + "name \n", + "Unit 1 0.0 0.3 5 north_1 Operator North \n", + "Unit 2 0.0 0.3 6 north_1 Operator North \n", + "Unit 3 0.0 0.3 7 north_1 Operator North \n", + "Unit 4 0.0 0.3 8 north_1 Operator North \n", + "Unit 5 0.0 0.3 9 north_1 Operator North \n", + "Unit 6 0.0 0.3 10 north_1 Operator North \n", + "Unit 7 0.0 0.3 11 north_1 Operator North \n", + "Unit 8 0.0 0.3 12 north_1 Operator North \n", + "Unit 9 0.0 0.3 13 north_2 Operator North \n", + "Unit 10 0.0 0.3 14 north_2 Operator North \n", + "Unit 11 0.0 0.3 15 north_2 Operator North \n", + "Unit 12 0.0 0.3 16 north_2 Operator North \n", + "Unit 13 0.0 0.3 17 north_2 Operator North \n", + "Unit 14 0.0 0.3 18 north_2 Operator North \n", + "Unit 15 0.0 0.3 19 north_2 Operator North \n", + "Unit 16 0.0 0.3 20 south Operator South \n", + "Unit 17 0.0 0.3 21 south Operator South \n", + "Unit 18 0.0 0.3 22 south Operator South \n", + "Unit 19 0.0 0.3 23 south Operator South \n", + "Unit 20 0.0 0.3 24 south Operator-RL " ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -907,13 +712,16 @@ "# assig specific RL unit operator to plant\n", "powerplant_units.loc[19, \"unit_operator\"] = \"Operator-RL\"\n", "\n", + "# make name column to index\n", + "powerplant_units.set_index(\"name\", inplace=True, drop=True)\n", + "\n", "powerplant_units" ] }, { "cell_type": "code", - "execution_count": 7, - "id": "QBTGrw62_5I7", + "execution_count": 8, + "id": "9316ac03", "metadata": { "id": "QBTGrw62_5I7" }, @@ -925,7 +733,7 @@ }, { "cell_type": "markdown", - "id": "cce0e8b4", + "id": "8f995ab9", "metadata": { "id": "cce0e8b4" }, @@ -935,8 +743,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "id": "9c555ce9", + "execution_count": 9, + "id": "03cc1a12", "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -980,7 +788,6 @@ " },\n", " \"learning_config\": {\n", " \"continue_learning\": False,\n", - " \"trained_policies_save_path\": \"null\",\n", " \"max_bid_price\": 100,\n", " \"algorithm\": \"matd3\",\n", " \"learning_rate\": 0.001,\n", @@ -1011,7 +818,7 @@ }, { "cell_type": "markdown", - "id": "3f0f38fb", + "id": "59a880d8", "metadata": { "id": "3f0f38fb" }, @@ -1021,8 +828,8 @@ }, { "cell_type": "code", - "execution_count": 4, - "id": "201251c6", + "execution_count": 10, + "id": "823db62a", "metadata": { "cellView": "form", "id": "201251c6" @@ -1232,7 +1039,7 @@ }, { "cell_type": "markdown", - "id": "dcacfe26", + "id": "d52cb7d4", "metadata": { "id": "dcacfe26" }, @@ -1244,8 +1051,8 @@ }, { "cell_type": "code", - "execution_count": 5, - "id": "bfadf522", + "execution_count": 11, + "id": "9092a097", "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -1269,6 +1076,33 @@ "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", "INFO:assume.scenario.loader_csv:price_forecasts not found. Returning None\n", "INFO:assume.scenario.loader_csv:temperature not found. Returning None\n", + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n", + "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", + "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", + "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", + "INFO:assume.scenario.loader_csv:availability_df not found. Returning None\n", + "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", + "INFO:assume.scenario.loader_csv:price_forecasts not found. Returning None\n", + "INFO:assume.scenario.loader_csv:temperature not found. Returning None\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_1 2019-01-01 23:00:00: : 82801it [00:03, 21334.78it/s]\n", + "Training Episodes: 10%|█ | 1/10 [00:03<00:35, 3.94s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "INFO:assume.scenario.loader_csv:Adding markets\n", "INFO:assume.scenario.loader_csv:Read units from file\n", "INFO:assume.scenario.loader_csv:Adding power_plant units\n", @@ -1280,161 +1114,1287 @@ "name": "stderr", "output_type": "stream", "text": [ - " 0%| | 0/82800 [00:00 exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 00:00:00: 4%|▍ | 3601/82800 [00:00<00:05, 15043.53it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpzodwb_u6.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmphiz0tfsu.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp6wwf6xyg.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp6wwf6xyg.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp6wwf6xyg.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpwjttcr5q.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp3dv4zbp4.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp5z5lpxxw.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp5z5lpxxw.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp5z5lpxxw.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 02:00:00: 13%|█▎ | 10801/82800 [00:00<00:02, 28219.50it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9q5q22kw.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpohfetpqf.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpc1bc7p68.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpc1bc7p68.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpc1bc7p68.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpcvn6kp04.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp5c23xr6s.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpm93ulvjn.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpm93ulvjn.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpm93ulvjn.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 04:00:00: 22%|██▏ | 18001/82800 [00:00<00:01, 32720.76it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpisxw9ix8.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpga9w7msy.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpthu0lqjt.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpthu0lqjt.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpthu0lqjt.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmppen1aa2y.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp3rqljc6n.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmprnbu0mo4.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmprnbu0mo4.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmprnbu0mo4.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 06:00:00: 30%|███ | 25201/82800 [00:00<00:01, 34611.39it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpscthkcqt.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp3jg09edi.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpj89p1lfm.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpj89p1lfm.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpj89p1lfm.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp6uk22o84.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp1f6_ql3l.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp88uo7gl9.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp88uo7gl9.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp88uo7gl9.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 08:00:00: 39%|███▉ | 32401/82800 [00:00<00:01, 35574.53it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpq15d8y1v.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpb7_9oq3e.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpxtjtkez5.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpxtjtkez5.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpxtjtkez5.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp4kvnq040.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpgb6uksuj.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpjixxyriz.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpjixxyriz.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpjixxyriz.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 10:00:00: 48%|████▊ | 39601/82800 [00:01<00:01, 37188.77it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_wfe8xgm.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpwezb1qq8.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_sdlf6mq.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_sdlf6mq.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_sdlf6mq.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp0a9fbozj.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpjk44ceob.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpuy11rdv7.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpuy11rdv7.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpuy11rdv7.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 12:00:00: 57%|█████▋ | 46801/82800 [00:01<00:01, 35811.70it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpiqujlpl7.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpmid8tbjp.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpz5h9o2t6.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpz5h9o2t6.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpz5h9o2t6.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp31ujp0qm.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpbmvl8_91.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp883g3uge.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp883g3uge.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp883g3uge.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 14:00:00: 65%|██████▌ | 54001/82800 [00:01<00:00, 32012.85it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptpjdcbtd.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpv6i_y9hq.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp2buno1ex.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp2buno1ex.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp2buno1ex.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 15:00:00: 70%|██████▉ | 57601/82800 [00:01<00:00, 32390.30it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp29cgs_0f.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpg662dy1b.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp7y5zb_vx.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp7y5zb_vx.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp7y5zb_vx.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 16:00:00: 74%|███████▍ | 61201/82800 [00:01<00:00, 32580.89it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpgkj26dx8.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp885496ex.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp80xs7oil.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp80xs7oil.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp80xs7oil.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpvvyzn7z9.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp6m_69yna.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpg756ah2x.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpg756ah2x.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpg756ah2x.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 18:00:00: 83%|████████▎ | 68401/82800 [00:02<00:00, 34332.05it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpocvop3u1.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9ojfuaoc.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp338vf917.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp338vf917.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp338vf917.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpthb_s5k8.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp8sa7td7n.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp52zz_tor.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp52zz_tor.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp52zz_tor.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 20:00:00: 91%|█████████▏| 75601/82800 [00:02<00:00, 34505.65it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp53yqi16u.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpkc57k0tt.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9hwnjfn4.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9hwnjfn4.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9hwnjfn4.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 21:00:00: 96%|█████████▌| 79201/82800 [00:02<00:00, 34451.35it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", + "ERROR:pyomo.opt:Solver log:\n", + "GLPSOL--GLPK LP/MIP Solver 5.0\n", + "Parameter(s) specified in the command line:\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp8mgt8nwl.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_t4nf7ek.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpuagvdnmp.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpuagvdnmp.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpuagvdnmp.pyomo.lp:27: constraints section missing\n", + "CPLEX LP file processing error\n", + "\n", + "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", + "ERROR:asyncio:Task exception was never retrieved\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", + " result = coro.send(None)\n", + " ^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", + " return await self._coro\n", + " ^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", + " raise e\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", + " ) = self.clear(self.all_orders, market_products)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", + " instance, results = market_clearing_opt(\n", + " ^^^^^^^^^^^^^^^^^^^^\n", + " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", + " results = solver.solve(instance, options=options)\n", + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", + " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", + " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 23:00:00: : 82801it [00:02, 33917.07it/s] \n" + ] + } + ], + "source": [ + "# import the main World class and the load_scenario_folder functions from assume\n", + "from assume import World\n", + "from assume.scenario.loader_csv import load_scenario_folder\n", + "\n", + "# Define paths for input and output data\n", + "csv_path = \"outputs\"\n", + "\n", + "# Define the data format and database URI\n", + "# Use \"local_db\" for SQLite database or \"timescale\" for TimescaleDB in Docker\n", + "\n", + "# Create directories if they don't exist\n", + "os.makedirs(csv_path, exist_ok=True)\n", + "os.makedirs(\"local_db\", exist_ok=True)\n", + "\n", + "data_format = \"local_db\" # \"local_db\" or \"timescale\"\n", + "\n", + "if data_format == \"local_db\":\n", + " db_uri = \"sqlite:///local_db/assume_db.db\"\n", + "elif data_format == \"timescale\":\n", + " db_uri = \"postgresql://assume:assume@localhost:5432/assume\"\n", + "\n", + "# Create the World instance\n", + "world = World(database_uri=db_uri, export_csv_path=csv_path)\n", + "\n", + "# Load the scenario by providing the world instance\n", + "# The path to the inputs folder and the scenario name (subfolder in inputs)\n", + "# and the study case name (which config to use for the simulation)\n", + "load_scenario_folder(\n", + " world,\n", + " inputs_path=inputs_path,\n", + " scenario=\"tutorial_08\",\n", + " study_case=\"zonal_case\",\n", + ")\n", + "\n", + "# run learning if learning mode is enabled\n", + "# needed as we simulate the modelling horizon multiple times to train reinforcement learning run_learning( world, inputs_path=input_path, scenario=scenario, study_case=study_case, )\n", + "\n", + "if world.learning_config.get(\"learning_mode\", False):\n", + " run_learning(\n", + " world,\n", + " inputs_path=inputs_path,\n", + " scenario=\"tutorial_08\",\n", + " study_case=\"zonal_case\",\n", + " )\n", + "\n", + "# Run the simulation\n", + "world.run()" + ] + }, + { + "cell_type": "markdown", + "id": "32d1f8e9", + "metadata": { + "id": "2194f71b" + }, + "source": [ + "**Generate same plotly figure**\n", + "\n", + "We use the same code described in the amarket zone tutprial to generate the plotly curve displaying the market price." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "96bfa2ee", + "metadata": { + "id": "bdb21cbe" + }, + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: 'outputs/tutorial_08_zonal_case\\\\market_meta.csv'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[12], line 9\u001b[0m\n\u001b[0;32m 6\u001b[0m market_meta_path \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(output_dir, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmarket_meta.csv\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 8\u001b[0m \u001b[38;5;66;03m# Load the market_meta.csv file\u001b[39;00m\n\u001b[1;32m----> 9\u001b[0m market_meta \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread_csv\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmarket_meta_path\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mindex_col\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtime\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mparse_dates\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[0;32m 10\u001b[0m \u001b[38;5;66;03m# drop the first column\u001b[39;00m\n\u001b[0;32m 11\u001b[0m market_meta \u001b[38;5;241m=\u001b[39m market_meta\u001b[38;5;241m.\u001b[39mdrop(columns\u001b[38;5;241m=\u001b[39mmarket_meta\u001b[38;5;241m.\u001b[39mcolumns[\u001b[38;5;241m0\u001b[39m])\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\io\\parsers\\readers.py:1026\u001b[0m, in \u001b[0;36mread_csv\u001b[1;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, date_format, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options, dtype_backend)\u001b[0m\n\u001b[0;32m 1013\u001b[0m kwds_defaults \u001b[38;5;241m=\u001b[39m _refine_defaults_read(\n\u001b[0;32m 1014\u001b[0m dialect,\n\u001b[0;32m 1015\u001b[0m delimiter,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1022\u001b[0m dtype_backend\u001b[38;5;241m=\u001b[39mdtype_backend,\n\u001b[0;32m 1023\u001b[0m )\n\u001b[0;32m 1024\u001b[0m kwds\u001b[38;5;241m.\u001b[39mupdate(kwds_defaults)\n\u001b[1;32m-> 1026\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_read\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\io\\parsers\\readers.py:620\u001b[0m, in \u001b[0;36m_read\u001b[1;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[0;32m 617\u001b[0m _validate_names(kwds\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnames\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m))\n\u001b[0;32m 619\u001b[0m \u001b[38;5;66;03m# Create the parser.\u001b[39;00m\n\u001b[1;32m--> 620\u001b[0m parser \u001b[38;5;241m=\u001b[39m \u001b[43mTextFileReader\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 622\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m chunksize \u001b[38;5;129;01mor\u001b[39;00m iterator:\n\u001b[0;32m 623\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m parser\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\io\\parsers\\readers.py:1620\u001b[0m, in \u001b[0;36mTextFileReader.__init__\u001b[1;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[0;32m 1617\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moptions[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m kwds[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[0;32m 1619\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles: IOHandles \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m-> 1620\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_engine \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_engine\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mengine\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\io\\parsers\\readers.py:1880\u001b[0m, in \u001b[0;36mTextFileReader._make_engine\u001b[1;34m(self, f, engine)\u001b[0m\n\u001b[0;32m 1878\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m mode:\n\u001b[0;32m 1879\u001b[0m mode \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m-> 1880\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles \u001b[38;5;241m=\u001b[39m \u001b[43mget_handle\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 1881\u001b[0m \u001b[43m \u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1882\u001b[0m \u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1883\u001b[0m \u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mencoding\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1884\u001b[0m \u001b[43m \u001b[49m\u001b[43mcompression\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcompression\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1885\u001b[0m \u001b[43m \u001b[49m\u001b[43mmemory_map\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmemory_map\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1886\u001b[0m \u001b[43m \u001b[49m\u001b[43mis_text\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mis_text\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1887\u001b[0m \u001b[43m \u001b[49m\u001b[43merrors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mencoding_errors\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstrict\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1888\u001b[0m \u001b[43m \u001b[49m\u001b[43mstorage_options\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstorage_options\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1889\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1890\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 1891\u001b[0m f \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles\u001b[38;5;241m.\u001b[39mhandle\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\io\\common.py:873\u001b[0m, in \u001b[0;36mget_handle\u001b[1;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[0m\n\u001b[0;32m 868\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(handle, \u001b[38;5;28mstr\u001b[39m):\n\u001b[0;32m 869\u001b[0m \u001b[38;5;66;03m# Check whether the filename is to be opened in binary mode.\u001b[39;00m\n\u001b[0;32m 870\u001b[0m \u001b[38;5;66;03m# Binary mode does not support 'encoding' and 'newline'.\u001b[39;00m\n\u001b[0;32m 871\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ioargs\u001b[38;5;241m.\u001b[39mencoding \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m ioargs\u001b[38;5;241m.\u001b[39mmode:\n\u001b[0;32m 872\u001b[0m \u001b[38;5;66;03m# Encoding\u001b[39;00m\n\u001b[1;32m--> 873\u001b[0m handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mopen\u001b[39m(\n\u001b[0;32m 874\u001b[0m handle,\n\u001b[0;32m 875\u001b[0m ioargs\u001b[38;5;241m.\u001b[39mmode,\n\u001b[0;32m 876\u001b[0m encoding\u001b[38;5;241m=\u001b[39mioargs\u001b[38;5;241m.\u001b[39mencoding,\n\u001b[0;32m 877\u001b[0m errors\u001b[38;5;241m=\u001b[39merrors,\n\u001b[0;32m 878\u001b[0m newline\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 879\u001b[0m )\n\u001b[0;32m 880\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 881\u001b[0m \u001b[38;5;66;03m# Binary mode\u001b[39;00m\n\u001b[0;32m 882\u001b[0m handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mopen\u001b[39m(handle, ioargs\u001b[38;5;241m.\u001b[39mmode)\n", + "\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'outputs/tutorial_08_zonal_case\\\\market_meta.csv'" + ] + } + ], + "source": [ + "# @ title make makret price plotly figure\n", + "\n", "\n", "# Define the path to the simulation output\n", "output_dir = \"outputs/tutorial_08_zonal_case\"\n", @@ -1509,7 +2469,7 @@ }, { "cell_type": "markdown", - "id": "e77c41cf", + "id": "f82620fb", "metadata": { "id": "e77c41cf" }, @@ -1521,7 +2481,7 @@ }, { "cell_type": "markdown", - "id": "cbf18570", + "id": "79dcba85", "metadata": { "id": "cbf18570" }, @@ -1531,7 +2491,7 @@ }, { "cell_type": "markdown", - "id": "a5ac592c", + "id": "27a60e46", "metadata": { "id": "a5ac592c" }, @@ -1544,7 +2504,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ae266ecb", + "id": "b9f4d746", "metadata": { "id": "ae266ecb", "vscode": { @@ -1553,14 +2513,14 @@ }, "outputs": [], "source": [ - "!pip install matplotlib\n", - "!pip install shap==0.42.1\n", - "!pip install scikit-learn==1.3.0" + "#!pip install matplotlib\n", + "#!pip install shap==0.42.1\n", + "#!pip install scikit-learn==1.3.0" ] }, { "cell_type": "markdown", - "id": "5069ff93", + "id": "0423e316", "metadata": { "id": "5069ff93" }, @@ -1614,7 +2574,7 @@ }, { "cell_type": "markdown", - "id": "21d49573", + "id": "39959bf3", "metadata": { "id": "21d49573" }, @@ -1624,7 +2584,7 @@ }, { "cell_type": "markdown", - "id": "d16712fc", + "id": "1a6567e4", "metadata": { "id": "d16712fc" }, @@ -1634,7 +2594,7 @@ }, { "cell_type": "markdown", - "id": "2c0c1262", + "id": "f5fa5479", "metadata": { "id": "2c0c1262" }, @@ -1645,7 +2605,7 @@ }, { "cell_type": "markdown", - "id": "2fb6fc14", + "id": "df893c68", "metadata": { "id": "2fb6fc14" }, @@ -1655,7 +2615,7 @@ }, { "cell_type": "markdown", - "id": "e0b69db6", + "id": "d2145dcf", "metadata": { "id": "e0b69db6" }, @@ -1667,7 +2627,7 @@ }, { "cell_type": "markdown", - "id": "f870b3e8", + "id": "e3de2358", "metadata": { "id": "f870b3e8" }, @@ -1677,7 +2637,7 @@ }, { "cell_type": "markdown", - "id": "aaa7c3d3", + "id": "b6de4111", "metadata": { "id": "aaa7c3d3" }, @@ -1688,7 +2648,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b6ee4f28", + "id": "0a23dfa1", "metadata": { "id": "b6ee4f28" }, @@ -1703,9 +2663,10 @@ }, { "cell_type": "markdown", - "id": "aa268f14", + "id": "b44ce6d3", "metadata": { - "id": "aa268f14" + "id": "aa268f14", + "lines_to_next_cell": 0 }, "source": [ "the simulation common.py contains utility functions and class definitions\n", @@ -1714,9 +2675,10 @@ }, { "cell_type": "markdown", - "id": "f866385a", + "id": "efc3087c", "metadata": { - "id": "f866385a" + "id": "f866385a", + "lines_to_next_cell": 0 }, "source": [ "**Define the Actor Neural Network Class**" @@ -1724,9 +2686,10 @@ }, { "cell_type": "markdown", - "id": "ff7cf03a", + "id": "1a7c97b7", "metadata": { - "id": "ff7cf03a" + "id": "ff7cf03a", + "lines_to_next_cell": 0 }, "source": [ "We define the actor neural network class that will be used to predict actions based on observations." @@ -1735,10 +2698,9 @@ { "cell_type": "code", "execution_count": null, - "id": "7216677a", + "id": "168757a6", "metadata": { - "id": "7216677a", - "lines_to_next_cell": 1 + "id": "7216677a" }, "outputs": [], "source": [ @@ -1748,55 +2710,25 @@ { "cell_type": "code", "execution_count": null, - "id": "5a4d6e17", + "id": "2f4d6257", "metadata": { "id": "5a4d6e17" }, "outputs": [], "source": [ - "def load_config(file_path):\n", - " \"\"\"\n", - " Load the configuration file.\n", - " \"\"\"\n", - " with open(file_path) as file:\n", - " config = yaml.safe_load(file)\n", - " return config\n", + "# which actor is the RL actor\n", + "ACTOR_NUM = len(powerplant_units) # 20\n", "\n", - "\n", - "# Some Variable definitions:\n", - "\n", - "EPISODES = 3\n", - "NUMBER_OF_AGENTS = 1\n", - "SIM_TIMESPAN_DAYS = 31\n", - "ACTOR_NUM = 1\n", - "EXAMPLE = 1\n", - "\n", - "SIM_TIMESPAN_HOURS = SIM_TIMESPAN_DAYS * 24\n", - "\n", - "# actor 1-5 are the default non-rl actors, so we just skip those\n", - "ACTOR_NUM_ADJ = ACTOR_NUM + 6 # 6 #9\n", - "\n", - "\n", - "# Get the current working directory\n", - "current_dir = os.getcwd()\n", - "# Go up one level\n", - "one_level_up = os.path.dirname(current_dir)\n", - "# Go up two levels\n", - "two_levels_up = os.path.dirname(one_level_up)\n", - "\n", - "# Paths\n", - "path = os.path.join(\n", - " two_levels_up,\n", - " f\"assume/examples/output/{EXAMPLE}/{EPISODES}_episodes_{SIM_TIMESPAN_DAYS}_simDays_{NUMBER_OF_AGENTS}_rlAgents\",\n", - ")\n", - "actor_path = os.path.join(path, f\"actor_pp_{ACTOR_NUM_ADJ}.pt\")\n", - "\n", - "# DEFINTIONS" + "# Path to actor we want to analyse\n", + "actor_path = os.path.join(\n", + " input_dir,\n", + " \"learned_strategies/zonal_case/avg_reward_eval_policies/actor_pp_{ACTOR_NUM}.pt\",\n", + ")" ] }, { "cell_type": "markdown", - "id": "ddfe95d9", + "id": "bd023be3", "metadata": { "id": "ddfe95d9" }, @@ -1807,7 +2739,7 @@ { "cell_type": "code", "execution_count": null, - "id": "44862f06", + "id": "f38c74cb", "metadata": { "id": "44862f06" }, @@ -1816,10 +2748,12 @@ "# @title Load observations function\n", "\n", "\n", - "def load_observations(path, ACTOR_NUM, feature_names):\n", + "def load_observations(path, feature_names):\n", " # Load observations\n", " obs_path = f\"{path}/buffer_obs.json\"\n", "\n", + " print(obs_path)\n", + "\n", " with open(obs_path) as file:\n", " json_data = json.load(file)\n", "\n", @@ -1833,17 +2767,12 @@ " # filter only first 700 observations\n", " input_data = input_data[:700]\n", "\n", - " if NUMBER_OF_AGENTS == 1:\n", - " return pd.DataFrame(input_data, columns=feature_names), input_data\n", - " else:\n", - " return pd.DataFrame(\n", - " input_data[:, ACTOR_NUM], columns=feature_names\n", - " ), input_data[:, ACTOR_NUM]" + " return pd.DataFrame(input_data, columns=feature_names), input_data" ] }, { "cell_type": "markdown", - "id": "444b8679", + "id": "0e5eb3d3", "metadata": { "id": "444b8679" }, @@ -1853,7 +2782,7 @@ }, { "cell_type": "markdown", - "id": "7f218d15", + "id": "105cdba0", "metadata": { "id": "7f218d15" }, @@ -1864,21 +2793,21 @@ { "cell_type": "code", "execution_count": null, - "id": "8fa78b12", + "id": "47473ec8", "metadata": { "id": "8fa78b12" }, "outputs": [], "source": [ "path = (\n", - " inputs_path + \"/example_02a/learned_strategies/base/buffer_obs\"\n", + " input_dir + \"/learned_strategies/zonal_case/buffer_obs\"\n", ") # Replace with your data path" ] }, { "cell_type": "code", "execution_count": null, - "id": "8f9189ca", + "id": "76fdf5d0", "metadata": { "id": "8f9189ca" }, @@ -1893,7 +2822,7 @@ }, { "cell_type": "markdown", - "id": "6c5f1986", + "id": "6126c1a9", "metadata": { "id": "6c5f1986" }, @@ -1903,7 +2832,7 @@ }, { "cell_type": "markdown", - "id": "36ae8f9e", + "id": "4d38d028", "metadata": { "id": "36ae8f9e" }, @@ -1914,20 +2843,20 @@ { "cell_type": "code", "execution_count": null, - "id": "d522969d", + "id": "1819ff26", "metadata": { "id": "d522969d" }, "outputs": [], "source": [ - "df_obs, input_data = load_observations(path, ACTOR_NUM, feature_names)\n", + "df_obs, input_data = load_observations(path, feature_names)\n", "\n", "df_obs" ] }, { "cell_type": "markdown", - "id": "5d8b9dcf", + "id": "509b19bf", "metadata": { "id": "5d8b9dcf" }, @@ -1937,7 +2866,7 @@ }, { "cell_type": "markdown", - "id": "b1b50488", + "id": "bf2b101a", "metadata": { "id": "b1b50488" }, @@ -1948,7 +2877,7 @@ { "cell_type": "code", "execution_count": null, - "id": "4da4de57", + "id": "c27178fe", "metadata": { "id": "4da4de57" }, @@ -1963,18 +2892,12 @@ { "cell_type": "code", "execution_count": null, - "id": "37adecfa", + "id": "35a088d5", "metadata": { "id": "37adecfa" }, "outputs": [], "source": [ - "ACTOR_NUM = 1 # Replace with the actor number or identifier\n", - "actor_path = (\n", - " inputs_path\n", - " + \"/example_02a/learned_strategies/base/last_policies/actors/actor_pp_6.pt\"\n", - ") # Path to the trained actor model\n", - "\n", "# Load the trained model parameters\n", "model_state = th.load(actor_path, map_location=th.device(\"cpu\"))\n", "model.load_state_dict(model_state[\"actor\"])" @@ -1982,7 +2905,7 @@ }, { "cell_type": "markdown", - "id": "d4a63712", + "id": "fe43c9c6", "metadata": { "id": "d4a63712" }, @@ -1993,7 +2916,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e6460cfb", + "id": "4ee77fed", "metadata": { "id": "e6460cfb" }, @@ -2010,7 +2933,7 @@ { "cell_type": "code", "execution_count": null, - "id": "be91cd97", + "id": "9cf0d9b7", "metadata": { "id": "be91cd97", "lines_to_next_cell": 2 @@ -2026,9 +2949,10 @@ { "cell_type": "code", "execution_count": null, - "id": "b21c93c7", + "id": "f86348b7", "metadata": { - "id": "b21c93c7" + "id": "b21c93c7", + "lines_to_next_cell": 2 }, "outputs": [], "source": [ @@ -2044,7 +2968,7 @@ }, { "cell_type": "markdown", - "id": "ddd1ab1e", + "id": "633c5100", "metadata": { "id": "ddd1ab1e" }, @@ -2054,9 +2978,10 @@ }, { "cell_type": "markdown", - "id": "ae7b108b", + "id": "c278a8c6", "metadata": { - "id": "ae7b108b" + "id": "ae7b108b", + "lines_to_next_cell": 2 }, "source": [ "We define a prediction function compatible with SHAP and create a Kernel SHAP explainer." @@ -2065,10 +2990,9 @@ { "cell_type": "code", "execution_count": null, - "id": "6d9be211", + "id": "77b37ebc", "metadata": { - "id": "6d9be211", - "lines_to_next_cell": 1 + "id": "6d9be211" }, "outputs": [], "source": [ @@ -2083,7 +3007,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f0f7857b", + "id": "ce3b3daa", "metadata": { "id": "f0f7857b" }, @@ -2097,7 +3021,7 @@ { "cell_type": "code", "execution_count": null, - "id": "84bb96cf", + "id": "1eac5396", "metadata": { "id": "84bb96cf" }, @@ -2110,7 +3034,7 @@ { "cell_type": "code", "execution_count": null, - "id": "2a7929e4", + "id": "c38544fd", "metadata": { "id": "2a7929e4" }, @@ -2123,7 +3047,7 @@ { "cell_type": "code", "execution_count": null, - "id": "44fa277f", + "id": "60ed8910", "metadata": { "id": "44fa277f" }, @@ -2134,7 +3058,7 @@ }, { "cell_type": "markdown", - "id": "c1f3d550", + "id": "02908679", "metadata": { "id": "c1f3d550" }, @@ -2144,7 +3068,7 @@ }, { "cell_type": "markdown", - "id": "3a0f0cbe", + "id": "dd158aba", "metadata": { "id": "3a0f0cbe" }, @@ -2155,7 +3079,7 @@ { "cell_type": "code", "execution_count": null, - "id": "a6af4983", + "id": "2f5af8e0", "metadata": { "id": "a6af4983" }, @@ -2168,7 +3092,7 @@ { "cell_type": "code", "execution_count": null, - "id": "2e318a5b", + "id": "4020bf97", "metadata": { "id": "2e318a5b" }, @@ -2203,7 +3127,7 @@ }, { "cell_type": "markdown", - "id": "9a888f8b", + "id": "bd527a94", "metadata": { "id": "9a888f8b" }, @@ -2213,7 +3137,7 @@ }, { "cell_type": "markdown", - "id": "c6c4ce8c", + "id": "3244d847", "metadata": { "id": "c6c4ce8c" }, @@ -2224,7 +3148,7 @@ }, { "cell_type": "markdown", - "id": "86545200", + "id": "37dc7965", "metadata": { "id": "86545200" }, @@ -2234,7 +3158,7 @@ }, { "cell_type": "markdown", - "id": "06f3977c", + "id": "294524a4", "metadata": { "id": "06f3977c" }, @@ -2244,7 +3168,7 @@ }, { "cell_type": "markdown", - "id": "dadd0a0c", + "id": "ba535ae6", "metadata": { "id": "dadd0a0c" }, @@ -2254,7 +3178,7 @@ }, { "cell_type": "markdown", - "id": "37633c16", + "id": "1282f757", "metadata": { "id": "37633c16" }, @@ -2264,7 +3188,7 @@ }, { "cell_type": "markdown", - "id": "8735d66f", + "id": "731058ed", "metadata": { "id": "8735d66f" }, @@ -2274,7 +3198,7 @@ }, { "cell_type": "markdown", - "id": "d6b0332f", + "id": "9b8fb14b", "metadata": { "id": "d6b0332f" }, @@ -2287,7 +3211,7 @@ }, { "cell_type": "markdown", - "id": "a8cdea5f", + "id": "3c17d271", "metadata": { "id": "a8cdea5f" }, @@ -2297,11 +3221,13 @@ } ], "metadata": { - "colab": { - "provenance": [] + "jupytext": { + "cell_metadata_filter": "vscode,id,outputId,cellView,colab,-all", + "main_language": "python", + "notebook_metadata_filter": "-all" }, "kernelspec": { - "display_name": "Python 3", + "display_name": "assume-framework", "language": "python", "name": "python3" }, From aeda37729e3550e81fcf63ee0875748704b0218b Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Tue, 8 Oct 2024 13:35:33 +0200 Subject: [PATCH 21/27] - revert tensor check in uit operator since it is done now in the market during the order book check --- assume/reinforcement_learning/learning_unit_operator.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/assume/reinforcement_learning/learning_unit_operator.py b/assume/reinforcement_learning/learning_unit_operator.py index 2c52d9e1..bdd78bd1 100644 --- a/assume/reinforcement_learning/learning_unit_operator.py +++ b/assume/reinforcement_learning/learning_unit_operator.py @@ -276,11 +276,6 @@ async def formulate_bids( ) for i, order in enumerate(product_bids): order["agent_id"] = (self.context.addr, self.context.aid) - # check for tensors and convert to numpy - if isinstance(order["volume"], th.Tensor): - order["volume"] = np.float64(order["volume"].cpu().numpy()) - if isinstance(order["price"], th.Tensor): - order["price"] = np.float64(order["price"].cpu().numpy()) if market.volume_tick: order["volume"] = round(order["volume"] / market.volume_tick) From 2346d43efefd5c95f37c5c99b5527fe337ca1e3b Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Tue, 8 Oct 2024 14:13:36 +0200 Subject: [PATCH 22/27] - add config explanations and further clarification --- .../notebooks/09_example_Sim_and_xRL.ipynb | 680 +++++++++++------- 1 file changed, 413 insertions(+), 267 deletions(-) diff --git a/examples/notebooks/09_example_Sim_and_xRL.ipynb b/examples/notebooks/09_example_Sim_and_xRL.ipynb index baaac466..4ff4493f 100644 --- a/examples/notebooks/09_example_Sim_and_xRL.ipynb +++ b/examples/notebooks/09_example_Sim_and_xRL.ipynb @@ -105,7 +105,7 @@ "id": "0d59bb0a" }, "source": [ - "### 1.1 Multi-Agent Deep Reinforcement Learning \n", + "### 1.1 Run an the simulation MADRL Simulation \n", "\n", "In ASSUME, we implement RL agents using a Multi-Agent Deep Reinforcement Learning (MADRL) approach. Key aspects include:\n", "\n", @@ -131,15 +131,14 @@ "- Bid Price for Inflexible Capacity (p_inflex): The price at which the agent offers its minimum power output (must-run capacity) to the market.\n", "- Bid Price for Flexible Capacity (p_flex): The price for the additional capacity above the minimum output that the agent can flexibly adjust.\n", "\n", - "\n", - "#### Run an the simulation MADRL Simulation\n", + "#### 1.1.1 Install Assume and needed Packages\n", "\n", "Similar to the other tutorial, we can run Assume in the following way." ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 19, "id": "02dea28f", "metadata": { "colab": { @@ -161,7 +160,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 20, "id": "544d38a4", "metadata": { "colab": { @@ -181,21 +180,16 @@ ] }, { - "cell_type": "code", - "execution_count": 3, - "id": "973fc56c", - "metadata": { - "id": "75cd480a", - "lines_to_next_cell": 0 - }, - "outputs": [], + "cell_type": "markdown", + "id": "5ca60145", + "metadata": {}, "source": [ - "# Function to display DataFrame in Jupyter" + "Define paths to use depending on colab or local usage." ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 22, "id": "a578e164", "metadata": { "colab": { @@ -242,14 +236,14 @@ "id": "636ea9ae" }, "source": [ - "**Load the created example files from the tutorial before:**\n", + "#### 1.1.2 Create and Load example files from market splitting tutorial\n", "\n", - "we need to get the results form the market zone splitting tutorial, for which we are defining the RL Agent here. If you are working in colab execute the follwoing cells. If you are not working in colab but on your local machine simply open the respective tuttorial notebook and let it run." + "We need to get the results form the market zone splitting tutorial, for which we are defining the RL Agent here. If you are working in colab execute the follwoing cells. If you are not working in colab but on your local machine simply open the respective tuttorial notebook and let it run." ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 23, "id": "116b9e37", "metadata": { "vscode": { @@ -272,7 +266,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 24, "id": "9871a2a5", "metadata": { "colab": { @@ -298,16 +292,7 @@ "\n", "\n", "# Read the DataFrames from CSV files\n", - "buses = pd.read_csv(os.path.join(input_dir, \"buses.csv\"))\n", - "lines = pd.read_csv(os.path.join(input_dir, \"lines.csv\"))\n", "powerplant_units = pd.read_csv(os.path.join(input_dir, \"powerplant_units.csv\"))\n", - "demand_units = pd.read_csv(os.path.join(input_dir, \"demand_units.csv\"))\n", - "demand_df = pd.read_csv(os.path.join(input_dir, \"demand_df.csv\"))\n", - "\n", - "\n", - "# Read the fuel prices DataFrame from CSV file\n", - "fuel_prices_df = pd.read_csv(os.path.join(input_dir, \"fuel_prices_df.csv\"))\n", - "\n", "\n", "print(\"Input CSV files have been read from 'inputs/tutorial_08'.\")" ] @@ -319,14 +304,18 @@ "id": "6985289b" }, "source": [ - "**Let's make this a leanring example**\n", + "#### 1.1.3 Let's make this a leanring example\n", + "\n", + "The next cells show how we can transform any configured example in Assume into a learning example.\n", + "\n", + "**Define a learning power plan**\n", "\n", "We place a learning nuclear power plant in the south zone that has a 5 times hihger maximal power, to generate a scenario where it has a price impact." ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 25, "id": "ac7d12fb", "metadata": { "colab": { @@ -696,7 +685,7 @@ "Unit 20 0.0 0.3 24 south Operator-RL " ] }, - "execution_count": 7, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -715,12 +704,12 @@ "# make name column to index\n", "powerplant_units.set_index(\"name\", inplace=True, drop=True)\n", "\n", - "powerplant_units" + "powerplant_units.tail(10)" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 26, "id": "9316ac03", "metadata": { "id": "QBTGrw62_5I7" @@ -738,12 +727,58 @@ "id": "cce0e8b4" }, "source": [ - "Change the yaml to configure the learning specific hyperparameters. For a deep dive explanation of the different parameters we refer again to the solely RL tutorial. **TODO** Erklärung einfügen" + "**Configure Learning Hyperparameters in YAML**\n", + "\n", + "Change the yaml to configure the learning specific hyperparameters. In the following we provide a brief description of the hyper parameters:\n", + "\n", + "- **continue_learning** (`False`): \n", + " - Indicates whether the agent should continue training from a previously saved state or start fresh.\n", + "\n", + "- **max_bid_price** (`100`): \n", + " - The maximum bid price allowed during the agent's interaction with the environment, which is used to scale the output of the actor.\n", + "\n", + "- **algorithm** (`\"matd3\"`): \n", + " - The type of reinforcement learning algorithm used. In this case, `MATD3`, which stands for Multi-Agent Twin Delayed Deep Deterministic Policy Gradient.\n", + "\n", + "- **learning_rate** (`0.001`): \n", + " - The learning rate for the algorithm's optimizer. This determines how big the steps of the models parameter update are during training.\n", + "\n", + "- **training_episodes** (`50`): \n", + " - The total number of training episodes the agent will go through.\n", + "\n", + "- **episodes_collecting_initial_experience** (`3`): \n", + " - The number of episodes dedicated to collecting initial experience before training begins. During this period the agent follows a random policy around some base value.\n", + "\n", + "- **train_freq** (`\"24h\"`): \n", + " - The frequency at which the model is trained. In this case, training occurs every 24 hours.\n", + "\n", + "- **gradient_steps** (`-1`): \n", + " - The number of gradient steps to be taken at each training interval. A value of `-1` typically means to perform as many gradient steps as the number of collected experience samples allows.\n", + "\n", + "- **batch_size** (`256`): \n", + " - The number of samples in each mini-batch used for training the model.\n", + "\n", + "- **gamma** (`0.99`): \n", + " - The discount factor for future rewards, representing how much importance the agent places on long-term rewards versus immediate rewards.\n", + "\n", + "- **device** (`\"cpu\"`): \n", + " - The computational device used for training. In this case, training is performed on a CPU.\n", + "\n", + "- **noise_sigma** (`0.1`): \n", + " - The standard deviation (sigma) of the noise added to the actions for exploration purposes.\n", + "\n", + "- **noise_scale** (`1`): \n", + "- **noise_dt** (`1`): \n", + " - A scaling factor applied to the noise added for exploration, influencing the amount of exploration.\n", + " - it is used for decay, but since both values are 1 no decay is applied. \n", + "\n", + "- **validation_episodes_interval** (`5`): \n", + " - The interval at which the model is validated during training, i.e., validation occurs every 5 episodes.\n" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 27, "id": "03cc1a12", "metadata": { "colab": { @@ -828,7 +863,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 28, "id": "823db62a", "metadata": { "cellView": "form", @@ -1046,12 +1081,12 @@ "source": [ "**Run the example case**\n", "\n", - "Now we run the example case similar to before in the market zone tutorial." + "Now we run the example case similar to before in the market zone tutorial. the only difference is that we call the run_learning function, whcih itterates multiple times over the simulation horizon. " ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 29, "id": "9092a097", "metadata": { "colab": { @@ -1095,8 +1130,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_1 2019-01-01 23:00:00: : 82801it [00:03, 21334.78it/s]\n", - "Training Episodes: 10%|█ | 1/10 [00:03<00:35, 3.94s/it]" + "tutorial_08_zonal_case_1 2019-01-01 23:00:00: : 82801it [00:07, 11523.88it/s]\n", + "Training Episodes: 10%|█ | 1/10 [00:07<01:06, 7.34s/it]" ] }, { @@ -1114,8 +1149,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_2 2019-01-01 23:00:00: : 82801it [00:03, 22022.34it/s]\n", - "Training Episodes: 20%|██ | 2/10 [00:07<00:31, 3.88s/it]" + "tutorial_08_zonal_case_2 2019-01-01 23:00:00: : 82801it [00:06, 13007.33it/s]\n", + "Training Episodes: 20%|██ | 2/10 [00:13<00:54, 6.85s/it]" ] }, { @@ -1133,8 +1168,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_3 2019-01-01 23:00:00: : 82801it [00:03, 22761.24it/s]\n", - "Training Episodes: 30%|███ | 3/10 [00:11<00:26, 3.80s/it]" + "tutorial_08_zonal_case_3 2019-01-01 23:00:00: : 82801it [00:05, 16083.00it/s]\n", + "Training Episodes: 30%|███ | 3/10 [00:19<00:42, 6.13s/it]" ] }, { @@ -1152,8 +1187,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_4 2019-01-01 23:00:00: : 82801it [00:03, 22272.16it/s]\n", - "Training Episodes: 40%|████ | 4/10 [00:15<00:22, 3.80s/it]" + "tutorial_08_zonal_case_4 2019-01-01 23:00:00: : 82801it [00:04, 16996.09it/s]\n", + "Training Episodes: 40%|████ | 4/10 [00:24<00:34, 5.67s/it]" ] }, { @@ -1171,8 +1206,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_5 2019-01-01 23:00:00: : 82801it [00:03, 22871.70it/s]\n", - "Training Episodes: 50%|█████ | 5/10 [00:18<00:18, 3.76s/it]" + "tutorial_08_zonal_case_5 2019-01-01 23:00:00: : 82801it [00:04, 16731.95it/s]\n", + "Training Episodes: 50%|█████ | 5/10 [00:29<00:27, 5.46s/it]" ] }, { @@ -1190,8 +1225,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_6 2019-01-01 23:00:00: : 82801it [00:04, 20158.42it/s]\n", - "Training Episodes: 60%|██████ | 6/10 [00:23<00:15, 3.90s/it]" + "tutorial_08_zonal_case_6 2019-01-01 23:00:00: : 82801it [00:05, 14364.50it/s]\n", + "Training Episodes: 60%|██████ | 6/10 [00:35<00:22, 5.60s/it]" ] }, { @@ -1209,8 +1244,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_7 2019-01-01 23:00:00: : 82801it [00:04, 19840.53it/s]\n", - "Training Episodes: 70%|███████ | 7/10 [00:27<00:12, 4.02s/it]" + "tutorial_08_zonal_case_7 2019-01-01 23:00:00: : 82801it [00:05, 15810.60it/s]\n", + "Training Episodes: 70%|███████ | 7/10 [00:40<00:16, 5.53s/it]" ] }, { @@ -1228,8 +1263,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_8 2019-01-01 23:00:00: : 82801it [00:04, 19951.23it/s]\n", - "Training Episodes: 80%|████████ | 8/10 [00:31<00:08, 4.09s/it]" + "tutorial_08_zonal_case_8 2019-01-01 23:00:00: : 82801it [00:04, 16575.24it/s]\n", + "Training Episodes: 80%|████████ | 8/10 [00:45<00:10, 5.39s/it]" ] }, { @@ -1247,8 +1282,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_9 2019-01-01 23:00:00: : 82801it [00:03, 21970.90it/s]\n", - "Training Episodes: 90%|█████████ | 9/10 [00:35<00:04, 4.01s/it]" + "tutorial_08_zonal_case_9 2019-01-01 23:00:00: : 82801it [00:05, 16490.33it/s]\n", + "Training Episodes: 90%|█████████ | 9/10 [00:50<00:05, 5.32s/it]" ] }, { @@ -1266,45 +1301,50 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_10 2019-01-01 23:00:00: : 82801it [00:03, 21372.28it/s]" + "tutorial_08_zonal_case_10 2019-01-01 23:00:00: : 82801it [00:05, 15885.00it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n" + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "\n" + "tutorial_08_zonal_case_eval_1 2019-01-01 23:00:00: : 82801it [00:05, 16500.24it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 1, metric='avg_reward', value=4437.80\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_eval_1 2019-01-01 23:00:00: : 82801it [00:03, 21520.87it/s]" + "Training Episodes: 100%|██████████| 10/10 [01:23<00:00, 8.38s/it]" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 1, metric='avg_reward', value=4437.80\n" + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" ] }, { @@ -1312,51 +1352,40 @@ "output_type": "stream", "text": [ "\n", - "Training Episodes: 100%|██████████| 10/10 [01:02<00:00, 6.27s/it]" + " 0%| | 0/82800 [00:00 exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -1370,8 +1399,8 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", @@ -1384,7 +1413,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 00:00:00: 4%|▍ | 3601/82800 [00:00<00:05, 15043.53it/s]" + "tutorial_08_zonal_case 2019-01-01 00:00:00: 4%|▍ | 3601/82800 [00:00<00:04, 17411.89it/s]" ] }, { @@ -1395,15 +1424,15 @@ "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpzodwb_u6.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmphiz0tfsu.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp6wwf6xyg.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp6wwf6xyg.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp6wwf6xyg.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpxs_dl8jj.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_z8zood_.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpp0v8gtp3.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpp0v8gtp3.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpp0v8gtp3.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -1417,27 +1446,40 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 01:00:00: 9%|▊ | 7201/82800 [00:00<00:03, 18953.42it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpwjttcr5q.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp3dv4zbp4.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp5z5lpxxw.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp5z5lpxxw.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp5z5lpxxw.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpcwl0x8cr.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpodtn80a_.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpohqackq8.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpohqackq8.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpohqackq8.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -1451,8 +1493,8 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", @@ -1465,7 +1507,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 02:00:00: 13%|█▎ | 10801/82800 [00:00<00:02, 28219.50it/s]" + "tutorial_08_zonal_case 2019-01-01 02:00:00: 13%|█▎ | 10801/82800 [00:00<00:03, 23493.66it/s]" ] }, { @@ -1476,15 +1518,15 @@ "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9q5q22kw.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpohfetpqf.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpc1bc7p68.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpc1bc7p68.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpc1bc7p68.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpcog2f74o.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpuam41zek.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpl9efbzv9.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpl9efbzv9.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpl9efbzv9.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -1498,27 +1540,40 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 03:00:00: 17%|█▋ | 14401/82800 [00:00<00:02, 26294.36it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpcvn6kp04.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp5c23xr6s.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpm93ulvjn.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpm93ulvjn.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpm93ulvjn.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp8j_p18wt.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp70khcqmt.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpzkdmj_es.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpzkdmj_es.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpzkdmj_es.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -1532,8 +1587,8 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", @@ -1546,7 +1601,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 04:00:00: 22%|██▏ | 18001/82800 [00:00<00:01, 32720.76it/s]" + "tutorial_08_zonal_case 2019-01-01 04:00:00: 22%|██▏ | 18001/82800 [00:00<00:02, 25111.33it/s]" ] }, { @@ -1557,15 +1612,15 @@ "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpisxw9ix8.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpga9w7msy.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpthu0lqjt.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpthu0lqjt.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpthu0lqjt.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpzl9g5igo.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp5i5tz7lx.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9qsd6yb3.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9qsd6yb3.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9qsd6yb3.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -1579,27 +1634,40 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 05:00:00: 26%|██▌ | 21601/82800 [00:00<00:02, 27019.03it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmppen1aa2y.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp3rqljc6n.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmprnbu0mo4.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmprnbu0mo4.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmprnbu0mo4.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpnlmjovxb.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmppw2vajtv.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpsbd_7huf.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpsbd_7huf.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpsbd_7huf.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -1613,8 +1681,8 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", @@ -1627,7 +1695,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 06:00:00: 30%|███ | 25201/82800 [00:00<00:01, 34611.39it/s]" + "tutorial_08_zonal_case 2019-01-01 06:00:00: 30%|███ | 25201/82800 [00:01<00:02, 28085.52it/s]" ] }, { @@ -1638,15 +1706,15 @@ "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpscthkcqt.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp3jg09edi.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpj89p1lfm.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpj89p1lfm.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpj89p1lfm.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpi6696nvu.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpx0i9nr4g.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpalzdeplr.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpalzdeplr.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpalzdeplr.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -1660,27 +1728,40 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 07:00:00: 35%|███▍ | 28801/82800 [00:01<00:01, 27564.75it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp6uk22o84.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp1f6_ql3l.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp88uo7gl9.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp88uo7gl9.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp88uo7gl9.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp0n_1tbx7.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_fhn46hq.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp1mirpjz_.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp1mirpjz_.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp1mirpjz_.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -1694,8 +1775,8 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", @@ -1708,7 +1789,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 08:00:00: 39%|███▉ | 32401/82800 [00:00<00:01, 35574.53it/s]" + "tutorial_08_zonal_case 2019-01-01 08:00:00: 39%|███▉ | 32401/82800 [00:01<00:01, 27640.87it/s]" ] }, { @@ -1719,15 +1800,15 @@ "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpq15d8y1v.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpb7_9oq3e.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpxtjtkez5.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpxtjtkez5.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpxtjtkez5.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpvddxwz19.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpl5uky8em.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpib349hvz.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpib349hvz.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpib349hvz.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -1741,27 +1822,40 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 09:00:00: 43%|████▎ | 36001/82800 [00:01<00:01, 27693.43it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp4kvnq040.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpgb6uksuj.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpjixxyriz.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpjixxyriz.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpjixxyriz.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmppyb9hsrq.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpprjsr9rz.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9f2xi9b7.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9f2xi9b7.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9f2xi9b7.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -1775,8 +1869,8 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", @@ -1789,7 +1883,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 10:00:00: 48%|████▊ | 39601/82800 [00:01<00:01, 37188.77it/s]" + "tutorial_08_zonal_case 2019-01-01 10:00:00: 48%|████▊ | 39601/82800 [00:01<00:01, 27827.46it/s]" ] }, { @@ -1800,15 +1894,15 @@ "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_wfe8xgm.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpwezb1qq8.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_sdlf6mq.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_sdlf6mq.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_sdlf6mq.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpesoeqw3j.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp4nnc2imb.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptzq87vcd.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptzq87vcd.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptzq87vcd.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -1822,27 +1916,40 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 11:00:00: 52%|█████▏ | 43201/82800 [00:01<00:01, 28298.97it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp0a9fbozj.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpjk44ceob.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpuy11rdv7.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpuy11rdv7.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpuy11rdv7.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpw8r2_7lp.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpyz5krcz_.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9eukynh5.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9eukynh5.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9eukynh5.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -1856,8 +1963,8 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", @@ -1870,7 +1977,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 12:00:00: 57%|█████▋ | 46801/82800 [00:01<00:01, 35811.70it/s]" + "tutorial_08_zonal_case 2019-01-01 12:00:00: 57%|█████▋ | 46801/82800 [00:01<00:01, 28852.64it/s]" ] }, { @@ -1881,15 +1988,15 @@ "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpiqujlpl7.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpmid8tbjp.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpz5h9o2t6.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpz5h9o2t6.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpz5h9o2t6.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp0zjthvfm.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp5jy2gw_v.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpfei33xt1.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpfei33xt1.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpfei33xt1.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -1903,27 +2010,40 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 13:00:00: 61%|██████ | 50401/82800 [00:01<00:01, 28930.58it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp31ujp0qm.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpbmvl8_91.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp883g3uge.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp883g3uge.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp883g3uge.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpe4qawphc.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp4gg0rke2.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpgd0dzwgt.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpgd0dzwgt.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpgd0dzwgt.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -1937,8 +2057,8 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", @@ -1951,7 +2071,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 14:00:00: 65%|██████▌ | 54001/82800 [00:01<00:00, 32012.85it/s]" + "tutorial_08_zonal_case 2019-01-01 14:00:00: 65%|██████▌ | 54001/82800 [00:02<00:00, 29114.14it/s]" ] }, { @@ -1962,15 +2082,15 @@ "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptpjdcbtd.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpv6i_y9hq.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp2buno1ex.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp2buno1ex.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp2buno1ex.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpc7c_l2s1.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpjbk4fuau.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_ifyw8wu.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_ifyw8wu.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_ifyw8wu.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -1984,8 +2104,8 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", @@ -1998,7 +2118,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 15:00:00: 70%|██████▉ | 57601/82800 [00:01<00:00, 32390.30it/s]" + "tutorial_08_zonal_case 2019-01-01 15:00:00: 70%|██████▉ | 57601/82800 [00:02<00:00, 28945.96it/s]" ] }, { @@ -2009,15 +2129,15 @@ "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp29cgs_0f.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpg662dy1b.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp7y5zb_vx.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp7y5zb_vx.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp7y5zb_vx.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpmkesy780.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpv2_uz8yt.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpssw9dxd7.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpssw9dxd7.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpssw9dxd7.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -2031,8 +2151,8 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", @@ -2045,7 +2165,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 16:00:00: 74%|███████▍ | 61201/82800 [00:01<00:00, 32580.89it/s]" + "tutorial_08_zonal_case 2019-01-01 16:00:00: 74%|███████▍ | 61201/82800 [00:02<00:00, 28717.01it/s]" ] }, { @@ -2056,15 +2176,15 @@ "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpgkj26dx8.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp885496ex.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp80xs7oil.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp80xs7oil.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp80xs7oil.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp8rznhtvc.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpmc89_zkz.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmppbs52yjm.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmppbs52yjm.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmppbs52yjm.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -2078,27 +2198,40 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 17:00:00: 78%|███████▊ | 64801/82800 [00:02<00:00, 27699.07it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpvvyzn7z9.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp6m_69yna.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpg756ah2x.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpg756ah2x.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpg756ah2x.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpg9y0nlzo.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp6uzjy52q.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpkltjr_3b.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpkltjr_3b.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpkltjr_3b.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -2112,8 +2245,8 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", @@ -2126,7 +2259,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 18:00:00: 83%|████████▎ | 68401/82800 [00:02<00:00, 34332.05it/s]" + "tutorial_08_zonal_case 2019-01-01 18:00:00: 83%|████████▎ | 68401/82800 [00:02<00:00, 25430.62it/s]" ] }, { @@ -2137,15 +2270,15 @@ "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpocvop3u1.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9ojfuaoc.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp338vf917.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp338vf917.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp338vf917.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmplkij6hnz.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp1lj4pmbk.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp25gr6tjt.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp25gr6tjt.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp25gr6tjt.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -2159,27 +2292,40 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n", + "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case 2019-01-01 19:00:00: 87%|████████▋ | 72001/82800 [00:02<00:00, 26133.69it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpthb_s5k8.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp8sa7td7n.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp52zz_tor.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp52zz_tor.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp52zz_tor.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp4hxle4nq.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpvtv21un6.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpbdzops3l.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpbdzops3l.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpbdzops3l.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -2193,8 +2339,8 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", @@ -2207,7 +2353,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 20:00:00: 91%|█████████▏| 75601/82800 [00:02<00:00, 34505.65it/s]" + "tutorial_08_zonal_case 2019-01-01 20:00:00: 91%|█████████▏| 75601/82800 [00:02<00:00, 26373.97it/s]" ] }, { @@ -2218,15 +2364,15 @@ "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp53yqi16u.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpkc57k0tt.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9hwnjfn4.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9hwnjfn4.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9hwnjfn4.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmph55l26tw.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptdnf49x_.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp84wgsiao.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp84wgsiao.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp84wgsiao.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -2240,8 +2386,8 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", @@ -2254,7 +2400,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 21:00:00: 96%|█████████▌| 79201/82800 [00:02<00:00, 34451.35it/s]" + "tutorial_08_zonal_case 2019-01-01 21:00:00: 96%|█████████▌| 79201/82800 [00:02<00:00, 26761.79it/s]" ] }, { @@ -2265,15 +2411,15 @@ "ERROR:pyomo.opt:Solver log:\n", "GLPSOL--GLPK LP/MIP Solver 5.0\n", "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp8mgt8nwl.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_t4nf7ek.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpuagvdnmp.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpuagvdnmp.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpuagvdnmp.pyomo.lp:27: constraints section missing\n", + " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpp3a_9tkp.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptc_xsyyn.glpk.glp\n", + " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptngumm57.pyomo.lp\n", + "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptngumm57.pyomo.lp'...\n", + "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptngumm57.pyomo.lp:27: constraints section missing\n", "CPLEX LP file processing error\n", "\n", "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", + "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", "Traceback (most recent call last):\n", " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", " result = coro.send(None)\n", @@ -2287,8 +2433,8 @@ " ) = self.clear(self.all_orders, market_products)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " instance, results = market_clearing_opt(\n", - " ^^^^^^^^^^^^^^^^^^^^\n", + " while True:\n", + " \n", " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", " results = solver.solve(instance, options=options)\n", " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", @@ -2301,7 +2447,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 23:00:00: : 82801it [00:02, 33917.07it/s] \n" + "tutorial_08_zonal_case 2019-01-01 23:00:00: : 82801it [00:03, 26947.63it/s] \n" ] } ], @@ -2362,14 +2508,14 @@ "id": "2194f71b" }, "source": [ - "**Generate same plotly figure**\n", + "**Compare the results**\n", "\n", - "We use the same code described in the amarket zone tutprial to generate the plotly curve displaying the market price." + "We use the same code described in the market zone tutorial to generate the plotly curve displaying the market price." ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 30, "id": "96bfa2ee", "metadata": { "id": "bdb21cbe" @@ -2382,7 +2528,7 @@ "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[12], line 9\u001b[0m\n\u001b[0;32m 6\u001b[0m market_meta_path \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(output_dir, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmarket_meta.csv\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 8\u001b[0m \u001b[38;5;66;03m# Load the market_meta.csv file\u001b[39;00m\n\u001b[1;32m----> 9\u001b[0m market_meta \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread_csv\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmarket_meta_path\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mindex_col\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtime\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mparse_dates\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[0;32m 10\u001b[0m \u001b[38;5;66;03m# drop the first column\u001b[39;00m\n\u001b[0;32m 11\u001b[0m market_meta \u001b[38;5;241m=\u001b[39m market_meta\u001b[38;5;241m.\u001b[39mdrop(columns\u001b[38;5;241m=\u001b[39mmarket_meta\u001b[38;5;241m.\u001b[39mcolumns[\u001b[38;5;241m0\u001b[39m])\n", + "Cell \u001b[1;32mIn[30], line 9\u001b[0m\n\u001b[0;32m 6\u001b[0m market_meta_path \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(output_dir, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmarket_meta.csv\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 8\u001b[0m \u001b[38;5;66;03m# Load the market_meta.csv file\u001b[39;00m\n\u001b[1;32m----> 9\u001b[0m market_meta \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread_csv\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmarket_meta_path\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mindex_col\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtime\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mparse_dates\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[0;32m 10\u001b[0m \u001b[38;5;66;03m# drop the first column\u001b[39;00m\n\u001b[0;32m 11\u001b[0m market_meta \u001b[38;5;241m=\u001b[39m market_meta\u001b[38;5;241m.\u001b[39mdrop(columns\u001b[38;5;241m=\u001b[39mmarket_meta\u001b[38;5;241m.\u001b[39mcolumns[\u001b[38;5;241m0\u001b[39m])\n", "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\io\\parsers\\readers.py:1026\u001b[0m, in \u001b[0;36mread_csv\u001b[1;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, date_format, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options, dtype_backend)\u001b[0m\n\u001b[0;32m 1013\u001b[0m kwds_defaults \u001b[38;5;241m=\u001b[39m _refine_defaults_read(\n\u001b[0;32m 1014\u001b[0m dialect,\n\u001b[0;32m 1015\u001b[0m delimiter,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1022\u001b[0m dtype_backend\u001b[38;5;241m=\u001b[39mdtype_backend,\n\u001b[0;32m 1023\u001b[0m )\n\u001b[0;32m 1024\u001b[0m kwds\u001b[38;5;241m.\u001b[39mupdate(kwds_defaults)\n\u001b[1;32m-> 1026\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_read\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\io\\parsers\\readers.py:620\u001b[0m, in \u001b[0;36m_read\u001b[1;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[0;32m 617\u001b[0m _validate_names(kwds\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnames\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m))\n\u001b[0;32m 619\u001b[0m \u001b[38;5;66;03m# Create the parser.\u001b[39;00m\n\u001b[1;32m--> 620\u001b[0m parser \u001b[38;5;241m=\u001b[39m \u001b[43mTextFileReader\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 622\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m chunksize \u001b[38;5;129;01mor\u001b[39;00m iterator:\n\u001b[0;32m 623\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m parser\n", "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\io\\parsers\\readers.py:1620\u001b[0m, in \u001b[0;36mTextFileReader.__init__\u001b[1;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[0;32m 1617\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moptions[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m kwds[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[0;32m 1619\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles: IOHandles \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m-> 1620\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_engine \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_engine\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mengine\u001b[49m\u001b[43m)\u001b[49m\n", From 49ff583b563ca252393a8b2ba2a36c6653048bd2 Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Tue, 8 Oct 2024 14:47:20 +0200 Subject: [PATCH 23/27] - fix buffer writing --- .../notebooks/09_example_Sim_and_xRL.ipynb | 4039 ++++++++++++----- 1 file changed, 2926 insertions(+), 1113 deletions(-) diff --git a/examples/notebooks/09_example_Sim_and_xRL.ipynb b/examples/notebooks/09_example_Sim_and_xRL.ipynb index 4ff4493f..ee71534a 100644 --- a/examples/notebooks/09_example_Sim_and_xRL.ipynb +++ b/examples/notebooks/09_example_Sim_and_xRL.ipynb @@ -138,7 +138,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 2, "id": "02dea28f", "metadata": { "colab": { @@ -160,7 +160,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 3, "id": "544d38a4", "metadata": { "colab": { @@ -189,7 +189,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 4, "id": "a578e164", "metadata": { "colab": { @@ -243,7 +243,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 5, "id": "116b9e37", "metadata": { "vscode": { @@ -266,7 +266,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 12, "id": "9871a2a5", "metadata": { "colab": { @@ -293,6 +293,7 @@ "\n", "# Read the DataFrames from CSV files\n", "powerplant_units = pd.read_csv(os.path.join(input_dir, \"powerplant_units.csv\"))\n", + "demand_df = pd.read_csv(os.path.join(input_dir, \"demand_df.csv\"))\n", "\n", "print(\"Input CSV files have been read from 'inputs/tutorial_08'.\")" ] @@ -315,7 +316,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 7, "id": "ac7d12fb", "metadata": { "colab": { @@ -374,136 +375,6 @@ " \n", " \n", " \n", - " Unit 1\n", - " nuclear\n", - " naive_eom\n", - " uranium\n", - " 0.0\n", - " 1000.0\n", - " 0.0\n", - " 0.3\n", - " 5\n", - " north_1\n", - " Operator North\n", - " \n", - " \n", - " Unit 2\n", - " nuclear\n", - " naive_eom\n", - " uranium\n", - " 0.0\n", - " 1000.0\n", - " 0.0\n", - " 0.3\n", - " 6\n", - " north_1\n", - " Operator North\n", - " \n", - " \n", - " Unit 3\n", - " nuclear\n", - " naive_eom\n", - " uranium\n", - " 0.0\n", - " 1000.0\n", - " 0.0\n", - " 0.3\n", - " 7\n", - " north_1\n", - " Operator North\n", - " \n", - " \n", - " Unit 4\n", - " nuclear\n", - " naive_eom\n", - " uranium\n", - " 0.0\n", - " 1000.0\n", - " 0.0\n", - " 0.3\n", - " 8\n", - " north_1\n", - " Operator North\n", - " \n", - " \n", - " Unit 5\n", - " nuclear\n", - " naive_eom\n", - " uranium\n", - " 0.0\n", - " 1000.0\n", - " 0.0\n", - " 0.3\n", - " 9\n", - " north_1\n", - " Operator North\n", - " \n", - " \n", - " Unit 6\n", - " nuclear\n", - " naive_eom\n", - " uranium\n", - " 0.0\n", - " 1000.0\n", - " 0.0\n", - " 0.3\n", - " 10\n", - " north_1\n", - " Operator North\n", - " \n", - " \n", - " Unit 7\n", - " nuclear\n", - " naive_eom\n", - " uranium\n", - " 0.0\n", - " 1000.0\n", - " 0.0\n", - " 0.3\n", - " 11\n", - " north_1\n", - " Operator North\n", - " \n", - " \n", - " Unit 8\n", - " nuclear\n", - " naive_eom\n", - " uranium\n", - " 0.0\n", - " 1000.0\n", - " 0.0\n", - " 0.3\n", - " 12\n", - " north_1\n", - " Operator North\n", - " \n", - " \n", - " Unit 9\n", - " nuclear\n", - " naive_eom\n", - " uranium\n", - " 0.0\n", - " 1000.0\n", - " 0.0\n", - " 0.3\n", - " 13\n", - " north_2\n", - " Operator North\n", - " \n", - " \n", - " Unit 10\n", - " nuclear\n", - " naive_eom\n", - " uranium\n", - " 0.0\n", - " 1000.0\n", - " 0.0\n", - " 0.3\n", - " 14\n", - " north_2\n", - " Operator North\n", - " \n", - " \n", " Unit 11\n", " nuclear\n", " naive_eom\n", @@ -640,16 +511,6 @@ "text/plain": [ " technology bidding_zonal fuel_type emission_factor max_power \\\n", "name \n", - "Unit 1 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 2 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 3 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 4 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 5 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 6 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 7 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 8 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 9 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 10 nuclear naive_eom uranium 0.0 1000.0 \n", "Unit 11 nuclear naive_eom uranium 0.0 1000.0 \n", "Unit 12 nuclear naive_eom uranium 0.0 1000.0 \n", "Unit 13 nuclear naive_eom uranium 0.0 1000.0 \n", @@ -663,16 +524,6 @@ "\n", " min_power efficiency additional_cost node unit_operator \n", "name \n", - "Unit 1 0.0 0.3 5 north_1 Operator North \n", - "Unit 2 0.0 0.3 6 north_1 Operator North \n", - "Unit 3 0.0 0.3 7 north_1 Operator North \n", - "Unit 4 0.0 0.3 8 north_1 Operator North \n", - "Unit 5 0.0 0.3 9 north_1 Operator North \n", - "Unit 6 0.0 0.3 10 north_1 Operator North \n", - "Unit 7 0.0 0.3 11 north_1 Operator North \n", - "Unit 8 0.0 0.3 12 north_1 Operator North \n", - "Unit 9 0.0 0.3 13 north_2 Operator North \n", - "Unit 10 0.0 0.3 14 north_2 Operator North \n", "Unit 11 0.0 0.3 15 north_2 Operator North \n", "Unit 12 0.0 0.3 16 north_2 Operator North \n", "Unit 13 0.0 0.3 17 north_2 Operator North \n", @@ -685,7 +536,7 @@ "Unit 20 0.0 0.3 24 south Operator-RL " ] }, - "execution_count": 25, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -704,21 +555,21 @@ "# make name column to index\n", "powerplant_units.set_index(\"name\", inplace=True, drop=True)\n", "\n", + "# store power plant units to csv again\n", + "powerplant_units.to_csv(input_dir + \"/powerplant_units.csv\")\n", + "\n", "powerplant_units.tail(10)" ] }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 8, "id": "9316ac03", "metadata": { "id": "QBTGrw62_5I7" }, "outputs": [], - "source": [ - "# store power plant units to csv again\n", - "powerplant_units.to_csv(input_dir + \"/powerplant_units.csv\")" - ] + "source": [] }, { "cell_type": "markdown", @@ -778,7 +629,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 13, "id": "03cc1a12", "metadata": { "colab": { @@ -802,7 +653,7 @@ " \"start_date\": \"2019-01-01 00:00\",\n", " \"end_date\": \"2019-01-01 23:00\",\n", " \"time_step\": \"1h\",\n", - " \"save_frequency_hours\": 24,\n", + " \"save_frequency_hours\": 4,\n", " \"learning_mode\": \"True\",\n", " \"markets_config\": {\n", " \"zonal\": {\n", @@ -828,7 +679,7 @@ " \"learning_rate\": 0.001,\n", " \"training_episodes\": 10,\n", " \"episodes_collecting_initial_experience\": 3,\n", - " \"train_freq\": \"24h\",\n", + " \"train_freq\": \"4h\",\n", " \"gradient_steps\": -1,\n", " \"batch_size\": 256,\n", " \"gamma\": 0.99,\n", @@ -836,7 +687,7 @@ " \"noise_sigma\": 0.1,\n", " \"noise_scale\": 1,\n", " \"noise_dt\": 1,\n", - " \"validation_episodes_interval\": 5,\n", + " \"validation_episodes_interval\": 1,\n", " },\n", " }\n", "}\n", @@ -863,7 +714,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 10, "id": "823db62a", "metadata": { "cellView": "form", @@ -1039,6 +890,8 @@ "\n", " eval_episode += 1\n", "\n", + " \n", + "\n", " world.reset()\n", "\n", " # if at end of simulation save last policies\n", @@ -1086,7 +939,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 14, "id": "9092a097", "metadata": { "colab": { @@ -1130,109 +983,252 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_1 2019-01-01 23:00:00: : 82801it [00:07, 11523.88it/s]\n", - "Training Episodes: 10%|█ | 1/10 [00:07<01:06, 7.34s/it]" + "Training Episodes: 0%| | 0/10 [00:00 exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + " We are adding stuff to the buffer\n", + "[[[2.28 2.3 2.32 2.34 2.36 2.38\n", + " 2.4 2.42 2.44 2.46 2.48 2.5\n", + " 2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 0.72 0.40666667]]\n", + "\n", + " [[2.3 2.32 2.34 2.36 2.38 2.4\n", + " 2.42 2.44 2.46 2.48 2.5 2.52\n", + " 2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.76 0.40666667]]\n", + "\n", + " [[2.32 2.34 2.36 2.38 2.4 2.42\n", + " 2.44 2.46 2.48 2.5 2.52 2.54\n", + " 2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.8 0.40666667]]\n", + "\n", + " [[2.34 2.36 2.38 2.4 2.42 2.44\n", + " 2.46 2.48 2.5 2.52 2.54 2.56\n", + " 2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.84 0.40666667]]]\n" ] }, { "name": "stderr", "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 00:00:00: 4%|▍ | 3601/82800 [00:00<00:04, 17411.89it/s]" - ] + "text": [] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpxs_dl8jj.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_z8zood_.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpp0v8gtp3.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpp0v8gtp3.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpp0v8gtp3.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + " We are adding stuff to the buffer\n", + "[[[2.36 2.38 2.4 2.42 2.44 2.46\n", + " 2.48 2.5 2.52 2.54 2.56 2.58\n", + " 2.6 2.62 2.64 2.66 2.68 2.22\n", + " 2.24 2.26 2.28 2.3 2.32 2.34\n", + " 0.40666667 0.40666667 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.88 0.40666667]]\n", + "\n", + " [[2.38 2.4 2.42 2.44 2.46 2.48\n", + " 2.5 2.52 2.54 2.56 2.58 2.6\n", + " 2.62 2.64 2.66 2.68 2.22 2.24\n", + " 2.26 2.28 2.3 2.32 2.34 2.36\n", + " 0.40666667 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.92 0.40666667]]\n", + "\n", + " [[2.4 2.42 2.44 2.46 2.48 2.5\n", + " 2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 2.28 2.3 2.32 2.34 2.36 2.38\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.96 0.40666667]]\n", + "\n", + " [[2.42 2.44 2.46 2.48 2.5 2.52\n", + " 2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 2.3 2.32 2.34 2.36 2.38 2.4\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 1. 0.40666667]]]\n" ] }, { "name": "stderr", "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 01:00:00: 9%|▊ | 7201/82800 [00:00<00:03, 18953.42it/s]" - ] + "text": [] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpcwl0x8cr.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpodtn80a_.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpohqackq8.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpohqackq8.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpohqackq8.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + " We are adding stuff to the buffer\n", + "[[[2.44 2.46 2.48 2.5 2.52 2.54\n", + " 2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 2.32 2.34 2.36 2.38 2.4 2.42\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.46 2.48 2.5 2.52 2.54 2.56\n", + " 2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 2.34 2.36 2.38 2.4 2.42 2.44\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.48 2.5 2.52 2.54 2.56 2.58\n", + " 2.6 2.62 2.64 2.66 2.68 2.22\n", + " 2.24 2.26 2.28 2.3 2.32 2.34\n", + " 2.36 2.38 2.4 2.42 2.44 2.46\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.5 2.52 2.54 2.56 2.58 2.6\n", + " 2.62 2.64 2.66 2.68 2.22 2.24\n", + " 2.26 2.28 2.3 2.32 2.34 2.36\n", + " 2.38 2.4 2.42 2.44 2.46 2.48\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]]\n" ] }, { "name": "stderr", "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 02:00:00: 13%|█▎ | 10801/82800 [00:00<00:03, 23493.66it/s]" - ] + "text": [] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpcog2f74o.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpuam41zek.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpl9efbzv9.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpl9efbzv9.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpl9efbzv9.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + " We are adding stuff to the buffer\n", + "[[[2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 2.28 2.3 2.32 2.34 2.36 2.38\n", + " 2.4 2.42 2.44 2.46 2.48 2.5\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 2.3 2.32 2.34 2.36 2.38 2.4\n", + " 2.42 2.44 2.46 2.48 2.5 2.52\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 2.32 2.34 2.36 2.38 2.4 2.42\n", + " 2.44 2.46 2.48 2.5 2.52 2.54\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 2.34 2.36 2.38 2.4 2.42 2.44\n", + " 2.46 2.48 2.5 2.52 2.54 2.56\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 03:00:00: 17%|█▋ | 14401/82800 [00:00<00:02, 26294.36it/s]" + "tutorial_08_zonal_case_3 2019-01-01 23:00:00: : 82801.0it [00:05, 16034.77it/s]\n", + "Training Episodes: 30%|███ | 3/10 [00:27<01:02, 8.97s/it]" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp8j_p18wt.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp70khcqmt.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpzkdmj_es.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpzkdmj_es.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpzkdmj_es.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + "[[[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]]\n", + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" ] }, { "name": "stderr", "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 04:00:00: 22%|██▏ | 18001/82800 [00:00<00:02, 25111.33it/s]" - ] + "text": [] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpzl9g5igo.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp5i5tz7lx.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9qsd6yb3.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9qsd6yb3.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9qsd6yb3.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + " We are adding stuff to the buffer\n", + "[[[2.24 2.26 2.28 2.3 2.32 2.34\n", + " 2.36 2.38 2.4 2.42 2.44 2.46\n", + " 2.48 2.5 2.52 2.54 2.56 2.58\n", + " 2.6 2.62 2.64 2.66 2.68 2.22\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.40666667\n", + " 0. 0.40666667]]\n", + "\n", + " [[2.26 2.28 2.3 2.32 2.34 2.36\n", + " 2.38 2.4 2.42 2.44 2.46 2.48\n", + " 2.5 2.52 2.54 2.56 2.58 2.6\n", + " 2.62 2.64 2.66 2.68 2.22 2.24\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0.40666667 0.40666667\n", + " 0.68 0.40666667]]]\n" ] }, { "name": "stderr", "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 05:00:00: 26%|██▌ | 21601/82800 [00:00<00:02, 27019.03it/s]" - ] + "text": [] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpnlmjovxb.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmppw2vajtv.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpsbd_7huf.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpsbd_7huf.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpsbd_7huf.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + " We are adding stuff to the buffer\n", + "[[[2.28 2.3 2.32 2.34 2.36 2.38\n", + " 2.4 2.42 2.44 2.46 2.48 2.5\n", + " 2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 0.72 0.40666667]]\n", + "\n", + " [[2.3 2.32 2.34 2.36 2.38 2.4\n", + " 2.42 2.44 2.46 2.48 2.5 2.52\n", + " 2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.76 0.40666667]]\n", + "\n", + " [[2.32 2.34 2.36 2.38 2.4 2.42\n", + " 2.44 2.46 2.48 2.5 2.52 2.54\n", + " 2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.8 0.40666667]]\n", + "\n", + " [[2.34 2.36 2.38 2.4 2.42 2.44\n", + " 2.46 2.48 2.5 2.52 2.54 2.56\n", + " 2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 1. 0.40666667]]]\n" ] }, { "name": "stderr", "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 06:00:00: 30%|███ | 25201/82800 [00:01<00:02, 28085.52it/s]" - ] + "text": [] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpi6696nvu.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpx0i9nr4g.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpalzdeplr.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpalzdeplr.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpalzdeplr.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + " We are adding stuff to the buffer\n", + "[[[2.36 2.38 2.4 2.42 2.44 2.46\n", + " 2.48 2.5 2.52 2.54 2.56 2.58\n", + " 2.6 2.62 2.64 2.66 2.68 2.22\n", + " 2.24 2.26 2.28 2.3 2.32 2.34\n", + " 0.40666667 0.40666667 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.38 2.4 2.42 2.44 2.46 2.48\n", + " 2.5 2.52 2.54 2.56 2.58 2.6\n", + " 2.62 2.64 2.66 2.68 2.22 2.24\n", + " 2.26 2.28 2.3 2.32 2.34 2.36\n", + " 0.40666667 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.92 0.40666667]]\n", + "\n", + " [[2.4 2.42 2.44 2.46 2.48 2.5\n", + " 2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 2.28 2.3 2.32 2.34 2.36 2.38\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.96 0.40666667]]\n", + "\n", + " [[2.42 2.44 2.46 2.48 2.5 2.52\n", + " 2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 2.3 2.32 2.34 2.36 2.38 2.4\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 1. 0.40666667]]]\n" ] }, { "name": "stderr", "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 07:00:00: 35%|███▍ | 28801/82800 [00:01<00:01, 27564.75it/s]" - ] + "text": [] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp0n_1tbx7.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_fhn46hq.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp1mirpjz_.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp1mirpjz_.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp1mirpjz_.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + " We are adding stuff to the buffer\n", + "[[[2.44 2.46 2.48 2.5 2.52 2.54\n", + " 2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 2.32 2.34 2.36 2.38 2.4 2.42\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.46 2.48 2.5 2.52 2.54 2.56\n", + " 2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 2.34 2.36 2.38 2.4 2.42 2.44\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.48 2.5 2.52 2.54 2.56 2.58\n", + " 2.6 2.62 2.64 2.66 2.68 2.22\n", + " 2.24 2.26 2.28 2.3 2.32 2.34\n", + " 2.36 2.38 2.4 2.42 2.44 2.46\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.5 2.52 2.54 2.56 2.58 2.6\n", + " 2.62 2.64 2.66 2.68 2.22 2.24\n", + " 2.26 2.28 2.3 2.32 2.34 2.36\n", + " 2.38 2.4 2.42 2.44 2.46 2.48\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]]\n" ] }, { "name": "stderr", "output_type": "stream", - "text": [ - "tutorial_08_zonal_case 2019-01-01 08:00:00: 39%|███▉ | 32401/82800 [00:01<00:01, 27640.87it/s]" - ] + "text": [] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpvddxwz19.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpl5uky8em.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpib349hvz.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpib349hvz.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpib349hvz.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + " We are adding stuff to the buffer\n", + "[[[2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 2.28 2.3 2.32 2.34 2.36 2.38\n", + " 2.4 2.42 2.44 2.46 2.48 2.5\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 2.3 2.32 2.34 2.36 2.38 2.4\n", + " 2.42 2.44 2.46 2.48 2.5 2.52\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 2.32 2.34 2.36 2.38 2.4 2.42\n", + " 2.44 2.46 2.48 2.5 2.52 2.54\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 2.34 2.36 2.38 2.4 2.42 2.44\n", + " 2.46 2.48 2.5 2.52 2.54 2.56\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 09:00:00: 43%|████▎ | 36001/82800 [00:01<00:01, 27693.43it/s]" + "tutorial_08_zonal_case_4 2019-01-01 23:00:00: : 82801.0it [00:04, 16637.54it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmppyb9hsrq.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpprjsr9rz.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9f2xi9b7.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9f2xi9b7.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9f2xi9b7.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" - ] - }, - { + "[[[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]]\n", + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_eval_1 2019-01-01 23:00:00: : 82801.0it [00:05, 16516.72it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 1, metric='avg_reward', value=4437.80\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Training Episodes: 40%|████ | 4/10 [00:40<01:03, 10.66s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " We are adding stuff to the buffer\n", + "[[[2.24 2.26 2.28 2.3 2.32 2.34\n", + " 2.36 2.38 2.4 2.42 2.44 2.46\n", + " 2.48 2.5 2.52 2.54 2.56 2.58\n", + " 2.6 2.62 2.64 2.66 2.68 2.22\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.40666667\n", + " 0. 0.40666667]]\n", + "\n", + " [[2.26 2.28 2.3 2.32 2.34 2.36\n", + " 2.38 2.4 2.42 2.44 2.46 2.48\n", + " 2.5 2.52 2.54 2.56 2.58 2.6\n", + " 2.62 2.64 2.66 2.68 2.22 2.24\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0.40666667 0.40666667\n", + " 1. 0.40666667]]]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " We are adding stuff to the buffer\n", + "[[[2.28 2.3 2.32 2.34 2.36 2.38\n", + " 2.4 2.42 2.44 2.46 2.48 2.5\n", + " 2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.3 2.32 2.34 2.36 2.38 2.4\n", + " 2.42 2.44 2.46 2.48 2.5 2.52\n", + " 2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.32 2.34 2.36 2.38 2.4 2.42\n", + " 2.44 2.46 2.48 2.5 2.52 2.54\n", + " 2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.8 0.40666667]]\n", + "\n", + " [[2.34 2.36 2.38 2.4 2.42 2.44\n", + " 2.46 2.48 2.5 2.52 2.54 2.56\n", + " 2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.84 0.40666667]]]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_5 2019-01-01 06:00:00: 30%|███ | 25201.0/82800 [00:02<00:05, 10792.13it/s]\u001b[A\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " We are adding stuff to the buffer\n", + "[[[2.36 2.38 2.4 2.42 2.44 2.46\n", + " 2.48 2.5 2.52 2.54 2.56 2.58\n", + " 2.6 2.62 2.64 2.66 2.68 2.22\n", + " 2.24 2.26 2.28 2.3 2.32 2.34\n", + " 0.40666667 0.40666667 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.88 0.40666667]]\n", + "\n", + " [[2.38 2.4 2.42 2.44 2.46 2.48\n", + " 2.5 2.52 2.54 2.56 2.58 2.6\n", + " 2.62 2.64 2.66 2.68 2.22 2.24\n", + " 2.26 2.28 2.3 2.32 2.34 2.36\n", + " 0.40666667 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.4 2.42 2.44 2.46 2.48 2.5\n", + " 2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 2.28 2.3 2.32 2.34 2.36 2.38\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.96 0.40666667]]\n", + "\n", + " [[2.42 2.44 2.46 2.48 2.5 2.52\n", + " 2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 2.3 2.32 2.34 2.36 2.38 2.4\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 1. 0.40666667]]]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_5 2019-01-01 10:00:00: 48%|████▊ | 39601.0/82800 [00:03<00:04, 10646.90it/s]\u001b[A\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " We are adding stuff to the buffer\n", + "[[[2.44 2.46 2.48 2.5 2.52 2.54\n", + " 2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 2.32 2.34 2.36 2.38 2.4 2.42\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.46 2.48 2.5 2.52 2.54 2.56\n", + " 2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 2.34 2.36 2.38 2.4 2.42 2.44\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.48 2.5 2.52 2.54 2.56 2.58\n", + " 2.6 2.62 2.64 2.66 2.68 2.22\n", + " 2.24 2.26 2.28 2.3 2.32 2.34\n", + " 2.36 2.38 2.4 2.42 2.44 2.46\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.5 2.52 2.54 2.56 2.58 2.6\n", + " 2.62 2.64 2.66 2.68 2.22 2.24\n", + " 2.26 2.28 2.3 2.32 2.34 2.36\n", + " 2.38 2.4 2.42 2.44 2.46 2.48\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_5 2019-01-01 14:00:00: 65%|██████▌ | 54001.0/82800 [00:04<00:02, 11249.59it/s]\u001b[A" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " We are adding stuff to the buffer\n", + "[[[2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 2.28 2.3 2.32 2.34 2.36 2.38\n", + " 2.4 2.42 2.44 2.46 2.48 2.5\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 2.3 2.32 2.34 2.36 2.38 2.4\n", + " 2.42 2.44 2.46 2.48 2.5 2.52\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 2.32 2.34 2.36 2.38 2.4 2.42\n", + " 2.44 2.46 2.48 2.5 2.52 2.54\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 2.34 2.36 2.38 2.4 2.42 2.44\n", + " 2.46 2.48 2.5 2.52 2.54 2.56\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_5 2019-01-01 23:00:00: : 82801.0it [00:06, 12504.47it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]]\n", + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_eval_2 2019-01-01 23:00:00: : 82801.0it [00:05, 15744.05it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 2, metric='avg_reward', value=4460.81\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "Training Episodes: 50%|█████ | 5/10 [00:56<01:02, 12.51s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " We are adding stuff to the buffer\n", + "[[[2.24 2.26 2.28 2.3 2.32 2.34\n", + " 2.36 2.38 2.4 2.42 2.44 2.46\n", + " 2.48 2.5 2.52 2.54 2.56 2.58\n", + " 2.6 2.62 2.64 2.66 2.68 2.22\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.40666667\n", + " 0. 0.40666667]]\n", + "\n", + " [[2.26 2.28 2.3 2.32 2.34 2.36\n", + " 2.38 2.4 2.42 2.44 2.46 2.48\n", + " 2.5 2.52 2.54 2.56 2.58 2.6\n", + " 2.62 2.64 2.66 2.68 2.22 2.24\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0.40666667 0.40666667\n", + " 0.68 0.40666667]]]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_6 2019-01-01 02:00:00: 13%|█▎ | 10801.0/82800 [00:01<00:07, 9498.09it/s]\u001b[A\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " We are adding stuff to the buffer\n", + "[[[2.28 2.3 2.32 2.34 2.36 2.38\n", + " 2.4 2.42 2.44 2.46 2.48 2.5\n", + " 2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 0.72 0.40666667]]\n", + "\n", + " [[2.3 2.32 2.34 2.36 2.38 2.4\n", + " 2.42 2.44 2.46 2.48 2.5 2.52\n", + " 2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.76 0.40666667]]\n", + "\n", + " [[2.32 2.34 2.36 2.38 2.4 2.42\n", + " 2.44 2.46 2.48 2.5 2.52 2.54\n", + " 2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.8 0.40666667]]\n", + "\n", + " [[2.34 2.36 2.38 2.4 2.42 2.44\n", + " 2.46 2.48 2.5 2.52 2.54 2.56\n", + " 2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.84 0.40666667]]]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_6 2019-01-01 06:00:00: 30%|███ | 25201.0/82800 [00:02<00:05, 10046.38it/s]\u001b[A" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " We are adding stuff to the buffer\n", + "[[[2.36 2.38 2.4 2.42 2.44 2.46\n", + " 2.48 2.5 2.52 2.54 2.56 2.58\n", + " 2.6 2.62 2.64 2.66 2.68 2.22\n", + " 2.24 2.26 2.28 2.3 2.32 2.34\n", + " 0.40666667 0.40666667 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.88 0.40666667]]\n", + "\n", + " [[2.38 2.4 2.42 2.44 2.46 2.48\n", + " 2.5 2.52 2.54 2.56 2.58 2.6\n", + " 2.62 2.64 2.66 2.68 2.22 2.24\n", + " 2.26 2.28 2.3 2.32 2.34 2.36\n", + " 0.40666667 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.92 0.40666667]]\n", + "\n", + " [[2.4 2.42 2.44 2.46 2.48 2.5\n", + " 2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 2.28 2.3 2.32 2.34 2.36 2.38\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.96 0.40666667]]\n", + "\n", + " [[2.42 2.44 2.46 2.48 2.5 2.52\n", + " 2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 2.3 2.32 2.34 2.36 2.38 2.4\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 1. 0.40666667]]]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " We are adding stuff to the buffer\n", + "[[[2.44 2.46 2.48 2.5 2.52 2.54\n", + " 2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 2.32 2.34 2.36 2.38 2.4 2.42\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.46 2.48 2.5 2.52 2.54 2.56\n", + " 2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 2.34 2.36 2.38 2.4 2.42 2.44\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.48 2.5 2.52 2.54 2.56 2.58\n", + " 2.6 2.62 2.64 2.66 2.68 2.22\n", + " 2.24 2.26 2.28 2.3 2.32 2.34\n", + " 2.36 2.38 2.4 2.42 2.44 2.46\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.5 2.52 2.54 2.56 2.58 2.6\n", + " 2.62 2.64 2.66 2.68 2.22 2.24\n", + " 2.26 2.28 2.3 2.32 2.34 2.36\n", + " 2.38 2.4 2.42 2.44 2.46 2.48\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " We are adding stuff to the buffer\n", + "[[[2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 2.28 2.3 2.32 2.34 2.36 2.38\n", + " 2.4 2.42 2.44 2.46 2.48 2.5\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 2.3 2.32 2.34 2.36 2.38 2.4\n", + " 2.42 2.44 2.46 2.48 2.5 2.52\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 2.32 2.34 2.36 2.38 2.4 2.42\n", + " 2.44 2.46 2.48 2.5 2.52 2.54\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 2.34 2.36 2.38 2.4 2.42 2.44\n", + " 2.46 2.48 2.5 2.52 2.54 2.56\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]]\n" + ] + }, + { "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 10:00:00: 48%|████▊ | 39601/82800 [00:01<00:01, 27827.46it/s]" + "tutorial_08_zonal_case_6 2019-01-01 23:00:00: : 82801.0it [00:06, 12378.33it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpesoeqw3j.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp4nnc2imb.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptzq87vcd.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptzq87vcd.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptzq87vcd.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + "[[[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]]]\n", + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 11:00:00: 52%|█████▏ | 43201/82800 [00:01<00:01, 28298.97it/s]" + "tutorial_08_zonal_case_eval_3 2019-01-01 23:00:00: : 82801.0it [00:05, 16431.02it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpw8r2_7lp.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpyz5krcz_.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9eukynh5.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9eukynh5.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp9eukynh5.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 3, metric='avg_reward', value=4470.85\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 12:00:00: 57%|█████▋ | 46801/82800 [00:01<00:01, 28852.64it/s]" + "Training Episodes: 60%|██████ | 6/10 [01:11<00:53, 13.32s/it]" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp0zjthvfm.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp5jy2gw_v.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpfei33xt1.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpfei33xt1.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpfei33xt1.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 13:00:00: 61%|██████ | 50401/82800 [00:01<00:01, 28930.58it/s]" + "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpe4qawphc.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp4gg0rke2.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpgd0dzwgt.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpgd0dzwgt.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpgd0dzwgt.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + " We are adding stuff to the buffer\n", + "[[[2.24 2.26 2.28 2.3 2.32 2.34\n", + " 2.36 2.38 2.4 2.42 2.44 2.46\n", + " 2.48 2.5 2.52 2.54 2.56 2.58\n", + " 2.6 2.62 2.64 2.66 2.68 2.22\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.40666667\n", + " 0. 0.40666667]]\n", + "\n", + " [[2.26 2.28 2.3 2.32 2.34 2.36\n", + " 2.38 2.4 2.42 2.44 2.46 2.48\n", + " 2.5 2.52 2.54 2.56 2.58 2.6\n", + " 2.62 2.64 2.66 2.68 2.22 2.24\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0.40666667 0.40666667\n", + " 0.68 0.40666667]]]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 14:00:00: 65%|██████▌ | 54001/82800 [00:02<00:00, 29114.14it/s]" + "tutorial_08_zonal_case_7 2019-01-01 02:00:00: 13%|█▎ | 10801.0/82800 [00:01<00:07, 9945.75it/s]\u001b[A" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpc7c_l2s1.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpjbk4fuau.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_ifyw8wu.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_ifyw8wu.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp_ifyw8wu.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + " We are adding stuff to the buffer\n", + "[[[2.28 2.3 2.32 2.34 2.36 2.38\n", + " 2.4 2.42 2.44 2.46 2.48 2.5\n", + " 2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 0.72 0.40666667]]\n", + "\n", + " [[2.3 2.32 2.34 2.36 2.38 2.4\n", + " 2.42 2.44 2.46 2.48 2.5 2.52\n", + " 2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.76 0.40666667]]\n", + "\n", + " [[2.32 2.34 2.36 2.38 2.4 2.42\n", + " 2.44 2.46 2.48 2.5 2.52 2.54\n", + " 2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.8 0.40666667]]\n", + "\n", + " [[2.34 2.36 2.38 2.4 2.42 2.44\n", + " 2.46 2.48 2.5 2.52 2.54 2.56\n", + " 2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.84 0.40666667]]]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 15:00:00: 70%|██████▉ | 57601/82800 [00:02<00:00, 28945.96it/s]" + "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpmkesy780.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpv2_uz8yt.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpssw9dxd7.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpssw9dxd7.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpssw9dxd7.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + " We are adding stuff to the buffer\n", + "[[[2.36 2.38 2.4 2.42 2.44 2.46\n", + " 2.48 2.5 2.52 2.54 2.56 2.58\n", + " 2.6 2.62 2.64 2.66 2.68 2.22\n", + " 2.24 2.26 2.28 2.3 2.32 2.34\n", + " 0.40666667 0.40666667 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.88 0.40666667]]\n", + "\n", + " [[2.38 2.4 2.42 2.44 2.46 2.48\n", + " 2.5 2.52 2.54 2.56 2.58 2.6\n", + " 2.62 2.64 2.66 2.68 2.22 2.24\n", + " 2.26 2.28 2.3 2.32 2.34 2.36\n", + " 0.40666667 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.92 0.40666667]]\n", + "\n", + " [[2.4 2.42 2.44 2.46 2.48 2.5\n", + " 2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 2.28 2.3 2.32 2.34 2.36 2.38\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.96 0.40666667]]\n", + "\n", + " [[2.42 2.44 2.46 2.48 2.5 2.52\n", + " 2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 2.3 2.32 2.34 2.36 2.38 2.4\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 1. 0.40666667]]]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 16:00:00: 74%|███████▍ | 61201/82800 [00:02<00:00, 28717.01it/s]" + "tutorial_08_zonal_case_7 2019-01-01 10:00:00: 48%|████▊ | 39601.0/82800 [00:03<00:04, 9982.14it/s] \u001b[A" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp8rznhtvc.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpmc89_zkz.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmppbs52yjm.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmppbs52yjm.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmppbs52yjm.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + " We are adding stuff to the buffer\n", + "[[[2.44 2.46 2.48 2.5 2.52 2.54\n", + " 2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 2.32 2.34 2.36 2.38 2.4 2.42\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.46 2.48 2.5 2.52 2.54 2.56\n", + " 2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 2.34 2.36 2.38 2.4 2.42 2.44\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.48 2.5 2.52 2.54 2.56 2.58\n", + " 2.6 2.62 2.64 2.66 2.68 2.22\n", + " 2.24 2.26 2.28 2.3 2.32 2.34\n", + " 2.36 2.38 2.4 2.42 2.44 2.46\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.5 2.52 2.54 2.56 2.58 2.6\n", + " 2.62 2.64 2.66 2.68 2.22 2.24\n", + " 2.26 2.28 2.3 2.32 2.34 2.36\n", + " 2.38 2.4 2.42 2.44 2.46 2.48\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 17:00:00: 78%|███████▊ | 64801/82800 [00:02<00:00, 27699.07it/s]" + "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpg9y0nlzo.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp6uzjy52q.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpkltjr_3b.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpkltjr_3b.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpkltjr_3b.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + " We are adding stuff to the buffer\n", + "[[[2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 2.28 2.3 2.32 2.34 2.36 2.38\n", + " 2.4 2.42 2.44 2.46 2.48 2.5\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 2.3 2.32 2.34 2.36 2.38 2.4\n", + " 2.42 2.44 2.46 2.48 2.5 2.52\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 2.32 2.34 2.36 2.38 2.4 2.42\n", + " 2.44 2.46 2.48 2.5 2.52 2.54\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 2.34 2.36 2.38 2.4 2.42 2.44\n", + " 2.46 2.48 2.5 2.52 2.54 2.56\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 18:00:00: 83%|████████▎ | 68401/82800 [00:02<00:00, 25430.62it/s]" + "tutorial_08_zonal_case_7 2019-01-01 23:00:00: : 82801.0it [00:07, 10727.90it/s]0:06<00:01, 9494.97it/s] \u001b[A\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmplkij6hnz.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp1lj4pmbk.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp25gr6tjt.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp25gr6tjt.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp25gr6tjt.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + "[[[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]]]\n", + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 19:00:00: 87%|████████▋ | 72001/82800 [00:02<00:00, 26133.69it/s]" + "tutorial_08_zonal_case_eval_4 2019-01-01 23:00:00: : 82801.0it [00:05, 15931.93it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp4hxle4nq.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpvtv21un6.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpbdzops3l.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpbdzops3l.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpbdzops3l.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 4, metric='avg_reward', value=4473.54\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 20:00:00: 91%|█████████▏| 75601/82800 [00:02<00:00, 26373.97it/s]" + "\n", + "Training Episodes: 70%|███████ | 7/10 [01:28<00:43, 14.35s/it]" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmph55l26tw.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptdnf49x_.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp84wgsiao.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp84wgsiao.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmp84wgsiao.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 21:00:00: 96%|█████████▌| 79201/82800 [00:02<00:00, 26761.79it/s]" + "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "ERROR:pyomo.opt:Solver (glpk) returned non-zero return code (1)\n", - "ERROR:pyomo.opt:Solver log:\n", - "GLPSOL--GLPK LP/MIP Solver 5.0\n", - "Parameter(s) specified in the command line:\n", - " --write C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmpp3a_9tkp.glpk.raw --wglp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptc_xsyyn.glpk.glp\n", - " --cpxlp C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptngumm57.pyomo.lp\n", - "Reading problem data from 'C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptngumm57.pyomo.lp'...\n", - "C:\\Users\\tg3533\\AppData\\Local\\Temp\\tmptngumm57.pyomo.lp:27: constraints section missing\n", - "CPLEX LP file processing error\n", - "\n", - "ERROR:assume.markets.base_market:clearing failed: Solver (glpk) did not exit normally\n", - "ERROR:asyncio:Task exception was never retrieved\n", - "future: exception=ApplicationError('Solver (glpk) did not exit normally')>\n", - "Traceback (most recent call last):\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py\", line 277, in __step\n", - " result = coro.send(None)\n", - " ^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\scheduling.py\", line 194, in run\n", - " return await self._coro\n", - " ^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 629, in clear_market\n", - " raise e\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\base_market.py\", line 626, in clear_market\n", - " ) = self.clear(self.all_orders, market_products)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 449, in clear\n", - " while True:\n", - " \n", - " File \"C:\\Users\\tg3533\\Documents\\Code\\assume\\assume\\markets\\clearing_algorithms\\complex_clearing.py\", line 252, in market_clearing_opt\n", - " results = solver.solve(instance, options=options)\n", - " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", - " File \"c:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pyomo\\opt\\base\\solvers.py\", line 628, in solve\n", - " raise ApplicationError(\"Solver (%s) did not exit normally\" % self.name)\n", - "pyomo.common.errors.ApplicationError: Solver (glpk) did not exit normally\n" + " We are adding stuff to the buffer\n", + "[[[2.24 2.26 2.28 2.3 2.32 2.34\n", + " 2.36 2.38 2.4 2.42 2.44 2.46\n", + " 2.48 2.5 2.52 2.54 2.56 2.58\n", + " 2.6 2.62 2.64 2.66 2.68 2.22\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.40666667\n", + " 0. 0.40666667]]\n", + "\n", + " [[2.26 2.28 2.3 2.32 2.34 2.36\n", + " 2.38 2.4 2.42 2.44 2.46 2.48\n", + " 2.5 2.52 2.54 2.56 2.58 2.6\n", + " 2.62 2.64 2.66 2.68 2.22 2.24\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0.40666667 0.40666667\n", + " 0.68 0.40666667]]]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case 2019-01-01 23:00:00: : 82801it [00:03, 26947.63it/s] \n" + "tutorial_08_zonal_case_8 2019-01-01 02:00:00: 13%|█▎ | 10801.0/82800 [00:01<00:07, 9580.65it/s]\u001b[A\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " We are adding stuff to the buffer\n", + "[[[2.28 2.3 2.32 2.34 2.36 2.38\n", + " 2.4 2.42 2.44 2.46 2.48 2.5\n", + " 2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 0.72 0.40666667]]\n", + "\n", + " [[2.3 2.32 2.34 2.36 2.38 2.4\n", + " 2.42 2.44 2.46 2.48 2.5 2.52\n", + " 2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.76 0.40666667]]\n", + "\n", + " [[2.32 2.34 2.36 2.38 2.4 2.42\n", + " 2.44 2.46 2.48 2.5 2.52 2.54\n", + " 2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.8 0.40666667]]\n", + "\n", + " [[2.34 2.36 2.38 2.4 2.42 2.44\n", + " 2.46 2.48 2.5 2.52 2.54 2.56\n", + " 2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.84 0.40666667]]]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_8 2019-01-01 06:00:00: 30%|███ | 25201.0/82800 [00:02<00:05, 9924.24it/s] \u001b[A\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " We are adding stuff to the buffer\n", + "[[[2.36 2.38 2.4 2.42 2.44 2.46\n", + " 2.48 2.5 2.52 2.54 2.56 2.58\n", + " 2.6 2.62 2.64 2.66 2.68 2.22\n", + " 2.24 2.26 2.28 2.3 2.32 2.34\n", + " 0.40666667 0.40666667 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.88 0.40666667]]\n", + "\n", + " [[2.38 2.4 2.42 2.44 2.46 2.48\n", + " 2.5 2.52 2.54 2.56 2.58 2.6\n", + " 2.62 2.64 2.66 2.68 2.22 2.24\n", + " 2.26 2.28 2.3 2.32 2.34 2.36\n", + " 0.40666667 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.92 0.40666667]]\n", + "\n", + " [[2.4 2.42 2.44 2.46 2.48 2.5\n", + " 2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 2.28 2.3 2.32 2.34 2.36 2.38\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.96 0.40666667]]\n", + "\n", + " [[2.42 2.44 2.46 2.48 2.5 2.52\n", + " 2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 2.3 2.32 2.34 2.36 2.38 2.4\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 1. 0.40666667]]]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_8 2019-01-01 10:00:00: 48%|████▊ | 39601.0/82800 [00:03<00:04, 10323.32it/s]\u001b[A\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " We are adding stuff to the buffer\n", + "[[[2.44 2.46 2.48 2.5 2.52 2.54\n", + " 2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 2.32 2.34 2.36 2.38 2.4 2.42\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.46 2.48 2.5 2.52 2.54 2.56\n", + " 2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 2.34 2.36 2.38 2.4 2.42 2.44\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.48 2.5 2.52 2.54 2.56 2.58\n", + " 2.6 2.62 2.64 2.66 2.68 2.22\n", + " 2.24 2.26 2.28 2.3 2.32 2.34\n", + " 2.36 2.38 2.4 2.42 2.44 2.46\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.5 2.52 2.54 2.56 2.58 2.6\n", + " 2.62 2.64 2.66 2.68 2.22 2.24\n", + " 2.26 2.28 2.3 2.32 2.34 2.36\n", + " 2.38 2.4 2.42 2.44 2.46 2.48\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0. 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_8 2019-01-01 14:00:00: 65%|██████▌ | 54001.0/82800 [00:05<00:02, 9956.87it/s] \u001b[A" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " We are adding stuff to the buffer\n", + "[[[2.52 2.54 2.56 2.58 2.6 2.62\n", + " 2.64 2.66 2.68 2.22 2.24 2.26\n", + " 2.28 2.3 2.32 2.34 2.36 2.38\n", + " 2.4 2.42 2.44 2.46 2.48 2.5\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0. 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.54 2.56 2.58 2.6 2.62 2.64\n", + " 2.66 2.68 2.22 2.24 2.26 2.28\n", + " 2.3 2.32 2.34 2.36 2.38 2.4\n", + " 2.42 2.44 2.46 2.48 2.5 2.52\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0. 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.56 2.58 2.6 2.62 2.64 2.66\n", + " 2.68 2.22 2.24 2.26 2.28 2.3\n", + " 2.32 2.34 2.36 2.38 2.4 2.42\n", + " 2.44 2.46 2.48 2.5 2.52 2.54\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0. 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]\n", + "\n", + " [[2.58 2.6 2.62 2.64 2.66 2.68\n", + " 2.22 2.24 2.26 2.28 2.3 2.32\n", + " 2.34 2.36 2.38 2.4 2.42 2.44\n", + " 2.46 2.48 2.5 2.52 2.54 2.56\n", + " 0. 0. 0. 0. 0. 0.\n", + " 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667 0.40666667\n", + " 0.40666667 0.40666667 0.40666667 0. 0. 0.\n", + " 0. 0. 0. 0. 0. 0.\n", + " 1. 0.40666667]]]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 1.0, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]], [[2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.40666666626930237]], [[2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.0, 0.40666666626930237]], [[2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.6800000071525574, 0.40666666626930237]], [[2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7200000286102295, 0.40666666626930237]], [[2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.7599999904632568, 0.40666666626930237]], [[2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.800000011920929, 0.40666666626930237]], [[2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8399999737739563, 0.40666666626930237]], [[2.359999895095825, 2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 0.40666666626930237, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.8799999952316284, 0.40666666626930237]], [[2.380000114440918, 2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 0.40666666626930237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9200000166893005, 0.40666666626930237]], [[2.4000000953674316, 2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.9599999785423279, 0.40666666626930237]], [[2.4200000762939453, 2.440000057220459, 2.4600000381469727, 2.4800000190734863, 2.5, 2.5199999809265137, 2.5399999618530273, 2.559999942779541, 2.5799999237060547, 2.5999999046325684, 2.619999885559082, 2.640000104904175, 2.6600000858306885, 2.680000066757202, 2.2200000286102295, 2.240000009536743, 2.259999990463257, 2.2799999713897705, 2.299999952316284, 2.319999933242798, 2.3399999141693115, 2.359999895095825, 2.380000114440918, 2.4000000953674316, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.40666666626930237, 0.0, 1.0, 0.40666666626930237]]]\n", + "WARNING:mango.util.distributed_clock:clock: no new events, time stands still\n", + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "Training Episodes: 70%|███████ | 7/10 [01:37<00:41, 13.99s/it]\n" + ] + }, + { + "ename": "ValueError", + "evalue": "Time must be > 1546383600.0 but is 1546300799.", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[14], line 39\u001b[0m\n\u001b[0;32m 35\u001b[0m \u001b[38;5;66;03m# run learning if learning mode is enabled\u001b[39;00m\n\u001b[0;32m 36\u001b[0m \u001b[38;5;66;03m# needed as we simulate the modelling horizon multiple times to train reinforcement learning run_learning( world, inputs_path=input_path, scenario=scenario, study_case=study_case, )\u001b[39;00m\n\u001b[0;32m 38\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m world\u001b[38;5;241m.\u001b[39mlearning_config\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlearning_mode\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[1;32m---> 39\u001b[0m \u001b[43mrun_learning\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 40\u001b[0m \u001b[43m \u001b[49m\u001b[43mworld\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 41\u001b[0m \u001b[43m \u001b[49m\u001b[43minputs_path\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minputs_path\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 42\u001b[0m \u001b[43m \u001b[49m\u001b[43mscenario\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtutorial_08\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 43\u001b[0m \u001b[43m \u001b[49m\u001b[43mstudy_case\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mzonal_case\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 44\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 46\u001b[0m \u001b[38;5;66;03m# Run the simulation\u001b[39;00m\n\u001b[0;32m 47\u001b[0m world\u001b[38;5;241m.\u001b[39mrun()\n", + "Cell \u001b[1;32mIn[10], line 152\u001b[0m, in \u001b[0;36mrun_learning\u001b[1;34m(world, inputs_path, scenario, study_case, verbose)\u001b[0m\n\u001b[0;32m 142\u001b[0m setup_world(\n\u001b[0;32m 143\u001b[0m world\u001b[38;5;241m=\u001b[39mworld,\n\u001b[0;32m 144\u001b[0m scenario_data\u001b[38;5;241m=\u001b[39mscenario_data,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 147\u001b[0m eval_episode\u001b[38;5;241m=\u001b[39meval_episode,\n\u001b[0;32m 148\u001b[0m )\n\u001b[0;32m 150\u001b[0m world\u001b[38;5;241m.\u001b[39mlearning_role\u001b[38;5;241m.\u001b[39mload_inter_episodic_data(inter_episodic_data)\n\u001b[1;32m--> 152\u001b[0m \u001b[43mworld\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 154\u001b[0m total_rewards \u001b[38;5;241m=\u001b[39m world\u001b[38;5;241m.\u001b[39moutput_role\u001b[38;5;241m.\u001b[39mget_sum_reward()\n\u001b[0;32m 155\u001b[0m avg_reward \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mmean(total_rewards)\n", + "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\world.py:686\u001b[0m, in \u001b[0;36mWorld.run\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 683\u001b[0m end_ts \u001b[38;5;241m=\u001b[39m datetime2timestamp(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mend)\n\u001b[0;32m 685\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 686\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_until_complete\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 687\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43masync_run\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart_ts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstart_ts\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mend_ts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mend_ts\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 688\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 689\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m:\n\u001b[0;32m 690\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\nest_asyncio.py:98\u001b[0m, in \u001b[0;36m_patch_loop..run_until_complete\u001b[1;34m(self, future)\u001b[0m\n\u001b[0;32m 95\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m f\u001b[38;5;241m.\u001b[39mdone():\n\u001b[0;32m 96\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[0;32m 97\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mEvent loop stopped before Future completed.\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m---> 98\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mf\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py:203\u001b[0m, in \u001b[0;36mFuture.result\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 201\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__log_traceback \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m 202\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 203\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception\u001b[38;5;241m.\u001b[39mwith_traceback(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception_tb)\n\u001b[0;32m 204\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_result\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py:277\u001b[0m, in \u001b[0;36mTask.__step\u001b[1;34m(***failed resolving arguments***)\u001b[0m\n\u001b[0;32m 273\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 274\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m exc \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 275\u001b[0m \u001b[38;5;66;03m# We use the `send` method directly, because coroutines\u001b[39;00m\n\u001b[0;32m 276\u001b[0m \u001b[38;5;66;03m# don't have `__iter__` and `__next__` methods.\u001b[39;00m\n\u001b[1;32m--> 277\u001b[0m result \u001b[38;5;241m=\u001b[39m coro\u001b[38;5;241m.\u001b[39msend(\u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 278\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 279\u001b[0m result \u001b[38;5;241m=\u001b[39m coro\u001b[38;5;241m.\u001b[39mthrow(exc)\n", + "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\world.py:651\u001b[0m, in \u001b[0;36mWorld.async_run\u001b[1;34m(self, start_ts, end_ts)\u001b[0m\n\u001b[0;32m 648\u001b[0m pbar \u001b[38;5;241m=\u001b[39m tqdm(total\u001b[38;5;241m=\u001b[39mend_ts \u001b[38;5;241m-\u001b[39m start_ts)\n\u001b[0;32m 650\u001b[0m \u001b[38;5;66;03m# allow registration before first opening\u001b[39;00m\n\u001b[1;32m--> 651\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mclock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_time\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart_ts\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[0;32m 652\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdistributed_role \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mFalse\u001b[39;00m:\n\u001b[0;32m 653\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclock_manager\u001b[38;5;241m.\u001b[39mbroadcast(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclock\u001b[38;5;241m.\u001b[39mtime)\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\clock.py:70\u001b[0m, in \u001b[0;36mExternalClock.set_time\u001b[1;34m(self, t)\u001b[0m\n\u001b[0;32m 66\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 67\u001b[0m \u001b[38;5;124;03mNew time is set\u001b[39;00m\n\u001b[0;32m 68\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 69\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m t \u001b[38;5;241m<\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time:\n\u001b[1;32m---> 70\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTime must be > \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m but is \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mt\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 71\u001b[0m \u001b[38;5;66;03m# set time\u001b[39;00m\n\u001b[0;32m 72\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time \u001b[38;5;241m=\u001b[39m t\n", + "\u001b[1;31mValueError\u001b[0m: Time must be > 1546383600.0 but is 1546300799." + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_eval_5 2019-01-01 23:00:00: : 1546466401.0it [00:10, 154384521.99it/s]\n" ] } ], @@ -2515,27 +3277,981 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 11, "id": "96bfa2ee", "metadata": { "id": "bdb21cbe" }, "outputs": [ { - "ename": "FileNotFoundError", - "evalue": "[Errno 2] No such file or directory: 'outputs/tutorial_08_zonal_case\\\\market_meta.csv'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[30], line 9\u001b[0m\n\u001b[0;32m 6\u001b[0m market_meta_path \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(output_dir, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmarket_meta.csv\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 8\u001b[0m \u001b[38;5;66;03m# Load the market_meta.csv file\u001b[39;00m\n\u001b[1;32m----> 9\u001b[0m market_meta \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread_csv\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmarket_meta_path\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mindex_col\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtime\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mparse_dates\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[0;32m 10\u001b[0m \u001b[38;5;66;03m# drop the first column\u001b[39;00m\n\u001b[0;32m 11\u001b[0m market_meta \u001b[38;5;241m=\u001b[39m market_meta\u001b[38;5;241m.\u001b[39mdrop(columns\u001b[38;5;241m=\u001b[39mmarket_meta\u001b[38;5;241m.\u001b[39mcolumns[\u001b[38;5;241m0\u001b[39m])\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\io\\parsers\\readers.py:1026\u001b[0m, in \u001b[0;36mread_csv\u001b[1;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, date_format, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options, dtype_backend)\u001b[0m\n\u001b[0;32m 1013\u001b[0m kwds_defaults \u001b[38;5;241m=\u001b[39m _refine_defaults_read(\n\u001b[0;32m 1014\u001b[0m dialect,\n\u001b[0;32m 1015\u001b[0m delimiter,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1022\u001b[0m dtype_backend\u001b[38;5;241m=\u001b[39mdtype_backend,\n\u001b[0;32m 1023\u001b[0m )\n\u001b[0;32m 1024\u001b[0m kwds\u001b[38;5;241m.\u001b[39mupdate(kwds_defaults)\n\u001b[1;32m-> 1026\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_read\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\io\\parsers\\readers.py:620\u001b[0m, in \u001b[0;36m_read\u001b[1;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[0;32m 617\u001b[0m _validate_names(kwds\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnames\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m))\n\u001b[0;32m 619\u001b[0m \u001b[38;5;66;03m# Create the parser.\u001b[39;00m\n\u001b[1;32m--> 620\u001b[0m parser \u001b[38;5;241m=\u001b[39m \u001b[43mTextFileReader\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 622\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m chunksize \u001b[38;5;129;01mor\u001b[39;00m iterator:\n\u001b[0;32m 623\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m parser\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\io\\parsers\\readers.py:1620\u001b[0m, in \u001b[0;36mTextFileReader.__init__\u001b[1;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[0;32m 1617\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moptions[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m kwds[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[0;32m 1619\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles: IOHandles \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m-> 1620\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_engine \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_engine\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mengine\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\io\\parsers\\readers.py:1880\u001b[0m, in \u001b[0;36mTextFileReader._make_engine\u001b[1;34m(self, f, engine)\u001b[0m\n\u001b[0;32m 1878\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m mode:\n\u001b[0;32m 1879\u001b[0m mode \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m-> 1880\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles \u001b[38;5;241m=\u001b[39m \u001b[43mget_handle\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 1881\u001b[0m \u001b[43m \u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1882\u001b[0m \u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1883\u001b[0m \u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mencoding\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1884\u001b[0m \u001b[43m \u001b[49m\u001b[43mcompression\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcompression\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1885\u001b[0m \u001b[43m \u001b[49m\u001b[43mmemory_map\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmemory_map\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1886\u001b[0m \u001b[43m \u001b[49m\u001b[43mis_text\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mis_text\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1887\u001b[0m \u001b[43m \u001b[49m\u001b[43merrors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mencoding_errors\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstrict\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1888\u001b[0m \u001b[43m \u001b[49m\u001b[43mstorage_options\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstorage_options\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1889\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1890\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 1891\u001b[0m f \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles\u001b[38;5;241m.\u001b[39mhandle\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\pandas\\io\\common.py:873\u001b[0m, in \u001b[0;36mget_handle\u001b[1;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[0m\n\u001b[0;32m 868\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(handle, \u001b[38;5;28mstr\u001b[39m):\n\u001b[0;32m 869\u001b[0m \u001b[38;5;66;03m# Check whether the filename is to be opened in binary mode.\u001b[39;00m\n\u001b[0;32m 870\u001b[0m \u001b[38;5;66;03m# Binary mode does not support 'encoding' and 'newline'.\u001b[39;00m\n\u001b[0;32m 871\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ioargs\u001b[38;5;241m.\u001b[39mencoding \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m ioargs\u001b[38;5;241m.\u001b[39mmode:\n\u001b[0;32m 872\u001b[0m \u001b[38;5;66;03m# Encoding\u001b[39;00m\n\u001b[1;32m--> 873\u001b[0m handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mopen\u001b[39m(\n\u001b[0;32m 874\u001b[0m handle,\n\u001b[0;32m 875\u001b[0m ioargs\u001b[38;5;241m.\u001b[39mmode,\n\u001b[0;32m 876\u001b[0m encoding\u001b[38;5;241m=\u001b[39mioargs\u001b[38;5;241m.\u001b[39mencoding,\n\u001b[0;32m 877\u001b[0m errors\u001b[38;5;241m=\u001b[39merrors,\n\u001b[0;32m 878\u001b[0m newline\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 879\u001b[0m )\n\u001b[0;32m 880\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 881\u001b[0m \u001b[38;5;66;03m# Binary mode\u001b[39;00m\n\u001b[0;32m 882\u001b[0m handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mopen\u001b[39m(handle, ioargs\u001b[38;5;241m.\u001b[39mmode)\n", - "\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'outputs/tutorial_08_zonal_case\\\\market_meta.csv'" - ] + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "line": { + "width": 2 + }, + "mode": "lines", + "name": "DE_1 - Simulation", + "type": "scatter", + "x": [ + "2019-01-01T01:00:00", + "2019-01-01T02:00:00", + "2019-01-01T03:00:00", + "2019-01-01T04:00:00", + "2019-01-01T05:00:00", + "2019-01-01T06:00:00", + "2019-01-01T07:00:00", + "2019-01-01T08:00:00", + "2019-01-01T09:00:00", + "2019-01-01T10:00:00", + "2019-01-01T11:00:00", + "2019-01-01T12:00:00", + "2019-01-01T13:00:00", + "2019-01-01T14:00:00", + "2019-01-01T15:00:00", + "2019-01-01T16:00:00", + "2019-01-01T17:00:00", + "2019-01-01T18:00:00", + "2019-01-01T19:00:00", + "2019-01-01T20:00:00", + "2019-01-01T21:00:00", + "2019-01-01T22:00:00", + "2019-01-01T23:00:00" + ], + "y": [ + 38.667, + 38.667, + 38.667, + 38.667, + 39.667, + 39.667, + 39.667, + 39.667, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000 + ] + }, + { + "line": { + "width": 2 + }, + "mode": "lines", + "name": "DE_2 - Simulation", + "type": "scatter", + "x": [ + "2019-01-01T01:00:00", + "2019-01-01T02:00:00", + "2019-01-01T03:00:00", + "2019-01-01T04:00:00", + "2019-01-01T05:00:00", + "2019-01-01T06:00:00", + "2019-01-01T07:00:00", + "2019-01-01T08:00:00", + "2019-01-01T09:00:00", + "2019-01-01T10:00:00", + "2019-01-01T11:00:00", + "2019-01-01T12:00:00", + "2019-01-01T13:00:00", + "2019-01-01T14:00:00", + "2019-01-01T15:00:00", + "2019-01-01T16:00:00", + "2019-01-01T17:00:00", + "2019-01-01T18:00:00", + "2019-01-01T19:00:00", + "2019-01-01T20:00:00", + "2019-01-01T21:00:00", + "2019-01-01T22:00:00", + "2019-01-01T23:00:00" + ], + "y": [ + 38.667, + 38.667, + 38.667, + 38.667, + 39.667, + 39.667, + 39.667, + 39.667, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000, + 3000 + ] + } + ], + "layout": { + "height": 600, + "hovermode": "x unified", + "legend": { + "title": { + "text": "Market Zones" + } + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "white", + "showlakes": true, + "showland": true, + "subunitcolor": "#C8D4E3" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "bgcolor": "white", + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "gridwidth": 2, + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "bgcolor": "white", + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Clearing Prices per Zone Over Time: Simulation Results" + }, + "width": 1000, + "xaxis": { + "tickangle": 45, + "title": { + "text": "Time" + }, + "type": "date" + }, + "yaxis": { + "title": { + "text": "Clearing Price (EUR/MWh)" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ @@ -2649,7 +4365,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "id": "b9f4d746", "metadata": { "id": "ae266ecb", @@ -2793,12 +4509,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "id": "0a23dfa1", "metadata": { "id": "b6ee4f28" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n" + ] + } + ], "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", @@ -2843,7 +4567,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "id": "168757a6", "metadata": { "id": "7216677a" @@ -2855,7 +4579,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "id": "2f4d6257", "metadata": { "id": "5a4d6e17" @@ -2884,7 +4608,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "id": "f38c74cb", "metadata": { "id": "44862f06" @@ -2907,9 +4631,11 @@ " input_data = np.array(json_data)\n", " input_data = np.squeeze(input_data)\n", "\n", + " print(len(input_data))\n", " # filter out arrays where all value are 0\n", " input_data = input_data[~np.all(input_data == 0, axis=1)]\n", "\n", + " print(len(input_data))\n", " # filter only first 700 observations\n", " input_data = input_data[:700]\n", "\n", @@ -2938,7 +4664,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "id": "47473ec8", "metadata": { "id": "8fa78b12" @@ -2952,7 +4678,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "id": "76fdf5d0", "metadata": { "id": "8f9189ca" @@ -2988,12 +4714,84 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "id": "1819ff26", "metadata": { "id": "d522969d" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "../inputs\\tutorial_08/learned_strategies/zonal_case/buffer_obs/buffer_obs.json\n", + "500000\n", + "0\n" + ] + }, + { + "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", + "
price forecast t+1price forecast t+2price forecast t+3price forecast t+4price forecast t+5price forecast t+6price forecast t+7price forecast t+8price forecast t+9price forecast t+10...residual load forecast t+17residual load forecast t+18residual load forecast t+19residual load forecast t+20residual load forecast t+21residual load forecast t+22residual load forecast t+23residual load forecast t+24total capacity t-1marginal costs t-1
\n", + "

0 rows × 50 columns

\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [price forecast t+1, price forecast t+2, price forecast t+3, price forecast t+4, price forecast t+5, price forecast t+6, price forecast t+7, price forecast t+8, price forecast t+9, price forecast t+10, price forecast t+11, price forecast t+12, price forecast t+13, price forecast t+14, price forecast t+15, price forecast t+16, price forecast t+17, price forecast t+18, price forecast t+19, price forecast t+20, price forecast t+21, price forecast t+22, price forecast t+23, price forecast t+24, residual load forecast t+1, residual load forecast t+2, residual load forecast t+3, residual load forecast t+4, residual load forecast t+5, residual load forecast t+6, residual load forecast t+7, residual load forecast t+8, residual load forecast t+9, residual load forecast t+10, residual load forecast t+11, residual load forecast t+12, residual load forecast t+13, residual load forecast t+14, residual load forecast t+15, residual load forecast t+16, residual load forecast t+17, residual load forecast t+18, residual load forecast t+19, residual load forecast t+20, residual load forecast t+21, residual load forecast t+22, residual load forecast t+23, residual load forecast t+24, total capacity t-1, marginal costs t-1]\n", + "Index: []\n", + "\n", + "[0 rows x 50 columns]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "df_obs, input_data = load_observations(path, feature_names)\n", "\n", @@ -3022,7 +4820,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "id": "c27178fe", "metadata": { "id": "4da4de57" @@ -3037,12 +4835,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "id": "35a088d5", "metadata": { "id": "37adecfa" }, - "outputs": [], + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: '../inputs\\\\tutorial_08\\\\learned_strategies/zonal_case/avg_reward_eval_policies/actor_pp_{ACTOR_NUM}.pt'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[21], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Load the trained model parameters\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m model_state \u001b[38;5;241m=\u001b[39m \u001b[43mth\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mload\u001b[49m\u001b[43m(\u001b[49m\u001b[43mactor_path\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmap_location\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mth\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdevice\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcpu\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 3\u001b[0m model\u001b[38;5;241m.\u001b[39mload_state_dict(model_state[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mactor\u001b[39m\u001b[38;5;124m\"\u001b[39m])\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\torch\\serialization.py:997\u001b[0m, in \u001b[0;36mload\u001b[1;34m(f, map_location, pickle_module, weights_only, mmap, **pickle_load_args)\u001b[0m\n\u001b[0;32m 994\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mencoding\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m pickle_load_args\u001b[38;5;241m.\u001b[39mkeys():\n\u001b[0;32m 995\u001b[0m pickle_load_args[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mencoding\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mutf-8\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m--> 997\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[43m_open_file_like\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mrb\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m opened_file:\n\u001b[0;32m 998\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m _is_zipfile(opened_file):\n\u001b[0;32m 999\u001b[0m \u001b[38;5;66;03m# The zipfile reader is going to advance the current file position.\u001b[39;00m\n\u001b[0;32m 1000\u001b[0m \u001b[38;5;66;03m# If we want to actually tail call to torch.jit.load, we need to\u001b[39;00m\n\u001b[0;32m 1001\u001b[0m \u001b[38;5;66;03m# reset back to the original position.\u001b[39;00m\n\u001b[0;32m 1002\u001b[0m orig_position \u001b[38;5;241m=\u001b[39m opened_file\u001b[38;5;241m.\u001b[39mtell()\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\torch\\serialization.py:444\u001b[0m, in \u001b[0;36m_open_file_like\u001b[1;34m(name_or_buffer, mode)\u001b[0m\n\u001b[0;32m 442\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_open_file_like\u001b[39m(name_or_buffer, mode):\n\u001b[0;32m 443\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m _is_path(name_or_buffer):\n\u001b[1;32m--> 444\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_open_file\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname_or_buffer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 445\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 446\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mw\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01min\u001b[39;00m mode:\n", + "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\torch\\serialization.py:425\u001b[0m, in \u001b[0;36m_open_file.__init__\u001b[1;34m(self, name, mode)\u001b[0m\n\u001b[0;32m 424\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m, name, mode):\n\u001b[1;32m--> 425\u001b[0m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39m\u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m)\u001b[49m)\n", + "\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '../inputs\\\\tutorial_08\\\\learned_strategies/zonal_case/avg_reward_eval_policies/actor_pp_{ACTOR_NUM}.pt'" + ] + } + ], "source": [ "# Load the trained model parameters\n", "model_state = th.load(actor_path, map_location=th.device(\"cpu\"))\n", From 04a67c9952ce490bb9a4c8b0882531287d2755d1 Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Tue, 8 Oct 2024 17:56:03 +0200 Subject: [PATCH 24/27] - finished debugging xRL Script ith zonal example (wuhu) --- .../notebooks/09_example_Sim_and_xRL.ipynb | 4921 +++++++++-------- 1 file changed, 2563 insertions(+), 2358 deletions(-) diff --git a/examples/notebooks/09_example_Sim_and_xRL.ipynb b/examples/notebooks/09_example_Sim_and_xRL.ipynb index ee71534a..e9ec75e9 100644 --- a/examples/notebooks/09_example_Sim_and_xRL.ipynb +++ b/examples/notebooks/09_example_Sim_and_xRL.ipynb @@ -138,7 +138,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "02dea28f", "metadata": { "colab": { @@ -160,7 +160,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "544d38a4", "metadata": { "colab": { @@ -189,7 +189,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "a578e164", "metadata": { "colab": { @@ -243,7 +243,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "116b9e37", "metadata": { "vscode": { @@ -266,7 +266,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 5, "id": "9871a2a5", "metadata": { "colab": { @@ -316,7 +316,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "ac7d12fb", "metadata": { "colab": { @@ -536,7 +536,7 @@ "Unit 20 0.0 0.3 24 south Operator-RL " ] }, - "execution_count": 7, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -629,7 +629,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 7, "id": "03cc1a12", "metadata": { "colab": { @@ -714,7 +714,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "id": "823db62a", "metadata": { "cellView": "form", @@ -939,7 +939,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 9, "id": "9092a097", "metadata": { "colab": { @@ -958,7 +958,13 @@ "INFO:assume.scenario.loader_csv:Starting Scenario tutorial_08/zonal_case from ../inputs\n", "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", - "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", + "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", "INFO:assume.scenario.loader_csv:availability_df not found. Returning None\n", "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", @@ -983,252 +989,70 @@ "name": "stderr", "output_type": "stream", "text": [ - "Training Episodes: 0%| | 0/10 [00:00 1546383600.0 but is 1546300799.", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[14], line 39\u001b[0m\n\u001b[0;32m 35\u001b[0m \u001b[38;5;66;03m# run learning if learning mode is enabled\u001b[39;00m\n\u001b[0;32m 36\u001b[0m \u001b[38;5;66;03m# needed as we simulate the modelling horizon multiple times to train reinforcement learning run_learning( world, inputs_path=input_path, scenario=scenario, study_case=study_case, )\u001b[39;00m\n\u001b[0;32m 38\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m world\u001b[38;5;241m.\u001b[39mlearning_config\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlearning_mode\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mFalse\u001b[39;00m):\n\u001b[1;32m---> 39\u001b[0m \u001b[43mrun_learning\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 40\u001b[0m \u001b[43m \u001b[49m\u001b[43mworld\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 41\u001b[0m \u001b[43m \u001b[49m\u001b[43minputs_path\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minputs_path\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 42\u001b[0m \u001b[43m \u001b[49m\u001b[43mscenario\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtutorial_08\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 43\u001b[0m \u001b[43m \u001b[49m\u001b[43mstudy_case\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mzonal_case\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 44\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 46\u001b[0m \u001b[38;5;66;03m# Run the simulation\u001b[39;00m\n\u001b[0;32m 47\u001b[0m world\u001b[38;5;241m.\u001b[39mrun()\n", - "Cell \u001b[1;32mIn[10], line 152\u001b[0m, in \u001b[0;36mrun_learning\u001b[1;34m(world, inputs_path, scenario, study_case, verbose)\u001b[0m\n\u001b[0;32m 142\u001b[0m setup_world(\n\u001b[0;32m 143\u001b[0m world\u001b[38;5;241m=\u001b[39mworld,\n\u001b[0;32m 144\u001b[0m scenario_data\u001b[38;5;241m=\u001b[39mscenario_data,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 147\u001b[0m eval_episode\u001b[38;5;241m=\u001b[39meval_episode,\n\u001b[0;32m 148\u001b[0m )\n\u001b[0;32m 150\u001b[0m world\u001b[38;5;241m.\u001b[39mlearning_role\u001b[38;5;241m.\u001b[39mload_inter_episodic_data(inter_episodic_data)\n\u001b[1;32m--> 152\u001b[0m \u001b[43mworld\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 154\u001b[0m total_rewards \u001b[38;5;241m=\u001b[39m world\u001b[38;5;241m.\u001b[39moutput_role\u001b[38;5;241m.\u001b[39mget_sum_reward()\n\u001b[0;32m 155\u001b[0m avg_reward \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mmean(total_rewards)\n", - "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\world.py:686\u001b[0m, in \u001b[0;36mWorld.run\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 683\u001b[0m end_ts \u001b[38;5;241m=\u001b[39m datetime2timestamp(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mend)\n\u001b[0;32m 685\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 686\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloop\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_until_complete\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 687\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43masync_run\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart_ts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstart_ts\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mend_ts\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mend_ts\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 688\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 689\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyboardInterrupt\u001b[39;00m:\n\u001b[0;32m 690\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\nest_asyncio.py:98\u001b[0m, in \u001b[0;36m_patch_loop..run_until_complete\u001b[1;34m(self, future)\u001b[0m\n\u001b[0;32m 95\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m f\u001b[38;5;241m.\u001b[39mdone():\n\u001b[0;32m 96\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[0;32m 97\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mEvent loop stopped before Future completed.\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m---> 98\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mf\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\futures.py:203\u001b[0m, in \u001b[0;36mFuture.result\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 201\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m__log_traceback \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m 202\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m--> 203\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception\u001b[38;5;241m.\u001b[39mwith_traceback(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception_tb)\n\u001b[0;32m 204\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_result\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\asyncio\\tasks.py:277\u001b[0m, in \u001b[0;36mTask.__step\u001b[1;34m(***failed resolving arguments***)\u001b[0m\n\u001b[0;32m 273\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 274\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m exc \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m 275\u001b[0m \u001b[38;5;66;03m# We use the `send` method directly, because coroutines\u001b[39;00m\n\u001b[0;32m 276\u001b[0m \u001b[38;5;66;03m# don't have `__iter__` and `__next__` methods.\u001b[39;00m\n\u001b[1;32m--> 277\u001b[0m result \u001b[38;5;241m=\u001b[39m coro\u001b[38;5;241m.\u001b[39msend(\u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[0;32m 278\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 279\u001b[0m result \u001b[38;5;241m=\u001b[39m coro\u001b[38;5;241m.\u001b[39mthrow(exc)\n", - "File \u001b[1;32m~\\Documents\\Code\\assume\\assume\\world.py:651\u001b[0m, in \u001b[0;36mWorld.async_run\u001b[1;34m(self, start_ts, end_ts)\u001b[0m\n\u001b[0;32m 648\u001b[0m pbar \u001b[38;5;241m=\u001b[39m tqdm(total\u001b[38;5;241m=\u001b[39mend_ts \u001b[38;5;241m-\u001b[39m start_ts)\n\u001b[0;32m 650\u001b[0m \u001b[38;5;66;03m# allow registration before first opening\u001b[39;00m\n\u001b[1;32m--> 651\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mclock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_time\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart_ts\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[0;32m 652\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdistributed_role \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mFalse\u001b[39;00m:\n\u001b[0;32m 653\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclock_manager\u001b[38;5;241m.\u001b[39mbroadcast(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mclock\u001b[38;5;241m.\u001b[39mtime)\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\mango\\util\\clock.py:70\u001b[0m, in \u001b[0;36mExternalClock.set_time\u001b[1;34m(self, t)\u001b[0m\n\u001b[0;32m 66\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 67\u001b[0m \u001b[38;5;124;03mNew time is set\u001b[39;00m\n\u001b[0;32m 68\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 69\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m t \u001b[38;5;241m<\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time:\n\u001b[1;32m---> 70\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTime must be > \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m but is \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mt\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 71\u001b[0m \u001b[38;5;66;03m# set time\u001b[39;00m\n\u001b[0;32m 72\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_time \u001b[38;5;241m=\u001b[39m t\n", - "\u001b[1;31mValueError\u001b[0m: Time must be > 1546383600.0 but is 1546300799." - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_eval_5 2019-01-01 23:00:00: : 1546466401.0it [00:10, 154384521.99it/s]\n" + "tutorial_08_zonal_case 2019-01-01 23:00:00: : 82801.0it [00:05, 14990.57it/s] \n" ] } ], @@ -3277,7 +1487,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "id": "96bfa2ee", "metadata": { "id": "bdb21cbe" @@ -3323,14 +1533,14 @@ "2019-01-01T23:00:00" ], "y": [ - 38.667, - 38.667, - 38.667, - 38.667, - 39.667, - 39.667, - 39.667, - 39.667, + 98.173, + 98.187, + 98.186, + 98.184, + 98.189, + 98.192, + 98.192, + 98.193, 3000, 3000, 3000, @@ -3381,14 +1591,14 @@ "2019-01-01T23:00:00" ], "y": [ - 38.667, - 38.667, - 38.667, - 38.667, - 39.667, - 39.667, - 39.667, - 39.667, + 98.173, + 98.187, + 98.186, + 98.184, + 98.189, + 98.192, + 98.192, + 98.193, 3000, 3000, 3000, @@ -4365,7 +2575,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "id": "b9f4d746", "metadata": { "id": "ae266ecb", @@ -4418,586 +2628,2503 @@ "- $f(S)$ is the model’s prediction when using only the features in subset $S$.\n", "\n", "\n", - "The `shap` library is a popular tool for computing Shapley values for machine learning models, including neural networks.\n", + "The `shap` library is a popular tool for computing Shapley values for machine learning models, including neural networks.\n", + "\n", + "\n", + "\n", + "Why Use SHAP in RL?\n", + "- Model-Agnostic: Applicable to any machine learning model, including neural networks.\n", + "- Local Explanations: Provides explanations for individual predictions (actions).\n", + "- Consistency: Ensures that features contributing more to the prediction have higher Shapley values.\n", + "\n", + "\n", + "Properties of SHAP:\n", + "1. Local Accuracy: The sum of Shapley values equals the difference between the model output and the expected output.\n", + "2. Missingness: Features not present in the model have zero Shapley value.\n", + "3. Consistency: If a model changes so that a feature contributes more to the prediction, the Shapley value of that feature should not decrease." + ] + }, + { + "cell_type": "markdown", + "id": "39959bf3", + "metadata": { + "id": "21d49573" + }, + "source": [ + "## 3. Calculating SHAP values " + ] + }, + { + "cell_type": "markdown", + "id": "1a6567e4", + "metadata": { + "id": "d16712fc" + }, + "source": [ + "We will work with:" + ] + }, + { + "cell_type": "markdown", + "id": "f5fa5479", + "metadata": { + "id": "2c0c1262" + }, + "source": [ + "- **Observations (`input_data`)**: These are the inputs to our actor neural network, representing the state of the environment.\n", + "- **Trained Actor Model**: A neural network representing the decision making of one RL power plant that outputs actions based on the observations." + ] + }, + { + "cell_type": "markdown", + "id": "df893c68", + "metadata": { + "id": "2fb6fc14" + }, + "source": [ + "Our goal is to:" + ] + }, + { + "cell_type": "markdown", + "id": "d2145dcf", + "metadata": { + "id": "e0b69db6" + }, + "source": [ + "- Load the observations and the trained actor model.\n", + "- Use the model to predict actions.\n", + "- Apply SHAP to explain the model's predictions." + ] + }, + { + "cell_type": "markdown", + "id": "e3de2358", + "metadata": { + "id": "f870b3e8" + }, + "source": [ + "### 3.1. Loading and Preparing Data " + ] + }, + { + "cell_type": "markdown", + "id": "b6de4111", + "metadata": { + "id": "aaa7c3d3" + }, + "source": [ + "First, let's load the necessary libraries and the data." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "0a23dfa1", + "metadata": { + "id": "b6ee4f28" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n" + ] + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import shap\n", + "import torch as th\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "markdown", + "id": "b44ce6d3", + "metadata": { + "id": "aa268f14", + "lines_to_next_cell": 0 + }, + "source": [ + "the simulation common.py contains utility functions and class definitions\n", + "from common import load_observations, Actor" + ] + }, + { + "cell_type": "markdown", + "id": "efc3087c", + "metadata": { + "id": "f866385a", + "lines_to_next_cell": 0 + }, + "source": [ + "**Define the Actor Neural Network Class**" + ] + }, + { + "cell_type": "markdown", + "id": "1a7c97b7", + "metadata": { + "id": "ff7cf03a", + "lines_to_next_cell": 0 + }, + "source": [ + "We define the actor neural network class that will be used to predict actions based on observations." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "168757a6", + "metadata": { + "id": "7216677a" + }, + "outputs": [], + "source": [ + "from assume.reinforcement_learning.neural_network_architecture import MLPActor" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "2f4d6257", + "metadata": { + "id": "5a4d6e17" + }, + "outputs": [], + "source": [ + "# which actor is the RL actor\n", + "ACTOR_NUM = len(powerplant_units) # 20\n", + "\n", + "# Path to actor we want to analyse\n", + "actor_path = os.path.join(\n", + " input_dir,\n", + " f\"learned_strategies/zonal_case/avg_reward_eval_policies/actors/actor_Unit {ACTOR_NUM}.pt\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "bd023be3", + "metadata": { + "id": "ddfe95d9" + }, + "source": [ + "We define a utility function to load observations and input data from a specified path. Analyzing the shap values for all observations and all parameters would make this notebook quite lengthy, so we’re filtering the observation data frame to include only 700 observations." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "f38c74cb", + "metadata": { + "id": "44862f06" + }, + "outputs": [], + "source": [ + "# @title Load observations function\n", + "\n", + "\n", + "def load_observations(path, feature_names):\n", + " # Load observations\n", + " obs_path = f\"{path}/buffer_obs.json\"\n", + "\n", + " print(obs_path)\n", "\n", + " with open(obs_path) as file:\n", + " json_data = json.load(file)\n", "\n", + " # Convert the list of lists into a 2D numpy array\n", + " input_data = np.array(json_data)\n", + " input_data = np.squeeze(input_data)\n", "\n", - "Why Use SHAP in RL?\n", - "- Model-Agnostic: Applicable to any machine learning model, including neural networks.\n", - "- Local Explanations: Provides explanations for individual predictions (actions).\n", - "- Consistency: Ensures that features contributing more to the prediction have higher Shapley values.\n", + " print(len(input_data))\n", + " # filter out arrays where all value are 0\n", + " input_data = input_data[~np.all(input_data == 0, axis=1)]\n", "\n", + " print(len(input_data))\n", + " # filter only first 700 observations\n", + " input_data = input_data[:700]\n", "\n", - "Properties of SHAP:\n", - "1. Local Accuracy: The sum of Shapley values equals the difference between the model output and the expected output.\n", - "2. Missingness: Features not present in the model have zero Shapley value.\n", - "3. Consistency: If a model changes so that a feature contributes more to the prediction, the Shapley value of that feature should not decrease." - ] - }, - { - "cell_type": "markdown", - "id": "39959bf3", - "metadata": { - "id": "21d49573" - }, - "source": [ - "## 3. Calculating SHAP values " + " return pd.DataFrame(input_data, columns=feature_names), input_data" ] }, { "cell_type": "markdown", - "id": "1a6567e4", + "id": "0e5eb3d3", "metadata": { - "id": "d16712fc" + "id": "444b8679" }, "source": [ - "We will work with:" + "**Define Paths and Parameters**" ] }, { "cell_type": "markdown", - "id": "f5fa5479", + "id": "105cdba0", "metadata": { - "id": "2c0c1262" + "id": "7f218d15" }, "source": [ - "- **Observations (`input_data`)**: These are the inputs to our actor neural network, representing the state of the environment.\n", - "- **Trained Actor Model**: A neural network representing the decision making of one RL power plant that outputs actions based on the observations." + "Adjust the following paths and parameters according to your data and model." ] }, { - "cell_type": "markdown", - "id": "df893c68", + "cell_type": "code", + "execution_count": 33, + "id": "47473ec8", "metadata": { - "id": "2fb6fc14" + "id": "8fa78b12" }, + "outputs": [], "source": [ - "Our goal is to:" + "path = (\n", + " input_dir + \"/learned_strategies/zonal_case/buffer_obs\"\n", + ") # Replace with your data path" ] }, { - "cell_type": "markdown", - "id": "d2145dcf", + "cell_type": "code", + "execution_count": 34, + "id": "76fdf5d0", "metadata": { - "id": "e0b69db6" + "id": "8f9189ca" }, + "outputs": [], "source": [ - "- Load the observations and the trained actor model.\n", - "- Use the model to predict actions.\n", - "- Apply SHAP to explain the model's predictions." + "# Define feature names (replace with actual feature names)\n", + "# make columns names\n", + "names_1 = [\"price forecast t+\" + str(x) for x in range(1, 25)]\n", + "names_2 = [\"residual load forecast t+\" + str(x) for x in range(1, 25)]\n", + "feature_names = names_1 + names_2 + [\"total capacity t-1\"] + [\"marginal costs t-1\"]" ] }, { "cell_type": "markdown", - "id": "e3de2358", + "id": "6126c1a9", "metadata": { - "id": "f870b3e8" + "id": "6c5f1986" }, "source": [ - "### 3.1. Loading and Preparing Data " + "**Load Observations and Input Data**" ] }, { "cell_type": "markdown", - "id": "b6de4111", + "id": "4d38d028", "metadata": { - "id": "aaa7c3d3" + "id": "36ae8f9e" }, "source": [ - "First, let's load the necessary libraries and the data." + "Load the observations and input data using the utility function." ] }, { "cell_type": "code", - "execution_count": 13, - "id": "0a23dfa1", + "execution_count": 35, + "id": "1819ff26", "metadata": { - "id": "b6ee4f28" + "id": "d522969d" }, "outputs": [ { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n" + "../inputs\\tutorial_08/learned_strategies/zonal_case/buffer_obs/buffer_obs.json\n", + "500000\n", + "180\n" ] + }, + { + "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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
price forecast t+1price forecast t+2price forecast t+3price forecast t+4price forecast t+5price forecast t+6price forecast t+7price forecast t+8price forecast t+9price forecast t+10...residual load forecast t+17residual load forecast t+18residual load forecast t+19residual load forecast t+20residual load forecast t+21residual load forecast t+22residual load forecast t+23residual load forecast t+24total capacity t-1marginal costs t-1
02.242.262.282.302.322.342.362.382.402.42...0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.4066670.000.406667
12.262.282.302.322.342.362.382.402.422.44...0.0000000.0000000.0000000.0000000.0000000.0000000.4066670.4066670.680.406667
22.282.302.322.342.362.382.402.422.442.46...0.0000000.0000000.0000000.0000000.0000000.4066670.4066670.4066671.000.406667
32.302.322.342.362.382.402.422.442.462.48...0.0000000.0000000.0000000.0000000.4066670.4066670.4066670.4066670.760.406667
42.322.342.362.382.402.422.442.462.482.50...0.0000000.0000000.0000000.4066670.4066670.4066670.4066670.4066670.800.406667
..................................................................
1752.502.522.542.562.582.602.622.642.662.68...0.4066670.4066670.4066670.0000000.0000000.0000000.0000000.0000001.000.406667
1762.522.542.562.582.602.622.642.662.682.22...0.4066670.4066670.0000000.0000000.0000000.0000000.0000000.0000001.000.406667
1772.542.562.582.602.622.642.662.682.222.24...0.4066670.0000000.0000000.0000000.0000000.0000000.0000000.0000001.000.406667
1782.562.582.602.622.642.662.682.222.242.26...0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000001.000.406667
1792.582.602.622.642.662.682.222.242.262.28...0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000001.000.406667
\n", + "

180 rows × 50 columns

\n", + "
" + ], + "text/plain": [ + " price forecast t+1 price forecast t+2 price forecast t+3 \\\n", + "0 2.24 2.26 2.28 \n", + "1 2.26 2.28 2.30 \n", + "2 2.28 2.30 2.32 \n", + "3 2.30 2.32 2.34 \n", + "4 2.32 2.34 2.36 \n", + ".. ... ... ... \n", + "175 2.50 2.52 2.54 \n", + "176 2.52 2.54 2.56 \n", + "177 2.54 2.56 2.58 \n", + "178 2.56 2.58 2.60 \n", + "179 2.58 2.60 2.62 \n", + "\n", + " price forecast t+4 price forecast t+5 price forecast t+6 \\\n", + "0 2.30 2.32 2.34 \n", + "1 2.32 2.34 2.36 \n", + "2 2.34 2.36 2.38 \n", + "3 2.36 2.38 2.40 \n", + "4 2.38 2.40 2.42 \n", + ".. ... ... ... \n", + "175 2.56 2.58 2.60 \n", + "176 2.58 2.60 2.62 \n", + "177 2.60 2.62 2.64 \n", + "178 2.62 2.64 2.66 \n", + "179 2.64 2.66 2.68 \n", + "\n", + " price forecast t+7 price forecast t+8 price forecast t+9 \\\n", + "0 2.36 2.38 2.40 \n", + "1 2.38 2.40 2.42 \n", + "2 2.40 2.42 2.44 \n", + "3 2.42 2.44 2.46 \n", + "4 2.44 2.46 2.48 \n", + ".. ... ... ... \n", + "175 2.62 2.64 2.66 \n", + "176 2.64 2.66 2.68 \n", + "177 2.66 2.68 2.22 \n", + "178 2.68 2.22 2.24 \n", + "179 2.22 2.24 2.26 \n", + "\n", + " price forecast t+10 ... residual load forecast t+17 \\\n", + "0 2.42 ... 0.000000 \n", + "1 2.44 ... 0.000000 \n", + "2 2.46 ... 0.000000 \n", + "3 2.48 ... 0.000000 \n", + "4 2.50 ... 0.000000 \n", + ".. ... ... ... \n", + "175 2.68 ... 0.406667 \n", + "176 2.22 ... 0.406667 \n", + "177 2.24 ... 0.406667 \n", + "178 2.26 ... 0.000000 \n", + "179 2.28 ... 0.000000 \n", + "\n", + " residual load forecast t+18 residual load forecast t+19 \\\n", + "0 0.000000 0.000000 \n", + "1 0.000000 0.000000 \n", + "2 0.000000 0.000000 \n", + "3 0.000000 0.000000 \n", + "4 0.000000 0.000000 \n", + ".. ... ... \n", + "175 0.406667 0.406667 \n", + "176 0.406667 0.000000 \n", + "177 0.000000 0.000000 \n", + "178 0.000000 0.000000 \n", + "179 0.000000 0.000000 \n", + "\n", + " residual load forecast t+20 residual load forecast t+21 \\\n", + "0 0.000000 0.000000 \n", + "1 0.000000 0.000000 \n", + "2 0.000000 0.000000 \n", + "3 0.000000 0.406667 \n", + "4 0.406667 0.406667 \n", + ".. ... ... \n", + "175 0.000000 0.000000 \n", + "176 0.000000 0.000000 \n", + "177 0.000000 0.000000 \n", + "178 0.000000 0.000000 \n", + "179 0.000000 0.000000 \n", + "\n", + " residual load forecast t+22 residual load forecast t+23 \\\n", + "0 0.000000 0.000000 \n", + "1 0.000000 0.406667 \n", + "2 0.406667 0.406667 \n", + "3 0.406667 0.406667 \n", + "4 0.406667 0.406667 \n", + ".. ... ... \n", + "175 0.000000 0.000000 \n", + "176 0.000000 0.000000 \n", + "177 0.000000 0.000000 \n", + "178 0.000000 0.000000 \n", + "179 0.000000 0.000000 \n", + "\n", + " residual load forecast t+24 total capacity t-1 marginal costs t-1 \n", + "0 0.406667 0.00 0.406667 \n", + "1 0.406667 0.68 0.406667 \n", + "2 0.406667 1.00 0.406667 \n", + "3 0.406667 0.76 0.406667 \n", + "4 0.406667 0.80 0.406667 \n", + ".. ... ... ... \n", + "175 0.000000 1.00 0.406667 \n", + "176 0.000000 1.00 0.406667 \n", + "177 0.000000 1.00 0.406667 \n", + "178 0.000000 1.00 0.406667 \n", + "179 0.000000 1.00 0.406667 \n", + "\n", + "[180 rows x 50 columns]" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "import matplotlib.pyplot as plt\n", - "import pandas as pd\n", - "import shap\n", - "import torch as th\n", - "from sklearn.model_selection import train_test_split" + "df_obs, input_data = load_observations(path, feature_names)\n", + "\n", + "df_obs" ] }, { "cell_type": "markdown", - "id": "b44ce6d3", + "id": "509b19bf", "metadata": { - "id": "aa268f14", - "lines_to_next_cell": 0 + "id": "5d8b9dcf" }, "source": [ - "the simulation common.py contains utility functions and class definitions\n", - "from common import load_observations, Actor" + "**Load the Trained Actor Model**" ] }, { "cell_type": "markdown", - "id": "efc3087c", + "id": "bf2b101a", "metadata": { - "id": "f866385a", - "lines_to_next_cell": 0 + "id": "b1b50488" }, "source": [ - "**Define the Actor Neural Network Class**" + "We initialize and load the trained actor neural network." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "c27178fe", + "metadata": { + "id": "4da4de57" + }, + "outputs": [], + "source": [ + "# Initialize the model\n", + "obs_dim = len(feature_names)\n", + "act_dim = 2 # Adjust if your model outputs a different number of actions\n", + "model = MLPActor(obs_dim=obs_dim, act_dim=act_dim, float_type=th.float)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "35a088d5", + "metadata": { + "id": "37adecfa" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Load the trained model parameters\n", + "model_state = th.load(actor_path, map_location=th.device(\"cpu\"))\n", + "model.load_state_dict(model_state[\"actor\"])" ] }, { "cell_type": "markdown", - "id": "1a7c97b7", + "id": "fe43c9c6", "metadata": { - "id": "ff7cf03a", - "lines_to_next_cell": 0 + "id": "d4a63712" }, "source": [ - "We define the actor neural network class that will be used to predict actions based on observations." + "Get the actions base on observation tensor we just loaded." ] }, { "cell_type": "code", - "execution_count": 14, - "id": "168757a6", + "execution_count": 41, + "id": "4ee77fed", "metadata": { - "id": "7216677a" + "id": "e6460cfb" }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[tensor([0.9817, 0.9805], grad_fn=),\n", + " tensor([0.9819, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9818, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9820, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9817, 0.9805], grad_fn=),\n", + " tensor([0.9819, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9806], grad_fn=),\n", + " tensor([0.9818, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9820, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9817, 0.9805], grad_fn=),\n", + " tensor([0.9819, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9806], grad_fn=),\n", + " tensor([0.9818, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9820, 0.9807], grad_fn=),\n", + " tensor([0.9820, 0.9807], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9817, 0.9805], grad_fn=),\n", + " tensor([0.9819, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9806], grad_fn=),\n", + " tensor([0.9818, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9820, 0.9807], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9817, 0.9805], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9817, 0.9805], grad_fn=),\n", + " tensor([0.9819, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9806], grad_fn=),\n", + " tensor([0.9818, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9817, 0.9805], grad_fn=),\n", + " tensor([0.9819, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9806], grad_fn=),\n", + " tensor([0.9818, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9817, 0.9805], grad_fn=),\n", + " tensor([0.9819, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9806], grad_fn=),\n", + " tensor([0.9818, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9817, 0.9805], grad_fn=),\n", + " tensor([0.9819, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9806], grad_fn=),\n", + " tensor([0.9818, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9817, 0.9805], grad_fn=),\n", + " tensor([0.9819, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9806], grad_fn=),\n", + " tensor([0.9818, 0.9806], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9819, 0.9807], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9820, 0.9808], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=),\n", + " tensor([0.9821, 0.9809], grad_fn=)]" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "from assume.reinforcement_learning.neural_network_architecture import MLPActor" + "predictions = []\n", + "for obs in input_data:\n", + " obs_tensor = th.tensor(obs, dtype=th.float)\n", + " prediction = model(obs_tensor)\n", + " predictions.append(prediction)\n", + "predictions" ] }, { "cell_type": "code", - "execution_count": 15, - "id": "2f4d6257", + "execution_count": 42, + "id": "9cf0d9b7", "metadata": { - "id": "5a4d6e17" + "id": "be91cd97", + "lines_to_next_cell": 2 }, "outputs": [], "source": [ - "# which actor is the RL actor\n", - "ACTOR_NUM = len(powerplant_units) # 20\n", - "\n", - "# Path to actor we want to analyse\n", - "actor_path = os.path.join(\n", - " input_dir,\n", - " \"learned_strategies/zonal_case/avg_reward_eval_policies/actor_pp_{ACTOR_NUM}.pt\",\n", + "# Split the data into training and testing sets\n", + "X_train, X_test, y_train, y_test = train_test_split(\n", + " input_data, predictions, test_size=0.15, random_state=42\n", ")" ] }, - { - "cell_type": "markdown", - "id": "bd023be3", - "metadata": { - "id": "ddfe95d9" - }, - "source": [ - "We define a utility function to load observations and input data from a specified path. Analyzing the shap values for all observations and all parameters would make this notebook quite lengthy, so we’re filtering the observation data frame to include only 700 observations." - ] - }, { "cell_type": "code", - "execution_count": 22, - "id": "f38c74cb", + "execution_count": 43, + "id": "f86348b7", "metadata": { - "id": "44862f06" + "id": "b21c93c7", + "lines_to_next_cell": 2 }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + "To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n" + ] + } + ], "source": [ - "# @title Load observations function\n", - "\n", - "\n", - "def load_observations(path, feature_names):\n", - " # Load observations\n", - " obs_path = f\"{path}/buffer_obs.json\"\n", - "\n", - " print(obs_path)\n", - "\n", - " with open(obs_path) as file:\n", - " json_data = json.load(file)\n", - "\n", - " # Convert the list of lists into a 2D numpy array\n", - " input_data = np.array(json_data)\n", - " input_data = np.squeeze(input_data)\n", - "\n", - " print(len(input_data))\n", - " # filter out arrays where all value are 0\n", - " input_data = input_data[~np.all(input_data == 0, axis=1)]\n", - "\n", - " print(len(input_data))\n", - " # filter only first 700 observations\n", - " input_data = input_data[:700]\n", + "# Convert data to tensors\n", + "y_train = th.stack(y_train)\n", + "y_test = th.stack(y_test)\n", "\n", - " return pd.DataFrame(input_data, columns=feature_names), input_data" + "X_train_tensor = th.tensor(X_train, dtype=th.float32)\n", + "y_train_tensor = th.tensor(y_train, dtype=th.float32)\n", + "X_test_tensor = th.tensor(X_test, dtype=th.float32)\n", + "y_test_tensor = th.tensor(y_test, dtype=th.float32)" ] }, { "cell_type": "markdown", - "id": "0e5eb3d3", + "id": "633c5100", "metadata": { - "id": "444b8679" + "id": "ddd1ab1e" }, "source": [ - "**Define Paths and Parameters**" + "## 3.2. Creating a SHAP Explainer " ] }, { "cell_type": "markdown", - "id": "105cdba0", + "id": "c278a8c6", "metadata": { - "id": "7f218d15" + "id": "ae7b108b", + "lines_to_next_cell": 2 }, "source": [ - "Adjust the following paths and parameters according to your data and model." + "We define a prediction function compatible with SHAP and create a Kernel SHAP explainer." ] }, { "cell_type": "code", - "execution_count": 17, - "id": "47473ec8", + "execution_count": 44, + "id": "77b37ebc", "metadata": { - "id": "8fa78b12" + "id": "6d9be211" }, "outputs": [], "source": [ - "path = (\n", - " input_dir + \"/learned_strategies/zonal_case/buffer_obs\"\n", - ") # Replace with your data path" + "# Define a prediction function for SHAP\n", + "def model_predict(X):\n", + " X_tensor = th.tensor(X, dtype=th.float32)\n", + " model.eval()\n", + " with th.no_grad():\n", + " return model(X_tensor).numpy()" ] }, { "cell_type": "code", - "execution_count": 18, - "id": "76fdf5d0", + "execution_count": 45, + "id": "ce3b3daa", "metadata": { - "id": "8f9189ca" + "id": "f0f7857b" }, "outputs": [], "source": [ - "# Define feature names (replace with actual feature names)\n", - "# make columns names\n", - "names_1 = [\"price forecast t+\" + str(x) for x in range(1, 25)]\n", - "names_2 = [\"residual load forecast t+\" + str(x) for x in range(1, 25)]\n", - "feature_names = names_1 + names_2 + [\"total capacity t-1\"] + [\"marginal costs t-1\"]" - ] - }, - { - "cell_type": "markdown", - "id": "6126c1a9", - "metadata": { - "id": "6c5f1986" - }, - "source": [ - "**Load Observations and Input Data**" + "# Use a subset of training data for the background dataset\n", + "background_size = 100 # Adjust the size as needed\n", + "background = X_train[:background_size]" ] }, { - "cell_type": "markdown", - "id": "4d38d028", + "cell_type": "code", + "execution_count": 46, + "id": "1eac5396", "metadata": { - "id": "36ae8f9e" + "id": "84bb96cf" }, + "outputs": [], "source": [ - "Load the observations and input data using the utility function." + "# Create the SHAP Kernel Explainer\n", + "explainer = shap.KernelExplainer(model_predict, background)" ] }, { "cell_type": "code", - "execution_count": 23, - "id": "1819ff26", + "execution_count": 47, + "id": "c38544fd", "metadata": { - "id": "d522969d" + "id": "2a7929e4" }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 0%| | 0/27 [00:00\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", - "
price forecast t+1price forecast t+2price forecast t+3price forecast t+4price forecast t+5price forecast t+6price forecast t+7price forecast t+8price forecast t+9price forecast t+10...residual load forecast t+17residual load forecast t+18residual load forecast t+19residual load forecast t+20residual load forecast t+21residual load forecast t+22residual load forecast t+23residual load forecast t+24total capacity t-1marginal costs t-1
\n", - "

0 rows × 50 columns

\n", - "" - ], - "text/plain": [ - "Empty DataFrame\n", - "Columns: [price forecast t+1, price forecast t+2, price forecast t+3, price forecast t+4, price forecast t+5, price forecast t+6, price forecast t+7, price forecast t+8, price forecast t+9, price forecast t+10, price forecast t+11, price forecast t+12, price forecast t+13, price forecast t+14, price forecast t+15, price forecast t+16, price forecast t+17, price forecast t+18, price forecast t+19, price forecast t+20, price forecast t+21, price forecast t+22, price forecast t+23, price forecast t+24, residual load forecast t+1, residual load forecast t+2, residual load forecast t+3, residual load forecast t+4, residual load forecast t+5, residual load forecast t+6, residual load forecast t+7, residual load forecast t+8, residual load forecast t+9, residual load forecast t+10, residual load forecast t+11, residual load forecast t+12, residual load forecast t+13, residual load forecast t+14, residual load forecast t+15, residual load forecast t+16, residual load forecast t+17, residual load forecast t+18, residual load forecast t+19, residual load forecast t+20, residual load forecast t+21, residual load forecast t+22, residual load forecast t+23, residual load forecast t+24, total capacity t-1, marginal costs t-1]\n", - "Index: []\n", - "\n", - "[0 rows x 50 columns]" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df_obs, input_data = load_observations(path, feature_names)\n", - "\n", - "df_obs" - ] - }, - { - "cell_type": "markdown", - "id": "509b19bf", - "metadata": { - "id": "5d8b9dcf" - }, - "source": [ - "**Load the Trained Actor Model**" - ] - }, - { - "cell_type": "markdown", - "id": "bf2b101a", - "metadata": { - "id": "b1b50488" - }, - "source": [ - "We initialize and load the trained actor neural network." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "c27178fe", - "metadata": { - "id": "4da4de57" - }, - "outputs": [], - "source": [ - "# Initialize the model\n", - "obs_dim = len(feature_names)\n", - "act_dim = 2 # Adjust if your model outputs a different number of actions\n", - "model = MLPActor(obs_dim=obs_dim, act_dim=act_dim, float_type=th.float)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "35a088d5", - "metadata": { - "id": "37adecfa" - }, - "outputs": [ + "name": "stderr", + "output_type": "stream", + "text": [ + " 37%|███▋ | 10/27 [00:15<00:22, 1.32s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [-3.17708670e-05 -2.64823923e-05 -3.16427512e-05 -2.68370703e-05\n", + " -3.32147749e-05 -3.06224358e-05 -2.28378868e-05 -2.40040321e-05\n", + " -1.24336474e-05 -7.34867284e-06 0.00000000e+00 9.55680114e-06\n", + " 2.11486637e-05 2.44649569e-05 3.59179205e-05 3.95665233e-05\n", + " 5.16796840e-05 6.26730589e-05 5.80524365e-05 5.67502791e-05\n", + " -5.46251467e-05 -4.92127886e-05 -3.58558458e-05 -2.35060547e-05\n", + " 3.50611652e-05 4.14175693e-05 4.56681116e-05 6.13252217e-05\n", + " 5.84130754e-05 -1.91542921e-05 -1.55284156e-05 -1.21360012e-05\n", + " -9.51639367e-06 -1.81051726e-05 -1.49846235e-05 -2.91964478e-05\n", + " -4.08589761e-05 -3.17165084e-05 -4.22840296e-05 -4.22819367e-05\n", + " -3.45260485e-05 -4.10210425e-05 -4.80262216e-05 -4.65657606e-05\n", + " 4.01227811e-05 4.63281100e-05 2.94364667e-05 3.68527894e-05\n", + " -2.23238666e-05]\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [-3.34260392e-05 -2.90359853e-05 -3.33053131e-05 -2.94900972e-05\n", + " -3.49166149e-05 -3.20489188e-05 -2.47577896e-05 -2.54890280e-05\n", + " -1.27465092e-05 -7.88170431e-06 0.00000000e+00 1.03697559e-05\n", + " 2.29365949e-05 2.61668137e-05 3.78773386e-05 4.13032778e-05\n", + " 5.61335883e-05 6.63862389e-05 6.42385675e-05 5.98274156e-05\n", + " -5.84059429e-05 -5.21078235e-05 -3.73849421e-05 -2.51767975e-05\n", + " 3.63503349e-05 4.31242270e-05 4.59107781e-05 6.34474758e-05\n", + " 6.32324548e-05 -2.06913377e-05 -1.62846063e-05 -1.27542799e-05\n", + " -1.01668740e-05 -1.89847947e-05 -1.57340290e-05 -3.17066926e-05\n", + " -4.29125412e-05 -3.61921930e-05 -4.27130720e-05 -4.73525866e-05\n", + " -3.80946372e-05 -4.56683790e-05 -5.11233530e-05 -4.97346580e-05\n", + " 4.32161832e-05 4.97823671e-05 3.25573266e-05 3.94185385e-05\n", + " -2.35968081e-05]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 41%|████ | 11/27 [00:16<00:20, 1.31s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 4.39921186e-05 3.65767291e-05 4.37473298e-05 3.70090926e-05\n", + " 4.59910641e-05 4.24335413e-05 4.06728405e-05 5.59479754e-05\n", + " -6.88510624e-05 -8.09990766e-05 -6.25743559e-05 -6.80490401e-05\n", + " -4.86650662e-05 -3.08045230e-05 -3.02624305e-05 -2.01223383e-05\n", + " -1.28449310e-05 -8.48189660e-06 0.00000000e+00 6.86863993e-06\n", + " 1.71582918e-05 2.50862048e-05 2.58422500e-05 3.25897498e-05\n", + " -2.96806449e-05 -2.63872773e-05 -2.45635500e-05 -2.62769793e-05\n", + " -1.64806634e-05 -1.89468785e-05 -1.54639052e-05 -1.20460940e-05\n", + " 8.58743861e-05 9.44645259e-05 5.27388406e-05 7.84480285e-05\n", + " 7.21184134e-05 4.18501542e-05 4.56542606e-05 4.04327747e-05\n", + " 2.80928517e-05 -4.05559231e-05 -4.74112459e-05 -4.59389969e-05\n", + " -5.04507355e-05 -4.96244228e-05 -2.80226142e-05 -3.97755512e-05\n", + " 3.17920423e-05]\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 4.62782137e-05 4.00984884e-05 4.60388197e-05 4.06718484e-05\n", + " 4.83500587e-05 4.44071688e-05 4.41075448e-05 5.94322649e-05\n", + " -7.06196949e-05 -8.69028588e-05 -6.73576518e-05 -7.37784660e-05\n", + " -5.27562069e-05 -3.29422438e-05 -3.19195053e-05 -2.10119574e-05\n", + " -1.39670246e-05 -9.00043699e-06 0.00000000e+00 7.23162855e-06\n", + " 1.83319540e-05 2.65365247e-05 2.69265723e-05 3.49143354e-05\n", + " -3.07819950e-05 -2.74945040e-05 -2.47066315e-05 -2.71989077e-05\n", + " -1.78502481e-05 -2.04572417e-05 -1.62204013e-05 -1.26577338e-05\n", + " 9.16649246e-05 9.90031146e-05 5.53453316e-05 8.51791670e-05\n", + " 7.57280474e-05 4.77570437e-05 4.61335372e-05 4.52977583e-05\n", + " 3.10079014e-05 -4.51386163e-05 -5.04661574e-05 -4.90465597e-05\n", + " -5.43014010e-05 -5.32970944e-05 -3.09839229e-05 -4.25470042e-05\n", + " 3.36376528e-05]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 44%|████▍ | 12/27 [00:17<00:19, 1.32s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [ 4.39359540e-05 3.65782625e-05 4.36597646e-05 3.69347119e-05\n", + " 4.60040287e-05 4.24607395e-05 4.06877949e-05 5.59153751e-05\n", + " -6.88749739e-05 -8.09400301e-05 -6.25134331e-05 -6.81484714e-05\n", + " -4.87551497e-05 -3.08541778e-05 -3.02848142e-05 -2.01577017e-05\n", + " -1.28386937e-05 -8.54402968e-06 0.00000000e+00 6.83792586e-06\n", + " 1.70941726e-05 2.51974255e-05 2.58031747e-05 3.26130909e-05\n", + " -2.96011509e-05 -2.63764667e-05 -2.44533759e-05 -2.61747076e-05\n", + " -1.63786518e-05 -1.89237975e-05 -1.53367504e-05 -1.20872673e-05\n", + " 8.58522148e-05 9.44647244e-05 5.27991858e-05 7.84347961e-05\n", + " 7.21128783e-05 4.18490957e-05 4.55710463e-05 4.04120209e-05\n", + " 2.81259651e-05 -4.05663179e-05 -4.73578584e-05 -4.59497824e-05\n", + " -5.04520713e-05 -4.96316428e-05 -2.80101263e-05 -3.97575054e-05\n", + " 3.17265025e-05]\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [ 4.62194755e-05 4.00986376e-05 4.59444057e-05 4.05890973e-05\n", + " 4.83655196e-05 4.44411824e-05 4.41248150e-05 5.93941025e-05\n", + " -7.06434808e-05 -8.68362841e-05 -6.72882566e-05 -7.38909656e-05\n", + " -5.28572619e-05 -3.30014868e-05 -3.19453720e-05 -2.10520877e-05\n", + " -1.39607459e-05 -9.06929684e-06 0.00000000e+00 7.19790029e-06\n", + " 1.82591814e-05 2.66614585e-05 2.68815254e-05 3.49419488e-05\n", + " -3.06934652e-05 -2.74818872e-05 -2.45839048e-05 -2.70854646e-05\n", + " -1.77336021e-05 -2.04324544e-05 -1.60781726e-05 -1.27055278e-05\n", + " 9.16416645e-05 9.90028602e-05 5.54147926e-05 8.51602460e-05\n", + " 7.57228687e-05 4.77545314e-05 4.60385909e-05 4.52751286e-05\n", + " 3.10468901e-05 -4.51507451e-05 -5.04067318e-05 -4.90612571e-05\n", + " -5.43022018e-05 -5.33063645e-05 -3.09692541e-05 -4.25285205e-05\n", + " 3.35634038e-05]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 48%|████▊ | 13/27 [00:19<00:18, 1.35s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [ 5.03317941e-05 4.16335501e-05 4.99280216e-05 4.24090337e-05\n", + " 5.25397768e-05 4.83335132e-05 4.58723591e-05 -9.66526786e-05\n", + " -6.41944284e-05 -7.48165372e-05 -5.70089618e-05 -6.17617366e-05\n", + " -4.29449295e-05 -2.62716767e-05 -2.49786527e-05 -1.52450237e-05\n", + " -7.61115973e-06 0.00000000e+00 3.63784314e-06 1.10005854e-05\n", + " 2.31562198e-05 3.12467010e-05 3.07867679e-05 3.72620860e-05\n", + " -2.96523012e-05 -2.65233779e-05 -2.44986904e-05 -2.62613400e-05\n", + " -1.63627109e-05 -1.90199405e-05 -1.53524256e-05 7.34304289e-05\n", + " 8.56811008e-05 9.44237984e-05 5.28350365e-05 7.84573761e-05\n", + " 7.20515801e-05 4.18652427e-05 4.56704011e-05 4.03521470e-05\n", + " -3.41416484e-05 -4.05812438e-05 -4.75309544e-05 -4.59961786e-05\n", + " -5.05577809e-05 -4.97356581e-05 -2.79638684e-05 -3.98045733e-05\n", + " 3.17443894e-05]\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [ 5.29627828e-05 4.56531495e-05 5.25523215e-05 4.66075975e-05\n", + " 5.52384402e-05 5.05946226e-05 4.97581504e-05 -1.02661349e-04\n", + " -6.58609234e-05 -8.02825868e-05 -6.13688928e-05 -6.69697456e-05\n", + " -4.65670444e-05 -2.81047773e-05 -2.63549530e-05 -1.59284597e-05\n", + " -8.28062703e-06 0.00000000e+00 4.01477658e-06 1.15881618e-05\n", + " 2.47451825e-05 3.30710304e-05 3.20888324e-05 3.99142108e-05\n", + " -3.07402132e-05 -2.76319236e-05 -2.46455044e-05 -2.71851949e-05\n", + " -1.77215386e-05 -2.05352427e-05 -1.60905952e-05 7.71145774e-05\n", + " 9.14784710e-05 9.89662035e-05 5.54703361e-05 8.51857742e-05\n", + " 7.56625277e-05 4.77787190e-05 4.61479754e-05 4.52058300e-05\n", + " -3.76608233e-05 -4.51739527e-05 -5.05994250e-05 -4.91114406e-05\n", + " -5.44272903e-05 -5.34282705e-05 -3.09326831e-05 -4.25874861e-05\n", + " 3.35874265e-05]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 52%|█████▏ | 14/27 [00:20<00:17, 1.36s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.00000000000001\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 6.40440656e-06 5.49981207e-06 6.46499801e-06 5.88617867e-06\n", + " 0.00000000e+00 6.28989807e-06 9.09252250e-06 1.62297947e-05\n", + " 1.60108273e-05 2.98257515e-05 3.33707337e-05 4.81163868e-05\n", + " 5.57133365e-05 5.20797366e-05 -6.26550257e-05 -4.95905733e-05\n", + " -4.47234229e-05 -4.34625332e-05 -3.03905439e-05 -1.75585962e-05\n", + " -1.82290448e-05 -1.17339651e-05 -4.45300846e-06 5.08350608e-06\n", + " -2.95864086e-05 -2.63170756e-05 -2.42951443e-05 -2.61834604e-05\n", + " -1.64723660e-05 -1.89864613e-05 -1.53565066e-05 -1.19851942e-05\n", + " -9.16293217e-06 -1.79433823e-05 -1.45150414e-05 -2.89094793e-05\n", + " -4.08058899e-05 -3.10838773e-05 4.59364269e-05 4.03504743e-05\n", + " 2.84952546e-05 3.34429528e-05 4.11848430e-05 3.63079519e-05\n", + " 3.98469856e-05 4.59214164e-05 2.92137202e-05 -3.94787187e-05\n", + " 3.23686722e-05]\n", + "INFO:shap:np.sum(w_aug) = 49.00000000000001\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 6.68377909e-06 5.78814992e-06 6.63514646e-06 5.87726994e-06\n", + " 6.98204436e-06 6.40746919e-06 9.88544110e-06 1.72406620e-05\n", + " 1.64508574e-05 3.19497659e-05 3.59929774e-05 5.23779143e-05\n", + " 6.05695157e-05 5.53798519e-05 -6.68440184e-05 -5.20539387e-05\n", + " -4.86972479e-05 -4.63555826e-05 -3.37916555e-05 -1.86541705e-05\n", + " -1.97979975e-05 -1.24159023e-05 -5.02609177e-06 5.03964074e-06\n", + " -3.08259585e-05 -2.75909876e-05 -2.46960813e-05 -2.72071974e-05\n", + " -1.78586105e-05 -2.05047708e-05 -1.61284063e-05 -1.26892892e-05\n", + " -1.01473105e-05 -1.88035291e-05 -1.55994565e-05 -3.14168180e-05\n", + " -4.24385012e-05 -3.58602659e-05 4.63102557e-05 4.54735444e-05\n", + " 3.11766141e-05 3.73160717e-05 4.33750341e-05 3.88522528e-05\n", + " 4.28544038e-05 4.92867233e-05 3.22080877e-05 -4.26688039e-05\n", + " 3.38171444e-05]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 56%|█████▌ | 15/27 [00:22<00:16, 1.38s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.00000000000001\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 5.04736476e-05 4.17906055e-05 5.00108497e-05 4.24306910e-05\n", + " 5.24408562e-05 4.84511613e-05 4.60908364e-05 -9.65771085e-05\n", + " -6.39084069e-05 -7.49208698e-05 -5.70938579e-05 -6.17315270e-05\n", + " -4.29878684e-05 -2.61887897e-05 -2.50065982e-05 -1.49044184e-05\n", + " -7.56874228e-06 0.00000000e+00 0.00000000e+00 1.09800807e-05\n", + " 2.30910926e-05 3.12407671e-05 3.12331281e-05 3.75080417e-05\n", + " -2.99353654e-05 -2.61562436e-05 -2.44056954e-05 -2.61952297e-05\n", + " -1.61422576e-05 -1.91562621e-05 -1.53191965e-05 7.34406125e-05\n", + " 8.59173464e-05 9.45679257e-05 5.29178016e-05 7.84912299e-05\n", + " 7.18835252e-05 4.23596885e-05 4.53392734e-05 4.03229991e-05\n", + " -3.42133773e-05 -4.02395281e-05 -4.74144496e-05 -4.58482790e-05\n", + " -5.03676258e-05 -4.94415342e-05 -2.80332035e-05 -3.97816967e-05\n", + " 3.17372466e-05]\n", + "INFO:shap:np.sum(w_aug) = 49.00000000000001\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 5.31283250e-05 4.58258234e-05 5.26462666e-05 4.66346791e-05\n", + " 5.51346531e-05 5.07286351e-05 4.99905082e-05 -1.02572336e-04\n", + " -6.55449531e-05 -8.03987948e-05 -6.14536412e-05 -6.69454446e-05\n", + " -4.66159275e-05 -2.80164696e-05 -2.63875813e-05 -1.55592325e-05\n", + " -8.22951201e-06 0.00000000e+00 0.00000000e+00 1.15752493e-05\n", + " 2.46711124e-05 3.30676584e-05 3.25749734e-05 4.01799722e-05\n", + " -3.10488371e-05 -2.72350135e-05 -2.45406630e-05 -2.71153737e-05\n", + " -1.74747425e-05 -2.06846716e-05 -1.60504813e-05 7.71307842e-05\n", + " 9.17356954e-05 9.91242195e-05 5.55659815e-05 8.52198971e-05\n", + " 7.54738678e-05 4.83164306e-05 4.57864322e-05 4.51757413e-05\n", + " -3.77375720e-05 -4.47996766e-05 -5.04716951e-05 -4.89494586e-05\n", + " -5.42232824e-05 -5.31118161e-05 -3.10059486e-05 -4.25569403e-05\n", + " 3.35793159e-05]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 59%|█████▉ | 16/27 [00:23<00:15, 1.42s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.00000000000001\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 4.39940488e-05 3.66341626e-05 4.36878352e-05 3.71085395e-05\n", + " 4.60087877e-05 4.24482180e-05 4.07127273e-05 5.58584789e-05\n", + " -6.88239119e-05 -8.09811551e-05 -6.25156981e-05 -6.81232713e-05\n", + " -4.87575391e-05 -3.09082016e-05 -3.03631400e-05 -2.01624708e-05\n", + " -1.29049224e-05 -8.48391886e-06 0.00000000e+00 6.92141691e-06\n", + " 1.71224414e-05 2.51351276e-05 2.58876736e-05 3.25765612e-05\n", + " -2.96187976e-05 -2.64269504e-05 -2.44853229e-05 -2.61481599e-05\n", + " -1.64134263e-05 -1.89515438e-05 -1.53005253e-05 -1.19922005e-05\n", + " 8.58250919e-05 9.44318840e-05 5.27372911e-05 7.84732668e-05\n", + " 7.20489716e-05 4.18836275e-05 4.56199249e-05 4.03825962e-05\n", + " 2.80552220e-05 -4.05371769e-05 -4.73687581e-05 -4.59826796e-05\n", + " -5.04083923e-05 -4.96660700e-05 -2.80494712e-05 -3.97821504e-05\n", + " 3.17038627e-05]\n", + "INFO:shap:np.sum(w_aug) = 49.00000000000001\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 4.62838758e-05 4.01629408e-05 4.59757159e-05 4.07839827e-05\n", + " 4.83709770e-05 4.44244245e-05 4.41529114e-05 5.93310434e-05\n", + " -7.05893416e-05 -8.68851444e-05 -6.72895065e-05 -7.38620424e-05\n", + " -5.28633381e-05 -3.30611773e-05 -3.20314375e-05 -2.10564438e-05\n", + " -1.40357208e-05 -9.00178248e-06 0.00000000e+00 7.28997394e-06\n", + " 1.82927893e-05 2.65934381e-05 2.69743348e-05 3.49019377e-05\n", + " -3.07159596e-05 -2.75387708e-05 -2.46202071e-05 -2.70571962e-05\n", + " -1.77732097e-05 -2.04636177e-05 -1.60384930e-05 -1.25980667e-05\n", + " 9.16096731e-05 9.89677652e-05 5.53449484e-05 8.52049852e-05\n", + " 7.56517758e-05 4.77948120e-05 4.60927471e-05 4.52437855e-05\n", + " 3.09640619e-05 -4.51186558e-05 -5.04206748e-05 -4.90947156e-05\n", + " -5.42528485e-05 -5.33426129e-05 -3.10131145e-05 -4.25544325e-05\n", + " 3.35410456e-05]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 63%|██████▎ | 17/27 [00:25<00:14, 1.45s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.00000000000001\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [ 5.64235773e-05 4.69668742e-05 5.62987208e-05 4.76155935e-05\n", + " 5.92557663e-05 5.44484734e-05 -7.52906514e-05 -8.97558248e-05\n", + " -5.91292158e-05 -6.87593646e-05 -5.18806371e-05 -5.52201692e-05\n", + " -3.71614657e-05 -2.14241265e-05 -1.91542160e-05 -1.00860737e-05\n", + " 0.00000000e+00 0.00000000e+00 8.50909462e-06 1.50898684e-05\n", + " 2.89276817e-05 3.74985818e-05 3.60431659e-05 4.18948306e-05\n", + " -2.95294247e-05 -2.62703792e-05 -2.44033045e-05 -2.60738437e-05\n", + " -1.64409239e-05 -1.88200832e-05 8.62189603e-05 7.34469513e-05\n", + " 8.56108743e-05 9.44373576e-05 5.27244259e-05 7.82204030e-05\n", + " 7.20067503e-05 4.17124514e-05 4.55241899e-05 -4.14791161e-05\n", + " -3.40750302e-05 -4.03659380e-05 -4.74353327e-05 -4.58745975e-05\n", + " -5.04047430e-05 -4.94311865e-05 -2.78077210e-05 -3.98384162e-05\n", + " 3.18100466e-05]\n", + "INFO:shap:np.sum(w_aug) = 49.00000000000001\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [ 5.93950058e-05 5.15219088e-05 5.92841103e-05 5.23488819e-05\n", + " 6.23287210e-05 5.70244432e-05 -8.16777093e-05 -9.53735371e-05\n", + " -6.06814041e-05 -7.38044288e-05 -5.58633822e-05 -5.99112893e-05\n", + " -4.03137257e-05 -2.29353007e-05 -2.02182409e-05 -1.05368752e-05\n", + " 0.00000000e+00 0.00000000e+00 9.41072766e-06 1.59088344e-05\n", + " 3.09242463e-05 3.97082185e-05 3.75955330e-05 4.48857109e-05\n", + " -3.06328235e-05 -2.73705848e-05 -2.45589214e-05 -2.70063014e-05\n", + " -1.78075187e-05 -2.03273670e-05 9.03627303e-05 7.71733140e-05\n", + " 9.14440663e-05 9.90333706e-05 5.53910247e-05 8.49618897e-05\n", + " 7.56394892e-05 4.76344706e-05 4.60058589e-05 -4.64795570e-05\n", + " -3.76101513e-05 -4.49610691e-05 -5.05179317e-05 -4.90142155e-05\n", + " -5.43023996e-05 -5.31335696e-05 -3.07860016e-05 -4.26377858e-05\n", + " 3.36719456e-05]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 67%|██████▋ | 18/27 [00:26<00:12, 1.42s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [-1.21118322e-05 -1.01898697e-05 -1.24226370e-05 -1.05217503e-05\n", + " -1.31124259e-05 -1.18582133e-05 -6.77362551e-06 -3.85872584e-06\n", + " 0.00000000e+00 1.15277074e-05 1.76087146e-05 2.91145362e-05\n", + " 3.86783637e-05 3.80277392e-05 5.22701084e-05 5.40700058e-05\n", + " 6.74465945e-05 -6.13297762e-05 -4.50412561e-05 -2.99708510e-05\n", + " -3.62715228e-05 -3.05312951e-05 -2.01161035e-05 -9.29659943e-06\n", + " 3.52886455e-05 4.12725512e-05 -2.47369210e-05 -2.63197091e-05\n", + " -1.63273798e-05 -1.86371919e-05 -1.53564708e-05 -1.20476726e-05\n", + " -9.72551206e-06 -1.79973099e-05 -1.47372107e-05 -2.88842821e-05\n", + " -4.05533224e-05 -3.14759123e-05 -4.19126803e-05 -4.16891567e-05\n", + " -3.42900796e-05 3.36125364e-05 4.08643978e-05 3.67452851e-05\n", + " 4.03193772e-05 4.62339929e-05 2.93142540e-05 3.69910566e-05\n", + " 0.00000000e+00]\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [-1.27263375e-05 -1.11738991e-05 -1.30646319e-05 -1.15648366e-05\n", + " -1.37746404e-05 -1.24015209e-05 -7.34218486e-06 -4.08730973e-06\n", + " 0.00000000e+00 1.23733720e-05 1.89584944e-05 3.15677297e-05\n", + " 4.19271282e-05 4.06559897e-05 5.51219349e-05 5.64137631e-05\n", + " 7.32618169e-05 -6.49628410e-05 -4.98679918e-05 -3.15836961e-05\n", + " -3.87813803e-05 -3.23136229e-05 -2.09625070e-05 -9.95453390e-06\n", + " 3.65859374e-05 4.29869184e-05 -2.48691220e-05 -2.72304895e-05\n", + " -1.76904965e-05 -2.01300111e-05 -1.60988834e-05 -1.26576323e-05\n", + " -1.03798057e-05 -1.88592698e-05 -1.54650407e-05 -3.13672777e-05\n", + " -4.25795941e-05 -3.59238267e-05 -4.23270472e-05 -4.67057567e-05\n", + " -3.78245043e-05 3.74322941e-05 4.35212899e-05 3.92418612e-05\n", + " 4.33955897e-05 4.96559244e-05 3.24068629e-05 3.95487496e-05\n", + " 0.00000000e+00]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 70%|███████ | 19/27 [00:27<00:11, 1.38s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [-3.80377023e-05 -3.16314195e-05 -3.81057823e-05 -3.21806335e-05\n", + " -3.96673069e-05 -3.68604709e-05 -2.79278136e-05 -3.04531174e-05\n", + " -1.74218170e-05 -1.37209261e-05 0.00000000e+00 0.00000000e+00\n", + " 1.49372421e-05 1.95003555e-05 3.00462170e-05 3.43378619e-05\n", + " 4.60852778e-05 5.66206229e-05 5.27971139e-05 5.24935455e-05\n", + " 8.33760326e-05 -5.52656135e-05 -4.11303994e-05 -2.85405257e-05\n", + " 3.48967265e-05 4.15866411e-05 4.57299489e-05 6.11964928e-05\n", + " 5.83000119e-05 9.25448525e-05 -1.54971420e-05 -1.22517514e-05\n", + " -9.99387016e-06 -1.78961234e-05 -1.47676264e-05 -2.93151529e-05\n", + " -4.11280794e-05 -3.14644059e-05 -4.22675891e-05 -4.24117164e-05\n", + " -3.45048918e-05 -4.09381934e-05 -4.77275134e-05 -4.65643734e-05\n", + " -5.11252230e-05 4.62348997e-05 2.94932360e-05 3.68308124e-05\n", + " -3.14143651e-05]\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [-4.00095686e-05 -3.46718893e-05 -4.01048983e-05 -3.53674054e-05\n", + " -4.16960223e-05 -3.85769727e-05 -3.02857818e-05 -3.23374357e-05\n", + " -1.78773697e-05 -1.47211001e-05 0.00000000e+00 0.00000000e+00\n", + " 1.62058114e-05 2.08497243e-05 3.16828602e-05 3.58306629e-05\n", + " 5.00690832e-05 5.99586131e-05 5.84311148e-05 5.53277357e-05\n", + " 8.91317151e-05 -5.85050710e-05 -4.28778798e-05 -3.05783567e-05\n", + " 3.61757581e-05 4.33280204e-05 4.59645073e-05 6.33027456e-05\n", + " 6.31154145e-05 9.98944535e-05 -1.62504915e-05 -1.28780391e-05\n", + " -1.06775185e-05 -1.87575081e-05 -1.54972846e-05 -3.18375797e-05\n", + " -4.32054946e-05 -3.59210025e-05 -4.27032261e-05 -4.74875430e-05\n", + " -3.80636149e-05 -4.55776028e-05 -5.08086918e-05 -4.97257446e-05\n", + " -5.50386891e-05 4.96765127e-05 3.26186288e-05 3.93928631e-05\n", + " -3.32160974e-05]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 74%|███████▍ | 20/27 [00:29<00:09, 1.37s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.00000000000001\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [-6.14246616e-06 -5.33768207e-06 -6.17294763e-06 -5.39370343e-06\n", + " -6.62094957e-06 -6.00433858e-06 0.00000000e+00 0.00000000e+00\n", + " 6.52976079e-06 1.75591566e-05 2.31862792e-05 3.56143332e-05\n", + " 4.43316856e-05 4.24630237e-05 5.80769404e-05 5.92117712e-05\n", + " -5.57033990e-05 -5.55913301e-05 -4.04100840e-05 -2.59928113e-05\n", + " -3.04156223e-05 -2.40514698e-05 -1.51246171e-05 -4.69354734e-06\n", + " 3.48105554e-05 -2.64571964e-05 -2.46756640e-05 -2.63443258e-05\n", + " -1.63900792e-05 -1.91038268e-05 -1.53318863e-05 -1.21247779e-05\n", + " -9.78526111e-06 -1.80842173e-05 -1.48147223e-05 -2.91035167e-05\n", + " -4.05215384e-05 -3.15251116e-05 -4.21273615e-05 -4.19853499e-05\n", + " 2.86066488e-05 3.34655381e-05 4.09153763e-05 3.65480667e-05\n", + " 3.99584366e-05 4.61046740e-05 2.92653289e-05 3.64579677e-05\n", + " 1.39879933e-05]\n", + "INFO:shap:np.sum(w_aug) = 49.00000000000001\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [-6.45361674e-06 -5.84151409e-06 -6.48734303e-06 -5.91892660e-06\n", + " -6.95221539e-06 -6.27649510e-06 0.00000000e+00 0.00000000e+00\n", + " 6.69938103e-06 1.88449644e-05 2.49603090e-05 3.86139724e-05\n", + " 4.80600847e-05 4.53973263e-05 6.12396077e-05 6.17817572e-05\n", + " -6.05185096e-05 -5.88861733e-05 -4.47206505e-05 -2.74001012e-05\n", + " -3.25150455e-05 -2.54599077e-05 -1.57653082e-05 -5.02339527e-06\n", + " 3.60743253e-05 -2.75559269e-05 -2.48104462e-05 -2.72558094e-05\n", + " -1.77490274e-05 -2.06241155e-05 -1.60669355e-05 -1.27392791e-05\n", + " -1.04486375e-05 -1.89562406e-05 -1.55441947e-05 -3.15945321e-05\n", + " -4.25435771e-05 -3.59701159e-05 -4.25523167e-05 -4.70041198e-05\n", + " 3.15599335e-05 3.72714546e-05 4.35633137e-05 3.90334956e-05\n", + " 4.30142567e-05 4.95134860e-05 3.23523455e-05 3.89787805e-05\n", + " 1.48027625e-05]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 78%|███████▊ | 21/27 [00:30<00:08, 1.38s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 2.52256022e-05 2.09966961e-05 2.50344367e-05 2.11856664e-05\n", + " 2.63440682e-05 2.43012775e-05 2.49423080e-05 3.61380365e-05\n", + " 3.01396379e-05 4.81958242e-05 4.93150715e-05 -8.76476553e-05\n", + " -6.62099544e-05 -4.46268650e-05 -4.68342399e-05 -3.49892897e-05\n", + " -2.87464974e-05 -2.60961998e-05 -1.58440348e-05 -5.41693814e-06\n", + " 0.00000000e+00 6.72163302e-06 1.05368292e-05 1.87202646e-05\n", + " -2.96927830e-05 -2.64578224e-05 -2.45678563e-05 -2.62804386e-05\n", + " -1.64628777e-05 -1.89502115e-05 -1.53565167e-05 -1.20915299e-05\n", + " -9.49697066e-06 -1.79207640e-05 -1.48662015e-05 7.86387996e-05\n", + " 7.22826919e-05 4.19331962e-05 4.56963998e-05 4.05394278e-05\n", + " 2.82115795e-05 3.34284887e-05 4.06033796e-05 3.62999283e-05\n", + " -5.05939665e-05 -4.97566386e-05 -2.80598882e-05 -3.98292868e-05\n", + " 3.18620445e-05]\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 2.65333822e-05 2.30140642e-05 2.63389729e-05 2.32870327e-05\n", + " 2.76931393e-05 2.54292824e-05 2.70538036e-05 3.83855991e-05\n", + " 3.09193455e-05 5.17153422e-05 5.30883584e-05 -9.50058353e-05\n", + " -7.17666640e-05 -4.77171089e-05 -4.93965313e-05 -3.65174415e-05\n", + " -3.12367010e-05 -2.76429241e-05 -1.75386370e-05 -5.71335735e-06\n", + " 0.00000000e+00 7.10785822e-06 1.09757439e-05 2.00536797e-05\n", + " -3.07813697e-05 -2.75637310e-05 -2.46867416e-05 -2.71886799e-05\n", + " -1.78233831e-05 -2.04562592e-05 -1.60950342e-05 -1.27028789e-05\n", + " -1.01379518e-05 -1.87787930e-05 -1.55978247e-05 8.53655120e-05\n", + " 7.58995546e-05 4.78566672e-05 4.61671451e-05 4.53993902e-05\n", + " 3.11203755e-05 3.72189022e-05 4.32364973e-05 3.87602719e-05\n", + " -5.44313753e-05 -5.34190059e-05 -3.10241419e-05 -4.26006498e-05\n", + " 3.37050048e-05]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 81%|████████▏ | 22/27 [00:32<00:07, 1.40s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 5.66166295e-05 4.70120825e-05 5.61415587e-05 4.74322414e-05\n", + " 5.91602354e-05 5.45800241e-05 -7.51701410e-05 -8.98559385e-05\n", + " -5.94468286e-05 -6.86558493e-05 -5.17973437e-05 -5.50249269e-05\n", + " -3.69959580e-05 -2.14691768e-05 -1.93271667e-05 -1.03607906e-05\n", + " 0.00000000e+00 0.00000000e+00 8.68318502e-06 1.52336078e-05\n", + " 2.89713372e-05 3.72507219e-05 3.59457695e-05 4.22451782e-05\n", + " -2.96979738e-05 -2.63842278e-05 -2.43451596e-05 -2.63404593e-05\n", + " -1.64947588e-05 -1.88404778e-05 8.62655493e-05 7.33140756e-05\n", + " 8.57510852e-05 9.42300796e-05 5.28822386e-05 7.82391957e-05\n", + " 7.19196446e-05 4.20102356e-05 4.56080186e-05 -4.15680690e-05\n", + " -3.40724384e-05 -4.02526861e-05 -4.74325476e-05 -4.58577508e-05\n", + " -5.03861266e-05 -4.94305578e-05 -2.77991274e-05 -3.95676183e-05\n", + " 3.16542593e-05]\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 5.96016707e-05 5.15692547e-05 5.91219768e-05 5.21530036e-05\n", + " 6.22312397e-05 5.71601981e-05 -8.15446288e-05 -9.54869989e-05\n", + " -6.10189853e-05 -7.36986291e-05 -5.57770242e-05 -5.97016145e-05\n", + " -4.01360122e-05 -2.29736803e-05 -2.03932961e-05 -1.08382122e-05\n", + " 0.00000000e+00 0.00000000e+00 9.59569552e-06 1.60622013e-05\n", + " 3.09693573e-05 3.94441878e-05 3.74868210e-05 4.52658229e-05\n", + " -3.08089388e-05 -2.74971234e-05 -2.44986726e-05 -2.72881339e-05\n", + " -1.78707478e-05 -2.03505121e-05 9.04126562e-05 7.70275215e-05\n", + " 9.15967246e-05 9.88077889e-05 5.55562298e-05 8.49773527e-05\n", + " 7.55490114e-05 4.79411440e-05 4.61042690e-05 -4.65674452e-05\n", + " -3.76080864e-05 -4.48431606e-05 -5.05185360e-05 -4.89906404e-05\n", + " -5.42760122e-05 -5.31342714e-05 -3.07740343e-05 -4.23503945e-05\n", + " 3.35040742e-05]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 85%|████████▌ | 23/27 [00:33<00:05, 1.39s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.00000000000001\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 2.52026358e-05 2.09831552e-05 2.50330770e-05 2.12085686e-05\n", + " 2.63727410e-05 2.43021708e-05 2.49040661e-05 3.60568220e-05\n", + " 3.01394943e-05 4.81495538e-05 4.92934067e-05 -8.76706927e-05\n", + " -6.62152770e-05 -4.46002736e-05 -4.68143253e-05 -3.50190388e-05\n", + " -2.87301685e-05 -2.61323790e-05 -1.58209777e-05 -5.39797460e-06\n", + " 0.00000000e+00 6.72329782e-06 1.05323132e-05 1.86797435e-05\n", + " -2.97293778e-05 -2.64291460e-05 -2.45593358e-05 -2.62837181e-05\n", + " -1.64215400e-05 -1.89354207e-05 -1.53269649e-05 -1.20604793e-05\n", + " -9.48331227e-06 -1.79351961e-05 -1.48255989e-05 7.86342516e-05\n", + " 7.22352940e-05 4.18912885e-05 4.57060941e-05 4.05435588e-05\n", + " 2.82381656e-05 3.34469401e-05 4.06233242e-05 3.63317304e-05\n", + " -5.05892716e-05 -4.97662483e-05 -2.80495055e-05 -3.97983620e-05\n", + " 3.18607522e-05]\n", + "INFO:shap:np.sum(w_aug) = 49.00000000000001\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 2.65086194e-05 2.29995105e-05 2.63404489e-05 2.33124906e-05\n", + " 2.77258763e-05 2.54306380e-05 2.70109525e-05 3.82972403e-05\n", + " 3.09164745e-05 5.16649773e-05 5.30652979e-05 -9.50309512e-05\n", + " -7.17746670e-05 -4.76880296e-05 -4.93771395e-05 -3.65491409e-05\n", + " -3.12195648e-05 -2.76824461e-05 -1.75125352e-05 -5.69385210e-06\n", + " 0.00000000e+00 7.10903205e-06 1.09695611e-05 2.00094280e-05\n", + " -3.08212142e-05 -2.75316245e-05 -2.46806114e-05 -2.71884839e-05\n", + " -1.77805226e-05 -2.04402627e-05 -1.60614997e-05 -1.26684639e-05\n", + " -1.01212770e-05 -1.87949279e-05 -1.55538112e-05 8.53588286e-05\n", + " 7.58487070e-05 4.78124036e-05 4.61791256e-05 4.54048294e-05\n", + " 3.11468431e-05 3.72406600e-05 4.32594136e-05 3.87934640e-05\n", + " -5.44270365e-05 -5.34282641e-05 -3.10141284e-05 -4.25659688e-05\n", + " 3.37035055e-05]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 89%|████████▉ | 24/27 [00:34<00:04, 1.38s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [ 6.60218013e-06 5.15955777e-06 6.46386764e-06 5.44821244e-06\n", + " 6.92648230e-06 6.38568792e-06 9.28512115e-06 1.62566431e-05\n", + " 1.63871133e-05 2.98887511e-05 3.36126186e-05 4.84126527e-05\n", + " 5.60044392e-05 5.17871765e-05 -6.34258537e-05 -4.99756894e-05\n", + " -4.48748130e-05 -4.35153620e-05 -3.04875844e-05 -1.76072621e-05\n", + " -1.82931308e-05 -1.17966082e-05 -4.62699178e-06 0.00000000e+00\n", + " -2.96252076e-05 -2.63755607e-05 -2.44339667e-05 -2.61625186e-05\n", + " -1.62820232e-05 -1.86994268e-05 -1.53319617e-05 -1.19530153e-05\n", + " -9.08724438e-06 -1.78230420e-05 -1.48003117e-05 -2.87727313e-05\n", + " -4.04129997e-05 -3.15447874e-05 4.56239147e-05 4.07754547e-05\n", + " 2.85795394e-05 3.35111523e-05 4.07571280e-05 3.63631366e-05\n", + " 3.98693983e-05 4.55502112e-05 2.94122657e-05 -3.99887359e-05\n", + " 3.20920592e-05]\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [ 6.68128704e-06 5.78555670e-06 6.63398078e-06 5.87752548e-06\n", + " 6.98323177e-06 6.41107870e-06 9.88631190e-06 1.72380535e-05\n", + " 1.64485845e-05 3.19444353e-05 3.59941622e-05 5.23770206e-05\n", + " 6.05763188e-05 5.53742078e-05 -6.68404547e-05 -5.20506509e-05\n", + " -4.86952668e-05 -4.63603389e-05 -3.37942146e-05 -1.86554961e-05\n", + " -1.97959817e-05 -1.24177651e-05 -5.02801759e-06 5.04560462e-06\n", + " -3.08258952e-05 -2.75895827e-05 -2.46984874e-05 -2.72066644e-05\n", + " -1.78578481e-05 -2.05092873e-05 -1.61232645e-05 -1.26814140e-05\n", + " -1.01468681e-05 -1.88031419e-05 -1.56015201e-05 -3.14211351e-05\n", + " -4.24420550e-05 -3.58566527e-05 4.63072446e-05 4.54736623e-05\n", + " 3.11746935e-05 3.73176743e-05 4.33746639e-05 3.88521650e-05\n", + " 4.28576015e-05 4.92885696e-05 3.22103632e-05 -4.26684923e-05\n", + " 3.38145231e-05]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 93%|█████████▎| 25/27 [00:36<00:02, 1.40s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 1.26542506e-05 1.05182165e-05 1.25498520e-05 1.06432844e-05\n", + " 1.32090742e-05 1.21963720e-05 1.43855521e-05 2.28308023e-05\n", + " 2.07246523e-05 3.58716347e-05 3.87086764e-05 5.46859842e-05\n", + " 6.15961017e-05 -5.37750377e-05 -5.77655855e-05 -4.48229824e-05\n", + " -3.93964986e-05 -3.77906606e-05 -2.55889587e-05 -1.35699292e-05\n", + " -1.25083602e-05 -5.56553245e-06 0.00000000e+00 9.37588127e-06\n", + " -2.96638179e-05 -2.64089151e-05 -2.45382092e-05 -2.62401398e-05\n", + " -1.64797238e-05 -1.89694850e-05 -1.53698411e-05 -1.20376616e-05\n", + " -9.46942704e-06 -1.78852117e-05 -1.48300553e-05 -2.88851461e-05\n", + " -4.03353409e-05 4.19655104e-05 4.57645258e-05 4.05138107e-05\n", + " 2.82077528e-05 3.34543161e-05 4.06376789e-05 3.63076142e-05\n", + " 3.97378742e-05 4.58180651e-05 -2.80658359e-05 -3.98064763e-05\n", + " 3.18891411e-05]\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 1.33078696e-05 1.15247753e-05 1.32020865e-05 1.16929625e-05\n", + " 1.38807412e-05 1.27598376e-05 1.55951813e-05 2.42388974e-05\n", + " 2.12506895e-05 3.84785284e-05 4.16511320e-05 5.92684920e-05\n", + " 6.67405661e-05 -5.74691752e-05 -6.08918803e-05 -4.67728990e-05\n", + " -4.27932473e-05 -4.00197005e-05 -2.83092333e-05 -1.43046553e-05\n", + " -1.33722569e-05 -5.89240295e-06 0.00000000e+00 1.00365797e-05\n", + " -3.07412143e-05 -2.75035373e-05 -2.46557110e-05 -2.71388113e-05\n", + " -1.78335213e-05 -2.04659765e-05 -1.61030612e-05 -1.26427099e-05\n", + " -1.01048762e-05 -1.87389096e-05 -1.55588299e-05 -3.13470316e-05\n", + " -4.23295138e-05 4.78588790e-05 4.62128272e-05 4.53630341e-05\n", + " 3.11143594e-05 3.72386657e-05 4.32536253e-05 3.87639009e-05\n", + " 4.27635178e-05 4.91887270e-05 -3.10144450e-05 -4.25510263e-05\n", + " 3.37302594e-05]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 96%|█████████▋| 26/27 [00:37<00:01, 1.41s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [-1.24711777e-05 -1.04931097e-05 -1.24508175e-05 -1.04191954e-05\n", + " -1.32963343e-05 -1.21219894e-05 -6.73969358e-06 -3.58565597e-06\n", + " 0.00000000e+00 1.13761970e-05 1.74986464e-05 2.91143561e-05\n", + " 3.87770430e-05 3.85118929e-05 5.21063779e-05 5.41436805e-05\n", + " 6.77689849e-05 -6.13990127e-05 -4.54050463e-05 -2.99552628e-05\n", + " -3.62749943e-05 -3.02928041e-05 -2.03707891e-05 -9.26914638e-06\n", + " 3.48838790e-05 4.13671909e-05 -2.42926078e-05 -2.63759680e-05\n", + " -1.63212011e-05 -1.87484348e-05 -1.54574934e-05 -1.18095087e-05\n", + " -9.40406550e-06 -1.81035347e-05 -1.49701629e-05 -2.84924574e-05\n", + " -3.98709871e-05 -3.14955187e-05 -4.17989029e-05 -4.21262813e-05\n", + " -3.40396536e-05 3.33576903e-05 4.06183668e-05 3.66956344e-05\n", + " 4.01870556e-05 4.63309277e-05 2.95737132e-05 3.68287417e-05\n", + " 0.00000000e+00]\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [-1.31100302e-05 -1.14941557e-05 -1.30975897e-05 -1.14582279e-05\n", + " -1.39715299e-05 -1.26819099e-05 -7.30436588e-06 -3.79942637e-06\n", + " 0.00000000e+00 1.22119595e-05 1.88415947e-05 3.15701731e-05\n", + " 4.20351921e-05 4.11735635e-05 5.49468558e-05 5.64906361e-05\n", + " 7.36027472e-05 -6.50353760e-05 -5.02499603e-05 -3.15710689e-05\n", + " -3.87806463e-05 -3.20625715e-05 -2.12308352e-05 -9.92490724e-06\n", + " 3.61589815e-05 4.30811850e-05 -2.44070552e-05 -2.72910893e-05\n", + " -1.76858400e-05 -2.02532303e-05 -1.62042047e-05 -1.24047874e-05\n", + " -1.00422807e-05 -1.89755247e-05 -1.57088652e-05 -3.09539871e-05\n", + " -4.18569425e-05 -3.59449271e-05 -4.22024119e-05 -4.71584343e-05\n", + " -3.75574674e-05 3.71691332e-05 4.32597829e-05 3.91955170e-05\n", + " 4.32560206e-05 4.97568501e-05 3.26802217e-05 3.93741999e-05\n", + " 0.00000000e+00]\n" + ] + }, { - "ename": "FileNotFoundError", - "evalue": "[Errno 2] No such file or directory: '../inputs\\\\tutorial_08\\\\learned_strategies/zonal_case/avg_reward_eval_policies/actor_pp_{ACTOR_NUM}.pt'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[21], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Load the trained model parameters\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m model_state \u001b[38;5;241m=\u001b[39m \u001b[43mth\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mload\u001b[49m\u001b[43m(\u001b[49m\u001b[43mactor_path\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmap_location\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mth\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdevice\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcpu\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 3\u001b[0m model\u001b[38;5;241m.\u001b[39mload_state_dict(model_state[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mactor\u001b[39m\u001b[38;5;124m\"\u001b[39m])\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\torch\\serialization.py:997\u001b[0m, in \u001b[0;36mload\u001b[1;34m(f, map_location, pickle_module, weights_only, mmap, **pickle_load_args)\u001b[0m\n\u001b[0;32m 994\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mencoding\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m pickle_load_args\u001b[38;5;241m.\u001b[39mkeys():\n\u001b[0;32m 995\u001b[0m pickle_load_args[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mencoding\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mutf-8\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m--> 997\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[43m_open_file_like\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mrb\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m opened_file:\n\u001b[0;32m 998\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m _is_zipfile(opened_file):\n\u001b[0;32m 999\u001b[0m \u001b[38;5;66;03m# The zipfile reader is going to advance the current file position.\u001b[39;00m\n\u001b[0;32m 1000\u001b[0m \u001b[38;5;66;03m# If we want to actually tail call to torch.jit.load, we need to\u001b[39;00m\n\u001b[0;32m 1001\u001b[0m \u001b[38;5;66;03m# reset back to the original position.\u001b[39;00m\n\u001b[0;32m 1002\u001b[0m orig_position \u001b[38;5;241m=\u001b[39m opened_file\u001b[38;5;241m.\u001b[39mtell()\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\torch\\serialization.py:444\u001b[0m, in \u001b[0;36m_open_file_like\u001b[1;34m(name_or_buffer, mode)\u001b[0m\n\u001b[0;32m 442\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_open_file_like\u001b[39m(name_or_buffer, mode):\n\u001b[0;32m 443\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m _is_path(name_or_buffer):\n\u001b[1;32m--> 444\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_open_file\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname_or_buffer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 445\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 446\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mw\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01min\u001b[39;00m mode:\n", - "File \u001b[1;32mc:\\Users\\tg3533\\AppData\\Local\\miniconda3\\envs\\assume-framework\\Lib\\site-packages\\torch\\serialization.py:425\u001b[0m, in \u001b[0;36m_open_file.__init__\u001b[1;34m(self, name, mode)\u001b[0m\n\u001b[0;32m 424\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m, name, mode):\n\u001b[1;32m--> 425\u001b[0m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39m\u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m)\u001b[49m)\n", - "\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '../inputs\\\\tutorial_08\\\\learned_strategies/zonal_case/avg_reward_eval_policies/actor_pp_{ACTOR_NUM}.pt'" + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 27/27 [00:38<00:00, 1.44s/it]\n" ] } ], - "source": [ - "# Load the trained model parameters\n", - "model_state = th.load(actor_path, map_location=th.device(\"cpu\"))\n", - "model.load_state_dict(model_state[\"actor\"])" - ] - }, - { - "cell_type": "markdown", - "id": "fe43c9c6", - "metadata": { - "id": "d4a63712" - }, - "source": [ - "Get the actions base on observation tensor we just loaded." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4ee77fed", - "metadata": { - "id": "e6460cfb" - }, - "outputs": [], - "source": [ - "predictions = []\n", - "for obs in input_data:\n", - " obs_tensor = th.tensor(obs, dtype=th.float)\n", - " prediction = model(obs_tensor)\n", - " predictions.append(prediction)\n", - "predictions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9cf0d9b7", - "metadata": { - "id": "be91cd97", - "lines_to_next_cell": 2 - }, - "outputs": [], - "source": [ - "# Split the data into training and testing sets\n", - "X_train, X_test, y_train, y_test = train_test_split(\n", - " input_data, predictions, test_size=0.15, random_state=42\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f86348b7", - "metadata": { - "id": "b21c93c7", - "lines_to_next_cell": 2 - }, - "outputs": [], - "source": [ - "# Convert data to tensors\n", - "y_train = th.stack(y_train)\n", - "y_test = th.stack(y_test)\n", - "\n", - "X_train_tensor = th.tensor(X_train, dtype=th.float32)\n", - "y_train_tensor = th.tensor(y_train, dtype=th.float32)\n", - "X_test_tensor = th.tensor(X_test, dtype=th.float32)\n", - "y_test_tensor = th.tensor(y_test, dtype=th.float32)" - ] - }, - { - "cell_type": "markdown", - "id": "633c5100", - "metadata": { - "id": "ddd1ab1e" - }, - "source": [ - "## 3.2. Creating a SHAP Explainer " - ] - }, - { - "cell_type": "markdown", - "id": "c278a8c6", - "metadata": { - "id": "ae7b108b", - "lines_to_next_cell": 2 - }, - "source": [ - "We define a prediction function compatible with SHAP and create a Kernel SHAP explainer." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "77b37ebc", - "metadata": { - "id": "6d9be211" - }, - "outputs": [], - "source": [ - "# Define a prediction function for SHAP\n", - "def model_predict(X):\n", - " X_tensor = th.tensor(X, dtype=th.float32)\n", - " model.eval()\n", - " with th.no_grad():\n", - " return model(X_tensor).numpy()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ce3b3daa", - "metadata": { - "id": "f0f7857b" - }, - "outputs": [], - "source": [ - "# Use a subset of training data for the background dataset\n", - "background_size = 100 # Adjust the size as needed\n", - "background = X_train[:background_size]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1eac5396", - "metadata": { - "id": "84bb96cf" - }, - "outputs": [], - "source": [ - "# Create the SHAP Kernel Explainer\n", - "explainer = shap.KernelExplainer(model_predict, background)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c38544fd", - "metadata": { - "id": "2a7929e4" - }, - "outputs": [], "source": [ "# Calculate SHAP values for the test set\n", "shap_values = explainer.shap_values(X_test)" @@ -5005,12 +5132,48 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 48, "id": "60ed8910", "metadata": { "id": "44fa277f" }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[array([[-4.44507299e-05, -3.70878677e-05, -4.41125138e-05, ...,\n", + " 3.66767070e-05, -4.03680515e-05, 0.00000000e+00],\n", + " [-1.25899770e-05, -1.04533859e-05, -1.24064115e-05, ...,\n", + " 3.66173281e-05, 3.20080367e-05, 0.00000000e+00],\n", + " [ 6.49159712e-06, 0.00000000e+00, 6.44950511e-06, ...,\n", + " -3.98000386e-05, 3.21382656e-05, 0.00000000e+00],\n", + " ...,\n", + " [ 6.60218013e-06, 5.15955777e-06, 6.46386764e-06, ...,\n", + " -3.99887359e-05, 3.20920592e-05, 0.00000000e+00],\n", + " [ 1.26542506e-05, 1.05182165e-05, 1.25498520e-05, ...,\n", + " -3.98064763e-05, 3.18891411e-05, 0.00000000e+00],\n", + " [-1.24711777e-05, -1.04931097e-05, -1.24508175e-05, ...,\n", + " 3.68287417e-05, 0.00000000e+00, 0.00000000e+00]]),\n", + " array([[-4.67654224e-05, -4.06610081e-05, -4.64230037e-05, ...,\n", + " 3.92361459e-05, -4.26883905e-05, 0.00000000e+00],\n", + " [-1.32381226e-05, -1.14537804e-05, -1.30501587e-05, ...,\n", + " 3.91520122e-05, 3.38670409e-05, 0.00000000e+00],\n", + " [ 6.68053868e-06, 5.78421920e-06, 6.63772552e-06, ...,\n", + " -4.26702344e-05, 3.38169457e-05, 0.00000000e+00],\n", + " ...,\n", + " [ 6.68128704e-06, 5.78555670e-06, 6.63398078e-06, ...,\n", + " -4.26684923e-05, 3.38145231e-05, 0.00000000e+00],\n", + " [ 1.33078696e-05, 1.15247753e-05, 1.32020865e-05, ...,\n", + " -4.25510263e-05, 3.37302594e-05, 0.00000000e+00],\n", + " [-1.31100302e-05, -1.14941557e-05, -1.30975897e-05, ...,\n", + " 3.93741999e-05, 0.00000000e+00, 0.00000000e+00]])]" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "shap_values" ] @@ -5037,25 +5200,67 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "2f5af8e0", - "metadata": { - "id": "a6af4983" - }, - "outputs": [], - "source": [ - "print(shap_values[0].shape)\n", - "print(X_test.shape)" - ] - }, - { - "cell_type": "code", - "execution_count": null, + "execution_count": 50, "id": "4020bf97", "metadata": { "id": "2e318a5b" }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "No data for colormapping provided via 'c'. Parameters 'vmin', 'vmax' will be ignored\n" + ] + }, + { + "data": { + "image/png": "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qwA4OTnRt29f/P399fVycnL45ptv2LdvH7du3cLCwoJOnToxbtw4WrVqVex++Pn5cfJk/vrUs2fPZvbs2QDs3r0bJycnMjMzWblyJQcOHCAxMZHatWvTo0cPxo8fj6Ojo347hfchMzOTrVu3cuvWLd599139lf39+/ezefNmLl26RF5eHm5ubowcOZJ+/foZxHXixAnWr1/PuXPnyMzMxMHBgS5duvDhhx9iZ2cHwNatW4mIiODq1avcu3cPW1tbunfvzvjx43FyclJt79ChQ6xbt44rV66QlZWFnZ0drVu3ZtKkSTg7O6uOQ9euXfWvK2oIUeF68fHxqtcUHLvysLe3f3ylYsTHx3Ps2DHatWuHq6trubYlnl6HYxWGheZxKw2szeHfvU2Y1Lns15JSC902QQO85arhNRfDH1q7GvCik4aouwoK8EIdaGxT9h9k2xoa2juacOWuDgVo39AUlzpl34/k1DxmBiXz+9VcTDTQ/6WafDLSDlMTdYzOzpY0bWqhv19E/QammJoZ7kedeuZY1TYlPTUPcwsNbbpaY2Ly+P2t09CCOo4WJF7PAhQataiJRU251lcU08a1sXBvSuam86CAWTNbNLaGyaSSlUvaiK3k7PgdFAXz19yw2foOJraGvTzaXWfJen8z3M2AurWosWwwZj4dyxSfoijw4XoI+hG0eSidnGHXZDRN6z3SaB6cugomGtAp0LYp/PfdMrUpRFWSJKKCffXVV2RmZuLj4wPkJxd///vfycnJMTj5vH37NuPHj6dfv368+uqrj71KP2PGDMLCwmjbti1jxozBxsaG69ev88MPP+iTCK1WywcffMCZM2fw9PRkyJAhpKens3PnTt577z1WrFhB69ati2xjzJgxdOjQgdWrVzNw4EA6deoEQJ06ddBqtUyaNInTp0/j4eHBiBEjiImJYfv27Rw9epR169bRoIF6beuNGzeSmprK22+/jb29vf75JUuWsGrVKnr27Im/vz8mJiaEh4fz2WefMW3aNIYMGaLfxvbt25k3bx7169dn0KBBODo6kpCQwE8//cTt27f1ScQ333xD27ZtGTp0KLa2tly5coVdu3Zx/PhxNm3apK/366+/8sknn+Dq6oqvry/W1tYkJSVx7Ngxbt68ibOzM2PGjEFRFE6dOsWcOXP0sbRv377IYzdnzhwWLFiAnZ0dY8aM0ZfX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O8wtP3enw8LCGDp0KBUrVsTS0pKaNWvy0Ucf8fDhQ51806dPR6VScfnyZT766COqVKmCpaUlTZo04ffff39iOZAzD2Hfvn189tlnuLm5YW1tjZeXF0ePHgUgODiY9u3bY2Njg6urK59//rnBfW3ZsoV27dphY2ODra0t7dq1Y+vWrQbzLl++nLp162JpaUmtWrWYM2dOrkNt4uPj+eCDD6hVqxaWlpY4OzszePBgvXNorPy2c17zilQqFSNGjACyPrfVq1cHsm52ZJ/z7O/ao9+vdevW0bhxY6ysrKhWrRrTp09HrVbr7Du/39P8fNZUKhXdu3dn9+7dJCUlGdlS4nkmPRFCiBdGzZo1uXz5Mr/99huvvfZavrbJzMzMdc5DWlpartutWLGC6tWr89JLL6FSqWjWrBkBAQG89dZb+a7v1atXAShfvnyueQYNGsR7773H6tWreeWVV3Te27dvHxEREdphUpB10fDgwQOGDRtGlSpViIiI4Mcff6RLly7s378/zyFXBTF06FDWrVuHr68vfn5+pKWl8csvv9CtWzd+++03vTo/7sSJEyQlJdGqVSujyl24cCGxsbG89dZbWFlZMW/ePPr168fGjRsZNWoUgwcPpm/fvuzZs4f58+dToUIFPvnkE519JCcn07FjR7y8vPjqq6+4evUqixYt4ujRo5w6dUobdKanp/Ptt9/Sv39/Xn31VWxsbAgNDWXFihX89ddfesPRPv74Y7788kvq16/Pe++9h6urK9evX2fTpk189tlneHt789FHH/Hll1/i7++vPScVK1bM85hv3bpFq1atiI+PZ+zYsdSuXZsDBw7w1VdfcejQIfbt24eZme7P/vDhwzE3N2fKlCmkp6czZ84c+vbty5UrVwxehBry4YcfkpmZyYQJE0hPT+f777/n5ZdfZvXq1bz55pv4+/vzxhtv8Ouvv/Lpp59SvXp1nV63RYsWMW7cOOrWrcunn34KZH1O+/bty9KlS/H399fmnTNnDu+99x5NmjThyy+/5OHDh3z33XdUqFBBr17x8fG0bduW27dvM3LkSBo0aMC9e/dYtGgRXl5eHD9+HDc3t3wd49O285PUq1ePH374gffee49+/fpp/z7Z2trq5Nu2bRs3btxg3LhxuLi4sG3bNmbMmMGtW7dYuXKl0ceS389amzZtWLp0KX/99Rc9evQwuhzx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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "No data for colormapping provided via 'c'. Parameters 'vmin', 'vmax' will be ignored\n" + ] + }, + { + "data": { + "image/png": "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efJk/vvf/xIVFUX37t2xs7PjypUrbN68GX9/f0aNGkVcXBxDhgyhQ4cOBAYGAjBnzhzCwsJ4//33OXDggHRrKumKejooIYQwxs6dO5WBAwcqdevWVWxtbRULCwulZs2ayocffqjExsaq6j548EAZNGiQYm9vr9jZ2Sm9evVS4uLicp3i9fbt26rlBwwYoNjY2OjF0K5dO6V+/fq697lNhZg93eLjU0wa2t62bduURo0aKVZWVoqrq6sydepUZenSpQan0fT09MzzGGVP5/jVV1/lWS+vfcrN49OJKkrWFKsff/yxUrFiRcXc3FypVauW8s0336imvVQURTl//rzi7u6uWFtbK8ATp3vFwBSviqIoly5dUnx8fBQHBwfFyspKadmypRIaGqqqk59pSw1JTExUJkyYoNSvX1+xtrZW7OzslH//+9/K8uXL9fZHUbKmU+3Ro4dSqlQppUyZMsrgwYOVM2fO6E3xmpGRoXz44YeKk5OTotFodFNkZk/x+s033yjfffedUqVKFcXS0lJp27atcvLkSb3t/fjjj0r16tUVCwsLpUmTJsrPP/9s8Dv5/fffFTc3N8XCwuKJ071mH6vsl7m5ueLk5KS4u7srX375pRIXF6e3TG5TvBo6Nw19jzn3O6dLly4p/fv3VypUqKCYm5srlSpVUrp27aps2LBBb9uP/796fMrd48ePK++8845StWpVxdLSUilXrpzStWtX5dixY3rxPX58jh8/rnTu3FmxtbVVSpUqpXTo0EE1da0xceQl53F//JXTyJEjFY1Go5w7dy7P9WXHFB4ervj7+ytlypRRbG1tlXfffVe5e/fuE+MxtB9PmuI128aNG5U2bdooNjY2io2NjVK3bl1l2LBhSkREhKIoivL2228rdnZ2SlRUlGq5rVu3KoAydepUo+ITzx+NorwkI4GEEOIFNXPmTD7++GOioqL0Zo4Rz5eoqCiqVavGN998w6hRo4o7HPGcatmyJS4uLgQHB+dZb/ny5fj6+nL06FHdODEhiop0ZxJCiBJMURSWLFlCu3btJIEQ4gXwzz//cPLkSVasWFHcoQiRJ+mMJoQQJVBycjJr1qxh8ODBnD59mo8//ri4QxJCFILSpUuTlpamexbK00pKSuLWrVt5vp71tMEvugkTJuQ6hXDOz6KionRTERujoMs9a9ISIYQQJdDt27fp27cv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BX799Vf+85//5OkYnU6X45qHtLS0HI9btGgR1apV4/nnn0elUtGsWTOCgoJ4880381zfS5cuAVC2bNkc8/Tv35/33nuPpUuX8tJLLxk9t3PnTm7dumWYJgWZPxru37/PoEGDqFy5Mrdu3eKnn36ic+fO7Nq1K9cpV/nx+uuvs3LlSvz9/QkICCAtLY1ffvmFrl278uuvv5rU+WFHjx4lMTGRli1bWlTunDlziImJ4c0338TOzo6ZM2fSp08f1q5dy7BhwxgwYAC9e/dm+/btzJo1i3LlyvHJJ58YnSMpKYkOHTrg4+PDV199xaVLl5g7dy5///03x48fNwSd6enpfPvtt7zyyiu8/PLL2Nvbc/jwYRYtWsRff/1lMh3t448/5ssvv6R+/fq89957VKxYkStXrrBu3TqmTJmCr68vH330EV9++SWBgYGG16R8+fK5tvn69eu0bNmSuLg4Ro4cSa1atdi9ezdfffUV+/btY+fOnVhZGX/tDx48GGtra8aPH096ejrTp0+nd+/eXLx40eyPUHM+/PBDdDodo0ePJj09ne+//54XXniBpUuX8sYbbxAYGMhrr73GmjVr+PTTT6lWrZrRqNvcuXN5++23qVu3Lp9++imQ+T7t3bs38+fPJzAw0JB3+vTpvPfeezRp0oQvv/yS5ORkvvvuO8qVK2dSr7i4ONq0acONGzcYOnQoDRo04M6dO8ydOxcfHx+OHDmCp6dnntpY0H5+lHr16vHDDz/w3nvv0adPH8Pnk4ODg1G+TZs2cfXqVd5++20qVKjApk2bmDx5MtevX2fx4sUWtyWv77XWrVszf/58/vrrL7p3725xOeIppQghxDNi//79irW1tQIotWrVUgICApS5c+cq//zzj9n8np6eCvDIf3fv3jU67tatW4pGo1EmTpxoSJs+fboCmC0LUF544QXl7t27yt27d5WLFy8q06ZNU6ytrRVnZ2clMjIy13b5+/srtra2yv37943SBw4cqFhZWRkdn5iYaHJ8RESE4ubmprz44otG6YMHD1Ye/ppo37694unpaXKOa9euKYBRm3/99VcFUObPn2+UNyMjQ2nevLni5eWl6PX6XNsWFBSkAMrGjRtNntu1a5cCKIsXLzZJ8/DwUGJjYw3pJ0+eVABFpVIp69atMzrPc889p1SoUMGknYAyevRoo/SsNr311luGNL1e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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAOsCAYAAADX7yC0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzde1RV1f7//+fmkikQKAcVU8FL6sfU0kz7dgzth90g+kmikl+1wEBAPmV5OX37eUSN7zjmKb9iIHgBFUtN1ERQONoJMD15S0sxBa+hgJApJAoeNuzfH37Zxx1I4sbsnF6PMRwj5pprrveaezXGeq+55lwGk8lkQkRERERExAo29zoAERERERH596fEQkRERERErKbEQkRERERErKbEQkRERERErKbEQkRERERErKbEQkRERERErKbEQkRERERErKbEQkRERERErKbEQkRERERErKbEQkQatXTpUqqrq+91GCIiIvIbp8RCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESsZjCZTKZ7HYSI/HYZPjDe6xBERETkFkzT7O51CGYasRAREREREaspsRAREREREaspsRAREREREaspsRAREREREaspsRAREREREaspsRAREREREaspsRAREREREav9phOL2bNnM3DgwNuqW1RUxMCBA1myZMldjuqGpsQWGhqKn5/fXY6ocU3tn7y8PMLDw3n66ad/1X4VERERkX9Pv50vashvhtFoZMaMGRiNRsLCwnBycuKhhx6612H96rKzs8nLy2PSpEm3vc+aNWtwcnJq9kQyNzeXjIwMjh07xokTJ6isrCQqKqrB4xw5coTVq1eTn5/PpUuXAGjfvj3Dhw9n7NixODo6NmtsIiIiIvAbH7GYOXMmu3fvvtdh/O4UFhZSWFjIK6+8wpgxY/Dx8fnd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iNForFd+7do1q4/38ssvExcXx7x58/if//N/ct9991FWVmb9iYiIiIg04I5GLOqepN/s7NmzXL16lWefffaW+126dAkPDw+CgoI4ePAg06ZNw9nZmQEDBvDHP/6RZ555BgcHh1vuX1hYCICnp2e9bV27dm36ifzM+fPniYuLY8+ePVy5csVim8FgsLr9OkVFRUDDMXfr1g3417nCjX6Lj48nJyfHvHzozSoqKnB0dLzr/VNUVISbmxsPPPBAg3Hn5+dTVlZmkUg0dK2cOXMGk8lEQEDALY9VN4H83LlzAPTs2fMX49u/fz/Lli3j6NGjXL9+3WLbzb/n6NGjycnJYd68eXz00Uc88sgjPPnkkzz33HN39bWl+fPnk56e3uC2n88refHFF5k9e7ZVx+vcubO5/4cPH85XX33Ff//3fwNYjHKJiIiINIc7SiwaWgHKZDLRunVroqOjb7lf3U1z586dSUlJYd++fezfv5+DBw8SHR3NkiVLWLZsWbO9qtFYMlBTU2Px97Vr1wgJCaGyspJXXnmF7t274+DggMFgYOXKlezfv79ZYmoqk8lEZGQkZ86cITAwkN69e+Po6IiNjQ1paWlkZmbWGyX4LbnVamEGg4FFixZZjDjcrO5auV1Hjx4lMjKSjh07EhkZSYcOHWjRogUGg4F3333Xoo9cXFxITk7m0KFD7N27l0OHDrFgwQKWLFlCTExMo/MorDFhwgReeOEFi7KFCxcCMGXKFIvym0eymsv/+B//A1dXVzZs2KDEQkRERJpds63l2qlTJwoKCujbt+9tLSd63333MWTIEIYMGQLcWKVnypQpfPLJJ/zpT39qcJ+6lXXOnj1bb9vp06frldU9WW9oFZyioiKL+R379u3jhx9+YNasWbz00ksWdePj43/xfJriwQcfBBqOua6srs6JEyfIz88nJCSk3ofaNm/ebPF3U/unqR588EG++uorrly5Uu+1pNOnT+Pg4GCeIN2YTp068Y9//IP27dvTpUuXRuvWPXHPz8+3eL3r5zIzM6mpqWHRokXmvgOorKysN/oEYGtry8CBA82rN504cYJx48aRmJhITEwMcGejVI3t07Vr13ojR3X9+GtNqL5+/bpWhRIREZG7otk+kOfr60ttbS2xsbENbq97tQVo8D3vXr16AVBeXn7LY9QtSZuTk8P3339vLq+urmbNmjX16tfdlO7bt8+iPDMzkx9++MGizNbWFqDenI89e/ZYvJ/fHHr16kX79u1JS0vj4sWL5nKj0cjq1asxGAzmFbTqnuj/PK6TJ0+SnZ1tUdbU/mmqYcOGUVtby8qVKy3Kd+/eTV5eHl5eXrccgbhZ3cTmuLi4eiNHYHmteHt7Y29vz7Jly8xzSW5W1y+3+v2SkpLqjeg0dP15enpy//33W9x0183ZaOya/LmWLVve8xv3m6+pm6Wnp1NRUUGfPn1+5YhERETk96DZRiyGDx+On58f69ev5/jx4zz11FO4uLhQWlrK4cOHOX/+PKmpqQBMnjwZJycn+vfvT7t27bhy5QppaWkYDIZfXE3nrbfeYtKkSUycOJFRo0aZl1Nt6AbV09OTQYMGsWnTJkwmEz169CA/P5/s7Gw6depkMXH30UcfxdXVlYULF1JcXEzbtm3Jz89n27ZtdO/enZMnTzZXV2Fra8uMGTOYPn06r776Kv7+/rRq1YodO3Zw5MgRgoKCzElRly5d6Nq1K8nJyVRVVeHh4UFBQQGbNm2ie/fuHDt27I77p6n8/PxIT09n1apVFBUVMWDAAM6dO8eGDRtwdXW1WOGpMQ8//DChoaEsXbqUsWPHMnz4cNzc3Lh48SLHjh1j9+7d7NmzB4B27doxdepU3n//fQIDA/H19cXd3Z3S0lJycnKYNWsWPXv2ZNiwYaxZs4Y333wTf39/7O3t2bt3LydPnqw3ihIdHU1paSmDBw/G3d2d69evs2PHDq5evYqvr6+5Xt++fVm/fj3z5s1jyJAh2NnZ0adPH4sRkZ/r27cvqampxMfH06VLFwwGA15eXvVWq2qq4uJitm7dCvxr9Gnnzp2UlJQAmPsF4M0338TZ2Zl+/frRvn17Kioq+Oabb8jJyaFdu3bmj/KJiIiINKdm/ax1VFQUAwcO5LPPPmPlypVUV1fj6upKr169LG46AwIC2LFjB5s2baK8vBxnZ2d69uzJjBkz6n3I7uf69etHXFwcsbGxrFq1CkdHR/MH4AIDA+vVnzt3Ln/961/JzMxk27Zt9O/fn4SEBP7yl79QXFxsrufk5ERsbCyLFi3i008/paamhl69ehETE0NqamqzJhZwYxnUxYsXk5iYyOrVq6mursbT05OZM2dafCDP1taWmJgYFi5cSHp6OpWVlXTr1o3Zs2eTn59fL7Foav80hZ2dHbGxseYP5GVlZeHk5IS3tzcRERG0b9/+ttsKDQ2ld+/erFu3jrVr11JZWUmbNm3o1q0b06ZNs6gbEBBAx44dSU5OZt26dVRXV+Pm5sbjjz9u/i7Go48+yvz581m+fDkJCQm0aNGCQYMGsXTpUkJCQiza8/HxIS0tja1bt3L58mUcHBzo2rUr77//Pt7e3uZ6zz33HHl5eWzfvp2///3v1NbWEhUV1WhiERERQXl5OSkpKVy5cgWTycSWLVusTiwKCwtJSEiwKMvKyiIrK8t8/nWJhb+/P1988QWbN2+mrKwMOzs7OnbsyKuvvsq4ceNu63U1ERERkaYymJqy3quI/O4YPvj1luQVERGRpjFNa9ZxAqs02xwLERERERH5/VJiISIiIiIiVlNiISIiIiIiVlNiISIiIiIiVlNiISIiIiIiVlNiISIiIiIiVvvtrE8lIr9JSx5IIigoCHt7+3sdioiIiPyGacRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESsZjCZTKZ7HYSI/HYZPjDe6xBERETuKdM0u3sdwr8FjViIiIiIiIjVlFiIiIiIiIjVlFiIiIiIiIjVlFiIiIiIiIjVlFiIiIiIiIjVlFiIiIiIiIjVlFiIiIiIiIjVftOJxezZsxk4cOBt1S0qKmLgwIEsWbLkLkd1Q1NiCw0Nxc/P7y5H1Lim9k9eXh7h4eE8/fTTv2q/ioiIiMi/J33tQ+oxGo3MmDEDo9FIWFgYTk5OPPTQQ/c6rF9ddnY2eXl5TJo06bb3WbNmDU5OTs2eSObm5pKRkcGxY8c4ceIElZWVREVFNXic48ePk5mZyf79+ykqKgKgU6dO+Pn54e/vj52d/rcXERGR5vebHrGYOXMmu3fvvtdh/O4UFhZSWFjIK6+8wpgxY/Dx8fndJhbLli1r0j5r164lLS2t2WPZvXs3KSkpVFRU/OJvsWrVKtLS0ujVqxeTJ08mLCwMZ2dn3n//faZMmYLJZGr2+ERERESsfnRZU1NDdXU1999/f3PEY8HOzk5PV++BH3/8EQBnZ+dmbddkMlFZWUmrVq2atd1/Z6GhoQAsXbq00XoBAQFMmDCBli1b8vnnn3P48OFb1h0zZgyzZ8+mRYsWFmV//vOfycjIYNeuXTz11FPNcwIiIiIi/1eT7trT0tKYM2cOcXFxHDlyhLS0NC5cuMDMmTPx8/PDZDKxceNGNm/ezJkzZ7CxsaF3796EhITUm4+Qnp7O+vXrKSgowGg04urqSt++fZk6dSqtW7cGbsxjSE9P58CBAxb7fvPNNyxatIi8vDwcHBzw9vZm5MiRt4w3ISGh3vFDQ0MpLi62eLq8Z88eUlNT+e6777h48SL29vY8/PDDBAcH89hjjzWlq27LwYMHWb58OUePHsVoNOLp6cmoUaMYMWKERb3c3Fw2bNjA4cOHKSkpwdbWlu7duzN+/Hiefvrpeu3ebv80JDQ0lIMHDwIwZ84c5syZA8CWLVvo0KEDlZWVJCYmsmPHDkpLS3nggQcYPHgw4eHhuLu7m9s5cOAAYWFhREVFUVlZSUpKCufPn+e1114zv1q0fft2Pv30U06cOEFNTY35nIYPH14vrgMHDrB69Wpyc3OprKzEzc2Nxx57jDfeeAMXFxcAUlJSyM7O5vTp01y+fBlnZ2cGDRpEeHg4HTp0sGhv165dJCcnc+rUKaqqqnBxcaF3795ERkbi4eFh0Q83Xzu3ev3o5nrFxcUW+9T1nTVcXV1vu+6jjz7aYPkzzzxDRkYGp06dUmIhIiIize6OhgNiYmIwGo34+/vj4OCAh4cHALNmzeJvf/sb3t7e+Pn5UV1dTUZGBpMnT2b+/PkMHToUgK1btzJ79mz69+9PWFgYLVq0oKSkhN27d3Pp0iVzYtGQ3NxcIiIiaNWqFRMmTMDJyYnt27cTFRV1J6diIS0tjfLycnx8fGjXrh2lpaWkpqYSERFBQkIC/fv3t/oYdXbu3Mn06dNxdXVl3LhxtGrViu3btxMdHU1hYSGTJ082183Ozubs2bMMHz4cd3d3ysvLSU9PZ/r06URHR/P888+b61rbP8HBwTzyyCOsWLECf39/8zm3bt0ao9FIZGQk3377Ld7e3owbN46CggI2btzI3r17SU5Opl27dhbtrV27lvLyckaMGIGrq6t5++LFi0lKSuLJJ58kLCwMGxsbsrKyeOedd5gxYwajR482t7Fx40bmzZtH27ZtGTlyJO7u7ly4cIEvv/ySkpISc2Lx8ccf06dPH8aMGYOzszOnTp1i8+bN7N+/n3Xr1pnrff3117z99tt069aNoKAgHB0duXjxIvv27ePcuXN4eHgQHByMyWTi0KFDzJ071xxLv379btl3c+fOZcGCBbi4uBAcHGwub+x6/jWVlpYC0KZNm3sciYiIiPwnuqPEoqqqijVr1li8/pSVlUVGRgbvvvsuL7/8srk8MDCQoKAgPvzwQ7y8vDAYDGRnZ+Pg4EB8fLzFq05hYWG/eOwFCxZQW1tLYmKiOaEZNWoUEydOvJNTsTBz5kxatmxpUTZy5EhGjx7NihUrmi2xqKmpYf78+bRs2ZJVq1bh5uYGwOjRo5k0aRKrVq3Cz8+Pzp07AzBx4kQiIyMt2ggMDGTs2LEkJiZaJBbW9s8TTzyBnZ0dK1asoF+/fvj4+Ji3ffbZZ3z77beMHz+eN99801w+ePBgpkyZQmxsLO+9955FexcuXGDDhg0WN7PHjx8nKSmJoKAgiwQqMDCQqVOnEhcXh6+vLw4ODpSUlPDBBx/g6elJUlISTk5O5vrh4eHU1taa/163bl2938/Ly4uIiAhSU1N59dVXAcjJyaG2tpa4uDiLuF5//XWLfsjMzOTQoUMWfdAYHx8f4uPjadOmzW3v82u5du0aq1evxtHR0Zzgi4iIiDSnO5q8HRAQUG9OxbZt23BwcGDYsGGUlZWZ/1VUVPDUU09RVFREQUEBAI6OjlRVVbFr164mTSS9dOkShw8fZujQoeabZgB7e3vGjh17J6di4eab0mvXrlFWVoatrS19+vTh6NGjVrdf59ixY1y4cIGXXnrJnFTAjfOYMGECtbW15OTkNBhXVVUVZWVlVFVV8fjjj3PmzBkqKiqAu98/WVlZ2NjYEBQUZFE+ZMgQevTowc6dOy1u9AF8fX3rPSHPyMjAYDDg6+trca2UlZXh5eXF1atXOXLkCACff/451dXVhISEWCQVdWxs/nUJ1/VTbW0tFRUVlJWV0aNHDxwdHcnNzTXXc3R0BOCLL77AaDRa0SNNU3dN3fzPaDRiNBrrlV+7dq3ZjltTU8Of//xnCgsLeeedd5p97oyIiIgI3OGIRd2T9JudPXuWq1ev8uyzz95yv0uXLuHh4UFQUBAHDx5k2rRpODs7M2DAAP74xz/yzDPP4ODgcMv9CwsLAfD09Ky3rWvXrk0/kZ85f/48cXFx7NmzhytXrlhsMxgMVrdfp24J0IZi7tatG/Cvc4Ub/RYfH09OTg6XLl2qt09FRQWOjo53vX+Kiopwc3PjgQceaDDu/Px8ysrKLBKJhq6VM2fOYDKZCAgIuOWx6iaQnzt3DoCePXv+Ynz79+9n2bJlHD16lOvXr1tsu/n3HD16NDk5OcybN4+PPvqIRx55hCeffJLnnnvurr62NH/+fNLT0xvc9vN5JS+++CKzZ8+2+pi1tbXMnTuXnJwcIiIiLEa3RERERJrTHSUWDa0AZTKZaN26NdHR0bfcr+6muXPnzqSkpLBv3z7279/PwYMHiY6OZsmSJSxbtoyOHTveSVj1NJYM1NTUWPx97do1QkJCqKys5JVXXqF79+44ODhgMBhYuXIl+/fvb5aYmspkMhEZGcmZM2cIDAykd+/eODo6YmNjQ1paGpmZmfVGCX5LbrVamMFgYNGiRRYjDjeru1Zu19GjR4mMjKRjx45ERkbSoUMHWrRogcFg4N1337XoIxcXF5KTkzl06BB79+7l0KFDLFiwgCVLlhATE9PoPAprTJgwgRdeeMGibOHChQBMmTLFovzmkaw7VVtby3vvvcfWrVsJCQmxmPchIiIi0tyabS3XTp06UVBQQN++fW9rOdH77ruPIUOGMGTIEODGKj1Tpkzhk08+4U9/+lOD+9StrHP27Nl6206fPl2vrO7J+k8//VRvW1FRkcX8jn379vHDDz8wa9YsXnrpJYu68fHxv3g+TfHggw8CDcdcV1ZX58SJE+Tn5xMSElLvQ22bN2+2+Lup/dNUDz74IF999RVXrlyp91rS6dOncXBwME+QbkynTp34xz/+Qfv27enSpUujdetGPPLz8y1e7/q5zMxMampqWLRokbnvACorK+uNPgHY2toycOBA8+pNJ06cYNy4cSQmJhITEwPc2ShVY/t07dq13shRXT8OHjy4ycdqTF1SkZaWxsSJE5v0kT8RERGRO9FsH8jz9fWltraW2NjYBrfXvdoCUFZWVm97r169ACgvL7/lMeqWpM3JyeH77783l1dXV7NmzZp69etuSvft22dRnpmZyQ8//GBRZmtrC1BvzseePXss3s9vDr169aJ9+/akpaVx8eJFc7nRaGT16tUYDAbzBNu6J/o/j+vkyZNkZ2dblDW1f5pq2LBh1NbWsnLlSovy3bt3k5eXh5eX1y1HIG5WN7E5Li6u3sgRWF4r3t7e2Nvbs2zZMvNckpvV9cutfr+kpKR6IzoNXX+enp7cf//9Fklo3ZyNxq7Jn2vZsmWDieyvyWQyER0dTVpaGkFBQYSHh9/TeEREROT3odlGLIYPH46fnx/r16/n+PHjPPXUU7i4uFBaWsrhw4c5f/48qampAEyePBknJyf69+9Pu3btuHLlCmlpaRgMhl9cTeett95i0qRJTJw4kVGjRpmXU23oBtXT05NBgwaxadMmTCYTPXr0ID8/n+zsbDp16mQxcffRRx/F1dWVhQsXUlxcTNu2bcnPz2fbtm10796dkydPNldXYWtry4wZM5g+fTqvvvoq/v7+tGrVih07dnDkyBGCgoLMSVGXLl3o2rUrycnJVFVV4eHhQUFBAZs2baJ79+4cO3bsjvunqfz8/EhPT2fVqlUUFRUxYMAAzp07x4YNG3B1dbVY4akxDz/8MKGhoSxdupSxY8cyfPhw3NzcuHjxIseOHWP37t3s2bMHgHbt2jF16lTef/99AgMD8fX1xd3dndLSUnJycpg1axY9e/Zk2LBhrFmzhjfffBN/f3/s7e3Zu3cvJ0+erDeKEh0dTWlpKYMHD8bd3Z3r16+zY8cOrl69iq+vr7le3759Wb9+PfPmzWPIkCHY2dnRp08fixGRn+vbty+pqanEx8fTpUsXDAYDXl5e9Varaqri4mK2bt0K/Gv0aefOnZSUlACY+wVuLAe9ZcsWevToQZcuXdi2bZtFWx07drxrr3uJiIjI71ezftY6KiqKgQMH8tlnn7Fy5Uqqq6txdXWlV69eFjedAQEB7Nixg02bNlFeXo6zszM9e/ZkxowZ9T5k93P9+vUjLi6O2NhYVq1ahaOjo/kDcIGBgfXqz507l7/+9a9kZmaybds2+vfvT0JCAn/5y18oLi4213NyciI2NpZFixbx6aefUlNTQ69evYiJiSE1NbVZEwu4sQzq4sWLSUxMZPXq1VRXV+Pp6cnMmTMtPpBna2tLTEwMCxcuJD09ncrKSrp168bs2bPJz8+vl1g0tX+aws7OjtjYWPMH8rKysnBycsLb25uIiAjat29/222FhobSu3dv1q1bx9q1a6msrKRNmzZ069aNadOmWdQNCAigY8eOJCcns27dOqqrq3Fzc+Pxxx83fxfj0UcfZf78+SxfvpyEhARatGjBoEGDWLp0KSEhIRbt+fj4kJaWxtatW7l8+TIODg507dqV999/H29vb3O95557jry8PLZv387f//53amtriYqKajSxiIiIoLy8nJSUFK5cuYLJZGLLli1WJxaFhYUkJCRYlGVlZZGVlWU+/7rE4rvvvgNuvD42a9asem29+OKLSixERESk2RlMTVnvVUR+dwwf/HpL8oqIiPwWmaY167P4/1jNNsdCRERERER+v5RYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1bQor4g0askDSQQFBWFvb3+vQxEREZHfMI1YiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1Qwmk8l0r4MQkd8uwwfGex2CiIhIszJNs7vXIfxH0oiFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhY7TedWMyePZuBAwfeVt2ioiIGDhzIkiVL7nJUNzQlttDQUPz8/O5yRI1rav/k5eURHh7O008//av2q4iIiIj8e9LXQaQeo9HIjBkzMBqNhIWF4eTkxEMPPXSvw/rVZWdnk5eXx6RJk257nzVr1uDk5NSsiaTJZCIjI4Mvv/ySY8eO8cMPP+Di4kKPHj2YOHEiffr0saj//fffk5GRwZ49ezh//jz//Oc/6dixI97e3owdO5aWLVs2W2wiIiIidX7TIxYzZ85k9+7d9zqM353CwkIKCwt55ZVXGDNmDD4+Pr/bxGLZsmVN2mft2rWkpaU1axz//Oc/mTVrFt9//z3PPvss06dPx9/fn7y8PIKCgti2bZtF/S1btrBmzRo6duzI66+/zhtvvIGHhwfx8fEEBwdTVVXVrPGJiIiIQDOMWNTU1FBdXc3999/fHPFYsLOzw85Ogyq/th9//BEAZ2fnZm3XZDJRWVlJq1atmrXdf2ehoaEALF269JZ1bG1tWbJkCY899phFub+/P6NHj2bhwoU8//zz2NjceE7g7e1NUFAQjo6O5roBAQF06tSJpKQkUlNTGTNmzF04GxEREfk9a9Jde1paGnPmzCEuLo4jR46QlpbGhQsXmDlzJn5+fphMJjZu3MjmzZs5c+YMNjY29O7dm5CQkHrzEdLT01m/fj0FBQUYjUZcXV3p27cvU6dOpXXr1sCNeQzp6ekcOHDAYt9vvvmGRYsWkZeXh4ODA97e3owcOfKW8SYkJNQ7fmhoKMXFxRZPl/fs2UNqairfffcdFy9exN7enocffpjg4OB6N3XN4eDBgyxfvpyjR49iNBrx9PRk1KhRjBgxwqJebm4uGzZs4PDhw5SUlGBra0v37t0ZP348Tz/9dL12b7d/GhIaGsrBgwcBmDNnDnPmzAFuPAXv0KEDlZWVJCYmsmPHDkpLS3nggQcYPHgw4eHhuLu7m9s5cOAAYWFhREVFUVlZSUpKCufPn+e1114zv1q0fft2Pv30U06cOEFNTY35nIYPH14vrgMHDrB69Wpyc3OprKzEzc2Nxx57jDfeeAMXFxcAUlJSyM7O5vTp01y+fBlnZ2cGDRpEeHg4HTp0sGhv165dJCcnc+rUKaqqqnBxcaF3795ERkbi4eFh0Q83XztRUVG3fM2prl5xcbHFPnV9d6fs7OwavP5cXV0ZMGAAWVlZXLp0iT/84Q8A9O7du8F2nn32WZKSkjh16tQdxyIiIiJyK3c0HBATE4PRaMTf3x8HBwc8PDwAmDVrFn/729/w9vbGz8+P6upqMjIymDx5MvPnz2fo0KEAbN26ldmzZ9O/f3/CwsJo0aIFJSUl7N69m0uXLpkTi4bk5uYSERFBq1atmDBhAk5OTmzfvp2oqKg7ORULaWlplJeX4+PjQ7t27SgtLSU1NZWIiAgSEhLo37+/1ceos3PnTqZPn46rqyvjxo2jVatWbN++nejoaAoLC5k8ebK5bnZ2NmfPnmX48OG4u7tTXl5Oeno606dPJzo6mueff95c19r+CQ4O5pFHHmHFihX4+/ubz7l169YYjUYiIyP59ttv8fb2Zty4cRQUFLBx40b27t1LcnIy7dq1s2hv7dq1lJeXM2LECFxdXc3bFy9eTFJSEk8++SRhYWHY2NiQlZXFO++8w4wZMxg9erS5jY0bNzJv3jzatm3LyJEjcXd358KFC3z55ZeUlJSYE4uPP/6YPn36MGbMGJydnTl16hSbN29m//79rFu3zlzv66+/5u2336Zbt27mJ/sXL15k3759nDt3Dg8PD4KDgzGZTBw6dIi5c+eaY+nXr98t+27u3LksWLAAFxcXgoODzeWNXc/WKi0txd7eHicnp1+sW1JSAtxISERERESa2x0lFlVVVaxZs8bi9aesrCwyMjJ49913efnll83lgYGBBAUF8eGHH+Ll5YXBYCA7OxsHBwfi4+MtXnUKCwv7xWMvWLCA2tpaEhMTzQnNqFGjmDhx4p2cioWZM2fWm9g6cuRIRo8ezYoVK5otsaipqWH+/Pm0bNmSVatW4ebmBsDo0aOZNGkSq1atws/Pj86dOwMwceJEIiMjLdoIDAxk7NixJCYmWiQW1vbPE088gZ2dHStWrKBfv374+PiYt3322Wd8++23jB8/njfffNNcPnjwYKZMmUJsbCzvvfeeRXsXLlxgw4YNtGnTxlx2/PhxkpKSCAoKskigAgMDmTp1KnFxcfj6+uLg4EBJSQkffPABnp6eJCUlWdxAh4eHU1tba/573bp19X4/Ly8vIiIiSE1N5dVXXwUgJyeH2tpa4uLiLOJ6/fXXLfohMzOTQ4cOWfRBY3x8fIiPj6dNmza3vY81du3axdGjR/Hx8aFFixaN1q2pqSExMRFbW1uee+65ux6biIiI/P7c0eTtgICAenMqtm3bhoODA8OGDaOsrMz8r6KigqeeeoqioiIKCgoAcHR0pKqqil27dmEymW77uJcuXeLw4cMMHTrUfNMMYG9vz9ixY+/kVCzcfFN67do1ysrKsLW1pU+fPhw9etTq9uscO3aMCxcu8NJLL5mTCrhxHhMmTKC2tpacnJwG46qqqqKsrIyqqioef/xxzpw5Q0VFBXD3+ycrKwsbGxuCgoIsyocMGUKPHj3YuXOnxY0+gK+vr8XNO0BGRgYGgwFfX1+La6WsrAwvLy+uXr3KkSNHAPj888+prq4mJCSkwafydfMK4F/9VFtbS0VFBWVlZfTo0QNHR0dyc3PN9ermHnzxxRcYjUYreqRp6q6pm/8ZjUaMRmO98mvXrjXaVkFBAVFRUbRt25a33nrrF4/94YcfcvjwYcLCwvD09GymMxIRERH5lzsasah7kn6zs2fPcvXqVZ599tlb7nfp0iU8PDwICgri4MGDTJs2DWdnZwYMGMAf//hHnnnmGRwcHG65f2FhIUCDN0Zdu3Zt+on8zPnz54mLi2PPnj1cuXLFYpvBYLC6/TpFRUVAwzF369YN+Ne5wo1+i4+PJycnh0uXLtXbp6KiAkdHx7veP0VFRbi5ufHAAw80GHd+fj5lZWUWiURD18qZM2cwmUwEBATc8lh1E8jPnTsHQM+ePX8xvv3797Ns2TKOHj3K9evXLbbd/HuOHj2anJwc5s2bx0cffcQjjzzCk08+yXPPPXdXX1uaP38+6enpDW77+bySF198kdmzZzdYt7CwkPDwcAAWLVr0izHHx8ezfv16/P396yWFIiIiIs3ljhKLhlaAMplMtG7dmujo6FvuV3fT3LlzZ1JSUti3bx/79+/n4MGDREdHs2TJEpYtW0bHjh3vJKx6GksGampqLP6+du0aISEhVFZW8sorr9C9e3ccHBwwGAysXLmS/fv3N0tMTWUymYiMjOTMmTMEBgbSu3dvHB0dsbGxIS0tjczMzHqjBL8lt1otzGAwsGjRIosRh5vVXSu36+jRo0RGRtKxY0ciIyPp0KEDLVq0wGAw8O6771r0kYuLC8nJyRw6dIi9e/dy6NAhFixYwJIlS4iJiWl0HoU1JkyYwAsvvGBRtnDhQgCmTJliUX7zSNbNioqKCAsLo7KyksWLF9O9e/dGj7lkyRISExPx8/Pj3XffvePYRURERH5Js63l2qlTJwoKCujbt+9tLSd63333MWTIEIYMGQLceF98ypQpfPLJJ/zpT39qcJ+6lXXOnj1bb9vp06frldU9Wf/pp5/qbSsqKrKY37Fv3z5++OEHZs2axUsvvWRRNz4+/hfPpykefPBBoOGY68rq6pw4cYL8/HxCQkLqfaht8+bNFn83tX+a6sEHH+Srr77iypUr9V5LOn36NA4ODuYJ0o3p1KkT//jHP2jfvj1dunRptG7diEd+fr7F610/l5mZSU1NDYsWLTL3HUBlZWW90Se4sYTrwIEDzas3nThxgnHjxpGYmEhMTAxwZ6NUje3TtWvXeiNHdf04ePDgX2y7qKiISZMmUVFRweLFi+nVq1ej9esS9RdffJE///nPzTrqJiIiIvJzzfaBPF9fX2pra4mNjW1we92rLQBlZWX1ttfdJJWXl9/yGHVL0ubk5PD999+by6urq1mzZk29+nU3pfv27bMoz8zM5IcffrAos7W1Bag352PPnj0W7+c3h169etG+fXvS0tK4ePGiudxoNLJ69WoMBoN5Ba26J/o/j+vkyZNkZ2dblDW1f5pq2LBh1NbWsnLlSovy3bt3k5eXh5eX1y1HIG5WN7E5Li6u3sgRWF4r3t7e2Nvbs2zZMvNckpvV9cutfr+kpKR6IzoNXX+enp7cf//9Fklo3ZyNxq7Jn2vZsmWDiay1iouLCQsL48qVK8TGxvJf//VfjdZftmwZy5Ytw8fHh1mzZt3W7yIiIiJijWYbsRg+fDh+fn6sX7+e48eP89RTT+Hi4kJpaSmHDx/m/PnzpKamAjB58mScnJzo378/7dq148qVK6SlpWEwGH5xNZ233nqLSZMmMXHiREaNGmVeTrWhG1RPT08GDRrEpk2bMJlM9OjRg/z8fLKzs+nUqZPFxN1HH30UV1dXFi5cSHFxMW3btiU/P59t27bRvXt3Tp482Vxdha2tLTNmzGD69Om8+uqr+Pv706pVK3bs2MGRI0cICgoyJ0VdunSha9euJCcnU1VVhYeHBwUFBWzatInu3btz7NixO+6fpvLz8yM9PZ1Vq1ZRVFTEgAEDOHfuHBs2bMDV1dVihafGPPzww4SGhrJ06VLGjh3L8OHDcXNz4+LFixw7dozdu3ezZ88eANq1a8fUqVN5//33CQwMxNfXF3d3d0pLS8nJyWHWrFn07NmTYcOGsWbNGt588038/f2xt7dn7969nDx5st4oSnR0NKWlpQwePBh3d3euX7/Ojh07uHr1Kr6+vuZ6ffv2Zf369cybN48hQ4ZgZ2dHnz59LEZEfq5v376kpqYSHx9Ply5dMBgMeHl51VutqimuXr1KWFgYRUVFjBkzhu+//94icYQbIx51y8iuX7+eJUuW0L59ewYNGkRmZqZF3TZt2vDEE0/ccTwiIiIiDWnWz1pHRUUxcOBAPvvsM1auXEl1dTWurq706tXL4qYzICCAHTt2sGnTJsrLy3F2dqZnz57MmDGj3ofsfq5fv37ExcURGxvLqlWrcHR0NH8ALjAwsF79uXPn8te//pXMzEy2bdtG//79SUhI4C9/+QvFxcXmek5OTsTGxrJo0SI+/fRTampq6NWrFzExMaSmpjZrYgE3lkFdvHgxiYmJrF69murqajw9PZk5c6bFB/JsbW2JiYlh4cKFpKenU1lZSbdu3Zg9ezb5+fn1Eoum9k9T2NnZERsba/5AXlZWFk5OTnh7exMREUH79u1vu63Q0FB69+7NunXrWLt2LZWVlbRp04Zu3boxbdo0i7oBAQF07NiR5ORk1q1bR3V1NW5ubjz++OPm72I8+uijzJ8/n+XLl5OQkECLFi0YNGgQS5cuJSQkxKI9Hx8f0tLS2Lp1K5cvX8bBwYGuXbvy/vvv4+3tba733HPPkZeXx/bt2/n73/9ObW0tUVFRjSYWERERlJeXk5KSwpUrVzCZTGzZssWqxKK8vNw8Mf/TTz9tsE5CQoI5sfjuu++AG0v9NjQBfMCAAUosREREpNkZTE1Z71VEfncMH/x6S/KKiIj8GkzTmvXZuvxfevFaRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESsprW2RKRRSx5IIigoCHt7+3sdioiIiPyGacRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESsZjCZTKZ7HYSI/HYZPjDe6xBEROR3zDTN7l6HILdJIxYiIiIiImI1JRYiIiIiImI1JRYiIiIiImI1JRYiIiIiImI1JRYiIiIiImI1JRYiIiIiImK133RiMXv2bAYOHHhbdYuKihg4cCBLliy5y1Hd0JTYQkND8fPzu8sRNa6p/ZOXl0d4eDhPP/30r9qvIiIiIvLvSQsDSz1Go5EZM2ZgNBoJCwvDycmJhx566F6H9avLzs4mLy+PSZMm3fY+a9aswcnJqVkTSZPJREZGBl9++SXHjh3jhx9+wMXFhR49ejBx4kT69OlTb58VK1Zw/Phxjh8/TmFhIe7u7qSlpTVbTCIiIiI/95sesZg5cya7d+++12H87hQWFlJYWMgrr7zCmDFj8PHx+d0mFsuWLWvSPmvXrm32G/h//vOfzJo1i++//55nn32W6dOn4+/vT15eHkFBQWzbtq3ePnFxcRw4cIAHH3yQBx54oFnjEREREWmI1SMWNTU1VFdXc//99zdHPBbs7Oyws9Ogyq/txx9/BMDZ2blZ2zWZTFRWVtKqVatmbfffWWhoKABLly69ZR1bW1uWLFnCY489ZlHu7+/P6NGjWbhwIc8//zw2Nv96TrB582Y6duwIwOjRo6msrLwL0YuIiIj8S5Pu2tPS0pgzZw5xcXEcOXKEtLQ0Lly4wMyZM/Hz88NkMrFx40Y2b97MmTNnsLGxoXfv3oSEhNSbj5Cens769espKCjAaDTi6upK3759mTp1Kq1btwZuzGNIT0/nwIEDFvt+8803LFq0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6AP4+vrWe0KekZGBwWDA19fXIsaysjK8vLy4evUqR44cAeDzzz+nurqakJAQi6SioXOvSypqa2upqKigrKyMHj164OjoSG5urrle3e/zxRdfYDQa76gv7sS1a9fqna/RaMRoNNYr/6XRq6aoqanhz3/+M4WFhbzzzjvNPndGREREBDRi0ew8PT3rlXXp0gW4MUJxswcffBBbW9vbavfcuXP84Q9/+MV37c+cOcP169cbnKdQp6ysjPbt29/WcW9WVFSEm5sbDzzwQL1t3bp1Iz8/n7KyMotEonPnzg3GaDKZzK+LNaRuAvm5c+cA6Nmz5y/Gt3//fpYtW8bRo0e5fv26xbYrV66Y/3v06NHk5OQwb948PvroIx555BGefPJJnnvuubv62tL8+fNJT09vcNvPf68XX3yR2bNnW33M2tpa5s6dS05ODhERETz//PNWtykiIiLSECUW99DNr0U1p+7du/PWW2/dcvuv+c7/rc7RYDCwaNGieqMvdbp169ak4xw9epTIyEg6duxIZGQkHTp0oEWLFhgMBt59912LkRQXFxeSk5M5dOgQe/fu5dChQyxYsIAlS5YQExPT6DwKa0yYMIEXXnjBomzhwoXAjZGom7m5uVl9vNraWt577z22bt1KSEiIxbwPERERkeamxKKZnT17tl7ZmTNngBsjFHeqc+fO5OTk8OOPPzY6atGpUycuX77M448/fsub9jv14IMP8tVXX3HlypV6ryWdPn0aBwcH8wTpxnTq1Il//OMftG/f3jyacyt1Ix75+fl4eHjcsl5mZiY1NTUsWrTIop8rKystRivq2NraMnDgQPPqTSdOnGDcuHEkJiYSExMDcEffemhsn65du9K1a1eLsrp+HDx4cJOP1Zi6pCItLY2JEyc26VscIiIiIndCcyya2YYNG6ioqDD/XVFRwcaNG3FycuKxxx6743brnnQvWrSo3jwGk8lk/m9fX19+/PFHPvnkkwbbqXvF6E4MGzaM2tpaVq5caVG+e/du8vLy8PLyuq1kpm5ic1xcHDU1NY3G6O3tjb29PcuWLbPo1zp15173StnNfQGQlJRUr7/KysrqtePp6cn999/PTz/9ZC6rm7NRXl7+i+d08z43t3EvmEwmoqOjSUtLIygoiPDw8Hsaj4iIiPw+aMSimbm4uPDqq6+aJ2WnpaVx4cIFZs6cadWrT8OHD+eZZ55h69atnDt3Di8vL5ycnCgoKOCrr75i/fr1ALzyyivs3buXmJgY9u/fz+OPP46DgwMXLlxg//793HfffSxZsuSOYvDz8yM9PZ1Vq1ZRVFTEgAEDOHfuHBs2bMDV1dVihafGPPzww4SGhrJ06VLGjh3L8OHDcXNz4+LFixw7dozdu3ezZ88eANq1a8fUqVN5//33CQwMxNfXF3d3d0pLS8nJyWHWrFn07NmTYcOGsWbNGt588038/f2xt7dn7969nDx5st4oSnR0NKWlpQwePBh3d3euX7/Ojh07uHr1Kr6+vuZ6ffv2Zf369cybN48hQ4ZgZ2dHnz59Gh156tu3L6mpqcTHx9OlSxcMBgNeXl71VqtqquLiYrZu3Qpg/obJzp07KSkpATD3C0BMTAxbtmyhR48edOnShW3btlm01bFjx7v2upeIiIj8fimxaGb//d//zTfffENKSgqXLl2ic+fOREdHN8uk2f/9v/83/fv3JzU1lWXLlmFra0uHDh0sJv7a2dmxcOFCNmzYwLZt28xJhJubGw8//DAvvvjiHR/fzs6O2NhY8wfysrKycHJywtvbm4iIiCZNCA8NDaV3796sW7eOtWvXUllZSZs2bejWrRvTpk2zqBsQEEDHjh1JTk5m3bp1VFdX4+bmxuOPP27+Lsajjz7K/PnzWb58OQkJCbRo0YJBgwaxdOlSQkJCLNrz8fEhLS2NrVu3cvnyZRwcHOjatSvvv/8+3t7e5nrPPfcceXl5bN++nb///e/U1tYSFRXVaGIRERFBeXk5KSkpXLlyBZPJxJYtW6xOLAoLC0lISLAoy8rKIisry3z+dYnFd999B9x4fWzWrFn12nrxxReVWIiIiEizM5h+/u6I3JG6L28nJCRYfHVZ5N+d4YNfb0leERGROqZpev7970ZzLERERERExGpKLERERERExGpKLERERERExGqaYyEijdIcCxERuRc0x+Lfj0YsRERERETEakosRERERETEahpjEpFGLXkgiaCgIOzt7e91KCIiIvIbphELERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmsFkMpnudRAi8ttl+MB4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3ElJSQmAuV8A/vf//t9cvXqVfv360a5dO8rKyvjiiy84duwYQ4cOxdvb26pYRERERBrSrJ+1joqKYuDAgXz22WesXLmS6upqXF1d6dWrl8VNZ0BAADt27GDTpk2Ul5fj7OxMz549mTFjRr0P2f1cv379iIuLIzY2llWrVuHo6Gj+AFxgYGC9+nPnzuWvf/0rmZmZbNu2jf79+5OQkMBf/vIXiouLzfWcnJyIjY1l0aJFfPrpp9TU1NCrVy9iYmJITU1t1sQCbjw1Xrx4MYmJiaxevZrq6mo8PT2ZOXOmxQfybG1tiYmJYeHChaSnp1NZWUm3bt2YPXs2+fn59RKLpvZPU9jZ2REbG2v+QF5WVhZOTk54e3sTERFB+/btb7ut0NBQevfuzbp161i7di2VlZW0adOGbt26MW3aNIu6AQEBdOzYkeTkZNatW0d1dTVubm48/vjj5u9iPProo8yfP5/ly5eTkJBAixYtGDRoEEuXLiUkJMSiPR8fH9LS0ti6dSuXL1/GwcGBrl278v7771vcdD/33HPk5eWxfft2/v73v1NbW0tUVFSjiUVERATl5eWkpKRw5coVTCYTW7ZssTqxKCwsJCEhwaIsKyuLrKws8/nXJRZ//OMf2bZtG5999hnl5eXcd999dO3alT/96U+MHDnytkaVRERERJrKYGrKeq8i8rtj+ODXW5JXRET+85mmNetzbfkN0aNLERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhYSFpFGLXkgiaCgIOzt7e91KCIiIvIbphELERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmsFkMpnudRAi8ttl+MB4r0MQEZH/EKZpdvc6BLmLNGIhIiIiIiJWU2IhIiIiIiJWU2IhIiIiIiJWU2IhIiIiIiJWU2IhIiIiIiJWU2IhIiIiIiJWU2IhIiIiIiJW+00nFrNnz2bgwIG3VbeoqIiBAweyZMmSuxzVDU2JLTQ0FD8/v7scUeOa2j95eXmEh4fz9NNP/6r9KiIiIiL/nvSVEqnHaDQyY8YMjEYjYWFhODk5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+7Ft2zY0NzfD2NgYw4cPFzx0enp6Ijs7G/v27UN9fT0MDQ0xbNgwLF++XOVFdk8bOXIkoqOjERUVhe3bt8PAwED5Ajhvb2+V+mvWrME//vEPZGVl4fDhw7C3t0dsbCy++uorVFdXK+uJxWJERUUhMjISu3fvRktLC4YPH46IiAikpaVpNLEAHm+DumnTJiQkJGDHjh1obm6GhYUFVqxYIXhBnra2NiIiIhAeHo6MjAxIpVJYWVlh1apVKCsrU0ksOts/naGjo4OoqCjlC/JycnIgFovh7OyMoKAglfcmdMTf3x82NjZITk7Grl27IJVK0adPH1hZWWHp0qWCup6enhg4cCCSkpKQnJyM5uZmmJiYYNy4ccr3YowePRrr1q3Dli1bEBsbCz09PYwfPx6bN2+Gn5+foD1XV1ekp6fj0KFDuHfvHvT19WFpaYm1a9fC2dlZWW/KlCkoLS3FkSNH8O2336K1tRUhISEdJhZBQUGor69HSkoKGhoaIJfLcfDgQbUTi8rKSsTGxgrKcnJykJOTo7z/J19QGBYWhoSEBGRmZuLw4cPo27cvAgIC8OGHH6oVBxEREVF7RPLO7PdKRL87ovW/3pa8RET030G+VKO/XdNvhMbWWBARERER0e8XEwsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIbNxkmog7F9UqEj48PdHV1X3YoRERE9ArjiAUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREalNJJfL5S87CCJ6dYnWy152CERE9AqTL9V52SHQK4IjFkREREREpDYmFkREREREpDYmFkREREREpDYmFkREREREpDYmFkREREREpDYmFkREREREpDYmFkREREREpDYmFq+g06dPw8HBAenp6S8thtLSUgQGBmLy5MlwcHBAXFzcS4uFiIiIiF59fKMJqZDJZFi+fDlkMhkCAgIgFovx+uuvv+ywfnW5ubkoLS3FggULnvucnTt3QiwWw93dXaOxFBcXIzMzExcvXsTly5chlUoREhLS5nUuXLiAHTt2oKysDHfv3gUA9O/fHy4uLpg1axYMDAw0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oaOjg6ioKOUL8nJyciAWi+Hs7IygoKBOLQj39/eHjY0NkpOTsWvXLkilUvTp0wdWVlZYunSpoK6npycGDhyIpKQkJCcno7m5GSYmJhg3bpzyvRijR4/GunXrsGXLFsTGxkJPTw/jx4/H5s2b4efnJ2jP1dUV6enpOHToEO7duwd9fX1YWlpi7dq1cHZ2VtabMmUKSktLceTIEXz77bdobW1FSEhIh4lFUFAQ6uvrkZKSgoaGBsjlchw8eFDtxKKyshKxsbGCspycHOTk5CjvX5FYeHh44LvvvsOBAwcgkUigo6ODgQMHYt68eZg9e/ZzTVcjIiIi6iyR/Om5I9Qlijdvx8bGCt66TPRbJ1r/623JS0REvz3ypfydmh7jGgsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIb11gQUYe4xoKIiDrCNRakwBELIiIiIiJSGxMLIiIiIiJSG8euiKhDcb0S4ePjA11d3ZcdChEREb3COGJBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqE8nlcvnLDoKIXl2i9bKXHQIREf3K5Et1XnYI9BvEEQsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIbE4tX0OnTp+Hg4ID09PSXFkNpaSkCAwMxefJkODg4IC4u7qXFQkRERESvPm5STCpkMhmWL18OmUyGgIAAiMVivP766y87rF9dbm4uSktLsWDBguc+Z+fOnRCLxXB3d9doLMXFxcjMzMTFixdx+fJlSKVShISEtHmdqqoqvP/++222Y2lpiT179mg0NiIiIiKAicUracyYMcjPz4eOzsv5eCorK1FZWYnFixdj5syZLyWGV0Fubi4yMjI6lVjs2rULpqamGk8s8vPzkZKSAgsLC7z++us4f/78M8+ZPHkyJk+eLCgTi8UajYuIiIhIgYnFK+T+/fvQ19eHlpYW9PT0Xlocd+7cAQAYGhpqtF25XA6pVIqePXtqtN3fMn9/fwDA5s2bO6zn6emJuXPnokePHjh69OhzJRbW1tZwdXXVSJxEREREz8LEQkPS09OxevVqREdH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HBcjog7F9UqEj48PdHV1X3YoRERE9ArjiAUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREalNJJfL5S87CCJ6dYnWy152CEREv2vypTovOwSi58IRCyIiIiIiUhsTCyIiIiIiUhsTCyIiIiIiUhsTCyIiIiIiUhsTCyIiIiIiUhsTCyIiIiIiUtsrnVisWrUKDg4Oz1W3qqoKDg4OiIuLe8FRPdaZ2Pz9/eHu7v6CI+pYZ/untLQUgYGBmDx58q/ar0RERET028SNkUmFTCbD8uXLIZPJEBAQALFYjNdff/1lh/Wry83NRWlpKRYsWPDc5+zcuRNisVijiaRcLkdmZia+//57XLx4Ebdu3YKRkRGGDh2K+fPnw9bWtsPzm5qaMHPmTFRWVmLGjBn461//qrHYiIiIiBRe6RGLFStWID8//2WH8btTWVmJyspKfPDBB5g5cyZcXV1/t4lFfHx8p87ZtWsX0tPTNRrHo0ePsHLlSvz888945513sGzZMnh4eKC0tBQ+Pj44fPhwh+fHxsbi3r17Go2JiIiI6Glqj1i0tLSgubkZ3bt310Q8Ajo6OtDR4aDKr+3OnTsAAENDQ422K5fLIZVK0bNnT422+1vm7+8PANi8eXO7dbS1tREXF4exY8cKyj08PODl5YXw8HC8++670NJS/Z3g0qVL2LVrFz7++GOEh4drNHYiIiKiJ3XqqT09PR2rV69GdHQ0Lly4gPT0dNTU1GDFihVwd3eHXC7H3r17ceDAAVy/fh1aWlqwsbGBn5+fynqEjIwM7NmzB+Xl5ZDJZDA2NoadnR2WLFmC3r17A3i8jiEjIwOnT58WnPvjjz8iMjISpaWl0NfXh7OzM6ZPn95uvLGxsSrX9/f3R3V1teDX5ZMnTyItLQ0//fQTbt++DV1dXYwYMQK+vr4qD3WacPbsWWzZsgUlJSWQyWSwsLDAjBkzMG3aNEG94uJipKam4vz586itrYW2tjasra0xZ84cTJ48WaXd5+2ftvj7++Ps2bMAgNWrV2P16tUAgIMHD8LMzAxSqRQJCQnIzs5GXV0devXqBUdHRwQGBsLU1FTZzunTpxEQEICQkBBI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BRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqU0kl8vlLzsIInp1idbLXnYIRES/WfKlOi87BKJfDUcsiIiIiIhIbUwsiIiIiIhIbUwsiIiIiIhIbUwsiIiIiIhIbUwsiIiIiIhIbUwsiIiIiIhIbUwsXkGnT5+Gg4MD0tPTX1oMpaWlCAwMxOTJk+Hg4IC4uLiXFgsRERERvfq4uTKpkMlkWL58OWQyGQICAiAWi/H666+/7LB+dbm5uSgtLcWCBQue+5ydO3dCLBbD3d1do7EUFxcjMzMTFy9exOXLlyGVShESEtLmdVatWoWMjIx22xo0aBD279+v0fiIiIiImFi8gsaMGYP8/Hzo6Lycj6eyshKVlZVYvHgxZs6c+VJieBXk5uYiIyOjU4nFrl27YGpqqvHEIj8/HykpKbCwsMDrr7+O8+fPt1v3L3/5C8aPH69SXlhYiPT0dLz55psajY2IiIgIYGLxSrl//z709fWhpaUFPT29lxbHnTt3AACGhoYabVcul0MqlaJnz54abfe3zN/fHwCwefPmDut5enpi7ty56NGjB44ePdphYjFy5EiMHDlSpfzw4cMAgP/zf/6PGhETERERtY2JhYakp6dj9erViI6Oxo8//oj09HTcuXMH5ubm8PHxwZQpUwT13d3dYWpqis8++wxRUVG4cOECDA0NcfDgQZw+fRoBAQEqU13kcjkOHDiAAwcO4Nq1awAAMzMzTJ48GQEBAcp6jx49wtdff42srCzcvHkT3bp1g729PRYsWIDhw4d3eB/+/v44e/YsAGD16tVYvXo1AODgwYMwMzODVCpFQkICsrOzUVdXh169esHR0RGBgYEwNTVVtvPkPUilUqSkpODmzZv48MMPlSMAR44cwe7du3H58mW0tLTA2toac+bMgYuLi0pcp0+fxo4dO1BcXAypVAoTExOMHTsWn3zyCYyMjAAAKSkpyM3NxbVr13Dv3j0YGhpi/PjxCAwMhJmZmaC948ePIykpCVevXkVTUxOMjIxgY2OD4OBgmJubC/rBwcFBeV5704+erFddXS04R9F36jA2Nlbr/Orqapw6dQp2dnawsrJSqy0iIiKitjCx0LCN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KoiIiOitqLTEAnj18DA7Ozvs2bMHGzZswMuXL2FkZIQmTZpITjpdXV1x5MgR7N69GxkZGTAwMICNjQ2mTZum9CC717Vs2RIBAQHw9/fHxo0boaenJz4AbujQoUr1586di19//RWHDh3CwYMH0aZNG6xevRq//PILkpKSxHpyuRz+/v5Yvnw5tm/fjoKCAjRp0gR+fn4IDw+v1MQCeHUb1JUrV2L9+vXYtGkTXr58CQsLC8yYMUPygDx1dXX4+flh2bJl2L9/P3Jzc2FlZYXZs2fj9u3bSolFefunPDQ0NODv7y8+IC8qKgpyuRyOjo7w9vZG3bp1y9yWh4cHbG1tERoaim3btiE3Nxc1a9aElZUVpk6dKqnr6uqK+vXrIyQkBKGhoXj58iWMjY3Rvn178bkYrVu3xqJFi7Bu3TqsXr0a2tra6NChAwIDAzFu3DhJe87OzoiIiMCBAwfw9OlT6OrqomHDhli4cCEcHR3Fej179kRsbCwOHz6MY8eOobCwELNmzSo1sfD29kZGRgbCwsKQlZUFQRCwb98+lROLxMRErF69WlIWFRWFqKgocf+LPqCQiIiI6F2TCeW53ysRfXRki9/dLXmJiD4UwtRKvXZL9K9QaWssiIiIiIjo48XEgoiIiIiIVMbEgoiIiIiIVMbEgoiIiIiIVMbEgoiIiIiIVMbEgoiIiIiIVMZ7oRFRqdboB8HNzQ2amppVHQoRERG9xzhiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKpMJgiBUdRBE9P6SLc6v6hCIiP4VhKkaVR0CUZXiiAUREREREamMiQUREREREamMiQUREREREamMiQUREREREamMiQUREREREamMiQUREREREamMicV76Pz587Czs0NERESVxRAbGwsvLy907doVdnZ2WLNmTZXFQkRERETvP95wmZTk5+dj2rRpyM/Ph6enJ+RyORo1alTVYb1zJ06cQGxsLMaPH1/m92zduhVyuRx9+/at1FiuX7+OyMhI3Lx5E3fu3EFubi5mzZpV6nZSUlKwbt06nD59Gk+ePIG+vj5sbGzg4+ODhg0bVmp8REREREws3kNt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nrOzMyIiInDgwAE8ffoUurq6aNiwIRYuXAhHR0exXs+ePREbG4vDhw/j2LFjKCwsxKxZs0pNLLy9vZGRkYGwsDBkZWVBEATs27dP5QfYTZ48Gebm5ti7dy+Cg4Px4sUL1K5dG66urvDw8JDciYyIiIioMsiE1+eC0DuhePL26tWrJU9dJnrfyBbz1rRERCURpvIaLZEC11gQEREREZHKmFgQEREREZHKmFgQEREREZHKuMaCiErFNRZERCXjGgui/+GIBRERERERqYyJBRERERERqYzjd0RUqjX6QXBzc4OmpmZVh0JERETvMY5YEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRymSCIAhVHQQRvb9ki/OrOgQioveSMFWjqkMgeq9wxIKIiIiIiFTGxIKIiIiIiFTGxIKIiIiIiFTGxIKIiIiIiFTGxIKIiIiIiFTGxIKIiIiIiFTGxOI9dP78edjZ2SEiIqLKYoiNjYWXlxe6du0KOzs7rFmzpspiISIiIqL3H2/ATEry8/Mxbdo05Ofnw9PTE3K5HI0aNarqsN65EydOIDY2FuPHjy/ze7Zu3Qq5XI6+fftWaizXr19HZGQkbt68iTt37iA3NxezZs0qcTvp6enYuHEjTp48ieTkZOjp6cHS0hJDhw5Fly5dKjU2IiIiIoCJxXupbdu2OHXqFDQ0qubjSUxMRGJiInx8fDBkyJAqieF9cOLECezfv79cicW2bdtgYmJS6YnFqVOnEBYWBgsLCzRq1AhXr14tse7z58/h7u6OlJQU9O/fH40aNUJGRgb279+PqVOn4ocffoCrq2ulxkdERETExOI9kpOTA11dXaipqUFbW7vK4khLSwMAGBgYVGq7giAgNzcX1atXr9R2/808PDwAAIGBgaXWc3V1xahRo1CtWjUcPXq01MTixIkTuH//PqZMmYJhw4aJ5V988QWcnZ2xe/duJhZERERU6ZhYVJKIiAjMmTMHAQEBuHz5MiIiIpCWlgZzc3O4ubmhZ8+ekvp9+/aFiYkJvv32W/j7++PatWswMDDAvn37cP78eXh6eipNdREEAXv37sXevXsRFxcHADA1NUXX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TU2Fn58fvvjiC95z/i15/vw5/vjjDwCvpjPk5OTg6NGjAIB27dqhRo0aVRneB2XhwoX473//Cx8fH+Tk5ODatWviazY2NtDS0qrC6D483333HZo2bYpGjRpBW1sbt2/fxqZNm9CoUSPx2S1UOeRyOezs7Ip9rWnTpmjSpMk7jujDNnHiRNjZ2cHa2hoAcPLkSezZswdDhw79aNdXAIBMEAShqoMgovfLvXv38Ouvv+LKlSvQ1dWFi4sLvL29oampWdWhfZAePnxY4mLL1atXl3iyQOXXt29fJCUlFfvavn37eAvUSrZhwwYcPnwYiYmJKCwshImJCbp164YRI0ZwCto7cP78eXh6eiIkJAS2trZVHc4HZfHixTh9+jRSUlIgCALMzMzQv39/DBkyBDKZrKrDqzJMLIiIiIiISGW8DQYREREREamMiQUREREREamMiQUREREREamMiQUREREREamMiQUREREREamMiQUREREREamMiQUREREREamMiQUREREREamMiQURVarU1FQYGBhg7dq1kvIxY8bAwsKiaoL6QMyePRsymQzx8fHvZHsbNmxQ2l5ubi5MTU0xZ86ccrdX0rFBFaf4jE6cOFHVoVAVU/X7gcfS++XixYv45ptv0KtXL9jZ2b3VzyU+Ph6mpqaws7OT/Bs4cGC522JiQUSVasaMGTA2Noabm1uZ6icnJ2Pq1Klo3rw55HI59PX10ahRIwwdOhS7d++W1O3SpQv09PRKbEvxP9bz588X+/rTp09RrVo1yGQybNq0qcR2LCwsIJPJxH9aWlqwsLDAV199hYSEhDLt14eqWrVq+OGHH/Drr78iKSmpXO8t77FBH7fLly9j9uzZ7yyRpqoXHx+P2bNn4/Lly+90u+/jsZabm4tGjRrh+++/f2fblMvlOHToEA4dOoQdO3bAxsam3AkNEwsiqjQPHjxAUFAQvv76a2hoaLyx/j///INWrVohICAAHTt2hK+vL3755Rf06dMHt27dQnBwcKXGt2XLFuTl5cHS0hJBQUGl1q1fvz42bdqETZs2wc/PD/b29ggKCoK9vT0eP35cqXH924wdOxYymQxLly4t83vKe2xQ2YwcORK5ublwcHCo6lAq3eXLlzFnzpz36mSP3q74+HjMmTOnShKL9+1Y+/TTT+Ht7Y2uXbsW+/qLFy+wbNky9O7dG507d8bo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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAOsCAYAAADX7yC0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzde1hVZf7//+fmkCkgKEOKqeAh9WMe0kybxsg+WBZE30hS8qMWGgjIpOVh+vR1PMXnO+Y0fsRAUAMVGzXREkFhtAJMylOapxQ8hoJCppDoxtiwf3/4Y487kMSN6Uyvx3VxXe573ete73Xv5XWt977XfS+D2Ww2IyIiIiIiYgO7Ox2AiIiIiIj861NiISIiIiIiNlNiISIiIiIiNlNiISIiIiIiNlNiISIiIiIiNlNiISIiIiIiNlNiISIiIiIiNlNiISIiIiIiNlNiISIiIiIiNlNiISL1Wrx4MZWVlXc6DBEREbnLKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbGcxms/lOByEidy/De6Y7HYKIiIjcgHmyw50OwUIjFiIiIiIiYjMlFiIiIiIiYjMlFiIiIiIiYjMlFiIiIiIiYjMlFiIiIiIiYjMlFiIiIiIiYjMlFiIiIiIiYrO7OrGYOXMm/fr1u6m6RUVF9OvXj0WLFt3mqK5pSGxhYWEEBATc5ojq19D+ycvLIyIigieffPJX7VcRERER+dd097xRQ+4aJpOJqVOnYjKZCA8Px8XFhQceeOBOh/Wry87OJi8vj3Hjxt30PitXrsTFxaXRE8mDBw+SkZHB4cOHOXr0KEajkRkzZtR5nAMHDrBixQry8/O5cOECAK1bt2bw4MGMGDECZ2fnRo1NREREBO7yEYtp06aRm5t7p8P4zSksLKSwsJCXX36Z4cOH4+fn95tNLJYsWdKgfVatWkVaWlqjx5Kbm0tKSgrl5eW/+F189913VFRU8OyzzzJhwgRef/11HnzwQZKSkhg7diwVFRWNHp+IiIiIzSMWVVVVVFZWcu+99zZGPFYcHBxwcNCgyq/thx9+AMDV1bVR2zWbzRiNRpo1a9ao7f4rCwsLA2Dx4sX11gsKCmL06NE0bdqUTz/9lP3799+w7nPPPcdzzz1Xa/8OHTqwYMECvvjiC5566inbgxcRERG5ToPu2tPS0pg1axZxcXEcOHCAtLQ0zp07x7Rp0wgICMBsNrNu3TrWr1/PyZMnsbOzo3v37oSGhtaaj5Cens6aNWsoKCjAZDLh7u5Oz549mTRpEi1atACuzWNIT09n9+7dVvt+8803LFiwgLy8PJycnPD19WXo0KE3jDchIaHW8cPCwjh79qzVr8vbt28nNTWVb7/9lvPnz+Po6MiDDz7ImDFjePjhhxvSVTdlz549fPDBBxw6dAiTyYS3tzcvvfQSL7zwglW9gwcPsnbtWvbv309xcTH29vZ07tyZUaNG8eSTT9Zq92b7py5hYWHs2bMHgFmzZjFr1iwANmzYQJs2bTAajSQmJrJlyxZKSkpo3rw5AwYMICIiAk9PT0s7u3fvJjw8nBkzZmA0GklJSeHMmTO8+uqrlkeLNm/ezEcffcTRo0epqqqynNPgwYNrxbV7925WrFjBwYMHMRqNeHh48PDDD/P666/j5uYGQEpKCtnZ2Zw4cYKLFy/i6upK//79iYiIoE2bNlbtbdu2jeTkZI4fP05FRQVubm50796dqKgovLy8rPrh+mvnRo8fXV/v7NmzVvvU9J0t3N3dbdofsHw/P/74o81tiYiIiPzcLQ0HxMTEYDKZCAwMxMnJCS8vLwCmT5/OP/7xD3x9fQkICKCyspKMjAzGjx/P3LlzeeKJJwDYuHEjM2fOpE+fPoSHh9OkSROKi4vJzc3lwoULlsSiLgcPHiQyMpJmzZoxevRoXFxc2Lx5MzNmzLiVU7GSlpZGWVkZfn5+tGrVipKSElJTU4mMjCQhIYE+ffrYfIwaW7duZcqUKbi7uzNy5EiaNWvG5s2biY6OprCwkPHjx1vqZmdnc+rUKQYPHoynpydlZWWkp6czZcoUoqOjeeaZZyx1be2fMWPG0Lt3b5YuXUpgYKDlnFu0aIHJZCIqKop9+/bh6+vLyJEjKSgoYN26dezYsYPk5GRatWpl1d6qVasoKyvjhRdewN3d3bJ94cKFJCUl8dhjjxEeHo6dnR1ZWVm89dZbTJ06lWHDhlnaWLduHXPmzOG+++5j6NCheHp6cu7cOb744guKi4sticWHH35Ijx49GD58OK6urhw/fpz169eza9cuVq9eban39ddf8+abb9KpUydCQkJwdnbm/Pnz7Ny5k9OnT+Pl5cWYMWMwm83s3buX2bNnW2Lp1avXDftu9uzZzJs3Dzc3N8aMGWMpr+96vp0qKiosf4cPH+b999/H0dGRAQMG3JF4RERE5N/bLSUWFRUVrFy50urxp6ysLDIyMnj77bd58cUXLeXBwcGEhITwt7/9DR8fHwwGA9nZ2Tg5OREfH2/1qFN4ePgvHnvevHlUV1eTmJhoSWheeuklxo4deyunYmXatGk0bdrUqmzo0KEMGzaMpUuXNlpiUVVVxdy5c2natCnLly/Hw8MDgGHDhjFu3DiWL19OQEAA7du3B2Ds2LFERUVZtREcHMyIESNITEy0Sixs7Z9HH30UBwcHli5dSq9evfDz87Ns++STT9i3bx+jRo1iwoQJlvIBAwYwceJEYmNjeeedd6zaO3fuHGvXrqVly5aWsiNHjpCUlERISIhVAhUcHMykSZOIi4vD398fJycniouLee+99/D29iYpKQkXFxdL/YiICKqrqy2fV69eXev78/HxITIyktTUVF555RUAcnJyqK6uJi4uziqu1157zaofMjMz2bt3r1Uf1MfPz4/4+Hhatmx50/vcTgkJCXz44YeWzx07duR///d/adu27R2MSkRERP5d3dLk7aCgoFpzKjZt2oSTkxODBg2itLTU8ldeXs7jjz9OUVERBQUFADg7O1NRUcG2bdswm803fdwLFy6wf/9+nnjiCctNM4CjoyMjRoy4lVOxcv1N6ZUrVygtLcXe3p4ePXpw6NAhm9uvcfjwYc6dO8fzzz9vSSrg2nmMHj2a6upqcnJy6oyroqKC0tJSKioqeOSRRzh58iTl5eXA7e+frKws7OzsCAkJsSofOHAgXbp0YevWrVY3+gD+/v5WN+8AGRkZGAwG/P39ra6V0tJSfHx8uHz5MgcOHADg008/pbKyktDQUKukooad3T8v4Zp+qq6upry8nNLSUrp06YKzszMHDx601KtZFenzzz/HZDLZ0CMNU3NNXf9nMpkwmUy1yq9cuWLz8V588UXi4uKYM2cO//Vf/8U999xDaWmp7SciIiIiUodbGrGo+SX9eqdOneLy5cs8/fTTN9zvwoULeHl5ERISwp49e5g8eTKurq707duXP/zhDzz11FM4OTndcP/CwkIAvL29a23r2LFjw0/kZ86cOUNcXBzbt2/n0qVLVtsMBoPN7dcoKioC6o65U6dOwD/PFa71W3x8PDk5OZblQ69XXl6Os7Pzbe+foqIiPDw8aN68eZ1x5+fnU1paapVI1HWtnDx5ErPZTFBQ0A2PVTOB/PTp0wB07dr1F+PbtWsXS5Ys4dChQ1y9etVq2/Xf57Bhw8jJyWHOnDm8//779O7dm8cee4whQ4bc1seW5s6dS3p6ep3bfj6v5LnnnmPmzJk2Ha99+/aW/h88eDBfffUVf/zjHwGsRrlEREREGsMtJRZ1rQBlNptp0aIF0dHRN9yv5qa5ffv2pKSksHPnTnbt2sWePXuIjo5m0aJFLFmypNEe1agvGaiqqrL6fOXKFUJDQzEajbz88st07twZJycnDAYDy5YtY9euXY0SU0OZzWaioqI4efIkwcHBdO/eHWdnZ+zs7EhLSyMzM7PWKMHd5EarhRkMBhYsWGA14nC9mmvlZh06dIioqCjatm1LVFQUbdq0oUmTJhgMBt5++22rPnJzcyM5OZm9e/eyY8cO9u7dy7x581i0aBExMTH1zqOwxejRo3n22WetyubPnw/AxIkTrcqvH8lqLL///e9xd3dn7dq1SixERESk0TXaWq7t2rWjoKCAnj173tRyovfccw8DBw5k4MCBwLVVeiZOnMjf//53/vSnP9W5T83KOqdOnaq17cSJE7XKan5Zr2sVnKKiIqv5HTt37uT7779n+vTpPP/881Z14+Pjf/F8GuL+++8H6o65pqymztGjR8nPzyc0NLTWi9rWr19v9bmh/dNQ999/P1999RWXLl2q9VjSiRMncHJyskyQrk+7du348ssvad26NR06dKi3bs0v7vn5+VaPd/1cZmYmVVVVLFiwwNJ3AEajsdboE4C9vT39+vWzrN509OhRRo4cSWJiIjExMcCtjVLVt0/Hjh1rjRzV9OOvNaH66tWrWhVKREREbotGe0Gev78/1dXVxMbG1rm95tEWoM7nvLt16wZAWVnZDY9RsyRtTk4O3333naW8srKSlStX1qpfc1O6c+dOq/LMzEy+//57qzJ7e3uAWnM+tm/fbvV8fmPo1q0brVu3Ji0tjfPnz1vKTSYTK1aswGAwWFbQqvlF/+dxHTt2jOzsbKuyhvZPQw0aNIjq6mqWLVtmVZ6bm0teXh4+Pj43HIG4Xs3E5ri4uFojR2B9rfj6+uLo6MiSJUssc0muV9MvN/r+kpKSao3o1HX9eXt7c++991rddNfM2ajvmvy5pk2b3vEb9+uvqeulp6dTXl5Ojx49fuWIRERE5Leg0UYsBg8eTEBAAGvWrOHIkSM8/vjjuLm5UVJSwv79+zlz5gypqakAjB8/HhcXF/r06UOrVq24dOkSaWlpGAyGX1xN54033mDcuHGMHTuWl156ybKcal03qN7e3vTv35+PP/4Ys9lMly5dyM/PJzs7m3bt2llN3H3ooYdwd3dn/vz5nD17lvvuu4/8/Hw2bdpE586dOXbsWGN1Ffb29kydOpUpU6bwyiuvEBgYSLNmzdiyZQsHDhwgJCTEkhR16NCBjh07kpycTEVFBV5eXhQUFPDxxx/TuXNnDh8+fMv901ABAQGkp6ezfPlyioqK6Nu3L6dPn2bt2rW4u7tbrfBUnwcffJCwsDAWL17MiBEjGDx4MB4eHpw/f57Dhw+Tm5vL9u3bAWjVqhWTJk3i3XffJTg4GH9/fzw9PSkpKSEnJ4fp06fTtWtXBg0axMqVK5kwYQKBgYE4OjqyY8cOjh07VmsUJTo6mpKSEgYMGICnpydXr15ly5YtXL58GX9/f0u9nj17smbNGubMmcPAgQNxcHCgR48eViMiP9ezZ09SU1OJj4+nQ4cOGAwGfHx8aq1W1VBnz55l48aNwD9Hn7Zu3UpxcTGApV8AJkyYgKurK7169aJ169aUl5fzzTffkJOTQ6tWrSwv5RMRERFpTI36WusZM2bQr18/PvnkE5YtW0ZlZSXu7u5069bN6qYzKCiILVu28PHHH1NWVoarqytdu3Zl6tSptV5k93O9evUiLi6O2NhYli9fjrOzs+UFcMHBwbXqz549m7/+9a9kZmayadMm+vTpQ0JCAn/5y184e/aspZ6LiwuxsbEsWLCAjz76iKqqKrp160ZMTAypqamNmljAtWVQFy5cSGJiIitWrKCyshJvb2+mTZtm9YI8e3t7YmJimD9/Punp6RiNRjp16sTMmTPJz8+vlVg0tH8awsHBgdjYWMsL8rKysnBxccHX15fIyEhat259022FhYXRvXt3Vq9ezapVqzAajbRs2ZJOnToxefJkq7pBQUG0bduW5ORkVq9eTWVlJR4eHjzyyCOW92I89NBDzJ07lw8++ICEhASaNGlC//79Wbx4MaGhoVbt+fn5kZaWxsaNG7l48SJOTk507NiRd999F19fX0u9IUOGkJeXx+bNm/nss8+orq5mxowZ9SYWkZGRlJWVkZKSwqVLlzCbzWzYsMHmxKKwsJCEhASrsqysLLKysiznX5NYBAYG8vnnn7N+/XpKS0txcHCgbdu2vPLKK4wcOfKmHlcTERERaSiDuSHrvYrIb47hvV9vSV4RERFpGPPkRh0nsEmjzbEQEREREZHfLiUWIiIiIiJiMyUWIiIiIiJiMyUWIiIiIiJiMyUWIiIiIiJiMyUWIiIiIiJis7tnfSoRuSstap5ESEgIjo6OdzoUERERuYtpxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGxmMJvN5jsdhIjcvQzvme50CCIiIv/SzJMd7nQIvwqNWIiIiIiIiM2UWIiIiIiIiM2UWIiIiIiIiM2UWIiIiIiIiM2UWIiIiIiIiM2UWIiIiIiIiM2UWIiIiIiIiM3u6sRi5syZ9OvX76bqFhUV0a9fPxYtWnSbo7qmIbGFhYUREBBwmyOqX0P7Jy8vj4iICJ588slftV9FRERE5F/Tb+NtHdIgJpOJqVOnYjKZCA8Px8XFhQceeOBOh/Wry87OJi8vj3Hjxt30PitXrsTFxaXRE8mDBw+SkZHB4cOHOXr0KEajkRkzZtR5nCNHjpCZmcmuXbsoKioCoF27dgQEBBAYGIiDg/7bi4iISOO7q0cspk2bRm5u7p0O4zensLCQwsJCXn75ZYYPH46fn99vNrFYsmRJg/ZZtWoVaWlpjR5Lbm4uKSkplJeX/+J3sXz5ctLS0ujWrRvjx48nPDwcV1dX3n33XSZOnIjZbG70+ERERERs/umyqqqKyspK7r333saIx4qDg4N+Xb0DfvjhBwBcXV0btV2z2YzRaKRZs2aN2u6/srCwMAAWL15cb72goCBGjx5N06ZN+fTTT9m/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xYs4OTnRsWNH3n33XXx9fS31hgwZQl5eHps3b+azzz6jurqaGTNm1JtYREZGUlZWRkpKCpcuXcJsNrNhwwabEouysjLLxPyPPvqozjoJCQmWxOLbb78Fri31W9cE8L59+yqxEBERkUZnMDdkvVcR+c0xvPfrLckrIiJyNzFPbtTf4P/t6cFrERERERGxmRILERERERGxmRILERERERGxmRILERERERGxmRILERERERGxmRILERERERGxmdbQEpF6LWqeREhICI6Ojnc6FBEREbmLacRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERsZjCbzeY7HYSI3L0M75nudAgiIiI3zTzZ4U6H8JulEQsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEou70O7du+nXrx9paWl3LIa8vDwiIiJ48skn6devH4sWLbpjsYiIiIjI3U8L/UotJpOJqVOnYjKZCA8Px8XFhQceeOBOh/Wry87OJi8vj3Hjxt30PitXrsTFxYWAgIBGjeXgwYNkZGRw+PBhjh49itFoZMaMGXUe58iRI2RmZrJr1y6KiooAaNeuHQEBAQQGBuLgoP/2IiIi0vh0h3EX6tu3L7m5uXfsBrCwsJDCwkImTpzI8OHD70gMd4Ps7GzS09MblFisWrUKT0/PRk8scnNzSUlJwdvbmwceeID9+/ffsO7y5cvZuXMngwYNIjAwkKqqKrZt28a7775LTk4O77//PgaDoVHjExEREVFicRe5fPkyTk5O2NnZ0aRJkzsWxw8//ACAq6tro7ZrNpsxGo00a9asUdv9VxYWFgbA4sWL660XFBTE6NGjadq0KZ9++mm9icXw4cOZOXOm1TU0fPhw/vznP5ORkcG2bdt4/PHHG+cERERERP5/SiwaSVpaGrNmzSIuLo5vvvmGtLQ0fvjhB7y8vAgJCWHIkCFW9QMCAvD09OTNN98kNjaWAwcO4OrqyoYNG9i9ezfh4eG1HnUxm82sX7+e9evXc+LECQDatGnDk08+SXh4uKXeTz/9xIcffkhmZiZnzpzhnnvuoU+f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RERERERspofQRKRei5onERISgqOj450ORURERO5iGrEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbGcxms/lOByEidy/De6Y7HYKIiMgvMk92uNMh/OZpxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGx2VycWM2fOpF+/fjdVt6ioiH79+rFo0aLbHNU1DYktLCyMgICA2xxR/RraP3l5eURERPDkk0/+qv0qIiIiIv+a9CYRqcVkMjF16lRMJhPh4eG4uLjwwAMP3OmwfnXZ2dnk5eUxbty4m95n5cqVuLi4NGoiaTabycjI4IsvvuDw4cN8//33uLm50aVLF8aOHUuPHj1q7bN06VKOHDnCkSNHKCwsxNPTk7S0tEaLSUREROTn7uoRi2nTppGbm3unw/jNKSwspLCwkJdffpnhw4fj5+f3m00slixZ0qB9Vq1a1eg38D/99BPTp0/nu+++4+mnn2bKlCkEBgaSl5dHSEgImzZtqrVPXFwcu3fv5v7776d58+aNGo+IiIhIXWwesaiqqqKyspJ77723MeKx4uDggIODBlV+bT/88AMArq6ujdqu2WzGaDTSrFmzRm33X1lYWBgAixcvvmEde3t7Fi1axMMPP2xVHhgYyLBhw5g/fz7PPPMMdnb//J1g/fr1tG3bFoBhw4ZhNBpvQ/QiIiIi/9Sgu/a0tDRmzZpFXFwcBw4cIC0tjXPnzjFt2jQCAgIwm82sW7eO9evXc/LkSezs7OjevTuhoaG15iOkp6ezZs0aCgoKMJlMuLu707NnTyZNmkSLFi2Aa/MY0tPT2b17t9W+33zzDQsWLCAvLw8nJyd8fX0ZOnToDeNNSEiodfywsDDOnj1r9evy9u3bSU1N5dtvv+X8+fM4Ojry4IMPMmbMmFo3dY1hz549fPDBBxw6dAiTyYS3tzcvvfQSL7zwglW9gwcPsnbtWvbv309xcTH29vZ07tyZUaNG8eSTT9Zq92b7py5hYWHs2bMHgFmzZjFr1iwANmzYQJs2bTAajSQmJrJlyxZKSkpo3rw5AwYMICIiAk9P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s2fPWu1T03e2cHd3v+m6u3fvpn379pakokZAQABxcXGkpaUpsRAREZFGd0vDATExMZhMJgIDA3FycsLLywuA6dOn849//ANfX18CAgKorKwkIyOD8ePHM3fuXJ544gkANm7cyMyZM+nTpw/h4eE0adKE4uJicnNzuXDhgiWxqMvBgweJjIykWbNmjB49GhcXFzZv3syMGTNu5VSspKWlUVZWhp+fH61ataKkpITU1FQiIyNJSEigT58+Nh+jxtatW5kyZQru7u6MHDmSZs2asXnzZqKjoyksLGT8+PGWutnZ2Zw6dYrBgwfj6elJWVkZ6enpTJkyhejoaJ555hlLXVv7Z8yYMfTu3ZulS5cSGBhoOecWLVpgMpmIiopi3759+Pr6MnLkSAoKCli3bh07duwgOTmZVq1aWbW3atUqysrKeOGFF3B3d7dsX7hwIUlJSTz22GOEh4djZ2dHVlYWb731FlOnTmXYsGGWNtatW8ecOXO47777GDp0KJ6enpw7d44vvviC4uJiS2Lx4Ycf0qNHD4YPH46rqyvHjx9n/fr17Nq1i9WrV1vqff3117z55pt06tSJkJAQnJ2dOX/+PDt37uT06dN4eXkxZswYzGYze/fuZfbs2ZZYevXqdcO+mz17NvPmzcPNzY0xY8ZYyuu7nm+HG40g1pQdOnQIs9mMwWD4VeMSERGRf2+3lFhUVFSwcuVKq5uXrKwsMjIyePvtt3nxxRct5cHBwYSEhPC3v/0NHx8fDAYD2dnZODk5ER8fb/WoU3h4+C8ee968eVRXV5OYmGhJaF566SXGjh17K6diZdq0aTRt2tSqbOjQoQwbNoylS5c2WmJRVVXF3Llzadq0KcuXL8fDwwOAYcOGMW7cOJYvX05AQADt27cHYOzYsURFRVm1ERwczIgRI0hMTLRKLGztn0cffRQHBweWLl1Kr169rH7Z/uSTT9i3bx+jRo1iwoQJlvIBAwYwceJEYmNjeeedd6zaO3fuHGvXrqVly5aWsiNHjpCUlERISIhVAhUcHMykSZOIi4vD398fJycniouLee+99/D29iYpKQkXFxdL/YiICKqrqy2fV69eXev78/HxITIyktTUVF555RUAcnJyqK6uJi4uziqu1157zaofMjMz2bt3703/uu/n50d8fDwtW7a8oyMCHTt25OTJk5w/f57f/e53lvKakb8r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5sxh4MCBODg40KNHj3pHnnr27Elqairx8fF06NABg8GAj49PrdWqGurs2bNs3LgRwPIOk61bt1JcXAxg6ReACRMm4OrqSq9evWjdujXl5eV888035OTk0KpVK8tL+UREREQakxKLRvbHP/6Rb775hpSUFC5cuED79u2Jjo5ulGfa/+d//oc+ffqQmprKkiVLsLe3p02bNlYTfx0cHJg/fz5r165l06ZNliTCw8ODBx98sNYbmRvCwcGB2NhYywvysrKycHFxwdfXl8jIyAZNCA8LC6N79+6sXr2aVatWYTQaadmyJZ06dWLy5MlWdYOCgmjbti3JycmsXr2ayspKPDw8eOSRRyzvxXjooYeYO3cuH3zwAQkJCTRp0oT+/fuzePFiQkNDrdrz8/MjLS2NjRs3cvHiRZycnOjYsSPvvvsuvr6+lnpDhgwhLy+PzZs389lnn1FdXc2MGTPqTSwiIyMpKysjJSWFS5cuYTab2bBhg82JRWFhIQkJCVZlWVlZZGVlWc6/JrEIDAzk888/Z/369ZSWluLg4EDbtm155ZVXGDly5E09riYiIiLSUAbzz58dkVtS8+bthIQEq7cui/yrM7z36y3JKyIivw3myfpt+9+R5liIiIiIiIjNlFiIiIiIiIjNlFiIiIiIiIjNNMdCROqlORYiItLYNMfi35NGLERERERExGZKLERERERExGYahxKRei1qnkRISAiOjo53OhQRERG5i2nEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbGYwm83mOx2EiNy9DO+Z7nQIIiLyb8A82eFOhyC3mUYsRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZnd1YjFz5kz69et3U3WLioro168fixYtus1RXdOQ2MLCwggICLjNEdWvof2Tl5dHREQETz755K/aryIiIiLyr0kLCkstJpOJqVOnYjKZCA8Px8XFhQceeOBOh/Wry87OJi8vj3Hjxt30PitXrsTFxaXRE8mDBw+SkZHB4cOHOXr0KEajkRkzZtR7nOLiYj744AO+/PJLLly4QPPmzenatSsTJ06kY8eOjRqfiIiIyF2dWEybNo3//u//vtNh/OYUFhZSWFjIxIkTGT58+J0O547Jzs4mPT29QYnFqlWr8PT0bPTEIjc3l5SUFLy9vXnggQfYv39/vfWPHDnC+PHjadasGc8//zytW7fmxx9/5Ntvv+XixYuNGpuIiIgINEJiUVVVRWVlJffee29jxGPFwcEBB4e7Ovf5t/TDDz8A4Orq2qjtms1mjEYjzZo1a9R2/5WFhYUBsHjx4nrrBQUFMXr0aJo2bcqnn35ab2Jx9epV/vu//5tWrVqxePFinJ2dGzVmERERkbo06K49LS2NWbNmERcXx4EDB0hLS+PcuXNMmzaNgIAAzGYz69atY/369Zw8eRI7Ozu6d+9OaGhorfkI6enprFmzhoKCAkwmE+7u7vTs2ZNJkybRokUL4No8hvT0dHbv3m217zfffMOCBQvIy8vDyckJX19fhg4desN4ExISah0/LCyMs2fPkpaWZinbvn07qampfPvtt5w/fx5HR0cefPBBxowZw8MPP9yQrrope/bs4YMPPuDQoUOYTCa8vb156aWXeOGFF6zqHTx4kLVr17J//36Ki4uxt7enc+fOjBo1iieffLJWuzfbP3UJCwtjz549AMyaNYtZs2YBsGHDBtq0aYPRaCQxMZEtW7ZQUlJC8+bNGTBgABEREXh6elra2b17N+Hh4cyYMQOj0UhKSgpnzpzh1VdftYwAbN68mY8++oijR49SVVVlOafBgwfXimv37t2sWLGCgwcPYjQa8fDw4OGHH+b111/Hzc0NgJSUFLKzszlx4gQXL17E1dWV/v37ExERQZs2baza27ZtG8nJyRw/fpyKigrc3Nzo3r07UVFReHl5WfXD9ddOfY8f1dQ7e/as1T41fWcLd3f3m667ZcsWTp8+zbx583B2duann34C4J577rEpBhEREZH63NJwQExMDCaTicDAQJycnPDy8gJg+vTp/OMf/8DX15eAgAAqKyvJyMhg/PjxzJ07lyeeeAKAjRs3MnPmTPr06UN4eDhNmjShuLiY3NxcLly4YEks6nLw4EEiIyNp1qwZo0ePxsXFhc2bNzNjxoxbORUraWlplJWV4efnR6tWrSgpKSE1NZXIyEgSEhLo06ePzceosXXrVqZMmYK7uzsjR46kWbNmbN68mejoaAoLCxk/frylbnZ2NqdO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XPdjx45l1apVhIaG8sILL/Djjz+yYcMG6tevb/HalYiIiEhdqNPPWs+aNYvevXuzdetWVq9eTXl5OW5ubnTq1MnspjMwMJA9e/awZcsWiouLcXFxoWPHjkyfPt3iQ3Y/1717d6Kjo4mKimLNmjU4OTmZPgAXFBRkUX/u3Ln8/e9/Z9euXezcuZOePXsSGxvL3/72N/Lz8031nJ2diYqKYsmSJWzYsIGKigo6derE4sWLSU5OrtPEAu4sg7p06VLi4uJYu3Yt5eXleHl5MWPGDLMP5NnZ2bF48WIWLVpEamoqpaWltGvXjtmzZ5OdnW2RWNS2f2rD3t6eqKgo0wfy0tPTcXZ2xsfHh4iICJo3b37fbYWGhtK5c2cSExNZv349paWlNGnShHbt2jF16lSzuoGBgbRs2ZKEhAQSExMpLy/H3d2dPn36mL6L8eSTT7JgwQJWrlxJbGws9erVo2/fvixfvpzx48ebtefr60tKSgo7duzg+vXrODo60rZtW9577z18fHxM9YYMGUJWVha7d+/m008/pbKyklmzZtWYWERERFBcXExSUhI3btzAaDSyfft2qxOL3NxcYmNjzcrS09NJT083nf/dHyicOHEiHh4eJCUlsWTJEurVq0fv3r0JCwur9fwVERERkfthY6zNeq8i8rtj8/6vtySviIj832WcWqfPs+U3qM7mWIiIiIiIyO+XEgsREREREbGaEgsREREREbGaEgsREREREbGaEgsREREREbGaEgsREREREbGaEgsREREREbGaFhQWkRotaxRPcHAwDg4OjzoUERER+Q3TiIWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFjNxmg0Gh91ECLy22XzvuFRhyAiIv9mjFPtH3UI8ghoxEJERERERKymxEJERERERKymxEJERERERKymxEJERERERKymxEJERERERKymxEJERERERKymxEJERERERKz2m04sZs+eTe/eve+rbl5eHr1792bZsmUPOao7ahNbaGgo/v7+DzmimtW2f7KysggPD2fQoEG/ar+KiIiIyL8nfb1ELBgMBqZPn47BYCAsLAxnZ2eeeOKJRx3Wry4jI4OsrCwmTJhw3/usW7cOZ2fnOk8kT506RVpaGmfOnOHs2bOUlpYya9asex7np59+Ij4+np07d/L999/TtGlT/P39ef3117G31//2IiIiUvd+0yMWM2bMYP/+/Y86jN+d3NxccnNzefXVVxk5ciS+vr6/28RixYoVtdpn/fr1pKSk1Hks+/fvJykpiZKSkvv6Lf7nf/6HlStX0rt3b95++22eeuopYmNjmTdvXp3HJiIiIgJ1MGJRUVFBeXk59evXr4t4zNjb2+vp6iPwww8/AODi4lKn7RqNRkpLS2nYsGGdtvvvLDQ0FIDly5fXWC8wMJCxY8fSoEEDPvnkE06cOHHPuvv27SMzM5P//u//5s033wRg6NChODs789FHHxEQEECPHj3q7iREREREqGVikZKSwpw5c4iOjubkyZOkpKRQUFDAjBkz8Pf3x2g0snnzZrZt28aFCxewtbWlc+fOjB8/3mI+QmpqKhs3biQnJweDwYCbmxvdunVjypQpNG7cGLgzjyE1NZUjR46Y7fvVV1+xZMkSsrKycHR0xMfHh2HDht0z3tjYWIvjh4aGkp+fb/Z0+cCBAyQnJ/P1119z9epVHBwc6NKlCyEhITz11FO16ar7cvToUVauXMnp06cxGAx4eXkxfPhwhg4dalbv1KlTbNq0iRMnTnDlyhXs7Oxo3749Y8aMYdCgQRbt3m//VCc0NJSjR48CMGfOHObMmQPA9u3badGiBaWlpcTFxbFnzx4KCwtp1KgR/fr1Izw8HA8PD1M7R44cISwsjFmzZlFaWkpSUhKXL1/m9ddfN71atHv3bjZs2MDZs2epqKgwndPgwYMt4jpy5Ahr167l1KlTlJaW4u7uzlNPPcWf//xnXF1dAUhKSiIjI4Pz589z/fp1XFxc6Nu3L+Hh4bRo0cKsvX379pGQkMC3335LWVkZrq6udO7cmcjISDw9Pc364e5rp6bXj6rq5efnm+1T1XfWcHNzu++6H3/8MQCvvvqqWfmrr77KRx99RFpamhILERERqXMPNBywePFiDAYDAQEBODo64unpCcDMmTP5+OOP8fHxwd/fn/LyctLS0pg4cSILFixgwIABAOzYsYPZs2fTs2dPwsLCqFevHleuXGH//v1cu3bNlFhU59SpU0RERNCwYUPGjh2Ls7Mzu3fvZtasWQ9yKmZSUlIoLi7G19eXZs2aUVhYSHJyMhEREcTGxtKzZ0+rj1Fl7969TJs2DTc3N0aPHk3Dhg3ZvXs38+bNIzc3l4kTJ5rqZmRkcPHiRQYPHoyHhwfFxcWkpqYybdo05s2bx4svvmiqa23/hISE0KNHD1atWkVAQIDpnBs3bozBYCAyMpLjx4/j4+PD6NGjycnJYfPmzRw8eJCEhASaNWtm1t769espLi5m6NChuLm5mbYvXbqU+Ph4nnnmGcLCwrC1tSU9PZ133nmH6dOnM2LECFMbmzdvZv78+TRt2pRhw4bh4eFBQUEBn3/+OVeuXDElFh9++CFdu3Zl5MiRuLi48O2337Jt2zYOHz5MYmKiqd6XX37JW2+9Rbt27QgODsbJyYmrV69y6NAhLl26hKenJyEhIRiNRo4dO8bcuXNNsXTv3v2efTd37lwWLlyIq6srISEhpvKarueH4fTp0zRt2pTmzZublTdv3hx3d3e+/vrrXzUeERER+X14oMSirKyMdevWmb3+lJ6eTlpaGu+++y5//OMfTeVBQUEEBwfzj3/8A29vb2xsbMjIyMDR0ZGYmBizV53CwsJ+8dgLFy6ksrKSuLg4U0IzfPhwxo0b9yCnYmbGjBk0aNDArGzYsGGMGDGCVatW1VliUVFRwYIFC2jQoAFr1qzB3d0dgBEjRjBhwgTWrFmDv78/rVu3BmDcuHFERkaatREUFMSoUaOIi4szSyys7Z+nn34ae3t7Vq1aRffu3fH19TVt27p1K8ePH2fMmDFMmjTJVN6vXz8mT55MVFQUf/nLX8zaKygoYNOmTTRp0sRU9s033xAfH09wcLBZAhUUFMSUKVOIjo7Gz88PR0dHrly5wvvvv4+Xlxfx8fE4Ozub6oeHh1NZWWn6OzEx0eL38/b2JiIiguTkZF577TUAMjMzqaysJDo62iyuN954w6wfdu3axbFjx8z6oCa+vr7ExMTQpEmT+97nYbh69Spt2rSpdpu7uzuFhYW/ckQiIiLye/BAk7cDAwMt5lTs3LkTR0dHBg4cSFFRkelfSUkJzz33HHl5eeTk5ADg5OREWVkZ+/btw2g03vdxr127xokTJxgwYIDpphnAwcGBUaNGPcipmLn7pvTWrVsUFRVhZ2dH165dOX36tNXtVzlz5gwFBQW88sorpqQC7pzH2LFjqaysJDMzs9q4ysrKKCoqoqysjD59+nDhwgVKSkqAh98/6enp2NraEhwcbFbev39/OnTowN69e81u9AH8/PzMbt4B0tLSsLGxwc/Pz+xaKSoqwtvbm5s3b3Ly5EkAPvnkE8rLyxk/frxZUlHF1vZfl3BVP1VWVlJSUkJRUREdOnTAycmJU6dOmeo5OTkB8Nlnn2EwGKzokdqpuqbu/mcwGDAYDBblt27deuDjlJWV8dhjj1W7rV69epSVlT1w2yIiIiL38kAjFlVP0u928eJFbt68yQsvvHDP/a5du4anpyfBwcEcPXqUqVOn4uLiQq9evXj22Wd5/vnncXR0vOf+ubm5AHh5eVlsa9u2be1P5GcuX75MdHQ0Bw4c4MaNG2bbbGxsrG6/Sl5eHlB9zO3atQP+da5wp99iYmLIzMzk2rVrFvuUlJTg5OT00PsnLy8Pd3d3GjVqVG3c2dnZFBUVmSUS1V0rFy5cwGg0EhgYeM9jVU0gv3TpEgAdO3b8xfgOHz7MihUrOH36NLdv3zbbdvfvOWLECDIzM5k/fz4ffPABPXr04JlnnmHIkCEP9bWlBQsWkJqaWu22n88refnll5k9e/YDHad+/fr89NNP1W67ffv2Q1loQUREROSBEovqbkyMRiONGzeucTnLqpvm1q1bk5SUxKFDhzh8+DBHjx5l3rx5LFu2jBUrVtCyZcsHCctCTclARUWF2d+3bt1i/PjxlJaW8uqrr9K+fXscHR2xsbFh9erVHD58uE5iqi2j0UhkZCQXLlwgKCiIzp074+TkhK2tLSkpKezatctilOC35F43sTY2NixZssRsxOFuVdfK/Tp9+jSRkZG0bNmSyMhIWrRoQb169bCxseHdd9816yNXV1cSEhI4duwYBw8e5NixYyxcuJBly5axePHiGudRWGPs2LG89NJLZmWLFi0CYPLkyWbld49k1dYf/vAHvv/++2q3VX3TQkRERKSu1dlarq1atSInJ4du3brd13Kijz32GP3796d///7AnVV6Jk+ezEcffcTbb79d7T5VK+tcvHjRYtv58+ctyqqerP/4448W2/Ly8szmdxw6dIjvv/+emTNn8sorr5jVjYmJ+cXzqY3HH38cqD7mqrKqOmfPniU7O5vx48dbfKht27ZtZn/Xtn9q6/HHH+eLL77gxo0bFq8lnT9/HkdHR9ME6Zq0atWKf/7znzRv3vyecwGqVI14ZGdnm73e9XO7du2ioqKCJUuWmPoOoLS01GL0CcDOzo7evXubVm86e/Yso0ePJi4ujsWLFwMPNkpV0z5t27a1GDmq6sd+/frV+lj30qVLF9LS0igoKDCbwF1QUMD333+Pt7d3nR1LREREpEqdfSDPz8+PyspKoqKiqt1e9WoLQFFRkcX2Tp06AVBcXHzPY1QtSZuZmcl3331nKi8vL2fdunUW9atuSg8dOmRWvmvXLosnunZ2dgAWcz4OHDhg9n5+XejUqRPNmzcnJSWFq1evmsoNBgNr167FxsbGtIJW1RP9n8d17tw5MjIyzMpq2z+1NXDgQCorK1m9erVZ+f79+8nKysLb2/ueIxB3q5rYHB0dbTFyBObXio+PDw4ODqxYscI0l+RuVf1yr98vPj7eYkSnuuvPy8uL+vXrmyWhVXM2aromf65BgwbVJrK/piFDhgB3VuS6W9XfPx81EREREakLdTZiMXjwYPz9/dm4cSPffPMNzz33HK6urhQWFnLixAkuX75McnIyABMnTsTZ2ZmePXvSrFkzbty4QUpKCjY2Nr+4ms6bb77JhAkTGDduHMOHDzctp1rdDaqXlxd9+/Zly5YtGI1GOnToQHZ2NhkZGbRq1cps4u6TTz6Jm5sbixYtIj8/n6ZNm5Kdnc3OnTtp3749586dq6uuws7OjunTpzNt2jRee+01AgICaNiwIXv27OHkyZMEBwebkqI2bdrQtm1bEhISKCsrw9PTk5ycHLZs2UL79u05c+bMA/dPbfn7+5OamsqaNWvIy8ujV69eXLp0iU2bNuHm5ma2wlNNunTpQmhoKMuXL2fUqFEMHjwYd3d3rl69ypkzZ9i/fz8HDhwAoFmzZkyZMoX33nuPoKAg/Pz88PDwoLCwkMzMTGbOnEnHjh0ZOHAg69atY9KkSQQEBODg4MDBgwc5d+6cxSjKvHnzKCwspF+/fnh4eHD79m327NnDzZs38fPzM9Xr1q0bGzduZP78+fTv3x97e3u6du1qNiLyc926dSM5OZmYmBjatGmDjY0N3t7eFqtV1VZ+fj47duwA/jX6tHfvXq5cuQJg6he4M5n+ueee46OPPqKkpIRu3bpx8uRJkpOTeemll3jyySetikVERESkOnX6WetZs2bRu3dvtm7dyurVqykvL8fNzY1OnTqZ3XQGBgayZ88etmzZQnFxMS4uLnTs2JHp06dbfMju57p37050dDRRUVGsWbMGJycn0wfggoKCLOrPnTuXv//97+zatYudO3fSs2dPYmNj+dvf/kZ+fr6pnrOzM1FRUSxZsoQNGzZQUVFBp06dWLx4McnJyXWaWMCdZVCXLl1KXFwca9eupby8HC8vL2bMmGH2gTw7OzsWL17MokWLSE1NpbS0lHbt2jF79myys7MtEova9k9t2NvbExUVZfpAXnp6Os7Ozvj4+BAREWHx3YSahIaG0rlzZxITE1m/fj2lpaU0adKEdu3aMXXqVLO6gYGBtGzZkoSEBBITEykvL8fd3Z0+ffqYvovx5JNPsmDBAlauXElsbCz16tWjb9++LF++nPHjx5u15+vrS0pKCjt27OD69es4OjrStm1b3nvvPXx8fEz1hgwZQlZWFrt37+bTTz+lsrKSWbNm1ZhYREREUFxcTFJSEjdu3MBoNLJ9+3arE4vc3FxiY2PNytLT00lPTzed/90fKJw/fz5xcXGkpaWxc+dOmjZtSlhYGK+//rpVcYiIiIjci42xNuu9isjvjs37v96SvCIi8n+DcWqdPruWfxN1NsdCRERERER+v5RYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1bQWmIjUaFmjeIKDg3FwcHjUoYiIiMhvmEYsRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEajZGo9H4qIMQkd8um/cNjzoEERH5jTFOtX/UIchvkEYsRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEar/pxGL27Nn07t37vurm5eXRu3dvli1b9pCjuqM2sYWGhuLv7/+QI6pZbfsnKyuL8PBwBg0a9Kv2q4iIiIj8e9IixGLBYDAwffp0DAYDYWFhODs788QTTzzqsH51GRkZZGVlMWHChPveZ926dTg7O9d5Innq1CnS0tI4c+YMZ8+epbS0lFmzZlV7nLy8PF555ZVq22nbti0bN26s09hERERE4DeeWMyYMYP/+Z//edRh/O7k5uaSm5vL5MmTGTly5KMO55HJyMggNTW1VonF+vXr8fDwqPPEYv/+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w4YNq/NX5EREREQAbIw/f3dEHkjVl7djY2PNvros8u/O5v1fb0leERH5bTFO1TNouX96dCkiIiIiIlZTYiEiIiIiIlZTYiEiIiIiIlbTHAsRqZHmWIiI/H5pjoXUhkYsRERERETEakosRERERETEahrfEpEaLWsUT3BwMA4ODo86FBEREfkN04iFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYzcZoNBofdRAi8ttl877hUYcgIiKPgHGq/aMOQf7NaMRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESs9ptOLGbPnk3v3r3vq25eXh69e/dm2bJlDzmqO2oTW2hoKP7+/g85oprVtn+ysrIIDw9n0KBBv2q/ioiIiMi/Jy1QLBYMBgPTp0/HYDAQFhaGs7MzTzzxxKMO61eXkZFBVlYWEyZMuO991q1bh7Ozc50mkkajkbS0ND7//HPOnDnD999/j6urKx06dGDcuHF07drVYp/KykrWr1/Pli1byM/Pp3HjxgwePJiwsDAaNGhQZ7GJiIiIVPlNj1jMmDGD/fv3P+owfndyc3PJzc3l1VdfZeTIkfj6+v5uE4sVK1bUap/169eTkpJSp3H89NNPzJw5k++++44XXniBadOmERAQQFZWFsHBwezcudNin4ULF/K///u/tG3blmnTpuHj40NiYiJvvvkmlZWVdRqfiIiICNTBiEVFRQXl5eXUr1+/LuIxY29vj729BlV+bT/88AMALi4uddqu0WiktLSUhg0b1mm7/85CQ0MBWL58+T3r2NnZsWzZMp566imz8oCAAEaMGMGiRYt48cUXsbW985zg22+/ZcOGDQwaNIi///3vpvotWrTg/fffZ/fu3bz44osP4WxERETk96xWd+0pKSnMmTOH6OhoTp48SUpKCgUFBcyYMQN/f3+MRiObN29m27ZtXLhwAVtbWzp37sz48eMt5iOkpqayceNGcnJyMBgMuLm50a1bN6ZMmULjxo2BO/MYUlNTOXLkiNm+X331FUuWLCErKwtHR0d8fHwYNmzYPeONjY21OH5oaCj5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MzOTyspKoqOjzeJ64403zPph165dHDt2zKwPauLr60tMTAxNmjS5730ehqtXr9KmTZtqt7m7u1NYWPgrRyQiIiK/B1puto4FBgaakgoAJycnhg0bxo8//siXX35pVtfFxeW+J/mmpaUBMHnyZLOkAjD7Oy0tDS8vL/7jP/6DoqIi0z+DwUC/fv04fvw4ZWVlD3Ru6enp2NraEhwcbFbev39/OnTowN69e81u9AH8/PzMbt6rYrSxscHPz88sxqKiIry9vbl58yYnT54E4JNPPqG8vJzx48ebJRXVnXtVUlFZWUlJSQlFRUV06NABJycnTp06ZapX9ft89tlnGAyGB+qLB3Hr1i2L8zUYDBgMBovyXxq9qklZWRmPPfZYtdvq1av3wL+/iIiISE00YlHHvLy8LMqqnh7n5uaalT/++OPY2dndV7uXLl3iD3/4wy++a3/hwgVu375d7TyFKkVFRRavydyPvLw83N3dadSokcW2du3akZ2dTVFRkVki0bp162pjNBqNptfFqlM1gfzSpUsAdOzY8RfjO3z4MCtWrOD06dPcvn3bbNuNGzdM/z1ixAgyMzOZP38+H3zwAT169OCZZ55hyJAhD/W1pQULFpCamlrttp//Xi+//PIDr95Uv359fvrpp2q33b5922zUTERERKSuKLF4hB7WDV779u1NqwFV59d85/9e52hjY8OSJUssRl+qtGvXrlbHOX36NJGRkbRs2ZLIyEhatGhBvXr1sLGx4d133zUbSXF1dSUhIYFjx45x8OBBjh07xsKFC1m2bBmLFy+ucR6FNcaOHctLL71kVrZo0SLgzkjU3dzd3R/4OH/4wx/4/vvvq91W9U0LERERkbqmxKKOXbx40aLswoULwJ0RigfVunVrMjMz+eGHH2octWjVqhXXr1+nT58+97xpf1CPP/44X3zxBTdu3LB4Len8+fM4OjqaJkjXpFWrVvzzn/+kefPm95wLUKVqxCM7OxtPT8971tu1axcVFRUsWbLErJ9LS0vNRiuq2NnZ0bt3b9PqTWfPnmX06NHExcWxePFi4E7yU1s17dO2bVvatm1rVlbVj/369av1se6lS5cupKWlUVBQYDYyVVBQwPfff4+3t3edHUtERESkiuZY1LFNmzZRUlJi+rukpITNmzfj7OzMU0899cDtVj3pXrJkicU8BqPRaPpvPz8/fvjhBz766KNq26l6xehBDBw4kMrKSlavXm1Wvn//frKysvD29r6vZKZqYnN0dDQVFRU1xujj44ODgwMrVqww69cqVede9UrZ3X0BEB8fb9FfRUVFFu14eXlRv359fvzxR1NZ1ZyN4uLiXzynu/e5u41HoWpp4/Xr15uVV/3981ETERERkbqgEYs65urqymuvvWaalJ2SkkJBQQEzZsyw6tWnwYMH8/zzz7Njxw4uXbqEt7c3zs7O5OTk8MUXX7Bx40bgzrcKDh48yOLFizl8+DB9+vTB0dGRgoICDh8+zGOPPcayZcseKAZ/f39SU1NZs2YNeXl59OrVi0uXLrFp0ybc3NzMVniqSZcuXQgNDWX58uWMGjWKwYMH4+7uztWrVzlz5gz79+/nwIEDADRr1owpU6bw3nvvERQUhJ+fHx4eHhQWFpKZmcnMmTPp2LEjAwcOZN26dUyaNImAgAAcHBw4ePAg586dsxhFmTdvHoWFhfTr1w8PDw9u377Nnj17uHnzJn5+fqZ63bp1Y+PGjcyfP5/+/ftjb29P165daxx56tatG8nJycTExNCmTRtsbGzw9va2WK2qtvLz89mxYweA6Rsme/fu5cqVKwCmfoE7k+mfe+45PvroI0pKSujWrRsnT54kOTmZl156iSeffNKqWERERESqo8Sijv3pT3/iq6++IikpiWvXrtG6dWvmzZvHiy++aHXbf/3rX+nZsyfJycmsWLECOzs7WrRoYTbx197enkWLFrFp0yZ27txpSiLc3d3p0qULL7/88gMf397enqioKNMH8tLT03F2dsbHx4eIiIhaTQgPDQ2lc+fOJCYmsn79ekpLS2nSpAnt2rVj6tSpZnUDAwNp2bIlCQkJJCYmUl5ejru7O3369DF9F+PJJ59kwYIFrFy5ktjYWOrVq0ffvn1Zvnw548ePN2vP19eXlJQUduzYwfXr13F0dKRt27a89957+Pj4mOoNGTKErKwsdu/ezaeffkplZSWzZs2qMbGIiIiguLiYpKQkbty4gdFoZPv27VYnFrm5ucTGxpqVpaenk56ebjr/uz9QOH/+fOLi4khLS2Pnzp00bdqUsLAwXn/9daviEBEREbkXG+PP3x2RB1L15e3Y2Fizry6L/Luzef/XW5JXREQeDeNUPWsW62mOhYiIiIiIWE2JhYiIiIiIWE2JhYiIiIiIWE1zLESkRppjISLyf5/mWEhd0IiFiIiIiIhYTYmFiIiIiIhYTeNeIlKjZY3iCQ4OxsHB4VGHIiIiIr9hGrEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGr2RiNRuOjDkJEfrts3jc86hBEROQ+GafaP+oQ5HdMIxYiIiIiImI1JRYiIiIiImI1JRYiIiIiImI1JRYiIiIiImI1JRYiIiIiImI1JRYiIiIiImK133RiMXv2bHr37n1fdfPy8ujduzfLli17yFHdUZvYQkND8ff3f8gR1ay2/ZOVlUV4eDiDBg36VftVRERERP49abFjsWAwGJg+fToGg4GwsDCcnZ154oknHnVYv7qMjAyysrKYMGHCfe+zbt06nJ2d6zyRPHXqFGlpaZw5c4azZ89SWlrKrFmz7us4V69eZfjw4dy4cYNJkyYxZsyYOo1NREREBH7jIxYzZsxg//79jzqM353c3Fxyc3N59dVXGTlyJL6+vr/bxGLFihW12mf9+vWkpKTUeSz79+8nKSmJkpKSWv8WCxYsoKKios5jEhEREbmb1YlFRUUFZWVldRGLBXt7e+rVq/dQ2pZ7++GHHwBwcXGp03aNRiO3bt2q0zb/3YWGhhIaGvqL9QIDA8nMzGTjxo2MGjXqvtvPzMwkIyODN954w5owRURERH5RrV6FSklJYc6cOURHR3Py5ElSUlIoKChgxowZ+Pv7YzQa2bx5M9u2bePChQvY2trSuXNnxo8fbzEfITU1lY0bN5KTk4PBYMDNzY1u3boxZcoUGjduDNyZx5CamsqRI0fM9v3qq69YsmQJWVlZODo64uPjw7Bhw+4Zb2xsrMXxQ0NDyc/PN3u6fODAAZKTk/n666+5evUqDg4OdOnShZCQEJ566qnadNV9OXr0KCtXruT06dMYDAa8vLwYPnw4Q4cONat36tQpNm3axIkTJ7hy5Qp2dna0b9+eMWPGMGjQIIt277d/qhMaGsrRo0cBmDNnDnPmzAFg+/bttGjRgtLSUuLi4tizZw+FhYU0atSIfv36ER4ejoeHh6mdI0eOEBYWxqxZsygtLSUpKYnLly/z+uuvm14t2r17Nxs2bODs2bNU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5uZmSswKCwuBO0nopUuXcHV1rXYESERERORB1dnjzFatWpGTk0O3bt3uaznRxx57jP79+9O/f3/gzvvikydP5qOPPrrnB7yqVta5ePGixbbz589blFU9Wf/xxx8ttuXl5Zk9zT106BDff/89M2fO5JVXXjGrGxMT84vnUxuPP/44UH3MVWVVdc6ePUt2djbjx4+3+FDbtm3bzP6ubf/U1uOPP84XX3zBjRs3LG5Kz58/j6Ojo2mCdE1atWrFP//5T5o3b06bNm1qrFs14pGdnW32etfP7dq1i4qKCpYsWWLqO4DS0lKL0Se4s4Rr7969Tas3nT17ltGjRxMXF8fixYuBBxulqmmftm3bWowcVfVjv379frHtvLw8JkyYQElJCUuXLqVTp04WdW7fvs3169fZt28f+/bts9ielpZGWloakyZNYsyYMb94TBEREZH7VWcfyPPz86OyspKoqKhqt1e92gJQVFRksb3qJqm4uPiex6hakjYzM5PvvvvOVF5eXs66dess6lfdlB46dMisfNeuXXz//fdmZXZ2dgAWcz4OHDhg9n5+XejUqRPNmzcnJSWFq1evmsoNBgNr167FxsbGtIJW1RP9n8d17tw5MjIyzMpq2z+1NXDgQCorK1m9erVZ+f79+8nKysLb2/ueIxB3q5rYHB0dbTFyBObXio+PDw4ODqxYscI0l+RuVf1yr98vPj7eYkSnuuvPy8uL+vXrmyWhVXM2aromf65BgwbVJrLWys/PJywsjBs3bhAVFcV//Md/3PP48+fPt/j3zjvvAPDMM88wf/58vL296zxGERER+X2rsxGLwYMH4+/vz8aNG/nmm2947rnncHV1pbCwkBMnTnD58mWSk5MBmDhxIs7OzvTs2ZNmzZpx48YNUlJSsLGx+cXVdN58800mTJjAuHHjGD58uGk51epuUL28vOjbty9btmzBaDTSoUMHsrOzycjIoFWrVmYTd5988knc3NxYtGgR+fn5NG3alOzsbHbu3En79u05d+5cXXUVdnZ2TJ8+nWnTpvHaa68REBBAw4YN2bNnDydPniQ4ONiUFLVp04a2bduSkJBAWVkZnp6e5OTksGXLFtq3b8+ZM2ceuH9qy9/fn9TUVNasWUNeXh69evXi0qVLbNq0CTc3N7MVnmrSpUsXQkNDWb58OaNGjWLw4MG4u7tz9epVzpw5w/79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8vLg4uIi5mvTpg12794NHx8fdO/eHVpaWmjdunWZPU9t2rRBeHg41q1bB2tra8hkMjg4OKisVlVRKSkpOHz4MACIzzA5c+YM0tLSAEBsl+Ju3LiBhIQE9O7du1w9SURERETqYGBRxb766itcuXIFYWFh+Ouvv2BhYYHFixejX79+ape9ZMkSdOjQAeHh4QgMDISmpibMzc0lE3+1tLSwatUq7NmzB0eOHBGDCFNTU7Rq1QoDBgyo9Pa1tLTg5+cnPiAvOjoacrkcjo6OmDx5coUmhHt6eqJly5YIDQ3Fzp07oVAoULt2bdjY2GDmzJmSvK6urmjYsCFCQkIQGhqKly9fwtTUFJ07dxafi9G+fXssW7YMGzduxPr166Grq4suXbogICAAEyZMkJTn7OyMiIgIHD58GE+fPoW+vj4aN26MpUuXwtHRUczXt29fxMfH4+jRozhx4gSKioowb968MgOLyZMnIysrC2FhYcjJyYEgCDh48KDagUVycjLWr18vSYuOjkZ0dLS4/68HFspJ2xwGRURERH8HmfD62BGqFOWTt9evXy956jLRP51s+d+3JC8R0b+ZMJP3e+mfjXMsiIiIiIhIbQwsiIiIiIhIbQwsiIiIiIhIbZxjQURl4hwLIqK/B+dY0D8deyyIiIiIiEhtDCyIiIiIiEht7HMjojJtMAyGu7s7tLW1q7sqRERE9A5jjwUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREalNJgiCUN2VIKJ3l2x5QXVXgYjoH0OYqVXdVSCqNuyxICIiIiIitTGwICIiIiIitTGwICIiIiIitTGwICIiIiIitTGwICIiIiIitTGwICIiIiIitTGweAddvHgRdnZ2iIiIqLY6xMfHw8vLCz179oSdnR02bNhQbXUhIiIioncfF1smFQUFBZg1axYKCgowadIkyOVyNGnSpLqr9bc7deoU4uPjMXHixHJ/ZseOHZDL5Rg4cGCV1uXGjRuIjIzErVu3cPfuXSgUCsybN6/E7Tx79gzbtm3DrVu3EB8fj/T0dHTs2BEBAQFVWiciIiKi4thj8Q7q2LEjzp49C2dn52rZfnJyMpKT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9vlN7fS60r6TJS3fqVTa8qsBAQFC+/btBV1dXUEulwtOTk7CmTNnVPIVFhYKixcvFiwsLAQdHR2hVatWwrZt20qty+PHj4WZM2cKTZo0EXR1dQUjIyOhdevWwtSpUyVLYld0ydXytrMgCMLhw4eFdu3aCTo6OoKZmZkwa9Ys4fbt2yW20eHDh4UOHToIurq6AgBxydjiS5z6+voKtra2go6OjmBrayusWrWqxDpu3rxZaNq0qaCtrS1YWVkJS5cuFU6cOFHiUqkVPddKO3/KWoq1pCVw9+/fL3Ts2FGoWbOmYGJiIgwfPlz4888/S8xbUFAgzJ8/X2jUqJGgo6MjtGnTRti1a5cwY8YMAYCQlpb2xvoJgur5Xdr5GhMTI3Tr1k2oWbOmAEBy3ubk5Ajjx48XateuLdSoUUPo3r27cPbsWUH2/zdARFQlJk2ahKNHjyI+Pl5yt3LcuHE4depUiU8TpXfT5s2b4e7ujvv370vG7fr6+uKHH34QV/cpr9LOjX+DX375BTNnzsT58+fRtWvX6q5OuSiXpyz+VG+i6nLq1Cn07NkTmzZtKtcT2P9NBg4ciJMnTyI7O/utLM5QEZxjQURVauHChcjIyHjVJUrvHYVCAR8fH3zzzTcVCiqAf8e58eLFC5X5K7m5ufD394eJiYnkGSZERBVR0pzEa9euITIyEr169ar2oALgqlBEVMXq1q2LrKys6q4GvSU1atRASkpKpT77bzg3EhIS0L9/f4wYMQLW1tZISUnBli1bcP/+faxbt07lmRBEROW1ZcsWhISEwMXFBaamprh9+zYCAgKgo6ODhQsXVnf1ADCwICIiqjKmpqbo2rUrtm/fjvT0dGhpaaFNmzbw8fHBsGHDqrt6RPQP1rFjR+zfvx+rV6/GX3/9Bblcjl69emHevHniymHVjXMsiIiIiIhIbZxjQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREavt/SKIV8ir30koAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Summary plot for the first output dimension\n", "shap.summary_plot(shap_values[0], X_test, feature_names=feature_names, show=False)\n", From f406399acd7eb7b0d0b328782798c8901221a70d Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Tue, 8 Oct 2024 18:03:24 +0200 Subject: [PATCH 25/27] - some xAI cleaning --- .../notebooks/09_example_Sim_and_xRL.ipynb | 154 ++++-------------- 1 file changed, 30 insertions(+), 124 deletions(-) diff --git a/examples/notebooks/09_example_Sim_and_xRL.ipynb b/examples/notebooks/09_example_Sim_and_xRL.ipynb index e9ec75e9..7f0ad666 100644 --- a/examples/notebooks/09_example_Sim_and_xRL.ipynb +++ b/examples/notebooks/09_example_Sim_and_xRL.ipynb @@ -2741,71 +2741,6 @@ "from sklearn.model_selection import train_test_split" ] }, - { - "cell_type": "markdown", - "id": "b44ce6d3", - "metadata": { - "id": "aa268f14", - "lines_to_next_cell": 0 - }, - "source": [ - "the simulation common.py contains utility functions and class definitions\n", - "from common import load_observations, Actor" - ] - }, - { - "cell_type": "markdown", - "id": "efc3087c", - "metadata": { - "id": "f866385a", - "lines_to_next_cell": 0 - }, - "source": [ - "**Define the Actor Neural Network Class**" - ] - }, - { - "cell_type": "markdown", - "id": "1a7c97b7", - "metadata": { - "id": "ff7cf03a", - "lines_to_next_cell": 0 - }, - "source": [ - "We define the actor neural network class that will be used to predict actions based on observations." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "168757a6", - "metadata": { - "id": "7216677a" - }, - "outputs": [], - "source": [ - "from assume.reinforcement_learning.neural_network_architecture import MLPActor" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "2f4d6257", - "metadata": { - "id": "5a4d6e17" - }, - "outputs": [], - "source": [ - "# which actor is the RL actor\n", - "ACTOR_NUM = len(powerplant_units) # 20\n", - "\n", - "# Path to actor we want to analyse\n", - "actor_path = os.path.join(\n", - " input_dir,\n", - " f\"learned_strategies/zonal_case/avg_reward_eval_policies/actors/actor_Unit {ACTOR_NUM}.pt\",\n", - ")" - ] - }, { "cell_type": "markdown", "id": "bd023be3", @@ -2852,56 +2787,6 @@ " return pd.DataFrame(input_data, columns=feature_names), input_data" ] }, - { - "cell_type": "markdown", - "id": "0e5eb3d3", - "metadata": { - "id": "444b8679" - }, - "source": [ - "**Define Paths and Parameters**" - ] - }, - { - "cell_type": "markdown", - "id": "105cdba0", - "metadata": { - "id": "7f218d15" - }, - "source": [ - "Adjust the following paths and parameters according to your data and model." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "47473ec8", - "metadata": { - "id": "8fa78b12" - }, - "outputs": [], - "source": [ - "path = (\n", - " input_dir + \"/learned_strategies/zonal_case/buffer_obs\"\n", - ") # Replace with your data path" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "76fdf5d0", - "metadata": { - "id": "8f9189ca" - }, - "outputs": [], - "source": [ - "# Define feature names (replace with actual feature names)\n", - "# make columns names\n", - "names_1 = [\"price forecast t+\" + str(x) for x in range(1, 25)]\n", - "names_2 = [\"residual load forecast t+\" + str(x) for x in range(1, 25)]\n", - "feature_names = names_1 + names_2 + [\"total capacity t-1\"] + [\"marginal costs t-1\"]" - ] - }, { "cell_type": "markdown", "id": "6126c1a9", @@ -3367,6 +3252,17 @@ } ], "source": [ + "# path to extra loggedobservation values \n", + "path = (\n", + " input_dir + \"/learned_strategies/zonal_case/buffer_obs\"\n", + ") \n", + "\n", + "# Define feature names (replace with actual feature names)\n", + "# make columns names\n", + "names_1 = [\"price forecast t+\" + str(x) for x in range(1, 25)]\n", + "names_2 = [\"residual load forecast t+\" + str(x) for x in range(1, 25)]\n", + "feature_names = names_1 + names_2 + [\"total capacity t-1\"] + [\"marginal costs t-1\"]\n", + "\n", "df_obs, input_data = load_observations(path, feature_names)\n", "\n", "df_obs" @@ -3389,18 +3285,20 @@ "id": "b1b50488" }, "source": [ - "We initialize and load the trained actor neural network." + "We initialize and load the trained actor neural network. Therefore, we define the actor neural network class that will be used to predict actions based on observations." ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 51, "id": "c27178fe", "metadata": { "id": "4da4de57" }, "outputs": [], "source": [ + "from assume.reinforcement_learning.neural_network_architecture import MLPActor\n", + "\n", "# Initialize the model\n", "obs_dim = len(feature_names)\n", "act_dim = 2 # Adjust if your model outputs a different number of actions\n", @@ -3409,7 +3307,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 52, "id": "35a088d5", "metadata": { "id": "37adecfa" @@ -3421,12 +3319,21 @@ "" ] }, - "execution_count": 40, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "# which actor is the RL actor\n", + "ACTOR_NUM = len(powerplant_units) # 20\n", + "\n", + "# Path to actor we want to analyse\n", + "actor_path = os.path.join(\n", + " input_dir,\n", + " f\"learned_strategies/zonal_case/avg_reward_eval_policies/actors/actor_Unit {ACTOR_NUM}.pt\",\n", + ")\n", + "\n", "# Load the trained model parameters\n", "model_state = th.load(actor_path, map_location=th.device(\"cpu\"))\n", "model.load_state_dict(model_state[\"actor\"])" @@ -3641,12 +3548,11 @@ } ], "source": [ - "predictions = []\n", + "actions = []\n", "for obs in input_data:\n", " obs_tensor = th.tensor(obs, dtype=th.float)\n", - " prediction = model(obs_tensor)\n", - " predictions.append(prediction)\n", - "predictions" + " action = model(obs_tensor)\n", + " actions.append(action)" ] }, { @@ -3661,7 +3567,7 @@ "source": [ "# Split the data into training and testing sets\n", "X_train, X_test, y_train, y_test = train_test_split(\n", - " input_data, predictions, test_size=0.15, random_state=42\n", + " input_data, actions, test_size=0.15, random_state=42\n", ")" ] }, From 23d6b69326d76a1fbf4decfb0dd06def658f2998 Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Tue, 8 Oct 2024 20:56:31 +0200 Subject: [PATCH 26/27] - added description and checked differenc ebetween price plots with and woithout RL --- .../notebooks/09_example_Sim_and_xRL.ipynb | 7532 +++++++++++++---- 1 file changed, 6104 insertions(+), 1428 deletions(-) diff --git a/examples/notebooks/09_example_Sim_and_xRL.ipynb b/examples/notebooks/09_example_Sim_and_xRL.ipynb index 7f0ad666..3de54175 100644 --- a/examples/notebooks/09_example_Sim_and_xRL.ipynb +++ b/examples/notebooks/09_example_Sim_and_xRL.ipynb @@ -629,7 +629,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 53, "id": "03cc1a12", "metadata": { "colab": { @@ -677,7 +677,7 @@ " \"max_bid_price\": 100,\n", " \"algorithm\": \"matd3\",\n", " \"learning_rate\": 0.001,\n", - " \"training_episodes\": 10,\n", + " \"training_episodes\": 50,\n", " \"episodes_collecting_initial_experience\": 3,\n", " \"train_freq\": \"4h\",\n", " \"gradient_steps\": -1,\n", @@ -687,7 +687,7 @@ " \"noise_sigma\": 0.1,\n", " \"noise_scale\": 1,\n", " \"noise_dt\": 1,\n", - " \"validation_episodes_interval\": 1,\n", + " \"validation_episodes_interval\": 3,\n", " },\n", " }\n", "}\n", @@ -939,7 +939,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 54, "id": "9092a097", "metadata": { "colab": { @@ -958,13 +958,7 @@ "INFO:assume.scenario.loader_csv:Starting Scenario tutorial_08/zonal_case from ../inputs\n", "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", - "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ + "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", "INFO:assume.scenario.loader_csv:availability_df not found. Returning None\n", "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", @@ -989,8 +983,46 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_1 2019-01-01 23:00:00: : 82801.0it [00:07, 11607.99it/s]\n", - "Training Episodes: 10%|█ | 1/10 [00:07<01:05, 7.23s/it]" + "tutorial_08_zonal_case_1 2019-01-01 23:00:00: : 82801.0it [00:06, 12013.00it/s]\n", + "Training Episodes: 2%|▏ | 1/50 [00:06<05:42, 7.00s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_2 2019-01-01 23:00:00: : 82801.0it [00:06, 12345.61it/s]\n", + "Training Episodes: 4%|▍ | 2/50 [00:13<05:31, 6.91s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_3 2019-01-01 23:00:00: : 82801.0it [00:05, 15499.94it/s]\n", + "Training Episodes: 6%|▌ | 3/50 [00:19<04:54, 6.26s/it]" ] }, { @@ -1008,8 +1040,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_2 2019-01-01 23:00:00: : 82801.0it [00:06, 12522.58it/s]\n", - "Training Episodes: 20%|██ | 2/10 [00:14<00:55, 6.96s/it]" + "tutorial_08_zonal_case_4 2019-01-01 23:00:00: : 82801.0it [00:07, 11198.80it/s]\n", + "Training Episodes: 8%|▊ | 4/50 [00:26<05:10, 6.75s/it]" ] }, { @@ -1027,8 +1059,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_3 2019-01-01 23:00:00: : 82801.0it [00:06, 12138.86it/s]\n", - "Training Episodes: 30%|███ | 3/10 [00:20<00:48, 6.97s/it]" + "tutorial_08_zonal_case_5 2019-01-01 23:00:00: : 82801.0it [00:06, 13713.80it/s]\n", + "Training Episodes: 10%|█ | 5/50 [00:32<04:53, 6.52s/it]" ] }, { @@ -1046,7 +1078,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_4 2019-01-01 23:00:00: : 82801.0it [00:06, 12230.64it/s]" + "tutorial_08_zonal_case_6 2019-01-01 23:00:00: : 82801.0it [00:05, 14446.60it/s]" ] }, { @@ -1065,14 +1097,14 @@ "output_type": "stream", "text": [ "\n", - "tutorial_08_zonal_case_eval_1 2019-01-01 23:00:00: : 82801.0it [00:06, 11999.91it/s]" + "tutorial_08_zonal_case_eval_1 2019-01-01 23:00:00: : 82801.0it [00:05, 15472.29it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 1, metric='avg_reward', value=4437.90\n" + "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 1, metric='avg_reward', value=4469.33\n" ] }, { @@ -1080,7 +1112,7 @@ "output_type": "stream", "text": [ "\n", - "Training Episodes: 40%|████ | 4/10 [00:34<00:58, 9.73s/it]" + "Training Episodes: 12%|█▏ | 6/50 [00:44<05:58, 8.14s/it]" ] }, { @@ -1098,7 +1130,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_5 2019-01-01 23:00:00: : 82801.0it [00:06, 11935.11it/s]\n" + "tutorial_08_zonal_case_7 2019-01-01 23:00:00: : 82801.0it [00:06, 12253.09it/s]\n", + "Training Episodes: 14%|█▍ | 7/50 [00:51<05:32, 7.72s/it]" ] }, { @@ -1116,22 +1149,26 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_eval_2 2019-01-01 23:00:00: : 82801.0it [00:06, 12750.66it/s]" + "tutorial_08_zonal_case_8 2019-01-01 23:00:00: : 82801.0it [00:05, 14559.37it/s]\n", + "Training Episodes: 16%|█▌ | 8/50 [00:56<04:58, 7.11s/it]" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 2, metric='avg_reward', value=4463.07\n" + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "\n", - "Training Episodes: 50%|█████ | 5/10 [00:48<00:55, 11.17s/it]" + "tutorial_08_zonal_case_9 2019-01-01 23:00:00: : 82801.0it [00:05, 13944.09it/s]" ] }, { @@ -1149,7 +1186,23 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_6 2019-01-01 23:00:00: : 82801.0it [00:06, 12780.81it/s]\n" + "\n", + "tutorial_08_zonal_case_eval_2 2019-01-01 23:00:00: : 82801.0it [00:06, 12881.54it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 2, metric='avg_reward', value=4474.74\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "Training Episodes: 18%|█▊ | 9/50 [01:09<06:02, 8.84s/it]" ] }, { @@ -1167,22 +1220,27 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_eval_3 2019-01-01 23:00:00: : 82801.0it [00:05, 15020.90it/s]" + "tutorial_08_zonal_case_10 2019-01-01 23:00:00: : 82801.0it [00:07, 11479.97it/s]\n", + "Training Episodes: 20%|██ | 10/50 [01:16<05:35, 8.38s/it]" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 3, metric='avg_reward', value=4471.19\n" + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "\n", - "Training Episodes: 60%|██████ | 6/10 [01:00<00:46, 11.55s/it]" + "tutorial_08_zonal_case_11 2019-01-01 23:00:00: : 82801.0it [00:06, 13599.80it/s]\n", + "Training Episodes: 22%|██▏ | 11/50 [01:23<05:00, 7.72s/it]" ] }, { @@ -1200,7 +1258,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_7 2019-01-01 23:00:00: : 82801.0it [00:07, 11748.34it/s]\n" + "tutorial_08_zonal_case_12 2019-01-01 23:00:00: : 82801.0it [00:06, 11938.13it/s]" ] }, { @@ -1218,14 +1276,15 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_eval_4 2019-01-01 23:00:00: : 82801.0it [00:06, 13672.43it/s]" + "\n", + "tutorial_08_zonal_case_eval_3 2019-01-01 23:00:00: : 82801.0it [00:06, 12805.93it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 4, metric='avg_reward', value=4473.71\n" + "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 3, metric='avg_reward', value=4475.47\n" ] }, { @@ -1233,7 +1292,26 @@ "output_type": "stream", "text": [ "\n", - "Training Episodes: 70%|███████ | 7/10 [01:14<00:36, 12.16s/it]" + "Training Episodes: 24%|██▍ | 12/50 [01:36<06:02, 9.53s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_13 2019-01-01 23:00:00: : 82801.0it [00:05, 14116.94it/s]\n", + "Training Episodes: 26%|██▌ | 13/50 [01:42<05:13, 8.46s/it]" ] }, { @@ -1251,7 +1329,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_8 2019-01-01 23:00:00: : 82801.0it [00:06, 11865.91it/s]\n" + "tutorial_08_zonal_case_14 2019-01-01 23:00:00: : 82801.0it [00:07, 11604.06it/s]\n", + "Training Episodes: 28%|██▊ | 14/50 [01:50<04:51, 8.10s/it]" ] }, { @@ -1269,14 +1348,45 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_eval_5 2019-01-01 23:00:00: : 82801.0it [00:06, 13445.87it/s]" + "tutorial_08_zonal_case_15 2019-01-01 23:00:00: : 82801.0it [00:06, 13097.26it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.scenario.loader_csv:Adding markets\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_eval_4 2019-01-01 23:00:00: : 82801.0it [00:05, 13963.28it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 5, metric='avg_reward', value=4474.55\n" + "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 4, metric='avg_reward', value=4475.63\n" ] }, { @@ -1284,7 +1394,45 @@ "output_type": "stream", "text": [ "\n", - "Training Episodes: 80%|████████ | 8/10 [01:27<00:25, 12.57s/it]" + "Training Episodes: 30%|███ | 15/50 [02:02<05:29, 9.43s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_16 2019-01-01 23:00:00: : 82801.0it [00:07, 11624.53it/s]\n", + "Training Episodes: 32%|███▏ | 16/50 [02:09<04:57, 8.76s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "tutorial_08_zonal_case_17 2019-01-01 23:00:00: : 82801.0it [00:05, 14092.96it/s]\n", + "Training Episodes: 34%|███▍ | 17/50 [02:15<04:21, 7.93s/it]" ] }, { @@ -1302,7 +1450,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_9 2019-01-01 23:00:00: : 82801.0it [00:07, 11202.30it/s]" + "tutorial_08_zonal_case_18 2019-01-01 23:00:00: : 82801.0it [00:06, 12444.20it/s]" ] }, { @@ -1321,14 +1469,14 @@ "output_type": "stream", "text": [ "\n", - "tutorial_08_zonal_case_eval_6 2019-01-01 23:00:00: : 82801.0it [00:06, 12927.91it/s]" + "tutorial_08_zonal_case_eval_5 2019-01-01 23:00:00: : 82801.0it [00:05, 15771.05it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 6, metric='avg_reward', value=4474.91\n" + "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 5, metric='avg_reward', value=4475.69\n" ] }, { @@ -1336,7 +1484,7 @@ "output_type": "stream", "text": [ "\n", - "Training Episodes: 90%|█████████ | 9/10 [01:41<00:13, 13.05s/it]" + "Training Episodes: 36%|███▌ | 18/50 [02:27<04:53, 9.19s/it]" ] }, { @@ -1354,7 +1502,8 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_10 2019-01-01 23:00:00: : 82801.0it [00:06, 12173.56it/s]\n" + "tutorial_08_zonal_case_19 2019-01-01 23:00:00: : 82801.0it [00:05, 13997.61it/s]\n", + "Training Episodes: 38%|███▊ | 19/50 [02:33<04:15, 8.24s/it]" ] }, { @@ -1372,21 +1521,26 @@ "name": "stderr", "output_type": "stream", "text": [ - "tutorial_08_zonal_case_eval_7 2019-01-01 23:00:00: : 82801.0it [00:05, 14857.60it/s]\n" + "tutorial_08_zonal_case_20 2019-01-01 23:00:00: : 82801.0it [00:06, 11920.26it/s]\n", + "Training Episodes: 40%|████ | 20/50 [02:41<03:56, 7.90s/it]" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 7, metric='avg_reward', value=4475.08\n" + "INFO:assume.scenario.loader_csv:Adding markets\n", + "INFO:assume.scenario.loader_csv:Read units from file\n", + "INFO:assume.scenario.loader_csv:Adding power_plant units\n", + "INFO:assume.scenario.loader_csv:Adding demand units\n", + "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "Training Episodes: 100%|██████████| 10/10 [02:19<00:00, 13.93s/it]" + "tutorial_08_zonal_case_21 2019-01-01 23:00:00: : 82801.0it [00:06, 13709.91it/s]" ] }, { @@ -1405,125 +1559,1009 @@ "output_type": "stream", "text": [ "\n", - " 0%| | 0/82800 [00:000.406667\n", " 0.406667\n", " 0.406667\n", - " 1.00\n", + " 0.72\n", " 0.406667\n", " \n", " \n", @@ -2986,7 +4016,7 @@ " 0.406667\n", " 0.406667\n", " 0.406667\n", - " 0.80\n", + " 1.00\n", " 0.406667\n", " \n", " \n", @@ -3014,7 +4044,9 @@ " ...\n", " \n", " \n", - " 175\n", + " 695\n", + " 2.46\n", + " 2.48\n", " 2.50\n", " 2.52\n", " 2.54\n", @@ -3023,14 +4055,12 @@ " 2.60\n", " 2.62\n", " 2.64\n", - " 2.66\n", - " 2.68\n", " ...\n", " 0.406667\n", " 0.406667\n", " 0.406667\n", - " 0.000000\n", - " 0.000000\n", + " 0.406667\n", + " 0.406667\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -3038,7 +4068,9 @@ " 0.406667\n", " \n", " \n", - " 176\n", + " 696\n", + " 2.48\n", + " 2.50\n", " 2.52\n", " 2.54\n", " 2.56\n", @@ -3047,13 +4079,11 @@ " 2.62\n", " 2.64\n", " 2.66\n", - " 2.68\n", - " 2.22\n", " ...\n", " 0.406667\n", " 0.406667\n", - " 0.000000\n", - " 0.000000\n", + " 0.406667\n", + " 0.406667\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -3062,7 +4092,9 @@ " 0.406667\n", " \n", " \n", - " 177\n", + " 697\n", + " 2.50\n", + " 2.52\n", " 2.54\n", " 2.56\n", " 2.58\n", @@ -3071,12 +4103,10 @@ " 2.64\n", " 2.66\n", " 2.68\n", - " 2.22\n", - " 2.24\n", " ...\n", " 0.406667\n", - " 0.000000\n", - " 0.000000\n", + " 0.406667\n", + " 0.406667\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -3086,7 +4116,9 @@ " 0.406667\n", " \n", " \n", - " 178\n", + " 698\n", + " 2.52\n", + " 2.54\n", " 2.56\n", " 2.58\n", " 2.60\n", @@ -3095,11 +4127,9 @@ " 2.66\n", " 2.68\n", " 2.22\n", - " 2.24\n", - " 2.26\n", " ...\n", - " 0.000000\n", - " 0.000000\n", + " 0.406667\n", + " 0.406667\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -3110,7 +4140,9 @@ " 0.406667\n", " \n", " \n", - " 179\n", + " 699\n", + " 2.54\n", + " 2.56\n", " 2.58\n", " 2.60\n", " 2.62\n", @@ -3119,10 +4151,8 @@ " 2.68\n", " 2.22\n", " 2.24\n", - " 2.26\n", - " 2.28\n", " ...\n", - " 0.000000\n", + " 0.406667\n", " 0.000000\n", " 0.000000\n", " 0.000000\n", @@ -3135,7 +4165,7 @@ " \n", " \n", "\n", - "

180 rows × 50 columns

\n", + "

700 rows × 50 columns

\n", "" ], "text/plain": [ @@ -3146,11 +4176,11 @@ "3 2.30 2.32 2.34 \n", "4 2.32 2.34 2.36 \n", ".. ... ... ... \n", - "175 2.50 2.52 2.54 \n", - "176 2.52 2.54 2.56 \n", - "177 2.54 2.56 2.58 \n", - "178 2.56 2.58 2.60 \n", - "179 2.58 2.60 2.62 \n", + "695 2.46 2.48 2.50 \n", + "696 2.48 2.50 2.52 \n", + "697 2.50 2.52 2.54 \n", + "698 2.52 2.54 2.56 \n", + "699 2.54 2.56 2.58 \n", "\n", " price forecast t+4 price forecast t+5 price forecast t+6 \\\n", "0 2.30 2.32 2.34 \n", @@ -3159,11 +4189,11 @@ "3 2.36 2.38 2.40 \n", "4 2.38 2.40 2.42 \n", ".. ... ... ... \n", - "175 2.56 2.58 2.60 \n", - "176 2.58 2.60 2.62 \n", - "177 2.60 2.62 2.64 \n", - "178 2.62 2.64 2.66 \n", - "179 2.64 2.66 2.68 \n", + "695 2.52 2.54 2.56 \n", + "696 2.54 2.56 2.58 \n", + "697 2.56 2.58 2.60 \n", + "698 2.58 2.60 2.62 \n", + "699 2.60 2.62 2.64 \n", "\n", " price forecast t+7 price forecast t+8 price forecast t+9 \\\n", "0 2.36 2.38 2.40 \n", @@ -3172,11 +4202,11 @@ "3 2.42 2.44 2.46 \n", "4 2.44 2.46 2.48 \n", ".. ... ... ... \n", - "175 2.62 2.64 2.66 \n", - "176 2.64 2.66 2.68 \n", - "177 2.66 2.68 2.22 \n", - "178 2.68 2.22 2.24 \n", - "179 2.22 2.24 2.26 \n", + "695 2.58 2.60 2.62 \n", + "696 2.60 2.62 2.64 \n", + "697 2.62 2.64 2.66 \n", + "698 2.64 2.66 2.68 \n", + "699 2.66 2.68 2.22 \n", "\n", " price forecast t+10 ... residual load forecast t+17 \\\n", "0 2.42 ... 0.000000 \n", @@ -3185,11 +4215,11 @@ "3 2.48 ... 0.000000 \n", "4 2.50 ... 0.000000 \n", ".. ... ... ... \n", - "175 2.68 ... 0.406667 \n", - "176 2.22 ... 0.406667 \n", - "177 2.24 ... 0.406667 \n", - "178 2.26 ... 0.000000 \n", - "179 2.28 ... 0.000000 \n", + "695 2.64 ... 0.406667 \n", + "696 2.66 ... 0.406667 \n", + "697 2.68 ... 0.406667 \n", + "698 2.22 ... 0.406667 \n", + "699 2.24 ... 0.406667 \n", "\n", " residual load forecast t+18 residual load forecast t+19 \\\n", "0 0.000000 0.000000 \n", @@ -3198,11 +4228,11 @@ "3 0.000000 0.000000 \n", "4 0.000000 0.000000 \n", ".. ... ... \n", - "175 0.406667 0.406667 \n", - "176 0.406667 0.000000 \n", - "177 0.000000 0.000000 \n", - "178 0.000000 0.000000 \n", - "179 0.000000 0.000000 \n", + "695 0.406667 0.406667 \n", + "696 0.406667 0.406667 \n", + "697 0.406667 0.406667 \n", + "698 0.406667 0.000000 \n", + "699 0.000000 0.000000 \n", "\n", " residual load forecast t+20 residual load forecast t+21 \\\n", "0 0.000000 0.000000 \n", @@ -3211,11 +4241,11 @@ "3 0.000000 0.406667 \n", "4 0.406667 0.406667 \n", ".. ... ... \n", - "175 0.000000 0.000000 \n", - "176 0.000000 0.000000 \n", - "177 0.000000 0.000000 \n", - "178 0.000000 0.000000 \n", - "179 0.000000 0.000000 \n", + "695 0.406667 0.406667 \n", + "696 0.406667 0.000000 \n", + "697 0.000000 0.000000 \n", + "698 0.000000 0.000000 \n", + "699 0.000000 0.000000 \n", "\n", " residual load forecast t+22 residual load forecast t+23 \\\n", "0 0.000000 0.000000 \n", @@ -3224,29 +4254,29 @@ "3 0.406667 0.406667 \n", "4 0.406667 0.406667 \n", ".. ... ... \n", - "175 0.000000 0.000000 \n", - "176 0.000000 0.000000 \n", - "177 0.000000 0.000000 \n", - "178 0.000000 0.000000 \n", - "179 0.000000 0.000000 \n", + "695 0.000000 0.000000 \n", + "696 0.000000 0.000000 \n", + "697 0.000000 0.000000 \n", + "698 0.000000 0.000000 \n", + "699 0.000000 0.000000 \n", "\n", " residual load forecast t+24 total capacity t-1 marginal costs t-1 \n", "0 0.406667 0.00 0.406667 \n", "1 0.406667 0.68 0.406667 \n", - "2 0.406667 1.00 0.406667 \n", + "2 0.406667 0.72 0.406667 \n", "3 0.406667 0.76 0.406667 \n", - "4 0.406667 0.80 0.406667 \n", + "4 0.406667 1.00 0.406667 \n", ".. ... ... ... \n", - "175 0.000000 1.00 0.406667 \n", - "176 0.000000 1.00 0.406667 \n", - "177 0.000000 1.00 0.406667 \n", - "178 0.000000 1.00 0.406667 \n", - "179 0.000000 1.00 0.406667 \n", + "695 0.000000 1.00 0.406667 \n", + "696 0.000000 1.00 0.406667 \n", + "697 0.000000 1.00 0.406667 \n", + "698 0.000000 1.00 0.406667 \n", + "699 0.000000 1.00 0.406667 \n", "\n", - "[180 rows x 50 columns]" + "[700 rows x 50 columns]" ] }, - "execution_count": 35, + "execution_count": 61, "metadata": {}, "output_type": "execute_result" } @@ -3290,7 +4320,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 62, "id": "c27178fe", "metadata": { "id": "4da4de57" @@ -3307,377 +4337,3771 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 63, "id": "35a088d5", "metadata": { "id": "37adecfa" }, "outputs": [ { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# which actor is the RL actor\n", - "ACTOR_NUM = len(powerplant_units) # 20\n", - "\n", - "# Path to actor we want to analyse\n", - "actor_path = os.path.join(\n", - " input_dir,\n", - " f\"learned_strategies/zonal_case/avg_reward_eval_policies/actors/actor_Unit {ACTOR_NUM}.pt\",\n", - ")\n", - "\n", - "# Load the trained model parameters\n", - "model_state = th.load(actor_path, map_location=th.device(\"cpu\"))\n", - "model.load_state_dict(model_state[\"actor\"])" - ] - }, - { - "cell_type": "markdown", - "id": "fe43c9c6", - "metadata": { - "id": "d4a63712" - }, - "source": [ - "Get the actions base on observation tensor we just loaded." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "4ee77fed", - "metadata": { - "id": "e6460cfb" - }, - "outputs": [ + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# which actor is the RL actor\n", + "ACTOR_NUM = len(powerplant_units) # 20\n", + "\n", + "# Path to actor we want to analyse\n", + "actor_path = os.path.join(\n", + " input_dir,\n", + " f\"learned_strategies/zonal_case/avg_reward_eval_policies/actors/actor_Unit {ACTOR_NUM}.pt\",\n", + ")\n", + "\n", + "# Load the trained model parameters\n", + "model_state = th.load(actor_path, map_location=th.device(\"cpu\"))\n", + "model.load_state_dict(model_state[\"actor\"])" + ] + }, + { + "cell_type": "markdown", + "id": "fe43c9c6", + "metadata": { + "id": "d4a63712" + }, + "source": [ + "Get the actions base on observation tensor we just loaded." + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "4ee77fed", + "metadata": { + "id": "e6460cfb" + }, + "outputs": [], + "source": [ + "actions = []\n", + "for obs in input_data:\n", + " obs_tensor = th.tensor(obs, dtype=th.float)\n", + " action = model(obs_tensor)\n", + " actions.append(action)" + ] + }, + { + "cell_type": "markdown", + "id": "633c5100", + "metadata": { + "id": "ddd1ab1e" + }, + "source": [ + "## 3.2. Creating a SHAP Explainer \n", + "\n", + "In the next step we create the Shap explainer. In this example we facilitat the Kenrel Shap method. You can easly swithc it out for Deep Shap. The SHAP Kernel Explainer is a model-agnostic method for computing SHAP values, which can be applied to any machine learning model, including black-box models like neural networks, decision trees, or ensemble models. It uses a simplified linear approximation based on the Kernel SHAP method to estimate the SHAP values, allowing you to interpret how each feature contributes to a particular model’s prediction. Basically the SHAP Kernel Explainer builds a weighted linear regression model around each prediction, using different combinations (coalitions) of input features to simulate their presence or absence. This results in SHAP values that represent the marginal contribution of each feature.\n", + "\n", + "As we fit a linear regression, we split the observatoin and action data into test and train data sets." + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "e5738928", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", + "To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n" + ] + } + ], + "source": [ + "# @ Title Split the data into training and testing sets\n", + "X_train, X_test, y_train, y_test = train_test_split(\n", + " input_data, actions, test_size=0.15, random_state=42\n", + ")\n", + "\n", + "# Convert data to tensors\n", + "y_train = th.stack(y_train)\n", + "y_test = th.stack(y_test)\n", + "\n", + "X_train_tensor = th.tensor(X_train, dtype=th.float32)\n", + "y_train_tensor = th.tensor(y_train, dtype=th.float32)\n", + "X_test_tensor = th.tensor(X_test, dtype=th.float32)\n", + "y_test_tensor = th.tensor(y_test, dtype=th.float32)" + ] + }, + { + "cell_type": "markdown", + "id": "c278a8c6", + "metadata": { + "id": "ae7b108b", + "lines_to_next_cell": 2 + }, + "source": [ + "We define a prediction function compatible with SHAP and create a Kernel SHAP explainer." + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "77b37ebc", + "metadata": { + "id": "6d9be211" + }, + "outputs": [], + "source": [ + "# @ Title Define a prediction function for generating actions for SHAP Explainer\n", + "def model_predict(X):\n", + " X_tensor = th.tensor(X, dtype=th.float32)\n", + " model.eval()\n", + " with th.no_grad():\n", + " return model(X_tensor).numpy()" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "1eac5396", + "metadata": { + "id": "84bb96cf" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "WARNING:shap:Using 595 background data samples could cause slower run times. Consider using shap.sample(data, K) or shap.kmeans(data, K) to summarize the background as K samples.\n" + ] + } + ], + "source": [ + "# Create the SHAP Kernel Explainer\n", + "explainer = shap.KernelExplainer(model_predict, X_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "c38544fd", + "metadata": { + "id": "2a7929e4" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 0%| | 0/105 [00:00),\n", - " tensor([0.9819, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9818, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9820, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9817, 0.9805], grad_fn=),\n", - " tensor([0.9819, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9806], grad_fn=),\n", - " tensor([0.9818, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9820, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9817, 0.9805], grad_fn=),\n", - " tensor([0.9819, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9806], grad_fn=),\n", - " tensor([0.9818, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9820, 0.9807], grad_fn=),\n", - " tensor([0.9820, 0.9807], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9817, 0.9805], grad_fn=),\n", - " tensor([0.9819, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9806], grad_fn=),\n", - " tensor([0.9818, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9820, 0.9807], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9817, 0.9805], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9817, 0.9805], grad_fn=),\n", - " tensor([0.9819, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9806], grad_fn=),\n", - " tensor([0.9818, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9817, 0.9805], grad_fn=),\n", - " tensor([0.9819, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9806], grad_fn=),\n", - " tensor([0.9818, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9817, 0.9805], grad_fn=),\n", - " tensor([0.9819, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9806], grad_fn=),\n", - " tensor([0.9818, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9817, 0.9805], grad_fn=),\n", - " tensor([0.9819, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9806], grad_fn=),\n", - " tensor([0.9818, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9817, 0.9805], grad_fn=),\n", - " tensor([0.9819, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9806], grad_fn=),\n", - " tensor([0.9818, 0.9806], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9819, 0.9807], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9820, 0.9808], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=),\n", - " tensor([0.9821, 0.9809], grad_fn=)]" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "actions = []\n", - "for obs in input_data:\n", - " obs_tensor = th.tensor(obs, dtype=th.float)\n", - " action = model(obs_tensor)\n", - " actions.append(action)" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "9cf0d9b7", - "metadata": { - "id": "be91cd97", - "lines_to_next_cell": 2 - }, - "outputs": [], - "source": [ - "# Split the data into training and testing sets\n", - "X_train, X_test, y_train, y_test = train_test_split(\n", - " input_data, actions, test_size=0.15, random_state=42\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "id": "f86348b7", - "metadata": { - "id": "b21c93c7", - "lines_to_next_cell": 2 - }, - "outputs": [ + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [-7.08871540e-06 -6.60973510e-06 -7.03551215e-06 -6.60045136e-06\n", + " -7.97565113e-06 -7.72578028e-06 -6.16150331e-06 -3.49100038e-06\n", + " 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00\n", + " 0.00000000e+00 0.00000000e+00 0.00000000e+00 6.64941321e-06\n", + " 6.65001201e-06 8.06412755e-06 9.07020034e-06 1.19488695e-05\n", + " 1.15058489e-05 1.30915366e-05 -8.97219726e-06 -6.40358028e-06\n", + " 7.79700799e-06 8.59588381e-06 9.11471863e-06 8.53495261e-06\n", + " 7.65965502e-06 1.29213789e-05 1.09182862e-05 0.00000000e+00\n", + " 0.00000000e+00 -3.88455239e-06 -4.12810965e-06 -5.57878664e-06\n", + " -7.17007358e-06 -6.88044350e-06 -8.88134329e-06 -8.95269960e-06\n", + " -9.08045839e-06 -8.49139563e-06 -8.23327821e-06 -1.01394660e-05\n", + " -8.75959261e-06 -8.07884894e-06 7.81292559e-06 8.56877562e-06\n", + " 0.00000000e+00]\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [ 1.72487005e-05 1.61709439e-05 1.75454024e-05 1.47112825e-05\n", + " 1.90359899e-05 1.86765286e-05 1.46925727e-05 8.91740032e-06\n", + " 7.99686499e-06 5.75022636e-06 0.00000000e+00 0.00000000e+00\n", + " 0.00000000e+00 0.00000000e+00 -1.02304865e-05 -1.57618412e-05\n", + " -1.64844273e-05 -2.02406704e-05 -2.19710692e-05 -3.06357256e-05\n", + " -2.85858214e-05 -3.30018818e-05 2.03853421e-05 1.48116122e-05\n", + " -2.03804931e-05 -2.16667207e-05 -2.33724497e-05 -2.20164458e-05\n", + " -2.02428310e-05 -3.15608390e-05 -2.85867713e-05 5.00757446e-06\n", + " 6.82220169e-06 9.77218230e-06 9.99109795e-06 1.22702507e-05\n", + " 1.73503750e-05 1.61175580e-05 2.16297748e-05 2.32121626e-05\n", + " 2.17380927e-05 2.07723316e-05 1.97472717e-05 2.40736116e-05\n", + " 2.13037060e-05 1.91649673e-05 -1.86408301e-05 -2.00378635e-05\n", + " 0.00000000e+00]\n" + ] + }, { "name": "stderr", "output_type": "stream", "text": [ - "To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", - "To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n" + " 65%|██████▍ | 68/105 [07:25<03:58, 6.43s/it]" ] - } - ], - "source": [ - "# Convert data to tensors\n", - "y_train = th.stack(y_train)\n", - "y_test = th.stack(y_test)\n", - "\n", - "X_train_tensor = th.tensor(X_train, dtype=th.float32)\n", - "y_train_tensor = th.tensor(y_train, dtype=th.float32)\n", - "X_test_tensor = th.tensor(X_test, dtype=th.float32)\n", - "y_test_tensor = th.tensor(y_test, dtype=th.float32)" - ] - }, - { - "cell_type": "markdown", - "id": "633c5100", - "metadata": { - "id": "ddd1ab1e" - }, - "source": [ - "## 3.2. Creating a SHAP Explainer " - ] - }, - { - "cell_type": "markdown", - "id": "c278a8c6", - "metadata": { - "id": "ae7b108b", - "lines_to_next_cell": 2 - }, - "source": [ - "We define a prediction function compatible with SHAP and create a Kernel SHAP explainer." - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "77b37ebc", - "metadata": { - "id": "6d9be211" - }, - "outputs": [], - "source": [ - "# Define a prediction function for SHAP\n", - "def model_predict(X):\n", - " X_tensor = th.tensor(X, dtype=th.float32)\n", - " model.eval()\n", - " with th.no_grad():\n", - " return model(X_tensor).numpy()" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "ce3b3daa", - "metadata": { - "id": "f0f7857b" - }, - "outputs": [], - "source": [ - "# Use a subset of training data for the background dataset\n", - "background_size = 100 # Adjust the size as needed\n", - "background = X_train[:background_size]" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "1eac5396", - "metadata": { - "id": "84bb96cf" - }, - "outputs": [], - "source": [ - "# Create the SHAP Kernel Explainer\n", - "explainer = shap.KernelExplainer(model_predict, background)" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "c38544fd", - "metadata": { - "id": "2a7929e4" - }, - "outputs": [ + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.00000000000001\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [ 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00\n", + " 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00\n", + " 0.00000000e+00 6.06359874e-06 0.00000000e+00 7.77248247e-06\n", + " 6.90868368e-06 8.22820850e-06 -1.12478854e-05 -1.10785106e-05\n", + " -8.70052606e-06 -7.09680497e-06 -5.89480208e-06 -5.42807445e-06\n", + " 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00\n", + " -7.04067314e-06 0.00000000e+00 0.00000000e+00 0.00000000e+00\n", + " 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00\n", + " 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00\n", + " -7.52003433e-06 -6.70610633e-06 8.64504095e-06 7.81055485e-06\n", + " 7.47638359e-06 8.92929091e-06 7.00548497e-06 8.10196449e-06\n", + " 6.23736588e-06 5.75997601e-06 6.55434315e-06 -9.71501205e-06\n", + " 0.00000000e+00]\n", + "INFO:shap:np.sum(w_aug) = 49.00000000000001\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [ 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00\n", + " 0.00000000e+00 0.00000000e+00 -4.45996604e-06 -6.29712313e-06\n", + " -1.07594978e-05 -1.53549641e-05 -1.45376443e-05 -2.13967608e-05\n", + " -2.03244378e-05 -2.45967091e-05 2.60894661e-05 2.56258191e-05\n", + " 1.96674838e-05 1.71781396e-05 1.31997262e-05 1.27793164e-05\n", + " 7.23506792e-06 4.80164456e-06 0.00000000e+00 0.00000000e+00\n", + " 1.55319536e-05 1.28550999e-05 1.06897713e-05 7.95943896e-06\n", + " 5.28043341e-06 5.43335002e-06 5.38047072e-06 0.00000000e+00\n", + " 7.28677076e-06 9.97986379e-06 1.04095020e-05 1.23230914e-05\n", + " 1.70765130e-05 1.62324520e-05 -2.20614308e-05 -2.31496596e-05\n", + " -2.19470037e-05 -2.08094359e-05 -1.88246768e-05 -2.36064293e-05\n", + " -2.03849923e-05 -1.83117999e-05 -1.82009684e-05 2.00169406e-05\n", + " -1.50092752e-05]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 66%|██████▌ | 69/105 [07:32<03:52, 6.45s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00\n", + " 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00\n", + " 0.00000000e+00 0.00000000e+00 0.00000000e+00 4.26663296e-06\n", + " 5.23026564e-06 5.63953744e-06 7.43932427e-06 1.15530720e-05\n", + " 9.93578379e-06 -1.04574417e-05 -7.97716409e-06 -9.88196126e-06\n", + " -6.56655486e-06 -5.85590327e-06 0.00000000e+00 0.00000000e+00\n", + " 7.19710581e-06 7.13989660e-06 -4.68831816e-06 0.00000000e+00\n", + " 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00\n", + " -4.78916932e-06 0.00000000e+00 -5.54222392e-06 -5.88246211e-06\n", + " -8.15723127e-06 -7.45887831e-06 -1.00413092e-05 -1.00545128e-05\n", + " -1.00704460e-05 6.90087247e-06 6.80741203e-06 9.18251361e-06\n", + " 7.29900945e-06 6.77284545e-06 6.20435455e-06 6.73399339e-06\n", + " 0.00000000e+00]\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000002\n", + "INFO:shap:phi = [ 5.45267411e-06 5.26445937e-06 6.35604856e-06 4.48739701e-06\n", + " 6.56894212e-06 5.80361784e-06 2.51629953e-06 0.00000000e+00\n", + " 0.00000000e+00 0.00000000e+00 -9.28868038e-06 -1.39629603e-05\n", + " -1.40902599e-05 -1.80984192e-05 -2.13001981e-05 -2.86217002e-05\n", + " -2.71692262e-05 2.43166905e-05 1.94271408e-05 2.07857088e-05\n", + " 1.34887646e-05 1.14493644e-05 8.17751145e-06 5.06878009e-06\n", + " -2.02295215e-05 -2.18068390e-05 1.02008769e-05 6.96908412e-06\n", + " 5.06622209e-06 5.44133748e-06 4.87194683e-06 5.38997094e-06\n", + " 6.87519248e-06 9.65502795e-06 1.02817963e-05 1.22690593e-05\n", + " 1.69995734e-05 1.55583266e-05 2.16663181e-05 2.34596692e-05\n", + " 2.17056234e-05 -2.10925668e-05 -1.94305025e-05 -2.43395218e-05\n", + " -2.08078084e-05 -1.89456283e-05 -1.81680613e-05 -1.98764359e-05\n", + " 0.00000000e+00]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 67%|██████▋ | 70/105 [07:42<04:26, 7.60s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.00000000000001\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000004\n", + "INFO:shap:phi = [ 6.65614130e-06 5.86627424e-06 6.83182574e-06 0.00000000e+00\n", + " 7.17321440e-06 7.17415191e-06 9.14512353e-06 -1.13297866e-05\n", + " -1.12918105e-05 -1.22346528e-05 -8.69146342e-06 -9.99454903e-06\n", + " -6.49567668e-06 -5.86794670e-06 -4.99356909e-06 0.00000000e+00\n", + " 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00\n", + " 2.95566675e-06 4.36371586e-06 5.45268928e-06 5.51607857e-06\n", + " -6.45114606e-06 0.00000000e+00 -4.91110815e-06 0.00000000e+00\n", + " 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.11152661e-05\n", + " 1.33081936e-05 1.47821886e-05 1.01284305e-05 9.05769715e-06\n", + " 1.05169543e-05 8.25378892e-06 8.66815922e-06 8.33545715e-06\n", + " -8.81977684e-06 -8.66842748e-06 -8.52516040e-06 -1.00651839e-05\n", + " -8.42884916e-06 -8.00868674e-06 -8.23012860e-06 -8.20327000e-06\n", + " 5.49149643e-06]\n", + "INFO:shap:np.sum(w_aug) = 49.00000000000001\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0000000000000004\n", + "INFO:shap:phi = [-1.71596340e-05 -1.62415700e-05 -1.73283557e-05 -1.43480686e-05\n", + " -1.89243573e-05 -1.77541042e-05 -2.10846363e-05 2.67007931e-05\n", + " 2.92030778e-05 3.01636267e-05 2.05245905e-05 2.18560654e-05\n", + " 1.55792205e-05 1.29772515e-05 1.03786277e-05 7.94513150e-06\n", + " 0.00000000e+00 0.00000000e+00 0.00000000e+00 -5.95740031e-06\n", + " -8.24012789e-06 -1.14297655e-05 -1.40646007e-05 -1.46216990e-05\n", + " 1.55940877e-05 1.31974721e-05 1.11325752e-05 8.08321987e-06\n", + " 5.28095099e-06 5.78367838e-06 5.68306009e-06 -2.67259844e-05\n", + " -3.25350981e-05 -3.49935237e-05 -2.63088916e-05 -2.47292558e-05\n", + " -2.69406570e-05 -2.03084129e-05 -2.18122981e-05 -2.29147899e-05\n", + " 2.18538255e-05 2.07428469e-05 1.95976938e-05 2.43050410e-05\n", + " 2.15931368e-05 1.94625301e-05 1.84130177e-05 1.98701989e-05\n", + " -1.52667173e-05]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 68%|██████▊ | 71/105 [07:53<04:52, 8.61s/it]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:shap:num_full_subsets = 1\n", + "INFO:shap:remaining_weight_vector = [0.15162364 0.10327987 0.07918123 0.06478465 0.05524272 0.04847831\n", + " 0.04345312 0.03959062 0.03654519 0.03409718 0.0321005 0.03045432\n", + " 0.02908698 0.02794632 0.0269936 0.02619967 0.02554233 0.0250046\n", + " 0.02457349 0.02423915 0.02399431 0.02383382 0.02375437]\n", + "INFO:shap:num_paired_subset_sizes = 24\n", + "INFO:shap:weight_left = 0.7710518569800939\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [-6.16229884e-06 -5.47730986e-06 -6.10950563e-06 -5.19349835e-06\n", + " -6.91541276e-06 -6.61723958e-06 -4.83976660e-06 0.00000000e+00\n", + " 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00\n", + " 0.00000000e+00 0.00000000e+00 0.00000000e+00 7.63455030e-06\n", + " 7.25438719e-06 8.99470072e-06 9.42091316e-06 1.31297342e-05\n", + " 1.18638624e-05 -8.81280554e-06 -7.35728774e-06 -5.13845240e-06\n", + " 7.96415938e-06 9.36405793e-06 8.89784336e-06 8.94263984e-06\n", + " 7.93395211e-06 1.31911248e-05 -2.21253773e-06 0.00000000e+00\n", + " 0.00000000e+00 -4.04170232e-06 -3.79773402e-06 -5.24540819e-06\n", + " -7.21961580e-06 -6.50261520e-06 -9.29290174e-06 -9.52911789e-06\n", + " -9.57806058e-06 -8.67632620e-06 -7.65273696e-06 -9.54481129e-06\n", + " -8.90484366e-06 8.26067315e-06 7.68351641e-06 8.17503441e-06\n", + " -7.86525406e-06]\n", + "INFO:shap:np.sum(w_aug) = 49.0\n", + "INFO:shap:np.sum(self.kernelWeights) = 1.0\n", + "INFO:shap:phi = [ 1.49574514e-05 1.41937030e-05 1.51984773e-05 1.29675076e-05\n", + " 1.66274289e-05 1.59803600e-05 1.20869931e-05 7.37696135e-06\n", + " 5.34144269e-06 0.00000000e+00 0.00000000e+00 0.00000000e+00\n", + " 0.00000000e+00 -9.72545747e-06 -1.25542063e-05 -1.79675869e-05\n", + " -1.83816771e-05 -2.26701327e-05 -2.41101566e-05 -3.32572728e-05\n", + " -3.05325914e-05 2.10117302e-05 1.77615192e-05 1.31421256e-05\n", + " -2.04154286e-05 -2.20369651e-05 -2.31540199e-05 -2.22665412e-05\n", + " -2.05731124e-05 -3.20925343e-05 5.29934905e-06 5.83442809e-06\n", + " 7.11754701e-06 9.93385212e-06 1.04224384e-05 1.29618230e-05\n", + " 1.70951426e-05 1.62490595e-05 2.22719937e-05 2.35208965e-05\n", + " 2.21201560e-05 2.10470410e-05 1.94062272e-05 2.40342424e-05\n", + " 2.18203507e-05 -1.86217084e-05 -1.84147454e-05 -1.98296202e-05\n", + " 1.88924576e-05]\n" + ] + }, { "name": "stderr", "output_type": "stream", "text": [ - " 0%| | 0/27 [00:00" ] @@ -5138,7 +9814,7 @@ }, { "data": { - "image/png": "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efJk/vvf/xIVFUX37t2xs7PjypUrbN68GX9/f0aNGkVcXBxDhgyhQ4cOBAYGAjBnzhzCwsJ4//33OXDggHRrKumKejooIYQwxs6dO5WBAwcqdevWVWxtbRULCwulZs2ayocffqjExsaq6j548EAZNGiQYm9vr9jZ2Sm9evVS4uLicp3i9fbt26rlBwwYoNjY2OjF0K5dO6V+/fq697lNhZg93eLjU0wa2t62bduURo0aKVZWVoqrq6sydepUZenSpQan0fT09MzzGGVP5/jVV1/lWS+vfcrN49OJKkrWFKsff/yxUrFiRcXc3FypVauW8s0336imvVQURTl//rzi7u6uWFtbK8ATp3vFwBSviqIoly5dUnx8fBQHBwfFyspKadmypRIaGqqqk59pSw1JTExUJkyYoNSvX1+xtrZW7OzslH//+9/K8uXL9fZHUbKmU+3Ro4dSqlQppUyZMsrgwYOVM2fO6E3xmpGRoXz44YeKk5OTotFodFNkZk/x+s033yjfffedUqVKFcXS0lJp27atcvLkSb3t/fjjj0r16tUVCwsLpUmTJsrPP/9s8Dv5/fffFTc3N8XCwuKJ071mH6vsl7m5ueLk5KS4u7srX375pRIXF6e3TG5TvBo6Nw19jzn3O6dLly4p/fv3VypUqKCYm5srlSpVUrp27aps2LBBb9uP/796fMrd48ePK++8845StWpVxdLSUilXrpzStWtX5dixY3rxPX58jh8/rnTu3FmxtbVVSpUqpXTo0EE1da0xceQl53F//JXTyJEjFY1Go5w7dy7P9WXHFB4ervj7+ytlypRRbG1tlXfffVe5e/fuE+MxtB9PmuI128aNG5U2bdooNjY2io2NjVK3bl1l2LBhSkREhKIoivL2228rdnZ2SlRUlGq5rVu3KoAydepUo+ITzx+NorwkI4GEEOIFNXPmTD7++GOioqL0Zo4Rz5eoqCiqVavGN998w6hRo4o7HPGcatmyJS4uLgQHB+dZb/ny5fj6+nL06FHdODEhiop0ZxJCiBJMURSWLFlCu3btJIEQ4gXwzz//cPLkSVasWFHcoQiRJ+mMJoQQJVBycjJr1qxh8ODBnD59mo8//ri4QxJCFILSpUuTlpamexbK00pKSuLWrVt5vp71tMEvugkTJuQ6hXDOz6KionRTERujoMs9a9ISIYQQJdDt27fp27cv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BX799Vf+85//5OkYnU6X45qHtLS0HI9btGgR1apV4/nnn0elUtGsWTOCgoJ4880381zfS5cuAVC2bNkc8/Tv35/33nuPpUuX8tJLLxk9t3PnTm7dumWYJgWZPxru37/PoEGDqFy5Mrdu3eKnn36ic+fO7Nq1K9cpV/nx+uuvs3LlSvz9/QkICCAtLY1ffvmFrl278uuvv5rU+WFHjx4lMTGRli1bWlTunDlziImJ4c0338TOzo6ZM2fSp08f1q5dy7BhwxgwYAC9e/dm+/btzJo1i3LlyvHJJ58YnSMpKYkOHTrg4+PDV199xaVLl5g7dy5///03x48fNwSd6enpfPvtt7zyyiu8/PLL2Nvbc/jwYRYtWsRff/1lMh3t448/5ssvv6R+/fq89957VKxYkStXrrBu3TqmTJmCr68vH330EV9++SWBgYGG16R8+fK5tvn69eu0bNmSuLg4Ro4cSa1atdi9ezdfffUV+/btY+fOnVhZGX/tDx48GGtra8aPH096ejrTp0+nd+/eXLx40eyPUHM+/PBDdDodo0ePJj09ne+//54XXniBpUuX8sYbbxAYGMhrr73GmjVr+PTTT6lWrZrRqNvcuXN5++23qVu3Lp9++imQ+T7t3bs38+fPJzAw0JB3+vTpvPfeezRp0oQvv/yS5ORkvvvuO8qVK2dSr7i4ONq0acONGzcYOnQoDRo04M6dO8ydOxcfHx+OHDmCp6dnntpY0H5+lHr16vHDDz/w3nvv0adPH8Pnk4ODg1G+TZs2cfXqVd5++20qVKjApk2bmDx5MtevX2fx4sUWtyWv77XWrVszf/58/vrrL7p3725xOeIppQghxDNi//79irW1tQIotWrVUgICApS5c+cq//zzj9n8np6eCvDIf3fv3jU67tatW4pGo1EmTpxoSJs+fboCmC0LUF544QXl7t27yt27d5WLFy8q06ZNU6ytrRVnZ2clMjIy13b5+/srtra2yv37943SBw4cqFhZWRkdn5iYaHJ8RESE4ubmprz44otG6YMHD1Ye/ppo37694unpaXKOa9euKYBRm3/99VcFUObPn2+UNyMjQ2nevLni5eWl6PX6XNsWFBSkAMrGjRtNntu1a5cCKIsXLzZJ8/DwUGJjYw3pJ0+eVABFpVIp69atMzrPc889p1SoUMGknYAyevRoo/SsNr311luGNL1e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", + "image/png": "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oE6dOilNmjRRbty4ody4cUM5ffq08tFHHymA4uvrq6/33nvvqWLfvHmzAiiTJk1Src/f31/RaDTKuXPn9GX29vaq4/YwgDJ8+HBV2YgRIxRA+fXXX/VlGRkZSt26dRUPDw8lLy9PUZS/v5N69eoZPbYP6tWrlwIot2/fNlln48aNCqDMnDlTtY3o6GhVPWPn3vDhwxVjf2Lz69ra2ipXr17Vlx84cEABlE8++URf1qlTJ6VTp04G63jwO7lx44bBOV6Y/P0IDw83WeeFF15QKleurH+/dOlSBVAuXryoL8s/N3/77Td92c6dO/X7d+nSJX35/PnzDY6dt7e30qJFCyUnJ0dfptPplJdffllp2LChwba7du2q6HQ6ffknn3yiWFpaKmlpaYqiKMqmTZsUQDl06FCh+//gserVq5dSoUIF5fz58/qypKQkxdHRUfHy8jI7jqIIDw83ei6ZKz8mT09P1W/R1KlTFUCJiIgo8rpMnRf5v5f5EhISFEtLS+Wrr75S1Ttx4oRiZWWlKk9OTlaqVKmidOvWTbl7967SqlUrpU6dOkp6erq5uyrKIenOJIQo17p168bvv/9Oz549OXbsGFOnTqV79+7UrFnToNuDuQoOHrS0tKRNmzYoisLgwYP15c7OzjRu3JgLFy4YfH7gwIGqcQPt27dHURSD7hPt27fnypUraLVafVnBMQ3p6encvHmTTp06ceHCBdLT01Wfr1u3rkH3JCcnJ9566y1Wr16t70aUl5fH2rVr6dWrF/b29g/d/zNnzuDq6oqrqyvPP/8833//PT4+PgbdDwratm0blpaWfPTRR6rykSNHoigK27dvf+h2zbFt2zbatWtHhw4d9GUODg4EBweTkJDAn3/+qar/3nvvFWm8SEZGBnC/i4kp+ctMdYl6FL169aJmzZr69+3ataN9+/blpouHg4OD/hgVpmnTpvzjH//Qv8+/a//qq69Sp04dg/L8/0epqan88ssv9O3bl4yMDG7evMnNmze5desW3bt35+zZsyQmJqq2FRwcrLqr3rFjR/Ly8rh06RLwd1/+qKgocnNzi7SfeXl57Nq1i169elGvXj19uZubG/3792fv3r0G3//D4igLwcHBqt+ioUOHYmVl9VjOp40bN6LT6ejbt6/+e7t58ybVq1enYcOGREdH6+tWr16d2bNns3v3bjp27Mgff/zB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", "text/plain": [ "
" ] @@ -5148,7 +9824,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAOsCAYAAADX7yC0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzde1RV1f7//+fmkikQKAcVU8FL6sfU0kz7dgzth90g+kmikl+1wEBAPmV5OX37eUSN7zjmKb9iIHgBFUtN1ERQONoJMD15S0sxBa+hgJApJAoeNuzfH37Zxx1I4sbsnF6PMRwj5pprrveaezXGeq+55lwGk8lkQkRERERExAo29zoAERERERH596fEQkRERERErKbEQkRERERErKbEQkRERERErKbEQkRERERErKbEQkRERERErKbEQkRERERErKbEQkRERERErKbEQkRERERErKbEQkQatXTpUqqrq+91GCIiIvIbp8RCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESsZjCZTKZ7HYSI/HYZPjDe6xBERETkFkzT7O51CGYasRAREREREaspsRAREREREaspsRAREREREaspsRAREREREaspsRAREREREaspsRAREREREaspsRAREREREav9phOL2bNnM3DgwNuqW1RUxMCBA1myZMldjuqGpsQWGhqKn5/fXY6ocU3tn7y8PMLDw3n66ad/1X4VERERkX9Pv50vashvhtFoZMaMGRiNRsLCwnBycuKhhx6612H96rKzs8nLy2PSpEm3vc+aNWtwcnJq9kQyNzeXjIwMjh07xokTJ6isrCQqKqrB4xw5coTVq1eTn5/PpUuXAGjfvj3Dhw9n7NixODo6NmtsIiIiIvAbH7GYOXMmu3fvvtdh/O4UFhZSWFjIK6+8wpgxY/Dx8fnd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iNForFd+7do1q4/38ssvExcXx7x58/if//N/ct9991FWVmb9iYiIiIg04I5GLOqepN/s7NmzXL16lWefffaW+126dAkPDw+CgoI4ePAg06ZNw9nZmQEDBvDHP/6RZ555BgcHh1vuX1hYCICnp2e9bV27dm36ifzM+fPniYuLY8+ePVy5csVim8FgsLr9OkVFRUDDMXfr1g3417nCjX6Lj48nJyfHvHzozSoqKnB0dLzr/VNUVISbmxsPPPBAg3Hn5+dTVlZmkUg0dK2cOXMGk8lEQEDALY9VN4H83LlzAPTs2fMX49u/fz/Lli3j6NGjXL9+3WLbzb/n6NGjycnJYd68eXz00Uc88sgjPPnkkzz33HN39bWl+fPnk56e3uC2n88refHFF5k9e7ZVx+vcubO5/4cPH85XX33Ff//3fwNYjHKJiIiINIc7SiwaWgHKZDLRunVroqOjb7lf3U1z586dSUlJYd++fezfv5+DBw8SHR3NkiVLWLZsWbO9qtFYMlBTU2Px97Vr1wgJCaGyspJXXnmF7t274+DggMFgYOXKlezfv79ZYmoqk8lEZGQkZ86cITAwkN69e+Po6IiNjQ1paWlkZmbWGyX4LbnVamEGg4FFixZZjDjcrO5auV1Hjx4lMjKSjh07EhkZSYcOHWjRogUGg4F3333Xoo9cXFxITk7m0KFD7N27l0OHDrFgwQKWLFlCTExMo/MorDFhwgReeOEFi7KFCxcCMGXKFIvym0eymsv/+B//A1dXVzZs2KDEQkRERJpds63l2qlTJwoKCujbt+9tLSd63333MWTIEIYMGQLcWKVnypQpfPLJJ/zpT39qcJ+6lXXOnj1bb9vp06frldU9WW9oFZyioiKL+R379u3jhx9+YNasWbz00ksWdePj43/xfJriwQcfBBqOua6srs6JEyfIz88nJCSk3ofaNm/ebPF3U/unqR588EG++uorrly5Uu+1pNOnT+Pg4GCeIN2YTp068Y9//IP27dvTpUuXRuvWPXHPz8+3eL3r5zIzM6mpqWHRokXmvgOorKysN/oEYGtry8CBA82rN504cYJx48aRmJhITEwMcGejVI3t07Vr13ojR3X9+GtNqL5+/bpWhRIREZG7otk+kOfr60ttbS2xsbENbq97tQVo8D3vXr16AVBeXn7LY9QtSZuTk8P3339vLq+urmbNmjX1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/vvv4+3tba733HPPkZeXx/bt2/n73/9ObW0tUVFRjSYWERERlJeXk5KSwpUrVzCZTGzZssWqxKK8vNw8Mf/TTz9tsE5CQoI5sfjuu++AG0v9NjQBfMCAAUosREREpNkZTE1Z71VEfncMH/x6S/KKiIj8GkzTmvXZuvxfevFaRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESsprW2RKRRSx5IIigoCHt7+3sdioiIiPyGacRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESsZjCZTKZ7HYSI/HYZPjDe6xBEROR3zDTN7l6HILdJIxYiIiIiImI1JRYiIiIiImI1JRYiIiIiImI1JRYiIiIiImI1JRYiIiIiImI1JRYiIiIiImK133RiMXv2bAYOHHhbdYuKihg4cCBLliy5y1Hd0JTYQkND8fPzu8sRNa6p/ZOXl0d4eDhPP/30r9qvIiIiIvLvSQsDSz1Go5EZM2ZgNBoJCwvDycmJhx566F6H9avLzs4mLy+PSZMm3fY+a9aswcnJqVkTSZPJREZGBl9++SXHjh3jhx9+wMXFhR49ejBx4kT69OlTb58VK1Zw/Phxjh8/TmFhIe7u7qSlpTVbTCIiIiI/95sesZg5cya7d+++12H87hQWFlJYWMgrr7zCmDFj8PHx+d0mFsuWLWvSPmvXrm32G/h//vOfzJo1i++//55nn32W6dOn4+/vT15eHkFBQWzbtq3ePnFxcRw4cIAHH3yQBx54oFnjEREREWmI1SMWNTU1VFdXc//99zdHPBbs7Oyws9Ogyq/txx9/BMDZ2blZ2zWZTFRWVtKqVatmbfffWWhoKABLly69ZR1bW1uWLFnCY489ZlHu7+/P6NGjWbhwIc8//zw2Nv96TrB582Y6duwIwOjRo6msrLwL0YuIiIj8S5Pu2tPS0pgzZw5xcXEcOXKEtLQ0Lly4wMyZM/Hz88NkMrFx40Y2b97MmTNnsLGxoXfv3oSEhNSbj5Cens769espKCjAaDTi6upK3759mTp1Kq1btwZuzGNIT0/nwIEDFvt+8803LFq0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6AP4+vrWe0KekZGBwWDA19fXIsaysjK8vLy4evUqR44cAeDzzz+nurqakJAQi6SioXOvSypqa2upqKigrKyMHj164OjoSG5urrle3e/zxRdfYDQa76gv7sS1a9fqna/RaMRoNNYr/6XRq6aoqanhz3/+M4WFhbzzzjvNPndGREREBDRi0ew8PT3rlXXp0gW4MUJxswcffBBbW9vbavfcuXP84Q9/+MV37c+cOcP169cbnKdQp6ysjPbt29/WcW9WVFSEm5sbDzzwQL1t3bp1Iz8/n7KyMotEonPnzg3GaDKZzK+LNaRuAvm5c+cA6Nmz5y/Gt3//fpYtW8bRo0e5fv26xbYrV66Y/3v06NHk5OQwb948PvroIx555BGefPJJnnvuubv62tL8+fNJT09vcNvPf68XX3yR2bNnW33M2tpa5s6dS05ODhERETz//PNWtykiIiLSECUW99DNr0U1p+7du/PWW2/dcvuv+c7/rc7RYDCwaNGieqMvdbp169ak4xw9epTIyEg6duxIZGQkHTp0oEWLFhgMBt59912LkRQXFxeSk5M5dOgQe/fu5dChQyxYsIAlS5YQExPT6DwKa0yYMIEXXnjBomzhwoXAjZGom7m5uVl9vNraWt577z22bt1KSEiIxbwPERERkeamxKKZnT17tl7ZmTNngBsjFHeqc+fO5OTk8OOPPzY6atGpUycuX77M448/fsub9jv14IMP8tVXX3HlypV6ryWdPn0aBwcH8wTpxnTq1Il//OMftG/f3jyacyt1Ix75+fl4eHjcsl5mZiY1NTUsWrTIop8rKystRivq2NraMnDgQPPqTSdOnGDcuHEkJiYSExMDcEffemhsn65du9K1a1eLsrp+HDx4cJOP1Zi6pCItLY2JEyc26VscIiIiIndCcyya2YYNG6ioqDD/XVFRwcaNG3FycuKxxx6743brnnQvWrSo3jwGk8lk/m9fX19+/PFHPvnkkwbbqXvF6E4MGzaM2tpaVq5caVG+e/du8vLy8PLyuq1kpm5ic1xcHDU1NY3G6O3tjb29PcuWLbPo1zp15173StnNfQGQlJRUr7/KysrqtePp6cn999/PTz/9ZC6rm7NRXl7+i+d08z43t3EvmEwmoqOjSUtLIygoiPDw8Hsaj4iIiPw+aMSimbm4uPDqq6+aJ2WnpaVx4cIFZs6cadWrT8OHD+eZZ55h69atnDt3Di8vL5ycnCgoKOCrr75i/fr1ALzyyivs3buXmJgY9u/fz+OPP46DgwMXLlxg//793HfffSxZsuSOYvDz8yM9PZ1Vq1ZRVFTEgAEDOHfuHBs2bMDV1dVihafGPPzww4SGhrJ06VLGjh3L8OHDcXNz4+LFixw7dozdu3ezZ88eANq1a8fUqVN5//33CQwMxNfXF3d3d0pLS8nJyWHWrFn07NmTYcOGsWbNGt588038/f2xt7dn7969nDx5st4oSnR0NKWlpQwePBh3d3euX7/Ojh07uHr1Kr6+vuZ6ffv2Zf369cybN48hQ4ZgZ2dHnz59Gh156tu3L6mpqcTHx9OlSxcMBgNeXl71VqtqquLiYrZu3Qpg/obJzp07KSkpATD3C0BMTAxbtmyhR48edOnShW3btlm01bFjx7v2upeIiIj8fimxaGb//d//zTfffENKSgqXLl2ic+fOREdHN8uk2f/9v/83/fv3JzU1lWXLlmFra0uHDh0sJv7a2dmxcOFCNmzYwLZt28xJhJubGw8//DAvvvjiHR/fzs6O2NhY8wfysrKycHJywtvbm4iIiCZNCA8NDaV3796sW7eOtWvXUllZSZs2bejWrRvTpk2zqBsQEEDHjh1JTk5m3bp1VFdX4+bmxuOPP27+Lsajjz7K/PnzWb58OQkJCbRo0YJBgwaxdOlSQkJCLNrz8fEhLS2NrVu3cvnyZRwcHOjatSvvv/8+3t7e5nrPPfcceXl5bN++nb///e/U1tYSFRXVaGIRERFBeXk5KSkpXLlyBZPJxJYtW6xOLAoLC0lISLAoy8rKIisry3z+dYnFd999B9x4fWzWrFn12nrxxReVWIiIiEizM5h+/u6I3JG6L28nJCRYfHVZ5N+d4YNfb0leERGROqZpev7970ZzLERERERExGpKLERERERExGpKLERERERExGqaYyEijdIcCxERuRc0x+Lfj0YsRERERETEakosRERERETEahpjEpFGLXkgiaCgIOzt7e91KCIiIvIbphELERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmsFkMpnudRAi8ttl+MB4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3ElJSQmAuV8A/vf//t9cvXqVfv360a5dO8rKyvjiiy84duwYQ4cOxdvb26pYRERERBrSrJ+1joqKYuDAgXz22WesXLmS6upqXF1d6dWrl8VNZ0BAADt27GDTpk2Ul5fj7OxMz549mTFjRr0P2f1cv379iIuLIzY2llWrVuHo6Gj+AFxgYGC9+nPnzuWvf/0rmZmZbNu2jf79+5OQkMBf/vIXiouLzfWcnJyIjY1l0aJFfPrpp9TU1NCrVy9iYmJITU1t1sQCbjw1Xrx4MYmJiaxevZrq6mo8PT2ZOXOmxQfybG1tiYmJYeHChaSnp1NZWUm3bt2YPXs2+fn59RKLpvZPU9jZ2REbG2v+QF5WVhZOTk54e3sTERFB+/btb7ut0NBQevfuzbp161i7di2VlZW0adOGbt26MW3aNIu6AQEBdOzYkeTkZNatW0d1dTVubm48/vjj5u9iPProo8yfP5/ly5eTkJBAixYtGDRoEEuXLiUkJMSiPR8fH9LS0ti6dSuXL1/GwcGBrl278v7771vcdD/33HPk5eWxfft2/v73v1NbW0tUVFSjiUVERATl5eWkpKRw5coVTCYTW7ZssTqxKCwsJCEhwaIsKyuLrKws8/nXJRZ//OMf2bZtG5999hnl5eXcd999dO3alT/96U+MHDnytkaVRERERJrKYGrKeq8i8rtj+ODXW5JXRET+85mmNetzbfkN0aNLERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhYSFpFGLXkgiaCgIOzt7e91KCIiIvIbphELERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmhILERERERGxmsFkMpnudRAi8ttl+MB4r0MQEZH/EKZpdvc6BLmLNGIhIiIiIiJWU2IhIiIiIiJWU2IhIiIiIiJWU2IhIiIiIiJWU2IhIiIiIiJWU2IhIiIiIiJWU2IhIiIiIiJW+00nFrNnz2bgwIG3VbeoqIiBAweyZMmSuxzVDU2JLTQ0FD8/v7scUeOa2j95eXmEh4fz9NNP/6r9KiIiIiL/nvSVEqnHaDQyY8YMjEYjYWFhODk5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+7Ft2zY0NzfD2NgYw4cPFzx0enp6Ijs7G/v27UN9fT0MDQ0xbNgwLF++XOVFdk8bOXIkoqOjERUVhe3bt8PAwED5Ajhvb2+V+mvWrME//vEPZGVl4fDhw7C3t0dsbCy++uorVFdXK+uJxWJERUUhMjISu3fvRktLC4YPH46IiAikpaVpNLEAHm+DumnTJiQkJGDHjh1obm6GhYUFVqxYIXhBnra2NiIiIhAeHo6MjAxIpVJYWVlh1apVKCsrU0ksOts/naGjo4OoqCjlC/JycnIgFovh7OyMoKAglfcmdMTf3x82NjZITk7Grl27IJVK0adPH1hZWWHp0qWCup6enhg4cCCSkpKQnJyM5uZmmJiYYNy4ccr3YowePRrr1q3Dli1bEBsbCz09PYwfPx6bN2+Gn5+foD1XV1ekp6fj0KFDuHfvHvT19WFpaYm1a9fC2dlZWW/KlCkoLS3FkSNH8O2336K1tRUhISEdJhZBQUGor69HSkoKGhoaIJfLcfDgQbUTi8rKSsTGxgrKcnJykJOTo7z/J19QGBYWhoSEBGRmZuLw4cPo27cvAgIC8OGHH6oVBxEREVF7RPLO7PdKRL87ovW/3pa8RET030G+VKO/XdNvhMbWWBARERER0e8XEwsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIbNxkmog7F9UqEj48PdHV1X3YoRERE9ArjiAUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREalNJJfL5S87CCJ6dYnWy152CERE9AqTL9V52SHQK4IjFkREREREpDYmFkREREREpDYmFkREREREpDYmFkREREREpDYmFkREREREpDYmFkREREREpDYmFkREREREpDYmFq+g06dPw8HBAenp6S8thtLSUgQGBmLy5MlwcHBAXFzcS4uFiIiIiF59fKMJqZDJZFi+fDlkMhkCAgIgFovx+uuvv+ywfnW5ubkoLS3FggULnvucnTt3QiwWw93dXaOxFBcXIzMzExcvXsTly5chlUoREhLS5nUuXLiAHTt2oKysDHfv3gUA9O/fHy4uLpg1axYMDAw0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oaOjg6ioKOUL8nJyciAWi+Hs7IygoKBOLQj39/eHjY0NkpOTsWvXLkilUvTp0wdWVlZYunSpoK6npycGDhyIpKQkJCcno7m5GSYmJhg3bpzyvRijR4/GunXrsGXLFsTGxkJPTw/jx4/H5s2b4efnJ2jP1dUV6enpOHToEO7duwd9fX1YWlpi7dq1cHZ2VtabMmUKSktLceTIEXz77bdobW1FSEhIh4lFUFAQ6uvrkZKSgoaGBsjlchw8eFDtxKKyshKxsbGCspycHOTk5CjvX5FYeHh44LvvvsOBAwcgkUigo6ODgQMHYt68eZg9e/ZzTVcjIiIi6iyR/Om5I9Qlijdvx8bGCt66TPRbJ1r/623JS0REvz3ypfydmh7jGgsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIb11gQUYe4xoKIiDrCNRakwBELIiIiIiJSGxMLIiIiIiJSG8euiKhDcb0S4ePjA11d3ZcdChEREb3COGJBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqE8nlcvnLDoKIXl2i9bKXHQIREf3K5Et1XnYI9BvEEQsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIbEwsiIiIiIlIbE4tX0OnTp+Hg4ID09PSXFkNpaSkCAwMxefJkODg4IC4u7qXFQkRERESvPm5STCpkMhmWL18OmUyGgIAAiMVivP766y87rF9dbm4uSktLsWDBguc+Z+fOnRCLxXB3d9doLMXFxcjMzMTFixdx+fJlSKVShISEtHmdqqoqvP/++222Y2lpiT179mg0NiIiIiKAicUracyYMcjPz4eOzsv5eCorK1FZWYnFixdj5syZLyWGV0Fubi4yMjI6lVjs2rULpqamGk8s8vPzkZKSAgsLC7z++us4f/78M8+ZPHkyJk+eLCgTi8UajYuIiIhIgYnFK+T+/fvQ19eHlpYW9PT0Xlocd+7cAQAYGhpqtF25XA6pVIqePXtqtN3fMn9/fwDA5s2bO6zn6emJuXPnokePHjh69OhzJRbW1tZwdXXVSJxEREREz8LEQkPS09OxevVqREdH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HBcjog7F9UqEj48PdHV1X3YoRERE9ArjiAUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREamNiQUREREREalNJJfL5S87CCJ6dYnWy152CEREv2vypTovOwSi58IRCyIiIiIiUhsTCyIiIiIiUhsTCyIiIiIiUhsTCyIiIiIiUhsTCyIiIiIiUhsTCyIiIiIiUtsrnVisWrUKDg4Oz1W3qqoKDg4OiIuLe8FRPdaZ2Pz9/eHu7v6CI+pYZ/untLQUgYGBmDx58q/ar0RERET028SNkUmFTCbD8uXLIZPJEBAQALFYjNdff/1lh/Wry83NRWlpKRYsWPDc5+zcuRNisVijiaRcLkdmZia+//57XLx4Ebdu3YKRkRGGDh2K+fPnw9bWtsPzm5qaMHPmTFRWVmLGjBn461//qrHYiIiIiBRe6RGLFStWID8//2WH8btTWVmJyspKfPDBB5g5cyZcXV1/t4lFfHx8p87ZtWsX0tPTNRrHo0ePsHLlSvz888945513sGzZMnh4eKC0tBQ+Pj44fPhwh+fHxsbi3r17Go2JiIiI6Glqj1i0tLSgubkZ3bt310Q8Ajo6OtDR4aDKr+3OnTsAAENDQ422K5fLIZVK0bNnT422+1vm7+8PANi8eXO7dbS1tREXF4exY8cKyj08PODl5YXw8HC8++670NJS/Z3g0qVL2LVrFz7++GOEh4drNHYiIiKiJ3XqqT09PR2rV69GdHQ0Lly4gPT0dNTU1GDFihVwd3eHXC7H3r17ceDAAVy/fh1aWlqwsbGBn5+fynqEjIwM7NmzB+Xl5ZDJZDA2NoadnR2WLFmC3r17A3i8jiEjIwOnT58WnPvjjz8iMjISpaWl0NfXh7OzM6ZPn95uvLGxsSrX9/f3R3V1teDX5ZMnTyItLQ0//fQTbt++DV1dXYwYMQK+vr4qD3WacPbsWWzZsgUlJSWQyWSwsLDAjBkzMG3aNEG94uJipKam4vz586itrYW2tjasra0xZ84cTJ48WaXd5+2ftvj7++Ps2bMAgNWrV2P16tUAgIMHD8LMzAxSqRQJCQnIzs5GXV0devXqBUdHRwQGBsLU1FTZzunTpxEQEICQkBBI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BRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqY2JBRERERERqU0kl8vlLzsIInp1idbLXnYIRES/WfKlOi87BKJfDUcsiIiIiIhIbUwsiIiIiIhIbUwsiIiIiIhIbUwsiIiIiIhIbUwsiIiIiIhIbUwsiIiIiIhIbUwsXkGnT5+Gg4MD0tPTX1oMpaWlCAwMxOTJk+Hg4IC4uLiXFgsRERERvfq4uTKpkMlkWL58OWQyGQICAiAWi/H666+/7LB+dbm5uSgtLcWCBQue+5ydO3dCLBbD3d1do7EUFxcjMzMTFy9exOXLlyGVShESEtLmdVatWoWMjIx22xo0aBD279+v0fiIiIiImFi8gsaMGYP8/Hzo6Lycj6eyshKVlZVYvHgxZs6c+VJieBXk5uYiIyOjU4nFrl27YGpqqvHEIj8/HykpKbCwsMDrr7+O8+fPt1v3L3/5C8aPH69SXlhYiPT0dLz55psajY2IiIgIYGLxSrl//z709fWhpaUFPT29lxbHnTt3AACGhoYabVcul0MqlaJnz54abfe3zN/fHwCwefPmDut5enpi7ty56NGjB44ePdphYjFy5EiMHDlSpfzw4cMAgP/zf/6PGhETERERtY2JhYakp6dj9erViI6Oxo8//oj09HTcuXMH5ubm8PHxwZQpUwT13d3dYWpqis8++wxRUVG4cOECDA0NcfDgQZw+fRoBAQEqU13kcjkOHDiAAwcO4Nq1awAAMzMzTJ48GQEBAcp6jx49wtdff42srCzcvHkT3bp1g729PRYsWIDhw4d3eB/+/v44e/YsAGD16tVYvXo1AODgwYMwMzODVCpFQkICsrOzUVdXh169esHR0RGBgYEwNTVVtvPkPUilUqSkpODmzZv48MMPlSMAR44cwe7du3H58mW0tLTA2toac+bMgYuLi0pcp0+fxo4dO1BcXAypVAoTExOMHTsWn3zyCYyMjAAAKSkpyM3NxbVr13Dv3j0YGhpi/PjxCAwMhJmZmaC948ePIykpCVevXkVTUxOMjIxgY2OD4OBgmJubC/rBwcFBeV5704+erFddXS04R9F36jA2Nlbr/Orqapw6dQp2dnawsrJSqy0iIiKitjCx0LCN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KoiIiOitqLTEAnj18DA7Ozvs2bMHGzZswMuXL2FkZIQmTZpITjpdXV1x5MgR7N69GxkZGTAwMICNjQ2mTZum9CC717Vs2RIBAQHw9/fHxo0boaenJz4AbujQoUr1586di19//RWHDh3CwYMH0aZNG6xevRq//PILkpKSxHpyuRz+/v5Yvnw5tm/fjoKCAjRp0gR+fn4IDw+v1MQCeHUb1JUrV2L9+vXYtGkTXr58CQsLC8yYMUPygDx1dXX4+flh2bJl2L9/P3Jzc2FlZYXZs2fj9u3bSolFefunPDQ0NODv7y8+IC8qKgpyuRyOjo7w9vZG3bp1y9yWh4cHbG1tERoaim3btiE3Nxc1a9aElZUVpk6dKqnr6uqK+vXrIyQkBKGhoXj58iWMjY3Rvn178bkYrVu3xqJFi7Bu3TqsXr0a2tra6NChAwIDAzFu3DhJe87OzoiIiMCBAwfw9OlT6OrqomHDhli4cCEcHR3Fej179kRsbCwOHz6MY8eOobCwELNmzSo1sfD29kZGRgbCwsKQlZUFQRCwb98+lROLxMRErF69WlIWFRWFqKgocf+LPqCQiIiI6F2TCeW53ysRfXRki9/dLXmJiD4UwtRKvXZL9K9QaWssiIiIiIjo48XEgoiIiIiIVMbEgoiIiIiIVMbEgoiIiIiIVMbEgoiIiIiIVMbEgoiIiIiIVMZ7oRFRqdboB8HNzQ2amppVHQoRERG9xzhiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKmNiQUREREREKpMJgiBUdRBE9P6SLc6v6hCIiP4VhKkaVR0CUZXiiAUREREREamMiQUREREREamMiQUREREREamMiQUREREREamMiQUREREREamMiQUREREREamMicV76Pz587Czs0NERESVxRAbGwsvLy907doVdnZ2WLNmTZXFQkRERETvP95wmZTk5+dj2rRpyM/Ph6enJ+RyORo1alTVYb1zJ06cQGxsLMaPH1/m92zduhVyuRx9+/at1FiuX7+OyMhI3Lx5E3fu3EFubi5mzZpV6nZSUlKwbt06nD59Gk+ePIG+vj5sbGzg4+ODhg0bVmp8REREREws3kNt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nrOzMyIiInDgwAE8ffoUurq6aNiwIRYuXAhHR0exXs+ePREbG4vDhw/j2LFjKCwsxKxZs0pNLLy9vZGRkYGwsDBkZWVBEATs27dP5QfYTZ48Gebm5ti7dy+Cg4Px4sUL1K5dG66urvDw8JDciYyIiIioMsiE1+eC0DuhePL26tWrJU9dJnrfyBbz1rRERCURpvIaLZEC11gQEREREZHKmFgQEREREZHKmFgQEREREZHKuMaCiErFNRZERCXjGgui/+GIBRERERERqYyJBRERERERqYzjd0RUqjX6QXBzc4OmpmZVh0JERETvMY5YEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRyphYEBERERGRymSCIAhVHQQRvb9ki/OrOgQioveSMFWjqkMgeq9wxIKIiIiIiFTGxIKIiIiIiFTGxIKIiIiIiFTGxIKIiIiIiFTGxIKIiIiIiFTGxIKIiIiIiFTGxOI9dP78edjZ2SEiIqLKYoiNjYWXlxe6du0KOzs7rFmzpspiISIiIqL3H2/ATEry8/Mxbdo05Ofnw9PTE3K5HI0aNarqsN65EydOIDY2FuPHjy/ze7Zu3Qq5XI6+fftWaizXr19HZGQkbt68iTt37iA3NxezZs0qcTvp6enYuHEjTp48ieTkZOjp6cHS0hJDhw5Fly5dKjU2IiIiIoCJxXupbdu2OHXqFDQ0qubjSUxMRGJiInx8fDBkyJAqieF9cOLECezfv79cicW2bdtgYmJS6YnFqVOnEBYWBgsLCzRq1AhXr14tse7z58/h7u6OlJQU9O/fH40aNUJGRgb279+PqVOn4ocffoCrq2ulxkdERETExOI9kpOTA11dXaipqUFbW7vK4khLSwMAGBgYVGq7giAgNzcX1atXr9R2/808PDwAAIGBgaXWc3V1xahRo1CtWjUcPXq01MTixIkTuH//PqZMmYJhw4aJ5V988QWcnZ2xe/duJhZERERU6ZhYVJKIiAjMmTMHAQEBuHz5MiIiIpCWlgZzc3O4ubmhZ8+ekvp9+/aFiYkJvv32W/j7++PatWswMDDAvn37cP78eXh6eipNdREEAXv37sXevXsRFxcHADA1NUXX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TU2Fn58fvvjiC95z/i15/vw5/vjjDwCvpjPk5OTg6NGjAIB27dqhRo0aVRneB2XhwoX473//Cx8fH+Tk5ODatWviazY2NtDS0qrC6D483333HZo2bYpGjRpBW1sbt2/fxqZNm9CoUSPx2S1UOeRyOezs7Ip9rWnTpmjSpMk7jujDNnHiRNjZ2cHa2hoAcPLkSezZswdDhw79aNdXAIBMEAShqoMgovfLvXv38Ouvv+LKlSvQ1dWFi4sLvL29oampWdWhfZAePnxY4mLL1atXl3iyQOXXt29fJCUlFfvavn37eAvUSrZhwwYcPnwYiYmJKCwshImJCbp164YRI0ZwCto7cP78eXh6eiIkJAS2trZVHc4HZfHixTh9+jRSUlIgCALMzMzQv39/DBkyBDKZrKrDqzJMLIiIiIiISGW8DQYREREREamMiQUREREREamMiQUREREREamMiQUREREREamMiQUREREREamMiQUREREREamMiQUREREREamMiQUREREREamMiQURVarU1FQYGBhg7dq1kvIxY8bAwsKiaoL6QMyePRsymQzx8fHvZHsbNmxQ2l5ubi5MTU0xZ86ccrdX0rFBFaf4jE6cOFHVoVAVU/X7gcfS++XixYv45ptv0KtXL9jZ2b3VzyU+Ph6mpqaws7OT/Bs4cGC522JiQUSVasaMGTA2Noabm1uZ6icnJ2Pq1Klo3rw55HI59PX10ahRIwwdOhS7d++W1O3SpQv09PRKbEvxP9bz588X+/rTp09RrVo1yGQybNq0qcR2LCwsIJPJxH9aWlqwsLDAV199hYSEhDLt14eqWrVq+OGHH/Drr78iKSmpXO8t77FBH7fLly9j9uzZ7yyRpqoXHx+P2bNn4/Lly+90u+/jsZabm4tGjRrh+++/f2fblMvlOHToEA4dOoQdO3bAxsam3AkNEwsiqjQPHjxAUFAQvv76a2hoaLyx/j///INWrVohICAAHTt2hK+vL3755Rf06dMHt27dQnBwcKXGt2XLFuTl5cHS0hJBQUGl1q1fvz42bdqETZs2wc/PD/b29ggKCoK9vT0eP35cqXH924wdOxYymQxLly4t83vKe2xQ2YwcORK5ublwcHCo6lAq3eXLlzFnzpz36mSP3q74+HjMmTOnShKL9+1Y+/TTT+Ht7Y2uXbsW+/qLFy+wbNky9O7dG507d8bo0aNLvKj2Jubm5vjpp59Qt25d1KpVC7Vq1YKamhp++eWXcicW/HYnokqzZs0ayGQyDBs2rEz1Fy9ejNTUVOzduxeff/650uvJycmVGt/69evRtWtXfP755/Dx8UFcXBwaNmxYbF0DAwOMGDFC/N3Lywu1a9eGv78/goOD8d1331VqbP8murq6+OKLL7BhwwbMnz8f2trab3xPeY+NqlZQUIC8vDxUr169qkMplbq6OtTV1as6DCJ6xxYtWoS4uDj8/PPPMDY2RlRUFCZNmoTQ0FCYmZmVqy2ZTAYNDQ0kJCSgV69e0NbWhqWlJTQ1NcsdF0csiKqQYk7rsWPHMHfuXJibm6NatWqwt7fH2bNnAQDR0dHo3LkzdHV1YWJignnz5hXb1vnz5zFgwADUqlUL2trasLGxwYIFC5Cfny+p9+eff2LMmDFo3LgxqlevDrlcjk8//RR79uxRanPMmDGQyWTIyMgQT6x1dHTw6aef4ty5c0r1w8LCYGdnh9q1a5dp/+/cuQMAcHR0LPb1unXrlqmdsrh48SIuX76M0aNHY/jw4dDQ0HjjqMXrevbsCQD4+++/S6wTGRkJmUyG5cuXF/v6J598AmNjY7x8+RJA+T6P4ig+o+LIZDKMGTNGqXz79u3o3Lkz5HI5qlevDnt7e+zcubNM21Po3bs3Hj9+jKioqDLVL+nYKCwsxIIFC+Dg4IC6detCS0sLZmZm8PLyQlpamlgvPT0dOjo6+OKLL4pt/8cff4RMJpNc6czIyMD3338Pa2traGtrw9jYGMOGDUNcXJzkvYq/w6NHj2LevHmwsrKCjo4OduzYAQA4fPgwhgwZgoYNG6JatWowNDREjx49EB0dXWwsu3btQqtWraCjowMzMzPMmTMHR48ehUwmw4YNGyR18/Ly8PPPP6NZs2bQ0dGBoaEh+vbti0uXLpWpX4ubF19Z3ysWFhbo0qULLl68iG7dukFPTw81a9bE6NGjkZqaKqmblZWFGTNmwN7eXvwOsra2xg8//IBnz54ptS0IAtauXQt7e3vo6elBT08PLVq0wMyZMwG8mtaomDLXtWtXcVpiccfz665evYoBAwbAyMgIOjo6sLW1xaJFi1BQUCCpV97vt+Iopl/+9ddf8PHxgYmJCapXrw5HR0fExsYCAHbv3o22bduiWrVqsLCwQGBgYLFtrVu3TqxnYGCAHj164I8//lCqV1hYiF9++QWWlpbQ0dFB8+bNsWXLlhJjTEpKgpeXF8zMzKClpQVTU1N4eHgofYblVdZ+7tKlS7Hr6+Lj4yGTyTB79mwAr45bxdV5Nzc38TPv0qULAODEiRPi39CKFSvQuHFj6OjooHHjxlixYoVS+4rj93VF2wEqfqwpjp+0tDSMGTMGtWrVglwuR//+/cWLYoGBgWjatCl0dHTQpEkThIeHK7WzcuVK9OjRA/Xq1YOWlhZMTEwwYsSIYkdPCgoKMG/ePFhaWmLPnj04f/48bt++jXXr1mHUqFGwsbFBRESEJL6yHN/x8fGYNm0abG1tsWLFCjg7O+PQoUOwsbHBvHnzxD5RfI6v92FRHLEgeg/88MMPKCgowOTJk/HixQssWbIEPXr0QEhICMaOHQsPDw98+eWX2LFjB2bOnAlLS0vJ1fQDBw7giy++gLW1NaZMmYKaNWvizJkzmDlzJi5fvoywsDCx7p49e3Dr1i0MHjwY5ubmSEtLw8aNG/HFF19gy5YtGD58uFJ8PXv2hLGxMWbOnIm0tDQsXboULi4uuHfvHuRyOQAgJSUFsbGxmDRpUpn328rKCgCwdu1a+Pj4lHiC/LqSpiIVdwKjsH79eujp6WHgwIHQ1dVFnz59sHHjRsydOxdqamW7xqJIhGrVqlVinR49eqBu3boICQlR6os7d+7g7NmzmDRpknglqCKfhypmzJiBBQsWoFevXpg3bx7U1NSwZ88eDBo0CP7+/pgwYUKZ2vnkk08AvPofTK9evUqtW9qx8eLFC/z6668YOHAgPv/8c+jq6iImJgbr16/HH3/8gQsXLkBLSwuGhobo168fwsPD8eTJE9SsWVNso7CwEFu2bEHLli3RunVrAK+Sik6dOuH+/ftwd3dHs2bNkJSUhJUrV8Le3h7nz5+Hubm5JJapU6fi5cuXGDduHPT19WFjYwPg1QnPkydPMGrUKNSvXx+JiYlYt24dHB0dERUVhf/85z9iG9u3b8ewYcNgZWWFWbNmQUNDAxs3bhT/Z1/Uy5cv0atXL5w+fRojR47ExIkTkZGRgbVr1+LTTz/FyZMnYWdnV6bPoziqfq8Ar6awOTo6YuDAgXB1dcXFixcRFBSE8+fPIyYmRhzRUfTJwIEDxcQ9OjoaixYtwqVLl/D7779L2h05ciS2bNkCe3t7/PTTTzA0NMStW7ewc+dOzJ07F1988QWSkpIQGBiI6dOno2nTpgD+951RkvPnz+Ozzz6DpqYmJkyYgLp16yIiIgLff/89rly5UuwJeFm+395k9OjR0NPTw/Tp0/Ho0SMsWbIEPXv2xLx58zBt2jR4eXnB3d0d69evx/jx42Fra4vOnTuL7//++++xaNEidOjQAT///DOysrIQGBiIrl27Ijw8HM7OzmLdb7/9Fn5+fnBwcMA333yD1NRUTJgwodjR1/v37+OTTz7BixcvMHbsWFhZWeHvv//GqlWrEBUVhfPnz8PAwKBM+6hqP7+Jg4MDpk+fjp9//hkeHh7i31WdOnUk9VasWIHk5GSMHz8ecrkc27Ztw6RJk/DkyRPMmjWr3Nut6LGm0KtXL9SvXx9z587F33//jeXLl2PAgAH44osvEBgYiLFjx0JHRwfLly+Hq6srbt++DUtLS/H9ixcvRseOHTFp0iTUrFkT169fx7p163D8+HFcu3YNRkZGYt2JEydi9erV6Ny5M3Jzc1GtWjUsXLgQampqaN26Nf766y/xglxeXh7atWsnXrhTjGLk5eWJ3/OjR4/G119/DQDIzMyEqakpGjVqBH19fWRkZGDbtm1wdHTEqFGjAKDUNY4igYiqTHBwsABAaNOmjZCXlyeWh4eHCwAEDQ0NISYmRizPy8sT6tatK3Ts2FEsy83NFerUqSP85z//EV6+fClpf+nSpQIAISoqSizLzs5WiiMnJ0do3Lix0LRpU0n56NGjBQCCl5eXpHzHjh0CAGH16tVi2fHjxwUAgp+fX7H7Onr0aMHc3FxSdvfuXUFfX18AIDRo0EAYPny48Ntvvwnnz58vto3PPvtMAPDGf0X7TNFHhoaGwujRo8WyvXv3CgCEgwcPKm3H3NxcaNKkifDo0SPh0aNHQlxcnBAUFCQYGBgIGhoawrVr14qNT2Hq1KkCAOHGjRuS8hkzZggAhAsXLohl5fk8Zs2aJQAQ7t27J5YpPqPiAJDs84ULFwQAwo8//qhU9/PPPxfkcrmQmZkplimOz6LbK0pDQ0Po06dPsa8VVdqxUVhYKDx79kypfN26dQIAYfv27WLZ/v37BQBCQECApO7Ro0cFAMKSJUvEskmTJgk6OjrC5cuXJXXj4+MFuVwu6RfFfjZu3FjIyclRiqW4zyg5OVkwMjISevfuLZa9fPlSMDU1FWrXri08efJELM/KyhIsLS0FAEJwcLBYrvj7PHTokKTtjIwMoUGDBsJnn32mtN3XKWIv+jdeGd8rgvDq7wCA8Ntvv0nKFXH/8ssvkjZevHihFJ/imD937pxYtn37dgGAMGLECKGgoEBSv+jvxe3bm3Tq1ElQV1cXrly5IpYVFhYKgwYNEgAIR48eFcvL8/1WEsXfZJ8+fYTCwkKx3M/PTwAgyOVy4f79+2J5amqqoK2tLQwdOlQsu3XrliCTyYRPP/1U8nklJiYKBgYGgrm5uZCfny+p261bN7FMEF79bctkMqW/1379+gnGxsZCQkKCJO6YmBhBXV1dmDVrllhWnv4uTz9/9tlnSt/9giAI9+7dEwBIYoiKilL6O3n9NT09Pcn+5OXlCe3btxc0NDQk5ebm5sX+DRW3jYoca4rjx9vbW1L+zTffiP9Py8jIEMuvXLkiABB++OEHSf3ivl8U32kLFy4UBEEQ2rVrJ2zcuFEAIPTs2VM4dOiQ0KFDB+HevXvCkSNHBB0dHUFbW1s4ffq08OjRI0EQBGHkyJGCtra2MGbMGOHevXviv1WrVgna2tqCr6+v+D1V3Gdx7949oUmTJsLgwYPL1IcKnApF9B7w8vKClpaW+LviSo29vb3kiqWWlhY6dOggXjkHgCNHjiAlJQVubm5IT0/H48ePxX+Kq1yHDx8W6+vq6oo/P3v2DGlpaXj27Bm6deuGmzdvIjMzUym+b775RvJ7t27dAEASx6NHjwBAciX5TRo2bIgrV66IV0+2bt2Kb775BnZ2dmjZsiUuXLig9B4dHR0cOXKk2H8jR44sdju7d+9Geno6Ro8eLZY5OzvD2Ni4xOlQt27dgrGxMYyNjdGwYUO4u7ujVq1aCA8PR/PmzUvdL8V2QkJCxDJBELB582Y0b94cbdu2Fcsr8nlU1JYtWyCTyTB69GjJcfL48WP069cPWVlZOHPmTJnbq1mzZpmmU5R2bMhkMlSrVg3Aq2F+xTGsOMaKDtn37NkTderUkfQr8KqfNTQ08OWXXwJ41ddbtmyBg4MD6tWrJ9lPXV1ddOzYUfI3oeDl5VXsmoqin1F2djbS0tKgrq4Oe3t7SXwXLlzAw4cPMWbMGNSoUUMs19PTg6enp1K7mzdvRpMmTdCuXTtJjC9evED37t3xxx9/IDc3t5geLRtVvlcU9PX14e3tLSnz9vaGvr6+ZLqelpaWOAqXn5+Pp0+f4vHjx3BycgIg/RwVV7MXL16sNFpY1tHD4qSmpuL06dPo168fWrZsKZbLZDL89NNPAFDsFMOyfL+9yaRJkyQjroq+7tevHxo0aCCWGxsbw8bGRtJ2eHg4BEHAtGnTJJ+Xqakp3Nzc8M8//4hT4xR1v/32W8namrZt26J79+6SmDIyMrB//37069cPOjo6kmPMwsIC1tbWxf4dvElF+7myfPnll6hfv774u5aWFr755hvk5+cXOzL4tvn4+Eh+V3z2o0aNgr6+vljesmVL6OvrKx1Xiu+XwsJCZGRk4PHjx2jVqhUMDAwkfzeKhdmTJ09GkyZNUFBQgKdPn8LJyQldu3ZFXl4eTExMxBF1NTU15OXlYfr06bCwsBD/DRo0CHl5eXj06JHke+p1ubm50NbWho6OTrn6g1OhiN4Drw9hK/7Yiw6XFn2t6NzzmzdvAgDc3d1LbD8lJUX8OTU1FTNmzEB4eHixJ4Xp6emSL8Pi4lMMzRaNQ/E/VUEQSoyjOBYWFvD394e/vz+SkpLwxx9/YNOmTYiIiECfPn1w48YNyQmpurq6eLLyuuLmIwOvpkEZGxujfv36kvURPXr0QFhYGB4/fqw0vcnCwkJ83oJiXrK1tXWZ9kmRPGzZsgU///wz1NTUcPLkScTHx2PRokWSuhX5PCrq5s2bEAQBTZo0KbFO0WPlTQRBKNP0tTcdGzt27MCSJUtw6dIlce2JwtOnT8WfFcnD0qVLcfv2bTRu3Bg5OTnYvXs3evToIU6ZePToEdLS0nD48GEYGxsXu83iTmAbN25cbN27d+/ip59+wu+//4709PRi9w0A7t27BwDiFKqiiiu7efMmcnNzS4wReDXtr+iJaXmo8r1StI2iJ7sAoK2tjYYNGyqtVVm5ciVWr16NGzduoLCwUPJa0c/xzp07MDExUZrioipF/zdr1kzptaZNm0JNTU0pZqBs329vUt6+/ueff8oUt6IsLi4OdnZ2YvzF/Q3b2tpKEoXY2FgUFhZi/fr1WL9+fZniLouK9nNlUUxVKsrW1hYA3up2S6Lq39nx48cxd+5cnDt3Ds+fPxfL1dTU8PjxY3Gtzv3791GtWjUYGRnB3NwcvXv3xqxZs+Dj4wNzc3NUr14du3fvRocOHSTT7Mp6fNerVw9paWl4+PAhHj16BD8/PwiCAFNT03L1BxMLovdASXd1KcvdXhQna7/++qs4v/x1ii8GQRDQo0cP3Lx5E5MnT4adnR0MDAygrq6O4OBgbN26VemEoLQ4ip4oKk6Onjx58saYS2JiYoJBgwZh0KBB+PLLL7F161YcPHhQad53edy7dw9RUVEQBKHEE8fNmzcrXXXS1dUtMYEpi1GjRsHHxwfHjx+Hk5MTQkJCoK6uLtmXin4eRZV0Yv/6on3F9mQyGSIjI0v8TIs7WSjJ06dPSz0pVijt2Ni9ezeGDBmCDh06wM/PDw0aNICOjg4KCgrQq1cvpf0fNWoUli5dipCQEMyfPx+7d+9Gdna2ZDRKcVw6OTmV6x7wxY1WZGdnw8HBATk5OfDx8UGLFi0gl8vFWzEeP368zO2/ThAEtGjRotTb9palf0uiyvdKeS1duhRTpkxBjx49MGnSJJiamkJLSwuJiYkYM2bMG4/jqlSW77eKtlEZbVeUYhsjRoyQ/H0UpRgtfJvK8x31b9yuKp99TEwMevToAWtra/j6+sLS0lJ81tKYMWOQk5MjjsQ+ePAAtra22L59Ozp06IBZs2Zh/fr1WLZsGZKSksT1M/369St3HMCrC2gXL17EwIEDUaNGDVhbW+PWrVsYMGCA0ntLu6DExILoX65Ro0YAynYifPXqVVy5cgUzZ85UenLyunXrVIpDcUJanukDpenYsSO2bt2KxMREldoJDg4W70BjaGio9PqMGTMQFBSklFioavjw4fjuu+8QEhKCTz/9FDt37kT37t1hYmIi1qmMz0MxmvP6gubirtw1atQIhw4dgpmZWbFX/cojPj4e+fn5b5wWBpR+bGzatAk6OjqIioqSnNjfunWr2LZatWqFVq1aYfPmzZg3bx5CQkLEhd0KxsbGMDQ0RGZmpkrJIQAcO3YMDx8+RFBQkNKD/WbMmCH5XXHHFMUVxqKKK2vUqBEePXqEbt26qTQF6G2Ki4vDixcvJKMWeXl5iIuLk1w137RpEywsLBAZGSnZl0OHDim12bhxY4SHhyMlJaXUUYuy3sxBQXGF+MaNG0qv3bp1C4WFhRW6Qv+2KWK6ceOG0oLhv/76S1JH8d9bt26VWFfB2toaMpkML168UPnvoKjy9nPNmjWLndZa3HdUWT5zxSh9Ua/3k2K7xV3MqOh234atW7eioKAAkZGRkhGOnJwcJCUlwdraWrzjm6+vL3788UfxDm4aGhoYP348xo8fD2dnZ0RGRmLfvn3F3oGrLO7du4dRo0aJd+n6559/ir3bFiD9/87r3s9vMiIqs549e6J27drw9fUt9o88NzcXWVlZAP535eL1KxXXr19XeU6ssbExmjVrJt7OsixOnDhR7BzywsJCca6sYoi7IgoLC7Fhwwa0aNECX331FVxdXZX+DRs2DNeuXUNMTEyFt1McY2Nj9O7dG7t378aWLVuQmZmpdNWwMj4PxSjM0aNHJeVLlixRqqtYgzJ9+nSlW0IC5ZsGpficP/vsszfWLe3YUFdXh0wmk1zRFgQB8+fPL7G90aNH459//sHWrVtx/PhxDBkyRDIPWE1NDV9++SX+/PPPEm+jW9ZbbZb0GR0+fFjplo12dnYwMTHBhg0bJFN/srOzsXr1aqW2R40aheTk5BJHLMrzebwtmZmZWLlypaRs5cqVyMzMRP/+/cUyxedYtJ/y8/Ph6+ur1KbiCuy0adOURjKKvl9xB5qyjoLWrl0bnTp1QkREBK5fvy5p85dffgGAYq++VrV+/fpBJpPh119/lUwFTEpKQnBwMMzNzdGmTRtJ3aVLl0r+hi9evKj0HWBkZARnZ2fs3r272L89QRDE9U/lUd5+bty4MbKysvDnn3+KZYWFhfjtt9+U2i7LZ75lyxY8ePBA/P3Fixf47bffoK6ujj59+ki2e+vWLcnFqby8PAQEBFRou29DSd8vP//8s9LfRt++fQEAfn5+kteuXbumdNe1ylBan1haWkJDQ0PpmDt9+jRHLIj+7XR1dRESEoL+/fvDxsYG7u7usLa2Rnp6Om7duoXdu3djz5496NKlC5o2bYpmzZph0aJFePbsGWxsbHD79m2sWbMGLVq0KPaqUnkMGjQI8+bNQ1JSkuTKfEkWL16MU6dOoW/fvmjbti0MDAyQnJyMXbt24cKFC+jatStcXFwqHM/hw4eRkJCAsWPHllhn4MCBmD17NtavX4/27dtXeFvFGT16NPbt24cpU6bAwMBAciIGoFI+j2HDhmH69Onw8PDArVu3ULNmTRw6dKjYW/K2b98es2fPxuzZs9G6dWsMGjQIpqamSEpKwoULF3Dw4EG8ePGiTPt28OBB1KpVq8Snwr6upGPD1dUVu3btQrdu3TBq1Ci8fPkSe/fuLfXWwV9++SWmTZsGb29vFBYWFjvNY8GCBTh16hQGDx6MwYMHo2PHjtDS0sI///yDgwcPol27dsXeg/11nTt3Rt26dTFlyhTEx8ejfv36uHz5MjZt2oQWLVrg2rVrYl0NDQ0sXrwYX375JTp06ICxY8dCQ0MDGzZsgJGREe7duye5Mjp58mQcOXIE3333HY4fP45u3bpBX18f9+/fx7Fjx8SRnKpkZWWFOXPm4Pr162jXrh0uXLiAoKAgNGnSRHL7YFdXV/z444/o3bs3vvjiC2RmZmLr1q3FPmBr0KBBGDJkCEJCQnDnzh3069cPNWrUwO3bt/H777+LJ6vt27eHmpoaFixYgKdPn0JXVxeWlpawt7cvMV4/Pz989tln+M9//iPeBnX//v34/fffMXz48BKfmVOVbGxs8N1332HRokVwcHDAkCFDxNvNZmdnY8uWLeIJaJMmTTBhwgT4+/ujW7duGDhwIFJTU+Hv749WrVopPf9k1apV6Ny5MxwcHDBq1Ci0adMGhYWFiIuLQ3h4uOQKdXmUp589PDywZMkSDBgwAJMnT4aWlhZ27txZ7JQkW1tbyOVyrFy5EtWrV4ehoSFq164tLqgHXiUM9vb28PT0hFwux9atWxETE4P/+7//k6xHmjhxIkJDQ+Hk5ARPT0+8ePECmzZtKnbKY0WOtcowYMAA/Pbbb3B2doaHhwe0tLRw5MgRXL16VWndX7NmzeDh4YHAwEA4OTlhwIABePToEQICAtCmTRtcuHChUkdejIyMYG1tjdDQUFhZWaFOnTrQ1dVF3759oaenhzFjxmDdunUYNmwYunTpgjt37iA4OJi3myWqSqXd4g6v3SpUoaTbi167dk348ssvBVNTU0FTU1OoXbu28Mknnwhz584V0tLSxHrx8fGCq6urUKtWLaFatWpC+/bthd27d6t8K1NBeHV7RA0NDWHx4sXFxv36LQfPnDkjfPvtt4KdnZ1Qu3ZtQUNDQzAwMBA6duwoLFmyRHj+/Lmk/meffSbo6uoWG48g/O/Wj4pbabq6ugoAhKtXr5b4HkEQhMaNGwsGBgbibU/Nzc2FZs2alfqessjLyxNq1qwpABC++uqrYuuU5/MorkwQBOHs2bNCp06dBG1tbcHIyEgYN26c8PTp0xKPof379ws9evQQatSoIWhpaQn169cXevXqJaxatUpSr6TbzWZnZwu6urrC1KlTy9wXpR0bgYGBQtOmTQVtbW2hbt26wrhx44S0tLQS4xcEQejTp48AQGjUqFGJ28zJyRHmzp0rNG/eXNDR0RH09PSEJk2aCF999ZVw9uxZpf0s6VaTV65cEXr27CkYGhoKenp6wmeffSacPHmyxL+PHTt2CC1atBC0tLSEBg0aCLNnzxZ2796tdPtcQXh1i1o/Pz/Bzs5OqF69ulC9enXB2tpaGD58uPD777+XuG+lxV5Z3yuK23VeuHBB6Nq1q1C9enXB0NBQGDFihJCcnCypm5+fL/z888+ClZWVoKWlJZiZmQnfffed8NdffyndxlIQXt1W1t/fX2jTpo1QrVo1QU9PT2jRooUwe/ZsSb0NGzYITZs2FTQ1NUs9Hoq6fPmy8Pnnn4vHd5MmTYSFCxdKbs9a0j6/qZ9eV9LfZHG371Qo6fargYGBQuvWrQVtbW1BLpcLTk5OwsmTJ5XqFRQUCPPnzxfMzMwELS0toVmzZsLmzZtLjOXRo0fC1KlThUaNGgna2tqCgYGB0Lx5c2HSpEmSW2KX95arZe1nQRCEAwcOCK1atRK0tLQEExMTYdq0acKtW7eK7aMDBw4Ibdq0EbS1tQUA4i1ji97i1M/PT7C2tha0tLQEa2trYdmyZcXGuGHDBqFx48aCpqamYGFhISxcuFA4duxYsbdKLe+xVtLxU9qtWIu7Be6ePXuEtm3bCtWrVxeMjIyEIUOGCP/880+xdfPz84XZs2cLDRo0ELS0tIQWLVoI27dvF6ZMmSIAEFJSUt4YnyAoH98lHa/nzp0TOnXqJFSvXl0AIDlus7KyhLFjxwo1a9YUqlWrJnTu3Fk4deqUIPv/GyAiqhSenp44fPgwYmNjJVcrx4wZgxMnThT7NFF6P23YsAFubm64d++eZN6un58ffvrpJ/HuPmVV0rHxMViyZAmmTp2KM2fOoGPHjlUdTpkobk9Z9KneRFXlxIkT6Nq1K4KDg8v0BPaPSd++fXH8+HFkZma+lZszlAfXWBBRpZo7dy7S0tJeDYnSByc3Nxe+vr747rvvypVUAB/HsfHixQul9SvZ2dkICAiAkZGR5BkmRETlUdyaxKtXryIyMhLdunWr8qQC4F2hiKiS1a5dGxkZGVUdBr0l1apVQ1JSUoXe+zEcG3FxcejduzeGDh0KS0tLJCUlYePGjbh37x5WrVql9EwIIqKy2rhxI0JCQuDi4gJjY2PcunULgYGB0NLSwty5c6s6PABMLIiIiCqNsbExOnbsiC1btiA1NRUaGhpo0aIFfH19MXjw4KoOj4j+xdq2bYs9e/Zg+fLlePLkCeRyObp164ZZs2aJdw6ralxjQUREREREKuMaCyIiIiIiUhkTCyIiIiIiUhkTCyIiIiIiUhkTCyIiIiIiUhkTCyIiIiIiUhkTCyIiIiIiUhkTCyIiIiIiUhkTCyIiIiIiUhkTCyIiIiIiUtn/A7WYZ6L3o/c9AAAAAElFTkSuQmCC", + "image/png": "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9fTr10+JhYiIiDwQTfpZ69jYWPr378/WrVtZtWoV1dXVeHp60r17d6ubztDQUHbv3s2WLVuoqKjA3d2dbt26MWPGDJsP2d2pT58+JCYmkpCQwOrVq3F1dbV8AC4sLMym/ty5c/nzn/9MVlYWO3bsoG/fviQnJ/OnP/2JkpISSz03NzcSEhJYtGgRGzZsoKamhu7duxMfH096enqTJhZwaxnUxYsXk5KSwpo1a6iursbX15eZM2dafSDP0dGR+Ph4Fi5cSGZmJkajkS5dujB79mwKCgpsEovG9k9jODk5kZCQYPlAXnZ2Nm5ubgQEBBAdHU27du3uua3IyEh69OjB+vXrWbduHUajkTZt2tClSxemTZtmVTc0NJQOHTqQmprK+vXrqa6uxsvLi2eeecbyXYynnnqK+fPns3z5cpKTk2nWrBkDBgxg6dKlREREWLUXGBhIRkYG27dv5+rVq7i4uNC5c2fee+89AgICLPVefPFF8vPz2bVrF3/729+ora0lNja2wcQiOjqaiooK0tLSuHbtGmazmY8++siuxKKiosIyMX/Dhg311klOTrYkFgBTp06lffv2bNmyhb179+Lh4cGoUaMs3wwRERERaWoGc2PWexWRXxzD+z/dkrwiIiJyi3lakz7//0no0aWIiIiIiNhNiYWIiIiIiNhNiYWIiIiIiNhNiYWIiIiIiNhNiYWIiIiIiNhNiYWIiIiIiNjtX28dKxH5SS1ptYLw8HCcnZ0fdigiIiLyM6YRCxERERERsZsSCxERERERsZsSCxERERERsZsSCxERERERsZsSCxERERERsZsSCxERERERsZsSCxERERERsZsSCxERERERsZsSCxERERERsZsSCxERERERsZsSCxERERERsZvBbDabH3YQIvLzZXjf9LBDEBER+bdjnub0sENochqxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERu/2sE4vZs2fTv3//e6pbXFxM//79WbJkyQOO6pbGxBYZGUlwcPADjqhhje2f/Px8Jk6cyNChQ3/SfhURERGRf03/fl/mELuZTCZmzJiByWQiKioKNzc3nnjiiYcd1k8uJyeH/Px8JkyYcM/7rF27Fjc3tyZPJPPy8ti5cycnT57k9OnTGI1GYmNjGzxO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9CExMZGEhARWr16Nq6ur5QNwYWFhNvXnzp3Ln//8Z7KystixYwd9+/YlOTmZP/3pT5SUlFjqubm5kZCQwKJFi9iwYQM1NTV0796d+Ph40tPTmzSxgFvLoC5evJiUlBTWrFlDdXU1vr6+zJw50+oDeY6OjsTHx7Nw4UIyMzMxGo106dKF2bNnU1BQYJNYNLZ/GsPJyYmEhATLB/Kys7Nxc3MjICCA6Oho2rVrd89tRUZG0qNHD9avX8+6deswGo20adOGLl26MG3aNKu6oaGhdOjQgdTUVNavX091dTVeXl4888wzlu9iPPXUU8yfP5/ly5eTnJxMs2bNGDBgAEuXLiUiIsKqvcDAQDIyMti+fTtXr17FxcWFzp0789577xEQEGCp9+KLL5Kfn8+uXbv429/+Rm1tLbGxsQ0mFtHR0VRUVJCWlsa1a9cwm8189NFHdicWRUVFJCcnW5VlZ2eTnZ1tOf/bP1A4adIkvL29SUtLY9GiRTRr1oz+/fsTFRXV6PkrIiIiIvfCYG7Meq8i8otjeP+nW5JXRETkl8I8rUmf7/8sNNkcCxERERER+eVSYiEiIiIiInZTYiEiIiIiInZTYiEiIiIiInZTYiEiIiIiInZTYiEiIiIiInZTYiEiIiIiInb791tAV0Sa1JJWKwgPD8fZ2flhhyIiIiI/YxqxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuxnMZrP5YQchIj9fhvdNDzsEERGRnw3zNKeHHcLPlkYsRERERETEbkosRERERETEbkosRERERETEbkosRERERETEbkosRERERETEbkosRERERETEbkosRERERETEbj/rxGL27Nn079//nuoWFxfTv39/lixZ8oCjuqUxsUVGRhIcHPyAI2pYY/snPz+fiRMnMnTo0J+0X0VERETkX5O+8CE2TCYTM2bMwGQyERUVhZubG0888cTDDusnl5OTQ35+PhMmTLjnfdauXYubm1uTJ5J5eXns3LmTkydPcvr0aYxGI7GxsfUep7i4mFdeeaXedjp37szGjRubNDYRERER+JknFjNnzuS///u/H3YYvzhFRUUUFRUxZcoURo0a9bDDeWhy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N27cICIiAqPRyOuvv46fnx8uLi4YDAZWrVrFoUOHmiSmxjKbzcTExHDu3DnCwsLo0aMHrq6uODg4kJGRQVZWls0owc/J3VYLMxgMLFq0yGrE4XZ118q9OnHiBDExMXTo0IGYmBjat29Ps2bNMBgMvPvuu1Z95OHhQWpqKkePHuXAgQMcPXqUBQsWsGTJEuLj4xucR2GPsWPH8pvf/MaqbOHChQBMmTLFqvz2kaym8p//+Z94enqyadMmJRYiIiLS5JpsLdeOHTtSWFhI796972k50UceeYRBgwYxaNAg4NYqPVOmTOHDDz/knXfeqXefupV1zp8/b7Pt7NmzNmV1T9brWwWnuLjYan7HwYMH+e6775g1axavvPKKVd2kpKQfPZ/GeOyxx4D6Y64rq6tz+vRpCgoKiIiIsPlQ27Zt26z+bmz/NNZjjz3GF198wbVr12xeSzp79iwuLi6WCdIN6dixI59//jnt2rWjU6dODdate+JeUFBg9XrXnbKysqipqWHRokWWvgMwGo02o08Ajo6O9O/f37J60+nTpxkzZgwpKSnEx8cD9zdK1dA+nTt3thk5quvHn2pC9c2bN7UqlIiIiDwQTfaBvKCgIGpra0lISKh3e92rLUC973l3794dgIqKirseo25J2tzcXL799ltLeXV1NWvXrrWpX3dTevDgQavyrKwsvvvuO6syR0dHAJs5H/v377d6P78pdO/enXbt2pGRkcHly5ct5SaTiTVr1mAwGCwraNU90b8zrjNnzpCTk2NV1tj+aawhQ4ZQW1vLqlWrrMr37dtHfn4+/v7+dx2BuF3dxObExESbkSOwvlYCAgJwdnZm2bJllrkkt6vrl7v9fitWrLAZ0anv+vP19aV58+ZWN911czYauibv1KJFi4d+4377NXW7zMxMKisr6dWr108ckYiIiPwSNNmIxbBhwwgODmbjxo2cOnWK5557Dg8PD8rKyjh27BgXL14kPT0dgEmTJuHm5kbfvn1p27Yt165dIyMjA4PB8KOr6bz99ttMmDCB8ePHM2LECMtyqvXdoPr6+jJgwAC2bNmC2Wyma9euFBQUkJOTQ8eOHa0m7j711FN4enqycOFCSkpKePTRRykoKGDHjh34+flx5syZpuoqHB0dmTFjBtOnT+fNN98kJCSEli1bsnv3bo4fP054eLglKerUqROdO3cmNTWV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di2TJ08mJCQEZ2dnDhw4wJkzZ2xGUeLi4igrK2PgwIF4e3tz8+ZNdu/ezfXr1wkKCrLU6927Nxs3bmTevHkMGjQIJycnevXqZTUicqfevXuTnp5OUlISnTp1wmAw4O/vb7NaVWNcv36dqKgoiouLGTVqFN9++61V4gi3Rjw8PT0tf2/fvp2SkhLgViJVXV3N8uXLAfD29rY6TxEREZGm0KSftY6NjaV///5s3bqVVatWUV1djaenJ927d7e66QwNDWX37t1s2bKFiooK3N3d6datGzNmzLD5kN2d+vTpQ2JiIgkJCaxevRpXV1fLB+DCwsJs6s+dO5c///nPZGVlsWPHDvr27UtycjJ/+tOfLDdecOuVlISEBBYtWsSGDRuoqamhe/fuxMfHk56e3qSJBdxaBnXx4sWkpKSwZs0aqqur8fX1ZebMmVYfyHN0dCQ+Pp6FCxeSmZmJ0WikS5cuzJ49m4KCApvEorH90xhOTk4kJCRYPpCXnZ2Nm5sbAQEBREdH065du3tuKzIykh49erB+/XrWrVuH0WikTZs2dOnShWnTplnVDQ0NpUOHDqSmprJ+/Xqqq6vx8vLimWeesXwX46mnnmL+/PksX76c5ORkmjVrxoABA1i6dCkRERFW7QUGBpKRkcH27du5evUqLi4udO7cmffee4+AgABLvRdffJH8/Hx27drF3/72N2pra4mNjW0wsYiOjqaiooK0tDSuXbuG2Wzmo48+siuxqKiosEzM37BhQ711kpOTrRKL9PR0ywf+bq8D0K9fPyUWIiIi0uQM5sas9yoivziG93+6JXlFREQAzNOa9Nm3/ESabI6FiIiIiIj8cimxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERu2mRYBFp0JJWKwgPD8fZ2flhhyIiIiI/YxqxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuxnMZrP5YQchIj9fhvdNDzsEERH5BTBPc3rYIYidNGIhIiIiIiJ2U2IhIiIiIiJ2U2IhIiIiIiJ2U2IhIiIiIiJ2U2IhIiIiIiJ2U2IhIiIiIiJ2U2IhIiIi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v30k63bZ2dmEhYVRVFTEggULaNWqlcX2X3/9lf/7v//jueeew93d3ZyY5ebmAreS0HPnzuHm5lbhCJCIiIjIg6q2x5lNmzYlMzOTjh073tdyok888QS9evWiV69ewK33xcePH8/f//73u37Aq3xlnbNnz1ptO336tFVZ+ZP1q1evWm3Lzs62eJq7d+9eLl26xJQpU+jXr59F3aioqHueT1U0btwYqDjm8rLyOidOnCAjI4OQkBCrD7Vt3LjR4u+q9k9VNW7cmO+++45r165Z3ZSePn0aJycn8wTpyjRt2pRvv/2Whg0b0rx580rrlo94ZGRkWLzedafk5GRKS0uZP3++ue8AioqKrEaf4NYSrt26dTOv3nTixAmGDh1KTEwM8+bNAx5slKqyfVq0aGE1clTejz179rxn29nZ2YwePZrCwkIWLFhA27ZtrercvHmTK1eusHPnTnbu3Gm1fevWrWzdupV33nmHYcOG3fOYIiIiIver2j6Q5+/vT1lZGRERERVuL3+1BSA/P99qe/lNUkFBwV2PUb4kbVpaGj///LO5vKSkhBUrVljVL78p3bt3r0V5cnIyly5dsiizt7cHsJrzsXv3bov386tD27ZtadiwIYmJieTl5ZnLjUYjy5cvx2AwmFfQKn+if2dcJ0+eJDU11aKsqv1TVb1796asrIylS5dalO/atYv09HR8fHzuOgJxu/KJzZGRkVYjR2B5rfj6+uLo6MjixYvNc0luV94vd/v9YmNjrUZ0Krr+vL29qVmzpkUSWj5no7Jr8k61atWqMJG1VU5ODmFhYVy7do2IiAj++Mc/3vX4s2bNsvr3wQcfAPDss88ya9YsfHx8qj1GERER+X2rthGLPn36EBAQwJo1azh+/DjPP/88bm5u5ObmcujQIc6fP09CQgIA48aNw8XFhS5dutCgQQOuXbtGYmIiBoPhnqvpvPvuu4wePZpRo0YxcOBA83KqFd2gent706NHD9avX4/JZKJ169ZkZGSQmppK06ZNLSbudu7cGXd3d+bOnUtOTg7169cnIyODLVu20KpVK06ePFldXYW9vT2TJk3i/fffZ8SIEfTv35/atWuzfft2Dh8+THBwsDkpat68OS1atCAuLo7i4mK8vLzIzMxk/fr1tGrVimPHjj1w/1RVQEAASUlJLFu2jOzsbLp27cq5c+dYu3Yt7u7uFis8VaZ9+/aEhoayaNEihgwZQp8+ffDw8CAvL49jx46xa9cudu/eDUCDBg2YMGECH3/8MUFBQfj7++Pp6Ulubi5paWlMmTKFNm3a0Lt3b1asWME777xD//79cXR0ZM+ePZw8edJqFGXmzJnk5ubSs2dPPD09uXnzJtu3b+f69ev4+/ub63Xs2JE1a9Ywa9YsevXqhYODAx06dLAYEblTx44dSUhIICoqiubNm2MwGPDx8bFaraoqrl+/TlhYGNnZ2QwePJiff/7ZInGEWyMe7u7uODg4VPgdkPJ5PY0bN65wu4iIiIitqnVm59SpU+nWrRsbNmxg6dKllJSU4O7uTtu2bS1uOgMDA9m+fTvr16+noKAAV1dX2rRpw6RJk6w+ZHenTp06ERkZSUREBMuWLcPZ2dn8AbigoCCr+jNmzOBvf/sbycnJbNmyhS5duhAdHc1HH31ETk6OuZ6LiwsRERHMnz+f1atXU1paStu2bZk3bx4JCQnVmljArWVQFyxYQExMDMuXL6ekpARvb28mT55s8YE8e3t75s2bx9y5c0lKSqKoqIiWLVsybdo0MjIyrBKLqvZPVTg4OBAREWH+QF5KSgouLi74+voyduxYGjZseN9thYaG0q5dO1atWsXKlSspKiqiXr16tGzZkokTJ1rUDQwMpEmTJsTFxbFq1SpKSkrw8PCge/fu5u9idO7cmdmzZ/P5558THR1NjRo16NGjB4sWLSIkJMSiPT8/PxITE9m8eTNXrlzBycmJFi1a8PHHH+Pr62uu17dvX9LT09m2bRtff/01ZWVlTJ06tdLEYuzYsRQUFBAfH8+1a9cwmUxs2rTJpsSioKDAPDF/9erVFdaJjo7G3d39gY8hIiIiYiuDqSrrvYrI747hk99uSV4REfn9ME3UyoX/bqptjoWIiIiIiPx+KbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbaQFhEanUwjqxBAcH4+jo+KhDERERkceYRixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmBpPJZHrUQYjI48vwifFRhyAiIo+IaaLDow5B/oVoxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGz2WCcW06ZNo1u3bvdVNzs7m27durFw4cKHHNUtVYktNDSUgICAhxxR5araP+np6YwZM4YXX3zxN+1XEREREfnXpK+eiBWj0cikSZMwGo2EhYXh4uLCk08++ajD+s2lpqaSnp7O6NGj73ufFStW4OLiUu2J5JEjR9i6dSvHjh3jxIkTFBUVMXXq1Lse5/z580RHR7N3716uXbtGgwYNePXVV/nzn/9MjRo1qjU2EREREXjMRywmT57Mrl27HnUYvztZWVlkZWXx5ptvMnjwYPz8/H63icXixYurtM/KlStJTEys9lh27dpFfHw8hYWF9/wtzp49y7Bhw9ixYwcBAQFMnDiRzp078/nnnzNx4kRMJlO1xyciIiJi84hFaWkpJSUl1KxZszriseDg4ICDgwZVfmu//PILAK6urtXarslkoqioiNq1a1dru//KQkNDAVi0aFGl9QIDAxk+fDi1atXiq6++4tChQ3et+9lnn1FYWMjnn3/OU089BcCAAQPw8vIiMjKSrVu34ufnV30nISIiIkIVE4vExESmT59OZGQkhw8fJjExkQsXLjB58mQCAgIwmUysW7eOjRs3cubMGezs7GjXrh0hISFW8xGSkpJYs2YNmZmZGI1G3N3d6dixIxMmTKBu3brArXkMSUlJ7N+/32LfH374gfnz55Oeno6TkxO+vr4MGDDgrvFGR0dbHT80NJScnByLp8u7d+8mISGBn376iby8PBwdHWnfvj0jR47k6aefrkpX3ZcDBw7w+eefc/ToUYxGI97e3gwcOJDXX3/dot6RI0dYu3Ythw4d4uLFi9jb29OqVSuGDRvGiy++aNXu/fZPRUJDQzlw4AAA06dPZ/r06QBs2rSJRo0aUVRURExMDNu3byc3N5c6derQs2dPxowZg6enp7md/fv3ExYWxtSpUykqKiI+Pp7z58/z5z//2fxq0bZt21i9ejUnTpygtLTUfE59+vSximv//v0sX76cI0eOUFRUhIeHB08//TRvv/02bm5uAMTHx5Oamsrp06e5cuUKrq6u9OjRgzFjxtCoUSOL9nbu3ElcXBynTp2iuLgYNzc32rVrR3h4OF5eXhb9cPu1U9nrR+X1cnJyLPYp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efKk1SjKzJkzyc3NpWfPnnh6enLz5k22b9/O9evX8ff3N9fr2LEja9asYdasWfTq1QsHBwc6dOhgMSJyp44dO5KQkEBUVBTNmzfHYDDg4+NjtVpVVeXk5LB582bgn6NPO3bs4OLFiwDmfgE4deoU06dPp1evXtSvX5/Lly+TlJREVlYWU6ZMqXAOjoiIiIitqvWz1lOnTqVbt25s2LCBpUuXUlJSgru7O23btrW46QwMDGT79u2sX7+egoICXF1dadOmDZMmTbL6kN2dOnXqRGRkJBERESxbtgxnZ2fzB+CCgoKs6s+YMYO//e1vJCcns2XLFrp06UJ0dDQfffQROTk55nouLi5EREQwf/58Vq9eTWlpKW3btmXevHkkJCRUa2IBt5ZBXbBgATExMSxfvpySkhK8vb2ZPHmyxQfy7O3tmTdvHnPnziUpKYmioiJatmzJtGnTyMjIsEosqto/VeHg4EBERIT5A3kpKSm4uLjg6+vL2LFjadiw4X23FRoaSrt27Vi1ahUrV66kqKiIevXq0bJlSyZOnGhRNzAwkCZNmhAXF8eqVasoKSnBw8OD7t27m7+L0blzZ2bPns3nn39OdHQ0NWrUoEePHixatIiQkBCL9vz8/EhMTGTz5s1cuXIFJycnWrRowccff4yvr6+5Xt++fUlPT2fbtm18/fXXlJWVMXXq1EoTi7Fjx1JQUEB8fDzXrl3DZDKxadMmmxOLrKwsoqOjLcpSUlJISUkxn395YuHm5kb9+vXZuHEjly9fxtnZmS5dujBjxgw6dOhgUxwiIiIid2MwVWW9VxH53TF88tstySsiIo8X08RqfQYt/+aqbY6FiIiIiIj8fimxEBERERERmymxEBERERERmymxEBERERERmymxEBERERERmymxEBERERERm2kNMRGp1MI6sQQHB+Po6PioQxEREZHHmEYsRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZgaTyWR61EGIyOPL8InxUYcgIiIPkWmiw6MOQf5NaMRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERs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8va/qNTUVOrWrUv//v0tyt944w3q1q1LSkrKfbXj6OhoTiqMRiNXr14lPz+fHj16ALdWF3oQycnJ1KlTh7feestqm53dPy+7mjVrmpOKkpISCgoKyM/P509/+hNlZWX89NNPVvsHBgZavFrk7OzMgAEDuHr1Kt9//725/Pak4saNG+Tn52Nvb0+HDh04evSoeVt6ejqnT58mICCgwonOt8dbFfb29vTr14+ffvqJkydPmsu/+uorrl+/zn/+538+ULsiIiIijyONWPyLys7O5o9//KPFSANgnsdw/Pjx+24rPj6edevWcfr0aaun89euXXug+DIzM2nTpg01atSotJ7RaGTp0qVs2bKFc+fOYTKZLLZfvXrVah9vb2+rsvLXhLKyssxl58+fJzIykt27d1udx+0jJOfOnQOgTZs2lZ/UA/jP//xPYmNjSUhIYMKECQBs2rSJevXq8cILLzxwu6WlpVy5csWirGbNmlZzOURERER+K0osfue++OIL5s6dyzPPPENQUBB/+MMfcHR05NKlS0ybNq3S14Cqw//93/+xevVqXnrpJUaOHEndunVxcHDg+PHjfPbZZ1aJxv26ceMGISEhFBUV8eabb9KqVSucnJwwGAwsXbqUffv2VfOZVKxhw4b86U9/YsuWLbz99tvk5ORw4MABhg0bZpUUVsXFixet5mfcz6RuERERkYdFicVj7Pan6ndq3LgxP//8M0aj0eIG1Wg0kpmZSePGje+rnS1bttCoUSPmz59v8crPt99+a1PsXl5enD17ll9//ZUnnnii0uN37dqVjz76yKK8fBShImfPnrUqO3PmDID5vPfu3culS5eYMmWK1Q14VFSUxd/NmjUDbn0z4kFU1r8A/fv3Z+fOnaSmppKeng5w369B3a1td3d3IiMjLco8PDzuq00RERGRh0FzLB5j5XMEKnod6IUXXuDKlSts3LjRonzjxo1cuXKFF1988b7asbe3x2AwWIwMlL+eZItXXnmFq1evEhMTY7Xt9mPZ2dlZjUoUFRVV+iXrtWvXUlhYaP67sLCQdevW4eLiYl5GtnyZ2jvb3r17t9W8kdatW9OiRQs2bdrEqVOnKo23IrVr1+bq1at3rderVy88PDxYv349SUlJPPXUUxW+zlWRu/12NWrUoGfPnhb/WrRocV9tioiIiDwMGrF4jLVv3x47OztiY2O5evUqtWrVonHjxnTo0IERI0bw9ddfM3v2bNLT02nTpg3p6ekkJCTg5eXF8OHD76sdX19fIiIiePvtt3nxxRe5fv06X375pU2v6QC8+eabfPPNN8TExPDTTz/Rs2dPatSowenTp/n5559ZsGABAL6+vqxfv57//u//pkePHvzyyy8kJibi6up617bd3NwYMWKEeWnZxMRELly4wOTJk80rQnXu3Bl3d3fmzp1LTk4O9evXJyMjgy1bttCqVSuLydQGg4GpU6cyduxYRowYYV5u9tq1axw4cIA//elPBAUF3TWeDh068M033zB79mw6deqEnZ0d3bt3p169esA/J3GXJ1l3rpJVmcp+u8rk5OSwefNmAE6fPg3Ajh07uHjxIgD+/v54enredxwiIiIi96LE4jHWsGFDpkyZwrJly5g1axZGo5HXXnuNDh064OzsTExMjPkDeZs2bcLd3Z0BAwYwevRonJyc7qudYcOGYTKZSEhI4NNPP8Xd3Z2XXnqJfv36WSxjW1WOjo5ERETwxRdf8OWXX7JgwQKeeOIJmjVrZvGtiffeew8nJye2b99OWloaDRo0oH///rRr146xY8dW2PZ//dd/8cMPPxAfH8/ly5dp1qwZM2fO5JVXXjHXcXFxISIigvnz57N69WpKS0tp27Yt8+bNIyEhwSKxgFs38MuWLSMmJoavvvqKdevW4ebmRvv27encuXOl5/r//D//D1lZWXz99desW7eOsrIyoqOjzYkFwOuvv86SJUuoVasWffr0ue9+rOy3q0xWVhbR0dEWZSkpKebVwjp37qzEQkRERKqVwfSgs2NFfmPlX96Ojo7+l/umQ15eHv7+/vTr16/Cj/49zgyfGB91CCIi8hCYJur5slQvzbEQ+Q2sXbuW0tJS3njjjUcdioiIiMhDoVRV5CH68ssvuXDhAsuXL+dPf/oTf/zjHx91SCIiIiIPhRILkYfof/7nf6hRowadO3fmf//3fx91OCIiIiIPjeZYiEilNMdCROTfk+ZYSHXTHAsREREREbGZEgsREREREbGZxsBEpFIL68QSHByMo6Pjow5FREREHmMasRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZsp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ASQlJbFs2TKys7Pp2rUr586dY+3atbi7u1us8FSZ9u3bExoayqJFixgyZAh9+vTBw8ODvLw8jh07xq5du9i9ezcADRo0YMKECXz88ccEBQXh7++Pp6cnubm5pKWlMWXKFNq0aUPv3r1ZsWIF77zzDv3798fR0ZE9e/Zw8uRJq1GUmTNnkpubS8+ePfH09OTmzZts376d69ev4+/vb67XsWNH1qxZw6xZs+jVqxcODg506NDBYkTkTh07diQhIYGoqCiaN2+OwWDAx8fHarWqqrh+/TphYWFkZ2czePBgfv75Z4vEEW6NeJQvI7tmzRoWLlxIw4YN6dGjB8nJyRZ169WrxzPPPPPA8YiIiIhUpFo/az116lS6devGhg0bWLp0KSUlJbi7u9O2bVuLm87AwEC2b9/O+vXrKSgowNXVlTZt2jBp0iSrD9ndqVOnTkRGRhIREcGyZctwdnY2fwAuKCjIqv6MGTP429/+RnJyMlu2bKFLly5ER0fz0UcfkZOTY67n4uJCREQE8+fPZ/Xq1ZSWltK2bVvmzZtHQkJCtSYWcGsZ1AULFhATE8Py5cspKSnB29ubyZMnW3wgz97ennnz5jF37lySkpIoKiqiZcuWTJs2jYyMDKvEoqr9UxUODg5ERESYP5CXkpKCi4sLvr6+jB07loYNG953W6GhobRr145Vq1axcuVKioqKqFevHi1btmTixIkWdQMDA2nSpAlxcXGsWrWKkpISPDw86N69u/m7GJ07d2b27Nl8/vnnREdHU6NGDXr06MGiRYsICQmxaM/Pz4/ExEQ2b97MlStXcHJyokWLFnz88cf4+vqa6/Xt25f09HS2bdvG119/TVlZGVOnTq00sRg7diwFBQXEx8dz7do1TCYTmzZtsimxKCgoME/MX716dYV1oqOjzYnFTz/9BNxa6reiCeBdu3ZVYiEiIiLVzmCqynqvIvK7Y/jkt1uSV0REqodpYrU+Oxa5L3rxWkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKZFjkWkUgvrxBIcHIyjo+OjDkVEREQeYxqxEBERERERmymxEBERERERmymxEBERERERmymxEBERERERmymxEBERERERmymxEBERERERmymxEBERERERmymxEBERERERmymx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IiIiIiI2U2IhIiIiIiI2U2IhIiIiIiI2U2IhIiIiIiI2U2IhIiIiIiI2U2IhIiIiIiI2U2IhIiIiIiI2U2IhIiIiIiI2U2IhIiIiIiI2M5hMJtOjDkJEHl+GT4yPOgQREfn/M010eNQhiNyVRixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRm/1aJxbRp0+jWrdt91c3OzqZbt24sXLjwIUd1S1ViCw0NJSAg4CFHVLmq9k96ejpjxozhxRdf/E37VUREREQeD1oMWWxmNBqZNGkSRqORsLAwXFxcePLJJx91WL+51NRU0tPTGT169H3vs2LFClxcXKo9kTxy5Ahbt27l2LFjnDhxgqKiIqZOnfrIE1YRERH59/VvNWIxefJkdu3a9ajD+N3JysoiKyuLN998k8GDB+Pn5/e7TSwWL15cpX1WrlxJYmJitceya9cu4uPjKSws/F3+FiIiIvLb+81HLEpLSykpKaFmzZrV3raDgwMODhqE+a398ssvALi6ulZruyaTiaKiImrXrl2t7f4rCw0NBWDRokWV1gsMDGT48OHUqlWLr776ikOHDv0W4YmIiMjv2EO9C09MTGT69OlERkZy+PBhEhMTuXDhApMnTyYgIACTycS6devYuHEjZ86cwc7Ojnbt2hESEmI1HyEpKYk1a9aQmZmJ0WjE3d2djh07MmHCBOrWrQvcmseQlJTE/v37Lfb94YcfmD9/Punp6Tg5OeHr68uAAQPuGm90dLTV8UNDQ8nJybF4urx7924SEhL46aefyMvLw9HRkfbt2zNy5Eiefvrp6upGswMHDvD5559z9OhRjEYj3t7eDBw4kNdff92i3pEjR1i7di2HDh3i4sWL2Nvb06pVK4YNG8aLL75o1e799k9FQkNDOXDgAADTp09n+vTpAGzatIlGjRpRVFRETEwM27dvJzc3lzp16tCzZ0/GjBmDp6enuZ39+/cTFhbG1KlTKSoqIj4+nvPnz/PnP//Z/GrRtm3bWL16NSdOnKC0tNR8Tn369LGKa//+/SxfvpwjR45QVFSEh4cHTz/9NG+//TZubm4AxMfHk5qayunTp7ly5Qqurq706NGDMWPG0KhRI4v2du7cSVxcHKdOnaK4uBg3NzfatWtHeHg4Xl5eFv1w+7VT2etH5fVycnIs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sWPHVmlCeGhoKO3atWPVqlWsXLmSoqIi6tWrR8uWLZk4caJF3cDAQJo0aUJcXByrVq2ipKQEDw8Punfvbv4uRufOnZk9ezaff/450dHR1KhRgx49erBo0SJCQkIs2vPz8yMxMZHNmzdz5coVnJycaNGiBR9//DG+vr7men379iU9PZ1t27bx9ddfU1ZWxtSpUytNLMaOHUtBQQHx8fFcu3YNk8nEpk2bbE4ssrKyiI6OtihLSUkhJSXFfP63f6Bw3LhxeHp6Eh8fz/z586lRowbdunUjLCysyvNXRERERO6HwXTnuyPyQMq/vB0dHW3x1WWRf3WGT367JXlFROTuTBP1PFgeb5pjISIiIiIiNlNiISIiIiIiNlNiISIiIiIiNtMcCxGplOZYiIg8HjTHQh53GrEQERERERGbKbEQERERERGbaUxNRCq1sE4swcHBODo6PupQRERE5DGmEQsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZwWQymR51ECLy+DJ8YnzUIYiIPDSmiQ6POgSRfxsasRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZs91onFtGnT6Nat233Vzc7Oplu3bixcuPAhR3VLVWILDQ0lICDgIUdUuar2T3p6OmPGjOHFF1/8TftVRERERP41afFmsWI0Gpk0aRJGo5GwsDBcXFx48sknH3VYv7nU1FTS09MZPXr0fe+zYsUKXFxcqj2RPHLkCFu3buXYsWOcOHGCoqIipk6dWuFxjh8/TnJyMvv27SM7OxuApk2bEhAQQP/+/XFw0P/2IiIiUv0e6xGLyZMns2vXrkcdxu9OVlYWWVlZvPnmmwwePBg/P7/fbWKxePHiKu2zcuVKEhMTqz2WXbt2ER8fT2Fh4T1/i2XLlpGYmEjbtm0ZN24cYWFhuLq68vHHHzN+/Hj0TUwRERF5GGx+dFlaWkpJSQk1a9asjngsODg46OnqI/DLL78A4OrqWq3tmkwmioqKqF27drW2+68sNDQUgEWLFlVaLzAwkOHDh1OrVi2++uorDh06dNe6gwcPZtq0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WrVKXJa3tzeaNGmC0NBQbNu2DTk5OahWrRpsbGwwadIkSV5PT0/UqVMHISEhCA0NRV5eHszMzNCmTRvxvRgtW7bEggULsHbtWqxcuRL6+vpo27YtVq9ejdGjR0vKc3NzQ0REBPbv34+nT5/C0NAQ9evXx/z58+Hi4iLm69GjB27cuIGDBw/ijz/+gFKpxIwZM4oNLPz8/JCRkYGwsDBkZmZCEATs27dP48Di/v37WLlypSQtJiYGMTEx4vGrAot//vkHwKvhY9OnT1crq3fv3gwsiIiIqNzJhNKs90pEHx3Zwne3JC8R0bsmTCrXZ6xEH7Vym2NBREREREQfLwYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMS7eTETFWlUlGF5eXtDV1a3oqhAREdF7jD0WRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMZkgCEJFV4KI3l+yhYqKrgIRUbkRJulUdBWIPljssSAiIiIiIo0xsCAiIiIiIo0xsCAiIiIiIo0xsCAiIiIiIo0xsCAiIiIiIo0xsCAiIiIiIo0xsCAiIiIiIo19UIHFzJkz4ejoWKK8ycnJcHR0xKpVq95yrV4pTd28vb3Rp0+ft1yj4pW2fW7cuAFfX1906dLlnbYrEREREb0f+JYY0phCocCUKVOgUCjg4+MDuVyOBg0aVHS13rkjR47gxo0bGDNmTIm32bp1K+RyebkGkoIgICoqCn/99ReuXbuGhw8fwsTEBHZ2dhg1ahSaNWtWbvsiIiIiUvmgeiymTZuG48ePV3Q1Pjr379/H/fv38cUXX2DQoEFwc3P7aAOLNWvWlGqbbdu2ISIiolzr8fLlS0yfPh137txB9+7dMXnyZHh4eODGjRvw8vLCgQMHynV/REREREAF9Fjk5+cjLy8PBgYG5V62jo4OdHTYCfOuPX78GABgbGxcruUKgoCcnBxUrly5XMv9X+bt7Q0AWL16dZF5tLW1sWrVKrRu3VqS7uHhgYEDB2LJkiXo2bMntLQ+qOcKREREVMHe6l14REQEZs2ahaCgIFy+fBkRERFITU3FtGnT0KdP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aJ6VK1cysCAiIqJyJRNKs34rEX10ZAvf3RK7RERvmzCpQp+pEn3QKmyOBRERERERfTgYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkca45hoRFWtVlWB4eXlBV1e3oqtCRERE7zH2WBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcZkgiAIFV0JInp/yRYqKroKREQaEybpVHQViD547LEgIiIiIiKNMbAgIiIiIiKNMbAgIiIiIiKNMbAgIiIiIiKNMbAgIiIiIiKNMbAgIiIiIiKNMbB4D505cwaOjo6IiIiosDrcuHEDvr6+6NKlCxwdHbFq1aoKqwsRERERvf+4qDOpUSgUmDJlChQKBXx8fCCXy9GgQYOKrtY7d+TIEdy4cQNjxowp8TZbt26FXC5Hnz59yq0egiAgKioKf/31F65du4aHDx/CxMQEdnZ2GDVqFJo1a6a2jVKpxLZt27B7926kpKSgatWqcHV1hY+PDypVqlRudSMiIiJS4Qvy3kNKpRJ5eXnQ0dGBtrb2O9//nTt30L9/f4wfPx5Dhw595/t/X8ycORORkZE4c+ZMibfp06cPzM3NsXr16nKrR25uLjp06AA7Ozt07NgRFhYWePToEXbv3o2HDx9i1qxZcHNzk2yzcOFChIaGokuXLmjfvj0SEhKwfft2ODg4YPny5dDSKnlnJV+QR0QfAr4gj+jt42/ZeyQ7OxuGhobQ0tKCvr5+hdXj8ePHAABjY+NyLVcQBOTk5KBy5crlWu7/Mm9vbwAoNhDR1tbGqlWr0Lp1a0m6h4cHBg4ciCVLlqBnz55isHD79m1s374dXbp0wa+//irmt7CwwMKFC3Hw4EH07NnzLRwNERERfcwYWJSTiIgIzJo1C0FBQbhw4QIiIiLw+PFjWFpawsvLCz169JDkVz3Z/u677xAYGIjLly/D2NgY+/btw5kzZ+Dj44MZM2ZIhtQIgoC9e/di7969iI+PB/DqZrFLly7w8fER8718+RKbN29GdHQ07t27Bz09PTg4OGDMmDFo1KhRscfh7e2Nc+fOAQBmzZqFWbNmAQD27dsH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z549QqtWrYTKlSsLpqamwqBBg4Q7d+4UmlehUAgzZ84U6tatK+jp6Qn29vbC9u3bhYkTJwoAhAcPHryxfoKgfn0Xdb2eOnVKaN++vVC5cmUBgOS6zczMFEaNGiVUq1ZNqFSpktCxY0fh+PHjRe5X9v93TERUKj4+Pjh48CBu3LgheVo5YsQIHDlyRPJmUHq/bdiwAV5eXkhISJC8OTcgIAA//vijuLpPSRV1bXwMFi1ahEmTJuHEiRNo165dRVenRFTLVhZ8qzdRRTly5Ai6dOmC9evXl+gN7B+TPn364M8//8SzZ8/eyuIM5YFzLIioTGbPno3Hjx9j/fr1FV0VegtycnIwb948TJ48uVRBBfBxXBsvX75Um7+SlZWFoKAgmJqaSt5hQkRUGoXNSbx06RKioqLQtWvX9zaoALgqFBGVUY0aNcSX/NCHp1KlSkhJSSnTth/DtREfH49evXph8ODBsLa2RkpKCjZu3IiEhASsWLFC7Z0QREQltXHjRoSEhMDd3R1mZma4fv06Vq9eDT09PcyePbuiq1csBhZERESlZGZmhnbt2mHLli1IS0uDjo4O7O3tMW/ePAwcOLCiq0dE/8NatWqFPXv2YOnSpXjy5Ankcjm6du2KGTNmiCuHva84x4KIiIiIiDTGORZERERERKQxBhZERERERKQxBhZERERERKQxBhZERERERKQxBhZERERERKQxBhZERERERKQxBhZERERERKQxBhZERERERKQxBhZERERERKSx/wcNcAkGQMCtTwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -5158,7 +9834,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAOsCAYAAADX7yC0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzde1hVZf7//+fmkCkgKEOKqeAh9WMe0kybxsg+WBZE30hS8qMWGgjIpOVh+vR1PMXnO+Y0fsRAUAMVGzXREkFhtAJMylOapxQ8hoJCppDoxtiwf3/4Y487kMSN6Uyvx3VxXe573ete73Xv5XWt977XfS+D2Ww2IyIiIiIiYgO7Ox2AiIiIiIj861NiISIiIiIiNlNiISIiIiIiNlNiISIiIiIiNlNiISIiIiIiNlNiISIiIiIiNlNiISIiIiIiNlNiISIiIiIiNlNiISIiIiIiNlNiISL1Wrx4MZWVlXc6DBEREbnLKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbGcxms/lOByEidy/De6Y7HYKIiIjcgHmyw50OwUIjFiIiIiIiYjMlFiIiIiIiYjMlFiIiIiIiYjMlFiIiIiIiYjMlFiIiIiIiYjMlFiIiIiIiYjMlFiIiIiIiYrO7OrGYOXMm/fr1u6m6RUVF9OvXj0WLFt3mqK5pSGxhYWEEBATc5ojq19D+ycvLIyIigieffPJX7VcRERER+dd097xRQ+4aJpOJqVOnYjKZCA8Px8XFhQceeOBOh/Wry87OJi8vj3Hjxt30PitXrsTFxaXRE8mDBw+SkZHB4cOHOXr0KEajkRkzZtR5nAMHDrBixQry8/O5cOECAK1bt2bw4MGMGDECZ2fnRo1NREREBO7yEYtp06aRm5t7p8P4zSksLKSwsJCXX36Z4cOH4+fn95tNLJYsWdKgfVatWkVaWlqjx5Kbm0tKSgrl5eW/+F189913VFRU8OyzzzJhwgRef/11HnzwQZKSkhg7diwVFRWNHp+IiIiIzSMWVVVVVFZWcu+99zZGPFYcHBxwcNCgyq/thx9+AMDV1bVR2zWbzRiNRpo1a9ao7f4rCwsLA2Dx4sX11gsKCmL06NE0bdqUTz/9lP3799+w7nPPPcdzzz1Xa/8OHTqwYMECvvjiC5566inbgxcRERG5ToPu2tPS0pg1axZxcXEcOHCAtLQ0zp07x7Rp0wgICMBsNrNu3TrWr1/PyZMnsbOzo3v37oSGhtaaj5Cens6aNWsoKCjAZDLh7u5Oz549mTRpEi1atACuzWNIT09n9+7dVvt+8803LFiwgLy8PJycnPD19WXo0KE3jDchIaHW8cPCwjh79qzVr8vbt28nNTWVb7/9lvPnz+Po6MiDDz7ImDFjePjhhxvSVTdlz549fPDBBxw6dAiTyYS3tzcvvfQSL7zwglW9gwcPsnbtWvbv309xcTH29vZ07tyZUaNG8eSTT9Zq92b7py5hYWHs2bMHgFmzZjFr1iwANmzYQJs2bTAajSQmJrJlyxZKSkpo3rw5AwYMICIiAk9PT0s7u3fvJjw8nBkzZmA0GklJSeHMmTO8+uqrlkeLNm/ezEcffcTRo0epqqqynNPgwYNrxbV7925WrFjBwYMHMRqNeHh48PDDD/P666/j5uYGQEpKCtnZ2Zw4cYKLFy/i6upK//79iYiIoE2bNlbtbdu2jeTkZI4fP05FRQVubm50796dqKgovLy8rPrh+mvnRo8fXV/v7NmzVvvU9J0t3N3dbdofsHw/P/74o81tiYiIiPzcLQ0HxMTEYDKZCAwMxMnJCS8vLwCmT5/OP/7xD3x9fQkICKCyspKMjAzGjx/P3LlzeeKJJwDYuHEjM2fOpE+fPoSHh9OkSROKi4vJzc3lwoULlsSiLgcPHiQyMpJmzZoxevRoXFxc2Lx5MzNmzLiVU7GSlpZGWVkZfn5+tGrVipKSElJTU4mMjCQhIYE+ffrYfIwaW7duZcqUKbi7uzNy5EiaNWvG5s2biY6OprCwkPHjx1vqZmdnc+rUKQYPHoynpydlZWWkp6czZcoUoqOjeeaZZyx1be2fMWPG0Lt3b5YuXUpgYKDlnFu0aIHJZCIqKop9+/bh6+vLyJEjKSgoYN26dezYsYPk5GRatWpl1d6qVasoKyvjhRdewN3d3bJ94cKFJCUl8dhjjxEeHo6dnR1ZWVm89dZbTJ06lWHDhlnaWLduHXPmzOG+++5j6NCheHp6cu7cOb744guKi4sticWHH35Ijx49GD58OK6urhw/fpz169eza9cuVq9eban39ddf8+abb9KpUydCQkJwdnbm/Pnz7Ny5k9OnT+Pl5cWYMWMwm83s3buX2bNnW2Lp1avXDftu9uzZzJs3Dzc3N8aMGWMpr+96vp0qKiosf4cPH+b999/H0dGRAQMG3JF4RERE5N/bLSUWFRUVrFy50urxp6ysLDIyMnj77bd58cUXLeXBwcGEhITwt7/9DR8fHwwGA9nZ2Tg5OREfH2/1qFN4ePgvHnvevHlUV1eTmJhoSWheeuklxo4deyunYmXatGk0bdrUqmzo0KEMGzaMpUuXNlpiUVVVxdy5c2natCnLly/Hw8MDgGHDhjFu3DiWL19OQEAA7du3B2Ds2LFERUVZtREcHMyIESNITEy0Sixs7Z9HH30UBwcHli5dSq9evfDz87Ns++STT9i3bx+jRo1iwoQJlvIBAwYwceJEYmNjeeedd6zaO3fuHGvXrqVly5aWsiNHjpCUlERISIhVAhUcHMykSZOIi4vD398fJycniouLee+99/D29iYpKQkXFxdL/YiICKqrqy2fV69eXev78/HxITIyktTUVF555RUAcnJyqK6uJi4uziqu1157zaofMjMz2bt3r1Uf1MfPz4/4+Hhatmx50/vcTgkJCXz44YeWzx07duR///d/adu27R2MSkRERP5d3dLk7aCgoFpzKjZt2oSTkxODBg2itLTU8ldeXs7jjz9OUVERBQUFADg7O1NRUcG2bdswm803fdwLFy6wf/9+nnjiCctNM4CjoyMjRoy4lVOxcv1N6ZUrVygtLcXe3p4ePXpw6NAhm9uvcfjwYc6dO8fzzz9vSSrg2nmMHj2a6upqcnJy6oyroqKC0tJSKioqeOSRRzh58iTl5eXA7e+frKws7OzsCAkJsSofOHAgXbp0YevWrVY3+gD+/v5WN+8AGRkZGAwG/P39ra6V0tJSfHx8uHz5MgcOHADg008/pbKyktDQUKukooad3T8v4Zp+qq6upry8nNLSUrp06YKzszMHDx601KtZFenzzz/HZDLZ0CMNU3NNXf9n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gdjYWMsL8rKysnBxccHX15fIyEhat259022FhYXRvXt3Vq9ezapVqzAajbRs2ZJOnToxefJkq7pBQUG0bduW5ORkVq9eTWVlJR4eHjzyyCOW92I89NBDzJ07lw8++ICEhASaNGlC//79Wbx4MaGhoVbt+fn5kZaWxsaNG7l48SJOTk507NiRd999F19fX0u9IUOGkJeXx+bNm/nss8+orq5mxowZ9SYWkZGRlJWVkZKSwqVLlzCbzWzYsMHmxKKwsJCEhASrsqysLLKysiznX5NYBAYG8vnnn7N+/XpKS0txcHCgbdu2vPLKK4wcOfKmHlcTERERaSiDuSHrvYrIb47hvV9vSV4RERFpGPPkRh0nsEmjzbEQEREREZHfLiUWIiIiIiJiMyUWIiIiIiJiMyUWIiIiIiJiMyUWIiIiIiJiMyUWIiIiIiJis7tnfSoRuSstap5ESEgIjo6OdzoUERERuYtpxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGxmMJvN5jsdhIjcvQzvme50CCIiIv/SzJMd7nQIvwqNWIiIiIiIiM2UWIiIiIiIiM2UWIiIiIiIiM2UWIiIiIiIiM2UWIiIiIiIiM2UWIiIiIiIiM2UWIiIiIiIiM3u6sRi5syZ9OvX76bqFhUV0a9fPxYtWnSbo7qmIbGFhYUREBBwmyOqX0P7Jy8vj4iICJ588slftV9FRERE5F/Tb+NtHdIgJpOJqVOnYjKZCA8Px8XFhQceeOBOh/Wry87OJi8vj3Hjxt30PitXrsTFxaXRE8mDBw+SkZHB4cOHOXr0KEajkRkzZtR5nCNHjpCZmcmuXbsoKioCoF27dgQEBBAYGIiDg/7bi4iISOO7q0cspk2bRm5u7p0O4zensLCQwsJCXn75ZYYPH46fn99vNrFYsmRJg/ZZtWoVaWlpjR5Lbm4uKSkplJeX/+J3sXz5ctLS0ujWrRvjx48nPDwcV1dX3n33XSZOnIjZbG70+ERERERs/umyqqqKyspK7r333saIx4qDg4N+Xb0DfvjhBwBcXV0btV2z2YzRaKRZs2aN2u6/srCwMAAWL15cb72goCBGjx5N06ZN+fTTT9m/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xYs4OTnRsWNH3n33XXx9fS31hgwZQl5eHps3b+azzz6jurqaGTNm1JtYREZGUlZWRkpKCpcuXcJsNrNhwwabEouysjLLxPyPPvqozjoJCQmWxOLbb78Fri31W9cE8L59+yqxEBERkUZnMDdkvVcR+c0xvPfrLckrIiJyNzFPbtTf4P/t6cFrERERERGxmRILERERERGxmRILERERERGxmRILERERERGxmRILERERERGxmRILERERERGxmdbQEpF6LWqeREhICI6Ojnc6FBEREbmLacRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERsZjCbzeY7HYSI3L0M75nudAgiIiI3zTzZ4U6H8JulEQsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEou70O7du+nXrx9paWl3LIa8vDwiIiJ48skn6devH4sWLbpjsYiIiIjI3U8L/UotJpOJqVOnYjKZCA8Px8XFhQceeOBOh/Wry87OJi8vj3Hjxt30PitXrsTFxYWAgIBGjeXgwYNkZGRw+PBhjh49itFoZMaMGXUe58iRI2RmZrJr1y6KiooAaNeuHQEBAQQGBuLgoP/2IiIi0vh0h3EX6tu3L7m5uXfsBrCwsJDCwkImTpzI8OHD70gMd4Ps7GzS09MblFisWrUKT0/PRk8scnNzSUlJwdvbmwceeID9+/ffsO7y5cvZuXMngwYNIjAwkKqqKrZt28a7775LTk4O77//PgaDoVHjExEREVFicRe5fPkyTk5O2NnZ0aRJkzsWxw8//ACAq6tro7ZrNpsxGo00a9asUdv9VxYWFgbA4sWL660XFBTE6NGjadq0KZ9++mm9icXw4cOZOXOm1TU0fPhw/vznP5ORkcG2bdt4/PHHG+cERERERP5/SiwaSVpaGrNmzSIuLo5vvvmGtLQ0fvjhB7y8vAgJCWHIkCFW9QMCAvD09OTNN98kNjaWAwcO4OrqyoYNG9i9ezfh4eG1HnUxm82sX7+e9evXc+LECQDatGnDk08+SXh4uKXeTz/9xIcffkhmZiZnzpzhnnvuoU+f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RERERERspofQRKRei5onERISgqOj450ORURERO5iGrEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbGcxms/lOByEidy/De6Y7HYKIiMgvMk92uNMh/OZpxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGx2VycWM2fOpF+/fjdVt6ioiH79+rFo0aLbHNU1DYktLCyMgICA2xxR/RraP3l5eURERPDkk0/+qv0qIiIiIv+a9CYRqcVkMjF16lRMJhPh4eG4uLjwwAMP3OmwfnXZ2dnk5eUxbty4m95n5cqVuLi4NGoiaTabycjI4IsvvuDw4cN8//33uLm50aVLF8aOHUuPHj1q7bN06VKOHDnCkSNHKCwsxNPTk7S0tEaLSUREROTn7uoRi2nTppGbm3unw/jNKSwspLCwkJdffpnhw4fj5+f3m00slixZ0qB9Vq1a1eg38D/99BPTp0/nu+++4+mnn2bKlCkEBgaSl5dHSEgImzZtqrVPXFwcu3fv5v7776d58+aNGo+IiIhIXWwesaiqqqKyspJ77723MeKx4uDggIODBlV+bT/88AMArq6ujdqu2WzGaDTSrFmzRm33X1lYWBgAixcvvmEde3t7Fi1axMMPP2xVHhgYyLBhw5g/fz7PPPMMdnb//J1g/fr1tG3bFoBhw4ZhNBpvQ/QiIiIi/9Sgu/a0tDRmzZpFXFwcBw4cIC0tjXPnzjFt2jQCAgIwm82sW7eO9evXc/LkSezs7OjevTuhoaG15iOkp6ezZs0aCgoKMJlMuLu707NnTyZNmkSLFi2Aa/MY0tPT2b17t9W+33zzDQsWLCAvLw8nJyd8fX0ZOnToDeNNSEiodfywsDDOnj1r9evy9u3bSU1N5dtvv+X8+fM4Ojry4IMPMmbMmFo3dY1hz549fPDBBxw6dAiTyYS3tzcvvfQSL7zwglW9gwcPsnbtWvbv309xcTH29vZ07tyZUaNG8eSTT9Zq92b7py5hYWHs2bMHgFmzZjFr1iwANmzYQJs2bTAajSQmJrJlyxZKSkpo3rw5AwYMICIiAk9P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s2fPWu1T03e2cHd3v+m6u3fvpn379pakokZAQABxcXGkpaUpsRAREZFGd0vDATExMZhMJgIDA3FycsLLywuA6dOn849//ANfX18CAgKorKwkIyOD8ePHM3fuXJ544gkANm7cyMyZM+nTpw/h4eE0adKE4uJicnNzuXDhgiWxqMvBgweJjIykWbNmjB49GhcXFzZv3syMGTNu5VSspKWlUVZWhp+fH61ataKkpITU1FQiIyNJSEigT58+Nh+jxtatW5kyZQru7u6MHDmSZs2asXnzZqKjoyksLGT8+PGWutnZ2Zw6dYrBgwfj6elJWVkZ6enpTJkyhejoaJ555hlLXVv7Z8yYMfTu3ZulS5cSGBhoOecWLVpgMpmIiopi3759+Pr6MnLkSAoKCli3bh07duwgOTmZVq1aWbW3atUqysrKeOGFF3B3d7dsX7hwIUlJSTz22GOEh4djZ2dHVlYWb731FlOnTmXYsGGWNtatW8ecOXO47777GDp0KJ6enpw7d44vvviC4uJiS2Lx4Ycf0qNHD4YPH46rqyvHjx9n/fr17Nq1i9WrV1vqff3117z55pt06tSJkJAQnJ2dOX/+PDt37uT06dN4eXkxZswYzGYze/fuZfbs2ZZYevXqdcO+mz17NvPmzcPNzY0xY8ZYyuu7nm+HG40g1pQdOnQIs9mMwWD4VeMSERGRf2+3lFhUVFSwcuVKq5uXrKwsMjIyePvtt3nxxRct5cHBwYSEhPC3v/0NHx8fDAYD2dnZODk5ER8fb/WoU3h4+C8ee968eVRXV5OYmGhJaF566SXGjh17K6diZdq0aTRt2tSqbOjQoQwbNoylS5c2WmJRVVXF3Llzadq0KcuXL8fDwwOAYcOGMW7cOJYvX05AQADt27cHYOzYsURFRVm1ERwczIgRI0hMTLRKLGztn0cffRQHBweWLl1Kr169rH7Z/uSTT9i3bx+jRo1iwoQJlvIBAwYwceJEYmNjeeedd6zaO3fuHGvXrqVly5aWsiNHjpCUlERISIhVAhUcHMykSZOIi4vD398fJycniouLee+99/D29iYpKQkXFxdL/YiICKqrqy2fV69eXev78/HxITIyktTUVF555RUAcnJyqK6uJi4uziqu1157zaofMjMz2bt3703/uu/n50d8fDwtW7a8oyMCHTt25OTJk5w/f57f/e53lvKakb8r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5sxh4MCBODg40KNHj3pHnnr27Elqairx8fF06NABg8GAj49PrdWqGurs2bNs3LgRwPIOk61bt1JcXAxg6ReACRMm4OrqSq9evWjdujXl5eV888035OTk0KpVK8tL+UREREQakxKLRvbHP/6Rb775hpSUFC5cuED79u2Jjo5ulGfa/+d//oc+ffqQmprKkiVLsLe3p02bNlYTfx0cHJg/fz5r165l06ZNliTCw8ODBx98sNYbmRvCwcGB2NhYywvysrKycHFxwdfXl8jIyAZNCA8LC6N79+6sXr2aVatWYTQaadmyJZ06dWLy5MlWdYOCgmjbti3JycmsXr2ayspKPDw8eOSRRyzvxXjooYeYO3cuH3zwAQkJCTRp0oT+/fuzePFiQkNDrdrz8/MjLS2NjRs3cvHiRZycnOjYsSPvvvsuvr6+lnpDhgwhLy+PzZs389lnn1FdXc2MGTPqTSwiIyMpKysjJSWFS5cuYTab2bBhg82JRWFhIQkJCVZlWVlZZGVlWc6/JrEIDAzk888/Z/369ZSWluLg4EDbtm155ZVXGDly5E09riYiIiLSUAbzz58dkVtS8+bthIQEq7cui/yrM7z36y3JKyIivw3myfpt+9+R5liIiIiIiIjNlFiIiIiIiIjNlFiIiIiIiIjNNMdCROqlORYiItLYNMfi35NGLERERERExGZKLERERERExGYahxKRei1qnkRISAiOjo53OhQRERG5i2nEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbGYwm83mOx2EiNy9DO+Z7nQIIiLyb8A82eFOhyC3mUYsRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZnd1YjFz5kz69et3U3WLioro168fixYtus1RXdOQ2MLCwggICLjNEdWvof2Tl5dHREQETz755K/aryIiIiLyr0kLCkstJpOJqVOnYjKZCA8Px8XFhQceeOBOh/Wry87OJi8vj3Hjxt30PitXrsTFxaXRE8mDBw+SkZHB4cOHOXr0KEajkRkzZtR7nOLiYj744AO+/PJLLly4QPPmzenatSsTJ06kY8eOjRqfiIiIyF2dWEybNo3//u//vtNh/OYUFhZSWFjIxIkTGT58+J0O547Jzs4mPT29QYnFqlWr8PT0bPTEIjc3l5SUFLy9vXnggQfYv39/vfWPHDnC+PHjadasGc8//zytW7fmxx9/5Ntvv+XixYuNGpuIiIgINEJiUVVVRWVlJffee29jxGPFwcEBB4e7Ovf5t/TDDz8A4Orq2qjtms1mjEYjzZo1a9R2/5WFhYUBsHjx4nrrBQUFMXr0aJo2bcqnn35ab2Jx9epV/vu//5tWrVqxePFinJ2dGzVmERERkbo06K49LS2NWbNmERcXx4EDB0hLS+PcuXNMmzaNgIAAzGYz69atY/369Zw8eRI7Ozu6d+9OaGhorfkI6enprFmzhoKCAkwmE+7u7vTs2ZNJkybRokUL4No8hvT0dHbv3m217zfffMOCBQvIy8vDyckJX19fhg4desN4ExISah0/LCyMs2fPkpaWZinbvn07qampfPvtt5w/fx5HR0cefPBBxowZw8MPP9yQrrope/bs4YMPPuDQoUOYTCa8vb156aWXeOGFF6zqHTx4kLVr17J//36Ki4uxt7enc+fOjBo1iieffLJWuzfbP3UJCwtjz549AMyaNYtZs2YBsGHDBtq0aYPRaCQxMZEtW7ZQUlJC8+bNGTBgABEREXh6elra2b17N+Hh4cyYMQOj0UhKSgpnzpzh1VdftYwAbN68mY8++oijR49SVVVlOafBgwfXimv37t2sWLGCgwcPYjQa8fDw4OGHH+b111/Hzc0NgJSUFLKzszlx4gQXL17E1dWV/v37ExERQZs2baza27ZtG8nJyRw/fpyKigrc3Nzo3r07UVFReHl5WfXD9ddOfY8f1dQ7e/as1T41fWcLd3f3m667ZcsWTp8+zbx583B2duann34C4J577rEpBhEREZH63NJwQExMDCaTicDAQJycnPDy8gJg+vTp/OMf/8DX15eAgAAqKyvJyMhg/PjxzJ07lyeeeAKAjRs3MnPmTPr06UN4eDhNmjShuLiY3NxcLly4YEks6nLw4EEiIyNp1qwZo0ePxsXFhc2bNzNjxoxbORUraWlplJWV4efnR6tWrSgpKSE1NZXIyEgSEhLo06ePzceosXXrVqZMmYK7uzsjR46kWbNmbN68mejoaAoLCxk/frylbnZ2NqdO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XPdjx45l1apVhIaG8sILL/Djjz+yYcMG6tevb/HalYiIiEhdqNPPWs+aNYvevXuzdetWVq9eTXl5OW5ubnTq1MnspjMwMJA9e/awZcsWiouLcXFxoWPHjkyfPt3iQ3Y/1717d6Kjo4mKimLNmjU4OTmZPgAXFBRkUX/u3Ln8/e9/Z9euXezcuZOePXsSGxvL3/72N/Lz8031nJ2diYqKYsmSJWzYsIGKigo6derE4sWLSU5OrtPEAu4sg7p06VLi4uJYu3Yt5eXleHl5MWPGDLMP5NnZ2bF48WIWLVpEamoqpaWltGvXjtmzZ5OdnW2RWNS2f2rD3t6eqKgo0wfy0tPTcXZ2xsfHh4iICJo3b37fbYWGhtK5c2cSExNZv349paWlNGnShHbt2jF16lSzuoGBgbRs2ZKEhAQSExMpLy/H3d2dPn36mL6L8eSTT7JgwQJWrlxJbGws9erVo2/fvixfvpzx48ebtefr60tKSgo7duzg+vXrODo60rZtW9577z18fHxM9YYMGUJWVha7d+/m008/pbKyklmzZtWYWERERFBcXExSUhI3btzAaDSyfft2qxOL3NxcYmNjzcrS09NJT083nf/dHyicOHEiHh4eJCUlsWTJEurVq0fv3r0JCwur9fwVERERkfthY6zNeq8i8rtj8/6vtySviIj832WcWqfPs+U3qM7mWIiIiIiIyO+XEgsREREREbGaEgsREREREbGaEgsREREREbGaEgsREREREbGaEgsREREREbGaEgsREREREbGaFhQWkRotaxRPcHAwDg4OjzoUERER+Q3TiIWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFhNiYWIiIiIiFjNxmg0Gh91ECLy22XzvuFRhyAiIv9mjFPtH3UI8ghoxEJERERERKymxEJERERERKymxEJERERERKymxEJERERERKymxEJERERERKymxEJERERERKymxEJERERERKz2m04sZs+eTe/eve+rbl5eHr1792bZsmUPOao7ahNbaGgo/v7+DzmimtW2f7KysggPD2fQoEG/ar+KiIiIyL8nfb1ELBgMBqZPn47BYCAsLAxnZ2eeeOKJRx3Wry4jI4OsrCwm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WbMGJycn0wfggoKCLOrPnTuXv//97+zatYudO3fSs2dPYmNj+dvf/kZ+fr6pnrOzM1FRUSxZsoQNGzZQUVFBp06dWLx4McnJyXWaWMCdZVCXLl1KXFwca9eupby8HC8vL2bMmGH2gTw7OzsWL17MokWLSE1NpbS0lHbt2jF79myys7MtEova9k9t2NvbExUVZfpAXnp6Os7Ozvj4+BAREWHx3YSahIaG0rlzZxITE1m/fj2lpaU0adKEdu3aMXXqVLO6gYGBtGzZkoSEBBITEykvL8fd3Z0+ffqYvovx5JNPsmDBAlauXElsbCz16tWjb9++LF++nPHjx5u15+vrS0pKCjt27OD69es4OjrStm1b3nvvPXx8fEz1hgwZQlZWFrt37+bTTz+lsrKSWbNm1ZhYREREUFxcTFJSEjdu3MBoNLJ9+3arE4vc3FxiY2PNytLT00lPTzed/90fKJw/fz5xcXGkpaWxc+dOmjZtSlhYGK+//rpVcYiIiIjci42xNuu9isjvjs37v96SvCIi8n+DcWqdPruWfxN1NsdCRERERER+v5RYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1ZRYiIiIiIiI1bQWmIjUaFmjeIKDg3FwcHjUoYiIiMhvmEYsRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEajZGo9H4qIMQkd8um/cNjzoEERH5jTFOtX/UIchvkEYsRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEakosRERERETEar/pxGL27Nn07t37vurm5eXRu3dvli1b9pCjuqM2sYWGhuLv7/+QI6pZbfsnKyuL8PBwBg0a9Kv2q4iIiIj8e9IixGLBYDAwffp0DAYDYWFhODs788QTTzzqsH51GRkZZGVlMWHChPveZ926dTg7O9d5Innq1CnS0tI4c+YMZ8+epbS0lFmzZlV7nLy8PF555ZVq22nbti0bN26s09hERERE4DeeWMyYMYP/+Z//edRh/O7k5uaSm5vL5MmTGTly5KMO55HJyMggNTW1VonF+vXr8fDwqPPEYv/+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w4YNq/NX5EREREQAbIw/f3dEHkjVl7djY2PNvros8u/O5v1fb0leERH5bTFO1TNouX96dCkiIiIiIlZTYiEiIiIiIlZTYiEiIiIiIlbTHAsRqZHmWIiI/H5pjoXUhkYsRERERETEakosRERERETEahrfEpEaLWsUT3BwMA4ODo86FBEREfkN04iFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYTYmFiIiIiIhYzcZoNBofdRAi8ttl877hUYcgIiKPgHGq/aMOQf7NaMRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESspsRCRERERESs9ptOLGbPnk3v3r3vq25eXh69e/dm2bJlDzmqO2oTW2hoKP7+/g85oprVtn+ysrIIDw9n0KBBv2q/ioiIiMi/Jy1QLBYMBgPTp0/HYDAQFhaGs7MzTzzxxKMO61eXkZFBVlYWEyZMuO991q1bh7Ozc50mkkajkbS0ND7//HPOnDnD999/j6urKx06dGDcuHF07drVYp/KykrWr1/Pli1byM/Pp3HjxgwePJiwsDAaNGhQZ7GJiIiIVPlNj1jMmDGD/fv3P+owfndyc3PJzc3l1VdfZeTIkfj6+v5uE4sVK1bUap/169eTkpJSp3H89NNPzJw5k++++44XXniBadOmERAQQFZWFsHBwezcudNin4ULF/K///u/tG3blmnTpuHj40NiYiJvvvkmlZWVdRqfiIiICNTBiEVFRQXl5eXUr1+/LuIxY29vj729BlV+bT/88AMALi4uddqu0WiktLSUhg0b1mm7/85CQ0MBWL58+T3r2NnZsWzZMp566imz8oCAAEaMGMGiRYt48cUXsbW985zg22+/ZcOGDQwaNIi///3vpvotWrTg/fffZ/fu3bz44osP4WxERETk96xWd+0pKSnMmTOH6OhoTp48SUpKCgUFBcyYMQN/f3+MRiObN29m27ZtXLhwAVtbWzp37sz48eMt5iOkpqayceNGcnJyMBgMuLm50a1bN6ZMmULjxo2BO/MYUlNTOXLkiNm+X331FUuWLCErKwtHR0d8fHwYNmzYPeONjY21OH5oaCj5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MzOTyspKoqOjzeJ64403zPph165dHDt2zKwPauLr60tMTAxNmjS5730ehqtXr9KmTZtqt7m7u1NYWPgrRyQiIiK/B1puto4FBgaakgoAJycnhg0bxo8//siXX35pVtfFxeW+J/mmpaUBMHnyZLOkAjD7Oy0tDS8vL/7jP/6DoqIi0z+DwUC/fv04fvw4ZWVlD3Ru6enp2NraEhwcbFbev39/OnTowN69e81u9AH8/PzMbt6rYrSxscHPz88sxqKiIry9vbl58yYnT54E4JNPPqG8vJzx48ebJRXVnXtVUlFZWUlJSQlFRUV06NABJycnTp06ZapX9ft89tlnGAyGB+qLB3Hr1i2L8zUYDBgMBovyXxq9qklZWRmPPfZYtdvq1av3wL+/iIiISE00YlHHvLy8LMqqnh7n5uaalT/++OPY2dndV7uXLl3iD3/4wy++a3/hwgVu375d7TyFKkVFRRavydyPvLw83N3dadSokcW2du3akZ2dTVFRkVki0bp162pjNBqNptfFqlM1gfzSpUsAdOzY8RfjO3z4MCtWrOD06dPcvn3bbNuNGzdM/z1ixAgyMzOZP38+H3zwAT169OCZZ55hyJAhD/W1pQULFpCamlrttp//Xi+//PIDr95Uv359fvrpp2q33b5922zUTERERKSuKLF4hB7WDV779u1NqwFV59d85/9e52hjY8OSJUssRl+qtGvXrlbHOX36NJGRkbRs2ZLIyEhatGhBvXr1sLGx4d133zUbSXF1dSUhIYFjx45x8OBBjh07xsKFC1m2bBmLFy+ucR6FNcaOHctLL71kVrZo0SLgzkjU3dzd3R/4OH/4wx/4/vvvq91W9U0LERERkbqmxKKOXbx40aLswoULwJ0RigfVunVrMjMz+eGHH2octWjVqhXXr1+nT58+97xpf1CPP/44X3zxBTdu3LB4Len8+fM4OjqaJkjXpFWrVvzzn/+kefPm95wLUKVqxCM7OxtPT8971tu1axcVFRUsWbLErJ9LS0vNRiuq2NnZ0bt3b9PqTWfPnmX06NHExcWxePFi4E7yU1s17dO2bVvatm1rVlbVj/369av1se6lS5cupKWlUVBQYDYyVVBQwPfff4+3t3edHUtERESkiuZY1LFNmzZRUlJi+rukpITNmzfj7OzMU0899cDtVj3pXrJkicU8BqPRaPpvPz8/fvjhBz766KNq26l6xehBDBw4kMrKSlavXm1Wvn//frKysvD29r6vZKZqYnN0dDQVFRU1xujj44ODgwMrVqww69cqVede9UrZ3X0BEB8fb9FfRUVFFu14eXlRv359fvzxR1NZ1ZyN4uLiXzynu/e5u41HoWpp4/Xr15uVV/3981ETERERkbqgEYs65urqymuvvWaalJ2SkkJBQQEzZsyw6tWnwYMH8/zzz7Njxw4uXbqEt7c3zs7O5OTk8MUXX7Bx40bgzrcKDh48yOLFizl8+DB9+vTB0dGRgoICDh8+zGOPPcayZcseKAZ/f39SU1NZs2YNeXl59OrVi0uXLrFp0ybc3NzMVniqSZcuXQgNDWX58uWMGjWKwYMH4+7uztWrVzlz5gz79+/nwIEDADRr1owpU6bw3nvvERQUhJ+fHx4eHhQWFpKZmcnMmTPp2LEjAwcOZN26dUyaNImAgAAcHBw4ePAg586dsxhFmTdvHoWFhfTr1w8PDw9u377Nnj17uHnzJn5+fqZ63bp1Y+PGjcyfP5/+/ftjb29P165daxx56tatG8nJycTExNCmTRtsbGzw9va2WK2qtvLz89mxYweA6Rsme/fu5cqVKwCmfoE7k+mfe+45PvroI0pKSujWrRsnT54kOTmZl156iSeffNKqWERERESqo8Sijv3pT3/iq6++IikpiWvXrtG6dWvmzZvHiy++aHXbf/3rX+nZsyfJycmsWLECOzs7WrRoYTbx197enkWLFrFp0yZ27txpSiLc3d3p0qULL7/88gMf397enqioKNMH8tLT03F2dsbHx4eIiIhaTQgPDQ2lc+fOJCYmsn79ekpLS2nSpAnt2rVj6tSpZnUDAwNp2bIlCQkJJCYmUl5ejru7O3369DF9F+PJJ59kwYIFrFy5ktjYWOrVq0ffvn1Zvnw548ePN2vP19eXlJQUduzYwfXr13F0dKRt27a89957+Pj4mOoNGTKErKwsdu/ezaeffkplZSWzZs2qMbGIiIiguLiYpKQkbty4gdFoZPv27VYnFrm5ucTGxpqVpaenk56ebjr/uz9QOH/+fOLi4khLS2Pnzp00bdqUsLAwXn/9daviEBEREbkXG+PP3x2RB1L15e3Y2Fizry6L/Luzef/XW5JXREQeDeNUPWsW62mOhYiIiIiIWE2JhYiIiIiIWE2JhYiIiIiIWE1zLESkRppjISLyf5/mWEhd0IiFiIiIiIhYTYmFiIiIiIhYTeNeIlKjZY3iCQ4OxsHB4VGHIiIiIr9hGrEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGrKbEQERERERGr2RiNRuOjDkJEfrts3jc86hBEROQ+GafaP+oQ5HdMIxYiIiIiImI1JRYiIiIiImI1JRYiIiIiImI1JRYiIiIiImI1JRYiIiIiImI1JRYiIiIiImK133RiMXv2bHr37n1fdfPy8ujduzfLli17yFHdUZvYQkND8ff3f8gR1ay2/ZOVlUV4eDiDBg36VftVRERERP49abFjsWAwGJg+fToGg4GwsDCcnZ154oknHnVYv7qMjAyysrKYMGHCfe+zbt06nJ2d6zyRPHXqFGlpaZw5c4azZ89SWlrKrFmz7us4V69eZfjw4dy4cYNJkyYxZsyYOo1NREREBH7jIxYzZsxg//79jzqM353c3Fxyc3N59dVXGTlyJL6+vr/bxGLFihW12mf9+vWkpKTUeSz79+8nKSmJkpKSWv8WCxYsoKKios5jEhEREbmb1YlFRUUFZWVldRGLBXt7e+rVq/dQ2pZ7++GHHwBwcXGp03aNRiO3bt2q0zb/3YWGhhIaGvqL9QIDA8nMzGTjxo2MGjXqvtvPzMwkIyODN954w5owRURERH5RrV6FSklJYc6cOURHR3Py5ElSUlIoKChgxowZ+Pv7YzQa2bx5M9u2bePChQvY2trSuXNnxo8fbzEfITU1lY0bN5KTk4PBYMDNzY1u3boxZcoUGjduDNyZx5CamsqRI0fM9v3qq69YsmQJWVlZODo64uPjw7Bhw+4Zb2xsrMXxQ0NDyc/PN3u6fODAAZKTk/n666+5evUqDg4OdOnShZCQEJ566qnadNV9OXr0KCtXruT06dMYDAa8vLwYPnw4Q4cONat36tQpNm3axIkTJ7hy5Qp2dna0b9+eMWPGMGjQIIt277d/qhMaGsrRo0cBmDNnDnPmzAFg+/bttGjRgtLSUuLi4tizZw+FhYU0atSIfv36ER4ejoeHh6mdI0eOEBYWxqxZsygtLSUpKYnLly/z+uuvm14t2r17Nxs2bODs2bNU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5uZmSswKCwuBO0nopUuXcHV1rXYESERERORB1dnjzFatWpGTk0O3bt3uaznRxx57jP79+9O/f3/gzvvikydP5qOPPrrnB7yqVta5ePGixbbz589blFU9Wf/xxx8ttuXl5Zk9zT106BDff/89M2fO5JVXXjGrGxMT84vnUxuPP/44UH3MVWVVdc6ePUt2djbjx4+3+FDbtm3bzP6ubf/U1uOPP84XX3zBjRs3LG5Kz58/j6Ojo2mCdE1atWrFP//5T5o3b06bNm1qrFs14pGdnW32etfP7dq1i4qKCpYsWWLqO4DS0lKL0Se4s4Rr7969Tas3nT17ltGjRxMXF8fixYuBBxulqmmftm3bWowcVfVjv379frHtvLw8JkyYQElJCUuXLqVTp04WdW7fvs3169fZt28f+/bts9ielpZGWloakyZNYsyYMb94TBEREZH7VWcfyPPz86OyspKoqKhqt1e92gJQVFRksb3qJqm4uPiex6hakjYzM5PvvvvOVF5eXs66dess6lfdlB46dMisfNeuXXz//fdmZXZ2dgAWcz4OHDhg9n5+XejUqRPNmzcnJSWFq1evmsoNBgNr167FxsbGtIJW1RP9n8d17tw5MjIyzMpq2z+1NXDgQCorK1m9erVZ+f79+8nKysLb2/ueIxB3q5rYHB0dbTFyBObXio+PDw4ODqxYscI0l+RuVf1yr98vPj7eYkSnuuvPy8uL+vXrmyWhVXM2aromf65BgwbVJrLWys/PJywsjBs3bhAVFcV//Md/3PP48+fPt/j3zjvvAPDMM88wf/58vL296zxGERER+X2rsxGLwYMH4+/vz8aNG/nmm2947rnncHV1pbCwkBMnTnD58mWSk5MBmDhxIs7OzvTs2ZNmzZpx48YNUlJSsLGx+cXVdN58800mTJjAuHHjGD58uGk51epuUL28vOjbty9btmzBaDTSoUMHsrOzycjIoFWrVmYTd5988knc3NxYtGgR+fn5NG3alOzsbHbu3En79u05d+5cXXUVdnZ2TJ8+nWnTpvHaa68REBBAw4YN2bNnDydPniQ4ONiUFLVp04a2bduSkJBAWVkZnp6e5OTksGXLFtq3b8+ZM2ceuH9qy9/fn9TUVNasWUNeXh69evXi0qVLbNq0CTc3N7MVnmrSpUsXQkNDWb58OaNGjWLw4MG4u7tz9epVzpw5w/79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8vLg4uIi5mvTpg12794NHx8fdO/eHVpaWmjdunWZPU9t2rRBeHg41q1bB2tra8hkMjg4OKisVlVRKSkpOHz4MACIzzA5c+YM0tLSAEBsl+Ju3LiBhIQE9O7du1w9SURERETqYGBRxb766itcuXIFYWFh+Ouvv2BhYYHFixejX79+ape9ZMkSdOjQAeHh4QgMDISmpibMzc0lE3+1tLSwatUq7NmzB0eOHBGDCFNTU7Rq1QoDBgyo9Pa1tLTg5+cnPiAvOjoacrkcjo6OmDx5coUmhHt6eqJly5YIDQ3Fzp07oVAoULt2bdjY2GDmzJmSvK6urmjYsCFCQkIQGhqKly9fwtTUFJ07dxafi9G+fXssW7YMGzduxPr166Grq4suXbogICAAEyZMkJTn7OyMiIgIHD58GE+fPoW+vj4aN26MpUuXwtHRUczXt29fxMfH4+jRozhx4gSKioowb968MgOLyZMnIysrC2FhYcjJyYEgCDh48KDagUVycjLWr18vSYuOjkZ0dLS4/68HFspJ2xwGRURERH8HmfD62BGqFOWTt9evXy956jLRP51s+d+3JC8R0b+ZMJP3e+mfjXMsiIiIiIhIbQwsiIiIiIhIbQwsiIiIiIhIbZxjQURl4hwLIqK/B+dY0D8deyyIiIiIiEhtDCyIiIiIiEht7HMjojJtMAyGu7s7tLW1q7sqRERE9A5jjwUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREalNJgiCUN2VIKJ3l2x5QXVXgYjoH0OYqVXdVSCqNuyxICIiIiIitTGwICIiIiIitTGwICIiIiIitTGwICIiIiIitTGwICIiIiIitTGwICIiIiIitTGweAddvHgRdnZ2iIiIqLY6xMfHw8vLCz179oSdnR02bNhQbXUhIiIioncfF1smFQUFBZg1axYKCgowadIkyOVyNGnSpLqr9bc7deoU4uPjMXHixHJ/ZseOHZDL5Rg4cGCV1uXGjRuIjIzErVu3cPfuXSgUCsybN6/E7Tx79gzbtm3DrVu3EB8fj/T0dHTs2BEBAQFVWiciIiKi4thj8Q7q2LEjzp49C2dn52rZfnJyMpKT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9vlN7fS60r6TJS3fqVTa8qsBAQFC+/btBV1dXUEulwtOTk7CmTNnVPIVFhYKixcvFiwsLAQdHR2hVatWwrZt20qty+PHj4WZM2cKTZo0EXR1dQUjIyOhdevWwtSpUyVLYld0ydXytrMgCMLhw4eFdu3aCTo6OoKZmZkwa9Ys4fbt2yW20eHDh4UOHToIurq6AgBxydjiS5z6+voKtra2go6OjmBrayusWrWqxDpu3rxZaNq0qaCtrS1YWVkJS5cuFU6cOFHiUqkVPddKO3/KWoq1pCVw9+/fL3Ts2FGoWbOmYGJiIgwfPlz4888/S8xbUFAgzJ8/X2jUqJGgo6MjtGnTRti1a5cwY8YMAYCQlpb2xvoJgur5Xdr5GhMTI3Tr1k2oWbOmAEBy3ubk5Ajjx48XateuLdSoUUPo3r27cPbsWUH2/zdARFQlJk2ahKNHjyI+Pl5yt3LcuHE4depUiU8TpXfT5s2b4e7ujvv370vG7fr6+uKHH34QV/cpr9LOjX+DX375BTNnzsT58+fRtWvX6q5OuSiXpyz+VG+i6nLq1Cn07NkTmzZtKtcT2P9NBg4ciJMnTyI7O/utLM5QEZxjQURVauHChcjIyHjVJUrvHYVCAR8fH3zzzTcVCiqAf8e58eLFC5X5K7m5ufD394eJiYnkGSZERBVR0pzEa9euITIyEr169ar2oALgqlBEVMXq1q2LrKys6q4GvSU1atRASkpKpT77bzg3EhIS0L9/f4wYMQLW1tZISUnBli1bcP/+faxbt07lmRBEROW1ZcsWhISEwMXFBaamprh9+zYCAgKgo6ODhQsXVnf1ADCwICIiqjKmpqbo2rUrtm/fjvT0dGhpaaFNmzbw8fHBsGHDqrt6RPQP1rFjR+zfvx+rV6/GX3/9Bblcjl69emHevHniymHVjXMsiIiIiIhIbZxjQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREamNgQUREREREavt/SKIV8ir30koAAAAASUVORK5CYII=", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxcAAAOsCAYAAAA4LUuKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeVQVV773//dhiAMgKBcRJ3CIep0SjdE8iUG9mAmCN0RU4s9oow0iclvTDumbx0fU5nnamLRXDAgOOGDihBMBlWg6gNHEKZooRkGjBgUUjUJEwebA+f3h4rTHg0b0GO3O57WWa4Vdu3Z9a5/KWvWtXXuXwWQymRAREREREXlAdo86ABERERER+deg5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITSi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRO5q0aJFVFZWPuowRERE5J+AkgsREREREbEJJRciIiIiImITSi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbELJhYiIiIiI2ISSCxERERERsQklFyIiIiIiYhNKLkRERERExCaUXIiIiIiIiE0ouRAREREREZtQciEiIiIiIjah5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITBpPJZHrUQYjI48vwofFRhyAiIiK3ME12eNQh3JFGLkRERERExCaUXIiIiIiIiE0ouRAREREREZtQciEiIiIiIjah5EJERERERGxCyYWIiIiIiNiEkgsREREREbGJxzq5mDFjBr169bqnuoWFhfTq1YuFCxc+5Khuqkts4eHhBAYGPuSI7q6u/ZObm8u4ceMYMGDAr9qvIiIiIvLP6/H9Aoc8MkajkalTp2I0GomIiMDFxYUnn3zyUYf1q8vKyiI3N5exY8fe8z6rVq3CxcXFpsmkyWRi27ZtfPnllxw7doyLFy/i5uZGhw4dGDNmDF27drXap7q6mtWrV7Nx40aKiopo3LgxAwcOJCIiggYNGtgsNhEREZFbPdYjF9OmTWP37t2POozfnIKC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vptWrVrx1Vdf0axZM9q0aXPXujUjH3l5eRavet0uIyODqqoq5s+fb+47gPLycqtRKLi5vGuvXr3MqzqdOHGCESNGkJSURGxsLHB/o1V326dt27ZWI0g1/dinT59fbLuwsJCxY8dSVlbGggUL6NSpU631OnfuzJ49ezh69KjFPKEbN26Ql5dHz5497+VUREREROrMZh/RCwgIoLq6mri4uFq317zmAlBSUmK1veZGqbS09I7HqFmuNjs7mx9//NFcXllZyapVq6zq19yY7tu3z6I8IyODixcvWpTZ29sDWM0B2bNnj8X7+rbQqVMnmjVrRlpaGpcuXTKXG41GVq5cicFgMK+sVfNk//a4Tp48SVZWlkVZXfunrvr37091dTXLly+3KN+9eze5ubn4+vrecSTiVjWTnePj461GkMDyWvHz88PR0ZHFixeb55bcqqZf7vT7LV261Gpkp7brz8fHh/r161skojVzOO52Td6uQYMGtSazD6qoqIiIiAiuXr1KXFwc//7v/37Hui+//DIGg8HqN9+0aRMVFRVahlZEREQeGpuNXAwcOJDAwEDWrVvH8ePHefHFF3Fzc6O4uJjDhw9z7tw5UlNTARg/fjwuLi706NEDT09Prl69SlpaGgaD4RdX2XnnnXcYO3YsY8aMYciQIealVmu7SfXx8aF3795s3LgRk8lEhw4dyMvLIysri1atWllM5n366adxd3dn3rx5FBUV0bRpU/Ly8ti6dSvt27fn5MmTtuoq7O3tmTp1KlOmTGHUqFEEBQXRsGFDduzYwZEjRwgNDTUnRm3atKFt27YkJydTUVGBt7c3+fn5bNy4kfbt23Ps2LH77p+6CgwMJD09nRUrVlBYWEjPnj05e/Ys69evx93d3WLlp7vp0qUL4eHhLFq0iOHDhzNw4EA8PDy4dOkSx44dY/fu3ezZswcAT09PJk2axPvvv09ISAgBAQF4eXlRXFxMdnY206dPp2PHjvTv359Vq1YxYcIEgoKCcHR0ZO/evZw8edJqNCUmJobi4mL69OmDl5cXN27cYMeOHVy7do2AgABzvW7durFu3Tpmz55N3759cXBwoGvXrhYjI7fr1q0bqampJCQk0KZNGwwGA76+vlarWNXFtWvXiIiIoLCwkGHDhvHjjz9aJI9wc+TD3d0dgPbt2zNkyBDWrVvHlClTeOGFFzh9+jRr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1cfubte9e3fi4+OJi4tjxYoVODs7mz8SFxISYlV/1qxZfPDBB2RkZLB161Z69OhBYmIif/nLXygqKjLXc3FxIS4ujvnz57N27Vqqqqro1KkTsbGxpKam2jS5gJtLpC5YsICkpCRWrlxJZWUlPj4+TJs2zeIjevb29sTGxjJv3jzS09MpLy+nXbt2zJgxg7y8PKvkoq79UxcODg7ExcWZP6KXmZmJi4sLfn5+REZG0qxZs3tuKzw8nM6dO7NmzRpWr15NeXk5TZo0oV27dkyePNmibnBwMC1btiQ5OZk1a9ZQWVmJh4cHzz77rPm7GU8//TRz5sxhyZIlJCYmUq9ePXr37s2iRYsICwuzaM/f35+0tDS2bNnClStXcHJyom3btrz//vv4+fmZ673yyivk5uayfft2/va3v1FdXU10dPRdk4vIyEhKS0tJSUnh6tWrmEwmPv300wdOLgoKCkhMTLQoy8zMJDMz03z+t37EcPz48Xh5eZGSksL8+fOpV68evXr1IiIios7zWURERETulcFUl7VgReQ3x/Dhr7dcr4iIyG+JabJNn/M/Fmw250JERERERH7blFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxiX+9xXVFxKYWNlpKaGgojo6OjzoUERERecxp5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITSi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCYPJZDI96iBE5PFl+ND4qEMQERH5VZkmOzzqEP5paeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm3isk4sZM2bQq1eve6pbWFhIr169WLhw4UOO6qa6xBYeHk5gYOBDjuju6to/ubm5jBs3jgEDBvyq/SoiIiIi/7z0hRCxYjQamTp1KkajkYiICFxcXHjyyScfdVi/uqysLHJzcxk7duw977Nq1SpcXFxsnkzm5OSwbds2jh07xokTJygvLyc6OrrW4xQWFjJo0KBa22nbti3r1q2zaWwiIiIiNR7r5GLatGn893//96MO4zenoKCAgoICJk6c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unBwcCAuLs78Eb3MzExcXFzw8/MjMjKSZs2a3XNb4eHhdO7cmTVr1rB69WrKy8tp0qQJ7dq1Y/LkyRZ1g4ODadmyJcnJyaxZs4bKyko8PDx49tlnzd/NePrpp5kzZw5LliwhMTGRevXq0bt3bxYtWkRYWJhFe/7+/qSlpbFlyxauXLmCk5MTbdu25f3337e48X7llVfIzc1l+/bt/O1vf6O6upro6Oi7JheRkZGUlpaSkpLC1atXMZlMfPrppw+cXBQUFJCYmGhRlpmZSWZmpvn8a5KLF154ga1bt7Jp0yZKS0t54oknaNu2Le+++y6DBw++p9ElERERkfthMNVlLVgR+c0xfPjrLdcrIiLyODBNtunz998UPcIUERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE1pnS0TuamGjpYSGhuLo6PioQxEREZHHnEYuRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbELJhYiIiIiI2ISSCxERERERsQklFyIiIiIiYhNKLkRERERExCaUXIiIiIiIiE0ouRAREREREZtQciEiIiIiIjZhMJlMpkcdhIg8vgwfGh91CCIiIg+dabLDow7hX4JGLkRERERExCaUXIiIiIiIiE0ouRAREREREZtQciEiIiIiIjah5EJERERERGxCyYWIiIiIiNjEY51czJgxg169et1T3cLCQnr16sXChQsfclQ31SW28PBwAgMDH3JEd1fX/snNzWXcuHEMGDDgV+1XEREREfnnpQV9xYrRaGTq1KkYjUYiIiJwcXHhySeffNRh/eqysrLIzc1l7Nix97zPqlWrcHFxsXkymZOTw7Zt2zh27BgnTpygvLyc6OjoWo8zY8YM0tPT79hWq1at2LRpk03jExEREYHHPLmYNm0a//3f//2ow/jNKSgooKCggIkTJzJs2LBHHc4jk5WVRXp6ep2Si9WrV+Pl5WXz5GL37t2kpKTg4+PDk08+yeHDh+9Y980336R3795W5fv37yctLY0XX3zRprGJiIiI1Hjg5KKqqorKykrq169vi3gsODg44ODwWOc//5J++uknAFxdXW3arslkory8nIYNG9q03X9m4eHhACxatOiu9YKDgxk5ciQNGjTg888/v2ty0b17d7p3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/FoMprqsBSsivzmGD3+95XpFREQeFdNkmz5z/82y2ZwLERERERH5bVNyISIiIiIiNqHkQkREREREbELJhYiIiIiI2ISSCxERERERsQklFyIiIiIiYhNKLkRERERExCa0oK+I3NXCRksJDQ3F0dHxUYciIiIijzmNXIiIiIiIiE0ouRAREREREZtQciEiIiIiIjah5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITSi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2YTCZTKZHHYSIPL4MHxofdQgiIiK1Mk12eNQhyG00ciEiIiIiIjah5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITSi5ERERERMQmlFyIiIiIiIhNPNbJxYwZM+jVq9c91S0sLKRXr14sXLjwIUd1U11iCw8PJzAw8CFHdHd17Z/c3FzGjRvHgAEDftV+FREREZF/XvryiFgxGo1MnToVo9FIREQELi4uPPnkk486rF9dVlYWubm5jB079p73WbVqFS4uLjZNJk0mE9u2bePLL7/k2LFjXLx4ETc3Nzp06MCYMWPo2rWr1T7Lli3j+PHjHD9+nIKCAry8vEhLS7NZTCIiIiK1eaxHLqZNm8bu3bsfdRi/OQUFBRQUFPDWW28xbNgw/P39f7PJxeLFi+u0z+rVq21+E//3v/+d6dOn8+OPP/Lyyy8zZcoUgoKCyM3NJTQ0lK1bt1rtEx8fz4EDB2jRogWNGjWyaTwiIiIid/LAIxdVVVVUVlZSv359W8RjwcHBAQcHDa782n766ScAXF1dbdquyWSivLychg0b2rTdf2bh4eEALFq06I517O3tWbhwIc8884xFeVBQEEOHDmXevHm8+uqr2Nn941nB5s2badmyJQBDhw6lvLz8IUQvIiIiYqlOd+5paWnMnDmT+Ph4jhw5QlpaGufPn2fatGkEBgZiMpnYsGEDmzdv5vTp09jZ2dG5c2fCwsKs5iekp6ezbt068vPzMRqNuLu7061bNyZNmkTjxo2Bm/Ma0tPTOXDggMW+3377LfPnzyc3NxcnJyf8/PwYPHjwHeNNTEy0On54eDhFRUUWT5n37NlDamoq33//PZcuXcLR0ZEuXbowevRoqxs7Wzh48CBLlizh6NGjGI1GfHx8GDJkCG+8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+vTBy8uLGzdusGPHDq5du0ZAQIC5Xrdu3Vi3bh2zZ8+mb9++ODg40LVrV4uRkdt169aN1NRUEhISaNOmDQaDAV9fX6tVrOqqqKiILVu2AP8Yhdq5cycXLlwAMPcLwIQJE3B1daV79+40a9aMsrIyvv32W7Kzs/H09DR/uE9ERETE1mz6+evo6Gh69erFpk2bWL58OZWVlbi7u9OpUyeLG8/g4GB27NjBxo0bKS0txdXVlY4dOzJ16lSrj93drnv37sTHxxMXF8eKFStwdnY2fyQuJCTEqv6sWbP44IMPyMjIYOvWrfTo0YPExET+8pe/UFRUZK7n4uJCXFwc8+fPZ+3atVRVVdGpUydiY2NJTU21aXIBN5dIXbBgAUlJSaxcuZLKykp8fHyYNm2axUf07O3tiY2NZd68eaSnp1NeXk67du2YMWMGeXl5VslFXfunLhwcHIiLizN/RC8zMxMXFxf8/PyIjIykWbNm99xWeHg4nTt3Zs2aNaxevZry8nKaNGlCu3btmDx5skXd4OBgWrZsSXJyMmvWrKGyshIPDw+effZZ83cznn76aebMmcOSJUtITEykXr169O7dm0WLFhEWFmbRnr+/P2lpaWzZsoUrV67g5ORE27Ztef/99/Hz8zPXe+WVV8jNzWX79u387W9/o7q6mujo6LsmF5GRkZSWlpKSksLVq1cxmUx8+umnD5xcFBQUkJiYaFGWmZlJZmam+fxrkougoCC++OILNm/eTElJCQ4ODrRs2ZJRo0YxYsSIe3p1TUREROR+GEx1WQtWRH5zDB/+esv1ioiI1MY02abPw+UhstmcCxERERER+W1TciEiIiIiIjah5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITWtdLRO5qYaOlhIaG4ujo+KhDERERkcecRi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNmEwmUymRx2EiDy+DB8aH3UIIiLyG2aa7PCoQ5A60MiFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByIfessLCQXr16sXDhwkcdyiMTHh5OYGDgow5DRERE5LGk5OIxlpuby8KFCyksLHws2pHapaWlsWrVqofS9v3+djk5OXzwwQeMHj2aF198kV69epGWlvZQYhQRERGpoeTiMZaXl8fixYsfOCmwVTsC8fHxbNiwwaIsLS2N1atXP5Tj3e9vt3v3blJSUigrK+PJJ598KLGJiIiI3E6fPBSpA0dHx0cdwj0JDg5m5MiRNGjQgM8//5zDhw8/6pBERETkN0DJxWNq4cKFLF68GICIiAhz+euvv86MGTMAKCkpYeHChezcuZOffvoJd3d3fH19GTt2LG5ubvfUzrVr11ixYgV79+7l3LlzXL9+HU9PT/z8/AgLC6N+/fr3fQ6VlZWsWrWKzz77jB9//BEHBwdat27N66+/zrBhwwC4ePEiH3/8Mfv376eoqIgbN27QokULAgICePvtt7G3tze3l5aWxsyZM4mPj+fbb78lLS2Nn376CW9vb0JDQ3nllVcsjr9nzx5SU1P5/vvvuXTpEo6OjnTp0oXRo0fzzDPPWMV79uxZli5dyt69e7l8+TJubm507tyZsLAw/v3f/x24OeeiqKjI/IpRYGAgRUVFAPTq1cvcVmJiIqtWrWLv3r189tlnODs7Wxzr6NGjjBo1irFjxxIWFlZr/93LNXAn7u7ud90uIiIi8jAouXhM/cd//AeXLl1i06ZNhIaG0qZNGwBatmwJQFlZGaNHj+bs2bMMGjSITp06kZuby/r169m/fz8rVqzAycnpF9u5ePEiqamp/Md//Aevvvoq9vb2HDx4kOTkZHJzc4mLi7uv+CsrK4mKiuKbb77hueee47XXXuOJJ57g5MmTZGZmmpOLEydOkJmZSf/+/WnZsiVGo5Gvv/6auLg4CgoK+N//+39btf3RRx9RXl5OcHAwcDPp+N//+3/z97//3WKydVpaGqWlpfj7++Pp6UlxcTGpqalERkaSmJhIjx49zHW///57xo0bh9Fo5D//8z9p164dP//8MwcPHuS7774zJxe3mzRpEnFxcZSUlPDHP/7RXN6mTRuCgoLYuXMnn332GYMHD7bYLzU1FTs7OwYNGnTHPvyl305ERETkcaPk4jH15JNP0r17dzZt2kSfPn0snooDrFixgvz8fN59912GDBliLu/QoQNz5swhOTmZcePG/WI7LVq0YMuWLTg4/ONSGDp0KAkJCSQlJZGTk0PXrl3rHP+qVav45ptvCA0NZfz48Rbbqqurzf/ds2dPUlNTMRgM5rLhw4fzf/7P/yE1NZWxY8fyb//2bxb7l5SUsGbNGvNoQHBwMCEhIfzP//wPL730knm0Zdq0aTRo0MBi38GDBzN06FCWLVtmTi5MJhMzZsygsrKSFStWWMxRCA0NtYj3dv3792fVqlXcuHEDf39/i23PP/88np6epKamWiQXFRUVfPbZZzz33HN4enrese1f+u1EREREHjea0P1PKisri8aNGxMUFGRR/uabb9K4ceP/n71/D6uq2vv//+fikAdAUELFE3hI3Z5SM22Xkd5YFkR3JCr5VQsNRGWX5WHvu48fUTffb+YubzEQPOAB255QE0ElrQ2Ytj2l5SEFj6GAoCkkCsaC9fvDH2u7Wkiiy3TvXo/r8rpizDHHfM+xZtc133PMMSbp6el31I6jo6M5sTAajfz0008UFRXRu3dv4OaqQ3cjLS2NBg0a8NZbb1lts7P712VXt25dc2JRXl5OcXExRUVF/PGPf6SyspLvv//eav+goCCL14ycnZ0ZNGgQP/30E9988425/NbE4vr16xQVFWFvb0+XLl04evSoeVtWVhanT58mICCg2snPt8ZbG/b29rzyyit8//33nDx50lz+xRdfcO3aNf77v//7rtoVEREReVhp5OLfVF5eHn/4wx8sRhwA87yG48eP33FbSUlJrF+/ntOnT1s9pb969epdxZeTk0OHDh2oU6dOjfWMRiPLli1jy5YtnDt3DpPJZLH9p59+strH29vbqqzqlaHc3Fxz2fnz54mNjWX37t1W53HrSMm5c+cA6NChQ80ndRf++7//myVLlpCcnMzEiRMB2LRpE40aNeK5556763YrKiq4cuWKRVndunWt5naIiIiI/JaUXPzOffrpp8ydO5ennnqK4OBgHn30URwdHbl48SLTp0+v8ZUgW/jf//1f1qxZw/PPP8+oUaNo2LAhDg4OHD9+nE8++cQq2bhT169fJzQ0lNLSUl5//XXatWuHk5MTBoOBZcuWsW/fPhufSfWaNm3KH//4R7Zs2cLbb79Nfn4+Bw4cYMSIEVaJYW0UFBRYzde4k4neIiIiIveTkouH2K1P13+pefPm/PDDDxiNRoubVKPRSE5ODs2bN7+jdrZs2UKzZs2YN2+exes/X3/99T3F7uXlxdmzZ/n555955JFHajx+z549+eCDDyzKq0YTqnP27FmrsjNnzgCYz3vv3r1cvHiRadOmWd2Ex8XFWfzdqlUr4OY3Je5GTf0LEBgYyM6dO8nIyCArKwvgjl+Jul3b7u7uxMbGWpR5eHjcUZsiIiIi94vmXDzEquYMVPdq0HPPPceVK1fYuHGjRfnGjRu5cuUK/fv3v6N27O3tMRgMFiMEVa8q3YsXX3yRn376iYSEBKtttx7Lzs7OanSitLS0xi9er1u3jpKSEvPfJSUlrF+/HhcXF/MSs1VL2P6y7d27d1vNI2nfvj1t2rRh06ZNnDp1qsZ4q1O/fn1++umn29br27cvHh4ebNiwgdTUVB5//PFqX+2qzu1+uzp16tCnTx+Lf23atLmjNkVERETuF41cPMQ6d+6MnZ0dS5Ys4aeffqJevXo0b96cLl268MYbb/Dll18ye/ZssrKy6NChA1lZWSQnJ+Pl5cXIkSPvqB1fX19iYmJ4++236d+/P9euXePzzz+/p1d2AF5//XW++uorEhIS+P777+nTpw916tTh9OnT/PDDD8yfPx8AX19fNmzYwP/8z//Qu3dvfvzxR1JSUnB1db1t225ubrzxxhvmZWdTUlK4cOECU6dONa8U1b17d9zd3Zk7dy75+fk0btyY7OxstmzZQrt27SwmWBsMBiIjIxk3bhxvvPGGeSnaq1evcuDAAf74xz8SHBx823i6dOnCV199xezZs+nWrRt2dnY8+eSTNGrUCPjXxO6qROuXq2fVpKbfrib5+fls3rwZgNOnTwOwY8cOCgoKAPD398fT0/OO4xARERG5E0ouHmJNmzZl2rRpLF++nFmzZmE0Gnn55Zfp0qULzs7OJCQkmD+it2nTJtzd3Rk0aBBjxozBycnpjtoZMWIEJpOJ5ORkPv74Y9zd3Xn++ed55ZVXLJa4rS1HR0diYmL49NNP+fzzz5k/fz6PPPIIrVq1svgWxXvvvYeTkxPbt28nMzOTJk2aEBgYSKdOnRg3bly1bf/pT3/i22+/JSkpicuXL9OqVSuioqJ48cUXzXVcXFyIiYlh3rx5rFmzhoqKCjp27Eh0dDTJyckWyQXcvIlfvnw5CQkJfPHFF6xfvx43Nzc6d+5M9+7dazzX/+f/+X/Izc3lyy+/ZP369VRWVhIfH29OLgBeffVVli5dSr169RgwYMAd92NNv11NcnNziY+PtyhLT083ryLWvXt3JRciIiJicwbT3c6YFfmNVX2hOz4+/t/umw+XLl3C39+fV155pdoPAz7MDB8ZH3QIIiLyO2aapGfh/04050LkN7Bu3ToqKip47bXXHnQoIiIiIveNUkGR++jzzz/nwoULrFixgj/+8Y/84Q9/eNAhiYiIiNw3Si5E7qP/83/+D3Xq1KF79+783//7fx90OCIiIiL3leZciEiNNOdCREQeJM25+PeiORciIiIiImITSi5ERERERMQmlFyIiIiIiIhN6CU2EanRggZLCAkJwdHR8UGHIiIiIg85jVyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNmEwmUymBx2EiDy8DB8ZH3QIIiLyb8o0yeFBhyC/MY1ciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbELJhYiIiIiI2ISSCxERERERsQklFyIiIiIiYhMPdXIxffp0evXqdUd18/Ly6NWrFwsWLLjPUd1Um9jCwsIICAi4zxHVrLb9k5WVxdixY+nfv/9v2q8iIiIi8u9LXzYRK0ajkSlTpmA0GgkPD8fFxYXHHnvsQYf1m8vIyCArK4sxY8bc8T4rV67ExcXFpsmkyWRi69atfPXVVxw7doyLFy/i5uZG+/btGT16NF26dKlx/7KyMoYOHUpubi6DBw/mz3/+s81iExEREbnVQz1yMXXqVHbt2vWgw/jdyc3NJTc3l9dff52hQ4fi5+f3u00uFi1aVKt9Vq1aRUpKik3j+Pnnn5k2bRo//PADL7zwApMnTyYwMJCsrCxCQkLYsmVLjfvHx8dz5coVm8YkIiIiUp17HrmoqKigvLycunXr2iIeCw4ODjg4aHDlt/bjjz8C4OrqatN2TSYTpaWl1K9f36bt/jsLCwsDYOHChbetY29vz4IFC3jiiScsygMDAxkyZAhz587lxRdfxM7O+lnB8ePHWbVqFX/605+YO3euTWMXERER+aVa3bmnpKQwY8YMYmNjOXz4MCkpKVy4cIGpU6cSEBCAyWRi/fr1bNy4kTNnzmBnZ0enTp0IDQ21mp+QmprK2rVrycnJwWg04u7uTteu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IaGhoRbt+fn5kZKSwubNm7ly5QpOTk60adOGDz/8EF9fX3O9gQMHkpWVxbZt2/jyyy+prKwkMjKyxuRi3LhxFBcXk5SUxNWrVzGZTGzatOmekovi4mLzZP01a9ZUWyc+Ph53d/e7PoaIiIiILRhMtVkLVkR+dwwf/XbL9YqIyH8W0yStWvh7Y7M5FyIiIiIi8vum5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITSi5ERERERMQmtD6YiNRoQYMlhISE4Ojo+KBDERERkYecRi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNmEwmUymBx2EiDy8DB8ZH3QIIiLyEDFNcnjQIchDTCMXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbOKhTi6mT59Or1697qhuXl4evXr1YsGCBfc5qptqE1tYWBgBAQH3OaKa1bZ/srKyGDt2LP379/9N+1VERERE/n1poWKxYjQamTJlCkajkfDwcFxcXHjssccedFi/uYyMDLKyshgzZswd77Ny5UpcXFxsnkweOXKErVu3cuzYMU6cOEFpaSmRkZG3Pc758+eJj49n7969XL16lSZNmvDSSy/x5ptvUqdOHZvGJiIiIlLloR65mDp1Krt27XrQYfzu5Obmkpuby+uvv87QoUPx8/P73SYXixYtqtU+q1atIiUlxeax7Nq1i6SkJEpKSn71tzh79iwjRoxgx44dBAQEMGnSJLp3787ixYuZNGkS+m6miIiI3C/3PHJRUVFBeXk5devWtUU8FhwcHHBw0ODKb+3HH38EwNXV1abtmkwmSktLqV+/vk3b/XcWFhYGwMKFC2usFxQUxMiRI6lXrx5ffPEFhw4dum3dTz75hJKSEhYvXszjjz8OwKBBg/Dy8iI2NpatW7fi5+dnu5MQERER+f+r1Z17SkoKM2bMIDY2lsOHD5OSksKFCxeYOnUqAQEBmEwm1q9fz8aNGzlz5gx2dnZ06tSJ0NBQq/kJqamprF27lpycHIxGI+7u7nTt2pWJEyfSsGFD4Oa8htTU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zGTWrFl88sknPP744zz99NMMHDjwvr7CNHv2bFJTU6vd9st5Ji+//DLTp0+/q+O8+OKLFBUVER8fb57f4ujoSEhICDt37uT777+v8f8zERERkbt1V8lFde9zm0wmGjZsSFRU1G33q7pxbtWqFUlJSezdu5d9+/Zx4MABoqKiWLBgAYsWLaJFixZ3E5aVmhKCiooKi7+vX79OaGgopaWlvP7667Rr1w4nJycMBgPLli1j3759NomptkwmExEREZw5c4bg4GA6deqEs7MzdnZ2pKSkkJaWZjVa8DC53SpiBoOBefPmWYw83KrqWrlTR48eJSIighYtWhAREUGzZs2oU6cOBoOB999/36KP3NzcSExM5ODBg+zZs4eDBw8yZ84cFixYQHR0dI3zKu7FyJEjeemllyzK5s6dC8CECRMsym8d0bobwcHBvPbaa5w8eZKff/6Ztm3b4uLiQlJSEo8++qh59EZERETElmy2zmvLli3Jycmha9eud7TU6COPPELfvn3p27cvcHP1ngkTJvD3v/+dP//5z9XuU7XiztmzZ622nT592qqs6gn7Tz/9ZLUtLy/PYr7H3r17uXjxItOmTeOVV16xqBsXF/er51MbzZs3B6qPuaqsqs6JEyfIzs4mNDTU6mNuGzdutPi7tv1TW82bN+ef//wnV69etXpF6fTp0zg5OZknTdekZcuWfP311zRt2pTWrVvXWLdq5CM7O9viVa9fSktLo6Kignnz5pn7DqC0tNRqFArA3t6eXr16mVd1OnHiBMOHDychIYHo6Gjg7karatqnTZs2ViNIVf3Yp0+fWh/r1zzyyCN06tTJ/Pf333/PlStX+O///m+bH0tEREQEbPgRPX9/fyorK4mJial2e9VrLgBFRUVW2zt27AhAcXHxbY9RtVxtZmYmP/zwg7m8vLyclStXWtWvujHdu3evRXlaWhoXL160KLO3twewmgOye/dui/f1baFjx440bdqUlJQULl26ZC43Go2sWLECg8FgXlmr6sn+L+M6efIkGRkZFmW17Z/a6tevH5WVlSxbtsyifNeuXWRlZeHj43PbkYhbVU12jo2NtRpBAstrxdfXF0dHRxYtWmSeW3Krqn653e+3ZMkSq5Gd6q4/b29v6tata5GIVs3hqOma/KV69epVm8w+aDdu3ODjjz/mkUceYcSIEQ86HBEREfkPZbORiwEDBhAQEMDatWs5fvw4zz77LG5ubhQWFnLo0CHOnz9PcnIyAOPHj8fFxYUePXrQpEkTrl69SkpKCgaD4VdX2Xn33XcZM2YMo0ePZvDgwealVqu7SfX29qZ3795s2LABk8lE+/btyc7OJiMjg5YtW1pM5u3evTvu7u7MnTuX/Px8GjduTHZ2Nlu2bKFdu3acPHnSVl2Fvb09U6ZMYfLkybzxxhsEBgZSv359tm/fzuHDhwkJCTEnRq1bt6ZNmzYkJiZSVlaGl5cXOTk5bNiwgXbt2nHs2LG77p/aCggIIDU1leXLl5OXl0fPnj05d+4c69atw93d3WLlp5p07tyZsLAwFi5cyLBhwxgwYAAeHh5cunSJY8eOsWvXLnbv3g1AkyZNmDhxIh9++CHBwcH4+/vj6elJYWEhmZmZTJs2jQ4dOtCvXz9WrlzJO++8Q2BgII6OjuzZs4eTJ09ajaZERUVRWFhInz598PT05MaNG2zfvp1r167h7+9vrte1a1fWrl3LrFmz6Nu3Lw4ODnTp0sViZOSXunbtSnJyMnFxcbRu3RqDwYCPj4/VKla1lZ+fz+bNm4F/jULt2LGDgoICAHO/AJw6dYoZM2bQt29fGjduzOXLl0lNTSU3N5dp06ZVOydHRERExBZs+vnryMhIevXqxWeffcayZcsoLy/H3d2djh07Wtx4BgUFsX37djZs2EBxcTGurq506NCBKVOmWH3s7pe6detGbGwsMTExLF++HGdnZ/NH4oKDg63qz5w5k7/97W+kpaWxZcsWevToQXx8PB988AH5+fnmei4uLsTExDBv3jzWrFlDRUUFHTt2JDo6muTkZJsmF3BzidT58+eTkJDAihUrKC8vx9vbm6lTp1p8RM/e3p7o6Gjmzp1LamoqpaWltG3blunTp5OdnW2VXNS2f2rDwcGBmJgY80f00tPTcXFxwdfXl3HjxtG0adM7bissLIxOnTqxevVqVq1aRWlpKY0aNaJt27ZMmjTJom5QUBAtWrQgMTGR1atXU15ejoeHB08++aT5uxndu3dn9uzZLF68mPj4eOrUqUPv3r1ZuHAhoaGhFu35+fmRkpLC5s2buXLlCk5OTrRp04YPP/wQX19fc72BAweSlZXFtm3b+PLLL6msrCQyMrLG5GLcuHEUFxeTlJTE1atXMZlMbNq06Z6Ti9zcXOLj4y3K0tPTSU9PN59/VXLh5uZG48aN2bhxI5cvX8bZ2ZkePXowc+ZMunTpck9xiIiIiNTEYKrNWrAi8rtj+Oi3W65XREQefqZJNn02Lf9hbDbnQkREREREft+UXIiIiIiIiE0ouRAREREREZtQciEiIiIiIjah5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJLVQsIjVa0GAJISEhODo6PuhQRERE5CGnkQsREREREbEJJRciIiIiImITSi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJgwmk8n0oIMQkYeX4SPjgw5BRER+Y6ZJDg86BPk3pZELERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbELJxUNo//799OrVi5SUlAcWQ1ZWFmPHjqV///706tWLBQsWPLBYREREROTfg76QIlaMRiNTpkzBaDQSHh6Oi4sLjz322IMO6zeXkZFBVlYWY8aMueN9Vq5ciYuLCwEBATaN5ciRI2zdupVjx45x4sQJSktLiYyMrPE4BQUFLF68mK+//prLly/ToEEDOnTowIQJE2jTpo1N4xMREREBJRcPpZ49e7Jr1y4cHB7Mz5Obm0tubi4TJkxg6NChDySGh0FGRgapqam1Si5WrVqFp6enzZOLXbt2kZSUhLe3N4899hiHDh2qsf7x48cZP3489evX55VXXqFp06b89NNPfP/991y5csWmsYmIiIhUUXLxELl27RpOTk7Y2dlRp06dBxbHjz/+CICrq6tN2zWZTJSWllK/fn2btvvvLCwsDICFCxfWWC8oKIiRI0dSr149vvjiixqTixs3bvA///M/NGnShIULF+Ls7GzTmEVERERuR8mFjaSkpDBjxgxiY2P59ttvSUlJ4ccff8TLy4uQkBAGDhxoUT8gIABPT0/ee+89YmJiOHz4MK6urmzatIn9+/cTHh5u9dqLyWRi48aNbNy4kdOnTwPQrFkz+vfvT3h4uLnezz//zKeffkpaWhrnz5/nkUceoUePHowZM4aOHTvWeB5hYWEcOHAAgBkzZjBjxgwANm3aRLNmzSgtLSUhIYHt27dTWFhIgwYN6NOnD2PHjsXT09Pczq3nUFpaSlJSEufPn+fNN980jwRs27aNNWvWcOLECSoqKmjXrh0jRoxgwIABVnHt37+fFStWcOTIEUpLS/Hw8OCJJ57g7bffxs3NDYCkpCQyMjI4ffo0V65cwdXVld69ezN27FiaNWtm0d7OnTtJTEzk1KlTlJWV4ebmRqdOnYiIiMDLy8uiH3r16mXer6ZXkarq5efnW+xT1Xf3wt3d/Y7rbt++nXPnzjFnzhycnZ35+eefAXjkkUfuKQYRERGRX6PkwsY++eQTSktLCQoKAm4mHf/n//wffv75Z6ub0oKCAsaOHcuAAQP4r//6L65fv15j29OmTWPr1q106dKFUaNG4eLiwtmzZ/nyyy/NyYXRaORPf/oThw4dws/PjyFDhlBSUsJnn33G6NGjWbRoEZ06dbrtMUaNGsXjjz/O0qVLCQwMpEePHgA0bNgQo9FIREQE3333Hb6+vgwfPpycnBzWr1/Pnj17SExMpEmTJhbtrVq1iuLiYl599VXc3d3N2+fPn8+SJUt4+umnCQ8Px87OjvT0dP7yl78wZcoUhgwZYm5j/fr1zJo1i8aNGzNo0CA8PT25cOECX331FQUFBebk4tNPP6VLly4MHToUV1dXTp06xcaNG9m3bx+rV6821/vmm2947733aNu2LSEhITg7O3Pp0iX27t3LuXPn8PLyYtSoUZhMJg4ePMjMmTPNsXTr1u22fTdz5kzmzJmDm5sbo0aNMpc3bNiwxt/V1nbt2gWAi4sLoaGhfPvtt5hMJtq3b8+f/vQn/vjHP/6m8YiIiMjvh5ILGysqKmL16tXmV1GCgoIIDg7mf//3f3n++eepW7euuW5ubi5Tp07l1Vdf/dV2t2/fztatW3nppZeYMWMGdnb/WuirsrLS/N9r1qzhm2++4ZNPPrG4iQwKCmLo0KHMnTu3xldwnnrqKRwcHFi6dCndunXDz8/PvO2zzz7ju+++Y8SIEbzzzjvm8j59+jBhwgRiYmL461//atHehQsXWLduHY0aNTKXHT9+nCVLlhASEsL48ePN5cHBwUycOJHY2Fj8/f1xcnKioKCAjz76CG9vb5YsWYKLi4u5/tixYy3OffXq1dSrV8/i+D4+PowbN47k5GTeeOMNADIzM6msrCQ2NtYirrfeesuiH9LS0jh48KBFH9TEz8+PuLg4GjVqdMf73A8//PADAFOmTKFLly78f//f/0dxcTFLly7lnXfe4ZNPPqFPnz4PLD4RERH5z6WlaG0sKCjI4h13Z2dnBg0axE8//cQ333xjUdfV1fWOJ/5u3boVgAkTJlgkFoDF31u3bsXb25s//OEPFBUVmf8ZjUb69OnDd999R1lZ2V2dW3p6OnZ2doSEhFiU9+3bl/bt27Njxw6Lm30Af39/ixv4qhgNBgP+/v4WMRYVFeHj48O1a9c4fPgwAF988QXl5eWEhoZaJBbVnXtVYlFZWUlJSQlFRUW0b98eZ2dnjhw5Yq5X9fv84x//wGg03lVf3I3r169bna/RaMRoNFqV/9oo1q8dB8Db25s5c+bw/PPPExQURFxcHAaDgfnz59vqlEREREQsaOTCxry9va3KWrduDdwcqbhV8+bNsbe3v6N2z507x6OPPvqr796fOXOGGzduVDtvoUpRURFNmza9o+PeKi8vDw8PDxo0aGC1rW3btmRnZ1NUVGSRTLRq1araGE0mk/nVsepUTSo/d+4cAB06dPjV+Pbt28eiRYs4evQoN27csNh29epV838PGTKEzMxMZs2axSeffMLjjz/O008/zcCBA+/rK0yzZ88mNTW12m2//L1efvllpk+fflfHqVoMwN/fH4PBYC5v1aoVjz/+OAcPHqS0tNRqlEdERETkXim5eIBufUXKltq1a8e777572+2/5RyA252jwWBg3rx5VqMwVdq2bVur4xw9epSIiAhatGhBREQEzZo1o06dOhgMBt5//32LERU3NzcSExM5ePAge/bs4eDBg8yZM4cFCxYQHR1d47yKezFy5Eheeukli7K5c+cCN0ekbuXh4XHXx2nSpAmnTp2qNhF1d3fHZDJRUlKi5EJERERsTsmFjZ09e9aq7MyZM8DNkYq71apVKzIzM/nxxx9rHL1o2bIlV65c4cknn7ztjfvdat68Of/85z+5evWq1StKp0+fxsnJyTxpuiYtW7bk66+/pmnTpuZRndupGvnIzs7Gy8vrtvXS0tKoqKhg3rx5Fv1cWlpqMWpRxd7enl69eplXdTpx4gTDhw8nISGB6OhoAIun/neqpn3atGlj9fG6qn605RyIzp078/XXX1NQUGC1rbCwEHt7+2pHn0RERETuleZc2Ni6desoKSkx/11SUsL69etxcXHhiSeeuOt2q554z5s3z2peg8lkMv+3v78/P/74I3//+9+rbafqdaO70a9fPyorK1m2bJlF+a5du8jKysLHx+eOEpqqyc6xsbFUVFTUGKOvry+Ojo4sWrTIol+rVJ171etlt/YFwJIlS6z6q6ioyKodb29v6taty08//WQuq3qyX1xc/KvndOs+t7bxIAwcOBB7e3uSk5Mt5pRkZ2dz+PBhevXq9UC/oyIiIiL/uTRyYWNubm688cYb5onaKSkpXLhwgalTp97Ta1ADBgzg+eefZ/PmzZw7dw4fHx9cXFzIycnhn//8J2vXrgXg9ddfZ8+ePURHR7Nv3z6efPJJnJycuHDhAvv27eORRx5hwYIFdxVDQEAAqampLF++nLy8PHr27Mm5c+dYt24d7u7uFis/1aRz586EhYWxcOFChg0bxoABA/Dw8ODSpUscO3aMXbt2sXv3buDmKz4TJ07kww8/JDg4GH9/fzw9PSksLCQzM5Np06bRoUMH+vXrx8qVK3nnnXcIDAzE0dGRPXv2cPLkSavRlKioKAoLC+nTpw+enp7cuHGD7du3c+3aNfz9/c31unbtytq1a5k1axZ9+/bFwcGBLl261DgC1bVrV5KTk4mLi6N169YYDAZ8fHzu+RWk/Px8Nm/eDGD+xsmOHTvMoxNV/QI3E6WRI0eydOlSwsLCeOGFF/jpp59Ys2YNdevWtXoFS0RERMRWlFzY2J/+9Ce+/fZbkpKSuHz5Mq1atSIqKooXX3zxntv+f//f/5cePXqQnJzMokWLsLe3p1mzZhaTgR0cHJg7dy7r1q1jy5Yt5kTCw8ODzp078/LLL9/18R0cHIiJiTF/RC89PR0XFxd8fX0ZN25crSaJh4WF0alTJ1avXs2qVasoLS2lUaNGtG3blkmTJlnUDQoKokWLFiQmJrJ69WrKy8vx8PDgySefNH83o3v37syePZvFixcTHx9PnTp16N27NwsXLiQ0NNSiPT8/P1JSUti8eTNXrlzBycmJNm3a8OGHH+Lr62uuN3DgQLKysti2bRtffvkllZWVREZG1phcjBs3juLiYpKSkrh69Somk4lNmzbdc3KRm5tLfHy8RVl6ejrp6enm87/1I4bjx4/H09OTpKQk5s2bR506dejVqxfh4eG1ns8iIiIicqcMpl++RyJ3peoL3fHx8RZfZxb5d2f46LdbrldERB4Opkl6/ix3R3MuRERERETEJpRciIiIiIiITSi5EBERERERm9CcCxGpkeZciIj8/mjOhdwtjVyIiIiIiIhNKLkQERERERGb0JiXiNRoQYMlhISE4Ojo+KBDERERkYecRi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNmEwmUymBx2EiDy8DB8ZH3QIIiLyGzBNcnjQIch/AI1ciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbELJhYiIiIiI2ISSCxERERERsYmHOrmYPn06vXr1uqO6eXl59OrViwULFtznqG6qTWxhYWEEBATc54hqVtv+ycrKYuzYsfTv3/837VcRERER+felBY3FitFoZMqUKRiNRsLDw3FxceGxxx570GH95jIyMsjKymLMmDF3vM/KlStxcXGxaTJpMpnYunUrX331FceOHePixYu4ubnRvn17Ro8eTZcuXSzq//DDD2zdupXdu3dz/vx5fv75Z1q0aIGvry/Dhg2jXr16NotNRERE5FYP9cjF1KlT2bVr14MO43cnNzeX3NxcXn/9dYYOHYqfn9/vNrlYtGhRrfZZtWoVKSkpNo3j559/Ztq0afzwww+88MILTJ48mcDAQLKysggJCWHLli0W9Tdt2sTKlStp0aIFb731Fm+//TZeXl7ExcUxatQoysrKbBqfiIiISJV7HrmoqKigvLycunXr2iIeCw4ODjg4aHDlt/bjjz8C4OrqatN2TSYTpaWl1K9f36bt/jsLCwsDYOHChbetY29vz4IFC3jiiScsygMDAxkyZAhz587lxRdfxM7u5rMCX19fQkJCcHZ2NtcNCgqiZcuWLFmyhOTkZIYOHXofzkZERER+72p1556SksKMGTOIjY3l8OHDpKSkcOHCBaZOnUpAQAAmk4n169ezceNGzpw5g52dHZ06dSI0NNRqfkJqaipr164lJycHo9GIu7s7Xbt2ZeLEiTRs2BC4Oa8hNTWV/fv3W+z77bffMm/ePLKysnBycsLX15dBgwbdNt74+Hir44eFhZGfn2/xlHn37t0kJyfz/fffc+nSJRwdHencuTOjRo2yurGzhQMHDrB48WKOHj2K0WjE29ubwYMH8+qrr1rU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YouIiIiIiE0ouRAREREREZtQciEiIiIiIjah5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITWtBYRGq0oMESQkJCcHR0fNChiIiIyENOIxciIiIiImITSi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITRhMJpPpQQchIg8vw0fGBx2CiIjcBdMkhwcdgvwOaeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm3iok4vp06fTq1evO6qbl5dHr169WLBgwX2O6qbaxBYWFkZAQMB9jqhmte2frKwsxo4dS//+/X/TfhURERGRf1/6uopYMRqNTJkyBaPRSHh4OC4uLjz22GMPOqzfXEZGBllZWYwZM+aO91m5ciUuLi42TSZNJhNbt27lq6++4tixY1y8eBE3Nzfat2/P6NGj6dKli0X9s2fPsnjxYo4fP87FixcxGo00bdqUZ555hpEjR/Loo4/aLDYRERGRWz3UycXUqVP5n//5nwcdxu9Obm4uubm5TJgwgaFDhz7ocB6YjIwMUlNTa5VcrFq1Ck9PT5smFz///DPTpk2jffv2vPDCCzRr1oxLly6xYcMGQkJCmDFjBn5+fub6hYWFXLp0if79+9O4cWPs7e05efIkn332Gdu2bWPlypU0atTIZvGJiIiIVLnn5KKiooLy8nLq1q1ri3gsODg44ODwUOc//5F+/PFHAFxdXW3arslkorS0lPr169u03X9nYWFhACxcuPC2dezt7VmwYAFPPPGERXlgYCBDhgxh7ty5vPjii9jZ3XzLsXfv3vTu3duqnZ49e/KXv/yFlJQU3njjDRuehYiIiMhNtbpzT0lJYcaMGcTGxnL48GFSUlK4cOECU6dOJSAgAJPJxPr169m4cSNnzpzBzs6OTp06ERoaajU/ITU1lbVr15KTk4PRaMTd3Z2uXbsyceJEGjZsCNyc15Camsr+/fst9v3222+ZN28eWVlZODk54evry6BBg24bb3x8vNXxw8LCyM/PJyUlxVy2e/dukpOT+f7777l06RKOjo507tyZUaNGWd3Y2cKBAwdYvHgxR48exWg04u3tzeDBg3n11Vct6h05coR169Zx6NAhCgoKsLe3p127dowYMYL+/ftbtXun/VOdsLAwDhw4AMCMGTOYMWMGAJs2baJZs2aUlpaSkJDA9u3bKSwspEGDBvTp04exY8fi6elpbmf//v2Eh4cTGRlJaWkpSUlJnD9/njfffNM8ErBt2zbWrFnDiRMnqKioMJ/TgAEDrOLav38/K1as4MiRI5SWluLh4cETTzzB22+/jZubGwBJSUlkZGRw+vRprly5gqurK71792bs2LE0a9bMor2dO3eSmJjIqVOnKCsrw83NjU6dOhEREYGXl5dFP9x67URGRt52VKKqXn5+vsU+VX13txwcHKq9/tzd3enZsyfp6elcvnz5V193atq0KQBXr16961hEREREanJXwwLR0dEYjUYCAwNxcnLCy8sLgGnTpvH555/j6+tLQEAA5eXlbN26lfHjxzN79myee+45ADZv3sz06dPp0aMH4eHh1KlTh4KCAnbt2sXly5fNyUV1jhw5wrhx46hfvz4jR47ExcWFbdu2ERkZeTenYiElJYXi4mL8/Pxo0qQJhYWFJCcnM27cOOLj4+nRo8c9H6PKjh07mDx5Mu7u7gwfPpz69euzbds2oqKiyM3NZfz48ea6GRkZnD17lgEDBuDp6UlxcTGpqalMnjyZqKgoXnzxRXPde+2fUaNG8fjjj7N06VICAwPN59ywYUOMRiMRERF89913+Pr6Mnz4cHJycli/fj179uwhMTGRJk2aWLS3atUqiouLefXVV3F3dzdvnz9/PkuWLOHpp58mPDwcOzs70tPT+ctf/sKUKVMYMmSIuY3169cza9YsGjduzKBBg/D09OTChQt89dVXFBQUmJOLTz/9lC5dujB06FBcXV05deoUGzduZN++faxevdpc75tvvuG9996jbdu2hISE4OzszKVLl9i7dy/nzp3Dy8uLUaNGYTKZOHjwIDNnzjTH0q1bt9v23cyZM5kzZw5ubm6MGjXKXF7T9XyvCgsLcXR0xMXFxWrbjRs3KC0t5caNG5w5c4Z58+YB8Mwzz9y3eEREROT37a6Si7KyMlauXGnxKlR6ejpbt27l/fff57XXXjOXBwcHExISwscff4yPjw8Gg4GMjAycnJyIi4uzeO0pPDz8V489Z84cKisrSUhIMCc1gwcPZvTo0Xdz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2bKFK1euYDAYaNq0Ka+99hojR46s1e8kIiIiUhsGU23WghWR3x3DR7/dcr0iImI7pkk2fYYsckdsNudCRERERER+35RciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbELJhYiIiIiI2ITWKBORGi1osISQkBAcHR0fdCgiIiLykNPIhYiIiIiI2ISSCxERERERsQklFyIiIiIiYhNKLkRERERExCaUXIiIiIiIiE0ouRAREREREZtQciEiIiIiIjah5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITSi5ERERERMQmDCaTyfSggxCRh5fhI+ODDkFERO6AaZLDgw5BRCMXIiIiIiJiG0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbOI/KrmYPn06vXr1uqO6eXl59OrViwULFtznqG6qTWxhYWEEBATc54hqVtv+ycrKYuzYsfTv3/837VcREREReXhoQWS5Z0ajkSlTpmA0GgkPD8fFxYXHHnvsQYf1m8vIyCArK4sxY8bc8T4rV67ExcXF5snkkSNH2Lp1K8eOHePEiROUlpYSGRn5wJNWERER+c/2HzVyMXXqVHbt2vWgw/jdyc3NJTc3l9dff52hQ4fi5+f3u00uFi1aVKt9Vq1aRUpKis1j2bVrF0lJSZSUlPwufwsRERF5MH7zkYuKigrKy8upW7euzdt2cHDAwUGDMb+1H3/8EQBXV1ebtmsymSgtLaV+/fo2bfffWVhYGAALFy6ssV5QUBAjR46kXr16fPHFFxw6dOi3CE9ERER+5+7rnXhKSgozZswgNjaWw4cPk5KSwoULF5g6dSoBAQGYTCbWr1/Pxo0bOXPmDHZ2dnTq1InQ0FCr+QmpqamsXbuWnJwcjEYj7u7udO3alYkTJ9KwYUPg5ryG1NRU9u/fb7Hvt99+y7x588jKysLJyQlfX18GDRp023jj4+Otjh8WFkZ+fr7FU+bdu3eTnJzM999/z6VLl3B0dKRz586MGjWKJ554wlbdaHbgwAEWL17M0aNHMRqNeHt7M3jwYF599VWLekeOHGHdunUcOnSIgoIC7O3tadeuHSNGjKB///5W7d5p/1QnLCyMAwcOADBjxgxmzJgBwKZNm2jWrBmlpaUkJCSwfft2CgsLadCg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u5ZZs2bRt29fHBwc6NKli8XIyC917dqV5ORk4uLiaN26NQaDAR8fH6tVrGorPz+fzZs3A/8ahdqxYwcFBQUA5n4RERERsaUH+jnryMhIevXqxWeffcayZcsoLy/H3d2djh07Wtx4BgUFsX37djZs2EBxcTGurq506NCBKVOmWH3s7pe6detGbGwsMTExLF++HGdnZ/NH4oKDg63qz5w5k7/97W+kpaWxZcsWevToQXx8PB988AH5+fnmei4uLsTExDBv3jzWrFlDRUUFHTt2JDo6muTkZJsmF3BzidT58+eTkJDAihUrKC8vx9vbm6lTp1p8RM/e3p7o6Gjmzp1LamoqpaWltG3blunTp5OdnW2VXNS2f2rDwcGBmJgY80f00tPTcXFxwdfXl3HjxtG0adM7bissLIxOnTqxevVqVq1aRWlpKY0aNaJt27ZMmjTJom5QUBAtWrQgMTGR1atXU15ejoeHB08++aT5uxndu3dn9uzZLF68mPj4eOrUqUPv3r1ZuHAhoaGhFu35+fmRkpLC5s2buXLlCk5OTrRp04YPP/wQX19fc72BAweSlZXFtm3b+PLLL6msrCQyMrLG5GLcuHEUFxeTlJTE1atXMZlMbNq06Z6Ti9zcXOLj4y3K0tPTSU9PN5+/kgsRERGxNYOpNmu7isjvjuGj3275XRERuXumSQ/0mbEI8ADnXIiIiIiIyH8WJRciIiIiImITSi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQgsii0iNFjRYQkhICI6Ojg86FBEREXnIaeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbELJhYiIiIiI2ISSCxERERERsQmDyWQyPeggROThZfjI+KBDEBGRGpgmOTzoEETMNHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITTzUycX06dPp1avXHdXNy8ujV69eLFiw4D5HdVNtYgsLCyMgIOA+R1Sz2vZPVlYWY8eOpX///r9pv4qIiIjIvy99dUWsGI1GpkyZgtFoJDw8HBcXFx577LEHHdZvLiMj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W66XiOjvSpjK97VEAOdcEBERERGRmjC4ICIiIiIitWBwQUREREREasE5F0RUKs65ICJ6N865IHqDPRdERERERKQWDC6IiIiIiEgt2IdHRKVabRgMDw8PaGtrV3VViIiI6CPHngsiIiIiIlILBhdERERERKQWDC6IiIiIiEgtGFwQEREREZFaMLggIiIiIiK1YHBBRERERERqweCCiIiIiIjUgsEFERERERGpBYMLIiIiIiJSCwYXRERERESkFgwuiIiIiIhILRhcEBERERGRWsgEQRCquhJE9PGSLS6o6ioQEX3UhKlaVV0Foo8Gey6IiIiIiEgtGFwQEREREZFaMLggIiIiIiK1YHBBRERERERqweCCiIiIiIjUgsEFERERERGpxUcdXMyZMwd2dnZlypuUlAQ7OzusXr26kmv1Rnnq5uXlBVdX10quUenK2z63b9+Gj48PevTo8UHblYiIiIj+vrgwM6koKCjA9OnTUVBQAG9vb8jlcjRp0qSqq/XBHT9+HLdv38aECRPKvM22bdsgl8vVHkxev34dkZGRuHnzJu7evYucnBzMnj272P3cunULUVFRiI2NRVJSEgCgQYMGcHV1xaBBg6ClxdueiIiIKsdH3XMxc+ZMnDp1qqqr8Y+TmJiIxMREDB8+HMOGDYOzs/M/NrhYu3ZtubbZvn07IiIi1F6XU6dOISwsDFlZWe88F5s2bUJERASaNWuGiRMnwtvbG0ZGRli4cCH8/f3B780kIiKiyvLerzALCwuRn58PPT09ddRHQktLi29Zq8CzZ88AAEZGRmotVxAE5OTkoHr16mot9+/My8sLALBmzZpS87m5uWH06NGoVq0ajh49iqtXr5aYd9iwYZgzZw50dXUlaf/9738RGRmJkydP4rPPPlPPARAREREVUa4n94iICMydOxdBQUG4du0aIiIikJKSgpkzZ8LV1RWCIGD37t3Yt28f4uLioKGhgebNm2P8+PEq8xMOHDiAnTt34tGjRygoKICJiQlatWqFKVOmoEaNGgDezGs4cOAAzp8/L9n28uXLWLZsGW7fvg19fX04Ojpi8ODBJdZ31apVKvv38vJCcnKy5C3zmTNnEB4ejr/++gtPnz6FtrY2WrRoAU9PT7Rv3748TVUmFy9exLp163Djxg0UFBTA0tISQ4YMwcCBAyX5rl+/jl27duHq1atITU2F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eEBbW7uqq0JEREQfOfZcEBERERGRWjC4ICIiIiIitWBwQUREREREasHggoiIiIiI1ILBBRERERERqQWDCyIiIiIiUgsGF0REREREpBYMLoiIiIiISC0YXBARERERkVowuCAiIiIiIrVgcEFERERERGrB4IKIiIiIiNRCJgiCUNWVIKKPl2xxQVVXgYioyglTtaq6CkR/C+y5ICIiIiIitWBwQUREREREasHggoiIiIiI1ILBBRERERERqQWDCyIiIiIiUgsGF0REREREpBYMLj5C58+fh52dHSIiIqqsDrdv34aPjw969OgBOzs7rF69usrqQkRERER/D1y0mVQUFBRg+vTpKCgogLe3N+RyOZo0aVLV1frgjh8/jtu3b2PChAll3mbbtm2Qy+VwdXVVa12uX7+OyMhI3Lx5E3fv3kVOTg5mz55d4n7S09OxadMmnDhxAikpKTAwMECjRo3g7u6O7t27q7VuREREREoMLj5C7dq1w6lTp6ClVTWnJzExEYmJifD398ewYcOqpA4fg+PHj+PAgQPlCi62b98OMzMztQcXp06dQlhYGCwtLdGkSRNcvXq1xLy5ubnw9PREamoqBg4ciCZNmiAjIwMHDhzA1KlT8d1338HNzU2t9SMiIiICGFx8VLKzs6Gvrw8NDQ3o6upWWT2ePXsGADAyMlJruYIgICcnB9WrV1druX9nXl5eAIA1a9aUms/NzQ2jR49GtWrVcPTo0VKDi+PHj+PRo0eYMmUKhg8fLqZ//vnncHZ2xp49exhcEBERUaVgcKEmERERmDt3LoKCgnD58mVERETg2bNnsLCwgIeHB/r06SPJ7+rqCjMzM3zzzTcIDAzEtWvXYGRkhP379+P8+fPw9vZWGfYiCAL27duHffv24cGDBwAAc3Nz9OjRA97e3mK+169fY8uWLYiKisLjx4+ho6MDW1tbTJgwAc2aNSv1OLy8vHDx4kUAwNy5czF37lwAwP79+2Fubo6cnBysX78eR44cQVpaGgwNDWFvbw8fHx+YmZmJ5RQ9hpycHISFheHx48cYO3as2BNw+PBh7NixA3fv3kVhYSGsra0xatQoODk5qdTr/Pnz2Lx5M65fv46cnByYmpqiffv2mDRpEoyNjQEAYWFhOH78OB48eIAXL17AyMgIHTt2hI+PD8zNzSXlnTx5EiEhIbh//z5yc3NhbGyM5s2bw8/PDxYWFpJ2sLOzE7crbSiSMl9ycrJkG2XbvQ8TE5My583OzgYAmJqaStINDAxQrVo16OnpvVddiIiIiErC4ELNli9fjpycHPHNcEREBP7zn//g9evXKg+lqamp8PHxgZOTE3r27IlXr16VWvasWbMQGRmJli1bwtPTE3K5HPHx8fj999/F4KKgoABfffUVrl69CmdnZwwdOhRZWVnYu3cvxo0bh7Vr16J58+Yl7sPT0xNt2rTBhg0bMGjQINja2gIAatSogYKCAvj5+eHKlStwdHTEyJEj8ejRI+zevRtnz55FSEgI6tSpIylv+/btyMjIwMCBA2FiYiJ+vmLFCgQHB6Nz587w9vaGhoYGoqOj8d1332H69OkYOnSoWMbu3buxYMEC1K5dG4MHD4aZmRlSUlLwxx9/IDU1VQwutmzZgpYtW2LYsGEwMjLC/fv3sW/fPsTGxiI0NFTMd+HCBXzzzTewsrKCh4cHDAwM8PTpU5w7dw4JCQmwsLCAp6cnBEHApUuXMG/ePLEurVu3LrHt5s2bhyVLlsDY2Bienp5ieo0aNUo9r+rWoUMHaGpqIjAwEHp6emjSpAkyMzOxdetWZGZmSupGREREpE4MLtQsPT0doaGhMDAwAPBmOIu7uzt+/fVX9OrVS/LWODExETNnzsTAgQPfWe6RI0cQGRmJfv36Ye7cudDQ+L+FvhQKhfjvHTt24MKFC1i+fDk+/fRTMd3NzQ3Dhg3D0qVLSx2C06lTJ2hpaWHDhg1o3bo1nJ2dxc/27t2LK1euYNSoUZg8ebKYbm9vD39/fwQGBuL777+XlJeSkoJdu3ahZs2aYtqtW7cQHBwMDw8PTJw4UUx3d3fHlClTEBQUBBcXF+jr6yM1NRWLFy+GpaUlgoODIZfLxfw+Pj6SYw8NDUW1atUk+3dwcICvry/Cw8MxZswYAEBMTAwUCgWCgoIk9fryyy8l7RAVFYVLly5J2qA0zs7OWLlyJWrWrFnmbSpDw4YN8dNPP+GXX36Bv7+/mG5iYoKVK1eibdu2VVY3IiIi+t/GpWjVzM3NTQwsgDdDUQYPHoyXL1/iwoULkrxGRkZlnvgbGRkJAPD395cEFgAkv0dGRsLS0hKffPIJ0tPTxZ+CggLY29vjypUryM3NrdCxRUdHQ0NDAx4eHpL0rl27wsbGBidOnJA87AOAi4uL5AFeWUeZTAYXFxdJHdPT0+Hg4IDs7Gxcu3YNAHD06FHk5+dj/PjxksCiuGNXBhYKhQJZWVlIT0+HjY0NDAwMcP36dTGf8vwcO3YMBQUFFWqLinj16pXK8RYUFKCgoEAl/V29WO8il8thbW0NLy8vLF68GN9++y309PQwZcoU3LlzR01HRERERCTFngs1s7S0VElr1KgRgDc9FUXVq1cPmpqaZSo3ISEBtWrVeufY+7i4OOTl5RU7b0EpPT0ddevWLdN+i0pKSoKpqSkMDQ1VPrOyssKdO3eQnp4uCSYaNmxYbB0FQSh1UrFyUnlCQgIAoGnTpu+sX2xsLNauXYsbN24gLy9P8llmZqb476FDhyImJgYLFizA8uXL0aZNG3Tu3Bl9+vSp1CFMixYtwoEDB4r97O3z1b9/f8yZM6dC+zl9+jQmT56MpUuXonPnzmJ6jx494ObmhoULF2L9+vUVKpuIiIioNAwuqlBlTay1trbG119/XeLnH3IOQEnHKJPJsGzZMpVeGCUrK6ty7efGjRvw8/ND/fr14efnB3Nzc+jq6kImk2HGjBmSHhVjY2OEhITg0qVLOHv2LC5duoQlS5Zg9erVCAgIKHVexfsYPXo0+vXrJ0lbunQpAEiGLwGqk7HLY9OmTahWrZoksACAWrVqwdbWFn/++Sfy8/Ohra1d4X0QERERFYfBhZrFx8erpMXFxQF401NRUQ0bNkRMTAyePXtWau9FgwYN8OLFC3To0KHEB/eKqlevHk6fPo3MzEyVIUoPHjyAvr6+OGm6NA0aNMCff/6JunXrir06JVH2fNy5cwcWFhYl5ouKikJhYSGWLVsmaeecnBxJr4WSpqYm7OzsxFWd7t69i5EjR2L9+vUICAgA8CYAKq/StmncuDEaN24sSVO2o729fbn3VZK0tDQoFAoIgqBSn8LCQhQWFqoMXyMiIiJSB865ULNdu3YhKytL/D0rKwu7d++GXC5H+/btK1yu8o33smXLVB4MBUEQ/+3i4oJnz55h69atxZajHG5UEd27d4dCocDGjRsl6adOncLt27fh4OBQpoBGOdk5KCgIhYWFpdbR0dER2traWLt2raRdlZTHrhxeVrQtACA4OFilvdLT01XKsbS0hJ6eHl6+fCmmKedwZGRkvPOYim5TtIyq0LhxY+Tk5ODo0aOS9MTERFy8eBHW1tZV+j0qRERE9L+LPRdqZmxsjDFjxogTtSMiIpCSkoKZM2e+1zAoJycn9OrVCwcPHkRCQgIcHBwgl8vx6NEjnD59Gjt37gQADB8+HGfPnkVAQABiY2PRoUMH6OvrIyUlBbGxsdDR0cHq1asrVAdXV1ccOHAAmzZtQlJSEtq1a4eEhATs2rULJiYmkpWfStOiRQt4eXlhzZo1GDFiBJycnGBqaoqnT5/i5s2bOHXqFM6cOQMAqFOnDqZMmYKFCxfC3d0dLi4uMDMzQ1paGmJiYjBr1iw0bdoU3bt3x7Zt2zB58mQMGjQI2traOHv2LO7du6fSmzJ//nykpaXB3t4eZmZmyMvLw5EjR5CdnQ0XFxcxX6tWrbBz504sWLAAXbt2hZaWFlq2bFlqD1SrVq0QHh6OlStXolGjRpDJZHBwcFBZxaq8kpOTcfDgQQAQv+PkxIkTSE1NBQCxXQDAw8MDp0+fxn//+19cuHABNjY2SEtLw65du/D69esynyciIiKi8mJwoWZfffUVLl++jLCwMDx//hwNGzbE/Pnz0bdv3/cu+4cffoCtrS3Cw8Oxdu1aaGpqwtzcXDIZWEtLC0uXLsWuXbtw6NAhMZAwNTVFixYt0L9//wrvX0tLC4GBgeKX6EVHR0Mul8PR0RG+vr7lmiTu5eWF5s2bIzQ0FNu3b0dOTg5q1qwJKysrTJ06VZLXzc0N9evXR0hICEJDQ5Gfnw9TU1N06NBB/N6Mtm3bYtGiRVi3bh1WrVoFXV1ddOzYEWvWrMH48eMl5Tk7OyMiIgIHDx7EixcvoK+vj8aNG2PhwoVwdHQU8/Xp0we3b9/G4cOH8fvvv0OhUGD27NmlBhe+vr7IyMhAWFgYMjMzIQgC9u/f/97BRWJiIlatWiVJi46ORnR0tHj8yuCiRYsWWL9+PYKDg3Hs2DHs3bsX1atXR8uWLTFmzBjJF/wRERERqZNMeHscCVWI8hu6V61axYc3+p8iW/zhluslIvpYCVP5PpaoLDjngoiIiIiI1ILBBRERERERqQWDCyIiIiIiUgvOuSCiUnHOBRER51wQlRV7LoiIiIiISC0YXBARERERkVowuCAiIiIiIrXgAEIiKtVqw2B4eHhAW1u7qqtCREREHzn2XBARERERkVowuCAiIiIiIrVgcEFERERERGrB4IKIiIiIiNSCwQUREREREakFgwsiIiIiIlILBhdERERERKQWDC6IiIiIiEgtGFwQEREREZFaMLggIiIiIiK1YHBBRERERERqweCCiIiIiIjUgsEFERERERGpBYMLIiIiIiJSCwYXRERERESkFgwuiIiIiIhILRhcEBERERGRWjC4ICIiIiIitWBwQUREREREasHggoiIiIiI1ILBBRERERERqQWDCyIiIiIiUgsGF0REREREpBYMLoiIiIiISC0YXBARERERkVpoVXUFiOjjJQgCcnJy8PLlS2hra1d1dYiIiOgDkcvlkMlk5d5OJgiCUAn1IaL/AU+fPoWpqWlVV4OIiIg+sIyMDBgaGpZ7O/ZcEFGJdHV10bZtWxw8eBAGBgZVXR0CkJWVBRcXF56TjwjPyceH5+Tjw3PycSnL+ZDL5RUqm8EFEZVIJpNBU1MThoaG/J/BR0JDQ4Pn5CPDc/Lx4Tn5+PCcfFwq83xwQjcREREREakFgwsiIiIiIlILBhdEVCIdHR2MHz8eOjo6VV0V+v94Tj4+PCcfH56Tjw/PycelMs8HV4siIiIiIiK1YM8FERERERGpBYMLIiIiIiJSCy5FS/QPFR8fj0WLFuHq1avQ19eHs7MzfH193/lN3IIgYNOmTQgLC0N6ejpsbGzwzTffoFWrVh+o5v+7KnpOXF1dkZycrJJ+6tQp6OrqVlZ1/xESEhKwefNmXL9+Hffv34eFhQV27tz5zu14n1SOip4P3iOV5+jRozh06BBu3bqFly9fomHDhhg2bBgGDBhQ6rc78x6pHBU9H+q8RxhcEP0DvXz5Et7e3mjYsCF+/vlnpKWl4ddff0Vubi6+/fbbUrfdtGkTVq9eDT8/PzRp0gRhYWHw8/PD1q1bUb9+/Q90BP973uecAICjoyNGjhwpSePEyfd3//59nDp1Ci1atIBCoYBCoSjTdrxPKkdFzwfAe6SybN26FWZmZvD390eNGjVw9uxZ/PDDD0hNTYWXl1eJ2/EeqRwVPR+AGu8RgYj+cYKDg4WuXbsK6enpYtru3buFjh07CmlpaSVul5ubKzg4OAiBgYFi2uvXr4X+/fsLP/30U6XW+X9dRc+JIAhC//79hQULFlR2Ff+RCgsLxX/Pnj1bGDJkyDu34X1SeSpyPgSB90hlevHihUra/PnzBQcHB8n5Kor3SOWpyPkQBPXeI5xzQfQP9Oeff6Jjx44wMjIS03r16gWFQoEzZ86UuN3Vq1eRnZ0NJycnMU1bWxs9evTAqVOnKrXO/+sqek6ocmlolP9/k7xPKk9FzgdVLmNjY5W0pk2bIjs7Gzk5OcVuw3uk8lTkfKgb71Kif6D4+HhYWlpK0uRyOWrVqoX4+PhStwOgsm2jRo2QkpKC3Nxc9Vb0H6Si50QpKioKn376KT777DNMmjQJ9+7dq5yK0jvxPvk48R75cC5fvozatWtDX1+/2M95j3xY7zofSuq6Rzjngugf6OXLl5DL5SrpcrkcL1++LHU7HR0dlcldcrkcgiAgMzMTenp6aq/vP0FFzwkAODg4oGXLlqhbty4SExMRHByMcePGcexyFeF98vHhPfLhXL58GYcPH4a/v3+JeXiPfDhlOR+Aeu8R9lwQEf3NTZs2Df369YOtrS369++PNWvWAAC2bNlSxTUj+jjwHvkwUlNT8e9//xt2dnZwd3ev6ur845XnfKjzHmFwQfQPZGhoiKysLJX0zMxMGBoalrrd69evkZeXp7KdTCYr9s07lU1Fz0lxatWqhbZt2+LmzZvqqh6VA++Tjx/vEfXLzMzEpEmTYGRkhEWLFpU6P4b3SOUrz/kozvvcIwwuiP6BLC0tVcbxZ2Vl4enTpypjYN/eDgAePnwoSY+Pj0fdunXZjf0eKnpO6OPD+4T+aXJzc+Hv74+srCwsW7YMBgYGpebnPVK5yns+1I3BBdE/UOfOnXHu3DlkZmaKaUePHoWGhgY6depU4natW7eGvr4+jh49KqYVFBQgOjoaXbp0qdQ6/6+r6DkpzpMnT3D58mU0b95c3dWkMuB98vHjPaI+BQUF+Pe//434+HgsX74ctWvXfuc2vEcqT0XOR3He5x7hhG6if6DBgwdjx44dmDJlCjw9PZGWloaAgAB8/vnnMDU1FfP5+PggOTkZ+/btAwDo6urCw8MDa9asQY0aNWBtbY2wsDBkZGSofPEOlU9Fz0lUVBROnjyJLl26wNTUFI8fP8bGjRuhqanJc6IGubm5OHnyJAAgOTkZ2dnZ4gNR+/btUaNGDd4nH1BFzgfvkcq1cOFC/PHHH/D390d2djauXbsmfta0aVPo6OjwHvmAKnI+1H2PMLgg+gcyNDTEypUr8fPPP2PKlCnQ19fHwIED4evrK8lXWFiIwsJCSdqYMWMgCAK2bNmCFy9ewMbGBsuXL+eKK++pouekXr16ePLkCX755RdkZmZCLpejQ4cOmDBhAurVq/ehD+N/zvPnz/Hdd99J0pS/r1q1CnZ2drxPPqCKnA/eI5VL+T08S5cuVfls//79MDc35z3yAVXkfKj7HpEJgiBU+AiIiIiIiIj+P865ICIiIiIitWBwQUREREREasHggoiIiIiI1ILBBRERERERqQWDCyIiIiIiUgsGF0REREREpBYMLoiIiIiISC0YXBARERERkVowuCAitUhLS4ORkRHWrl0rSR87diwsLS2rplL/I+bMmQOZTIb4+PgPsr+NGzeq7C8nJwfm5uaYO3duucsr6dqgilOeo+PHj1d1VaiKve/fB15LH4eLFy/i66+/Rt++fWFnZ1fp52P16tWws7OT/AwePFgtZTO4ICK1mDlzJkxNTeHh4VGm/CkpKZg6dSpatmwJuVwOQ0NDNGnSBO7u7tizZ48kb/fu3WFgYFBiWcr/uZ4/f77Yz1+8eIFq1apBJpNh8+bNJZZjaWkJmUwm/ujo6MDS0hJffvklEhISynRc/6uqVauG7777Dj///DOSk5PLtW15rw36Z7t8+TLmzJnzwYJpqnrx8fGYM2cOLl++/EH3+zFdazk5OWjSpAm+/fbbD7bPBg0a4MqVK3ByckJUVBTWr1+P9PR0zJkz572CGwYXRPTeHj9+jODgYHz11VfQ0tJ6Z/6HDx+iTZs2CAoKQqdOnbBgwQL89NNP6N+/P27duoUNGzaotX5bt25FXl4eGjVqhODg4FLz1q9fH5s3b8bmzZsREBAAe3t7BAcHw97eHk+fPlVrvf5uxo0bB5lMhiVLlpR5m/JeG1Q2o0aNQk5ODhwcHKq6Kmp3+fJlzJ0796N44KMPIz4+HnPnzq2S4OJjuda6dOkCX19f9OjRo9jPX79+jaVLl6Jfv37o2rUrxowZU+ILtbLS09NDZmYm5s+fj1q1asHY2Bjp6emYO3fuewUX/EtPRO9t9erVkMlkGD58eJnyL168GGlpadi3bx/+9a9/qXyekpKi1vqtX78ePXr0wL/+9S/4+/vjwYMHaNy4cbF5jYyMMHLkSPF3Hx8f1K5dG4GBgdiwYQOmTZum1rr9nejr6+Pzzz/Hxo0bMX/+fOjq6r5zm/JeG1WtsLAQeXl5qF69elVXpVSamprQ1NSs6moQ0QeyaNEiPHjwAD/++CNMTU0RHR2NSZMmITQ0FA0bNqxQmQkJCRg4cCB0dXXRqlUr+Pn5qaWu7LkgqgLKMa6///475s2bBwsLC1SrVg329vY4c+YMACAmJgZdu3aFvr4+zMzM8P333xdb1vnz5zFo0CDUqlULurq6aNq0KX744QcUFBRI8p07dw5jx46FjY0NqlevDrlcji5dumDv3r0qZY4dOxYymQwZGRniw7Wenh66dOmCs2fPquQPCwuDnZ0dateuXabjv3v3LgDA0dGx2M/r1q1bpnLK4uLFi7h8+TLGjBmDESNGQEtL6529F2/r06cPAODevXsl5omMjIRMJsOyZcuK/fzTTz+Fqakp8vPzAZTvfBRHeY6KI5PJMHbsWJX0HTt2oGvXrpDL5ahevTrs7e2xa9euMu1PqV+/fnj69Cmio6PLlL+ka0OhUOCHH36Ag4MD6tatCx0dHTRs2BA+Pj549uyZmC89PR16enr4/PPPiy3/3//+N2QymeSNZ0ZGBr799ltYW1tDV1cXpqamGD58OB48eCDZVnkfHj16FN9//z2srKygp6eHnTt3AgAOHz6MYcOGoXHjxqhWrRqMjY3Ru3dvxMTEFFuX3bt3o02bNtDT00PDhg0xd+5cHD16FDKZDBs3bpTkzcvLw48//ogWLVpAT08PxsbGcHV1xaVLl8rUrsWNk1fX3xVLS0t0794dFy9eRM+ePWFgYICaNWtizJgxSEtLk+TNzMzEzJkzYW9vL/4Nsra2xnfffYdXr16plC0IAtauXQt7e3sYGBjAwMAArVq1wqxZswC8GeKoHD7Xo0cPcYhicdfz265evYpBgwbBxMQEenp6aN68ORYtWoTCwkJJvvL+fSuOcijmX3/9BX9/f5iZmaF69epwdHTE7du3AQB79uxBu3btUK1aNVhaWmLNmjXFlrVu3Toxn5GREXr37o2TJ0+q5FMoFPjpp5/QqFEj6OnpoWXLlti6dWuJdUxOToaPjw8aNmwIHR0dmJubw8vLS+UclldZ27l79+7FzreLj4+HTCbDnDlzALy5bpVv6z08PMRz3r17dwDA8ePHxXto+fLlsLGxgZ6eHmxsbLB8+XKV8pXX79uKlgNU/FpTXj/Pnj3D2LFjUatWLcjlcgwcOFB8MbZmzRp88skn0NPTQ7NmzRAeHq5SzooVK9C7d2/Uq1cPOjo6MDMzw8iRI4vtRUlMTER4eDiio6Px6aefwtnZGTo6OjA0NMSnn34q2aas13fLli3h6+uLEydOoF69ekhKSsLIkSNhZWUFAJg7d67YJsrz+HYbFtcuAHsuiKrUd999h8LCQkyePBmvX7/GL7/8gt69eyMkJATjxo2Dl5cXvvjiC+zcuROzZs1Co0aNJG/VDx48iM8//xzW1taYMmUKatasidOnT2PWrFm4fPkywsLCxLx79+7FrVu3MHToUFhYWODZs2fYtGkTPv/8c2zduhUjRoxQqV+fPn1gamqKWbNm4dmzZ1iyZAlcXFwQFxcHuVwOAEhNTcXt27cxadKkMh+38o/X2rVr4e/vX+JD8ttKGpZU3EOM0vr162FgYIDBgwdDX18f/fv3x6ZNmzBv3jxoaJTt/YoyGKpVq1aJeXr37o26desiJCREpS3u3r2LM2fOYNKkSdDW1gZQsfPxPmbOnIkffvgBffv2xffffw8NDQ3s3bsXQ4YMQWBgICZOnFimcj799FMAb/4n07dv31LzlnZtvH79Gj///DMGDx6Mf/3rX9DX10dsbCzWr1+PkydP4sKFC9DR0YGxsTEGDBiA8PBwPH/+HDVr1hTLUCgU2Lp1K1q3bo22bdsCeBNYdO7cGY8ePYKnpydatGiB5ORkrFixAvb29jh//jwsLCwkdZk6dSry8/Mxfvx4GBoaomnTpgDePPQ8f/4co0ePRv369ZGYmIh169bB0dER0dHR+Oyzz8QyduzYgeHDh8PKygqzZ8+GlpYWNm3ahIiICJVjz8/PR9++ffHnn39i1KhR8PPzQ0ZGBtauXYsuXbrgxIkTsLOzK9P5KM77/l0B3gxnc3R0xODBg+Hm5oaLFy8iODgY58+fR2xsrNizo2yTwYMHi8F7TEwMFi1ahEuXLuG3336TlDtq1Chs3boV9vb2+M9//gNjY2PcunULu3btwrx58/D5558jOTkZa9aswYwZM/DJJ58A+L+/GSU5f/48unXrBm1tbUycOBF169ZFREQEvv32W1y5cqXYh/Cy/H17lzFjxsDAwAAzZszAkydP8Msvv6BPnz74/vvvMX36dPj4+MDT0xPr16/HhAkT0Lx5c3Tt2lXc/ttvv8WiRYvQsWNH/Pjjj8jMzMSaNWvQo0cPhIeHw9nZWcz7zTffICAgAA4ODvj666+RlpaGiRMnFtsL++jRI3z66ad4/fo1xo0bBysrK9y7dw8rV65EdHQ0zp8/DyMjozId4/u287s4ODhgxowZ+PHHH+Hl5SXeV3Xq1JHkW758OVJSUjBhwgTI5XJs374dkyZNwvPnzzF79uxy77ei15pS3759Ub9+fcybNw/37t3DsmXLMGjQIHz++edYs2YNxo0bBz09PSxbtgxubm64c+cOGjVqJG6/ePFidOrUCZMmTULNmjVx/fp1rFu3DseOHYO5ublkX1OnToUgCDAxMUGdOnUgCAIWLlwIDQ0NsQc5Pj4ebm5uAID27duLL++UvRp5eXkYOXIkLl68KL7MqlevHnJyclC7dm1MmTIFLi4u8PHxQVBQkHgsAEqd81gsgYg+uA0bNggABFtbWyEvL09MDw8PFwAIWlpaQmxsrJiel5cn1K1bV+jUqZOYlpOTI9SpU0f47LPPhPz8fEn5S5YsEQAI0dHRYlpWVpZKPbKzswUbGxvhk08+kaSPGTNGACD4+PhI0nfu3CkAEFatWiWmHTt2TAAgBAQEFHusY8aMESwsLCRp9+/fFwwNDQUAQoMGDYQRI0YIv/76q3D+/Pliy+jWrZsA4J0/RdtM2UbGxsbCmDFjxLR9+/YJAIRDhw6p7MfCwkJo1qyZ8OTJE+HJkyfCgwcPhODgYMHIyEjQ0tISrl27Vmz9lKZOnSoAEG7cuCFJnzlzpgBAuHDhgphWnvMxe/ZsAYAQFxcnpinPUXEASI75woULAgDh3//+t0ref/3rX4JcLhdevnwppimvz6L7K0pLS0vo379/sZ8VVdq1oVAohFevXqmkr1u3TgAg7NixQ0w7cOCAAEAICgqS5D169KgAQPjll1/EtEmTJgl6enrC5cuXJXnj4+MFuVwuaRflcdrY2AjZ2dkqdSnuHKWkpAgmJiZCv379xLT8/HzB3NxcqF27tvD8+XMxPTMzU2jUqJEAQNiwYYOYrrw/o6KiJGVnZGQIDRo0ELp166ay37cp6170HlfH3xVBeHMfABB+/fVXSbqy3j/99JOkjNevX6vUT3nNnz17VkzbsWOHAEAYOXKkUFhYKMlf9Pfiju1dOnfuLGhqagpXrlwR0xQKhTBkyBABgHD06FExvTx/30qivCf79+8vKBQKMT0gIEAAIMjlcuHRo0dielpamqCrqyu4u7uLabdu3RJkMpnQpUsXyflKTEwUjIyMBAsLC6GgoECSt2fPnmKaILy5t2Uymcr9OmDAAMHU1FRISEiQ1Ds2NlbQ1NQUZs+eLaaVp73L087dunVT+dsvCIIQFxcnAJDUITo6WuU+efszAwMDyfHk5eUJHTp0ELS0tCTpFhYWxd5Dxe2jItea8vrx9fWVpH/99dfi/9MyMjLE9CtXrggAhO+++06Sv7i/L8q/ae3btxfrdP36daFGjRpC+/bthQcPHgiPHj0SHj16JBw5ckTQ09MTtLS0hLi4OOH169dCXFyc4O7uLujq6gpjx44V4uLixJ+VK1cKWlpakuv77XMxatQoYf78+Srnp7Q2fLtdBEEQOCyKqAr5+PhAR0dH/F35xsbe3l7y5lJHRwcdO3YU36ADwJEjR5CamgoPDw+kp6fj6dOn4o/ybdfhw4fF/Pr6+uK/X716hWfPnuHVq1fo2bMnbt68iZcvX6rU7+uvv5b83rNnTwCQ1OPJkycAIHmj/C6NGzfGlStXxLfl27Ztw9dffw07Ozu0bt0aFy5cUNlGT08PR44cKfZn1KhRxe5nz549SE9Px5gxY8Q0Z2dnmJqaljg06tatWzA1NYWpqSkaN24MT09P1KpVC+Hh4WjZsmWpx6XcT0hIiJgmCAK2bNmCli1bol27dmJ6Rc5HRW3duhUymQxjxoyRXCdPnz7FgAEDkJmZidOnT5e5vJo1a5ZpaEVp14ZMJkO1atUAvJnnoLyGlddY0e77Pn36oE6dOpJ2Bd60s5aWFr744gsAb9p669atcHBwQL169STHqa+vj06dOknuCSUfH59i51gUPUdZWVl49uwZNDU1YW9vL6nfhQsXkJSUhLFjx6JGjRpiuoGBAby9vVXK3bJlC5o1a4b27dtL6vj69Wv06tULJ0+eRE5OTjEtWjbv83dFydDQEL6+vpI0X19fGBoaSobu6ejoiL1xBQUFePHiBZ4+fQonJycA0vOofKu9ePFilV7DsvYiFictLQ1//vknBgwYgNatW4vpMpkM//nPfwCg2OGGZfn79i6TJk2S9Lwq23rAgAFo0KCBmG5qaoqmTZtKyg4PD4cgCJg+fbrkfJmbm8PDwwMPHz4Uh8kp837zzTeSuTbt2rVDr169JHXKyMjAgQMHMGDAAOjp6UmuMUtLS1hbWxd7H7xLRdtZXb744gvUr19f/F1HRwdff/01CgoKiu0hrGz+/v6S35XnfvTo0TA0NBTTW7duDUNDQ5XrSvn3RaFQICMjA0+fPkWbNm1UepQOHDgg9s6np6ejQYMGaNCgAZycnNCjRw9xCLS2tjYsLS2hq6uLvLw8zJgxA5aWluLPkCFDUFBQUOL1/erVKzx+/BjGxsYVbhMlDosiqkJvd2crH0yKdp0W/azoWPSbN28CADw9PUssPzU1Vfx3WloaZs6cifDw8GIfDNPT0yV/EIurn4mJCQBI6qH8H6sgCCXWoziWlpYIDAxEYGAgkpOTcfLkSWzevBkRERHo378/bty4IXko1dTUFB9Y3lbc+GTgzZAoU1NT1K9fXzJfonfv3ggLC8PTp09VhjpZWlqK38egHKdsbW1dpmNSBhBbt27Fjz/+CA0NDZw4cQLx8fFYtGiRJG9FzkdF3bx5E4IgoFmzZiXmKXqtvIsgCGUayvaua2Pnzp345ZdfcOnSJXEuitKLFy/EfysDiCVLluDOnTuwsbFBdnY29uzZg969e4vDJ548eYJnz57h8OHDMDU1LXafxT3E2tjYFJv3/v37+M9//oPffvsN6enpxR4bAMTFxQGAOJyqqOLSbt68iZycnBLrCLwZAlj04bQ83ufvStEyij7wAoCuri4aN26sMndlxYoVWLVqFW7cuAGFQiH5rOh5vHv3LszMzFSGu7wvZfu3aNFC5bNPPvkEGhoaKnUGyvb37V3K29YPHz4sU72VaQ8ePICdnZ1Y/+Lu4ebNm0uChdu3b0OhUGD9+vVYv359mepdFhVtZ3VRDlsqqnnz5gBQqfstyfveZ8eOHcO8efNw9uxZ5ObmSoY4AW+GHN6+fRu3bt1CXl4eunbtitmzZ8Pf3x9NmzbFixcvUL169RL/P/Gu63vp0qVo0qQJdHR08Pz5c0ydOhUaGhqSYXsVxeCCqAqVtNpLWVaBUT6w/fzzz+J487cpx20KgoDevXvj5s2bmDx5Muzs7GBkZARNTU1s2LAB27ZtU3koKK0eRR8WlQ9Iz58/f2edS2JmZoYhQ4ZgyJAh+OKLL7Bt2zYcOnRIZRx4ecTFxSE6OhqCIJT48LhlyxaVt0/6+volBjFlMXr0aPj7++PYsWNwcnJCSEgINDU1JcdS0fNRVEkP929P5FfuTyaTITIyssRzWtwDQ0levHhR6oOxUmnXxp49ezBs2DB07NgRAQEBaNCgAfT09FBYWIi+ffuqHP/o0aOxZMkShISEYP78+dizZw+ysrIkvVLK69LJyalca8UX12uRlZUFBwcHZGdnw9/fH61atYJcLoeGhgZ++uknHDt2rMzlv00QBLRq1arUJX3L0r4leZ+/K+W1ZMkSTJkyBb1798akSZNgbm4OHR0dJCYmYuzYse+8jqtSWf6+VbQMdZRdUcp9jBw5UnJ/FKXsNaxM5fkb9Xfc7/uc+9jYWPTu3RvW1tZYsGABGjVqhOTkZMkXjf76668A/i8o8PX1RXR0NJYuXYq0tDQYGxtDEAS8fv26QvVITU3FwYMH0aJFC1y8eBGfffYZNm7cWGo7lfZSqeh2DC6I/qaaNGkCoGwPw1evXsWVK1cwa9YslW9YXrdu3XvVQ/lQWp6hBKXp1KkTtm3bhsTExPcqZ8OGDeLKNMV1886cORPBwcEqwcX7GjFiBKZNm4aQkBB06dIFu3btQq9evWBmZibmUcf5UPbqvD3Jubg3eE2aNEFUVBQaNmxY7Nu/8oiPj0dBQcE7h4gBpV8bmzdvhp6eHqKjoyUP97du3Sq2rDZt2qBNmzbYsmULvv/+e4SEhIiTvZVMTU1hbGyMly9fvleACAC///47kpKSEBwcrPLlfzNnzpT8rlxJRblKUFHFpTVp0gRPnjxBz54932s4UGV68OABXr9+Lem9yMvLw4MHDyRvzzdv3gxLS0tERkZKjiUqKkqlTBsbG4SHhyM1NbXU3ouyLvCgpHxTfOPGDZXPbt26BYVCUaE39ZVNWacbN26oTCL+66+/JHmU/71161aJeZWsra0hk8nw+vXr974PiipvO9esWbPYIa7F/Y0qyzlX9tYX9XY7Kfdb3AuNiu63Mmzbtg2FhYWIjIyU9HSMHDkShoaG+Oyzz8SV4BYsWIDDhw/j/v37mDBhAiZMmCDmd3Z2Rm5uboXq8NNPPyE+Ph6NGjXC7NmzxdW7ivauva3o/3feVrR9P86/akT0Tn369EHt2rWxYMGCYm/0nJwcZGZmAvi/NxhvvzW7fv36e4+RNTU1RYsWLcSlLsvi+PHjxY4pVygU4thZZXd3RSgUCmzcuBGtWrXCl19+CTc3N5Wf4cOH49q1a4iNja3wfopjamqKfv36Yc+ePdi6dStevnyp8vZQHedD2Rtz9OhRSfovv/yiklc5J2XGjBkqy0UC5RsSpTzP3bp1e2fe0q4NTU1NyGQyyZttQRAwf/78EssbM2YMHj58iG3btuHYsWMYNmwY9PT0xM81NDTwxRdf4Ny5cyUusVvWZThLOkeHDx9WWa7Uzs4OZmZm2Lhxo2QYUFZWFlatWqVS9ujRo5GSklJiz0V5zkdlefnyJVasWCFJW7FiBV6+fImBAweKacrzWLSdCgoKsGDBApUylXNjpk+frtKjUXR75co0Ze0NrV27Njp37oyIiAhcv35dUuZPP/0EABg0aFCZyvqQBgwYAJlMhp9//lkyLDA5ORkbNmyAhYUFbG1tJXmXLFkiuYcvXryo8jfAxMQEzs7O2LNnT7H3niAI4nyo8ihvO9vY2CAzMxPnzp0T0xQKhfhGvqiynPOtW7fi8ePH4u+vX7/Gr7/+Ck1NTfTv31+y31u3bkleUOXl5SEoKKhC+60MJf19+fHHH1XuDVdXVwBAQECA5LNr166prMamDqW1SaNGjaClpaVyzf3555+Sa409F0R/U/r6+ggJCcHAgQPRtGlTeHp6wtraGunp6bh16xb27NmDvXv3onv37vjkk0/QokULLFq0CK9evULTpk1x584drF69Gq1atSr27VJ5DBkyBN9//z2Sk5Mlb+hLsnjxYpw6dQqurq5o164djIyMkJKSgt27d+PChQvo0aMHXFxcKlyfw4cPIyEhAePGjSsxz+DBgzFnzhysX78eHTp0qPC+ijNmzBjs378fU6ZMgZGRkeRhDIBazsfw4cMxY8YMeHl54datW6hZsyaioqKKXa63Q4cOmDNnDubMmYO2bdtiyJAhMDc3R3JyMi5cuIBDhw6V2LX+tkOHDqFWrVolfovs20q6Ntzc3LB792707NkTo0ePRn5+Pvbt21fqssJffPEFpk+fDl9fXygUimKHfPzwww84deoUhg4diqFDh6JTp07Q0dHBw4cPcejQIbRv377YNdrf1rVrV9StWxdTpkxBfHw86tevj8uXL2Pz5s1o1aoVrl27JubV0tLC4sWL8cUXX6Bjx44YN24ctLS0sHHjRpiYmCAuLk7yhnTy5Mk4cuQIpk2bhmPHjqFnz54wNDTEo0eP8Pvvv4s9OlXJysoKc+fOxfXr19G+fXtcuHABwcHBaNasmWRpYTc3N/z73/9Gv3798Pnnn+Ply5fYtm2bOMm7qCFDhmDYsGEICQnB3bt3MWDAANSoUQN37tzBb7/9Jj6wdujQARoaGvjhhx/w4sUL6Ovro1GjRrC3ty+xvgEBAejWrRs+++wzcYnUAwcO4LfffsOIESNK/E6dqtS0aVNMmzYNixYtgoODA4YNGyYuRZuVlYWtW7eKD6HNmjXDxIkTERgYiJ49e2Lw4MFIS0tDYGAg2rRpo/L9KCtXrkTXrl3h4OCA0aNHw9bWFgqFAg8ePEB4eDhGjx4tvqkuj/K0s5eXF3755RcMGjQIkydPho6ODnbt2lXssJvmzZtDLpdjxYoVqF69OoyNjVG7dm1xkj3wJmiwt7eHt7c35HI5tm3bhtjYWPz3v/+VzE/y8/NDaGgonJyc4O3tjdevX2Pz5s3FDn+syLWmDoMGDcKvv/4KZ2dneHl5QUdHB0eOHMHVq1dV5gG2aNECXl5eWLNmDZycnDBo0CA8efIEQUFBsLW1xYULF9TaA2NiYgJra2uEhobCysoKderUgb6+PlxdXWFgYICxY8di3bp1GD58OLp37467d+9iw4YNaN26Na5cufKmEJW1pIio0pW2/B3eWkZUqaSlR69duyZ88cUXgrm5uaCtrS3Url1b+PTTT4V58+YJz549E/PFx8cLbm5uQq1atYRq1aoJHTp0EPbs2fPey5wKwpulE7W0tITFixcXW++3lyM8ffq08M033wh2dnZC7dq1BS0tLcHIyEjo1KmT8Msvvwi5ubmS/N26dRP09fWLrY8g/N+ykMplNt3c3AQAwtWrV0vcRhAEwcbGRjAyMhKXRLWwsBBatGhR6jZlkZeXJ9SsWVMAIHz55ZfF5inP+SguTRAE4cyZM0Lnzp0FXV1dwcTERBg/frzw4sWLEq+hAwcOCL179xZq1Kgh6OjoCPXr1xf69u0rrFy5UpKvpKVos7KyBH19fWHq1KllbovSro01a9YIn3zyiaCrqyvUrVtXGD9+vPDs2bMS6y8IgtC/f38BgNCkSZMS95mdnS3MmzdPaNmypaCnpycYGBgIzZo1E7788kvhzJkzKsdZ0jKUV65cEfr06SMYGxsLBgYGQrdu3YQTJ06UeH/s3LlTaNWqlaCjoyM0aNBAmDNnjrBnzx6VpXUF4c3ytQEBAYKdnZ1QvXp1oXr16oK1tbUwYsQI4bfffivx2Eqru7r+riiX8rxw4YLQo0cPoXr16oKxsbEwcuRIISUlRZK3oKBA+PHHHwUrKytBR0dHaNiwoTBt2jThr7/+KnY5y8LCQiEwMFCwtbUVqlWrJhgYGAitWrUS5syZI8m3ceNG4ZNPPhG0tbVLvR6Kunz5svCvf/1LvL6bNWsmLFy4ULJ0a0nH/K52eltJ92Rxy6wqlbQ065o1a4S2bdsKurq6glwuF5ycnIQTJ06o5CssLBTmz58vNGzYUNDR0RFatGghbNmypcS6PHnyRJg6darQpEkTQVdXVzAyMhJatmwpTJo0SbJcdnmXYy1rOwuCIBw8eFBo06aNoKOjI5iZmQnTp08Xbt26VWwbHTx4ULC1tRV0dXUFAOJyskWXPw0ICBCsra0FHR0dwdraWli6dGmxddy4caNgY2MjaGtrC5aWlsLChQuF33//vdhlVMt7rZV0/ZS2TGtxy+Pu3btXaNeunVC9enXBxMREGDZsmPDw4cNi8xYUFAhz5swRGjRoIOjo6AitWrUSduzYIUyZMkUAIKSmpr6zfoKgen2XdL2ePXtW6Ny5s1C9enUBgOS6zczMFMaNGyfUrFlTqFatmtC1a1fh1KlTkv3K/v/OiIjei7e3Nw4fPozbt29L3lqOHTsWx48fL/ZbR+njtHHjRnh4eCAuLk7yDbsBAQH4z3/+I676U1YlXRv/BL/88gumTp2K06dPo1OnTlVdnTJRLl1Z9Nu/iarK8ePH0aNHD2zYsKFM39T+T+Lq6opjx47h5cuXlbJgQ0VxzgURqcW8efPw7NkzbNiwoaqrQpUgJycHCxYswLRp08oVWAD/jGvj9evXKvNZsrKyEBQUBBMTE8l3nBARlUdxcxSvXr2KyMhI9OzZ86MKLADOuSAiNalduzYyMjKquhpUSapVq4bk5OQKbftPuDYePHiAfv36wd3dXVxWctOmTYiLi8PKlStVvjOCiKisNm3ahJCQELi4uMDU1BS3bt3CmjVroKOjg3nz5lV19VQwuCAiInpPpqam6NSpE7Zu3Yq0tDRoaWmhVatWWLBgAYYOHVrV1SOiv7F27dph7969WLZsGZ4/fw65XI6ePXti9uzZ4opiHxPOuSAiIiIiIrXgnAsiIiIiIlILBhdERERERKQWDC6IiIiIiEgtGFwQEREREZFaMLggIiIiIiK1YHBBRERERERqweCCiIiIiIjUgsEFERERERGpBYMLIiIiIiJSi/8Hi7eFiSxlr0YAAAAASUVORK5CYII=", "text/plain": [ "
" ] From 7b39a5742170c066d22ab21a0c97211e47d418ca Mon Sep 17 00:00:00 2001 From: kim-mskw Date: Tue, 8 Oct 2024 21:28:11 +0200 Subject: [PATCH 27/27] - some proof reading --- .../notebooks/09_example_Sim_and_xRL.ipynb | 8992 +---------------- 1 file changed, 252 insertions(+), 8740 deletions(-) diff --git a/examples/notebooks/09_example_Sim_and_xRL.ipynb b/examples/notebooks/09_example_Sim_and_xRL.ipynb index 3de54175..b0502123 100644 --- a/examples/notebooks/09_example_Sim_and_xRL.ipynb +++ b/examples/notebooks/09_example_Sim_and_xRL.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "3ba8dd1e", + "id": "3efad297", "metadata": { "id": "e62e00c9" }, @@ -12,17 +12,17 @@ }, { "cell_type": "markdown", - "id": "3a2ed19f", + "id": "20db7561", "metadata": { "id": "fb3aa803" }, "source": [ - "Welcome to this tutorial on **Explainable Reinforcement Learning (XRL)**! In this guide, we'll explore how to interpret and explain the decisions made by reinforcement learning agents using the SHAP (SHapley Additive exPlanations) library. We'll work through a practical example involving an the simulation simulation in a reinforcement learning setting, and demonstrate how to compute and visualize feature attributions for the agent's actions." + "Welcome to this tutorial on **Explainable Reinforcement Learning (XRL)**! In this guide, we will explore how to interpret and explain the decisions made by reinforcement learning agents using the SHAP (SHapley Additive exPlanations) library. Through a practical example involving a simulation in a reinforcement learning setting, we'll demonstrate how to compute and visualize feature attributions for the agent's actions." ] }, { "cell_type": "markdown", - "id": "131db756", + "id": "046a32c0", "metadata": { "id": "0d793362" }, @@ -32,7 +32,7 @@ }, { "cell_type": "markdown", - "id": "667dc923", + "id": "f45c2689", "metadata": { "id": "87bdf688" }, @@ -47,7 +47,7 @@ "\n", " 2.2 Introduction to SHAP Values\n", "\n", - "3. [Calculating SHAP values](#3-calculating-shap-values)\n", + "3. [Calculating SHAP Values](#3-calculating-shap-values)\n", "\n", " 3.1. [Loading and Preparing Data](#loading-and-preparing-data)\n", "\n", @@ -60,7 +60,7 @@ }, { "cell_type": "markdown", - "id": "ed057a2a", + "id": "5adc5d28", "metadata": { "id": "5e8c7fec" }, @@ -70,76 +70,93 @@ }, { "cell_type": "markdown", - "id": "3a3562cf", + "id": "a5b2ef10", "metadata": { "id": "06e91420" }, "source": [ - "Reinforcement Learning (RL) has achieved remarkable success in various domains, such as game playing, robotics, and autonomous systems. However, RL models, particularly those using deep neural networks, are often seen as black boxes due to their complex architectures and non-linear computations. This opacity poses challenges in understanding and trusting the decisions made by RL agents, especially in critical applications." + "Reinforcement Learning (RL) has achieved remarkable success in various domains, such as game playing, robotics, and autonomous systems. However, RL models, particularly those using deep neural networks, are often seen as **black boxes** due to their complex architectures and non-linear computations. This opacity makes it challenging to understand and trust the decisions made by RL agents, especially in critical applications where transparency is essential." ] }, { "cell_type": "markdown", - "id": "4c610270", + "id": "d1fcbef6", "metadata": { "id": "47b1e7ab" }, "source": [ - "**Explainable Reinforcement Learning (XRL)** aims to bridge this gap by providing insights into the agent's decision-making process. By leveraging explainability techniques, we can interpret the actions of an RL agent, understand the influence of input features, and potentially improve the model's performance and fairness." + "**Explainable Reinforcement Learning (XRL)** aims to bridge this gap by providing insights into an agent's decision-making process. By leveraging explainability techniques, we can:\n", + "- Interpret the actions of an RL agent.\n", + "- Understand the influence of input features on decisions.\n", + "- Potentially improve the model's performance, fairness, and transparency." ] }, { "cell_type": "markdown", - "id": "9978b51b", + "id": "5ced3235", "metadata": { "id": "ec0717c1" }, "source": [ - "In this tutorial, we will demonstrate how to apply SHAP values to a trained actor neural network within an RL framework to explain the agent's actions." + "In this tutorial, we will demonstrate how to apply SHAP values to a trained actor neural network in an RL framework to explain the agent's actions." ] }, { "cell_type": "markdown", - "id": "23bed9c3", + "id": "49f01746", "metadata": { - "id": "0d59bb0a" + "id": "0d59bb0a", + "lines_to_next_cell": 0 }, "source": [ - "### 1.1 Run an the simulation MADRL Simulation \n", + "### 1.1 Running a MADRL Simulation \n", "\n", - "In ASSUME, we implement RL agents using a Multi-Agent Deep Reinforcement Learning (MADRL) approach. Key aspects include:\n", + "In this tutorial, we will simulate RL agents using a Multi-Agent Deep Reinforcement Learning (MADRL) approach. The agents operate in a market-splitting environment where they interact and learn optimal strategies over time. Here’s a breakdown of the key components:\n", "\n", + "- **Observations**: Each agent receives observations, including market forecasts, unit-specific information, and past actions.\n", + "- **Actions**: The agents decide on bidding strategies, such as bid prices for both inflexible and flexible capacities.\n", + "- **Rewards**: The agents are rewarded based on profits and opportunity costs, helping them learn optimal bidding strategies.\n", + "- **Algorithm**: We utilize a multi-agent version of the TD3 (Twin Delayed Deep Deterministic Policy Gradient) algorithm, which ensures stable learning even in non-stationary environments.\n", "\n", - "- **Observations**: Each agent receives observations comprising market forecasts, unit-specific information, and past actions.\n", - "- **Actions**: Agents decide on bidding strategies, such as bid prices for inflexible and flexible capacities.\n", - "- **Rewards**: Agents receive rewards based on profits and opportunity costs, guiding them to learn optimal bidding strategies.\n", - "- **Algorithm**: We utilize a multi-agent version of the TD3 algorithm, ensuring stable learning in a non-stationary environment.\n", + "For a more detailed explanation of the RL configurations, refer to the [Deep Reinforcement Learning Tutorial](https://example.com/deep-rl-tutorial).\n", "\n", - "For a deep dive into the RL configurations we refer to one of the other tutorials, such as\n", - "[Deep Reinforcement Learning Tutorial](https://example.com/deep-rl-tutorial)\n", + "### Key Aspects of the Simulation\n", "\n", - "Agents need observations to make informed decisions. Observations include:\n", + "Agents require **observations** to make informed decisions, which include:\n", "\n", - "- **Residual Load Forecast**: Forecasted net demand over the next 24 hours.\n", + "- **Residual Load Forecast**: Forecasted net demand (electricity demand minus renewable generation) over the next 24 hours.\n", "- **Price Forecast**: Forecasted market prices over the next 24 hours.\n", - "- **Marginal Cost**: Current marginal cost of the unit.\n", - "- **Previous Output**: Dispatched capacity from the previous time step.\n", + "- **Marginal Cost**: The current marginal cost of operating the agent's power-generating unit.\n", + "- **Previous Output**: The agent’s dispatched capacity (energy production) from the previous time step.\n", "\n", + "### Agent Actions\n", "\n", - "Agents choose actions based on the observations. The action space is two-dimensional, corresponding to:\n", + "The action space for the agents is two-dimensional and consists of:\n", "\n", - "- Bid Price for Inflexible Capacity (p_inflex): The price at which the agent offers its minimum power output (must-run capacity) to the market.\n", - "- Bid Price for Flexible Capacity (p_flex): The price for the additional capacity above the minimum output that the agent can flexibly adjust.\n", + "- **Bid Price for Inflexible Capacity (p_inflex)**: The price at which the agent offers its minimum power output (must-run capacity) to the market.\n", + "- **Bid Price for Flexible Capacity (p_flex)**: The price for the additional capacity above the minimum output that the agent can flexibly adjust.\n" + ] + }, + { + "cell_type": "markdown", + "id": "f3b17e49", + "metadata": { + "id": "e62e00c9" + }, + "source": [ + "#### 1.1.1 Install Assume and Required Packages\n", "\n", - "#### 1.1.1 Install Assume and needed Packages\n", + "In this section, we will install the necessary packages to run the **Assume framework** along with other dependencies.\n", + "The process is similar to the other tutorial on Assume.\n", "\n", - "Similar to the other tutorial, we can run Assume in the following way." + "The following commands will install Assume and its dependencies for reinforcement learning, along with additional libraries such as Plotly for visualization.\n", + "Make sure to install these before running the main code." ] }, { "cell_type": "code", - "execution_count": 1, - "id": "02dea28f", + "execution_count": null, + "id": "647079b9", "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -153,15 +170,25 @@ }, "outputs": [], "source": [ - "#!pip install 'assume-framework[learning]'\n", - "#!pip install plotly\n", - "#!git clone https://github.com/assume-framework/assume.git assume-repo" + "!pip install 'assume-framework[learning]'\n", + "!pip install plotly\n", + "!git clone https://github.com/assume-framework/assume.git assume-repo" + ] + }, + { + "cell_type": "markdown", + "id": "a3ca95d2", + "metadata": { + "id": "e62e00c9" + }, + "source": [ + "You will also need to install additional optimization libraries like Pyomo and GLPK. These libraries are crucial for modeling and solving optimization problems in the simulation." ] }, { "cell_type": "code", - "execution_count": 2, - "id": "544d38a4", + "execution_count": null, + "id": "7c8f0fb4", "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -174,51 +201,41 @@ }, "outputs": [], "source": [ - "#!pip install pyomo\n", - "#!apt-get install -y -qq glpk-utils\n", - "#!pip install nbconvert" + "!pip install pyomo\n", + "!apt-get install -y -qq glpk-utils\n", + "!pip install nbconvert" ] }, { "cell_type": "markdown", - "id": "5ca60145", + "id": "e28add86", "metadata": {}, "source": [ - "Define paths to use depending on colab or local usage." + "Define paths to differentiate between Colab or local usage.\n", + "If you're running this on Google Colab, the paths might differ slightly from your local environment.\n", + "You can configure the paths accordingly based on where you're executing the code." ] }, { "cell_type": "code", - "execution_count": 3, - "id": "a578e164", + "execution_count": null, + "id": "b7c91474", "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "bfd1daf2", - "outputId": "1edeb31f-bc3a-493e-b518-01f4188c44b6" + "id": "e62e00c9" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "../inputs\n" - ] - } - ], + "outputs": [], "source": [ "import importlib.util\n", "\n", "import pandas as pd\n", "\n", - "# import plotly for visualization\n", + "#import plotly for visualization\n", "import plotly.graph_objects as go\n", "\n", - "# import yaml for reading and writing YAML files\n", + "#import yaml for reading and writing YAML files\n", "import yaml\n", "\n", - "# Check if 'google.colab' is available\n", + "#Check if 'google.colab' is available\n", "IN_COLAB = importlib.util.find_spec(\"google.colab\") is not None\n", "\n", "colab_inputs_path = \"assume-repo/examples/inputs\"\n", @@ -231,43 +248,52 @@ }, { "cell_type": "markdown", - "id": "73087adf", + "id": "d95724ea", "metadata": { "id": "636ea9ae" }, "source": [ - "#### 1.1.2 Create and Load example files from market splitting tutorial\n", + "#### 1.1.2 Create and Load Example Files from Market Splitting Tutorial\n", + "\n", + "To define the RL Agent, we need to obtain the results from the **Market Zone Splitting** tutorial.\n", + "This tutorial provides essential data that the RL agent will use for decision-making.\n", "\n", - "We need to get the results form the market zone splitting tutorial, for which we are defining the RL Agent here. If you are working in colab execute the follwoing cells. If you are not working in colab but on your local machine simply open the respective tuttorial notebook and let it run." + "If you are working in **Google Colab**, execute the following cells to download and run the necessary notebook automatically. \n", + "If you are working on your **local machine**, simply open the respective tutorial notebook and execute it manually." ] }, { "cell_type": "code", - "execution_count": 4, - "id": "116b9e37", + "execution_count": null, + "id": "85fdfe19", "metadata": { + "lines_to_next_cell": 2, "vscode": { "languageId": "shellscript" } }, "outputs": [], "source": [ - "# if used locally\n", - "#%cd assume/examples/notebooks/\n", + "# For local execution:\n", + "%cd assume/examples/notebooks/\n", "\n", - "# if used in colab\n", - "#%cd assume-repo/examples/notebooks/\n", + "# For execution in Google Colab:\n", + "%cd assume-repo/examples/notebooks/\n", "\n", - "#!jupyter nbconvert --to notebook --execute --ExecutePreprocessor.timeout=60 --output output.ipynb 08_market_zone_coupling.ipynb\n", + "# Execute the Market Zone Splitting tutorial:\n", + "!jupyter nbconvert --to notebook --execute --ExecutePreprocessor.timeout=60 --output output.ipynb 08_market_zone_coupling.ipynb\n", "\n", - "#%cd content\n", - "#!cp -r assume-repo/examples/notebooks/inputs ." + "# Return to content folder (for Colab):\n", + "%cd content\n", + "\n", + "# Copy inputs directory to the working folder (for Colab):\n", + "!cp -r assume-repo/examples/notebooks/inputs ." ] }, { "cell_type": "code", - "execution_count": 5, - "id": "9871a2a5", + "execution_count": null, + "id": "1ca7eab9", "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -275,15 +301,7 @@ "id": "233f315b", "outputId": "f98da7d4-0080-4546-c642-838f722965b0" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Input CSV files have been read from 'inputs/tutorial_08'.\n" - ] - } - ], + "outputs": [], "source": [ "import os\n", "\n", @@ -300,24 +318,24 @@ }, { "cell_type": "markdown", - "id": "bcfa21b7", + "id": "a9fc51a8", "metadata": { "id": "6985289b" }, "source": [ - "#### 1.1.3 Let's make this a leanring example\n", + "#### 1.1.3 Transform the Scenario into a Learning Example\n", "\n", - "The next cells show how we can transform any configured example in Assume into a learning example.\n", + "The following cells show how we can convert any pre-configured scenario in Assume into a learning example.\n", "\n", - "**Define a learning power plan**\n", + "**Define a Learning Power Plant**\n", "\n", - "We place a learning nuclear power plant in the south zone that has a 5 times hihger maximal power, to generate a scenario where it has a price impact." + "In this example, we place a learning nuclear power plant in the southern zone. This plant has five times the maximum power of a typical plant, which allows us to create a scenario where its actions have a noticeable impact on market prices." ] }, { "cell_type": "code", - "execution_count": 6, - "id": "ac7d12fb", + "execution_count": null, + "id": "8c4153fa", "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -326,311 +344,86 @@ "id": "b205256f", "outputId": "b9bb887b-f534-4a50-dd5b-229be1012600" }, - "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", - " \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", - " \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", - " \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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
technologybidding_zonalfuel_typeemission_factormax_powermin_powerefficiencyadditional_costnodeunit_operator
name
Unit 11nuclearnaive_eomuranium0.01000.00.00.315north_2Operator North
Unit 12nuclearnaive_eomuranium0.01000.00.00.316north_2Operator North
Unit 13nuclearnaive_eomuranium0.01000.00.00.317north_2Operator North
Unit 14nuclearnaive_eomuranium0.01000.00.00.318north_2Operator North
Unit 15nuclearnaive_eomuranium0.01000.00.00.319north_2Operator North
Unit 16nuclearnaive_eomuranium0.01000.00.00.320southOperator South
Unit 17nuclearnaive_eomuranium0.01000.00.00.321southOperator South
Unit 18nuclearnaive_eomuranium0.01000.00.00.322southOperator South
Unit 19nuclearnaive_eomuranium0.01000.00.00.323southOperator South
Unit 20nuclearpp_learninguranium0.05000.00.00.324southOperator-RL
\n", - "
" - ], - "text/plain": [ - " technology bidding_zonal fuel_type emission_factor max_power \\\n", - "name \n", - "Unit 11 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 12 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 13 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 14 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 15 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 16 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 17 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 18 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 19 nuclear naive_eom uranium 0.0 1000.0 \n", - "Unit 20 nuclear pp_learning uranium 0.0 5000.0 \n", - "\n", - " min_power efficiency additional_cost node unit_operator \n", - "name \n", - "Unit 11 0.0 0.3 15 north_2 Operator North \n", - "Unit 12 0.0 0.3 16 north_2 Operator North \n", - "Unit 13 0.0 0.3 17 north_2 Operator North \n", - "Unit 14 0.0 0.3 18 north_2 Operator North \n", - "Unit 15 0.0 0.3 19 north_2 Operator North \n", - "Unit 16 0.0 0.3 20 south Operator South \n", - "Unit 17 0.0 0.3 21 south Operator South \n", - "Unit 18 0.0 0.3 22 south Operator South \n", - "Unit 19 0.0 0.3 23 south Operator South \n", - "Unit 20 0.0 0.3 24 south Operator-RL " - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# create scarcity in south germany\n", + "# Create scarcity in southern Germany by limiting the number of power plants\n", "powerplant_units = powerplant_units[:20]\n", "\n", - "# assign RL power plant and give it market power\n", + "# Assign the RL-controlled power plant and give it market power\n", "powerplant_units.loc[19, \"bidding_zonal\"] = \"pp_learning\"\n", - "powerplant_units.loc[19, \"max_power\"] = 5000\n", + "powerplant_units.loc[19, \"max_power\"] = 5000 # Set maximum power to 5000 MW\n", "\n", - "# assig specific RL unit operator to plant\n", + "# Assign a specific RL unit operator to the plant\n", "powerplant_units.loc[19, \"unit_operator\"] = \"Operator-RL\"\n", "\n", - "# make name column to index\n", + "# Set the 'name' column as the index\n", "powerplant_units.set_index(\"name\", inplace=True, drop=True)\n", "\n", - "# store power plant units to csv again\n", + "# Save the updated power plant units to a CSV file\n", "powerplant_units.to_csv(input_dir + \"/powerplant_units.csv\")\n", "\n", + "# Show the last 10 entries\n", "powerplant_units.tail(10)" ] }, - { - "cell_type": "code", - "execution_count": 8, - "id": "9316ac03", - "metadata": { - "id": "QBTGrw62_5I7" - }, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", - "id": "8f995ab9", + "id": "c8a22a61", "metadata": { "id": "cce0e8b4" }, "source": [ "**Configure Learning Hyperparameters in YAML**\n", "\n", - "Change the yaml to configure the learning specific hyperparameters. In the following we provide a brief description of the hyper parameters:\n", + "The following YAML configuration contains the learning-specific hyperparameters that will guide the RL agent's training process. Below is a brief description of these hyperparameters:\n", "\n", "- **continue_learning** (`False`): \n", - " - Indicates whether the agent should continue training from a previously saved state or start fresh.\n", + " - Whether to continue training from a previously saved state or start fresh.\n", "\n", "- **max_bid_price** (`100`): \n", - " - The maximum bid price allowed during the agent's interaction with the environment, which is used to scale the output of the actor.\n", + " - The maximum allowable bid price for the agent, used to scale the actor's output.\n", "\n", "- **algorithm** (`\"matd3\"`): \n", - " - The type of reinforcement learning algorithm used. In this case, `MATD3`, which stands for Multi-Agent Twin Delayed Deep Deterministic Policy Gradient.\n", + " - The learning algorithm to be used, in this case `MATD3` (Multi-Agent Twin Delayed Deep Deterministic Policy Gradient).\n", "\n", "- **learning_rate** (`0.001`): \n", - " - The learning rate for the algorithm's optimizer. This determines how big the steps of the models parameter update are during training.\n", + " - The rate at which the model’s parameters are updated during training.\n", "\n", "- **training_episodes** (`50`): \n", - " - The total number of training episodes the agent will go through.\n", + " - The total number of episodes for training the agent.\n", "\n", "- **episodes_collecting_initial_experience** (`3`): \n", - " - The number of episodes dedicated to collecting initial experience before training begins. During this period the agent follows a random policy around some base value.\n", + " - Number of episodes dedicated to collecting initial experience before actual training begins, during which the agent follows a random policy.\n", "\n", - "- **train_freq** (`\"24h\"`): \n", - " - The frequency at which the model is trained. In this case, training occurs every 24 hours.\n", + "- **train_freq** (`\"4h\"`): \n", + " - Frequency of model training, in this case, every 4 hours.\n", "\n", "- **gradient_steps** (`-1`): \n", - " - The number of gradient steps to be taken at each training interval. A value of `-1` typically means to perform as many gradient steps as the number of collected experience samples allows.\n", + " - The number of gradient updates to perform at each training step. A value of `-1` typically means that all collected experience will be used for training.\n", "\n", "- **batch_size** (`256`): \n", - " - The number of samples in each mini-batch used for training the model.\n", + " - The size of the mini-batch used for training.\n", "\n", "- **gamma** (`0.99`): \n", - " - The discount factor for future rewards, representing how much importance the agent places on long-term rewards versus immediate rewards.\n", + " - The discount factor for future rewards, balancing short-term vs. long-term reward importance.\n", "\n", "- **device** (`\"cpu\"`): \n", - " - The computational device used for training. In this case, training is performed on a CPU.\n", + " - The computational device for training. In this case, the CPU is used.\n", "\n", "- **noise_sigma** (`0.1`): \n", - " - The standard deviation (sigma) of the noise added to the actions for exploration purposes.\n", + " - The standard deviation of the exploration noise added to actions.\n", "\n", - "- **noise_scale** (`1`): \n", - "- **noise_dt** (`1`): \n", - " - A scaling factor applied to the noise added for exploration, influencing the amount of exploration.\n", - " - it is used for decay, but since both values are 1 no decay is applied. \n", + "- **noise_scale** (`1`) and **noise_dt** (`1`): \n", + " - Parameters controlling the scale and time step of the exploration noise. Since both are set to 1, no decay is applied.\n", "\n", - "- **validation_episodes_interval** (`5`): \n", - " - The interval at which the model is validated during training, i.e., validation occurs every 5 episodes.\n" + "- **validation_episodes_interval** (`3`): \n", + " - The interval (in episodes) at which validation is performed during training." ] }, { "cell_type": "code", - "execution_count": 53, - "id": "03cc1a12", + "execution_count": null, + "id": "f6c64dc2", "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -638,16 +431,9 @@ "id": "9c555ce9", "outputId": "473126ae-3c3e-4698-e3a5-347cc00e5108" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Configuration YAML file has been saved to '../inputs\\tutorial_08\\config.yaml'.\n" - ] - } - ], + "outputs": [], "source": [ + "# YAML configuration for the RL training\n", "config = {\n", " \"zonal_case\": {\n", " \"start_date\": \"2019-01-01 00:00\",\n", @@ -692,7 +478,7 @@ " }\n", "}\n", "\n", - "# Define the path for the config file\n", + "# Define the path for the configuration file\n", "config_path = os.path.join(input_dir, \"config.yaml\")\n", "\n", "# Save the configuration to a YAML file\n", @@ -704,18 +490,19 @@ }, { "cell_type": "markdown", - "id": "59a880d8", + "id": "052cbdb4", "metadata": { "id": "3f0f38fb" }, "source": [ - "For XRL, we need enhanced logging of the learning process, which is not currently a feature of ASSUME itself. Therefore, we are overriding some functions to enable this logging specifically for the purpose of this tutorial." + "In order to make this setup compatible with XRL, we need to enhance the logging of the learning process. \n", + "ASSUME does not have this feature natively, so we will override some functions to enable this logging for the purpose of this tutorial." ] }, { "cell_type": "code", - "execution_count": 8, - "id": "823db62a", + "execution_count": null, + "id": "a01977d5", "metadata": { "cellView": "form", "id": "201251c6" @@ -927,20 +714,21 @@ }, { "cell_type": "markdown", - "id": "d52cb7d4", + "id": "29fa6b82", "metadata": { "id": "dcacfe26" }, "source": [ - "**Run the example case**\n", + "**Run the Example Case**\n", "\n", - "Now we run the example case similar to before in the market zone tutorial. the only difference is that we call the run_learning function, whcih itterates multiple times over the simulation horizon. " + "Now we run the example case as done previously in the market zone tutorial. \n", + "The main difference here is that we call the `run_learning()` function, which iterates multiple times over the simulation horizon for reinforcement learning." ] }, { "cell_type": "code", - "execution_count": 54, - "id": "9092a097", + "execution_count": null, + "id": "0c1c9334", "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -949,1546 +737,36 @@ "id": "bfadf522", "outputId": "7c91ab13-a3c2-4e89-d8ac-d20be95391f6" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.world:connected to db\n", - "INFO:assume.scenario.loader_csv:Starting Scenario tutorial_08/zonal_case from ../inputs\n", - "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", - "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", - "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", - "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", - "INFO:assume.scenario.loader_csv:availability_df not found. Returning None\n", - "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", - "INFO:assume.scenario.loader_csv:price_forecasts not found. Returning None\n", - "INFO:assume.scenario.loader_csv:temperature not found. Returning None\n", - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n", - "INFO:assume.scenario.loader_csv:storage_units not found. Returning None\n", - "INFO:assume.scenario.loader_csv:industrial_dsm_units not found. Returning None\n", - "INFO:assume.scenario.loader_csv:forecasts_df not found. Returning None\n", - "INFO:assume.scenario.loader_csv:cross_border_flows not found. Returning None\n", - "INFO:assume.scenario.loader_csv:availability_df not found. Returning None\n", - "INFO:assume.scenario.loader_csv:electricity_prices not found. Returning None\n", - "INFO:assume.scenario.loader_csv:price_forecasts not found. Returning None\n", - "INFO:assume.scenario.loader_csv:temperature not found. Returning None\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_1 2019-01-01 23:00:00: : 82801.0it [00:06, 12013.00it/s]\n", - "Training Episodes: 2%|▏ | 1/50 [00:06<05:42, 7.00s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_2 2019-01-01 23:00:00: : 82801.0it [00:06, 12345.61it/s]\n", - "Training Episodes: 4%|▍ | 2/50 [00:13<05:31, 6.91s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_3 2019-01-01 23:00:00: : 82801.0it [00:05, 15499.94it/s]\n", - "Training Episodes: 6%|▌ | 3/50 [00:19<04:54, 6.26s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_4 2019-01-01 23:00:00: : 82801.0it [00:07, 11198.80it/s]\n", - "Training Episodes: 8%|▊ | 4/50 [00:26<05:10, 6.75s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_5 2019-01-01 23:00:00: : 82801.0it [00:06, 13713.80it/s]\n", - "Training Episodes: 10%|█ | 5/50 [00:32<04:53, 6.52s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_6 2019-01-01 23:00:00: : 82801.0it [00:05, 14446.60it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "tutorial_08_zonal_case_eval_1 2019-01-01 23:00:00: : 82801.0it [00:05, 15472.29it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 1, metric='avg_reward', value=4469.33\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "Training Episodes: 12%|█▏ | 6/50 [00:44<05:58, 8.14s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_7 2019-01-01 23:00:00: : 82801.0it [00:06, 12253.09it/s]\n", - "Training Episodes: 14%|█▍ | 7/50 [00:51<05:32, 7.72s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_8 2019-01-01 23:00:00: : 82801.0it [00:05, 14559.37it/s]\n", - "Training Episodes: 16%|█▌ | 8/50 [00:56<04:58, 7.11s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_9 2019-01-01 23:00:00: : 82801.0it [00:05, 13944.09it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "tutorial_08_zonal_case_eval_2 2019-01-01 23:00:00: : 82801.0it [00:06, 12881.54it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 2, metric='avg_reward', value=4474.74\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "Training Episodes: 18%|█▊ | 9/50 [01:09<06:02, 8.84s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_10 2019-01-01 23:00:00: : 82801.0it [00:07, 11479.97it/s]\n", - "Training Episodes: 20%|██ | 10/50 [01:16<05:35, 8.38s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_11 2019-01-01 23:00:00: : 82801.0it [00:06, 13599.80it/s]\n", - "Training Episodes: 22%|██▏ | 11/50 [01:23<05:00, 7.72s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_12 2019-01-01 23:00:00: : 82801.0it [00:06, 11938.13it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "tutorial_08_zonal_case_eval_3 2019-01-01 23:00:00: : 82801.0it [00:06, 12805.93it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 3, metric='avg_reward', value=4475.47\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "Training Episodes: 24%|██▍ | 12/50 [01:36<06:02, 9.53s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_13 2019-01-01 23:00:00: : 82801.0it [00:05, 14116.94it/s]\n", - "Training Episodes: 26%|██▌ | 13/50 [01:42<05:13, 8.46s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_14 2019-01-01 23:00:00: : 82801.0it [00:07, 11604.06it/s]\n", - "Training Episodes: 28%|██▊ | 14/50 [01:50<04:51, 8.10s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_15 2019-01-01 23:00:00: : 82801.0it [00:06, 13097.26it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_eval_4 2019-01-01 23:00:00: : 82801.0it [00:05, 13963.28it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 4, metric='avg_reward', value=4475.63\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "Training Episodes: 30%|███ | 15/50 [02:02<05:29, 9.43s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_16 2019-01-01 23:00:00: : 82801.0it [00:07, 11624.53it/s]\n", - "Training Episodes: 32%|███▏ | 16/50 [02:09<04:57, 8.76s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_17 2019-01-01 23:00:00: : 82801.0it [00:05, 14092.96it/s]\n", - "Training Episodes: 34%|███▍ | 17/50 [02:15<04:21, 7.93s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_18 2019-01-01 23:00:00: : 82801.0it [00:06, 12444.20it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "tutorial_08_zonal_case_eval_5 2019-01-01 23:00:00: : 82801.0it [00:05, 15771.05it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 5, metric='avg_reward', value=4475.69\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "Training Episodes: 36%|███▌ | 18/50 [02:27<04:53, 9.19s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_19 2019-01-01 23:00:00: : 82801.0it [00:05, 13997.61it/s]\n", - "Training Episodes: 38%|███▊ | 19/50 [02:33<04:15, 8.24s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_20 2019-01-01 23:00:00: : 82801.0it [00:06, 11920.26it/s]\n", - "Training Episodes: 40%|████ | 20/50 [02:41<03:56, 7.90s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_21 2019-01-01 23:00:00: : 82801.0it [00:06, 13709.91it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "tutorial_08_zonal_case_eval_6 2019-01-01 23:00:00: : 82801.0it [00:06, 13764.76it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 6, metric='avg_reward', value=4475.75\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Training Episodes: 42%|████▏ | 21/50 [02:53<04:27, 9.22s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_22 2019-01-01 23:00:00: : 82801.0it [00:05, 14997.12it/s]\n", - "Training Episodes: 44%|████▍ | 22/50 [02:58<03:48, 8.15s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_23 2019-01-01 23:00:00: : 82801.0it [00:05, 14215.35it/s]\n", - "Training Episodes: 46%|████▌ | 23/50 [03:04<03:22, 7.49s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_24 2019-01-01 23:00:00: : 82801.0it [00:06, 13508.71it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_eval_7 2019-01-01 23:00:00: : 82801.0it [00:06, 12904.43it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 7, metric='avg_reward', value=4475.79\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Training Episodes: 48%|████▊ | 24/50 [03:17<03:56, 9.09s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_25 2019-01-01 23:00:00: : 82801.0it [00:07, 11300.03it/s]\n", - "Training Episodes: 50%|█████ | 25/50 [03:25<03:34, 8.60s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_26 2019-01-01 23:00:00: : 82801.0it [00:05, 14158.58it/s]\n", - "Training Episodes: 52%|█████▏ | 26/50 [03:31<03:07, 7.82s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_27 2019-01-01 23:00:00: : 82801.0it [00:06, 13228.42it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_eval_8 2019-01-01 23:00:00: : 82801.0it [00:05, 16426.27it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 8, metric='avg_reward', value=4475.83\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Training Episodes: 54%|█████▍ | 27/50 [03:42<03:25, 8.94s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_28 2019-01-01 23:00:00: : 82801.0it [00:06, 12827.07it/s]\n", - "Training Episodes: 56%|█████▌ | 28/50 [03:49<03:01, 8.23s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_29 2019-01-01 23:00:00: : 82801.0it [00:05, 13859.42it/s]\n", - "Training Episodes: 58%|█████▊ | 29/50 [03:55<02:39, 7.60s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_30 2019-01-01 23:00:00: : 82801.0it [00:05, 14440.04it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_eval_9 2019-01-01 23:00:00: : 82801.0it [00:06, 13450.67it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 9, metric='avg_reward', value=4475.87\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "Training Episodes: 60%|██████ | 30/50 [04:07<02:59, 8.96s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_31 2019-01-01 23:00:00: : 82801.0it [00:06, 12824.65it/s]\n", - "Training Episodes: 62%|██████▏ | 31/50 [04:14<02:36, 8.24s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_32 2019-01-01 23:00:00: : 82801.0it [00:06, 12637.94it/s]\n", - "Training Episodes: 64%|██████▍ | 32/50 [04:20<02:19, 7.77s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_33 2019-01-01 23:00:00: : 82801.0it [00:05, 14130.55it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_eval_10 2019-01-01 23:00:00: : 82801.0it [00:06, 13407.73it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 10, metric='avg_reward', value=4475.90\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "Training Episodes: 66%|██████▌ | 33/50 [04:33<02:35, 9.12s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_34 2019-01-01 23:00:00: : 82801.0it [00:07, 11755.06it/s]\n", - "Training Episodes: 68%|██████▊ | 34/50 [04:40<02:16, 8.55s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_35 2019-01-01 23:00:00: : 82801.0it [00:05, 14936.66it/s]\n", - "Training Episodes: 70%|███████ | 35/50 [04:45<01:55, 7.68s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_36 2019-01-01 23:00:00: : 82801.0it [00:07, 11130.25it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "tutorial_08_zonal_case_eval_11 2019-01-01 23:00:00: : 82801.0it [00:06, 11935.15it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 11, metric='avg_reward', value=4475.93\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "Training Episodes: 72%|███████▏ | 36/50 [05:00<02:17, 9.79s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_37 2019-01-01 23:00:00: : 82801.0it [00:06, 12797.34it/s]\n", - "Training Episodes: 74%|███████▍ | 37/50 [05:07<01:54, 8.83s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_38 2019-01-01 23:00:00: : 82801.0it [00:06, 12915.06it/s]\n", - "Training Episodes: 76%|███████▌ | 38/50 [05:13<01:37, 8.15s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_39 2019-01-01 23:00:00: : 82801.0it [00:06, 12850.67it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_eval_12 2019-01-01 23:00:00: : 82801.0it [00:06, 13529.14it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 12, metric='avg_reward', value=4475.95\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "Training Episodes: 78%|███████▊ | 39/50 [05:26<01:45, 9.56s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_40 2019-01-01 23:00:00: : 82801.0it [00:06, 12461.16it/s]\n", - "Training Episodes: 80%|████████ | 40/50 [05:33<01:27, 8.73s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_41 2019-01-01 23:00:00: : 82801.0it [00:05, 14490.69it/s]\n", - "Training Episodes: 82%|████████▏ | 41/50 [05:39<01:10, 7.85s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_42 2019-01-01 23:00:00: : 82801.0it [00:05, 14582.93it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "tutorial_08_zonal_case_eval_13 2019-01-01 23:00:00: : 82801.0it [00:06, 13318.90it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 13, metric='avg_reward', value=4475.98\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "Training Episodes: 84%|████████▍ | 42/50 [05:51<01:13, 9.15s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_43 2019-01-01 23:00:00: : 82801.0it [00:07, 11473.78it/s]\n", - "Training Episodes: 86%|████████▌ | 43/50 [05:58<01:00, 8.62s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_44 2019-01-01 23:00:00: : 82801.0it [00:05, 14519.97it/s]\n", - "Training Episodes: 88%|████████▊ | 44/50 [06:04<00:46, 7.77s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_45 2019-01-01 23:00:00: : 82801.0it [00:06, 13424.52it/s]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "tutorial_08_zonal_case_eval_14 2019-01-01 23:00:00: : 82801.0it [00:06, 12595.71it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 14, metric='avg_reward', value=4476.00\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Training Episodes: 90%|█████████ | 45/50 [06:17<00:46, 9.35s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_46 2019-01-01 23:00:00: : 82801.0it [00:07, 11662.90it/s]\n", - "Training Episodes: 92%|█████████▏| 46/50 [06:24<00:34, 8.71s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_47 2019-01-01 23:00:00: : 82801.0it [00:06, 13631.36it/s]\n", - "Training Episodes: 94%|█████████▍| 47/50 [06:31<00:23, 7.96s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_48 2019-01-01 23:00:00: : 82801.0it [00:06, 13672.99it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_eval_15 2019-01-01 23:00:00: : 82801.0it [00:04, 16605.74it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.reinforcement_learning.learning_role:New best policy saved, episode: 15, metric='avg_reward', value=4476.02\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Training Episodes: 96%|█████████▌| 48/50 [06:42<00:17, 8.95s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_49 2019-01-01 23:00:00: : 82801.0it [00:07, 11704.20it/s]\n", - "Training Episodes: 98%|█████████▊| 49/50 [06:49<00:08, 8.42s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "tutorial_08_zonal_case_50 2019-01-01 23:00:00: : 82801.0it [00:06, 13377.79it/s]\n", - "Training Episodes: 100%|██████████| 50/50 [07:18<00:00, 8.76s/it]" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:assume.scenario.loader_csv:Adding markets\n", - "INFO:assume.scenario.loader_csv:Read units from file\n", - "INFO:assume.scenario.loader_csv:Adding power_plant units\n", - "INFO:assume.scenario.loader_csv:Adding demand units\n", - "INFO:assume.scenario.loader_csv:Adding unit operators and units\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - " 0%| | 0/82800 [00:00\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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
price forecast t+1price forecast t+2price forecast t+3price forecast t+4price forecast t+5price forecast t+6price forecast t+7price forecast t+8price forecast t+9price forecast t+10...residual load forecast t+17residual load forecast t+18residual load forecast t+19residual load forecast t+20residual load forecast t+21residual load forecast t+22residual load forecast t+23residual load forecast t+24total capacity t-1marginal costs t-1
02.242.262.282.302.322.342.362.382.402.42...0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.4066670.000.406667
12.262.282.302.322.342.362.382.402.422.44...0.0000000.0000000.0000000.0000000.0000000.0000000.4066670.4066670.680.406667
22.282.302.322.342.362.382.402.422.442.46...0.0000000.0000000.0000000.0000000.0000000.4066670.4066670.4066670.720.406667
32.302.322.342.362.382.402.422.442.462.48...0.0000000.0000000.0000000.0000000.4066670.4066670.4066670.4066670.760.406667
42.322.342.362.382.402.422.442.462.482.50...0.0000000.0000000.0000000.4066670.4066670.4066670.4066670.4066671.000.406667
..................................................................
6952.462.482.502.522.542.562.582.602.622.64...0.4066670.4066670.4066670.4066670.4066670.0000000.0000000.0000001.000.406667
6962.482.502.522.542.562.582.602.622.642.66...0.4066670.4066670.4066670.4066670.0000000.0000000.0000000.0000001.000.406667
6972.502.522.542.562.582.602.622.642.662.68...0.4066670.4066670.4066670.0000000.0000000.0000000.0000000.0000001.000.406667
6982.522.542.562.582.602.622.642.662.682.22...0.4066670.4066670.0000000.0000000.0000000.0000000.0000000.0000001.000.406667
6992.542.562.582.602.622.642.662.682.222.24...0.4066670.0000000.0000000.0000000.0000000.0000000.0000000.0000001.000.406667
\n", - "

700 rows × 50 columns

\n", - "" - ], - "text/plain": [ - " price forecast t+1 price forecast t+2 price forecast t+3 \\\n", - "0 2.24 2.26 2.28 \n", - "1 2.26 2.28 2.30 \n", - "2 2.28 2.30 2.32 \n", - "3 2.30 2.32 2.34 \n", - "4 2.32 2.34 2.36 \n", - ".. ... ... ... \n", - "695 2.46 2.48 2.50 \n", - "696 2.48 2.50 2.52 \n", - "697 2.50 2.52 2.54 \n", - "698 2.52 2.54 2.56 \n", - "699 2.54 2.56 2.58 \n", - "\n", - " price forecast t+4 price forecast t+5 price forecast t+6 \\\n", - "0 2.30 2.32 2.34 \n", - "1 2.32 2.34 2.36 \n", - "2 2.34 2.36 2.38 \n", - "3 2.36 2.38 2.40 \n", - "4 2.38 2.40 2.42 \n", - ".. ... ... ... \n", - "695 2.52 2.54 2.56 \n", - "696 2.54 2.56 2.58 \n", - "697 2.56 2.58 2.60 \n", - "698 2.58 2.60 2.62 \n", - "699 2.60 2.62 2.64 \n", - "\n", - " price forecast t+7 price forecast t+8 price forecast t+9 \\\n", - "0 2.36 2.38 2.40 \n", - "1 2.38 2.40 2.42 \n", - "2 2.40 2.42 2.44 \n", - "3 2.42 2.44 2.46 \n", - "4 2.44 2.46 2.48 \n", - ".. ... ... ... \n", - "695 2.58 2.60 2.62 \n", - "696 2.60 2.62 2.64 \n", - "697 2.62 2.64 2.66 \n", - "698 2.64 2.66 2.68 \n", - "699 2.66 2.68 2.22 \n", - "\n", - " price forecast t+10 ... residual load forecast t+17 \\\n", - "0 2.42 ... 0.000000 \n", - "1 2.44 ... 0.000000 \n", - "2 2.46 ... 0.000000 \n", - "3 2.48 ... 0.000000 \n", - "4 2.50 ... 0.000000 \n", - ".. ... ... ... \n", - "695 2.64 ... 0.406667 \n", - "696 2.66 ... 0.406667 \n", - "697 2.68 ... 0.406667 \n", - "698 2.22 ... 0.406667 \n", - "699 2.24 ... 0.406667 \n", - "\n", - " residual load forecast t+18 residual load forecast t+19 \\\n", - "0 0.000000 0.000000 \n", - "1 0.000000 0.000000 \n", - "2 0.000000 0.000000 \n", - "3 0.000000 0.000000 \n", - "4 0.000000 0.000000 \n", - ".. ... ... \n", - "695 0.406667 0.406667 \n", - "696 0.406667 0.406667 \n", - "697 0.406667 0.406667 \n", - "698 0.406667 0.000000 \n", - "699 0.000000 0.000000 \n", - "\n", - " residual load forecast t+20 residual load forecast t+21 \\\n", - "0 0.000000 0.000000 \n", - "1 0.000000 0.000000 \n", - "2 0.000000 0.000000 \n", - "3 0.000000 0.406667 \n", - "4 0.406667 0.406667 \n", - ".. ... ... \n", - "695 0.406667 0.406667 \n", - "696 0.406667 0.000000 \n", - "697 0.000000 0.000000 \n", - "698 0.000000 0.000000 \n", - "699 0.000000 0.000000 \n", - "\n", - " residual load forecast t+22 residual load forecast t+23 \\\n", - "0 0.000000 0.000000 \n", - "1 0.000000 0.406667 \n", - "2 0.406667 0.406667 \n", - "3 0.406667 0.406667 \n", - "4 0.406667 0.406667 \n", - ".. ... ... \n", - "695 0.000000 0.000000 \n", - "696 0.000000 0.000000 \n", - "697 0.000000 0.000000 \n", - "698 0.000000 0.000000 \n", - "699 0.000000 0.000000 \n", - "\n", - " residual load forecast t+24 total capacity t-1 marginal costs t-1 \n", - "0 0.406667 0.00 0.406667 \n", - "1 0.406667 0.68 0.406667 \n", - "2 0.406667 0.72 0.406667 \n", - "3 0.406667 0.76 0.406667 \n", - "4 0.406667 1.00 0.406667 \n", - ".. ... ... ... \n", - "695 0.000000 1.00 0.406667 \n", - "696 0.000000 1.00 0.406667 \n", - "697 0.000000 1.00 0.406667 \n", - "698 0.000000 1.00 0.406667 \n", - "699 0.000000 1.00 0.406667 \n", - "\n", - "[700 rows x 50 columns]" - ] - }, - "execution_count": 61, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# path to extra loggedobservation values \n", "path = (\n", @@ -4300,7 +1167,7 @@ }, { "cell_type": "markdown", - "id": "509b19bf", + "id": "8add0715", "metadata": { "id": "5d8b9dcf" }, @@ -4310,7 +1177,7 @@ }, { "cell_type": "markdown", - "id": "bf2b101a", + "id": "d7a9e67d", "metadata": { "id": "b1b50488" }, @@ -4320,8 +1187,8 @@ }, { "cell_type": "code", - "execution_count": 62, - "id": "c27178fe", + "execution_count": null, + "id": "cca85e13", "metadata": { "id": "4da4de57" }, @@ -4337,23 +1204,12 @@ }, { "cell_type": "code", - "execution_count": 63, - "id": "35a088d5", + "execution_count": null, + "id": "1cd3b7e6", "metadata": { "id": "37adecfa" }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 63, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# which actor is the RL actor\n", "ACTOR_NUM = len(powerplant_units) # 20\n", @@ -4371,7 +1227,7 @@ }, { "cell_type": "markdown", - "id": "fe43c9c6", + "id": "85d43a1b", "metadata": { "id": "d4a63712" }, @@ -4381,8 +1237,8 @@ }, { "cell_type": "code", - "execution_count": 64, - "id": "4ee77fed", + "execution_count": null, + "id": "c507d331", "metadata": { "id": "e6460cfb" }, @@ -4397,7 +1253,7 @@ }, { "cell_type": "markdown", - "id": "633c5100", + "id": "579665bc", "metadata": { "id": "ddd1ab1e" }, @@ -4411,19 +1267,10 @@ }, { "cell_type": "code", - "execution_count": 65, - "id": "e5738928", + "execution_count": null, + "id": "b0758eb5", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", - "To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n" - ] - } - ], + "outputs": [], "source": [ "# @ Title Split the data into training and testing sets\n", "X_train, X_test, y_train, y_test = train_test_split(\n", @@ -4442,7 +1289,7 @@ }, { "cell_type": "markdown", - "id": "c278a8c6", + "id": "abbaa45f", "metadata": { "id": "ae7b108b", "lines_to_next_cell": 2 @@ -4453,8 +1300,8 @@ }, { "cell_type": "code", - "execution_count": 66, - "id": "77b37ebc", + "execution_count": null, + "id": "40e12192", "metadata": { "id": "6d9be211" }, @@ -4470,20 +1317,12 @@ }, { "cell_type": "code", - "execution_count": 67, - "id": "1eac5396", + "execution_count": null, + "id": "56a32f41", "metadata": { "id": "84bb96cf" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:shap:Using 595 background data samples could cause slower run times. Consider using shap.sample(data, K) or shap.kmeans(data, K) to summarize the background as K samples.\n" - ] - } - ], + "outputs": [], "source": [ "# Create the SHAP Kernel Explainer\n", "explainer = shap.KernelExplainer(model_predict, X_train)" @@ -4491,5270 +1330,12 @@ }, { "cell_type": "code", - "execution_count": 68, - "id": "c38544fd", + "execution_count": null, + "id": "4279910b", "metadata": { "id": "2a7929e4" }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 0%| | 0/105 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "No data for colormapping provided via 'c'. Parameters 'vmin', 'vmax' will be ignored\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxEAAAO8CAYAAAA25TlWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeVxU9f748dewiGyCEipu4G5upbh0S1FDsyRMEpW8ZqGBqFSWS92uX1Gzm1p51dz3pdxwQ3CvANNyu5pbCm64AIqKECAow5zfH/6YOM4MMoiA+n4+HvN4OJ/zmXPe58xxOO/zWY5GURQFIYQQQgghhCgii7IOQAghhBBCCPFkkSRCCCGEEEIIYRZJIoQQQgghhBBmkSRCCCGEEEIIYRZJIoQQQgghhBBmkSRCCCGEEEIIYRZJIoQQQgghhBBmkSRCCCGEEEIIYRZJIoQQQgghhBBmkSRCCCGESe+//z4eHh6lsq3r16/j7++Pi4sLGo2G6dOnl8p2xcMtW7YMjUZDQkJCWYfyyDQaDePHjy/rMMqlQ4cO8fLLL2Nvb49Go+GPP/5g/PjxaDSasg5NlEOSRAghyr0TJ07g7++Pu7s7FStWpGbNmnTr1o3vv/++rEN7YnXu3BmNRqN/ValShbZt27JkyRJ0Ol2JbOM///kPmzdvLnL9Tz75hJ07d/Kvf/2LlStX8vrrr5dIHIXJysriyy+/pGXLltjZ2eHk5ETHjh1ZsWIFiqIUe73btm0rtQvVO3fuMH78eGJiYopUPyYmRvXd29jYUK1aNTp37sx//vMfbty48XgDfkYlJyfz+eef06VLFxwdHdFoNEX+zkpDbm4uffr0ITU1lf/+97+sXLkSd3f3sg5LlGNWZR2AEEIU5rfffqNLly7UqVOHoKAgqlevzpUrV9i/fz8zZszgww8/LOsQn1i1atXi66+/BuDGjRusWLGCwYMHEx8fz+TJkx95/f/5z3/w9/enV69eRar/yy+/8NZbbzFq1KhH3nZRXL9+HW9vb06fPk1AQAChoaHk5OSwYcMG3nvvPbZt28aPP/6IpaWl2evetm0bs2fPLpVE4s6dO0yYMAG4nxwW1UcffUTbtm3Jy8vjxo0b/Pbbb4SFhTFt2jTWrVvHq6++qq/77rvvEhAQgI2NTUmHX+qys7Oxsir9y5+4uDimTJlCw4YNadGiBb///nupx1CY8+fPc+nSJRYuXMgHH3xQ1uGIJ4AkEUKIcu2rr77CycmJQ4cO4ezsrFqWkpJSNkGVIUVRyMnJwdbW9pHX5eTkxIABA/TvhwwZQuPGjZk1axZffvkl1tbWj7wNc6SkpBh8x48iJyeHChUqYGFhvNH9vffe4/Tp02zatImePXvqyz/66CNGjx7Nt99+S6tWrfjss89KLKbypGPHjvj7+6vKjh07xmuvvUbv3r35888/cXNzA8DS0rJYyVR5VLFixTLZrqenJ7du3aJKlSqsX7+ePn36lEkcpuT/npbk/0HxdJPuTEKIcu38+fM0a9bM6B+2qlWr6v+dkJCARqNh2bJlBvUe7AOd38c3Pj6eAQMG4OTkhKurK//3f/+HoihcuXKFt956i0qVKlG9enW+++471fryu4OsW7eOCRMmULNmTRwdHfH39yc9PZ27d+8yYsQIqlatioODA4GBgdy9e1e1jqVLl/Lqq69StWpVbGxsaNq0KXPnzjWI3cPDgzfffJOdO3fSpk0bbG1tmT9/Pp06deKFF14weswaN25M9+7dCzmqxtnZ2fHSSy+RlZVVaJeWrKwsRo4cSe3atbGxsaFx48Z8++23qu4/Go2GrKwsli9fru828/777xtdX35/e0VRmD17tr5+vgsXLtCnTx+qVKmij3Hr1q2qdeR/J2vWrGHs2LHUrFkTOzs7/vrrL6Pb3L9/Pzt37uT9999XJRD5vv76axo2bMiUKVPIzs5WbePBLigPnnvvv/8+s2fP1h+HgvuTX/fbb7/lv//9L+7u7tja2tKpUydOnjypWm/nzp2NtiwUHKeSkJCAq6srABMmTNBvq7gtIC+88ALTp08nLS2NWbNm6cuNjYnIPzdjYmL052aLFi30x2fjxo20aNGCihUr4unpydGjRw22d+bMGfz9/alSpQoVK1akTZs2bNmyRVUnf9v79u3j008/xdXVFXt7e/z8/AzO08OHD9O9e3eee+45bG1tqVu3LoMGDVLVMXZ8jh49yhtvvEGlSpVwcHDA29ub/fv3FzsOYxwdHalSpcpD65kjP6Y9e/YwZMgQXFxcqFSpEgMHDuT27dtFXs/7779Pp06dAOjTpw8ajeahrVo//PADnp6e2NraUqVKFQICArhy5Yp++dKlS9FoNCxZskT1uf/85z9oNBq2bdtW9B0V5ZK0RAghyjV3d3d+//13Tp48SfPmzUt03f369eP5559n8uTJbN26lUmTJlGlShXmz5/Pq6++ypQpU/jxxx8ZNWoUbdu2xcvLS/X5r7/+GltbWz7//HPOnTvH999/j7W1NRYWFty+fZvx48ezf/9+li1bRt26dRk3bpz+s3PnzqVZs2b07NkTKysrIiMjGTZsGDqdjuHDh6u2ExcXxzvvvMOQIUMICgqicePGODg4EBQUZHBcDh06RHx8PGPHji3WMblw4QKWlpYm70YqikLPnj2Jjo5m8ODBvPjii+zcuZPRo0eTmJjIf//7XwBWrlzJBx98QLt27QgODgagfv36Rtfp5eXFypUreffdd+nWrRsDBw7UL7t+/Tovv/wyd+7c4aOPPsLFxYXly5fTs2dP1q9fj5+fn2pdX375JRUqVGDUqFHcvXuXChUqGN1mZGQkgGpbBVlZWdG/f38mTJjAvn376Nq1q+mD9oAhQ4aQlJTE7t27WblypdE6K1asICMjg+HDh5OTk8OMGTN49dVXOXHiBNWqVSvytlxdXZk7dy5Dhw7Fz8+Pt99+G4CWLVsWeR0P8vf3Z/DgwezatYuvvvqq0Lrnzp2jf//+DBkyhAEDBvDtt9/i6+vLvHnz+OKLLxg2bBhw//9K3759iYuL07cMnTp1ildeeYWaNWvy+eefY29vz7p16+jVqxcbNmww+G4//PBDKleuTFhYGAkJCUyfPp3Q0FDWrl0L3L+T/tprr+Hq6srnn3+Os7MzCQkJbNy4sdB9OHXqFB07dqRSpUqMGTMGa2tr5s+fT+fOnYmNjaV9+/ZmxVEWQkNDcXZ2Zvz48cTFxTF37lwuXbqkT3wfZsiQIdSsWZP//Oc/+m5uhZ2HX331Ff/3f/9H3759+eCDD7hx4wbff/89Xl5eHD16FGdnZwIDA9m4cSOffvop3bp1o3bt2pw4cYIJEyYwePBgevToUZKHQJQFRQghyrFdu3YplpaWiqWlpfKPf/xDGTNmjLJz507l3r17qnoXL15UAGXp0qUG6wCUsLAw/fuwsDAFUIKDg/VlWq1WqVWrlqLRaJTJkyfry2/fvq3Y2toq7733nr4sOjpaAZTmzZur4njnnXcUjUajvPHGG6rt/+Mf/1Dc3d1VZXfu3DGIs3v37kq9evVUZe7u7gqg7NixQ1WelpamVKxYUfnss89U5R999JFib2+vZGZmGqy/oE6dOilNmjRRbty4ody4cUM5ffq08tFHHymA4uvrq6/33nvvqWLfvHmzAiiTJk1Src/f31/RaDTKuXPn9GX29vaq4/YwgDJ8+HBV2YgRIxRA+fXXX/VlGRkZSt26dRUPDw8lLy9PUZS/v5N69eoZPbYP6tWrlwIot2/fNlln48aNCqDMnDlTtY3o6GhVPWPn3vDhwxVjf2Lz69ra2ipXr17Vlx84cEABlE8++URf1qlTJ6VTp04G63jwO7lx44bBOV6Y/P0IDw83WeeFF15QKleurH+/dOlSBVAuXryoL8s/N3/77Td92c6dO/X7d+nSJX35/PnzDY6dt7e30qJFCyUnJ0dfptPplJdffllp2LChwba7du2q6HQ6ffknn3yiWFpaKmlpaYqiKMqmTZsUQDl06FCh+//gserVq5dSoUIF5fz58/qypKQkxdHRUfHy8jI7jqIIDw83ei6ZKz8mT09P1W/R1KlTFUCJiIgo8rpMnRf5v5f5EhISFEtLS+Wrr75S1Ttx4oRiZWWlKk9OTlaqVKmidOvWTbl7967SqlUrpU6dOkp6erq5uyrKIenOJIQo17p168bvv/9Oz549OXbsGFOnTqV79+7UrFnToNuDuQoOHrS0tKRNmzYoisLgwYP15c7OzjRu3JgLFy4YfH7gwIGqcQPt27dHURSD7hPt27fnypUraLVafVnBMQ3p6encvHmTTp06ceHCBdLT01Wfr1u3rkH3JCcnJ9566y1Wr16t70aUl5fH2rVr6dWrF/b29g/d/zNnzuDq6oqrqyvPP/8833//PT4+PgbdDwratm0blpaWfPTRR6rykSNHoigK27dvf+h2zbFt2zbatWtHhw4d9GUODg4EBweTkJDAn3/+qar/3nvvFWm8SEZGBnC/i4kp+ctMdYl6FL169aJmzZr69+3ataN9+/blpouHg4OD/hgVpmnTpvzjH//Qv8+/a//qq69Sp04dg/L8/0epqan88ssv9O3bl4yMDG7evMnNmze5desW3bt35+zZsyQmJqq2FRwcrLqr3rFjR/Ly8rh06RLwd1/+qKgocnNzi7SfeXl57Nq1i169elGvXj19uZubG/3792fv3r0G3//D4igLwcHBqt+ioUOHYmVl9VjOp40bN6LT6ejbt6/+e7t58ybVq1enYcOGREdH6+tWr16d2bNns3v3bjp27Mgff/zB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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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9fTr10+JhYiIiDwQTfpZ69jYWPr378/WrVtZtWoV1dXVeHp60r17d6ubztDQUHbv3s2WLVuoqKjA3d2dbt26MWPGDJsP2d2pT58+JCYmkpCQwOrVq3F1dbV8AC4sLMym/ty5c/nzn/9MVlYWO3bsoG/fviQnJ/OnP/2JkpISSz03NzcSEhJYtGgRGzZsoKamhu7duxMfH096enqTJhZwaxnUxYsXk5KSwpo1a6iursbX15eZM2dafSDP0dGR+Ph4Fi5cSGZmJkajkS5dujB79mwKCgpsEovG9k9jODk5kZCQYPlAXnZ2Nm5ubgQEBBAdHU27du3uua3IyEh69OjB+vXrWbduHUajkTZt2tClSxemTZtmVTc0NJQOHTqQmprK+vXrqa6uxsvLi2eeecbyXYynnnqK+fPns3z5cpKTk2nWrBkDBgxg6dKlREREWLUXGBhIRkYG27dv5+rVq7i4uNC5c2fee+89AgICLPVefPFF8vPz2bVrF3/729+ora0lNja2wcQiOjqaiooK0tLSuHbtGmazmY8++siuxKKiosIyMX/Dhg311klOTrYkFgBTp06lffv2bNmyhb179+Lh4cGoUaMs3wwRERERaWoGc2PWexWRXxzD+z/dkrwiIiJyi3lakz7//0no0aWIiIiIiNhNiYWIiIiIiNhNiYWIiIiIiNhNiYWIiIiIiNhNiYWIiIiIiNhNiYWIiIiIiNjtX28dKxH5SS1ptYLw8HCcnZ0fdigiIiLyM6YRCxERERERsZsSCxERERERsZsSCxERERERsZsSCxERERERsZsSCxERERERsZsSCxERERERsZsSCxERERERsZsSCxERERERsZsSCxERERERsZsSCxERERERsZsSCxERERERsZvBbDabH3YQIvLzZXjf9LBDEBER+bdjnub0sENochqxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERu/2sE4vZs2fTv3//e6pbXFxM//79WbJkyQOO6pbGxBYZGUlwcPADjqhhje2f/Px8Jk6cyNChQ3/SfhURERGRf03/fl/mELuZTCZmzJiByWQiKioKNzc3nnjiiYcd1k8uJyeH/Px8JkyYcM/7rF27Fjc3tyZPJPPy8ti5cycnT57k9OnTGI1GYmNjGzxO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9CExMZGEhARWr16Nq6ur5QNwYWFhNvXnzp3Ln//8Z7KystixYwd9+/YlOTmZP/3pT5SUlFjqubm5kZCQwKJFi9iwYQM1NTV0796d+Ph40tPTmzSxgFvLoC5evJiUlBTWrFlDdXU1vr6+zJw50+oDeY6OjsTHx7Nw4UIyMzMxGo106dKF2bNnU1BQYJNYNLZ/GsPJyYmEhATLB/Kys7Nxc3MjICCA6Oho2rVrd89tRUZG0qNHD9avX8+6deswGo20adOGLl26MG3aNKu6oaGhdOjQgdTUVNavX091dTVeXl4888wzlu9iPPXUU8yfP5/ly5eTnJxMs2bNGDBgAEuXLiUiIsKqvcDAQDIyMti+fTtXr17FxcWFzp0789577xEQEGCp9+KLL5Kfn8+uXbv429/+Rm1tLbGxsQ0mFtHR0VRUVJCWlsa1a9cwm8189NFHdicWRUVFJCcnW5VlZ2eTnZ1tOf/bP1A4adIkvL29SUtLY9GiRTRr1oz+/fsTFRXV6PkrIiIiIvfCYG7Meq8i8otjeP+nW5JXRETkl8I8rUmf7/8sNNkcCxERERER+eVSYiEiIiIiInZTYiEiIiIiInZTYiEiIiIiInZTYiEiIiIiInZTYiEiIiIiInZTYiEiIiIiInb791tAV0Sa1JJWKwgPD8fZ2flhhyIiIiI/YxqxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuxnMZrP5YQchIj9fhvdNDzsEERGRnw3zNKeHHcLPlkYsRERERETEbkosRERERETEbkosRERERETEbkosRERERETEbkosRERERETEbkosRERERETEbkosRERERETEbj/rxGL27Nn079//nuoWFxfTv39/lixZ8oCjuqUxsUVGRhIcHPyAI2pYY/snPz+fiRMnMnTo0J+0X0VERETkX5O+8CE2TCYTM2bMwGQyERUVhZubG0888cTDDusnl5OTQ35+PhMmTLjnfdauXYubm1uTJ5J5eXns3LmTkydPcvr0aYxGI7GxsfUep7i4mFdeeaXedjp37szGjRubNDYRERER+JknFjNnzuS///u/H3YYvzhFRUUUFRUxZcoURo0a9bDDeWhy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N27cICIiAqPRyOuvv46fnx8uLi4YDAZWrVrFoUOHmiSmxjKbzcTExHDu3DnCwsLo0aMHrq6uODg4kJGRQVZWls0owc/J3VYLMxgMLFq0yGrE4XZ118q9OnHiBDExMXTo0IGYmBjat29Ps2bNMBgMvPvuu1Z95OHhQWpqKkePHuXAgQMcPXqUBQsWsGTJEuLj4xucR2GPsWPH8pvf/MaqbOHChQBMmTLFqvz2kaym8p//+Z94enqyadMmJRYiIiLS5JpsLdeOHTtSWFhI796972k50UceeYRBgwYxaNAg4NYqPVOmTOHDDz/knXfeqXefupV1zp8/b7Pt7NmzNmV1T9brWwWnuLjYan7HwYMH+e6775g1axavvPKKVd2kpKQfPZ/GeOyxx4D6Y64rq6tz+vRpCgoKiIiIsPlQ27Zt26z+bmz/NNZjjz3GF198wbVr12xeSzp79iwuLi6WCdIN6dixI59//jnt2rWjU6dODdate+JeUFBg9XrXnbKysqipqWHRokWWvgMwGo02o08Ajo6O9O/f37J60+nTpxkzZgwpKSnEx8cD9zdK1dA+nTt3thk5quvHn2pC9c2bN7UqlIiIiDwQTfaBvKCgIGpra0lISKh3e92rLUC973l3794dgIqKirseo25J2tzcXL799ltLeXV1NWvXrrWpX3dTevDgQavyrKwsvvvuO6syR0dHAJs5H/v377d6P78pdO/enXbt2pGRkcHly5ct5SaTiTVr1mAwGCwraNU90b8zrjNnzpCTk2NV1tj+aawhQ4ZQW1vLqlWrrMr37dtHfn4+/v7+dx2BuF3dxObExESbkSOwvlYCAgJwdnZm2bJllrkkt6vrl7v9fitWrLAZ0anv+vP19aV58+ZWN911czYauibv1KJFi4d+4377NXW7zMxMKisr6dWr108ckYiIiPwSNNmIxbBhwwgODmbjxo2cOnWK5557Dg8PD8rKyjh27BgXL14kPT0dgEmTJuHm5kbfvn1p27Yt165dIyMjA4PB8KOr6bz99ttMmDCB8ePHM2LECMtyqvXdoPr6+jJgwAC2bNmC2Wyma9euFBQUkJOTQ8eOHa0m7j711FN4enqycOFCSkpKePTRRykoKGDHjh34+flx5syZpuoqHB0dmTFjBtOnT+fNN98kJCSEli1bsnv3bo4fP054eLglKerUqROdO3cmNTWV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di2TJ08mJCQEZ2dnDhw4wJkzZ2xGUeLi4igrK2PgwIF4e3tz8+ZNdu/ezfXr1wkKCrLU6927Nxs3bmTevHkMGjQIJycnevXqZTUicqfevXuTnp5OUlISnTp1wmAw4O/vb7NaVWNcv36dqKgoiouLGTVqFN9++61V4gi3Rjw8PT0tf2/fvp2SkhLgViJVXV3N8uXLAfD29rY6TxEREZGm0KSftY6NjaV///5s3bqVVatWUV1djaenJ927d7e66QwNDWX37t1s2bKFiooK3N3d6datGzNmzLD5kN2d+vTpQ2JiIgkJCaxevRpXV1fLB+DCwsJs6s+dO5c///nPZGVlsWPHDvr27UtycjJ/+tOfLDdecOuVlISEBBYtWsSGDRuoqamhe/fuxMfHk56e3qSJBdxaBnXx4sWkpKSwZs0aqqur8fX1ZebMmVYfyHN0dCQ+Pp6FCxeSmZmJ0WikS5cuzJ49m4KCApvEorH90xhOTk4kJCRYPpCXnZ2Nm5sbAQEBREdH065du3tuKzIykh49erB+/XrWrVuH0WikTZs2dOnShWnTplnVDQ0NpUOHDqSmprJ+/Xqqq6vx8vLimWeesXwX46mnnmL+/PksX76c5ORkmjVrxoABA1i6dCkRERFW7QUGBpKRkcH27du5evUqLi4udO7cmffee4+AgABLvRdffJH8/Hx27drF3/72N2pra4mNjW0wsYiOjqaiooK0tDSuXbuG2Wzmo48+siuxqKiosEzM37BhQ711kpOTrRKL9PR0ywf+bq8D0K9fPyUWIiIi0uQM5sas9yoivziG93+6JXlFREQAzNOa9Nm3/ESabI6FiIiIiIj8cimxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERu2mRYBFp0JJWKwgPD8fZ2flhhyIiIiI/YxqxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuymxEBERERERuxnMZrP5YQchIj9fhvdNDzsEERH5BTBPc3rYIYidNGIhIiIiIiJ2U2IhIiIiIiJ2U2IhIiIiIiJ2U2IhIiIiIiJ2U2IhIiIiIiJ2U2IhIiIiIiJ2U2IhIiIi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v30k63bZ2dmEhYVRVFTEggULaNWqlcX2X3/9lf/7v//jueeew93d3ZyY5ebmAreS0HPnzuHm5lbhCJCIiIjIg6q2x5lNmzYlMzOTjh073tdyok888QS9evWiV69ewK33xcePH8/f//73u37Aq3xlnbNnz1ptO336tFVZ+ZP1q1evWm3Lzs62eJq7d+9eLl26xJQpU+jXr59F3aioqHueT1U0btwYqDjm8rLyOidOnCAjI4OQkBCrD7Vt3LjR4u+q9k9VNW7cmO+++45r165Z3ZSePn0aJycn8wTpyjRt2pRvv/2Whg0b0rx580rrlo94ZGRkWLzedafk5GRKS0uZP3++ue8AioqKrEaf4NYSrt26dTOv3nTixAmGDh1KTEwM8+bNAx5slKqyfVq0aGE1clTejz179rxn29nZ2YwePZrCwkIWLFhA27ZtrercvHmTK1eusHPnTnbu3Gm1fevWrWzdupV33nmHYcOG3fOYIiIiIver2j6Q5+/vT1lZGRERERVuL3+1BSA/P99qe/lNUkFBwV2PUb4kbVpaGj///LO5vKSkhBUrVljVL78p3bt3r0V5cnIyly5dsiizt7cHsJrzsXv3bov386tD27ZtadiwIYmJieTl5ZnLjUYjy5cvx2AwmFfQKn+if2dcJ0+eJDU11aKsqv1TVb1796asrIylS5dalO/atYv09HR8fHzuOgJxu/KJzZGRkVYjR2B5rfj6+uLo6MjixYvNc0luV94vd/v9YmNjrUZ0Krr+vL29qVmzpkUSWj5no7Jr8k61atWqMJG1VU5ODmFhYVy7do2IiAj++Mc/3vX4s2bNsvr3wQcfAPDss88ya9YsfHx8qj1GERER+X2rthGLPn36EBAQwJo1azh+/DjPP/88bm5u5ObmcujQIc6fP09CQgIA48aNw8XFhS5dutCgQQOuXbtGYmIiBoPhnqvpvPvuu4wePZpRo0YxcOBA83KqFd2gent706NHD9avX4/JZKJ169ZkZGSQmppK06ZNLSbudu7cGXd3d+bOnUtOTg7169cnIyODLVu20KpVK06ePFldXYW9vT2TJk3i/fffZ8SIEfTv35/atWuzfft2Dh8+THBwsDkpat68OS1atCAuLo7i4mK8vLzIzMxk/fr1tGrVimPHjj1w/1RVQEAASUlJLFu2jOzsbLp27cq5c+dYu3Yt7u7uFis8VaZ9+/aEhoayaNEihgwZQp8+ffDw8CAvL49jx46xa9cudu/eDUCDBg2YMGECH3/8MUFBQfj7++Pp6Ulubi5paWlMmTKFNm3a0Lt3b1asWME777xD//79cXR0ZM+ePZw8edJqFGXmzJnk5ubSs2dPPD09uXnzJtu3b+f69ev4+/ub63Xs2JE1a9Ywa9YsevXqhYODAx06dLAYEblTx44dSUhIICoqiubNm2MwGPDx8bFaraoqrl+/TlhYGNnZ2QwePJiff/7ZInGEWyMe7u7uODg4VPgdkPJ5PY0bN65wu4iIiIitqnVm59SpU+nWrRsbNmxg6dKllJSU4O7uTtu2bS1uOgMDA9m+fTvr16+noKAAV1dX2rRpw6RJk6w+ZHenTp06ERkZSUREBMuWLcPZ2dn8AbigoCCr+jNmzOBvf/sbycnJbNmyhS5duhAdHc1HH31ETk6OuZ6LiwsRERHMnz+f1atXU1paStu2bZk3bx4JCQnVmljArWVQFyxYQExMDMuXL6ekpARvb28mT55s8YE8e3t75s2bx9y5c0lKSqKoqIiWLVsybdo0MjIyrBKLqvZPVTg4OBAREWH+QF5KSgouLi74+voyduxYGjZseN9thYaG0q5dO1atWsXKlSspKiqiXr16tGzZkokTJ1rUDQwMpEmTJsTFxbFq1SpKSkrw8PCge/fu5u9idO7cmdmzZ/P5558THR1NjRo16NGjB4sWLSIkJMSiPT8/PxITE9m8eTNXrlzBycmJFi1a8PHHH+Pr62uu17dvX9LT09m2bRtff/01ZWVlTJ06tdLEYuzYsRQUFBAfH8+1a9cwmUxs2rTJpsSioKDAPDF/9erVFdaJjo7G3d39gY8hIiIiYiuDqSrrvYrI747hk99uSV4REfn9ME3UyoX/bqptjoWIiIiIiPx+KbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbKbEQERERERGbaQFhEanUwjqxBAcH4+jo+KhDERERkceYRixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmBpPJZHrUQYjI48vwifFRhyAiIo+IaaLDow5B/oVoxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGymxEJERERERGz2WCcW06ZNo1u3bvdVNzs7m27durFw4cKHHNUtVYktNDSUgICAhxxR5araP+np6YwZM4YXX3zxN+1XEREREfnXpK+eiBWj0cikSZMwGo2EhYXh4uLCk08++ajD+s2lpqaSnp7O6NGj73ufFStW4OLiUu2J5JEjR9i6dSvHjh3jxIkTFBUVMXXq1Lse5/z580RHR7N3716uXbtGgwYNePXVV/nzn/9MjRo1qjU2EREREXjMRywmT57Mrl27HnUYvztZWVlkZWXx5ptvMnjwYPz8/H63icXixYurtM/KlStJTEys9lh27dpFfHw8hYWF9/wtzp49y7Bhw9ixYwcBAQFMnDiRzp078/nnnzNx4kRMJlO1xyciIiJi84hFaWkpJSUl1KxZszriseDg4ICDgwZVfmu//PILAK6urtXarslkoqioiNq1a1dru//KQkNDAVi0aFGl9QIDAxk+fDi1atXiq6++4tChQ3et+9lnn1FYWMjnn3/OU089BcCAAQPw8vIiMjKSrVu34ufnV30nISIiIkIVE4vExESmT59OZGQkhw8fJjExkQsXLjB58mQCAgIwmUysW7eOjRs3cubMGezs7GjXrh0hISFW8xGSkpJYs2YNmZmZGI1G3N3d6dixIxMmTKBu3brArXkMSUlJ7N+/32LfH374gfnz55Oeno6TkxO+vr4MGDDgrvFGR0dbHT80NJScnByLp8u7d+8mISGBn376iby8PBwdHWnfvj0jR47k6aefrkpX3ZcDBw7w+eefc/ToUYxGI97e3gwcOJDXX3/dot6RI0dYu3Ythw4d4uLFi9jb29OqVSuGDRvGiy++aNXu/fZPRUJDQzlw4AAA06dPZ/r06QBs2rSJRo0aUVRURExMDNu3byc3N5c6derQs2dPxowZg6enp7md/fv3ExYWxtSpUykqKiI+Pp7z58/z5z//2fxq0bZt21i9ejUnTpygtLTUfE59+vSximv//v0sX76cI0eOUFRUhIeHB08//TRvv/02bm5uAMTHx5Oamsrp06e5cuUKrq6u9OjRgzFjxtCoUSOL9nbu3ElcXBynTp2iuLgYNzc32rVrR3h4OF5eXhb9cPu1U9nrR+X1cnJyLPYp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efKk1SjKzJkzyc3NpWfPnnh6enLz5k22b9/O9evX8ff3N9fr2LEja9asYdasWfTq1QsHBwc6dOhgMSJyp44dO5KQkEBUVBTNmzfHYDDg4+NjtVpVVeXk5LB582bgn6NPO3bs4OLFiwDmfgE4deoU06dPp1evXtSvX5/Lly+TlJREVlYWU6ZMqXAOjoiIiIitqvWz1lOnTqVbt25s2LCBpUuXUlJSgru7O23btrW46QwMDGT79u2sX7+egoICXF1dadOmDZMmTbL6kN2dOnXqRGRkJBERESxbtgxnZ2fzB+CCgoKs6s+YMYO//e1vJCcns2XLFrp06UJ0dDQfffQROTk55nouLi5EREQwf/58Vq9eTWlpKW3btmXevHkkJCRUa2IBt5ZBXbBgATExMSxfvpySkhK8vb2ZPHmyxQfy7O3tmTdvHnPnziUpKYmioiJatmzJtGnTyMjIsEosqto/VeHg4EBERIT5A3kpKSm4uLjg6+vL2LFjadiw4X23FRoaSrt27Vi1ahUrV66kqKiIevXq0bJlSyZOnGhRNzAwkCZNmhAXF8eqVasoKSnBw8OD7t27m7+L0blzZ2bPns3nn39OdHQ0NWrUoEePHixatIiQkBCL9vz8/EhMTGTz5s1cuXIFJycnWrRowccff4yvr6+5Xt++fUlPT2fbtm18/fXXlJWVMXXq1EoTi7Fjx1JQUEB8fDzXrl3DZDKxadMmmxOLrKwsoqOjLcpSUlJISUkxn395YuHm5kb9+vXZuHEjly9fxtnZmS5dujBjxgw6dOhgUxwiIiIid2MwVWW9VxH53TF88tstySsiIo8X08RqfQYt/+aqbY6FiIiIiIj8fimxEBERERERmymxEBERERERmymxEBERERERmymxEBERERERmymxEBERERERm2kNMRGp1MI6sQQHB+Po6PioQxEREZHHmEYsRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZkosRERERETEZgaTyWR61EGIyOPL8InxUYcgIiIPkWmiw6MOQf5NaMRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERspsRCRERERERs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8va/qNTUVOrWrUv//v0tyt944w3q1q1LSkrKfbXj6OhoTiqMRiNXr14lPz+fHj16ALdWF3oQycnJ1KlTh7feestqm53dPy+7mjVrmpOKkpISCgoKyM/P509/+hNlZWX89NNPVvsHBgZavFrk7OzMgAEDuHr1Kt9//725/Pak4saNG+Tn52Nvb0+HDh04evSoeVt6ejqnT58mICCgwonOt8dbFfb29vTr14+ffvqJkydPmsu/+uorrl+/zn/+538+ULsiIiIijyONWPyLys7O5o9//KPFSANgnsdw/Pjx+24rPj6edevWcfr0aaun89euXXug+DIzM2nTpg01atSotJ7RaGTp0qVs2bKFc+fOYTKZLLZfvXrVah9vb2+rsvLXhLKyssxl58+fJzIykt27d1udx+0jJOfOnQOgTZs2lZ/UA/jP//xPYmNjSUhIYMKECQBs2rSJevXq8cILLzxwu6WlpVy5csWirGbNmlZzOURERER+K0osfue++OIL5s6dyzPPPENQUBB/+MMfcHR05NKlS0ybNq3S14Cqw//93/+xevVqXnrpJUaOHEndunVxcHDg+PHjfPbZZ1aJxv26ceMGISEhFBUV8eabb9KqVSucnJwwGAwsXbqUffv2VfOZVKxhw4b86U9/YsuWLbz99tvk5ORw4MABhg0bZpUUVsXFixet5mfcz6RuERERkYdFicVj7Pan6ndq3LgxP//8M0aj0eIG1Wg0kpmZSePGje+rnS1bttCoUSPmz59v8crPt99+a1PsXl5enD17ll9//ZUnnnii0uN37dqVjz76yKK8fBShImfPnrUqO3PmDID5vPfu3culS5eYMmWK1Q14VFSUxd/NmjUDbn0z4kFU1r8A/fv3Z+fOnaSmppKeng5w369B3a1td3d3IiMjLco8PDzuq00RERGRh0FzLB5j5XMEKnod6IUXXuDKlSts3LjRonzjxo1cuXKFF1988b7asbe3x2AwWIwMlL+eZItXXnmFq1evEhMTY7Xt9mPZ2dlZjUoUFRVV+iXrtWvXUlhYaP67sLCQdevW4eLiYl5GtnyZ2jvb3r17t9W8kdatW9OiRQs2bdrEqVOnKo23IrVr1+bq1at3rderVy88PDxYv349SUlJPPXUUxW+zlWRu/12NWrUoGfPnhb/WrRocV9tioiIiDwMGrF4jLVv3x47OztiY2O5evUqtWrVonHjxnTo0IERI0bw9ddfM3v2bNLT02nTpg3p6ekkJCTg5eXF8OHD76sdX19fIiIiePvtt3nxxRe5fv06X375pU2v6QC8+eabfPPNN8TExPDTTz/Rs2dPatSowenTp/n5559ZsGABAL6+vqxfv57//u//pkePHvzyyy8kJibi6up617bd3NwYMWKEeWnZxMRELly4wOTJk80rQnXu3Bl3d3fmzp1LTk4O9evXJyMjgy1bttCqVSuLydQGg4GpU6cyduxYRowYYV5u9tq1axw4cIA//elPBAUF3TWeDh068M033zB79mw6deqEnZ0d3bt3p169esA/J3GXJ1l3rpJVmcp+u8rk5OSwefNmAE6fPg3Ajh07uHjxIgD+/v54enredxwiIiIi96LE4jHWsGFDpkyZwrJly5g1axZGo5HXXnuNDh064OzsTExMjPkDeZs2bcLd3Z0BAwYwevRonJyc7qudYcOGYTKZSEhI4NNPP8Xd3Z2XXnqJfv36WSxjW1WOjo5ERETwxRdf8OWXX7JgwQKeeOIJmjVrZvGtiffeew8nJye2b99OWloaDRo0oH///rRr146xY8dW2PZ//dd/8cMPPxAfH8/ly5dp1qwZM2fO5JVXXjHXcXFxISIigvnz57N69WpKS0tp27Yt8+bNIyEhwSKxgFs38MuWLSMmJoavvvqKdevW4ebmRvv27encuXOl5/r//D//D1lZWXz99desW7eOsrIyoqOjzYkFwOuvv86SJUuoVasWffr0ue9+rOy3q0xWVhbR0dEWZSkpKebVwjp37qzEQkRERKqVwfSgs2NFfmPlX96Ojo7+l/umQ15eHv7+/vTr16/Cj/49zgyfGB91CCIi8hCYJur5slQvzbEQ+Q2sXbuW0tJS3njjjUcdioiIiMhDoVRV5CH68ssvuXDhAsuXL+dPf/oTf/zjHx91SCIiIiIPhRILkYfof/7nf6hRowadO3fmf//3fx91OCIiIiIPjeZYiEilNMdCROTfk+ZYSHXTHAsREREREbGZEgsREREREbGZxsBEpFIL68QSHByMo6Pjow5FREREHmMasRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZsp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ASQlJbFs2TKys7Pp2rUr586dY+3atbi7u1us8FSZ9u3bExoayqJFixgyZAh9+vTBw8ODvLw8jh07xq5du9i9ezcADRo0YMKECXz88ccEBQXh7++Pp6cnubm5pKWlMWXKFNq0aUPv3r1ZsWIF77zzDv3798fR0ZE9e/Zw8uRJq1GUmTNnkpubS8+ePfH09OTmzZts376d69ev4+/vb67XsWNH1qxZw6xZs+jVqxcODg506NDBYkTkTh07diQhIYGoqCiaN2+OwWDAx8fHarWqqrh+/TphYWFkZ2czePBgfv75Z4vEEW6NeJQvI7tmzRoWLlxIw4YN6dGjB8nJyRZ169WrxzPPPPPA8YiIiIhUpFo/az116lS6devGhg0bWLp0KSUlJbi7u9O2bVuLm87AwEC2b9/O+vXrKSgowNXVlTZt2jBp0iSrD9ndqVOnTkRGRhIREcGyZctwdnY2fwAuKCjIqv6MGTP429/+RnJyMlu2bKFLly5ER0fz0UcfkZOTY67n4uJCREQE8+fPZ/Xq1ZSWltK2bVvmzZtHQkJCtSYWcGsZ1AULFhATE8Py5cspKSnB29ubyZMnW3wgz97ennnz5jF37lySkpIoKiqiZcuWTJs2jYyMDKvEoqr9UxUODg5ERESYP5CXkpKCi4sLvr6+jB07loYNG953W6GhobRr145Vq1axcuVKioqKqFevHi1btmTixIkWdQMDA2nSpAlxcXGsWrWKkpISPDw86N69u/m7GJ07d2b27Nl8/vnnREdHU6NGDXr06MGiRYsICQmxaM/Pz4/ExEQ2b97MlStXcHJyokWLFnz88cf4+vqa6/Xt25f09HS2bdvG119/TVlZGVOnTq00sRg7diwFBQXEx8dz7do1TCYTmzZtsimxKCgoME/MX716dYV1oqOjzYnFTz/9BNxa6reiCeBdu3ZVYiEiIiLVzmCqynqvIvK7Y/jkt1uSV0REqodpYrU+Oxa5L3rxWkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKbEQkREREREbKZFjkWkUgvrxBIcHIyjo+OjDkVEREQeYxqxEBERERERmymxEBERERERmymxEBERERERmymxEBERERERmymxEBERERERmymxEBERERERmymxEBERERERmymxEBERERERmymx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IiIiIiI2U2IhIiIiIiI2U2IhIiIiIiI2U2IhIiIiIiI2U2IhIiIiIiI2U2IhIiIiIiI2U2IhIiIiIiI2U2IhIiIiIiI2U2IhIiIiIiI2M5hMJtOjDkJEHl+GT4yPOgQREfn/M010eNQhiNyVRixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRmSixERERERMRm/1aJxbRp0+jWrdt91c3OzqZbt24sXLjwIUd1S1ViCw0NJSAg4CFHVLmq9k96ejpjxozhxRdf/E37VUREREQeD1oMWWxmNBqZNGkSRqORsLAwXFxcePLJJx91WL+51NRU0tPTGT169H3vs2LFClxcXKo9kTxy5Ahbt27l2LFjnDhxgqKiIqZOnfrIE1YRERH59/VvNWIxefJkdu3a9ajD+N3JysoiKyuLN998k8GDB+Pn5/e7TSwWL15cpX1WrlxJYmJitceya9cu4uPjKSws/F3+FiIiIvLb+81HLEpLSykpKaFmzZrV3raDgwMODhqE+a398ssvALi6ulZruyaTiaKiImrXrl2t7f4rCw0NBWDRokWV1gsMDGT48OHUqlWLr776ikOHDv0W4YmIiMjv2EO9C09MTGT69OlERkZy+PBhEhMTuXDhApMnTyYgIACTycS6devYuHEjZ86cwc7Ojnbt2hESEmI1HyEpKYk1a9aQmZmJ0WjE3d2djh07MmHCBOrWrQvcmseQlJTE/v37Lfb94YcfmD9/Punp6Tg5OeHr68uAAQPuGm90dLTV8UNDQ8nJybF4urx7924SEhL46aefyMvLw9HRkfbt2zNy5Eiefvrp6upGswMHDvD5559z9OhRjEYj3t7eDBw4kNdff92i3pEjR1i7di2HDh3i4sWL2Nvb06pVK4YNG8aLL75o1e799k9FQkNDOXDgAADTp09n+vTpAGzatIlGjRpRVFRETEwM27dvJzc3lzp16tCzZ0/GjBmDp6enuZ39+/cTFhbG1KlTKSoqIj4+nvPnz/PnP//Z/GrRtm3bWL16NSdOnKC0tNR8Tn369LGKa//+/SxfvpwjR45QVFSEh4cHTz/9NG+//TZubm4AxMfHk5qayunTp7ly5Qqurq706NGDMWPG0KhRI4v2du7cSVxcHKdOnaK4uBg3NzfatWtHeHg4Xl5eFv1w+7VT2etH5fVycnIs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sWPHVmlCeGhoKO3atWPVqlWsXLmSoqIi6tWrR8uWLZk4caJF3cDAQJo0aUJcXByrVq2ipKQEDw8Punfvbv4uRufOnZk9ezaff/450dHR1KhRgx49erBo0SJCQkIs2vPz8yMxMZHNmzdz5coVnJycaNGiBR9//DG+vr7men379iU9PZ1t27bx9ddfU1ZWxtSpUytNLMaOHUtBQQHx8fFcu3YNk8nEpk2bbE4ssrKyiI6OtihLSUkhJSXFfP63f6Bw3LhxeHp6Eh8fz/z586lRowbdunUjLCysyvNXRERERO6HwXTnuyPyQMq/vB0dHW3x1WWRf3WGT367JXlFROTuTBP1PFgeb5pjISIiIiIiNlNiISIiIiIiNlNiISIiIiIiNtMcCxGplOZYiIg8HjTHQh53GrEQERERERGbKbEQERERERGbaUxNRCq1sE4swcHBODo6PupQRERE5DGmEQsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZEgsREREREbGZwWQymR51ECLy+DJ8YnzUIYiIPDSmiQ6POgSRfxsasRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZspsRAREREREZs91onFtGnT6Nat233Vzc7Oplu3bixcuPAhR3VLVWILDQ0lICDgIUdUuar2T3p6OmPGjOHFF1/8TftVRERERP41afFmsWI0Gpk0aRJGo5GwsDBcXFx48sknH3VYv7nU1FTS09MZPXr0fe+zYsUKXFxcqj2RPHLkCFu3buXYsWOcOHGCoqIipk6dWuFxjh8/TnJyMvv27SM7OxuApk2bEhAQQP/+/XFw0P/2IiIiUv0e6xGLyZMns2vXrkcdxu9OVlYWWVlZvPnmmwwePBg/P7/fbWKxePHiKu2zcuVKEhMTqz2WXbt2ER8fT2Fh4T1/i2XLlpGYmEjbtm0ZN24cYWFhuLq68vHHHzN+/Hj0TUwRERF5GGx+dFlaWkpJSQk1a9asjngsODg46OnqI/DLL78A4OrqWq3tmkwmioqKqF27drW2+68sNDQUgEWLFlVaLzAwkOHDh1OrVi2++uorDh06dNe6gwcPZtq0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WrVKXJa3tzeaNGmC0NBQbNu2DTk5OahWrRpsbGwwadIkSV5PT0/UqVMHISEhCA0NRV5eHszMzNCmTRvxvRgtW7bEggULsHbtWqxcuRL6+vpo27YtVq9ejdGjR0vKc3NzQ0REBPbv34+nT5/C0NAQ9evXx/z58+Hi4iLm69GjB27cuIGDBw/ijz/+gFKpxIwZM4oNLPz8/JCRkYGwsDBkZmZCEATs27dP48Di/v37WLlypSQtJiYGMTEx4vGrAot//vkHwKvhY9OnT1crq3fv3gwsiIiIqNzJhNKs90pEHx3Zwne3JC8R0bsmTCrXZ6xEH7Vym2NBREREREQfLwYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMS7eTETFWlUlGF5eXtDV1a3oqhAREdF7jD0WRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMQYWRERERESkMZkgCEJFV4KI3l+yhYqKrgIRUbkRJulUdBWIPljssSAiIiIiIo0xsCAiIiIiIo0xsCAiIiIiIo0xsCAiIiIiIo0xsCAiIiIiIo0xsCAiIiIiIo0xsCAiIiIiIo19UIHFzJkz4ejoWKK8ycnJcHR0xKpVq95yrV4pTd28vb3Rp0+ft1yj4pW2fW7cuAFfX1906dLlnbYrEREREb0f+JYY0phCocCUKVOgUCjg4+MDuVyOBg0aVHS13rkjR47gxo0bGDNmTIm32bp1K+RyebkGkoIgICoqCn/99ReuXbuGhw8fwsTEBHZ2dhg1ahSaNWtWbvsiIiIiUvmgeiymTZuG48ePV3Q1Pjr379/H/fv38cUXX2DQoEFwc3P7aAOLNWvWlGqbbdu2ISIiolzr8fLlS0yfPh137txB9+7dMXnyZHh4eODGjRvw8vLCgQMHynV/REREREAF9Fjk5+cjLy8PBgYG5V62jo4OdHTYCfOuPX78GABgbGxcruUKgoCcnBxUrly5XMv9X+bt7Q0AWL16dZF5tLW1sWrVKrRu3VqS7uHhgYEDB2LJkiXo2bMntLQ+qOcKREREVMHe6l14REQEZs2ahaCgIFy+fBkRERFITU3FtGnT0KdP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aJ6VK1cysCAiIqJyJRNKs34rEX10ZAvf3RK7RERvmzCpQp+pEn3QKmyOBRERERERfTgYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkca45hoRFWtVlWB4eXlBV1e3oqtCRERE7zH2WBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcYYWBARERERkcZkgiAIFV0JInp/yRYqKroKREQaEybpVHQViD547LEgIiIiIiKNMbAgIiIiIiKNMbAgIiIiIiKNMbAgIiIiIiKNMbAgIiIiIiKNMbAgIiIiIiKNMbB4D505cwaOjo6IiIiosDrcuHEDvr6+6NKlCxwdHbFq1aoKqwsRERERvf+4qDOpUSgUmDJlChQKBXx8fCCXy9GgQYOKrtY7d+TIEdy4cQNjxowp8TZbt26FXC5Hnz59yq0egiAgKioKf/31F65du4aHDx/CxMQEdnZ2GDVqFJo1a6a2jVKpxLZt27B7926kpKSgatWqcHV1hY+PDypVqlRudSMiIiJS4Qvy3kNKpRJ5eXnQ0dGBtrb2O9//nTt30L9/f4wfPx5Dhw595/t/X8ycORORkZE4c+ZMibfp06cPzM3NsXr16nKrR25uLjp06AA7Ozt07NgRFhYWePToEXbv3o2HDx9i1qxZcHNzk2yzcOFChIaGokuXLmjfvj0SEhKwfft2ODg4YPny5dDSKnlnJV+QR0QfAr4gj+jt42/ZeyQ7OxuGhobQ0tKCvr5+hdXj8ePHAABjY+NyLVcQBOTk5KBy5crlWu7/Mm9vbwAoNhDR1tbGqlWr0Lp1a0m6h4cHBg4ciCVLlqBnz55isHD79m1s374dXbp0wa+//irmt7CwwMKFC3Hw4EH07NnzLRwNERERfcwYWJSTiIgIzJo1C0FBQbhw4QIiIiLw+PFjWFpawsvLCz169JDkVz3Z/u677xAYGIjLly/D2NgY+/btw5kzZ+Dj44MZM2ZIhtQIgoC9e/di7969iI+PB/DqZrFLly7w8fER8718+RKbN29GdHQ07t27Bz09PTg4OGDMmDFo1KhRscfh7e2Nc+fOAQBmzZqFWbNmAQD27dsH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z549QqtWrYTKlSsLpqamwqBBg4Q7d+4UmlehUAgzZ84U6tatK+jp6Qn29vbC9u3bhYkTJwoAhAcPHryxfoKgfn0Xdb2eOnVKaN++vVC5cmUBgOS6zczMFEaNGiVUq1ZNqFSpktCxY0fh+PHjRe5X9v93TERUKj4+Pjh48CBu3LgheVo5YsQIHDlyRPJmUHq/bdiwAV5eXkhISJC8OTcgIAA//vijuLpPSRV1bXwMFi1ahEmTJuHEiRNo165dRVenRFTLVhZ8qzdRRTly5Ai6dOmC9evXl+gN7B+TPn364M8//8SzZ8/eyuIM5YFzLIioTGbPno3Hjx9j/fr1FV0VegtycnIwb948TJ48uVRBBfBxXBsvX75Um7+SlZWFoKAgmJqaSt5hQkRUGoXNSbx06RKioqLQtWvX9zaoALgqFBGVUY0aNcSX/NCHp1KlSkhJSSnTth/DtREfH49evXph8ODBsLa2RkpKCjZu3IiEhASsWLFC7Z0QREQltXHjRoSEhMDd3R1mZma4fv06Vq9eDT09PcyePbuiq1csBhZERESlZGZmhnbt2mHLli1IS0uDjo4O7O3tMW/ePAwcOLCiq0dE/8NatWqFPXv2YOnSpXjy5Ankcjm6du2KGTNmiCuHva84x4KIiIiIiDTGORZERERERKQxBhZERERERKQxBhZERERERKQxBhZERERERKQxBhZERERERKQxBhZERERERKQxBhZERERERKQxBhZERERERKQxBhZERERERKSx/wcNcAkGQMCtTwAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxcAAAOsCAYAAAA4LUuKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeVQVV773//dhiAMgKBcRJ3CIep0SjdE8iUG9mAmCN0RU4s9oow0iclvTDumbx0fU5nnamLRXDAgOOGDihBMBlWg6gNHEKZooRkGjBgUUjUJEwebA+f3h4rTHg0b0GO3O57WWa4Vdu3Z9a5/KWvWtXXuXwWQymRAREREREXlAdo86ABERERER+deg5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITSi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRO5q0aJFVFZWPuowRERE5J+AkgsREREREbEJJRciIiIiImITSi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbELJhYiIiIiI2ISSCxERERERsQklFyIiIiIiYhNKLkRERERExCaUXIiIiIiIiE0ouRAREREREZtQciEiIiIiIjah5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITBpPJZHrUQYjI48vwofFRhyAiIiK3ME12eNQh3JFGLkRERERExCaUXIiIiIiIiE0ouRAREREREZtQciEiIiIiIjah5EJERERERGxCyYWIiIiIiNiEkgsREREREbGJxzq5mDFjBr169bqnuoWFhfTq1YuFCxc+5Khuqkts4eHhBAYGPuSI7q6u/ZObm8u4ceMYMGDAr9qvIiIiIvLP6/H9Aoc8MkajkalTp2I0GomIiMDFxYUnn3zyUYf1q8vKyiI3N5exY8fe8z6rVq3CxcXFpsmkyWRi27ZtfPnllxw7doyLFy/i5uZGhw4dGDNmDF27drXap7q6mtWrV7Nx40aKiopo3LgxAwcOJCIiggYNGtgsNhEREZFbPdYjF9OmTWP37t2POozfnIKC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vptWrVrx1Vdf0axZM9q0aXPXujUjH3l5eRavet0uIyODqqoq5s+fb+47gPLycqtRKLi5vGuvXr3MqzqdOHGCESNGkJSURGxsLHB/o1V326dt27ZWI0g1/dinT59fbLuwsJCxY8dSVlbGggUL6NSpU631OnfuzJ49ezh69KjFPKEbN26Ql5dHz5497+VUREREROrMZh/RCwgIoLq6mri4uFq317zmAlBSUmK1veZGqbS09I7HqFmuNjs7mx9//NFcXllZyapVq6zq19yY7tu3z6I8IyODixcvWpTZ29sDWM0B2bNnj8X7+rbQqVMnmjVrRlpaGpcuXTKXG41GVq5cicFgMK+sVfNk//a4Tp48SVZWlkVZXfunrvr37091dTXLly+3KN+9eze5ubn4+vrecSTiVjWTnePj461GkMDyWvHz88PR0ZHFixeb55bcqqZf7vT7LV261Gpkp7brz8fHh/r161skojVzOO52Td6uQYMGtSazD6qoqIiIiAiuXr1KXFwc//7v/37Hui+//DIGg8HqN9+0aRMVFRVahlZEREQeGpuNXAwcOJDAwEDWrVvH8ePHefHFF3Fzc6O4uJjDhw9z7tw5UlNTARg/fjwuLi706NEDT09Prl69SlpaGgaD4RdX2XnnnXcYO3YsY8aMYciQIealVmu7SfXx8aF3795s3LgRk8lEhw4dyMvLIysri1atWllM5n366adxd3dn3rx5FBUV0bRpU/Ly8ti6dSvt27fn5MmTtuoq7O3tmTp1KlOmTGHUqFEEBQXRsGFDduzYwZEjRwgNDTUnRm3atKFt27YkJydTUVGBt7c3+fn5bNy4kfbt23Ps2LH77p+6CgwMJD09nRUrVlBYWEjPnj05e/Ys69evx93d3WLlp7vp0qUL4eHhLFq0iOHDhzNw4EA8PDy4dOkSx44dY/fu3ezZswcAT09PJk2axPvvv09ISAgBAQF4eXlRXFxMdnY206dPp2PHjvTv359Vq1YxYcIEgoKCcHR0ZO/evZw8edJqNCUmJobi4mL69OmDl5cXN27cYMeOHVy7do2AgABzvW7durFu3Tpmz55N3759cXBwoGvXrhYjI7fr1q0bqampJCQk0KZNGwwGA76+vlarWNXFtWvXiIiIoLCwkGHDhvHjjz9aJI9wc+TD3d0dgPbt2zNkyBDWrVvHlClTeOGFFzh9+jRr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1cfubte9e3fi4+OJi4tjxYoVODs7mz8SFxISYlV/1qxZfPDBB2RkZLB161Z69OhBYmIif/nLXygqKjLXc3FxIS4ujvnz57N27Vqqqqro1KkTsbGxpKam2jS5gJtLpC5YsICkpCRWrlxJZWUlPj4+TJs2zeIjevb29sTGxjJv3jzS09MpLy+nXbt2zJgxg7y8PKvkoq79UxcODg7ExcWZP6KXmZmJi4sLfn5+REZG0qxZs3tuKzw8nM6dO7NmzRpWr15NeXk5TZo0oV27dkyePNmibnBwMC1btiQ5OZk1a9ZQWVmJh4cHzz77rPm7GU8//TRz5sxhyZIlJCYmUq9ePXr37s2iRYsICwuzaM/f35+0tDS2bNnClStXcHJyom3btrz//vv4+fmZ673yyivk5uayfft2/va3v1FdXU10dPRdk4vIyEhKS0tJSUnh6tWrmEwmPv300wdOLgoKCkhMTLQoy8zMJDMz03z+t37EcPz48Xh5eZGSksL8+fOpV68evXr1IiIios7zWURERETulcFUl7VgReQ3x/Dhr7dcr4iIyG+JabJNn/M/Fmw250JERERERH7blFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxiX+9xXVFxKYWNlpKaGgojo6OjzoUERERecxp5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITSi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCYPJZDI96iBE5PFl+ND4qEMQERH5VZkmOzzqEP5paeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm3isk4sZM2bQq1eve6pbWFhIr169WLhw4UOO6qa6xBYeHk5gYOBDjuju6to/ubm5jBs3jgEDBvyq/SoiIiIi/7z0hRCxYjQamTp1KkajkYiICFxcXHjyyScfdVi/uqysLHJzcxk7duw977Nq1SpcXFxsnkzm5OSwbds2jh07xokTJygvLyc6OrrW4xQWFjJo0KBa22nbti3r1q2zaWwiIiIiNR7r5GLatGn893//96MO4zenoKCAgoICJk6c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unBwcCAuLs78Eb3MzExcXFzw8/MjMjKSZs2a3XNb4eHhdO7cmTVr1rB69WrKy8tp0qQJ7dq1Y/LkyRZ1g4ODadmyJcnJyaxZs4bKyko8PDx49tlnzd/NePrpp5kzZw5LliwhMTGRevXq0bt3bxYtWkRYWJhFe/7+/qSlpbFlyxauXLmCk5MTbdu25f3337e48X7llVfIzc1l+/bt/O1vf6O6upro6Oi7JheRkZGUlpaSkpLC1atXMZlMfPrppw+cXBQUFJCYmGhRlpmZSWZmpvn8a5KLF154ga1bt7Jp0yZKS0t54oknaNu2Le+++y6DBw++p9ElERERkfthMNVlLVgR+c0xfPjrLdcrIiLyODBNtunz998UPcIUERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE1pnS0TuamGjpYSGhuLo6PioQxEREZHHnEYuRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbELJhYiIiIiI2ISSCxERERERsQklFyIiIiIiYhNKLkRERERExCaUXIiIiIiIiE0ouRAREREREZtQciEiIiIiIjZhMJlMpkcdhIg8vgwfGh91CCIiIg+dabLDow7hX4JGLkRERERExCaUXIiIiIiIiE0ouRAREREREZtQciEiIiIiIjah5EJERERERGxCyYWIiIiIiNjEY51czJgxg169et1T3cLCQnr16sXChQsfclQ31SW28PBwAgMDH3JEd1fX/snNzWXcuHEMGDDgV+1XEREREfnnpQV9xYrRaGTq1KkYjUYiIiJwcXHhySeffNRh/eqysrLIzc1l7Nix97zPqlWrcHFxsXkymZOTw7Zt2zh27BgnTpygvLyc6OjoWo8zY8YM0tPT79hWq1at2LRpk03jExEREYHHPLmYNm0a//3f//2ow/jNKSgooKCggIkTJzJs2LBHHc4jk5WVRXp6ep2Si9WrV+Pl5WXz5GL37t2kpKTg4+PDk08+yeHDh+9Y980336R3795W5fv37yctLY0XX3zRprGJiIiI1Hjg5KKqqorKykrq169vi3gsODg44ODwWOc//5J++uknAFxdXW3arslkory8nIYNG9q03X9m4eHhACxatOiu9YKDgxk5ciQNGjTg888/v2ty0b17d7p3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/FoMprqsBSsivzmGD3+95XpFREQeFdNkmz5z/82y2ZwLERERERH5bVNyISIiIiIiNqHkQkREREREbELJhYiIiIiI2ISSCxERERERsQklFyIiIiIiYhNKLkRERERExCa0oK+I3NXCRksJDQ3F0dHxUYciIiIijzmNXIiIiIiIiE0ouRAREREREZtQciEiIiIiIjah5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITSi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2YTCZTKZHHYSIPL4MHxofdQgiIiK1Mk12eNQhyG00ciEiIiIiIjah5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITSi5ERERERMQmlFyIiIiIiIhNPNbJxYwZM+jVq9c91S0sLKRXr14sXLjwIUd1U11iCw8PJzAw8CFHdHd17Z/c3FzGjRvHgAEDftV+FREREZF/XvryiFgxGo1MnToVo9FIREQELi4uPPnkk486rF9dVlYWubm5jB079p73WbVqFS4uLjZNJk0mE9u2bePLL7/k2LFjXLx4ETc3Nzp06MCYMWPo2rWr1T7Lli3j+PHjHD9+nIKCAry8vEhLS7NZTCIiIiK1eaxHLqZNm8bu3bsfdRi/OQUFBRQUFPDWW28xbNgw/P39f7PJxeLFi+u0z+rVq21+E//3v/+d6dOn8+OPP/Lyyy8zZcoUgoKCyM3NJTQ0lK1bt1rtEx8fz4EDB2jRogWNGjWyaTwiIiIid/LAIxdVVVVUVlZSv359W8RjwcHBAQcHDa782n766ScAXF1dbdquyWSivLychg0b2rTdf2bh4eEALFq06I517O3tWbhwIc8884xFeVBQEEOHDmXevHm8+uqr2Nn941nB5s2badmyJQBDhw6lvLz8IUQvIiIiYqlOd+5paWnMnDmT+Ph4jhw5QlpaGufPn2fatGkEBgZiMpnYsGEDmzdv5vTp09jZ2dG5c2fCwsKs5iekp6ezbt068vPzMRqNuLu7061bNyZNmkTjxo2Bm/Ma0tPTOXDggMW+3377LfPnzyc3NxcnJyf8/PwYPHjwHeNNTEy0On54eDhFRUUWT5n37NlDamoq33//PZcuXcLR0ZEuXbowevRoqxs7Wzh48CBLlizh6NGjGI1GfHx8GDJkCG+8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+vTBy8uLGzdusGPHDq5du0ZAQIC5Xrdu3Vi3bh2zZ8+mb9++ODg40LVrV4uRkdt169aN1NRUEhISaNOmDQaDAV9fX6tVrOqqqKiILVu2AP8Yhdq5cycXLlwAMPcLwIQJE3B1daV79+40a9aMsrIyvv32W7Kzs/H09DR/uE9ERETE1mz6+evo6Gh69erFpk2bWL58OZWVlbi7u9OpUyeLG8/g4GB27NjBxo0bKS0txdXVlY4dOzJ16lSrj93drnv37sTHxxMXF8eKFStwdnY2fyQuJCTEqv6sWbP44IMPyMjIYOvWrfTo0YPExET+8pe/UFRUZK7n4uJCXFwc8+fPZ+3atVRVVdGpUydiY2NJTU21aXIBN5dIXbBgAUlJSaxcuZLKykp8fHyYNm2axUf07O3tiY2NZd68eaSnp1NeXk67du2YMWMGeXl5VslFXfunLhwcHIiLizN/RC8zMxMXFxf8/PyIjIykWbNm99xWeHg4nTt3Zs2aNaxevZry8nKaNGlCu3btmDx5skXd4OBgWrZsSXJyMmvWrKGyshIPDw+effZZ83cznn76aebMmcOSJUtITEykXr169O7dm0WLFhEWFmbRnr+/P2lpaWzZsoUrV67g5ORE27Ztef/99/Hz8zPXe+WVV8jNzWX79u387W9/o7q6mujo6LsmF5GRkZSWlpKSksLVq1cxmUx8+umnD5xcFBQUkJiYaFGWmZlJZmam+fxrkougoCC++OILNm/eTElJCQ4ODrRs2ZJRo0YxYsSIe3p1TUREROR+GEx1WQtWRH5zDB/+esv1ioiI1MY02abPw+UhstmcCxERERER+W1TciEiIiIiIjah5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITWtdLRO5qYaOlhIaG4ujo+KhDERERkcecRi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNmEwmUymRx2EiDy+DB8aH3UIIiLyG2aa7PCoQ5A60MiFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByIfessLCQXr16sXDhwkcdyiMTHh5OYGDgow5DRERE5LGk5OIxlpuby8KFCyksLHws2pHapaWlsWrVqofS9v3+djk5OXzwwQeMHj2aF198kV69epGWlvZQYhQRERGpoeTiMZaXl8fixYsfOCmwVTsC8fHxbNiwwaIsLS2N1atXP5Tj3e9vt3v3blJSUigrK+PJJ598KLGJiIiI3E6fPBSpA0dHx0cdwj0JDg5m5MiRNGjQgM8//5zDhw8/6pBERETkN0DJxWNq4cKFLF68GICIiAhz+euvv86MGTMAKCkpYeHChezcuZOffvoJd3d3fH19GTt2LG5ubvfUzrVr11ixYgV79+7l3LlzXL9+HU9PT/z8/AgLC6N+/fr3fQ6VlZWsWrWKzz77jB9//BEHBwdat27N66+/zrBhwwC4ePEiH3/8Mfv376eoqIgbN27QokULAgICePvtt7G3tze3l5aWxsyZM4mPj+fbb78lLS2Nn376CW9vb0JDQ3nllVcsjr9nzx5SU1P5/vvvuXTpEo6OjnTp0oXRo0fzzDPPWMV79uxZli5dyt69e7l8+TJubm507tyZsLAw/v3f/x24OeeiqKjI/IpRYGAgRUVFAPTq1cvcVmJiIqtWrWLv3r189tlnODs7Wxzr6NGjjBo1irFjxxIWFlZr/93LNXAn7u7ud90uIiIi8jAouXhM/cd//AeXLl1i06ZNhIaG0qZNGwBatmwJQFlZGaNHj+bs2bMMGjSITp06kZuby/r169m/fz8rVqzAycnpF9u5ePEiqamp/Md//Aevvvoq9vb2HDx4kOTkZHJzc4mLi7uv+CsrK4mKiuKbb77hueee47XXXuOJJ57g5MmTZGZmmpOLEydOkJmZSf/+/WnZsiVGo5Gvv/6auLg4CgoK+N//+39btf3RRx9RXl5OcHAwcDPp+N//+3/z97//3WKydVpaGqWlpfj7++Pp6UlxcTGpqalERkaSmJhIjx49zHW///57xo0bh9Fo5D//8z9p164dP//8MwcPHuS7774zJxe3mzRpEnFxcZSUlPDHP/7RXN6mTRuCgoLYuXMnn332GYMHD7bYLzU1FTs7OwYNGnTHPvyl305ERETkcaPk4jH15JNP0r17dzZt2kSfPn0snooDrFixgvz8fN59912GDBliLu/QoQNz5swhOTmZcePG/WI7LVq0YMuWLTg4/ONSGDp0KAkJCSQlJZGTk0PXrl3rHP+qVav45ptvCA0NZfz48Rbbqqurzf/ds2dPUlNTMRgM5rLhw4fzf/7P/yE1NZWxY8fyb//2bxb7l5SUsGbNGvNoQHBwMCEhIfzP//wPL730knm0Zdq0aTRo0MBi38GDBzN06FCWLVtmTi5MJhMzZsygsrKSFStWWMxRCA0NtYj3dv3792fVqlXcuHEDf39/i23PP/88np6epKamWiQXFRUVfPbZZzz33HN4enrese1f+u1EREREHjea0P1PKisri8aNGxMUFGRR/uabb9K4ceP/n71/D6uq2vv//+fikAdAUELFE3hI3Z5SM22Xkd5YFkR3JCr5VQsNRGWX5WHvu48fUTffb+YubzEQPOAB255QE0ElrQ2Ytj2l5SEFj6GAoCkkCsaC9fvDH2u7Wkiiy3TvXo/r8rpizDHHfM+xZtc133PMMSbp6el31I6jo6M5sTAajfz0008UFRXRu3dv4OaqQ3cjLS2NBg0a8NZbb1lts7P712VXt25dc2JRXl5OcXExRUVF/PGPf6SyspLvv//eav+goCCL14ycnZ0ZNGgQP/30E9988425/NbE4vr16xQVFWFvb0+XLl04evSoeVtWVhanT58mICCg2snPt8ZbG/b29rzyyit8//33nDx50lz+xRdfcO3aNf77v//7rtoVEREReVhp5OLfVF5eHn/4wx8sRhwA87yG48eP33FbSUlJrF+/ntOnT1s9pb969epdxZeTk0OHDh2oU6dOjfWMRiPLli1jy5YtnDt3DpPJZLH9p59+strH29vbqqzqlaHc3Fxz2fnz54mNjWX37t1W53HrSMm5c+cA6NChQ80ndRf++7//myVLlpCcnMzEiRMB2LRpE40aNeK5556763YrKiq4cuWKRVndunWt5naIiIiI/JaUXPzOffrpp8ydO5ennnqK4OBgHn30URwdHbl48SLTp0+v8ZUgW/jf//1f1qxZw/PPP8+oUaNo2LAhDg4OHD9+nE8++cQq2bhT169fJzQ0lNLSUl5//XXatWuHk5MTBoOBZcuWsW/fPhufSfWaNm3KH//4R7Zs2cLbb79Nfn4+Bw4cYMSIEVaJYW0UFBRYzde4k4neIiIiIveTkouH2K1P13+pefPm/PDDDxiNRoubVKPRSE5ODs2bN7+jdrZs2UKzZs2YN2+exes/X3/99T3F7uXlxdmzZ/n555955JFHajx+z549+eCDDyzKq0YTqnP27FmrsjNnzgCYz3vv3r1cvHiRadOmWd2Ex8XFWfzdqlUr4OY3Je5GTf0LEBgYyM6dO8nIyCArKwvgjl+Jul3b7u7uxMbGWpR5eHjcUZsiIiIi94vmXDzEquYMVPdq0HPPPceVK1fYuHGjRfnGjRu5cuUK/fv3v6N27O3tMRgMFiMEVa8q3YsXX3yRn376iYSEBKtttx7Lzs7OanSitLS0xi9er1u3jpKSEvPfJSUlrF+/HhcXF/MSs1VL2P6y7d27d1vNI2nfvj1t2rRh06ZNnDp1qsZ4q1O/fn1++umn29br27cvHh4ebNiwgdTUVB5//PFqX+2qzu1+uzp16tCnTx+Lf23atLmjNkVERETuF41cPMQ6d+6MnZ0dS5Ys4aeffqJevXo0b96cLl268MYbb/Dll18ye/ZssrKy6NChA1lZWSQnJ+Pl5cXIkSPvqB1fX19iYmJ4++236d+/P9euXePzzz+/p1d2AF5//XW++uorEhIS+P777+nTpw916tTh9OnT/PDDD8yfPx8AX19fNmzYwP/8z//Qu3dvfvzxR1JSUnB1db1t225ubrzxxhvmZWdTUlK4cOECU6dONa8U1b17d9zd3Zk7dy75+fk0btyY7OxstmzZQrt27SwmWBsMBiIjIxk3bhxvvPGGeSnaq1evcuDAAf74xz8SHBx823i6dOnCV199xezZs+nWrRt2dnY8+eSTNGrUCPjXxO6qROuXq2fVpKbfrib5+fls3rwZgNOnTwOwY8cOCgoKAPD398fT0/OO4xARERG5E0ouHmJNmzZl2rRpLF++nFmzZmE0Gnn55Zfp0qULzs7OJCQkmD+it2nTJtzd3Rk0aBBjxozBycnpjtoZMWIEJpOJ5ORkPv74Y9zd3Xn++ed55ZVXLJa4rS1HR0diYmL49NNP+fzzz5k/fz6PPPIIrVq1svgWxXvvvYeTkxPbt28nMzOTJk2aEBgYSKdOnRg3bly1bf/pT3/i22+/JSkpicuXL9OqVSuioqJ48cUXzXVcXFyIiYlh3rx5rFmzhoqKCjp27Eh0dDTJyckWyQXcvIlfvnw5CQkJfPHFF6xfvx43Nzc6d+5M9+7dazzX/+f/+X/Izc3lyy+/ZP369VRWVhIfH29OLgBeffVVli5dSr169RgwYMAd92NNv11NcnNziY+PtyhLT083ryLWvXt3JRciIiJicwbT3c6YFfmNVX2hOz4+/t/umw+XLl3C39+fV155pdoPAz7MDB8ZH3QIIiLyO2aapGfh/04050LkN7Bu3ToqKip47bXXHnQoIiIiIveNUkGR++jzzz/nwoULrFixgj/+8Y/84Q9/eNAhiYiIiNw3Si5E7qP/83/+D3Xq1KF79+783//7fx90OCIiIiL3leZciEiNNOdCREQeJM25+PeiORciIiIiImITSi5ERERERMQmlFyIiIiIiIhN6CU2EanRggZLCAkJwdHR8UGHIiIiIg85jVyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNmEwmUymBx2EiDy8DB8ZH3QIIiLyb8o0yeFBhyC/MY1ciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbELJhYiIiIiI2ISSCxERERERsQklFyIiIiIiYhMPdXIxffp0evXqdUd18/Ly6NWrFwsWLLjPUd1Um9jCwsIICAi4zxHVrLb9k5WVxdixY+nfv/9v2q8iIiIi8u9LXzYRK0ajkSlTpmA0GgkPD8fFxYXHHnvsQYf1m8vIyCArK4sxY8bc8T4rV67ExcXFpsmkyWRi69atfPXVVxw7doyLFy/i5uZG+/btGT16NF26dKlx/7KyMoYOHUpubi6DBw/mz3/+s81iExEREbnVQz1yMXXqVHbt2vWgw/jdyc3NJTc3l9dff52hQ4fi5+f3u00uFi1aVKt9Vq1aRUpKik3j+Pnnn5k2bRo//PADL7zwApMnTyYwMJCsrCxCQkLYsmVLjfvHx8dz5coVm8YkIiIiUp17HrmoqKigvLycunXr2iIeCw4ODjg4aHDlt/bjjz8C4OrqatN2TSYTpaWl1K9f36bt/jsLCwsDYOHChbetY29vz4IFC3jiiScsygMDAxkyZAhz587lxRdfxM7O+lnB8ePHWbVqFX/605+YO3euTWMXERER+aVa3bmnpKQwY8YMYmNjOXz4MCkpKVy4cIGpU6cSEBCAyWRi/fr1bNy4kTNnzmBnZ0enTp0IDQ21mp+QmprK2rVrycnJwWg04u7uTteu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IaGhoRbt+fn5kZKSwubNm7ly5QpOTk60adOGDz/8EF9fX3O9gQMHkpWVxbZt2/jyyy+prKwkMjKyxuRi3LhxFBcXk5SUxNWrVzGZTGzatOmekovi4mLzZP01a9ZUWyc+Ph53d/e7PoaIiIiILRhMtVkLVkR+dwwf/XbL9YqIyH8W0yStWvh7Y7M5FyIiIiIi8vum5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITSi5ERERERMQmtD6YiNRoQYMlhISE4Ojo+KBDERERkYecRi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNmEwmUymBx2EiDy8DB8ZH3QIIiLyEDFNcnjQIchDTCMXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbOKhTi6mT59Or1697qhuXl4evXr1YsGCBfc5qptqE1tYWBgBAQH3OaKa1bZ/srKyGDt2LP379/9N+1VERERE/n1poWKxYjQamTJlCkajkfDwcFxcXHjssccedFi/uYyMDLKyshgzZswd77Ny5UpcXFxsnkweOXKErVu3cuzYMU6cOEFpaSmRkZG3Pc758+eJj49n7969XL16lSZNmvDSSy/x5ptvUqdOHZvGJiIiIlLloR65mDp1Krt27XrQYfzu5Obmkpuby+uvv87QoUPx8/P73SYXixYtqtU+q1atIiUlxeax7Nq1i6SkJEpKSn71tzh79iwjRoxgx44dBAQEMGnSJLp3787ixYuZNGkS+m6miIiI3C/3PHJRUVFBeXk5devWtUU8FhwcHHBw0ODKb+3HH38EwNXV1abtmkwmSktLqV+/vk3b/XcWFhYGwMKFC2usFxQUxMiRI6lXrx5ffPEFhw4dum3dTz75hJKSEhYvXszjjz8OwKBBg/Dy8iI2NpatW7fi5+dnu5MQERER+f+r1Z17SkoKM2bMIDY2lsOHD5OSksKFCxeYOnUqAQEBmEwm1q9fz8aNGzlz5gx2dnZ06tSJ0NBQq/kJqamprF27lpycHIxGI+7u7nTt2pWJEyfSsGFD4Oa8htTU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zGTWrFl88sknPP744zz99NMMHDjwvr7CNHv2bFJTU6vd9st5Ji+//DLTp0+/q+O8+OKLFBUVER8fb57f4ujoSEhICDt37uT777+v8f8zERERkbt1V8lFde9zm0wmGjZsSFRU1G33q7pxbtWqFUlJSezdu5d9+/Zx4MABoqKiWLBgAYsWLaJFixZ3E5aVmhKCiooKi7+vX79OaGgopaWlvP7667Rr1w4nJycMBgPLli1j3759NomptkwmExEREZw5c4bg4GA6deqEs7MzdnZ2pKSkkJaWZjVa8DC53SpiBoOBefPmWYw83KrqWrlTR48eJSIighYtWhAREUGzZs2oU6cOBoOB999/36KP3NzcSExM5ODBg+zZs4eDBw8yZ84cFixYQHR0dI3zKu7FyJEjeemllyzK5s6dC8CECRMsym8d0bobwcHBvPbaa5w8eZKff/6Ztm3b4uLiQlJSEo8++qh59EZERETElmy2zmvLli3Jycmha9eud7TU6COPPELfvn3p27cvcHP1ngkTJvD3v/+dP//5z9XuU7XiztmzZ622nT592qqs6gn7Tz/9ZLUtLy/PYr7H3r17uXjxItOmTeOVV16xqBsXF/er51MbzZs3B6qPuaqsqs6JEyfIzs4mNDTU6mNuGzdutPi7tv1TW82bN+ef//wnV69etXpF6fTp0zg5OZknTdekZcuWfP311zRt2pTWrVvXWLdq5CM7O9viVa9fSktLo6Kignnz5pn7DqC0tNRqFArA3t6eXr16mVd1OnHiBMOHDychIYHo6Gjg7karatqnTZs2ViNIVf3Yp0+fWh/r1zzyyCN06tTJ/Pf333/PlStX+O///m+bH0tEREQEbPgRPX9/fyorK4mJial2e9VrLgBFRUVW2zt27AhAcXHxbY9RtVxtZmYmP/zwg7m8vLyclStXWtWvujHdu3evRXlaWhoXL160KLO3twewmgOye/dui/f1baFjx440bdqUlJQULl26ZC43Go2sWLECg8FgXlmr6sn+L+M6efIkGRkZFmW17Z/a6tevH5WVlSxbtsyifNeuXWRlZeHj43PbkYhbVU12jo2NtRpBAstrxdfXF0dHRxYtWmSeW3Krqn653e+3ZMkSq5Gd6q4/b29v6tata5GIVs3hqOma/KV69epVm8w+aDdu3ODjjz/mkUceYcSIEQ86HBEREfkPZbORiwEDBhAQEMDatWs5fvw4zz77LG5ubhQWFnLo0CHOnz9PcnIyAOPHj8fFxYUePXrQpEkTrl69SkpKCgaD4VdX2Xn33XcZM2YMo0ePZvDgwealVqu7SfX29qZ3795s2LABk8lE+/btyc7OJiMjg5YtW1pM5u3evTvu7u7MnTuX/Px8GjduTHZ2Nlu2bKFdu3acPHnSVl2Fvb09U6ZMYfLkybzxxhsEBgZSv359tm/fzuHDhwkJCTEnRq1bt6ZNmzYkJiZSVlaGl5cXOTk5bNiwgXbt2nHs2LG77p/aCggIIDU1leXLl5OXl0fPnj05d+4c69atw93d3WLlp5p07tyZsLAwFi5cyLBhwxgwYAAeHh5cunSJY8eOsWvXLnbv3g1AkyZNmDhxIh9++CHBwcH4+/vj6elJYWEhmZmZTJs2jQ4dOtCvXz9WrlzJO++8Q2BgII6OjuzZs4eTJ09ajaZERUVRWFhInz598PT05MaNG2zfvp1r167h7+9vrte1a1fWrl3LrFmz6Nu3Lw4ODnTp0sViZOSXunbtSnJyMnFxcbRu3RqDwYCPj4/VKla1lZ+fz+bNm4F/jULt2LGDgoICAHO/AJw6dYoZM2bQt29fGjduzOXLl0lNTSU3N5dp06ZVOydHRERExBZs+vnryMhIevXqxWeffcayZcsoLy/H3d2djh07Wtx4BgUFsX37djZs2EBxcTGurq506NCBKVOmWH3s7pe6detGbGwsMTExLF++HGdnZ/NH4oKDg63qz5w5k7/97W+kpaWxZcsWevToQXx8PB988AH5+fnmei4uLsTExDBv3jzWrFlDRUUFHTt2JDo6muTkZJsmF3BzidT58+eTkJDAihUrKC8vx9vbm6lTp1p8RM/e3p7o6Gjmzp1LamoqpaWltG3blunTp5OdnW2VXNS2f2rDwcGBmJgY80f00tPTcXFxwdfXl3HjxtG0adM7bissLIxOnTqxevVqVq1aRWlpKY0aNaJt27ZMmjTJom5QUBAtWrQgMTGR1atXU15ejoeHB08++aT5uxndu3dn9uzZLF68mPj4eOrUqUPv3r1ZuHAhoaGhFu35+fmRkpLC5s2buXLlCk5OTrRp04YPP/wQX19fc72BAweSlZXFtm3b+PLLL6msrCQyMrLG5GLcuHEUFxeTlJTE1atXMZlMbNq06Z6Ti9zcXOLj4y3K0tPTSU9PN59/VXLh5uZG48aN2bhxI5cvX8bZ2ZkePXowc+ZMunTpck9xiIiIiNTEYKrNWrAi8rtj+Oi3W65XREQefqZJNn02Lf9hbDbnQkREREREft+UXIiIiIiIiE0ouRAREREREZtQciEiIiIiIjah5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJLVQsIjVa0GAJISEhODo6PuhQRERE5CGnkQsREREREbEJJRciIiIiImITSi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJgwmk8n0oIMQkYeX4SPjgw5BRER+Y6ZJDg86BPk3pZELERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbELJxUNo//799OrVi5SUlAcWQ1ZWFmPHjqV///706tWLBQsWPLBYREREROTfg76QIlaMRiNTpkzBaDQSHh6Oi4sLjz322IMO6zeXkZFBVlYWY8aMueN9Vq5ciYuLCwEBATaN5ciRI2zdupVjx45x4sQJSktLiYyMrPE4BQUFLF68mK+//prLly/ToEEDOnTowIQJE2jTpo1N4xMREREBJRcPpZ49e7Jr1y4cHB7Mz5Obm0tubi4TJkxg6NChDySGh0FGRgapqam1Si5WrVqFp6enzZOLXbt2kZSUhLe3N4899hiHDh2qsf7x48cZP3489evX55VXXqFp06b89NNPfP/991y5csWmsYmIiIhUUXLxELl27RpOTk7Y2dlRp06dBxbHjz/+CICrq6tN2zWZTJSWllK/fn2btvvvLCwsDICFCxfWWC8oKIiRI0dSr149vvjiixqTixs3bvA///M/NGnShIULF+Ls7GzTmEVERERuR8mFjaSkpDBjxgxiY2P59ttvSUlJ4ccff8TLy4uQkBAGDhxoUT8gIABPT0/ee+89YmJiOHz4MK6urmzatIn9+/cTHh5u9dqLyWRi48aNbNy4kdOnTwPQrFkz+vfvT3h4uLnezz//zKeffkpaWhrnz5/nkUceoUePHowZM4aOHTvWeB5hYWEcOHAAgBkzZjBjxgwANm3aRLNmzSgtLSUhIYHt27dTWFhIgwYN6NOnD2PHjsXT09Pczq3nUFpaSlJSEufPn+fNN980jwRs27aNNWvWcOLECSoqKmjXrh0jRoxgwIABVnHt37+fFStWcOTIEUpLS/Hw8OCJJ57g7bffxs3NDYCkpCQyMjI4ffo0V65cwdXVld69ezN27FiaNWtm0d7OnTtJTEzk1KlTlJWV4ebmRqdOnYiIiMDLy8uiH3r16mXer6ZXkarq5efnW+xT1Xf3wt3d/Y7rbt++nXPnzjFnzhycnZ35+eefAXjkkUfuKQYRERGRX6PkwsY++eQTSktLCQoKAm4mHf/n//wffv75Z6ub0oKCAsaOHcuAAQP4r//6L65fv15j29OmTWPr1q106dKFUaNG4eLiwtmzZ/nyyy/NyYXRaORPf/oThw4dws/PjyFDhlBSUsJnn33G6NGjWbRoEZ06dbrtMUaNGsXjjz/O0qVLCQwMpEePHgA0bNgQo9FIREQE3333Hb6+vgwfPpycnBzWr1/Pnj17SExMpEmTJhbtrVq1iuLiYl599VXc3d3N2+fPn8+SJUt4+umnCQ8Px87OjvT0dP7yl78wZcoUhgwZYm5j/fr1zJo1i8aNGzNo0CA8PT25cOECX331FQUFBebk4tNPP6VLly4MHToUV1dXTp06xcaNG9m3bx+rV6821/vmm2947733aNu2LSEhITg7O3Pp0iX27t3LuXPn8PLyYtSoUZhMJg4ePMjMmTPNsXTr1u22fTdz5kzmzJmDm5sbo0aNMpc3bNiwxt/V1nbt2gWAi4sLoaGhfPvtt5hMJtq3b8+f/vQn/vjHP/6m8YiIiMjvh5ILGysqKmL16tXmV1GCgoIIDg7mf//3f3n++eepW7euuW5ubi5Tp07l1Vdf/dV2t2/fztatW3nppZeYMWMGdnb/WuirsrLS/N9r1qzhm2++4ZNPPrG4iQwKCmLo0KHMnTu3xldwnnrqKRwcHFi6dCndunXDz8/PvO2zzz7ju+++Y8SIEbzzzjvm8j59+jBhwgRiYmL461//atHehQsXWLduHY0aNTKXHT9+nCVLlhASEsL48ePN5cHBwUycOJHY2Fj8/f1xcnKioKCAjz76CG9vb5YsWYKLi4u5/tixYy3OffXq1dSrV8/i+D4+PowbN47k5GTeeOMNADIzM6msrCQ2NtYirrfeesuiH9LS0jh48KBFH9TEz8+PuLg4GjVqdMf73A8//PADAFOmTKFLly78f//f/0dxcTFLly7lnXfe4ZNPPqFPnz4PLD4RERH5z6WlaG0sKCjI4h13Z2dnBg0axE8//cQ333xjUdfV1fWOJ/5u3boVgAkTJlgkFoDF31u3bsXb25s//OEPFBUVmf8ZjUb69OnDd999R1lZ2V2dW3p6OnZ2doSEhFiU9+3bl/bt27Njxw6Lm30Af39/ixv4qhgNBgP+/v4WMRYVFeHj48O1a9c4fPgwAF988QXl5eWEhoZaJBbVnXtVYlFZWUlJSQlFRUW0b98eZ2dnjhw5Yq5X9fv84x//wGg03lVf3I3r169bna/RaMRoNFqV/9oo1q8dB8Db25s5c+bw/PPPExQURFxcHAaDgfnz59vqlEREREQsaOTCxry9va3KWrduDdwcqbhV8+bNsbe3v6N2z507x6OPPvqr796fOXOGGzduVDtvoUpRURFNmza9o+PeKi8vDw8PDxo0aGC1rW3btmRnZ1NUVGSRTLRq1araGE0mk/nVsepUTSo/d+4cAB06dPjV+Pbt28eiRYs4evQoN27csNh29epV838PGTKEzMxMZs2axSeffMLjjz/O008/zcCBA+/rK0yzZ88mNTW12m2//L1efvllpk+fflfHqVoMwN/fH4PBYC5v1aoVjz/+OAcPHqS0tNRqlEdERETkXim5eIBufUXKltq1a8e777572+2/5RyA252jwWBg3rx5VqMwVdq2bVur4xw9epSIiAhatGhBREQEzZo1o06dOhgMBt5//32LERU3NzcSExM5ePAge/bs4eDBg8yZM4cFCxYQHR1d47yKezFy5Eheeukli7K5c+cCN0ekbuXh4XHXx2nSpAmnTp2qNhF1d3fHZDJRUlKi5EJERERsTsmFjZ09e9aq7MyZM8DNkYq71apVKzIzM/nxxx9rHL1o2bIlV65c4cknn7ztjfvdat68Of/85z+5evWq1StKp0+fxsnJyTxpuiYtW7bk66+/pmnTpuZRndupGvnIzs7Gy8vrtvXS0tKoqKhg3rx5Fv1cWlpqMWpRxd7enl69eplXdTpx4gTDhw8nISGB6OhoAIun/neqpn3atGlj9fG6qn605RyIzp078/XXX1NQUGC1rbCwEHt7+2pHn0RERETuleZc2Ni6desoKSkx/11SUsL69etxcXHhiSeeuOt2q554z5s3z2peg8lkMv+3v78/P/74I3//+9+rbafqdaO70a9fPyorK1m2bJlF+a5du8jKysLHx+eOEpqqyc6xsbFUVFTUGKOvry+Ojo4sWrTIol+rVJ171etlt/YFwJIlS6z6q6ioyKodb29v6taty08//WQuq3qyX1xc/KvndOs+t7bxIAwcOBB7e3uSk5Mt5pRkZ2dz+PBhevXq9UC/oyIiIiL/uTRyYWNubm688cYb5onaKSkpXLhwgalTp97Ta1ADBgzg+eefZ/PmzZw7dw4fHx9cXFzIycnhn//8J2vXrgXg9ddfZ8+ePURHR7Nv3z6efPJJnJycuHDhAvv27eORRx5hwYIFdxVDQEAAqampLF++nLy8PHr27Mm5c+dYt24d7u7uFis/1aRz586EhYWxcOFChg0bxoABA/Dw8ODSpUscO3aMXbt2sXv3buDmKz4TJ07kww8/JDg4GH9/fzw9PSksLCQzM5Np06bRoUMH+vXrx8qVK3nnnXcIDAzE0dGRPXv2cPLkSavRlKioKAoLC+nTpw+enp7cuHGD7du3c+3aNfz9/c31unbtytq1a5k1axZ9+/bFwcGBLl261DgC1bVrV5KTk4mLi6N169YYDAZ8fHzu+RWk/Px8Nm/eDGD+xsmOHTvMoxNV/QI3E6WRI0eydOlSwsLCeOGFF/jpp59Ys2YNdevWtXoFS0RERMRWlFzY2J/+9Ce+/fZbkpKSuHz5Mq1atSIqKooXX3zxntv+f//f/5cePXqQnJzMokWLsLe3p1mzZhaTgR0cHJg7dy7r1q1jy5Yt5kTCw8ODzp078/LLL9/18R0cHIiJiTF/RC89PR0XFxd8fX0ZN25crSaJh4WF0alTJ1avXs2qVasoLS2lUaNGtG3blkmTJlnUDQoKokWLFiQmJrJ69WrKy8vx8PDgySefNH83o3v37syePZvFixcTHx9PnTp16N27NwsXLiQ0NNSiPT8/P1JSUti8eTNXrlzBycmJNm3a8OGHH+Lr62uuN3DgQLKysti2bRtffvkllZWVREZG1phcjBs3juLiYpKSkrh69Somk4lNmzbdc3KRm5tLfHy8RVl6ejrp6enm87/1I4bjx4/H09OTpKQk5s2bR506dejVqxfh4eG1ns8iIiIicqcMpl++RyJ3peoL3fHx8RZfZxb5d2f46LdbrldERB4Opkl6/ix3R3MuRERERETEJpRciIiIiIiITSi5EBERERERm9CcCxGpkeZciIj8/mjOhdwtjVyIiIiIiIhNKLkQERERERGb0JiXiNRoQYMlhISE4Ojo+KBDERERkYecRi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNmEwmUymBx2EiDy8DB8ZH3QIIiLyGzBNcnjQIch/AI1ciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbELJhYiIiIiI2ISSCxERERERsYmHOrmYPn06vXr1uqO6eXl59OrViwULFtznqG6qTWxhYWEEBATc54hqVtv+ycrKYuzYsfTv3/837VcRERER+felBY3FitFoZMqUKRiNRsLDw3FxceGxxx570GH95jIyMsjKymLMmDF3vM/KlStxcXGxaTJpMpnYunUrX331FceOHePixYu4ubnRvn17Ro8eTZcuXSzq//DDD2zdupXdu3dz/vx5fv75Z1q0aIGvry/Dhg2jXr16NotNRERE5FYP9cjF1KlT2bVr14MO43cnNzeX3NxcXn/9dYYOHYqfn9/vNrlYtGhRrfZZtWoVKSkpNo3j559/Ztq0afzwww+88MILTJ48mcDAQLKysggJCWHLli0W9Tdt2sTKlStp0aIFb731Fm+//TZeXl7ExcUxatQoysrKbBqfiIiISJV7HrmoqKigvLycunXr2iIeCw4ODjg4aHDlt/bjjz8C4OrqatN2TSYTpaWl1K9f36bt/jsLCwsDYOHChbetY29vz4IFC3jiiScsygMDAxkyZAhz587lxRdfxM7u5rMCX19fQkJCcHZ2NtcNCgqiZcuWLFmyhOTkZIYOHXofzkZERER+72p1556SksKMGTOIjY3l8OHDpKSkcOHCBaZOnUpAQAAmk4n169ezceNGzpw5g52dHZ06dSI0NNRqfkJqaipr164lJycHo9GIu7s7Xbt2ZeLEiTRs2BC4Oa8hNTWV/fv3W+z77bffMm/ePLKysnBycsLX15dBgwbdNt74+Hir44eFhZGfn2/xlHn37t0kJyfz/fffc+nSJRwdHencuTOjRo2yurGzhQMHDrB48WKOHj2K0WjE29ubwYMH8+qrr1rU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YouIiIiIiE0ouRAREREREZtQciEiIiIiIjah5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITWtBYRGq0oMESQkJCcHR0fNChiIiIyENOIxciIiIiImITSi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITRhMJpPpQQchIg8vw0fGBx2CiIjcBdMkhwcdgvwOaeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm3iok4vp06fTq1evO6qbl5dHr169WLBgwX2O6qbaxBYWFkZAQMB9jqhmte2frKwsxo4dS//+/X/TfhURERGRf1/6uopYMRqNTJkyBaPRSHh4OC4uLjz22GMPOqzfXEZGBllZWYwZM+aO91m5ciUuLi42TSZNJhNbt27lq6++4tixY1y8eBE3Nzfat2/P6NGj6dKli0X9s2fPsnjxYo4fP87FixcxGo00bdqUZ555hpEjR/Loo4/aLDYRERGRWz3UycXUqVP5n//5nwcdxu9Obm4uubm5TJgwgaFDhz7ocB6YjIwMUlNTa5VcrFq1Ck9PT5smFz///DPTpk2jffv2vPDCCzRr1oxLly6xYcMGQkJCmDFjBn5+fub6hYWFXLp0if79+9O4cWPs7e05efIkn332Gdu2bWPlypU0atTIZvGJiIiIVLnn5KKiooLy8nLq1q1ri3gsODg44ODwUOc//5F+/PFHAFxdXW3arslkorS0lPr169u03X9nYWFhACxcuPC2dezt7VmwYAFPPPGERXlgYCBDhgxh7ty5vPjii9jZ3XzLsXfv3vTu3duqnZ49e/KXv/yFlJQU3njjDRuehYiIiMhNtbpzT0lJYcaMGcTGxnL48GFSUlK4cOECU6dOJSAgAJPJxPr169m4cSNnzpzBzs6OTp06ERoaajU/ITU1lbVr15KTk4PRaMTd3Z2uXbsyceJEGjZsCNyc15Camsr+/fst9v3222+ZN28eWVlZODk54evry6BBg24bb3x8vNXxw8LCyM/PJyUlxVy2e/dukpOT+f7777l06RKOjo507tyZUaNGWd3Y2cKBAwdYvHgxR48exWg04u3tzeDBg3n11Vct6h05coR169Zx6NAhCgoKsLe3p127dowYMYL+/ftbtXun/VOdsLAwDhw4AMCMGTOYMWMGAJs2baJZs2aUlpaSkJDA9u3bKSwspEGDBvTp04exY8fi6elpbmf//v2Eh4cTGRlJaWkpSUlJnD9/njfffNM8ErBt2zbWrFnDiRMnqKioMJ/TgAEDrOLav38/K1as4MiRI5SWluLh4cETTzzB22+/jZubGwBJSUlkZGRw+vRprly5gqurK71792bs2LE0a9bMor2dO3eSmJjIqVOnKCsrw83NjU6dOhEREYGXl5dFP9x67URGRt52VKKqXn5+vsU+VX13txwcHKq9/tzd3enZsyfp6elcvnz5V193atq0KQBXr16961hEREREanJXwwLR0dEYjUYCAwNxcnLCy8sLgGnTpvH555/j6+tLQEAA5eXlbN26lfHjxzN79myee+45ADZv3sz06dPp0aMH4eHh1KlTh4KCAnbt2sXly5fNyUV1jhw5wrhx46hfvz4jR47ExcWFbdu2ERkZeTenYiElJYXi4mL8/Pxo0qQJhYWFJCcnM27cOOLj4+nRo8c9H6PKjh07mDx5Mu7u7gwfPpz69euzbds2oqKiyM3NZfz48ea6GRkZnD17lgEDBuDp6UlxcTGpqalMnjyZqKgoXnzxRXPde+2fUaNG8fjjj7N06VICAwPN59ywYUOMRiMRERF89913+Pr6Mnz4cHJycli/fj179uwhMTGRJk2aWLS3atUqiouLefXVV3F3dzdvnz9/PkuWLOHpp58mPDwcOzs70tPT+ctf/sKUKVMYMmSIuY3169cza9YsGjduzKBBg/D09OTChQt89dVXFBQUmJOLTz/9lC5dujB06FBcXV05deoUGzduZN++faxevdpc75tvvuG9996jbdu2hISE4OzszKVLl9i7dy/nzp3Dy8uLUaNGYTKZOHjwIDNnzjTH0q1bt9v23cyZM5kzZw5ubm6MGjXKXF7T9XyvCgsLcXR0xMXFxWrbjRs3KC0t5caNG5w5c4Z58+YB8Mwzz9y3eEREROT37a6Si7KyMlauXGnxKlR6ejpbt27l/fff57XXXjOXBwcHExISwscff4yPjw8Gg4GMjAycnJyIi4uzeO0pPDz8V489Z84cKisrSUhIMCc1gwcPZvTo0Xdz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2bKFK1euYDAYaNq0Ka+99hojR46s1e8kIiIiUhsGU23WghWR3x3DR7/dcr0iImI7pkk2fYYsckdsNudCRERERER+35RciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbELJhYiIiIiI2ITWKBORGi1osISQkBAcHR0fdCgiIiLykNPIhYiIiIiI2ISSCxERERERsQklFyIiIiIiYhNKLkRERERExCaUXIiIiIiIiE0ouRAREREREZtQciEiIiIiIjah5EJERERERGxCyYWIiIiIiNiEkgsREREREbEJJRciIiIiImITSi5ERERERMQmDCaTyfSggxCRh5fhI+ODDkFERO6AaZLDgw5BRCMXIiIiIiJiG0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbOI/KrmYPn06vXr1uqO6eXl59OrViwULFtznqG6qTWxhYWEEBATc54hqVtv+ycrKYuzYsfTv3/837VcREREReXhoQWS5Z0ajkSlTpmA0GgkPD8fFxYXHHnvsQYf1m8vIyCArK4sxY8bc8T4rV67ExcXF5snkkSNH2Lp1K8eOHePEiROUlpYSGRn5wJNWERER+c/2HzVyMXXqVHbt2vWgw/jdyc3NJTc3l9dff52hQ4fi5+f3u00uFi1aVKt9Vq1aRUpKis1j2bVrF0lJSZSUlPwufwsRERF5MH7zkYuKigrKy8upW7euzdt2cHDAwUGDMb+1H3/8EQBXV1ebtmsymSgtLaV+/fo2bfffWVhYGAALFy6ssV5QUBAjR46kXr16fPHFFxw6dOi3CE9ERER+5+7rnXhKSgozZswgNjaWw4cPk5KSwoULF5g6dSoBAQGYTCbWr1/Pxo0bOXPmDHZ2dnTq1InQ0FCr+QmpqamsXbuWnJwcjEYj7u7udO3alYkTJ9KwYUPg5ryG1NRU9u/fb7Hvt99+y7x588jKysLJyQlfX18GDRp023jj4+Otjh8WFkZ+fr7FU+bdu3eTnJzM999/z6VLl3B0dKRz586MGjWKJ554wlbdaHbgwAEWL17M0aNHMRqNeHt7M3jwYF599VWLekeOHGHdunUcOnSIgoIC7O3tadeuHSNGjKB///5W7d5p/1QnLCyMAwcOADBjxgxmzJgBwKZNm2jWrBmlpaUkJCSwfft2CgsLadCg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u5ZZs2bRt29fHBwc6NKli8XIyC917dqV5ORk4uLiaN26NQaDAR8fH6tVrGorPz+fzZs3A/8ahdqxYwcFBQUA5n4RERERsaUH+jnryMhIevXqxWeffcayZcsoLy/H3d2djh07Wtx4BgUFsX37djZs2EBxcTGurq506NCBKVOmWH3s7pe6detGbGwsMTExLF++HGdnZ/NH4oKDg63qz5w5k7/97W+kpaWxZcsWevToQXx8PB988AH5+fnmei4uLsTExDBv3jzWrFlDRUUFHTt2JDo6muTkZJsmF3BzidT58+eTkJDAihUrKC8vx9vbm6lTp1p8RM/e3p7o6Gjmzp1LamoqpaWltG3blunTp5OdnW2VXNS2f2rDwcGBmJgY80f00tPTcXFxwdfXl3HjxtG0adM7bissLIxOnTqxevVqVq1aRWlpKY0aNaJt27ZMmjTJom5QUBAtWrQgMTGR1atXU15ejoeHB08++aT5uxndu3dn9uzZLF68mPj4eOrUqUPv3r1ZuHAhoaGhFu35+fmRkpLC5s2buXLlCk5OTrRp04YPP/wQX19fc72BAweSlZXFtm3b+PLLL6msrCQyMrLG5GLcuHEUFxeTlJTE1atXMZlMbNq06Z6Ti9zcXOLj4y3K0tPTSU9PN5+/kgsRERGxNYOpNmu7isjvjuGj3275XRERuXumSQ/0mbEI8ADnXIiIiIiIyH8WJRciIiIiImITSi5ERERERMQmlFyIiIiIiIhNKLkQERERERGbUHIhIiIiIiI2oeRCRERERERsQgsii0iNFjRYQkhICI6Ojg86FBEREXnIaeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITSi5EBERERERm1ByISIiIiIiNqHkQkREREREbELJhYiIiIiI2ISSCxERERERsQmDyWQyPeggROThZfjI+KBDEBGRGpgmOTzoEETMNHIhIiIiIiI2oeRCRERERERsQsmFiIiIiIjYhJILERERERGxCSUXIiIiIiJiE0ouRERERETEJpRciIiIiIiITTzUycX06dPp1avXHdXNy8ujV69eLFiw4D5HdVNtYgsLCyMgIOA+R1Sz2vZPVlYWY8eOpX///r9pv4qIiIjIvy99dUWsGI1GpkyZgtFoJDw8HBcXFx577LEHHdZvLiMj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W66XiOjvSpjK97VEAOdcEBERERGRmjC4ICIiIiIitWBwQUREREREasE5F0RUKs65ICJ6N865IHqDPRdERERERKQWDC6IiIiIiEgt2IdHRKVabRgMDw8PaGtrV3VViIiI6CPHngsiIiIiIlILBhdERERERKQWDC6IiIiIiEgtGFwQEREREZFaMLggIiIiIiK1YHBBRERERERqweCCiIiIiIjUgsEFERERERGpBYMLIiIiIiJSCwYXRERERESkFgwuiIiIiIhILRhcEBERERGRWsgEQRCquhJE9PGSLS6o6ioQEX3UhKlaVV0Foo8Gey6IiIiIiEgtGFwQEREREZFaMLggIiIiIiK1YHBBRERERERqweCCiIiIiIjUgsEFERERERGpxUcdXMyZMwd2dnZlypuUlAQ7OzusXr26kmv1Rnnq5uXlBVdX10quUenK2z63b9+Gj48PevTo8UHblYiIiIj+vrgwM6koKCjA9OnTUVBQAG9vb8jlcjRp0qSqq/XBHT9+HLdv38aECRPKvM22bdsgl8vVHkxev34dkZGRuHnzJu7evYucnBzMnj272P3cunULUVFRiI2NRVJSEgCgQYMGcHV1xaBBg6ClxdueiIiIKsdH3XMxc+ZMnDp1qqqr8Y+TmJiIxMREDB8+HMOGDYOzs/M/NrhYu3ZtubbZvn07IiIi1F6XU6dOISwsDFlZWe88F5s2bUJERASaNWuGiRMnwtvbG0ZGRli4cCH8/f3B780kIiKiyvLerzALCwuRn58PPT09ddRHQktLi29Zq8CzZ88AAEZGRmotVxAE5OTkoHr16mot9+/My8sLALBmzZpS87m5uWH06NGoVq0ajh49iqtXr5aYd9iwYZgzZw50dXUlaf/9738RGRmJkydP4rPPPlPPARAREREVUa4n94iICMydOxdBQUG4du0aIiIikJKSgpkzZ8LV1RWCIGD37t3Yt28f4uLioKGhgebNm2P8+PEq8xMOHDiAnTt34tGjRygoKICJiQlatWqFKVOmoEaNGgDezGs4cOAAzp8/L9n28uXLWLZsGW7fvg19fX04Ojpi8ODBJdZ31apVKvv38vJCcnKy5C3zmTNnEB4ejr/++gtPnz6FtrY2WrRoAU9PT7Rv3748TVUmFy9exLp163Djxg0UFBTA0tISQ4YMwcCBAyX5rl+/jl27duHq1atITU2F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eEBbW7uqq0JEREQfOfZcEBERERGRWjC4ICIiIiIitWBwQUREREREasHggoiIiIiI1ILBBRERERERqQWDCyIiIiIiUgsGF0REREREpBYMLoiIiIiISC0YXBARERERkVowuCAiIiIiIrVgcEFERERERGrB4IKIiIiIiNRCJgiCUNWVIKKPl2xxQVVXgYioyglTtaq6CkR/C+y5ICIiIiIitWBwQUREREREasHggoiIiIiI1ILBBRERERERqQWDCyIiIiIiUgsGF0REREREpBYMLj5C58+fh52dHSIiIqqsDrdv34aPjw969OgBOzs7rF69usrqQkRERER/D1y0mVQUFBRg+vTpKCgogLe3N+RyOZo0aVLV1frgjh8/jtu3b2PChAll3mbbtm2Qy+VwdXVVa12uX7+OyMhI3Lx5E3fv3kVOTg5mz55d4n7S09OxadMmnDhxAikpKTAwMECjRo3g7u6O7t27q7VuREREREoMLj5C7dq1w6lTp6ClVTWnJzExEYmJifD398ewYcOqpA4fg+PHj+PAgQPlCi62b98OMzMztQcXp06dQlhYGCwtLdGkSRNcvXq1xLy5ubnw9PREamoqBg4ciCZNmiAjIwMHDhzA1KlT8d1338HNzU2t9SMiIiICGFx8VLKzs6Gvrw8NDQ3o6upWWT2ePXsGADAyMlJruYIgICcnB9WrV1druX9nXl5eAIA1a9aUms/NzQ2jR49GtWrVcPTo0VKDi+PHj+PRo0eYMmUKhg8fLqZ//vnncHZ2xp49exhcEBERUaVgcKEmERERmDt3LoKCgnD58mVERETg2bNnsLCwgIeHB/r06SPJ7+rqCjMzM3zzzTcIDAzEtWvXYGRkhP379+P8+fPw9vZWGfYiCAL27duHffv24cGDBwAAc3Nz9OjRA97e3mK+169fY8uWLYiKisLjx4+ho6MDW1tbTJgwAc2aNSv1OLy8vHDx4kUAwNy5czF37lwAwP79+2Fubo6cnBysX78eR44cQVpaGgwNDWFvbw8fHx+YmZmJ5RQ9hpycHISFheHx48cYO3as2BNw+PBh7NixA3fv3kVhYSGsra0xatQoODk5qdTr/Pnz2Lx5M65fv46cnByYmpqiffv2mDRpEoyNjQEAYWFhOH78OB48eIAXL17AyMgIHTt2hI+PD8zNzSXlnTx5EiEhIbh//z5yc3NhbGyM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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Summary plot for the first output dimension\n", "shap.summary_plot(shap_values[0], X_test, feature_names=feature_names, show=False)\n", @@ -9873,7 +1399,7 @@ }, { "cell_type": "markdown", - "id": "bd527a94", + "id": "7ee7ebfb", "metadata": { "id": "9a888f8b" }, @@ -9883,7 +1409,7 @@ }, { "cell_type": "markdown", - "id": "3244d847", + "id": "555afa84", "metadata": { "id": "c6c4ce8c" }, @@ -9894,7 +1420,7 @@ }, { "cell_type": "markdown", - "id": "37dc7965", + "id": "5dc307ed", "metadata": { "id": "86545200" }, @@ -9904,7 +1430,7 @@ }, { "cell_type": "markdown", - "id": "294524a4", + "id": "740b57e2", "metadata": { "id": "06f3977c" }, @@ -9914,7 +1440,7 @@ }, { "cell_type": "markdown", - "id": "ba535ae6", + "id": "0f79634a", "metadata": { "id": "dadd0a0c" }, @@ -9924,7 +1450,7 @@ }, { "cell_type": "markdown", - "id": "1282f757", + "id": "d0035820", "metadata": { "id": "37633c16" }, @@ -9934,7 +1460,7 @@ }, { "cell_type": "markdown", - "id": "731058ed", + "id": "80c10373", "metadata": { "id": "8735d66f" }, @@ -9944,7 +1470,7 @@ }, { "cell_type": "markdown", - "id": "9b8fb14b", + "id": "80754bea", "metadata": { "id": "d6b0332f" }, @@ -9957,7 +1483,7 @@ }, { "cell_type": "markdown", - "id": "3c17d271", + "id": "0b873097", "metadata": { "id": "a8cdea5f" }, @@ -9968,26 +1494,12 @@ ], "metadata": { "jupytext": { - "cell_metadata_filter": "vscode,id,outputId,cellView,colab,-all", + "cell_metadata_filter": "vscode,outputId,colab,cellView,id,-all", "main_language": "python", "notebook_metadata_filter": "-all" }, - "kernelspec": { - "display_name": "assume-framework", - "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.9" + "name": "python" } }, "nbformat": 4,