{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Network Analysis: Investigate Chennai floods\n", "\n", ">* 👟 Ready To Run!\n", "* 🖥️ Requires Geocoding Portal Configuration\n", "* 🖥️ Requires Hydrology Utility Portal Configuration\n", "* 🔬 Data Science\n", "\n", "On December 1–2, 2015, the Indian city of Chennai received more rainfall in 24 hours than it had seen on any day since 1901. The deluge followed a month of persistent monsoon rains that were already well above normal for the Indian state of Tamil Nadu. At least 250 people had died, several hundred had been critically injured, and thousands had been affected or displaced by the flooding that has ensued." ] }, { "cell_type": "markdown", "metadata": { "toc": true }, "source": [ "

Table of Contents

\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The image above provides satellite-based estimates of rainfall over southeastern India on December 1–2, accumulating in 30–minute intervals. The rainfall data is acquired from the Integrated Multi-Satellite Retrievals for GPM (IMERG), a product of the [Global Precipitation Measurement](http://www.nasa.gov/mission_pages/GPM/main/index.html) mission. The brightest shades on the maps represent rainfall totals approaching 400 millimeters (16 inches) during the 48-hour period. These regional, remotely-sensed estimates may differ from the totals measured by ground-based weather stations. According to Hal Pierce, a scientist on the GPM team at NASA’s Goddard Space Flight Center, the highest rainfall totals exceeded 500 mm (20 inches) in an area just off the southeastern coast.\n", "\n", "[Source: NASA http://earthobservatory.nasa.gov/IOTD/view.php?id=87131]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Summary of this sample\n", "This sample showcases not just the analysis and visualization capabilities of your GIS, but also the ability to store illustrative text, graphics and live code in a Jupyter notebook.\n", "\n", "The sample starts off reporting the devastating effects of the flood. We plot the locations of rainfall guages and **interpolate** the data to create a continuous surface representing the amount of rainfall throughout the state.\n", "\n", "Next we plot the locations of major lakes and **trace downstream** the path floods waters would take. We create a **buffer** around this path to demark at risk areas.\n", "\n", "In the second part of the sample, we take a look at **time series** satellite imagery and observe the human impacts on natural reservoirs over a period of two decades.\n", "\n", "We then vizualize the locations of relief camps and analyze their capacity using **pandas** and **matplotlib**. We **aggregate** the camps district wise to understand which ones have the largest number of refugees.\n", "\n", "In the last part, we perform a **routing** analysis to figure out the best path to route emergency supplies from storage to the relief camps\n", "\n", "First, let's import all the necessary libraries and connect to our GIS." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import datetime\n", "\n", "%matplotlib inline\n", "import matplotlib.pyplot as pd\n", "from IPython.display import display, YouTubeVideo\n", "\n", "import arcgis\n", "from arcgis.gis import GIS\n", "from arcgis.features.analyze_patterns import interpolate_points\n", "from arcgis.geocoding import geocode\n", "from arcgis.features.find_locations import trace_downstream\n", "from arcgis.features.use_proximity import create_buffers\n", "\n", "gis = GIS(\"home\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "## Chennai Floods Explained" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAUDBAoKCQoKCgoKCgkJCQkJCgkKCgoJCQkJCQkICQkJCQkJChwLCQkaCQgIGCENGh0RHx8fCAsgICASIBASHxIBBQUFCAcIDwkJDxsVEhUXFBcYFxQVFhUUFxUVFRQUFBUUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIAWgB4AMBIgACEQEDEQH/xAAcAAABBAMBAAAAAAAAAAAAAAAAAgMEBQEGBwj/xABgEAABAwICBAcJCgoIAwUGBwABAAIDBBESIQUxQVEGEyJhcYGRBxQyUlSTobHSFRZCU3KSpMHR8BcjM2KCotPU1eEINFVzo7Kz8UN0wiQlRIPiY2RltMPFNTZ1hJSV1v/EABsBAQACAwEBAAAAAAAAAAAAAAABAgMEBQYH/8QAOREAAgECAgkBBQcEAgMAAAAAAAECAxEEUgUSExQVITFRkUEGFmFxoSIyQoHR4fA0scHxcoIjJDP/2gAMAwEAAhEDEQA/APGSEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACFtv4ONKeS/49P+1WfwbaV8l/x6f9qtjdK2R+GYtvTzLyjUULcG9zPSx1Uv8Aj0/7ZA7melvJf8em/bJulbI/DG3p5l5Rp6FuI7mOlvJf8em/bLP4MNL+Sf49N+2Tda2R+GNvTzLyaahbmO5dpfyT/Hpv2yz+CzTHkn0il/bJutbI/DG3p5l5NLQt1/BXpjyT6RS/tlkdynTPkf0il/bqN1rZX4Y29PMvJpKFvA7k+mfI/pFL+3WR3JNNeR/SKT9um61cr8MnbQzLyaMhb0O5HpryL6TSft1kdyHTfkX0mk/bpu1XK/A20My8miIW+fgf035F9JpP26V+B3TnkX0mk/bqN3q5X4G2p5l5NBQt/wDwN6c8h+k0f7ws/gZ075D9Ko/3hN3q5X4G2hmXk5+hdB/Avp7yH6VR/vCyO4tp7yH6VR/vCbvUyvwNtDuvJz1C6IO4np/yD6VR/vCz+BLT/kH0qi/eE3eplfgbWHdeTnSyuijuIaf8g+lUX7ys/gP4Qf2f9Lov3lN3qZX4G1h3Xk5whdH/AAG8If7P+l0X7ylfgL4Q/wBn/S6L95UbCplfgbWHdeTmyF0kdwrhD/Z/0uh/eUodwjhF/Z/0uh/eU2M8r8Daw7ryc0QumDuDcI/7O+l0P7ysjuCcI/7O+l0P70o2M+z8Daw7rycyQunDuB8JP7O+mUH70sjuA8JP7O+mUH70mxn2fgbWHdeTmCF1D8AHCT+zfplB+9LH4AeEn9nfTKD96TZT7MbWHdeTmCF049wThH/Z30uh/eUh3cH4RDXo/wCl0P7ymxn2fgbWHdeTmiF0n8BXCH+z/pdD+8rH4DeEP9n/AEui/eVOwqZX4G1h3Xk5uhdH/Afwg8g+lUX7yk/gQ4QeQfSqL94U7vUyvwNrDuvJzpC6J+BLT/kH0qi/eFj8CmnvIfpVH+8Ju9TK/A20My8nPELoR7i2nvIfpVH+8LH4GNO+Q/SqP94Td6uV+BtqeZeTnyF0A9xnTvkP0mj/AHhYPcb055D9JpP26bvVyvwRtqeZeTQELfT3HdOeRfSaT9usfgf035F9JpP26btVyvwxt6eZeTRELfG9x/ThyFFc7u+KT9urHRncD4SThxi0bjDPCPfdC23z6kX1KJUZx6p+CyqQfRo5ihdSj/o+cJnC40beziz+uaP8Iaxbvq6zpH+j5wlgaHS6NwtO3v3R7vQ2quq6kr2sTrLrc5YsrdndyjTI/wDB/SKX9spg7iunrA94a9V6qiF+o1F1d4equsX4KqtB+q8nPELfKvuQabj8OiDSNnfNIT2CdRT3L9L+Sf49N+2UrDVX0i/DIdanmXk01C3E9zHS3kv+PTftlj8GelvJf8em/bKd0rZH4Y29PMvKNPQtv/BppXyX/Hpv2ywe5tpXyX/Hp/2qbpWyPwxt6eZeT0qzRTwwSkfiy4DFuvt6LraNH8CjNCHxvGI6sTS1tum9+tWU8DnFrRHiicGlwZmMJAsQNh5l0PQtOA0NIFgBYgWuDzL0mJxsopWOLSoJ9Tl0fASpjxOezEwDMxnGbbSBrumOEXBUxU7KiMvc12IPa5uFzC06/k5+hdxYwNcLainKqhimjdE8cl26y0lpWakmzZeCi1yPMmAjMpTSu2aa4BUzozGwNYb2a+3Kbc/CPw9epaJpTgWaeOd0jsTosJbgvhc12V7ka77OZdSjjqdQ0KmFqQNSa5ONcmGpxpW7Y1FMfaU40phpTjSqNE65IYU80qM0p1hVWidckNKcYVHYU6xyq0W1yQ0p1pUdpTgKpqjXJLXJ1hUZpTzCquJOuPsKdaVHa5ONcosTrkoFONKitcnWlVaLbQktKdaVFBTjXKriFUJLSnWuUZrk4Hqti2uiQ1SKYi+fUobXJ1rlRxJ10TXEXySmhRYHZgKzhWGSsWTuIiapMcKW2LPpVhTQLXnOxmhC5DFNzLDqZXcdMh9MsG2M+xNamhUKeNbJVUyp6yKy2adS5rVIWKaUKO5S6kKDIVuwVzWc7CXlMucsucmnOWVRKbQC5NucsOem3OVrEa4Pcm3FDim3FWSI1wcUy4pTim3FWUSHMS4polW3B+ibM4hxI6LD1q80noyNrAxrm3jsb2aC4m+22ZusU60YS1TLCm5R1hjgTSWkdijebsAdbDkC76wNS6BVN/EiKACNjRa1ratVjfeqfgvGWXJAeTYBwuMgN2zNX8kow5gNGs/zXExVRyqXOxh4KMCu0cGxxYZDZwN7nO535rXtJ8dWVBhjP4tgu51xbCdovt5lM0+6NzXEOILsm227imI9INpogwDG8jlOyabc5++pZKcWua6lZyT5Poa5pPgvDGS1xcXYhywbcnO7batW1VGkpWwObhJc1uV3Zndlv1qx0xp5xvcXG76udahpetMhuQB0LrYenOX3znVqkI/dI1dUF7i47diiOKCU09y6MY2NBzuYe5NuKHvTZcrWGuZLk09yySmy5TYspnQ+D2lwwsu/U3DhAytssezJdBoNJsdhIN+SL8y5pJo2OO7g8YWtbydt7gH1+hFdpnifAda9tXNmLLkVsMqr+yb8K2ouZ2mnqcQCnmHNuYzzXE9GcMJCW2dqt19K3ebhO5rQ4Mc527OwB1OJtkNS5lbATgzepYuEkbRpuYNY/EQ3DyhcgXtuJ1Fc+r9MRzufEHOcH4QDew17b7MypPCHSlRUwi/FtDsrA53bnfXvtkjgDwbDbzScp9uSCMhfU7MZrLSpxpQcpdTHUnKpO0ehXTdzuez3NaDtGebturYtV0hoKSLFceDr5l3svcCGh1jYEA2tbMHLWtB4fMe6G5AxOe/EWjYALF1hnrKzYXHVJSszFiMLCMbo5WTZKa9Mv1lZa5d2xxdcltKcYVGa9LZIocSdoTGlLaVFDk4x2SrqjXJkbk4Cokb06xyq4E65KaU8wqIx62XgzHG68nLPFtJkZga5habttf4OZGeW3csVWWorsyU1ruxUgp1jltemOCxkjjlp4wHOAxQscHAB2pweTY/fctd0xomemLRKzDiFwbhwOq+bTa4WCnWhU6Pn2MtSjOn1XIaa5La5OaI0ZNUOLYmF1sycg0dJOX+ym6W4O1NOAXMu11hiacVidhAzClzgnqt8yijNrWs7ENr04JFBDynGvWRwMW0JrXJbXqGx422TnGjpVXEnXRMa5OMeoTXlOCRV1RtCex6taWfmzWvxy6rq0pHrDVhyMtOpzNk0YzEblX9NGqHQzxqWw0xXExN7nbw1rDwjWHMTgKw4rUNyxAq41Q6SjWxVWpUOk3a1u4dtmliEjWq5qqpjmVZaRfrVJVSZruUYuxwq00mD3pkuTT5SmXSLZVMwbZDznpBco7pFJpIHOzAy3qXFJcxGo5OyB7Da6Zcty4LaD40Oxxl7H3ZiBI4twscRO06ss9q3WfQFOYRC+NtrNBc0Br7i3KDgLg5LnVdIQpytY6dLAznHWORUWiZpml0bHOa02JAyva9teeSiVlFJH4TSB0Fdv0VouOCJsbLlrb2LrYjc3JNhrz9CbraKOW7XNBy2rXWlvtdORscM+z15nFNF14idcgnoNlJqNPcoOGsHbYnrurXhTwOlYZJIgHxjMNbfGPGGG2Y5+ZafXUkkVuMY5mIXbiyvbJdWnsq32kzm1HVo/ZaNjpeGkrNQB3kpNVwtkmyc7CDsGQWoPemnyLJuVO97GLfp2tc2yo0qGi5eDle2vNVVVpwm+sjpVG96Zc5ZI4aKKyxbZY1GkcSrpn3TRcmnPWeNO3QwutfqLeUy4rD3psvWRQK7QHyJsyJL3BN3V1AKpzHHPTTnIkTLyp1DJrEk6SecrntRJO52squAKWx5CybJLoYnVfqXOjYiTk63XZbbwdqJAbGaw23cbW+taBDMQdalw1bxtWtWw7kZKWIUDp7tKNi1va/eCQ4ZjPJwy1q40fwwa5rWAAC1rA21nZbUuNSVL3bU7SVbmEEE9q0p6NjJc+ptR0i0+R3jTOmGCOMlxJF9ZtjaTvGr+aoOE/CiKSnbGwAAEkga9ud9utc20jpqSVoBcdQGvYFWiV289qxUNFqNmy1bSl7pEyaQFxWGlMNBSxddPUOW53JLE5dR4ynQquNiVIkXTsRUZgO9LF96ixOsS2uzTl1FaSnWKLE65aaHpxJKxpLQC4XxXw9BtnbL0rsWgKGnp22a1jXOAxFpLsVr2zcb7T2rh0bnDMFb1wN0w1zSJ3uGoDK4Nsrc2Vly9I0JSjdPl2Ono6vGMrNc+508TttcWAOQOr1JZLTckBxsRmAbA6x0ZDsCo6OJkjS4GQgagfqvsSnTtbk3E35Ry9K89sufI7+0uuZaRUZbIwsaxkQjcC1oDXE8kM1DMWBS6mdoaSbEgEgX1m226hxaU+CGPe4Dwg3k9OI7Oda9pivfZ8rQ4iMOvkbfyV6dGUpcylStGEeRpFQ900znYeVI8kNaNpPggBWNJwbqn6oi3MDlkN19Jz/mqnviRrxJmxxOMG2EZnWLjMKzh01VOIDZiDfxrXP6RsvRz10vsWPNQdNyevcuxwGmETnF7OMBGFgzDht5XjfYtj0JwUgijY6WMSTAZ3JLAbk+DexNrDbqTvBQSCPFUOa6W5GLjA67MiMr4Qcj6FZVM4INj14tR6lwq+JrNuLfg7uHwtGKUkvJTN0HBNPM6SAtjbgawN5DDru7k7bBvbvWv8IODToTdhDwbmwuC3PIZ68relbzS1YcLXuoOl5RgcSSAL2w79QSjiainb0FfC0pQbOaPBBzFlY0cupVdRIS4km+ZS6eQhd6ULxPOqWrI3HR0+pbFR1XOtFoKr77le0lZzrkYigdnDYg25kqHSqjirUqSu51z9gdHeETKuda9pSdOVdcqDSFVe63sPQ5mhicQrETSEqpZXXKfq5idqgvK7lKFjgVamszEjky4pTimyVnMbZsXB/glNVAObZsd7F7iMsr5DWcits0RwLfDMz8Y2SHIvPg3zzbhvmMh2qN3Nm1borB7G093bMUgNtYF/BuBlzroMbmjLb2LzmOxlVTcb8j0uAwdJwU7cwiY1rQ1oADdTRkB0AZBR53EqRNK1qhyVzbWwrkpNnY5Iy17rHV1qvkeQVKbV7CMliRrTtHUrx5dSj5kB8+RvqG9UXC0wmneXiN2EYrPzaHDUctq2DSpYxpxuDW2sSTbLUuY8MK4ZsifiBJaADruBck9K6OCpuc00aGNqqEHfmaTKeiyivKerIHMJBIvts4O9WShEnevWxieRlPn0FPTbygg701ISsiiV1jMhTD0PB3ps33qyiQ5GJHJDnLBB2ppyukNYHpBKQbrBBV7CMgc9TOD+jZKupjp47YpXBuI3IaPhPdhF7AX7FCY27gCcide4Lv/c70JSU9PBK2FoqDHjMziHSHjQCRitbDa2XTvK0Mfilh4clzfQ38HQdaXwPPwiHOsFlk+1i2vgpwXFUwuvqyIGvm1rYqV401eRRUHPkjT2tUiELpdD3L3HNzwGnLLMjpCzW9yyUC8b2u5rkLUek6D5XMnDqq52OckZakNXZOC3AWARAVAxOOsA2cMjvyUio7mtC7Jsr2OOo8lw6MIC13painZmbhdVq6ONNslYVtfDXgg+iILSZIibCSxAO1MaD4GVVS3HGzk7ybXWysVScde/I1XhKilq25lAwZJYCvZOCVUyTi3Quvvtye3UrBnAWrwkuZhtn1KrxVNfiRKwlR/hNWYE40KRVUToyWuFiCmw1ZNa/NGJw1eTFMCcYEManGMUXCQWTrUBqWGqLltUzhT9GbEXJsCNSQ0JxrFVu/IJW5m1M4RiJowAOOvP4PNnzJp3C6UkENGIbTn9S1wNTjWrWWFpeqNh4qp0TNy0fw9maAHsaRtOd+xbHR8IqKRrcT2g6yHNLeUbE6hbYuXxpeFa9TAUpdOXyM9LSFWPXn8zrldVQVUbo8QIeMOIWuAcjhvtWtO4HRNJvPyb8nwb2/ON1pcRI1EjoT3HvOtzu1Uhg50+UJ8i9TGQqc5w5lzpTQ0cQOGXHzWA1dBTWjNOyQNwMawsvcgi9ydpPUq10pOslJWwqKcbT5mpKtaV4cjcaDhvhydA235ht235lLrOGzMH4uK5OtrrAdJtrC0MBKAWJ4Gje9jKtIVrWuTdIVpldiLWNP5rQ3ttrUdpSAEtgW2koqxptuTuyXTTWVlT1KprJbJCFgnBMywm4mwx1qzJW86ohP97odUfe6w7BGfeHYsaiqVXVz9KRJKSmHBbFOmka9So5DUjk1Ykp14SYhnrtzrYvZGBR5izoya1+Lfa174TqGsqTofg/NOQWscWXzcAdlrroFBwspxE0PecQaAeRbMdGSYoeFcMZdY8lzi6wbbM22ahqXKljK7TSgdeOBw6abmOxcCxcOjnnga7DeNji21gMyRt19qnaX0ZVNa007iXNsHYn4jJzkEWvkO1Rxw0picy4W++wp9nC6nOp57fXdcyW8N3kr/kdWO7pWi7fmQ9IaWkhMTZIyXSG1m69g8HWDc6lKZWMczEbt5nAg82e1KrK2nnaS2VmIjWHcrouMxrXP+E9JJF4NQXtubAOzA1i/aexZaFBVfsvkzHWruktbqjYa3T4YSL582fpVVJwpeHck2F89/rWkTSuJzJPSbphxXXho+C6nInpKb6G1cJOEplGG5577epa3VaUODA2NgaczcYiXarjF4KiElMkXK26WHhBWSNOriZzd2xioeXOJP37FHwdKlmNNmNbSlY1tW5Fc1NPapL2pt7FdTIsRpGJvCrai0XJMDxbSTcWHjdBOV0aT0BUwFgkhe0yZM1HEdwwnWo28b2vzL7GVr25FG5qaeFYSUMl7Fjwb6i09G5TncFaoxmVkT5Ixhu5gLrFwBtYDPXsv1KzrQXVkKjN9Ea2QjCrQ6FqMRZxMuMAuwCNxdYZk2te1lClhLSQQQRrByI6QrqrGXRjZNdUMU8uB4dYGxBsdR6V0GPuiksDTG1uEAcm4yC589qThWOth4VfvGxQrTp8oleNJyfEt7Kz9xW08COF8tMXfiIzi8Y14/wAmjSuc+4dP8X+vJ7aPcOn+L/Xk9teQq6ZlUjqtHqYaMjF3TO6w90qcZNgh6Mekv4Qreg7qU4sDSwG2wu0r/wBOhV5z9w6f4v8AXk9tHuJT/Fn58ntrRliYv0NqOHa9T0DV90Ooc4kU0QvsB0qf/syKTh5Ugg97R5f/AKt9WhV5/wDcSn8Q+ck9tHuLB4h85L7ajela1hu3xPTVXw+knZgkoYHACwv7tWHUNAWuqCs7p9RTEMZTwANHgj3UAt0SaHB/2XBPcWDxD5yX21j3Ep/iz8+T21EMTq8muRMqF+aZ6IZ3WpXgF1NTk/K0oD6NDIrO6tPht3vT9AdpUm3XoVed/cOn+L/Xk9tHuJT/ABf68ntqd5j2I2Eu50XS/CieaRzzAwXOod/n0+5qiDTU3xDeyv8A4atF9xKf4v8AXk9tHuJT/Fn58ntrejpiSVkjSloqMnds35um5viG9mkP4alt05N8Q3s0h/DFz73Ep/iz8+T20e4lP8X/AIkntqeMz7EcIh3OijTs3xDOzSH8MTg09N8Qzs0j/C1zf3Ep/EPnJPbR7iU/iHzkntqOMS7E8Jh3OljT83k7OzSP8LSxp+fydnZpL+FLmPuLB4h85J7aPcSn8Q+ck9tRxifYjhEO51Eafm8nZ2aS/hSUOEM/kzOzSX8KXLPcSn8Q+ck9tHuLB4h85J7aji8+xPCYdzqw4QT+TM7NJ/wlKHCGfydnZpP+Erk/uLB4h85J7aPcWDxD5yT21PF59hwmHc62OEU/kzOzSf8ACEr3xT+TM7NKfwha9P3P9D09JSiobpB9dXaNfpKJ9M7jKaFpM3ERSQH8bKLQuxPxNw5birHTHcOjdJC2gkjlMg0YySGWecTQSaQpjM2SRwjEXE4o5smlxAa3WSo4tMcJh3LEcIp/JmdmlP4QlDhFUeTM7NKfwhUzu4M9sz45JqaGNrKJ7ZpXV7BJ3/UyUcDBE6HjmSd8R2LXBv5Rhva9nKLuKUzDUd91MIjZo7SdSyoglqjDDVaLq6ekqo6gPh418TXzP8EcrCLHfHFpkcIgWw4RT+TM7NKfwhKHCKfyZnZpT+ELX6fuETPNY0OgLqPMWfWuZUN70ZWtcyVsfFxNMEjbYyzO450mg7iHGzw07amlM0tJHWOjadISvginFPxPGtihNieP16gI3kkZXcWn2HCIGye+Oo8mZ2aU/g6yOEdR5Mzs0r/B1rMfcRtHJJLU0cBiGknvY+Wtc4Q6IqhSV8wMUJBYHFpA1uDxYXvawZ3C4jE+EzxM0k3S0uj42PnqO9qoN0dT18TYS2PEyUtmPKcWjIDXrjis+xPCYFuOElR5Mzs0r/B1kcJqjyVnZpX+Dqh4L9w9szdH1E7h3pW1FJFIyN9VHURsq8XFuZJNFxEjuSQcJfYka1K0Z3BWyP0jSlw7/o4tHzNYJphDAyrlkdM2rcWXle2kYHfi7i5sC7UHFJdhwmHctPfNUeSs7NKfwdB4TVHksfZpT+DrT9Gdxoz0La6KSF0L5oo23Ncy7JqxtDHKHviEZ/GOaTGCXBpFwDkpWlu4hxMU0gqqOUwQ6QlMcctcHv8AcqURaQazjIQ27HOZrIviyvYlOKS7DhMO5sh4S1HksfZpT+DpJ4SVHkzOzSn8HWs8CeAGh5aCKprW12Op0yzRMfetQxrY+Mp4ZWyvZMwmSznuyBGoda6ruHPbDWztfE6OhqKqEgmsaXspKrvWSQPwcQ12Kx4rETa+5OKz7EcIh3NhdwiqPJmdmlP4QmzwhqPJmdmlP4QqjSPcIMQltVUUj4e/GmJktdjfNQxCeohYXwhmIQkHESBcgXXN/cWn8Q+cl9tTxaY4RA68eEVR5Ozs0n/CEg8IajydnZpP+ELknuJT+IfOSe2j3Ep/iz5yT21PF59iODw7nWDp+fyZnZpP+EpPvgqPJ2dmk/4SuU+4lP8AFnzknto9xKfxD5yT21PF59hweHc6szhJUDVA0dHumP8A7UkycJKg64Gn/wDsv4UuV+4lP4h85J7aPcSn+LPnJPbTi8uxPCI9zprtPT+Ts7NI/wALTZ05N5O3s0j/AAtc29xKf4s/Pk9tHuJT/Fn58ntqVpmfYrwaHc6M7Tk3k7ezSP8ADEk6bm8nZ2aQ/hi537h0/wAX+vJ7aPcSn+L/AF5PbU8Zn2HBodzoB03N8Q3s0h/DEh2mpviG9mkP4atC9xKf4s/Pk9tHuJT/ABf68ntqeNT7Dg0O5vR0xN8Qzsr/AOGpVPpmTGMVO0i+f9fGXSNGm3pWh+4lP8X+vJ7aPcOn+L/Xk9tONTt0JWh4J9T0LwL4RyxxgMoYjYkh5bpguIvkCY9AkHIjPoV7X6dnmtjoYza9stPbejg6vLw0NB4h85L7az7kQ+K7zsvtrmzxUpS1rnRhhoxjqnpeKvmBuaKNxHjN067Ldnwdz6VZw8MqxmRpIiPkacbYbB/+Xl5V9yIfFd52X20e48Piu87L7apLETl1ZZUYroesDw3qj/4GHs07/wD51c57rumKqcwv7xa3CHh0kcWlj4RZha902hmDYd/Vt4r7jweK7zsvtoOh4PFd5yX21kw+LlSmpIpWw0asdVmwSaSk+Jb2Vv7gmjpKX4kdlX+4qi9w6f4v9eT20e4dP8X+vJ7a6nHqnY0OEQ7lw3QWljmNFTkbxPTftFXaSFbA/i5qCWOTA2TCZYicDi9rXck2tiY/5q9F6GP4iL5AXL+69UBukWg7aKn2OP8Ax63xWryNDE1KstWKPQ1qVOlHWk7I5537UeRyecYjv2o8jk84xWvfrfuH+wg1rd/6sn7Nb2yxGQ1d4w2cqu/ajyOTzjEd+1HkcnnGK2FY24F257eVYdNmZLJqhq19AefUxNliMhG8YbOVHftR5HJ5xiO/ajyOTzjFcNqQRe/okz7I1htUDkL/ADZT6o1GzxGQneMNnKjv2o8jk84xHftR5HJ5xiunSka2PA545f2abdWNGu46Wyfs02WIyDeMPnKnv2o8jk84xHftR5HJ5xitTXNG/wCbJ7CT3+37tf7CnZYjIN4w2cb0fR6RmZji0dK9gdgxCaBoxgA4eW4G9nDtUs6C0sM/cqfLP8tT+2uh9z6QO0cCNR0gN4+DCNout/qPBd8l3qK0J4ucZ6rXqbioQlDWT9LnmZlTVEAiikIIBB42LMEXB17lnjqrX3lJ52L1XW1aNhj4mMmohH4qPK0xd4I3Q5FKDOTfFG4DPJ3KP6JIK9pHQ1Nq92eEl7Q107aq+v6ms0TK2V4jjoJXvIJDRLECQ0XOs21XVgNBaW/sqfz1P+0W6dz9o7+iOJt8M3JBztxbuVk45LpVD4P6TvWvMaVlutfZx5q3qer0RUeMw6qz5O76Hm/SHfkLzHLQSskADi0yxE4XXwnkm2w9ij9+1HkcnnGLfu6rUBukng+TwHU4/GeK1at363f+rJ7CinGvOKko9TNOrQhJxlLmVXftR5HJ5xiO/ajyOTzjFcsqGkE4mC2w48R6Ghl1mOdhF+MjHM7jAezi1bZYjIV3jDZyTQ90XTMVIaOOOVtPxckLf6sZo4ZjeaGKodHx0UROtoI6lmPukaaa4vayVry6idib3s030e0spNUeprHOFvhXOLEoL6xg+ED0CT9mk9/N+7X+wmyxGQbxhs5Yzd0jTDnOdxBbj7zuyOKjijHeFQaulwRxxBjLVDi7LXfPEMk5Td07TTHXETjdtc0tfFRSMc3SVSyrrWPY+Etc188bTY6swLAkKrFa37tk9hLbUg3sQbZ5CQ+gR3TZYjIN4w2f6lvH3WNOh0rsDnOmlfK5z4qKQtfJTtpX8SZITxDTTMY3C3CLNHPeLRd0jTEUj5WwuL5IKamdjjo5WGKjwGl/FyRFmNhjYQ+17tvdQTVDn+bJ+zSO/m/dr/YU7LEZBvGHzk+t7o2mJQ8PieRLFpCF4DaVt49KTMnr28mPIulY031jO2G5Wzw8MOFYdKW0kuOWYzvdh0YXsqO9oqPjonYbwS97QsbduH4W1xvpJrGnK+vLU/62WXe9FeHUf8w/1BamJq1aLWtGxsUI0q19R3OV1vDvhHSQ07ZaV8UcTqVkL3R6PdIX0TXupQ+VsZkkLY2vtiJyB13N6yHunabZbC2UOa2ljDwKXjCyindU0rHScXjcxsr3ZEnJxBuMlvXdqlDaalJ8sttP/harxRdcx7+b9w/2FloOtVjrRiY606NKWrKVi4/Cnpvi+LENmAttaCgDg1lT35HGHiDEIm1N3Bl7C5AFslFm7oumHB4dFIRIzSLH8mlF26WkbLpAZR5YpGNN/g25OFQu/m7/AEP9hZ77G4/Nk1b/AMnqWbZYjIY94w2cmcGu6LpehhMFLC6OMzd8gOjo5nNnwMj42N88JdG/BG3MW1c5TlP3StMspzTCJ5ic2dhL2UksxZUy8fOzviSIzYTPyrX12OwWgvqQNZHZID2GO6Qa5v3a/wBhRssRkI3jDZyxl7pmmnOc4xyFz5KuVxw0mb62IQVRyisLxNAts2WWsCtqPI5POMVr3837h/sJUdYwm2IDnIkt/pqdliMg3jDZyp7+qPI5PORo7+qPI5PORq6lqGNF8cbuZpkJ/wBNYfUNABxMN9xcSOYjBdRs8RkJ3jD5ym7+qPI5PORqVo1ldOXNh0fLI5rcbgJYhZt7XJcQLXUs1zN/ok/Zrce5TOHy1ltlG7Y4a3fnNWOtt6cHKUS9KdCpJRjK7NSGgtLHMaKnI38dT2/1FW1Lqxj3MfQStew4XNMsV2mwNsjbUQvR2ij+Ii/u2eoLlfClo79qzib+XN2mwI/Fx73DL7Vn0Ot8quE+Vlfl8zT03XeCoqcObbtz+TNC46q8ik87F9qy2WrJAFDJckNA42LMkgAa95C2wx5Al0bQc/COIcxa0kp+KFgfGRPC78bDZoEocfxrMuVDYnPmXfraJpwg5JvkmedoaerVKkYuK5tL1/UofcHS39lT+ep/2ih6UptIU4aZ9HTRh5IbilhNy2xPguO8L0Uz8o/ob6itF7tMobHSk/GTDUT8Bm4X2Lx9LFVKk1BI9vOjCEdZs5D39UeRyecjR39UeRyecjVoK9v3bJ7CyK5v3bJ7C39liMhp7xh85Vd/VHkcnnI0d/VHkcnnI1bNrAdQJ6GyH/6acEpOpj7b+Llt/pqNliF+Abxh85S9/VHkcnnI0d/VHkcnnI1bOqwN/wA2T640p1SAL/VJrOzOPWmzxGUjeMNnKfv6o8jk85Gjv6o8jk85GrdtUCbZC2u4eLdPIusGsbnmMvlZ9HIzTZYjIN4w2cqe/qjyOTzkaO/qjyOTzjFaitbv1fmyfs7I79b9w/2E2WIyE7xh84mi0bpOVjXx6Mmex4xNImpxcAlpNnPvbEClVmitKRMdJJoudkbGlz3GaAhrRrJs+6633PjeKlO+iefpL96s+HjgNG1h2CmlPYOZaG9z19W3rY3d3hq61wj/ACdF8tv+UrQe63KG6RGR/qVPqOzj63ZZb9H+Tovlt/ylc07tcwbpJtzb/sMB+kVq3vZlXxi+TOZ7S33J27o18VX2XOf81lsuu1zbaASLb9V1Ud9ZA677rfcJTKrdfot97r6XqI+afaLZspOzXttf6r7R2pxzJGWcWEAusCQQ1x12u5VtNXujJLTYm3KzBAvchpBsBq7Arag0pixOwQnAMxO3jmuc7khocXcnO2WQ5OetUnG3oSuY5SVpxtL2Okjbk5rLMJ1a3tZdx6VN0g6KzHRCQAg/lJJHPbYWIfhADRfaAb3FlHqdMjDikooHjXjijjZEDmPCYw3HNcalWUmnZIpHOiDI8drxta7BcbAC6/VdY1C/OxPQnw1zbcqR77amYnR3NsrOAJ9WoJZhHFiTLAHcq88bngG3Jc1nKBz2C+vLIqnqI5mvxPgc0knkmEsb0BoAsPsUU1hthvYGxIGQJGo2tme1ZNmvQrdmwCtiw5tjIacrGUSuuDqc5tsAOzJQpqgEnC2wy1Yjbrcb/fYq2J175gWF8yG36L6+hIEpH88/QclZUkiNZnWeADr6Ov8A/EB/kgW2139Zb/y8vrWm9zd99GA//EN1vgw7Bktyrf6y3/l5fWvk2kP6yf8Ayf8Ac+t6P/o6f/Ff2ODUMl2R218WzdsaOq32J3vm23p++5McG+IfxbZ5JImkRjGA0tAw8rETmNmdir2uo9G8lrK2Qi4Ju1pZne5uQ0MOXP1L6omkkvgfJ5p6z+ZYdy6bFpGPO/4ub/J/NdMqZXNZFhJGKpY087SXXHQuddz+lji0pE2KaKdroJnYoy1zm8nwXFriL9mxdCrvAh/5uP1uXzr2l/q3bsj6R7Mr/wBNfNnNu6tNh0i8Z34iDVb/ANpzrV++Pv8Acq97skttJuHK/q8ByDiNcgzIFgtQbNzm3Qvb6GhfB0/keI01dYyp8yy47m9KyJupV7H3IaCM9riGAZ25TnnCFa1tOyFjA90N5mhzZWScY1liMQc5rnN15Zb9a6TUVyOYlJjXH9iO+Rsv15/Us11DGxuIVlPIbXwM41x1ariLCDq1kKr44bH3HNq9SlRixaRaio3X7Vjvnn9KquMG+3Z9YWI3tJ8JgOy7gLnqRwQV2XEkhBsSL8zmu7SDZIMpva/pHrva3Oos74WtaATj+E4Oa5urU3Lf61G44bLej1hRGCYaZZiXZf03Xa6j8lW/3z/+hcEjl5Qz2jdvXe5/yVb/AHz/APoXhva5WqU/kz3Xsh/8qnzRr/ddNqWjzt/2puedh/2Sp3C65qZc7X672H62pdD7tjrUVH/zbf8A5SpXKeN5/Uuz7MRTwa+bON7UX3z8kWTZTe1/SPWcrJbJDsIuLnNwbkNxORPMqnjwNdvQFJidC5jhe0l+S5z2tYeY5a7D0dC9A4I88kyX3zz+lZ753k9uzcqh72g+E09Bv61kSDf6B9ilQQd0WffI237f5LPHqr44bX26curUram0fE5hcaymYQL4Hca12rVd0ViVDjFdRaQl0/3uscd97p6lpmzROLHQt4ltnPfKIhI5x5OBz3tbv1jZzhVXG2NidW1tnDXbItOEpFRYakTzUffJbj3KpcUlXryo3a7bXcxXPHT857P5Lee43JeWt8LKjOsOGtx1F2vUuN7Qwtgp/l/dHb9nb79D8/7M6RP/AFam+XTrlPDee2kawXt+PH+lEurT/wBWpvl0/qXMuEtJFLpKu42eKBrJWu5TmCR14o8m43gE8nn1jmXlvZV2xMm8v+Uen9q1fDR/5f4Zr/fGrPP778rJ6gktPCM78fBu2zR/UrLR9Ho0gtfWyCxNrNDWeFa4s1wdlbPJVIMLauBsL3yNFVCMTg1od+Pjwlts8PTbqXuMS1KlPl6P+x4XCJ7aHzX9zu9c8tE5BsRHcHcQ02K0fusSnvehcTcuxkneTFGSVu+kvBqP7o/5XLQe6+/DS0BFtbtYB/4LNhyXzfQivjafzPpmmv6Kp8jSIJwCMTbix1lw16iCD9vWpzq2OwAbGGuN9cvGt3te8NsW8wvrWuGb7/fJLmeRbMHIHIh1ukjLqX1N0kz5UpM2AxhsYkNsJN24Z4mvIFvBaeUde6/MEmetb8GR7RnyLveG7bF1gbdRVCKs2DSSQL2acwLm5AGsZgblKpWzY+MZC52E4rcSXsFszdpFgLKuyXqTdmxUToQxzpBIbGwbHI4PcdgGIFrmZeFYfUq+prTidhYY2OPJa7lOaNQa2RzcQ9G1QqjTkkkokmayUtBsx4dhzNzk11z6laQaX5N2UcDAdTpo4nxuufGe0bCAB0X1rHqavOxa9yC2N7wXBji25GINJaCMyLtFhrTbpSLZc17W+rcn6/SmBwIbEMYD28Q0wsHwcNw67wMJ7csrKpnrnPIc7NwFsWd3Z5Yrmxy9SyRjf0IfL1Jxl1A3B18oEZdlysGqP3yy6taqjVdPZf8A2WO+8r7BvVnBWC1rncO5+bx0p/8Ac3//ADMiVpg20PVHdFUH9YpnucOvBRnYaFx7ah6Xp51tDVhOoQVJ7C5fJH/V/wDb/J9cS/8AU/6/4LvSEQa6ma0Wa2WwGZsMJ3rjP9IE/wDekeQP/d8GZcW/+IrdzbLd5tPVDi0l4JY7E3kMyOq+rNa5w4vOyaqkLjNFSvDC04G2iEsrAWt5J5b3dqjRWO3euppfDyX0jg9vRcW/j4OXMncNVhbbxxuOgiPJOtr3AW5Jbe+EzOzIvYuszM5ntKsGaSmOQibfdxmWq+stsnW1ktgSxgF7ZSXI/Rte3OvoO8Y30h9UeGlQwPrNfUpmVj7m4Zhv4IktbmBLSh1fIPBwDO/5S55tTQrc10vxbLfLd7HMnI6iZ2YjjtcNxGQtaCdQLnNsP5HcodfG5H5RCo4DOvDKyn0vKS4ycp7wAXCcMdcOaWnFIxx2JHfjibgDFe93T68+aMZ86vHioDXExsFi1oJkOB2La2QMwEas89YUaGrnc4NETS4kNAEhN3E2AHI3qFXxnpD6omVHAvrNeGFDwlkjccTBI27eQ+eOQXbca5qZ3ottS9K8J+NAApoGZazO91nHW5oawNHQQ7V0qzi0dU3/ABwhp87fjHyudbIk4YoSALHbbqUarfg1PjffUWk9BxDwm9m7Uqqvi78oPyiHQwOdeGa8a53is87/AOhYNe7xWed/9Cte/pfEZ893sJykqJXyMZhY3G9rMWJzsOJwbfDYX16rhXq4zGU4ucoclz6omnhMDOSjGSu+S5M6x3EWCXRfLAyrJXABxIBaIrHFldbdW/1hv/Ly+taZwK0r3lTuhLRM7jXSFzXcXbE1gDcJB2NGd9qtpeE7XOx8QcQY5gPG6g7XlxdivnOIxCqV5VO7ue+oYd06KgvRWOC0BHFtLn25AtlfPDkCL3tz5pxjsicQFrWaQ67rn4JAt2261O0pol1JxcbnMmEkb7HA6PAYjE24HGEEnjNZ3KC0G2Hk2JBzDb3Fxk8i4GZy6NwX17B4qliKKqU3dfofKsZhpUKzp1FZ/qbn3Gpi7Scd3E/iajIknW1uYXYNMsAEIHlMR9LlyHub05pZoawua8Pie0RAYDeRuyTEQ7ktOVtmxb/XcJ+MwfibYJWSflL3w35PgZa9a+Z+0OLpV8W5U3ytbwfRNBYSpRwqjNc+vk5t3c5sOlSMLT/2WnOb8J8KbZgOS0CWrkubBvNZ7Tbou1dT7oGOolfVtLWARRt4pwLiSwuz4wEWBxjYdW1atgm3R/Pf7C6+j9NyjQjCPpy/nI5+N0NCVZzl6/zuaqaqQjO3zx7Nk257yPgX34m3/wBNbbhmva0eoHw37b/mcyzgm3R/Pf7C3ON1P5/o1Voamv8AX7mptkI+DGecuucuhiz7oOH/AA78wkwgdRW1NEx2R6yPDfsNvEQ5s2u0fz3+wnHKnp/PoOC031/n1NVj0iXEgxWttc/LqIabpbpxawjj13vxjifSxbOGTbo/nv8AYQ5sw2R67eG/2FPHKnr/AI/QcFpen+f1Nek0rdtu9oL4QwOBaCBcm/g5vufC5tqbFe7ZDENlw8X1WvnlfqWzYJt0fz3+wsWmva0fz3+wq8an/P8AQ4NT/l/1NWoZ3mVg2cYy93HxhqNrFeqtNQNbBOWi2O7nZnNxIuczkuI8H9HiUycbe7OLwhj3BtjjJvkLm7fQFvtTp+oe0tc8FrsiMDB6QLrzOmdJbzNX9D0Gi9HrDwer6lb/AEh7+51Fa39ej1nD/wCDq9tlxFs8gPpFnG3aRZdw0/M6rYyOdxLIniRmH8WQ4MfHe7MyML3Zc659hlDnNGAgSTNaXPdfCyVzG35GvCB2Lf0Ppd0qWyiunM09J6LVWptJfI1t1eTe8MRvtxC+obstnrTg0ryS3vaAXaGl12k5EEEENu1287brYsE26P57/YWA2bPKPI28N+4HxOddfjU/5/o5fBqf8v8Aqaw2cW/Jx5XseMIOy3wMxl6Uh+ki02EV77Wvy7S0La8E26P57/YWGtmIBtHmL+G/2FPHKnp/j9COC0vX/P6mq9/uP/DtzOkxDsAWHPJ+DGOcOsb9bFtbmzDZHrA8N+0geIs4Jt0fz3+wnHKj6/z6E8Gprp/Pqak2R4HwL78Tb/6aWKqQDLD89t/S2y2kia9rR7fhv2W/M51nBNuj+e/2E43Pt9f2D0NTf+v3NViq33zDdW17R22aupf0f346msaWtANMwENdiuHSEG9mi2S1W02eUeX5791/EW7dz+Z1G90ri2UzwNAYLxlou15NyTi1gahrXP0ppl1cO6UvX/D+Ru6P0RGnWVSPp/O50nS8YbHC1os1s0IA3AE21rh3dInLdKVoDiPxwNgSBfiYdm9dVqOFLXgB0BOFwePxts26v+GuYd0GgL5p63E0CWWM8UW5tDuKi/KYrHME3tzLU9mMZSo4r/yPqrL5toz+0eEqVcN9hdHd/JJmrPda3KBuLkAO5OZydiFr9F9YUzRdu+qbC/E3vql2Yf8Ajx3yvkOxRHgmx5OQAFmhtwNV8IzPOrng5o50sgnxxxMpqiJxjwOcCIzFOQHuk5AzO+2ZzXvdKYqlQw8pVHZNNfm1yPD6Mw06+IjGmrtNP8keg9KsHFTHaY336mmy5j3c5S2i0eQAeWRm7D/wG7QDuW1VfCvGx7eJtja5t+MvbECL24vNa5wwmdWRU8bbRGnvynXkDwWNb4IIw+DvK+V4DFKhXjU7M+m4zCutRlTfqceFc7xWed/9Cy2ud4rOuT/0K0NbLnyGZEi+NwvY2vbBlq1LLK2Ta1gG/G/2F9EjisbJXUPqjwMsNgItpzXhjmi+FIiFjSwP1EETvHKHwnNexzSbXyyGepMVfCOSRwwtwNsWhjaiOJt3EZniKZrdm1WlGzH/AMWFl8mh5dcnnbGC4bNh1onoasAuZHHKwNLzJHI/CAL4riSMOGo7FidfF3+47/NEqjgF+NeGa1HWuBBAF7jNs9rdsRsUubTEoIMXIc1uC5mDjbO/KYxt9antrZibCOPrlLR24FLe2oGfFsw4WuDnSGNpxC9mukaA52vIX1FXdfG+sPqiypYFdJrwzXmV0h8LAc/jLZbs2nYsOrH3GTC2/gmTX0kNBVzJVzNteNguARy3Zg6iORmFhtdJtY23M9x/6FKr43I/KKujgc68Mq3V7iAMgBewExyvrsSzLNMuncddjvPHZnpvGrp9ZNlaNhvmBxudrkcrKzdWroUrg/I6eobFI3CzA9xLXm5c0CwuBqzPYsWIx2Lo03UnB2XxRmw2CwlWahTmrv5nau5bC33MoZLcvvYMvcnk8Y51txz2qNwp/wDwKu/5Wr1mw1P1m2SqtF6WmgiZDE+0cYwtBa1xtcnNzhcm5KRU6RlfA+nc78VK17XNAAJa/wAKzgMQOetfO3iVtdp8b/U94sO1T1PhYqJasXZYmwdysvg4Hjr5RamdMStkgmjb4UkMrG3yGJ7HNFzszKjIWWFGMJKS9Ck6rlFxfqULtDOOwZauUckN0K4bGjrNuuwzV8hemXtJiuy8fueafs1he8vP7FLHoc7SByhca+TtIN9fMrSg0c1uICYRgi93RukeHNyGFzTydbsxbKwzuU8hQ/aPFPt4C9msL8fP7CJtEU7vCnlc7xgDh1HlFjm+Nsvv666PQoLnfjWsbsc5rruGfwWXw6hlfarRChe0WKXbwQ/ZnCvv5/YpRol17Ei2eYzvuyNkn3Jf+b87+SvEK3vJiuy8fuPdnCd35/YpmaOkAIBADtdna7b8swlUejntkjcbWbJG457GvaT6ArdCx1tP4irCVOVrNNPl3MtH2ew1KpGpG900+vb8idHVNDnnPlOBGW5jW+sFL7+buPYPtVa4217wO3IelZXm93gej28iRLUtE8UvExzCNkrcMpsAZDFmBhLXZMOvmTtVpJpe17KKmYRmTjde9rZYGADpsdShIXZwukquHpqnDoji4vRFDE1XVne77EmjkLmU7nWxOkc4garuZOTbmuVMrHENuDblM9L2g+gqFo/8lTfKP+nOpld4H6Uf+oxebqu8233PR046sEvgM6e/q8vyfrC1/Cdw7T9i2HTn5CToH+YKmu3eO0LqaOX2H8zn477yIoabnIahtO93MlYTuHafsTwLcRzGobedyVdu8doXRsaJFY07hrdtO88yHtNjkNR2/wAlIjLc8xrO3nKzIW2OY1HaNyaoI4adw7T9iw9pyyGsbT9iktLd47QsSFuWY1jalgM4TuHafsScJvqGred45lKxN3jtSbtxaxqO0bwlgS+D78PHF2QDYybZ5DjeZW1e4iOQg2IY8g7iGmyp6G2Gpt8XH/8AVVvpP8lL/dyf5SvP4tf+Vnaw3/zRIWmgHG/IflKjb/7d/MtyWqRkYnZj8pUf671s6NX2mYMd0Q3Y7h2n2VhrTnkNe8+KOZSrt3jtCSwtzzGveNzV17HMGLHcO0+ysRA2GQ1DbzdClXbvHaEmItwjMahtG4JYEeQG2oa27fzhzJVjuHafsT0hbbWNbdo8YJXJ3jtCWBFINxkNTtp3t5kqx3DtP2J4luIZjU7aN7Uq7d47QlgRMJ5WQ7TuHMtiodVP/wAufVTqlu3lZjtHihXNDqp/+XPqp1zNIrlH8zoYD1/InqHpiUsY1waHYZoeS4kNP41osSM7KYoGnvyQ/vYf9Vi5+Gm4VYyXo0zcxFNVKcoPo00LodJsjab0FM55+FiNtZN7SRGxzVdT4Wx1PIbFxhc4Na5zmm8LWkgkcnMastSUmK8/i3/Id6ivQYzSFXFU9SfTqcDA6Ko4SptKd79OZawaXge6zX3Ou2F4y62pykqRgZidysLcV9d7C/pVHoxg4thAF8Ou2eZufSpS5G7ROzvDNebo+TXgOsnZv6U5NQyONy0k7yRfrzV6herh7S14RUdVcuXr+p5Op7M0JyctZ83f0/QoW6MdlcW58ibX3J2m0U5zw1zgxurG65HNk25CuSqml0qTKWPaGgnCN4cNjjt/2V/eau/wr6lPdbD5n9P0HI9CtEmGSTkFt+Mjbj/RIc4Fp7datYdDQAXjqzHlnjEjjYa2gMjHUUhCxy9pK79EWXsvh1+J/Qh6Q0a17iceNx5LXMYYmANybia82F8tVvha1WyaKeCBa+WZ1AHaNdz086vkK0faauvwoP2Xw7/E/p+hrh0U7xD2i/bdT+DtGYp2uILWhr7km4BI6VaIWvjNPVcTRlSlFJPsbGD0DSw1WNWMm2u9v0LVtUw/CHWm6aoGHlOzxP17sbsP6tlXIXmd1j3PTbw+wIQhbVjWBCEJYAhCEsCspmve97uMcAyW2G5sQDmLdCs1X6JdyphukJ7S4fUrBSwCRLIGi5Nh6zuA1k8yJpA0bSdjRrP33qLA9pk5b2mUZBl8mXGpt9ZttSzBIie4nNuFtsrnldY1D0p1CFFhch6ZdaFxGsFhHSHtKlRvBAI1EAjrzUPTv5B/6P8Anas6EkxQs5rt7CQPRZTYXHqSXFiG1j3MPVm39Qt9KfVXBJhrJGbJY2PHymDD/lB+arRLC5I0f+SpvlH/AE51MrvA/Sj/ANRih6P/ACVN8o/6c6mV3gfpR/6jFy5r7R0Y9BrTf5CToH+ZqrXMcNeXSp+nXHAGj4bw05XNrOdlz3aEOiI+C4Fp2McHbfzd69l7L0oSpT14p8/U8N7W4ipTqw1JNcn0ZXNaRnYH78xRYqw4gXs64udZad+dyfXmkiCxNjq27+iy9Ru1HKvCPI7/AIjO/JC1Dwb2OIi55W3Dlq29q6z3a+A9FSUNLVUMRjbLKGSHjZZQ5ksLpIz+NecOceseP0LnuisLJQ58bZo2uBfAS9nGs2sxxuxA22jm16l6MrdJaLqNB8c6MS0NPEy1O9zhIySANbFTvJdiE2IsGZN8YOYNzoYulThODUPXsbuFxVacZJ1H07s8t4T1LLRvA1gjX9R+9lIleS5zjHhxFzsLLYG3N8LOVfCPqCUI+Zb+7Ucq8I09/wARnflkVwt/skyOF8gb23EqfFTyOvZj7DcCRl0Za1ltE91gB+jblnnA3dSbtQyrwhv+IzvyyJR+DUf3Uey3xys9IPBjmG1sb79bCQoLYizvgG9+KjOYsdc3MpNZ4NT/AHf/ANMr5ppeKWLmorlc+qaGm5YOm5PnYnrWIvhG5vxs41f+2k+xbMTmqXR1E54dha4/jZjZov8A8aT81db2XpxlVnrq/L1ON7W1qlOlBwdufp8hkOy236NSy1vad/Z9SnNpH5DWfzRe3NYHIpMkEgNnMcOdwI9B6vQva7tRyrweD3/EZ35ZDPNu9Paus9xrgTQ6R0dVGaImrhlkijlEszcIdBG6BxY2TAbSF+z4Od1zBzLbL9Gtdw/o66co8MlKIe961waXOMjy2sbGH2exr5CGSgOddgtfWMgQ3Ux2Hpxp3jFfkjaweNrSqWlN+WcEwEgA5HK41WI/mlHUMs9p39Wxb73XI6X3RkioomRxw4myuYHOMtQ5xdNcudYAOsLDaH8y090RxHME7xe9+m6z06NGUVLUXhGCpjcRGTjtH5ZADTe/3z/2WSD0Kc2nuTcgWBN9/assi1luOwGsMI6b22LJu9HKvBXf8RnfkrxGczbpKsaDVT/8ufVTrHEE5YHZC5PFu9JDUrR45NOdne+vZmILD0HsK8h7UU4w2eqrden5HtPZGvUq7TXk393q/mTlA09+SH97D/qsU9QNPfkh/ew/6rF5Okvto9lUf2WQ0zXC8b/kO9RTjzkegqs0LTksLy5xx4ha/J2i5vtuurY51yToZ14W81x6T9RUxVnB93Je3c4HtFv+lWaNBAhCFFgC1rTzMMxI+EGu69X/AErZVrXCB95j+a1o+v61aKIbL6gn4yNrtpGfyhkfT60+qHg3UWcWbHDEOka/R6lfKGiUwQqvTlTJGWFhsDiBFgRcWtrHOexRYNNvuMbWkbbXB9dksxdF8hIhlDmhzTcHUfvtS1FgCg6cnwRGxIcS0Ag2Ou5zHMD2qa9wAJJsBmTuC1jS9Zxr8vAbk3n3u9XYFZIhs352iGgXxPJy8EON9/hNFh2opdDhxJdxgaN1z1YwLDsV3xpOtzutxP1rEl3WBOro+xe52UMq8Hy/iNbM/JR1ejWDwMfSXg/qhoIUb3OO89pWxFoCS58fjN67fap2UMq8BaRrZn5Nf9zjzpBo7a3EdZWytDTqsfvv1KSNHE2sGm+5zT9abOmusV4J4jXzPyafFo9mLk5YtZAzO88+aeGjjvPpW21OjCxtzYi9sr/Yoz4huHUb9qbOn6RXgcRr5n5NaOjTz9qa9xW4sWEYteKwxX331rZJIGnXlz6vrUb3Naf+JIf0hb1KypU8q8EcSrZn5Kn3NdzoOjSNp7VbtpGgkB8h6CSOogYUoUliDxjrbib/AFXR0aeVeCeJVsz8lHJovELOzB1g5jfqKxFowNFm2aNwyC2LC05BwvtAw5ei6G0wHwiem3sqNlTyrwOJVsz8muHRLS4PyLwLB3wgM8ges9pT3uYdhvt1/atgMFtp7B9iXxY3KNnDKvBHEa2Z+TXG0DgAASA3wQDk3IjLdkT2lLdRvORc49ZOo3HpV+WDcPv1ILRu9BVXRpP8C8IlaTr535NeloXO8IuNjcXN7Held5vGp7vnHL7/AFq/wBIcBsIv1LJTShyirfIx1MbOo7zd/nzKU08njv63E+tJ72kPw389nH1BXD6dxI5dubC2x9N0viernGv05LJrMx7f4FKKaTx3/OKWGzhjo+Ol4t5aXs4x2BxZfAXNvYkYjnzqzNEPHf8AqD1MSxTgDaem1/Up1hvD7FD3q7xj85YNOdrj85Xhp9/pA9YSQxvijsIPbZW1yHX+BU08L2Oa9kjmPY5rmPa4hzHNIc1zSMwQQM+ZTdJ11XUFpnqp5jHfAZJXOLMVsWEk5eC3sCluhaNbR1uWWxMIvh7Lu9RVXJdSViH0KR1G43JcTiADs73AvYHmzPaUPo3Z3c7lZHMnENVjvyV82Fvi26vtCVIwZDBfnuPVfUsMqVOTu4p/kjPHSNaKspO3zKA0rrg4n3Go8rJYjpXNuGue3XqJGs3Jy5z6Vfho8Q26bdmd0jFb/hO7Wn04laEIQ+7FL5FKmOqVPvu/z5lE6ldtc/rxJPen5x7VfmUDWxw59noSTPHrI67fasuuzFtyjFMfHPzk5TRvY9r2SPY9jg5r2vLXNcDcOa4G4N9qu+Mjte4SgW/cfaFDmxt2ilMEpJPGSEkkkl7jcnMk55m6T3pJ47/nFXtm7/UlCPePV9Srrsnb/AoTTSeO/tJ9anRaTrWwmnbV1Ipy1zTAJXiIteSXjB4NiXO7Sp7qcnwSwfKt9t0t1Lle8d/lX9AKOV+pKxDXQ13vJ/jO+cUMongABzgAAAATYAZADmV4IjtI6gB6DdNuoWHMlx33dl2DJVnGE/vpP5q5kp42pT+47fLkUzoHjXI4dLrJLqQvFi8uFwbYsWYNwbdKvY9Hx7GA25s08+lA1tsegtKpsKK6RXhGTieIf4n5Nc9zjvKRHo0NFgQBuBsFsnEjdlzkn1pqSkYdbQTzcn0hSqdPKvBXiVbM/Jr8WigLloAvrLbZ9nSl+5551sLIwMgwW53G/qKekYwjk3abbQHi/UQbJs6eVeCeI1sz8ms+555/Sj3OPP2q/ELhe+F/O3FH1YXE3KYkc+18Fh8sX7C36wpVGGVeBxKtmfkp/c48/amH6CYSSWNJOZJA19NlZOncTbFh6mgfOJ1p2iqG5jNxvbkl7gd5tawVnh4L8K8EcSrZn5KmLQbWm7WgHeBY+pPDRx3lWxqM8muv+ccI6wWXSX1JFwYzcbcTR13NrBRsI5V4RPEq2Z+Som0SHZOGLpF/WmvcKPxG/NH2LYIy61wy4tfN4v6AQR1p/inEC2Fl9ri51uljbKuxhlXhEcRrZn5Nch0UGizRYbhknDo8jaR0lbNFGwDlXcfzRgHpJKakjB+ALfKufUFGzp5V4J4lXzPya1LowOFnWcNxIITY0DH4jewfYtkZRsHwbG+27v8AMck7xLdw6jY+hS6dP0ivCI4jWzPyYAP3t60oA7z6PsusOZY53WQ82sCRzXNlY0AssC99lvT9iAkvfbf1An1BAOX5/UpENc9osHC3yW29AVa6ptrbJnuY4j+XoTjHZeC7r+y91OqLkmScu1k672z1+tIxjcSemw9IUAaRbqLJG/Kbb67pUmkYm5kkEi/gOv24VOo+wuT6Voc4A8ZcnKxZbsvmVbM0QBrfcbrW9OJaqzS8LsrnPex1vVZT4pwfBdfrKiUWiU0WU2jIiRZzXE3yDeMd+qM03Jo4NGJhy52FpNt2X2KIJDvUg1hIsXPsdYNnA9RVeYExMkdlYn5Tbgdqdlo3A2tCf0Y8ukltwVHEjthNm6hbLsta6S6TFk4m2u1ri+/DeycwYliOI442DcRb0NDcPYUAW1KK/jb8ni7c+IH0CyLy7o/nPt2YVexBJc62u/YSmnVDQczbpt9t0xFx20RdWIJTXS2NwzqJPrap1QSg4G1jcHPmHbtQFVzQzu+EAOonqs0IhNQ3VJmPzZB6WuU7P4gvYoXWxWFh4wsenMZrIJlIDCXkX2tDcteG2QCrTpGqAsXMLjcXcCbgixHKbfUmsdQQLcSCNdg8ntLlXUFy6bouTcPnBMSwuaQCLXvbMWy572UESz2s54N+Z9v8yaErh8XznjLejCmowTyPve6wVEErtzbbTixevUsh5dqAA8a/2sTVYJFxv/W/mkm28fO/mmmMPjnqwEf5E4xh8Zx6m/U1RYDlstY6Ccz0BPQNGZcBYbyQT0Aax9qZLba/qTjGktLjs3nWDqsFBImR4N7NtuB5I6Ba6bwDxWjsPpwpQjda+w6s2n1akmOB+sWPYPqREGcP+19XYEnixtA7b/Ulua4a8PzgfQNabMrdpb0XH1qVcAYW6yB2D7EqMNOoDszTTp2b2DrA9FkOqGeM3sup5sDxcB9z6gEMkB1X7LesJhs7dWXTawA60oTtOrldFsvSosB4utt+/YlYhbbfpy7LLMGkHMyBNsxaxIF924pEdSwOzbit8E3A5sxrUAXG0uyaCTzAn1KyjhhjAMjru1lpsAMtRba6rn6QcTk7CNjWEtA/RCZcAcyLneR9qixNy791GAERtaDs2NPRYXv2KHVVhkbZ/wDlHrxXUAAbkC3MlrC441jRq9DQB61NoZmjLEyMbXYSXk8xJIHYoNxbW699Vhht067pRkLzZzthOeeobkAVpeXEh4cd5xGw2bASo0kLzb8YRvDW5el11Icxnwi53Mw2t03CTTvDXBwZiDTtAIPTcq1yCNLA/LlsP/luxdfKtv2p5lBjzIjuNpAFu1ymVEMcpucEeWbcJdfnxM28yyKCFo5AJffU5oAI6gSFOsTYjR6GLvBAA1Xa4NB33sblMVHB+JljxhvfwLusM9bThz6fWrnviwsYnNH6QB6SAo2kKeNxaQ2JuIEm7subZyVCnJBoqBQhpB74kyPg3JuOnDhUjiMQILibnWScutuYU2HRsRFy5jQNeEi/URrS3aFbkWhsoOZxyOZlvzup1xYhSaM4uxHFG9uUAHfXe6Yjgfc8tg5jG6/Q0h31qxZo2LMSNaHA5NjAItbWXOaMRRDTRxOuMD9dmFhb1lzjYHmTWFiAyF4N+MJ3AtGH/NdSKUvBF3taR8IB32GyzWSY3F3F4QcuSBYenWhkbDqLmnaXm7eqwuFD5kE+snba2JknOWnGHZ/CBAI7VALWnX6Wgj1oEhYRhda4vlln/vdYxCxuXYidWWHnub3vrVSRtFuc+j7EPLLDCSXbbtAA6LOzzTV1YgcN9/1/WkPjJ14HdIP2oBt/JOOieGh5BwnVm31A32JcgQGDxR1ALIaNwHZ9SQXW12G6+XrQHdCkXHehBTeJZJv9gUC48wDbe29uztSXc3VsTV/v/spHFx7JMR3YcI7XOQm5DfG0C5xOcTmLOItvyGFMPpmuJuJM9YxvDfm3sFNfYbR9+fUkh7SMjc81rKylYgZpaINN8husXdilk5bOxNXWQobuLiyVh01hqJI2Btx2lD43AAlpAOokEA9F8ikFygXEy1BsOThJ/Mc/qODJuzNZjqJdoZb5Db26S7JZxasszrzFh1lZxcytcCMTr3132ZWHWDksy2NgY7neHA26QVm6MlFxcZdIW+DHfmv9gso7Z3OPKimbc/Bc3COfJ+IBT7pJHOVZS+AuNOpIz4Yudmu/XmbrLKCIDwBvGQtfoITmEbh6/Wm+IZe9hfr9SjWfcCJdGxk3I9DfZunIqJg1DLcTcdhyCX99ZWQ77/7prMXHQB0dACGPtex9XaLZploAN7X38/Yla89g59/NfNVA45x+5QwnWO0Jtpytz7h6xmsEnmQXHnyE6zdMuzyLXEdIt/musgovvRAAALZHt/mlAjn9KS+QcwO3PLsSWP5wez6kFxbsJ1+s/alMAGWQ6EjEjEguKa4G9r5b2lvrWSBuCQXLBeBr6rXy7AguKAGyw6vqSGjPN177A0gegpRI2C3Pf+SA/oQCg0JaZLvv9ws4kFxxZaLm1xnvNh1kpq6VFcnLX0fyQXHZYy02NupzXelpsmnsB136jb1JT24bg3B2t1WIOpyGtFr7dwuQOm+frQkjupB48vnXj60oQ2Fhyvluc/suplJCH5sNsNsRe02ub81rKXTPiYCwvs45Y2gnpsQcwjkwU8WjRfGMiddpC3taHBWtFQuIxXt0OxOI58/Wn2UrACTK25GTrNBG6/JIJ6FXuY0ZB4d0Ai5/SChybJLV2EDC4B1zcAOYHA56yCLjtUmVhAAjAFh4rXZ7r6rqjZUuaDY+FrAGYA2gjV02U52lXBoGV7XxE5nmGFuvnyVGmTcbqJjrkgjuPhFlj2XuUinmx8k4iSdbQ3HbY0Od8FSxpiLARZ1yDyXXcCbaiSb2VaKi7muGEEbGx5Dq1kKUQSK2gf4RJtnYPeA8AdDrHq9Cqp9GgkOdc4dV5CRf5JfmVNeGuJu8NvmbjUT8lurmU3vVhaCJW4gLXsDq/RuMt5VlJodSlEJNwcudhLSekiyQKQePL51/2q7nkiLcGMuPjOFiOa99V+lRKmAMze67TkDG2+dstllOsyCMxgG/rJPrTkcZJtlfnIb6XGySGjDfPryB5ss1hmeV89g19AHOgI+e+56LfXmgX226gfrKkPkbbLCegvGe+2GyQ2Vm0XP517fq5lSQN3WClyS4vgtHQCMutNkfe4y9N0Bki+sepYuPuP5JV88sz0C3pOakx0UjtTRY7QWn0YrICMSNgA5xrPSkmsaPhNy2XA6dqeq9Glty4ggGxHGetmNV1XRh1sTWFrRyWhjMX6TrXKtFRYJprWPbhDYzfWRGCe21gUwYWD4IafkAG3W1RaajYL3gaBbMElo6fxZJ9KxHRUzs+LaTuJLv9R11fVigSZngA2LQfGc04euwAUWOedxs10Dxtw4rgbDYyavsUuOliZ4LWDoa36kqZ7h4LcXXh/6UTXoAi4y1jhvzXt67peYGdiebk9gJUOUO1upw6+0YXG+6xbcpyMkCwglAHixHCOgtFrqNUD/fbnckuJLfguN8OrIDFkmHyyE+C4c4Dfb+pPtccgWyNO4sd6bLb+5bwUdpGtbG5p72htJUOzHIvyYx+c5wt0B52LHUqKnFyZlo0ZVpqEerKWj4J6UljZJFSTPikaHtkMLjia7NpAZkRa2aru+i0YXMbcZOIDmuuNYOK4H8l7AptIQce6jY5olhhjkMYFsETy5jMhkPyZy+TvC8392DQLqXSk7WMtHORUxkZD8bcyAkmw/Gtk6rLRwuNdWbjJW7HW0joqOGpqcHfnZmo98cm2Qvb4I1D84JJkyzOXTkrjgrwWqK+biYGsc8DE4ueDHG29sUjonXbnszJsbA2XQndw2fi8qyDjLeBxL8F93GGW9ufCtipiKdN2kzQoYCvWjrQjdHPKLgzXSxNmjpZnwvbibK1hMZZ44da2HI58yqBLGbhsjHuBF+Le2RuE6jdhXqF1CaLQLoXYQ+n0a9jreBxjKdwdYkeDjvmuOcDe5M+tpWVENTBGHYmlhhdiY5ji0tJDs9Qz3ELXo42MlJz5K9kb2K0RKDjGnzbV2uRoevV0axe/UsFTINFPdUilsePM/e+EA5Sh5jIN9mIHPmK27hz3LHaPpnVEtcPCaxkccVnPe74LcTreCHH9AradWCkot9TnU8LVnFyS5LqaIi63Tgd3GKutiZO+tkghkGKMuA4x7TqdxYbk0jUSfQQtgqu4HK1hMWkHSv2NkYyME7sYYSOwqssTQi7a39zPDReJlHWUOX5HK7oxc4Vhongq9+kG0Ej3RzmfiCHxscGuF7klreU2w1g53C6Ie4TPjaBVQBhvieITiba2GzS6zzcndqU1K9Km7SkUo4CvWTcI3s7fmcrujEr/ujcBBouWOJ07Kh0rHSZRNa5oBDQXs1BpN7ZnwHalr0EYAAI5gA3CAFkjKMo60Wa9WlKnNwkuaLyj4KV8rGyR0dQ+N7Q5r2xuLXNOYIO0WTp4FaS8gqfNO+xeiO5u7DoajLRm2kYQDzMyvtXM4e6npg2/7HAdWQp6u/R4ZXMji6sm1FLkd2ejMNThFzlL7S9Fc5hpLRk9OQJ4JYSdXGxPjxfJL28pK0ToqoqXFtPDJM5rcTmxtLi0XtcgbLr0/V0zK/Rdq2ERcfTh8kbtcDyzFiBcLtcHZ3yIsuL9weKqFZMKd0AkdSkkzBz2YRLFkBE4EOu4LJDGOVOUrc14MNbRMadeEL3jLyaLpTRs1O/i54nxSYQ7BI3C7CSQDY7LtPYVEXT+6doGpqtMwQVE1PFJPTRsZMyN5hDuMqOLY5jpceIuyvf4Teda13Qe5rWaNjjlfLDUQyPLHujbJEY3EXZcOcQQbOz5hvWxSrwkoqT5s06+AqQc3FfZi+pqpKSH9XSFtPc+7nNTpNkz4Zo6ZkL2sxPY+YPe5uJzQA4YbDD88Kt0lwQqmaROjoZ2VU4cGExw4G48ONwJdKQAAc3cx3LLtad3HW5ow7nV1FPV5Pp8SpL+YoLvuV1ih7htSWXmroWSeKyFz2jmxmQX6bLUeHHACs0aA+XBJAXBonjPJBOpr2uF2O7RzrHDE0pOyZkq6OxFOOtKPI1UE7vT/JZW78Ae5vLpOndPHUxxBsroix0bnG7Wsde4da1nhXn4EqhsJe+sha9oLizi3lgABOcuK4y5j1qJYqlF6rZMNG4icddR5deqOWICWyjkOYjeecNd9iJqSRgu5rmg7XNNln5GjzEY75bua3ptmh2zP1fYozszmX/olzB2qVFGHDJkpA1kXI7eLVrWIMBZukTixtZw+UD7KwAPH9Dx62JYkeDhbO/MBqScdzlc85CbfHud6besJDIr63dp/klkB8lIdML2LhfnIus4Dqvq1EnLqxJOEHactx9Y3IkiDJkGWYz++tLMhyFzlqGwZ3y60wGnxiOnMIMTwcz2f7KdVDmPY7Hb0j/dLLhbLFfbuUTB+c7tTkce93pFvVcI4oDl1m6QQPHt1PPqYsQ5m1iT+aDn+qosSKHSfR9izjt15ar/VklSRhouWSgHbbLt4tRMgeTj/SLnj78yKNwLc7n9Fkpklt1ukA+hIe/LwRnt5RPpNknHzD0/asmqRcUM/9wn4qaTJwjc4dBIPW1RXnVcWvmOcfWFMpGtsS1/FuA8IyWB5sLWYlDQQ63R8hvyQ2wBIzsAd980h1M5ti4MBdlhJuc8gXBpuAh1Q8NwioBBzI/Ga8t8evVmo+FwOIPbfXcOsekh2arqsm5Z1GipAAbMJOotde9twsoEcb3Gzcze1hv1a7WT3uq8axHIfGLSTc8+Wal0mn3gAPbduerkjmzOtVtInkR201SwE4XBozP2pQ01MMuSLZeALhSqvT4c0jAOYHPLnz6FU1FSHWPFtHycr85w5KYpvqg+XQmunnIDnFpF/Fac/0BdDqt5FjE0/nFh9GJVvGD4N282InssFZ02iJX2xXa0i4ccR7dx5udS0kE7kVwc3wowAdRdc35vCskmpxa2RDoYwevX6U5pHRxjFw5rhubiJ6ScNgFCbytQ+z0lTFIhsVHC+WRrI24nvc1jGNbZznuOFrQBtuQvVncz4Ks0ZQshJaZn/jKiTx5nDMAn4AFgPk85Xn7uY6eodH1XfNVFPLLG0iFsbYnMY91w6Ql8oOLDkNfhO5lP7rvdDGlDDHC2SKli5ZZIGh8kxuA5wY8twhmrP4buZaGLp1K81TXKPqzuaNxFDC03Wk7z6JfA7Jwd4Cim0nLpE1sss1QJGyseGBjmvLC1gtmA3i4wOZgWvf0k9BGWjiq2eFSyYXkfEzENN7a7SiL5zlwKMkEODsLmkFpzDgRYgg9K7lpDusUNXRPpp4agumpzFKWCDAHuZhc5hfODYONwbDUFrzwtWlUjNPW/L0NuGkMPiKE6Ulq+q53u/9lr/Rvoms0W6UWMk1RKXOtnaO0bGnmyJ/TK5Jwv0pUzaXnkxzd8NrJIadoxEx4JjHCyJmPk6m6rXJOu6tO5Rw9k0XjhkYZ6aR2MsjIMkclgHPjzs5pa0ck21bM77fpXuqaKbIamDR5krchxskEMcjcrcqYEyHLZ6lOpUhVk9W9+hXa0a2Gpx2mrq9Ub33VJxHoeqMuowtjfYXvxrmRGw6XrnX9HHTzWzVFDidhlHfMIcdTmYWStAtbNvFm35jlH7o3dNptJUMlHBFOySR0JL5uJZGGxyskdiLZifgDYtb7nfBjSUekKKohgcWiWOTjbOELqd+UjuMw4S0wvdv1jWqU8PbDyVTk/iXr43WxsJUftJJJ2+PU7FovgS1mnKivLIuKMbHwkNbj75lDmTuJGeTWa//AHg7lynu28JO/wDSBpozihpXcSwAY+NqHHDKbYg08sNaNfgO8Zdn7p3CIUVE8tcGzzXhg38Y5pJeMtjA49Q3rzpQ6Na17XsLxJG9sjHPOIYmkODjYAnlAdhTAxcntJeishpirCkthD1d5HZ4uDs1Po5w0tpeZsBaxsjIxFG1oOENhExjMr87DLDe9s9t33K4NHMhmGjuOMXGDjHSmblSButrZ/BFrag3ZrVK/ugUVRTcVX0+IOAEjMLJIHOaQQW8Y4EZgG2zLM2Vdo/ur0NLiijoZIqVtuKMHe5L3EkPc6MSjDqbnytt7LXlSqyTVne/wSN2ni8NTlFqatb1u5fsjWWHFwx//ef5KT7Wlbp/SK0tNBRQMhlfEZqiz3MeY3FkcbnYcTeVbFg+b0rnUfCCmbp9uk2x1PEmV0j4y2Jzw59O+I4SyUtIxkHXv3J3uxcOodKMp2QQ1DDBJI4ulaxrXYmtaMOF5vqOuy3NhKVWm2uSSucxYuEcPWSlzcnb5cjQq/SMszg6aV8zw1rccjnPfhbfC3E/O2Z7VhtUMzcM5mNdbovrb0qMQ45Wv0D6xkkWOqx6LFdXUSVkedc23dnrHuZyf9z0TtdqSM5nXyNptda73Pu6zT18zaeaJtNNJ+S/GGRkjvi8RjGF+4Z3tvsDrHBHuvUdLo+npZIKpz4YGxOc1sOAkNsS3FMHEdQXFY5MNsyHNsQRcEEaiCNRuNfMuPSwGu566tz5M9PiNMbJUtk7q32l4PRXd8i0l3q59PKO8cNqmJkZE2Ha50mLlQbwA223EL20f+jjN/3q8ZZ0UuzdNTHrVzwX7tsLaRkVdDPNM0GN0kbYnNmZawc9r5BZ9tYzG3bYalwS4V0Gj9LPrIIqrvN8UjGwFsXGxOkcx2Bo43CYwWZG97EDO1zanRqKlKk4/J9ylfEUZYmnXjPlyun6F5/SUBbpGmeCQe9RYjIgsmkIIOw3cF0LgrXxae0M6Oa3GlhgnyzZOwNLJmjpwOHZsK433YeGVPpWankhZPFxUcjHCVrATic1zS3i3m4ydu1qN3J+GJ0XVOkcJZKeZhZNEyxcS25ikY1zgMQcSNmUjuZXlhJPDx5faRSGkKccZO7vCXJ+Op3TQVMzQegyZcOOCF002HVJUyZ4AdvLcxoPM1c5/o8VbZdKVUkhxVElM+TEWgEl88bpiDvxOaoXda7pDNJ08dPTxzxRiTjJuNEbceAfi2gMkN24iTszYxaHwf0vPRTxzwPwyROxNF2uY4EWc17WuzaW3FufZklHBydKTl96QxOkaccTT1OcIHoDuqU2iXVEJ0jWVEEgjvDGx8rY7BxxSNwRkcZci5vfJnMpmltN6Pm0a6nfNPLDLTcWyolp6k8ZyLMlM/EYHPxAHHvF1qTO65o2ria3SFA4ubnhwwVEQdtLDI8Pb2dqgcNO7Cx9M6m0dA6HEziuOfxbOKjthtDFG854dRytuK04YWq2ouL5fFWOjUx9BKc1KNmulnd/PmX39GqoBpquMDDgqGPtcu/KRNbe/wD5XoWk91rhFWs0vWRMnlbG3AxsYeWs4t9PEXNwg2Ny92/Wmu45w3Zow1DZo5pWSshLBCxpLSwy4i7HIBblgXHiqh7pmno67SElVCyaNskcYLZGND8bG4CSGvIDcLW58y3aWHaxMm1y/wBHKxGMi8DCEZfaT6fDmUs9XJ8J7s/glziPmkph0p2EjmuSmO23QstfY7fUupqHBuPOmyzJxbOhOQ1hBFjhG8crsDjZMSTX8Y/KOL0rAcD8G55ifVqTVFx6SVpzOInaeS3PqCQyVtxrIGsEFt+YEBKgw6yy9srNJB/SuCPVtUynbIAcNKSDtLHl1uZ1lV2RIxK+J1rB0f8AiZ9JIKkwMjvYFz+fiw5nquEQzsAIMeB3ivdJbpybf77U7PRTNALM2kX5MrumxDiDdVZYmNiY3MMaTzkB3zXC1kzpOlcbG4aLXOJsbiN3g2s1VL62RuRLgd519R1jqUn3bmIs29t9gTfnOFRqMjWQtsDLZyMtuaIPXxt0ttHFk5spI5m6uYNNyo8mmZC0tdHFY7Swk/rZXUaGpOIFgGID4LQPQMip1WLomTBl7Oc7XbEImxttz5Xuo7HRNcb4pB0cWOY4rkqxioah/hjC0i/Kldt5muv1KPNPHbDgxOBtZrpM7bTdqIWIEsrSSQC0HU0XcR0kjNKjkZ+d08k+ghTJWyFudKQBtDH4rfKOahz4dYZh2WcSewNaM1ZcyBctY46ziyzuMPVyTmE22fcTi+pNXAHg57zf1akMltv/AESQe26tqoi5G77acrDsAWHVIGVieYAH1pnGsMkscsjza1m1UQSWzg7x0keoJbGX2gdNxlvvhUZ0x8Ynp59Z161hk7hqc4dBI9RUao5Fi2nBz4yMADaTfoHIzTbsIPhjXqGLtu5tvWoTp3eM7tKZdLLqEhtz3/2RQJ5F/wC57SLtmiJ2jFa3OeTayTDQyEWa+OxNrCZtjzlodeyo4i7PE8u6tXXuTjH2B384HrOYUaj7jkXp0S9lzxkNxumsc+q9+xV0rXA8rb+cHeoqudNbW0kbx/IpgVrdjHdn81MabDsXBebYTitrAucN9pw70+zSU2HA17sIGEBoGQ3AgXCp4qwAZtP6Tbem6m0/CCS2FsliMhdoLgNoDrKHT+BJJmrZC3CS/DnyS55HXico5cB/sm59MSuBDpA4bbgOPquoYqL6iOx32KVBkFzHUQ4bOjcXeMD9V7LLJYbjkyn83k3PQQwlVTX3Gy/WrXR9VEBZ1tWpxc4D9Hiy3X9yqyjYEqp4oAHC8E/AJIP60YasWhuHYbNBF/xsQdlrs0POI83qWIe9Xkl13Ovk1ps1xtrw3B2agsVdTE0EYOLOQFm8oAarF0dz032rHb0LFs2upsILmnE0GwLOUGjflayiSVtM7WxgBv431xKvhrGkC2bmm+LAMZ3E8ixCVFpRzWOONrMR8MMZisMiLMbYdJtrUbMm5KwQ3uI3OadVgMPUXZDbsC6LoDutzU9PFTR00bmwRMiY4uzwsaGtxHGGuda2pcjNXHIbOmBOuxxdjcMZzVlDXQRtBJi5N7NdFIHHPVxrWm416/QqVsNGatJXM+HxNSi26bsXnDvhJJXTNlqPxhaC1jGPaWRXtiY1kbjhN7XJuchuFqM8Xa3EyNJsRyLAdZfmOdLi4WR5NbC1wG0l2/nYTZQamudK83fgZss55AtbIcXrPObdKtTpaqtayMVSbnJyk7sdc+AZOcWu/OcwegG1usJcOkIowADC95yP5NxHOSb9gGzaonfuYaHkt1YiMNufO5/3UaWrebgvJ2fBI6uTuWVQuY72LWq0u62Hk4cwW3ABB18kABqr3VjT8FgO/m6L6+dQg3VqHPb+Sekbr8B1rcoWudwFzchWUERcfFQ0iwDOkDPtui4O0D5R/kowdbWcNxr/ANgmnSW1AHoIt26rqdUEx07crW7HC/2J59S0ixH6zj6CbKve/LWb82sfOFk7HI4C/HuHMMX2WTVBIBFtvTcLFjs9YHrSG1cgBtI0/LY17j85pSBM+xONhcd8Yvuydqb/ACUaosiWyMndf+8jHrddJaHar9Re1vpLrKPHNKG+EQL3xNDr7rXD7W7Vjlu5ReCN7sj6XWTVFiZxN9rG/wDmMcT2OWZaewvibq3qJWlgsWG4Iz5WI36ALj0pHG5DlH5PKFvqUao5ErijtIt8r1WT7IfBNgRfUDd2He5o5XoCrJZLmzjqOYxevO90/LL4pyG1xYHdGfKIUuIsT6uLLC0PwjlZxFovbM4icX32KG+Q2sXAjXbXbr+pRzMyzsUgDhqADSD+mHZelQ31e5juuzR6c1KgGWRk3HLpWcV9vpVYJpD8FoG8kn/KE5HI74QH6P8ANTqEE3jANbh1/wCyyycDMOH6p9ZURsu312SRWvB5IBvuAeOnDhsmoSWtNXOaSWyll9drWNt4BzUs6YntlPfoZ9eBVfulIW2u0fJjjb2FrLhNtqB8O7uvCes7eu6o4X9AXEFU993Oc4vbbC50rWNH6L22Kblq3us181wMxhB+touoTdKyYcLXvDRqzbfqcGXtzKHNUk+EXEnp9ahUwWrmjZICed2F3VkmRLba7qN/Sqs1LRt9Jv6lmOqBy5Vug2KvswW7Z5MrF4zviOI35t1k4Kx7jy5JR0NxetwsqbjBz9hWWydBt987hRqAuo61zMmTObi142kHLoBt0pyeqc0B4c7jCbF7JQW2+Q1twqGOotqLgegj02U1ulpQ0gveWnI5tJ+c5lwLbFDpklg3TE+2ctHOy/p4tRauve+2KUvtmL6geglQnVA+CCN5JxX6NjeqycbpGQCwLT8qNj/S5tympboQZdUAi5cMvkjtzWOMB1Ob1a1EfXPJza3LbhawdQDbFZMu31WVtQgbDXbieopIPbuzv6l5u981b5XU+fl9pHvmrfK6nz8vtLkcZhlPTe7Us/0PSOLq7fsRj+4t9q83e+au8rqfPy+0j3zV3ldT5+X2k4zDKT7tSzrwelGsccwC4c1lgm2RDgdgP2WXm0cKK7Md+VVjrHHy59PLWBwnrvLKnz8vtpxmGUe7Us68HpU+DqPWRz9YSGyDVbrzv67LzeeFNda3flVbdx8tuzGk++eu8rqfPy+2nGYZR7tSzrwelYonuNmtcTr1Wy13JJsMkSxPbrY4dIIHbqXmscKK7X35VXGo8fLl+unDwt0h5dV//wAmb21HGo5R7tSz/Q9FMc4/BPUCfSlPy+Ce0fUV5wdwqrzrrao9NRKf+tJ981d5XU+fl9tTxqOUe7cs/wBD0hxl9lhz2+rJZMn3/ntXm73zV3ldT5+X21n30V2vvypv/fy+2nGoZR7tyzrwelIyCDdwFhlySb81wLtSYpQMjisddiB69a82HhPXeWVPn5fbWRworvLKrz8vtpxmGUe7Us/0PSbXtuc3Dxcg49ZuLdKb4w/f/deb/fPXeV1Pn5faQeE9d5XU+fl9tOMwyj3alnXg9JmRwvrF92V+bnSS4ZZW6wfQNS83++eu1d+VPn5faWPfNXeV1Pn5faTjUMo925Z/oejjY52HYpsEzGWLTd2XJMYtf5bXgrzJ75q7yup8/L7aPfNXeV1Pn5faR6ZhlHu3PP8AQ9Nt0k+4sWt/RDhrvc4wSf5KceEDy22FuIixNsGWd82PBC8re+at8rqfPy+0j3zV3ldT5+X2lV6Xpv8ACPduef6HpmStuC2wAPSXdrjmPtKZvnrG/f2i2tebPfNXeV1Pn5faR75q7yup8/L7SnjMMo92p5/oenamsNm3IuBYYdmW1t7X7E1DVBt7C+0E4h2hr7LzP75q7yup8/L7aPfNXeV1Pn5faTjEMo925514PS88+LlG1zut7V96zVyNOE4nOy2lotYkAEAc3+68z++au8rqfPy+2lM4VV41VlUOiolHqep4zDKPduedeD0jDLY5C98s7+jCQs4i03ItkbA4hr25G682HhRXHXWVR/8APl9tY981b5XU+fl9pOMwyj3aln+h6TY9zt7uYD2QlyzNthDXNOV88r87bLzSOE1b5XU+fl9tB4T13llT5+X204zDKPdqWf6HpN4AAOJpvsF7jpuEjGvN/vmrvK6nz8vtI981d5XU+fl9pOMwyke7Us/0PR+JLj6QOlebffNXeV1Pn5faR75q3yup8/L7ScZhlJ92pZ14PSXGgnMD5re3VrSpGMPwri1/AGvLKxd6V5rHCat8rqfPy+0sjhPXDVWVPn5fbTjMco92pZ14PR7XD7/UjjF5v981d5XU+fl9pHvmrvK6nz8vtJxqGUe7cs/0PSGNZL8vqGfoC83e+au8rqfPy+0j3zV3ldT5+X2k4zDKR7tSz/Q9IcZltSsYI3Wz23dzbvVqXm33zVvldT5+X2ke+eu8rqfPy+0nGYZSfdqWf6HpF4A29jj9qS4tORt0HO/Rzrzh75q3yup8/L7Sx75K3X33U+ek9pTxqGVke7Us68How2GQJHML26rJt5A2v58ifWvO/vlrfK6nz8vtLPvmrvK6nz8vtKeNwysn3annXg9BkWPNvItcepJZNYm2WzX9QC8/e+at8rqfPy+0sHhJW+VVHnpPaU8ch6xHu3PP9D0OZSfhj52E+lqy5p8Y23Xvbt1+hedTwirPKqjz0ntJQ4S1vldT5+X2k43DKPduef6HoiNwORLzusCP8utONtqJJ5jf03XnQcJq7yup8/L7Sx75a3yup8/L7SjjcMo92pZ/oekGYRYCw5hketZYATr7XED12Xm48JK3yup8/J7Sz75q7yup8/L7SjjUMrHu1LP9D0littBv03FvR61jjOlebvfNXeV1Pn5faR75q7yup8/L7SjjUMo92pZ/oVCEIXnj1oIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQAhCEAIQhACEIQH/9k=\n", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "YouTubeVideo('x4dNIfx6HVs')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The catastrophic flooding in Chennai is the result of the heaviest rain in several decades, which forced authorities to release a massive 30,000 cusecs from the Chembarambakkam reservoir into the Adyar river over two days, causing it to flood its banks and submerge neighbourhoods on both sides. It did not help that the Adyar’s stream is not very deep or wide, and its banks have been heavily encroached upon over the years.\n", "Similar flooding triggers were in action at Poondi and Puzhal reservoirs, and the Cooum river that winds its way through the city.\n", "While Chief Minister J Jayalalithaa said, during the earlier phase of heavy rain last month, that damage during the monsoon was “inevitable”, the fact remains that the mindless development of Chennai over the last two decades — the filling up of lowlands and choking of stormwater drains and other exits for water — has played a major part in the escalation of the crisis.\n", "\n", "[Source: Indian Express http://indianexpress.com/article/explained/why-is-chennai-under-water/#sthash.LlhnqM4B.dpuf]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## How much rain and where?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To get started with our analysis, we bring in a map of the affected region. The map is a live widget that is internally using the ArcGIS JavaScript API." ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "map = gis.map(\"Chennai\")\n", "map" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can search for content in our GIS and add layers to our map that can be used for visualization or analysis:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "
\n", " \n", "
\n", "\n", "
\n", "
Solid waste management. Feature Layer Collection by some_user\n", "
Last Modified: December 05, 2018\n", "
0 comments, 2 views\n", "
\n", "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chennaipop = gis.content.search(\"Solid Waste Management\", \n", " item_type=\"feature service\", \n", " outside_org=True)[0]\n", "chennaipop" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "map.add_layer(chennaipop)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To get a sense of how much it rained and where, let's use rainfall data for December 2nd 2015, obtained from the Regional Meteorological Center in Chennai. Tabular data is hard to visualize, so let's bring in a map from our GIS to visualize the data:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "rainfall = gis.content.search(\"Chennai_precipitation\", \n", " item_type=\"feature service\", \n", " outside_org=True)[0]\n", "rainfall" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "map2 = gis.map(\"Tamil Nadu, India\")\n", "map2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We then add this layer to our map to see the locations of the weather stations from which the rainfall data was collected:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "map2.add_layer(rainfall, {\"renderer\":\"ClassedSizeRenderer\", \n", " \"field_name\":\"RAINFALL\" })" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we used the **smart mapping** capability of the GIS to automatically render the data with proportional symbols." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Spatial Analysis\n", "Rainfall is a continuous phenonmenon that affects the whole region, not just the locations of the weather stations. Based on the observed rainfall at the monitoring stations and their locations, we can interpolate and deduce the approximate rainfall across the whole region. We use the **Interpolate Points** tool from the GIS's spatial analysis service for this.\n", "\n", "The Interpolate Points tool uses empirical Bayesian kriging to perform the interpolation." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "scrolled": true }, "outputs": [], "source": [ "interpolated_rf = interpolate_points(rainfall, field='RAINFALL')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us create another map of Tamil Nadu state and render the output from Interpolate Points tool" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "intmap = gis.map(\"Tamil Nadu\")\n", "intmap" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "intmap.add_layer(interpolated_rf['result_layer'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that rainfall was most severe in and around Chennai as well some parts of central Tamil Nadu." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## What caused the flooding in Chennai?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### A wrong call that sank Chennai\n", "Much of the flooding and subsequent waterlogging was a consequence of the outflows from major reservoirs into swollen rivers and into the city following heavy rains. The release of waters from the Chembarambakkam reservoir in particular has received much attention. [Source: The Hindu, http://www.thehindu.com/news/cities/chennai/chennai-floods-a-wrong-call-that-sank-the-city/article7967371.ece]" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lakemap = gis.map(\"Chennai\")\n", "lakemap.height='450px'\n", "lakemap" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's have look at the major lakes and water reservoirs that were filled to the brim in Chennai due the rains. We plot the locations of some of the reservoirs that had a large outflow during the rains:\n", "\n", "To plot the locations, we use geocoding tools from the `tools` module. Your GIS can have more than 1 geocoding service, for simplicity, the sample below chooses the first available geocoder to perform an address search" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "lakemap.draw(geocode(\"Chembarambakkam, Tamil Nadu\")[0], \n", " {\"title\": \"Chembarambakkam\", \"content\": \"Water reservoir\"})\n", "lakemap.draw(geocode(\"Puzhal Lake, Tamil Nadu\")[0], \n", " {\"title\": \"Puzhal\", \"content\": \"Water reservoir\"})\n", "lakemap.draw(geocode(\"Kannampettai, Tamil Nadu\")[0], \n", " {\"title\": \"Poondi Lake \", \"content\": \"Water reservoir\"})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To identify the flood prone areas, let's trace the path that the water would take when released from the lakes. To do this, we first bring in a layer of lakes in Chennai:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "
\n", " \n", "
\n", "\n", "
\n", "
Feature Layer Collection by some_user\n", "
Last Modified: December 04, 2018\n", "
0 comments, 2 views\n", "
\n", "
\n", " " ], "text/plain": [ "" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chennai_lakes = gis.content.search(\"chennai lakes\", \n", " item_type=\"feature service\",\n", " outside_org=True)[0]\n", "chennai_lakes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let's call the **`Trace Downstream`** analysis tool from the GIS:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ " 11 features" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "downstream = trace_downstream(chennai_lakes)\n", "downstream.query()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The areas surrounding the trace paths are most prone to flooding and waterlogging. To identify the areas that were at risk, we buffer the traced flow paths by one mile in each direction and visualize it on the map. We see that large areas of the city of Chennai were susceptible to flooding and waterlogging." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "floodprone_buffer = create_buffers(downstream, [ 1 ], units='Miles')" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "lakemap.add_layer(floodprone_buffer)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Flood Relief Camps\n", "\n", "To provide emergency assistance, the Tamil Nadu government has set up several flood relief camps in the flood affected areas. They provide food, shelter and the basic necessities to thousands of people displaced by the floods. The locations of the flood relief camps was obtained from http://cleanchennai.com/floodrelief/2015/12/09/relief-centers-as-on-8-dec-2015/ and published to the GIS as a layer, that is visualized below:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "relief_centers = gis.content.search(\"Chennai Relief Centers\")[0]" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "reliefmap = gis.map(\"Chennai\")\n", "reliefmap" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "reliefmap.add_layer(chennaipop)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "reliefmap.add_layer(relief_centers)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us read the relief center layer as a pandas dataframe to analyze the data further" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SHAPEcontact_nodivision__f_locationsfidno_of_centno_of_famino_of_perssl_no_symbolidzone______
0{\"x\": 8919695.334200002, \"y\": 1464332.82630000...Balamurali, 944519031110Poonthotam School, Chennai110652001I
1{\"x\": 8936283.704100005, \"y\": 1469202.82020000...Jayakumar, 94451903022St.Joseph church community Hall, Chennai202006002
2{\"x\": 8916764.954599999, \"y\": 1450941.69069999...Jayakumar, 94451903022Nehru Nagar chennai Middle school, Chennai30752503
3{\"x\": 8924034.069200002, \"y\": 1462457.79919999...Shanmugam, 94451903017Kalaimagal School, Chennai4015504
4{\"x\": 8919695.334200002, \"y\": 1464332.82630000...Rameshkumar, 94451903044Ramanathapuram School, Chennai501003005
\n", "
" ], "text/plain": [ " SHAPE contact_no \\\n", "0 {\"x\": 8919695.334200002, \"y\": 1464332.82630000... Balamurali, 9445190311 \n", "1 {\"x\": 8936283.704100005, \"y\": 1469202.82020000... Jayakumar, 9445190302 \n", "2 {\"x\": 8916764.954599999, \"y\": 1450941.69069999... Jayakumar, 9445190302 \n", "3 {\"x\": 8924034.069200002, \"y\": 1462457.79919999... Shanmugam, 9445190301 \n", "4 {\"x\": 8919695.334200002, \"y\": 1464332.82630000... Rameshkumar, 9445190304 \n", "\n", " division__ f_locations fid no_of_cent \\\n", "0 10 Poonthotam School, Chennai 1 10 \n", "1 2 St.Joseph church community Hall, Chennai 2 0 \n", "2 2 Nehru Nagar chennai Middle school, Chennai 3 0 \n", "3 7 Kalaimagal School, Chennai 4 0 \n", "4 4 Ramanathapuram School, Chennai 5 0 \n", "\n", " no_of_fami no_of_pers sl_no_ symbolid zone______ \n", "0 65 200 1 I \n", "1 200 600 2 \n", "2 75 250 3 \n", "3 15 50 4 \n", "4 100 300 5 " ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "relief_data = relief_centers.layers[0].query().sdf\n", "relief_data.head()" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "31478" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "relief_data['no_of_pers'].sum()" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 136.000000\n", "mean 231.455882\n", "std 250.334202\n", "min 10.000000\n", "25% 60.000000\n", "50% 150.000000\n", "75% 300.000000\n", "max 1500.000000\n", "Name: no_of_pers, dtype: float64" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "relief_data['no_of_pers'].describe()" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "relief_data['no_of_pers'].hist()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In our dataset, each row represents a relief camp location. To quickly get the dimensions (rows & columns) of our data frame, we use the `shape` property" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(136, 11)" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "relief_data.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As of 8th December, 2015, there were 31,478 people in the 136 relief camps. Let's aggregate them by the district the camp is located in. To accomplish this, we use the `aggregate_points` tool." ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [], "source": [ "chennai_pop_featurelayer = chennaipop.layers[0]" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "res = arcgis.features.summarize_data.aggregate_points(\n", " relief_centers, \n", " chennai_pop_featurelayer, \n", " False, \n", " [\"no_of_pers Sum\"])" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [], "source": [ "aggr_lyr = res['aggregated_layer']" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "reliefmap.add_layer(aggr_lyr, { \"renderer\": \"ClassedSizeRenderer\", \n", " \"field_name\":\"SUM_no_of_pers\"})" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AnalysisAreaPoint_CountSHAPESUM_no_of_persdistrict_ndistrictcofidlcya_availlcya_balanlcya_requi...vapc_tractvapc_tri_cvasct_compvasct_dumpvasct_ecfevasct_jcbvasct_lorrvasct_othevasct_tracyear
01304.70269727{\"rings\": [[[8927226.489100002, 1470373.014199...4063Thiruvallur602918.1842.79000160.970001...562540117032014
167.72023064{\"rings\": [[[8927223.1496, 1470310.1543999985]...19045Chennai6031222.4825.00000030.000000...06424014022014
21722.70982445{\"rings\": [[[8914096.3552, 1464672.7712000012]...8370Kancheepuram6041561.9135.90000255.900002...4178472310272014
\n", "

3 rows × 31 columns

\n", "
" ], "text/plain": [ " AnalysisArea Point_Count \\\n", "0 1304.702697 27 \n", "1 67.720230 64 \n", "2 1722.709824 45 \n", "\n", " SHAPE SUM_no_of_pers \\\n", "0 {\"rings\": [[[8927226.489100002, 1470373.014199... 4063 \n", "1 {\"rings\": [[[8927223.1496, 1470310.1543999985]... 19045 \n", "2 {\"rings\": [[[8914096.3552, 1464672.7712000012]... 8370 \n", "\n", " district_n districtco fid lcya_avail lcya_balan lcya_requi ... \\\n", "0 Thiruvallur 602 9 18.18 42.790001 60.970001 ... \n", "1 Chennai 603 12 22.48 25.000000 30.000000 ... \n", "2 Kancheepuram 604 15 61.91 35.900002 55.900002 ... \n", "\n", " vapc_tract vapc_tri_c vasct_comp vasct_dump vasct_ecfe vasct_jcb \\\n", "0 5 62 5 4 0 1 \n", "1 0 64 2 4 0 1 \n", "2 4 178 4 7 2 3 \n", "\n", " vasct_lorr vasct_othe vasct_trac year \n", "0 17 0 3 2014 \n", "1 4 0 2 2014 \n", "2 10 2 7 2014 \n", "\n", "[3 rows x 31 columns]" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = aggr_lyr.query().sdf\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us represent the aggreate result as a table:" ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SUM_no_of_pers
district_n
Thiruvallur4063
Chennai19045
Kancheepuram8370
\n", "
" ], "text/plain": [ " SUM_no_of_pers\n", "district_n \n", "Thiruvallur 4063\n", "Chennai 19045\n", "Kancheepuram 8370" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = aggr_lyr.query().sdf\n", "\n", "df2 = df[['district_n', 'SUM_no_of_pers']]\n", "df2.set_index('district_n', inplace=True)\n", "df2" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAFNCAYAAADrbaOsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3X2cVdV97/HPV0AwKvGB0ahoIAZjfEBURK3RoCaIsUE0WiGNUGoujZVE0/Q22N5X8CbV6K02tyZWg4pifEATQ6RKStEYrS1GBpwiPpXxeSJXEHyMEQV/94+9jjmwz8ycmTOwz3C+79frvM45v732Pr/DvIbf7LXWXlsRgZmZWbltik7AzMzqj4uDmZnluDiYmVmOi4OZmeW4OJiZWY6Lg5mZ5XRaHCTtLel+SU9KelzS+Sm+i6SFklak551TXJKulNQqaZmkw8qONTm1XyFpcln8cEmPpX2ulKTN8WXNzKw61Zw5rAe+FRGfBo4CzpN0ADAduC8ihgH3pfcAJwPD0mMqcDVkxQSYARwJjAJmlApKajO1bL+xtX81MzPrrk6LQ0SsjIil6fVbwJPAXsCpwOzUbDYwPr0+FbgpMg8DO0naAzgJWBgRayPiNWAhMDZtGxgRiyK7Iu+msmOZmVkBujTmIGkIcCjwG2D3iFgJWQEBdkvN9gJeKtutLcU6irdViJuZWUH6VttQ0g7AncAFEfFmB8MClTZEN+KVcphK1v3E9ttvf/j+++/fWdpmZlZmyZIlr0ZEU2ftqioOkvqRFYZbIuLnKfyKpD0iYmXqGlqV4m3A3mW7DwZeTvHRm8R/neKDK7TPiYiZwEyAkSNHRnNzczXpm5lZIumFatpVM1tJwPXAkxHxj2Wb5gGlGUeTgbvK4pPSrKWjgDdSt9MCYIykndNA9BhgQdr2lqSj0mdNKjuWmZkVoJozh2OAs4HHJLWk2N8ClwJ3SDoHeBE4M22bD3wBaAXeAaYARMRaSd8DFqd2342Iten1ucCNwHbAL9PDzMwKot66ZLe7lczMuk7SkogY2Vm7qgekzWzr9v7779PW1sa7775bdCrWAwYMGMDgwYPp169ft/Z3cTAzANra2thxxx0ZMmQIXqSgd4sI1qxZQ1tbG0OHDu3WMby2kpkB8O6777Lrrru6MGwFJLHrrrvWdBbo4mBmH3Jh2HrU+rN0cTAzsxyPOdhWb8j0e4pOYbN6/tJTNstxe/rfrZo8L774Ym699Vb69OnDNttsw49//GPOOussmpubGTRoEAC//vWvufzyy7n77ru58cYbmTJlCvfeey8nnngiAHPnzuX000/npz/9KWeccUaPfodqrFu3jlNOOYVXX32VCy+8kLPOOmuL59ATXBzMrC4sWrSIu+++m6VLl9K/f39effVV3nvvvU73O/jgg7nttts+LA5z5szhkEMO2dzptuvRRx/l/fffp6WlpfPG3bB+/Xr69t38/3W7W8nM6sLKlSsZNGgQ/fv3B2DQoEHsueeene537LHH8sgjj/D+++/z9ttv09rayogRIzrcZ8iQIcyYMYPDDjuMgw8+mKeeegqAtWvXMn78eIYPH85RRx3FsmXL2j1GpbarVq3iK1/5Ci0tLYwYMYJnnnmm3c//9re/zahRoxg1ahStra0ArF69mi996UscccQRHHHEEfzHf/wHABdddBFTp05lzJgxTJo0iccff5xRo0YxYsQIhg8fzooVKzr9d+oqFwczqwtjxozhpZdeYr/99uMv//IveeCBB6raTxKf+9znWLBgAXfddRfjxo2rar9BgwaxdOlSzj33XC6//HIAZsyYwaGHHsqyZcu45JJLmDRpUrv7V2q72267cd1113HsscfS0tLCvvvu2+7+AwcO5JFHHmHatGlccMEFAJx//vl885vfZPHixdx555189atf/bD9kiVLuOuuu7j11lu55pprOP/882lpaaG5uZnBgwe39zHd5uJgZnVhhx12YMmSJcycOZOmpibOOussbrzxxoqzbjaNTZgwgTlz5jBnzhwmTpxY1eedfvrpABx++OE8//zzADz00EOcffbZAJxwwgmsWbOGN954o+L+XWlbSSnPiRMnsmjRIgDuvfdepk2bxogRIxg3bhxvvvkmb731FgDjxo1ju+22A+Doo4/mkksu4bLLLuOFF174MN6TPOZgZnWjT58+jB49mtGjR3PwwQcze/Zsdt11V1577bUPB6TXrl374euSUaNGsXz5crbbbjv222+/qj6r1H3Vp08f1q9fD2QXj22qvSmhXWlbSXnb0usPPviARYsWVfzPfvvtt//w9Ze//GWOPPJI7rnnHk466SSuu+46TjjhhKo/uxo+czCzuvD0009v1Hfe0tLCxz/+cUaPHs1P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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df2.plot(kind='bar')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Routing Emergency Supplies to Relief Camps" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A centralized location has been established at Nehru Stadium to organise the relief materials collected from various organizations and volunteers. From there, the relief material is distributed to the needy flood affected people.\n", "\n", "The GIS provided routing tools that can help plan routes of the relief trucks from the center to relief camps:" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "routemap = gis.map(\"Chennai\")\n", "routemap" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [], "source": [ "nehru_stadium = geocode('Jawaharlal Nehru Stadium, Chennai')[0]\n", "routemap.draw(nehru_stadium, {\"title\": \"Nehru Stadium\", \n", " \"content\": \"Chennai Flood Relief Center\"})" ] }, { "cell_type": "code", "execution_count": 77, "metadata": { "scrolled": true }, "outputs": [], "source": [ "start_time = datetime.datetime(2015, 12, 13, 9, 0)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "routes = arcgis.features.use_proximity.plan_routes(\n", " relief_centers, \n", " 15, \n", " 15, \n", " start_time, \n", " nehru_stadium, \n", " stop_service_time=30)\n", "routemap.add_layer(routes['routes_layer'])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "routemap.add_layer(routes['assigned_stops_layer'])" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "Once the routes have been generated, they can be given to drivers, and used to ensure that relief material is promptly delivered to those in need and help alleviate the suffering they are going through." ] } ], "metadata": { "anaconda-cloud": {}, "esriNotebookRuntime": { "notebookRuntimeName": "ArcGIS Notebook Python 3 Standard", "notebookRuntimeVersion": "10.7.1" }, "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.6.7" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": false, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": true, "toc_position": { "height": "687px", "left": "496px", "top": "156px", "width": "336px" }, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 1 }