{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Cloud Masks\n", "\n", "The products contain several raster and vector files that represent cloud masks or cloud propabilities.\n", "\n", "This notebook explores the contents of these files and evaluates how a helper for dealing with cloud masks can be implemented." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from sentinel_helpers import scihub_band_paths\n", "product_path = 'input/tempelhofer_feld/S2A_MSIL2A_20190114T101351_N0211_R022_T32UQD_20190114T113404.zip'" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'zip+file://input/tempelhofer_feld/S2A_MSIL2A_20190114T101351_N0211_R022_T32UQD_20190114T113404.zip!/S2A_MSIL2A_20190114T101351_N0211_R022_T32UQD_20190114T113404.SAFE/GRANULE/L2A_T32UQD_A018609_20190114T101352/QI_DATA/MSK_CLDPRB_20m.jp2'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "raster_cloud_mask = scihub_band_paths(product_path, ['MSK_CLDPRB'], '20m')[0]\n", "raster_cloud_mask" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import rasterio as r\n", "import rasterio.plot as rplt" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQUAAAEDCAYAAAA8zxGMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAACAoUlEQVR4nO2dd3gcxdnAf7O7d6fem1VsS+69V0oMTugl9BYgQCDUAIEEQvIlJKTQCb0klNB7x5TQi7uNe5FlSbaKrd5PurI73x97d7qT7lRs2ZbJ/p7Hj+92Z2dm9zTvzrzzFiGlxMLCwsKPcqA7YGFhMbiwhIKFhUUIllCwsLAIwRIKFhYWIVhCwcLCIgRLKFhYWIQwaIWCEOIpIUS1EGJDH8ufKYTYJITYKIR4cV/3z8Lih4oYrHYKQojDgVbgWSnlxF7KjgJeBY6UUjYIITKklNX7o58WFj80Bu1MQUr5NVAffEwIMUII8ZEQYpUQ4hshxFjfqUuBh6WUDb5rLYFgYbGHDFqhEIEngGuklDOAG4FHfMdHA6OFEN8JIZYKIY45YD20sDjI0Q50B/qKECIOmA+8JoTwH3b4/teAUcACIBf4RggxUUrZuJ+7aWFx0HPQCAXMWU2jlHJqmHPlwFIppQcoEUJsxRQSK/Zj/ywsfhAcNMsHKWUz5oA/A0CYTPGdfhs4wnc8DXM5UXwg+mlhcbDTJ6EghCgVQqwXQqwRQqwMcz5ZCPGWEGKdEGK5EGJi0LljhBBbhRBFQoib+9oxIcRLwBJgjBCiXAhxCXAecIkQYi2wETjZV/xjoE4IsQn4AviNlLKur21ZWFh00qctSSFEKTBTSlkb4fxdQKuU8s++HYGHpZQLhRAqUAj8BHOKvwI4R0q5aaBuwMLCYmAZqOXDeOAzACnlFmC4ECITmA0USSmLpZRu4GU63+4WFhaDkL4qGiXwiRBCAo9LKZ/ocn4tcCrwrRBiNjAMcxcgBygLKlcOzAnXgBDiMuAyABV1RgwJfb4Ji4MHYbMhvV68I+wIAXqbRkxCBzm2RhxCpVVK4jp3lzCQ6EhsKGyoSUd1gdauIztcCEUBmwZeL1I3AImRHItu910cq2N4FYRXMCG1GoHo1p9SdxxRqocs1YVL6tiFQrUeRZMnimjVQ1NzLBIYm1qFDQWJxCMNbELBQNIuBRU700nIaaWhJh57iouRjuZu7biljl2olHtiaGqIJSrRRaa9CQXJ9qZMbC2Qlt1AmuoNXOPBwJCSam88ObY2Gg2NWOGmxYjCITwoQlLSlobapFCQvZs6PRavVIlRXDRsj8cbozEmt5rtG+KRUoKU2MYquHZH09FRj7e9rfsDoe9C4RApZaUQIgP4rxBii8+4yM/twP1CiDXAeuB7wAthfgVTwHQ/aAqaJwASRIqcIxb2sWsW+xM1NQW9rr73gkG4jp+F44MVqJkZlFwxkuFv1iNVFbF5O8W/n4YnxSBl9G5eG/siiUoUS1wqw7VWfvTf67BV2zjz2G+5IXUZp11yNcIr2fkLHVEazewFm1lVkUf0Z3E0TPcSndJOQkwHQxMauDb7vxwSpdBktBMn7KhiaEifPFLHJT1MevdXKG6Fq495nfu2/phnpzzFjXNPASEY+341m88axh8/eZ3byy4jPaqVouY06tpiUO0eJqfsZvGiyRzySjXe5FiKro7isxPuId+WF/Y5NOhOzjr7ShrnRqO6Jclr6rE/2oTjhQLSnljCaUuquSyxEoBVLjenf3g18dktJK9MRt0pSYiBtPXtvPniQwD88ue/Qjk2CvfMVlrabQx/T2POLSvIcjTx+bmzKP0/G9/Nf4pZKy4g+88KyvYyCi8dz8jfrWap56OIv1e/zZyFELdi6g/ujnBeACXAZGACcKuU8mjfud8BSCn/0VMbllD4YaCOGYm+tQjvwhlEFdfyk/fX8smh+TjnjmTXIRrDFjlxJ9k56c7P+FHsFn628hIS344lZU0D3qRoxHdrANDyh9E0I4u4HU6aC2JpHKlw1plf8p9vDkM6DDAgNt2JohgMT26g43eZ/OOFf3Ht1rP5ZOLLxCh2PFKnyegAIE2NZdzjV4KAgn+VIt0eGo8cgTtOYNgh/bGl5C6JZVZCCQ89ezKOBokzS2BvguxP66F4J8JuA0BvbAKg8sb5DFncxk3PPc/CaD3s8/hl+TxK53SAlAibHelxoyYkoLe0gJS8Vb6cGMXOrypnUXRBPsb2HShxsZRdMpbcB1YjoqPRGxq4YlsR86Oq+LI9m9s2Hk/79gSQgomziyl9YwRqh+SBmx+mzXCQpzUx0ubg5KmmPd/Ny/7LHUeexOKyZ2ny1ISdKfQqFIQQsYAipWzxff4v8Bcp5UdBZZIAp5TSLYS4FDhMSnmBEELDVDQuBCowFY3nSik39tSmJRQODoSmIb3e0GMOB0JVYdQwKv4MQ04tZNZqNzahk6g5efi9Y/nuvLs5fMnlfDL3UU79y2/IfL+Y2p8UkPpREXpNDUp8PEJVAgOua3vGoVPRWlw0TEokrsJNW5Yd9cJqlMfSkEIQe005To+dV8Y9R5oazfdug19tPofYexKpmuWgI91g1O/XYHR0gKLSevos4otbkas2gm88bHtwDmkrFWJ3e7B/vBJhs4M0zPsVAtdxM3F8sCJwz1GfJJEd08QjOUsjPq9RX/6cgnPXAGAcOhXl2zVU3jif3MfXI2KieWblWxy54jKG/rwMvblzCeIXIIHvMyei3FXPW6PfwSN1yrwGm9xZ/H7NyXww51F++vBvWX/dI3zWrrIwWkeXBscXzEOJi8U9eTjqF6tZxmc0G/V7vHzIBN7yWRFqwItSyo+EEJcDSCkfA8YBzwohdGATcInvnFcIcTXmlqEKPNWbQLA4eOgqEAAqXh5B1j12FLdOS72Djr/Ppu5h0G2Cm659iQdPf4o2Q7L2kKeYtuRyskrd6HUNJD2/FN03IJWkRIyUeLTkJLwlO7q1JwyJ3FJM4loXAAlzJ6P+SlB+ZwvtW5NYOfp1lnUk8GbrOJ7414lkLm0jdWcN3ooicj4DNTkZ3e0BoPSlCdw74xkeHDc5IBAA4otUkv+zGBTVbNNuw3A6zf5NGIMzTQuY02JISt4cgeftMlgCO72tDFGjAbAJNVBn6qIoAJrPmUvCK6ZAaZvoQra345o3hp/eeAM5ry4LPAcAbfhQPEOSEUvWmgeEQGls4/LcL/nYmchW1xB+k7Kds+/7GSNe2c5Rd13DmDd3ceUZc/m+NofdBV/yecM4XAvGUj/OTu7rO/BChEW8Sa+7D76dgym+fxOklH/zHX/MJxCQUi6RUo6SUo6VUp7qd0zynVskpRwtpRzhv9bih0vun0FZvB6xtpDc91VGPbSTjMX1nHb554x37OKh8iM5d9OFzHjwWvJO38DPH3oHNTUZNSkJdfxoALxl5Ww/JwlPVhKtZ8yh/eTZIW2IxWuRLlMgoKjU/6EDbBput0bu9EoMKTkqxsOFCdswVHBmR+GtqAxcrzc0gKHD3Mksnf8YV396QeBNrERFIRwOcn5aahY2dITDgfPICZT9fp55aONWhDQHLIqK9LhpHu9BtraZeoONFzLhP1eHCASA6At3AZDyRYlZr83OqItWI71etDYv8a8speKmeShTx4MQuI+eSf38bGqnxHRWIiVGaRkd0sZdvz2fN3ZOAyDr/sUYjU2oFVEYOyrYfs1oqmoSeadmKhVXDWP27SvJeWYjW6/PQx0zMry2z/98B6PrtLV8+GGhxMbSfvh4omo7UBrbMEp2Bt762vCheEt3ArDtmRnkPwe2bzcgxhagNLZSsyCXudesZOtMT/jKheDMTbuYGrWTkTadGGHHJlSchpsYxU6hp41rzrgcYUhYWxgyDVcmj8U5LAGpQPQ7y1Hi43HNG0PSH3bwyoiPOCFnhllu6njOevlT7txwFHmnm+E9hKax9aHpjLnaHNTCZkfYNEZ97aGwOYO/5L/NbIctpKvHTToyoKQVNjvK6HxkaTlGW1ugzKKK1Wz3tnPmPb8hrlKnLVPF++NGhtxpQyxdZ85mhKD4H3MZdddWfrXsO5a0jeSb38zD9kmnXaESE4N8Pxn1PJ32Sbnc9fgj3DJiHtvun8lrJzzIEVN1WhvKw4qGg8bM2eLgxWhrw/HhCuSK9ejbikOWHX6BADDkAw3Him1Il4v6KUl4clNJfXMDG2+aHLlyKXnzmFlkq27eb8tl8hPX8FhjDjGKnRJPK6NtsSgbtqPWtYSuyx0OjA3biHpvOXEba8xjQ7NxfLeZ24e9zdPNnTsIxtrNPHTXaSS8HWcO5thYlPh4xt28lcJ/zgAhaDhnBobTyXvrJ/PoiFe6CYTNbickJ/oaF0iPm9JTU2k9KjRUyPinr+K4b6/GOLKBimN0OtLM41G3V1HxxnhqL5uHlj+M0f8sRrY5ufrti/jqd/NR20OVm4bTyfaVQ5Gx0URvreLSO66l/aQZfHbSPbzbPI2CvKqIj9SaKVgcFAhNg0ljkN+HV0lNXKXw1sapjPu9GUpjwYeb+ejaBVRPd5D3zDZkZipyWwnGjLG4k+1EfboO6XKhxMZSfd5k0p5YgpqWinA4OOOzlTx852mkv7XFXGpgLiuU5CRkcgKi3cWC9zZQ0p5OrSuW778bzYxDt9JwSD3C4cC1YBJfPP1vAHRpYCC5vnI+X788gyH3LPbdkGD+Ghff1o5AWViGcDiQLhdaVibe3VWomRnIllaaT5hMVJ0Hx456Ci/PJHfybn6ctYWvL5+DVtvK1svTKXjLhSdew/HRanNZJARlt8xj+L+L0KvM5yFsdn6zZRULo3Xy37mM3f+4H1dp+JmCJRQs+ocQKNHRAaXbvsS/penHffRM7B93TpEDCjtDp+XsuSR+sBGjpcW8NsE0ftObm0FREapKx4+n0JaloXgh6bkl5u3MmsTOY+LJu20xZa9PhDUJxM6tJf1nVehNzSHKR+/CGTjW7aTivFHccfWT3Fp4IikXNiFz0tlydQxjr91M/MdRNC9sZc7yVo6I28wy5whuTNmKKhTOLF5I06E+lxwhUDPSob0DvbmZipvnM/TxzRhOp6kvESKkbS0rE+ly03r4KL5+9Am+bFeIUVysaC9glH03Ux2NXDDySHbcNIOCJ0t5e/l7vNGaxn9mTgw8k6LnpzGvoITSe8aw8a07aPKG35K0lg8W/UJNTEBJSe5+QvSgudpDGqemhXz3CwThcKDExPDl3Q+y63rTQDbh9ZWBP37wCYOsdACU2BikruP4cAUZH5WQ9t9OB1q1vIZhb9XTcvZcls/9NzG7JGlnVaA3t4JQ0HJzAKi7dB7pfylBr6khc3kbd1x9AUknlYIiMNZsYvSlq4j+MIaX8v+Ld94E3nv0cO487lS++nE+7zkTKPj0Yja/Owahab7tTdnZTyDvwbXoTc1ItxttWB7b756Dlj8M47BpaMOHog9Jw2hpoemiFlzSwyXvXMZsh42rksqY6mgkQ41l+23TcY3oYNNfh2ATKmfHNyDHDDOf2axJjLpoI3WXZxH3/hqkHt6WAg6ueAoWgwC9qRmagvbQfbYDSkxMiMJsIIh/JXTPX8sfZm5RThxJ3V/cOISN0y74kmX/Suvc11dUcwoN6IXbOy+WBnL+FGz/2I37kk5tvnfXbhqOzid2t5dZ//o1Se0G226djKNeMPT+NcgYcxvRmSEofG4M6SxBXb0V0dGBkpmBzEyBqmqQkuLXRzFDjiJ7cxHa8BHIyiqUxATuLf4Joy5YbXYvPR3DZ38hbKbeQYmKQp8yErHY3HZsnTSErWc/wjc/1Rhvb+GftfP46PFD6DhhNreNf56x713FuMdq4GzzHjLUWAC2nPcwq9w6U+wAZt2u1CjsgLq7Aa/HjVy3Bc+PZ+De9FXE524tHyz2CiUqyjQC2lu6TJdDTmka6tBcNt+awqgLVqPl5vDB8g8AWOfu4PaKY6k7pAE1ORnn3JE4PgwTW0cItMwMKs4YQeaDi7vfR2ws6Do/WVnN09vmkvJUHFHvLQ+cD2ve7avTu7sq8F1xODA6Onhy57f85MnfMvTPi8leGs+uw1y0njSNuB1tKIU7IScTfWsxGDpabo65ZSoUtCGZ/OXbt5nhsIc05TfLdkqdOGHjrrqpXJe6ikQlmhJPK/91juaNyumULs5j1UX3EaeYwuzrDrhj/tHotXUBBa+amcFX8l3ad5dZyweLgWdABAKEFQhaViYAUZ+lctaib8nPrmXnH+dz4idrAHAabrJUnRfzv0DLyaZlwWhilgfNDoKXNFIikxPCCgQwd0iMjg4+O2Yc2aduJnZLLdqwPLSC4QC0HD7KrFILmlxL2SkQfN9bj5sCisrhX/yK4feuB+COnI8o/Oc0Xr7vHm5/7UmmftVI65hklFhzxqKnJ9Fw4VyM/2ZTcn9KN4EAphFUnBJFhhpLjGLn5rS1fNGezhqXi9P+8RveOWo64ujdaE7Bz7Z3OiLfvuM4ih/MAKGgpqaY91rfiL06sk7ImilYDCrkvCmIJWsRmkbJn2ehOyRF5z4GwNUVc7gs/Ssm26MC5V3Sw4J1ZzM2uZpNj0wk6VlTgaimpyPiY5FNzb06cKnp6RgNDSFbpWp6Olt/N4K4giZyfusOLEWaz51LwouRTZmVqCgMtwekAUIBQ6fxgnks/sfDZr1C4ROnjXtGTQwRhDtfm8TmQ54LW6cuDVTR/f293OXhj6f/HLlqI1peLt6ycgC0guEc9/4qrkoqo1pv48Tf30jqB1shORG9qASAZfIzmmV4M2drpmAxOBACNTkZbWMJzlPnIKePI3ZSPUXnPoZH6jzZlMUV6V/y79rDmHzPldywazr31hcw6dlfkfKLdla9NomY8yvNKf2QLE77ej3u7CT0BnP9rmZmRGy6bW5+N8WbXlPDiNfbTWvgpk4FZsLL4cN++hWISnKSqdOQMqDbSHp2CVOX/ywwsP9x9c8DAkFNT0cdN4r8W9082ZTVrd5WowMvoX1zGm4+cjr4tGUictVGan85jy3X5wbOu/OSuee/xzPhwSv5edEZJD27hMIHhqFvL+3srxJ56FszBYt+MWA6hC5oBcNxDU3BXtXCkx8/zYXnXI0r2U7FAoX8aRXUvpFH2vp2tBWbMTo60HJzkB0d6LWdUffU5GT0hgbUL7Jp6Igm7vYElK/XoA3NpXlGNgmLS/FW1wYGq5qU2Ol01UWnocTEID1eUESnSXUPlP51HiP+WYjQtNAlBabV5vaLctly6SPcUTeKr36c32k/4HcgEwKRk8WiL98IXLfK5SZe8XDX7qNo8Tp4Of9zwJwhXLjyYgquqabx8HyMi2p4atxz3Pijs/DuKKPs9YkBy0s1M4PKM0eS/fI29JqaQN3fpS7FWRNep2DtPlj0C++scSjfromoFOwvSmwsRlsb3uJSbPHR6Ju3cehX1zC6tYO40mpGvF+J0DQyvGasHsPfj/KKbnX5DY1qnhtG6gurKf7TdPSfzkHaJCfMXc2iL2eQNTGW2GOKETY7jceMI/5lcylQ8dt55NzRqW9QUlPQ0xKRa7eEtKGOzA9MwYMZ8c9CcHvw+oSUcdg0bJt2YAwfwvh/beLOlFdwGioeqULQMkW6XEhAHTcKfWsxHzkdTLHX8WTjTD777WHYmtzUTo1hyKJy/vTuBG5JW8P6jjzyL9kBCfHcd8eDFGhunm6aTN1hOSTuKCP3XtPnQk1ORq+u4d3fvMmlDx4a0l+tNvJOkTVTsOgXWsFwcLZ3exv2C78CUEqYOxmWrgs97zM2UrMz8e4o6359GPwzGCU+vtNeQVERU8aitDjZfEsqmVmNVFUlMv535Xira1GiHAEjLL/vQvB36XF3uof7tjrVtNSQ2Un3jpjlSv4+D8UjeOGCf/Jq42x+k/Ydf6lawDcVI0i/3dHp9RiEVjAcz5AkvLEaUatLAu2oCQmI5ET09EQKr3ag2AyEkGS85eCde+8lTY1ll7eVn287G+PWdIRuIG0K2y9SiN3kILpakvzMkpC2LJ2CxYDhLS7FW7XnWfmEw4ESHd050+gqEAAMHelxdxcIPRhIGW4P6qgCqs6bGCinjhtJy8g4Ko8bwpqjHiTlekj/yo6nIIvtd8zGcDpRYmNRRxUgvR4YORTnKXMofGomVZfOBDrdtZvOnYVWMJy2eSNC2vVr9IP7DpD/h+VkzaskW3Xz9Z1zOezJ3/C7jC/IPL04rEAA0BNjUZs6sH2yMkTw6M3NSJuGUrqL4c/DqDs7eHj2CySt2MVNFUcHyuXGNhL710oUl5fGEVE8ddjTrL/uEVJeWIUSH4/nKPOeUFSMpNiIz9ISChb9Zw9nl2pmBtLl2nMTaSlRYmLwLpyBNsSnlPPFO9CG5WKU7CTr8yCBVVVL4tcluJJh5gu/Zvv56SQ/u5z6CTEM/a/pdXnIkjpu/eQVAIz1Wyk/yct9h71M07hQ5V7KqjqMyt288PC9AStHgIqfmelMQ7YqAaRB1Im7OOSdG1DdkoLHtrPJk0jD2TMQDgfhkGu3YGzYEvacXlRC9cmjacmzU3hRIu83TqVmQQ6frxnPRnc7jYZCvK2Dvw17m9GPF1I7W2dBtLnY6vjxFOpezuLVJ+8HYNszU4jPbo34mC2hYLHf2PzXYXtdh5IQT8MoO0azb4ngezN7S3YgvV5z69BvQlxbR8kVI8n9sp3h77UT55t4SAFR3++g7A/z+U3qelqMKJ9LssLdh7zG/decw9jfbw5pV3usBcPlYsFrN4boM7LuN/UQ0ugiKKVEulzEF6nMvGUVW28o4NHKIxh1xWZKnh0T/ub8CtD0dMp/Nz9E0GhDskjZ5ERzSUbfso4TktZQc5iH+xa+SIXX9PM4NXklG91ZPJC9gjUn3B+49p5HHmbR5GdIVqJp/+lsRuTUUN8SF/EZWzoFi8gIYSrWtu15si0lNhYRE4NeU7NHQV/9aDnZeCt3mbMFn/Vhr7sgQiDnTkYs24BQVZSEOGSbk/HfuVn/q8lMeXAtJW2prKvIJv/sdZS8NAVPg4Pxf9nRTWdSfeV8Mh5ZjBIVhZw0Crlifec9xsSEzH78uyAIwa+2bSZKeLh00S8Yd18VRlwUemx4nYKfxG9TeS7/I06dfyqe7BTEkrUBXYbrk+FEHV+J99CJ2DeUUXn2KByNkpqZkrgdCouuu5MiTwIzHU6ebx7BCXFbsQvBib+/kUOvXcbaG6ZiW7GVpa4PaXJXWV6SFv2jV6VaX+nBhLmvKBPHhkytm86bS2ueQs4dS/pct18o1Vw+jyHvlKDnpCE1hfbMKGL/u4Gtj45l9GUbQ7YglagolPQ0vOUVtJ02m5jKDpRVW0LKqJkZGPWNKHGx6A0NdJwwm5opGsMf30rH1OFoTi/ahhL05uaAizSEj3EJUPTcNM6auIocRwPvXLowEMAWOndrImEcNo3SKyQxK2IY8mUTY/+9lS/KRpH1082oowqgpg69sYlVY76kfrPlJWnRTwZEIMCAbF92XWsnv7UOd4I09/iBnbfOD1nrd0VNTg7MUtIfWwJ2G3LlBli6jvJTdFzzxzH22u1Ilyuw5lfi46l7I4+iu1NQoqNJ+KqY7adHBwa1OqrArNzlYvtfZzDkQw9qQgINYzRc6QZ6bR2O6jYzfJzXS9G9c0OWBElfJdD0s7lmXWNGmm3GxrL+iMdZmLCRq5LK+Ovz/wq5D//9BqNMHovxIzMsm71oFwU/W0/O0xsRm7ezdUE0Q84yZ3r6tuKAXYZeGtkawRIKFoMeLSszEB8BfNuPTicj79pihkLTNN78+d00zckNKSM0DSUmBi1/GA3HjgkcB/DuKENNSsR75AzGXL4Re6MLY4R5vZozBGXyWITdRsof7Yy4eheu+ePQa2oYfcuaQBvbLjV9M6rPGM/bZ93LlZmfU/in8bx0zT2M/j9fMJgSU/9gOJ3MmL2N1qMnouVko2Zm8MDQ9xA6bHtgDue9+wVa/jDcc8cSo9j5xSeXsNPbys+fvDbkWUi3O0T4qQkJVC5M4fzH30NNT6fysSQwdPSmZlqPnYLR0mLGbeiC7IhskGUJBYt+ocRG3sraV+h5GbQeMRbhcKDlZAd0CXpDA7uvn4/0ernw1htIXF4ReBPv+M10lGQz7kPRJdkkbjUVk5554wFz6t54zDgybysGRUFs3QHrtgEg6xuQm4sR8XHIVRvR6+qJKgsKNy8EwuEga4lB4WOzaRwruehPv+Yf5cdhb1Q45eVfB2wlgmM8tPy4jY8feJBzP1+Ga2IeLzZP4MXb76b49Mc5L74Ox3+cODNMl2cR4+W91nEM/1dnkBlhs2O4PchYM1K0Om4UMR/Y+fLXd/On736KzEkn+5emAdeOP88l5q1lAAGfCGXKONTkMLEwumAJBYt+0W07cR8EV+mKXLGemEVrkG53Z1RmRcX40TTaM8xtypSXVuMtKw/sAgx7t8HMIZGYwPA/Lkeu2mgaNtkUtPxhIBTiX17K8iVjQFUx2pyBGI56cyvS48b2H9/b1NADEaCMjg7UjHS2PjiZH9/6DSUnPcExh39P6ivfs3rNCG49/wXyb1mO0DSK75gX8nz0Geb25QR7JbvmO3jz90eRb4vDJT1s97TyWP7bJLxsDuTinzzFVUllVJ5pLivU5GSkx42WmR7oy62LXuSR4e+QrMYw/DUz2MuuUwpQx4/mN2e8BYCWm8O2Z6dTeeN8Uh/dhRyaZRpDhVmG+LHMnC3C47PMEza7adjj1wsE6QeEppmDUEaO4jNQBAddBUwDJ0Uw8p/bcc8ei/rl6sBxNSkRfe1mM/y6Vw9s9RltTqILq8Grm/cExJcq1J8ykbRPis0dByEC5TtuSAe6W27qVdXMm+DhlMTVQBSfloxmRHYLeZ9ICn80BAydstcmsG3eoxzz8nnUT04gbUUdt7/wGIf/6Xpah0H+e414Ex3kv30ZwqMw5DtoPqeZodmN6HJVwHnKlWoqVavnScbeX4M3aCfo0aojqWqPZ9GYRUSXNaMDWV/WUvmTdF75xTGo8dvZ8o8MVi14iOQfx3DIulNJqm2C2BjiciJEx8aaKVhEwjcwUDp3DoSmhS4fJo3pLIep+d6fqF+sRq+qJiAQfOiNTaZAmDMxxAlIHTkcGe3AW16BlpPNtmenk7LJRdJzSzu3IIOEnly5IXzDQlBz0zB+e8olVOttGNvj2HlaNq89ch8fVEwAIPculRMKj0Vp6yC6TmfIU5VMtkeRtrqZgns3YazZhPLNOkZfuZxR1y4l7tWlZJ+6meqjhnFvwyj+UD2Jt9viUNxw3R9fYcxjTVBVG9KNqgsy4MpYnIYbV2YcSmws+uZtDPmyHnXNNmSHi9GXbubka64D4L4xr1C7cBg47AzRIm/nWluSFn1Cyx+Gd0d5iBDoSm/bZb3R1dkosCW6B1uaJf+YR8Gtq0O2DuW8KYhlG8DQKb59Hi+c9QA3X3o5tk9XhVzrXTgD7TPfsZ7aFgLj01y0a2OheCfJ/3Ww6vOx5L/ZDJuKKPyXKSBSv3Cgn1KP59tUsu9ehjqmALmzsvNZ+doQmsbOl8cy7K8Guw9Nwt4kSXpuCa1nziXu1dAYDuq4UeibTR1I3SXzUE6tpSCpjpr/y8e+ohAxNBt941az+mkTSHmokoYrMmF7GVsfHkvaPbeycm2HtSVpsed4d5SjJib0WGZvBILQNNx5PiWYYroS41v3Nvq27cA0FOoLI5+u7ubyrHR02gRkf6tz3c3XEL3dfPsqU8bhPXIGSnw8h9+7BDFrklmwq0AQAjUhwdwNkZLq9/OgeCeG00nj8QYFd25ArW5AulyMfsDNmCu28vKtdyHeTyH7zsVg6HTkJBD7UTT1F81Dzcxgx5/n0nrGHKoum03emZsx1mwipkon6YXlIATxb/niO0Z1BpfxZJgWiVpWJqlPLyfe4eLyrC85/L4lGK2t6JsKA2Xl9xtpPFbHWLcFo62NsX9vxBvwN+2OJRQs+oahB1yTB4JwNgX2VT5Nuy9qkV5VjXHoVFI/7PwDj+Q3IRwOSv4xj9Yz5oAQoUFbfcg1mwIznej/riXp00JKz86B2ZO4950neek/D7Dl3rEs/uVM1Mq6wFLJu3AGWk42ADtfncj2fw1HxEQjZk0i677FgT7pjU1gGAFlqFy5gR2/nsIIWxznX/uhKUySk3Fm2kh1tCEkGHX1xFTClX99nbbD2sDQ2fnH+Tia9ECwFulxo8TEMOIbMzuU0DTqx0ShpqYw++MylNgY7Kc0cFiUl2VnjDMFmV+YCUHdpfPQm5tRkxLNyNBFpRTuyoz421hCwWLACPcWV+Ljw5b1Vu4O+S693s6IzEFRi2wbSvpkRCU0jbS1ksQvi2k7dXb4QsH6ApcL2eYkdbOXH/17Ods8aTzRMIPL537JrvlxjH9vF8Yk0yPS9ZsGjGRzlhQTZc4+vFXVdGT43txKpyZfjh0OsycFvn992V0AvHnLURz6bRVHfLMT9fxqyk9LxVCh4dxZtA6DZy45kRGXmMuBdb98kJPu+xTX8bPQ8oehL5hO7McxPJSzjOIXplD5q9ks/dNDHPv1dm5OW4uSloLR5mTmynMRbg9KfHzArkPY7WR+WmnabcTHc+7H39G6aBi22shOaZZQsOg/EbYhw73FRbb5Ruo2M+hBNxFM13T0gXp99gh+12UxPJf4l5ei19RQNzF0uy142h3ShY4Oot9ezlMfH8lDPz+TxWdNYtEtR5DzaT2vL5+FWt+GEhVFwpm1AYvKrEubyL9gK0hJzLJiCh+bHbK9J1dtpHyhTxAqKhcXn2amiz8Wbknbyq+Tt5F0SQdGXT0Z7xSitRsUvNGC6tIDz+/wdWfy2q1H03BpKzvPyKF+rIPXR3yK03CjbI/mH1c+xQstQ7jvs2N4uGEMRm09GDpZ55ZRfEEussPF8M/cbPvPdDreG4I3PQHG5GPU1KJicGhmMe6MyMswS9Fo0W+C7ff7ij8d2kDjPHUOse+uMmMsSok8ZCpqmxupKYHdAzUzA72q2lwC6Hr3fgTliggcio9HtrcjNI3tf5rGyH9sRG9pCbhvG06nuQvxzmgaquMZd0d9p+OYT3GoTB1P6U+TuPrM97AJnbPit/OTtReQ9LcYtMJyhM1mpogbmc/OU7MCkZ/cx8xix7k6S494kJNuvoHH/no/Ux0OCt76JaOuWkb9+6MRQpJ8YjHK+FEhJuDqF9lwqYNFX7/FcpeHaXaFcm87p675BfOyS9n4l8nErdvF4soXaXLtthSNFnuJb4bQVSCIGRN6VQCGEwjC1j2UeX+JeXulmco933TL9karUFiKurtT/+EZlY02fCjNc/JwTh1qTq99fgtqUmIg1DqAlmeaOvstEbc+MZ7UdRJZkGuaW6el4jzSDORSf9FckmPaeX3hI8x/Y5MZb3HWpMAy5WevfIw2pZH73z2Bh7b+iIfrp5J6WhmKy8vu00fj3bXbXB5sKybnjsWo6aY58ln3LmL5EQ9yfuFZxO72MNomcBpuRl1jZshKO7Oc1NPKwNAxNmwJ8acwbkxmxxlD0KXB77afhk2oHP3ib2jdkszmxkxciQqe7BT0HrzY+yQUhBClQoj1Qog1QoiVYc4nCiHeE0KsFUJsFEJcFHTuet+xDUKIl4QQ4edyFoOCwB+YEsbiLcKssnZqAlUXTul/W+oAvJN8b/i6eVmgqNg+XYXhdAZiHpT9fj72sjqMugYS1lRh/2gFzgXj0FPjkPOnQFoKSlws6ugRKBPH4i7o9BOQXi+jH/SQ9NYa5Obt6DW1bL4zn4bRGuW/m0fcOZWUbB7CH068gA9uX4AyYhgVC8ylg5qezjpnHh6PijfGIOG5BF55ciEiLxu5aiPR9ZLCx2Zz06dvoxUMR8vN4exvvkdfMJ0VzflcV3Y84phqtM9WMf3J65j2n2sD9+qeOw7D5aLttDk0/HweWx+barY5YQzK9nKGPVXEDbtnU7IxG4/Uyf/dElI2QvTVNoZevo1/v/IwY6MbI/8ufVk+CCFKgZlSytoI528BEqWUNwkh0oGtQBaQDnwLjJdStgshXgUWSSmf6ak9a/lw4Oma3LVXwkzBDzRabg5ZrzdRfl0BLFsfItTaTp/DL/76Fi+NzQZFpfnsWTiadBwfhA/hDlDy8mSm5lbQeqJB3QljSX1nI3pzM8Zh01C++R7XcbOIWVyI3thkavnTE2n8czsp0U7+PvwtLtv0MxrXpTHqsXL+9uXrTPV5Y37dAbu9iZwZ18RObytthsJJr9xAwe+Wh32mfktSddxIUv5VxbZHx6F4JW1nNZF9VjHKiGGUnZDGJRcuosiZybZZLoTNjveQiRxy/zL+nL6R2UeX7XM7BQnECyEEEAfUA/5NYQ2IFkJoQAxQOUBtWuxDjOKdPfo1dFPeDQaB0KW/srmFXRdkmvYJXV5+CV8V8+Qtp5iKSmmQ9M56HB+sQNjsaMPyzEJdZkux38RR/uAoREw0NqcR2C0pOs9G8zlzsd2wm8I/jAPAW7qTrZdEk3RSKe6/ZLGoZTKtS9L59cnvMvPdYoZpOhfsOJyd3lYOj4Iz40yFapQQjLPHkLpeRnym0utFTU9F2lQazokn5c11/PJPb7J45tMo8XFULkzDOamdBTFbKTkp2VzaKYKmfAfPfncITzRl9/gY+yoUJPCJEGKVEOKyMOcfAsZhDvj1wLVSSkNKWQHcDewEdgFNUspPwjUghLhMCLFSCLHSQ/+UWBYDj/S4e7Qi3Be5H/YEf2q5sERHUXJ2JhhGtwEuNJWENVWmC7GUtP3EtD4svHs64j/m+0wbnhdyTdY39SS8uRpvRSWxbywLHM/7EJpOa0W7IZ74UY1mTsmoKNKXqCiJCahffs/XF88i7+/LeOX6Y5kRU0KCEkXJneMo9cbxq8pZeKTOE03Z/LrseMY/eiWJz0fOQgUE8kboFbuoOXcyry2Yxvx7f41sbcOww5C37bzUOIf6BcPZ8uB4an82na9uu5+xj7fw9olzeqy7r8uHbCllpRAiA/gvcI2U8uug86cDhwC/Bkb4ykwBVOAN4CygEXgNeF1K+XxP7VnLh4OcAYi01Ffk/CmBbM3gy9SkaRgdHRif5fGj9G08ufQwRl++ujMG4rhR4PGy5Y/JOLZHMfQvS8hdEsvuM5JAU6lamE1CqRvbZ6vNXYSoKKRumCHfuzqI4QtI62yn5ejx1E5WSF1vIAyIfWOZGQBl3RaOXN/Gu7ctJPGTzTQdNY5h126lYWE7W++cQtwOlY6ZbYz8v2awaVBR1WmzEYSZwt5AOBwYbW14fjwDeVMt0VcopsFW8O4HoI4YTuEVmWw9+xEMJAqC43KmA/BN/mI6tlfs+fJBSlnp+78aeAvoah1yEfCmNCkCSoCxwI+BEilljZTSA7wJzO9LmxYHMf6UaH3w3d9bggUCwI5bZtPwZq5pPlyTzOv/OpKEzTaEzVSgFt8xj+I/R6EXlZDzto38l6pQoqPZdXE2RmIcbWMzSD2nDBSBmpKM98gZZvh4n71F3fkzQuwSqn41H2/BEIyWFhK/LeWY41fw8X3389H997Pjz/OhaCfbHprDvNht7DreDZpGwvvraDzeQErJmN+uRXNKCn6+Bb2ohN0L0tjyj3F4jpppRoAKmuEoifG0vD+Unc8OByFw7G6jdHsm+vZSjIRojEOnUnvZPNT4eEr/MpfNv0lj6uwiLtq5gPNKjuKFlgyMQ6eiJidjL26P+Ex7FQpCiFghRLz/M3AU0NV9bCew0FcmExgDFPuOzxVCxPj0DQuBzVgc1CgxMT2GPgNTUemaXrBvOiAE2vChIVuafl+F807/nJFJpj581I11xO7WyX50NcJuR01IQCqQ+Vy0qRR8cxl64XaM9nb0TYUYm7YR/cV65B9S0dq8kJKE5vSAoePJSUFoGlpH0AwhIQGhg7rOVMjqDY1sO3UIh6++kBbDy7BDd9L2Vibf//SfXP3wlYy5tx3cHgynE72xCelyseWhiZx15acIu3kv7emC4lMeJ6q0ga0PTkZMMWMwdJwwm+3Xjub8ocvYOO8FEApyazFjf73BtM9QFW5/7gnaMwTG6KFkrtT5z0/+xesjPuXe3A9ZuXYk9993BrYtZRz1bQkiTGZrP32ZKWQC3woh1gLLgQ+klB8JIS4XQlzuK3MbMF8IsR74DLhJSlkrpVwGvA6sxtQ1KMATfWjTYhBjOJ3I9shvGgDng14aR9hxHT9rwAOxCFWlZkEOHT+ZEqLwFDY7rzx/JLv+bwRGXgZ6TS0JizZgdHQgO1zozc2MuGk57SkqMYVBG2n+pYBhRogWS9YivluDNz0+kKxGbXPTevIMEl5cGgi2KnWdIc9toPIXU1BTU1CSEvHuKCMhysU5V1yPek0MVSuzmPb5VeT+awNbLo8POHn5+eaof/LYsh9htLaiJidzyinfssblQrS0MfahFthkCpwPHnuA735+N+laC7o00IblIj3ugBVkySlxPFS1EDGtCbW+leh3lvP3s84HIE2NZeSLLtL+tRy9IJsPdk/ClRM5yIpl0Wgx8Cgq2tAczv34O17ZPQvPtSmI4vKw6+Q9pfH8eSRvaEau3WKmmMvJQt9lGkgpedkYpWWdkZK76jj2ROchBMYhUyg63wa6YPSVy9EXTMe2ahuvbf4vp575y8BSxv3fYUSdXIPhdKLlZPPKsjc5c9qJGM3NZqj51JRAiLRdN8wn74XtSJeb4Z+080jOUuauOZ2UC5vQa2tBStTkZBZt/ILpf7kCR5OkaaRC0jaDhNdNw626S+fhiRPkvlOJjHZgFJVizBjLyf/+nEOiizjl86sY80g7cpUZN3L3tfPZ8eQ9NDeXWxaNFvsHYdPQd1Xx9w3HMDe5hLY72tnyt3ED2kbyy6uQ32/sTDFXutN0cnK50ItKQkKna1mZobOVLgJBiYnpdJWOhJSoKzajNWqkrVBRkxJxFFWhpKfyo79cj1bX6TbufSTLTEkPyJZW4pQoZHYa0u1GDMuh7UlTv6HExjLknsV4q6oRCXGsuXsq1+2aiaYYHPFFZ4QlY0QOujRIf2I5zfkK0VWS5K9KA+cf+t1DNI/xIptb0DduRYwt4L4XH+OqpDLOWPJLxjzmQq7eFCjfPKnnnSVLKFgMGH5rSP/gzPuH4Isr5xF3jcKYm9b3cnXf8C8XuoVni4CWlYnR3MLO/5vXra9ixgQKH5/F9qdGMuGxjVTcNL97+rcgpMvFqH9sIuPzcsounYC3vAJvcSlpTyzBSIgOlNMdwnSfVlT05mYebszDWLfFDKTi7GB3YzxaXi4id4ivYmkuO4rb2HZCGjUrM/mmblTnwF1byNgXrkJNTSHvzuVkfboL767dAcF3/R+uIvcTgV5bhxIVxd3vPMUEezS6NPj99EVsv15l+wudFqeZX2oMz4+cD9QSChYDRkhiEyGQKzegfLvGVObtaf7ILhjuyLEFw/apowMxLAd7F2fLnTfP5uE3H6fkxH9RePiz3DNkNcuv+Wf39G+E+mjojU2gquQtCnXnbhgXh3fhDIwfTSPpo1Bd+qLjpqGmJKNOGIN7eBrK+njEczoYBnWXzENNTkbLH0bRdRreXbsZ8Z8qvCebOhszYYwHwybRa2qQXi9GVU1I/YmvrqR+jC8gzalTGWszLSXHP30Vr5y1kHMnrEBvN4Vdxwmzef8f91Dq6pIYNwhLKFjsHf1VIgrRuVXZw7VqQkJ4hylphMQriHi9z+FJb2xC31QYyPkIgKJyxhlfMUS1U+5txWm4qdbb+N6tsev6Od36peaFWgDqZZW402NpPqczIlTy5lYeePIhSk6IAn+//Xkud5Shj8ih/G8K20+zk/tpG9VPD+fs974mfVkDVWeOZdMtGaS/bw5mvagE0lMB6DhqGmpSEn857jXz9udPofgpM87Dtmens+vX883MVFFgHDqVhJeW8Vm7WU/UxEZ2/lFh5UkFJK02+1R9YTtzvrwaURTZAtWK5mzRL5SoqFBrRt8UN8Q12q/I80eEDk6PJmWfIjhJtxslNhq9MXSZUPjoLPLfNLBFuE7MmIBSXAn1jZErN3SWnzeJObdNISuhhcpP80goNYip8tByjochXdbb3uLS0L55PWjfriN6gTkl1/KHQVk1Zzx5A3qOtzNYrO85GIdMwXCoZN2lUnKygtru4a//92/+UXIcMW3txJfHk/HcRgz/jo6UUFWLEhODJ05FOOzc//czSWYJGXfvoHJ3DlpWJtPzd2IfodN4Yiz296D0xGhG1YxgYfQqHmvM4z9TnuH0N67FqN9JxiOmYjP/kh3orW0sMyKHY7N2HywGBHXCGPSNW1ETEjDGDDMTsHZxktrbwK5gBneVlVURlyNaXi7u4eko33zfYz3asDxwe9DrG0DXA0IrXKwIYbOb1oyaRvUvZplp57qiqIEktv70dOW3zGfYq7tofkgQe0wxfy9ZzjgbzHjiOuzTG8i5oALsNvTaOjMwbsmO0HYdDhrOnE7LyS38bPQKvpmbyodFixn97BWcc+zXLLr/cDxxAue8NnKf1NCcXrZdqvHoYc/z4I8WcvEX3/LE6ALmrvXw0qLDSdoKCaUu1C9Xs0x+RrOst3YfLPYd/sjBnskF6FFaYOqvJiSYmadt9rDJVLtiHDatxzgLelFJeIHgj/XgdOIc4uh1WSM7XKayzuUK6VdXgVB/8byANaMyuoB3b7kLMW1CmI6buyDBWbWPOW0pF3zwJZ9NegVl6ngKNC/XlB9JxmovQ87Yjt7cjMzNRGhaN4GgJidTefUM3vjbXayf9ywvPbcQJSGed9ti2Hz+w6xtzMV1UiOZDy7BKI8h5U87cKU6iIpzc0yMC++uKn67/DS0rEz+kLaOwgsf5bu/PUTx6ZHmWJ1YQsEigD+x6t5g21qBvbTG3B0wdNM2QUpQBNLd+45BR7qd9qOn9r9h34y34slM4l5fQcOFvvW+oobdUfA7FPVG2ivr8O4oM6/ZvI2LzrvG3ArtA5vPyadRj8EjdToyY5jz3A1UHmkQ8/mGwO6JcHsR0dEhRlgdJ8zm0K8qWXr9P8nV4vjOpZBUpJPxtpMb3ryQY7aczNrCobTUxtJwwVzeO+Me/pD7AVEfrCL/snLGPHUFAGP/rx40jdn/uIaXW5KxCZWx/2cGwfWmRU7/Z+kULAJIt3uPQq35EZqG0dAQosEXDgee2WOxrdjaJ6EQ8+ayvbKAzPllHbqhk7a4Gh1QE+LAkJENp3oxZApZ7kgZuizx91PKsPXohdt5/JGTcV7+EXq0wqjHy/F2neVUVmG0tIQI5ObhGpclr+Z7dzRlnmSeuvhkys+X7No+EnuzQN6WzrAYcHy4CmXKOHZ4kzkiujUQcXv4H8zljbdkB2V/mE97rhfd//4fkg4NDSRntBAJa6Zg0YmUSE/vU/yIl3u9IJROPYIQSI8X+8YyDKcTJTo6Ytg2fwh1fz96wzh0atiZjX8GYOwwFWty6JABtaQMRpk8FiXOzL/QdN4c1ORk1LRU0wvTR3OBwTNPH4MnWkHGxXRmz/YLlIw0tPxhIYI445FlHPOXG/lt4ek8cdWpaIUVjL5yFbpLJbHYwL62BG+0Yiox12zipg2nMnvFBSF9E7Mmmd6dGtx95MucGVfNcVuPg8oqlIljqW0JH2UbLEWjxQDjV8qFQ01NQXa4wiob1dSUkPV4b/X31I5ZcP+5b4NvV+aDNOQf0yg/Moa828wtUDUtFelyQ0EuW34Vy9C3FKLeX97lYlMhW3fJPFKfXIKw2fEcNomdR9kZdfsm9KZmhGaj9eRpxH+4AaO9A6EIpNeLcDhQRgxDlpabuhZfXVpeLh2jMvns+Scp9LRx0jO/Yfh7zbBmC1LXKRn/PkXrnZai0WLfELwe7mmg6g1NpttxmOVBJIEQPINQ01IDiWF7tWjczy87o6MDcXMy4rs15P01aHdCKGYQWF0y/k+70NrD2AcYOsrEsUQ1mduE0uPGvngj6WukaSwlJcKmEfv6MlOgGuZuiZqWyrBvFAovTgkoX9WCoQBUHZXH0L8XsrRDp0Oq5N+9HtHhDShVq3ZYxksWe0of1vdGLzqIgKJPGuitbeYSo4/IxLjOL27Pfh/s/UGu8JlyB/VRrzW9MY0NW/BW7u7MUQkhz1ZG2zDUzu9KchIJb6ym7TQzSlLz8ZMQsyahZmb4CqjsuHQMj+cuIX11Z12yfBcAWeeX8vTQbzjn08v5xZ+uhxF5XPTmh+hHTEfLysSTbvk+WOwpfRmEQomYcAUIMVzC6EwN7zlqZsQMUn6CcyIOlG5AHTMy8DlElxGGvd6RCX5+/shPY0ai5eWijh1pRpGOikKuWE9CYafyz7trN0JVaBphmi8nfr6Nih/FQ2oSKCquY6Yz7KhSAKqONh2cGi+Yh9HRQfM5c3l/9Ie0Gh2kZTehdUiUxlbK3ak88syDXPzVYuw9pOCwhIJFz/RhpqAmJ3aLE9BrtQ4H9WPtNJ7Yfc8/WBnpz+c4kLQPTwp89ud9jETZr2cMePuu3ETwejGKduAZksDWO6cgbHaE3iUhTWoKuQ+YyWX1hiay71mCc1gi1VfMoSnfBlfFkf/uZSg1pl1HdI1vaXC0h1UuNzqS9JsEbVkKtYfn8OHlh5OiwGlxzT0Ke0vRaBEWNSEBvbk51EQ5mC6KPDU5uV8JaNXkZMovHkfus9s6zYJ9KPHxgWQsytTxyM3bze3MA/C3GsgGFel8VBTS6+2TYVZX/Nu/hU/PYNydzYHU8pEvEGjD8th+US7Db1vu2+0RKNHRIX1UoqK4aN1mVrXls3aWBqqKdLm4YlsRP41tBSB2agftu8ssRaNF39F9g7Kr5yP4ptRd9+T7mZFab2gg54n13QSC0DSMlpbAbMGTFGVuk+5rgRAcC3Hq+MCxiAJBUREOB+75E1BG5e+RbYV/G3L0xat7FAhKTAzehTNMF+vSnQGBoKalmkrI/M6o00LTKLx9KlMdlSz582ykIQPt5GmdylzDYekULPpLuEHoM9LZG1uGYJTEBLSc7JA1vvRNof2D0bGjzszNEC5j1UAS5KMhNxaBEDh/OhN1/Ghcx83COHRq9/K6jtruBa8esFfYI7o864Ay0YeSnsp/nr7f9DBNSuwU1L7/N9/Y2baam83K0+7l1vITiPt2e8h9XbX5XJZ26Kxzd4DRQ06PPb8Ti/9JgtLE7y3eyt0YqQmwq7pTMEgZyKnoT8riGZOD8+SZqEmJgXN7gzYkq8fz0uNGzUgn9oM1UFlF7NoK7CXVqEmJoeW8XsSStWZo9TC5JfqN//r2Ti9UbUgWm2/MJlYoNJ07h0O/3o3xo2nUXTqPH39bhn7EdMb/sQo1IYG20+eAy80iZx6NJyu0zyyg9G/zqP3lPFzHzuKlCc9wwbKLOe3l63FURF4SWWbOFgNDF3fpPmHoGOu2oKanI30WiAB1x4wk6bkaPLmpVBweQ86XbbRlKniPG0fitjbwxS7cU2Rb7wFf9Ooa083b5YLGpl7L7633p1mJ+dyCd1n0nDTePvF+jv7DDdTNkLz07EKM+XDoKd9zbXIRiY84efOIKWDT2PVTN00FBZwc+zYPPnsEH09+gLXuaL5tHcPR8es5+sXfMOr+YqTLTY2laLTYHyjx8QhN67d+QWgaaloqHeNz0T5fRdE/5zLyuqWU/H0eObMqifmloObwITSOhpyvPHhjVaKqXSjfrtk3NxKxo/vGSlJNSkR6vBEFi37EdLRvN6AkxCGiovBWVKLlZLP5t0OJL1aw/6SWlBMK2fX2OB6a/BJr24dxTfIOdGlw6I1Xkn55KVuW5DPibxswWlrwHjmDJZsepqPSUjRa7Af0xsZ+XyO9XvTaOtR2L1puDv93zJuU/WE+z579EI3OaKTDRtqbGxn6XxfuBJWORAWxr95lPSkM+2F01efmHA7mfFXDtidGdx7ssgxRv1htumXXN+CtNI2TvBWVjLp2KVkPLKGuLg7j0Knk/rKOa9adw7tXHsln7Sp/rZ1I8qfbqX9gGPk3Lwns6Gifr8LWaikaLfYlQpgKyNFDIzo89Yb0eik6LwrZ3MLLlbPYdOUjzI1SuX7Mp7C7Fs/kApqGO0hauZu0l77HEzfwK1/jR9NQM/ZeZ9ErwYJH1zklcTWiPAptuGmi3HrazMBpNS218zJVRWhd4iFIScLKKFrzTOOxrFMLsa0r5fYLz2fJJdNxT8gj7p1VIYJGzczAG2MpGi32NVIiV2/aq7X16KdbTduI4+p4sslUBp4XX4133FD++fyjNEyQGFU1iNwh7J4bORBLbwhNQ0yb0C2Yi7p0Ex2TfNt74WYMA6RgDR7Y0uvl/Pt/zah7t7Ppt1kgBPFvraL2l/NMg6bozijRamZGIP1dMI5GSVxZh+khauhmKLtv1yBXbkD90jR+aj9pBrWXzTOFQ1ICRpQ1U7DYl/jX2Xu53vYnKzE6OrjvmVN5uSUZLzoVN3ixCYM7TnqRLf+cQP3cTAr+XRpybU/m0n7fCyUqCjU1hfJXx3D2S//FmBWai0K6XNg+9fkm7IOlQqA/dltgexEg677FiOgoxv+9AiUuDun14o4XKCOHIVtaQFFpPH8eNT8eZgq0LqbXKW+sDdGv7P75lNAZm1CI/Wgd3/zxfhS7jTPf+ZrxiVaId4uDDE+c5P9WnYxD2Ng47wVG22I5La6ZkhP+xTX/9xoNhw4NKW+0tkasS2gact4UbB8ncegXFbi3JvDqiYeibSo1Zwv7cFYQDulyoWVmUPHzThNvb+lOvOUVpsAAsu9ejL6lyOclaZC6up7U19Yih2aHBqsJMrDyx2r46WVfok8bbeadWDAd6fUg7HZiFDuNp07l0/rxbKrPjNg/a0vSYlCSskny9cVPAuZaWJemW/G4b37OyL90oI7tMivpagCUkAC5WXhSYuhIslN2tMD2TT7NS/LI/2CJGZUpORkR5UC2hHfD7jVmwx4idR3Z0UHOJ7V0FT0hLuRBMzB/DEw2bAmcVpOTcc4biWPRCvOATQMh+PbqORRdrKJcMZmfjlvDxjkq1WdMoMn4GFubQcN5iTjKIy/zLKFgMShJfH01h2pX03RiK0cVbOH9jZN4+fDHyXnaTvnfPXi9bcRtH4dzaDxx63ZhJMZibNiGYrex8/rppG7yorUbRBdWoyyuYNT73d/8HbNGYPtkZcQ+dBUIfj+QvQlZZ1bsi5Pgt3/oj20HBLZGpddL7JYa/PalfoGifPM94zancvzXhSSpTrakzyL91Q1MO/wqoiZqxFTEozdGdjSzlg8WgxLpcZP03BLktjg+fWcWox90c9ET1/Liv/5JS20sh+SVUD03iejKNjb/OQOlpd0cWIrCsCe2EP3OcmyfrMRbujPigIsqrgt7PGKffCbY/rTx/cV17KywLubqmIJ+1SNmmMsOo6UFI8asT5kSqh/RC7J555IjeeYXJ+HNS8doaWHUhatJ2aJT8GgR+TmRfactoWCxf+mn41DB7RuI2S3pyIgma7mLHd5olCidT1dNIPPbetSGNsbeWBoIkW44nX0K6wa+TEz9wTed7xpota9EV7aGOC+B6Rquby2OcIWZXbtbN1ZuCHw2Nm41FalbQ+9FrC1ELFlL0fkaJafGUX3VfAASF+/g24p8itvTIrbZp+WDEKIUaAF0wCulnNnlfCLwPDDUV+fdUsqnfeeSgH8DEwEJXCylDJNNw2JQ0JPVXn+nucHV+l2w+7lDYbS2kvlJOUZNHRgGlz52DdnbdGIXrTFNkA8Qe7J8MNZu7iYUpdsTkkWra6zKumM6SHqup45IU0fRJRYDvu9Fxz/OcadciDvZFGIXfrWEGY4KZpZG/h37M1M4Qko5tatA8HEVsElKOQVYANwjhPDPse4HPpJSjgWmAJvDXG8xWOhp0MrIqcZ6rXYP4g2YF5oZmaXbjdHRQfadi4l5axnGzHGoo0fscX/2N8LhMB28ujxfv94i8Hy6WDMqOyNHtOoMcydD6lWmjkfONN2/H2wsQN2yg53HmErIuwqP5v6aI3r8PQZq+SCBeCGEAOKAesArhEgADgeeNPsu3VLKxgFq02J/cwD9ZIIt+wDEkvVmvsjgOAh7aE25P5AuF96y7lGe1NTQAKqB+BKKivuYWTjGdjpjdQ0Pr3Tx2vRjrNlEW040u6+bz4KYreitbYy8finbHpxNSrST7/82vce+9lUoSOATIcQqIcRlYc4/BIwDKoH1wLVSSgMoAGqAp4UQ3wsh/i2EGPj4WhY/eALJa/0YOnptHeU3zzENemx2ttw/oVOR15cwciP3LDhKV8JloApLmKXXjsvGhi2qFgyl8iIXyf8xYyVse2hOZ4Bcn3DWayMrSmPfWIahwS/+fl2gXRmt88f8d2kc1bOLd1+FwiFSyunAscBVQojDu5w/GlgDZANTgYd8swQNmA48KqWcBrQBN4drQAhxmRBipRBipYcDt1a0OLhIX+tBnzsRNTuT8bdWYHR0mHEdI1kkBgkBo7TMDDm/l+zx0ggQEVZksrKKmK/iaMsw+yftRnc9RpelhpxnZsFW01IpfGIW2fcuI/VfpvpOiY9n/B/K+dkXl9E+1Qk9yMI+CQUpZaXv/2rgLWB2lyIXAW9KkyKgBBgLlAPlUsplvnKvYwqJcG08IaWcKaWcaWPvcxpa/MDxDe6oT9ehunS8ZZVmEFZFNbcMIyhEq6/q1ObvaWzFgSTvwTVhjxtOJxmPLiH9KdMwacxVaztPCoGank7x381hqOVkgxB4Eu0+/wgbcYW2kGdgtLai19az5ZhHGX3NToQaeXbTq1AQQsQKIeL9n4GjgA1diu0EFvrKZAJjgGIp5W6gTAgxxlduIbCptzYtLHrFN4WWLhdqeY05AISg+exZ6KNykfOmoBUMR4mKQomNDbxFnVmDK35IT0Fh/QZKACgi5LiIjSZtrRmlyjU6C6QkuqSB9uej8e7aTfbdi1GTkwOzCS03B6EqrHWbkaF7Eoa9BlkRQhRgzg7AXA68KKX8mxDicrN/8jEhRDbwDDAEc2Jyu5Tyed/1UzG3JO1AMXCRlLLHKBxWkJWDg94iHR8IjEOnsv0XKtIQFAytxva7ROSqTZTfNIf2HJ2EQpXsV4rMxDJ2W5+zTw8WlPh4yM9BbipC6jruo2Zg/9i0yqy5Yh5ZX9WF5MoIbAUrKtrQHGoPz6ElT1D519tolvVhFxFW5CWLPWdvIhHtoyhGSmws7jljmXfvcio6kth9WQ7Ghm3IORMxolR2Xe3CMBSGnrnBFGrtHfvU+am/qOnp3SJcByMcDpSRw6GqFpITaZ6cTuwb5uo8Yjj+YBQV47DJrPjy7ohCwbJotNhz9mZQ76OXkdHWRlRpHa8XTuXb4hHocQ4wdEp+GoNt5TauGfclBddUm1NwVUUoe7/7MJDUHdMZ2bprvAcwl0v6xq3otXWMe7kUd1znEFaSkwOftaxM1KRECh819Q47/jyf5nPmmnkrv/q+xz5YQsEiMn2JThykzQ/sox9gvMWlFFxRwfDHBaPv34Lr2FmM+tduhKZx7zsnBbY39ebmA65o7ErSc53GvkLteXguuXM2yf/pLO+fYaiZGZz15SpyPvZy/ExTQRm/Q9Iw1qxPTJuAOyeyZYC1fLD4waLExlL410nMmLWN6r8X0DDGRtZ9i/dNY/toOdQVbVge3h1lEc+rCQlUnTMB3SHQj2gk/dEYordWcedXr3Ld9jNRFpph4VcteZAmZ6WlU7D4H0RREdPH0VIQR9yrSw90b/YaNS21R6OlgHASgm0PzGbUNcsQmsbuK2cz7dz1VM41g7cuk59ZOgWL/1EMHblyA4mf7BuXG7+35F5np+4jfoHQNTFNye0++4ugwCxjfrMWNTMDz+FTyP6oit0LPH1qwxIKFvueATAl3lv0PiR0AUL72ku/hc2Okmemst+roCv9wHXcLNRRBchh2SHHo3f5+hqkBzI6OtBr6qg81AE19RgdHfQFa/lgYRFE9ZXzSdnqQhgS9au1pmdohDEiHA6EEH0ebHtL22lzUHRJ/NqqQPwIvzt7IHRcJN1Gl+M9LR+scGwWFkGkrXOy/WwHycMaaD1yNiMf34m+uyrsLoV0udifr9TEpWXIpPhOgQCdzk7+0HGRXvL9ePlbyweLgxo1aG++N3pb96vJySjfrWX09d/j7HAQVw7oekQXZcBUZGoaWl5un/uxp3grKjsDuO5DLKFgcVBjjMgZsLr0JjOxq5IQR+79KnEVOs7JuZ3CRFG76RmETUPqOt6y8q7VHbRYyweLg5rgeIW9lu1FGSgUgZqeiXd3FfYiGzYpSXu7g29Xj2PMDb4QaaoakgVLut19nprvdRTo/YQ1U7D4waDE7n38Hu+u3SAlOx9NhcR4vtk0mtt/8jI7fz2dhtOnUnP2ZNQJYwJa/m7RnsJYgaoJCYhpE1CGmUsMNTWl04R5H+3M+IPNqJkZ/Y5IZQkFix8Me5PHEkKDpeT93otnSAKxhXYevuEs8j5uwnNWPXUzdbZdkII6cjgI0b3NMM5V1WdNYPS/ChHtLnMpkpmG6tvK3FsryHAh4wsfnU38p7GgqGy5Kxejvb1/de5VjywsfoAImx19UyG2DTvwxEuqZ2js/J1gekYFBaN2c+GxX7Dz9ii8R/Qc69BfV+q/l7L0oZnU/SiXqktn4E2OoWrhELQhZkLZnvJg9kbL8VO6HUvcrLF+VzZaZjpjb2/td15My07BwqIrQXv6jRfMI67Cjb2qjR0/TSF+hyRpayuGQ8O2eWdkk+Mw9gLC4aDuvOnEVZozEtWl4yipRWoqsnwXwJ7bPHQJv68NyTKXQhGwzJwtLPqBEpT+3d5i4IlXURpbcDRCzVwDraIObXUhekE2LWfPNa/xrdu1YXkosbEoDgfq+NEwexKVvzUTsUiXi5SnlhCzvoKo3W3sOMaBJzvZjBUZHU3TT6eiZUVO/NojXZYtPQmE3rCEgoVFFwJZnJMSSVhbhTNVBVUh69+rsdUrFP9iOEZbGzuPiSdhq+lgxMihqEmJbL8kF5GdiZw4Ev1BJ954O0NfKTPdyn1KRRntQHh0Rj1Vg7q2CCU1BefckcS/vJRNfxxmtt0P+4t+04ty0xIKFhbhEILtN4xHtjlJLHEjHXZEXjYjnq9BKqCOH03G917k2i0gBO60WDb/fQy6A/RtxSg7qlDPdhG1ZRfuoWl0zB4FsyYiHA707aWI+iY2X5+CHDscvaqaqE/NuAfj/+I3XxY0XjBvQHcnAqHoe9ExWHYKFhbhkJIR9xci2ztw7G5BeLzg8WLUNxCzOx2A6Mo21CGZyI4O2lI0hn4ocSX6cjIEhVRTa+vQxhaw+5BkMr+XyPlTqB4dTeoKMOwaWmoKRkEOrNqE0dIKgGtKPq25gpSYGJASw+ns9G/oB+q4UYgON96SHRTeN4PErSpDXtkGPYSmtBSNFhZ9QMvKRG9oRLpcKFFRdPxoIlFVTuTm7QB450/AsaMeIy7KDKoaxldCaKb1o9BseA6fhL2mDWPDNtRR+bhyErFXtyG3lQQMnLS8XGRMFEacA6W5HapqEfFxZij7vqKoqOmptM0ezruP3k+U0Phj9SweXbCE1oZyK8iKhUW/6YPXobDZQRqoWZl4KyoRmg3p9QSCnXS9Xh1VAFJSe0gWriSBMCDu+N14XswkcZsTZ3YUbVkqQ17czOZ7RjA8rwZFSHauziFpC3hiBUOeWY/R2tp3O4e5k9l5dBwdeW5Eu0rM47ewaZ3bEgoWFv2my6DuGtZeiY2l7Oop5D24BhEfh9HYhPT4ZgkR3K6VmBh2/Hoqw9+qo+zYVHIfWYOIjaVpQQG6Q5C8phE0herbvPBeKlmfVCCjHRgPO2lxO4izudlWnoGotzPqNyt9/VS6LS20vFxkUzN6c3PoLWka3w77Eue2XZZQsLDoM32JuSgEQrMBIL2eQBp5oapIQ3a3bvTVKWZNwhtnw17RhGhuxWhsCtgnKFFRgc/qqAL0bcVmWPe8bKoXZNGeLnBNciKroogtV3BmG6hOQWIRJBZ3oHzzfWcdioqaEBc2wMxyx7c0tVtCwcJizxDCnCGEM6P2Z2DKGdKrp6Q6bhT65m2BOgPLjz7kawgoGRUzLL2alYlrVCb2qlbQDXb9OIP2DBj2p8V9cryygqxYWPSVMDMExeGA/DzYsKV7ed9sQK/uksAlTD1G8c7OL0Hn+hJmPrA0MHSkAd7yCtTyCvxzkYytRZ1lXS4z32R8PHpLS7/9KyyhYLHP6FPGooMAo6MDJXhAh6HbmznMQNyfbtPlv5uH1gY5z29B2GzodQ193s60jJcsLIKJ8FY1OgZ/HIRght6/lqz7F6PX1VN+9ghT6YkZIl4dVdCjUZQlFCz2GT+EWUKAQZRvsi/49R9aTjZZ/1wc+C30unrKT8zClRM5xoIlFCwOfvqS3m5/tre/Q9oLgRIVZcZW8ClF/Rh19SFFlbg4WsZ5UHuY+FhCweLgxzc1HjTtSblfBZXicGC4XDAm37RXGJNvLhPGj+7mim20tDDyeS+2+siBVyxFo8XBTz+064E4A/3cEgwghOlQJLsvJ9SkxL4nnRlAjI4OCh+ZTer3KsZtI2msjyLl29HEVXqJrc+kY3wunniV6HeWA6B89T2yB8HWp5mCEKJUCLFeCLFGCLEyzPlEIcR7Qoi1QoiNQoiLupxXhRDfCyHe79/tWvyvow3L6/c1Sny8uSXnc1cOid3osJvnRgwPHBJB8RP61KecIWGP+6NBA/tVB6Hl5jB0EXSkCBqqEhj6mkLdfA+Vh2mUXjSC9nQbsTta+15fP9o+QkpZG+HcVcAmKeWJQoh0YKsQ4gUppX8P5FpgMzA4cpVbHDz0Y32uREUhdfMNqOVk0zQ3l8RlFUiHDYpKAPCW7jTDoOmdb0rp7ofnoZR4K3b5GgyNdrQ/sk6Hw1teQVR5BTnvm2bXziMnMOZhJ/Z7y1lflEtUnY2aWYmkrvFdoKjQg8waKJ2CBOKFEAKIA+oBL4AQIhc4Hvj3ALVl8T9ET2nXAwhhejFOGwMTR+H80TgaDs0jtrwdVAXdJxACde7ajbdkRyC+gBIf179OGTp1v5iHmpoS/vz+VnwGNx0fR2xhPe7UaEo+KCBqp51Hf/cAzQvbOuMp9DKL6etMQQKfCCEk8LiU8oku5x8C3gUqgXjgLNm5aPkn8Fvf8YgIIS4DLgOIon8hqS1+wHR9+wqBOjIfvagENSkJvaEBNSMdqRt4Eu10DI9Gc0miaj0o64rQe5gFSN1njdglzqISG9tjZGglPp6EnZ6QmAkh5yePwVizKey5fWXQ5TdtLjt3BADZJ+zgnqGfkKQ6ubX0ZPTKGITdHmhbREXOltVXoXCIlLJSCJEB/FcIsUVK+XXQ+aOBNcCRwAhfmW+Aw4FqKeUqIcSCnhrwCZonwPR96GO/LP5H6EygqoCioI4diScjDuEZCo3tUNNA9M4mYja3o1fsQklNwfB4QwZgsLMREN6DMUzI9K4YLS3YPummWuvE28PuRF8jK/fFIctfdMYElB27MYAh/1yGUATKU7H87dCLiK5qB8Ng1LrVGMEJaN2R09L3qYdSykrf/9XAW8DsLkUuAt6UJkVACTAWOAQ4SQhRCrwMHCmEeL5Pd2phEUSw7b9oa6fyJ+kUna+Sc28xSIleU0P9tBS8O8qQXi96TV3nNb58j+EiJYfkl/RN+/c2f4QRzkei6330Rn/0ExuK0GvrUOLjTA9Nrxe9sYmo95cjV6xHrt6E1HW0guEwayLeI2f0WF2vQkEIESuEiPd/Bo4Cuubq2gks9JXJBMYAxVLK30kpc6WUw4Gzgc+llD/r+91aWHTHW1FJ+vftjP9DGd+/OCmgNEx+d6O54wAIVcV1/CzKfzefuktmw9Sx4SvT9c5sTexFiPWBYA+NngI+FV4v0uM2Z1Xzp5jRpIXAOGQK2tActl06BMWt441R0UdEXiT0ZfmQCbxl6hDRgBellB8JIS4HkFI+BtwGPCOEWA8I4KYediosLHqnp+mzlNhLqtHrGsh8YDFi+FC0IVnoNbUIX4ZoJTYaQxNkrnKjtXhQtldgaBpqbjbe0p2omRnowzJRdlQhne3mG/xAmzJ3vd+uuxu9oDe3mjqX3CE050XTNiuWzMRobBtKIDaWUQ/vBLuNqllJqJ9EFkBWPAWLHwbhXJ59+oHgt79f0acmJGC0d6DmZGHU1O31kmFACDaocjgQY/JR6lvwllf0uQrPj2dQeZmbETe3sP32eNwdNsb9tgKZkog3OQZl5WaYOJIlW/9NS3P4GI2WmbPFwHMgtuTCvNyMjo5uy4GAY1BzM9LjxruzAqN975YM/U3gCl10Gf5jmg113CiUqCjUIZmIsirz+KxJpsBQ1E5FaLhnLAS75znI/6uHzddlMjKjFqFINt+Rw7jnith+WhT150ynfUgsSg/KUEsoWAw8fZnyRvij3u8Y+l4vG5TE/tnkhURG8t2zEhODmpVB1Z0C1+ET2fq3VNA02qZk054VTfUV82g+exYoviErjc7npaimrcawPFypBnqcg+QNCpvLsnj30Ee4eNpifpn2DUIXvH/b3Xije37O1vLB4oDQl5BhPaGmpUbO43iQocTEIKKj2PHLscRWSFK/b6BldCKOBi+Zfymm2RNFiqMNr6FSf6QTxeFAxMYg42Npz0+mYbSdnPfK8e4oo/zmecSVSxzNOq2XNGF/NZmUFbW0jE+l+ux2PNXR/OJHX/L3I9birCmzlg8Wg4eAQOgyYwhY3fXGDyFWg+/eRWws7TMLyL19GamvrUVU1ZO4ajfuRI01i8YxPLae+3M/IiOqhe1Pj6Pywom0Tc/jiDfX8O8n/snIMwvZdEsmQrMx/JVK3AmC+HVVJDyWgDNDoeIOG2f/bRGO5XFkj6rh318uwNayl3YKFhb7DN/UXYmKQomPp/bCWX26rP74cfuyV/sH/7LF0GnKt4GhYzidZnTnXVXEf1OMosNFad9wxF03suT+WTjWxeBZ0ET0jhYe+XYhJz32W14f8Sl3L3iF7X+dwcUffc6Xv7uHEz9YSdk5Xgw7tLVF8fxtxzPknsWoD6cx9k+FyL01XrL4H2Ig1/X9qEtKiexwkfnFrj6VT3kvvBnxoCLM/Xf1+lQTEtAbmhjy/s6AjYV0uUwzZI+bYf8p5vTPruS8yz5mzBUbefOKu7B/nkjD1CRsSR3Y59bzdlscmzuy8aZ5GGGr4emmcWTbGli54GGOPXMJf5jxAdF1XrSC4UR/tAa9oaFH4yhLp2ARSj/Maw+KdvYVA9l/IVDi4jDanGDopuBwe9BravEeOpnt5yskrLdzxsWf89zm2bAtFjmyjWsmfcUlidtYsPY8xMtpfPKPe0lUonFJDwoKNqGiS4MGo51NnlhWtw/nueLZZP7ay5Ky52hyVlo6BYs+sL8G6mASCHsyO+pr/yPVHaRL0RdMY8Y3jZTfNAf9iOnImChQVYTdjtAleBSSt3modCUhhOSus/7DmkP/zUWJWynyGszPKqH6CA+JihkXYqtH56WWTABUoXD1zhM5PApWNw9l1YxXyXyuBk9OD122ZgoWPwj6++benzMVIQI+Cf7vSnR0IP2c99OhNL6WQ9Moyei/bKLupxMwNHCcWUXd0ixyvuxg+88UZowpZfXaEUyeVMqj+W9wxNO/ZeMvHkIVCju9rQzVuruA7/S2EiUEGWosO72tpCl2bEIl58hmajfXWjMFiwPAQAc5jVS+r96HfnqKozjA9hJKdHTATdusXwHDCLQf9QtIe3wJWUsk5GZhbzG4/fdP8MnElzntp9/gjVWJ22qnQ7dx7qGLUYTBS82TEQbcXDWDZ5ozeLD2MDxhQsQN1eLIUM3IUymKxryVF7LR7aW1KXK0KUsoWOxbejMM6u/b2lc+JMRaX9oJg1AjCIU+9Mkf8q3XNhwORGwsrmNndh40dNPS0tdnfyCZ2DeW0To6idpJKr/4+udU6W7OTFpBxeEat132LJu/H8ayuuH8Me99Hvz2x/zyzEV88ehcSlzpTI3diU2ofNaucnbJkTiNTm/MWr2Nz9pVFjkzsWs6p3x6NdLWw731elcWFnvCPrZObDphEmLmxL1qp6sbc59tJAB0PazwUEfmo8THIxwO1PR0mk+ZhsxOI2qXM0wlvnZ9wqn95NmUHykY/nY9wqmx8O0baTHs3H7KC9z8/SkYiV48usq9u3+CvU6lwRtL/SHmPUywV1Lw2uXECjd/ynmf/6uayx+qJ7HO3cEJ6y9kUeMUToipoaklmujkdnIT6iP2xxIKFvuGfbxeT1y0EaXJGcj6HJEuQiOcz4Ef6fX27e2vaSHp6AGqr55P2f/Np2l6JnO/raPwrqnotbW0ZivITduR3280r7XZu7Xh1zXEfbGFsQ/VsuW6OPI+lDgaFLa7M5jk2MV1Ez8HCTcXfMi6Fycy4p9FvLZtGpPzy3l26XwajWhiKhV+8cQ1RAmDD0vGU+VK4N3mqZyUu54psTt5tjmfmUN3kne3QnlLcuT7sxSNFgcj2pAsUBS8FZV7VY8SH48+sQCxZG33k/7B6x8j/vDuYZYqbafPIX5bM9tucvDm/Mf4vG0sr//paOI/3BDigSkcDqTH61M8ekIUkEpsLCI6ira5I6iZopG+1ou8pgbPfzJRXZKEzwsxhmejlFej19ay7YHZjH2sET3WTvnCeC792SJeuv1Y6o5tJ+clO850lZhqnfKzPGSkNdOwIgNXppeRL3pZufgBmly7rVT0FgPEILAxEDMnIld2jfXTnwp89yAExuFTUb76fs/qUVTTOUlKvEfOoKnATvrSBoTLjTcjAfHdmm6XqKkp6HX1KBPHdkZpUlSqL5+DHgVZS9qwldeBIpBtToymFtTsTNPF2+lEmToeY80mM5ak04kSF4dQFURsLLsejefeCa9x2Su/JGO1Qd1ZTpLejKXqaA9j72jG/lgz2+tTKbn0KZzVlu+DxUBxIARC1yn33ggE6LwHKXsUCD3qGYRATU9Fyx6C0DS8sSrpL67F2LAFfVtxN4Hgd7EWPq9KpbVzCeJdMJW43TrZXzfTlhvFln+km1uZ0dGmi3dZZSDJrbF2s/l/ewc1v5yL0eak7bAxeCt30bArgRtv/yXZ33ipPr2d3JRGamZATEIHnow42r02Hpz8MmpyZDNnK0OUxcFBGEG0X1LdCyVyBCQp8YzNQVuxFen1EvvVFvQgXYMSFYX0dgaP9W9LGnFmTITg8PXa56twJCSAw0FikZvELzS89Y0h/hHB7QIwewJP3fRPbvniPKLeWw5CkJTVwviLK5mVsIMVzcNY89pEjCkdjM/YTfwdLk5OXc2dO4/B2/xmxFu2ZgoWBy0hAmEf7XaE7FB0tWuYOxltxdaA0lFvbg45bbhcIX30e4Yq1Q2+AzKk33pzM0ZDA3pTs+kWHiG1mxITA4qKVlbLFbdcC7uqA/UlPRrP+upsHnznOOrOSSL36c0MfVVlW106ipAsbxtB+x052BsiC1NLp2Bx4OiqyBvsBOtSFBXFbuse6DXcrCI4zFogVH0f9DJ7qLsJiVWhqCixMRhtThS7DUYOx4izs3zVwxEVjdZMweKAIWZMGPwCQQhzba9pIX1VExPCh4xXwoyzoOv80ZYDdYdBTU1BmTh2j59NSPAaQ8doaQkYTBmbtsHSdT3WbQkFiwPGXisL9wdSgpRIr9e0YvShNzR0lvGHVPPpEHpCiYoCxZwBhLOoFA4H3rFDEfqeh4hTfRGtg9l97Xzzg29JIj1WPAWLwciBiMm4FxgtLZ1fguMj+t66ITMHIRA2O0p8fEjWKZGYgPT4FI9BAsRv1CQ9XsR3a9C3Foe2Ewb30TPDHtcbmzrr9JHziS/FXV9MuHstYWGxL1BUlB6sCw8YfY1E7R9cEXwuhGZDRDkoenwEIq7TT8NobOquQBQioNBU7KaFZtdliJqcHFIewNbqRZkyLmQGE9LFICWpvrWYttPm9On+LKFgccA4oNmYIjEQCWGEMK0VhWDk7R10TM8PnJIuV+jbOmimIVQ18EwCswjfOf9yRYmK6iz/3Rra8uMR9lBTby0vN+x9tWWqaMPCnOuCJRQsTPb3VP5AZ2PaB/gNnfy6Ar21DWPdFuw17b4CYcKzDckMfJZ90CN0FaSx/92IXtfFuUlTA235lxBC00gs8WAk9J6jwhIKFiaDfRfgICBgpOT1ms/TJ/jk9xsjOmKF+G50+Q16ct7yEy6zlbdkR2eVviWE+8ip/N9DTyEqqnut0xIKFvuf/mSQOsiUkZHotmwIR9C9KvHxSJfLjBuxJxm3urRl/2o9t198QZ9yZVhCwWK/o44p6Hvh3gbSgUhRt68Iih4lO1ygqKa1ZG9LrTDPQB03KuS7dLn67PRlCQWL/jEAg1DfvG0AOuLjINRNRHSyCtqVCGTB7suyLswz6MhJCNkK7d6JyKcsoWDRP/ozCPfTW1w4HAfNjEHY7JENnKREHVUQusXoX1L0cxll+3RVZ97JsG1FPmUJBYt9R28CZID0BUpcbOR4i/2ubN8Kl4DfQwSEboQaSfnQhg/td1tdo0P1lT4JBSFEqRBivRBijRBiZZjziUKI94QQa4UQG4UQF/mO5wkhvhBCbPYdv3aPemlxQGj4+TxqrpiHlpWJcDgwDp3a8wX9HeR7uOPR1VhHr6vvFm9xj9kfy5Ee7luvCM2QpURHo6amgD/NWxehFclwqRtdf5sefqv+zBSOkFJOlVKGs628CtgkpZwCLADuEULYAS9wg5RyHDAXuEoIMb4fbVrsDXvxJlbT00lbUoPiAaO5xVRUfbum54v207Zm4E2qqAMz2zhQS4/gdn2fpcsVInylroMh0as6txKVmJiAXkK2t/et/123O3tYWgzU8kEC8UIIAcQB9YBXSrlLSrna7JNsATYDPeSmsRhQ9mKQ6jU16IXbSf33kj2ehvaLPRncfVXE9ULzWX1Lattfeo0OHRI4xVQyqkmJ2LaUBZ6HdLvRGxo69RCGjvR4kbpuGiapPlftIMHQdeehs0N9e8Z9FQoS+EQIsUoIcVmY8w8B44BKYD1wrZShBt5CiOHANGBZ+P6Ky4QQK4UQKz24whWx2N/sT4OmgWhrD2cNia+v3vu2w9DXqFDykKlmWLj4eHPAt7aZSseEhLDPRXrcKNHRtJ48zfQfESLgMwFgFO3odo3fnFpNTTHrMMIHcIG+C4VDpJTTgWMxlwCHdzl/NLAGyAamAg8JIRL8J4UQccAbwHVSymbCIKV8Qko5U0o508YgdJQZTPTnj/8gM/7pcRutN/Y0/kBXfcTePrN+LEeUmBi0ok6rRqOtjYbTpqKmpbLltsgr7ZbjJhH39ir0lhZKb5sbMH/W8oeZrtm+ewj4QUgDYbNjDB/i+76X8RSklJW+/6uBt4DZXYpcBLwpTYqAEmAsgBDChikQXpBSRg4MZ9F3+vPH37XsIBAS/gCm4RgUTlIRnm+35UCEwe/fCfGXDxffwI/hdAb0BbLd9JFIWV6NiI5m3J07I14Xv2g90pAIzUbuF51CbdNvMzFmjEUdOxIA75DkQJ+kx41cvSlinYHb6q2AECJWCBHv/wwcBXSNjrETWOgrkwmMAYp9OoYngc1Synt77Y3FvmcQ+DjsFx3FHqBMHNvjeen1BgSBEh8fMmUPFrZdZx6FD4ex4AwjUAK+E2WVyJaWUL8IRQ3xhfBbOkqPG+2zVYHjqatVXKkOWscko+XmIFZvRs3M6HS26sPv35dozpnAW+b4RgNelFJ+JIS43GxDPgbcBjwjhFiPaSt1k5SyVghxKHA+sF4IscZX3y1SykV9aNfCYr/iyorF1lMwKCECysHADkgPcSb9A3HU5UV0W8H3sPVpdHSgpaYg2to7BYyhI129b5dmvFWIXluHMmUc3vKKsKHkesMK3Po/inA4kG73oJg57BGDICFNT33Q8nLxVuzqHPxCoDgcGG5PqECIIFSEzW4mg3GFV7r7E8r0G19g2WXyM5plvRW49X+GPugN+uS156urW4bn/Umke+ml7z3pLfqLOjI//IngPnTppycvFTUuNmTQB2eaViaPDVICdtYTsD/wuCMLhORkdlzmW+pEUmpGem59MM6yhMIPCC0vF2Gzo44eMXCVStmzDf2+Zk93FNwDZOEINM7M7H7QNxgDSsSub/rFa808EEHHg3dWpF1Dr67pJlhCAq0oKlpW97Ybjx7DsKeKzC3LLoO8X5mzI2AtH35gqEmJyA7X4NDiDyb2YrmhJiUGgqEGqhvg7FRC00yBENRHrWA4ONvR6xpCc0UoKkp0FEJVAwlolPj47oFlfWX9giO4z9by4X8BIRAOB3pzK1JKtNycfbf96KtXP2L6vql/X7A31p1dBAJAx0+m7U1vuhE2FJvbg9HY1N2OwtAx2trQW1oCsw+jpSXk9w7MMIJmEtLrDeSx6AlLKPxQkNJcgxo66DpGbR1qRvo+awvAXt64b+o/CHB81M0vMICWl9u7HqbrwPTllwimfWyWqZgE1MyM7nX4lnbBodz9eHdXmcZKP+ouvNTUFIzkyP2zhMIPEH9SU9kaGr/Pb+I6UOjbige0vn3KQM+aIs08hMBbXtG7LUYfZi6O3W2BN71eVR32GsPp7JxJBEVuQkqKb5uBoZnHgnUfbfNGoDa1R2zXEgoHG33UNkuvt1tQT72+gYMFJSZmYAdyT5adA+kl6X/jD4CuztiwpdMT1B+duY+KxLpL5mFrEp2GTUMyAvcZ9f6KAfF9sBgshEleKmx2tOwhCJs97FQywCBUKkfCcDrNdfEACoYQv4qgZ2EcMjnyNQOwtdmTP4eWk93zxX5PUH+uh3BCwS/Ugv42Mj8pY9hTRYC5pRocAi+iF6W/up57ZDHokRKp63grd5l728GRfYIGVKRw4SGZh/YH/Rjk3l27UdPSBuxN7p01Luxx5ZuggKZCwOxJga/+FG/dL+rep0h6hJ52gkJMmftAuLrU1JRu/fGWlQd8KowyXxs+x+Xdh6f22IYlFA52/Ka3fldb6HwLCqXXQRiSKHV/IPr3J6fX1pop1PZwxqBMHW/ab2ga6tKNnccjvL3VpKSQ9XbYiE7h0s3ji5gcFRXICxkJdfzokP/7jRCdvzWYfekSU6Frv4JJf2J5j9VbQuEgR6hq57ZUe0fodFcapp9+TExE67j9jn/PvKdljh8hzL57vXucd1JuKMSob0AaMmSAB964vuWXv0/S7UbfWtRjnUpU+L5IrxcpJUJVuhszBU37Zdku1ORk4p6o26NZkDY0F2yary9RnebO/mfre1Zabg7KlKDZkb9PXXNZdsESCgc50utFSU4yP3vcoVpvfzbk/eiVGDaPYRj6FFNRyoCydE+NsQIK10iJYH0uxYDpa+COnKI9gKp2bhF2VfB6vCECx0/H0b6tQUXFaGlhy30FrPt8dLeAs12XeV2Fp5qagndneUAQGOH6a/h+96R49Fh7YOYSqKs3E/Eez1ocFHh37d73jfRx+t51G/RA9aOvhFgldplNRMIzcxRGfSMQRhEZJHyU6GjzgxA4Plwdcj55iZ38uzZ0a0+Jiw0Nxtol+7Rsc6LExYVtz49QzWWjsWELtpIqRJTDFD69zBACTfaplMWBYR8HRBEOR8RpfNc3lpqW1qc6Q3QUA7nV14OL8kARrKTtOuPRsjID6/g//PsZvIdMjNxHH4EZmpQgjRCflLQnloYN5a7X1SOyOo3OQpZ9ioooGBq4LtL2pLmE6Xz2/vJ9Ncu2hMIgJvCm6Qt7IECEEN3eRH666iD0mpr+1z8AuRj8b80e6+pB+PS4HZiXGyL8tKzMgHmwPxaBH+lyIxLMvtxddjT2ikbzhK4j50/p7GOE30HOn4JzZNAuQU9h3n1GYd0GvaGHbC2GG+RKfDz4TKaVmBj02vqIZSNhCYVBTL90Af19gwqB0dGxTxWQA5GLIfCWM2Tkwd+DO7CSFWQeHDRg2386G29ZOUqcbxtRUdFr63BONmcIQrMh7J2zKL2hAb3KFIw73s8PKPraj5hEw1hzCRHINh2uH8s34fhodb/ySqhDsrof7OV3NlpaUMaMQBoSo8PVa/KZsH3tV2mL/1kOaEwFAENHy+y/L4e31Ixz2DX6UNy32xEOB1v+PMpcQhk6Sv5QYrZUAd3jGSixsdS9NRwUlSFLnMgdFQDErikj5aklPfZBiY3tzA3Zn76XlferPELgPGUO285P6dymhH5vA1tC4X+Vfs4sgt+anQf3bxDYvVGoBsdXBNBr65AuF6NvWIOSaC4L9G3FeHeUmQW66gfa2uj4Kg2hCMR3awK7In3p077eDnYfY+ataD5nDof9cQmJXfP39lMYWfEULPaYbjEFBkOItAiGRQNCH+5vb+IsqOnpYXU3Wk52j5aPakICenMz6oQxULYrEGMhbN98MRuseAoW+4Ruf/z7SyBEmqEIMXCJZoPpg3IQTE9EZXhe98vj480oSrm+5GgR+i+08H335vW88+PXPekbt0YUCOCb7fXhN7KEgkW/6ZM14j5rvIe3teybnUG/m7T1McRZWgpGUnfdS/Nr6SjjRyGjwhsP+bc6g5ciwbsiyprCzuPhtiG76Ay0cApKwOjo2zLGEgoWfSPo7abmhP+j29ftAgdkeRJJJ9B1u1NWViFXhsaIV9NS0Q0FineiF5WEmFT7P2+9teecy8HWnOGWJt2EVnA+ipCK+rassoSCRd8IGox+jf7+bndAiDR1dzgiepJGoqvpddctZKFpyPYO5EvpKL4AN0pKEgDS60F63JTeNg/N2b1PfVVOhuu3d2eYXYv+pLLrc0mL/z0GQYq5vSFgLhx8HxGEjJqWSsePI8dV2KP2Y2KoPXMyyZtbAtuL7VOHBpZAamYGQ+eXU/CPdT1HxQozoP3LCCUpsbuna7h77Ify1RIKFj9YlESfe3Ef9um9FZU4PlixF411H7h6czOKF5SyahounIealkrUrlbUlGSU2Fha5ufT9kQORlsbrYeOjFy3oeM9ckbIIX+gV9kUWbEYTH9Cv1tC4X+YXqMKHejtxb3EW24aGO2zLcpgIrSR/NIK9Kpqkje3QnIixroteMYPo+iPk4n/spDkZeZW4413P9/t2sInZwaUkLav1+L5cZBgkNJ09dY7nZyEzR4+wCuWmbNFHxmsiV4HnAO4DAoMxuXr0bfvAED5dg0j/7oBvaEhoJ+591fnBa4RmobzlDnMGlNC9ZkTzGvyh9I8zFRMqmlm5CTpcSO9na7TTWdMp+SK8DOO/gTttYSCxQ+TPugR9hlB4dyCUX3LGS0zo5uHpOPDFQE7BvlxFm88cC/N12Rhc5p917cVk/asLwhr8P0EfU54eQXp3/uEUJfljF7fgJqc3CdlqiUULPaMgXSL3hfsaTaodJ9/RYT764uNRv0fXaHh0nzoTc2oyclUnh4+rZ9/uZMZ08yJt9yI/H4jCS8tC2rb1AtETCxr6ES/szzwOQQp0RsaUFN6j8lpCYUfIP3dWtsT1MQEvEfOQMsf1nt/BiC/4Z7Sn7bVhAR2/MKMdGzMj/C2D+OUFRLyDIh9NDHs0mz3m6MhLZkhL2zuvDaMXqf2aEh6zudkFSTcIgaR7Qd98dXok1AQQpQKIdYLIdYIIbqlxhFCJAoh3hNCrBVCbBRCXBR07hghxFYhRJEQ4uZ+3YHFHqHEx4V+7yGmwJ6iNzSgRyvIut4Dvw5kBuj+ElHB1nUmIATlv5jIsH9tNU8vXh84FRx6zZvbPRKy3LQ95Hv0FxvDtut4KwmqakO2EMMJj0jJcftsrbmXOpQ+OUQJIUqBmVLK2gjnbwESpZQ3CSHSga1AFqADhcBPgHJgBXCOlHJTT+1ZDlEW+w2fzUDx7fMouGV5INht2KJ+Z6cuptbhEtD2FyUqKmAMJRyOvfOsVFTU9FRkS6tp2hxmZ2R/OERJIF4IIYA4oB7wArOBIillsZTSDbwMnDxAbVocKA5yo6YQfINb6/CFyo9g06BERQVsA1zHzAxZluytQIAupsx762pt6Bh19XhnjUGZPKbfl/dVKEjgEyHEKiHEZWHOPwSMAyqB9cC1UkoDyAHKgsqV+451QwhxmRBipRBipYdBEo7cIjyD0H5hb520ht662PwQwd5AnzHWbEfTiNlez9YHp5sh6LsGnxkkAlNoGurijRhrepyUh6WvQuEQKeV04FjgKiHE4V3OHw2sAbKBqcBDQogEINwTCvsXJaV8Qko5U0o508a+V5RZ/LDYF96R0Lm/L75bY3phGhK9cDvj7qsLCUHvR8se0uc6u9JfwdaTEtXo6Ij8TAYiFb2UstL3fzXwFuayIJiLgDelSRFQAozFnBkEO5jnYs4mLCwGD0FKx+ABKxwOjObWzu+a1pkFujBUuejHCNouDNkF8iWK1YYPpfqU8FP6fgk2IVB8Kf8C26h9QImP71Xx26tQEELECiHi/Z+Bo4ANXYrtBBb6ymQCY4BiTMXiKCFEvhDCDpwNvNvnO7AIy4Hc4tsv7GcbiG0PzDSbjYnBNSUfz1HmdzU5KWSg9uW5Gx0dZuo4h4OOIyfjXTiDbc/MQB07AqGqtEzJIv3FtWZ9Myb0fK9ChOaACEZKDN8uhgwTKj4canIyQlW6zW660peZQibwrRBiLbAc+EBK+ZEQ4nIhxOW+MrcB84UQ64HPgJuklLVSSi9wNfAxsBl4VUq5MUwbFn3BP+0byOhCg9EIaX/4KgQx7u5dZrNOJ/ZlW2hP1cwQZ7V1od3qY5aq2nOnsfX+Kbh+VU/1NAe3zn0HynfjPWwyDaM1DKeTXb+ej1rXQuUbvllDmCm9mD4e2d7eQ6QpBTUhIdCv3pIF642N6H1woOpV9Ekpi4EpYY4/FvS5EnMGEe76RcCiXnti0TtCAakPbCDQ/TwAByPB8SGETSOxsAXp9SLs9j2Kt5j++kbid44CkkheX8StQ09jjHc9SMh5YBU4HLgTQdY3oq/2JZ0Jo7yVqzd1P95lOzQ4/JpIjIfGxvCKYCFQ4uKQ/rDvPWBZNB4M+N/m/gSiP4TlwyDR0ndFb2xCrtqI4XT26jDmj6LsR51gvvVLnxqKN1bF/uVaZFYqI1/uwHA60VpcSJcLNTuL4bctR29pIe+2xaGV+n/rLoO/q5Vq5Y3zuw3u4p/nUn/RXLN8178RKc2cEHG9h+q3hMLBQJe3+Q9BKKhJSXtXwX4SKsaPOhPDdsXxxbrO7mga7K5BOBzk/FMj5oPVZnLbdVsQS00VnFppLke8JTu6JY4RNjv1F89j13Vz0PJyu2XZVnOGhAiKCads8V1oPgfvkTMQXkgqbAeg5ZQZYS1ZuwVkCYMlFA5C9jQD82CiL3+c/cGvHBxo1O985s5hkrMGL+NqL5yFXlePdLlQvl3TueyQMiDUu/kdBAk2MWEktbN0brzsVTP7dZclgLe4NBBDAaDlNFtn/YBj/U6G3bcWdZlplxD3+nJEfvfI0nL+lF4T+1hC4WBlMCoI9yddBk3UivBbhHuCMnlsZzPBg7sH0l9a2/+GhMLua+ez7eE5KLVNjLu3lj8vOh0jPjZUbxQkPKp+ORMlJgbv7qrQugwdJS2lc0khJeyq7t6kIRFDMhDRkf1hLKFwkBKc36D95NmDdo2+vxjImYfQTQEQbEykxMREjJOAokbWP4T7XYQwnawMnbd/fScbTn4Qb+VuhG4w6rcrMTZs6SzqcATiMABkPLIsbFslj+XQOCfUWDic+bVaVAENTejRPSTljXjGYlATrGSSikBotkDGZIu9Q9/o85T0RV5WoqJAVVG37AhbXk1PDWsQJBwOdl87r9tx509ns/n2PNTRI/jJazdy+J+vBUPnkLc3d9/tMGRIyDU1IY5wZD4VRdzrvceYlK1ttBw+CrWxPWIZK23cD4nBkLbtB4iamhI5sIkPYbMHBLWYMQHF6caTGovW4sJYuzmk7Ny1Ht594kc4jq/G9u9UYt5aDlLiPmYW9o86B3aw52SgL0mJyA4XRkeHmTtCVbqVUaKiaDp5KvGvLO2+i+Hz9OzJS9ISCj8U9mUOxYOAvXY3HrCOCHb9eh55r5d1JqvtgnHoVGxbypDtHRjtHZ2/Wz9/Q+FwoERHmQZJXcaxEhsLitIt7JtfSFi5JH9ghI3Y+z8sEGDfZ3YOhzp6RNgMVnlvlEcUCGAGbtVr60xz4+DfrZ+/oXS50Jtbu8V2ADNLtsjOpOaKeWjDh4b0rzcsoXAQ4hkd1vvcYn/hUziKtvbw9hYDrPTt0S6lqw1LVFSgvL61iBk/X0fpubn90jdZQuEgRPnm+z6V2x+xGvcHEZ2CDhCK2z/dV8LuenhLwisk+4t/98Mf3KUveHdXhSgrKy7KYej9a6k8LXyw2HBYQmGQsC/iGA6KNXY/UMePDmuF13JUzwlY9zf+wCX+VHCRiJSYpSeC/w6kxw3C3FkKi29GIhwOlImdQWCC/9c3FWK0tZHxyJK+96HfvbbYJ0i3Gy0vd5+305s124FENLWGtdaMfWNZmNJ9qG9WBLuCgaKXZYLhsxNoO32OWbxLEBV1ZH7I0qDt9DmoixJDm5g+norrZ6KOKojYTtPbuSx4ycwJERAKwansY2JCwsy5jg312eiKJRQGCdLrxVuxa5+3oyQn7fM29hRvxcDF31FiYhDrt3U/vg8iWwfjd5ISMyYgfEKjLdM0FGo4ewZC01CmjGPnrfMpeKkyZKrfMFql7fbQF4NcvYncj+oR7WFmfVIiZkwgP6Gep9/6MWCawDtPnUPLG506BMPpRChmXxovmEf0t1u61xXEoNySFEK0YEaEHoykAWGjWg8SBnP/BnPf4H+rf8OklGFDNg1Wd7utUsp94+GylwghVg7WvsHg7t9g7htY/fNjLR8sLCxCsISChYVFCINVKDxxoDvQA4O5bzC4+zeY+wZW/4BBqmi0sLA4cAzWmYKFhcUBwhIKFhYWoUgpB+QfZgKYNUH/moHrgBTgv8A23//JQdf8DijCtEk4Ouj4DMyclEXAA3QucxzAK77jy4DhQddc6GtjG3BhP/p3F7AFWIeZ/SppMPUv6PyNmCn30vZ3/3rqG3CNr/2NwJ2D6dlhpjBc6ju2Eph9gPp3ve/5bABeAqIYJOMi7FgeKKHQ5SGowG5gGHAncLPv+M3AHb7P44G1vhvKB7YDqu/ccmAeZi7KD4FjfcevBB7zfT4beMX3OQUzI1UKkOz7nNzH/h0FaL7jdwy2/vm+52Em1NmBTygcqP51eXZHAJ8CDt+5jMH07IBPguo/Dvhyf/cPM6FyCRDt+/4q8HMG4bjY10LhKOA73+etwBDf5yGYhklgSsPfBV3zse+GhwBbgo6fAzweXMb3WcO07hLBZXznHgfO6Uv/uhw/BXhhsPUPeB0zIU8pnULhgPSvy2/7KvDjMGUGxbPz1XlWUFsv7u/+0Zl5PcV33fu+Pg66ceH/t690CmdjTpMAMqWUuwB8//tdxyKlqc/xfe56POQaaaakawJSe6irL/0L5mJMCTxo+ieEOAmokFJ2DRd8oPoX/OxGA4cJIZYJIb4SQvg9bQbFs8O3PBRClAF3Yw64/do/KWWFr+2dwC6gSUr5CYNzXAD7QNHoSyR7EvBab0XDHJM9HN/Ta/rUPyHE7wEv8MJg6Z8QIgb4PfDHcEX3d//CPDsNc1o6F/gN8KowvYAO+LPzHboCuF5KmYe5rn9yL9rao/4JIZKBkzGXAtlArBDiZ+H6v7/7Fol9MVM4FlgtpfQHpq8SQgwB8P3vD0YfKU19ue9z1+Mh1wghNCARqO+hrr70DyHEhcAJwHnSN88aJP0bgfnHtFYIUeq7brUQIusA9a/rsysH3pQmywED02lnMDw7MJVsb/o+vwbM7trWfujfj4ESKWWNlNLj6898Bt+46KS39UV//wEvAxcFfb+LUIXKnb7PEwhVqBTTqVBZgfn28StUjvMdv4pQhcqrvs8pmMqcZN+/EiClj/07BtgEpHcpNyj61+VcKZ06hf3evzDP7nLgL77PozGnqmKwPDvMTOcLfJ8XAqv297MD5mDuPMT46vwP5o7NoBoXIc9xgAVCDFAHJAYdS8VMT7/N93/wA/s9pnZ1Kz5Nqu/4TMztm+3AQ3RuvURhSvwiTE1sQdA1F/uOFxF5UIXrXxHmH/Ma37/HBlP/IgmF/d2/CM/ODjzva2s1cORgenbAocAqzEG2DJhxgJ7dnzG3vTcAz2EO+EEzLrr+s8ycLSwsQrAsGi0sLEKwhIKFhUUIllCwsLAIwRIKFhYWIVhCwcLCIgRLKFhYWIRgCQULC4sQ/h+YhfXCbkhfjAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "with r.open(raster_cloud_mask) as mask:\n", " rplt.show(mask.read() > 64, transform=mask.transform)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can find out the vector cloud mask path by manipulating the path to the raster cloud mask:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'zip+file://input/tempelhofer_feld/S2A_MSIL2A_20190114T101351_N0211_R022_T32UQD_20190114T113404.zip!/S2A_MSIL2A_20190114T101351_N0211_R022_T32UQD_20190114T113404.SAFE/GRANULE/L2A_T32UQD_A018609_20190114T101352/QI_DATA/MSK_CLOUDS_B00.gml'" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vector_cloud_mask = raster_cloud_mask.replace(raster_cloud_mask.split('/')[-1], 'MSK_CLOUDS_B00.gml')\n", "vector_cloud_mask" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Trying to read the cloud mask from the zip file" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "import geopandas as gpd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Fiona needs very long to open the GML file, the following lines are commented out because they did not terminate in an acceptable time (< 5min):" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "#with fiona.open(vector_cloud_mask) as f:\n", "# pass" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# gpd.read_file(vector_cloud_mask)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The workaround is to unpack the vector file before opening it:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/opt/conda/lib/python3.8/site-packages/geopandas/geodataframe.py:422: RuntimeWarning: Sequential read of iterator was interrupted. Resetting iterator. This can negatively impact the performance.\n", " for feature in features_lst:\n", ":21: RuntimeWarning: Sequential read of iterator was interrupted. Resetting iterator. This can negatively impact the performance.\n", " cloud_mask_fiona = unary_union([shape(f['geometry']) for f in features])\n" ] } ], "source": [ "import fiona\n", "from pathlib import Path\n", "from shapely.geometry import shape\n", "from shapely.ops import unary_union\n", "from tempfile import TemporaryDirectory\n", "from zipfile import ZipFile\n", "\n", "tmp_path = vector_cloud_mask.replace('zip+file://', '')\n", "zip_path, file_path = tmp_path.split('!/')\n", "\n", "with TemporaryDirectory() as tmp_dir, ZipFile(zip_path) as f:\n", " f.extract(file_path, tmp_dir)\n", " tmp_path = Path(tmp_dir) / file_path\n", " \n", " # read with geopandas\n", " cloud_mask_geopandas = gpd.read_file(tmp_path)['geometry'].unary_union\n", " \n", " # skip geopandas and read with fiona; this generates a RuntimeWarning\n", " # about performance\n", " with fiona.open(tmp_path) as features:\n", " cloud_mask_fiona = unary_union([shape(f['geometry']) for f in features])" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cloud_mask_geopandas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can skip `geopandas`geopandas and use `fiona` directly:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cloud_mask_fiona" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that the aspect ratio is different than the raster file plotted above." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using the helper function" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sentinel_helpers import scihub_cloud_mask\n", "scihub_cloud_mask(product_path)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.6" } }, "nbformat": 4, "nbformat_minor": 4 }