{
"cells": [
{
"cell_type": "markdown",
"id": "t18-cell-001",
"metadata": {},
"source": [
"# Tutorial 18: Geo-Experiment Analysis with SyntheticDiD\n",
"\n",
"A practitioner walkthrough for marketing analytics teams measuring lift from a campaign that ran in a subset of geographic markets. The tutorial uses `SyntheticDiD` (Arkhangelsky et al. 2021) on a simulated DMA panel and walks through the fit, the diagnostics, and the stakeholder summary you need to ship the result."
]
},
{
"cell_type": "markdown",
"id": "t18-cell-002",
"metadata": {},
"source": [
"## 1. The Geo-Experiment Problem"
]
},
{
"cell_type": "markdown",
"id": "t18-cell-003",
"metadata": {},
"source": [
"Your team piloted a marketing campaign in 5 metros out of an 80-market panel last quarter. Sales data is available for all 80 markets, before and after launch. Did the campaign work, and by how much?\n",
"\n",
"This is a textbook geo-experiment in the small-treated regime: you didn't roll out to half your markets — you piloted in a handful, with the intention of scaling later if it worked. The data you have is weekly conversions from all 80 markets, and leadership wants a single number with a confidence interval they can act on."
]
},
{
"cell_type": "markdown",
"id": "t18-cell-004",
"metadata": {},
"source": [
"**Why this is hard.** Markets are heterogeneous in ways that don't show up at a glance. New York responds to different macro forces than Topeka — local economic conditions, demographic trends, competitor activity, and seasonal patterns all shape each market's underlying growth trajectory. With only 5 treated markets, you can't average those differences away the way you could with 50 or 100. And basic difference-in-differences assumes the treated and control markets are on parallel underlying trajectories, which rarely holds across cities you didn't randomly assign. Cluster-robust standard errors compound the problem: with 5 treated clusters, the small-cluster asymptotics that make cluster-SE valid simply don't kick in, and your reported standard error is unreliable."
]
},
{
"cell_type": "markdown",
"id": "t18-cell-005",
"metadata": {},
"source": "**Why diff-diff.** The diff-diff library implements Synthetic Difference-in-Differences following [Arkhangelsky et al. (2021)](https://www.aeaweb.org/articles?id=10.1257/aer.20190159) - both the unit weights and the time weights, the placebo standard error procedure from the paper, and full panel-data interpretability. Implementation details and any documented deviations from the R `synthdid` reference are tracked in [`docs/methodology/REGISTRY.md`](https://github.com/igerber/diff-diff/blob/main/docs/methodology/REGISTRY.md).\n\nThis tutorial sits in SDiD's documented sweet spot: a small number of treated markets in a larger pool of donor controls, where basic DiD's averaging doesn't help and you need a counterfactual built specifically for your treated markets. The library's [practitioner decision tree](../practitioner_decision_tree.rst#few-test-markets) puts SyntheticDiD on the \"Few Test Markets\" branch for exactly this reason.\n\nIf you've been using GeoLift, CausalImpact, or rolling your own synthetic control in pandas, this tutorial gives you the canonical SDiD implementation in Python with the diagnostics, inference, and stakeholder packaging in one place."
},
{
"cell_type": "code",
"execution_count": 1,
"id": "t18-cell-006",
"metadata": {
"execution": {
"iopub.execute_input": "2026-04-22T21:17:39.827552Z",
"iopub.status.busy": "2026-04-22T21:17:39.827479Z",
"iopub.status.idle": "2026-04-22T21:17:40.857211Z",
"shell.execute_reply": "2026-04-22T21:17:40.856867Z"
}
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"from diff_diff import (\n",
" SyntheticDiD,\n",
" generate_factor_data,\n",
" plot_synth_weights,\n",
" practitioner_next_steps,\n",
")"
]
},
{
"cell_type": "markdown",
"id": "t18-cell-007",
"metadata": {},
"source": [
"## 2. The Data"
]
},
{
"cell_type": "markdown",
"id": "t18-cell-008",
"metadata": {},
"source": [
"We'll use a synthetic panel that mirrors a small-treated marketing pilot:\n",
"\n",
"- **80 markets**, named `market_000` through `market_079`\n",
"- **12 weekly periods**\n",
"- **5 treated markets** (the pilot cohort; campaign launched in week 7)\n",
"- **75 control markets** (the donor pool SDiD reweights to construct the synthetic control)\n",
"- Outcome: weekly conversions per market (range roughly 600-2300)\n",
"- Pre-period: weeks 1-6 · Post-period: weeks 7-12\n",
"- True treatment effect: +300 conversions per treated market per week (about 20% lift on a baseline of ~1500)\n",
"\n",
"The data is generated with `generate_factor_data`, which produces a panel where markets have **interactive fixed effects** — different markets have different latent loadings on time-varying factors. In plain English: markets respond to different macro forces (local economic conditions, demographics, competitor activity), so their underlying growth trajectories aren't identical even in the absence of any campaign. This is the regime SDiD is designed for. Because the data is synthetic, the true treatment effect is known and we can verify SDiD recovers it."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "t18-cell-009",
"metadata": {
"execution": {
"iopub.execute_input": "2026-04-22T21:17:40.858677Z",
"iopub.status.busy": "2026-04-22T21:17:40.858527Z",
"iopub.status.idle": "2026-04-22T21:17:40.868516Z",
"shell.execute_reply": "2026-04-22T21:17:40.868282Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Shape: (960, 4)\n",
"Markets: 80 (5 treated, 75 control)\n",
"Weeks: 1-12 (pre: 1-6, post: 7-12)\n"
]
}
],
"source": [
"raw = generate_factor_data(\n",
" n_units=80,\n",
" n_pre=6,\n",
" n_post=6,\n",
" n_treated=5,\n",
" n_factors=2,\n",
" treatment_effect=300.0,\n",
" factor_strength=150.0, # how much market-specific factors drive outcomes\n",
" treated_loading_shift=0.5, # systematic difference in treated markets' factor loadings\n",
" unit_fe_sd=80.0, # baseline-level heterogeneity across markets\n",
" noise_sd=25.0, # within-market week-to-week noise\n",
" seed=42,\n",
")\n",
"\n",
"# Schema note: generate_factor_data returns BOTH a time-varying treatment indicator\n",
"# (column 'treated', 1 only in post-treatment for treated units) AND a unit-level\n",
"# ever-treated indicator (column 'treat', 1 in every period for treated units).\n",
"# SDiD requires the unit-level indicator, so we use raw[\"treat\"] below.\n",
"df = pd.DataFrame({\n",
" \"market_id\": raw[\"unit\"].apply(lambda u: f\"market_{u:03d}\"),\n",
" \"week\": raw[\"period\"] + 1, # 1-indexed weeks 1..12\n",
" \"treated\": raw[\"treat\"],\n",
" \"conversions\": (raw[\"outcome\"] + 1500).round().astype(int),\n",
"})\n",
"\n",
"print(f\"Shape: {df.shape}\")\n",
"n_treated = len(set(df.loc[df['treated'] == 1, 'market_id']))\n",
"print(f\"Markets: {len(set(df['market_id']))} ({n_treated} treated, {len(set(df['market_id'])) - n_treated} control)\")\n",
"print(f\"Weeks: {df['week'].min()}-{df['week'].max()} (pre: 1-6, post: 7-12)\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "t18-cell-010",
"metadata": {
"execution": {
"iopub.execute_input": "2026-04-22T21:17:40.869577Z",
"iopub.status.busy": "2026-04-22T21:17:40.869495Z",
"iopub.status.idle": "2026-04-22T21:17:40.874320Z",
"shell.execute_reply": "2026-04-22T21:17:40.874100Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"weeks = sorted(set(df[\"week\"]))\n",
"treated_means = [df[(df.treated == 1) & (df.week == w)][\"conversions\"].mean() for w in weeks]\n",
"control_means = [df[(df.treated == 0) & (df.week == w)][\"conversions\"].mean() for w in weeks]\n",
"\n",
"# Derive group sizes from the data so legend labels can't go stale.\n",
"n_tr = len(set(df.loc[df[\"treated\"] == 1, \"market_id\"]))\n",
"n_co = len(set(df[\"market_id\"])) - n_tr\n",
"\n",
"fig, ax = plt.subplots(figsize=(8, 5))\n",
"ax.plot(weeks, treated_means, marker=\"o\", label=f\"Treated markets (n={n_tr})\", color=\"C0\", linewidth=2)\n",
"ax.plot(weeks, control_means, marker=\"s\", label=f\"Control markets (n={n_co})\", color=\"C1\", linewidth=2)\n",
"ax.axvline(6.5, color=\"gray\", linestyle=\"--\", label=\"Campaign start\")\n",
"ax.set_xlabel(\"Week\")\n",
"ax.set_ylabel(\"Mean conversions per market\")\n",
"ax.set_title(\"Pre-trends: treated vs control markets\")\n",
"ax.legend()\n",
"ax.grid(True, alpha=0.3)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "t18-cell-013",
"metadata": {},
"source": [
"The two lines hover around similar levels in the pre-period (weeks 1-6) but they're not on identical trajectories — small underlying differences are visible if you look closely. After week 7 the treated mean jumps above control. The challenge is that with only 5 treated markets, even small pre-period differences are hard to interpret by eye, and the bigger problem is that some of the divergence comes from underlying market heterogeneity that won't show up in the average pre-trend at all. SDiD addresses both: it constructs a counterfactual built specifically for *these* 5 treated markets (rather than averaging all 75 controls equally), and it uses time weights to make the pre-period comparison robust to baseline differences."
]
},
{
"cell_type": "markdown",
"id": "t18-cell-014",
"metadata": {},
"source": [
"## 3. SyntheticDiD - The Idea and the Fit"
]
},
{
"cell_type": "markdown",
"id": "t18-cell-015",
"metadata": {},
"source": "Synthetic Difference-in-Differences finds two sets of weights:\n\n1. **Unit weights** ($\\omega_j$): a weighted blend of control markets whose pre-period trajectory matches the treated markets' pre-period trajectory.\n2. **Time weights** ($\\lambda_t$): a weighting of pre-treatment periods that emphasizes the baseline weeks most informative for the comparison.\n\nThe ATT estimator combines both: take the time-weighted average of (treated mean minus unit-weighted control mean), then subtract the same quantity computed in the pre-period. The unit weights make the synthetic control match the treated group; the time weights make the comparison robust to pre-treatment level differences.\n\nThis is the method introduced in [Arkhangelsky, Athey, Hirshberg, Imbens, & Wager (2021)](https://www.aeaweb.org/articles?id=10.1257/aer.20190159). Algorithmic details and any documented deviations from the R `synthdid` reference live in [`docs/methodology/REGISTRY.md`](https://github.com/igerber/diff-diff/blob/main/docs/methodology/REGISTRY.md)."
},
{
"cell_type": "code",
"execution_count": 6,
"id": "t18-cell-016",
"metadata": {
"execution": {
"iopub.execute_input": "2026-04-22T21:17:40.989623Z",
"iopub.status.busy": "2026-04-22T21:17:40.989544Z",
"iopub.status.idle": "2026-04-22T21:17:41.228821Z",
"shell.execute_reply": "2026-04-22T21:17:41.228493Z"
}
},
"outputs": [],
"source": [
"# Note: variance_method, n_bootstrap, and seed are CONSTRUCTOR kwargs.\n",
"# They are not arguments to .fit().\n",
"model = SyntheticDiD(variance_method=\"placebo\", n_bootstrap=100, seed=42)\n",
"results = model.fit(\n",
" df,\n",
" outcome=\"conversions\",\n",
" treatment=\"treated\",\n",
" unit=\"market_id\",\n",
" time=\"week\",\n",
" post_periods=[7, 8, 9, 10, 11, 12],\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "t18-cell-017",
"metadata": {
"execution": {
"iopub.execute_input": "2026-04-22T21:17:41.230093Z",
"iopub.status.busy": "2026-04-22T21:17:41.230011Z",
"iopub.status.idle": "2026-04-22T21:17:41.231757Z",
"shell.execute_reply": "2026-04-22T21:17:41.231511Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"===========================================================================\n",
" Synthetic Difference-in-Differences Estimation Results \n",
"===========================================================================\n",
"\n",
"Observations: 960\n",
"Treated: 5\n",
"Control: 75\n",
"Pre-treatment periods: 6\n",
"Post-treatment periods: 6\n",
"Zeta (unit weights): 724.4726\n",
"Zeta (time weights): 0.000310\n",
"Noise level: 309.5577\n",
"Pre-treatment fit (RMSE): 33.7142\n",
"Variance method: placebo\n",
"\n",
"---------------------------------------------------------------------------\n",
"Parameter Estimate Std. Err. t-stat P>|t| \n",
"---------------------------------------------------------------------------\n",
"ATT 311.8536 7.3125 42.647 0.0099 **\n",
"---------------------------------------------------------------------------\n",
"\n",
"95% Confidence Interval: [297.5213, 326.1858]\n",
"CV (SE/abs(ATT)): 0.0234\n",
"\n",
"---------------------------------------------------------------------------\n",
" Top Unit Weights (Synthetic Control) \n",
"---------------------------------------------------------------------------\n",
" Unit market_006: 0.0313\n",
" Unit market_035: 0.0306\n",
" Unit market_033: 0.0286\n",
" Unit market_022: 0.0261\n",
" Unit market_044: 0.0256\n",
" (73 units with weight > 0.001)\n",
"\n",
"Signif. codes: '***' 0.001, '**' 0.01, '*' 0.05, '.' 0.1\n",
"===========================================================================\n"
]
}
],
"source": [
"print(results.summary())"
]
},
{
"cell_type": "markdown",
"id": "t18-cell-018",
"metadata": {},
"source": [
"**Plain-English interpretation.** SDiD estimates that the campaign lifted weekly conversions by **about 312 per treated market** (95% CI: 298 to 326), which is roughly a **21% lift** on a baseline of ~1500 weekly conversions per market. The true treatment effect in the synthetic DGP was 300, so the point estimate is within 4% of the truth and the 95% CI comfortably covers it.\n",
"\n",
"The 95% CI is constructed from `results.conf_int` (note: the field name is `conf_int`, not `ci`), and the p-value crosses below the 0.01 significance threshold. With only 5 treated markets, that the CI covers the true effect this cleanly is exactly what SDiD's localization is designed to deliver — and per Arkhangelsky et al. (2021), it's the regime where SDiD dominates basic DiD on the same data."
]
},
{
"cell_type": "markdown",
"id": "t18-cell-019",
"metadata": {},
"source": [
"## 4. Diagnostics - Who Is the Synthetic Control?"
]
},