{
"cells": [
{
"cell_type": "markdown",
"id": "453eceaa-8159-4a7e-85dd-0562d6bb98c7",
"metadata": {},
"source": [
"# Rank reversals\n",
"\n",
"This tutorial provides an overview of the use of the scikit-criteria ranking comparison tools.\n",
"\n",
"## Context and motivation\n",
"\n",
"Multi-criteria decision methods may present irregularities in their rankings that compromise the reliability of their results.\n",
"Depending on how the alternatives are defined and evaluated in a problem, rank reversals are classified in five types.\n",
"To evaluate the robustness of these methods, Wang & Triantaphyllou (2006) proposed three test criteria that cover all five kinds of rank reversals.\n",
"\n",
"1. **Rank invariance**: The rank of an optimal alternative must remain invariant when a sub-optimal alternative is worsened.\n",
"2. **Transitivity**: when a decision problem is partitioned in smaller sub-problems, the relative transitivity of alternatives must be retained.\n",
"2. **Recomposition consistency**: a new ranking constructed from a set of smaller sub-problems must be equivalent to the ranking obtained from running the original method."
]
},
{
"cell_type": "markdown",
"id": "d8ef800d-3778-4d70-9c67-75d443e8a577",
"metadata": {
"jp-MarkdownHeadingCollapsed": true
},
"source": [
"## Rank reversal checking in scikit-criteria\n",
"\n",
"In scikit-criteria we implement rank reversal checking via the classes `RankInvariantChecker` and `TransitivityChecker`, which are available in the `skcriteria.ranksrev` module. Rank reversal checkers take an MCDM as a parameter, along with other relevant information, and implement an `evaluate()` method against a specific decision matrix.\n",
"\n",
"In the following sections we'll review the usage of each checker to verify the validity of some example MCDMs."
]
},
{
"cell_type": "markdown",
"id": "46ce5423-e36a-412c-9f23-8236f9ad03f2",
"metadata": {},
"source": [
"## Test criterion 1 - Rank Invariance\n",
"\n",
"Test criterion 1 evaluates the stability of an MCDM method's top-ranked alternative under minor degradations of non-optimal alternatives, which roughly attempts to detect rank reversals due to irrelevant changes.\n",
"\n",
"In its most basic form, the `RankInvariantChecker` works by worsening each sub-optimal alternative by a chosen amount `repeat` times, and stores every result in a `RanksComparator`."
]
},
{
"cell_type": "markdown",
"id": "1954a03e-2c13-4ac6-9d38-6e553113d9da",
"metadata": {},
"source": [
"### Example\n",
"\n",
"We will apply this test to the Van 2021 Evaluation dataset, which ranks cryptocurrencies using a sliding window of 7 days."
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "533abdd8",
"metadata": {},
"outputs": [],
"source": [
"import skcriteria as skc\n",
"from skcriteria.pipeline import mkpipe\n",
"from skcriteria.preprocessing.scalers import SumScaler, VectorScaler\n",
"from skcriteria.preprocessing.invert_objectives import InvertMinimize\n",
"from skcriteria.agg.similarity import TOPSIS\n",
"from skcriteria.ranksrev import RankInvariantChecker"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "169e6611-f695-4f3e-af8f-22e13a6faeb8",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
Alternatives
\n",
"
ADA
\n",
"
BNB
\n",
"
BTC
\n",
"
DOGE
\n",
"
ETH
\n",
"
LINK
\n",
"
LTC
\n",
"
XLM
\n",
"
XRP
\n",
"
\n",
" \n",
" \n",
"
\n",
"
Rank
\n",
"
8
\n",
"
2
\n",
"
1
\n",
"
5
\n",
"
4
\n",
"
6
\n",
"
7
\n",
"
3
\n",
"
9
\n",
"
\n",
" \n",
"
\n",
"Method: TOPSIS\n",
"
"
],
"text/plain": [
"Alternatives ADA BNB BTC DOGE ETH LINK LTC XLM XRP\n",
"Rank 8 2 1 5 4 6 7 3 9\n",
"[Method: TOPSIS]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Load Van 2021 Evaluation Dataset of cryptocurrencies\n",
"dm = skc.datasets.load_van2021evaluation(windows_size=7)\n",
"\n",
"# Create the MCDA pipeline\n",
"dmaker = mkpipe(\n",
" InvertMinimize(),\n",
" SumScaler(target=\"weights\"),\n",
" VectorScaler(target=\"matrix\"),\n",
" TOPSIS()\n",
")\n",
"\n",
"original_result = dmaker.evaluate(dm)\n",
"display(original_result)"
]
},
{
"cell_type": "markdown",
"id": "70c35739",
"metadata": {},
"source": [
"Now we wrap our MCDA method with the `RankInvariantChecker`, which will:\n",
"- Apply small degradations to each suboptimal alternative,\n",
"- Recompute the ranking each time,\n",
"- Collect and compare all rankings.\n",
"\n",
"We'll repeat the mutation twice per alternative."
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "ef8a1bde",
"metadata": {},
"outputs": [],
"source": [
"# Create the stability evaluator\n",
"rrt1 = RankInvariantChecker(\n",
" dmaker=dmaker,\n",
" repeat=2,\n",
" allow_missing_alternatives=True\n",
")\n",
"\n",
"# Execute the RRT1 test\n",
"comparison = rrt1.evaluate(dm)"
]
},
{
"cell_type": "markdown",
"id": "97ef2173",
"metadata": {},
"source": [
"We can plot a boxplot of the ranks received by each alternative across all RRT1 mutations. \n",
"This allows us to observe:\n",
"- How stable each alternative's position is,\n",
"- Whether the top-ranked option remains consistent,\n",
"- How sensitive each alternative is to perturbations."
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "a86538df",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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G+WcN29esftK+zp16hSKovDll19y88034+PjQ0BAAB06dODjjz8mOztbs9fj5uZG3bp16d27N1999RUmk6nYtlu2bOHOO+8kMDAQDw8PWrVqxYcffojRaCyx3/Xr1zNw4ECCg4Px8PCgYcOGjBgxgk2bNhVts2HDhjL/nZKSkmz+2q91/f+r+cvDw6Pc/9MNGzYwb948AgICSt23Tqdj2bJl1fp6SvPwww8zZMiQUu+LjIzk448/LnZdp9Oxbdu2YttNmDCB7t27F11/4403aNu2bbFtNm/eTEBAABMmTKjQ8kfV4drXfv3v4NK+5s2bB6jv4zvvvJOgoCC8vLxo3rw5zz//POfOndPuxVzHaDTSpUsX7rnnnmK3p6WlER4eziuvvFL0mvfu3VvqPsy/u5o1a1bivkWLFqHT6YiMjLRBestZ8nrNX7Vq1aJbt25s3ry52GPeeOONom1cXV2JjIzkueeeIzMzszpfktVJYWcjc+fOZdy4cWzatImEhIQS969du5bExET27dvHtGnTOHToEG3atGHdunUW70tL/fr1IzExkcTERNatW4erqysDBw4sto1Op2PKlClW2Zc9KCvniBEjim5PTEykc+fOPPHEE8VuCw8P51//+hcTJkxg8ODBrF+/nr179/Laa6/xyy+/sHr1as1ez6lTp/jtt9/o0aMH48ePZ+DAgRQWFgKwdOlSunXrRlhYGOvXr+fw4cOMHz+et956i/vuu6/YH/BZs2bRs2dPgoKCWLhwIUeOHGHp0qV06dKF5557rsTzHzlypNi/UWJiInXq1Km212927f+r+Ss+Pr7Y9eHDh5fYrkuXLtWetTp4eHjw4osvWvSYlStX0rdvXyZOnMjHH39slysChYeHF/v/e/7552nRokWx20aMGMEXX3xBr169CAkJYfHixfzzzz98/vnnpKWl8cEHH2j9Moro9XrmzZvHqlWr+OGHH4puHzduHLVq1eL111+v0H68vb25cOECW7duLXb73LlzadCggVUzV4Ulr9f8d3bTpk2EhoYycOBAzp8/X2x/5v/7U6dO8e677/Lll1/y/PPPV9vrsQlFWF1GRobi4+OjHD58WBkxYoTy9ttvF90XFxenAMqePXuKPcZoNCrdu3dXIiIilMLCwgrtS2sPPfSQMnjw4GK3bd68WQGUCxcuKIqiKIAyadIkxcXFRdm/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",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"ax = comparison.plot()\n",
"ax.plot(\n",
" original_result,\n",
" marker=\"o\",\n",
" linestyle=\"--\",\n",
" color=\"orange\",\n",
" label=\"Original results\",\n",
" zorder=3,\n",
")\n",
"ax.legend()\n",
"plt.tight_layout();"
]
},
{
"cell_type": "markdown",
"id": "3b5559ec-653b-4b82-afe4-5e97f7758ee1",
"metadata": {},
"source": [
"## Test criterions 2 & 3 - Transitivity and Recomposition Consistency\n",
"\n",
"Test criterions 2 and 3 are closely connected in their goal of evaluating the internal consistency and robustness MCDMs via problem decomposition.\n",
"\n",
"- **Test Criterion 2 (Transitivity):** Ensures that transitivity holds across pairwise comparisons that is, if alternative $A_1 \\succ A_2$, and $A_2 \\succ A_3$, then $A_1 \\succ A_3$.\n",
"- **Test Criterion 3 (Recomposition Consistency):** Builds a total ordering from pairwise relationships to recompose them into a complete global ranking for comparison against the original ranking.\n",
"\n",
"Because of this similarity, we opted to unify both criteria into a single class `TransitivityChecker`, that runs both tests secuentially and yields all the relevant details about the test criterions that were encountered in the process."
]
},
{
"cell_type": "markdown",
"id": "a8b6093a-52bf-4c09-8b43-67cf2b44f4c6",
"metadata": {},
"source": [
"### Example failing both test cases\n",
"\n",
"For this example we'll use a dataset proposed by Poh & Ang (1999) in search of alternative fuels for land transportation in Singapore."
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "7d7fd0fb-4da1-4800-81f8-ec2b6c020ec8",
"metadata": {},
"outputs": [],
"source": [
"import skcriteria as skc\n",
"from skcriteria.pipeline import mkpipe\n",
"from skcriteria.preprocessing.scalers import SumScaler, VectorScaler\n",
"from skcriteria.preprocessing.invert_objectives import InvertMinimize\n",
"from skcriteria.preprocessing.filters import FilterNonDominated\n",
"from skcriteria.agg.similarity import TOPSIS\n",
"from skcriteria.ranksrev.rank_transitivity_check import RankTransitivityChecker"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "ade84c5f-25c2-4aab-8cf4-1c1f6c2ff777",
"metadata": {},
"outputs": [],
"source": [
"# Create a decision matrix\n",
"dm = skc.mkdm(\n",
" matrix=[\n",
" [4.57, 4.64, 62.2, 43.8, 8.49, 65.7],\n",
" [65.7, 67.3, 6.03, 43.8, 4.25, 9.42],\n",
" [20.3, 14.0, 20.2, 6.25, 58.3, 20.3],\n",
" [9.42, 14.0, 11.5, 6.25, 29.0, 4.57],\n",
" ],\n",
" objectives=[max, max, max, max, max, max],\n",
" alternatives=[\"status quo\", \"oil & ev\", \"oil & ngv\", \"methanol\"],\n",
" criteria=[\"supply\", \"emission\", \"tech\", \"safety\", \"cost\", \"consumer preference\"],\n",
")"
]
},
{
"cell_type": "markdown",
"id": "e4f47f87",
"metadata": {},
"source": [
"To pick our best choice, we'll use a TOPSIS based method and print the resulting ranking."
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "7ccaef4a-2f10-42ab-8bc5-056681066012",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
Alternatives
\n",
"
status quo
\n",
"
oil & ev
\n",
"
oil & ngv
\n",
"
methanol
\n",
"
\n",
" \n",
" \n",
"
\n",
"
Rank
\n",
"
2
\n",
"
1
\n",
"
3
\n",
"
4
\n",
"
\n",
" \n",
"
\n",
"Method: TOPSIS\n",
"
"
],
"text/plain": [
"Alternatives status quo oil & ev oil & ngv methanol\n",
"Rank 2 1 3 4\n",
"[Method: TOPSIS]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Define TOPSIS pipeline\n",
"dmaker = mkpipe(\n",
" SumScaler(target=\"weights\"), \n",
" VectorScaler(target=\"matrix\"), \n",
" TOPSIS()\n",
")\n",
"\n",
"# Get original ranking\n",
"original_result = dmaker.evaluate(dm)\n",
"display(original_result)"
]
},