{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Quadratic Assignment on Dirac\n", "================================\n", "#### Device: Dirac-1\n", "\n", "The quadratic assignment problem was first introduced in 1957 by Koopmans and Beckmann to solve facility location problems which call for minimizing the cost proportional to the flow of goods between the facilities. This is a well-studied problem.\n", "\n", "QAP seeks to minimize a cost function based on fixed quantities (weights) between pairs of one set, $P$, and distances between pairs of another set $L$ when each member of $L$ is assigned to one member of $P$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Importance\n", "\n", "The problem itself is based on a simplified hypothetical situation but is a realistic planning problem. Although the context of the problem itself is quite different, it has the same double-one-hot constraint structure as the [traveling salesperson problem](https://quantumcomputinginc.com/learn/tutorials-and-use-cases/traveling-salesperson-on-dirac). This constraint structure comes from the fact that only one of each type of facility will be constructed, and each location can only accommodate one facility. As we will show in our example, the problem statement is more involved than with traveling salesperson problem. It is defined by distances between locations, flows between facilities, and the cost to construct at each location. The component of the objective function leads to analogous terms to the traveling salesperson problem such as terms that reference the location of two facilities. In the same, way the distances that define traveling salesperson problem costs reference the times at which two cities are visited. The cost of building a facility at each location, however, provides terms that reference only the location of a single facility. This extra cost means that quadratic assignment has less symmetry than the traveling salesperson problem. While the cost is the same in the traveling salesperson problem regardless of the starting city (assuming the salesperson must end in that city), there is no analogous symmetry for quadratic assignment." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Applications\n", "\n", "As with many other problems, the quadratic assignment problem is motivated by a real task, deciding where to construct industrial facilities. While a real situation may involve additional constraints (such as regulations that do not allow a factory that works with dangerous chemicals to be located in certain parts of a city), this problem presents a simplified framework for understanding planning problems. In addition to the obvious planning application, which is how the problem is formulated, there are other less obvious applications as reviewed in [this paper](https://link.springer.com/article/10.1007/s12652-018-0917-x). One such example is hospital design, where the flow is a flow of patients rather than materials. Similarly, the problem of placing components on a computer backboard to minimize the length of wires can be phrased as a QAP. In this example, the wires are the flow, and the components are the facilities, representing an empty location as a facility with no cost and no flows. An even more exotic application of this problem is forest management, where facilities are representations of zoning of a location for specific use. In this case, there will be multiple facilities of the same type, and the flows represent the desirability (or lack thereof) of having different types of areas in proximity to each other. For example, having an area zoned as a wildlife preserve next to an area zoned for recreation is desirable, while having recreation next to logging is not. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Simple Example\n", "-----------------\n", "\n", "This first example is a synthetic problem with five facilities and five locations. The first consideration is the planned flow between the facilities. The table below shows the quantity of material planned to be moved from one facility to the other. Facility 1 sends to facilities 2, 3, and 5. Facilities 2 and 3 send to facilities 4 and 5. Facility 4 doesn't send to any other facility and facility 5 sends one unit to facility 4.\n", "\n", "| Source Facility / Destination Facility | Facility 1 | Facility 2 | Faclity 3 | Facility 4 | Facility 5 |\n", "|---|---|---|---|---|---|\n", "| **Facility 1**| | 5 | 8 | | 1 |\n", "| **Facility 2** | | | | 10 | 15 |\n", "| **Facility 3** | | | | 13 | 18 |\n", "| **Facility 4** | | | | | |\n", "| **Facility 5** | | | | 1 | |\n", "\n", "The second consideration is the distance between locations. The distances in this example are symmetric.\n", "\n", "| Distances | Location 1 | Location 2 | Location 3 | Location 4 | Location 5 |\n", "|---|---|---|---|---|---|\n", "| **Location 1** | 0 | 8.54 | 6.4 | 10 | 8.94 |\n", "| **Location 2** | 8.54 | 0 | 4.47 | 5.39 | 6.49 |\n", "| **Location 3** | 6.4 | 4.47 | 0 | 3.61 | 3 |\n", "| **Location 4** | 10 | 5.39 | 3.61 | 0 | 2 |\n", "| **Location 5** | 8.94 | 6.49 | 3 | 2 | 0 |\n", "\n", "The third consideration is the cost of building a facility at a location.\n", "\n", "| Facility / Location | Location 1| Location 2 | Location 3 | Location 4 | Location 5 |\n", "|---|---|---|---|---|---|\n", "| **Facility 1**| 2 | 3 | 6 | 3 | 7 |\n", "| **Facility 2** | 3 | 9 | 2 | 5 | 9 |\n", "| **Facility 3** | 2 | 6 | 4 | 1 | 2 |\n", "| **Facility 4** | 7 | 5 | 8 | 5 | 7 |\n", "| **Facility 5** | 1 | 9 | 2 | 9 | 2 |\n", "\n", "The outcomes in this example range from optimal to 166% of optimal. This implies a considerable benefit to performing the optimization." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from qci_client import QciClient\n", "from helpers import plot_qap, assignment_from_solution, create_qap_objective, create_qap_constraints, find_index_of_nearest\n", "from qap_data import mip_obj_vals" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is the data described in the tables above." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "\n", "A = np.array([[0, 5, 8, 0, 1],\n", " [0, 0, 0, 10, 15],\n", " [0, 0, 0, 13, 18],\n", " [0, 0, 0, 0, 0.],\n", " [0, 0, 0, 1, 0.]])\n", "B = np.array([[0, 8.54, 6.4, 10, 8.94],\n", " [8.54, 0, 4.47, 5.39, 6.49],\n", " [6.4, 4.47, 0, 3.61, 3.0],\n", " [10, 5.39, 3.61, 0, 2.0],\n", " [8.94, 6.49, 3.0, 2.0, 0.]])\n", "C = np.array([[2, 3, 6, 3, 7],\n", " [3, 9, 2, 5, 9],\n", " [2, 6, 4, 1, 2],\n", " [7, 5, 8, 5, 7],\n", " [1, 9, 2, 9, 2.]])\n", "n = 5\n", "num_variables = 25" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This code creates the objective matrix from the three input matrices, and then uploads the data to the API." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "token = \"your_token\"\n", "api_url = \"https://api.qci-prod.com\"\n", "qciclient = QciClient(api_token=token, url=api_url)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we start a client for the API and upload the objective matrix." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The constraint matrix is built using only the number of facilities/locations. It is the same across all problems of the same size, independent of the other input data.\n", "\n", "This code builds the constraint data and uploads two files, one for the left-hand side and another for the right." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "constraint_file = create_qap_constraints(n)\n", "constraint_file_id = qciclient.upload_file(file=constraint_file)[\"file_id\"]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "objective_file = create_qap_objective(A, B, C, n, num_variables)\n", "obj_file_id = qciclient.upload_file(file=objective_file)[\"file_id\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is where we make the job request. The request is synchronous, but could be made asynchronously and results retrieved at a later time." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2024-05-08 18:30:31 - Dirac allocation balance = 0 s (unmetered)\n", "2024-05-08 18:30:31 - Job submitted: job_id='663c2737d448b017e54f94d2'\n", "2024-05-08 18:30:31 - QUEUED\n", "2024-05-08 18:33:26 - RUNNING\n", "2024-05-08 18:48:42 - COMPLETED\n", "2024-05-08 18:48:45 - Dirac allocation balance = 0 s (unmetered)\n" ] } ], "source": [ "alpha = 105.625\n", "job_params = {\"device_type\": \"dirac-1\", \"alpha\": alpha, \"num_samples\": 5}\n", "body = qciclient.build_job_body(job_type=\"sample-constraint\", job_params=job_params,\n", " constraints_file_id=constraint_file_id, objective_file_id=obj_file_id,\n", " job_name=f\"QAP Demo\",\n", " job_tags=[])\n", "# submit the job request to be processed asynchronously\n", "response = qciclient.process_job(job_body=body)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The response includes results samples and energies." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'counts': [3, 2],\n", " 'energies': [-725.6101734638214, -724.4597828388214],\n", " 'feasibilities': [True, False],\n", " 'objective_values': [330.6400022506714, 120.53999900817871],\n", " 'solutions': [[1,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 1,\n", " 0,\n", " 0,\n", " 0,\n", " 1,\n", " 0,\n", " 0,\n", " 0,\n", " 1,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 0,\n", " 1],\n", " [0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1]]}" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "response['results']" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "results = response[\"results\"]\n", "sample = np.array(results[\"solutions\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We convert the bit vector of length 25 into an array of assignments of length 5 and plot the assignments in a bi-partite graph." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 3, 2, 1, 4]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "assignment = assignment_from_solution(sample[0], n)\n", "assignment" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAIMCAYAAABL+jwSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAABVYElEQVR4nO3dd3hUdd7+8fvMhFRCQgm9EwiI0kEsYAFX8afCqrhYEVnQBSxgQWUfl4irgBR1QayIKPqsDetaVh6KrCDSZJEWEBEIYAIJhCQkk8z5/RETCWkzmX7m/bquXMLMyZkvMwPeOZ859zFM0zQFAAAA1JIt0AsAAABAaCNQAgAAwCMESgAAAHiEQAkAAACPECgBAADgEQIlAAAAPEKgBAAAgEcIlAAAAPAIgRIAAAAeIVACAADAIwRKAAAAeIRAiZC1aNEiGYahn3/+OaweuyrBuCYr+P7773X++ecrLi5OhmFo8+bNgV5SmTNf88reA+68L3gPBQ7PPUIdgRJe8+OPP+qWW25RixYtFBUVpebNm+vmm2/Wjz/+WOt9fvvtt5o6daqys7O9t1BYjq/eJw6HQ8OHD9exY8c0d+5cvfHGG2rTpk2l25YGgsq+Hn74Ya+uy1NW/ntV+jqsX78+0EupwMrPO0CghFd88MEH6tWrl5YtW6ZRo0bp+eef1+jRo7V8+XL16tVLS5curdV+v/32W6Wmplb6D/Ctt96q/Pz8Kv8HH27C+fmo7n3iiT179mjfvn164IEHNHbsWN1yyy2qX79+td/z+OOP64033ij3NWLECK+uq5Qrr3ll21T1fIXze8gf+PcMVhYR6AUg9O3Zs0e33nqr2rdvr1WrVikpKansvnvvvVcDBgzQrbfeqi1btqh9+/Zee1y73S673e61/YU6ng/v+/XXXyVJiYmJLn/PkCFD1KdPHx+tqDxXXnN33he8hwKH5x6hjiOU8NjTTz+tvLw8vfTSS+XCpCQ1atRIL774onJzczVz5syy26dOnSrDMLRjxw7dcMMNqlevnho2bKh7771Xp06dKtvmwQcflCS1a9eubHxY1efFSve5a9cu3XLLLUpISFBSUpL+53/+R6Zpav/+/Ro6dKjq1aunpk2bavbs2eXWum/fPo0bN04pKSmKiYlRw4YNNXz4cI8+0+TqPnNycnTfffepbdu2ioqKUuPGjXXZZZdp48aNLt1f2fNRasWKFerTp4+io6PVoUMHvfjii2XP1Zmvx+7du3X77bcrMTFRCQkJGjVqlPLy8srtz9PnWZIOHjyoO+64Q02aNFFUVJS6du2qhQsXVvo4Na2ppvdJVTZt2qQhQ4aoXr16qlu3rgYNGqS1a9eW3X/77bfroosukiQNHz5chmHo4osvrnafNXH3PXbw4EGNHj1azZs3V1RUlNq1a6e//OUvKiwslOTa5+4q+3tS1fNV1f5ceb1ceY8Gm5reA6Vqeh1ceV3d/ffM1fW583c3FF8jhA6OUMJjn3zyidq2basBAwZUev/AgQPVtm1bffbZZxXuu+GGG9S2bVs99dRTWrt2rZ577jllZWVp8eLFuvbaa7Vr1y69/fbbmjt3rho1aiRJFULrmf70pz+pS5cumj59uj777DM98cQTatCggV588UVdeumlmjFjhpYsWaIHHnhAffv21cCBAyWVnHzx7bffasSIEWrZsqV+/vlnLViwQBdffLG2bdum2NhYt58bV/d511136b333tOECRN01lln6ejRo1q9erW2b9+uXr161Xh/VTZt2qQrrrhCzZo1U2pqqoqLi/X4449X+RzecMMNateunZ566ilt3LhRr7zyiho3bqwZM2Z47Xk+cuSI+vfvL8MwNGHCBCUlJenzzz/X6NGjdeLECd13331urak275Mff/xRAwYMUL169fTQQw+pTp06evHFF3XxxRdr5cqVOvfcc3XnnXeqRYsWevLJJ3XPPfeob9++atKkSdUv9m+OHz+uzMzMcreVrsmd91h6err69eun7OxsjR07Vp07d9bBgwf13nvvKS8vT5GRkTWupTLuPl+uvl61fY9WZu7cuSooKKjw2dP/+Z//UevWrTVmzBj3/+BncOU9ILn2Orjyurr7vLu6vlKu/N315msEVGACHsjOzjYlmUOHDq12u2uuucaUZJ44ccI0TdP829/+Zkoyr7nmmnLbjRs3zpRk/vDDD6ZpmubTTz9tSjL37t1bYZ+vvfZauftK9zl27NiybYqKisyWLVuahmGY06dPL7s9KyvLjImJMUeOHFl2W15eXoXHWLNmjSnJXLx4cbWPXRVX95mQkGCOHz++yv3UdH9Va7r66qvN2NhY8+DBg2W3paWlmREREebpf/1Ln7s77rij3D7/+Mc/mg0bNix3m6fP8+jRo81mzZqZmZmZ5fY7YsQIMyEhoew5c2dN1b1PKjNs2DAzMjLS3LNnT9lt6enpZnx8vDlw4MCy25YvX25KMt99990a91n6/Ff2Vcqd99htt91m2mw28/vvv6/wPU6ns9xjlv65K3sPVHZbVc9XZdu6+nq58h51xXPPPWdKMh955JEK9919992mYRjma6+9VuX3l/4ZKnveTufqe8CV18HV19Wdf89cXZ87f0+89RoBlWHkDY/k5ORIkuLj46vdrvT+EydOlLt9/Pjx5X5/9913S5L+9a9/1XpNf/7zn8t+bbfb1adPH5mmqdGjR5fdnpiYqJSUFP30009lt8XExJT92uFw6OjRo0pOTlZiYmKtR0Ku7jMxMVHfffed0tPTK91PTfdXpri4WF9//bWGDRum5s2bl92enJysIUOGVPo9d911V7nfDxgwQEePHq3wukm1e55N09T777+vq6++WqZpKjMzs+zr8ssv1/Hjxys81+6syRXFxcX66quvNGzYsHKf6W3WrJluuukmrV69utb7lqT58+fr3//+d7mvUq6+H5xOpz788ENdffXVlX4e8/SPK/iSO69Xbd6jZ1qwYIHuuecejR8/Xo899phOnTpV7mvmzJkaOXKkRo8erbfeeqvWj+Pqe8DV18Hb/3bU5j3qyt8Tb7xGQFUIlPBIaVAsDZZVqSp4duzYsdzvO3ToIJvN5tHnFlu3bl3u9wkJCYqOji4bMZ1+e1ZWVtnv8/Pz9dhjj6lVq1aKiopSo0aNlJSUpOzsbB0/frxWa3F1nzNnztTWrVvVqlUr9evXT1OnTi0Xdmu6vzK//vqr8vPzlZycXOG+ym6TKj53pWc0n/48VbWtK89zRkaGsrOzyz5ve/rXqFGjytZd2zW5IiMjQ3l5eUpJSalwX5cuXeR0OrV///5a7VuS+vXrp8GDB5f7KuXq+yEjI0MnTpzQ2WefXet1eIM7r1dt3qOn27VrV9kPmPPnz1dMTEylX4sWLZLT6dRtt92mw4cP1/rP5cp7wNXXwdv/dtTmPerK3xNPXyOgOnyGEh5JSEhQs2bNtGXLlmq327Jli1q0aKF69epVu503jrxUdqZkVWdPmqZZ9uu7775br732mu677z6dd955SkhIkGEYGjFihJxOZ63W4uo+b7jhBg0YMEBLly7VV199paefflozZszQBx98oCFDhtR4v7e48jxVt21N31/6Z77llls0cuTISrft1q1brdcU7HzxHvMld14vT9+jbdu21eWXX64vvvii3AlRZ/ryyy/1v//7v7r22mtr/Dy1vwTD6+rK3xN//TuC8ESghMeuuuoqvfzyy1q9erUuvPDCCvd/8803+vnnn3XnnXdWuC8tLU3t2rUr+/3u3bvldDrVtm1bSf4b7UnSe++9p5EjR5Y7K/nUqVMedRu6s89mzZpp3LhxGjdunH799Vf16tVLf//738v+oa/p/jM1btxY0dHR2r17d4X7KrvNH5KSkhQfH6/i4uJyR+485c77JCkpSbGxsdq5c2eF+3bs2CGbzaZWrVp5bW2nc/X9kJSUpHr16mnr1q0+WYerz5e7r5e779HTRUZGaunSpbr66qv17rvv6s9//rMuuOCCctv8+9//1tKlSzVs2DC99dZbta7ZcfU9ULduXZdeB1dfV3eed1+9Rz15jYDqMPKGxx588EHFxMTozjvv1NGjR8vdd+zYMd11112KjY0tq8w43fz588v9/h//+Icklf3jFhcXJ0l+ubKE3W6vcNTrH//4h4qLi326z+Li4gpjscaNG6t58+YqKCio8f7qHnvw4MH68MMPy31mavfu3fr8889r/WfyhN1u13XXXaf333+/0v9JZ2Rk1Gq/7rxP7Ha7/vCHP+ijjz4q99GKI0eO6K233tKFF15Y45H02nL1PWaz2TRs2DB98sknlV7xxdOjs64+X66+XrV9j54pOjpaH3/8sfr166ennnqqwv1PPPGEBg8erH/+85+KiKj98RBX3wOuvg6uvq7uPO/efo966zUCqsIRSnisY8eOev3113XzzTfrnHPO0ejRo9WuXTv9/PPPevXVV5WZmam3335bHTp0qPC9e/fu1TXXXKMrrrhCa9as0ZtvvqmbbrpJ3bt3lyT17t1bkjRlyhSNGDFCderU0dVXX132D7M3XXXVVXrjjTeUkJCgs846S2vWrNHXX3+thg0b+nSfOTk5atmypa6//np1795ddevW1ddff63vv/9es2fPrvH+6kydOlVfffWVLrjgAv3lL39RcXGx5s2bp7PPPjtg16SePn26li9frnPPPVdjxozRWWedpWPHjmnjxo36+uuvdezYMbf36e775IknntC///1vXXjhhRo3bpwiIiL04osvqqCgoFxfqre58x578skn9dVXX+miiy7S2LFj1aVL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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_qap(assignment)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "These values were obtained by enumerating all feasible solutions and evaluating the objective function. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Results\n", "========\n", "\n", "In this plot, the objective values of all feasible solutions are shown with the objective value of the solution found by **Dirac 1**. Notice the result is the lowest possible objective value." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+0AAALkCAYAAAB6P9RvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAACKN0lEQVR4nOzdd3gU5eL28XtbeiM9kBB6b6IiiKAoioh4FKxYwPoTsWFDjw1QRFEEPfZywIL1iA0bYEdQwUKXHmoKIb1ttsz7B2RfYggkmGQ2yfdzXXslmZmdvTci5M4z8zwWwzAMAQAAAAAAv2M1OwAAAAAAADg0SjsAAAAAAH6K0g4AAAAAgJ+itAMAAAAA4Kco7QAAAAAA+ClKOwAAAAAAforSDgAAAACAn6K0AwAAAADgpyjtAAAAAAD4KUo7AABHady4cWrTpo3v67S0NFksFj3xxBNHfO7kyZNlsVjqMd3Rq69sbdq00bhx4+r8vAAANGWUdgCA35s7d64sFsshH3fffbfZ8XCQpUuXavLkycrLyzM7Sq289dZbmj17dr2c2zAMvfHGGxo8eLCioqIUEhKinj176uGHH1ZJSclhn9uvXz9ZLBY9//zzh9z/9/83goKC1KlTJ914443KzMysj7cDAGhgdrMDAABQU1OnTlXbtm0rbevRo4dJaaSXX35ZXq/XtNf3R0uXLtWUKVM0btw4RUVFVdq3YcMGWa3+OV7w1ltvac2aNbr11lvr9Lwej0djxozRe++9p0GDBmny5MkKCQnRjz/+qAcffFDvvfeeFi9erPj4+CrP3bRpk5YvX642bdpo3rx5Gj9+fLWvU/H/RllZmZYsWaLnn39en3/+udasWaOQkJA6fU8AgIZFaQcANBrDhw/XcccdZ3YMH4fDYXaERiUwMNDsCA1uxowZeu+993THHXfo8ccf922/7rrrdOGFF+rcc8/VlVdeqc8++6zKc998803Fx8dr5syZOv/885WWllbpdoyDHfz/xjXXXKOYmBg9+eST+vjjj3XJJZfUy3sDADQM//x1NwAAR+GLL77QoEGDFBoaqvDwcI0YMUJr166tdMyqVas0btw4tWvXTkFBQUpMTNRVV12lffv2VTqusLBQt956q9q0aaPAwEDFx8fr9NNP1++//+475u/3tB9s1qxZSk1NVXBwsE4++WStWbOmRu/hzTff1LHHHqvg4GBFR0fr4osv1s6dO4/4vJrklaT333/fd/7Y2Fhddtll2r1792HPXXGv/ty5c6vss1gsmjx5sqT998LfeeedkqS2bdv6LtlOS0uTdOh72rdu3aoLLrhA0dHRCgkJUf/+/asU2O+++04Wi0Xvvfeepk2bpuTkZAUFBem0007T5s2bKx27adMmjR49WomJiQoKClJycrIuvvhi5efnV/v+TjnlFH322Wfavn27L/PB/12zsrJ09dVXKyEhQUFBQerdu7dee+21w37PJKm0tFSPP/64OnXqpOnTp1fZP3LkSI0dO1aff/65fv311yr733rrLZ1//vk6++yzFRkZqbfeeuuIr1nh1FNPlSRt27atxs8BAPgnRtoBAI1Gfn6+srOzK22LjY2VJL3xxhsaO3ashg0bpscee0wlJSV6/vnnddJJJ+mPP/7wlbBFixZp69atuvLKK5WYmKi1a9fqpZde0tq1a/Xzzz/7JmC7/vrr9b///U833nijunXrpn379mnJkiVav369+vbte9icr7/+ugoLCzVhwgSVlZXpqaee0qmnnqrVq1crISGh2udNmzZN999/vy688EJdc8012rt3r/7zn/9o8ODB+uOPP6pcbn6wmuSdO3eurrzySh1//PGaPn26MjMz9dRTT+mnn3464vlrYtSoUdq4caPefvttzZo1y/ffJi4u7pDHZ2Zm6sQTT1RJSYluvvlmxcTE6LXXXtM555yj//3vfzrvvPMqHf/oo4/KarXqjjvuUH5+vmbMmKFLL71Uv/zyiySpvLxcw4YNk9Pp1E033aTExETt3r1bCxYsUF5eniIjIw+Z495771V+fr527dqlWbNmSZLCwsIk7S/ep5xyijZv3qwbb7xRbdu21fvvv69x48YpLy9Pt9xyS7XfjyVLlig3N1e33HKL7PZD/8h1xRVXaM6cOfr000/Vr18/3/ZffvlFmzdv1pw5cxQQEKBRo0Zp3rx5+ve//13t6x1sy5YtkqSYmJgaHQ8A8GMGAAB+bs6cOYakQz4MwzAKCwuNqKgo49prr630vIyMDCMyMrLS9pKSkirnf/vttw1Jxg8//ODbFhkZaUyYMOGwucaOHWukpqb6vt62bZshyQgODjZ27drl2/7LL78YkoyJEyf6tj344IPGwf8Mp6WlGTabzZg2bVql11i9erVht9urbP+7I+UtLy834uPjjR49ehilpaW+7QsWLDAkGQ888EC12Sre15w5c6qcV5Lx4IMP+r5+/PHHDUnGtm3bqhybmppqjB071vf1rbfeakgyfvzxR9+2wsJCo23btkabNm0Mj8djGIZhfPvtt4Yko2vXrobT6fQd+9RTTxmSjNWrVxuGYRh//PGHIcl4//33q/0+VGfEiBGV/ltWmD17tiHJePPNN33bysvLjQEDBhhhYWFGQUFBteeseO6HH35Y7TE5OTmGJGPUqFGVtt94441GSkqK4fV6DcMwjIULFxqSjD/++KPScRX/byxevNjYu3evsXPnTuOdd94xYmJiqvw5BAA0TlweDwBoNJ599lktWrSo0kPaP3qel5enSy65RNnZ2b6HzWbTCSecoG+//dZ3juDgYN/nZWVlys7OVv/+/SWp0qXkUVFR+uWXX7Rnz55a5zz33HPVqlUr39f9+vXTCSecoM8//7za58yfP19er1cXXnhhpfeQmJiojh07VnoPh3KkvCtWrFBWVpZuuOEGBQUF+baPGDFCXbp0OeQ91fXt888/V79+/XTSSSf5toWFhem6665TWlqa1q1bV+n4K6+8UgEBAb6vBw0aJGn/JfaSfCPpX3311RFnZa9NxsTExEr3hTscDt18880qKirS999/X+1zCwsLJUnh4eHVHlOxr+JYSXK73Xr33Xd10UUX+a78OPXUUxUfH6958+Yd8jxDhw5VXFycUlJSdPHFFyssLEwffvhhpT+HAIDGicvjAQCNRr9+/Q45Ed2mTZsk/f/7eP8uIiLC93lOTo6mTJmid955R1lZWZWOO/i+5xkzZmjs2LFKSUnRscceq7POOktXXHGF2rVrd8ScHTt2rLKtU6dOeu+996p9zqZNm2QYxiGfKx150rsj5d2+fbskqXPnzlWe26VLFy1ZsuSw568P27dv1wknnFBle9euXX37D14doHXr1pWOa9GihSQpNzdX0v776G+77TY9+eSTmjdvngYNGqRzzjlHl112WbWXxtckY8eOHavMen9wxuocqpD/XcW+g2ePX7hwofbu3at+/fpVumd/yJAhevvtt/XYY49VyfPss8+qU6dOstvtSkhIUOfOnf12pn4AQO1Q2gEAjV7FsmtvvPGGEhMTq+w/+H7iCy+8UEuXLtWdd96pPn36KCwsTF6vV2eeeWal5dsuvPBCDRo0SB9++KEWLlyoxx9/XI899pjmz5+v4cOH18t7sFgs+uKLL2Sz2arsr7jHujr1mbditPfvPB7PPzpvbR3q+yLtXwe9wsyZMzVu3Dh9/PHHWrhwoW6++WZNnz5dP//8s5KTkxsqqiSpW7dukvZPfnjuuece8phVq1ZJUqVfBlWMpl944YWHfM7333+vIUOGVNpW3S+0AACNH6UdANDotW/fXtL+0cqhQ4dWe1xubq6+/vprTZkyRQ888IBve8VI/d8lJSXphhtu0A033KCsrCz17dtX06ZNO2IJPtT5Nm7cWO1M8xXvwTAMtW3bVp06dTrs+atzuLypqamS9q+V/vcrEjZs2ODbfygVI9p5eXmVth9qlLm6gn8oqamp2rBhQ5Xtf/31l2//0ejZs6d69uyp++67T0uXLtXAgQP1wgsv6OGHH672OdXlTk1N1apVq+T1eiuNXNck48CBAxUVFaW33npL99577yF/6fD6669Lki644AJJUnFxsT7++GNddNFFOv/886scf/PNN2vevHlVSjsAoOniuikAQKM3bNgwRURE6JFHHpHL5aqyf+/evZL+/0jtwSOzkjR79uxKX3s8nipLhMXHx6tly5ZyOp1HzPPRRx9VWkbt119/1S+//HLYsj9q1CjZbDZNmTKlSj7DMKosSVfbvMcdd5zi4+P1wgsvVHoPX3zxhdavX68RI0ZUe/6IiAjFxsbqhx9+qLT9ueeeq3JsaGiopKoF/1DOOuss/frrr1q2bJlvW3FxsV566SW1adPGN1JdUwUFBXK73ZW29ezZU1ar9Yj/3UJDQw+5LNxZZ52ljIwMvfvuu75tbrdb//nPfxQWFqaTTz652nOGhITorrvu0oYNG3TvvfdW2f/ZZ59p7ty5GjlypHr27ClJ+vDDD1VcXKwJEybo/PPPr/I4++yz9cEHH9TozyEAoGlgpB0A0OhFRETo+eef1+WXX66+ffvq4osvVlxcnHbs2KHPPvtMAwcO1DPPPKOIiAgNHjxYM2bMkMvlUqtWrbRw4cIqa1kXFhYqOTlZ559/vnr37q2wsDAtXrxYy5cv18yZM4+Yp0OHDjrppJM0fvx4OZ1OzZ49WzExMbrrrruqfU779u318MMP65577lFaWprOPfdchYeHa9u2bfrwww913XXX6Y477jjkc2uS1+Fw6LHHHtOVV16pk08+WZdccolvybc2bdpo4sSJh31P11xzjR599FFdc801Ou644/TDDz9o48aNVY479thjJe1fRu3iiy+Ww+HQyJEjfWX+YHfffbfefvttDR8+XDfffLOio6P12muvadu2bfrggw9qfU/2N998oxtvvFEXXHCBOnXqJLfbrTfeeEM2m02jR48+7HOPPfZYvfvuu7rtttt0/PHHKywsTCNHjtR1112nF198UePGjdNvv/2mNm3a6H//+59++uknzZ49+7CTzEnSXXfdpT///FOPPfaYli1bptGjRys4OFhLlizRm2++qe7du2vu3Lm+4+fNm6eYmBideOKJhzzfOeeco5dfflmfffaZRo0aVavvDwCgkTJz6noAAGqiYlmr5cuXH/a4b7/91hg2bJgRGRlpBAUFGe3btzfGjRtnrFixwnfMrl27jPPOO8+IiooyIiMjjQsuuMDYs2dPpaXLnE6nceeddxq9e/c2wsPDjdDQUKN3797Gc889V+n1qlvy7fHHHzdmzpxppKSkGIGBgcagQYOMlStXVnru35dVq/DBBx8YJ510khEaGmqEhoYaXbp0MSZMmGBs2LCh2vdd07yGYRjvvvuuccwxxxiBgYFGdHS0cemll1ZZFuxQ2UpKSoyrr77aiIyMNMLDw40LL7zQyMrKqrLkm2EYxkMPPWS0atXKsFqtlZZ/+/uSb4ZhGFu2bDHOP/98IyoqyggKCjL69etnLFiwoNIxFUu+/X0pt78vRbd161bjqquuMtq3b28EBQUZ0dHRxpAhQ4zFixdX+72rUFRUZIwZM8aIiooyJFX675qZmWlceeWVRmxsrBEQEGD07NnzkMvfVcfr9Rpz5841Bg4caISHh/uWKxw6dGilJewyMzMNu91uXH755dWeq6SkxAgJCTHOO+88wzBq/v8GAKDxshjG367BAwAAQL1xuVwaOXKkvv76a3366ac688wzzY4EAPBjlHYAAIAGVlxcrFNOOUV//fWXvv/+e/Xt29fsSAAAP0VpBwAAAADATzF7PAAAAAAAforSDgAAAACAn6K0AwAAAADgpyjtAAAAAAD4KbvZAfyB1+vVnj17FB4eLovFYnYcAAAAAEATZxiGCgsL1bJlS1mt1Y+nU9ol7dmzRykpKWbHAAAAAAA0Mzt37lRycnK1+yntksLDwyXt/2ZFRESYnAYAAAAA0NQVFBQoJSXF10erQ2mXfJfER0REUNoBAAAAAA3mSLdoMxEdAAAAAAB+itIOAAAAAICforQDAAAAAOCnuKe9hjwej1wul9kxgCNyOByy2WxmxwAAAABQByjtR2AYhjIyMpSXl2d2FKDGoqKilJiYeMRJLQAAAAD4N0r7EVQU9vj4eIWEhFCC4NcMw1BJSYmysrIkSUlJSSYnAgAAAPBPUNoPw+Px+Ap7TEyM2XGAGgkODpYkZWVlKT4+nkvlAQAAgEaMiegOo+Ie9pCQEJOTALVT8WeWeRgAAACAxo3SXgNcEo/Ghj+zAAAAQNNAaQcAAAAAwE9R2lHnvvvuO1ksFt+M+3PnzlVUVNRhnzN58mT16dOn3rMdSV3lqMl7BgAAAIAjobQ3UePGjZPFYqny2Lx5c72/9oknnqj09HRFRkbW+2sdbO/evRo/frxat26twMBAJSYmatiwYfrpp5/q9XXbtGmj2bNnV9p20UUXaePGjfX6ugAAAACaPmaPb8LOPPNMzZkzp9K2uLi4en/dgIAAJSYm1vvr/N3o0aNVXl6u1157Te3atVNmZqa+/vpr7du3r8GzBAcH+2ZxBwAAAICjxUh7E1Yx2nzwo2L5r48//lh9+/ZVUFCQ2rVrpylTpsjtdvue++STT6pnz54KDQ1VSkqKbrjhBhUVFfn2b9++XSNHjlSLFi0UGhqq7t276/PPP5dU9fL4Ch999JE6duyooKAgDRs2TDt37jxs/ldeeUVdu3ZVUFCQunTpoueee67aY/Py8vTjjz/qscce05AhQ5Samqp+/frpnnvu0TnnnOM7bseOHfrXv/6lsLAwRURE6MILL1RmZma15z3llFN06623Vtp27rnnaty4cb7927dv18SJE31XM0iHvjz++eefV/v27RUQEKDOnTvrjTfeqLTfYrHolVde0XnnnaeQkBB17NhRn3zyiW9/bm6uLr30UsXFxSk4OFgdO3as8ksZAAAAAE0Lpb2WDMNQscdjysMwjDp5Dz/++KOuuOIK3XLLLVq3bp1efPFFzZ07V9OmTfMdY7Va9fTTT2vt2rV67bXX9M033+iuu+7y7Z8wYYKcTqd++OEHrV69Wo899pjCwsKqfc2SkhJNmzZNr7/+un766Sfl5eXp4osvrvb4efPm6YEHHtC0adO0fv16PfLII7r//vv12muvHfL4sLAwhYWF6aOPPpLT6TzkMV6vV//617+Uk5Oj77//XosWLdLWrVt10UUXHelbVq358+crOTlZU6dOVXp6utLT0w953IcffqhbbrlFt99+u9asWaP/+7//05VXXqlvv/220nFTpkzRhRdeqFWrVumss87SpZdeqpycHEnS/fffr3Xr1umLL77Q+vXr9fzzzys2NvaoswMAAADwf1weX0slXq/CfvzRlNcuGjRIoQdGymtiwYIFlYr08OHD9f7772vKlCm6++67NXbsWElSu3bt9NBDD+muu+7Sgw8+KEmVRpfbtGmjhx9+WNdff71vtHvHjh0aPXq0evbs6TvH4bhcLj3zzDM64YQTJEmvvfaaunbtql9//VX9+vWrcvyDDz6omTNnatSoUZKktm3b+n7BUJH7YHa7XXPnztW1116rF154QX379tXJJ5+siy++WL169ZIkff3111q9erW2bdumlJQUSdLrr7+u7t27a/ny5Tr++OOP/E39m+joaNlsNoWHhx/2loAnnnhC48aN0w033CBJuu222/Tzzz/riSee0JAhQ3zHjRs3Tpdccokk6ZFHHtHTTz+tX3/9VWeeeaZ27NihY445Rscdd5yk/f9dAAAAADRtjLQ3YUOGDNGff/7pezz99NOSpJUrV2rq1Km+0emwsDBde+21Sk9PV0lJiSRp8eLFOu2009SqVSuFh4fr8ssv1759+3z7b775Zj388MMaOHCgHnzwQa1ateqwWex2e6VS3KVLF0VFRWn9+vVVji0uLtaWLVt09dVXV8r48MMPa8uWLdW+xujRo7Vnzx598sknOvPMM/Xdd9+pb9++mjt3riRp/fr1SklJ8RV2SerWrVu1OerS+vXrNXDgwErbBg4cWOV1K37BIEmhoaGKiIhQVlaWJGn8+PF655131KdPH911111aunRpvWYGAAAAYD5G2mspxGpV0aBBpr12bYSGhqpDhw5VthcVFWnKlCm+UeyDBQUFKS0tTWeffbbGjx+vadOmKTo6WkuWLNHVV1+t8vJyhYSE6JprrtGwYcP02WefaeHChZo+fbpmzpypm2666ajf38H5JOnll1/2jcxXsB3hSoOgoCCdfvrpOv3003X//ffrmmuu0YMPPui7B722rFZrldsSXC7XUZ2rJhwOR6WvLRaLvF6vpP1XSmzfvl2ff/65Fi1apNNOO00TJkzQE088UW95AAAAAJiLkfZaslgsCrXZTHlUTHL2T/Xt21cbNmxQhw4dqjysVqt+++03eb1ezZw5U/3791enTp20Z8+eKudJSUnR9ddfr/nz5+v222/Xyy+/XO1rut1urVixwvf1hg0blJeXp65du1Y5NiEhQS1bttTWrVur5Gvbtm2t3mu3bt1UXFwsSeratat27txZaQK8devWKS8vT926dTvk8+Pi4irdp+7xeLRmzZpKxwQEBMjj8Rw2R9euXassPffTTz9V+7rViYuL09ixY/Xmm29q9uzZeumll2r1fAAAAACNCyPtzdADDzygs88+W61bt9b5558vq9WqlStXas2aNXr44YfVoUMHuVwu/ec//9HIkSP1008/6YUXXqh0jltvvVXDhw9Xp06dlJubq2+//faQBbyCw+HQTTfdpKefflp2u1033nij+vfvf8j72aX9E7LdfPPNioyM1Jlnnimn06kVK1YoNzdXt912W5Xj9+3bpwsuuEBXXXWVevXqpfDwcK1YsUIzZszQv/71L0nS0KFD1bNnT1166aWaPXu23G63brjhBp188sm++8T/7tRTT9Vtt92mzz77TO3bt9eTTz5ZZVb8Nm3a6IcfftDFF1+swMDAQ04Od+edd+rCCy/UMccco6FDh+rTTz/V/PnztXjx4mq/Z3/3wAMP6Nhjj1X37t3ldDq1YMGCw37PAQAAADR+jLQ3Q8OGDdOCBQu0cOFCHX/88erfv79mzZql1NRUSVLv3r315JNP6rHHHlOPHj00b948TZ8+vdI5PB6PJkyYoK5du+rMM89Up06dDrskW0hIiCZNmqQxY8Zo4MCBCgsL07vvvlvt8ddcc41eeeUVzZkzRz179tTJJ5+suXPnVjvSHhYWphNOOEGzZs3S4MGD1aNHD91///269tpr9cwzz0jaf5XExx9/rBYtWmjw4MEaOnSo2rVrd9gcV111lcaOHasrrrhCJ598stq1a1dp4jhJmjp1qtLS0tS+fXvFxcUd8jznnnuunnrqKT3xxBPq3r27XnzxRc2ZM0ennHJKta/9dwEBAbrnnnvUq1cvDR48WDabTe+8806Nnw8AAACg8bEYdbWOWCNWUFCgyMhI5efnKyIiwre9rKxM27ZtU9u2bRUUFGRiQqB2+LMLAAAA+LfqeujfMdIOAAAAAICforQDAAAAAOCnKO0AAAAAAPgpSjsAAAAAAH6K0g4AAAAAgJ9inXYAAAAAQJPwflaWijwenRUTo4SAALPj1AlG2gEAAAAATcLjO3fqqg0b9GVOjtlR6gylHQAAAADQ6OW6XFpRWChJGtqihclp6g6lHQAAAADQ6H2TlydDUteQELUKDDQ7Tp2htKNBfffdd7JYLMrLy6vX1znllFN06623/uPzjBs3Tueee+4/Pg8AAACA+rXowCXxpzehUXaJ0t5kjRs3ThaLpcpj8+bNZkc7opUrV+qcc85RfHy8goKC1KZNG1100UXKysqqt9dMS0uTxWLRn3/+WWn7U089pblz59bb6wIAAACoG4tzcyU1rUvjJWaPbzgej/Tjj1J6upSUJA0aJNls9fqSZ555pubMmVNpW1xcXL2+5j+1d+9enXbaaTr77LP11VdfKSoqSmlpafrkk09UXFzc4HkiIyMb/DUBAAAA1M620lJtKSuT3WLRKVFRZsepU4y0N4T586U2baQhQ6QxY/Z/bNNm//Z6FBgYqMTExEoP24FfFHz//ffq16+fAgMDlZSUpLvvvltut9v33DZt2mj27NmVztenTx9NnjzZ97XFYtErr7yi8847TyEhIerYsaM++eSTSs/5/PPP1alTJwUHB2vIkCFKS0s7bOaffvpJ+fn5euWVV3TMMceobdu2GjJkiGbNmqW2bdv6jjtS/r+zWCz66KOPKm2LioryjaJXnPuYY46RxWLRKaecIqnq5fFOp1M333yz7yqAk046ScuXL/ftr7j8/+uvv9Zxxx2nkJAQnXjiidqwYcNh3zcAAACAo1cxyt4/IkLh9qY1Nk1pr2/z50vnny/t2lV5++7d+7fXc3E/lN27d+uss87S8ccfr5UrV+r555/Xq6++qocffrjW55oyZYouvPBCrVq1SmeddZYuvfRS5Ry4l2Tnzp0aNWqURo4cqT///FPXXHON7r777sOeLzExUW63Wx9++KEMw6j3/BV+/fVXSdLixYuVnp6u+dX8d7nrrrv0wQcf6LXXXtPvv/+uDh06aNiwYb73XOHee+/VzJkztWLFCtntdl111VVHnQ0AAADA4S1qopfGSyaX9smTJ1e557pLly6+/aecckqV/ddff32lc+zYsUMjRoxQSEiI4uPjdeeddx52xLVBeTzSLbdIhyqfFdtuvXX/cfVgwYIFCgsL8z0uuOACSdJzzz2nlJQUPfPMM+rSpYvOPfdcTZkyRTNnzpTX663Va4wbN06XXHKJOnTooEceeURFRUW+Avz888+rffv2mjlzpjp37qxLL71U48aNO+z5+vfvr3//+98aM2aMYmNjNXz4cD3++OPKzMz0HVOX+StU3DYQExOjxMRERUdHVzmmuLhYzz//vB5//HENHz5c3bp108svv6zg4GC9+uqrlY6dNm2aTj75ZHXr1k133323li5dqrKysqPKBgAAAKB6XsPQ1wdKe1ObhE7yg5H27t27Kz093fdYsmRJpf3XXnttpf0zZszw7fN4PBoxYoTKy8u1dOlSvfbaa5o7d64eeOCBhn4bh/bjj1VH2A9mGNLOnfuPqwdDhgzRn3/+6Xs8/fTTkqT169drwIABslgsvmMHDhyooqIi7Tpc3kPo1auX7/PQ0FBFRET4Joxbv369TjjhhErHDxgw4IjnnDZtmjIyMvTCCy+oe/fueuGFF9SlSxetXr26zvPXxpYtW+RyuTRw4EDfNofDoX79+mn9+vWVjj34+5KUlCRJ9TqRHgAAANBc/VFUpBy3W+E2m44PDzc7Tp0zvbTb7fZK91zHxsZW2h8SElJpf0REhG/fwoULtW7dOr355pvq06ePhg8froceekjPPvusysvLG/qtVJWeXrfH1VJoaKg6dOjge1SUx5qwWq1VLk93uVxVjnM4HJW+tlgsRz3afbCYmBhdcMEFeuKJJ7R+/Xq1bNlSTzzxxFGfz2Kx1Oj91JWDvy8Vv1yoi+8LAAAAgMoqlnobEhUlh9X0ilvnTL9Df9OmTWrZsqWCgoI0YMAATZ8+Xa1bt/btnzdvnt58800lJiZq5MiRuv/++xUSEiJJWrZsmXr27KmEhATf8cOGDdP48eO1du1aHXPMMYd8TafTKafT6fu6oKBA0v4Sd3CRc7lcMgxDXq/36ApXQkKNfiviTUiQ6rjQGYbhy/53Xbp00fz58+XxeHyFcsmSJQoPD1fLli3l9XoVFxenPXv2+J5fUFCgbdu2VTnnob43Fdu6dOmiTz/9tNL+ZcuWVfu86tjtdrVr105FRUW+8x4pf8X3oOLzv7+fTZs2qaSkxJfDfmCyCpfLVSnXwd/Htm3bKiAgQD/++KNSUlJ8xy9fvly33HJLpff0989r+57/Ka/XK8Mw5HK5fJMPAgAAAE2Rr7RHRNTrwFxdq2lWU0v7CSecoLlz56pz585KT0/XlClTNGjQIK1Zs0bh4eEaM2aMUlNT1bJlS61atUqTJk3Shg0bfJOEZWRkVCrsknxfZ2RkVPu606dP15QpU6psX7hwoe8XAtL/vwqgqKjo6Ebue/dWRMuWsqSny3KI+9oNi0VGy5Yq6N1bOvCLg7ricrnkdrt9v5A42GWXXaannnpK119/va699lpt3rxZDz74oG644QYVFRVJkk488US98cYbGjJkiCIjIzV9+nTZbDY5nc5K5ywtLa30tWEYKisrU0FBgcaMGaMnn3xSt9xyi6644gr9+eefvtnaCwsLZT3Eb8G+/PJLzZ8/X6NGjVKHDh1kGIa+/PJLffHFF3rmmWdUUFBQo/xut1vl5eW+bCeddJL+85//qGfPnvJ4PJo8ebIcDocva1BQkIKDg/Xxxx8rMjJSgYGBioyMrPJ9vOqqq3TXXXcpKChIycnJevrpp1VcXKwLLrhABQUFKikpqfL+KpaqKyoqOuR/j/pQXl6u0tJS/fDDD/4zxwMAAABQx5ySfoyIkCwWOVat0ud//ml2pBqr6A5HYmppHz58uO/zXr166YQTTlBqaqree+89XX311bruuut8+3v27KmkpCSddtpp2rJli9q3b3/Ur3vPPffotttu831dUFCglJQUnXHGGZUuvy8rK9POnTsVFhamoKCgo3uxp56SLrxQhsVSqbgbFfdjz56tiHqYLMHhcMhut1d6PxUiIiK0YMECTZo0SYMGDVJ0dLSuvvpqTZ061Tfi/OCDD2rPnj265JJLFBkZqSlTpmjXrl0KDAysdM7g4OBKX1ssFgUFBSkiIkLdu3fX+++/r9tvv10vv/yy+vXrp2nTpumaa65ReHj4IbMdd9xx+vrrr/Xggw9q586dCgwMVMeOHfXSSy/5JrGrSX673a6AgADfazz11FO66qqrdNZZZ6lly5aaNWuWLr30Ul9WSZo9e7YefvhhTZ8+XYMGDdI333xT5fs4c+ZM2e12jR8/XoWFhTruuOP05Zdf+q4Oqfilz8HvLzQ0VJIUFhZ2yPdcH8rKyhQcHKzBgwcf/Z9dAAAAwM8tzsuTa+1atQoI0LXDhlWa98rf1XRAz2JUt66WSY4//ngNHTpU06dPr7KvuLhYYWFh+vLLLzVs2DA98MAD+uSTT/TnQb9N2bZtm9q1a6fff/+92svj/66goECRkZHKz8+vUtq3bdumtm3b/rPiM3/+/lnkD54kLSVFmj1bGjXq6M8LVKPO/uwCAAAAfuyuLVv0+M6dGpeYqDkHrUTWGFTXQ//Or+7SLyoq0pYtW6qdMK2inFfsHzBggFavXl1pVu5FixYpIiJC3bp1q/e8NTZqlJSWJn37rfTWW/s/bttGYQcAAACAf6Apr89ewdTL4++44w6NHDlSqamp2rNnjx588EHZbDZdcskl2rJli9566y2dddZZiomJ0apVqzRx4kQNHjzYt5zWGWecoW7duunyyy/XjBkzlJGRofvuu08TJkxQYGCgmW+tKptNOuUUs1MAAAAAQJOwt7xcfx6Y04rSXk927dqlSy65RPv27VNcXJxOOukk/fzzz4qLi1NZWZkWL16s2bNnq7i4WCkpKRo9erTuu+8+3/NtNpsWLFig8ePHa8CAAQoNDdXYsWM1depUE98VAAAAAKC+fX1glL1XaKgSAgJMTlN/TC3t77zzTrX7UlJS9P333x/xHKmpqfr888/rMhYAAAAAwM8tbgaXxkt+dk+7v/KzufqAI+LPLAAAAJoywzB897OfTmlvvhwOh6Sar58H+IuKP7MVf4YBAACApmRTaal2OJ0KsFg0KCrK7Dj1ytTL4/2dzWZTVFSUb3b6kJCQRrXuH5ofwzBUUlKirKwsRUVFyWazmR0JAAAAqHMVl8afGBmp0Cb+My+l/QgSExMlqdKycoC/i4qK8v3ZBQAAAJqa5rDUWwVK+xFYLBYlJSUpPj5eLpfL7DjAETkcDkbYAQAA0GS5vV5920zuZ5co7TVms9koQgAAAABgshWFhcr3eBRlt+vY8HCz49Q7JqIDAAAAADQaFZfGnxoVJVszmHOM0g4AAAAAaDQWN6NL4yVKOwAAAACgkXB6vfq5oECSdCqlHQAAAAAA//FnUZHKDUMxdrs6BgebHadBUNoBAAAAAI3Csvx8SVL/iAhZmsH97BKlHQAAAADQSCw7cGn8gMhIk5M0HEo7AAAAAKBRqLiffUBEhMlJGg6lHQAAAADg9/Y4ndrhdMoq6fhmsD57BUo7AAAAAMDvVVwa3yM0VOF2u8lpGg6lHQAAAADg95rjpfESpR0AAAAA0AgcPHN8c0JpBwAAAAD4tXKvVysKCyU1r5njJUo7AAAAAMDPrSwqktMw1MJuV6fgYLPjNChKOwAAAADAr1VMQtc/IkIWi8XkNA2L0g4AAAAA8GvLmukkdBKlHQAAAADg55rrzPESpR0AAAAA4McynE6llZXJIqkfpR0AAAAAAP9RcWl899BQRdjtJqdpeJR2AAAAAIDfas6XxkuUdgAAAACAHzt45vjmiNIOAAAAAPBLLq9XKwoLJTHSDgAAAACAX1lVXKxSr1dRdrs6h4SYHccUlHYAAAAAgF9alp8vSTohPFxWi8XkNOagtAMAAAAA/JJvErrISJOTmIfSDgAAAADwS8ua+czxEqUdAAAAAOCHssrLtbWsTJLULzzc5DTmobQDAAAAAPxOxaXx3UJCFOVwmJzGPJR2AAAAAIDf4dL4/SjtAAAAAAC/UzFzfH9KOwAAAAAA/sPt9Wp5YaGk5j1zvERpBwAAAAD4mdXFxSrxehVhs6lrSIjZcUxFaQcAAAAA+JWK+9lPiIiQ1WIxOY25KO0AAAAAAL/yM5PQ+VDaAQAAAAB+wzAMLT0wCR2lndIOAAAAAPAjz+3Zoy1lZQq0WJr9zPESpR0AAAAA4CdWFhXp9s2bJUmPtmunKIfD5ETmo7QDAAAAAExX7PHoorVr5TQMnR0To1uSk82O5Bco7QAAAAAA0928aZM2lJaqZUCA5nTuLEsznzW+AqUdAAAAAGCqtzMz9d+MDFkkzevaVbEBAWZH8huUdgAAAACAabaUlur/Nm6UJN2XmqpTWrQwOZF/obQDAAAAAExR7vXq4nXrVOjx6KTISD2Qmmp2JL9DaQcAAAAAmOLebdu0orBQLex2vdW1q+xWKurf8R0BAAAAADS4L/ft0xM7d0qS5nTpopSgIJMT+SdKOwAAAACgQeW5XBr711+SpBtbtdK/YmNNTuS/KO0AAAAAgAb12M6dynK51DUkRI+3a2d2HL9GaQcAAAAANJg9Tqee2rVLkvRou3YKstlMTuTfKO0AAAAAgAYzJS1NpV6vBkZEaGRMjNlx/B6lHQAAAADQIDaUlOjV9HRJ+0fZLRaLyYn8H6UdAAAAANAg7tu2TR5JZ8fE6KSoKLPjNAqUdgAAAABAvVteUKD/7d0ri6RH2rY1O06jQWkHAAAAANQrwzB099atkqTLExLUMyzM5ESNB6UdAAAAAFCvFuXm6pu8PAVYLJrKKHutUNoBAAAAAPXGe9Ao+w2tWik1KMjkRI0LpR0AAAAAUG/ey8rSH0VFCrfZdG/r1mbHaXQo7QAAAACAelHu9eq+bdskSXempCg2IMDkRI0PpR0AAAAAUC9eSU/XlrIyJTgcmpicbHacRsludgAAAAAAQOOUVV6uu7du1bayMnkNQ16p0sf1JSWSpPvbtFGYnfp5NPiuAQAAAABqzen1atSaNfqpoOCwx3UKDta1SUkNlKrpobQDAAAAAGrFMAyN37hRPxUUKNJm09MdOyrEapXVYpFVqvTx+PBwBVi5M/toUdoBAAAAALUya9cuzcnIkFXSe92764zoaLMjNVn8ugMAAAAAUGOf79unO7dskSTN6tCBwl7PKO0AAAAAgBpZV1ysi9etk1fStUlJuqlVK7MjNXmUdgAAAADAEe1zuTRy9WoVejwaHBmpZzp2lMViMTtWk0dpBwAAAAAclsvr1flr12prWZnaBAXpg+7dmVyugfBdBgAAAABUyzAM3bRpk77Ly1OYzaZPe/RQbECA2bGaDUo7AAAAAKBaH2Zn68X0dFkkvdW1q3qEhZkdqVmhtAMAAAAAqvXM7t2SpDtSUjQyNtbkNM0PpR0AAAAAcEibSkr0bV6erJJuZKZ4U1DaAQAAAACH9Ep6uiTpzOhotQ4KMjlN80RpBwAAAABUUe71am5GhqT9a7LDHJR2AAAAAEAVn2RnK8vlUmJAgEbExJgdp9mitAMAAAAAqnj5wKXxVyUmysGa7KbhOw8AAAAAqGRbaakW5eZKkq7m0nhTUdoBAAAAAJW8mp4uQ9LQFi3ULjjY7DjNGqUdAAAAAODj9no158AEdNcxym46SjsAAAAAwOfznBztKS9XnMOhf8XGmh2n2aO0AwAAAAB8XtqzR5I0NjFRAUxAZzr+CwAAAAAAJEm7ysr0RU6OJNZm9xeUdgAAAACAJOm/GRnySjo5MlKdQkLMjgNR2gEAAAAAkjyGoVcOrM1+bcuWJqdBBUo7AAAAAEALc3K00+lUC7tdo5mAzm9Q2gEAAAAAevnAKPsVCQkKstlMToMKlHYAAAAAaObSnU59kp0tiUvj/Q2lHQAAAACauVfT0+WRNCAiQt1DQ82Og4NQ2gEAAACgGSvzePSf3bslSTcwyu53KO0AAAAA0Iy9npmpLJdLKYGBuig+3uw4+BtKOwAAAAA0Ux7D0MydOyVJtyUny2GlIvob/osAAAAAQDP1SXa2NpaWKspu1zVJSWbHwSFQ2gEAAACgGTIMQzMOjLLf0LKlwux2kxPhUCjtAAAAANAM/ZSfr58LChRoseimVq3MjoNqUNoBAAAAoBmqGGUfm5ioxMBAk9OgOpR2AAAAAGhm1hUX69N9+2SRdHtKitlxcBiUdgAAAABoZipmjD83NladQkJMToPDobQDAAAAQDOyx+nUG5mZkqS7GGX3e5R2AAAAAGhGntq1Sy7D0KDISPWPjDQ7Do6A0g4AAAAAzUSB260X9uyRxCh7Y0FpBwAAAIBm4qU9e1Tg8ahrSIjOiokxOw5qgNIOAAAAAM1Auder2bt2SZLuTEmR1WIxORFqgtIOAAAAAE2cxzD06I4d2l1erpYBARqTkGB2JNSQ3ewAAAAAAID680tBgW7ctEkrCgslSXekpCjQyvhtY0FpBwAAAIAmKLO8XHdv3aq5GRmSpAibTVPatNHNyckmJ0NtUNoBAAAAoAlxeb16ZvduTU5LU4HHI0m6MjFR09u1U0JAgMnpUFuUdgAAAABo5AzD0LayMn2dm6vZu3ZpXUmJJOnYsDA907Ej67E3YpR2AAAAAGiEdjud+jY3V9/k5emb3Fxtdzp9+2Lsdk1v105XJSXJxizxjRqlHQAAAAAakXmZmXooLU0bSksrbXdYLOofEaHTW7TQhFatFO1wmJQQdYnSDgAAAACNxO+FhRq7fr082r9+d9/wcJ0aFaVTW7TQSZGRCrXZzI6IOkZpBwAAAIBGoNzr1bi//pJH0nmxsXq1c2e1YDS9yWNxPgAAAABoBB7avl2ri4sV53DoxU6dKOzNBKUdAAAAAPzcb4WFmr59uyTpuY4dFcfSbc0GpR0AAAAA/JjzoMviL4qL0/nx8WZHQgOitAMAAACAH5ualqY1xcWKdzj0TMeOZsdBA6O0AwAAAICfWlFQoMd27JAkPd+pk2K5LL7ZobQDAAAAgB86+LL4i+PjNSouzuxIMAGlHQAAAAD80JS0NK0tKVG8w6H/dOhgdhyYhNIOAAAAAH5m+UGXxb/AZfHNmt3sAAAAAAAAqdTj0Zc5Ofpg7159sm+fvJIuiY/XeVwW36xR2gEAAADAJEVutz47UNQ/37dPxV6vb1+P0FD9h9nimz1KOwAAAAA0oBKPRwv27dM7WVn6IidHZQcV9dTAQI2Oi9PouDj1j4iQ1WIxMSn8AaUdAAAAAOqZy+vVotxcvZ2VpY+ys1Xk8fj2dQgO1vlxcRodG6tjw8NloajjIJR2AAAAAKhjhmEoo7xcq4qL9VF2tt7PytI+t9u3v01QkC6Jj9dF8fHqFRpKUUe1KO0AAAAAUANew5DLMOTyelV+0OdOw9C20lKtLSnR2uJirSsu1tqSEuUdVNIlKd7h0EXx8bokPl79IyIo6qgRSjsAAAAAHCTX5dKq4mKtLCrSqqIirSwu1triYpUedO95TVgltQ8O1kmRkbokPl5DoqJkt7LqNmqH0g4AAACgWfEahjLLy7XD6dT2sjLtKCvTdqdT20pLtbq4WDuczhqfy26xyGGxKDkwUN1DQ9UtJETdQ0PVPTRUnYODFWSz1eM7QXNAaQcAAADQ5Lm8Xj27e7ee37NHaWVlKjeMwx6fGhio3mFh6hUWpt6hoeoVFqZou10Oq1WOA0XdbrFwiTvqnanXZkyePFmWA3/QKx5dunTx7S8rK9OECRMUExOjsLAwjR49WpmZmZXOsWPHDo0YMUIhISGKj4/XnXfeKfff7h0BAAAA0Hx9l5urY1as0MQtW7SxtFTlhiGrpJTAQJ0UGakx8fG6p3VrPd+xo37o00e5AwcqbcAAfdyzpx5q21bnx8erU0iIYgMCFGm3K8Rmk8NqpbCjQZg+0t69e3ctXrzY97Xd/v8jTZw4UZ999pnef/99RUZG6sYbb9SoUaP0008/SZI8Ho9GjBihxMRELV26VOnp6briiivkcDj0yCOPNPh7AQAAAOA/dpWV6c6tW/VOVpYkKcZu17R27XRmdLRaBQRwfzkaBdNLu91uV2JiYpXt+fn5evXVV/XWW2/p1FNPlSTNmTNHXbt21c8//6z+/ftr4cKFWrdunRYvXqyEhAT16dNHDz30kCZNmqTJkycrICCgod8OAAAAAJOVe72atWuXHkpLU7HXK6uk61u21ENt2yra4TA7HlArppf2TZs2qWXLlgoKCtKAAQM0ffp0tW7dWr/99ptcLpeGDh3qO7ZLly5q3bq1li1bpv79+2vZsmXq2bOnEhISfMcMGzZM48eP19q1a3XMMccc8jWdTqecB00uUVBQIElyuVxyuVz19E4BAAAA/FPlXq8+2LdPSwsK5DEMGdL+x0GfLy0o0KayMknSgPBwzW7XTseEhUkSP+/Db9T0z6Kppf2EE07Q3Llz1blzZ6Wnp2vKlCkaNGiQ1qxZo4yMDAUEBCgqKqrScxISEpSRkSFJysjIqFTYK/ZX7KvO9OnTNWXKlCrbFy5cqJCQkH/4rgAAAADUtTyLRV8FBOjLgADl1uCy9iivV2PLynRKfr7Sd+1SegNkBGqjpKSkRseZWtqHDx/u+7xXr1464YQTlJqaqvfee0/BwcH19rr33HOPbrvtNt/XBQUFSklJ0RlnnKGIiIh6e10AAAAAtfNHUZGeSU/Xu3v3+mZ8T3I4dElcnMLtdlmk//+wWGSRFGmz6eK4OEXaTb+wGKhWxRXfR+JXf4qjoqLUqVMnbd68WaeffrrKy8uVl5dXabQ9MzPTdw98YmKifv3110rnqJhd/lD3yVcIDAxUYGBgle0Oh0MO7nEBAAAATFXkduuTffv0/J49WpKf79t+Qni4bklO1ui4OAUwiRwauZp2T7/6k15UVKQtW7YoKSlJxx57rBwOh77++mvf/g0bNmjHjh0aMGCAJGnAgAFavXq1sg7MBilJixYtUkREhLp169bg+QEAAAAcnXKvV59kZ+uSdeuUsHSpLl2/Xkvy82W3WDQmPl4/9+2rn489VpckJFDY0ayYOtJ+xx13aOTIkUpNTdWePXv04IMPymaz6ZJLLlFkZKSuvvpq3XbbbYqOjlZERIRuuukmDRgwQP3795cknXHGGerWrZsuv/xyzZgxQxkZGbrvvvs0YcKEQ46kAwAAAPAfHsPQD3l5eisrSx/s3atct9u3r31QkC5LSNB1LVuqJT/boxkztbTv2rVLl1xyifbt26e4uDiddNJJ+vnnnxUXFydJmjVrlqxWq0aPHi2n06lhw4bpueee8z3fZrNpwYIFGj9+vAYMGKDQ0FCNHTtWU6dONestAQAAAKiBXJdLp69cqd+KinzbkgICdFF8vMbEx+u48HBZLBYTEwL+wWIYB2ZzaMYKCgoUGRmp/Px8JqIDAAAA6lmZx6Nhq1bph/x8RdhsujA+XpfEx+vkqCjZKOpoJmraQ/1qIjoAAAAATZvHMHTZ+vW+wv7jMceo14E11AFUxQwOAAAAABqEYRi6dfNmfZCdrQCLRR/16EFhB46A0g4AAACgQczYuVPP7N4tSXq9a1cNadHC5ESA/6O0AwAAAKh3b2Rk6O6tWyVJs9q310Xx8SYnAhoHSjsAAACAevVVTo6u2rBBknR7crJuTUkxORHQeFDaAQAAANSb3woLNXrNGrkNQ2Pi4zWjfXuzIwGNCqUdAAAAQL34LjdXZ65apWKvV6dFRWlOly6ysqQbUCss+QYAAACgThmGoSd37dKkLVvkkXRsWJjm9+ihACtjhkBtUdoBAAAA1Jkit1tXb9ig9/bulSRdlpCgFzt1UojNZnIyoHGitAMAAACoExtLSjRqzRqtLSmR3WLRrPbtNaFVK1m4JB44apR2AAAAAP/Yx9nZumL9ehV4PEoKCND73btrYGSk2bGARo/SDgAAAOCo7XO5NGPHDs3YuVOSNCgyUu9166bEwECTkwFNA6UdAAAAQK0YhqGfCwr0/J49ei8rS07DkCTd0qqVHm/fXg4mnAPqDKUdAAAAQI0Uut2al5mpF/bs0criYt/2Y8LCdF9qqkbFxZmYDmiaKO0AAAAADqvY49HdW7dqbkaGijweSVKQ1aqL4+M1vmVLHR8ezmRzQD2htAMAAACoVonHo7NXr9Z3eXmSpM7Bwbq+ZUuNTUxUC4fD3HBAM0BpBwAAAHBIJR6PRh4o7OE2m97u1k1nRUczqg40IEo7AAAAgCpKPR79a80afZOXpzCbTV/26qUTWcINaHBM6wgAAACgkjKPR+euWaPFubkKtVr1Rc+eFHbAJJR2AAAAAD5Or1ej1q7VwtxchVit+rxXL50UFWV2LKDZorQDAAAAkLS/sI9es0Zf5OQo2GrVZz17ajCFHTAV97QDAAAAzYTXMLQkP18FbrdchvH/H16vXIahD7Oz9UVOjoKsVi3o2VOntGhhdmSg2aO0AwAAAM3ElLQ0Td2+/bDHBFmt+rRHD51KYQf8AqUdAAAAaAa2lpbqsR07JEm9Q0MVYrPJYbEowGqVw2KRw2JRqM2mCa1aaSCTzgF+g9IOAAAANAN3bNkip2HotKgoLerdm7XWgUaCiegAAACAJu7r3Fx9mJ0tm6SnOnaksAONCKUdAAAAaMLcXq9u2bRJknRDq1bqHhpqciIAtUFpBwAAAJqwF/bs0dqSEsXY7Zrcpo3ZcQDUEqUdAAAAaKL2uVx6IC1NkvRQ27aKdjjMDQSg1ijtAAAAQBP1wLZtynW71Ss0VNe1bGl2HABHgdIOAAAANEGrior0wp49kqSnOnSQjcnngEaJ0g4AAAA0MYZh6NbNm+WVdH5cnE5p0cLsSACOEqUdAAAAaGLmZ2fr27w8BVmteqJ9e7PjAPgHKO0AAABAE1Lq8ej2zZslSXelpCg1KMjkRAD+CUo7AAAA0IRMSUvTdqdTyYGBuqt1a7PjAPiHKO0AAABAEzEvM1OP7dwpSZrdoYNCbTaTEwH4pyjtAAAAQBOwLD9fV//1lyRpUkqKRsfFmZwIQF2gtAMAAACN3PayMp27Zo2chqFzY2P1SLt2ZkcCUEco7QAAAEAjVuh26+zVq5XlcqlPWJje6NJFVtZkB5oMSjsAAADQSHkMQ5esW6c1xcVKDAjQpz16KMxuNzsWgDpEaQcAAAAaqbu2bNFnOTkKslr1SY8eSmZ5N6DJobQDAAAAjdAre/boyV27JEmvd+mi4yMiTE4EoD5Q2gEAAIBGZnFOjsZv2iRJmtqmjS6Ijzc5EYD6QmkHAAAAGpG3MzM1YvVquQ1DY+LjdV9qqtmRANQjSjsAAADQCBiGoWnbt2vM+vUqNwyNio3Vq507y8JM8UCTxtSSAAAAgJ9zeb26fuNG/TcjQ5J0e3KyZrRvz9JuQDNAaQcAAAD8WL7brfPXrtXi3FxZJf2nY0fd0KqV2bEANBBKOwAAAOCntpeVacSqVVpbUqJQq1XvdOums2NjzY4FoAFR2gEAAAA/9HthoUasXq2M8nIlBQRoQc+e6hsebnYsAA2M0g4AAAD4mT8LC3Xqn38q3+NRz9BQfdazp1KCgsyOBcAElHYAAADAj6wvLtYZq1Yp3+PRiRER+qJXL0XY+bEdaK5Y8g0AAADwE1tLSzV05UrtdbnUNyxMn1PYgWaP0g4AAAD4gV1lZRq6cqX2lJerW0iIvurVS5EUdqDZo7QDAAAAJssqL9fQlSu1raxM7YOCtLh3b8UGBJgdC4AfoLQDAAAAJsp1uXTGypXaUFqqlMBAfd2nj5ICA82OBcBPUNoBAAAAkxS63Rq+apVWFhcrweHQ4t69lcos8QAOQmkHAAAATGAYhi5ct06/FBYq2m7Xot691SkkxOxYAPwMpR0AAAAwwSf79unLnBwFWa36slcv9QwLMzsSAD9EaQcAAAAamNvr1aQtWyRJE5OTdXxEhMmJAPgrSjsAAADQwF5JT9eG0lLFOhya1Lq12XEA+DFKOwAAANCACt1uPZiWJkl6MDWVtdgBHBalHQAAAGhAT+zcqSyXSx2Cg3Vdy5ZmxwHg5yjtAAAAQAPZ43TqiZ07JUmPtmunACs/jgM4PP6WAAAAABrI5LQ0lXi9GhARoVGxsWbHAdAIUNoBAACABrC2uFivpqdLkp5o314Wi8XkRAAaA0o7AAAA0ADu3rpVXkmjYmN1YmSk2XEANBKUdgAAAKCefZebqwX79slusWh6u3ZmxwHQiFDaAQAAgHrkNQzduXWrJOn/kpLUKSTE5EQAGhNKOwAAAFCP3s3K0orCQoXbbHqgTRuz4wBoZOxmBwAAAAAaM8MwtKe8XFtLS7W9rExpZWXa7nTu/3jga0ma1Lq14gMCTE4LoLGhtAMAAAA14PZ6taWsTOuLi/VXSYnWH3j8VVKiQo/nsM/tGhKiicnJDZQUQFNCaQcAAAAOY0tpqf6za5fmZGSooJpybpOUGhSkNkFBVT8GBiolKEg2lngDcBQo7QAAAMDfGIahr3Nz9dTu3fps3z4ZB7aHWK3qEhKiriEh6hoaqq4hIeoSEqIOwcEKsDJdFIC6R2kHAAAADijxePRmZqae3rVLa0tKfNuHR0fr5latdEZ0tKyMmANoQJR2AAAAQNLW0lIN/OMPZZSXS5JCrVaNS0zUTcnJ6swybQBMQmkHAAAAJD21a5cyysuVEhioicnJuiopSZF2flwGYC7+FgIAAECz5/J69XZWliTpxU6dNDwmxuREALAfs2UAAACg2fsqJ0d7XS4lOBw6vUULs+MAgA+lHQAAAM3e65mZkqQxCQmyMws8AD/C30gAAABo1vJcLn2SnS1JujwhweQ0AFAZpR0AAADN2vt798ppGOoRGqo+YWFmxwGASijtAAAAaNYqLo2/IiFBFtZgB+BnKO0AAABotraWlmpJfr4s2n8/OwD4G0o7AAAAmq03D4yyD23RQq0CA01OAwBVUdoBAADQLBmGodczMiTtvzQeAPwRpR0AAADN0rKCAm0pK1Oo1arz4uLMjgMAh0RpBwAAQLP0xoFL40fHxSnUZjM5DQAcGqUdAAAAzY7T69U7WVmSpCsSE01OAwDVo7QDAACg2Vmwb5/y3G61CgjQKVFRZscBgGpR2gEAANDsvHFgArrLEhJkY212AH6M0g4AAIBmJbu8XJ/l5EiSLufSeAB+jtIOAACAZuWdrCy5DUN9w8LUPTTU7DgAcFiUdgAAADQrFbPGMwEdgMbAbnYAAAAAoC6VeDz6rbBQBR6PSjweFXs8KvF6VeLxKMft1q+FhbJJuiQ+3uyoAHBElHYAAAA0epnl5Vqwb58+yc7WotxclXq9hz3+zOhoxQcENFA6ADh6lHYAAAA0OoZhaH1JiT7JztbH+/bpl4ICGQftbxkQoJaBgQqxWhVisynEalXogY+Rdruub9nStOwAUBuUdgAAAPi1Ardba4qLtaqoSKuLi7WquFiri4qU7/FUOu648HCdExOjc2Jj1Ss0VBaWcgPQBFDaAQAAYArDMLSupER/FhUpx+VSrtvt+1jx+e7ycqWVlR3y+QEWi05r0ULnxMRoZGysWgUGNvA7AID6R2kHAABAg/Eahn4tKNCH2dman52tzaWlNXpeq4AA9QwLU6/QUPU68LFzSIgCrCyGBKBpo7QDAACgXrm8Xn2Xl6cPs7P1UXa20svLffsCLRb1j4hQfECAWtjtamG3K9rh8H0eHxCg7qGhinE4THwHAGAeSjsAAADqjdcwdMaqVfouL8+3Ldxm04iYGJ0XG6vh0dEKt/MjKQBUh78hAQAAUG++y8vTd3l5CrJadVlCgkbFxurUFi0UyGXtAFAjlHYAAADUm1fT0yVJYxMS9ELnzianAYDG56h+xfnjjz/qsssu04ABA7R7925J0htvvKElS5bUaTgAAAA0Xrkulz7Yu1eSdHVSkslpAKBxqnVp/+CDDzRs2DAFBwfrjz/+kNPplCTl5+frkUceqfOAAAAAaJzezsqS0zDUMzRUx4WHmx0HABqlWpf2hx9+WC+88IJefvllOQ6axXPgwIH6/fff6zQcAAAAGq+KS+OvTkqSxWIxOQ0ANE61Lu0bNmzQ4MGDq2yPjIxU3kGzggIAAKD5+rOwUL8XFclhsejS+Hiz4wBAo1Xr0p6YmKjNmzdX2b5kyRK1a9euTkIBAACgcXs1I0OSdG5srGIDAkxOAwCNV61L+7XXXqtbbrlFv/zyiywWi/bs2aN58+bpjjvu0Pjx4+sjIwAAABqRMo9H8zIzJTEBHQD8U7Ve8u3uu++W1+vVaaedppKSEg0ePFiBgYG64447dNNNN9VHRgAAADQiH2ZnK9ftVkpgoIa2aGF2HABo1CyGYRhH88Ty8nJt3rxZRUVF6tatm8LCwuo6W4MpKChQZGSk8vPzFRERYXYcAACARu30lSu1ODdXD6SmakrbtmbHAQC/VNMeWuuR9goBAQHq1q3b0T4dAAAATVBaaakW5+ZKksYlJpqcBgAav1qX9iFDhhx2yY5vvvnmHwUCAABA4zXnwAR0p0VFqW1wsMlpAKDxq3Vp79OnT6WvXS6X/vzzT61Zs0Zjx46tq1wAAABoZDyG4SvtTEAHAHWj1qV91qxZh9w+efJkFRUV/eNAAAAAaJwW5+Zqp9OpKLtd58XGmh0HAJqEWi/5Vp3LLrtM//3vf+vqdAAAAGhkXk1PlyRdGh+vIJvN5DQA0DTUWWlftmyZgoKC6up0AAAAaESyy8v1UXa2JC6NB4C6VOvL40eNGlXpa8MwlJ6erhUrVuj++++vs2AAAABoPOZlZcllGDomLEzHhIebHQcAmoxal/bIyMhKX1utVnXu3FlTp07VGWecUWfBAAAAUPdcXq+2l5Upx+1WocejwgMfCw58XuTxqNww5DEMuQ989Gj/JHMew5BXkvcQH3/Mz5fEKDsA1LVal/Y5c+bURw4AAADUEcMwVOjxaGNJif4qKdH6A4+/Skq0ubRULsOol9cNsVo1Jj6+Xs4NAM1VrUs7AAAAzGMYhlYXF+vdrCx9l5enQo9HpV6vSj0elXi9KvV6Veb1HvYcIVarYh0OhdtsCrfbFWGz+T4Pt9kUYLHIdvBDqvS1VZL1EB/7R0SohcPRAN8FAGg+alTaW7RoIYvFUqMT5uTk/KNAAAAAqOqv4mK9u3ev3snK0l8lJTV6TrzDoS4hIeoaEqKuoaG+z5MDA2Wt4c92AABz1ai0z549u55jAAAA4O/2lpfrlfR0vZOVpVXFxb7tgRaLhsfEaFRsrJICAhRssynYav3/D5tNoVarwuxcVAkAjV2N/iYfO3ZsfecAAADAQZbl5+v8tWu1p7xckmS3WHRGixa6OD5e/4qNVQSFHACahX/0t31ZWZnKD/xDUiEiIuIfBQIAAGjODMPQi3v26ObNm+UyDHUJCdEdKSk6LzZW0dwvDgDNTq1Le3FxsSZNmqT33ntP+/btq7Lf4/HUSTAAAIDmpszj0Q2bNmlORoYk6fy4OP23c2eFM6oOAM2WtbZPuOuuu/TNN9/o+eefV2BgoF555RVNmTJFLVu21Ouvv14fGQEAAJq8HWVlOumPPzQnI0NWSTPatdN73bpR2AGgmav1vwKffvqpXn/9dZ1yyim68sorNWjQIHXo0EGpqamaN2+eLr300vrICQAA0GR9nZuri9etU7bLpRi7Xe9066ah0dFmxwIA+IFal/acnBy1a9dO0v771yuWeDvppJM0fvz4uk0HAADQBKwvLtafRUXKc7uV73Yr3+PZ/9HtVo7brYU5OfJKOjYsTB/06KHUoCCzIwMA/EStS3u7du20bds2tW7dWl26dNF7772nfv366dNPP1VUVFQ9RAQAAGh8dpaV6e2sLL2VmamVBy3XVp0rExP1XMeOCrLZGiAdAKCxqPU97VdeeaVWrlwpSbr77rv17LPPKigoSBMnTtSdd9551EEeffRRWSwW3Xrrrb5tp5xyiiwWS6XH9ddfX+l5O3bs0IgRIxQSEqL4+HjdeeedcrvdR50DAADgaOW4XHpxzx6d/Mcfav3zz5q0datWFhfLYbFoUGSkzouN1bjERN3SqpUeTE3Vk+3b69XOnfV9nz56tXNnCjsAoIoaj7TfcccduuaaazRx4kTftqFDh+qvv/7Sb7/9pg4dOqhXr15HFWL58uV68cUXD/n8a6+9VlOnTvV9HRIS4vvc4/FoxIgRSkxM1NKlS5Wenq4rrrhCDodDjzzyyFFlAQAAqA3DMPRDfr6e2rVLC/btk8swfPtOjozUmIQEnR8Xx3JtAICjUuPS/vHHH2vWrFk64YQTdM011+iiiy5SaGioUlNTlZqaetQBioqKdOmll+rll1/Www8/XGV/SEiIEhMTD/nchQsXat26dVq8eLESEhLUp08fPfTQQ5o0aZImT56sgICAo84FAABwOGUej97JytLsXbsqXf7eOzRUlyYk6OL4eKVwbzoA4B+yGMZBvw4+gh9++EH//e9/9cEHH0iSLrjgAl1zzTU68cQTjzrA2LFjFR0drVmzZumUU05Rnz59NHv2bEn7L49fu3atDMNQYmKiRo4cqfvvv9832v7AAw/ok08+0Z9//uk737Zt29SuXTv9/vvvOuaYYw75mk6nU06n0/d1QUGBUlJSlJ2drYiIiKN+LwAAoOnLKC/XixkZeikjQ3tdLklSsNWqy+LidH1SknqGhpqcEADQGBQUFCg2Nlb5+fmH7aG1mohu8ODBGjx4sJ599lm9++67mjNnjk466SR17txZV199tS6//HIlJCTU+HzvvPOOfv/9dy1fvvyQ+8eMGaPU1FS1bNlSq1at0qRJk7RhwwbNnz9fkpSRkVHl9Sq+zsjIqPZ1p0+frilTplTZvnDhwkqX3wMAAEiSU9Ifdrt+cji0zOGQ22KRJMV4vRrhdOp0l0vhubnauXGjdpobFQDQSJSUlNTouFqNtB/K5s2bNWfOHL3wwgsqKiqqNIJ9ODt37tRxxx2nRYsW+e5l//tI+9998803Ou2007R582a1b99e1113nbZv366vvvrKd0xJSYlCQ0P1+eefa/jw4Yc8DyPtAADgSArcbn2em6sP9+3TV7m5KvF6ffv6h4frxqQknRcTI4e11vP6AgBQPyPtf1dcXKwff/xR33//vXJzc9W5c+caP/e3335TVlaW+vbt69vm8Xj0ww8/6JlnnpHT6ZTtbzOonnDCCZLkK+2JiYn69ddfKx2TmZkpSdXeBy9JgYGBCgwMrLLd4XDIwSQxAAA0W4Zh6N2sLL2RmanFubkqP2hsIzUwUKPi4nRxfLz68Ut+AMA/VNPueVSlfcmSJfrvf/+r//3vfzIMQxdccIEee+wxDRw4sMbnOO2007R69epK26688kp16dJFkyZNqlLYJfnuXU9KSpIkDRgwQNOmTVNWVpbi4+MlSYsWLVJERIS6det2NG8NAAA0Y9O2b9f9aWm+rzsHB2t0XJxGx8XpmLAwWQ5cFg8AQEOpcWlPT0/Xa6+9prlz52rjxo3q37+/nnzySV188cUKCwur9QuHh4erR48elbaFhoYqJiZGPXr00JYtW/TWW2/prLPOUkxMjFatWqWJEydq8ODBvsvpzzjjDHXr1k2XX365ZsyYoYyMDN13332aMGHCIUfSAQAAqvPKnj2+wn57crKuTkpSVyaVAwCYrMalPSUlRTExMbr88st19dVXq2vXrvWZSwEBAVq8eLFmz56t4uJipaSkaPTo0brvvvt8x9hsNi1YsEDjx4/XgAEDFBoaqrFjx1Za1x0AAOBIFmRn6/qNGyVJ97ZurYfbtTM5EQAA+9V4Irr58+frnHPOkd3+j26D90sFBQWKjIw84gQAAACg6fk5P1+nrlypUq9XVyYm6tXOnbkMHgBQ72raQ2vcwEeNGlUnwQAAAPzFX8XFGrF6tUq9Xp0VHa0XO3WisAMA/AprlAAAgGZpj9OpM1etUo7brX7h4Xqve3eWbwMA+B3+ZQIAAM1Ovtut4atWabvTqY7BwVrQs6dCD7FyDQAAZmt6N6gDAAAcUO71KtvlUrbLpb0HPma7XHo7M1OriouV4HDoq169FBcQYHZUAAAO6ahL++bNm7VlyxYNHjxYwcHBMgyDe8AAAECDcXu9+rmgQDudTqWXl2tPxcfycqUf+LzA46n2+eE2m77o1Uttg4MbMDUAALVT69K+b98+XXTRRfrmm29ksVi0adMmtWvXTldffbVatGihmTNn1kdOAAAASfvL+ltZWXpo+3ZtLi094vE2STEOh+IcDsUeeMQHBOiapCQdEx5e/4EBAPgHal3aJ06cKLvdrh07dlRaq/2iiy7SbbfdRmkHAAD14lBlvYXdrl6hoWoZGKikgID//zEgQEmBgYp3OBRpt8vK1YAAgEaq1qV94cKF+uqrr5ScnFxpe8eOHbV9+/Y6CwYAACAduqzH2O26s3VrTWjZUmF2pugBADRdtf5Xrri4WCEhIVW25+TkKDAwsE5CAQCA5sdrGMosL9f2sjKllZVpu9OptLIyLc7NpawDAJqtWv9rN2jQIL3++ut66KGHJEkWi0Ver1czZszQkCFD6jwgAABo2t7JzNTktDSllZXJaRiHPIayDgBormr9r96MGTN02mmnacWKFSovL9ddd92ltWvXKicnRz/99FN9ZAQAAE3U+uJijf3rL5UfKOtWSa0CA9UmKEhtgoKUGhSkjsHBGhUbS1kHADRLtf7Xr0ePHtq4caOeeeYZhYeHq6ioSKNGjdKECROUlJRUHxkBAEAT5DUMXbNhg8oNQ2dGR+u5jh2VHBgoh9VqdjQAAPzGUf3KOjIyUvfee29dZwEAAM3Ic7t3a2lBgcJsNr3UqZNSgoLMjgQAgN+p9a+yO3TooMmTJ2vTpk31kQcAADQD28vKdPfWrZKkx9q1o7ADAFCNWpf2CRMm6LPPPlPnzp11/PHH66mnnlJGRkZ9ZAMAAE2QYRi6fuNGFXu9OikyUte3bGl2JAAA/FatS/vEiRO1fPly/fXXXzrrrLP07LPPKiUlRWeccYZef/31+sgIAACakDczM/VlTo4CLRa90rmzrBaL2ZEAAPBbFsOoZm2VWvj55581fvx4rVq1Sh6Ppy5yNaiCggJFRkYqPz9fERERZscBAKDJyiovV9dff1WO261H2rbVPampZkcCAMAUNe2h/2jtlF9//VVvvfWW3n33XRUUFOiCCy74J6cDAABN3C2bNyvH7VafsDDdkZJidhwAAPxerUv7xo0bNW/ePL399tvatm2bTj31VD322GMaNWqUwsLC6iMjAABoAj7NztY7WVmySXq1c2eWdgMAoAZqXdq7dOmi448/XhMmTNDFF1+shISE+sgFAACakHy3W+M3bpQk3Z6Sor7h4SYnAgCgcah1ad+wYYM6duxYH1kAAEAT9Fthoe7dulW7y8vVIThYk9u0MTsSAACNRq1LO4UdAAAcSbnXq//t3atndu/WsoICSZJN0iudOyvYZjM3HAAAjUiNSnt0dLQ2btyo2NhYtWjRQpbDLM2Sk5NTZ+EAAEDjku506sU9e/RieroyysslSQ6LRRfExWlicrKOY5UWAABqpUalfdasWQo/cO/ZrFmzDlvaAQBA8+H2evVnUZG+z8/Xd3l5+jInR+4Dq8kmBQTo+pYtdV1SkhIDA01OCgBA41Qn67Q3dqzTDgBAzZR7vfq9sFDf5+fr+7w8LcnPV6HHU+mYgRERuik5WefFxiqAGeIBADikelun3WazKT09XfHx8ZW279u3T/Hx8fL87R9uAADQeBiGoSKPR9vLyrSlrEybS0u1pbRUmw88dpSV6e//0kfabBoUFaWTIyM1LDpaPVkCFgCAOlPr0l7dwLzT6VRAQMA/DgQAAOrXhpISfbB3r7aXlWmfy6V9breyXa79n7tcKj/CRXjRdrsGHyjpJ0dFqVdYmGzcOgcAQL2ocWl/+umnJUkWi0WvvPKKwg76LbrH49EPP/ygLl261H1CAADwj2U4nXp37169mZmpFYWFRzw+0mZTh+Bg36P9QR+TAgKY3wYAgAZS49I+a9YsSftH2l944QXZDlquJSAgQG3atNELL7xQ9wkBAMBRKXS79VF2tt7MzNTi3Fx5D2y3SRoWHa1+ERGKsdsV63Ao5sCj4vMQq5ViDgCAH6hxad+2bZskaciQIZo/f75atGhRb6EAAMDRyXO59FlOjj7Yu1df5uSo1Ov17esfEaFL4+N1YXy84rmlDQCARqHW97R/++239ZEDAAAcpazycn2cna352dn6OjdXroPuSe8YHKzLEhI0Jj5eHUJCTEwJAACORq1L++jRo9WvXz9NmjSp0vYZM2Zo+fLlev/99+ssHAAAzVWxx6PdTqd2O53KKC9XvtutQo9HhR6PCg76fJfTqV8KCuQ96LndQkI0Ki5Oo2Jj1ScsjMvcAQBoxGpd2n/44QdNnjy5yvbhw4dr5syZdZEJAIBmId/t1h+FhfqjqEhri4u1y+nU7vJy7XI6led21+pcx4aF+Yp6l9DQekoMAAAaWq1Le1FR0SGXdnM4HCooKKiTUAAANAWGYajY41G+x6M8t1u7nE79fqCk/15YqC1lZYd9fqjVquTAQCUFBirKble4zaYIm03hBz4Pt9kUdWD5tdSgoAZ6VwAAoCHVurT37NlT7777rh544IFK29955x1169atzoIBAOBvDMPQ+3v36peCApV6vfsfHo/v8xKPR8Ver/LdbuW53Spwu+U5wjnbBAXpmLAw9Q4LU+vAQCUHBqrVgUeEzcal7QAANHO1Lu3333+/Ro0apS1btujUU0+VJH399dd6++23uZ8dANBk7Swr07UbNuir3NxaP9dusSjSZlNcQID6hIWpb1iY+oaH65iwMEU7HPWQFgAANBW1Lu0jR47URx99pEceeUT/+9//FBwcrF69emnx4sU6+eST6yMjAACmMQxD/83I0G2bN6vA41GgxaKrk5IU63Ao2GpViM2mYKt1/8NmU6jVqki7XVF2uyIPPFjzHAAAHC2LYRy0LkwzVVBQoMjISOXn5ysiIsLsOAAAP/H30fX+ERGa07kzE70BAIB/rKY91Ho0J8/Ly9Mrr7yif//738rJyZEk/f7779q9e/fRpQUAwI8YhqFX09PVY/lyfZWbq0CLRY+3a6clxxxDYQcAAA2q1pfHr1q1SkOHDlVkZKTS0tJ0zTXXKDo6WvPnz9eOHTv0+uuv10dOAADq1F/FxfqrpETZLpf2ud3a53Lt/9zlUlpZmVYVF0tidB0AAJir1qX9tttu07hx4zRjxgyFh4f7tp911lkaM2ZMnYYDAKCulXu9+vfWrZq5a9dhjwu0WPRw27aamJIiG/ejAwAAk9S6tC9fvlwvvvhile2tWrVSRkZGnYQCAKA+bCop0SXr1um3oiJJ0vHh4Yp3OBTjcCj2wMcYh0Mxdrv6RUSoNWufAwAAk9W6tAcGBqqgoKDK9o0bNyouLq5OQgEAUNdez8jQDRs3qtjrVbTdrv926aJ/xcaaHQsAAOCwaj0R3TnnnKOpU6fK5XJJkiwWi3bs2KFJkyZp9OjRdR4QAIB/osDt1mXr1mnsX3+p2OvVKVFRWnnccRR2AADQKNS6tM+cOVNFRUWKj49XaWmpTj75ZHXo0EHh4eGaNm1afWQEAOCo/FpQoGNWrNC8rCzZJD3ctq0W9+6tZC57BwAAjUStL4+PjIzUokWLtGTJEq1atUpFRUXq27evhg4dWh/5AACotdVFRZqxc6fezsyUR1JqYKDe6tZNJ0ZGmh0NAACgViyGYRhmhzBbTRe1BwD4tyV5eXp0xw59lpPj23ZRXJxe6NRJUQ6HickAAAAqq2kPrdFI+9NPP63rrrtOQUFBevrppw97bFhYmLp3764TTjihdokBADgKXsPQ5/v26dEdO/TTgYlSLZIuiIvTXa1b69iDlicFAABobGo00t62bVutWLFCMTExatu27WGPdTqdysrK0sSJE/X444/XWdD6xEg7ADQ+5V6v3s7K0hM7d2pNcbEkKcBi0bjERN2RkqKOISEmJwQAAKheTXtovVwev2jRIo0ZM0Z79+6t61PXC0o7ADQe+W63XtqzR0/t2qXd5eWSpHCbTeNbttStyclKCgw0OSEAAMCR1enl8bV10kkn6b777quPUwMAmqldZWWavWuXXkpPV6HHI0lKCgjQLcnJ+r+kJO5ZBwAATdJRjbR//fXXmjVrltavXy9J6tq1q2699dZGO4M8I+0AUP+8hqGtpaXKdbtV4PGowO1W/kGfFx0o4oey3enU//bulfvAP1ndQ0J0R0qKLklIUKC11quXAgAAmK7eRtqfe+453XLLLTr//PN1yy23SJJ+/vlnnXXWWZo1a5YmTJhw9KkBAE3SD3l5unHTJq0+cO/50TolKkp3pqRoeHS0LBZLHaUDAADwX7UeaU9OTtbdd9+tG2+8sdL2Z599Vo888oh2795dpwEbAiPtAFA/9jidumvLFs3LypIkBVmtinc4FGG3K8JmU+SBjxF2u0JtNlU3Zh5gtWp0bKyO4+9oAADQRNTbSHteXp7OPPPMKtvPOOMMTZo0qbanAwA0QeVer57etUtTtm9Xkccji6T/a9lSD7dtqxjuPQcAAKixWt8IeM455+jDDz+ssv3jjz/W2WefXSehAACN1+KcHPVesUJ3bt2qIo9H/SMitOLYY/V8p04UdgAAgFqq0Uj7008/7fu8W7dumjZtmr777jsNGDBA0v572n/66Sfdfvvt9ZMSAOD3cl0uTdi0SW8fuBQ+zuHQjHbtdEVioqzcfw4AAHBUanRPe9u2bWt2MotFW7du/cehGhr3tAPAP/NNbq7G/vWXdjmdskq6sVUrTWnThmXYAAAAqlGn97Rv27atzoIBAJoOp9ere7du1cxduyRJHYOD9WbXrurHL0ABAADqRK0noquQnZ0tSYqNja2zMACAxmN1UZEuW79eqw4s4/Z/SUma2aGDQm02k5MBAAA0HbWaiC4vL08TJkxQbGysEhISlJCQoNjYWN14443Ky8urp4gAAH/iNQzN3rlTx//2m1YVFyvO4dAnPXrohc6dKewAAAB1rMYj7Tk5ORowYIB2796tSy+9VF27dpUkrVu3TnPnztXXX3+tpUuXqkWLFvUWFgDQ8AzD0KbSUi0rKNCy/Hz9kJ+v9SUlkqQR0dF6tUsXJQQEmJwSAACgaapxaZ86daoCAgK0ZcsWJSQkVNl3xhlnaOrUqZo1a1adhwQA1B+X16t8t1v5Hs/+j2638txurSsp0bL8fP1cUKB9bnel5wRbrXqyfXv9X8uWsjAzPAAAQL2p0ezxktSmTRu9+OKLGjZs2CH3f/nll7r++uuVlpZWl/kaBLPHA2jqXF6vNpSUaHVxsdYUF/s+ZpaXq8TrPeLzAy0WHRcergGRkRoQEaHBkZGKZXQdAADgqNXp7PGSlJ6eru7du1e7v0ePHsrIyKhdSgBAvSnzeDRxyxb9lJ+vv0pK5DrC72hDrVZF2u2KstsVaberdWCgr6T3CQtTgLVW06AAAACgDtS4tMfGxiotLU3JycmH3L9t2zZFR0fXWTAAwD/zUnq6Xtizx/d1uM2mHqGh6lnxCAtTSmCgoux2RdhsslPKAQAA/E6NS/uwYcN07733atGiRQr42yWRTqdT999/v84888w6DwgAqD2316snd+6UJN2XmqprkpLUOjCQ+88BAAAamVpNRHfcccepY8eOmjBhgrp06SLDMLR+/Xo999xzcjqdeuONN+ozKwCght7fu1fbnU7FORz6d+vWCmYpNgAAgEapxqU9OTlZy5Yt0w033KB77rlHFfPXWSwWnX766XrmmWeUkpJSb0EBADVjGIYePzDKflOrVhR2AACARqzGpV2S2rZtqy+++EK5ubnatGmTJKlDhw7cyw4AfuSbvDz9UVSkEKtVN7RqZXYcAAAA/AO1Ku0VWrRooX79+tV1FgBAHXh8xw5J0lVJSYpxOExOAwAAgH+CqYIBoAlZVVSkr3JzZZV0WzWrfQAAAKDxoLQDQBPyxIF72c+Pi1Pb4GCT0wAAAOCforQDQBOxs6xMb2dlSZLuZGJQAACAJoHSDgBNxOxdu+Q2DJ0SFaXjIiLMjgMAAIA6QGkHgCYgz+XSS+npkhhlBwAAaEoo7QDQBLyYnq4ij0fdQ0I0nGU4AQAAmgxKOwA0ck6vV0/t2iVJuiMlRRaLxeREAAAAqCuUdgBo5N7KzFR6eblaBgRoTEKC2XEAAABQhyjtANCIeQ3Dt8zbrcnJCrDy1zoAAEBTwk93ANBI/VlYqPPWrNG6khKF22y6rmVLsyMBAACgjtnNDgAAqJ0/Cws1Zft2fZSdLUmySJrWtq0i7fyVDgAA0NTwEx4ANBKHKuuXxMfrvtRUdQ0NNTccAAAA6gWlHQD83KaSEt21dStlHQAAoBmitAOAn3J5vZq5c6cmp6XJaRiUdQAAgGaI0g4Afmh5QYGu3bBBK4uLJUmnt2ihpzp0oKwDAAA0M5R2APAjxR6P7t+2TU/t2iWvpGi7XbM7dNBlCQmyWCxmxwMAAEADo7QDgJ/4KidH12/cqLSyMknSpfHxmtWhg+ICAkxOBgAAALNQ2gHADzy6fbvu2bZNktQ6MFAvdOqk4TExJqcCAACA2SjtAGCyD/fu9RX2m1q10iNt2yqMNdcBAAAgSjsAmGp1UZEuX79e0v7C/nTHjiYnAgAAgD+xmh0AAJqr7PJynbNmjYq9Xp0WFaUn27c3OxIAAAD8DKUdAExQ7vXq/LVrlVZWpvZBQXqve3fZrfyVDAAAgMr4CREATHDL5s36Pj9f4TabPunZU9EOh9mRAAAA4Ico7QDQwJ7fvVsv7Nkji6S3unZVt9BQsyMBAADAT1HaAaABfZubq5s3b5YkTW/XTmfHxpqcCAAAAP6M0g4ADeSv4mJdsHat3IahMfHxuislxexIAAAA8HMs+QYA9WxjSYke3bFDb2Rmym0YOi48XK907iyLxWJ2NAAAAPg5SjsA1JPVRUV6ZMcOvZeVJe+Bbae3aKG5Xboo2GYzNRsAAAAaB0o7ANSx3woL9fD27fooO9u3bWRMjO5NTdUJEREmJgMAAEBjQ2kHgFpye71aXVysHU6ndpaV7f/odGpHWZl2HvhckiySzo+L079bt1af8HBzQwMAAKBRorQDQC1klZfr9JUrtaq4uNpjbJLGJCTontat1ZXl3AAAAPAPUNoBoIayy8s1dOVKrS4uVpjNpq4hIUoJDFRKYKBaBwX5Pu8QHKzYgACz4wIAAKAJoLQDQA3kuFw6fdUqrS4uVlJAgL7v00cdQ0LMjgUAAIAmjnXaAeAI8t1uDVu1Sn8WFSne4dA3vXtT2AEAANAgKO0AcBiFbrfOXLVKKwoLFetw6OvevdWF+9QBAADQQCjtAFCNYo9HZ61erZ8LCtTCbtfi3r3VIyzM7FgAAABoRijtAHAIJR6PRq5erSX5+Yq02bSod2/1prADAACggVHaAeBvDMPQBWvX6tu8PIXbbPqqd28dyzrrAAAAMAGlHQD+5vOcHH2ek6Mgq1Vf9OqlEyIizI4EAACAZorSDgAHMQxDk9PSJEk3tWqlgZGR5gYCAABAs0ZpB4CDLNi3TysKCxVqterOlBSz4wAAAKCZo7QDwAGGYejBA6PsN7ZqpbiAAHMDAQAAoNmjtAPAAR9nZ+uPoiKF2Wy6g1F2AAAA+AFKOwBI8h50L/vNrVopllF2AAAA+AFKOwBI+jA7WyuLixVus+l2RtkBAADgJyjtAJq9g0fZb0lOVrTDYW4gAAAA4ABKO4Bm74O9e7WmuFgRNptuS042Ow4AAADgQ2kH0Kx5Dhpln5icrBaMsgMAAMCPUNoBNGvvZ2VpXUmJIm023cooOwAAAPwMpR1As+UxDE3Zvl2SdFtKiqIYZQcAAICfobQDaLbezcrSXyUlamG36xZG2QEAAOCHKO0AmqWf8/N137ZtkqTbU1IUabebnAgAAACoip9SATQrS/LyNHX7di3KzZUkJQYE6KZWrUxOBQAAABwapR1Ak2cYhr4/UNa/zcuTJNktFl2RkKD7U1MVwSg7AAAA/BQ/qQJo0r7LzdUDaWn6MT9fkuSwWHRVYqLubt1abYKDTU4HAAAAHB6lHUCT9b+sLF2wbp0kKcBi0bVJSZrUurVSgoJMTgYAAADUDKUdQJO0qqhIY//6S5I0Jj5eM9q3V6vAQJNTAQAAALVDaQfQ5GSXl+tfa9aoxOvV6S1a6LUuXWS3slgGAAAAGh9+igXQpLi8Xl24bp3SysrUPihI73TrRmEHAABAo+U3P8k++uijslgsuvXWW33bysrKNGHCBMXExCgsLEyjR49WZmZmpeft2LFDI0aMUEhIiOLj43XnnXfK7XY3cHoA/uL2LVv0bV6ewmw2fdyzp6IdDrMjAQAAAEfNL0r78uXL9eKLL6pXr16Vtk+cOFGffvqp3n//fX3//ffas2ePRo0a5dvv8Xg0YsQIlZeXa+nSpXrttdc0d+5cPfDAAw39FgD4gVfT0/Wf3bslSW927aruoaEmJwIAAAD+GdNLe1FRkS699FK9/PLLatGihW97fn6+Xn31VT355JM69dRTdeyxx2rOnDlaunSpfv75Z0nSwoULtW7dOr355pvq06ePhg8froceekjPPvusysvLzXpLAEywND9f4zdulCRNbdNG/4qNNTkRAAAA8M+ZPhHdhAkTNGLECA0dOlQPP/ywb/tvv/0ml8uloUOH+rZ16dJFrVu31rJly9S/f38tW7ZMPXv2VEJCgu+YYcOGafz48Vq7dq2OOeaYQ76m0+mU0+n0fV1QUCBJcrlccrlcdf0WAdSzXU6nRq1ZI5dh6LyYGN3VsiX/LwMAAMCv1fTnVVNL+zvvvKPff/9dy5cvr7IvIyNDAQEBioqKqrQ9ISFBGRkZvmMOLuwV+yv2VWf69OmaMmVKle0LFy5USEhIbd8GAJMYkrbYbHo+KEiZdrvaeDy6cOtWfbl1q9nRAAAAgMMqKSmp0XGmlfadO3fqlltu0aJFixQUFNSgr33PPffotttu831dUFCglJQUnXHGGYqIiGjQLABqb1Npqd7Zu1fv7N2rTWVlkqQYu11fHXus2jbw3ycAAADA0ai44vtITCvtv/32m7KystS3b1/fNo/Hox9++EHPPPOMvvrqK5WXlysvL6/SaHtmZqYSExMlSYmJifr1118rnbdidvmKYw4lMDBQgYGBVbY7HA45mGka8EsZTqfe3btX8zIztbyw0Lc92GrVOTEx+ndqqjqFhZmYEAAAAKi5mnZP00r7aaedptWrV1faduWVV6pLly6aNGmSUlJS5HA49PXXX2v06NGSpA0bNmjHjh0aMGCAJGnAgAGaNm2asrKyFB8fL0latGiRIiIi1K1bt4Z9QwDqzct79mjCpk1yGYYkySbp9OhojYmP17mxsQq3mz49BwAAAFAvTPtJNzw8XD169Ki0LTQ0VDExMb7tV199tW677TZFR0crIiJCN910kwYMGKD+/ftLks444wx169ZNl19+uWbMmKGMjAzdd999mjBhwiFH0gE0PjN37tQdW7ZIkvqFh+vyhARdEB+vhIAAk5MBAAAA9c+vh6dmzZolq9Wq0aNHy+l0atiwYXruued8+202mxYsWKDx48drwIABCg0N1dixYzV16lQTUwOoC4ZhaHJamqZu3y5JmpSSount2slisZicDAAAAGg4FsM4cL1pM1ZQUKDIyEjl5+czER3gBwzD0G1btmj2rl2SpEfattU9qakmpwIAAADqTk17qF+PtANofjyG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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(12, 9))\n", "ser1 = plt.plot(mip_obj_vals, \"c-\", label=\"Feasible Solutions\")\n", "plt.title(\"Feasible solutions to QAP\")\n", "ax = plt.gca()\n", "plt.xlabel(\"Feasible Solution\")\n", "ax.get_xaxis().set_visible(False)\n", "plt.ylabel(\"Objective Value\")\n", "# ser2 = plt.plot([0, len(mip_obj_vals)-1], [results[\"energies\"][0], results[\"energies\"][0]], label=\"Found Solution\")\n", "obj_val = results[\"objective_values\"][0]\n", "idx = find_index_of_nearest(mip_obj_vals, obj_val)\n", "ser2 = plt.scatter([idx], [obj_val], c=\"r\", marker=\"o\", label=\"Found Solution\")\n", "plt.legend()\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusion\n", "\n", "In this tutorial, we have learned about the quadratic assignment problem. While distinct quadratic assignment shares the same constraint structure as [the traveling salesperson problem](https://quantumcomputinginc.com/learn/tutorials-and-use-cases/traveling-salesperson-on-dirac). While less well known than the traveling salesperson problem, quadratic assignment is a rich problem that has many practical applications. A logical next step could be to explore other constrained problems that our devices can solve through the [quadratic linearly constrained binary optimization](https://quantumcomputinginc.com/learn/tutorials-and-use-cases/quadratic-linearly-constrained-binary-optimization) page. Of course, another option is to start using our device to solve some of your own optimization problems." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.7" }, "vscode": { "interpreter": { "hash": "e4e5229f39531d576486b7a7581587d21e0df360ca01eb3c7a4911d025aa9da2" } } }, "nbformat": 4, "nbformat_minor": 4 }