
{
"cell_type": "markdown",
"id": "t18-cell-020",
"metadata": {},
"source": [
"SDiD's interpretability advantage: you can see exactly which control markets are doing the work. The unit weights tell you the weighted blend; the time weights tell you which baseline weeks the method emphasized; the pre-treatment fit RMSE tells you how well the synthetic match worked.\n",
"\n",
"This is not a black box - you can show stakeholders the receipts."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "t18-cell-021",
"metadata": {
"execution": {
"iopub.execute_input": "2026-04-22T21:17:41.232798Z",
"iopub.status.busy": "2026-04-22T21:17:41.232728Z",
"iopub.status.idle": "2026-04-22T21:17:41.235765Z",
"shell.execute_reply": "2026-04-22T21:17:41.235563Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Top 10 unit weights:\n",
" unit weight\n",
"market_006 0.031326\n",
"market_035 0.030555\n",
"market_033 0.028563\n",
"market_022 0.026090\n",
"market_044 0.025561\n",
"market_051 0.025294\n",
"market_079 0.024434\n",
"market_077 0.024176\n",
"market_011 0.020970\n",
"market_019 0.020149\n",
"\n",
"Total weight: 1.0000 (should be ~1.0)\n",
"Markets with non-trivial weight (> 0.01): 48\n"
]
}
],
"source": [
"unit_weights = results.get_unit_weights_df()\n",
"print(\"Top 10 unit weights:\")\n",
"print(unit_weights.head(10).to_string(index=False))\n",
"print(f\"\\nTotal weight: {unit_weights['weight'].sum():.4f} (should be ~1.0)\")\n",
"print(f\"Markets with non-trivial weight (> 0.01): {(unit_weights['weight'] > 0.01).sum()}\")"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "t18-cell-022",
"metadata": {
"execution": {
"iopub.execute_input": "2026-04-22T21:17:41.236762Z",
"iopub.status.busy": "2026-04-22T21:17:41.236687Z",
"iopub.status.idle": "2026-04-22T21:17:41.294144Z",
"shell.execute_reply": "2026-04-22T21:17:41.293879Z"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9kAAAJOCAYAAACjoMSlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAACJkElEQVR4nO3dCXgUVfb//9OBsAdCIjvIKoKIgDoouIsDLoPbjCAqKKMIiji4i4qKiiBuMK4jioqMG+P2HRZREBUFWVREdERBAUUWZQ2Gvfv/fK7/6l+n6YQkVuhU+v16niK9VFdX9e1u+txz7q1QJBKJGAAAAAAA+MPS/vgmAAAAAACAEGQDAAAAAOATgmwAAAAAAHxCkA0AAAAAgE8IsgEAAAAA8AlBNgAAAAAAPiHIBgAAAADAJwTZAAAAAAD4hCAbAAAAAACfEGQDAIpl+fLlFgqF7IEHHtgvz3fiiSe6BQW78847XbskU5MmTeySSy6x0u6PvKf0uEMPPdT3fQIABB9BNgAExJdffml/+9vfrHHjxlapUiVr0KCB/fnPf7ZHHnmkRJ93ypQpLnDbH77++mv3XArg94c33njDTjvtNDvggAOsQoUKVr9+fevRo4e99957Jfq8L774oo0ePdqSqaAg8ddff3WBul/tXpR2HTVqlHvuzz//PM/tkUjEatas6e774Ycf8ty3fft2q1ixol1wwQVW2vz888/u2BcuXJjsXQEA7CcE2QAQALNnz7YjjzzSvvjiC+vXr589+uijdtlll1laWpqNGTOmxIPsYcOG2f6gYEzPlSgYe+edd9ziBwVsffv2tXPPPdfWrl1r1157rT355JM2cOBA+/77761Lly7uNS/LQXZJWrJkiY0dO7ZQ7Rrv2GOPdX8/+uijPLd/9dVXtmnTJitfvrx9/PHHee6bP3++7dy5M/rYwvLzPVVQkK1jJ8gGgNRRPtk7AADYt+HDh1uNGjVcMJGZmZnnvnXr1lkqUKbZLw8++KA999xzNnjwYHvooYfylFffeuut9sILL7hgrjRQllbHrg6VoFBWubjUmaRKDQXZgwYNit6uwDo7O9vdr/suuuii6H1eQF7UINvP9xQAAJ7g/I8NACls2bJl1qZNm70CbKldu3b08gknnGDt2rVLuI2DDz7YunXrttd46qeeesqaN2/uAqM//elPLpD3aFztY4895i5rfW+JV9A2PN98840rd8/KynJBlIKl//u//4ver6D3vPPOc5dPOumk6HO9//77+Y6fVQCqUtyWLVu6bdarV89lp/V65Wfbtm02YsQIa9WqlTv+RMfTu3dv69ixY/S6stvaN+17lSpV7Oijj7bJkyfneYz2U9t69dVXXadIw4YN3T4pK7506dLoejoGPXbFihXRY9QY5thtvPzyy3bbbbe5IQF6vi1btrj7J06caEcccYRVrlzZlbgr0Fy1apXtz7HeOha9L/ReVMePKgJyc3PzHZO9r3ZNFPjqPRSfrdb1Tp062THHHJPwPu2PV/4eDoddpYA+M2qDOnXqWP/+/W3jxo15HpfoPaV2OfPMM61q1arus3XNNdfYtGnT8t1nZel1XGontZfK3T1aX8ciep28Y9drIt9995399a9/tbp167r91Hvm/PPPt82bN++zPQAApVfp6KYHABRI47DnzJljixcvLnCyJQWHKiePX09B77fffusCt/iy5ZycHBeA6Me/AgQFqQoq09PT3e0qd3333XdddjeRfW3DK/VVcKQg5Oabb3YBjILRs88+21577TU755xz7Pjjj7err77a/vnPf9ott9xirVu3do/1/sbbs2eP/eUvf7EZM2a4wOQf//iH2w/tq45fQX8iynpu2LDBZbHLlSu3z9de5eSdO3d2gaT2T9nU559/3gVi//nPf9y+xxo5cqTLOl9//fUuWNLrceGFF9rcuXOjmXLd/tNPP9nDDz/sbqtWrVqebdx9990u2NQ2duzY4S4rMFOgpqBNnQTaLw0VUICp8cuJOmBKgsasN23a1O3DZ599Zk8//bQLRu+7776E6xe1Xb2M9KxZs1xnkNcBoePUEAl1ftxxxx2udFzHrNJ/lfYrAPey/Xoveq+XnltjuDXEQq+TtuO9L+P99ttvdvLJJ9vq1avd+0nBr97fM2fOTLi+gvZTTz3Vvd/1uuj9cNNNN1nbtm3dWH8d41133WW33367XX755Xbccce5x+n9pPJ2dXqpfZWx13Opw2TSpEnu2NSBAQAIqAgAoNR75513IuXKlXNLp06dIjfeeGNk2rRpkZ07d+ZZb9OmTZFKlSpFbrrppjy3X3311ZGqVatGtm7d6q7/8MMPEf0XkJ2dHdmwYUN0vbfeesvd/t///jd628CBA91t8YqyjS5dukTatm0b2b59e/S2cDgc6dy5c+Sggw6K3jZx4kT32JkzZ+71fCeccIJbPOPGjXPrPvTQQ3utq23nZ8yYMe5xb7zxRqQwBg8e7NafNWtW9LacnJxI06ZNI02aNIns2bPH3aZ91nqtW7eO7NixY6/n+/LLL6O3nXHGGZHGjRvv9VzeNpo1axbJzc2N3q52rl27duTQQw+NbNu2LXr7pEmT3Pq333579LY77rgjYXvF02vZpk2bhPf98ssvbhvaVvx2//73v+dZ95xzznHvgVg6tosvvrhQ7ZrI5MmT3fovvPCCu7569Wp3/YMPPnCvvT4HWkcWL17s7hs+fLi7rnbS9X//+995tvn222/vdXv8e+rBBx9067z55pvR2/R6t2rVaq/91+N02/jx46O3qd3r1q0b+etf/xq9bf78+W69Z599Ns/+fP755+52vTYAgLKFcnEACADNIq5MtrKnmvxM2VFlwZQZji25VvbrrLPOspdeesll+LyM7yuvvOKyxsogx+rZs6ebsdnjZdqUhS6sfW1DWWPN1q1MnzLNmrlay/r1690xqGS2OCXPyoCrZDp23K6noFNYeaXXGRkZhZ74TdnT2PG+yjwrM6lMq8qFYyl7GjvWtziv6cUXX+xKwj0LFixwY++vvPJKV1bsOeOMM1zZe3zpekkaMGBAnus6PrWl97r6QZleZaW9sdZe9llZfL32hx12WLRk3PvrtY9K6vU50GfGe69pUZm9HptfVlrefvtt95nS58yj11vVIYloe7Fjw9Xueq8Upq29TLVK0ePL7QEAwUaQDQABoQDj9ddfdyWq8+bNsyFDhrigVeOcYwO9Pn362MqVK125rUyfPt2VFquUPN6BBx6Y57oXLMePXS3IvrahMbwK+IcOHWq1atXKs6jst7iTt2nctcaZF3WCsurVq7u/eu0KQ2N09TzxvHJn3e/3a6py7Ph9kET7oSA7fh/8kqizwo/j2xeVgWs8dWwg3aFDh2jHg4Lw2Pu84FbUaaNyfJWwx7/ftm7dWuB7Ta+jhhnEH3eLFi0Srq8x1PHr6vUozGuhNtas9iq3V2eROpw0/wHjsQEg+BiTDQAB400MpUUTfilzquydF7Dqx7omepowYYIbD6u/Gu95yimn7LWt/MYke1nwwtjXNjQJlWh8sTfxWrz8gpiSoKDUO++4svt+8+M1jc1ilxRlaDUJXCJeZjU2a+7n8RWGMtM6rZrGJyuQVmDt0eVx48bZrl27XLZbWWpvX/V+U4D973//O+F2FWz75Y++FprlXhPEvfXWW+5UYho/rrHun3zyiQvgAQDBRCYbAAJMM3SLJmqK/eF/wQUXuEmYlFF78803rVevXoWa5CuRgkqvC6NZs2bur8p9FegnWrzS7aI8lzKOOh+zAq2iBm/KNqqkXqX0hZl0Ts+TaLZ07/6Sfk2950i0H7qtOPugx/z4448JA23veYqzXb/eQ2onBauqxNCEZZo4LzbI1n6rTF6l2bGl/HpfqHxd6yd6r+U3+753vKqQiA+SY2eH9/vYNUmaJiT88MMPXfWJhk6ocwEAEFwE2QAQABpHmig7pvHCicqIVRquAFuzLKtENnbcaFF547iVUSwOZRV1mqR//etfeToDPL/88kuxnkunPtJYW80aXZRMok61pBmg//e//7m/idZV9l8l+XL66ae7yxoTHzsLtU5bppmvDznkECsqHWdRyoLVmaLXUcGXZqP2TJ061R2HxmYXlY5LHRRql1jKBD/xxBOuYkKnH/NDcd5DXuCs85hrP2Mz2Xrddbo273RZsUG2xv6r80QztMfbvXt3gfugSgsFubHzHOg0cWPHjjW/j11j2LU/8QG3xqLHtjEAIHgoFweAANDkXirh1emiVO6s0//otEWa0EwBh0rGY2n8qk7hpTJyjR0+/PDDi/3cKsUVlbIqCFFGXKfMKgqNNVUgpCBCk0gpu61x4gpcdSorTeYm7du3d9vX6aAUhOq82zqlUuy5wGPHno8fP96Na1UQrAm4FPwq86kJwjQBXH5uuOEGd1oxleuqA0Pj2lVSv2bNGpf51/b0+opOOaast07JpNdA58rWKbx0WihNvuadNqqor6naTvvuTebVvXv3fNdXFYBeE7WzzoWuygTvFF5qf53Luaj0fF27dnWP1fF6pylTgKny7Hvuuce30uqitGvs2O9GjRq594iOsX79+nnu1/7q9VemODbLrddHnUsqu164cKE7Rr1+Gqutz4NeM7V3InqcOm30+uoUXgrkVXbulaIXJyOvzLrGmKuDRBUbCrqPOuoo956/6qqr3DnENexDAbdOk6fXSR1IAIAAS/b05gCAfZs6dao7dZJOJVStWrVIhQoVIi1atIgMGjQosnbt2oSPGTVqlDtF0L333pvv6bfuv//+ve6LP3XT7t273fPUqlUrEgqFoqeHKso2ZNmyZZE+ffq4Uxylp6dHGjRoEPnLX/4S+c9//pNnvbFjx7pTWOk0TbGnTYo/3ZLoNFe33nqrO52Wtqlt/+1vf3PPVRh67q5du0aysrIi5cuXj9SrVy/Ss2fPyPvvv7/Xvmu7mZmZ7hRpHTt2dKfPSnT6rfhTMnmvU+wpnHQqtQsuuMBtT/d5p/PKbxueV155JdKhQ4dIxYoV3T5feOGFkZ9++inPOoU9hZfolGp33nmne19pmzrN29FHHx2ZMGHCXut629XpvWLpuHS7jjO/U3gV1K4F6dWrl1tXr1U8nbrNO2VaIk899VTkiCOOiFSuXDmSkZHhTiGnU9/9/PPP0XUSvae+//57d4o1PU7v+euuuy7y2muvuef65JNP9nkKNB13/OnZdFq7Qw45xL3HvPeCnkef6ebNm7v3lNrzpJNOikyfPn2frwsAoHQL6Z9kB/oAAP8pY6cspU4zFT8jNIDCGz16tPssqepCp/gCAKAgBNkAUAbpq10TPGVnZxd4XmAAeWlCtdjZ3TUmW8MvNM7722+/Teq+AQCCgTHZAFCGaEyyxtQqsNYpqnRqIACFd+6557rKD40j1/hxTYKnmeTzOyUYAADxyGQDQBmi0vCmTZu6iZY0+dfw4cOTvUtA4ErDn376afdZUvZas8ffeOON1rNnz2TvGgAgIAiyAQAAAADwCefJBgAAAADAJwTZAAAAAAD4hInPUkA4HLaff/7ZMjIyLBQKJXt3AAAAgDJHo3BzcnKsfv36lpZGLjOVEWSnAAXYjRo1SvZuAAAAAGXejz/+aA0bNkz2biCJCLJTgDLYsmLFCjfjMIJXifDLL79YrVq16BUNGNou2Gi/4KLtgo32C65Ub7stW7a4xJb32xupiyA7BXgl4tWrV3cLgvcf1vbt213bpeJ/WEFG2wUb7RdctF2w0X7BRdv9juGZSN13PwAAAAAAPiPIBgAAAADAJwTZAAAAAAD4hCAbAAAAAACfEGQDAAAAAOATgmwAAAAAAHxCkA0AAAAAgE8IsgEAAAAA8AlBNgAAAAAAPiHIBgAAAADAJwTZAAAAAAD4hCAbAAAAAACfEGQDAAAAAOATgmwAAAAAAHxCkA0AAAAAgE8IsgEAAAAA8AlBNgAAAAAAPiHIBgAAAADAJwTZAAAAAAD4hCAbAAAAAACflPdrQyj9NuWELVwunOzdQBFFwmHL2Ra29JywhegWCxTaLthov+Ci7YKN9guuZLZdxfSQVa0U2r9PCuSDIDuFjJ2Wa1t20uRBE7KwZVfabuu3b7UIxSeBQtsFG+0XXLRdsNF+wZWstqudmWYDu1chyEapQcSVQtZvDtu6XDLZQROyiFlG2FblRCxitF+Q0HbBRvsFF20XbLRfcNF2wO/oHgQAAAAAwCcE2QAAAAAA+IQgGwAAAAAAnxBkAwAAAADgE4JsAAAAAAB8QpANAAAAAIBPCLIBAAAAAPAJQTYAAAAAAD4hyAYAAAAAwCcE2QAAAAAA+IQgGwAAAACQVLt27bKrrrrKatasaVlZWTZo0CDbvXt3sdbV9UaNGln16tWtQYMGNnjwYNu5c2f0/qFDh1rbtm2tfPny7r5YO3bssBNPPNFq167tHt+qVSt76qmninQsKRNkN2nSxEaPHp3s3QAAAAAAxLnnnnvso48+sq+//tq++uormzVrlt17773FWvfKK6+0b775xrZs2WJffPGFW0aNGhW9v0WLFu76mWeeude2FXg/8sgj9vPPP7vHv/766y4o13MUVsoE2X+UejPiezn2ZeXKlXbGGWdYlSpVXE/IDTfcsFdvzPvvv2+HH364VaxY0TX2c889t9d2Vq1aZRdddJFlZ2db5cqVXa/LggUL/vAxAQAAAEBpMG7cOLvtttusXr16brn11lvtmWeeKda6rVu3tqpVq7rLkUjE0tLS7Lvvvovef/HFF9tpp53mMtXxypUrF81ySygUcsvSpUsLfSxlPsiOLQvYn/bs2eMCbD3/7Nmz7fnnn3cB9O233x5d54cffnDrnHTSSbZw4UIXxF922WU2bdq06DobN260Y445xtLT023q1Kmut+bBBx90pREAAAAAEHQbN260n376ydq3bx+9TZeVtNy8eXOx1h05cqRVq1bNJTuVyVYJeVH85S9/sUqVKtkhhxxiderUsXPOOScYQbaywzpYBZcKGrXzY8eOtd9++8369u1rGRkZLrur4NILXC+99FJr2rSpy+gefPDBNmbMmDzbvOSSS+zss8+24cOHW/369d06iTz99NOWmZlpM2bMcNcXL17sejPUENqP3r1726+//hrd5gcffOCey+vJWL58eYHH9s4777iAeMKECa7Rte27777bHnvssWjg/+STT7pjUdCs3haNK/jb3/5mDz/8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IKHtgo32Cy7aLthoPwBBR/cgAAAAAAA+IcgGAAAAAMAnBNkAAAAAAPiEIBsAAAAAAJ8QZAMAAAAA4BOCbAAAAAAAfEKQDQAAAACATwiyAQAAAADwCUE2AAAAAAA+IcgGAAAAAMAnKRNkN2nSxEaPHp3s3QAAAACAfO3atcuuuuoqq1mzpmVlZdmgQYNs9+7dRV53x44d1q9fP2vatKllZGRYq1atbNy4cXke//XXX1uXLl3c4+vWrWuXX3655ebm5lnn6aeftoMPPtiqVq3qYqq33nqrBI++bEiZIPuPOvHEE23w4MFFeszKlSvtjDPOsCpVqljt2rXthhtuyPMB+eijj+yYY46x7Oxsq1y5snvjP/zww3m28cQTT9hhhx1m1atXd0unTp1s6tSpvh0XAAAAgNLjnnvucXGCAuCvvvrKZs2aZffee2+R11XcUa9ePZs+fbpt2bLFnnvuObvuuuvsnXfeiT7+ggsucAH02rVr7csvv7QvvvjC7r777uj9Tz31lD344IP28ssv29atW23u3LnWtm3b/fAqBFuZD7J37tyZlOfds2ePC7D1/LNnz7bnn3/evbFvv/326DrqDVLP04cffmj/+9//7LbbbnOL3syehg0b2siRI+3TTz+1BQsW2Mknn2xnnXWW+xABAAAAKFuUbVZMoABZy6233mrPPPNMkddVrHHXXXdZ8+bNLRQK2dFHH20nnXSSC8o933//vV100UVWoUIFq1Wrlp155pku2PbiGcUuY8aMsQ4dOrht1KlTx5o1a7afXongSkt2dlglDcoQq0RBjTZ27Fj77bffrG/fvq6soUWLFtHMrRr60ksvdSUPyvyq10WNHuuSSy6xs88+24YPH27169d36ySisofMzEybMWOGu7548WI77bTTrFq1am4/evfubb/++mt0mx988IF7Lr25tCxfvrzAY1MPkXqUJkyYYO3bt3fbVq/QY489Fg389Wbt1auXtWnTxpVe6A3erVs31wPl6d69u51++ul20EEHWcuWLd1xaR8/+eSTP/jqAwAAAChNNm7caD/99JOLHzy6rArZzZs3F3td2b59u82bN89VyXquv/56Gz9+vG3bts3WrFljb7zxhos/ZMmSJS7D/dlnn7lYRck/lZ8rK45SnslWhveAAw5wDa6A+4orrrDzzjvPOnfu7Bq0a9euLuDV2IBwOOwa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zkyzgd2rEGQDKDFEXClk/eawrcslkx00IYuYZYRtVU7EIkb7BQltF2y0X3DRdsFG+wEIOrp3AQAAAADwCUE2AAAAAAA+IcgGAAAAAMAnBNkAAAAAAPiEIBsAAAAAAJ8QZAMAAAAA4BOCbAAAAAAAfEKQDQAAAACATwiyAQAAAADwCUE2AAAAAAA+SZkgu0mTJjZ69Ohk7wYAAACAP2jXrl121VVXWc2aNS0rK8sGDRpku3fvLvK6O3bssH79+lnTpk0tIyPDWrVqZePGjdtrG08//bQdfPDBVrVqVRdXvPXWW9H7Lr/8cndfZmZmCR4xgiRlguw/6sQTT7TBgwcX6TErV660M844w6pUqWK1a9e2G264Ic+H//XXX7c///nPVqtWLatevbp16tTJpk2blmcbI0aMsD/96U/uQ69tnH322bZkyRLfjgsAAAAImnvuucc++ugj+/rrr+2rr76yWbNm2b333lvkdfXbvF69ejZ9+nTbsmWLPffcc3bdddfZO++8E338U089ZQ8++KC9/PLLtnXrVps7d661bds2en+7du3s8ccftyOOOGI/HDmCoMwH2Tt37kzK8+7Zs8cF2Hr+2bNn2/PPP+8+tLfffnt0nQ8//NAF2VOmTLFPP/3UTjrpJOvevbt9/vnn0XU++OADGzhwoH3yySf27rvvup64rl272m+//ZaU4wIAAACSTdnm2267zQXIWm699VZ75plniryuMtN33XWXNW/e3EKhkB199NHuN7mCcu83vX6/jxkzxjp06ODWqVOnjjVr1iy6ff1W79Kli1WqVGk/HT1Ku7RkZ4dVrqEMsco39IYdO3asCyD79u3rsrctWrSwqVOnRt/kl156qSvnqFy5sivL0Bs+1iWXXOKyvcOHD7f69eu7dRJRyYdKOmbMmOGuL1682E477TSrVq2a24/evXvbr7/+Gt2mgl09lz5YWpYvX17gsan3S71lEyZMsPbt27tt33333fbYY49FA3+Vr994440uU33QQQe5HjX9/e9//xvdzttvv+2ev02bNq6XTIG6MuQKygEAAIBUs3HjRvvpp5/cb2yPLus38ubNm4u9rmzfvt3mzZtnhx12mLuuCtK1a9faZ5995srEGzZs6MrLlfUGSm0mWxneAw44wL2ZFXBfccUVdt5551nnzp3dm1lZWwW8ubm5Fg6H3Rt74sSJLoBVr9Itt9xir776ap5tKnDWB0KZ30mTJu31nKNGjbKbb77ZBcLqddq0aZOdfPLJrndqwYIFLrDVh6lHjx5ufQXXKuXWB2r16tVuadSoUYHHNWfOHFdGooDd061bN/eBVJlKIjq+nJwcN1YkP96XQUHraGyJnid2AQAAAMoClWxL7Bho77J+Sxd33UgkYpdddplLep177rnutg0bNri/KidXnLBw4UL74Ycf7Jprrimho0NZUD7ZO6DsrMo3ZMiQITZy5EgXdCugFQXSTzzxhC1atMiVbwwbNiz6WGW0FcwqyPYCYq/sQ5nqChUq7PV8N910k73wwgsuM63ssDz66KMuwI4dx6GyEgXS3377rbVs2dJtS2Or69atW6jjWrNmTZ4AW7zrui+RBx54wH0RxB5LfBCurP8xxxxjhx56aL7PrXHcsa8TAAAAUFao8tRLPilu8C6LKmGLs64C7CuvvNIl6hRQp6Wl5Xm84hTv8brcq1evEj9OBFfSg2yvFEPKlStn2dnZeSYS8ALTdevWub8qt1YArBKPbdu2udLr2PIP0eMTBdiasECl6OqFih1H8cUXX9jMmTOjH6JYy5Ytc0F2SXvxxRddYKyZCjXBWSIa76Gydm+MSH70wb/22muj15XJ3lfmHQAAAAgCDTNVdauyyhpLLbqs37s1atQo8roKsPU7WxOaqSI2dhsaespYawSuXDw9PT3PdY13jr1N170srmb0u/766924bJV66wOisdvxk5spk53Icccd58Z1x5eXK3usCce0vdjlu+++s+OPP75Yx6WMt0rOY3nX47PhOi6Vpmi/TjnllITb02kHVPquzgB9URSkYsWKbrby2AUAAAAoKxQDaA4mVYhqUUWqfk8XZ139zv7444/dUFMF5bE0D9RFF11k9913nxvfrWGmunzWWWdF11EsorHcildEl/M7nRhSQ9KD7KLQm19jtVXKofJuTYqmTHNhdezY0U2ipg+WSrM9hx9+uBsnrckMtM3YxQvYlRlXgF5YGsP95ZdfRjPwog+uAt5DDjkkettLL73kPvj6q9nI46lnTR/8N954w9577z1XIg8AAACksqFDh7rf261bt3aLhlNqriYZMGCAWwqz7ooVK9zpt1Qm3rhxY1fZqiX28ZqsWBMq63e4Mtta76GHHorerzmkFIzrjEJeJa5OG4bUlfRy8aLQJATjx493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5/EnnniiVaxY0apVqxZdfv755+j9f/vb36xevXpuGKy2c88995Tw0SNVFDmTPXXqVJs8ebIdc8wxFiRNmjSxwYMHuwUAAADA/qdA9qOPPrKvv/7aXT/ttNPs3nvvtdtvv71I6yrYVoA8ffp0a9asmTvTke5v2LChde3aNbqN++67L9/f/3fccYe1bNnSBeIrV660U0891cUMF110UYkdP1JDkTPZXk9SqlFPWFEDdH1YzzjjDHe6s9q1a9sNN9yQp6fu/fffd6dEi1/WrFkTXefDDz+07t27W/369d19b775pq/HBQAAAOwvyjbfdtttLkDWcuutt7oq2aKuW7VqVbvrrrusefPm7jfy0UcfbSeddJILygurbdu2LsAWbSMtLc2+++47n44UqazIQfbdd9/teo9yc3MtCHbu3JmU59W5wxVg6/lnz55tzz//vD333HMJe+mWLFliq1evji4KyGPHwOv0aI899th+PgIAAADAPxs3brSffvrJ2rdvH71Nl5WY2rx5c7HXle3bt9u8efPssMMO2ysbrgRhhw4dbPz48Xs97sorr3QJsQMPPNC2bt1ql1xyiU9Hi1RW5CD7wQcftGnTplmdOnVc78/hhx+eZylqdlhjK5QhVoZc2xw7dqwLLHWqMI2vaNGihStR9wLXSy+91I2ZqFy5sh188MHudGKx9ME4++yzbfjw4S77q3USefrppy0zM9NN4CaLFy92JSYaq6H96N27t/3666/RbX7wwQfuubxs8/Llyws8tnfeeceVtkyYMMF9IWjb6qBQsBwf+Cuorlu3bnRRL5pHj9OXwznnnFOk1xYAAAAoTRTEin6De7zLOTk5xV43Eom4eaMOOuggO/fcc6O3jxgxwpYtW2Zr1651Ezcr7njjjTfyPPbxxx93zzV//nzr06ePi0mA/R5kK4C97rrr7Prrr3eTBZx11ll5lqJShveAAw5wPU96419xxRV23nnnWefOne2zzz5zYyoU8CpzrpnMNc5i4sSJLoBVVviWW26xV199Nc82FTgrO/zuu+/apEmT9nrOUaNG2c033+wC4S5dutimTZvs5JNPdj1cCxYssLffftt9GHv06OHWV3DdqVMnN7mCl21u1KhRgcc1Z84c1wmhgN3TrVs327Jli3311Vd51lUQrhKYP//5z/bxxx/bH6WJIPQ8sQsAAACQTEpmSWwm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kN2kSRMbPXp0sncDAAAASbRr1y676qqrrGbNmpaVlWWDBg2y3bt3F3ndHTt2WL9+/axp06aWkZFhrVq1snHjxuV5/NChQ61t27ZWvnx5Gzx48F7b//nnn+3000+3qlWr2oEHHmhjx44toaMGsD+lTJD9R5144okJvxwLsnLlSjvjjDOsSpUqVrt2bbvhhhvyfImvXr3aLrjgAmvZsqWlpaUl3P5XX31lf/3rX10nQSgUoqMAAADgD7jnnnvso48+sq+//tr9zpo1a5bde++9RV5Xv+nq1atn06dPty1btthzzz1n1113nb3zzjvRx7do0cJGjRplZ555ZsLt9+rVy+rWrWvr1q2ziRMnut+KH3zwQQkdOYD9pcwH2Tt37kzK8+7Zs8cF2Hr+2bNn2/PPP+++fG+//fboOuoBrVWrlt12223Wrl27hNvJzc21Zs2a2ciRI92XMAAAAIpP2Wb99lKArOXWW2+1Z555psjrKvt81113WfPmzV0i5Oijj7aTTjrJBeWeiy++2E477TSrXr36XttetmyZW3fEiBFuW0cddZRdeOGFe2XDAQRPWrKzwyq7UQZXZTh16tRxZTK//fab9e3b15XeqAdw6tSp0cD10ksvdWU5lStXtoMPPtjGjBmTZ5uXXHKJnX322TZ8+HCrX7++WyeRp59+2jIzM23GjBnu+uLFi92XYLVq1dx+9O7d23799dfoNtWrqOfSl6iW5cuXF3hs6sVUr+eECROsffv2btt33323PfbYY9HAX9lpbbNPnz5Wo0aNhNv505/+ZPfff7+df/75VrFixWK8ygAAAJCNGzfaTz/95H6beXRZ1YebN28u9rqyfft2mzdvnh122GGF2pdFixa5wF2/O2O3r9sBBFvSM9nK8B5wwAHuS0kB9xVXXGHnnXeede7c2T777DPr2rWrC3iV0Q2Hw9awYUNXTqMAVlnhW265xV599dU821TgvGTJEnv33Xdt0qRJez2nynZuvvlmFwh36dLFNm3aZCeffLJ16NDBFixYYG+//batXbvWevTo4dZXINypUyc37kYl3loaNWpU4HHNmTPHjcGJ/eLs1q2bKydSuVFJUoZczxO7AAAApLqtW7e6v0q0eLzLOTk5xV43EonYZZddZgcddJCde+65hd6X2G1724/fNoDgKZ/sHVCZtMpwZMiQIa4sWkG3AlpRIP3E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x9r48eOj97do0cJGjRplZ5555n44cgBBU+aD7J07dybleffs2eMCbD3/7Nmz7fnnn3df4rfffnt0HfWk1qpVy2677TYXPCei+/71r3/ZI4884v6jGDBggJ1zzjn2+eef78ejAQAASC5lm/W7SAGylltvvdWeeeaZIq9btWrVaAIjFArZ0UcfbSeddJILyiU3N9defvllF6hnZma6ZIiC7tjnuvjii+20005zmW4AKFVBtrLD+tJSBlflPCrHUU/hb7/9Zn379nUlPOopnDp1ajRwvfTSS115T+XKle3ggw+2MWPG5NnmJZdcYmeffbYNHz7c6tev79ZJ5Omnn3ZfnDNmzHDXFy9e7L4sq1Wr5vajd+/e9uuvv0a3+cEHH7jn0pexluXLlxd4bOoNVVA8YcIEa9++vdu2So0ee+yxaOCvEnZts0+fPlajRo2E23nhhRfslltusdNPP92aNWtmV1xxhbv84IMPFuMVBwAACJ6NGzfaTz/95H5TeXRZmebNmzcXe13Zvn27zZs3zw477DB3fcmSJe63WvzjFy1aVEJHB6CsSXomWxneAw44wH25KeBWEHneeedZ586d7bPPPrOuXbu6gFe9iuFw2Bo2bGgTJ050AayywgpAX3311TzbVOCsL8h3333XJk2atNdzqrzn5ptvdoFwly5dbNOmTXbyySdbhw4dbMGCBa4ce+3atdajRw+3vgLhTp06ufE7KvHW0qhRowKPa86cOW6sjgJ2T7du3VxZksqWCkvZbpWJx1IHg9fbmt9j9DyxCwAAQFBt3brV/VWCxONdzsnJKfa6kUjELrvsMjvooIPs3HPPjT5e2W6Nt459fPxjASA//+/bI0lUJq1yHhkyZIiNHDnSBd0KaEWB9BNPPOF6D1XOM2zYsOhjldFWMKsg2wuIRV+MylRXqFBhr+e76aabXHZYmek2bdq42x599FEXYMeO61GZkQLpb7/91pUJaVsaW123bt1CHdeaNWvyBNjiXdd9haXA/KGHHrLjjz/elTWpA+H11193Wf38jBgxIs/rBAAAEGSqNBRlovU70bssqnwszroKsK+88kqXmNH4bM2P4z1eyR2N3fYCbT0+/nkAoNRmsr3SHClXrpxlZ2e7DHB8YLpu3Tr3V+XWRxxxhBvLrC/Bp556ypX/xNLjEwXYKrFWObqywF6ALV988YXNnDnTbc9b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xx9/HClXrlxk1KhRka+//jpy2223RdLT0yNffvlldJ2RI0dGatSoEXnzzTcjX3zxReTMM8+MNG3aNLJt27boOqeeemqkXbt2kU8++SQya9asSIsWLSK9evXaL8dcliSr/Ro3bhy56667IqtXr44uW7du3S/HXFaURNuNHz8+MmzYsMjYsWM14WTk888/32s7AwYMiDRq1CgyY8aMyIIFCyJHH310pHPnziV6rGVRstrvhBNOcM8V+9nbvHlziR5rWeN3223atClyyimnRF555ZXIN998E5kzZ06kY8eOkSOOOCLPdvh/L9jtx/97pfN789///nfk3XffjSxbtiyyePHiyKWXXhqpXr16ZN26ddF1+OyhLCLILuX0H8nAgQOj1/fs2ROpX79+ZMSIEQnX79GjR+SMM87Ic9tRRx0V6d+/v7scDocjdevWjdx///3R+/UfWMWKFSMvvfSSu64vSv2AnD9/fnSdqVOnRkKhUGTVqlW+H2NZloz2835sPPzwwyVwRKnD77aL9cMPPyQM0tSW+oEyceLE6G3/+9//3Lr6YYnS3X5ekP2Pf/zDl2NIVSXZdp558+a5NlyxYoW7zv97wW4/4f+9YLSdOh3VdtOnT3fX+eyhrKJcvBTbuXOnffrpp660xpOWluauz5kzJ+FjdHvs+tKtW7fo+j/88IOtWbMmzzo1atRwJUHeOvqrcp0jjzwyuo7W13PHl/ig9LWfR2VyKmvt0KGD3X///bZ7926fj7DsKom2Kww9p0ojY7ejMrsDDzywSNtJdclqP8+///1vO+CAA+zQQw+1IUOGWG5ubjGOIjXtr7bbvHmzKyfW/3XeNvh/L7jt5+H/vdLddnqOp556yv1uadeuXXQbfPZQFpVP9g4gf7/++qvt2bPH6tSpk+d2Xf/mm28SPkYBWKL1dbt3v3dbQevUrl07z/3ly5e3rKys6Doove0nV199tR1++OGuzWbPnu1+6K9evdoeeugh346vLCuJtisMrVuhQoW9fjgWdTupLlntJxdccIE1btzYjRtdtGiRG0u6ZMkSN54bpaPtNO+B2qVXr15uDKi3Df7fC277Cf/vld62mzRpkp1//vmuw1Hzybz77ruuI9LbBp89lEUE2UAZdO2110YvH3bYYS5w69+/v40YMcIqVqyY1H0DyrLLL788elmTAOkHZZcuXWzZsmXWvHnzpO4bfp9Eq0ePHm4CySeeeCLZuwMf24//90qvk046yU0UqUB+7Nixrg2VpY4ProGyhHLxUky9fOXKldtrZmFdr1u3bsLH6PaC1vf+7muddevW5blfJVea/TG/50Xpab9EVE6uNly+fHmxjyeVlETbFYbWVTndpk2b/tB2Ul2y2i+/z54sXbr0D20nVZRk23kB2ooVK1wmLTYLyv97wW6/RPh/r/S0nWYWb9GihR199NH2zDPPuEy1/nrb4LOHsogguxRTL+wRRxxhM2bMiN4WDofd9U6dOiV8jG6PXV/0n5G3ftOmTd2XVuw6W7ZscT2K3jr6qx/5Gpvjee+999xzez8YUXrbLxH1IGt8E73GyWu7wtBzpqen59mOSo1XrlxZpO2kumS1XyLeab6U0Uby2s4L0HS6w+nTp7txu/Hb4P+94LZfIvy/V3q/N7XdHTt2RLfBZw9lUrJnXsO+T6egmaOfe+45NwPj5Zdf7k6nsGbNGnd/7969IzfffHOe0ymUL18+8sADD7hZie+4446Ep4DSNt56663IokWLImeddVbCU3h16NAhMnfu3MhHH30UOeiggzidQkDab/bs2W6G1YULF7pTZkyYMCFSq1atSJ8+fZLwCgRXSbTd+vXr3YzUkydPdrOp6jl0XaeaiT2F14EHHhh577333Cm8OnXq5BaU/vZbunSpO4WQ2k0zkOsz2qxZs8jxxx+fhFcguPxuu507d7pTHTZs2NB9L8ae4mnHjh3R7fD/XnDbj//3Smfb6RRqQ4YMcWfHWL58uftu7Nu3r3sOnc7Lw2cPZRFBdgA88sgj7ke3zl2o0yvoPIKxp4u5+OKL86z/6quvRlq2bOnWb9OmjftBGEungRo6dGikTp067ouuS5cukSVLluRZRz8m9QVXrVo1dz5DfSnm5OSU8JGWTfu7/T799FN3Cg2dS7tSpUqR1q1bR+69997I9u3b98PRli1+t92zzz7rgrP4RT9MPOosufLKKyM1a9aMVKlSJXLOOefkCcJRettv5cqVLqDOyspyn02d6/WGG27gPNlJbjvvlGuJlpkzZ0bX4/+94LYf/++VzrbT/2f6P0ynAdP99erVcx0mOgVbLD57KItC+ifZ2XQAAAAAAMoCxmQDAAAAAOATgmwAAAAAAHxCkA0AAAAAgE8IsgEAAAAA8AlBNgAAAAAAPiHIBgAAAADAJwTZAAAAAAD4hCAbAAAAAACfEGQDAFCKvP/++xYKhWzTpk2Ffsydd95p7du3L9H9AgAAhUOQDQBAMT355JOWkZFhu3fvjt62detWS09PtxNPPDFh8Lxs2bICt9m5c2dbvXq11ahRw9d91f4MHjzY120CAIC9EWQDAFBMJ510kguqFyxYEL1t1qxZVrduXZs7d65t3749evvMmTPtwAMPtObNmxe4zQoVKrjHKyAHAADBQ5ANAEAxHXzwwVavXj2Xpfbo8llnnWVNmza1Tz75JM/tCsrD4bCNGDHC3V+5cmVr166d/ec//ymwXHzs2LHWqFEjq1Klip1zzjn20EMPWWZm5l7788ILL1iTJk1cFvz888+3nJwcd/sll1xiH3zwgY0ZM8ZtW8vy5ctL8JUBACB1EWQDAPAHKHBWltqjyyrNPuGEE6K3b9u2zWW2ta4C7PHjx7tS86+++squueYau+iii1wQnMjHH39sAwYMsH/84x+2cOFC+/Of/2zDhw/faz2Vob/55ps2adIkt2h7I0eOdPcpuO7UqZP169fPlaJrUdAOAAD8V74EtgkAQMpQ4KyxzhqXrWD6888/dwH2rl27XCAtc+bMsR07drjg+5BDDrHp06e7oFeaNWtmH330kf3rX/9yj4v3yCOP2GmnnWbXX3+9u96yZUubPXu2C6RjKUP+3HPPuTHi0rt3b5sxY4YLyJXZVhm6MuEqRQcAACWHIBsAgD9AgfNvv/1m8+fPt40bN7oguFatWi5g7tu3rxuXrRJwBdMav52bm+uy0bF27txpHTp0SLj9JUuWuBLxWB07dtwryFaZuBdgi8rY161b5+uxAgCAfSPIBgDgD2jRooU1bNjQlYYryPay0fXr13cl2co6676TTz7ZBdkyefJka9CgQZ7tVKxY8Q/th2Y0j6Vx18puAwCA/YsgGwAAH0rGla1WkH3DDTdEbz/++ONt6tSpNm/ePLviiitcqbiC6ZUrVyYsDc9vcjVlyWPFXy8MlYvv2bOnyI8DAABFQ5ANAIAPQfbAgQPdOOzY4FmXr7rqKlcOrnVUzq2x1ZrsTFnmY4891jZv3uwmN6tevbpdfPHFe2170KBBLljXjOLdu3e39957zwXuRT3Fl8rJNfmaZhWvVq2aZWVlWVoa858CAOA3/ncFAOAPUgCtSc9UOl6nTp08QbZOo+Wd6kvuvvtuGzp0qJtlvHXr1nbqqae68nGd0iuRY445xk2gpiBbp/t6++23XZBeqVKlIu2jgvty5cq5bLrGjCubDgAA/BeKRCKREtguAAAoIToV1zfffGOzZs1K9q4AAIA4lIsDAFDKPfDAA25G8qpVq7pS8eeff94ef/zxZO8WAABIgEw2AAClXI8ePdzEaio916nANE57wIAByd4tAACQAEE2AAAAAAA+YeIzAAAAAAB8QpANAAAAAIBPCLIBAAAAAPAJQTYAAAAAAD4hyAYAAAAAwCcE2QAAAAAA+IQgGwAAAAAAnxBkAwAAAADgE4JsAAAAAADMH/8fuwSWUN+XRY0AAAAASUVORK5CYII=",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
""
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Time weights: which pre-periods does SDiD lean on?\n",
"time_weights = results.get_time_weights_df()\n",
"print(time_weights.to_string(index=False))\n",
"print(f\"\\nSum: {time_weights['weight'].sum():.4f} (should be 1.0)\")\n",
"\n",
"plot_synth_weights(results, weight_type=\"time\")"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "t18-cell-024",
"metadata": {
"execution": {
"iopub.execute_input": "2026-04-22T21:17:41.341768Z",
"iopub.status.busy": "2026-04-22T21:17:41.341675Z",
"iopub.status.idle": "2026-04-22T21:17:41.343483Z",
"shell.execute_reply": "2026-04-22T21:17:41.343271Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Pre-treatment fit RMSE: 33.71\n",
"\n",
"The library auto-computes a noise level from the data and warns if the\n",
"pre-fit RMSE exceeds the standard deviation of treated pre-period outcomes.\n",
"Our fit is well within that envelope, so the synthetic control is tracking\n",
"the treated pre-trend closely - good fit means a trustworthy post-period effect.\n"
]
}
],
"source": [
"print(f\"Pre-treatment fit RMSE: {results.pre_treatment_fit:.2f}\")\n",
"print()\n",
"print(\"The library auto-computes a noise level from the data and warns if the\")\n",
"print(\"pre-fit RMSE exceeds the standard deviation of treated pre-period outcomes.\")\n",
"print(\"Our fit is well within that envelope, so the synthetic control is tracking\")\n",
"print(\"the treated pre-trend closely - good fit means a trustworthy post-period effect.\")"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "t18-cell-025",
"metadata": {
"execution": {
"iopub.execute_input": "2026-04-22T21:17:41.344422Z",
"iopub.status.busy": "2026-04-22T21:17:41.344352Z",
"iopub.status.idle": "2026-04-22T21:17:41.398064Z",
"shell.execute_reply": "2026-04-22T21:17:41.397777Z"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAHWCAYAAAB5SD/0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC8R0lEQVR4nOydB3gUZReFT3pIIT0kEHrvvfdeRQUVlaYiiIq9Ylf0R+wdC4IIKIg0BaRKk957r6EmJKSTnv8532Y2uyGdTbbd93kGZmdmZ76dbDlz59x7HbKysrIgCIIgCIIgCHaCo7kHIAiCIAiCIAhliQhgQRAEQRAEwa4QASwIgiAIgiDYFSKABUEQBEEQBLtCBLAgCIIgCIJgV4gAFgRBEARBEOwKEcCCIAiCIAiCXSECWBAEQRAEQbArRAALgiAIgiAIdoUIYEEQLIJz587BwcEBv/zyC6xlrJ988om5hyIA6NatGxo1alQmx+L7k397vgeEW3nnnXfU+REES0cEsCBYOPwxKcq0fv36MhnPd999ZxUi1Zr47bff8MUXX5h7GBbN5cuXlbjat29fmRzvf//7HxYvXgxbRN5vggA4m3sAgiAUzKxZs4we//rrr1i9evUty+vXr19mAjgwMBAPPfRQmRzPHqAgOXToEJ599llzD8WiBfC7776LatWqoVmzZmUigO+55x7cddddRstHjhyJ+++/H25ubrBW5P0mCCKABcHiGTFihNHjbdu2KQGce3lukpKS4OHhUcqjsy8yMzORmppq7mEIZsTJyUlN9kJycjJcXV3h6Cg3jAXbQt7RgmBDHsjdu3ejS5cuSvi+9tpral1KSgrefvtt1KpVS0WtKleujJdfflktN2TGjBno0aMHgoOD1XYNGjTA1KlTjbZh9O3w4cPYsGGD3nrBY2vExMSoqBKPwX3wmFOmTFHC0RBuxwiyj48PfH19MXr0aLWsOB7M//77D08//TSCgoLUPh577DElTrmfUaNGwc/PT018rVlZWUb7oHe3Q4cOCAgIQLly5dCyZUv8+eeftxyLx5kwYQLmzJmDhg0bqte0YsWKPMfFY4wbN06JhYULF+qXz549W+2fx/H391fRw/DwcKO/3bJly3D+/Hn9OeV51vj666/Vsfk35etp1aqViuDlx7Vr1+Ds7Kyipbk5fvy42v8333yjHqelpantateuDXd3d3U+OnXqpC6wCqKw5/G9xOPs3bs3z8gqBeSlS5eM3rtHjhxB9+7d1eusVKkSPvroI/1zaO9p3bq1mn/44Yf15ym3FaegfWgU5fPAfScmJmLmzJn6Y2l3PPLzAP/zzz/o2rUrvL29Ub58eTXegv5OGjwPY8aMQcWKFdV4qlevjscff9zoQuvMmTO499571fuHr61du3bqPWMIzxHH9ccff+CDDz5AWFiY+tv07NkTp06dKtL7TdvH3Llz8cYbb6hzyOPFxcWp9fPnz9e/l3kXiBfh2t9REKwNiQALgo0QFRWF/v37K4HFH6YKFSoo4Tl48GAlFinOaJM4ePAgPv/8c5w4ccLI40ixS6HF7Smg/v77bzzxxBNqH08++aTahr7Bp556Cl5eXnj99dfVMh5HizhTAPAHkWK0SpUq2LJlCyZOnIgrV67oPYcUinfeeaca0/jx49WYFi1apERwceA4QkJClBBjVPzHH39UQpjH5LEptJYvX46PP/5YCSyKYo0vv/xSvc7hw4crocEffAqMpUuXYuDAgUbH+ffff5WooBDmj76hONXIyMjAI488gnnz5qnXou2DQuTNN9/Efffdh0cffRSRkZFK0PIiheKQ4+V5jI2NxcWLF9XfhfD8kp9++kmJfN6Kf+aZZ1Q07sCBA9i+fTsefPDBPM8L/x78O3DMFHqGcHwUn3ythJ7ayZMnq7G1adNGCZ1du3Zhz5496N27d77nvrDncbx8z/DCoXnz5kbP5TKKMIorjRs3bqBfv34YMmSIOle8GHnllVfQuHFj9Z7me+S9997DW2+9pd7HnTt3Vs/jRUxR90GK+nmgvUh7bdyO1KxZM9/zQVHMvz8/P3y/8+/Kvy8vlvL7O2m2Dh6DF208Tr169dTnh2Pn54kXU7yg4evkY74XeLFBYc7Xwe3uvvtuo31++OGHKlr74osvqvcVLwL4Pud7hhT0ftOYNGmSOjb3wQsDzvM18uKDwp5/e46Ln6PNmzfr38uCYFVkCYJgVTz55JMMZxot69q1q1r2/fffGy2fNWtWlqOjY9amTZuMlnM7br9582b9sqSkpFuO1bdv36waNWoYLWvYsKE6Xm4mTZqU5enpmXXixAmj5a+++mqWk5NT1oULF9TjxYsXq2N/9NFH+m3S09OzOnfurJbPmDGjwNfP9dyOY8vMzNQvb9++fZaDg0PW+PHjjfYbFhZ2y3hzv9bU1NSsRo0aZfXo0cNoOY/D83f48GGj5WfPnlXrPv7446y0tLSsYcOGZZUrVy5r5cqV+m3OnTunXvcHH3xg9NyDBw9mOTs7Gy0fOHBgVtWqVW95rXfeeac638Xlhx9+UOPjsQxp0KCB0Wts2rSpOnZxKcrzHnjggayKFStmZWRk6Jft2bPnlr+x9t799ddf9ctSUlKyQkJCsoYOHapftnPnznzfH0XdR3E+D3wvjx49Ot/3H98DJCYmJsvb2zurbdu2WTdv3jTa1vD9mRejRo1S4+Fry4323GeffVYdz3DM8fHxWdWrV8+qVq2a/vyuW7dObVe/fn312jW+/PLLW94L+b3ftH3wM2/4GeHnIzg4WH1GDF/j0qVL1fZvvfWWftnbb799y/eTIFgiYoEQBBuBt08ZoTGEtywZ5WJk6fr16/qJVgeybt06/ba8ranBCBG3YySRt1/5uDB4LEbmeJve8Fi9evVSEdKNGzeq7RiVZYSZt3k1GJVkRLc48LaxYbmltm3bqugylxvul5YBvgZDDF8rI4d8fRw7I5i54TmgHSQvGD3WIsd8XX369NGvow2CEUdGIw3PB6PWtA4Ynvv8YFSNkbqdO3eiODAKynPMiK8Gk55oERg2bJjR/mlpOXnyZLH2X5TnMeLOCKfh62T0l+d+6NChRtsyAmnoaWfEkZHR3H+3gijKPorzeSgqtH3Ex8fj1VdfVZYDQwoqB8b3BiPOd9xxh3qP5kZ7Lt9XfB20mBi+VkaMacPg39QQfgfwtWto0fLinEvejTH8jDC6HxERoe4IGb5G3ungucxtxxAEa0AEsCDYCLylbPjDRyhQKFTokzWc6tSpo9bzR02DtzIpVj09PZXA4Xaaj7goApjH4i3f3MfiPg2PRe9haGjoLbdd69atW6zXS5uDIfQTE3o6cy+nyDWEgpU+Sv6Y01fJcdICktfrpCczP3grmCKGt6INvdDa+aAgp9jNfU6OHj1qdO7zg7fweZ4ogLgf2gr4dyoMWjXo/aQNQoNimKKY4liDtgLefuf7gVaBl156SVksCqMoz6MVgn9nil5N8P3+++/K/kKfrCH0q+YWi7yQyv13K4ii7KM4n4eicvr0afV/cesQ0w5D60hhz+PnJa/Phlb1hesL+lzwHJDinMvc73ntGHmNgwI49xgEwRoQD7Ag2AiGERsNig4KlM8++yzP52hikT/iFEz8MeO2XE4xzegTfYK5k9jygttQ9DChKC80kWEq8svEz2u5YRLcpk2blH+SPlyWdKNIc3FxUYlbeSUt5XVeNfr27atEP32WFMCG0TGeDwoyJkflNabcFwB5QZHDxDUKdh5nwYIFasz0wuaV5GYIveCMBrJuLsuGUQzzb0xxrMFzwL/9kiVLsGrVKkybNk39vb///nvlgc2PojyPr5n+V/qYOWYKd0aE86pekt/fMnfyYkEUZR9F/TxYM6Y4lwW95wXBVhABLAg2DBN39u/fr4RPQbdjmfDGZJe//vrLKIKU1y3h/PbDYyUkJOgjvvlRtWpVrF27Vm1rKAIp9MoCikgK1ZUrVxrVcqUALi6MIjORb9CgQcoKwQQ4Rlm180HRwWhaYeK/oL8NI/K0LXCi5YIRXCbXMdkq9y13Q1i/lsmImg2CSV58Tm4YAadQ5sS/CcUtk9wKEsBFfR5tEJ9++ql6f/FCgNFWXjSUBFN0Fyvq56E4x9OS42gxYWWJosJzwWoRfF5hn5e8PhvHjh3Try/tc6kdg+PQ7CIaXFaSMQiCuRELhCDYMPSfMqucUbjc3Lx5U5V6MowaGUaJaAfISxRSkOVVsozH2rp1qxKWueH26enpan7AgAFq3rDEGj3CrI5QFvC1UgDwmBr0Upa06xcFP6tIMELLJglatJxClcdipDZ39I2PWbXD8JzmZb8w3IYwKk8/Mp/PUmQFQRsLxSYjvxwfn5u7qUPu/fOChCIud4m8wsaV3/OaNGmiJkaIeeHBqLR2gVBceI5IUcvl3c7nQTteUY5F3zctHbTDsEpHUaOurNTAvwcvDuixzY32XH5eduzYoT5bGhwnq56wIkl+/vSCyO/9lh/0KLM8IiP8hn9jXtTQzpO7coogWAMSARYEG4aCjAKIUUpGczt27KiEH6NHXE6xyh83/ohTIDEhh1FDRvQoEvijxxJmhrAOKMXr+++/r0QPt2FUiD5QRpAZDWXNVG7HH2qWmaJHliKTt995DI6DSUNcxh9wJowV5wf5duCPNW+Bs2QWb9HT9/ntt9+q11IU/2teUMjwYoERT0b1fvjhBxUZ5Dli1JWvk9tQKJ09e1ZFipnExDJThOeKkdrnn39elZmioOR54t+FSXM8XyxvRrHBGr58Dbl9tHnBqDEtB7QgUAznLlXFc0/rBo/PiC6FGP9WLPlWEMV5Hs+J9joLa95SEDyfHD9FGF87RRwTHwvyaJf080D42tasWaPeK6zRy+PweLnh35v2D0a++bfje4q+W0aaWbqMJcvyg6X6aCFhoqVWlo2fNybrsVQbXy8/J/ROs5Qby6DxfHOffB/xoqIkDSrye7/lBy1CrOfNaD/H+sADD+jLoFGEP/fcc8UegyCYHXOXoRAEwTRl0PIrl8USRlOmTFHr3dzcsvz8/LJatmyZ9e6772bFxsbqt/vrr7+ymjRpkuXu7q7KK/E506dPNyr5RK5evarKKLH0E9cZlhhjeaaJEydm1apVK8vV1TUrMDAwq0OHDlmffPKJGodGVFRU1siRI7PKly+f5ePjo+b37t1brDJouUtHaeWXIiMjjZazlBVLWhny888/Z9WuXVudj3r16ql95lW+iY95vnNjWAbNkO+++04tf/HFF/XLFixYkNWpUyc1Bk48Hvd5/Phx/TYJCQlZDz74YJavr696vlaiiuXMunTpkhUQEKDGWrNmzayXXnrJ6O9WEHFxcao8G/c5e/bsW9a///77WW3atFHH5XYcG8uzGf6t8qI4z7ty5YoqB1enTp0895Xfe5d/t9ylupYsWaJKubGMnOF7pTj7KOrn4dixY+rca+dPK4mWuwya4eeH73Vuz/c1z8/vv/+eVRjnz59X5dCCgoLUeFiCjO8Pw1Jmp0+fzrrnnnvU+ebnk/tmCbK8SpjNnz8/z/eq4ecqv/dbfvvQmDdvXlbz5s3VOP39/bOGDx+edfHiRaNtpAyaYC048B9zi3BBEATBNmGZMSYaMnGPTUEEQRAsAfEAC4IgCKUGO4jRZkD7gSAIgqUgHmBBEATB5LCFNJs0sGIF/c95tZAWBEEwF2KBEARBEEwOk+S2bNmiEs1mz56tGrUIgiBYCiKABUEQBEEQBLtCPMCCIAiCIAiCXSECWBAEQRAEQbArJAmuiLC7E/vYswC7KVpyCoIgCIIgCKaFzt74+HjVwKagRjEigIsIxW/lypXNPQxBEARBEAShEMLDwxEWFpbvehHARURrO8oTytaXgiAI1h4l4Z0twiiJ3NkSBMEWiIuLUwHLwtrFiwAuItqPA8WvCGBBEKyd1NRUTJ48Wc1PnDgRrq6u5h6SIAiCySjsol6S4ARBEARBEAS7QiLAgiAIdoiLiwteeeUV/bwgCII9IQJYEATBTm8Puru7m3sYgiAIZkEEsAkTStLT05GRkWHuoQiCTeHk5ARnZ2dJ0hIEQRBMhghgEyWTXLlyBUlJSeYeiiDYJB4eHggNDZVELRPCi/VNmzap+c6dO6sLDUEQBHtBBPBtwjJCZ8+eVT8eLLrMH2iJVAmC6e6s8AIzMjJSfc5q165dYGFzoXgCeMOGDWq+Q4cOIoAFQbArRADfJvxxpghmzTlGqQRBMC3lypVTSVrnz59XnzfxrZoGXki0atVKPy8IgmBPiAA2EfIDIgilh3y+TA991QMHDjT3MARBEMyC/KoIgiAIgiAIdoVEgAVBEARBEASTkpGZhR1noxERn4xgb3e0qe4PJ0fLyZESAWxBWPqbxdJ46KGHEBMTg8WLF8MSeOedd9RY9u3bZ+6hYOTIkahfvz5ee+01WDrff/89li1bhr///tvcQ7Er6KeeMmWKmmdDDKmwIQiCqVhx6Are/fsIrsQm65eF+rjj7TsaoF+jUFgCYoGwoDdLpyn/4oGftuGZufvU/3zM5aUBK1UUNFHMlZZoveuuu0pl39bOL7/8Al9f39vez/79+7F8+XI8/fTTsAYeeeQR7NmzR1+SSyg7mMDLSRAEwVRQtzw+e4+R+CVXY5PV8tLSNcVFIsAW9GbJyrVce7NMHdHC5FdMrFusMW/ePLz11ls4fvy4fpmXl5dRKSqWTGLSjHAr2vmxFL7++mvce++9Rn9DS4aRxwcffBBfffWVqkcrlA2srPHcc8/p5wVBEExxJ5uR39x6hnAZ72lzfe8GIWa/wy0RYAt/sxCu53amJCQkRD/5+PioqK/2+NixY/D29sY///yDli1bws3NDf/995+KFE2ePBnVq1dXpamaNm2KP//8M+e1ZGRgzJgx+vV169bFl19+qV/PqPLMmTOxZMkSfaR5/fr1al14eDjuu+8+FQH19/fHnXfeiXPnzhnt+/nnn1frAwIC8PLLLyvhWZSI6tKlS9VYWKbunnvuUQ1LOI5q1arBz89PRUoNBeysWbNUeSieA54PirOIiAj9eo6ZY899fnJz+vRp1KhRAxMmTFBjTUlJwYsvvohKlSrB09MTbdu21b9+/v/www8jNjb2lij8d999p+rfsvxXhQoV1GvID74O/k3uuOMOo+V8re+//z5GjRqlhHHVqlXx119/qfq6PNdc1qRJE+zatcvoeXxdFKX8e7LUH89VYmJisc/V2rVr1Xb8G7DmrOHFFuF4OZ6bN28W+DcVTAf/LuXLl1eT1C4XBMEU0MaZO/JrCH+1uZ7bmRsJ6ZUSd3z9HyLjUwrdLiU9AzeS0gp9s7R6fzXcnAsvVB/k7Ya/n+oEU/Dqq6/ik08+USKOQpHid/bs2cqzSUG2ceNGjBgxAkFBQejatasSyGFhYZg/f74SqVu2bMG4ceNUBy+KW4q/o0ePIi4uDjNmzFDHoNhNS0tD37590b59e3UbnJFmirV+/frhwIEDKkL46aefKkE7ffp05W3l40WLFqFHjx4FvgaKXUYW586di/j4eAwZMgR33323Esa0CZw5cwZDhw5Fx44dMWzYMPUcjmfSpElKNFPMUXjTusHtCzo/mpglHDdfEy8I+FoIhfCRI0fUWNg0hePnazx48KAShV988YVRJJ6ilIKUopNCk9tER0cXaBXgcSmitfquhnz++ef43//+hzfffFPN0yfMfdKC8PHHHysfKAXy4cOHlSCigOf4OH6ed4plvgZO2t+vqOfq9ddfV38zvlfGjx+vjrl582b9eo6XrcS3b9+Obt26Ffg3FQRBECyTiPhkk25XmogALiUofq/Gme4PrBPJ+Qvl0uC9995D79691TyjlxRPa9asUUKVUPgxQvjDDz8oAczbqO+++67++YwEb926FX/88YcSwBR0jCRyX4wWalBUUzxPmzZNH4miwKJIpajs06ePEocTJ05UApZQhK9cubLQ10CBNnXqVNSsWVM9ZvSUYvLatWtqPA0aNED37t2xbt06vQCmONPga6SAbt26NRISEoxsBYbnxxAK/0GDBinR98ILL6hlFy5cUK+J/1P8El4QrFixQi3nuTWMxGtwe0aLuT9GWRm5bd68eb6vl80i2NErODj4lnUDBgzAY489puYptHle+LpolyAUwPzb8txwDLzgGT58OJ599lm1nhc9PBf8W/O5jEgX9Vx98MEH6nnahQPrzyYnJ+ubWjAyzNfP8QtlA+8WbNu2Tc23a9dOOsEJgnDbMIHflNuVJiKASwlGYotCYRFgDT8PlyJHgE2FYRTx1KlTKpqaW/Axk9xQkH377bcqWkjhxtvZXN+sWbNCk7a4fwo8QyiQGIVkRJOeZVoGNBgl5vgKs0FQWGnil9BCQDuAoTjjMsPb9rt371b2A47rxo0b+iQhviYK5rzOjwa34Tmi4NOEI2GUl4KjTp06RtvzYoDR8vzgvih6KS4ZjeXECHZ+XQd5zmnJyOuWNi0Ohq+ZNG7c+JZlPBcUwHz9jCjPmTNHvw3Pt9b+m5H4op4rw2PzjoB2nCpVquiX8+KI7zGhbOD7kRe0hBctIoAFQbhdWL0qpLx7vgFA/jKF+OiqXJkbEcClRFFtCPT2stoDE96yCniz/PdKjzI3jDPyqMGIHmG5KnpYDaHgIry1z6gmb3UzkkhBy1vrvK1dENw3vbSGQkuDt8xvh9zJPRSGeS3ThBv9rbQucOJ4eHyKOT6mmM/v/BiOlxHe33//XUVH6a/UXiMFBgVjbqFRULIazyErJDASvmrVKhW5peDcuXNnnhUjAgMDlYjkWHOXtTJ83ZpAzmuZdi44ZkaM86omQeFanHNV0HE0aO+43b+3ULzuevTxa/OCIAi3C3VKlzqB+GPXxVvWaQqGpdDMnQBHRACbGb4J+GZgtQe+HbIs9M3CaB6FLgWOdis7N/R00lP6xBNP6JcxgmsIRVnuigktWrRQlSh4214TjLlh1JBCukuXLuox/aIUk3yuKWECYFRUFD788EOV9EVyJ4YVBKOYTLqj3YBCkKKVIpZRcr5uRj3zq3SQ17nRot29evVS09tvv62E77///qu3gxiiRdvpNS4s8l4YPLfcT61atfJcz6j27ZwrQ/g+YcS/IHuHYFr4vpKShIIgmJKLN5Kw9EDeZc4YzJM6wIIRfDOw1BnfHIbwcWmUQCsJFHGM7rJsEisoULAwMsmSW3yseUQpgOjNPXHihEq2YqTSENoPeFudiV7Xr19XHl36TBm5ZDUCJnjx9jojnow8Xryou4p85plnlNBiowmKVIpsNsEwNYxsUojydTFBjpUJmORVHBgZZqScAqN///4qkkrrA18nk8wWLlyoXuOOHTuUz5bbaueG27JiAs8NI7kU0/TVsrkG/bG//vqripwy6SwvGEGlcM2rKkVxoSeYfmYmvfH4J0+eVBU8+NhU50qDf3faPAztKoIgCIL1kJWVhdcXHUJSqi6Q06V2AP53VyM82qk6vn2wubqTbQl6RkMEsIXANwXfHL+PbYcv72+m/re0NwvFDUUtRRv9n/SjUrwx2Y3wdjmjkkwmo1+X0UHDaDAZO3asEm/0z1KsMWpMPysrSlBQ8fncN6snMCKoRYSZTMaqBaNHj9bbK+iFNTUcE6tNsJIFo94U3az0UFxoa2CZNH4hMOGLdgEmu1EA87XwHDD6xgsEzQfL6DkrJPD8cRwfffSRivZSMLPaBc8Lk/9or2jYsGG+x3700UfztJMUF/p2N2zYoC5mGLVmdJYWDC2Jz1TnivA18b0hCIIgWCeL913ChhORat6nnAse61ILjcN8ld+3RVU/s9/Jzo1DVmFZRIKCpbuYpc6ELMPb9BRpjOZRBGoZ7YJgTpgIR4FNW4lWscOSYdk1CnwKbX7G8kI+Z6aHPu3PPvtMzbN8nbRCFgShpEQlpKDXZxv0Sf0v9K6DbnV11YiuxN5E4zAfhPqUgzn1Wm7EAywINgZ9yLRK0EZhDbDCB8ebn/gVSg9WIREEQbhd2LBLE7+tqvrpxa8lY1YLBG97swMUb6kyM5z+TkNYj5RF9bmet8l5y50+REMYGXryySdVKSnedmZTAz7PECZu8TY098FEq5deekklUQmCrcJmErm7wVkqTO5jwqBQtrAyh9bYRFohC9YMqyltPR2FJfsuqf9N3TlVKJh/j13DX/svq3kPVyc82c06cjnMGgGmL5JleFguKndGO50Z9Ejyi5mJNwxj83YdfyyZma6VoGJSFn2o9CEygsQvc+5L6zLFrHqKX9Y1ZUIPo030YXK/bD4gCIJgjzDoUFANakGwBlYcuqKij4btd0MtrNqALROfnKYS3zRGtquKQAtocmFVHmB+GbM1rFaWh35A+hgPHTqkT/hh9juFLIUrE33o72Aizm+//aY6fBFWCGCyEDuQsbsRE5HYRevy5cv6Qv9MJGKGO1u7FtX3Jh5gQTAf8jkTBCEv8csSorlFjJZqZSlVlGyZNxcfwqxtug6eDULL48MhjW9pxGSpHmBHS/emGf7YsVg7a9FqJZ5YB5ZltBgV1qhXr57KqqcAJvyf3a408Ut4u5UniMk3BR2f2xhOgiAItgLvjrEUH6e86k8LgiVDmwMjv3lF8LRlXC92iNJj57lovfh1dXLE0z1q5dmF1FKxWAGsCdmJEyeqFqvMWJ4yZYqqC0sbA7l69aqK4ObuiEWxy3XaNobiV1uvrcsPlvriFYQ2aYX+BUEQbAGKXt4h4yQCWLA2dpyNNrI95Iayl+u5nWB6ktMy8MqCA/rH97YKQyU/D1gTFiuA6dFl/VNaIfz9/VUC27p161RjgbJo20nhzfC5NoWHh5f6MQVBEMoKfo+yfjMnaYUsWBsR8ckm3U4oHl//exJnIhPVfPVAD9zTIgzWhkWXQWvZsqXqQEUByggw/b5ssMAmCoR+YC5nRzDDKDCrQHCdtg1v8RmiVYnQtskLWi04CYIg2CLsVHjvvfeaexiCUCICPIuWvxNsJQlZ1sSRy3H4YcMZNc/mFk/1qA1nJ+u7iLaKEdOCQPHLEmhstcuWuZpAZqSYrWM12GKXZc+0BgD8/+DBg4iIiNBvs3r1amWMZuRDEARBEATruv0+Y/O5QrdjNQh2IRNMR3pGprI+pGd7qwc1DkXtYG9YI2aNACckJODUqVP6x8zyZsSXlgf6f1najMKX8xSxzzzzjKoS0adPH70wZstcdjHicyhqn3rqKSV6WQGCcFsKXbbRZWtZ+n7feOMNVTvYYiK8MeFAUlT+6z0CAF/b8iC/8847qu4z/96lUQO3WbNm+OKLL2APlOa5FARBsCTiktPw6MxdRfL2Dmtd2eLa71o70zefxcFLsWo+xMcdo9pXhbViVgHMaG737t31jylkyejRo/HLL7+oZDcuo2UhNDRU1e998803jfbx+eefK/8aG2CwcgMrPHz33Xf69U5OTli6dCkef/xxJYxZP5j7f++992Ax4veblkB6AR2ZnN2ACbtNLoJZBu6tt95SdZR5jv38/FRdZi7r2LFjqZW4MxXr169X7x8mSRpaYOgdt/TC/qV1TgShqLCCztdff63mGTiw9M+MIETGp2D09B04ckVXlcnN2RF3NAnFuhORiEpIvWX7X7eeVyK4rMpv2TrnoxLx2eoTap6XFRO61YKrsxOsFbMKYEbqCipD/PTTT6upIFgm7dtvv1VTflStWhXLly+HRcLIb0Hil3A9tzOxAOZFAz3UM2fORI0aNZQIpp0kKqqAaLQVwLsBtgD/NkWtUy0IxYXfvfHx8fp5QbBkwqOTMPLn7TgXlaQee7o54Y0BDdCokg9GtKuGI5djEZ2UBp9yLliwOxz7LsYiOjFV1Qn+47H2cHW2CsenxZKVlYWJCw8iOS1TPe5RLxhNKxtX4LI25B1hpzBxcNOmTaq0HKOovEho06aNqn4xePBgtQ079LGJSO6oEdtJ//zzz/qLGF6kvPzyy0p4MrGQt+Q1qlWrpv6/++67VdRTe6wxa9YstYx2lvvvv1//g6w1PmE5OjY/KFeunIpO//nnn2rduXPn9HcPGLnmvtk2WxvTs88+q98P7wyw8QlL2dH2UqtWLf3486Kw7Tds2KDOFdfxzsSrr75q1Fq7pOeE29C6MW3aNKOGD/S00/fOVt+0+dx33323tPsWhJIkwT322GNq4rwgWCrHr8Zj6NQtevHr5+GC/93VWIlfQptD4zBfdK0ThGaVffFS33oI8tZZHPeFx2DS0iNmHb8t8MeucGw5rQuO+Xu6YmznGrB25FuvNNnyDbA1/8i0IuPW2zZ5Mnso4JRHNLD9k0CHCcUeGsUUJ3pH6ZfOyw/NbntdunRRVhQKPUI7SVJSEoYNG6bfjhFkWlW2b9+uGo9QiNJC0bt3b+zcuVMJ5hkzZqBfv37KkqJx+vRpdXzukzYGCrsPP/wQH3zwgVpP8Tt79mzVua927drYuHEjRowYoXzhnTp1woIFC1QUm4mPFIYUyXlB6wzH9dVXXykRTa/59evX8z03BW1/6dIlDBgwQL3GX3/9VXUeHDt2rBKrhiK3pOeEnni+Lto4uJwXAZr4pfCm0KZ/neefFhBBKCm0jhVUCUcQLIHd56Px8IydiEvWBRlCyrvhvTsbFWhrKF/OBRP71cMrCw8gLSNLNWtoXsUXQ6ywVJclEBGXjPeXHdU/fqxLDXi6Wb98tP5XYMmkxAPxl02zr6Tr+R+jBDDiQ581xRsFZosWLdC1a1cVhW3SpInapkOHDqodNaO0jGYSijaWTqIg0+D2b7/9tpqnUP3mm2+UlYJij2KV0KOb+8eW4o5j8PbWZZAyUZHPowBmFJYtr9esWaOv6EGbBrsA/vDDD2qsmtWBYjJ3MxQN1pH+448/VOUPrWMg95MfhW1Pfzkjw3yNjN6yYQvbbDNiTO+0Vk+1pOeEtgcKa20bjoMJoBThWjMWrmd7cArp1q1bF/KXFgRBsE7WHY/A47N362+7Vw3wwKTBjeBXhBJotSt4Y3zXmvj6X12i/WsLD6JeSHk0qJh/a1whb95achjx2Rcg7Wr4o0PNQNgCYoEoTdy8Ae+KBU8eRXwjcbu8ns9jlBBGTyne/vrrLxWJZESRQpii1DAKTNFLeNudXaNojTBEE8wajBYblp3LD97618Rv7ucxEspIMwWjFq3mRPHHyHFRYWUERlIpmE2x/dGjR5UgN2z3yMguK5qwS+HtnhNaUTTxqx2PwtewEyGrmlA8c50glBR2f+P7nZN0ghMsjSX7LmHszF168Vs/xBsf3t24SOJXo0+DEPRpoOv8mpyeicdm7UJsUlqpjdkWWXHoClYc1nXN9XJzxhNda8FWkAhwaUJrQmH2hMv7gB+LIM5GLAAqNoOp4a17ikxOrLBBwcvIpeanpR2AHlfext+yZYvypnbu3NloH7mzxykOGd0tjIKeR0FJWKGiUqVKRtsVp3xdfrYIU22fHyU9J6xSIghlAUXvkiVL9BdVhlYcQTAnv2w+i3f+zvHttqzqi4n968OtBBUHHutSE2euJ+JURALCb9zEs/P24ufRreEo5dEKhRcLby45rH/8UIeqxboAsXQkAiwYwR/CxERde0MSEBCgSnUxCszI8MMPP1wiMVjcCBPHQaHLBDAmoRlOWjRUq5BQ0L4bN26shCf9s0WhsO3r16+vLgYMs+Y3b96sItlhYWEmPyc8HttwG7biPnLkiEpilEYuwu1Auw7tOZykFbJgCfB7lWW2DMUvE9tY7aEk4pew+gP9wN7uunjfuuOR+GZdTv8BIX/+t/yoKj1HGlfyURF1W0K+9cwNm1ywzm9BcD23MyEsddajRw+VZHbgwAHlMWXjETYL0TrtaTAqzKQu3nJnDeXiQqsD/a9sQsJkt6JAQfniiy/iueeeU8em7WHPnj2qbikfa3YBRlaZRMeaxlrUOPexOWbaNphwx9dJqwd9vvmNtaDtn3jiCSVGWTeVCXCMoDFizoS34oiIop4T+pApyocPH65eP9t6MypPi4bWElwQSpoH8OCDD6pJqkAI5iYzM0t5Tb9ae1K/jDV+X+hd57bb7AaXd8dLfeqq2rXk89UnsP544ZY0e2bLqeuYt0sXeHF3ccRTPWoZWf9sARHA5oa1fdnkYtyG/KdSaIJBP23btm1VIxFWemjUqJGyQDApjglbuUUYPaxsMlKxYsViH+vTTz9VyVyM3DZv3rzIz5s0aZIaE6tBMBJKnzItEbRhEFoj3n33XWXRqFChAiZMyNtuMnXqVNxzzz1KvDJpja/RMMpdnO15TNaUphBlhYjx48erboTsLlga54RfOBTZLPXGvxP/FkzKmzdvXrGOJwiCYKmkpmfimXn7VLUGjQfbVMG4LjVNJrqaV/HDiHa6rmW8f/f073tVbWHhVm6mZuDVhQf1j4e1qmKTzUQcsqQCepGIi4tTtWpjY2NVyS2N5ORkFSU0rNtqazCySuFHG8SQIUPMPRzBDrGHz5kg2CNJqekYP3sPNp6IVI9pzR3XuQYGNil+sKUwMrOy1G397dltlBuElsfCJzrA3UX874bwHP248YyarxXkiU/vawbH27gQuRJ7E43DfMpMROen13IjEWAhX+iFZeUCRmJZdUBrkCEIgu20QubEeUEoa2KSUjF82na9+HVxcsDzveuWivglFHHP9aqDUB/dRTRbKr++6KB0QjTgwMUYTNukE7/Ojg54qkft2xK/lowIYCFfmIBGa8Fvv/2G6dOni09QEGwI/uhHR0erSQSAUNZcjU3GfT9sxd4LMepxORcnvD6gvkp6K03YwOE1VVFCJ38W7LmE33fkJBnbM2kZmXj5zwPIzP46uKtZJdQIyqn5b2uIohEKTNSSH0ZBsE14QatVdZGLW6EsOROZgJE/78ClmJvqcXl3Z7w5qIFqVFEWVAv0VJHNT1YdV4/f/uuQapDBNsr2zI8bz+DYVV1zrUq+5fBgG9PmHlkaEgEWBEGwQ1i1pEqVKmqSMmhCWXHoUizu/X6rXvwGeLniwyFNykz8ajDSzCoThO2Sx8/ejagEXckve+R0ZAK+zK7AQccDqz64lLD0nLUg33qCIAiCIJQ6W09H4f4ftyEqMVU9ruTrjo+GNEFlfw+zjOfhjtVRP9Rbb8l46ve9yNDu/9tZCbpXFxxQ1ThI3wYhaFjRB7aOCGBBEAQ7TXI9fPiwmorSpVAQboeVh69i9IwdSEhJV49rBnliypCmqkavuXBxcsQrfevBz0PXuXPL6Sh8svIY7I05Oy5g5zldPfogLzc80rEa7AERwIIgCHZIeno6/vzzTzVxXhBKiz92hePx2bv1EcZGlcpj8t2N4ZMtPM1JgJcbXulXT5VfI1M3nMGKQ1dhL1yJvYkp/+SI/vFda6Ccq33kBIgAFgRBsEPYYIDdFLWOioJQGvyw4bRRZYF2Nfzx3h0NLUpk8Xb/Ix11DZbIC3/sU4l6tk5WVhZeX3RIH5XvXCsQbaqbtuusJWM570BBEAShzHBxccFDDz1k7mEINiyuPlxxDD9s0NWUJb3qB1tsXdnBTSvi+LV4bDp5HYmpGXhs1m4sfrKjKptmq/y1/zL+PRahr8TxWJeasCckAixYNb/88otq0iEIgiBYBukZmXh1wUEj8Tu0RRietlDxS3gX5KnutVHZT9et7GREgopc22op0OjEVLz79xH94zGdaliEJaUsEQFs51y9ehVPPfUUatSoATc3N1SuXBl33HEH1q5dC2tg2LBhOHHihE2J8HfeeQfNmjUz2f4EwVwwo56Z/0v2XVL/22OGvb2RnJaBJ3/bg3m7dM0lKHcf7lAND3WoZvFWm3KuTnhtQH3VlIMsO3gFMzafgy0yaekRJYJJiyq+6FEvGPaG7cb2hUI5d+4cOnbsqMTbxx9/jMaNG6uWqCtXrsSTTz6JY8csPxu2XLlyarIFGGnIyMgw9zAEO4Gf9Z9//lnNjxkzRlkiTMmKQ1dUhOlKbLJ+GVvQvn1HA/RrpKu/KtgW8clpGPfrbmw9E6UeOzk64MluNdG7QQishTA/DzzXqzb+l50Y9sHyo2hUyQdtqvvDVlh/PAKL9l5S8x6uTniyWy3YIxIBLkVSU1PVZHgLhQKHy3JnXZti2+LyxBNPqCvyHTt2YOjQoahTpw4aNmyI559/Htu2bdNv99lnnylx7OnpqSLEfF5CQsItEdClS5eibt268PDwwD333IOkpCTMnDlTdZTz8/PD008/bTROLp80aRIeeOABte9KlSrh22+/NRpjUY9tyPvvv4/g4GB4e3vj0UcfxauvvmoUUaXv8a677sInn3yC0NBQBAQEKMFPQZAf+/fvR/fu3dU+y5cvj5YtW2LXrl1Yv3696qYVGxurziUnRnDJrFmz0KpVK/WckJAQPPjgg4iI0PmtCJ/L7f/55x+1P0bgZ8+ejXfffVcdT9sfX6MgmBp+f1y7dk1Npr7NS/H7+Ow9RuJXq7XK5Vwv2BbXE1LwwE/b9OKXrYZf7VfXqsSvRvuagbinRZia512LJ+bsRkSc8XvZWmHCGxPfNB5sU8WspejMiQjgUmTy5MlqohDU2Lx5s1q2fPlyo20pxricQkpj586datlff/1ltO2XX36plkdGRuqX7du3r1hji46OxooVK5Two7jMjaGoZJeor776StULpaD9999/8fLLLxttz9fIbebOnav2S3F39913q9fJiWLwhx9+UCWXDGHkuWnTpti7d68Sqs888wxWr15drGMbMmfOHHzwwQeYMmUKdu/erbpcTZ069Zbt1q1bh9OnT6v/uV+KzIKE5vDhwxEWFqb+Jtwvx8qIWYcOHfDFF18oUXzlyhU1vfjii+o5FNQU+BSzixcvVhH3vJKOuK8PP/wQR48eRe/evfHCCy+oCxFtf7R5CIKpYfvjESNGqMmUrZApGBj5zUtSa8u4XuwQtsPFG0mqu9uhS3HqsaerE94e1ADtagTCWhnRriqahumaQVxPSMXjc/YgLcP662V/svK4vgtf3RBvlfxnr4gFwk45deqUivrUq1ev0G2fffZZo6gtI6zjx4/Hd999p19OsUehWbOmLouUEWCKXkaXvLy80KBBAxVBpeA0FHS0YFAAEkageYHw+eefKyFY1GMb8vXXX6vbuYzKkrfeegurVq0yihoTRqS/+eYbODk5qXMwcOBA5XseO3Zsnvu9cOECXnrpJf35ql27tn6dj4+PitQyymvII488op+nx5pCvnXr1mosPCca7733nv71Eq6jIMm9P0EwJby41D6vpmTH2ehbIr+GUPZy/Y8bT2Nws0qo6ONu8d5QIX9OXIvHqJ934Gp2hNTXw0WJ31rBug5r1grtGy/1rYdn5u5Vnet2n7+B/y07ircHN4S1wtcwc6vO0+zi5IBnetS268+eCOBSZOLEiep/Q28dBV+7du3Uj48hWtTQcFuKpRYtWtyyLaOkubctbtJUcW55rlmzRkWc6QmOi4tTlozk5GQV9aXdgfB/wx/TChUqKMFqKPS4zNACQNq3b3/LY0ZUi3NsQ44fP65sEoa0adNGRY4NYYSV4leDVoiDBw/mew5oC6GdgqK+V69euPfeewsVD4wU0w7BCPCNGzf03bYopnlBoEGbhCDYChHxRbtVPGXFcTV5uTmjdgUv1K3gjTraFOKlOlLZ84+zNbDnwg08PGMnYm/q7GPB3m54786GqORrntbGpsannItKintlwQGkZ2ZhxpZzaFbFF3c2qwRrIyU9Q70O7ad/aIsws7WgthTEAlGKuLq6qsnwS5yii8ty33I0xbbFgRFMPr+wRDfeth80aBCaNGmCBQsWKFGn+XTpQ9bInUDDfee1rDgtV4t67JJQ3LFRyNKGwUgxxTQF7KJFi/LdPjExEX379lXWCNoyaJ3Qts899rwsKIJQ2vD9zgoqnEzZCjnY273YnsS9F2Iwd2c43lt6BCN+3o42H6xFi0mrcd8PW/Hm4kOYtfUctp+Jwo3srHXB/Gw4EYnhP23Xi98q/h74aGgTmxG/GrwgG9elhv4xReTxq/GwNr5ddxqnIhL0f6thrSrD3pEIsJ3i7++vBBoFJZPTcouwmJgY5QOm6OSP46effqqPRP/xxx8mG4dhsp32uH79+mq+JMdmEh7F5qhRo/TL+NgU0KLB6bnnnlOJezNmzFA+Z16M5E5C5IVFVFSU8vYyeY8waa4o5LU/QTA1vJvy+++/6+9W8X1nCpgtz2oPBdkgGPXtUTcIF27cRHh0krrFnJsbSWnKTsHJkCBvN4NosRfqhHijdrAXvN3tq4apOfl7/2U8/8c+pGVk6b2k7wxqAC8b/Rv0axiirB5rjkYgOS0T42btwt9PdUJ5K3m9FOxT159S804ODni6Ry04O0n8UwSwHUPxS0sGLQL0oTLSyh9FJqHRz8ukrFq1ail/L721rA9Mj+73339vsjFwfx999JGqysDjzp8/H8uWLVPrSnJs1jSmj5e2AiaozZs3DwcOHFAe3JJy8+ZN5f+lr7l69eq4ePGiEtWsnEFo9aCvlx5iJvTRmsHkOwoKjp2e5UOHDqmEuKLA/Z09e1YlNjLxjlUkWCFCEEwJ73pUrKhLgDGl1YDeSZY6Gz97T77bPNWjFjrUzEmQSkpNR3j0TZy9noBzUYk4H5WEizduIiY7umhIZHyKmv47dd1oeSXfcjpBnC2OKcpqBXvBPbumq2AaZm07j7eWHNLfSmcN2Yn969v0eebnY3zXmjgTmYgz13Xvz+fn7cePI1vC0dGybTpMNmXUWrtY6d84BHVDypt7WBaBCGA7hqJwz549qmoCKw+w4kBQUJAqyaVVTqCgYykyVlVglKhLly7Kk2sYYb0deFxGRln6i3YBHouR6ZIem9Uazpw5ozzV9Arfd999qvICS72VFNpLGM3lcZnUFxgYiCFDhqgxEwptilwm93G7t99+W1kmWFXitddeU8lv9HKz0sfgwYMLPR6F9cKFC1XSICPxjDRLy1rB1NAGlF/S5+3COr+1grxwKtI4+TTQyxVjO9cwEr/Ew9VZCVZOuevKXohOwtnriWpitDj8xk1lm8gNM9s5rTueUx2Hur6qvwdqUxArb7Eualwj0Auuzo7FFhKMRtPjTJsHI90U+/YC80a+WnsKn6/JaTzUuVYgnu9dxy6iiW7OTpg4oD6em7dPvf/WHL2GqRtO48null1D95ct57AvPEbNVyjvhtHtq5l7SBaDQ5at9vkzMUzAYrY/y5RRqGlQZDFax8igu7t91tIrKYx0ssqDYaWH0oAVFlhRgQlsgnUinzPrgvV+23+4VkUJWeXh7uaV4OfhilbVbl808ieLkeHzUYk4dz1JFzGOTsKlGzdxM61o1iFnRwdUD/TMSbrLtlJQLOcl5uy9qUdmZpbyZ1NMaQxoHILxXWraXaLirvPReC+7zB/fyjMfaYPOtYNgifCCsc/nG/Wfi3fvaIgWVf3KfBxXYm+icZgPQn3KmVWv5UYiwIJNweoQtEkwiszILT2OrCRhWFtYEITS5Z9DV/S3yO9pGYZ2NQLUvCkiphRcFNOcmlX2MxLG9BKfu56oRDHF8YXoRFyKSUZqrvqtzOg/GZGgJra71WBUuGYQK1J46aPGLO/FRLzckSKtqcfUES1sWgSz9u2L8/djyb7L+mUPtK6MB9tWhT3Sqqo/HmhTBb/tuACWsn7qt71Y9kxnZcGxJPh5eG3RQb347VY3yCzi15IRASzYFPxxZOMN2joYNWRSHCtIsHSZIAg50F+v3RUZOXKkSVshLzuQIyoHNA5FdBlUb+BnP9DLTU2MNGtkZmUhIi4FZ6MS9BFjRsYYzaUQNiQ1PRNHr8SpqTD4TMp5RobZ7cwW7RA3UzPw+JzdWJ9tK+FLfLRTDdxhx80TyLDWlVVS3K7zN9TdiMdm7caf49tblA96wZ5L2HRS55P383DBuM4lz4OxVUQAC2aDZc5MTbly5VTEVxCEwiNE4eHh+nlT3u6kMCBaUtq27Pa45sCRTWp83NXUvoaxp/dy7E1lpTgbqbNRUBgz4lvUJnVaU4+HZuxQvmZWo2BN4zA/D6sXxLFJaXhk5k7VPEGzjTzTsza61Q2GvcP31Au96+LZP/bhWlwyDl2KxTt/HcaHQ5vAEmCS6KSlR/SPedEiVVJuRQSwIAiCHcL64lpXRlO2Ql5+8Kp+fmBjy40UUqBW9vNQU6daQUa3/OknPhuViI0nIvViviAYadOibcQt20pBMUxRzGoU7IxWNcADLlaQMEZRx+5ux6/p6t26uzjilb71jCLr9o6XuzNeH1APL8zfryossI518yq+GNa6irmHhnf+Pqyvz9ymmj+61LFMj7K5EQEsCIJgh7C2dlFaoReXZQdyvKIDm1hfO28K1GqBnmoK9HQtkgDOTUp6Jo5ciVOT8b51yXe1g3Ul2nQC2RvVAj1UlQFLgB7qkdO3q7J0xNvdGW8ObID6oVI6KzfVA70woXstfL7mpHr85uLDaBDqoxK+zMXqI9f0FiRPNyeLr1JhTkQAC4IgCCaBZcj2XNCVXKqn6vB6qwoC1kqDij4I8HJFVEL+HuYAT1e8MaA+wmNuKvEYfkNXw5hR1NwvnZHCE9cS1JQ7Gs3oMEvHaaKYAplR5HKuZSeMD1+OxejpO3E9IUX/2t65o6G6GBDypke9Cjh+LQHLD15RyZaPzd6FZU91hp+naRrLFIe45DS8sfig/vHodtXgb4ZxWAsigAVBEOwQdlm8cOGCmmfjFq3b4u3wj0FFhYGNrb8yAoUpk4cm/5N/y3i2ya1VwVtNqAsjK8XlGHqMk5TPmB5jCmN6jOk/NoSPVZOFyESsOnJNv5wVxmjRUDaKbGHM+ZrBXqqb3u2Qu64xy3aMm7Ub8dk1liv6uuO9wY1QobyUHSyMRztVx+mIBGUZuRyTjKfn7sUvD7cpcx/4h/8cw7U43cVLo4rl0a+R9d2BKUtEAAuCINgh7Po4c+ZMk7ZCXmpY/aGJ9QtgwuS2if3r4cdNZ4wiwfk19TC0UlQN8FQTEGQkPJkoyAYfjBhfyBbGTMjTunVpMDeR6zmtPRZhtI71lSm6VeJdtp2iVpA3fDwKT3bKq66xITUCPfHu4Ibw9ZDoYVHg3/rV/vXw7Lx9yntLP/gXa07ghT4GV0SlDBNNf9t+Qe9Bn9Cjlt3VaC4uIoBLEZbUyX2lX5rwarO43Y0EQbBP+OPIzo/a/O3CCgpaxyn6RXn73lagyG1bPQBHLsciOikN/h4uyh5Rkggfn8MqEZwMxTN/K5i9fz46US+M2fWOUWR6inNzOTZZTUzUMyTY283IRqG8xsFeCPBy04tf1i/O75epsl85TB7SWHXnE4oOy++90rcu3lhySFlfvv73FJqG+aJXgwqlfuzktAxMXJhjfbivVRgq+XqU+nGtHXmHl6L43X8xBol5tOwsLTzdnNUHTkSwebh69aqqp7plyxZVU5VtjPNaJgiWAN+PTzzxhEmbX2gMspHob27h2jjMt1T3r5Vro9jWYIm6yIQUdYHBOsaqXNuN/DvfRcSnqGnzKePSc/SC1gzyxOHLcfmKX5KUmmExCXnWBt8fbDU8I7tjHtsm//1Up1L3UH+59qRqFa5F74c0DyvV49kKIoBLCV7NU/y6OjmWSdkb+s14vKJGnAuL+Lz99tt45513YGoeeughJQIXL14MS+CXX35RrZhNIUw///xzXLlyBfv27VNtGPNbZi0tpAXhdppfCKaB39X06HJqWdXfSBjfSErDBXa9i9b5jFm5gYmICXkEXtiMpCgNSdhNj5Hu0hT7tgzbftMLvOV0lPJTj5u1C0ue7FRqyYysQfzjxjP6Ws1P96idZztv4VZEAJcyFL9l1R0md7vPgqAo05g3bx7eeustHD9+XL/My8vL6Is2IyPDpLVCbZHTp0+jZcuWqF27doHLBMHWYHRy/8VYNd+wYnlV6ksofWHMqC6nZlWMW9zSh6oixky+i9J5iCmMtdqwhUGbh1DyvwsbhlyISsLFmJuq4sfEhQfw+bBmJvfkpmdk4pUFB/SBL3boY4KkUDTkMsFOCQkJ0U+MTPKDqT0+duwYvL298c8//yjx5ubmhv/++09ljU+ePBnVq1dXHdeaNm2KP//8U79PiuQxY8bo17MN8Zdffqlfz4gyk26WLFmijsdp/fr1qiMc5//44w907txZPbd169Y4ceIEdu7ciVatWilB3r9/f0RGGvvdpk2bhvr168Pd3V3VNP3uu+/067T9Lly4EN27d4eHh4ca89atW9V6Hvvhhx9GbGysfjwFRb057hYtWqhj1ahRA++++65KJNKismy5/Ouvv6r9MNKd1zLCaPOjjz6q/Jfly5dHjx49sH//fqNj/f333+oc8FiBgYG4++671fJu3brh/PnzeO655/RjFoTbaYXMifO3wzLD6g82aH+wNnzKuaBRJR8MalJR1YGdMrQJZo9pizcH1C/S8+lxFkoO/dOvDaivGoiQxfsuY9a28yY/zk+bzipLi5YUOaKt+ZtwWBMS0hPy5dVXX8Unn3yixJ6fn58Sv7Nnz8b333+vIpobN27EiBEjlJDr2rWrEshhYWGYP38+AgIClO913LhxCA0NxX333YcXX3wRR48eRVxcHGbMmKGO4e/vj8uXL+ttF1988YUqyfTII4/gwQcfVEKcIprilftgpHrq1Klq+zlz5qjH33zzDZo3b469e/di7Nix8PT0xOjRo/Wv4/XXX1evg2Pm/AMPPIBTp06hQ4cO6niG0W/DyLchmzZtwqhRo/DVV18pkc7ILl+bNm4Kda6noOV4KeJTU1NvWUbuvfdeNc8LDF58/PDDD+jZs6cS/Dwfy5YtU4KXY6V45n6WL1+unksxTxHPY/O1CkJJ4Z2dM2fOmKQVsqH9wRbKn9kqLav5F1rXmNUtmOAn3B6V/T3wTM86mLJCV0KPVTd4d8TQxnI70PPLShOEYRA25HAV73axEAEs5Mt7772H3r17q/mUlBT873//w5o1a9C+fXu1jMKYkWEKOApgJtUwKqrBSDCjrYzsUrxSXFL4cV+MNOeGArlv375q/plnnlFCde3atejYsaNaxugyPbsaFJ6ffvophgwZoj/ekSNH1HgMBTD3O3DgQDXP8TVs2FAJYEaMDaPfBcHn8YJA2y9f+6RJk/Dyyy+rcfAigJFyvj7DfeVexvO1Y8cOREREqHWE4pyeaEbTKWw/+OAD3H///UbnkqKXUCA7OTmpC4PCxiwIBUFLk3Zn4XbsTbzVe/CSzv7QuJJPdtkvwVrrGrO0W1nXr7VVOtUKxInmlbBo7yVlU2D1jaVPd9LVXb4N2Fzm1QUH9NVBetWvIJ7tEiACWMgXWg80KBiTkpL0gliD0UlGXzW+/fZbTJ8+XRXYv3nzplrfrFmzIh2vSZMm+vkKFXSlYxo3bmy0jMKRJCYmqigsRbFhJJSWhNzJZob7ZTSacD/FaQNLi8LmzZuVODW0fCQnJ6vzwgh1UfeTkJCgIuSG8Fzx9RAmzEl0Vyht2PjC8LNhCvuDJL/Zbl1joWSwKsSpiHgcvBSnqnM8OWcPfhvb7raS4+fuDMf2s9H6bn2Pdq5uwhHbD2YVwLyF/vHHH2P37t0qKWvRokW466679OspFBh1Y3QsKipKRfiefvppjB8/Xr8NBcgLL7yAuXPnqsgiI4j0gWoCilCMPf7441i3bp2KQjKKx9v5ktRVMLQSGP4tCG/PV6pUyWg7LZLJvwGjrYzKMkrMKCX/vtu3by/S8RhB1tC8rbmX0WZhOJ6ffvoJbdu2NdoPI6SF7VfbT1Hh8RiR1aLNhtCnW5z9UITTf5wbX1/dFbxmlRAEa2DZQZ2FiYj9wf7qGgsFw3P6Ul9dkwxW4dh57oayRbwxsEGJ9nc1NhmTlx/VP36saw2p2VxCzHrWGMXjrV36PfMSFs8//zz+/fdf5TtlQtGqVatU3cqKFSti8ODBahsmA1GU0XfKyN+ECRPUvhit06J0vP3N28X0pFJo05dJUcRb+kLRaNCggRK6vJig3SEveM7pqzWsLapFNTXYbYp/k9uFFzh8H9DDOHz48BLvp6jjYfIbfcK1atUq8bG0/bA2MC+++J7OC0blaP1ggt7tjFkQCoIXgVo1GF6UlaQVMhs2HLqkS8JpEuaDKgFSfN9aKO26xkIOfh6umNivHl5ddFBZIaZtOovmlf2KnTBKr/6bSw7p21V3qBmA9jUkYm+VAphZ/Zzyg4KV0VpmvhP6I+nvpIeSApjZ+z///DN+++03lUlPmFzFqgDbtm1Du3btlGimL5TeVYom3o6nd/OVV15RGf+maP9ZWH3esqC0j8NoLqO7vODgD2enTp3U+afoZZIX/05MMmPS1sqVK1W0ntnlTA7jvAZFH9dTTNIGcDu1cRmR5R0B7qNfv37qDsCuXbtw48YNdfFUFDgeRmUpOHkxRitDXnYGJsoNGjRIJejdc889SizQznDo0CG8//77RR5zr169VHScdzo++ugj1KlTRyUBaolvtJ3QU8ykuJo1ayovMG0dTILje1YbM++ecB0vSlglQhCKC99XrKJyO62Qjao/SPRXEPKlXmh5jO1UHd9n1+x9cf5+1A1hpz7vIu9j+cGrWH3kmpr3dnfG411rltp47QGLLoPGaOJff/2FS5cuqSsfWhiYKd+nTx+1ntYJlu+hqNCgr5MiRSt1xf/pIzW0RNAmwUoEhw8fzvfYFFPcxnAq7tU1O7OxNm9ianqpTzwOj1eat7B44fDmm28q+wgvMig6Kdw0gfvYY4+p6PuwYcOULYG2ldydpuhtZXk0Cj0mjmmR+pLAUmL8AedFD//GjEwzSc5QcBflPUZLDcfM8VCU5gXfM0uXLlUXVCxPxosrNrmoWrVqscZMCwbFbJcuXVSElwKYQpalzbT3KC/4eEeD731esPHijhd9hsmJLPFGgay1shWE4sL3Ii8etUTQkiDNLwSh6PAz0r2u7jubXfzG/rob8clFK0EYk5SKt/86pH/8cIfq8PUo3QCereOQdbv1b0wEv4Bze4ApQhn1ZVSRt4wZdaPnkxYGwsgvRQS3M6RNmzaq7uuUKVPU8ykuGHXUYNIS/a0UIvlFoBkdNszC12DUkxFPQw/y2bNnlejK7QVlO+SidmYzBRS/0gZZsEUK+pwJ5uFMZAJ6fLpBzTet7IslT+qqteSVsb7tjK4tr7e71JcV7JvktAy89Od+nItKUo/7NQzB1BEtCr0IZcT4z90X1XzTMB9MurOR1dSBvxJ7E43DfBDqUzb5LQxY8sI+t17LjUWrpa+//lpZGRgJY7SXyVVPPvmksjOUNrwlyJOnTeHh4cXeB8Uo2x+W1STiVxCEsmK5gf1hkER/BaFIsDMsm2R4ZLdGXnH4qr6VcX5sOhmpF79srvFU91pWI34tGYtNHWRZqNdee01FhbUarkwOYoko1k2l7YGJbSyzxc5aWgY9uXbtmr5GKv83vH2srdfW5Qe9lVp1A0EQBMGYpQb2h/6NpSa1IBQVRkJf6F0Xk5YdUY9ZFYI1tDvUujWfIyk1HRMXHtQ/fqBNFVQoo0iqrWOxIUN6eznlzkxmiSuthBXb9LKaAxOYNJhcxUoFWrMG/n/w4EF9/ViyevVqFRZnZQNBEAR7TYJj6UJOWkvvonIqIgHHrsar+eZVfBHmJ9UfBKE4tKnuj2GtK6t5OiUn/L5XWQVy8+mqE7h4Q7e8drAX7mpmXIZUsNIIMLPv2WBBgx4/RnjZ7YqJbExqeumll1RdVCYbbdiwQfmBP/vsM7U9PR5shMCMfz6Hovapp55SopdJSoQJcxS6I0eOVAlOLEH1xhtvKCuFRHgFQbBXGEjQWoAXty62of1Bqj8IQsl4oHUVnLgWj70XYlSN4PGzduOP8e3hlt3SeF94DGZsPqvmnR0d8EzP2nAU64NtCGCWrGKymoZWuooltZjNz8gEvbis8xodHa1EMDtxGTbCYCY+o8RDhw41aoRhGDFm9j4bYVAYM/mN+2cmvSmxkFxCQbBJ5PNlevjdyNJ+2nxxkOoPgmCiJhl96qomGewSt/9iLN79+zDuaFIJV2Ju4vM1J1R0mAxpXknajNtqFQhLJ7+sQjYkYGm24ODgW9rbCoJgGlhSjzYmlo0rrlgTTMvJa/Ho/flGNd+yqh8WPN6hwO2lCoQgFG4pennBfqRl5C3H2O542qhWcL6N9snm5IqFVoGw2CQ4a4E/xkzA0zzGbKIg2ZmCYBp4fc6yhfx88XMm4tf8SPMLQTAttYK90Kd+CJYdyvlsGRKVmIod56JVC2vBdIgANgFaNQnDRDtBEEwHxW9BVVuEkl1cREZGqnk2VCnqhbvYHwTBtLBfwLZzursk+fHTpjNoWz2gVJtd2RsigE0AfzhCQ0OVDYKVKwRBMB2s9CKRX9PD76qpU6cWqxUyE3ZORiSo+dbV/BDiI01JBOF2OXI5FlEJqQVucz0hVW3XOCyn5Ktwe4gANiH8kZYfakEQrAVatkpa+1fsD4JgGqKT0ky6nVA0RAALgiDYIYz4ssxkcSwTyw5cVvN0S/QXASwIJsHfw8Wk2wlFwzpTCgVBEIQy5fi1eJyOTFTzrav5o0J5sT8IgiloUNEHAV4FW5ACvVzVdoLpEAEsCIIgFCv5bVATif4KgqlgYtu4zjUK3GZs5xqSAGdiRAALgiDYIWx/vHDhQjUV1gpZZ3+4orc/9GskFTkEwZSwxNnE/vVuiQQz8svlUgLN9IgHWBAEwQ5h++ODBw+qea0jXH4cvRKPM9d19oe21f0R7C32B0EwNRS5LHXGag9MeKPnl7YHifyWDiKABUEQ7BBWrGHreG2+IJYd1CW/kYFNKpb62ATBXqHYlVJnZYMIYEEQBDuEorddu3aFbmdof2Agql9DsT8IgmD9iAdYEARByJfDl+NwLipJzberEYAgbzdzD0kQBOG2kQiwIAiCHcLIbmxsrJr38fHJtxXy8oPS+lgQBNtDIsCCIAh2CFshf/nll2rKr4W7sj8cNLA/SPUHQRBsBIkAC4Ig2CkuLi6F2h/OZ9sf2tcMQKCX2B8EQbANRAALgiDYaSvk1157rcBtlho0vxjYWKo/CIJgO4gFQhAEQcjH/nBZX5qpb8MK5h6SIAiCyRABLAiCINzCwUuxCI++qeY71AxAgNgfBEGwIcQCIQiCYIew/fHy5cvV/IABA+DsbPxzoNX+JQOl+oMgCDaGRIAFQRDstBXy3r171cT53PYHzf+rsz9I9QdBEGwLiQALgiDYaSe47t276+cN2X8xFpdidPaHjrUC4efpapYxCoIglBYigAVBEOwQit4uXbrkuW7ZAV3yGxkk9gdBEGwQsUAIgiAIxtUfsu0Pzo4O6CPVHwRBsEEkAiwIgmCnQjcpSdfkwsPDQ98KeW94DC7HJqv5TrUD4esh9gdBEGwPiQALgiDYIWx//Mknn6jJsBWyVH8QBMEeEAEsCIIgKDIzs7D8oE4Auzg5oE8Dqf4gCIJtIhYIQRAEO22F/Pbbbxst2xt+A1ey7Q+dawfBx8PFTKMTBEEoXSQCLAiCICi02r9E7A+CINgyIoAFQRAEI/uDq5MjejWQ6g+CINguYoEQBEGw01bIa9asUfO9evXC3otxuBaXoh53qRMIn3JifxAEwXaRCLAgCIIdwvbH27dvVxPnjao/NBH7gyAIto1EgAVBEOy0E1ynTp10Dxwcc+wPzo7oVV/sD4Ig2DYigAVBEOxUAPfs2VPNbz8ThYh4nf2ha50geLuL/UEQBNtGLBCCIAh2zrLs6C8ZJPYHQRDsAIkAC4Ig2GkrZHaAy2D1hwM59oeeYn8QBMEOEAEsCIJgh1D8Tp48Wc3H3GxOUwS61w2Cl5v8LAiCYPuIBUIQBEFQDJDmF4Ig2AkigAVBEOwQFxcXvPzKq1ju2BbpcISb2B8EQbAjRAALgiDYIQ4ODth7KR7XEjP4CN3rBov9QRAEu0EEsCAIgp0izS8EQbBXRAALgiDYISmpaTh3YDtaOF+EhwvQo16wuYckCIJQZsj9LkEQBDtk+5nrqINLgAsQUqMZPMX+IAiCHSHfeIIgCHbIP4eu4XS6Luo7slElcw9HEAShTBEBLAiCYGekZ2RixZEI3EirgnIuTujZMMTcQxIEQShTxAMsCIJgZ2w9E4UbSWlqvkf9YHi4SixEEAT7QgSwIAiCHVd/GCTNLwRBsEPMKoA3btyIO+64AxUrVlQ1KRcvXmy0nsvymj7++GP9NtHR0Rg+fDjKly8PX19fjBkzBgkJCUb7OXDgADp37gx3d3dUrlwZH330UZm9RkEQBEsijfaHw1fhjAw8XG4Xdiz8EampqeYeliAIgv0I4MTERDRt2hTffvttnuuvXLliNE2fPl0J4KFDh+q3ofg9fPgwVq9ejaVLlypRPW7cOP36uLg49OnTB1WrVsXu3buVeH7nnXfw448/lslrFARBsCS2nI5CTLb9QRAEwV4xq/Grf//+asqPkBDjxIwlS5age/fuqFGjhnp89OhRrFixAjt37kSrVq3Usq+//hoDBgzAJ598oiLLc+bMUdENimdXV1c0bNgQ+/btw2effWYklHOTkpKiJkMhLQiCYO0sO3BZ/c/2xy0GjVL1f9kWWRAEwZ6wGg/wtWvXsGzZMmVx0Ni6dauyPWjil/Tq1QuOjo7Yvn27fpsuXboo8avRt29fHD9+HDdu3Mj3eJMnT4aPj49+onVCEATBmklNz8TKw9fUvKerM3o3qQJPT091Z00QBMGesBoBPHPmTHh7e2PIkCH6ZVevXkVwsHH3ImdnZ/j7+6t12jYVKlQw2kZ7rG2TFxMnTkRsbKx+Cg8PN/ErEgRBKFs2n76O2Js6+0OvBhXg7uJk7iEJgiCYBaupfUMLA/2+TGQrC9zc3NQkCIJgi9Uf+jcMVjkTpGPHjnByEjEsCIL9YBUR4E2bNinLwqOPPnqLRzgiIsJoWXp6uqoMofmH+T/tE4Zoj3N7jAVBEGzb/qC76+Xl5owONfyxbt06NWVkZJh7eIIgCGWKVQjgn3/+GS1btlQVIwxp3749YmJiVHUHjX///ReZmZlo27atfhtGOdLScrKeWTGibt268PPzK8NXIQiCYD7+OxWJ+OR0Nd+7QQV4uLmgefPmamLehCAIgj1h1m891utlRQZO5OzZs2r+woULRtUX5s+ff0v0l9SvXx/9+vXD2LFjsWPHDmzevBkTJkzA/fffrypAkAcffFAlwDF5juXS5s2bhy+//BLPP/98Gb5SQRAE87LUwP4wsHGoypcYPHiwmjgvCIJgT5j1W2/Xrl2qrJmGJkpHjx6NX375Rc3PnTsXWVlZeOCBB/LcB8ucUfT27NlTRTFYI/irr77Sr2cFh1WrVuHJJ59UUeTAwEC89dZbBZZAEwRBsCVS0jOwOrv6g7ebMzrXCTT3kARBEMyKQxbVpVAojERTTLMiBLvOCYIgWAtrjlzDo7/uUvNDWlTCZ/c1K7NjZ2ZmYduZKDXv7S71hgXB3rgSexONw3wQ6lPOovSa3PcSBEGwcZYdzLE/DGoSqv5ngyA2DCIvvviiUa10QRAEW8ckHmBmENO7W1BjCUEQBKHsSU7LwOoj2fYHd2d0qhWkX8fkYMMEYUEQBHuhRBHgZ599Fo0bN1aJZRS/Xbt2xZYtW+Dh4YGlS5eiW7duph+pIAiCUGw2nohEQoqu+kPfhiFwddbFPdj++JlnntHPC4Ig2BMligD/+eef+pJkf//9t6recOzYMTz33HN4/fXXTT1GQRAEwQT2B1Z/0GD7Y7aS5yStkAVBsDdKJICvX7+ubyKxfPly3HvvvahTpw4eeeQRHDx40NRjFARBEEpof2ACHCnv7oyOtaT6gyAIQokFcIUKFXDkyBFlf1ixYgV69+6tliclJUk7TUEQBAthw4lIJKZm3GJ/IPz+3rZtm5qkE5wgCPZGiTzADz/8MO677z6EhoaqW2e9evVSy7dv34569eqZeoyCIAhCCVhm2Pwiu/qDBkXvypUr1XyLFi0keCEIgl1RIgH8zjvvoFGjRggPD1f2Bzc3N7WcX6CvvvqqqccoCIIglMT+cFRnf/Ap53KL/YGNg5jMrM0LgiDYEyWuA3zPPffcsowd3ARBEATzs/54BJKy7Q/9GobAxclY5LL98ZAhQ8w0OkEQBCsVwGvXrlVTREQEMjMzjdZNnz7dFGMTBEEQSsjSAuwPgiAI9k6JBPC7776L9957D61atdL7gAVBEATL4GZqBtYejVDzfh4uaF8zwNxDEgRBsH4B/P333+OXX37ByJEjTT8iQRAE4bZYdzwCN9Oy7Q+NbrU/aK2Qv/zySzXPhhjSClkQBHuiRAKYX5wdOnQw/WgEQRAE01Z/aFwx3+1YulIQBMEeKVHq76OPPorffvvN9KMRBEEQbouk1HSsPaar/uDv6Yp2Nfzz3I7tjx9//HE1SStkQRDsjRJFgJOTk/Hjjz9izZo1aNKkyS1fnp999pmpxicIgiAUg3+PRSA5LVNvf3DOw/5AmLsRHBxcxqMTBEGwYgF84MABNGvWTM0fOnTIaJ0kxAmCIFiG/WFQY6n+IAiCYDIBvG7dupI8TRAEQShFElPSVQSYBHq5ok31vO0PWie4ffv2qXkGNKQTnCAI9kSJ6wBrXLx4Uf0fFhZmivEIgiAIJWTtsQikpBduf9AE8NKlS9U8O8KJABYEwZ4oURIcG1+wDrCPjw+qVq2qJl9fX0yaNOmWphiCIAhC2bDswOUiVX/Q2h/XrVtXTdIKWRAEe6NEEeDXX38dP//8Mz788EN07NhRLfvvv//wzjvvqAS5Dz74wNTjFARBEAogISUd645HqvlAL7cC7Q9aK+T777+/jEYnCIJgAwJ45syZmDZtGgYPHqxfxmoQlSpVwhNPPCECWBAEoYxZe/QaUrPtDwMah8DJURKSBUEQ8qNE972io6NRr169W5ZzGdcJgiAIZctSo+YXUv1BEATB5AK4adOm+Oabb25ZzmVcJwiCIJQd8clp2JBtfwj2dkOragXbH0haWhq++OILNXFeEATBniiRBeKjjz7CwIEDVSOM9u3bq2Vbt25FeHg4li9fbuoxCoIgCAWwhvaHDM3+EFok+0NWVhZiY2P184IgCPZEiQRw165dceLECXz77bc4duyYWjZkyBDl/61YseDMY0EQBKH0ml8MbFI0+wOT4NjWXpsXBEGwJ0r8rUehK8lugiAI5iX2Zho2nriu5iuUd0PLKn5Feh5LnzFxWRAEwR5xLk7740aNGqkvTc4XBCtCCIIgCKXPmiPG9gdHqf4gCIJgOgHMVplXr15FcHCwmndwcMjTN8bl7DAkCIIglD7LDpas+gObFh06dEjNa8ENQRAEe6HIAvjs2bMICgrSzwuCIAjmtz9sOqmr/hBS3h0timh/IOnp6Vi0aJG+hKWrq2upjVMQBMFqBTDbHec1LwiCIJiH1UeuIS0jq0T2B96tq1Gjhn5eEATBnnAsaSe4ZcuW6R+//PLL8PX1RYcOHXD+/HlTjk8QBEHIh2UHLhe7+oOGi4sLRo4cqSbOC4Ig2BMlEsD/+9//UK5cOX39XzbAYG3gwMBAPPfcc6YeoyAIgpCL2CTaH3TVHyr6uKN5ZV9zD0kQBMG2y6Cx4UWtWrXU/OLFi3HPPfdg3Lhx6NixI7p162bqMQqCIAi5WHnkKtIzS2Z/EARBsHdKFAH28vJCVFSUml+1ahV69+6t5t3d3XHz5k3TjlAQBEEwSfMLQ9j++LvvvlOTtEIWBMHeKFEEmIKXHYSaN2+uOsINGDBALT98+DCqVatm6jEKgiAIBtxITMXmUzr7QyXfcmhWAvsDy1hGRuoqSEgrZEEQ7I0SCWC2QH7zzTdx4cIFLFiwAAEBAWr57t278cADD5h6jIIgCIIBqwzsD4z+lqSKA9sfjx49Wj8vCIJgTxT7W4+1I7/66iu88sorCAsLM1r37rvvmnJsgiAIQh4sPVCy5heGsPGF3LETBMFeKbYHmJECVnygEBYEQRDKlujEVGw5rcvBCPMrhyZhPuYekiAIgn0kwfXs2RMbNmww/WgEQRCEAll5+CoybtP+oLVCPnbsmJo4LwiCYE+UyPjVv39/vPrqqzh48CBatmwJT09Po/WDBw821fgEQRCEfKo/DGpcscT74V28efPmqfmJEydKK2RBEOyKEgngJ554Qv3/2Wef3bKO0YiMjIzbH5kgCIJgRFRCCrac1lV/qOLvgUaVypd4X/yurly5sn5eEATBniiRAJbbZYIgCGXPisNXke1+uC37A2H740ceecR0gxMEQbB1D7AhycnJphmJIAiCUPTmFyWs/iAIgiCUUADT4jBp0iRUqlRJdYU7c+aMWs7awD///LOpxygIgmD3RManYNsZXfWHagEeaFix5PYHQRAEe6dEAviDDz7AL7/8osqhGSZONGrUCNOmTTPl+ARBEAQT2x8I2x//9NNPapJWyIIg2BslEsC//vorfvzxRwwfPhxOTk765U2bNlUldYrKxo0bcccdd6BixYrqy3zx4sW3bHP06FFVVcLHx0dVm2jdurXqQGdowXjyySdVNzpGo4cOHYpr164Z7YPbDxw4EB4eHggODsZLL70kdYwFQbAqlh24rJ8feBvVHzTY/vjy5ctqklbIgiDYGyUSwJcuXUKtWrXyTI4rTiQhMTFRiWa2Vs6L06dPo1OnTqhXrx7Wr1+PAwcOKJuFu7u7fpvnnnsOf//9N+bPn69qE/PLfMiQIUZ2DYrf1NRUbNmyBTNnzlTR67feeqvYr1sQBMEcRMQnY/vZaDVfI9AT9UO9b3ufbGrE1vWcpBWyIAj2Rom+9Ro0aIBNmzahatWqRsv//PNPNG/evFj1hDnlx+uvv44BAwYoq4VGzZo19fOxsbHKc/zbb7+hR48eatmMGTNQv359bNu2De3atcOqVatw5MgRrFmzBhUqVECzZs2Uf5mtnN955x2pfSkIgsWz4tBVZJnQ/qC1Qq5Tp87tD04QBMFeIsCMnk6YMAFTpkxRUd+FCxdi7Nixyhtsqsgq97ts2TL1Bd23b19lXWjbtq2RTWL37t0q4tyrVy/9MkaLq1Spgq1bt6rH/L9x48ZK/Gpwf3FxcTh8+HC+x09JSVHbGE6CIAjmYKlh9YcmUv1BEATBLAL4zjvvVLYDRlXpy6XopVeXy3r37g1TEBERgYSEBHz44Yfo16+fiuTefffdyt6gtWG+evWqiuD6+voaPZdil+u0bQzFr7ZeW5cfkydPVr5jbdIKxgvFgy1bt56OwpJ9l9T/WgtXQRCKxrW4ZOw8p7M/1AzyRN0Kt29/0IIMtJlxktrugiDYGyU2fnXu3BmrV69GaaF9IVNs0+dLaF+gj/f7779H165dUZqwNejzzz+vf8wIsIjg4rHi0BW8+/cRXInNqRUd6uOOt+9ogH6NJIolCEXhn4NXDOwPuoRhU8BE4NmzZ6t5aYUsCIK9UaII8KOPPqqS0kqTwMBAlZhBv7Eh9PdqVSBCQkJUcltMTIzRNqwCwXXaNrmrQmiPtW3yws3NDeXLlzeahOKJ38dn7zESv+RqbLJazvWCIBTOsoOl0/yCQpp3wzhJK2RBEOyNEgngyMhIZUtgRJQlxfbt22fygTEawZJnx48fN1p+4sQJffJdy5YtVTvPtWvX6tdzewrk9u3bq8f8/+DBg8pSocHINQVtbnEtmAbaHBj5zcvsoC3jerFDCELB8IJx57kbar5WsBfqVPAy2b753Tl+/Hg1cV4QBMGeKJEFYsmSJbhx44YqPcYKDJ999plKPmNd4AcffBDVqlUr0n7o8T116pT+8dmzZ5WY9vf3V4lsFNfDhg1Dly5d0L17d6xYsUL5jLXoM725Y8aMUVYFPoei9qmnnlKilxUgSJ8+fZTQHTlypKomQd/vG2+8oWoHM8ormJ4dZ6NvifwaQtnL9dyufc2AMh2bIFgTy3NFfyVSKwiCYMYIMPHz88O4ceOUGD1//jweeughzJo1K8/6wPmxa9cuVTZNK51GIct5rZIEk97o96VwZSUHdplbsGCBqg2s8fnnn2PQoEGqAQaFMm0NrEqhwUYdS5cuVf9TGI8YMQKjRo3Ce++9V9KXLhShZqkptxMEe8VIAEv1B0EQBJNx29XPWYaMQnb79u04d+7cLRUXCqJbt26FdiB65JFH1JQfbIrBRhr5NdMgtEwsX768yOMSbo8LUUlF2i7YO6ehiSAIxlyJvYld53X2B1of6pio+oPhd/ecOXPUPO/eiQ1CEAR7osQR4HXr1qnavxS8jP7SfsBI68WLF007QsFq4MXM12tP4tPVJwrcziG7GkSb6v5lNjZBsDaWH7xq0tbHeX1eefeOk7RCFgTB3ihRBLhSpUqIjo5WiXA//vgj7rjjDvHT2jlJqel4af4Bo4x1Tezm9dPKUmhOjuJnFIT8WHbgsn5+YJP8K9aUFFbZueeee/TzgiAI9kSJvvXYQvjee++9pQGFYJ9cvJGEcb/uxpErum55zNN5sU9d1Aj0xHtLjesAOzkA3zzYQuoAC0I+sDoKvb97LujKO9at4IVawaa1P2itkBs2bGjy/QqCINisAKb1QRAIKzk8Pns3ohJT1WMvN2d8eX8z9Kyv84L3aRiitnnnr8M4fi0eGVlA1QBPM49aEKynecylmGS1XC4aBUEQzCyAExMTVYti1t9lfd3cbTTPnDljqvEJFsyc7efx9pLDSM+u51stwAM/jWqF2kzWiQkHkqLgxFrM5YCnGyTiu4izaru92zPQoHtzwFc66wmCxvodu/HNoq2gM97f0B2UCnwz5yTc726Pbm1amux4/N7WcjbCwsJURFgQBMFecC5pJ7gNGzao2rqhoVKb0t5Iy8jEu38fxuxtuo58pHPtQHzzQAv4eLjoxO83LYH0FP36gZw0m/h+AIfdgAm7RQQLAm0PNy6g/fK+WOqWlu82KctdkFF7D5z8qpisFfKMGTPUvLRCFgTB3iiRAP7nn3+wbNkydOzY0fQjEiyaqIQUPDFnD7afjdYvG9OpOib2rwdnp+wIUlKUkfjNE67ndiKABQGHT55FE+Qvfokb0nCA27UxjQBm4IINhLR5QRAEe8K5pE0wtC9OwX44cjkOY3/dhUsxN9VjVydH/G9IY9zTMszcQxMEqyY6KdWk2xUF1v1l50xBEAR7pESmr0mTJqlubUlJRWt4IFg//xy8gqFTt+jFb5C3G+Y+1k7EryCYADfnon0V+3uITUEQBMFsEeBPP/0Up0+fVk0wqlWrdksHoT179phkcIL5yczMwhdrT+KrtSf1y5qG+eCHka0Q4nN7ndxuJKXBzwRjFARr5lpcMmZuOYf2Rdi2octldrDQ1RoUBEEQylYA33XXXSU/omA1JKak4/k/9mHl4Wv6ZXc3r4TJQxrD3YX1HfKjaF2ltp+NQr9aJhioIFhxDe3h07bD68ZNmnwLxWnJeGDzZ0DTB4AmwwCfSreVBPfHH3+o+fvuu0+aYQiCYFeU6Bvv7bffNv1IBIviQlSS8vuydi9h07ZX+9fD2M41Ck6YYUm8zV8V6RjbTkehX29TjVgQrIszkQlK/LLm72DHS0V/4vUTwNp3gbXvATW66sRwg7sAF/dil0E7eVJ3Zyd3KUtBEARb57Yu+Xfv3o2jR4+qeXYUat68uanGJZiRLaevq0oPMUm6rHRvd2d8/UBzdKsbXPATM9KBJU8ChxcW6Tj7wmMRn5wGb3djC40g2DrHrsZhxLQduJ6QgpoOl/CB68yiPTGkKXCVdQRJFnBmPXBhG1B3QLEFsJOTE+688079vCAIgilwSbgEp+ScSlHeCSlwdvECErNvc3kEWEQFqBIJYDa/uP/++7F+/Xp9O+SYmBh0794dc+fORVBQkKnHKZQBWVlZ+HXredW+mO1YSY0gT9XcomaQV8FPTksG/nwEOL6sSMdKznJBRIYn1h+PxB1NK5pi+IJgFewPj8Go6TsQezMNlRCJue5T4J2VWPgTnd2A++cAWRnA/nnA/t+BG2eBeoMA9/LG2x75CwiuDwTWznd3FL3NmjUzwSsSBEHIEb915neDY0ZOKdTaeX2XWUAfgBIJYJbOiY+Px+HDh1G/fn217MiRIxg9ejSefvpp/P7776Yep1DKpKZn4q0lhzB3Z7h+Wbe6Qfjy/ubwKVdIhDYlHpj7IHB2o+6xkyvQ/yOgosEdgfgrwO8PqKhVmkt59It/G5cRiJWHr4oAFuyG7WeiMGbmLiSkpCMQsZjvOQVBGdd1K4PqAgM+Bdy8836yYdSk2ytA15eB8O23bp+aCCx+HEhNACq1Apo9ADQcAnhI6UpBEEoXp+RoI/FryX0ASiSAV6xYgTVr1ujFL2nQoAG+/fZb9OnTx5TjE8qAyPgUPD57N3adv6Ff9ljXGni5bz040fxbmPj99U7g0m7dYxdPXZSqZvdcGzYDGg0BDi2AS1ocersfxU/JoSoCnJKeATdnuQUr2DYbTkTisVm7kJyWifJIxJ9eH6Ni+mXdyoBawOhlgFcx7p7Ri1+l3a3Ljy3TiV9yaZduWjERqNNP5xeu3RtwclG+X97NI8HBwdIKWRAEu6JE33j84sxd+oxwmSRTWBeHLsXizm/+04tf1iP9YlgzTOxfv3DxqwnewLq6eXcfYNSSPMRvNh2f0c+Od1kGJ2SoSNiW01GmeTGCYKHwTsfYmTrxWw7JWFD+c1RLP6NbWT4MGLm4eOK3IGp0A/p8AFRolLMsIxU4+hcw9wHg07rAP68gPXwPfvjhBzWxIoQgCII9USIB3KNHDzzzzDO4fDk7esFAw6VLeO6559CzZ09Tjk8oRf7efxn3fL8Fl2OT1eOQ8u6YP7497mpejNJKjBoN/hpo+RDw0HKgcuv8tw1tCtTsoWYD0q6gv+MONb/q8NXbfCWCYLks3ntJJZWmZmTCBen4028qaqce0a30CARGLTbtrUCvYKDDBODxzcD4/4D2EwBPgwRW3nrc/j0cFo2Dt7e3mqQVsiAI9kaJLBDffPMNBg8erJpgVK6s++IODw9Ho0aNMHv2bFOPUSiF5hafrDqO79af1i9rXsUXP4xoieDyRcgkz8wAHA0sC07OwB1fFu3gHZ8FTv+rZh93+RtLU9ph9ZFreP+urKJFnAXBivht+wW8vvig6l1B7m0SgAZsoHmRt1vKAyMXFpiodtuENNZNvd7Vfe72/wYcWw5kpMCl2X14vtvzxtufXANU7QC4epTemAShlKoN5CbD3R9pXiWvlS0UHwfebbJlAUzRy25v9AEfO3ZMLaMfuFevXqYen2BiWHbs2bn7sPaYzvtH7m0ZhvfvblQ0Hy69vgvHAcNm67LMi0v1LkBoM+DKPjR0OIdOjofwX0Jj7LlwA62rSZKOYDtM23QG7y/TlYkkw9tWwaQ7G8EhfYnuM8TILO+KlAW8SK3TRzfdjAGOLNbfjdETdRqYMxRw9QYa3gk0fRCo0l53l0cQrKDaQG4yndxw4t71IoLLCKfkGFTc8iashWJ9s/37778q2S0uLk7dMuvdu7eqCMGpdevWqhbwpk2bSm+0wm1x9noi7v5ui178MuD61qAG+OieJkUTv2c3ATMHA1GngF/vAm6cK/4geKu107P6h485/a3+X3lIbBCC7ZQT/HLNSSPxO65LDbx/VyM48kPnmp0oWrUozY9LgXK+OsuSbxXj5fvn6v5PjQf2zgZ+GQB81RRY9z+dOBYEK6s2wPUFRYgF0+ESfxE1lg6BR9Qh2KQA/uKLLzB27FiUL5+r5iQAHx8fPPbYY/jss89MOT7BRGw6GamS3U5F6LLDWdrs10fa4pFO1Yvm/zv+DzB7aE52ObPWy5UwYlt/MOBfA2lVu+LHzMFq0aoj15RwEARrhu/hyf8cw+drTuiX/dT4GCZ2DbI4ny0T3+bPn68mlQRXpy/QfIQuAqwRcwHYMAX4ugXwcx9g1wxdBFkQBCEb9+sHUfOvO+Eec0o9LvSXnHWAWdbRmiwQ+/fvx5QpU/JdzxJon3zyiSnGJZjwB/nn/87if8uPIru3BWoHe6nmFtUCPYu2ExbdZ11RFuAnLKd07y+AS7mSDYr+4XHr4eLug8xp24BTUbgQnYRjV+NRP/TWiytBsBZv/ZtLDmHO9gv6ZXOaHEDHEx8CM+bpkt3KW07Na1bsYf12ojrChbXSTf0/1pVSY6ONM+uArOzKPqw5zOnECuDBeeYdvCAIFoFX+DpUWfs4nNKZ3ACk+NQA7vwabu4FNM+yxk5w165dy7P8mX5nzs6IjIw0xbgEE8D6uq8vOoQ/dzPjRkev+sH4fFizorcf3vETsPzFnMeN7wXumqrqiN4WLJkGoG/DEGw+FaUvFSUCWLBG0jMy8fKfB7Bw7yX1mMHe2a3Po+OBD3UbXD8OHF8OtH4UlgI7wfXv318/r4cJcE3u1U1xV4CDfwD7fgcij+Z8B+RugR55DAgxKLsWE66rNkGysuAZFatm3d10PzmSnCTcLk4puveUYD78js9Fpf8mwiE7OHazQiu4jJgHZ+9AWAPFEsCVKlXCoUOHUKtWrTzXHzhwAKGhoaYam3AbRMQl47HZu7H3Qs7tygnda+H53nV0PsTCoB1h06fAv5NylrUaAwz4xKRJMb0bVMBbSw6r+ZWHr+HZXnVMtm9BKKsuis/M3Yt/sn3srGYyu3MU2u94I2ejTs9blPjVRG+bNm0K3qh8qK5+d4engSv7gYPzgXoDjbdhdYnf7gUqNAaa3g9U6wRM76Pr9pTts8ud6ifJSUJJcUhPRsDh6Qje+5W5h2L3OKbf1IvfxJoDUO6+n+HoZj0VZIolgAcMGIA333wT/fr1g7u7cbmsmzdv4u2338agQYNMPUahmOwPj8G4WbtwLU73A+Tu4oiP72lavJbDa94GNn9p/APe8y1daMuEhHq74dGgY+geswDPXJmA8OgkVPa3ng+QYN8kp2Vg/OzdqqMhcXFywJyeaWiz+YUcyxAvHPnZsWb4ua/YTDflhqXVyLWDwKqD2ZI3s0jJSSKAhSKTlQmf038hZNcUuCbo7rQUBa+LG5Ec2LhUh2avnKj6IDKiL8DPwwmegybDgdVmrIhijfaNN97AwoULUadOHUyYMAF16+o6gLEUGtsgZ2Rk4PXXXy+tsQpFYNHei3hlwUEVlSIVfdzx46hWaFRJZzkoMl4hOfO93zPq4mZSNn+ON+LfA5yA0VkrsfJwOzzauUbpHEsQTAi7GI75ZSe2n43Wd1H8bYALWq4fq+rsKhrdo7trYmEJcFp+QHS0buz+/v4lT9Kr2VNneWDLZYV0AxVMi8eV7QjdPgke1w/ol2XBAQ6Fp1shlII58TKutH0TWc5FqHMvFNoDgN8d1+JTUM7FEe4D/wevovQPsEAcsoqZen/+/Hk8/vjjWLlypT5rn1+cffv2VSK4evXqsEVY+o2VLmJjY/OsgmFuMjKzMGXFMfy4Mbu9KoDW1fzw3fCWCPJ2K9lO138IeIfoSiaVFrGXkPVlUzhkpiE2ywNPVZiNX5+QboKCZROblIbRM3ZgX7jOYuTp6oTf7vJF09X3Azd1bcVRu6+u3Nnt+uVLidTUVEyePFnNT5w4Ea6urre3w+sndYlze2YBiTl1xvPj5F3LJDInFIhr7BmE7JgMn/MrjZYnVekBp45PwG3+cL3VpjCSAhoivOdUpJavVkqjtW2cE6+i2qpHcKXZMzjp1wU+Hi6oH1Je/W+teq3Y8eqqVati+fLluHHjBk6dOqVEcO3ateHn53e7YxZKSOzNNDz9+15sOJGTgPhAm8p4d3AjuDoX0a/Li5ncEaBur6LU8akEhyb3AfvmwMchCXUuL8D1hE4I9CqhaBeEUuZ6QgpG/rwDR6/E6UsKzhlWFY2W3Zkjfqt2BO6babHiV8PNzYSfM3a0o9Wj3h3AT90K317KHgqF4H1xg5H4Tfavj6w+k+BRr7duwYTdOcmWt5AFnNmArPWTlW/YI+owai0aiItdPkZc9QFl8wJsBLfoY6i2cjRcE6+g6vqnkNrvN1Su3RWe2Umt1kqxI8D2iqVGgE9HJmDszF04cz1Rn4Dz9h0NMLJd1aLf0mRdz3kjgHZPAPXM8MUQeRz4VpeMcznLH//1X4P72tUs+3EIQiFcib2J4dO240yk7vMW6OWKWWPaon6wB/D3M8C+2brubqOXAu6W8z1RplzeB/zYtdDNrjQaD5+rWxBdfwRiagxGlot4/wXju5o34hLQZsVAuGbeRGqX1+DZZqSujGZxuHoImX+MhmO0rkYtudThfUQ3GGX6Qdsgnpc3o+rqcXBKi1ePU7wrA8P/hFtIPVi7XpMel1bMuuMRuOubzXrx6+fhgllj2mBU+2pFF78JkcDMQcC5TcD8h4CzG1HmBNVFbBXdFX1Fh2jE7cruSCUIFsSFqCTc+/1WvfgN9XHHH4+115XuY/LH4K+BXu8AIxbar/gtBj7nlitPZ9iml1H/t9YI3fIW3KKPm3tYgjnIyoTvqUUI3v2puqt8IykVV+OS4e3lgeR7ZsHp6T3wbPdQ8cUvCWkEx8fWI7PhUPUw1c0fZwO7SeOlIuB7ciGqrRilF783g5rA8dE1Fi1+i4N1x6/tFH5w6fX9cMUx/V3EeiHeqrlFsSooMHFl1l261sbEzQtwM88Pt3ePF4BfVqv5rpG/ISH5JXi536YnURBMxKmIeBX51SqrVA3wwOwxbY0/bywP2Ok58w3SynB1yfl88wc28Mgvakqs0FpFhWOrD0CWk1ihbB3PK9sQsv19dTGU5eCIk4E94RLSEI3DfBDs7QYXpxJ2HDXEzRuO9/wMVOuIZI/KcC5XEZdib6KCtztcnCQOeAtZWQja/y1Cdn2kX5RYtRfKPTATjgU1uLAy5C9vhWWXnpu3T7Vb1cRv34YVsODxDsUTv9dPAdP75Yjf8pWAh1fkXeaoDHCs1h7nPZuo+doOF3Fkw3yzjEMQcnP4cizu+2GbXvyyk+IfY1qg8vrngGu6GtbWCNsfL168WE2qFbKpYJcntjotCGc3OI9eBIz9F+lNhyPTOaerpOe1nai8/hnU+70tQrZ/AKeb+Xk8BWvGNeY0qqx+FDWW3aev7uCQlYmGN9aheRU/VPItZ1pxyruircegfMM+aBrmi8p+HoiIT8HN+GgE7f0ayEwz3bGsmcx0VNz8mpH4TWg8Gh6j5tqU+CXiAbYiD/DV2GRV3/fAxZwOOM/2qo2ne9QuWnMLDRa0nzUESLque+xfU9em1bcKzMmR9fPQYP04NX+6XGPUfOU/s45HEPZcuIGHpu9AXLJOIDasWB6zHm4J/+WPAUf/Atx9lR8OlVvD2jB5FQhDDDvBFaUV6s0YZO6fi6yd0+EUlWODyHR0weFh2wDPINONTTArvKAJ3vslAo7OhkNWzoVXsn89ZPV+H+XqZye4lYHHODwqAZ6LH0LQpTVIDG6J8B7fIs3LctqVm4Owdc/A7/Qi/eOETq/Dq+dLFlnKscyrQAjm+yF+bNZuRMbrolAerk749N6m6N+4mJ33LmwD5twHaG0k2b1p5ELAKxjmpnanoTi9/j3UxEVcSnJGWFIc3DzESymYhy2nruPRX3chKVXX0KJlVT9MH90SPque14lfkpGq/IvWCDvB9erVSz9vUihuDQVuYZTzhWO78UDbx4ALW5G+fRqcjv2FG9UG4GqGNxB3E+XdXeDh6gyv8HVI8atr90LFaju47ftW7yklaR7B2Qluo0rm8S0hTBivln4WWVc2qMeeEbtRa1F/hHf7AgmVu8Neia5zL3zOLAUcgKT+X8Or9QOwVSQCbIERYF6Z7jgbjYj4ZAR7u+NCdCLeXHwYqRm6H9owv3LK76uSb4rDqTXA3BFA+k3d47A2wPA/gHKWU8LumxkzsfREEo5lVcEvD7dGt7rmF+aC/fHvsWsYP3uPvqFMh5oB+GlkS3iufxvY9q1uI0cX4MG5QC2diBRMTEIkMlKTEOMagmvxyYiMS0FKciK6L+0C5/QExFfuiaj6I5BQqUuZCiehZDDJjdYWjQxnD9xsMwEeXZ4x7631i7uROX80HGPD9Ysimk7AtZbPA472FSNMz8hUDS7qRKxASKUq8KjbA9aIRICtlBWHruDdv4/gSmxynuvb1fBXzS38PUtwu9LBMac9a80ewLDZgKsnLIlarfvi2PHdan7l4WsigIUyZ9mBK3hm7l6kZ+piAz3rBePb4S3gvuXTHPHLz9LQaSJ+SxOvIDaIRAAnLzck+qcjedcyuKTp6i+Xv7BaTalelRFd7wHcqDMM6R5ilbBULlYcAB+fqfCOO4Gkhg/Atdcb8PK1gCh+WEs4PrYRmYseh+PJFWpR8P5v4HFtF8K7f4V0T4OuqDaIa+xZ1RwkNSMLkQkpqrpNxboj4e5i+xeVEgG2oAgwxe/js/fk29yxa50gTBvd6vYSA478BRxeCNz9Q+GJKmbgZmoGmk9aheS0TNUMY/trPdWtKkEoC+bvCscrCw4gW/tiYJNQfDGsGVx2/giseCVnw8HfAC1GwprhV398vO5WtLe3d8lbIZclcVeQsesXYM9MOCVcMVpFv3BctX6IrjcCiaHtrMqzaIsd3LzD/0VUo0fVd3p0UgrKuTqhVuoJBPr5wK2SBXYApBTa+g2yVr8Nh+xAUZp7oBLBiZU6wRYpf3YZKq9/FpcbP4lDtcahSoAHagV5F72BlpXrNRHAFiKAaXvoNOXffCO/hFdm/73Sw+YF4bhfd2HVkWtwQCZW949HrebdgfLF9DoLQjH5des5vLUkp6rDvS3D8OHQJnA6MBdYPD5nwz4fAB0mwNop1SS40iYjHTi5Euk7fobTmX/hkCtskFCxI84O+N1sw7NXnJKjEbznC32C246e85EQ1BQVfcohzN8DXtbQOezCdmTOfwiO8ZfVwyw44PTgJbgZbJ4KSaVFwMFpCN0+Sf/ZuTxoFiq0uMMm9IU0wrAy6PktSPwSrud2RYLXNf++D2z8GNZGn4YhaOJwGmtcX0KtdY/n3HYWhFJi6vrTRuL3oQ7VMIXiN/o0sOTJnA27vGQT4lfD0dFRTVYHG4/UGwjnUQvh8PReZHR4FpnlaJbQcdWnmWoRnynxnTJLcAvcPxV153VWtZy16g51Tk9H88p+qBda3jrEL6nSFo7j/0NmzZ7qYUTlfrhYrp7tNM7IzEDo1ndQcft7evGbUO8+hDbrZxPitzhYyTvS9mHCm8m2y8zU3a7d8aPuMUs1tRkLa6FX/WB85BCIMAddmbasXb/AofOLKlNcKJ1EyzbV/e3uy4/wR+2z1Sfw9b85bVKf7F4TL/apq7MEBNYC+k0G/nkZaDMO6P46bAVGfN98801YPf7V4dTnXaDHa8g6uhQZO6fDpfVoOGZCdRNzdnRAUEYEaq8br7zCMTXvRqarbdUzNRtZmfA5/RdCdk2Ba8KlWxLcyqsENyu6s6DhGQBHljfcOQ2ONe6GS6yDCkCxMYezFTfO4IUKExF9zv2jX5bQ9gV49XvTLi1DIoAtBIoQk2yXkaaLWB2Yl7PMyso0+Xq4olb1GvjzfBcMd14Lh9R4YNd0oPPz5h6a9RMTji0Hj+OHjWdwPSFVvzjQyxWPdamBDo3rFq98lZWL30lLj2L65rP6ZS/1rYsnu9cy3pCluSo0Aqq0t8sfCavB2Q0OjYfCufFQVKVlLD1T11I3NhneW39DuahDqLT5dYTs+J8Swew2lxzQwNyjtlo8rmxH6I734RG5X7+MndwsKsHtduCdkbbjwLTKcuXTcToiAVdib6Laja3wjT2KyKZP6JJhrcieUnXVGFXujWQ5OCGxzyfwav8I7BXxAFuYB5hf1nn9QfizG1KYBzgtGfjzYeD48uwnOQF3fgs0s746fjO3nMOMv9fgX9cX4eiQBXgGA88eBFyKdqEg5EFMODK+agGnzBzhm5sMR1c4Pb3H5kUwP2+vLzqIuTtzSh+9c0cDPNSxOpCeCjhbYdRKyBP+xKXPeQAup3KiXhpJwS1UKbXY6oOQ5SzfLUXF4+oO1Fx6j9GypCrd4dR3kmUmuJmAtIxMXDp3EhXn9YFragziw7qpmsEZ7iZo1VzKuMSdR/UVo+AWp7vYz3D2RPKQ6fBs0A+2iHiArQyK2rfv0EUjcstb7THX5yt+U+KBOffkiF8nV+C+X61S/JLeDSrgXFYo/snM7rCVGAHsl6SW2yEj8XqB4pdwPbezZfhDxnbimvjlR+qjoU104jf6LPBNK+Do37B12P542bJlajJpK2QLg1YWlxFzgcc2Ir35aGS65LSM94jYg8obnke931ojdNt7cI07Z9axWguxgS0RE9BczSf718fNYX/C45HFNit+CasvVY3bBZdUXRMp74vrVeMMj6s7YdFkZan3uCZ+08oFIW3UMpsVv8VBBLAF0a9RKKaOaKEivYbwMZdzfZ4kRQO/3gmc26R77OIJDJ8P1B8Ea6Wibzk0CfPB9+mDcxZu+UoZ+IWScfiSrn5qYfy9/zISUmxTECWnZeCJOXvw135dhjf9oV/e3xz3ta4MxF8FZt0FxJwH/hgFHMu+mLRRMjMzsWvXLjVx3uYJbQrnO7+C4wvHkTngU6QH5tgfnFNjEXhoGtyu7LrlaS4Jl+B+/WC+E9fbMvSNlmdnsOw7J9cTUhCVlIqIju8gsd8XcJ+wuczaF5sbh+bD4TBqMTKz6027Jl5BjWX3IfDAD7rEc0vEwQGnO3yMFDd/pPjWQuaYNXCvort4sXfEA2xhUOT2bhBS9ASluCvArLuByKM5CW8jFgBhrWDt9G0Ygo8v1sDmjIbo6HQYiD4DHFsKNLjT3EOzSqKTCo7+avy06Sye27QSNYO80KSSDxqH+aiLkQahPqqWp7WSlJqu2olvOqmLcLPW5XcPtkCvBhWyLyLvAm5kRwAD6wBV2sGWYfvjrl276uftBvfycGzzKBxbjwHCdyBj589wPLIYGc7lcCaoF9JjtbbLTvC8ugPV/xkOxwLunGQ6ueHEveuR5lUJNpfgduZvhOxkgttFHIA3rvq3VvXZWS820LMrHB27we6o0Q2O4zchc8EYOJ7frGoGh+74AJ5Xt+Nil8+Qwd9gC4LBjHjnUPjcOReVqtSGs5flWzbsIgK8ceNG3HHHHahYsaK6TbV48WKj9Q899JBabjj162ccto+Ojsbw4cOVz8PX1xdjxoxBQkKC0TYHDhxA586d4e7ujsqVK+Ojjz6CJUOx275mAO5sVkn9X2B2floSkBSlm/cKAR7+xybEL+nbsIL6/4cMg0j2f19Y7pW2hePvUTRf63inv9AcJ3AqIh4L915SnQmHTt2Khm+vQL8vNuKl+fsxa+s57AuPURFVayAuOQ2jp+/Qi99yLk6Y8VBrnfjV7EPaRaRvFWDkIsDDtn8oKHq7deumJrsSwBpMaKzSFk5Df4TDC8fgMGwWmtUMRRV/D6RkZOBybDL8dn9VoPgljhkpKsHIlvC4uh01/7oTVdY9pcQvqbH/IzSu5IOmlX1VYMbRDqvG6CkfCsdRfyGr0ws5iy6sQa3FA1AuYp/ZL1z8j85SkfuYpFQkpqSjbog3KtdrI+LXkiLAiYmJaNq0KR555BEMGTIkz20oeGfMmKF/7OZm3L2M4vfKlStYvXo10tLS8PDDD2PcuHH47bff9GboPn36oFevXvj+++9x8OBBdTyKZW5n9QTU1P1YL3kCuPcXwL8GbIVawd6oEeSJjZFNcDizKho6ngcu7wGuHQZCGpl7eFZHw0pFS968w3m7msKzgvBzen/8kqG76GR3tGNX49U0f7fuR9HFyUF9uTau5KuixPyB5OPb6lZoYm4kpmLU9B04eCnbu+fmjBkPt0arav66xNG5DwKXdJnR8KoAjFoClLfyDHaheHj4w6lGF1AesM08I5w3Ii7D99rWIj3dgdV3rARaNvIT7Fznf3QOyl/acEuCm0vfSajkl+OftnucnOHQ6y2gagdkLhwLx5vR6mKh6qqHcXzYZmQZeM3LCoeMFIRtfAm+pxfD5cImXO/4JRpW8kGoT7kyH4s1YFYB3L9/fzUVBAVvSEjevbiPHj2KFStWYOfOnWjVShf1/PrrrzFgwAB88sknKrI8Z84c1fFo+vTpqu5lw4YNsW/fPnz22We2IYAJxeC4DTZZoqlPgxB8v+E0vk2/Ey/VOI/qg18DguuZe1hWiVMx3x+VHSLxeBs/1KrQCAcvxuLApVicuBavfIAaaRlZOHQpTk2/74DeWlA/tLyRfaJWkJdZ6mfSRjRy2g4cv6Zr+evn4YJZY9qiUSUfXTexBWOAsxt1G/PWJS8mbegisrDqCCkpKfrvWatohVxGeLg6wyPAG5ktHwJ2TSt0e6c03ftLI+DQdATt/xaZLl7IdPFERvb/ma7eyOD/2Y9TvcMQU9u4moJLPJMzs5Dp4q22yWJCs4mgwK0zv5uKWheFZP96yOr9PjzsxONbImr30lki5j8Mx4s7cKTFO4hNc4afS9kOwzElFlXXjIPXFd1FW9DFVWiG4/D10dmcBCv0AK9fvx7BwcHw8/NDjx498P777yMgQNfxZ+vWrSqSq4lfwkgvOxtt374dd999t9qmS5cuRm0++/btiylTpuDGjRtqv3nBHwbtx0GLJFsEZzYAB/4ABn8FOBrctrTRHy/aICiAl2e2Q7LzYEwX8Vv6dHsNCN8OnFmPCh1GYEQQq6rqSLl2Eml/jsXhgD5YltkOW6864VRkgpErJTU9E/vDY9SkQctBw4rl9YKYEeMagZ6lehv1UsxNDP9pG85FJanHLGI/+9G2qFPBW9cs5q8JOk+5ljhK73yFhrAXeMeM34NW2Qq5LCjnB8cWI4skgCOSnRATe1NV7OFHwSM2Ai43IwFOBZAQ0ARXq90NR2XxY0USB9RY/ww8r+Uk42U6umaLZ68cIe3ihRu1hiC21l05O8tMh//xuUbbZLh6GYlwp5tRRRK/ae5+SO32NjzbjDL+nRHyxicMjg8vR9bJVQgO7YG4iARcjbuJIC/3MmkwxAubaitGwT3mpHqc4eSO5Dt/gm89Eb9WK4Bpf6A1onr16jh9+jRee+01FTGmqKVn7erVq0ocG+Ls7Ax/f3+1jvB/Pt+QChUq6NflJ4AnT56Md999FxbFsWXA/IcBfoHx23Lw1zYrfDWahvmiQnk3XItLwX+nritDv9W01LQ04i4j3cEVzlkFeBqd3YBmDwLdXtElhuXywbodWwS3yL1oy4lF4Kt3RUrnIThUvgv2RmQqmwGjxWeuJxo972ZaBnadv6EmDf4dKYopiJuE6SwU9F+aIhJ59noiRkzbrkQwqeRbDnMebYtqgZ66DSIOA4cW6OYZYXvgN5vxzgtlT92wIKRV8FOtl3mHxPOyH9K9KsIhLRGOqQkqUSov0ly8VHImLyAzkKV6FtVMNo4m04PsmJIKpOR8dsh1/xaq0QdFM+/uuKTeQKXNrxU4zqxbimzmjdP9v8GzWocibStk4+QCh3oDEZp9B4E5FBTBLQ68h7TAhqrxSmn8XrtHHUa1laPhkhShHqe5ByD9vt/gWcO2k3hNgUUrifvvv18/37hxYzRp0gQ1a9ZUUeGePXV9uksLRkSef/55owgwE+jMxv65wOInAO2LlLVa6Tuz8YL9jBDSBjFr23kVWdxwPBIDm4Tqbl+n3wTcvM09ROsg/iqyljyJqCwvfJo6FEdRDT+NaoWQ8rmK/3sE5DTByCsJ7OrBnHn+Wp9ZB7cz69DSyQ0t6/QBGt8DDO2LuAxnHLoUiwMXdYL4wKUYhEfrxKgGL2a2n41Wk0Z5d2clhlWkONtCQfFamCg2bO2ckpaJj1Ye03e6Y6SZkV+W1tMT0lhXKnDeKOCub1Vmt73h4uKCN954Q83zrplwe90r4W2Qn9L7Zd1EqG7Tk3XJlpxSE5CVEo/M5Hh4uXqjbeUA9f6leOaNCed6/ZASU19t55C9vRLRaQlw4Hx2BNfZo7yqypKekaXsLFkphd+ldMizzdKtOLqK1/d28CnnomxW0ZumI/jEb8AJqCoRlzp9aNI23F4XN6DK2vFwStMFHFLKV1N3ssoF5+pmKVifAM5NjRo1EBgYiFOnTikBTG9wRITuqkeDBd1ZGULzDfP/a9euGW2jPc7PW6x54nIn3JU6MeE5FR0MObQQ2PJlzuPG9wF3faeuOO0BlkOjACZrD57HwJRlwJavgdp9gAEfm3t4lg9/gJdMgMPNaPDeR1en/Uio9wBC6rUs/r6GzQKuHQEO/Qkc/FNXM5fwR5nNIzi5eqN8j9fRod3j6FAz0CgZTUWIlTCOUcKYmfaGxCWnq0g/Jw0mJTG5zjBSXMFAuK84dEVVqriSa1+kXoi38vwGGYoTDYreZ/erW932CC8q7LL6Q1nDizeXcrrJS3fHkpdzTtnTLd/i/d8reH8MfKTEo7KzGyq7eirxS1t+5k0npA38ClkpCchi+/iUBIDRZM6nJuiEdMI1uNw4VWovVcjBzdkJIek5NaJ9z/wF9+uHEN5zKpID6t/2/v1O/IFKm17R3124WaElXEbMg7O3rkaxYGMC+OLFi4iKikJoqK4hRPv27RETE4Pdu3ejZUvdj/m///6rirq3bdtWv83rr7+u/G6MeBBWjKhbt26+9gezQPH7TUsgvRB/VpP7gbum6vqU2wlta/iryCDF0Y4TF5F17k04sPzbnllA11cBT50nXMiHXT8Dp1ar2YgsX7yR9gimdbqNRK8KDYAKbwE93gQu7tKJYV6ksVsf4Q8uI8mGZGaqBLQudYLUpBEZn6IixfuzBfH+i7Gq0L4h0Ymp2HAiUk0a9PNSCLu7OGHpgSv5DnVs5+o54jfyOBBU13gDOxW/QhHh+5i2oIK+l7k+9/u9NGHgw+DujLqQcQCcPP2A1qMLfu7lfcCP4gstKxx6vwNUao6sxU/CITUe7nFnUPOvwbjcYRJu1BlWcktEdo1mTfwm1uiPcsOmw9FNIvfFwSGLl49mgvV6Gc0lzZs3V5UZunfvrjy8nOjBHTp0qIrU0gP88ssvIz4+XpUy06Kz9AQzossSZ1oZNCbFaWXQ2AuaYpel0F555RUcOnRIlUH7/PPPi1UFoqi9pUtMUb+Yxq0HKtpfFxe2rl20V3c1/V+TFQg78atuBQVw94nmHZwlc/0U8H0nnV2EtbVTX0ZsWDcseqKjaY9DS8q5jcDBBcCpNcBTuwE3g1t9J1YBy18AGg0FGt+bb7IZv47o91YR4mwLBedvJBW/zJRDdhfF/17pAadjfwPzRwNdX9FNNu6dLwoZGRlYu3atmucdNYkGF/POXF62IUunyL8zG4CKzcpiRPZB9Blk/vEQHK/u1y9iEuOljv8rcbm0mBtRaLb2QThU6wjPO6bAwcmq4pmlSlH1mlnPGFtwUvBqaJ7b0aNHY+rUqaqBxcyZM1WUlyXNKGInTZpkZE1gmbMJEyaoL3D62CiYv/rqK/16noRVq1bhySefVFFiWijeeustKy6BZp8/3KwGoQng35wG42WHOTo/9I4fgI5PA67ZyU2C8a3ShWP14ndWei+sz2yGbzoZJ4WaBH751uyhm9iuOnfmOKPEMReA/z7XTcENdH5hCmK/akbRLIrWEJ8Q9GkYohfFTGbTIsQHL8UoYRyfXHC7Zl7Z0xZxfMtfaLDuUZ1nef1knfiufwfsHQpgJhQTu22GURQobq1F4AqWiX8NOI5ZhayVr8GBd+RoYTi1EOWuH8SFnlOR4lenyLvi92FEfArc3b2RPHIZgvz95YLeGiPA1oTlRIDt88qcmdLN31uNlPRMdUt7R715cDj4h25lvylAu/HmHqLlsW4ysOFDNXsmMwQDU/8Hf18/bHipW9nX5P1jFHB0aU4SpyFhbXRR4YZ36T2ShcGvren/ncWkZdnd2/KhhcMJ/OExBc4Z2Ql4TR8E7vzWrixE+SERYDukKFY7Wjom7BbRX1oc/BNZfz2tKoSQG1X64mKfnwp8inPiVVXhI7z9B7iY6auS7JjfoJIvBeuMAAtCUWFZGXpHVx+5pnyjR2s8hAaaAN76DdB6jN0kBRYJenM36hIEM+CE59KewE244+GO1czSkAL3/QokRAJHFgMH5+vqDOvHukM3rXgFGPCJ7m9ZCIwUN6joU+A29RwuYIbrRznit94gXelAEb8KCl7eVRPsCIpailtbsXRYI43vgUNoU2T+MQoZidHY2/QduN1MQ0BGRJ4d+lzjzqPilrfgknwdlWMvInXQH6hdKVDKgZoAOYOC1dCnQQUlgMniK/5oUKu3LrkrNhw4vAhocp+5h2gZpCYBC8fpo63fZtyN/Vm11Bfmfa3N+MPmFQS0GaubbpzX1eFlJQnW5CW0KOT2t6cmAqw3zAz6XLSp7o9QH3dcjU2+pbhTVYermOU6GT4OuiYYrFeMoT/rrBqCYM+IpcP8BNaG49h/gejzqO1SBZfOnUDtpb3hlJlacM3ftBg08EmDm4hfkyChEMFq6FW/gr6rzsrDV5HV8ZmclZu/1JX7EnRisd3jgLM7rno3xJdpd6rFw1pXRnl3C4mS+1UFOj8PPLEFeHwr0PkFoEb3WwXw7l+Aj2sDix4HTq3VJdtlw/fC5J6+aOhwFo0czqr/OXVx2I8/XN9DkEOsbsNKrYD7fwNcctU8tnNoI6ENgpM44QShjHEpB8cK9VDZ3wMNfNMKFb/E4a5v4SY1fk2GXEYIVoOfpyvaVPPH1jNROB+VhBPunVGX4ubSLuDaIV31gdrSs14lRLQZi9QqnTD+p13KAsHrhoc65CSbWRRaWbW8YISYZdX2/6abPIOAhnfrPMPeIei2qj+6uRVUOtABuOML44oUgoJVc9jxkkgrZEEwH0UNTLh45dRVF24fiQBbWr3JgijrepMWWg1CYyXtEIwCs5Vti1FAQE2zjs3SWHLRC/sSdfVC+zcKVZEGq6tiEVwfcDNIYkiMBHb8CPzcG5jWu/C62TRHsCqFIAiCIBggEWBLQZITikTvhiF45+8jehvE090HAc8eVNFAu4a3sNmmOLRJ9sMs/PzfWf3qMZ1LofRZacOkRnY8HPgZcHKVLnnuxEpd1zmScNXcI7Rq2BiItdG1eUEQBHtCBLAlIckJhVLJt5xqi8smCYcvxyE8JhmV/e1c/JJ9vwFLngDaPQH0fBubzyXg2NV4tapFFV+0qGLFHc/o3W0wWDclxwLHlunE8Ol12dV+hZLAShru7uKLFgTBPhELhGDVNgitKoRdc+Mc8I8ukodt3wHnNmHaf2f0qx/tfBttjy0Ndx+g2YPAyEW6SRAEQRBKgAhgwerom90hTLNBGJXM2v6DrgGEvUB/66LxukQx0mwETpZvh/XHI9XDML9yqnycTVLOiqPaFgCrP6xfv15NnBcEQbAnxAIhWB21gr1QI9ATZ64nYue5aEQlpCDAwxmY2kEXDWVSXKuH7cMXvOUr4IKunS18qwL9P8T0ZTne34c7VjdP4wvB4qHo3bBhg5rv0KGDdIITBHMnwRfWoc/Ok+BNjQhgwSq9i70bVsAPG84gMwtYezRC1+ChwZ26esAZqcC2qUDvd2HTXNkP/PtB9gMH4O4fEJXmigV7Lqkl3mx80SrMrEMULBdHR0e0atVKPy8IgpmQJHizIAJYsFobBAWwZoNQArjt4zrhSwG8a7quuYJ7/n3ArZq0ZF23t8w03eNOzwJV22P2mpNITc9Ui+5vUxneltL4ojSQqMlt4ezsjIEDB5p7GIIgEEmCL3NEAAtWSbMwXwR7uyEiPgWbTl1HYko6PMuHAk2GAXtnASlxwO4ZujrBtsja94DIY7r5kMZAt9eQnJaBWdvO6bukjbbUxhemQqImgiAIQgmR+16CVeLo6IA+2dUgGPHccEKX9KUTvLp2ydj6XREaJVghZ9YD277VzTu5AUN+Apxd8de+y7ieoGun2b9RCML8rKzxRUmguK3YLP9JxK8gCIKQByKABduqBhFYG6g3MKdRwoE/YHP4VAbYApr0ekd1S2PjC5stfSaUCqmpqZg0aZKaOC8IgmBPiAAWrJa21QPg7a5z8fx7LELvfUXHZ3M2YlJcZvZyW4Etnx9ZCdw1FWg7Xi3adPI6TlxLUPOtqvqhWWVfMw9SsAYyMzPVJAiCYG+IABasFldnR/SsF6zm45PTsfVMthe0cmugakfdfNRJ4Phy2BxOzrqGENnZ+9MM2h4/ao1tj4Uyh+2Pn3vuOTVJK2RBEOwNEcCCzdggVhk2xdCS3+iRjTkPqychEkhNynPV8avx2Jjtga7sXw69G9hB/WPBJOUEy5cvrybOC4Ig2BMigAWrpmvdILg5O+rbImeyMDCp3Qfo+z/guUNA+ydh1fAW9YIxwA+dgUu7b1k93SD6+0jH6qoChCAIgiAI+SMCWLBqPFyd0bl2kJpnSbS94TG6FYxoUfh66SwSVs2OH4CzG4CoU8D8h4CM7Nq/ACLjU7BoX3bjC3dn3NtKqh4IRe8Et3nzZjVJK2RBEOwNEcCC1aOVQ7vFBmELRBwDVr+d83jw14BTjl9z9rbz+uS/B9tUgZeblPYWigZF75o1a9QkAlgQBHtDBLBg9fSqXwHaXX+WQ2NJsFtIiQdOroFVkZ4KLHwUyMiuZdzuCaBGN/1qNr6gALabxheCSWH746ZNm6pJWiELgmBvSLhIsHr8PV3Rpro/tp2JxrmoJJyMSECdCt7GpdA2fQqkJgJP77Oe5gjrJwNXD+rmg+oBPd8yWr147yVEJerqtw5sHIqKvuXMMUrBilsh33XXXeYehiAIglmQy37B9ppiHMplg0hJAJJjgcx0YNtUWAXntwKbv9DNO7oAQ34EXHIErq7xhZQ+EwRBEISSIAJYsAl6N8jxAa88kksAt30McHbXze/+BUiKhkWTHAcsegzIym5Q0P01ILSp0SZs/XwqQtf4ok01fzQJk8YXgiAIglBURAALNkGYnwcaVSqv5g9disPFGwY1cz0DgeYjdPNpicDOn2HRrJyYU7u4crucmsYG/GwQ/R0j0V+hBLD98YcffqgmaYUsCIK9IQJYsBn6GjSAYE1gI9pPAByy3+7bvwfSbsIiYQJfQG2d7cHVCxjyA+DoZLTJsatxqvUxqRrgoZIABaEkpKSkqEkQBMHeEAEs2Ax9Gxn4gHOXQ/OvDjS8WzefdB3YNwcWCesXd3oWGPsvcPcPgN+tlR1+3iSNL4Tbh+2PJ0yYoCZphSwIgr0hAliwGWoHe6F6oKea33E2GtHZFRL0GFoJtnwNZKTDYgltAtQfdMviiPhkLNl3Wc2Xd3fGPS3DzDA4wRZg++OAgAA1SStkQRDsDRHAgs3AH/E+2clw7Ii85mguGwQTyWp0183fOAccXQKLoYiJebO3nkdqRnbji7ZV4SmNLwRBEASh2IgAFmyKPgbl0PLsCkd7gcaOn2ARRJ0GvmwKrJ1k1OY4N2x8MSu78YWzanxRtQwHKdga7P62Y8cONUknOEEQ7A0JHwk2RfPKvgj2dkNEfAo2nryOxJR04yhp9a5ArV5AWGug9ViYHdowFo4DUuKATZ/oav12eTHPTRfuuYQbSTqBPKhJKEJ9pPGFUHIoev/55x8136xZMzg5GSdbCoIg2DIigAWbwtHRQdUEnrP9AlLTM7HxRCT6Nw7N2YBexxELYDH89xlwaZdu3r8G0O7xPDfLzMzCz/+d0T8e06lGWY1QsFHY/rhBgwb6eUEQBHtCvvUE2+4Kl5cNwlK4tBtY/6Fu3sEJGPIT4KpL4ssNG1+cjkxU822r+6NxmE9ZjlSw0VbI9957r5o4LwiCYE+IABZsjnY1AuDtrvtBX3ssQkWCCyQtGWVOapLO+pCV7b3s8hIQ1irfzacZRH8f7SzRX0EQBEG4HUQACzaHq7MjetQLVvPxyenYdiYq7w3jrwKr3wI+rQtE5wjMMoHHjTqlm6/YIl/fLzlyOQ6bT+leQ7UAD/TMfm2CIAiCIJQMEcCCzdsgVh3Jxwaxdzaw+UsgOQbY8k3ZDe7kGmBndgUK53LAkB8Bp/wbERi1Pe5UXfmcBeF2SUtLw2effaYmzguCINgTIoAFm6RrnSAVCSarDl9TSWS30HqMrt0wYWe4hMiyqfe75Imcx33fBwJr57t5RFwy/tp/Sc37lHPBUGl8IZiIrKwsxMfHq4nzgiAI9oQIYMEmYemzzrUC1TxLou27GHPrRuX8gJYP6ebTk4Ht35f+wBht9sq2MNTqDbQaU+Dmv249j7QMnTgZ3rYKPFwlWUkwDUx8e+yxx9QkSXCCINgbIoAF+64G0e4JwDHbfkBbQkpC6Q6Kpc4eXQt0fRW48xtdWbZ8uJmagdnbdY0vXJzY+KJa6Y5NsCtY+iwkJERNUgZNEAR7Q771BJulZ/1gaHZZ2iDyvM3rUwlocp9uPjkW2DOz9Afm7AZ0nwh45wj0vFiw5yJishtf3NGkIiqUdy/9sQmCIAiCHSACWLBZArzc0Lqav5o/ez0RpyLyie52eDpnfuu3QHqqaQeSmQGkpxTvKZlZmG6Q/PZIp+qmHZNg97AT3L59+9QkrZAFQbA3RAALNk2RbBDB9YA6/XXzcZeAQybuFLfla+DH7sC1w0V+yrrjEThzXdf4on2NADSqJI0vBNNC0btkyRI1iQAWBMHeEAEs2DRsi6yx8vC1/Dfs9GzOPEujZRbSPKOoXD0I/Ps+EHEY+KknEF/AGAyYtikn+vtoZ4n+CqaHvt/atWurSTzAgiDYG5L6K9g0lf090LBieRy+HIeDl2JxKeYmKvmWu3XDKu2Ayu2A6NNA43uAzDTA0e32Ds4OcwvG6vZF2o4DvHMEeX4cuhSLrdnNO2oEeqJ7XWl8IZgeVn548MEHzT0MQRAEsyACWLALGwQFMFl1+Coe7phPRJUNKViizCUPgVwS/p0ERB7VzVdoBHR/vUhPy+39lcYXgiAIgmBazHrfa+PGjbjjjjtQsWJFODg4YPHixfluO378eLXNF198YbQ8Ojoaw4cPR/ny5eHr64sxY8YgIcE42enAgQPo3Lkz3N3dUblyZXz00Uel9poEC+8KV5ANwq+q6cTvmQ3A1uzuck6uOnHN6g+FcDWWjS8uq3lfDxcMbSGNLwRBEATBpgRwYmIimjZtim+//bbA7RYtWoRt27YpoZwbit/Dhw9j9erVWLp0qRLV48aN06+Pi4tDnz59ULVqVezevRsff/wx3nnnHfz444+l8poEy6NOBS9UC/BQ8zvOReNGoomrPOTmZgyw2KDbW8+3gQoNi/TUX7eeQ3p217oRbauinKtTaY1SsHPY/vjrr79Wk7RCFgTB3jCrBaJ///5qKohLly7hqaeewsqVKzFw4ECjdUePHsWKFSuwc+dOtGrVSi3jl/mAAQPwySefKME8Z84cpKamYvr06XB1dUXDhg1V2Z/PPvvMSCjnJiUlRU2GQlqwTnjnoE/DEPy48QwyMrOw5ug13NuqcsFPir0IbP1O1ykuqE7xDrj8JSDuom6+Wmdds40ikJSajjnbL+gbX4xqX7V4xxWEYsC62LyDps0LgiDYExad+puZmYmRI0fipZdeUsI1N1u3blW2B038kl69eqmM5u3bt+u36dKlixK/Gn379sXx48dx48aNfI89efJk+Pj46CdaJwTrpW/DIlaDICdXA182BbZ9C2z5sngHYgm1g3/o5t18gLumMt2+SE9dsPsiYm/qInGDm1ZCsDS+EEo5Ce7hhx9Wk7RCFgTB3rBoATxlyhT1xfz00waNCgy4evUqgoONM+S5vb+/v1qnbVOhgnHmvfZY2yYvJk6ciNjYWP0UHh5uglckmIvmlf0Q5K3z4G46GamirflSuS3g4qmb3z8PiNN5cotE7CXAIdu2MPATwLdykRtf/GyQ/DZGGl8IpQwDBVWqVFGTlEETBMHesNhvPfp1v/zyS/zyyy/qFnZZ4+bmphLrDCfBemElBa0mcEp6JjaeiMx/Y/fyQOsxunmWMNs2tegH6vg08MhKoMNTQON7i/y0tccicC4qSbeLWgFoUFHeb4IgCIJgdwJ406ZNiIiIUNEJRnU5nT9/Hi+88AKqVaumtgkJCVHbGJKenq58bVynbXPtmvEtb+2xto1gj13hCrFBtB0POGVXbdg1Q5fYVlQqtwb6vE/zcZGfMm3TGf28RH+FsrKYMYGYE+cFQRDsCYsVwPT+snyZ1queE5Pa6AdmQhxp3749YmJiVLRY499//1Vf5m3bttVvw8oQhlnOrBhRt25d+Pn5meGVCeaCLYW93XRex7VHryEto4AffTasaPaAbj41Htg1Pf9tM2+vjezBi7HYflaXjFQjyBPd6kjjC6H0YbDgzz//VBPnBUEQ7AmzCmDW69XELTl79qyav3DhAgICAtCoUSOjycXFRUVtKV5J/fr10a9fP4wdOxY7duzA5s2bMWHCBNx///36kmnsdMQEONYHZqRj3rx5ylrx/PPPm/OlC2bA1dkR3evpxGVccjq2ZXdby5cO9J5nR3Fpg2Bnt9ykpwLT+wKbPi2xEP75P+PorzS+EMoCWstYHpKTOWxmgiAIdiuAd+3ahebNm6uJUJRy/q233iryPljmrF69eujZs6cqf9apUyejGr+s4LBq1Solrlu2bKksFNx/QSXQBNulyE0xSEBNoMFg3XxiBHBg7q3bbJgCXNwJrH0P+CvvZM2CuBJ7E0sPXFHzfh4uGNJcGl8IZQMDCg899JCaOC8IgmBPOGRJAcgiwTrAFNOsCCEJcdZLQko6WkxajdT0TFQo74atr/YsOOJ6aTfwUw/dvH9NYMJOwDG7ysOF7cCMfkBWJuDoDDy6FqjYrFjj+fCfY/h+w2k1/1SPWnihj+7uhiAIgiAIpafXLNYDLAilgZebMzrVClTz1+JSsP9iIcltlVrqmlmQ1ETgxjndfEoCsGicTvySbhOLLX4TU9Lx2/bzat7VyREjpfGFIAiCIJQJIoAFu6NYTTFI67FAl5eBYbOBlHjg8j6d+NXEcGgzoOOzxR7Hn7svKi8yGdysIoK9pfGFUHYwMfj7779Xk7RCFgTB3pD2P4Ld0at+BTg6HERmFn3AV/FKv7r5JwHFhAOLxgLpKcDGj/LeJuIIEH+lyE0vCFsyT98sjS8E80H3m1YSUpxwgiDYGyKABbsjwMsNrar5Y8fZaJy5nojTkQmoFeyd98ZJUTrxWxAZqbrtiiGA1xy9hvPZjS9oyagfKr5yoWxhbfURI0bo5wVBEOwJsUAIdkmxmmKUAj9vMoj+dpbor1D2sP1xzZo11SStkAVBsDfkW0+wS/pkt0UmKw9fLdNj7w+PwY5zusYXtYK90LV2UJkeXxAEQRDsHRHAgl1S2d8DDbJtBwcuxuJyzM0yO/bP/xl7f6XxhWAO2DHzxIkTapJWyIIg2BsigAW7xbgpRtlEgSm0lx3UNb7w93TF3c0rlclxBSE3bH/8+++/q0laIQuCYG+IABbslr6NcmwQq46UjQ945pZzqgIEGdGuKtxdsptqCEIZw8onbBnPSVohC4Jgb0jqr2C31K3gjaoBHqoaw/az0biRmAo/T9dS7UL3244LOY0v2knjC8F8sP3x2LFjzT0MQRAEsyARYMFuYdRLS4ZjVHbtsYhbN/IIAJzdCt4R13O7Qpi/Kxzx2Y0v7mpeEUHehexXEARBEIRSQSLAAuzdB/xTdkkyVoO4p2WY8Qas7Ttht67Ob35Q/BZSA/jWxhc1bnPkgiAIgiCUFBHAgl3TooofAr3ccD0hBRtPRCIpNR0errk+FhS3xWhykRerj1xFeLSu0kTn2oGoG5JP4w1BKCPY/njWrFlqfuTIkcoSIQiCYC+IBUKwa1iCrHe2DSIlPRMbT1wvleNMM2h88Whnif4K5oftj8PDw9UkrZAFQbA3RAALdk/fhhVKtRza3gs3sOv8DTVfO9gLXWoHmvwYglBc2P542LBhapJWyIIg2BvyrSfYPe1rBsDLzVlVaVhz9BrSMjLh4uRYKo0vHu1cXUpOCRYB2x/Xq1fP3MMQBEEwCxIBFuweN2cndK8XrObjktOx/YyuTbEpuHgjCf8c0kWVAzxdcWczaXwhCIIgCOZGBLAg5LJBsBpEaTS+GNleGl8IlgPbH587d05N0gpZEAR7QwSwIADoVjdYNacgq49cQ2a2aL0d4pPTMHdHuJp3dXZUnd8EwVJg++OZM2eqSVohC4Jgb4gAFgRAeYA71tI1s7gal4wDl2Jve59/7LqI+BSdsBjSvJIqtyYIlgK96EFBQWoSX7ogCPaGJMEJgkFTjHXHI/U2iGaVfUu8r/SMTMwwaHzxSKfqJhmjIJgK1v194oknzD0MQRAEsyARYEHIpleDCnB0MI0PeNWRa7h4Q9f4omudINSpII0vBEEQBMFSEAEsCNnQotCqqr+aPxOZiFMR8SXe17RNZ4xKnwmCIAiCYDmIABYEA/oYVYO4VqJ97D5/A3suxKj5uhW80amWNL4QLLcVMifOC4Ig2BMigAUhlw/4drvCTTdofDFGGl8IFgrbH585c0ZN0gpZEAR7Q5LgBMGAyv4eqB9aHkevxGH/xVhcib2JUJ9yRX5+eDQbX1zRWyrubFaxFEcrCCWH7Y/vvvtu/bwgCII9IRFgQSigKcaqYtogftlyDloJ4VHtq6ouc4Jgqa2QmzRpoibOC4Ig2BPyrScIBdkgjlwtVuOLeTt1jS/cnB0xvG2VUhmfIAiCIAi3hwhgQchFvRBvVPH3UPPbzkQjJim1SM+j+E3QGl+0CEOANL4QLBi2P7506ZKapBWyIAj2hghgQcgFk9b6NNDZIDIys7D2aEQRG1+c0z8e06laqY5REG4Xtj+eNm2amqQVsiAI9oYIYEHIg76NcmwQRWmKwZJpl2J0jS+61w1CrWBpfCFY/oWej4+PmqRSiSAI9oak/gpCHrSo4odAL1dcT0jFxpORuJmagXKu+Se0TfvPsPFFjTIapSDcXivkZ5991tzDEARBMAsSARaEPHBydEDvbBtEclqmEsEFNb7Ym934gv7hDjUDymycgiAIgiAUHxHAgpAPfRoUzQbxc67or9xOFgRBEATLRgSwIORDh1oB8HLTuYSYCJeWkZln44sVh3TiOMjbDXc0DS3zcQpCSWDi29y5c9UkSXCCINgbIoAFIR/YxKJb3SA1H3szDTvORt+yDSs/aI0vRkvjC8GKYOmz48ePq0nKoAmCYG+IABaEIjbFyG2DiFONLy6oeXcXRzzYtmqZj08QSoqTkxMGDRqkJs4LgiDYEyKABaEAGAF2dXLUt0XOysrKaXyxIxyJqRlqfmiLMPh7upptnIJQXCh6W7ZsqSYRwIIg2BsigAWhALzdXZQXmFyNS8aBi7EGjS/O6rd7pFN1s41REARBEITiIQJYEEpgg/jn0FVcjk1W8z3rBaNmkJfZxicIJYF3MyIiItRkeGdDEATBHhABLAiF0Kt+BWiVzSiAKRambcopfTams0R/BesjLS0NU6dOVRPnBUEQ7AkRwIJQCCxv1qqqn5o/HZmI1/7f3r0AVVltARxfIgo+QS0BU/EtokWaj6hJM81HhTljOpqaU03NNDiZpqPpaDWmpmUPhVIbK5v0Nk2ppaWlaT4RwVdihpleRbu+rg8UQw3OnbXqnMsxUOZe4Tun7/+b+YZzvm8DG7cc1lnf2nsv2S27/iyFiI+pKYlN2PgCwalq1ap2AIDbsBUyUAqxtatKxj/P2ON/bM3xne/YuBYbXyAoVa5cWcaMGeN0NwDAEWSAgetYmfUv+Wz70WKvLdh8yK4DAIDgQQAMXENBoUdeXvbjNdvodW0HAACCg6MB8Pr16yUpKUnq1atnt5GXLl3qd/2ll16SuLg4qVatmtSqVUu6d+8u6enpfm1Onz4tgwcPlpo1a0pkZKQ8+eSTcuHCBb82P/zwg9xzzz0SHh4uDRo0kBkzZpTLz4fgp7u//evP1R6Ko2GvXi9ulzggkOn2x4sXL7aDrZABuI2jAXBeXp4kJCRIampqsddbtGghKSkpsnv3btm4caM0atRIevToISdPnvS10eB3z549smrVKlm+fLkF1U8//bTvem5urn1ObGysbNu2TV577TULrOfNm1cuPyOC24nz+Te0HRAodPtjfW3Vg62QAbhNBU+ALACpGeAlS5ZI3759S2yjwWxERISsXr1aunXrJnv37pX4+HjJyMiQ9u3bW5uVK1fKAw88IEeOHLHMsi7xM2HCBDl27JhN+lDjxo2zbPNPP/1U6v55v/e5c+cs2wx3SPvl3zLovS3XbfePp+6UxKasBoHgUVBQYK+dqkOHDuwGB+BvobTxWtDUAF++fNmytvpDadZYpaWlWdmDN/hVWiYREhLiK5XQNp07d/YFv6pnz56SnZ0tZ878Mau/OJcuXbJ/xKIH3Kdj49oSExEuJa3zoOf1urYDgokGvHfeeacdBL8A3CbgA2Ata6hevbrV77755ptW6nDTTTfZNc3q1q1b1699aGio1K5d265520RFRfm18T73tinOtGnTLNj2Hlo7DPepGFJBXkyKt8dXB8He53pd2wEAgOAQ8AFw165dZefOnbJ582bp1auXDBgwwLbuLGsvvPCCpc+9R07Of9d+hbv0ahMj7w5pJ9ER4X7n9bme1+tAsNHqt7Nnz9oRIJVwAFBuAn4jDF0BolmzZnborbrmzZvL/PnzLUCNjo7+SzCss5l1ZQi9pvTj8ePH/dp4n3vbFCcsLMwOQGmQe398tK32oBPe6tb4o+yBzC+ClW5//Pbbb9tjfT0tWiYGAH93AZ8BvprOVtb6XJWYmGjZC13dwWvNmjXWplOnTr42ujJE0b3utYyiZcuWtrQaUFoa7OpEt4dvv8U+Evwi2FWqVMkOAHAbRzPAul7v/v37fc8PHjxo5Q5aw1unTh2ZMmWK9OnTR2JiYuTUqVO2XNrRo0elf//+1r5Vq1ZWFvHUU0/JnDlzLMgdPny4DBw40FaAUI8++qi8/PLLtj7w2LFjJSsry7IeWk8MAG6lGd/x48c73Q0AcF8AnJmZaTW+XqNGjbKPw4YNs4BWlylbsGCBBb8aEOtSPRs2bJDWrVv7PmfhwoUW9OqyaLr6Q79+/WTWrFm+6zqB7dtvv5Xk5GS54447bALdpEmT/NYKBgAAgHsEzDrAgY51gAEAAP4e8VrAT4IDANx4OmH466+/tse6eZAuIQkAbhF0k+AAAP8/nSy8Y8cOO9gKGYDb8JYfAFxId3/zzsFgJzgAbkMADAAupEGvbhMPAG5ECQQAAABchQwwALiQLgB08eJFe1y1alWpUIGNXQC4BxlgAHAh3Tjo9ddft6PoTpkA4AZkgEvJu1yyri8HAMHu8uXLkp+f73td053hACDYeeO0621zwUYYpXTkyBFp0KCB090AAADAdeTk5Ej9+vVLvE4AXEq6Tuavv/4qNWrUoFbuf3g3pm8e9D8ju+gFDsYlcDE2gYlxCVyMTWDKdWBcNKw9f/681KtXT0JCSq70pQSilPQf8VrvJHB9+p+fF6bAw7gELsYmMDEugYuxCUw1y3lcdCvk62ESHAAAAFyFABgAAACuQgCMMhcWFiYvvviifUTgYFwCF2MTmBiXwMXYBKawAB4XJsEBAADAVcgAAwAAwFUIgAEAAOAqBMAAAABwFQJgAAAAuAoBMMrMtGnTpEOHDrZ7Xt26daVv376SnZ3tdLdwlVdffdV2N3zuueec7orrHT16VIYMGSJ16tSRKlWqyK233iqZmZlOd8v1CgoKZOLEidK4cWMbl6ZNm8rkyZNtxymUr/Xr10tSUpLt8qWvW0uXLvW7rmMyadIkiYmJsbHq3r27/Pzzz4711y3WX2Ncrly5ImPHjrXXs2rVqlmbxx57zHbXdRIBMMrMunXrJDk5WbZs2SKrVq2yX4IePXpIXl6e013DnzIyMmTu3Lly2223Od0V1ztz5ozcfffdUqlSJVmxYoX8+OOPMnPmTKlVq5bTXXO96dOny7vvvispKSmyd+9eez5jxgyZPXu2011zHf37kZCQIKmpqcVe13GZNWuWzJkzR9LT0y3g6tmzp+Tn55d7X90k7xrjcvHiRdm+fbu9idSPixcvtmRYnz59xEksg4Zyc/LkScsEa2DcuXNnp7vjehcuXJB27drJO++8I6+88orcfvvt8tZbbzndLdcaN26cbNq0STZs2OB0V3CVhx56SKKiomT+/Pm+c/369bMM48cff+xo39xMM41Lliyxu4tKwxnNLj7//PMyevRoO3fu3Dkbuw8//FAGDhzocI/dOS4lJV86duwohw4dkoYNG4oTyACj3OgLkapdu7bTXYGIZecffPBBu0UI53355ZfSvn176d+/v71RbNu2rbz33ntOdwsictddd8l3330n+/bts+e7du2SjRs3Su/evZ3uGoo4ePCgHDt2zO81LSIiQjp16iRpaWmO9g1/jQc0UI6MjBSnhDr2neEqhYWFVmOqt3jbtGnjdHdc75NPPrFbUfouHIHhwIEDdpt91KhRMn78eBubZ599VipXrizDhg1zunvi9ux8bm6uxMXFScWKFa0meMqUKTJ48GCnu4YiNPhVmvEtSp97r8F5+fn5VhM8aNAgqVmzpmP9IABGuWUbs7KyLGsCZ+Xk5MiIESOsLjs8PNzp7qDIm0TNAE+dOtWeawZYf2e0lpEA2FmffvqpLFy4UBYtWiStW7eWnTt32ht6vd3O2AClp3OBBgwYYOUq+obfSZRAoMwNHz5cli9fLmvXrpX69es73R3X27Ztm5w4ccLqf0NDQ+3QumydOKKPNbuF8qez1uPj4/3OtWrVSg4fPuxYn/CHMWPGWBZYa0h1JvvQoUNl5MiRttINAkd0dLR9PH78uN95fe69BueD30OHDlkCxsnsryIARpnRd3ga/Gox/Jo1a2wJITivW7dusnv3bstieQ/NPOrtXH2st3hR/rQ86OplArXmNDY21rE+4b+z2ENC/P9c6u+JZu0ROPRvjAa6Wq/tpaUruhpEYmKio31zuyt/Br+6JN3q1attqUenUQKBMi170FuGX3zxha0F7K3B0kkJOnsaztCxuLoOW5cK0hck6rOdoxlFnWylJRD6h2Lr1q0yb948O+AsXd9Ua351trqWQOzYsUPeeOMNeeKJJ5zumitXr9m/f7/fxDd9466Tq3V8tDRFV7Vp3ry5BcS69JaWqlxrRQKU7bjo3a1HHnnE5p3o3WC9y+iNB/S6znNwhC6DBpQF/e9V3PHBBx843TVcpUuXLp4RI0Y43Q3XW7ZsmadNmzaesLAwT1xcnGfevHlOdwkejyc3N9d+Pxo2bOgJDw/3NGnSxDNhwgTPpUuXnO6a66xdu7bYvyvDhg2z64WFhZ6JEyd6oqKi7PeoW7dunuzsbKe77epxOXjwYInxgH6eU1gHGAAAAK5CDTAAAABchQAYAAAArkIADAAAAFchAAYAAICrEAADAADAVQiAAQAA4CoEwAAAAHAVAmAAAAC4CgEwAKBU7r33XttqFgCCHQEwAASZOXPmSI0aNeT333/3nbtw4YJUqlTJgtSivv/+e6lQoYL88ssvDvQUAAITATAABJmuXbtawJuZmek7t2HDBomOjpb09HTJz8/3nV+7dq00bNhQmjZt6lBvASDwEAADQJBp2bKlxMTEWHbXSx8//PDD0rhxY9myZYvfeQ2YCwsLZdq0aXa9SpUqkpCQIJ999pnf183KypLevXtL9erVJSoqSoYOHSqnTp0qsR9fffWVREREyMKFC8voJwWAskEADABBSINaze566WMtf+jSpYvv/G+//WYZYW2rwe9HH31k5RN79uyRkSNHypAhQ2TdunXW9uzZs3LfffdJ27ZtLbO8cuVKOX78uAwYMKDY779o0SIZNGiQBb+DBw8up58aAG6M0Bv0dQAA5UiDWp2QpnXAGuju2LHDgt8rV65YkKvS0tLk0qVLFhjHx8fL6tWrJTEx0a41adJENm7cKHPnzrXPS0lJseB36tSpvu/x/vvvS4MGDWTfvn3SokUL3/nU1FSZMGGCLFu2zD4XAIINATAABCENavPy8iQjI0POnDljAerNN99sAenjjz9udcBa/qCBrtYLX7x4Ue6//36/r3H58mULetWuXbssc6zlD1fTCXTeAFjLJk6cOCGbNm2SDh06lNNPCwA3FgEwAAShZs2aSf369S1o1QDYm4mtV6+eZW03b95s17SsQQNgb83uLbfc4vd1wsLC7KO2SUpKkunTp//le2m9sZcGzNu3b7fscPv27W2FCQAINgTAABDEZRCa5dUAeMyYMb7znTt3lhUrVsjWrVvlmWeesfIHDXQPHz5cYslCu3bt5PPPP5dGjRpJaGjJfxp0NYmZM2daBrpixYpWOgEAwYZJcAAQxAGw1vHu3LnTL7DVx1rbqyUO2kbXDB49erRNfFuwYIGVNGgWd/bs2fZcJScny+nTp21im5ZVaJtvvvnGyikKCgr8vq+WQ2h2WQNmNsYAEIzIAANAkNLgVifAxcXF2bJlRQPg8+fP+5ZLU5MnT7YaYV0N4sCBAxIZGWlZ3/Hjx/tKJ7Sud+zYsdKjRw+bPBcbGyu9evWSkJC/5kr0a69Zs8aXCdasMAAEiwoej8fjdCcAAACA8kIJBAAAAFyFABgAAACuQgAMAAAAVyEABgAAgKsQAAMAAMBVCIABAADgKgTAAAAAcBUCYAAAALgKATAAAABchQAYAAAArkIADAAAAHGT/wDyoy43GiDvMwAAAABJRU5ErkJggg==",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Treated mean vs synthetic counterfactual over time.\n",
"# We construct the synthetic by re-weighting control markets with the unit\n",
"# weights, then apply an intercept correction so the pre-period means match\n",
"# (this approximates the SDiD time-weight correction visually).\n",
"weight_lookup = dict(zip(unit_weights[\"unit\"].tolist(), unit_weights[\"weight\"].tolist()))\n",
"\n",
"weeks = sorted(set(df[\"week\"]))\n",
"treated_by_week = []\n",
"synth_raw = []\n",
"for w in weeks:\n",
" week_rows = df[df[\"week\"] == w]\n",
" treated_by_week.append(float(week_rows[week_rows.treated == 1][\"conversions\"].mean()))\n",
" control_rows = week_rows[week_rows.treated == 0]\n",
" synth_raw.append(sum(\n",
" float(c) * weight_lookup.get(m, 0.0)\n",
" for m, c in zip(control_rows[\"market_id\"], control_rows[\"conversions\"])\n",
" ))\n",
"\n",
"# Intercept correction so pre-period means match\n",
"pre_idx = [i for i, w in enumerate(weeks) if w <= 6]\n",
"shift = (sum(treated_by_week[i] for i in pre_idx) - sum(synth_raw[i] for i in pre_idx)) / len(pre_idx)\n",
"synth_by_week = [s + shift for s in synth_raw]\n",
"\n",
"fig, ax = plt.subplots(figsize=(8, 5))\n",
"ax.plot(weeks, treated_by_week, marker=\"o\", label=\"Treated markets (mean)\", color=\"C0\", linewidth=2)\n",
"ax.plot(weeks, synth_by_week, marker=\"s\", label=\"Synthetic control\", color=\"C1\", linewidth=2, linestyle=\"--\")\n",
"ax.axvline(6.5, color=\"gray\", linestyle=\":\", label=\"Campaign start\")\n",
"post_idx = [i for i, w in enumerate(weeks) if w >= 7]\n",
"ax.fill_between(\n",
" [weeks[i] for i in post_idx],\n",
" [treated_by_week[i] for i in post_idx],\n",
" [synth_by_week[i] for i in post_idx],\n",
" alpha=0.2, color=\"C0\", label=\"Treatment effect\",\n",
")\n",
"ax.set_xlabel(\"Week\")\n",
"ax.set_ylabel(\"Conversions\")\n",
"ax.set_title(\"Treated markets vs synthetic control\")\n",
"ax.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "t18-cell-026",
"metadata": {
"execution": {
"iopub.execute_input": "2026-04-22T21:17:41.399142Z",
"iopub.status.busy": "2026-04-22T21:17:41.399060Z",
"iopub.status.idle": "2026-04-22T21:17:41.401344Z",
"shell.execute_reply": "2026-04-22T21:17:41.401110Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"All drift guards passed.\n"
]
}
],
"source": [
"# Drift guards: tolerance-based asserts that lock the numbers quoted in the\n",
"# Section 3 narrative and the Section 6 stakeholder template. nbmake will fail\n",
"# if generate_factor_data() or SyntheticDiD output drifts outside these ranges,\n",
"# forcing the markdown to be updated before this notebook can pass CI.\n",
"assert 305 <= results.att <= 320, f\"ATT drifted to {results.att:.2f} (expected ~312)\"\n",
"assert results.conf_int[0] > 290, f\"CI lower drifted to {results.conf_int[0]:.2f}\"\n",
"assert results.conf_int[1] < 335, f\"CI upper drifted to {results.conf_int[1]:.2f}\"\n",
"assert results.conf_int[0] <= 300 <= results.conf_int[1], (\n",
" f\"CI ({results.conf_int[0]:.2f}, {results.conf_int[1]:.2f}) does not cover \"\n",
" f\"the true effect of 300 - DGP or estimator drift\"\n",
")\n",
"assert results.pre_treatment_fit < 60, f\"Pre-fit RMSE drifted to {results.pre_treatment_fit:.2f}\"\n",
"print(\"All drift guards passed.\")"
]
},