{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Data preprocessing\n", "\n", "In this tutorial, we demonstrate how to prepare the required inputs for training the SVC model, using seqFISH+ data from Eng et al. (2019) as an example.\n", "\n", "Preprocessed datasets used in our project that are ready to use can be downloaded from: [https://drive.google.com/drive/folders/1G4Nl-As6hXsAh7vHaRJ3vkYv44A-mU5f](https://drive.google.com/drive/folders/1G4Nl-As6hXsAh7vHaRJ3vkYv44A-mU5f)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import warnings\n", "warnings.filterwarnings(\"ignore\")\n", "from tqdm import tqdm\n", "import scanpy as sc\n", "from model.utils import *\n", "import natsort\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**load subcellular ST data**\n", "\n", "- `x y`: Cartesian coordinates of a measured transcript within the cell\n", "\n", "- `gene`: Gene name of the transcript \n", "\n", "- `cell`: Cell ID that the transcript belongs to \n", "\n", "- `centerX centerY`: Nuclear center coordinates for the corresponding cell" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " x y gene cell nucleus batch umi centerX \\\n", "0 1217.437557 557.583252 4933401b06rik 5-0 -1 0 1 1003 \n", "1 1096.190309 394.835294 4933401b06rik 5-0 5 0 1 1003 \n", "2 1093.189494 572.832405 4933401b06rik 5-0 -1 0 1 1003 \n", "3 1005.120220 297.196271 4933401b06rik 5-0 -1 0 1 1003 \n", "4 1142.815026 378.376491 4933401b06rik 5-0 -1 0 1 1003 \n", "\n", " centerY type sc_total \n", "0 425 fibroblast 32224 \n", "1 425 fibroblast 32224 \n", "2 425 fibroblast 32224 \n", "3 425 fibroblast 32224 \n", "4 425 fibroblast 32224 \n" ] } ], "source": [ "data_path = './SVC/' \n", "dataset = 'data/seqfish' \n", "data = pd.read_pickle(f\"{data_path}{dataset}/seqfish_data_dict.pkl\")\n", "seqfish_data = data['data_df']\n", "print(seqfish_data.head())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Gene2vec ortholog mapping and gene filtering**\n", "\n", "For mouse data, we mapped the 16,906 Gene2vec genes to mouse orthologs and preserve the common genes." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "common genes: 2659\n" ] } ], "source": [ "ref_gene_names = np.loadtxt(f\"{data_path}/data/gene2vec/convert_mmu_gene2vec_names.txt\", dtype=str).tolist() ## for human data, use gene2vec/gene2vec_names.txt instead\n", "common= list(set(np.array(list(data['gene_list_dict'].values()))[0]).intersection(set(ref_gene_names)))\n", "print(\"common genes:\", len(common))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We then selected the top 1,000 most highly expressed genes for model training and downstream analyses." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cell number: 171\n", "gene number: 1000\n" ] } ], "source": [ "seqfish_data = seqfish_data[seqfish_data.gene.isin(common)]\n", "high_exp_gene = seqfish_data.groupby(['gene']).count()['x'].sort_values(ascending=False)[:1000]\n", "high_exp_gene_id = np.array(high_exp_gene.index)\n", "gene_names = natsort.natsorted(high_exp_gene_id)\n", "seqfish_data = seqfish_data[seqfish_data.gene.isin(gene_names)]\n", "print(\"cell number:\",seqfish_data.cell.unique().shape[0]) \n", "print(\"gene number:\",seqfish_data.gene.unique().shape[0])\n", "# np.savetxt(f\"{data_path}{dataset}/gene_names.txt\", gene_names, fmt='%s')\n", "cell_names = natsort.natsorted(seqfish_data['cell'].unique().tolist())\n", "# np.savetxt(f\"{data_path}{dataset}/cell_names.txt\", cell_names, fmt='%s')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "save the corresponding Gene2Vec vectors" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gene2vec_weight: (16906, 200)\n", "filtered gene2vec_weight: (1000, 200)\n" ] } ], "source": [ "chosen_indices_ref = []\n", "for i in range(len(gene_names)):\n", " if gene_names[i] in ref_gene_names:\n", " index_position = ref_gene_names.index(gene_names[i])\n", " chosen_indices_ref.append(index_position)\n", "gene2vec_weight = np.load(f'{data_path}/data/gene2vec/gene2vec_16906.npy')\n", "print(\"gene2vec_weight:\", gene2vec_weight.shape)\n", "gene2vec_weight_filtered = gene2vec_weight[chosen_indices_ref]\n", "print(\"filtered gene2vec_weight:\", gene2vec_weight_filtered.shape)\n", "# np.save(f\"{data_path}{dataset}/gene2vec_weight_seqfish.npy\", gene2vec_weight_filtered)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**load cell boundary information for each cell**\n", "\n", "- `direction_vec`: the angle of transcript relative to the positive x-axis, with the nuclear center as the origin. \n", "\n", "- `distance_to_center`: Euclidean distance between the cell boundary point and nuclear center" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " cell x y centerX centerY direction_vec distance_to_center\n", "0 0-0 521 496 1079 724 -158.0 602.783543\n", "1 0-0 519 496 1079 724 -158.0 604.635427\n", "2 0-0 517 494 1079 724 -157.5 607.242950\n", "3 0-0 515 494 1079 724 -158.0 609.094410\n", "4 0-0 513 492 1079 724 -157.5 611.702542\n" ] } ], "source": [ "cell_mask_contour = pd.read_pickle(f\"{data_path}{dataset}/cell_mask_contour_preprocessed.pkl\")\n", "print(cell_mask_contour.head())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Conduct cell registration procedure**" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 171/171 [07:26<00:00, 2.61s/it]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " x y gene cell nucleus batch umi centerX centerY \\\n", "10 828.109167 457.736354 Aatf 5-0 -1 0 1 1003 425 \n", "11 1128.101035 488.990636 Aatf 5-0 -1 0 1 1003 425 \n", "12 1039.856556 294.494083 Aatf 5-0 -1 0 1 1003 425 \n", "13 1182.850103 461.492268 Aatf 5-0 -1 0 1 1003 425 \n", "14 891.607843 440.987851 Aatf 5-0 5 0 1 1003 425 \n", "\n", " type sc_total distance_to_center direction_vec ratio \\\n", "10 fibroblast 32224 177.928278 169.5 0.667541 \n", "11 fibroblast 32224 140.517153 27.0 0.425739 \n", "12 fibroblast 32224 135.610472 -74.0 0.802344 \n", "13 fibroblast 32224 183.514973 11.5 0.668383 \n", "14 fibroblast 32224 112.533657 172.0 0.409745 \n", "\n", " angle_radians x_norm y_norm \n", "10 2.958333 -0.656363 0.121650 \n", "11 0.471239 0.379336 0.193281 \n", "12 -1.291544 0.221156 -0.771263 \n", "13 0.200713 0.654965 0.133254 \n", "14 3.001966 -0.405758 0.057026 \n" ] } ], "source": [ "seqfish_data = register_original_data(seqfish_data, cell_mask_contour)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Ignoring fixed x limits to fulfill fixed data aspect with adjustable data limits.\n", "Ignoring fixed y limits to fulfill fixed data aspect with adjustable data limits.\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJNCAYAAADgesaeAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAtABJREFUeJzs3XlYlPX6x/HPAIqCiAsIGNpkoaWGC5amhJpLSirH0silosUsyZOKJ7NVO6ZlufRTbLGSckk7nnTMsMQSJ9I2Sk0rl5Oko6DihooBwvz+4MwccMsFeGDm/bournGGGeYznNPMw/3c3/trstvtdgEAAAAAAAAVyMPoAAAAAAAAAHA/FKUAAAAAAABQ4ShKAQAAAAAAoMJRlAIAAAAAAECFoygFAAAAAACACkdRCgAAAAAAABWOohQAAAAAAAAqHEUpAAAAAAAAVDiKUgAAAAAAAKhwFKUAVLhvvvlGAwcOVEhIiKpXr67g4GANGDBAGzZsuOifMWHCBJlMpst6/tTUVJlMJqWmpl7W4y9Wly5d1KVLl3J9DgAAULUlJSXJZDI5v7y8vBQSEqJ77rlHO3bsKNfnvpxjlV9++UUTJkxQRkZGuWS6Uhx/AVULRSkAFWrWrFnq1KmTbDabpk6dqjVr1ui1117T3r17FRkZqdmzZ1/Uz3n44YcvqYhVUtu2bbVhwwa1bdv2sh4PAABQ1ubNm6cNGzZozZo1evzxx7VixQpFRkbqyJEj5facc+bM0Zw5cy7pMb/88osmTpxYaYtSAKoWL6MDAHAfX3/9tUaNGqXo6GgtW7ZMXl7/ewu655571L9/fz3xxBNq06aNOnXqdM6fkZubKx8fH4WGhio0NPSyctSuXVsdOnS4rMcCAACUh5YtW6pdu3aSirt9CgsL9cILL2j58uV64IEHyuU5mzdvXi4/93I4jvEAuBc6pQBUmClTpshkMumNN94oVZCSJC8vL82ZM0cmk0kvv/yypP8t0fvxxx81YMAA1a1bV9dee22p75WUl5enhIQEBQcHy8fHR1FRUUpPT5fZbFZcXJzzfudavhcXF6datWpp586dio6OVq1atdSoUSMlJCQoLy+v1PNMnDhR7du3V7169VS7dm21bdtW7777rux2exn+tgAAgDtzFKj279/vvO2HH35Qv379VK9ePdWoUUNt2rTRRx99dNZj09LSdMstt6hGjRq66qqr9Nxzz+mdd96RyWQq1eF0rqVub7zxhlq1aqVatWrJz89P119/vZ5++mlJxUsNBw4cKEnq2rWrc8lhUlKS8/Fr1qxRt27dVLt2bfn4+KhTp0764osvSj3HhY7x7Ha75syZo9atW6tmzZqqW7euBgwYoN9//73Uz7Db7Zo6daquvvpq1ahRQ23bttWqVasu7ZcMwHAUpQBUiMLCQq1du1bt2rU7b4dTo0aNFBERoS+//FKFhYXO2++8805dd911+te//qU333zzvM/xwAMPaObMmXrggQdksVh01113qX///jp69OhFZSwoKFC/fv3UrVs3WSwWPfjgg5oxY4ZeeeWVUvfLyMjQ8OHD9dFHH+njjz/WnXfeqZEjR+qf//znRT0PAADAX9m1a5ckqWnTppKktWvXqlOnTjp69KjefPNNWSwWtW7dWrGxsaWKQps3b1aPHj2Um5ur999/X2+++aZ+/PFHvfTSS3/5nIsXL9aIESPUuXNnLVu2TMuXL9fo0aN18uRJSdIdd9yhyZMnS5ISExO1YcMGbdiwQXfccYckacGCBerZs6dq166t999/Xx999JHq1aun22+//azClHTuY7zhw4dr1KhR6t69u5YvX645c+Zo69at6tixY6kC3cSJEzVu3Dj16NFDy5cv12OPPaZhw4Zp27Ztl/HbBmAYOwBUgKysLLsk+z333HPB+8XGxtol2ffv329/4YUX7JLszz///Fn3c3zPYevWrXZJ9nHjxpW634cffmiXZL///vudt61du9Yuyb527Vrnbffff79dkv2jjz4q9fjo6Gh7s2bNzpu3sLDQXlBQYH/xxRft9evXtxcVFTm/17lzZ3vnzp0v+HoBAIB7mzdvnl2S/ZtvvrEXFBTYjx8/bv/ss8/swcHB9qioKHtBQYHdbrfbr7/+enubNm2c1x369OljDwkJsRcWFtrtdrt94MCBdl9fX/vBgwed9yksLLQ3b97cLsm+a9cu5+1nHqs8/vjj9jp16lww77/+9a+zjqPsdrv95MmT9nr16tn79u1b6vbCwkJ7q1at7DfffLPztvMd423YsMEuyT5t2rRSt+/Zs8des2ZN+5NPPmm32+32I0eO2GvUqGHv379/qft9/fXXdkkcfwFVCJ1SACoV+3+XwJVcmnfXXXf95ePWrVsnSbr77rtL3T5gwICzlgqej8lkUt++fUvdFh4erj/++KPUbV9++aW6d+8uf39/eXp6qlq1anr++ed16NAhHThw4KKeCwAAoKQOHTqoWrVq8vPzU69evVS3bl1ZLBZ5eXlp586d+u233zRkyBBJ0unTp51f0dHRyszMdHYIrVu3TrfddpsCAgKcP9vDw+OsY6Rzufnmm3X06FENGjRIFotF2dnZF51//fr1Onz4sO6///5S+YqKitSrVy99//33zo4rhzOP8VauXCmTyaShQ4eW+hnBwcFq1aqVc/TChg0b9Oeffzp/Hw4dO3bU1VdffdGZARiPQecAKkRAQIB8fHycrejnk5GRIR8fH9WrV895W0hIyF/+/EOHDkmSgoKCSt3u5eWl+vXrX1RGHx8f1ahRo9Rt3t7e+vPPP53Xv/vuO/Xs2VNdunTR3LlzFRoaqurVq2v58uV66aWXdOrUqYt6LgAAgJI++OAD3XDDDTp+/LiWLFmit956S4MGDdKqVaucy9bGjh2rsWPHnvPxjgLSoUOHzjoeks4+RjqXe++9V6dPn9bcuXN11113qaioSDfddJMmTZqkHj16XPCxjowDBgw4730OHz4sX19f5/Uzj/H2798vu91+3qxNmjSR9L/jvuDg4LPuc67bAFReFKUAVAhPT0917dpVn332mWw22znnStlsNqWnp6t3797y9PR03n7mQPNzcRSe9u/fr6uuusp5++nTp50HLmVh8eLFqlatmlauXFmqgLV8+fIyew4AAOB+brjhBudw865du6qwsFDvvPOOli5dqhtvvFGSNH78eN15553nfHyzZs0kFR8TlZy95JCVlXVROR544AE98MADOnnypKxWq1544QX16dNH27dvv2AXkqMza9asWefd5fjMYtOZx3gBAQEymUz66quv5O3tfdbjHbc5jvvO9ZqysrJkNpvP/wIBVCoUpQBUmPHjx2vVqlUaMWKEli1bVqrwVFhYqMcee0x2u13jx4+/5J8dFRUlSVqyZInatm3rvH3p0qU6ffr0lYf/L5PJJC8vr1LZT506pfnz55fZcwAAAEydOlX//ve/9fzzz2vLli0KCwvTpk2bnIPGz6dz585KTk5Wdna2s1BUVFSkf/3rX5f0/L6+vurdu7fy8/P1t7/9TVu3btXVV1/tLAyd2R3eqVMn1alTR7/88osef/zxS3ouhz59+ujll1/W3r17L7jcsEOHDqpRo4YWLlxYagng+vXr9ccff1CUAqoQilIAKkynTp00c+ZMjRo1SpGRkXr88cfVuHFj7d69W4mJifr22281c+ZMdezY8ZJ/dosWLTRo0CBNmzZNnp6euu2227R161ZNmzZN/v7+8vAomxF6d9xxh6ZPn67BgwfrkUce0aFDh/Taa6+d82weAADA5apbt67Gjx+vJ598UosWLdJbb72l3r176/bbb1dcXJyuuuoqHT58WL/++qt+/PFHZ9HpmWee0SeffKJu3brpmWeeUc2aNfXmm2865zld6Jho2LBhqlmzpjp16qSQkBBlZWVpypQp8vf310033SRJatmypSTp7bfflp+fn2rUqKFrrrlG9evX16xZs3T//ffr8OHDGjBggBo0aKCDBw9q06ZNOnjwoN54440LvuZOnTrpkUce0QMPPKAffvhBUVFR8vX1VWZmptLS0nTjjTfqscceU926dTV27FhNmjRJDz/8sAYOHKg9e/ZowoQJLN8DqhiKUgAq1MiRI3XTTTdp2rRpSkhI0KFDh1SvXj1FRkYqLS1Nt9xyy2X/7Hnz5ikkJETvvvuuZsyYodatW+ujjz5Sr169VKdOnTLJf9ttt+m9997TK6+8or59++qqq67SsGHD1KBBAz300ENl8hwAAABS8XHT7Nmz9eKLL+rXX3/Vd999p5deekmjRo3SkSNHVL9+fTVv3rxUV1GrVq2UkpKisWPH6r777lPdunV17733qnPnzho3bpz8/f3P+3y33nqrkpKS9NFHH+nIkSMKCAhQZGSkPvjgAwUGBkqSrrnmGs2cOVOvv/66unTposLCQs2bN09xcXEaOnSoGjdurKlTp2r48OE6fvy4GjRooNatWysuLu6iXvNbb72lDh066K233tKcOXNUVFSkhg0bqlOnTrr55pud93vxxRfl6+urOXPmaP78+br++uv15ptv6rXXXru8XzYAQ5jsjq2uAMAFrV+/Xp06ddLChQs1ePBgo+MAAAAYomfPnsrIyND27duNjgIATnRKAXAZKSkp2rBhgyIiIlSzZk1t2rRJL7/8ssLCws47FBQAAMDVjBkzRm3atFGjRo10+PBhLVy4UCkpKXr33XeNjgYApVCUAuAyateurdWrV2vmzJk6fvy4AgIC1Lt3b02ZMqXUTnkAAACurLCwUM8//7yysrJkMpnUvHlzzZ8/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fiUlJSkuLk4ZGRlKTU11fm/dunUaPXq0tm7dqoYNG2rcuHF69NFHL/o5OZ4CyteRI0eUmprq/Nq8ebMkqUmTJuratau6dOmizp07s+FAOTl16pQ2bNjgLAJ+++23KigoUEBAgLNA1bVrV91www3nncUH4PJd7HEGRSkAAIAS3OU4w11eJ1CRduzYoU8++UQrVqxQWlqaCgsLdc011zgLIJ07d1bjxo2NjumWcnNztWHDBq1du1apqan69ttvdfr0aV199dXq16+f+vXrp6ioKFWvXt3oqIBLoCgFAABwGdzlOMNdXidQngoLC/XNN99oxYoVWrFihX777Td5e3ure/fu6tevn3r27Cmz2Wx0TJzDyZMn9dVXX2nlypVasWKF9uzZo9q1a6t3797q27evevfurXr16hkdE6iyKEoBAABcBnc5znCX1wmUtby8PK1atUoWi0UrV65Udna2AgMD1bdvX/Xt21c9evRgB7gqxm63a9OmTc7iYnp6ujw9PXXrrbeqX79+GjBgAMssgUtEUQoAAOAyuMtxhru8TqAsFBUV6auvvtKCBQu0dOlSHT16VM2bN3cu+7r55pvl6elpdEyUkb179zo7qL744gvl5eWpc+fOGjp0qAYMGKA6deoYHRGo9ChKAQAAXAZ3Oc5wl9cJXIktW7Zo4cKFWrhwofbs2SOz2awhQ4ZoyJAhuuGGG4yOhwqQk5OjZcuWaeHChfriiy/k5eWlPn36aOjQoYqOjpa3t7fREYFKiaIUAADAZXCX4wx3eZ3Apdq7d68+/PBDLViwQJs2bVLdunUVGxuroUOHqmPHjuzU5sb27dunxYsXa8GCBfrpp59Up04dDRw4UEOHDlVkZKQ8PDyMjghUGhSlAAAALoO7HGe4y+sELkZRUZG++OILzZkzRytWrFC1atXUr18/DR06VL169WJHNpzll19+cXbR/fHHH2ratKkee+wx3X///apbt67R8QDDXexxBqVcAAAAAG7pyJEjmjFjhq6//nr17NlT//nPfzR79mzt379fH330kfr160dBCufUvHlzvfTSS/r999+VmpqqiIgIPfnkk7rqqqv08MMPKz093eiIQJVAUQoAAACAW0lPT9eDDz6ohg0baty4cbrpppv01VdfadOmTXrsscfk7+9vdERUER4eHurcubMWLVqkPXv26Nlnn9Xq1avVrl07tW/fXu+//75OnTpldEyg0qIoBQAAAMDlFRQUaP78+Wrfvr3atWunL774Qs8//7z27NmjhQsXKjIyknlRuCJBQUF6+umn9fvvv8tisahu3bqKi4tTaGio/vGPf2jPnj1GRwQqHYpSAAAAAFxWbm6uZs2apeuuu0733Xef6tatqxUrVuj333/X+PHjFRQUZHREuBgvLy/169dPn332mbZv364HHnhA77zzjq699lo9+OCD2rZtm9ERgUqDohQAAAAAl3P06FG99NJLMpvNGj16tG699VZt3rxZn332mfr27StPT0+jI8INhIWF6bXXXtPu3bs1ZcoUffbZZ7rhhhs0YMAA5k4BoigFAAAAwIVkZWVp3Lhxaty4sf75z39qwIAB2r59uxYsWKAbb7zR6HhwU35+fkpISNCuXbv01ltvaePGjWrXrp169uyptWvXym63Gx0RMARFKQAAAABV3h9//KHHHntMZrNZb7zxhkaMGKGMjAzNmTNHTZo0MToeIEny9vbWsGHDtG3bNi1evFgHDhzQbbfdpltuuUWffPIJxSm4HYpSAAAAAKqs7OxsjR49Wk2bNtXSpUv13HPPaffu3Xr55ZcVHBxsdDzgnDw9PRUbG6uffvpJycnJqlatmvr166fIyEh99dVXRscDKgxFKQAAAABVzokTJ/Tiiy+qSZMmevfdd/Xss89q165deuaZZ1SnTh2j4wEXxWQyqXfv3rJarVq9erX+/PNPRUVFqU+fPtq8ebPR8YByR1EKAAAAQJWRn5+v2bNn69prr9VLL72khx9+WL///ruee+451apVy+h4wGUxmUzq0aOHvv/+ey1ZskTbtm1T69atde+992rXrl1GxwPKDUUpAAAAAJVeUVGRFi5cqOuvv15PPPGEoqOjtX37dk2fPl0BAQFGxwPKhIeHh+6++2798ssvmjNnjtasWaNmzZrp73//uw4cOGB0PKDMUZQCAAAAUKl9/fXXateunYYOHaobb7xRmzdv1rx583T11VcbHQ0oF9WqVdOjjz6qnTt3auLEifrggw/UpEkTTZkyRXl5eUbHA8oMRSkAAAAAldL+/ft1//33KzIyUp6enkpLS5PFYlGLFi2MjgZUCF9fX40fP17/+c9/NGzYMD333HMKDw/X6tWrjY4GlAmKUgAAAAAqldOnT+v1119X06ZNtXLlSr311lv65ptv1KlTJ6OjAYaoX7++ZsyYoY0bNyo4OFi333677rrrLu3evdvoaMAVoSgFAAAAoNKwWq1q27atRo8ercGDB2v79u165JFH5OnpaXQ0wHAtW7ZUamqqFi1apA0bNuj666/XSy+9xJI+VFkUpQAAAAAYLjMzU0OHDlXnzp3l4+Oj7777Tm+88Ybq169vdDSgUjGZTBo0aJC2bdum+Ph4TZgwQS1bttSqVauMjgZcMopSAAAAAAxjt9s1d+5cXX/99fr888/1zjvvaP369WrXrp3R0YBKzc/PT6+++qo2bdqkRo0aKTo6WnfffbcOHjxodDTgolGUAgAAAGCI3bt3q1evXnrkkUc0YMAAbdu2TQ899JA8PPgzBbhYzZs31xdffKFFixbpyy+/VPPmzfWvf/3L6FjAReHdHgAAAECFcnRHtWzZUr/88otWrVqld999V/Xq1TM6GlAlOZb0bd26VVFRUbr77rvpmkKVQFEKAAAAQIUp2R01cOBAbdmyRb169TI6FuASgoKCtHTpUi1evJiuKVQJFKUAAAAAlLvzdUf5+/sbHQ1wKSaTSbGxsXRNoUqgKAUAAACgXGVmZtIdBVSwc3VNLV++3OhYQCkUpQAAAACUm88//1ytWrXSzz//THcUUMFKdk116tRJ/fv319///nfl5eUZHQ2QRFEKAAAAQDkoKCjQ+PHj1atXL0VERGjjxo10R+HKFBVJK1dKM2YUXxYVGZ2oyggKCtKyZcs0e/ZsvfXWW+rYsaN27NhhdCyAohQAAACAsvXHH3+oc+fOevXVV/XKK6/o008/VYMGDYyOhaouOVmaPl1aurT4MjnZ6ERVislkUnx8vL755hsdP35cbdu21aJFi4yOBTdHUQoAAABAmbFYLGrTpo327t2rr776Sk8++aQ8PPizA2Vgxw4pL09q2bL4kk6fy9KmTRulp6crJiZGQ4YM0cMPP6zc3FyjY8FN8ekAAAAA4Irl5eXpiSee0N/+9jd16dJFGzdu1C233GJ0LLiSsDDJ21vasqX4MizM6ERVlp+fn+bPn6/33ntPixYt0s0336ytW7caHQtuyMvoAAAAAACqNpvNpv79+2vz5s2aNWuW4uPjZTKZjI4FVxMdXXy5Y0dxQcpx3VUUFRUvSSz5+sqxy9BkMumBBx5Q+/btdffdd+umm27SO++8o8GDB5fbcwJnoigFAAAA4LJt2LBB/fv3V/Xq1bV+/XpFREQYHQmuysND6tPH6BTlxzEzKy+vuBNMqpDX27x5c3333Xd69NFHNWTIEP3888+aNGmSPD09y/25AZbvAQAAALgs8+bNU5cuXRQWFqYffviBghRwJQycmeXj46P3339fr732mqZOnaqYmBjl5ORU2PPDfVGUAgAAAHBJTp8+rTFjxujBBx/Ufffdpy+++ILd9YArZfDMLJPJpISEBH366adKS0tThw4dtHPnzgrNAPfD8j0AAAAAF+3IkSOKjY3Vl19+yfwooCxVkplZvXr10rfffqt+/frp5ptv1kcffaTu3bsbkgWu75I7pfbu3auhQ4eqfv368vHxUevWrZWenu78vt1u14QJE9SwYUPVrFlTXbp0OWuKf15enkaOHKmAgAD5+vqqX79+stlsV/5qAAAAAJSbX3/9VTfffLPS09O1evVqPf744xSkgLLimJk1enTxZTkOOf8rzZo107fffqv27durV69e+r//+z/Z7XbD8sB1XdL/y48cOaJOnTqpWrVqWrVqlX755RdNmzZNderUcd5n6tSpmj59umbPnq3vv/9ewcHB6tGjh44fP+68z6hRo7Rs2TItXrxYaWlpOnHihPr06aPCwsIye2EAAAAAys6aNWvUoUMHeXt76/vvv9dtt91mdCQA5ahOnTpauXKlRo8erSeeeELDhw/X6dOnjY4FF2OyX0K586mnntLXX3+tr7766pzft9vtatiwoUaNGqVx48ZJKu6KCgoK0iuvvKLhw4fr2LFjCgwM1Pz58xUbGytJ2rdvnxo1aqTk5GTdfvvtf5kjJydH/v7+OnbsmGrXrn2x8QEAAP6SuxxnuMvrRNlYvHix7rvvPnXv3l1LliyRn5+f0ZEAVKCkpCQNGzZM0dHR+vDDD+Xj42N0JFRyF3uccUmdUitWrFC7du00cOBANWjQQG3atNHcuXOd39+1a5eysrLUs2dP523e3t7q3Lmz1q9fL0lKT09XQUFBqfs0bNhQLVu2dN7nTHl5ecrJySn1BQAAAKD8vf766xo0aJAGDRoki8VCQQpwQ3FxcVqxYoXWrFmjnj176siRI0ZHgou4pKLU77//rjfeeENhYWH6/PPP9eijj+rvf/+7PvjgA0lSVlaWJCkoKKjU44KCgpzfy8rKUvXq1VW3bt3z3udMU6ZMkb+/v/OrUaNGlxIbAAAAwCWy2+0aP368Ro0apSeffFJJSUmqVq2a0bEAGKR379768ssv9dtvv+nWW29lLjTKxCUVpYqKitS2bVtNnjxZbdq00fDhwzVs2DC98cYbpe535rBDu93+lwMQL3Sf8ePH69ixY86vPXv2XEpsAAAAAJfg9OnTeuihh/Tyyy9r+vTpeuWVVxhoDkDt27fX119/rePHj6tjx4769ddfjY6EKu6SilIhISFq3rx5qdtuuOEG7d69W5IUHBwsSWd1PB04cMDZPRUcHKz8/Pyz2v1K3udM3t7eql27dqkvAAAAAGUvNzdX/fv31/z587VgwQKNHj3a6EgAKpFmzZpp/fr18vf3V2RkpL755hujI6EK87qUO3fq1Enbtm0rddv27dt19dVXS5KuueYaBQcHKyUlRW3atJEk5efna926dXrllVckSREREapWrZpSUlJ09913S5IyMzO1ZcsWTZ069YpfEAAAFclqtSoxMVEHDx5UYGCgIiMjlZGRoZiYGElSYmKiJDlvN5vNpb5vsVict53re2f+e9OmTUpKSlJcXJxGjhwpq9V6wZ/heP74+HhFRUVV6O8GQNVz+PBh9enTR5s3b9bKlSsvahMiAO7nqquuktVqVUxMjG677TYtXbpU0dHRRsdCFXRJRanRo0erY8eOmjx5su6++2599913evvtt/X2229LKl62N2rUKE2ePFlhYWEKCwvT5MmT5ePjo8GDB0uS/P399dBDDykhIUH169dXvXr1NHbsWN14443q3r172b9CAADKgKP4c2axR5JSUlKUm5srX19f7dy5U7m5uaW+ZzKZnLf7+PiU+n5ycrLztnN978x/p6amasuWLUpKStLIkSNlsVgu+DMcz18yc3x8vLO4FRkZ6exwjo+Pl6SzXufBgwclSYGBgRS3ABd28OBBde/eXfv27dPatWt10003GR0JQCVWt25dff755xo8eLBiYmK0ZMkS3XnnnUbHQhVzSUWpm266ScuWLdP48eP14osv6pprrtHMmTM1ZMgQ532efPJJnTp1SiNGjNCRI0fUvn17rV69utQuHTNmzJCXl5fuvvtunTp1St26dVNSUpI8PT3L7pUBAFCGHMUfB0exp3v37urRo8d5O6UcQ0DP1ykl6bxdTpLO+rfZbHZ2SpX8/vl+RskhpI7MoaGhzuKWzWZTQUGB83ZJZ71O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eHt767777tOCBQv02muvycuLEklF4zcO53K9mJgYZwHKsWQPAIDylpiYqMzMTAUHB7N0D1VaUVGRFi1apIEDB8rbMdcIFcPDgxlSAC7LkCFDNH36dK1Zs0a9evUyOo7boSjlpkrOjUpKSlJ2drYkadq0aRSjAAAVxmq1asOGDfrzzz8VGhrKZxCqtPXr1ysjI0NDhw41OgoA4CK1adNGN9xwgxYsWEBRygAUpdyUxWJRcnKyfHx8nMv1WKYHAKhoiYmJysrKkiQFBgYanAa4MgsWLFDjxo0VGRlpdBQAwEUymUwaOnSoXnrpJZ04cUK1atUyOpJboSjlphwFqDN32AMAoKLVqFFDISEhLN1DlZafn6+PPvpIw4cPl4cHewkBQFUyePBgPfPMM1q+fDndrhWMopSbKTk/atq0aUbHAYALKyqSkpNLD67ljz2XEhkZqZ07dyouLo6TI6jSVq1apSNHjvDHDABUQWazWZGRkVq4cCHv4xXsko7sJ0yYIJPJVOorODjY+X273a4JEyaoYcOGqlmzprp06aKtW7eW+hl5eXkaOXKkAgIC5Ovrq379+slms5XNq8EFWa1WjR49WkuXLpXFYjE6DgD8teRkafp0aenS4svkZKMToYylpaVp165dSktLMzoKcEUWLFig1q1bq0WLFkZHAQBchqFDh2r16tXav3+/0VHcyiWfbm7RooUyMzOdXz///LPze1OnTtX06dM1e/Zsff/99woODlaPHj10/Phx531GjRqlZcuWafHixUpLS9OJEyfUp08fFRYWls0rwlmsVqsSEhKUmJjI/CgAVcuOHVJentSyZfHljh1GJ0IZslqt2rhxo06fPm10FOCKHD16VJ988omGDBlidBQAwGUaOHCgPD09tXjxYqOjuJVLXr7n5eVVqjvKwW63a+bMmXrmmWd05513SpLef/99BQUFadGiRRo+fLiOHTumd999V/Pnz1f37t0lFZ9VatSokdasWaPbb7/9nM+Zl5envLw85/WcnJxLje12Si7Tcww1Dw8P14ABA5gfBaDqCAuTvL2lLVuKL8PCjE508Vh6eF6OzyibzaY///xTYWFhzJNClbZs2TLl5+dr0KBBRkcBAFymevXqKTo6WgsXLtQTTzxhdBy3cclFqR07dqhhw4by9vZW+/btNXnyZDVp0kS7du1SVlaWevbs6byvt7e3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x8dHubm5ksT7FoArYjKZ9NRTT2nw4MH68ccf1bZtW6MjAYBbsdvtmjJliqKioihIVTIs30O5cMyXGjlypK677jpde+218vX11dq1axUbGyur1aonnnhCQUFBeuKJJ4yOCwCSirukbDabwsPDFRcXx7I9AGVm4MCBatKkiV5++WWjowCA21m7dq2+++47jR8/3ugoOAPL91AhEhISlJSUpJMnT8rHx0cPPPCAFixYoAMHDqhBgwbav3+/0REBwLn0ODo6WtOmTTM6DgziLscZ7vI6K5O33npLjz32mH777Tc1bdrU6DgA4DZ69OihQ4cOKT09XSaTyeg4buFijzPolEKFiImJUffu3dWxY0f16NFDMTExuueee9SgQQPdc889RscDAEmS2WyWj4+PzGaz0VEAuKD7779fQUFBmjp1qtFRAMBt/PDDD1qzZo2eeuopClKVEDOlUCGioqLOmskSFRWl119/3aBEAHC2jIwM5ebmKiMjw+goAFxQjRo1lJCQoPHjx2v8+PG69tprjY4EAC7vhRdeUFhYmO666y6jo+Ac6JRCpWG1WpWQkCCr1Wp0FABuxGq1KjY2VrGxsTKbzcyRAlCuRowYoQYNGui5554zOgoAuDyr1ark5GRNmjRJnp6eRsfBOdAphUrDseOVxE5XACqOxWLRmjVrZLfbFRoayiwpAOXKx8dHEyZM0COPPKInn3xSrVu3NjoSALgku92up556ShERERowYIDRcXAeFKVQaTg6E+hQAFCRYmJiZLPZnP8GgPL2wAMP6LXXXtP48eO1atUqo+MAgEtasWKFNmzYoNWrV8vDg0VilRW77wEA3JbVapXFYlFMTAwdmnByl+MMd3mdldXSpUs1cOBArV27Vl26dDE6DgC4lMLCQoWHhyskJERr1qwxOo5butjjDDqlUOnwRyKA8uZ4n7HZbNq8ebMklg0DqFh33XWX2rVrp6eeekobNmxgRygAKEPz58/XL7/8oqSkJKOj4C/Qw4ZKJzExUUlJSUpMTDQ6ytmKiqSVK6UZM4ovi4qMTgTgMpScYcdgcwBGMJlMevnll/Xtt99q+fLlRscBAJfx559/6vnnn9eAAQN00003GR0Hf4GiFCqlSruqNDlZmj5dWrq0+PK/f9QCqPwcO3zOmjVLNptN4eHhio+P17Rp0+iSgqGOHDmie++9V/7+/vL399e9996ro0ePXvAxcXFxMplMpb46dOhQMYFRZrp166YePXro6aef1unTp42OAwAuYc6cOdq3b58mTZpkdBRcBJbvodKJj49XaGiozGazEhISKtcyvh07pLw8qWVLacuW4usAqoTExESlpKQoICBAnp6eio6OrjzvLXBrgwcPls1m02effSZJeuSRR3Tvvffqk08+ueDjevXqpXnz5jmvV69evVxzonxMmTJF7dq103vvvadHHnnE6DgAUKUdPnxYkydP1oMPPqhmzZoZHQcXgaIUKp2oqChFRUUpNjZWa9askc1mqzx/OIaFSd7exQUpb+/i6wAqNcf8qIMHD8pkMik0NFRt2rRhyR4qhV9//VWfffaZvvnmG7Vv316SNHfuXN1yyy3atm3bBQ+ovb29FRwcfNHPlZeXp7y8POf1nJycyw+OMhMREaF7771XTz/9tAYMGKB69eoZHQkAqqznnntO+fn5mjhxotFRcJFYvodKrdIt44uOlsaMkQYMKL6MjjY6EYC/4JgfFRgYqLi4OE2YMIEle6g0NmzYIH9/f2dBSpI6dOggf39/rV+//oKPTU1NVYMGDdS0aVMNGzZMBw4cuOD9p0yZ4lwi6O/vr0aNGpXJa8CVmzp1qgoKCvTss88aHQUAqqwff/xRb775piZOnKiQkBCj4+Ai0SmFSisyMlI7d+5UZGSk0VH+x8ND6tPH6BQALoHZbJaPj48iIyM1cuRIo+MApWRlZalBgwZn3d6gQQNlZWWd93G9e/fWwIEDdfXVV2vXrl167rnndNtttyk9PV3e3t7nfMz48eM1ZswY5/WcnBwKU5VEcHCwJk6cqDFjxuihhx5SRESE0ZEAoEopKipSfHy8brjhBj3++ONGx8EloFMKlVZGRoZyc3OVlpamhIQEWa1WoyMBqGKsVquSkpKUnZ2tjIwMo+PAjUyYMOGsQeRnfv3www+SindhO5Pdbj/n7Q6xsbG644471LJlS/Xt21erVq3S9u3b9emnn573Md7e3qpdu3apL1Qejz/+uFq2bKn4+HgVsbsvAFyS999/X998840SExNVrVo1o+PgEtAphUrLMe/FZrM5t25nuQ2Ai2G1WpWYmKiffvpJx44dU2hoKDOkUKEef/xx3XPPPRe8j9ls1ubNm7V///6zvnfw4EEFBQVd9POFhITo6quv1g424KiyvLy8NHv2bHXu3FlJSUl68MEHjY4EAFXCkSNHNG7cOA0ePFidO3c2Og4uEUUpVFqOgeeOPy5tNpusViuFKQDn5RhqbrPZtGbNGhUUFCgsLEwzZszgvQMVKiAgQAEBAX95v1tuuUXHjh3Td999p5tvvlmS9O233+rYsWPq2LHjRT/foUOHtGfPHmZoVHFRUVEaMmSIxo0bp/79+6tu3bpGRwKASu/555/XqVOn9OqrrxodBZeB5Xuo9KKiohQaGqrNmzfLYrEYHQdAJWW1WjV69GgtXbpUktS9e3f17t2bghQqtRtuuEG9evXSsGHD9M033+ibb77RsGHD1KdPn1I7711//fVatmyZJOnEiRMaO3asNmzYoIyMDKWmpqpv374KCAhQ//79jXopKCOvvvqq8vLy9NxzzxkdBQAqvY0bN2rOnDmaMGGCGjZsaHQcXAY6pVAlOAYVm81mo6MAqIQcBSmbzabQ0FDFx8dTiEKVsXDhQv39739Xz549JUn9+vXT7NmzS91n27ZtOnbsmCTJ09NTP//8sz744AMdPXpUISEh6tq1q5YsWSI/P78Kz4+yFRISogkTJugf//iHHnzwQbVt29boSABQKTmGm19//fX6+9//bnQcXCaKUqgSHEPPGVQM4FwsFouys7MVGhpKZxSqnHr16mnBggUXvI/dbnf+u2bNmvr888/LOxYMNHLkSH3wwQd64IEH9P3336t69epGRwKASmf27Nlav3691q1bx3DzKozle6gSYmJiFB4e7pwrBTdVVCStXCnNmFF8ye5EUHGXlM1mU4cOHShIAXAJ1apVU1JSkn755Re99NJLRscBgEpn586deuqppzRy5EiO/aq4SypKvfHGGwoPD3duI3zLLbdo1apVzu/b7XbnWs6aNWuqS5cu2rp1a6mfkZeXp5EjRyogIEC+vr7q16+fbDZb2bwauCzHXKl169Zp4MCBmjVrltGRYITkZGn6dGnp0uLL/+7KCPditVqVkJAgq9XqXLb3zTffKDQ0lIMSAC6jdevWeuaZZzR58mT99NNPRse5dJxIAlBOioqK9OCDDyokJERTpkwxOg6u0CUVpUJDQ/Xyyy/rhx9+0A8//KDbbrtNMTExzsLT1KlTNX36dM2ePVvff/+9goOD1aNHDx0/ftz5M0aNGqVly5Zp8eLFSktL04kTJ9SnTx8VFhaW7SuDy4mJiZHdbtfhw4eVlJRkdBwYYccOKS9Patmy+JKtz92SxWJRcnKyLBaLc9leQECAYmJijI4GAGXq6aefVosWLRQXF6f8/Hyj41waTiQBKCezZs3SV199pffee0++vr5Gx8EVuqSiVN++fRUdHa2mTZuqadOmeumll1SrVi198803stvtmjlzpp555hndeeedatmypd5//33l5uZq0aJFkqRjx47p3Xff1bRp09S9e3e1adNGCxYs0M8//6w1a9ac93nz8vKUk5NT6gvuJyoqSs8++6zCw8MVGRnp7JSAGwkLk7y9pS1bii/DwoxOBAPExMQoOjpaMTExiomJ0YABA1i2B8AlVa9e3bmMb9KkSUbHuTScSAJQDnbs2KHx48dr5MiR6ty5s9FxUAYue9B5YWGh/vWvf+nkyZO65ZZbtGvXLmVlZTl3jpEkb29vde7cWevXr9fw4cOVnp6ugoKCUvdp2LChWrZsqfXr1+v2228/53NNmTJFEydOvNyocCEjR47UyJEjlZCQoOT/nnHjD1E3Eh1dfLljR3FBynEdLs9qtcpischsNisjI0MxMTHO//Z5DwDgylq3bq1nn31W//znP/W3v/2t6uzGx4kkAGWMZXuu6ZKLUj///LNuueUW/fnnn6pVq5aWLVum5s2ba/369ZKkoKCgUvcPCgrSH3/8IUnKyspS9erVVbdu3bPuk5WVdd7nHD9+vMaMGeO8npOTo0aNGl1qdLgQxzIds9ms2NhYSWILeHfg4SH16WN0ChggMTFRKSkpCggIkKenpySKUQDcx/jx47Vs2bKqtRsfJ5IAlLFZs2YpLS1NqampLNtzIZdclGrWrJk2btyoo0eP6t///rfuv/9+rVu3zvl9k8lU6v52u/2s2870V/fx9vaWt7f3pUaFC4uKilJUVJQSEhK0Zs0a2e12hhwDLs5kMik0NFRt2rRhfhQAt+JYxnfTTTfpxRdfrBpL+TiRBKAMbd++nWV7LuqSZkpJxR+K1113ndq1a6cpU6aoVatWev311xUcHCxJZ3U8HThwwNk9FRwcrPz8fB05cuS89wEuRUxMjFq1aqWAgACZzWaj4wAoQ1arVbfddpuaNm2q4OBgxcXFacKECZo2bRoFaABup3Xr1powYYImT56sL7/80ug4AFBh/vzzT919991q1KgRy/Zc0CUXpc5kt9uVl5ena665RsHBwUpJSXF+Lz8/X+vWrVPHjh0lSREREapWrVqp+2RmZmrLli3O+wCXIioqSm3atJGnp6cyMjKMjgOgjFitVg0bNkzr1q3Tzp07lZaWRjEKgNt76qmn1LVrVw0ZMkQHDhwwOg4AVIixY8fqt99+00cffcSyPRd0Scv3nn76afXu3VuNGjXS8ePHtXjxYqWmpuqzzz6TyWTSqFGjNHnyZIWFhSksLEyTJ0+Wj4+PBg8eLEny9/fXQw89pISEBNWvX1/16tXT2LFjdeONN6p79+7l8gLh+hzLeFjOA7gOi8WizMxMeXh4qFatWoqLizM6EgAYztPTUwsWLFDr1q113333KTk5WR4eV3yOGQAqrY8//liJiYmaM2eOWrVqZXQclINLKkrt379f9957rzIzM+Xv76/w8HB99tln6tGjhyTpySef1KlTpzRixAgdOXJE7du31+rVq+Xn5+f8GTNmzJCXl5fuvvtunTp1St26dVNSUpJzcC1wqRzzpaT/7dBVcmcuAFVPTEyMbDabJDYxAICSQkJCNH/+fN1+++169dVXNW7cOKMjAUC5yMjI0IMPPqi77rpLjz76qNFxUE5MdrvdbnSIS5WTkyN/f38dO3ZMtWvXNjoOKpGEhAQtXbpUAQEBmjFjBn/IAlUIRWVUFu5ynOEur9NVPf3005o6daqsVitjMAC4nIKCAt16663av3+/fvrpJ9WpU8foSLhEF3ucQb8vXEpMTIwCAgKUnZ0ti8VidBwAF8FqtSo2NlYPP/ywli5dyn+7AHARXnzxRbVv316DBg3S4cOHjY4DAGXqmWeeUXp6upYsWUJBysVRlIJLiYqK0owZMzRgwACZzWYlJCTIarUaHQvAOZQsRq1atUpZWVkKCAhgPhwAXAQvLy99+OGHOn78uB566CFVwcUP+P/27jysqnrf4/hny6QgUjkBoqKFWkczc541EWeoTuaQppWVXYc0LTVPR61jZjY95VB2Tcz0pjlhjjkhGeaIpjmWopKaY4BDMv3uH172BUUFhL2A/X49z37QvX8sv+u79pLFZ//WWgCytHLlSk2aNEkTJkxQgwYNrC4H+YxQCkVOixYt9OGHHyo2NlYLFizQ0KFDCaaAAiYqKkpDhw61h1F+fn7q0KEDp90CQA5UqlRJM2fO1JIlS/TRRx9ZXQ4A3LXY2Fg9++yz6tixo1577TWry4ED5OhC50BhEhYWpsjISJ07d05TpkzRlClTJHHRZMAqUVFR9v1Qks6dOyc/Pz898sgj7JcAkEthYWEaMWKE3njjDdWsWVPt2rWzuiQAyJVLly4pLCxM3t7e+vrrr7m7qJMglEKRlX4qX0REhOLi4rR27VoZYxQQEMAvv4AFIiIi7Pth27Zt9dRTT3FRcwDIA+PHj9fevXvVrVs3bd26VdWqVbO6JADIkbS0NPXt21dHjhzR5s2bVbp0aatLgoMQSqFIa9GihVq0aGE/fe/s2bOKi4tTVFQUvwgDDhYWFqa4uDhJzFgEgLzk4uKiOXPmqFGjRgoNDdXPP//MhYEBFCrvvPOOFi5cqCVLlqhmzZpWlwMHIpSCU0gPp7p166a1a9fq7NmzqlOnDrM0gHwQFRWliIgIpaSkaNWqVfLy8lJQUJAGDBigefPmWV0eABRJPj4+Wrp0qRo0aKAePXpo2bJlcnFxsbosALijhQsXauzYsfrPf/7DDW+cEKEUnI4xRnFxcTp16pQkEUoBeSwiIkIrVqzQhQsXdO7cOUnXL1rJqbMAkL+CgoI0b948dejQQSNHjtSkSZOsLgkAbmv37t169tln9fTTT+vNN9+0uhxYgFAKTmXAgAEKCAhQYGCgNm3apLi4OH322WfatGmT/XV+aQZyLn12VGBgoGJiYpSamqrmzZtrz5499plSfPIFAPkvJCREH374oYYOHaqHH35YvXv3trokAMjS2bNnFRYWpurVq+urr76SzWazuiRYgFAKTiX9ND7p+syNFStW6LffflNsbKySk5P122+/cUt6IAfS76gXExOja9euqUyZMoqNjZUxRpUrV9aCBQusLhEAnM6rr76qX375RS+++KKCgoLUqFEjq0sCgEyuXbump556SlevXtWSJUvk5eVldUmwCKEUnFb6rI30WVPR0dHav3+/XnzxRX355ZcEU8AtpAdR6dauXavk5GQFBQWpb9++9pmHzIwCAGvYbDZNmzZNhw4dUufOnfXTTz+pevXqVpcFAJKu32nv2Wef1ZYtW7Ru3TpVqlTJ6pJgIZsxxlhdRE4lJCTIx8dH8fHxKlWqlNXloIjo1q2bIiIi5Obmppdeekkffvih1SUBBdKwYcMUHh4uY4zatm1rf57TX1FUOMtxhrOspzO7cOGCmjdvrkuXLik6OloVKlSwuiQATs4Yo8GDB2vq1Kn67rvv9OSTT1pdEvJJdo8zmCkF/J8BAwZIun5uc1xcnKKiorR7926Fh4erb9++GjRokMUVAvkv/dpQ6bOc0mdEpe8f6deNCg4Otj9PEAUABdN9992nVatWqUmTJmrfvr1+/PFH3XPPPVaXBcCJTZgwQZMnT9a0adMIpCCJUAqwS7/e1LBhw7RixQpFREQoMjJSu3fv1ogRIySJYApFSsaLk8fGxiowMFDh4eH2O+ZJ10/NM8YoICBAkrRixQp17NhR8+bNs6psAEAOVKxYUatXr1azZs0UGhqq1atXq0SJElaXBcAJzZgxQ6NHj9bYsWPVv39/q8tBAUEoBdwgfYZIWFiYAgMDNWLECCUlJSk8PJxQCkVKRESEVqxYIU9PT125ckWenp46d+6cypQpY98P4uLiJGW+PhTXigKAwuWhhx7S8uXL1aZNG/Xs2VMLFiyQi4uL1WUBcCJLly7VSy+9pP79++vf//631eWgAOGaUsAdfPbZZwoPD1ezZs10+vRpSZyyhMItqxlSGb+GhYXx/oZTc5bjDGdZT/y/ZcuW6fHHH9cLL7ygzz//nNuvA3CIn376ScHBwerYsaPmz59PKO4kuKYUkEcGDRqkQYMGadiwYfa7jO3atct+sdCyZcsSUqFAynh9qPT3Z1RUlIYOHapz587pqaee4oL+AOBEOnfurP/+7//Wc889p/Lly+vtt9+2uiQARdyvv/6qzp07q2HDhpozZw6BFG5CKAVkU1hYmOLi4hQTE6NTp07p2LFjkiRPT09JuumXf8Aq6WFUXFycfvnlF0myvy8jIiJuOkUPAOA8+vbtqz///FMjR45UyZIl9cYbb1hdEoAi6sCBA2rTpo0qVaqkiIgIFS9e3OqSUAARSgHZlH4h9KioKE2ZMkVnz56VdH2mlHT9AtBxcXGEU7BExllR6deKevjhh9WxY8csrwfFexQAnNeIESN0+fJljRgxQq6urnrttdesLglAEXP48GE99thjKl26tNasWSMfHx+rS0IBRSgF5FB6OJVRxpkphFPIL+mBqCQ1a9Ys03WgMs6Kul3wlNX7FwDgfMaNG6eUlBQNGzZMrq6uGjx4sNUlASgifv/9d7Vu3Vo+Pj5av369ypUrZ3VJKMAIpYA8kHEWVcZwKt3YsWMVFxenQYMGqXbt2gRWyJaMIdSAAQMUERGhtWvXyhij3377zX7HvCtXrmSaFUXwBAC4E5vNpvHjxyslJUWvvvqqbDYbdxkGcNfSAykvLy+tX79e5cuXt7okFHCEUkAeujGcSj+VavPmzUpKSlJ4eLhatWplD6wIDnA7GUOogIAA+3XNpJtnShFyAgByymazaeLEiUpLS9PgwYOVkpKioUOHWl0WgELq8OHDat26tTw9PbV+/Xr5+flZXRIKAUIpIB/cOFMlJiZGcXFx6tu3r2rXri3p+qlVtzsdi5ChaEsPLgMDA7Vp0yZJ12dDScr0nggODpYkZkABAPKFzWbTpEmT7NeWSk1N1fDhw60uC0Ahc/DgwUyn7BFIIbsIpYB81qJFC61fv/6m5yRp2LBhtzwdK+N1qSQRXhUCUVFRtzxVU9JNp+KtWLFCnp6eio2Ntc+GkpRpdtS8efMsWx8AgHOw2WyaMGGCXF1d9frrryspKUmjRo2SzWazujQAhcC+ffvsFzVft26dfH19rS4JhQihFGCh252OdeN1qW4XXmUMrDZt2pTpzoADBgy46ZRCSfZZOunBVvpz6SFXxvHpoVdWy8hqfFavZQxkMr5+459vDN9utfwbl5dVaJdVL9LHpj+f8bXdu3crPDxczZo10+nTp+3L3717tyZPnqwKFSroiSeeyLTcjN9/u1M1M27D9FPxJGWaKZX+XPp7IuNd8wAAyE82m03vvPOO3NzcNHr0aJ0/f16TJk1SsWLFrC4NQAG2efNmderUSQEBAVq7di0XNUeOEUoBFrrd6Vg3hjC3C68yBlaxsbG6fPmyJMnT01MBAQFq0aKFfWZOuvRZOleuXMn0XHpdGcen15jVMrIan9VrGQOZjK/f+Ocbw7dbLf/G5WUV2mXVi/Sx6c9nfC0yMlJ79+5VXFycUlJS7MuPjIzUb7/9pmPHjik+Pj7TcjN+f1hY2C1P1cy4DW88Fe/GC8sy8w0AYAWbzaYxY8aodOnSGjx4sP7880999dVXcnd3t7o0AAXQsmXL9PTTT6tevXpaunSp7rnnHqtLQiFEKAUUUDcGVrcLr9JlNVMqPRC58aukm2ZKZTXudq/lZHxWs3+y+vON4dutln/j8rIK7W7Vi7i4uJtmOoWFhSkwMPCmmVLpz99pplR60HSrUzVv/DMAAAXVwIEDVa5cOfXu3Vtnz57VwoULVbJkSavLAlCAzJw5Uy+++KK6dOmiuXPnqkSJElaXhELKZowxVheRUwkJCfLx8VF8fLxKlSpldTkAAKAIcZbjDGdZT+Te+vXr9fjjj6tGjRpavny5ypYta3VJyG9padKKFdLhw1JQkNSxo8QpnMjAGKOJEydq1KhReumllzR16lS5uLhYXRYKoOweZ/A/DAAAAICbPPbYY9q4caOOHz+upk2bKjY21uqSkN9WrJA++khasOD61wyXTgDS0tI0dOhQjRo1SmPGjNHnn39OIIW7RigFAAAAIEt16tTRTz/9pLS0NDVp0kS//PKL1SUhPx0+LF27JtWsef3r4cNWV4QCIikpSb169dKnn36qqVOnauzYsdyhE3mCUAoAAADALd1///366aef5Ofnp+bNm2vlypVWl4T8EhQkeXhIe/de/xoUZHVFKADOnz+v9u3ba+HChZo/f75eeeUVq0tCEcKFzgEAAADcVvny5RUZGamePXuqc+fOev/99/Xaa68xU6Ko6djx+teM15SCU9u7d69CQ0OVmJioNWvWcOMe5DlCKQAAAAB35O3trSVLluitt97S8OHDtXv3bk2fPl3Fixe3ujTklWLFpM6dra4CBURERIR69eqlqlWrav369QoMDLS6JBRBnL4HAAAAIFtcXFz07rvvau7cufruu+/UsmVLnTx50uqyAOQhY4zGjx+vxx9/XO3atdNPP/1EIIV8QygFAAAAIEd69OihH3/8UX/88Yfq16+vbdu2WV0SgDxw5coV9ejRQ//61780duxYzZ8/XyVLlrS6LBRhhFIAAAAAcqxevXravn27KlWqpObNm2vOnDlWlwTgLpw4cULNmzfX999/r4ULF2rMmDEqVozIAPmLdxgAAACAXPH19VVkZKR69OihXr16aejQoUpKSrK6LAA5tG7dOtWrV0/nz59XdHS0nnzySatLgpMglAIAAACQax4eHvrqq6/06aefasqUKWratKmOHDlidVkAsiElJUVvvfWW2rZtq4cffljbtm1T7dq1rS4LToRQCgAAAMBdsdlsGjRokKKjo3Xx4kXVqVNH8+fPt7osALcRFxenxx57TBMmTND48eO1evVqlS1b1uqy4GQIpQAAAADkiXr16mnnzp3q2LGjunXrpv79++vq1atWlwXgBsuWLdMjjzyi2NhYbdy4UaNGjeL6UbAE7zoAAAAAeaZUqVKaO3euvvzyS82aNUsNGzbUgQMHrC4LgKSkpCQNGzZMXbp0UZMmTRQTE6OmTZtaXRacGKEUAAAAgDxls9nUr18/bd26VSkpKapbt67Cw8NljLG6NMBpHTlyRM2aNdNnn32mjz/+WBERESpdurTVZcHJEUoBAAAAyBe1atXStm3b1L17dz333HPq2rWrzpw5Y3VZgFMxxuiLL75Q7dq17XfXGzJkiGw2m9WlAYRSAAAAAPKPl5eXZsyYofnz52vjxo166KGHNG/ePGZNAQ5w7NgxhYSEqH///urevbtiYmJUr149q8sC7AilAAAAAOS7rl276tdff1Xr1q3VvXt3Zk0B+Sh9dlTNmjV18OBBrV69Wl9++aVKlSpldWlAJoRSAAAAAByiXLly+u6775g1BeSjG2dH7dmzRyEhIVaXBWSJUAoAAACAQzFrCsh7t5od5ePjY3VpwC0RSgEAAABwuKxmTc2cOVNpaWlWlwYUOgcOHFBwcDCzo1DoEEoBAAAAsEz6rKl27drp+eefV7NmzbRz506rywIKhUuXLmnEiBF6+OGHFRsby+woFDqEUgAAAAAsVa5cOc2ZM0cbNmxQQkKC6tevrwEDBujixYtWlwYUSMYYzZs3TzVq1NCnn36qt956S7/++iuzo1DoEEoBAAAAKBBatWqlmJgYffDBB5o9e7aqVaumGTNmcEofkMG+ffsUHBys7t27q379+tq/f7/eeustFS9e3OrSgBwjlAIAAABQYLi5uWno0KE6ePCg2rdvr379+qlJkybasWOH1aUBlkpMTNTrr7+u2rVr6/jx41q5cqUWL16swMBAq0sDco1QCgAAAECB4+fnp9mzZysqKkpXrlxR/fr19fzzz+vEiRNWlwY4VEpKiqZPn67q1atrypQpGjdunPbu3av27dtbXRpw1wilAAAAABRYzZs3186dO/Xpp59q2bJlCgoK0vDhw3X+/HmrSwPylTFGCxYs0D/+8Q+9/PLLat26tQ4cOKA333xTHh4eVpcH5AlCKQAAAAAFmqurqwYOHKjff/9do0aN0hdffKGqVatq/Pjxunz5stXlAXlu3bp1atCggbp27ar7779fMTExmjNnjipVqmR1aUCeIpQCAAAAUCh4e3trzJgxOnLkiJ577jm9/fbbeuCBBzRt2jQlJydbXR5w13bs2KGQkBAFBwfL1dVVkZGRWrFihR555BGrSwPyBaEUAAAAgEKlbNmy+uSTT3Tw4EGFhIRowIABevDBBzV37lylpqZaXR6QYwcOHFC3bt1Ur149xcXFafHixYqOjlbLli2tLg3IV4RSAAAAAAqlwMBAzZo1S7t379aDDz6oZ555RtWrV9f06dN17do1q8sD7mj79u365z//qYceekibN2/WV199pT179ujxxx+XzWazujwg3xFKAQAAACjUatWqpe+//17bt29XnTp11L9/f1WpUkUffPCBEhMTrS4PyMQYo3Xr1ik4OFj169fXnj179OWXX+rw4cN67rnn5OLiYnWJgMMQSgEAAAAoEurWravvvvtO+/fvV4cOHfTmm2+qcuXK+ve//61z585ZXR6cXFpamhYvXqxGjRopODhYFy5c0Pz587V//3698MIL3FEPTolQCgAAAECRUr16dc2YMUNHjhxRnz599OGHH6py5coaMmSIjh07ZnV5cDLXrl3TrFmzVLNmTT355JMqUaKEVq1apR07dqhr167MjIJTI5QCAAAAUCQFBATo448/1rFjxzR8+HB9/fXXqlKlikJDQ7Vq1SqlpaVZXSKKsNjYWI0aNUoBAQHq27evHnjgAUVHRysyMlLt2rXjmlGACKUAAAAAFHFlypTRuHHjdOLECU2fPl0nTpxQhw4dFBQUpA8++EDnz5+3ukQUEWlpaVq5cqW6dOmiqlWratq0aXrmmWe0f/9+LV26VI0bN7a6RKBAIZQCAAAA4BS8vLzUr18/7dy5U9HR0WrSpIlGjx6tChUqqG/fvtq6dauMMVaXiULo3LlzmjRpkoKCgtSxY0fFxcVp+vTp+uOPP/TJJ5+oRo0aVpcIFEiEUgAAAACcis1mU+PGjTV79mzFxcVp3LhxioyMVMOGDVW/fn1NnTqVC6PjjlJTU7VmzRo9++yzCggI0L/+9S81bdpUmzdv1s6dO9WvXz95eXlZXSZQoBFKAQAAAHBaZcuW1YgRI/T7779r2bJl8vX11eDBg+Xn56cuXbpo3rx5unLlitVlooAwxmjnzp0aNmyYKlasqJCQEP38888aN26c4uLi9PXXX6tRo0ZcLwrIJlerCwAAAAAAq7m4uKhTp07q1KmTzpw5o/nz52vOnDnq3r27vL299c9//lPPPPOMWrduzd3SnFBsbKzmzp2rb775Rvv371fZsmXVo0cP9erVS/Xq1SOEAnLJZgrhSdMJCQny8fFRfHy8SpUqZXU5AACg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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, axs = plt.subplots(1, 2, figsize=(12, 6)) \n", "cell_mask_contour_i = cell_mask_contour[(cell_mask_contour.cell == '5-0')]\n", "seqfish_data_i = seqfish_data[(seqfish_data.cell == '5-0')]\n", "\n", "axs[0].scatter(cell_mask_contour_i['x'], cell_mask_contour_i['y'], alpha=0.6, s=1, color='black')\n", "axs[0].scatter(seqfish_data_i[(seqfish_data_i.gene == 'Aamp')]['x'], seqfish_data_i[(seqfish_data_i.gene == 'Aamp')]['y'], label='Original Points', alpha=0.6, s=5, color='red')\n", "axs[0].scatter(cell_mask_contour_i['centerX'][0],cell_mask_contour_i['centerY'][0],color='green',s=100,marker='+')\n", "axs[0].axis('equal')\n", "axs[0].set_title('Original') \n", "\n", "axs[1].scatter(seqfish_data_i[(seqfish_data_i.gene == 'Aamp')]['x_norm'], seqfish_data_i[(seqfish_data_i.gene == 'Aamp')]['y_norm'], label='Registered Points', alpha=0.6, s=5, color='red')\n", "circle = plt.Circle((0, 0), 1, fill=False) \n", "axs[1].add_artist(circle) \n", "axs[1].set_title('Registered') \n", "axs[1].scatter(0,0,color='green',s=100,marker='+')\n", "axs[1].axis('equal')\n", "axs[1].set_xlim(-1.5, 1.5)\n", "axs[1].set_ylim(-1.5, 1.5)\n", "plt.tight_layout()\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Represent the subcellular spatial expression of each cell and gene as a 48×48-pixel square image, and conduct resolution reduction" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "======> Loading transcripts file\n", "1000 unique genes\n", "171 unique cells\n", "Converting to expression maps\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 171/171 [17:25<00:00, 6.12s/it]\n" ] } ], "source": [ "map_all_genes = get_gene_map(seqfish_data, cell_names, gene_names)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "map_all_genes shape: (171, 48, 48, 1000)\n", "(171, 12, 12, 1000)\n", "map_all_genes shape: (171, 1000, 12, 12)\n" ] } ], "source": [ "print(\"map_all_genes shape:\", map_all_genes.shape) \n", "# np.savez_compressed(f\"{data_path}{dataset}/cell_gene_map.npz\", image = map_all_genes)\n", "\n", "map_all_genes_low_res = map_all_genes.reshape(map_all_genes.shape[0], 12, 4, 12, 4,map_all_genes.shape[-1]).sum(axis=(2, 4))\n", "print(map_all_genes_low_res.shape)\n", "map_all_genes_low_res = np.transpose(map_all_genes_low_res, (0,3,1,2))\n", "print(\"map_all_genes_low_res shape:\", map_all_genes_low_res.shape)\n", "# np.savez_compressed(\"f\"{data_path}{dataset}/cell_gene_map_low_res.npz\", image = map_all_genes_low_res)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAycAAAHqCAYAAAAeQDHqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAgqZJREFUeJzt3Xt4TNf+P/D35DaTe91yJZF+SxShRKu0kaBJRKOtSy9SGlTr0puqQx1a1yZOHKqnlMNPi7bRplpRt6KEclCXoopqaAgnCRUkERKZZP3+8MycjElm78lMMnvG+/U88zxmrzVrr9mxP7M/s/aspRJCCBAREREREdmYk607QEREREREBDA5ISIiIiIihWByQkREREREisDkhIiIiIiIFIHJCRERERERKQKTEyIiIiIiUgQmJ0REREREpAhMToiIiIiISBGYnBARERERkSLITk5UKpWsx86dOyXbSklJQWZmpgXdvtOf6dOnW9SGku3cuVN/TFesWFFjnV69ekGlUqFly5YN2jc5iouL8cEHH6BLly7w8fGBWq1Gy5YtMWLECPzyyy9mt3fu3DmjY7FixQqoVCqcO3dO8vU3btzAuHHjEBQUBI1Gg4ceeghfffWV2f0gx/Prr79i+PDhCAsLg0ajgZeXFzp37oy0tDRcvXrV7PamT58OlUplsC0mJgYxMTEW9fOrr77CQw89BI1Gg6CgIIwbNw43btyQ/fqKigrMmDEDLVu2hFqtRps2bfDxxx9b1Cfgzrk+Z84cdO3aFffddx9cXV3h7++PPn36ID09HeXl5Rbvo6Hp4k31h4+PDzp27IgFCxagsrLS1l0kO8e4YxlHjDs6ly5dwrvvvouIiAh4eXlBo9GgVatWeOutt5CdnW12ezVdK504cQJjx45Ft27d4OnpKfv63ZQ9e/Zg5MiRiIyMhFqtln19VhMXuRX37dtn8HzWrFnIysrCjh07DLa3bdtWsq2UlBQMGjQIzzzzjNzd37O8vb2xfPlyDBs2zGB7Tk4Odu7cCR8fH9t0zISzZ88iLi4Oly9fxujRozFjxgx4eXnh3LlzyMjIQGRkJK5fvw5fX98G69OAAQNw8OBBzJkzB61bt0Z6ejoGDx6MqqoqJCUlNVg/SFmWLVuGsWPHIjw8HH/729/Qtm1bVFRU4NChQ1iyZAn27duHtWvX2rqb+PLLLzFkyBCMHDkSH374If744w9MmjQJJ0+exNatW2W1MXbsWHz++eeYNWsWHn74YWzZsgVvvfUWSkpK8Pe//71O/crOzkafPn1w+fJlvPrqq5gyZQoaNWqE/Px8bNmyBSNGjMCpU6cwa9asOrVva2+88YY+Ply/fh3ff/893n77bVy4cAHz5s2zce/IXjHuMO7U5sCBA0hMTIQQAq+//jq6desGNzc3nD59Gl988QUeeeQRXLt2zeL9HDp0CJmZmejUqRN69+6N9evXW9zm9u3b8eOPP6JTp07w8fGxLNkRdZScnCw8PT3r9FpPT0+RnJxc110LIYQAIKZNm2ZRG0qWlZUlAIiRI0cKAOKPP/4wKJ86dapo3ry5SEhIEKGhobbpZA20Wq2IiIgQPj4+4vjx4zXW2bRpkygtLTWr3ZycHAFAfPbZZ/ptn332mQAgcnJyTL5248aNAoBIT0832B4bGyuCgoKEVqs1qy/kGPbu3SucnZ1Fnz59RFlZmVF5eXm5WLdundntTps2TdwdWqOjo0V0dHSd+qnVakVgYKCIi4sz2P7ll18KAGLTpk2Sbfz2229CpVKJlJQUg+2vvPKKcHd3F4WFhWb3q6KiQrRt21bcd9994uTJkzXWOXfunFi7dq3ZbduaLt7MnTvXqCwqKkoEBgbaoFfkCBh3GHdqU1RUJAICAkSLFi3EhQsXaqzzzTffmN1uTddKlZWVBm0CEFlZWWa3XV31NufOnSvr+qw2Vv3NydWrVzF27FgEBwfDzc0N999/P6ZMmWIwvKZSqVBaWoqVK1fqh8t1w45//fUXxo4di7Zt28LLywt+fn7o1asXdu/eXec+Xbx4EYMGDYK3tzfuu+8+vPjiizh48GCNt0sdOnQITz31FBo3bgyNRoNOnTohIyPDoI5ueCwrKwtjxoxB06ZN0aRJEwwYMAB5eXlG+//666/1w2ZeXl6Ij4/HkSNHZPc/NjYWLVq0wKeffqrfVlVVhZUrVyI5ORlOTsZ/wkWLFqFHjx7w8/ODp6cnIiIikJaWhoqKCoN6MTExaN++PXbv3o1HH30U7u7uCA4OxnvvvVfn2xYyMzNx/PhxTJ48Ge3bt6+xTkJCAjw8PPTPs7OzkZSUBD8/P6jVajz44INYtGhRnfZfk7Vr18LLywvPPvuswfbhw4cjLy8PP//8s9X2RfYjJSUFKpUKS5cuhVqtNip3c3PDU089ZbDN0vO5Lvbv34/8/HwMHz7cYPuzzz4LLy8vWd+wZmZmQghh1Mbw4cNx69Yt/PDDD2b3a+3atTh58iSmTJmCBx98sMY6oaGhRiPkxcXFmDBhAsLCwuDm5obg4GCMGzcOpaWlBvVUKhVef/11fP7553jwwQfh4eGBjh07YsOGDUb7qe8YUp2vry9cXV0NtpWXl+Odd95BQEAAPDw80KNHDxw+fBgtW7Y0GPU29/ODHA/jDuNObZYtW4aCggKkpaWhefPmNdYZNGiQwfPvv/8e3bp1g4eHB7y9vREbG2t0p1NNarp2rM2MGTPQtWtXNG7cGD4+PujcuTOWL18OIUSd25Tsn7UaKisrQ8+ePbFq1SqMHz8eGzduxJAhQ5CWloYBAwbo6+3btw/u7u7o27cv9u3bh3379uGTTz4BAP19ltOmTcPGjRvx2Wef4f7770dMTEydhodKS0vRs2dPZGVl4R//+AcyMjLg7++P559/3qhuVlYWHnvsMVy/fh1LlizBunXr8NBDD+H555+v8TcfI0eOhKurK9LT05GWloadO3diyJAhBnVSUlIwePBgtG3bFhkZGfj8889RUlKCqKgonDx5UtZ7cHJywrBhw7Bq1Sp9wrB161ZcvHjR6ITXOXv2LJKSkvD5559jw4YNePnllzF37lyMGjXKqG5BQQFeeOEFvPjii1i3bh0GDRqE2bNn46233jKoN2zYMFn3D+qGeuXesnfy5Ek8/PDD+O233zBv3jxs2LABTz75JN58803MmDFDVhtSfvvtNzz44INwcTG8i7FDhw76crq3VFZWYseOHYiMjESLFi1kvcYa53N1cs8p3f9P3f9XHVdXV7Rp00bW/9/ffvsNzZo1Q0BAgMF2S86Bbdu2AYDRhZQpN2/eRHR0NFauXIk333wTmzdvxqRJk7BixQo89dRTRh92GzduxMKFCzFz5kx8++23aNy4Mfr3748///xTX8ecGBITE2N0X74pVVVV0Gq10Gq1KCwsxKeffooffvgBQ4cONag3fPhwLFiwAMOHD8e6deswcOBA9O/fH9evX6+xXTmfH+R4GHdg0CbjjqGtW7fC2dkZ/fr1k/W+0tPT8fTTT8PHxwerV6/G8uXLce3aNcTExGDPnj2y2pDj3LlzGDVqFDIyMvDdd99hwIABeOONN+r3trm6Dt/cfVvXkiVLBACRkZFhUO8f//iHACC2bt2q3yb3ti6tVisqKipE7969Rf/+/Q3KIOO2rkWLFgkAYvPmzQbbR40aZXSLUJs2bUSnTp1ERUWFQd3ExEQRGBioH67SDY+NHTvWoF5aWpoAIPLz84UQQuTm5goXFxfxxhtvGNQrKSkRAQEB4rnnnjPZd91tXd988434888/hUqlEhs2bBBCCPHss8+KmJgYIYQQTz75pMnbuiorK0VFRYVYtWqVcHZ2FlevXtWXRUdHCwBGQ8ivvPKKcHJyEufPn9dvGzFihHB2dhbnzp0z2e8+ffoIADUOV9ckPj5eNG/eXBQVFRlsf/3114VGo9H315Lbulq1aiXi4+ONtufl5QkARkPO5PgKCgoEAPHCCy/Iqm/O+Sz39gq559QHH3xgEFuqi4uLE61bt5bsf2xsrAgPD6+xzM3NTbz66quSbdyttnO9qqpKVFRU6B/Vb5tMTU0VTk5O4uDBgwavWbNmjdGtIgCEv7+/KC4u1m8rKCgQTk5OIjU1Vb9NbgwRQohevXoJZ2dnyfemizc1PYYNG2bwnk6cOCEAiEmTJhm0sXr1agHA4LNO7ucHOSbGnf9h3DHWpk0bERAQIFlPiDvXdkFBQSIiIsLgdqqSkhLh5+cnunfvrt8mda1kzm1dumvKmTNniiZNmoiqqqoa6ynmtq4dO3bA09PTaMhJN6S9fft2We0sWbIEnTt3hkajgYuLC1xdXbF9+3acOnXK7D7t2rUL3t7e6NOnj8H2wYMHGzw/c+YMfv/9d7z44osAoP+mTKvVom/fvsjPz8fp06cNXnN31q77JuD8+fMAgC1btkCr1eKll14yaE+j0SA6OtqskaCwsDDExMTg008/RWFhIdatW4cRI0bUWv/IkSN46qmn0KRJEzg7O8PV1RUvvfQSKisr8ccffxjU9fb2NnovSUlJqKqqwk8//aTftnz5cmi1WoSGhsrut5SysjJs374d/fv3h4eHh9FxLysrw/79+62yL1PfWpjzTSrdm6x5PuuYe07V9v+0+vbqfdNqtQbfCDbUOfDRRx/B1dVV/+jYsaO+bMOGDWjfvj0eeughg37Gx8fXOFtMz5494e3trX/u7+8PPz8/fZw1N4Zs374dWq1W9nt56623cPDgQRw8eBBZWVlISUlBRkaGwWfIrl27AADPPfecwWsHDRpkNFqrI/X5QQQw7pjDkeKOHKdPn0ZeXh6GDh1qcDuVl5cXBg4ciP379+PmzZtW2deOHTvwxBNPwNfXV39N+f7776OwsBCXL1+2yj7uZrXkpLCwEAEBAUb/2fz8/ODi4oLCwkLJNubPn48xY8aga9eu+Pbbb7F//34cPHgQffr0wa1bt+rUJ39/f6Ptd2+7dOkSAGDChAkG/7ldXV0xduxYAMCVK1cMXtOkSROD57p7R3X91LX58MMPG7X59ddfG7Un5eWXX8b69esxf/58uLu7GyWBOrm5uYiKisJ///tffPTRR9i9ezcOHjyovw/y7uNY0/HRDcHK+ZvdLSQkBMCd2cSkFBYWQqvV4uOPPzY6Rn379gVgfNzrokmTJjW+F91thI0bN7Z4H2RfmjZtCg8PD1n/TwHrn8/m0MWa2v4P6/7/njt3zqhvugvn2s6B0tJS3L59u07ngO5cv/uCOikpSX9B37lzZ4OyS5cu4ddffzXqp7e3N4QQknEWuBNrdXGsvmNI8+bN0aVLF3Tp0gUxMTGYPHky3nvvPXzzzTfYsmWLvg+AcSx1cXGpsf81va+7Pz/IMTHu3MG4U/t7++uvv4x+B1MT3XENDAw0KgsKCkJVVZVVZvU6cOAA4uLiANz5Tcx//vMfHDx4EFOmTAFQfzFL9lTCUpo0aYKff/4ZQgiDBOXy5cvQarVo2rSpZBtffPEFYmJisHjxYoPtJSUlde7TgQMHjLYXFBQYPNf1bfLkyQa/j6kuPDzcrH3r2lyzZo1VRhsGDBiA1157DXPmzMErr7wCd3f3GutlZmaitLQU3333ncF+jx49WmN9XfCrTnd8avtgNSU+Ph5Lly5FZmYm3n33XZN1GzVqBGdnZwwdOhSvvfZajXXCwsLM7sPdIiIisHr1ami1WoNvMo8fPw4Atf5wnxyXs7Mzevfujc2bN+PixYu1/vhQx9rnszkiIiIA3Pn/Wn2qdq1Wi99//13/LX5QUBAOHjxo8Fpd3IqIiMBXX32FgoICg/u/LTkHYmNjsXTpUnz//feYMGGCfrufnx/8/PwA3BmZrT4hStOmTeHu7m4wwUd1cj4nqmuoGFKdbpTj2LFjiI+P18fJS5cuITg4WF9P9zsVIh3GHejbBBh37hYfH4+tW7di/fr1eOGFF0zW1cWd/Px8o7K8vDw4OTmhUaNGZvfhbl999RVcXV2xYcMGaDQa/XZL1yqUYrXkpHfv3sjIyEBmZib69++v375q1Sp9uU71DLQ6lUplNHvFr7/+in379sn+8Vh10dHRyMjIwObNm5GQkKDffvfie+Hh4WjVqhWOHTuGlJQUs/dTk/j4eLi4uODs2bMYOHCgxe25u7vj/fffx08//YQxY8bUWk+XGFY/jkIILFu2rMb6JSUl+P777w1uM0hPT4eTkxN69Ohhdj+ffvppREREIDU1FYmJiTUGny1btiAqKgoeHh7o2bMnjhw5gg4dOsDNzc3s/cnRv39/LFu2DN9++63BZAgrV65EUFAQunbtWi/7JWWbPHkyNm3ahFdeeQXr1q0z+v9XUVGBH374Af369bP6+WyOrl27IjAwECtWrDD4/7tmzRrcuHFD/4WKm5sbunTpUmMbTz/9NKZOnYqVK1di0qRJ+u0rVqyAu7u70a2vcvTv3x9t27ZFSkoKEhMT0aZNG8nXJCYmIiUlBU2aNLFK0tBQMaQ63Rc9ugshXZz8+uuvDb6xXbNmjdVv5SD7x7jDuFMb3eRFEydORFRUlMGXHTq6H6SHh4cjODgY6enpmDBhgv7ar7S0FN9++61+Bi9LqVQquLi4wNnZWb/t1q1b+Pzzzy1u2xSrJScvvfQSFi1ahOTkZJw7dw4RERHYs2cPUlJS0LdvXzzxxBP6uhEREdi5cyfWr1+PwMBAeHt7Izw8HImJiZg1axamTZuG6OhonD59GjNnzkRYWFidgnxycjI+/PBDDBkyBLNnz8YDDzyAzZs364fjq9+n9+9//xsJCQmIj4/HsGHDEBwcjKtXr+LUqVP45Zdf8M0335i175YtW2LmzJmYMmUK/vzzT/Tp0weNGjXCpUuXcODAAXh6epo9G9X48eMxfvx4k3ViY2Ph5uaGwYMHY+LEiSgrK8PixYtrHd5r0qQJxowZg9zcXLRu3RqbNm3CsmXLMGbMGP3wKXDnpFm5ciXOnj1r8hscZ2dnrF27FnFxcejWrRvGjBmDnj17wtPTE+fPn8eaNWuwfv16fX8++ugjPP7444iKisKYMWPQsmVLlJSU4MyZM1i/fr3RIp91kZCQgNjYWIwZMwbFxcV44IEHsHr1avzwww/44osvDE46und069YNixcvxtixYxEZGYkxY8agXbt2qKiowJEjR7B06VK0b98e/fr1q5fz2ZxzKi0tDUOHDsWoUaMwePBgZGdnY+LEiYiNjZX1Ad+uXTu8/PLLmDZtGpydnfHwww9j69atWLp0KWbPnm1we8XOnTvRs2dPTJs2DdOnTzfZr8zMTMTHx+ORRx7BK6+8gpiYGDRq1AjXr1/Hzz//jGPHjhlM9zlu3Dh8++236NGjB95++2106NABVVVVyM3NxdatW/HOO++Y/WWBOTGkd+/e2LVrl+zPk9zcXP2946Wlpdi3bx9SU1MRGhqqvzhr164dBg8ejHnz5sHZ2Rm9evXCiRMnMG/ePPj6+lp1ek2yf4w7jDu18fX1xbp165CYmIhOnToZLMKYnZ2NL774AseOHcOAAQPg5OSEtLQ0vPjii0hMTMSoUaNQXl6OuXPn4vr165gzZ47Jfd28eRObNm0CAH2M27VrF65cuQJPT0/9F/pPPvkk5s+fj6SkJLz66qsoLCzEP//5zxqnwf7rr7/0t/TpRsc2b96MZs2aoVmzZoiOjpZ5dGHdRRgLCwvF6NGjRWBgoHBxcRGhoaFi8uTJRrMqHD16VDz22GPCw8NDANDPJlFeXi4mTJgggoODhUajEZ07dxaZmZkiOTnZaEYqyFyEMTc3VwwYMEB4eXkJb29vMXDgQLFp06YaZ6k6duyYeO6554Sfn59wdXUVAQEBolevXmLJkiX6OrpZD+6e9UE3u9bdsx1kZmaKnj17Ch8fH6FWq0VoaKgYNGiQ+PHHH032u/psXabUNFvX+vXrRceOHYVGoxHBwcHib3/7m9i8ebNR/6Kjo0W7du3Ezp07RZcuXYRarRaBgYHi73//u9GsZcnJyWbNvHD9+nUxa9Ys0blzZ+Hl5SVcXV1FSEiIGDJkiPjPf/5jUDcnJ0eMGDFCBAcHC1dXV9GsWTPRvXt3MXv2bIM6qONsXULcmcHizTffFAEBAcLNzU106NBBrF69WtZ7Icd29OhRkZycLEJCQoSbm5vw9PQUnTp1Eu+//764fPmyQV0557PcWXPMPafS09NFhw4dhJubmwgICBBvvvmmKCkpkf0+b9++LaZNm6Z/n61btxb/+te/jOqtX79eADCIe6YUFRWJlJQU8fDDDwsfHx/h4uIi/Pz8RGxsrFi0aJHRgqs3btwQU6dOFeHh4cLNzU34+vqKiIgI8fbbb4uCggJ9PQDitddeM9pfaGio0WyPcmKIEP+boVBKTbN1aTQa0bp1azFu3DijGYzKysrE+PHjhZ+fn9BoNOLRRx8V+/btE76+vuLtt9/W1zP384McF+OOIcad/ykoKBCTJk0S7dq1Ex4eHkKtVosHHnhAjBo1ymhx68zMTNG1a1eh0WiEp6en6N27t9E1Vk3XSqZmJLz7mvLTTz8V4eHhQq1Wi/vvv1+kpqaK5cuXG7Wpi2M1PcxdDFQlxF0TPN8DUlJSMHXqVOTm5kre8+nIYmJicOXKFa7zQUR6EydOxOrVq5GdnW1wjzGZZ+/evXjsscfw5ZdfIikpydbdIVI0xh2qzmq3dSnVwoULAQBt2rRBRUUFduzYgX/9618YMmTIPZ2YEBHVJCsrC++99x4vEMywbds27Nu3D5GRkXB3d8exY8cwZ84ctGrVqtZJVojofxh3qDqHT048PDzw4Ycf4ty5cygvL0dISAgmTZqEqVOn2rprRESKc/fMOyTNx8cHW7duxYIFC1BSUoKmTZsiISEBqampvNgikoFxh6q7J2/rIiIiIiIi5eE0IkREREREpAhMToiIiIiISBGYnBARERERkSI4zA/iq6qqkJeXB29vb/1KmaQMQgiUlJQgKCiIC5LRPY+xSrkYq4gMMV4pk6PHKodJTvLy8tCiRQtbd4NMuHDhAqdvpnseY5XyMVYR3cF4pWyOGqscJjnx9va2dRf03N3dJetITS8pZ/rJW7duSdYpLy+3uA1rUdLfiMhWlHQe+Pv7S9a5dOmSyfKHHnpIso2jR4/K7JEyKOlvRGRLjnYu+Pj4SNYpLi5ugJ5Yh6P9fXQcJjlR0nCjnL5IDcPJGaaTsx97Oy5Ejk5J54E1bgdwdna2Qk+URUl/IyJbcrRzge/HPjjejWpERERERGSXmJwQEREREZEiMDkhIiIiIiJFYHJCRERERESKwOSEiIiIiIgUgckJEREREREpQoNMJfzTTz9h7ty5OHz4MPLz87F27Vo888wz+nIhBGbMmIGlS5fi2rVr6Nq1KxYtWoR27do1RPcMWGMaYA8PD8k2pKbflDPFZ5MmTSTrCCFMlpeVlUm2kZeXZ9E+iOyFPcUqawgKCrK4jcOHD0vWCQwMlKyTn59vsvzVV1+VbGPp0qWSdYgcxb0Wr0JCQiTr5ObmWryf9u3bS9aRWgvlsccek2xj9erVsvt0r2mQkZPS0lJ07NgRCxcurLE8LS0N8+fPx8KFC3Hw4EEEBAQgNjYWJSUlDdE9IiIAjFVEZD8Yr8hRNcjISUJCAhISEmosE0JgwYIFmDJlCgYMGAAAWLlyJfz9/ZGeno5Ro0Y1RBeJiBiriMhuMF6Ro7L5b05ycnJQUFCAuLg4/Ta1Wo3o6Gjs3bu31teVl5ejuLjY4EFEVF8Yq4jIXjBekT2zeXJSUFAAAPD39zfY7u/vry+rSWpqKnx9ffWPFi1a1Gs/iejexlhFRPaC8Yrsmc2TE527f4guhDD54/TJkyejqKhI/7hw4UJ9d5GIiLGKiOwG4xXZowb5zYkpAQEBAO5k+dVndLl8+bJRxl+dWq2GWq2u9/4REQGMVURkPxivyJ7ZfOQkLCwMAQEB2LZtm37b7du3sWvXLnTv3t2GPSMi+h/GKiKyF4xXZM8aZOTkxo0bOHPmjP55Tk4Ojh49isaNGyMkJATjxo1DSkoKWrVqhVatWiElJQUeHh5ISkqyel+k1jGRs2aH1LcKUmuYAHeChCkajUayDa1Wa3EdOe/X1LcsAHDp0iWL90GkBEqKVdYgtb6InDVKLN0HIL2GCQBERkaaLJfT18TERJPlGzZskGyDyF44WryS4uPjY3EbDfUbmuPHj0vWkVpP5bfffrNWd+xOgyQnhw4dQs+ePfXPx48fDwBITk7GihUrMHHiRNy6dQtjx47VLxS0detWeHt7N0T3iIgAMFYRkf1gvCJHpRIO8rV2cXExfH19JetZY+REagV4OSe+1MiJnG8I5KxmLzVyUlVVJdmGVB25IydFRUVW+eaDyJ7JjVXWIDWqIWdEw9J9yN2P1MiJNfoid+SEsYrojoaMV1LkrNwuNdogpw05pKZYtkb8kDNy4qixyua/OSEiIiIiIgKYnBARERERkUIwOSEiIiIiIkVgckJERERERIrA5ISIiIiIiBSByQkRERERESlCg6xzoiRSUwVLLbAISE8Rd+PGDck2bt26ZbJcaqphAHB1dZWsIzXtsYuL9H8BJyfTOazUopNCCFRWVkruh4isyxpTBTfUPvLy8hTRBhHZRkhISL3vQ870vNaYOjkiIsLiNi5cuFBrmRBCcjpje8aREyIiIiIiUgQmJ0REREREpAhMToiIiIiISBGYnBARERERkSIwOSEiIiIiIkVgckJERERERIrA5ISIiIiIiBThnlvnRKPRmCyXM791eXm5ReWA9HoqUmuLAPLWQpGqI7VmCwC4ubmZLJc6ZlVVVbh27ZrkfojofwIDAy1uoyHWObFGPwHpvsrZT2RkpMnyw4cPmyyvqqrCpUuXJPdDROaRc20ltc7Jnj17LN5PixYtJNuQ47777jNZLqevffv2NVluaq0UrVaL/fv3S+7DXnHkhIiIiIiIFIHJCRERERERKQKTEyIiIiIiUgQmJ0REREREpAhMToiIiIiISBGYnBARERERkSIwOSEiIiIiIkVgckJERERERIrgcIswurm5QaVS1Vru6elp8vVSiyMC0gsbymmjsrLSZHlVVZVkG6bep9x2tFqtZBvOzs4my728vCT7wEUYicxjjQUUpRYubIhFGq1FTl83bNhgstxaC0YSkSGpxQ8ff/xxyTaKiopMlrdv316yjQsXLpgs/+233yTbkLNgpNR+5Cz2KLWQ4/Hjx2stk7qGtHccOSEiIiIiIkVgckJERERERIrA5ISIiIiIiBSByQkRERERESkCkxMiIiIiIlIEJidERERERKQITE6IiIiIiEgRFJGcTJ8+HSqVyuAREBBg624RERlhvCIie8BYRfZKMYswtmvXDj/++KP+udTCf7Xp2bMnXF1day0fNGiQydfLWdhm6NChJstN7V+nU6dOJstPnz4t2YachRpdXCz/Ezs5mc5hy8rKTJbL6SeRPbFWvDJFasHAoKAgyTby8vJMlgshJNuQ2o+cxRGtsfihnDak+ip1PIgcTUPEKjk2btwoWUdq8cPr169LtjF58mST5aYWNtTZs2ePZB2pRRZDQ0Ml24iIiDBZnp6eXmuZnNhtzxSTnLi4uDCjJyK7wHhFRPaAsYrskSJu6wKA7OxsBAUFISwsDC+88AL+/PNPW3eJiKhGjFdEZA8Yq8geKWLkpGvXrli1ahVat26NS5cuYfbs2ejevTtOnDiBJk2a1Pia8vJylJeX658XFxc3VHeJ6B5mbrxirCIiW+C1FdkrRYycJCQkYODAgYiIiMATTzyhvzdx5cqVtb4mNTUVvr6++ofU/X9ERNZgbrxirCIiW+C1FdkrRSQnd/P09ERERASys7NrrTN58mQUFRXpHxcuXGjAHhIR3SEVrxiriEgJeG1F9kIRt3Xdrby8HKdOnUJUVFStddRqNdRqdQP2iojImFS8YqwiIiXgtRXZC0WMnEyYMAG7du1CTk4Ofv75ZwwaNAjFxcVITk62ddeIiAwwXhGRPWCsInuliJGTixcvYvDgwbhy5QqaNWuGRx99FPv375c1T/TdioqKTK7t0bx5c5Ovb9y4seQ+vvrqK5PlKSkpkm1IrQ2g1Wol25Czhombm5vJcjlzZUv15cqVKxbvg8heWCtePfTQQybXHJBa10PO+iJS63506dJFsg1rkNNXa7QRGRlpspzrnNC9xJrXVj4+PlCpVLWWJyUlmXz97t27JfchdQuZ1BomgOm1QYA770NKUVGRZB2p3+KcP39esg2pvsrph6NSRHIidbFPRKQUjFdEZA8Yq8heKeK2LiIiIiIiIiYnRERERESkCExOiIiIiIhIEZicEBERERGRIjA5ISIiIiIiRWByQkREREREisDkhIiIiIiIFEER65xY07Vr10wubPbtt9+afH1lZaXkPnJyckyWX7x4UbKN27dvmyyXs8CinDpVVVUmy6UWaQSAwsJCi/bBRRiJjPXp0wcajabW8unTp1u8D2ss5NhQpPoqtaAkAGzYsMFa3SGiaoKDg01eWy1evNjifTz++OMmy6UWLZRDaqFHAPD19ZWsU1xc3CB9uVdx5ISIiIiIiBSByQkRERERESkCkxMiIiIiIlIEJidERERERKQITE6IiIiIiEgRmJwQEREREZEiMDkhIiIiIiJFcLh1Tk6fPm2y3M/Pz2S51PojAHD58mWT5abWLtCRWvtDrVZLtuHkJJ1bSvWltLRUsg05x4SIzDNnzhxbd8EqpNYnkUtqHZPDhw9bZT9EZL5Tp07V+z6OHz9usrxFixaSbUitP1JUVCTZRkhIiMV1pN6L3L7cqzhyQkREREREisDkhIiIiIiIFIHJCRERERERKQKTEyIiIiIiUgQmJ0REREREpAhMToiIiIiISBGYnBARERERkSIwOSEiIiIiIkVwuEUYpezZs8dkub+/v8X7cHNzk6xTWVlpslyr1Uq24e7uLlnnxo0bFpUTkf3Kz883WZ6YmCjZhtTih1L7ICKyBqkFFuXw9fWVrOPj4yNZR+pakizDkRMiIiIiIlIEJidERERERKQITE6IiIiIiEgRmJwQEREREZEiMDkhIiIiIiJFYHJCRERERESKwOSEiIiIiIgUQVHrnHzyySeYO3cu8vPz0a5dOyxYsABRUVFW3YfU+iH//e9/JdtQq9Umy52dnSXbcHV1NVmuUqkk27h586ZkndLSUpPlVVVVkm0QkbGGiFf1bcOGDZJ1pNZCkdOGHFwvhah+2EusKioqsriNFi1amCzPzc1tkH6QZRQzcvL1119j3LhxmDJlCo4cOYKoqCgkJCTI+o9ERNSQGK+IyB4wVpE9UkxyMn/+fLz88ssYOXIkHnzwQSxYsAAtWrTA4sWLbd01IiIDjFdEZA8Yq8geKSI5uX37Ng4fPoy4uDiD7XFxcdi7d6+NekVEZIzxiojsAWMV2StF/ObkypUrqKyshL+/v8F2f39/FBQU1Pia8vJylJeX658XFxfXax+JiADz4xVjFRHZAq+tyF4pYuRE5+4fgQshav1heGpqKnx9ffUPqR9BERFZk9x4xVhFRLbEayuyN4pITpo2bQpnZ2ejTP7y5ctGGb/O5MmTUVRUpH9cuHChIbpKRPc4c+MVYxUR2QKvrcheKSI5cXNzQ2RkJLZt22awfdu2bejevXuNr1Gr1fDx8TF4EBHVN3PjFWMVEdkCr63IXiniNycAMH78eAwdOhRdunRBt27dsHTpUuTm5mL06NGyXi+EqOceyt+XnL5Yo78NtR9rUVJfiCxhSbyyt/OgoqLC1l1ocPb2NyKqjT1dW0mR05fKysoG6IlyKOnvY02KSU6ef/55FBYWYubMmcjPz0f79u2xadMmhIaGynp9SUlJPffwf27fvm1xG7du3bJCT+xLSUkJfH19bd0NIotZEq8aMlZZw5YtW2zdhQbHWEWOwp6uraTI+XH+vfYDfkeNVSrhIGlXVVUV8vLy4O3tDZVKheLiYrRo0QIXLlzgsKQV1eW4CiFQUlKCoKAgODkp4k5CIpu5O1YBdTuvyDTGKiLL8dqq/jFWGVPMyImlnJyc0Lx5c6PtvGeyfph7XB0xsyeqi9piFcB4VR8Yq4jqjtdWDYex6n8cL90iIiIiIiK7xOSEiIiIiIgUwWGTE7VajWnTpkGtVtu6Kw6Fx5XI+nheWR+PKZH18byyPh5TYw7zg3giIiIiIrJvDjtyQkRERERE9oXJCRERERERKQKTEyIiIiIiUgQmJ0REREREpAgOm5x88sknCAsLg0ajQWRkJHbv3m3rLtmNn376Cf369UNQUBBUKhUyMzMNyoUQmD59OoKCguDu7o6YmBicOHHCNp0lsnOMVZZhvCJqGIxVlmGsks8hk5Ovv/4a48aNw5QpU3DkyBFERUUhISEBubm5tu6aXSgtLUXHjh2xcOHCGsvT0tIwf/58LFy4EAcPHkRAQABiY2NRUlLSwD0lsm+MVZZjvCKqf4xVlmOsMoNwQI888ogYPXq0wbY2bdqId99910Y9sl8AxNq1a/XPq6qqREBAgJgzZ45+W1lZmfD19RVLliyxQQ+J7BdjlXUxXhHVD8Yq62KsMs3hRk5u376Nw4cPIy4uzmB7XFwc9u7da6NeOY6cnBwUFBQYHF+1Wo3o6GgeXyIzMFbVP8YrIssxVtU/xipDDpecXLlyBZWVlfD39zfY7u/vj4KCAhv1ynHojiGPL5FlGKvqH+MVkeUYq+ofY5Uhh0tOdFQqlcFzIYTRNqo7Hl8i6+C5VP94jIksx/Oo/vEY3+FwyUnTpk3h7OxslGlevnzZKCMl8wUEBAAAjy+RhRir6h/jFZHlGKvqH2OVIYdLTtzc3BAZGYlt27YZbN+2bRu6d+9uo145jrCwMAQEBBgc39u3b2PXrl08vkRmYKyqf4xXRJZjrKp/jFWGXGzdgfowfvx4DB06FF26dEG3bt2wdOlS5ObmYvTo0bbuml24ceMGzpw5o3+ek5ODo0ePonHjxggJCcG4ceOQkpKCVq1aoVWrVkhJSYGHhweSkpJs2Gsi+8NYZTnGK6L6x1hlOcYqM9hyqrD6tGjRIhEaGirc3NxE586dxa5du2zdJbuRlZUlABg9kpOThRB3prybNm2aCAgIEGq1WvTo0UMcP37ctp0mslOMVZZhvCJqGIxVlmGskk8lhBA2yImIiIiIiIgMONxvToiIiIiIyD4xOSEiIiIiIkVgckJERERERIrA5ISIiIiIiBSByQkRERERESkCkxMiIiIiIlIEJidERERERKQITE6IiIiIiEgRmJwQEREREZEiMDkhIiIiIiJFYHJCRERERESKwOSEiIiIiIgUgckJEREREREpApMTIiIiIiJSBCYnRERERESkCExOiIiIiIhIEZicEBERERGRIshOTlQqlazHzp07JdtKSUlBZmamBd2+05/p06db1IaS7dy5U39MV6xYUWOdXr16QaVSoWXLlg3aNzmKi4vxwQcfoEuXLvDx8YFarUbLli0xYsQI/PLLL2a3d+7cOaNjsWLFCqhUKpw7d87ka0tKSjBx4kTExcWhWbNmDv9/h8zz66+/Yvjw4QgLC4NGo4GXlxc6d+6MtLQ0XL161ez2pk+fDpVKZbAtJiYGMTExFvXzq6++wkMPPQSNRoOgoCCMGzcON27ckP36qVOnIjExEcHBwVCpVBg2bJhF/dEpLi7GnDlz0LVrV9x3331wdXWFv78/+vTpg/T0dJSXl1tlPw1JF2+qP3x8fNCxY0csWLAAlZWVtu4i2TnGHcs4YtzRuXTpEt59911ERETAy8sLGo0GrVq1wltvvYXs7Gyz26vpWunEiRMYO3YsunXrBk9PT9nX76bs2bMHI0eORGRkJNRqtazrs9rITk727dtn8Ojbty/c3d2Ntnfu3FmyLWskJ/cKb29vLF++3Gh7Tk4Odu7cCR8fHxv0yrSzZ8+iU6dOmDNnDnr27InVq1dj69atmDFjBi5duoTIyEgUFRU1WH8KCwuxdOlSlJeX45lnnmmw/ZLyLVu2DJGRkTh48CD+9re/4YcffsDatWvx7LPPYsmSJXj55Zdt3UUAwJdffonBgwfj4YcfxubNmzFt2jSsWLECAwYMkN3Ghx9+iMLCQjz11FNwc3OzSr+ys7PRqVMnfPDBB3j88cexatUq7NixAx9//DGCg4MxYsQIzJ492yr7soU33nhD/9mWkZGBxx57DG+//TYmTpxo666RHWPcsYwjx50DBw4gIiICy5cvx6BBg/Ddd9/hhx9+wIQJE/DLL7/gkUcescp+Dh06hMzMTDRu3Bi9e/e2Spvbt2/Hjz/+iJCQEHTv3t2yxkQdJScnC09Pzzq91tPTUyQnJ9d110IIIQCIadOmWdSGkmVlZQkAYuTIkQKA+OOPPwzKp06dKpo3by4SEhJEaGiobTpZA61WKyIiIoSPj484fvx4jXU2bdokSktLzWo3JydHABCfffaZfttnn30mAIicnByTr62qqhJVVVVCCCH++usvh/+/Q/Ls3btXODs7iz59+oiysjKj8vLycrFu3Tqz2502bZq4O7RGR0eL6OjoOvVTq9WKwMBAERcXZ7D9yy+/FADEpk2bZLVTWVmp/7c1YnBFRYVo27atuO+++8TJkydrrHPu3Dmxdu1ai/ZjC7p4M3fuXKOyqKgoERgYaINekSNg3EmuU390HDnuFBUViYCAANGiRQtx4cKFGut88803Zrdb07VS9b/LN998IwCIrKwss9uurnqbc+fOlXV9Vhur/ubk6tWrGDt2LIKDg+Hm5ob7778fU6ZMMRheU6lUKC0txcqVK/XD5bphx7/++gtjx45F27Zt4eXlBT8/P/Tq1Qu7d++uc58uXryIQYMGwdvbG/fddx9efPFFHDx4sMbbpQ4dOoSnnnoKjRs3hkajQadOnZCRkWFQRzc8lpWVhTFjxqBp06Zo0qQJBgwYgLy8PKP9f/311/phMy8vL8THx+PIkSOy+x8bG4sWLVrg008/1W+rqqrCypUrkZycDCcn4z/hokWL0KNHD/j5+cHT0xMRERFIS0tDRUWFQb2YmBi0b98eu3fvxqOPPgp3d3cEBwfjvffeq/NtC5mZmTh+/DgmT56M9u3b11gnISEBHh4e+ufZ2dlISkqCn58f1Go1HnzwQSxatKhO+6+J7v8ZUXUpKSlQqVRYunQp1Gq1Ubmbmxueeuopg22Wns91sX//fuTn52P48OEG25999ll4eXlh7dq1stqpKVZYYu3atTh58iSmTJmCBx98sMY6oaGhRqOVxcXFmDBhAsLCwuDm5obg4GCMGzcOpaWlBvVUKhVef/11fP7553jwwQfh4eGBjh07YsOGDUb7qe8YUp2vry9cXV0NtpWXl+Odd95BQEAAPDw80KNHDxw+fBgtW7Y0uI3F3M8PcjyMO5Zx5LizbNkyFBQUIC0tDc2bN6+xzqBBgwyef//99+jWrRs8PDzg7e2N2NhY7Nu3T3Jf5vxdZsyYga5du6Jx48bw8fFB586dsXz5cggh6tymZP+s1VBZWRl69uyJVatWYfz48di4cSOGDBmCtLQ0gyHAffv2wd3dHX379tUPl3/yyScAoL/Pctq0adi4cSM+++wz3H///YiJianTvXClpaXo2bMnsrKy8I9//AMZGRnw9/fH888/b1Q3KysLjz32GK5fv44lS5Zg3bp1eOihh/D888/X+JuPkSNHwtXVFenp6UhLS8POnTsxZMgQgzopKSkYPHgw2rZti4yMDHz++ecoKSlBVFQUTp48Kes9ODk5YdiwYVi1apU+Ydi6dSsuXrxoFDR0zp49i6SkJHz++efYsGEDXn75ZcydOxejRo0yqltQUIAXXngBL774ItatW4dBgwZh9uzZeOuttwzqDRs2TNb9g1u3bgUA2bdPnTx5Eg8//DB+++03zJs3Dxs2bMCTTz6JN998EzNmzJDVBpG5KisrsWPHDkRGRqJFixayXmON87k6uefUb7/9BgDo0KGDwXZXV1e0adNGX97Qtm3bBgBGF1Km3Lx5E9HR0Vi5ciXefPNNbN68GZMmTcKKFSvw1FNPGX3Ybdy4EQsXLsTMmTPx7bffonHjxujfvz/+/PNPfR1zYkhMTIxZX1RUVVVBq9VCq9WisLAQn376KX744QcMHTrUoN7w4cOxYMECDB8+HOvWrcPAgQPRv39/XL9+vcZ25Xx+kONh3LGcI8edrVu3wtnZGf369ZP1vtLT0/H000/Dx8cHq1evxvLly3Ht2jXExMRgz549stqQ49y5cxg1ahQyMjLw3XffYcCAAXjjjTcwa9Ysq+3DSF2Hb+6+rWvJkiUCgMjIyDCo949//EMAEFu3btVvkzu0p9VqRUVFhejdu7fo37+/QRlk3JqzaNEiAUBs3rzZYPuoUaOMbhFq06aN6NSpk6ioqDCom5iYKAIDA/XDVbrhsbFjxxrUS0tLEwBEfn6+EEKI3Nxc4eLiIt544w2DeiUlJSIgIEA899xzJvuuu63rm2++EX/++adQqVRiw4YNQgghnn32WRETEyOEEOLJJ580eVtXZWWlqKioEKtWrRLOzs7i6tWr+rLo6GgBwGgI+ZVXXhFOTk7i/Pnz+m0jRowQzs7O4ty5cyb73adPHwGgxuHqmsTHx4vmzZuLoqIig+2vv/660Gg0+v5acltXdbyti4QQoqCgQAAQL7zwgqz65pzPcm+vkHtOffDBBwaxpbq4uDjRunVrWe+hOmvcXlHbuV5VVSUqKir0D61Wqy9LTU0VTk5O4uDBgwavWbNmjdGtIgCEv7+/KC4u1m8rKCgQTk5OIjU1Vb9NbgwRQohevXoJZ2dnyfemizc1PYYNG2bwnk6cOCEAiEmTJhm0sXr1agHA4DjL/fwgx8S4w7hjSps2bURAQIBkPSHuXNsFBQWJiIgIg9upSkpKhJ+fn+jevbt+m9S1kjm3demuKWfOnCmaNGmiv2X+boq5rWvHjh3w9PQ0GnLSDWlv375dVjtLlixB586dodFo4OLiAldXV2zfvh2nTp0yu0+7du2Ct7c3+vTpY7B98ODBBs/PnDmD33//HS+++CIA6L8p02q16Nu3L/Lz83H69GmD19ydteu+XTh//jwAYMuWLdBqtXjppZcM2tNoNIiOjjZrJCgsLAwxMTH49NNPUVhYiHXr1mHEiBG11j9y5AieeuopNGnSBM7OznB1dcVLL72EyspK/PHHHwZ1vb29jd5LUlISqqqq8NNPP+m3LV++HFqtFqGhobL7LaWsrAzbt29H//794eHhYXTcy8rKsH//fqvtj6iurHk+65h7TtX2zVv17dX7ptVqjb4RbAgfffQRXF1d9Y+OHTvqyzZs2ID27dvjoYceMuhnfHx8jbPF9OzZE97e3vrn/v7+8PPz08dZc2PI9u3bodVqZb+Xt956CwcPHsTBgweRlZWFlJQUZGRkGHyG7Nq1CwDw3HPPGbx20KBBcHFxqbFdqc8PIoBxxxyOFHfkOH36NPLy8jB06FCD26m8vLwwcOBA7N+/Hzdv3rTKvnbs2IEnnngCvr6++mvK999/H4WFhbh8+bJV9nG3miNnHRQWFiIgIMDoP7Kfnx9cXFxQWFgo2cb8+fPxzjvvYPTo0Zg1axaaNm0KZ2dnvPfee3VKTgoLC+Hv72+0/e5tly5dAgBMmDABEyZMqLGtK1euGDxv0qSJwXPdvaO3bt0yaPPhhx+usT1z7817+eWXMXz4cMyfPx/u7u5GSaBObm4uoqKiEB4ejo8++ggtW7aERqPBgQMH8Nprr+n7p1PT8QkICAAAWX+zu4WEhAC4M5tYmzZtTNYtLCyEVqvFxx9/jI8//rjGOncfdyJraNq0KTw8PJCTkyOrvrXPZ3PoYk1N8ezq1ato3LgxgDtD72FhYQblWVlZFk8lWhvduX7+/Hm0bt1avz0pKQmPP/44AGDUqFEGvzm8dOkSzpw5Y/SbDR2pOAvcibW6OFbfMaR58+bo0qWL/rnu9ozJkydjy5YtiI+P18fJu/82Li4uNfYfkP78IMfEuGM5R447ISEhyM7ORmlpKTw9PU3W1cWdwMBAo7KgoCBUVVXh2rVrBr/vrYsDBw4gLi4OMTExWLZsGZo3bw43NzdkZmbigw8+qLeYZbXkpEmTJvj5558hhDBIUC5fvgytVoumTZtKtvHFF18gJiYGixcvNtheUlJS5z4dOHDAaHtBQYHBc13fJk+eXOsUeeHh4WbtW9fmmjVrrDLaMGDAALz22muYM2cOXnnlFbi7u9dYLzMzE6Wlpfjuu+8M9nv06NEa6+uCX3W641PbB6sp8fHxWLp0KTIzM/Huu++arNuoUSM4Oztj6NCheO2112qsc3fQI7IGZ2dn9O7dG5s3b8bFixdr/fGhjrXPZ3NEREQAAI4fP462bdvqt2u1Wvz+++/6b/GDgoJw8OBBg9eaG7fMERsbi6VLl+L77783+FLHz88Pfn5+AO6MzFa/SGjatCnc3d0NJvioTs7nRHW2iCG6UY5jx44hPj5eHycvXbqE4OBgfT3d71SIdBh3LOfIcSc+Ph5bt27F+vXr8cILL5isq4s7+fn5RmV5eXlwcnJCo0aNzO7D3b766iu4urpiw4YN0Gg0+u31vRyI1ZKT3r17IyMjA5mZmejfv79++6pVq/TlOtUz0OpUKpXR7BW//vor9u3bJ/vHY9VFR0cjIyMDmzdvRkJCgn77V199ZVAvPDwcrVq1wrFjx5CSkmL2fmoSHx8PFxcXnD17FgMHDrS4PXd3d7z//vv46aefMGbMmFrr6RLD6sdRCIFly5bVWL+kpATff/+9wW0G6enpcHJyQo8ePczu59NPP42IiAikpqYiMTGxxhm7tmzZgqioKHh4eKBnz544cuQIOnToYLU50InkmDx5MjZt2oRXXnkF69atM/r/V1FRgR9++AH9+vWz+vlsjq5duyIwMBArVqwwmMxjzZo1uHHjhv4LFTc3N4Nv+etb//790bZtW6SkpCAxMVFypBQAEhMTkZKSgiZNmlglabBFDNF90aO7ENLFya+//tpgna81a9ZY/VYOsn+MO5Zx5Lijm7xo4sSJiIqKMviyQ0f3g/Tw8HAEBwcjPT0dEyZM0F/7lZaW4ttvv9XP4GUplUoFFxcXODs767fdunULn3/+ucVtm2K15OSll17CokWLkJycjHPnziEiIgJ79uxBSkoK+vbtiyeeeEJfNyIiAjt37sT69esRGBgIb29vhIeHIzExEbNmzcK0adMQHR2N06dPY+bMmQgLC6tTkE9OTsaHH36IIUOGYPbs2XjggQewefNmbNmyBYDhkOi///1vJCQkID4+HsOGDUNwcDCuXr2KU6dO4ZdffsE333xj1r5btmyJmTNnYsqUKfjzzz/Rp08fNGrUCJcuXcKBAwfg6elp9mxU48ePx/jx403WiY2NhZubGwYPHoyJEyeirKwMixcvxrVr12qs36RJE4wZMwa5ublo3bo1Nm3ahGXLlmHMmDH64VPgzkmzcuVKnD171uQ3OM7Ozli7di3i4uLQrVs3jBkzBj179oSnpyfOnz+PNWvWYP369fr+fPTRR3j88ccRFRWFMWPGoGXLligpKcGZM2ewfv167Nixw6xjVJvNmzejtLRUPwp38uRJrFmzBgDQt29fq5zEZF+6deuGxYsXY+zYsYiMjMSYMWPQrl07VFRU4MiRI1i6dCnat2+Pfv361cv5bM45lZaWhqFDh2LUqFEYPHgwsrOzMXHiRMTGxhr9pq42u3btwl9//QXgzqxBuvMRuPNFTrNmzQAAO3fuRM+ePTFt2jRMnz7dZL8yMzMRHx+PRx55BK+88gpiYmLQqFEjXL9+HT///DOOHTtmMN3nuHHj8O2336JHjx54++230aFDB1RVVSE3Nxdbt27FO++8g65du8p6PzrmxJDevXtj165dsj9PcnNz9feOl5aWYt++fUhNTUVoaKj+4qxdu3YYPHgw5s2bB2dnZ/Tq1QsnTpzAvHnz4OvrW6+33pD9Ydxh3KmNr68v1q1bh8TERHTq1Amvv/46unXrBjc3N2RnZ+OLL77AsWPHMGDAADg5OSEtLQ0vvvgiEhMT9beyzZ07F9evX8ecOXNM7uvmzZvYtGkTAOhj3K5du3DlyhV4enrqv9B/8sknMX/+fCQlJeHVV19FYWEh/vnPf9Y4DfZff/2l/w3e8ePHAdy59mrWrBmaNWuG6OhomUcX1l2EsbCwUIwePVoEBgYKFxcXERoaKiZPnmw0q8LRo0fFY489Jjw8PAQA/WwS5eXlYsKECSI4OFhoNBrRuXNnkZmZKZKTk41mpILMGZdyc3PFgAEDhJeXl/D29hYDBw4UmzZtqnGWqmPHjonnnntO+Pn5CVdXVxEQECB69eollixZoq+jm/Xg7lkfdLNr3T3bQWZmpujZs6fw8fERarVahIaGikGDBokff/zRZL+rz9ZlSk2zda1fv1507NhRaDQaERwcLP72t7+JzZs3G/UvOjpatGvXTuzcuVN06dJFqNVqERgYKP7+978bzVqWnJxs1swL169fF7NmzRKdO3cWXl5ewtXVVYSEhIghQ4aI//znPwZ1c3JyxIgRI0RwcLBwdXUVzZo1E927dxezZ882qAMLZusKDQ2tdfadus4mQY7h6NGjIjk5WYSEhAg3Nzfh6ekpOnXqJN5//31x+fJlg7pyzme5s+aYe06lp6eLDh06CDc3NxEQECDefPNNUVJSIvt96mbnq+lRPS6sX79eADCIe6YUFRWJlJQU8fDDDwsfHx/h4uIi/Pz8RGxsrFi0aJHRgqs3btwQU6dOFeHh4cLNzU34+vqKiIgI8fbbb4uCggJ9PQDitddeM9pfaGio0Yw/cmJI9WMgpabZujQajWjdurUYN26c0QxGZWVlYvz48cLPz09oNBrx6KOPin379glfX1/x9ttv6+uZ+/lBjotxh3GnNgUFBWLSpEmiXbt2wsPDQ6jVavHAAw+IUaNGGS1unZmZKbp27So0Go3w9PQUvXv3NrrGqulaydSMhHdfU3766aciPDxcqNVqcf/994vU1FSxfPlyozZ1caymh7mLgaqEsMG0CjaWkpKCqVOnIjc3V/KeT0cWExODK1eu2Gy+ciJSnokTJ2L16tXIzs42uMeYzLN371489thj+PLLL5GUlGTr7hApGuMOVWe127qUauHChQCANm3aoKKiAjt27MC//vUvDBky5J5OTIiIapKVlYX33nuPFwhm2LZtG/bt24fIyEi4u7vj2LFjmDNnDlq1alXrJCtE9D+MO1SdwycnHh4e+PDDD3Hu3DmUl5cjJCQEkyZNwtSpU23dNSIixbl75h2S5uPjg61bt2LBggUoKSlB06ZNkZCQgNTUVF5sEcnAuEPV3ZO3dRERERERkfJwGhEiIiIiIlIEJidERERERKQITE6IiIiIiEgRHOYH8VVVVcjLy4O3t7d+pUxSBiEESkpKEBQUxAXJ6J7HWKVcjFVEhhivlMnRY5XDJCd5eXlo0aKFrbtBJly4cIHTN9M9j7FK+RiriO5gvFI2R41VDpOceHt7N9i+7rvvPpPlTZs2lWwjKirKZPmmTZsk23Bzc5Osc+nSJZPlt2/flmzDWhryb0SkVEo6Dzw9PSXreHl5mSyXijH2SEl/IyJbsrdzISAgwGR5QUFBA/WkYdjb30cuh0lOGnK4UWpfzs7Okm1IJRZyhunk1FHSMKyS+kJkK0o6D+T0xRFvGZCipL8RkS3Z27lwr8Ure/v7yHVv/RWJiIiIiEixmJwQEREREZEiMDkhIiIiIiJFYHJCRERERESKwOSEiIiIiIgUoUGSk59++gn9+vVDUFAQVCoVMjMzDcqFEJg+fTqCgoLg7u6OmJgYnDhxoiG6RkSkx1hFRPaC8YocVYNMJVxaWoqOHTti+PDhGDhwoFF5Wloa5s+fjxUrVqB169aYPXs2YmNjcfr06Qafw1nONHSPPPKIyXI565z06dPHZHlubq5kGxqNRrKO1JTFp0+flmzj6NGjknWIHIE9xSqp9UfkuHHjhsV15PQjJiZGss7hw4dNlss5vn/88YdkHSJHYU/xSo6goCCT5Xl5eYroBwD4+PiYLP/vf/8r2UZJSYnsPt1rGiQ5SUhIQEJCQo1lQggsWLAAU6ZMwYABAwAAK1euhL+/P9LT0zFq1KiG6CIREWMVEdkNxityVDb/zUlOTg4KCgoQFxen36ZWqxEdHY29e/fasGdERP/DWEVE9oLxiuyZzVeILygoAAD4+/sbbPf398f58+drfV15eTnKy8v1z4uLi+ung0REYKwiIvvBeEX2zOYjJzoqlcrguRDCaFt1qamp8PX11T9atGhR310kImKsIiK7wXhF9sjmyUlAQACA/2X5OpcvXzbK+KubPHkyioqK9I8LFy7Uaz+J6N7GWEVE9oLxiuyZzZOTsLAwBAQEYNu2bfptt2/fxq5du9C9e/daX6dWq+Hj42PwICKqL4xVRGQvGK/InjXIb05u3LiBM2fO6J/n5OTg6NGjaNy4MUJCQjBu3DikpKSgVatWaNWqFVJSUuDh4YGkpKSG6B4REQDGKiKyH4xX5KgaJDk5dOgQevbsqX8+fvx4AEBycjJWrFiBiRMn4tatWxg7diyuXbuGrl27YuvWrXWeh9vU/ZQuLqbfsoeHh2T7UnU+/PBDyTak+iFVDshbf+TQoUMmy7VarWQbUn8HztVNjqKhY1V969Kli8lyOWuUWGPtEGu0wThDZMjR4pXUOiZy1h+RIue9y1lPRWpESWo9PAA4cOCAyfJ7OeaphBDC1p2whuLiYvj6+gKo/+SkV69eJsv//e9/S7Yh1Y///Oc/km1YIzk5e/asZBumZvYA5J9ARUVFHCKme171WGUJOYmFUpITOazxQZyfn2+FnjBWEelYK15ZgzWSEzlxRk6dNm3amCwPDg6WbMMayYmjxiqb/+aEiIiIiIgIYHJCREREREQKweSEiIiIiIgUgckJEREREREpApMTIiIiIiJSBCYnRERERESkCExOiIiIiIhIERpkEcaGpFKpTK5zIjUfdFhYmOQ+NBqNyfLff/9dso2oqCiT5deuXZNs4+TJk5J1qq8eW5O//vpLsg2ptV9u3rxpslwIgaqqKsn9ENH/SK1BImeV58jISJPlO3fulGxj+vTpJssPHz4s2Yac/UjN6W+tNUyIqOHJWfxQauFCOW1cvHjRZHnXrl0l25CzvojUGiWnTp2SbEOKqfcrhMCNGzcs3odSceSEiIiIiIgUgckJEREREREpApMTIiIiIiJSBCYnRERERESkCExOiIiIiIhIEZicEBERERGRIjA5ISIiIiIiRXC4dU7c3NxMrnMitXaAHNnZ2SbLU1JSJNt4+eWXTZanp6dLtnH8+HHJOtevXzdZLoSQbEOtVpssd3d3l9xHaWmp5H6I7iWenp4mY1VQUJDJ1+fl5UnuQ6qOnLVDBg8ebLJcah0UQN66AdZYx0QqvjvyugBEtiS1Bkl4eLjFbchx8OBBk+Vy1qEbOnSoZJ3//ve/svtUG6n3KyduOiqOnBARERERkSIwOSEiIiIiIkVgckJERERERIrA5ISIiIiIiBSByQkRERERESkCkxMiIiIiIlIEJidERERERKQITE6IiIiIiEgRHG4RRicnJ5MLm0ktGChn0ZuKigqT5VKLNALAuXPnTJbLWSxMzsKGVVVVknUsJbWQo5yFHonuNV5eXnByqv37odatW1u8j8OHD5sslxPvunTpYrL8jz/+MKtP9UkqbgYGBposr6qqwqVLl6zZJaJ7Qu/evU2Wy4k1Bw4csLiNJ554wmS5nIUeDx06JFnHGgtGSgkODq61rLKyUta1pr3iyAkRERERESkCkxMiIiIiIlIEJidERERERKQITE6IiIiIiEgRmJwQEREREZEiMDkhIiIiIiJFYHJCRERERESKoIjkZPr06VCpVAaPgIAAW3eLiMgI4xUR2QPGKrJXilmEsV27dvjxxx/1z52dnevUjo+Pj8mFzcrKyky+3tRrda5cuWKyvLKyUrKN/Px8k+VyFi4sLy+XrCPn/RCReawRr1q1agUXl9pDsNQCig3FGv3w8vKSrCNn4VkpUossSsVdIkdjrWurVq1amXztxYsXTb6+a9eukvs4deqUyXI5izBu375dso6UhlhgEZB+P6bKHX1xa8UkJy4uLszoicguMF4RkT1grCJ7pJiv1bOzsxEUFISwsDC88MIL+PPPP23dJSKiGjFeEZE9YKwie6SIkZOuXbti1apVaN26NS5duoTZs2eje/fuOHHiBJo0aVLja8rLyw1uayouLm6o7hLRPczceMVYRUS2wGsrsleKGDlJSEjAwIEDERERgSeeeAIbN24EAKxcubLW16SmpsLX11f/aNGiRUN1l4juYebGK8YqIrIFXluRvVJEcnI3T09PREREIDs7u9Y6kydPRlFR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bCMiIkJulyzC9VLqV4MkJ4cOHULPnj31z8ePHw8ASE5OxooVKzBx4kTcunULY8eO1S8UtHXrVlkfekRE1sJYRUT2gvGKHFWDJCcxMTEQQtRarlKpMH36dEyfPr0hukNEVCPGKiKyF4xX5Khs/psTIiIiIiIigMkJEREREREpBJMTIiIiIiJSBCYnRERERESkCExOiIiIiIhIEZicEBERERGRIjTIVMINydnZGSqVqtZyJyfT+ZjUIo0AUFZWZrK8oKBAso3KykqT5V26dJFsY/fu3ZJ13N3dTZb/3//9n2QbTZo0MVm+Z88ek+VCCC6ORmRlcs6pDRs2WLwfqcUe//jjD8k2li5danE/5KzNILVg5OHDhy3uBxGZT86ihVILKB4/flyyjdDQUJPlixYtkmzjwoULknWk3o/UdREgvWD3b7/9JtmGo+LICRERERERKQKTEyIiIiIiUgQmJ0REREREpAhMToiIiIiISBGYnBARERERkSIwOSEiIiIiIkVgckJERERERIpwz61zcvnyZZOv12q1kvuQmkdbzvoD58+fN1k+d+5cyTbkzKNdUVFhsrykpESyjZs3b5osl1p/oKqqiuucENmA1BolUuuCANJrg8hZw2T9+vWSdSIjIy0qB4D8/HyT5VLHQwiB0tJSyf0QkfVt3LjRZPngwYMl29i0aZPJ8ieffFKyjaKiIsk6vr6+FpXLYaoNIQSKi4st3odSceSEiIiIiIgUgckJEREREREpApMTIiIiIiJSBCYnRERERESkCExOiIiIiIhIEZicEBERERGRIjA5ISIiIiIiRWByQkREREREiuBwizB6e3vDyan2nEtqkUVTr9U5d+6cyfKysjLJNjw9PU2W79u3T7KNI0eOSNYpLy83We7j4yPZhouL6f8mpha9lFNORPVDaoHUvLw8i/fxz3/+0+J+yOmLnDaCgoIk6xBRw2vfvr3FbRw/flyyTt++fU2Wp6enW9wPOX15/PHHJdvIzc01WS5nMUhHxZETIiIiIiJSBCYnRERERESkCExOiIiIiIhIEZicEBERERGRIjA5ISIiIiIiRWByQkREREREisDkhIiIiIiIFIHJCRERERERKYIiFmGcPn06ZsyYYbDN398fBQUFZrel0WhMLqR4+/Ztk69Xq9WS+yguLjZZfvPmTck2OnToYLL82LFjFvcDkF4QUs4Cie7u7ibLpRa2rKqqktwHkb2wZryqbyUlJSbLb9y4IdmGl5eXxW3IqUNE1qWkWHXfffdJ1pFa2FDOooRS+7l+/bpkG3KuraT6ImfByIiICJPlISEhtZZptVrs379fch/2ShHJCQC0a9cOP/74o/65s7OzDXtDRFQ7xisisgeMVWSPFJOcuLi4ICAgwNbdICKSxHhFRPaAsYrskWJ+c5KdnY2goCCEhYXhhRdewJ9//mmyfnl5OYqLiw0eREQNwZx4xVhFRLbCayuyR4pITrp27YpVq1Zhy5YtWLZsGQoKCtC9e3cUFhbW+prU1FT4+vrqHy1atGjAHhPRvcrceMVYRUS2wGsrsleKSE4SEhIwcOBARERE4IknnsDGjRsBACtXrqz1NZMnT0ZRUZH+ceHChYbqLhHdw8yNV4xVRGQLvLYie6WY35xU5+npiYiICGRnZ9daR61Wy5pZi4ioPknFK8YqIlICXluRvVDEyMndysvLcerUKQQGBtq6K0REJjFeEZE9YKwie6GIkZMJEyagX79+CAkJweXLlzF79mwUFxcjOTnZ7LYqKipMrnPi7e1t8vVyptmrqKgwWd6yZUvJNrp162ayPC8vT7INIYRkHVdXV5PlctY5kVqnRGoNAzn9JLIX1oxXpkitLyIVywDpdU6k9gHcWSvBlHnz5km2kZ+fL1lHitR7AYDTp0+bLA8KCjJZXllZibNnz5rVLyKlaqhYJYevr6/FdeT8/mX37t0myxMTEyXbkLNGiVRfc3NzJdvw8fExWf7bb79JtuGoFJGcXLx4EYMHD8aVK1fQrFkzPProo9i/fz9CQ0Nt3TUiIgOMV0RkDxiryF4pIjn56quvbN0FIiJZGK+IyB4wVpG9UuRvToiIiIiI6N7D5ISIiIiIiBSByQkRERERESkCkxMiIiIiIlIEJidERERERKQITE6IiIiIiEgRFDGVsDUVFxebXFhQq9WafH3Tpk0l9/HYY4+ZLE9ISJBso3nz5ibLt23bJtmGnEXJpBZQ1Gg0km1ILTpZWloq2QYRmUdqcdMuXbpItiG1yOL69esl21i6dKnJcmssBgkA4eHhJsvlLEwrtdijNRaDJCJjISEhJsvPnz8v2YbUtZWc9VnmzJljcT+Kiook68hZEFLKvbzIohSOnBARERERkSIwOSEiIiIiIkVgckJERERERIrA5ISIiIiIiBSByQkRERERESkCkxMiIiIiIlIEJidERERERKQIDrfOSVlZmclyqXU/PD09Jfdx5coVk+W///67ZBvu7u4my9u1ayfZhpubm2Sd4uJik+U3b96UbKOwsFCyDhFZl9QaJadPn5ZsQ2pdj6SkJIvbkEPOWihS7ycoKEiyDa5jQmQbubm5Jst9fX0l27hw4YLJcjnxas+ePSbLExMTJdvYsGGDZB0pct6vnPVU7lUcOSEiIiIiIkVgckJERERERIrA5ISIiIiIiBSByQkRERERESkCkxMiIiIiIlIEJidERERERKQITE6IiIiIiEgRmJwQEREREZEiqIQQwtadsIbi4mJZi95IcXZ2lqwjtVDjY489JtlGixYtTJZXVFRItiFnccRff/3VZHleXp5kG7dv35asI0dRURF8fHys0haRvbJWrLIGqYUeASA8PNxkeWRkpGQbrVu3lqwzffp0yTpSbty4YXEbAGMVkY6S4pUcISEhJssjIiIk25CzOKLUopNS5dbiqLGKIydERERERKQITE6IiIiIiEgRmJwQEREREZEiMDkhIiIiIiJFYHJCRERERESKwOSEiIiIiIgUgckJEREREREpgoutO6A0lZWVknWKi4tNlru4SB/W1atXmyyvqqqSbEPOfuTM101E9yY564IcPnzYonJA3noq1lqjhIjuXUpZf4Qso6iRk08++QRhYWHQaDSIjIzE7t27bd0lIqIaMV4RkT1grCJ7o5jk5Ouvv8a4ceMwZcoUHDlyBFFRUUhISGCWS0SKw3hFRPaAsYrskUoIIWzdCQDo2rUrOnfujMWLF+u3Pfjgg3jmmWeQmpoq+fri4mL4+vrWZxdl69evn2SdnTt3mix3xNu6ioqK4OPjY+tuEFnMknilpFjVUOztti7GKnIUjnRtRcYcNVYpYuTk9u3bOHz4MOLi4gy2x8XFYe/evTW+pry8HMXFxQYPIqL6Zm68YqwiIlvgtRXZK0UkJ1euXEFlZSX8/f0Ntvv7+6OgoKDG16SmpsLX11f/aNGiRUN0lYjucebGK8YqIrIFXluRvVJEcqKjUqkMngshjLbpTJ48GUVFRfrHhQsXGqKLREQA5McrxioisiVeW5G9UcRUwk2bNoWzs7NRJn/58mWjjF9HrVZDrVY3RPeIiPTMjVeMVURkC7y2InuliJETNzc3REZGYtu2bQbbt23bhu7du8tqQyG/6wcAVFRUSD6EEA3yUBKl9YeoLiyNV/fiecBYRdTwHO3aiow56t9HESMnADB+/HgMHToUXbp0Qbdu3bB06VLk5uZi9OjRsl5fUlJSzz2U74cffrB1FxSppKSEs36QQ7AkXikpVjWU0tJSW3fBLIxV5Cgc6dqKjDlqrFJMcvL888+jsLAQM2fORH5+Ptq3b49NmzYhNDRU1uuDgoJw4cIFeHt7Q6VSobi4GC1atMCFCxcccpo1W6nLcRVCoKSkBEFBQfXcO6KGYUm8ujtWAXU7r8g0xioiXlvZA8YqY4pZ58TadHNzO+oc0LbC40pkfTyvrI/HlMj6eF5ZH4+pMUX85oSIiIiIiIjJCRERERERKYLDJidqtRrTpk3jlHhWxuNKZH08r6yPx5TI+nheWR+PqTGH/c0JERERERHZF4cdOSEiIiIiIvvC5ISIiIiIiBSByQkRERERESkCkxMiIiIiIlIEh01OPvnkE4SFhUGj0SAyMhK7d++2dZfsxk8//YR+/fohKCgIKpUKmZmZBuVCCEyfPh1BQUFwd3dHTEwMTpw4YZvOEtk5xirLMF4RNQzGKsswVsnnkMnJ119/jXHjxmHKlCk4cuQIoqKikJCQgNzcXFt3zS6UlpaiY8eOWLhwYY3laWlpmD9/PhYuXIiDBw8iICAAsbGxKCkpaeCeEtk3xirLMV4R1T/GKssxVplBOKBHHnlEjB492mBbmzZtxLvvvmujHtkvAGLt2rX651VVVSIgIEDMmTNHv62srEz4+vqKJUuW2KCHRPaLscq6GK+I6gdjlXUxVpnmcCMnt2/fxuHDhxEXF2ewPS4uDnv37rVRrxxHTk4OCgoKDI6vWq1GdHQ0jy+RGRir6h/jFZHlGKvqH2OVIYdLTq5cuYLKykr4+/sbbPf390dBQYGNeuU4dMeQx5fIMoxV9Y/xishyjFX1j7HKkMMlJzoqlcrguRDCaBvVHY8vkXXwXKp/PMZEluN5VP94jO9wuOSkadOmcHZ2Nso0L1++bJSRkvkCAgIAgMeXyEKMVfWP8YrIcoxV9Y+xypDDJSdubm6IjIzEtm3bDLZv27YN3bt3t1GvHEdYWBgCAgIMju/t27exa9cuHl8iMzBW1T/GKyLLMVbVP8YqQy627kB9GD9+PIYOHYouXbqgW7duWLp0KXJzczF69Ghbd80u3LhxA2fOnNE/z8nJwdGjR9G4cWOEhIRg3LhxSElJQatWrdCqVSukpKTAw8MDSUlJNuw1kf1hrLIc4xVR/WOsshxjlRlsOVVYfVq0aJEIDQ0Vbm5uonPnzmLXrl227pLdyMrKEgCMHsnJyUKIO1PeTZs2TQQEBAi1Wi169Oghjh8/bttOE9kpxirLMF4RNQzGKsswVsmnEkIIG+REREREREREBhzuNydERERERGSfmJwQEREREZEiMDkhIiIiIiJFYHJCRERERESKwOSEiIiIiIgUgckJEREREREpApMTIiIiIiJSBCYnRERERESkCExOiIiIiIhIEZicEBERERGRIjA5ISIiIiIiRWByQkREREREivD/ATiYkB2+SzZPAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(3, 3, figsize=(10, 5))\n", "cell_id = [0,1,2]\n", "i = 0\n", "for cell in cell_id:\n", " cell_gene = map_all_genes_low_res[cell]\n", " cell_gene_sum = cell_gene.sum(axis = 0)\n", " counts = np.sum(cell_gene, axis=(0, 1))\n", " ax[i,0].imshow(cell_gene_sum, cmap='gray')\n", " ax[i,0].set_title(\"Total gene Map: Cell \" + str(cell))\n", " ax[i,0].invert_yaxis()\n", " ax[i,1].imshow(cell_gene[gene_names.index('Bgn'),:,:,], cmap='gray')\n", " ax[i,1].set_title(\"Cell: \" + cell_names[cell] + \", Gene: \" + 'Bgn')\n", " ax[i,1].invert_yaxis()\n", " ax[i,2].imshow(cell_gene[gene_names.index('Col1a1'),:,:,], cmap='gray')\n", " ax[i,2].set_title(\"Cell: \" + cell_names[cell] + \", Gene: \" + 'Col1a1')\n", " ax[i,2].invert_yaxis()\n", " i+=1\n", "plt.tight_layout()\n", "\n", "plt.show()\n", "plt.close()\n" ] } ], "metadata": { "kernelspec": { "display_name": "pytorch", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.14" } }, "nbformat": 4, "nbformat_minor": 2 }