
{
"cell_type": "markdown",
"id": "7b627ad8-eb32-49ab-be37-a2c6a3b08232",
"metadata": {},
"source": [
"To verify that we made the right choice picking TOPSIS, we'll be using the `TransitivityChecker`.\n",
"As we stated before, for this we'll need our original pipeline, but we also add two extra parameters:\n",
"\n",
"* `allow_missing_alternatives`: desicion maker pipelines can sometimes return rankings with fewer alternatives than the original ones (using a pipeline that implements a filter, for example), which could cause issues in some partitions. This parameter allows for missing alternatives in a ranking to be added with a value of the maximum value of the ranking obtained + 1.\n",
"\n",
"* `max_ranks`: limits the amount of rankings that can be constructed during the recomposition phase."
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "146301d0",
"metadata": {},
"outputs": [],
"source": [
"checker = RankTransitivityChecker(\n",
" dmaker,\n",
" allow_missing_alternatives=True,\n",
" max_ranks=10\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "f2e8e63f-e48f-43a2-854f-404182ed7540",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Transitivity Analysis Results:'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'Test Criterion 2 (Transitivity): False'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'Test Criterion 3 (Recomposition Consistency): False'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'Transitivity Break Rate: 0.5000'"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"results = checker.evaluate(dm=dm)\n",
"\n",
"display(\"Transitivity Analysis Results:\")\n",
"display(f\"Test Criterion 2 (Transitivity): {results.e_.test_criterion_2}\")\n",
"display(f\"Test Criterion 3 (Recomposition Consistency): {results.e_.test_criterion_3}\")\n",
"display(f\"Transitivity Break Rate: {results.e_.transitivity_break_rate:.4f}\")"
]
},
{
"cell_type": "markdown",
"id": "e2e94749",
"metadata": {},
"source": [
"The `TransitivityChecker` evaluation provides several key pieces of information:\n",
"\n",
"1. **Test Criterion 2 Result**: Indicates whether the method maintains transitivity across all pairwise comparisons\n",
"2. **Test Criterion 3 Result**: Shows whether the recomposed ranking matches the original ranking\n",
"3. **Transitivity Break Rate**: A normalized measure of how many transitivity violations exist relative to the theoretical maximum.\n",
"\n",
"Given that our pipeline failed the test, we should be able to see many different rankings of our original desicion matrix."
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "c1a944ba",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Ranking Comparison'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"
"
],
"text/plain": [
"Alternatives PE JN AA GN FX MM\n",
"Rank 3 4 2 1 5 5\n",
"[Method: TOPSIS]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
Alternatives
\n",
"
PE
\n",
"
JN
\n",
"
AA
\n",
"
GN
\n",
"
FX
\n",
"
MM
\n",
"
\n",
" \n",
" \n",
"
\n",
"
Rank
\n",
"
3
\n",
"
4
\n",
"
2
\n",
"
1
\n",
"
5
\n",
"
5
\n",
"
\n",
" \n",
"
\n",
"Method: TOPSIS + RRT3 RECOMPOSITION_1\n",
"
"
],
"text/plain": [
"Alternatives PE JN AA GN FX MM\n",
"Rank 3 4 2 1 5 5\n",
"[Method: TOPSIS + RRT3 RECOMPOSITION_1]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'Transitivity Analysis Results:'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'Test Criterion 2 (Transitivity): True'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'Test Criterion 3 (Recomposition Consistency): True'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'Transitivity Break Rate: 0.0000'"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Create a decision matrix for energy alternatives\n",
"dm = skc.datasets.load_simple_stock_selection()\n",
"\n",
"# Define TOPSIS pipeline\n",
"dmaker = mkpipe(InvertMinimize(), FilterNonDominated(), TOPSIS())\n",
"\n",
"# Get original ranking\n",
"original_result = dmaker.evaluate(dm)\n",
"display(original_result)\n",
"\n",
"# Create the transitivity checker\n",
"checker = RankTransitivityChecker(dmaker, allow_missing_alternatives=True, max_ranks=1000)\n",
"\n",
"# Run the transitivity evaluation\n",
"results = checker.evaluate(dm=dm)\n",
"display(results[\"Original\"])\n",
"display(results[\"Recomposition1\"])\n",
"\n",
"display(\"Transitivity Analysis Results:\")\n",
"display(f\"Test Criterion 2 (Transitivity): {results.e_.test_criterion_2}\")\n",
"display(f\"Test Criterion 3 (Recomposition Consistency): {results.e_.test_criterion_3}\")\n",
"display(f\"Transitivity Break Rate: {results.e_.transitivity_break_rate:.4f}\")"
]
},