
{
"cell_type": "markdown",
"id": "t18-cell-027",
"metadata": {},
"source": [
"## 5. Inference and Trustworthiness"
]
},
{
"cell_type": "markdown",
"id": "t18-cell-028",
"metadata": {},
"source": "diff-diff's `SyntheticDiD` supports three standard error methods, and the difference between the two paper-based ones is *what gets resampled* per replication:\n\n- **Placebo SE** (default): permutes which control units are pretended to be \"treated\", then **re-estimates both the unit weights and the time weights** (Frank-Wolfe) on each permutation and recomputes SDiD. The standard deviation of those placebo effects is the SE. This is Algorithm 4 in Arkhangelsky et al. (2021) and matches R's `synthdid::vcov(method=\"placebo\")`.\n- **Bootstrap SE**: pairs-bootstrap resampling of all units with replacement, then **re-estimates both the unit weights and the time weights** via Frank-Wolfe on each resampled panel and recomputes SDiD. This is Algorithm 2 step 2 in Arkhangelsky et al. (2021) and matches R's default `synthdid::vcov(method=\"bootstrap\")` behavior (which rebinds `attr(estimate, \"opts\")` so the renormalized ω is only Frank-Wolfe initialization). Expect ~5–30× slower per fit than placebo (panel-size dependent).\n- **Jackknife SE**: deterministic Algorithm 3 — fixed-weight leave-one-out across all units. Faster than bootstrap; mildly anti-conservative on smaller panels.\n\nBoth bootstrap and placebo re-estimate the weights per replication, so each reflects the full uncertainty in the weighting procedure. They differ in *how* they resample: placebo permutes the control-vs-treated assignment, bootstrap draws with replacement. On exchangeable DGPs the two SEs typically track each other; on small panels with non-exchangeable factor structure (like the marketing geo-experiment here), they can differ in magnitude while still agreeing on significance and CI direction.\n\nAll three methods are configured on the `SyntheticDiD` *constructor*, not on `.fit()`. Use placebo by default (it's the library default; R's default is bootstrap); switch to bootstrap if you want a cross-check from a different resampling protocol; switch to jackknife if you need a deterministic, fast alternative."
},
{
"cell_type": "code",
"execution_count": 14,
"id": "t18-cell-029",
"metadata": {
"execution": {
"iopub.execute_input": "2026-04-22T21:17:41.402325Z",
"iopub.status.busy": "2026-04-22T21:17:41.402255Z",
"iopub.status.idle": "2026-04-22T21:17:41.662155Z",
"shell.execute_reply": "2026-04-22T21:17:41.661887Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Method
\n",
"
ATT
\n",
"
SE
\n",
"
CI_low
\n",
"
CI_high
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
Placebo (default)
\n",
"
311.85
\n",
"
7.31
\n",
"
297.52
\n",
"
326.19
\n",
"
\n",
"
\n",
"
1
\n",
"
Bootstrap
\n",
"
311.85
\n",
"
4.44
\n",
"
303.15
\n",
"
320.56
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Method ATT SE CI_low CI_high\n",
"0 Placebo (default) 311.85 7.31 297.52 326.19\n",
"1 Bootstrap 311.85 4.44 303.15 320.56"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Refit with bootstrap SE for comparison. Same n_bootstrap and seed.\n",
"model_boot = SyntheticDiD(variance_method=\"bootstrap\", n_bootstrap=100, seed=42)\n",
"results_boot = model_boot.fit(\n",
" df,\n",
" outcome=\"conversions\",\n",
" treatment=\"treated\",\n",
" unit=\"market_id\",\n",
" time=\"week\",\n",
" post_periods=[7, 8, 9, 10, 11, 12],\n",
")\n",
"\n",
"comparison = pd.DataFrame({\n",
" \"Method\": [\"Placebo (default)\", \"Bootstrap\"],\n",
" \"ATT\": [results.att, results_boot.att],\n",
" \"SE\": [results.se, results_boot.se],\n",
" \"CI_low\": [results.conf_int[0], results_boot.conf_int[0]],\n",
" \"CI_high\": [results.conf_int[1], results_boot.conf_int[1]],\n",
"})\n",
"comparison.round(2)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "t18-cell-030",
"metadata": {
"execution": {
"iopub.execute_input": "2026-04-22T21:17:41.663265Z",
"iopub.status.busy": "2026-04-22T21:17:41.663187Z",
"iopub.status.idle": "2026-04-22T21:17:41.664937Z",
"shell.execute_reply": "2026-04-22T21:17:41.664722Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"============================================================\n",
"Practitioner Guidance — SyntheticDiD\n",
"Baker et al. (2025) 8-Step Workflow\n",
"============================================================\n",
"\n",
"Recommended next steps (7 remaining):\n",
"\n",
" * [HIGH] Step 1: Define target parameter\n",
" Why: State explicitly what causal effect you are estimating (ATT, ATT(g,t), weighted/unweighted) and what policy question it answers.\n",
" >>> # What is the target parameter? ATT? Weighted or unweighted?\n",
"\n",
" * [HIGH] Step 2: State identification assumptions\n",
" Why: Name the parallel trends variant you are invoking (unconditional, conditional, PT-GT-NYT, etc.), the no-anticipation assumption, and any overlap conditions.\n",
" >>> # Which PT variant? No-anticipation? Overlap?\n",
"\n",
" * [HIGH] Step 6: Check pre-treatment fit and weight concentration\n",
" Why: Synthetic DiD relies on pre-treatment fit to construct weights. Poor fit or highly concentrated unit weights suggest the synthetic control may not approximate the counterfactual well.\n",
" >>> print(f'Pre-treatment fit (RMSE): {results.pre_treatment_fit:.4f}')\n",
" >>> concentration = results.get_weight_concentration()\n",
" >>> print(f\"Effective N: {concentration['effective_n']:.1f}\")\n",
" >>> print(f\"Top-5 weight share: {concentration['top_k_share']:.2%}\")\n",
"\n",
" - [MEDIUM] Step 6: In-time placebo\n",
" Why: Re-estimate on shifted fake treatment dates in the pre-period. A credible design yields near-zero placebo ATTs — departures signal that something is being picked up pre-treatment, weakening the causal interpretation.\n",
" >>> placebo_df = results.in_time_placebo()\n",
" >>> print(placebo_df)\n",
"\n",
" - [MEDIUM] Step 6: Leave-one-out influence (jackknife)\n",
" Why: If the estimate is driven by a single unit, robustness is weak. Fit with variance_method='jackknife' and inspect which units move the ATT the most.\n",
" >>> # Requires variance_method='jackknife' AND enough support for LOO\n",
" >>> # (n_treated >= 2 and >= 2 effective-weight controls).\n",
" >>> if getattr(results, '_loo_unit_ids', None) is not None:\n",
" >>> loo_df = results.get_loo_effects_df()\n",
" >>> print(loo_df.head(10))\n",
" >>> else:\n",
" >>> print('LOO not available - re-fit with '\n",
" >>> 'variance_method=\"jackknife\" and ensure >=2 treated units '\n",
" >>> 'with positive effective support.')\n",
"\n",
" - [LOW] Step 6: Regularization sensitivity (zeta_omega)\n",
" Why: The unit-weight regularization is auto-selected from data. Show whether the ATT moves materially across a grid of values to gauge robustness to this choice.\n",
" >>> sens_df = results.sensitivity_to_zeta_omega()\n",
" >>> print(sens_df)\n",
"\n",
" * [HIGH] Step 8: Compare with staggered estimators (CS, SA)\n",
" Why: SyntheticDiD is for few treated units; compare with staggered estimators if applicable. Use TROP only if factor confounding is suspected (different use case).\n",
" >>> from diff_diff import CallawaySantAnna\n",
" >>> cs = CallawaySantAnna()\n",
" >>> cs_result = cs.fit(data, ...)\n",
" >>> print(f'SDiD ATT: {results.att:.4f}, CS ATT: {cs_result.overall_att:.4f}')\n",
"\n",
"============================================================\n",
"\n"
]
}
],
"source": [
"# Automated diagnostic checklist following Baker et al. (2025).\n",
"# practitioner_next_steps prints a formatted summary AND returns a dict;\n",
"# assigning to `_` keeps Jupyter from re-displaying the dict.\n",
"_ = practitioner_next_steps(results)"
]
},