
{
"cell_type": "markdown",
"id": "c533a0ca",
"metadata": {},
"source": [
"The plot below shows the ranking results for each alternative, with confidence intervals indicating the stability of rankings across different evaluation scenarios. The dashed line connects the mean ranks to visualize potential transitivity issues in the decision matrix."
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "ab31d68f",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABo4UlEQVR4nO3deVxU9f7H8dewKiq4gYiiqLjv2qbmlppbpdU1M7u2W10z119dbputWl1vmZZaudxumbaYea3rmmtYue+aGu4gpAgCgsDM748joyggAzMcZng/H495MHPmzMx7RoQP39Vis9lsiIiIiIjb8zI7gIiIiIg4hwo7EREREQ+hwk5ERETEQ6iwExEREfEQKuxEREREPIQKOxEREREPocJORERExEOosBMRERHxED5mByhpVquVU6dOUalSJSwWi9lxRERERApks9k4f/48YWFheHkV3CZX5gq7U6dOER4ebnYMEREREYccP36c2rVrF3hOmSvsKlWqBBgfTmBgoMlpRERERAqWnJxMeHi4vYYpSJkr7HK6XwMDA1XYiYiIiNsozBAyTZ4QERER8RAq7EREREQ8hAo7EREREQ9R5sbYFVZ2djaZmZlmxxAP5efnd90p6yIiIo5SYXcVm81GXFwc586dMzuKeDAvLy/q1auHn5+f2VFERMSDqLC7Sk5RFxISQkBAgBYxFqfLWSQ7NjaWOnXq6HtMREScRoXdFbKzs+1FXbVq1cyOIx4sODiYU6dOkZWVha+vr9lxRETEQ2iQzxVyxtQFBASYnEQ8XU4XbHZ2tslJRETEk6iwy4O6xsTV9D0mIiKuoMJOADhy5AgWi4Xt27cX+jFz586lcuXKpucoKRaLhUWLFpkdQ0REJF8q7DzI8ePHefTRRwkLC8PPz4+6desyatQozpw5c93HhoeHExsbS4sWLQr9eoMHD+b3338vTmS3VZoLUBExmTUbTq+BI18aX60acuFU+nwLZGphN2HCBCwWS65LkyZNCnzM119/TZMmTShXrhwtW7bkxx9/LKG0Dirhb7w//viDG264gYMHD/Lll19y6NAhZsyYwapVq+jQoQNnz57N97EXL17E29ub0NBQfHwKP5+mfPnyhISEOCN+sVy8eNHsCCIihuMLYXEErOoO0Q8YXxdHGMel+PT5XpfpLXbNmzcnNjbWftmwYUO+50ZHRzNkyBAee+wxtm3bxsCBAxk4cCC7d+8uwcSFYMI33ogRI/Dz82P58uV07dqVOnXq0LdvX1auXMnJkyd54YUX7OdGRETw+uuvM2zYMAIDAxk+fHieLVCLFy+mYcOGlCtXju7du/Pvf/8bi8ViX+Pv6q7YCRMm0KZNG/7zn/8QERFBUFAQ999/P+fPn7efs3TpUm699VYqV65MtWrVuOOOOzh8+LBD7zWv/AAbNmygc+fOlC9fnvDwcJ599llSU1Ptj/voo4/s76dGjRr85S9/yfWc77//fq7XadOmDRMmTMgzQ7169QBo27YtFouFbt26AbBmzRpuuukmKlSoQOXKlenUqRNHjx516P2JiJs6vhDW/wXSTuQ+nnbSOK7io3j0+RaK6YWdj48PoaGh9kv16tXzPXfKlCn06dOH//u//6Np06a8/vrrtGvXjmnTppVg4usw4Rvv7NmzLFu2jL/97W+UL18+132hoaEMHTqUBQsWYLPZ7Mf/+c9/0rp1a7Zt28ZLL710zXPGxMTwl7/8hYEDB7Jjxw6efPLJXMVhfg4fPsyiRYtYsmQJS5YsYe3atUyaNMl+f2pqKmPHjmXz5s2sWrUKLy8v7r77bqxWq0Pv+er8hw8fpk+fPtx7773s3LmTBQsWsGHDBp555hkANm/ezLPPPstrr73GgQMHWLp0KV26dHHoNa/022+/AbBy5UpiY2NZuHAhWVlZDBw4kK5du7Jz5042btzI8OHDNVFCpCywZsOWUYAtjzsvHdsyWt2GRaXPt9BMX8fu4MGDhIWFUa5cOTp06MDEiROpU6dOnudu3LiRsWPH5jrWu3fvAge0Z2RkkJGRYb+dnJxctKBZqfnfZ/EG73KF+MazwOZRUGsAeHkX/Lw+FQod7eDBg9hsNpo2bZrn/U2bNiUxMZGEhAR71+ltt93GuHHj7OccOXIk12NmzpxJ48aNeffddwFo3Lgxu3fv5s033ywwi9VqZe7cuVSqVAmAv/71r6xatcr+uHvvvTfX+bNnzyY4OJi9e/c6NL7v6vyPP/44Q4cOZfTo0QA0bNiQDz74gK5duzJ9+nSOHTtGhQoVuOOOO6hUqRJ169albdu2hX69qwUHBwNQrVo1QkNDAaPATkpK4o477qBBgwYA+f6biIhr/P7779f8PHNEWlqaw70IALX9DjG42okCzrBB2nEOzGnH+ezKJGTVZO+FG+33dq20ON9Hns0KIS1sqH0proapn2Kx5V3AXPCuyfHyd9lvN0j9N962dIKCAqlSuUrukyuEQ5Mxl2/veh0uJuYdonwNaPa8/fONSFuAn/VcnqdmeVXkj4Ch9tt1LiykXHaCcV9WJufOJdnvy7T5EZ3Sx367TcDPBHlfOy68kvc5Gpe//ue74MNnOHExsoDzrtWgQYNiL3MWERFBo0aNivUczmJqYXfzzTczd+5cGjduTGxsLK+++iqdO3dm9+7d9sLgSnFxcdSoUSPXsRo1ahAXF5fva0ycOJFXX321+GG/qpj/fWH9oNsPkLD+2pa6XGxw4YRxXo1uxqHvIyDjz2tPfSCv4rBgV7bIXc8NN9xQ4P0HDhzgxhtvzHXspptuuu7zRkRE5Pq3q1mzJvHx8fbbBw8e5OWXX+bXX3/lzz//tLfUHTt2zKHC7ur8O3bsYOfOnXzxxRf2YzabDavVSkxMDL169aJu3brUr1+fPn360KdPH+6++26nrllYtWpVHn74YXr37k2vXr3o2bMn9913HzVr1nTaa4hIwaZOncqOHTtK/HV7RMZDz+uf17j8TgB+Olyd71ecsh8f99T6fB+z8WgV3ph/2n57+WM/U843716ObaeCeGPxTvvtxQ9tpHL5LEgHTl91ctUbcxd2f8yC1HyGjgQ1g2bP2z/fz+7bTETVC3meGnvenze+iLHfnnnPNiJCUi6fcMWv08QLvjz//eXGl9vu2knbsMuFn6P2b1vNqkN7ivz4omrdujVTp04t8dfNi6mFXd++fe3XW7Vqxc0330zdunX56quveOyxx5zyGlFRUbla+ZKTkwkPD3fKc1/jQqxzzyukyMhILBYL+/bt4+67777m/n379lGlShV7KxNAhQqFbxF0xNW7KFgsllzdrHfeeSd169blk08+ISwsDKvVSosWLRyeAHF1/pSUFJ588kmeffbZa86tU6cOfn5+bN26lTVr1rB8+XJefvllJkyYwKZNm6hcuTJeXl7XFMY5C1Y7Ys6cOTz77LMsXbqUBQsW8OKLL7JixQpuueUWh59LRBw3cuRI01rs4MB1z9t7oS3ns6twoWooAwa0sx//NSX/HWiSgoIZO/Z++x+iJ1P/jYW8W+z8GoXy4ov97LcT0uZx1pZO5aAgqlatmvvkgNq5bzd8Gi6eyztEOaO3J+fzTb+wkD/ya7ELqMCLLw6+fODC9/xhNVrhsjIzSbxiL/ZMmx8DBlyuiBPK1+DXlGsn+1XyTqRZ+W15Z7tCk7bdqdjcnBa70sL0rtgrVa5cmUaNGnHo0KE87w8NDeX06dx/cpw+fdreFZYXf39//P39ix/uvpT877Nc6lYtX8iWmSvPG3CkyJFyVKtWjV69evHRRx8xZsyYXOPs4uLi+OKLLxg2bJhDY70aN258zYzjTZs2FSvnmTNnOHDgAJ988gmdO3cGKHCyjCPatWvH3r17iYzM/z+0j48PPXv2pGfPnrzyyitUrlyZn376iXvuuYfg4GBiYy8X3MnJycTExOT7XAXtHNG2bVvatm1LVFQUHTp0YN68eSrsREpIo0aNzOkSs2bD4iXGeOo8h+NYIKA2ze7fZB+K0z/X/ePyeEx+bi/w3uYOnJtLs+eve8rlz7fg5839L1Dwubde91W59PlGXPfzHXz/tMtDncoo0ydPXCklJYXDhw/n23XVoUMHVq1alevYihUr6NChg+vD+VTI/+JdzjgnuPOlv4DyK6AsEBBunHe953XQtGnTyMjIoHfv3qxbt47jx4+zdOlSevXqRa1ata47Nu5qTz75JPv37+f5540xFV999RVz58413kURJwNUqVKFatWq8fHHH3Po0CF++umna8ZMFtXzzz9PdHQ0zzzzDNu3b+fgwYN8//339skTS5Ys4YMPPmD79u0cPXqUzz77DKvVSuPGjQFjzN5//vMf1q9fz65du3jooYfw9s7/h0NISAjly5dn6dKlnD59mqSkJGJiYoiKimLjxo0cPXqU5cuXc/DgQY2zEykLvLyh/ZR87rz0M7P9+2W+6CiyXJ/v1b+D9PleydTCbvz48axdu5YjR44QHR3N3Xffjbe3N0OGDAFg2LBhREVF2c8fNWoUS5cuZfLkyezfv58JEyawefNm+y9v05n4jdewYUM2b95M/fr1ue+++2jQoAHDhw+ne/fubNy48dom+OuoV68e33zzDQsXLqRVq1ZMnz7dPiu2qC2gXl5ezJ8/ny1bttCiRQvGjBljn5xRXK1atWLt2rX8/vvvdO7cmbZt2/Lyyy8TFhYGGK3BCxcu5LbbbqNp06bMmDGDL7/8kubNjb9to6Ki6Nq1K3fccQf9+/dn4MCB9gkQefHx8eGDDz5g5syZhIWFMWDAAAICAti/fz/33nsvjRo1Yvjw4YwYMYInn3zSKe9RREq58Hug4+fXHg+oDZ2/Me6Xogu/x/gcA2rlPq7PNxeLzZER9052//33s27dOs6cOUNwcDC33norb775pv0Xardu3YiIiLC3FIGxQPGLL77IkSNHaNiwIe+88w79+vXL5xWulZycTFBQEElJSQQGBua6Lz09nZiYGOrVq0e5cuWK/saOLzRmx145kSIg3Cjq3Pgb780332TGjBkcP37c7Chuz2nfayJSusStgp96gn+w8Yd++ZpGL41akpzHmm1MQrwQW2Y+34Jql6uZOsZu/vz5Bd6/Zs2aa44NGjSIQYMGuSiRk4TfYyxp4ubfeB999BE33ngj1apV4+eff+bdd98tPa2jIiKlUfyl2a2hvSBiiLlZPJWX9+WVJeQapWryhEfxgG+8gwcP8sYbb3D27Fnq1KnDuHHjcnWNi4jIVRIuTQgL6VzweSIuosJO8vXee+/x3nvvmR1DRMQ9WDPhz43G9eBCzfUUcbpSNStWRETEbZ3dBtlp4FfFWNBXxAQq7ERERJwhpxs2+Faw6NermENdsXkwcaKwlBH6HhPxQA0eg8Am4FvAFpQiLqbC7go522GlpaXl2r1BxNlytlAraBFkEXEzfkFQq/DLb4m4ggq7K3h7e1O5cmX7pvUBAQFF3mVBJD9Wq5WEhAQCAgLw8dF/QRERcR79VrlKzr6zOcWdiCt4eXlRp04d/eEg4ilO/mCMsas9AKprb2gxjwq7q1gsFmrWrElISAiZmZlmxxEP5efnh5eXBleLeIxjX0HMZ2DxVmEnplJhlw9vb2+NfxIRkcLJ2XEiWAsTi7nUZCAiIlIcaSchNcZY4iS4g9lppIxTYSciIlIcOevXVW4NvgVv0C7iairsREREikPdsFKKqLATEREpjpwWuxAVdmI+FXYiIiJFlZ0O6bHG9eBbzc0igmbFioiIFJ13Obg7Ds4fgvKhZqcRUYudiIhIsVgsENjQ7BQigAo7EREREY+hwk5ERKQostNhcST8PAQyU8xOIwJojJ2IiEjRnNkMKYchKwV8KpidRgRQi52IiEjRJOSsX3erMc5OpBRQYSciIlIUOevXaWFiKUVU2ImIiDjKmg0JPxvXtTCxlCIq7ERERByVtAcyk8CnIlRuZXYaETsVdiIiIo7KGV9XvSN4aR6ilB4q7ERERBzlGwhV20ONbmYnEclFf2aIiIg4qt5fjYvNZnYSkVzUYiciIlJUWuZEShkVdiIiIo5Ij4esNLNTiORJhZ2IiIgjdrwIXwfBgQ/MTiJyDRV2IiIijkhYD7YsqBBhdhKRa6iwExERKaz0BEjeb1wP7mRuFpE8qLATEREprJzdJoKag381c7OI5EGFnYiISGHlLEwcfKu5OUTyocJORESksOJzCjvtDyulU6kp7CZNmoTFYmH06NH5njN37lwsFkuuS7ly5UoupIiIlF1ZqZC41bgeosJOSqdSsfPEpk2bmDlzJq1aXX8j5cDAQA4cOGC/bdHikCIiUhJsVmj3Lzi3GyrUMTuNSJ5ML+xSUlIYOnQon3zyCW+88cZ1z7dYLISGhpZAMhERkSv4VoLGz5qdQqRApnfFjhgxgv79+9OzZ89CnZ+SkkLdunUJDw9nwIAB7Nmzx8UJRURERNyDqS128+fPZ+vWrWzatKlQ5zdu3JjZs2fTqlUrkpKS+Oc//0nHjh3Zs2cPtWvXzvMxGRkZZGRk2G8nJyc7JbuIiJQh1kw48oUxG7ZiA+0RK6WWaS12x48fZ9SoUXzxxReFngDRoUMHhg0bRps2bejatSsLFy4kODiYmTNn5vuYiRMnEhQUZL+Eh4c76y2IiEhZcXYb/PIILLsJsJmdRiRfphV2W7ZsIT4+nnbt2uHj44OPjw9r167lgw8+wMfHh+zs7Os+h6+vL23btuXQoUP5nhMVFUVSUpL9cvz4cWe+DRERKQsSNhhfg28Fi+mjmETyZVpXbI8ePdi1a1euY4888ghNmjTh+eefx9vb+7rPkZ2dza5du+jXr1++5/j7++Pv71/svCIiUoZpYWJxE6YVdpUqVaJFixa5jlWoUIFq1arZjw8bNoxatWoxceJEAF577TVuueUWIiMjOXfuHO+++y5Hjx7l8ccfL/H8IiJSRthsV7TYaf06Kd1MX+6kIMeOHcPL63KTd2JiIk888QRxcXFUqVKF9u3bEx0dTbNmzUxMKSIiHi35AGT8Cd7loGp7s9OIFMhis9nK1CjQ5ORkgoKCSEpKIjAw0Ow4IiJS2h36FH57AkK6Qs81ZqeRMsiR2kUjQEVERAqi8XXiRkp1V6yIiIjp2k6G8HuhUkOzk4hclwo7ERGRgpSrDrXvMjuFSKGoK1ZERETEQ6jFTkREJD8HpkFGPNQdAkFNzU4jcl0q7ERERPJz+FM4twMqt1JhJ25BXbEiIiJ5uXgOzu00rmtGrLgJFXYiIiJ5SYgGbFAxEsqHmp1GpFBU2ImIiOQlZxuxEG0jJu5DhZ2IiEhetDCxuCEVdiIiIlfLToczvxnXg9ViJ+5Ds2JFRESudv4weJcHvypQKdLsNCKFpsJORETkapWbw1/OQtoJsFjMTiNSaOqKFRERyYvFCyrUMTuFiENU2ImIiIh4CBV2IiIiV0rcAd/Xg00jzE4i4jAVdiIiIleKXw+pR+D8IbOTiDhMhZ2IiMiVchYm1vp14oZU2ImIiOSw2S4vTKwdJ8QNqbATERHJkXoELpwCL1+odpPZaUQcpsJOREQkR/yl1roq7cEnwNwsIkWgwk5ERCRHzvg6dcOKm1JhJyIikqNiPajcCkK6mJ1EpEi0pZiIiEiO5lHGRcRNqcVORERExEOosBMREQFIOQLZ6WanECkWFXYiIiIAG+6DryvDqWVmJxEpMo2xExERyUqFxK1gy4agpmanESkytdiJiIj8+YtR1AWEQ4U6ZqcRKTIVdiIiIjkLEwdr/TpxbyrsREREtDCxeAgVdiIiUrZZM+HPjcb14FvNzSJSTCrsRESkbDu7DbLTwK8KBDUzO41IsWhWrIiIlG0BtaDtu5CdARa1d4h7U2EnIiJlW0AtaDre7BQiTlFq/jSZNGkSFouF0aNHF3je119/TZMmTShXrhwtW7bkxx9/LJmAIlezZsPpNXDkS+OrNdvsRCIiUsaVisJu06ZNzJw5k1atWhV4XnR0NEOGDOGxxx5j27ZtDBw4kIEDB7J79+4SSipyyfGFsDgCVnWH6AeMr4sjjOMi4j7STkLM55B61OwkIk5hemGXkpLC0KFD+eSTT6hSpUqB506ZMoU+ffrwf//3fzRt2pTXX3+ddu3aMW3atBJKK4JRvK3/C6SdyH087aRxXMWdiPs49T/Y+FfY+JDZSUScwvTCbsSIEfTv35+ePXte99yNGzdec17v3r3ZuHGjq+KJ5GbNhi2jAFsed146tmW0umVF3EWCFiYWz2Lq5In58+ezdetWNm3aVKjz4+LiqFGjRq5jNWrUIC4uLt/HZGRkkJGRYb+dnJxctLBSqvz+++8cOXKkWM+RlpbG4cOHHXpMbb9DDK52ooAzbJB2nAUfPsOJi5EOZ2rQoAEBAQEOPy5HREQEjRo1KvLjRcoc+44TWr9OPINphd3x48cZNWoUK1asoFy5ci57nYkTJ/Lqq6+67PnFHFOnTmXHjh0l/ro9IuPh+o3L7N+2mlWH9rg+0FVat27N1KlTS/x1RdxS2klIjTGWOAnuYHYaEacwrbDbsmUL8fHxtGvXzn4sOzubdevWMW3aNDIyMvD29s71mNDQUE6fPp3r2OnTpwkNDc33daKiohg7dqz9dnJyMuHh4U56F2KWkSNHmtZiBweue16Ttt2p2NycFjsRKaScbcQqtwHfQFOjiDiLaYVdjx492LVrV65jjzzyCE2aNOH555+/pqgD6NChA6tWrcq1JMqKFSvo0CH/v7T8/f3x9/d3Wm4pHRo1amROl2N2FnzzH8hOzecECwTUZvD908Dr2u9hESlF1A0rHsi0wq5SpUq0aNEi17EKFSpQrVo1+/Fhw4ZRq1YtJk6cCMCoUaPo2rUrkydPpn///syfP5/Nmzfz8ccfl3h+KaPiVxdc1AG0f19FnYg7yGmxC9HECfEcps+KLcixY8eIjY213+7YsSPz5s3j448/pnXr1nzzzTcsWrTomgJRxGVq9oJ2/4KGf4OA2rnv860MdQZB+D2mRBMRB3VfCrd+AzW6m51ExGksNpstr3UbPFZycjJBQUEkJSURGKgxFVJI1uxrW+Gs2cZSCRdiIf1P2PosePnBXTEQEGZOThER8TiO1C6lusVOpFQ49Ams6goXz+U+7uUNNbpBxBBoMhKCO4H1Ihx4z4yUIiIiKuxECnTkS/jtSUj4GWI+K/jcZv8wvh6cARlnXZ9NRIpu63jY/QaknTI7iYhTqbATyc+JxcZWQ9iMMXWNRhZ8flhfqNwaslLgd21zJ1JqZafD71Nh50uQld9kKBH3pMJOJC9xK2HDILBlQ8Rf4YapYLEU/BiLBZr93bj++wf6hSFSWp3ZbAybKBcClRxfb1KkNFNhJ3K1hGhYO8D4wR9+D9wy21iZvjDqDIKKkZBxxhibJyKlz5X7w17vDzYRN6PCTuRK1iz45WHIToOavaHjPPByYLlHL29o9jzUutOYTCEipU/8FYWdiIcxbYFikVLJywe6LIZdE4yWOu8i7FrS4DGIfNzp0UTECazZ8Ge0cT1EO06I51FhJwK516kLagK3zi/6c6lrR6T0StoNmUngU9GY7CTiYdQVK5J2Epa2NSZMOFPqcdg8Co4vcu7zikjRpcSATwWo3tGxYRYibsLh7+qMjAx+/fVXjh49SlpaGsHBwbRt25Z69eq5Ip+Ia6UnwE+9IHkfbBkNfXc4b5/Xw58as2MT1kHtAWrJEykNwgdCrXPGBCcRD1Towu7nn39mypQp/Pe//yUzM5OgoCDKly/P2bNnycjIoH79+gwfPpynnnqKSpUquTKziHNcPAerextFXUBt6PaD84o6gMbPwv7JkLgdYpdBWB/nPbeIFJ2XD5SvYXYKEZcoVFfsXXfdxeDBg4mIiGD58uWcP3+eM2fOcOLECdLS0jh48CAvvvgiq1atolGjRqxYscLVuUWKJysV1vSHxG3GWla3rYIKdZ37Gv7VoMFw4/reic59bhFxXNnaGl3KqEK12PXv359vv/0WX1/fPO+vX78+9evX56GHHmLv3r3ExsY6NaSIU2WnG+vU/RkNvpWh+3IIbOSa12o6Fg5Og/h1xrZkWgJFxDxHPofdr0P9R6H5381OI+IShWqxe/LJJ/H19SU7O5t169Zx7ty5fM9t1qwZPXr0cFY+Eec78AGcXmUMoO6+FKq4cGZcQG2o95BxfY9a7URMFb8ezh+EixpfJ57LoVmx3t7e3H777SQmJroqj4jrNRlj/MXe9b9Q/WbXv17T54ydK079AIk7Xf96IpK3BC1MLJ7P4VmxLVq04I8//tAsWHEvOWNrLBbw8oVbZpXcawc2hPqPGN2+5TRgW8QU6QmQvN+4riER4sEcLuzeeOMNxo8fz+uvv0779u2pUKFCrvsDAwOdFk7EKWw22DYeMs/DjdOdO/O1sG7+tORfU0QuS/jZ+BrUzJjYJOKhHC7s+vXrBxgzZS1XrMtls9mwWCxkZ2c7L52IM+x+Dfb/y7geMQRqdDc3j4iUPHXDShnhcGG3evVqV+QQcY19/zL2fQVoP8X8oi5+Hex9F26aCQFh5mYRKUviVdhJ2eBwYde1a1dX5BBxvkOfwLZxxvVWbxgLBpttxwuQsMFoQWz3T7PTiJQNNhtUuwmyUiDkVrPTiLhUkfaKXb9+PQ8++CAdO3bk5MmTAPznP/9hw4YNTg0nUmRHvoTfnjSuN3semv/D3Dw5mkUZXw/NgIyz5mYRKSssFrhxGtyx1/kLkYuUMg4Xdt9++y29e/emfPnybN26lYyMDACSkpJ46623nB5QxGEX4uDXRwEbNHwaWk8sPfu0hvWFyq2NnS9+n2Z2GhER8TAOF3ZvvPEGM2bM4JNPPsm1E0WnTp3YunWrU8OJFEn5UOj0FTR4HG6YVnqKOjCyNLu04v2BKZCZYm4ekbIgaT9YM81OIVIiHC7sDhw4QJcuXa45HhQUVOCOFCIud+U+kLXvhJs/MRYGLm3qDIKKkXDxLBz+xOw0Ip7NmglL28PXlSHliNlpRFzO4d96oaGhHDp06JrjGzZsoH79+k4JJeKws9uMH94pf5id5Pq8vKHZc8b1fZMhO8PcPCKe7Ow2yE4Db3+oUMfsNCIu53Bh98QTTzBq1Ch+/fVXLBYLp06d4osvvmD8+PE8/fTTrsgoUrCkfbD6dkjcBtujzE5TOPWGQUgXaPkKUIq6ikU8TcKlSX3Bt5bOFnwRJ3N4uZO///3vWK1WevToQVpaGl26dMHf35/x48czcuRIV2QUyV9KDPzUEzL+hKo3GN2v7sDbH3quNTuFiOezL0ysZU6kbLDYbFcOTCq8ixcvcujQIVJSUmjWrBkVK1Z0djaXSE5OJigoiKSkJG1/5u7STsKKzpAaA0HNjUJJWwWJSA6bDRaGGH/49YqG4A5mJxIpEkdqF4fbpR999FHOnz+Pn58fzZo146abbqJixYqkpqby6KOPFjm0iEPSE4yWutQYqNgAblvhnkVddgYc+hTW/yX35A8RKb7kA0ZR510OqrY3O41IiXC4sPv3v//NhQsXrjl+4cIFPvvsM6eEErmuLaMgeT8E1IYeq6B8TbMTFU1WCmwdDce/hdilZqcR8Sw53bDVbgZvP3OziJSQQo+xS05OxmazYbPZOH/+POXKlbPfl52dzY8//khISIhLQopco/0HcPEctH/PvVeS968GkU8aW4ztmWgsYCwizhF8K7R+CwLCzU4iUmIKXdhVrlwZi8WCxWKhUaNG19xvsVh49dVXnRpOJBeb7fJiw+WqQ/cfzc3jLE3Gwu9TjdaFhJ8huJPZiUQ8Q1BT4yJShhS6sFu9ejU2m43bbruNb7/9lqpVq9rv8/Pzo27duoSFhbkkpAjWTNgwGML6QORws9M4V0AtqPcQHP7UaLXrtsTsRCIi4qYcnhV79OhR6tSpgyWPbZqOHTtGnTqlewFIzYp1Q9Zs2DgMjs4zBkHfecgohjxJ8kH4oQnYrNB3B1RpZXYiEfd2dovx/6pGV/cdgytyiUtnxdavX5+EhIRrjp85c4Z69eo5+nQiBbPZYNPTRlFn8YFbv/G8og4gsCGE/8W4vneSuVlEPMHhORA9BPbo/5OULQ4vUJxfA19KSkquCRUixWazwbbxxn6qFi/oNA9q9Tc7les0j4LMJGj4lNlJRNxfzo4TIVqYWMqWQhd2Y8eOBYxJEi+//DIBAQH2+7Kzs/n1119p06aNQy8+ffp0pk+fzpEjRwBo3rw5L7/8Mn375j0zcO7cuTzyyCO5jvn7+5Oenu7Q64qb2P2aMVsU4KZPoM4gc/O4WpU20F1LnogU28VzcG6ncT24s6lRREpaoQu7bdu2AUaL3a5du/Dzu7wmkJ+fH61bt2b8+PEOvXjt2rWZNGkSDRs2xGaz8e9//5sBAwawbds2mjdvnudjAgMDOXDggP12XmP9xAPEr4NdE4zr7adAAy1+LSKF9OdGwAYVI6F8qNlpREqUQ7NiAR555BGmTJnilIkHd955Z67bb775JtOnT+eXX37Jt7CzWCyEhuo/qscL7gwtXzO6YBs/a3aaknUh1mip9K4ArSaYnUbE/cRfWphY3bBSBjk8xm7OnDkAHDp0iMOHD9OlSxfKly+PzWYrVutZdnY2X3/9NampqXTokP9+fikpKdStWxer1Uq7du1466238i0CATIyMsjIyLDfTk5OLnJGKQE5a9VZLNDyJbPTmOPsNtj3T/CpYBS1/lWv/xgRuSxnxwl1w0oZ5PCs2LNnz9KjRw8aNWpEv379iI2NBeCxxx5j3LhxDgfYtWsXFStWxN/fn6eeeorvvvuOZs2a5Xlu48aNmT17Nt9//z2ff/45VquVjh07cuLEiXyff+LEiQQFBdkv4eFagbzUOrEY1vSDzBSzk5grrC9Ubg1ZqfD7NLPTiLiX7Aw4s8m4rsJOyiCH17EbNmwY8fHxfPrppzRt2pQdO3ZQv359li1bxtixY9mzZ49DAS5evMixY8dISkrim2++4dNPP2Xt2rX5FndXyszMpGnTpgwZMoTXX389z3PyarELDw/XOnalTdxKWNMfrBeh9ZvQ/B9mJzLX0QXw8/3gVxUGHAXfimYnEnEfqcfhzC/GEkIahy0ewJF17Bzuil2+fDnLli2jdu3auY43bNiQo0ePOvp0+Pn5ERkZCUD79u3ZtGkTU6ZMYebMmdd9rK+vL23btuXQoUP5nuPv74+/v7/DuaQEJUTD2gFGURd+DzR9zuxE5gv/izHwO+WQsdxLkzFmJxJxHxXCjYtIGeRwV2xqamqupU5ynD171ikFlNVqzdXCVpDs7Gx27dpFzZpaVdxtnd1qdL9mp0HN3tBxHng5/PeG5/HyhmaXCtx9k43uJRERketwuLDr3Lkzn332mf22xWLBarXyzjvv0L17d4eeKyoqinXr1nHkyBF27dpFVFQUa9asYejQoYDR7RsVFWU//7XXXmP58uX88ccfbN26lQcffJCjR4/y+OOPO/o2pDRI2gerexuL8gZ3hs4LwVutq3b1hkH5MLhwEo58bnYakdLPmg3rB8HetyErzew0IqZwuGnknXfeoUePHmzevJmLFy/y3HPPsWfPHs6ePcvPP//s0HPFx8czbNgwYmNjCQoKolWrVixbtoxevXoBxt6zXl6Xa8/ExESeeOIJ4uLiqFKlCu3btyc6OrpQ4/GklLFZYcMgyPgTqt5gbHzvc21LcJnm7W+MNUz+HUJvNzuNSOmXtBuOfwOxS6GJ45P5RDyBw5MnAJKSkpg2bRo7duwgJSWFdu3aMWLECLfoEnVkAKK4WOJ22DoWbv0a/KuZnUZE3N2BabBlpPGH0G3LzE4j4jQunTwBEBQUxAsvvFCkcFLG5axTB8YWWj1+MjWOiHgQ+/6wWuZEyq4iFXaJiYnMmjWLffv2AdCsWTMeeeQRqlbVQqpSgIvnYP090Op1CO5kdhr38uevsOctaPg0hPUxO41I6WOzXbEwsXackLLL4ckT69atIyIigg8++IDExEQSExP54IMPqFevHuvWrXNFRvEEWanGOnWnV8PGYWDNNDuRezn2FZxcbBR3InKt1Bi4cAq8fKHazWanETGNw4XdiBEjGDx4MDExMSxcuJCFCxfyxx9/cP/99zNixAhXZBR3l51urFP3ZzT4VobO3xk/fKXwmow1PrOE9ZDg2CQlkTIh/lI3bNUbwKe8uVlETORwYXfo0CHGjRuHt7e3/Zi3tzdjx44tcKFgKaOsmbBhMJxeZex92n0pVGlldir3E1AL6j1sXN8z0dQoIqVS+mnwLqduWCnzHC7s2rVrZx9bd6V9+/bRunVrp4QSD2HNho0PG12I3uWg63+hurpIiqzZc2DxglM/QOIOs9OIlC7N/g/+kqTtCKXMK9TkiZ07d9qvP/vss4waNYpDhw5xyy23APDLL7/w4YcfMmnSJNekFPd08CM4Og8sPnDrN1DDsQWs5SqVIiF8EBxbAHsnQacvzU4kUrp4+xkXkTKsUOvYeXl5YbFYuN6pFouF7Oxsp4VzBa1jV4KyMyB6KNS5D+reZ3Yaz5C4Hf7X1mi5u+OAUeyJlHU2q/F/QsRDOX0du5iYGKcEkzLG299YfDhn3TopviptIPJJqNwSytcyO41I6bDtOYj9HzR/ASIeMDuNiKkKVdjVrVvX1TnEU+x/D1KPQ7vJRkGnos75bpphdgKR0iV+HSTtNdayEynjirRAsUieDn1ibBEGENoDavU3N4+IeL6sVEjcalwP0YxYEQ1KEOc48iX89qRxvdnzENbP3DyezpoNf/wblt4EGWfNTiNinj9/AVs2BIRDBfUuiaiwk+I7sRg2/hWwQcO/QeuJ6oJ1NYuX0e19dhP8Ps3sNCLmic/ZRkz7w4qACjsprriVsGGQ8RdzxF/hhqkq6kqCxQLNo4zrB6ZAZoq5eUTMknBpxwl1w4oARSjsjh8/zokTJ+y3f/vtN0aPHs3HH3/s1GDiBjLOwLp7wHoRwu+BW2ZryYGSFP4XqBgJF8/C4U/MTiNS8qyZ8OdG47pa7ESAIhR2DzzwAKtXrwYgLi6OXr168dtvv/HCCy/w2muvOT2glGL+1eDmTyDsDug4D7w0F6dEeXkbu1EA7JtsrBsoUpZknjfWyKzaHoKamZ1GpFRwuLDbvXs3N910EwBfffUVLVq0IDo6mi+++IK5c+c6O5+UdnUHQ9fFxpp1UvLqDYPyYXDhJMT8x+w0IiXLvyrcMgf6bFZvgcglDv9PyMzMxN/f+CW+cuVK7rrrLgCaNGlCbGysc9NJ6ZMSAz/1grTL3fEaU2cib39oMs64vvdtY7asiIiUWQ4Xds2bN2fGjBmsX7+eFStW0KdPHwBOnTpFtWrVnB5QSpG0k7CqhzFh4renzU4jOSKHQ+2BcNN0tVpI2WGzwdlt+mNG5CoO/xZ4++23mTlzJt26dWPIkCG0bt0agMWLF9u7aMUDpSfATz0hNQYqNoCbNVmm1PCtCF2+g9Ceaj2VsiP5ACxtB4tqqbgTuYLDo927devGn3/+SXJyMlWqVLEfHz58OAEBAU4NJ6XExXOwujck74eA2tBjFZSvaXYqESnLEi6tXxfYxJhIJCJAEbcU8/b2zlXUAURERDgjj5Q2Wamwpj8kboNyIXDbKq3uXlplnIX9k+HcLmNCi4gn08LEInkqVGHXrl07Vq1aRZUqVWjbti2WArp7tm7d6rRwUgpsGQV/RoNvZei+HAIbmZ1I8pN9Afa9a6ztlfAzBHcyO5GI69gXJlZhJ3KlQhV2AwYMsM+EHThwoCvzSGnT8jU4txvaT4Eqrc1OIwUJqAX1HoLDn8KeidBtidmJRFwj7aQx3tfiBdVvMTuNSKlisdlsNrNDlKTk5GSCgoJISkoiMDDQ7DjuwWbToHx3kXwQfmgCNiv03a5iXDzTkfkQPQSqtIO+W8xOI+JyjtQuWhtBcrPZYNMIiPni8jEVde4jsCGEDzKu751kbhYRV1E3rEi+VNjJZTYbbBsPBz+CXx42FiMW99P878bXY1/B+UPmZhFxhXrDoOWrEH6v2UlESh0VdnLZ7tdg/7+M6zd9DBXrmZtHiqZKGwjrZ3TH7nvX7DQizlf9Jmj5slrsRPKgXdvFsO9fsGuCcb39FGjwiKlxpJiavwABdaDZ/5mdRERESpBDLXaZmZk0aNCAffv2uSqPmOHQJ7Dt0n6jrd6Axs+am0eKL7ijscVYxfpmJxFxrpM/wvGFxrqNInINhwo7X19f0tPTXZVFzPDnb/Dbk8b1Zs9D83+Ym0dco2xNfhdPtncirL8XTiwyO4lIqeTwGLsRI0bw9ttvk5WV5Yo8UtKq3QhNx0PDp6H1RM2A9TTndsH6v8CeN81OIlJ82elw5jfjunacEMmTw2PsNm3axKpVq1i+fDktW7akQoUKue5fuHCh08JJCbBYoM3bl6+LZzm3B45/C6dXQ+PR4FvR7EQiRXdmM1gvGtsbVoo0O41IqeRwYVe5cmXuvVdTzN1aQjT8PhVumQPe5VTQebI6g2DnS5ByCA5/Ak3GmJ1IpOgSrtgfVj+3RPLkcGE3Z84cV+QQV7FmGz8ML8RC+ZrgUxHW9IPMJKgYCa1fNzuhuJKXNzR7Dn4bDvsmQ8O/gbe/2alEiiZnYWJ1w4rkq0jr2GVlZbFy5UpmzpzJ+fPnATh16hQpKSkOPc/06dNp1aoVgYGBBAYG0qFDB/73v/8V+Jivv/6aJk2aUK5cOVq2bMmPP/5YlLdQNhxfCIsjYFV3iH7A+LrsZqOoC+4MzaPMTiglod4wKB8GF07Ckc/NTiNSNNZsSPjZuB5yq7lZREoxhwu7o0eP0rJlSwYMGMCIESNISEgA4O2332b8+PEOPVft2rWZNGkSW7ZsYfPmzdx2220MGDCAPXv25Hl+dHQ0Q4YM4bHHHmPbtm0MHDiQgQMHsnv3bkffhuc7vtAYNJ924qo7rMaXyOHgE1DiscQE3v7Q5NJyNnvfNn5Birib5L3GH6U+FaGy9kAWyY/FZnNsHYSBAwdSqVIlZs2aRbVq1dixYwf169dnzZo1PPHEExw8eLBYgapWrcq7777LY489ds19gwcPJjU1lSVLltiP3XLLLbRp04YZM2YU6vkd2UjXbVmzjZa6a4q6HBYIqA13xRhddeL5MlPg+7pw8Szc+pUx9k7EndhskHoEzh+EmrebnUakRDlSuzg8xm79+vVER0fj5+eX63hERAQnT5509OnssrOz+frrr0lNTaVDhw55nrNx40bGjh2b61jv3r1ZtGhRvs+bkZFBRkaG/XZycnKRMzrq999/58iRI0V+fFpaGocPH3b4cbX9DjG4Wn5FHYAN0o6z4MNnOHHRsZllDRo0ICCgeC19ERERNGrUqFjPIQ7yrWjsrWnLhJp9zU4j4jiLxdjmUFsdihTI4cLOarWSnX1tV86JEyeoVKmSwwF27dpFhw4dSE9Pp2LFinz33Xc0a9Ysz3Pj4uKoUaNGrmM1atQgLi4u3+efOHEir776qsO5nGHq1Kns2LGjxF+3R2Q89Lz+efu3rWbVoby7vV2pdevWTJ06tcRft8xr/IzZCURExMUcLuxuv/123n//fT7++GMALBYLKSkpvPLKK/Tr18/hAI0bN2b79u0kJSXxzTff8NBDD7F27dp8iztHRUVF5WrlS05OJjw83CnPfT0jR440rcUODlz3vCZtu1OxuTktdmIym03LRYj7SDkCW8dAjdug8Uiz04iUag4XdpMnT6Z37940a9aM9PR0HnjgAQ4ePEj16tX58ssvHQ7g5+dHZKRRXLRv355NmzYxZcoUZs6cec25oaGhnD59Otex06dPExoamu/z+/v74+9vzvIOjRo1MqfL0ZoNi5dA2kkgryGUxhi7wfdP0xi7sujY17D7dbhxOgR3MjuNyPXFrzO2EEs/rcJO5DocnhVbu3ZtduzYwT/+8Q/GjBlD27ZtmTRpEtu2bSMkJKTYgaxWa64xcVfq0KEDq1atynVsxYoV+Y7JK7O8vKH9lEs3rm6VuXS7/fsq6sqq2OXGVmN7JpqdRKRw7AsTa5kTketxuMUOwMfHhwcffLDYLx4VFUXfvn2pU6cO58+fZ968eaxZs4Zly5YBMGzYMGrVqsXEicYvoFGjRtG1a1cmT55M//79mT9/Pps3b7Z3C8sVwu+Bzt/AllG5Z8cG1DaKuvB7TIsmJmv6HPwxG079AIk7oIqWjpBSTgsTixSaw4VdnTp16NatG127dqV79+7Ur1+/yC8eHx/PsGHDiI2NJSgoiFatWrFs2TJ69eoFwLFjx/Dyutyo2LFjR+bNm8eLL77IP/7xDxo2bMiiRYto0aJFkTN4tPB7oNaA3DtPBHdWS11ZF9gQwgfBsQWwdxJ0cnwIhUiJSU+A5P3GdQ0dELkuh9ex+/zzz1m3bh1r1qzh0KFD1KpVi65du9K1a1e6detGw4YNXZXVKcrEOnYi15O4Hf7XFixecMcBbagupdfxRbD+bghqDv21GL2UTY7ULg6PsXvwwQf5+OOP+f333zl58iTvvvsuAH/7299o0qRJ0RKLSMmq0gbC+oHNCvveNTuNSP7s4+vUDStSGEUaY5eWlsaGDRtYs2YNq1evZtu2bbRo0YJu3bo5OZ6IuEyzKDj1I/wxF1pOMLrqRUqbrBTw8oMQFXYiheFwV2zHjh3Ztm0bTZs2tY+169KlC1WqVHFVRqdSV6zIFTaPgrA+ULOP1rWT0is73Vh70ae82UlETOHSLcX2799PhQoVaNKkCU2aNKFp06ZuU9SJyFVumHL9c0TM5l3O7AQibsPhMXZnzpzhp59+4pZbbmHZsmV06tSJWrVq8cADD/DJJ5+4IqOIlASb1ewEIrlZr92+UkQK5nBX7JVsNhtbtmxh2rRpfPHFF/nuI1uaqCtW5CpZF2Dv23B0HvTZCr4VzU4kYvipN2TEQ/upEKLFiaXscmlX7NatW1mzZg1r1qxhw4YNnD9/npYtWzJy5Ei6du1a5NAiYhIvPzjyBaQcgsOfQJMxZicSAWumsTBxdhr4VTY7jYjbcLiwu+mmm2jbti1du3bliSeeoEuXLgQFBbkim4iUBC9vaPYc/DYc9k2Ghn8Db3P2VxaxO7vtUlFXBYKamZ1GxG04XNidPXtWXZginqbeMNg1AS6chCOfQ4PHzE4kZV3ONmLVOxkLaYtIoThc2OUUdVu2bGHfvn0ANGvWjHbt2jk3mYiUHG9/aDIOto0zxtvVe1hbz4m5chYm1vp1Ig5xuLCLj49n8ODBrF27lsqVKwNw7tw5unfvzvz58wkODnZ2RhEpCZHDYc+bcP4gHP8W6t5ndiIpq2y2yy122nFCxCEOt2+PHDmSlJQU9uzZw9mzZzl79iy7d+8mOTmZZ5991hUZRaQk+FaERiON6/veMTeLlG3JByDjT2P9uqrtzU4j4lYcbrFbunQpK1eupGnTpvZjzZo148MPP+T22293ajgRKWGNR0J6LDQZa3YSKdNsEDHUaLnz9jM7jIhbcbiws1qt+Pr6XnPc19cXq1ULnIq4Nf9qcNNMs1NIWRfUFDp+bnYKEbfkcFfsbbfdxqhRozh16pT92MmTJxkzZgw9evRwajgRMZlW/hcRcSsOF3bTpk0jOTmZiIgIGjRoQIMGDahXrx7JyclMnTrVFRlFpKSl/AE/D4EN95qdRMqai0lwbpe2uBMpIoe7YsPDw9m6dSsrV65k//79ADRt2pSePXs6PZyImMSaDce+Mn65Ju6AKq3NTiRlxan/QfQQCOkGPVebnUbE7Thc2AFYLBZ69epFr169nJ1HREqDwIYQPgiOLYC9k6DTl2YnkrIiZ5kT/TEhUiSFKuw++OCDQj+hljwR8RDN/24Udse+glavQ6VIsxNJWZCzMHHwrebmEHFTFpvNZrveSfXq1Svck1ks/PHHH8UO5UrJyckEBQWRlJSkrdFErmd1P4j9n7F4sWbLiqtdPAffVAVscHcslA81O5FIqeBI7VKoFruYmBinBBMRN9M8yijs/pgLLV6BgDCzE4knS4gGbFAxUkWdSBFpZ2URyV9IZ6NLzHoRftesd3GxnPF12h9WpMgKVdhNmjSJtLS0Qj3hr7/+yg8//FCsUCJSirR8Fdq8bbTeibiSxteJFFuhumL37t1L3bp1GTRoEHfeeSc33HADwcHBAGRlZbF37142bNjA559/zqlTp/jss89cGlpESlDobcZFxNVaToDTayBUi92LFFWhJk8A7Nixg2nTpvHNN9+QnJyMt7c3/v7+9pa8tm3b8vjjj/Pwww9Trlw5l4YuDk2eECkGmw1s2eBVpJWSRESkCBypXQpd2OWwWq3s3LmTo0ePcuHCBapXr06bNm2oXr16sUKXFBV2IkUUuxy2R0G9B6HJGLPTiIiUGU6fFXslLy8v2rRpQ5s2bYqaT0TcUepRSNwK6aeh4d/A29/sROJJDs8C/xCo0R18K5qdRsRtaVasiBROvWFQPgwunIQjn5udRjyJNRu2joN1d8H5A2anEXFrKuxEpHC8/aHJOOP63reNX8YizpC0GzKTwKciVNZWYiLFocJORAovcjj4VYXzB+H4t2anEU8Rf2mZk+odNTFHpJhU2IlI4flWhEYjjet7JxqzZEWKK2dhYq1fJ1JsxS7skpOTWbRoEfv27XNGHhEp7RqPBJ8KkLgdTq82O424O5vt8sLE2nFCpNgcLuzuu+8+pk2bBsCFCxe44YYbuO+++2jVqhXffquuGRGP518N2rwDXRZBjW5mpxF3lxoDF06Bly9Uu8nsNCJuz+HCbt26dXTubPxV9d1332Gz2Th37hwffPABb7zxhtMDikgp1OhvUHsAWDSaQ4opYaPxtUp78AkwN4uIB3D4p3JSUhJVq1YFYOnSpdx7770EBATQv39/Dh486PSAIlLKZV80O4G4s4gH4I4DcMMHZicR8QgOF3bh4eFs3LiR1NRUli5dyu233w5AYmKiw1uJTZw4kRtvvJFKlSoREhLCwIEDOXCg4DWM5s6di8ViyXUpzVuYiXgsmw32TILvwyFxp9lpxF1ZLBDYCKrdaHYSEY/gcGE3evRohg4dSu3atQkLC6Nbt26A0UXbsmVLh55r7dq1jBgxgl9++YUVK1aQmZnJ7bffTmpqaoGPCwwMJDY21n45evSoo29DRIrLYjEmUKTHw95JZqcRERGKsFcswJYtWzh27Bi9evWiYkVj65cffviBypUr06lTpyKHSUhIICQkhLVr19KlS5c8z5k7dy6jR4/m3LlzRXoN7RUr4kSJ2+F/bY2xdnccgEqRZicSdxK7HA5/CrXvgYj7zU4jUmo5Urs43GK3e/du2rdvz913320v6gD69+9PQkKC42mvkJSUBGAfw5eflJQU6tatS3h4OAMGDGDPnj3Fel0RKaIqbaBmX7BZYd+7ZqcRd3NqKRz7GuLXmp1ExGM4XNj17t2bmJiYa45/++23DB06tMhBrFYro0ePplOnTrRo0SLf8xo3bszs2bP5/vvv+fzzz7FarXTs2JETJ07keX5GRgbJycm5LiLiRM2jjK9/zIW0U6ZGETeTszCx1q8TcRqHC7vHH3+cnj17EhcXZz+2YMEChg0bxty5c4scZMSIEezevZv58+cXeF6HDh0YNmwYbdq0oWvXrixcuJDg4GBmzpyZ5/kTJ04kKCjIfgkPDy9yRhHJQ0hnY8cA60XY/y+z04i7yEyBxK3Gde04IeI0Dhd2r776Kv369aNnz56cPXuWefPm8cgjj/DZZ58xaNCgIoV45plnWLJkCatXr6Z27doOPdbX15e2bdty6NChPO+PiooiKSnJfjl+/HiRMopIAZpdarU79DFkFTz5SQSAM7+CLRsC6kCFOmanEfEYRdpteerUqQwdOpRbbrmFkydP8uWXXzJgwACHn8dmszFy5Ei+++471qxZQ7169Rx+juzsbHbt2kW/fv3yvN/f3x9/f3+Hn1dEHBDW1yjuIoYa242JXE/8pW3E1Fon4lSFKuwWL158zbF77rmH9evXM2TIECwWi/2cu+66q9AvPmLECObNm8f3339PpUqV7N27QUFBlC9fHoBhw4ZRq1YtJk6cCMBrr73GLbfcQmRkJOfOnePdd9/l6NGjPP7444V+XRFxMosF2rxldgpxJxpfJ+IShSrsBg4cmO99s2fPZvbs2QBYLBays7ML/eLTp08HsK+Fl2POnDk8/PDDABw7dgwvr8s9xomJiTzxxBPExcVRpUoV2rdvT3R0NM2aNSv064qIi2Wng7cWDpd82GyAFSzearETcbIirWPnzrSOnYgLZZyBrWMhfh3csR+8NQxCCpCVCt7lteewyHW4dB07EZF8+VSEuJWQegRi/mN2GintfCqoqBNxsiJNnli1ahWrVq0iPj4eq9Wa676cblkRKYO8/aHJONg2Dva9A/UfAS9vs1NJaWPNBC9fs1OIeKQiLXdy++23s2rVKv78808SExNzXUSkjIscDn5V4fxBOP6t2WmktLHZ4Pu6sPQmSD1mdhoRj+Nwi92MGTOYO3cuf/3rX12RR0TcnW9FaDQSdr8KeydCnUHGrFkRgOQDcCEWLiZCuVCz04h4HIdb7C5evEjHjh1dkUVEPEXjkcb4qcTtELvM7DRSmiRcWr+u2s3g7WduFhEPVKQtxebNm+eKLCLiKfyrQeSTxvUDU8zNIqWLfWFirV8n4goOd8Wmp6fz8ccfs3LlSlq1aoWvb+4BsP/6l/aKFBGgyVhjrF2jEWYnkdIkZ2FirV8n4hIOF3Y7d+6kTZs2AOzevTvXfRaNoxGRHAG1oMULZqeQ0iTtJKTGGEucBHcwO42IR3K4sFu9erUrcoiIJ7PZIPsC+ASYnUTMlNMNW7kN+GqBeBFX0MqQIuJaZzbB8g7w62NmJxGzla8Jde6D2gPNTiLisYq0QPHmzZv56quvOHbsGBcvXsx138KFC50STEQ8hJcfnPkVzm6CVq9DpUizE4lZanQ1LiLiMg632M2fP5+OHTuyb98+vvvuOzIzM9mzZw8//fQTQUFBrsgoIu6sSmsI6wc2K+x9x+w0IiIezeHC7q233uK9997jv//9L35+fkyZMoX9+/dz3333UadOHVdkFBF31yzK+Brzb0g7ZW4WMUfqcWNxYpvN7CQiHs3hwu7w4cP0798fAD8/P1JTU7FYLIwZM4aPP/7Y6QFFxAOE3Gosb2G9CPu1JFKZdHA6LGkCm0eanUTEozlc2FWpUoXz588DUKtWLfuSJ+fOnSMtLc256UTEc+S02h2aARlnzc0iJS9nx4mq7c3NIeLhHC7sunTpwooVKwAYNGgQo0aN4oknnmDIkCH06NHD6QFFxEOE9YXKrSErFWI+MzuNlKTsdDjzm3FdCxOLuJTDs2KnTZtGeno6AC+88AK+vr5ER0dz77338uKLLzo9oIh4CIsF2r4LmUlQ+26z00hJOrPZ6IYvV0OzokVczOHCrmrVqvbrXl5e/P3vf7ffvnDhgnNSiYhnqtnL7ARihpxu2OBbjQJfRFzGKQsUZ2Rk8K9//Yt69eo54+lEpCzITofsi9c/T9yffX/YzubmECkDCl3YZWRkEBUVxQ033EDHjh1ZtGgRAHPmzKFevXq89957jBkzxlU5RcSTHJ4F39fTWLuywJoNCT8b10M0vk7E1QrdFfvyyy8zc+ZMevbsSXR0NIMGDeKRRx7hl19+4V//+heDBg3C29vblVlFxFNcTIL0ONj3DtR/BLz0s8Nz2aDj55AQbUyeERGXKnRh9/XXX/PZZ59x1113sXv3blq1akVWVhY7duzAojETIuKIyOGw5004fxCOfwt17zM7kbiKlw/UusO4iIjLFbor9sSJE7Rvb6w/1KJFC/z9/RkzZoyKOhFxnG9FaHRpodq9E7UbgYiIkxS6sMvOzsbPz89+28fHh4oVK7oklIiUAY1Hgk8FSNwOscvMTiOuYLPB7jfh1FJNlBEpIYXuirXZbDz88MP4+/sDkJ6ezlNPPUWFChVynbdw4ULnJhQRz+RfDSKfNLYY2/MWhPUxO5E4W2oM7HwRvHzhL0lmpxEpEwpd2D300EO5bj/44INODyMiZUyTsfD7VGOds3N7oHJzsxOJM8VfWuak6g3gU97cLCJlRKELuzlz5rgyh4iURQG14IaPoNqNKuo80ZULE4tIiXB45wkREaeKfNzsBOIq9sJOCxOLlBSn7DwhIuIUF8+ZnUCcJT0Bkg8Y14M7mZtFpAxRYSci5rNmw69PwHc14fwhs9OIM+RsIxbUHPyrFnyuiDiNCjsRMZ+XN1w4Zewfu/cds9OIM5z51fiqbliREqXCTkRKh2ZRxteYf0PaKXOzSPG1fgv67TZmPotIiVFhJyKlQ8itxuxJ60VjbTtxbxYvY6ZzYEOzk4iUKSrsRKT0aP4P4+uhGZBxxtwsIiJuSIWdiJQeNftAlTaQlQq/TzM7jRTVgWnw81CIW2V2EpEyx9TCbuLEidx4441UqlSJkJAQBg4cyIEDB677uK+//pomTZpQrlw5WrZsyY8//lgCaUXE5SwWaPZ34/qhTyF2FRz5Ek6vMWbOins4sQiOzoPzv5udRKTMMbWwW7t2LSNGjOCXX35hxYoVZGZmcvvtt5OamprvY6KjoxkyZAiPPfYY27ZtY+DAgQwcOJDdu3eXYHIRcZnwv0C9YYAVVveE6AdgVXdYHAHHtRd1qWfNhD83Gtc1I1akxFlsNpvN7BA5EhISCAkJYe3atXTp0iXPcwYPHkxqaipLliyxH7vlllto06YNM2bMuO5rJCcnExQURFJSEoGBgU7LLiJOcnwhrP8LcPWPJovxpfM3EH5PSaeSwjqzCZbdBH5V4N4/jUkUIlIsjtQupep/XFJSEgBVq+a/mOXGjRvp2bNnrmO9e/dm48aNLs0mIiXAmg1bRnFtUcflY1tGq1u2NIu/tI1Y9U4q6kRMUGr2irVarYwePZpOnTrRokWLfM+Li4ujRo0auY7VqFGDuLi4PM/PyMggIyPDfjs5Odk5gUU82O+//86RI0eK/Pi0tDQOHz7s8ONq+x1icLUTBZxhg7TjLPjwGU5cjHTouRs0aEBAQIDDma4UERFBo0aNivUcHi9nf9gQdcOKmKHUFHYjRoxg9+7dbNiwwanPO3HiRF599VWnPqeIp5s6dSo7duwo8dftERkPPa9/3v5tq1l1aI/rA12ldevWTJ06tcRf123YbJe3EtP4OhFTlIrC7plnnmHJkiWsW7eO2rVrF3huaGgop0+fznXs9OnThIaG5nl+VFQUY8deXvk8OTmZ8PDw4ocW8WAjR440rcUOrj8zvknb7lRsbk6LnRQg4wwE1IbsC1C1vdlpRMokUydP2Gw2Ro4cyXfffceaNWto2PD6K5QPHjyYtLQ0/vvf/9qPdezYkVatWmnyhIi7s2Ybs1/TTpL3ODugfC0YcNTYX1ZKp6wL4FPe7BQiHsNtJk+MGDGCzz//nHnz5lGpUiXi4uKIi4vjwoUL9nOGDRtGVFSU/faoUaNYunQpkydPZv/+/UyYMIHNmzfzzDPPmPEWRMSZvLyh/ZRLNyx5n+MbBNaMvO+T0kFFnYhpTC3spk+fTlJSEt26daNmzZr2y4IFC+znHDt2jNjYWPvtjh07Mm/ePD7++GNat27NN998w6JFiwqccCEibiT8HmNJk4BauY+XqwHe5eHCKUhxvJtXSkB2utkJRMq8UrWOXUlQV6yIm7BmGzMsL8RC+ZrGYPwzv4JPBajS2ux0crW0k7C4PlS7GXqsVle5iBM5UruUiskTIiLX8PKGGt1yHwvumPv2+cNQsZ7WSysN4teD9aKxz6+KOhHT6KehiLin+A2wtB1sHmkssyHmylnmROvXiZhKhZ2IuKe045B5Hg5+BDv+YXYayVmYOPhWc3OIlHEq7ETEPUUMgZsuLXG0dxLsecvcPGXZxXNwbpdxXQsTi5hKhZ2IuK/I4dD2n8b1HS/AAe0KYYqEaMAGlRpC+RrXPV1EXEeFnYi4t6bjoMUrxvUtz8LhOebmKYvUDStSaqiwExH31/IVaHJp68BjX2syRUmr0hZq3w1hfc1OIlLmabkTEXF/FovRJRvYGOo9ZNyWklP3PuMiIqZTi52IeAaLxRhz5+1v3LbZIOUPczOJiJQwFXYi4nlsNtg6Fn5sDX/+anYaz3Zut1FAq/tbpFRQYScinseaaSy/kZUCa/pC4k6zE3mu7c/D4gZwaIbZSUQEFXYi4om8/aDLIqjeES4mwupekPy72ak8jzUbEn42rle7ydwsIgKosBMRT+VbEbr9AFXaQHo8/NQTUo+ancqzJO2GzCTwqQiVW5udRkRQYScinsyvMnRfDoFNjC3IVvWEC7Fmp/IcOfvDVu8IXlpkQaQ0UGEnIp6tXDDcthIq1IPUPy53HUrxxWthYpHSRn9iiYjnC6gFPVZC4g4Iv9vsNJ7BZru840SI9ocVKS1U2IlI2VCxvnHJkZ4APhXAJ8C8TO4s9QhcOAVevpo4IVKKqLATkbIn7YQxmaJCBHT5/vKixlJ4/sHQeaExIUXFsUipocJORMqetBOQehySD0D0A9BpgQb/O8q3orq1RUohTZ4QkbKn+i3Q9Xvw8oPjC+GXR8FmNTuViEixqbATkbIptCfc+hVYvOHIf2DzSG2LVVjpf8LOCRD3k9lJROQqKuxEpOyqPQA6fAZY4OBHsCNKxV1hJKyH3a/ClmfNTiIiV1FhJyJlW8QDcNOlfU6PfWPspCAFs69fp2VOREobjRYWEYkcboy3q9nb2K1CCpaz44TWrxMpddRiJyICUP9hKF/z8u20E6ZFKdUyUyBxq3FdO06IlDoq7ERErhbzOSxuAMe+NjtJ6XPmF7BlQ0AdqFDH7DQichUVdiIiV0vYANaL8PMDcPJHs9OULvGXumHVWidSKqmwExG52g0fQt0hYMuCDffC6TVmJyo9zm42vmp8nUippMJORORqXt7Q4d9Q6y7IToe1d8Kfv5qdqnTosgj6bIXwe8xOIiJ5UGEnIpIXL1+4dQHU6AFZKbC6DyTuNDuV+bx8oGpbKBdidhIRyYMKOxGR/HiXM1qoqneEzHNwdL7ZiURECqR17ERECuJbEbr9ADGfQaORZqcx1+aRkHkemoyFKq3MTiMieVCLnYjI9fhVhsbPgsVi3LZmQnqCqZFKnM1mtFjG/BuyUs1OIyL5UGEnIuKIrAuw7m5Y1R0yzpidpuQkH4CMP43u6artzU4jIvlQYSci4oiMBEjcBkl7jAkVmclmJyoZCZf2h612M3j7mZtFRPKlwk5ExBEV6sBtK8C/urGm25o7ICvN7FSul7M/bLDWrxMpzUwt7NatW8edd95JWFgYFouFRYsWFXj+mjVrsFgs11zi4uJKJrCICEBQM+i+DHwDjZas9fdAdobZqVwr/lKLnXacECnVTC3sUlNTad26NR9++KFDjztw4ACxsbH2S0iI1lMSkRJWtR10+xG8AyB2GUQ/ANYss1O5RtpJSI0BixcEdzA7jYgUwNTlTvr27Uvfvn0dflxISAiVK1d2fiAREUcEd4Ku38Oa/kZxl7wPKrc0O5XzpcdBUHNj4oRvoNlpRKQAbrmOXZs2bcjIyKBFixZMmDCBTp065XtuRkYGGRmXu0iSk8vIQGcRKRmhPeHWb6BcsGcWdWDMgu2/G7Ivmp1ERK7DrSZP1KxZkxkzZvDtt9/y7bffEh4eTrdu3di6dWu+j5k4cSJBQUH2S3h4eAkmFpEyofadUP2Wy7cvnDbWffM0mg0rUupZbLbS8dPHYrHw3XffMXDgQIce17VrV+rUqcN//vOfPO/Pq8UuPDycpKQkAgPVpSAiTnZ2C6zuDY3HQIsXzE5TfNZMo0hVUSdimuTkZIKCggpVu7hVi11ebrrpJg4dOpTv/f7+/gQGBua6iIi4TMLPxsLFO1+EAx+Ynab4YlfAN5Vh48NmJxGRQnD7wm779u3UrFnT7BgiIobGz0KLV4zrW0bB4dnm5imuhPWQfcGYESsipZ6pkydSUlJytbbFxMSwfft2qlatSp06dYiKiuLkyZN89tlnALz//vvUq1eP5s2bk56ezqeffspPP/3E8uXLzXoLIiLXavkKZJ2H/f+C354An4pQ9z6zUxVNzo4TWphYxC2YWtht3ryZ7t2722+PHTsWgIceeoi5c+cSGxvLsWPH7PdfvHiRcePGcfLkSQICAmjVqhUrV67M9RwiIqazWKDtPyHzPBz+BKKHgk8FqNXf7GSOyU6HM5uM61qYWMQtlJrJEyXFkQGIIiLFYs2GjcPg6DwI7WXsVmGxmJ2q8OLXw8ouUK4G3B3rXtlFPIgjtYtbrmMnIuIWvLyhw1xjC7ImY9yvMLqyG9bdsouUURoNKyLiSl6+xrInPgGXj6UnmJfHEfEbjK/qhhVxGyrsRERKis0GO16CH1tA8gGz01xfWD8I6w81NI5ZxF2osBMRKSnZF+DUEkiPh596QsoRsxMVrPEz0G0JVGlldhIRKSQVdiIiJcUnALovh8AmkHbCKO4uxJqdSkQ8iAo7EZGSVC4YblsJFepBymH4qZexU0Vpk/AzpB43O4WIOEiFnYhISQuoBT1WQfkwSNoDq/tAZrLZqS6z2WDDffB9ncsTKETELaiwExExQ8V6Rsudf3U4uxlil5md6LLUGLhwypjRW7Wd2WlExAFax05ExCxBTY0xd+d2Qp1BZqe5LKeVrkr73Mu0iEipp8JORMRMVdsalxwXk4ztx7xM/PGcszBxiPaHFXE36ooVESkt0uNhZVf45VGwWc3LceWOEyLiVtRiJyJSWpzdCkm74dwO8K0IN3xY8lt5pSdcXjw5uGPJvraIFJta7ERESouwPtDhM8ACB6fD9r8bM1RLUsKl8XVBzcG/Wsm+togUm1rsRERKk4gHICsFfnsS9r0DvoHGXrMlJaQLdFoAlHBBKSJOocJORKS0iRwOmSmwbRzsfBF8K0HjZ0vmtf2rQd37Sua1RMTp1BUrIlIaNR0LLScY1/f90yj0RESuQy12IiKlVYuXwbs81LnPmEzhame3Qez/ILQXVLvR9a8nIk6nFjsRkdLKYoFmz0HFiMvHLp5z3eud+B52vAD733fda4iIS6mwExFxF8e/g+/rwunVrnl+LUws4vZU2ImIuAObDY58AZnJsPZO+PMX5z6/NfPyc2phYhG3pcJORMQdWCzQ8XMI7QlZqbC6LyTudN7zn90G2WngV8XYw1ZE3JIKOxERd+FdDrosguodIfMcrO51eZeI4rJvI3YrWPSrQcRd6X+viIg78akA3X6AKm2NvWV/6gmpR4v/vNofVsQjqLATEXE3fpWh+zIIbAppJ+DgjOI9n80GiduN68G3FjediJhI69iJiLijcsFw2wo4/Cm0eKl4z2WxwJ0HjXF2Vdo4JZ6ImEMtdiIi7iqgFrR85fKYOGt20Xeo8PKF6jeBt5/z8olIiVNhJyLiCbIvQvQDsKYfZKWZnUZETKLCTkTEE6TGQOwyYxLEurshO6Pwj/2pN/z6BFyIdV0+ESkRKuxERDxBYGPo9iN4B0Dccvh5CFizrv+4tJPG+X/MNmbciohbU2EnIuIpgjtC1+/Byw9OfAe/PAo2a8GPSdhgfK3cBnwDXR5RRFxLhZ2IiCcJ7Qm3fg0WbzjyH9g80ljOJD/xVyxMLCJuT4WdiIinqX0XdPgPYDG6WJP3539uzsLEIVqYWMQTaB07ERFPFDEEsi9Axfr57/168Ryc22VcV4udiEdQYSci4qkaPJr7duZ58K10+XZCNGCDipFQPrREo4mIa6grVkSkLDi3G5Y0hsOzjYWMT6+BuBVQvrZa60Q8iKmF3bp167jzzjsJCwvDYrGwaNGi6z5mzZo1tGvXDn9/fyIjI5k7d67Lc4qIuL1jXxvr1P36OCwMgVXd4cD7cOEExK2E4wvNTigiTmBqYZeamkrr1q358MMPC3V+TEwM/fv3p3v37mzfvp3Ro0fz+OOPs2zZMhcnFRFxcy0nQI2egA0uns1934WTsP4vKu5EPICpY+z69u1L3759C33+jBkzqFevHpMnTwagadOmbNiwgffee4/evXu7KqaIiPuzWQuYHWsDLLBlNNQaAF7eJRhMRJzJrSZPbNy4kZ49e+Y61rt3b0aPHp3vYzIyMsjIuLy1TnJysqviiYhc1++//86RI0eK9RxpaWkcPnzYocfU9jvE4GonCjjDBmnHWfDhM5y4GOlwpgYNGhAQEODw43JERETQqFGjIj9eRAxuVdjFxcVRo0aNXMdq1KhBcnIyFy5coHz58tc8ZuLEibz66qslFVFEpEBTp05lx44dJf66PSLjoef1z9u/bTWrDu1xfaCrtG7dmqlTp5b464p4Grcq7IoiKiqKsWPH2m8nJycTHh5uYiIRKctGjhxpWosdHLjueU3adqdic3Na7ESk+NyqsAsNDeX06dO5jp0+fZrAwMA8W+sA/P398ff3L4l4IiLX1ahRI3O6HK3ZsHgJpJ3EGFN3NQsE1Gbw/dM0xk7EjbnVOnYdOnRg1apVuY6tWLGCDh06mJRIRMRNeHlD+ymXbliuuvPS7fbvq6gTcXOmFnYpKSls376d7du3A8ZyJtu3b+fYsWOA0Y06bNgw+/lPPfUUf/zxB8899xz79+/no48+4quvvmLMmDFmxBcRcS/h90DnbyCgVu7jAbWN4+H3mJNLRJzG1K7YzZs30717d/vtnLFwDz30EHPnziU2NtZe5AHUq1ePH374gTFjxjBlyhRq167Np59+qqVOREQKK/weY0mThPXGgsXla0JwZ7XUiXgIi81my2uwhcdKTk4mKCiIpKQkAgMDzY4jIiIiUiBHahe3GmMnIiIiIvlTYSciIiLiIVTYiYiIiHgIFXYiIiIiHkKFnYiIiIiHUGEnIiIi4iFU2ImIiIh4CBV2IiIiIh5ChZ2IiIiIh1BhJyIiIuIhVNiJiIiIeAgfswOUtJytcZOTk01OIiIiInJ9OTVLTg1TkDJX2J0/fx6A8PBwk5OIiIiIFN758+cJCgoq8ByLrTDlnwexWq2cOnWKSpUqYbFYzI5TIpKTkwkPD+f48eMEBgaaHcej6LN1LX2+rqPP1rX0+bpWWft8bTYb58+fJywsDC+vgkfRlbkWOy8vL2rXrm12DFMEBgaWif8AZtBn61r6fF1Hn61r6fN1rbL0+V6vpS6HJk+IiIiIeAgVdiIiIiIeQoVdGeDv788rr7yCv7+/2VE8jj5b19Ln6zr6bF1Ln69r6fPNX5mbPCEiIiLiqdRiJyIiIuIhVNiJiIiIeAgVdiIiIiIeQoWdB3n44YexWCxYLBb8/PyIjIzktddeIysrizVr1tjvu/oSFxdndnS38PDDDzNw4ED7dYvFwqRJk3Kds2jRojKz8LUzbdy4EW9vb/r375/vOV9++SXe3t6MGDGiBJO5v7i4OEaNGkVkZCTlypWjRo0adOrUienTp5OWlgZAREQEFouFX375JddjR48eTbdu3UxI7T6u/Ll75eXAgQN07NiRe+65J9f5SUlJhIeH88ILL5iUuHTL+Tyfeuqpa+4bMWIEFouFhx9+2OFzyxIVdh6mT58+xMbGcvDgQcaNG8eECRN499137fcfOHCA2NjYXJeQkBATE7uvcuXK8fbbb5OYmGh2FLc3a9YsRo4cybp16zh16lS+5zz33HN8+eWXpKenl3BC9/THH3/Qtm1bli9fzltvvcW2bdvYuHEjzz33HEuWLGHlypX2c8uVK8fzzz9vYlr3lfNz98pLZGQkc+fOZenSpXzxxRf2c0eOHEnVqlV55ZVXTExcuoWHhzN//nwuXLhgP5aens68efOoU6dOkc8tK1TYeRh/f39CQ0OpW7cuTz/9ND179mTx4sX2+0NCQggNDc11ud72JJK3nj17EhoaysSJE82O4tZSUlJYsGABTz/9NP3792fu3LnXnBMTE0N0dDR///vfadSoEQsXLiz5oG7ob3/7Gz4+PmzevJn77ruPpk2bUr9+fQYMGMAPP/zAnXfeaT93+PDh/PLLL/z4448mJnZPOT93r7x4e3vTqFEjJk2axMiRI4mNjeX7779n/vz5fPbZZ/j5+Zkdu9Rq164d4eHhuf6fL1y4kDp16tC2bdsin1tW6De6hytfvjwXL140O4ZH8vb25q233mLq1KmcOHHC7Dhu66uvvqJJkyY0btyYBx98kNmzZ3P1Kkxz5syhf//+BAUF8eCDDzJr1iyT0rqPM2fOsHz5ckaMGEGFChXyPOfKYQP16tXjqaeeIioqCqvVWlIxPd7IkSNp3bo1f/3rXxk+fDgvv/wyrVu3NjtWqffoo48yZ84c++3Zs2fzyCOPFPvcskCFnYey2WysXLmSZcuWcdttt9mP165dm4oVK9ovzZs3NzGl+7v77rtp06aNulWKYdasWTz44IOA0aWVlJTE2rVr7fdbrVbmzp1rP+f+++9nw4YNxMTEmJLXXRw6dAibzUbjxo1zHa9evbr9///VXa8vvvgiMTExuboO5fqWLFmS6+fqoEGD7PdZLBamT5/OqlWrqFGjBn//+99NTOo+HnzwQTZs2MDRo0c5evQoP//8s/1nQHHOLQt8zA4gzpXzAyYzMxOr1coDDzzAhAkT2LRpEwDr16+nUqVK9vN9fX3Niuox3n77bW677TbGjx9vdhS3c+DAAX777Te+++47AHx8fBg8eDCzZs2yD9pfsWIFqamp9OvXDzAKk169ejF79mxef/11s6K7rd9++w2r1crQoUPJyMjIdV9wcDDjx4/n5ZdfZvDgwSYldD/du3dn+vTp9ttXt5DOnj2bgIAAYmJiOHHiBBERESWc0P0EBwfbh2bYbDb69+9P9erVi31uWaDCzsPk/IDx8/MjLCwMH5/c/8T16tWjcuXK5oTzUF26dKF3795ERUWVyRlYxTFr1iyysrIICwuzH7PZbPj7+zNt2jSCgoKYNWsWZ8+epXz58vZzrFYrO3fu5NVXX9UY0XxERkbaZ2deqX79+gC5Ps8rjR07lo8++oiPPvrI5Rk9RYUKFYiMjMzzvujoaN577z2WL1/OG2+8wWOPPcbKlSs1e74QHn30UZ555hkAPvzwQ6ed6+n0E9HD5PyAqVOnzjVFnbjOpEmT+O9//8vGjRvNjuI2srKy+Oyzz5g8eTLbt2+3X3bs2EFYWBhffvklZ86csQ84v/Kcbdu2kZiYyPLly81+G6VWtWrV6NWrF9OmTSM1NbXQj6tYsSIvvfQSb775JufPn3dhQs+XlpbGww8/zNNPP0337t2ZNWsWv/32GzNmzDA7mlvo06cPFy9eJDMzk969ezvtXE+n3/xlTHx8/DVLRVSrVk1dssXUsmVLhg4dygcffGB2FLexZMkSEhMTeeyxxwgKCsp137333susWbNIT0+nWrVq3Hfffde0cPTr149Zs2bRp0+fkoztVj766CM6derEDTfcwIQJE2jVqhVeXl5s2rSJ/fv30759+zwfN3z4cN577z3mzZvHzTffXMKpPUdUVBQ2m82+3mVERAT//Oc/GT9+PH379lWX7HV4e3uzb98++3Vnnevp1GJXxjRu3JiaNWvmumzZssXsWG7BarUW2Ar62muvaTahA2bNmkXPnj2vKerAKOw2b97M2LFjufvuu/Pstrr33ntZvHgxf/75Z0nEdUsNGjRg27Zt9OzZk6ioKFq3bs0NN9zA1KlTGT9+fL5jFH19fXn99de1XmAxrF27lg8//JA5c+YQEBBgP/7kk0/SsWNHHnvssWtmf8u1AgMDCQwMdPq5nsxi03eWSKH06dOHyMhIpk2bZnYUERGRPKnFTuQ6EhMTWbJkCWvWrKFnz55mxxEREcmXxtiJXMejjz7Kpk2bGDduHAMGDDA7joiISL7UFSsiIiLiIdQVKyIiIuIhVNiJiIiIeAgVdiIiIiIeQoWdiIiIiIdQYSciIiLiIVTYiYjHWLNmDRaLhXPnzpkdxWEWi4VFixaZHUNE3JwKOxFxOxs3bsTb25v+/fsXeN7cuXOpXLlyyYQqpAkTJtCmTZtrjsfGxtK3b9+SDyQiHkWFnYi4nVmzZjFy5EjWrVvHqVOnXP562dnZLt8HODQ0FH9/f5e+hoh4PhV2IuJWUlJSWLBgAU8//TT9+/dn7ty5eZ63Zs0aHnnkEZKSkrBYLFgsFiZMmABARkYG48ePp1atWlSoUIGbb76ZNWvW2B+b09K3ePFimjVrhr+/P8eOHSMiIoK33nqLRx99lEqVKlGnTh0+/vjjXK/7/PPP06hRIwICAqhfvz4vvfQSmZmZ9ud99dVX2bFjhz1TTv4ru2I7duzI888/n+t5ExIS8PX1Zd26dYV6D0ePHuXOO++kSpUqVKhQgebNm/Pjjz8W7UMXEbehwk5E3MpXX31FkyZNaNy4MQ8++CCzZ88mrw10OnbsyPvvv09gYCCxsbHExsYyfvx4AJ555hk2btzI/Pnz2blzJ4MGDaJPnz4cPHjQ/vi0tDTefvttPv30U/bs2UNISAgAkydP5oYbbmDbtm387W9/4+mnn+bAgQP2x1WqVIm5c+eyd+9epkyZwieffMJ7770HwODBgxk3bhzNmze3Zxo8ePA12YcOHcr8+fNzva8FCxYQFhZG586dC/UeRowYQUZGBuvWrWPXrl28/fbbVKxYsbgfv4iUdjYRETfSsWNH2/vvv2+z2Wy2zMxMW/Xq1W2rV6+22Ww22+rVq22ALTEx0Waz2Wxz5syxBQUF5Xr80aNHbd7e3raTJ0/mOt6jRw9bVFSU/XGAbfv27bnOqVu3ru3BBx+037ZarbaQkBDb9OnT88377rvv2tq3b2+//corr9hat259zXmA7bvvvrPZbDZbfHy8zcfHx7Zu3Tr7/R06dLA9//zzhX4PLVu2tE2YMCHfXCLimXxMritFRArtwIED/Pbbb3z33XcA+Pj4MHjwYGbNmkW3bt0K9Ry7du0iOzubRo0a5TqekZFBtWrV7Lf9/Pxo1arVNY+/8pjFYiE0NJT4+Hj7sQULFvDBBx9w+PBhUlJSyMrKIjAw0JG3SXBwMLfffjtffPEFnTt3JiYmho0bNzJz5sxCv4dnn32Wp59+muXLl9OzZ0/uvffePN+PiHgWFXYi4jZmzZpFVlYWYWFh9mM2mw1/f3+mTZtWqOdISUnB29ubLVu24O3tneu+K7sqy5cvj8Viuebxvr6+uW5bLBb7xIqNGzcydOhQXn31VXr37k1QUBDz589n8uTJhX6POYYOHcqzzz7L1KlTmTdvHi1btqRly5aFfg+PP/44vXv35ocffmD58uVMnDiRyZMnM3LkSIeziIj7UGEnIm4hKyuLzz77jMmTJ3P77bfnum/gwIF8+eWXNGnSJNdxPz8/srOzcx1r27Yt2dnZxMfH28erOUt0dDR169blhRdesB87evTodTPlZcCAAQwfPpylS5cyb948hg0bZr+vsO8hPDycp556iqeeeoqoqCg++eQTFXYiHk6FnYi4hSVLlpCYmMhjjz1GUFBQrvvuvfdeZs2axbvvvpvreEREBCkpKaxatYrWrVsTEBBAo0aNGDp0KMOGDWPy5Mm0bduWhIQEVq1aRatWra67Nl5BGjZsyLFjx5g/fz433ngjP/zwg73b+MpMMTExbN++ndq1a1OpUqU8lzmpUKECAwcO5KWXXmLfvn0MGTLEfl9h3sPo0aPp27cvjRo1IjExkdWrV9O0adMivzcRcQ+aFSsibmHWrFn07NnzmqIOjMJu8+bN7Ny5M9fxjh078tRTTzF48GCCg4N55513AJgzZw7Dhg1j3LhxNG7cmIEDB7Jp0ybq1KlTrIx33XUXY8aM4ZlnnqFNmzZER0fz0ksvXZO1T58+dO/eneDgYL788st8n2/o0KHs2LGDzp07X5Pteu8hOzubESNG0LRpU/r06UOjRo346KOPivX+RKT0s9hseawTICIiIiJuRy12IiIiIh5ChZ2IiIiIh1BhJyIiIuIhVNiJiIiIeAgVdiIiIiIeQoWdiIiIiIdQYSciIiLiIVTYiYiIiHgIFXYiIiIiHkKFnYiIiIiHUGEnIiIi4iFU2ImIiIh4iP8H7g3hzoMFfcAAAAAASUVORK5CYII=",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"ax = results.plot()\n",
"ax.plot(\n",
" results[0],\n",
" marker=\"o\",\n",
" linestyle=\"--\",\n",
" color=\"orange\",\n",
" label=\"Original results\",\n",
" zorder=3,\n",
")\n",
"ax.legend()\n",
"plt.tight_layout();"
]
},