
{
"cell_type": "markdown",
"id": "t18-cell-031",
"metadata": {},
"source": [
"**Why no parallel-trends test?** The Baker et al. workflow includes an explicit parallel-trends check (Step 3), but `practitioner_next_steps` skips it for `SyntheticDiD`. The reason isn't that SDiD has no identifying assumptions — it's that the relevant diagnostic is different. Basic DiD requires the *unweighted* control units to be on a parallel trend with the treated, an assumption that's notoriously fragile in geo-experiments where markets respond to different macro forces. SDiD instead reweights both units and time periods so the synthetic control's pre-trend matches the treated pre-trend by construction, then estimates the effect on those weighted comparisons. Identification still rests on assumptions (parallel trends in the *weighted* averages, no anticipation, design plausibility), but the empirical diagnostic shifts from \"are the raw control units parallel?\" to \"is the synthetic match tight enough?\" — which is exactly the pre-treatment fit RMSE we inspected in Section 4. This is what Arkhangelsky et al. (2021) call making the DiD strategy \"more plausible\" by automating the kind of pre-period adjustment that practitioners already do informally with covariates and period selection."
]
},
{
"cell_type": "markdown",
"id": "t18-cell-032",
"metadata": {},
"source": [
"## 6. Communicating Results to Leadership"
]
},