
{
"cell_type": "markdown",
"id": "ce7049b5-35cf-4db5-a3c5-2aa7728dea49",
"metadata": {},
"source": [
"### Untying and Recomposition strategies"
]
},
{
"cell_type": "markdown",
"id": "5799ac96",
"metadata": {},
"source": [
"When transitivity violations are detected in the dominance graph (i.e., cycles), the algorithm applies cycle-breaking strategies to restore consistency and generate valid rankings.\n",
"\n",
"The strategy used is controlled via the `make_transitive_strategy` parameter:\n",
"- `random` (default): removes edges uniformly at random from cycles.\n",
"- `weighted`: removes edges with higher participation in cycles (based on frequency), prioritizing structurally disruptive edges.\n",
"Custom strategies can also be provided as callables: `func(cycle, edge_freq, rng) → edge_tuple`.\n",
"\n",
"Multiple acyclic graphs may be generated depending on the number of cycle-breaking configurations (`max_ranks`), each yielding a potentially different recomposed ranking.\n",
"\n",
"Ties during pairwise evaluation are resolved through dominance analysis: if one alternative dominates the other in more criteria, it's considered superior even if the scores are tied."
]
},
{
"cell_type": "markdown",
"id": "c219f17f",
"metadata": {},
"source": [
"To illustrate these strategies in practice, we revisit the decision matrix used in the *Example failing both test cases* section.\n",
"We apply the `TransitivityChecker` to the original TOPSIS ranking and generate alternative rankings using two different cycle-breaking strategies: `random` and `weighted`.\n",
"\n",
"This example shows how different strategies for restoring transitivity can affect the final ranking, even when based on the same input data."
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "7e5affd9",
"metadata": {},
"outputs": [],
"source": [
"# Create a decision matrix\n",
"dm = skc.mkdm(\n",
" matrix=[\n",
" [4.57, 4.64, 62.2, 43.8, 8.49, 65.7],\n",
" [65.7, 67.3, 6.03, 43.8, 4.25, 9.42],\n",
" [20.3, 14.0, 20.2, 6.25, 58.3, 20.3],\n",
" [9.42, 14.0, 11.5, 6.25, 29.0, 4.57],\n",
" ],\n",
" objectives=[max, max, max, max, max, max],\n",
" alternatives=[\"status quo\", \"oil & ev\", \"oil & ngv\", \"methanol\"],\n",
" criteria=[\"supply\", \"emission\", \"tech\", \"safety\", \"cost\", \"consumer preference\"\n",
" ],\n",
")\n",
"\n",
"# Define TOPSIS pipeline\n",
"dmaker = mkpipe(\n",
" SumScaler(target=\"weights\"), VectorScaler(target=\"matrix\"), TOPSIS()\n",
")\n",
"original_result = dmaker.evaluate(dm)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "e428cdcd-c574-4729-8ace-903781f2b79d",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"