
{
"cell_type": "markdown",
"id": "t18-cell-033",
"metadata": {},
"source": [
"A stakeholder-ready summary of the synthetic walkthrough (Sections 3-5 results):\n",
"\n",
"> **Headline.** The pilot campaign lifted weekly conversions in the 5 test markets by approximately **312 per market per week** (95% CI: 298 to 326), or about a **21% lift** on a baseline of ~1,500 conversions per market per week.\n",
">\n",
"> **Sample size and design.** 5 pilot markets, 75 control markets. 12 weeks of weekly data: 6 weeks pre-launch, 6 weeks post-launch. Outcome: weekly conversions per market. Method: Synthetic Difference-in-Differences (Arkhangelsky et al. 2021), the canonical generalization of synthetic control to multi-treated panel settings. The 75 control markets serve as the donor pool that SDiD reweights to construct a counterfactual specific to the 5 pilot markets.\n",
">\n",
"> **Validity evidence.** The synthetic control's pre-treatment fit RMSE is well below the standard deviation of treated pre-period outcomes (the library would warn otherwise), which means the weighted blend of donor markets tracks the treated pre-trend closely. The placebo standard error matches the published Arkhangelsky et al. (2021) method, and we cross-checked with paper-faithful refit bootstrap inference (Section 5) — both methods agree on the point estimate (311.85) and on the result's significance, with bootstrap producing a narrower CI than placebo on this small panel (5 treated × 6 pre-periods, factor-model heterogeneity). The estimate is statistically significant under both inference methods, and the placebo 95% CI cleanly covers the true treatment effect on the synthetic data we used to demonstrate the workflow.\n",
">\n",
"> **What \"312 conversions per market per week\" means in business terms.** Across 5 pilot markets and 6 weeks, that's roughly 9,400 incremental conversions attributable to the campaign in this small pilot. Translate to your own revenue-per-conversion to compare against the pilot's campaign spend, then use the per-market lift estimate to project what a broader rollout would deliver.\n",
">\n",
"> **Practical significance caveat.** A 21% lift is large by marketing benchmarks, but whether the pilot justifies a broader rollout is a business judgment, not a statistical one. The statistics tell you the lift exists in these 5 markets; the business case tells you whether it's worth scaling, and a wider rollout will face its own market-specific surprises that 5 markets can't reveal.\n",
"\n",
"Adapt this template for your own campaign by swapping in your numbers from `results.summary()`, your own market counts, your own pre-period diagnostics, and your own conversion-to-revenue translation. The pattern — **headline → sample size and design → validity evidence → business interpretation → practical significance** — is the part to keep."
]
}
],
"metadata": {
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}