Skip to content

Instantly share code, notes, and snippets.

@suriyadeepan
Last active October 28, 2021 11:01
Show Gist options
  • Save suriyadeepan/aaba8f80208d1867a365af72ceb74dfa to your computer and use it in GitHub Desktop.
Save suriyadeepan/aaba8f80208d1867a365af72ceb74dfa to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"plt.style.use('ggplot')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAD4CAYAAAAEhuazAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy86wFpkAAAACXBIWXMAAAsTAAALEwEAmpwYAAA+yklEQVR4nO3deVyVZfr48c/9ALK4oIdFZFUEzTU1cKu0lGwyW8bUbGoss2y+VjZaM+3NTOZ8bVHrO03lr8WmbLHNrKwxUdOKVMosc0dBBRFkdWEReO7fHw8cQEABgcPhXO/XqxecZ73OCa9zP/eqtNYaIYQQLsVwdABCCCFaniR/IYRwQZL8hRDCBUnyF0IIFyTJXwghXJAkfyGEcEHujg6gvo4cOdKo8/z9/cnKymriaFqGM8cOEr+jOXP8zhw7tJ74g4OD69wnJX8hhHBBkvyFEMIFSfIXQggX5DR1/kI4mtaaoqIiTNNEKeXocM4pIyOD4uJiR4fRKM4cO7Rs/FprDMPAy8urQX+XzZb8P/jgA9auXUunTp0AuOmmmxgyZAgAK1asYN26dRiGwfTp0xk0aFBzhSFEkykqKsLDwwN3d+coM7m7u+Pm5uboMBrFmWOHlo+/tLSUoqIivL29631Os/4VX3311Vx77bXVtqWmppKQkMCiRYvIzc1l3rx5vPDCCxiG1ECJ1s00TadJ/MK1uLu7N/hJo8UzbmJiIiNHjsTDw4PAwECCgoJISkpq6TCEaDBnqOoRrquhf5/NWoxZvXo1GzduJDIykmnTptGhQwdycnKIjo62H2Oz2cjJyalxbnx8PPHx8QAsWLAAf3//Bt/fLDhFwQdv4DtoOB69+jb+jTiIu7t7o953a9HW4s/IyHC6kr+zxVuVM8cOLR+/p6dng/69nVd08+bNIy8vr8b2qVOnMm7cOCZNmgTA8uXLeeutt5g1a1a9rx0XF0dcXJz9dWMGTOhTJzDfew1lgmELbPD5jtZaBoo0VluLv7i42OH10NHR0ezbt69ex7q7u1NaWtrMEZ2/hQsX0r59e/70pz/Zt7m7u7N7924eeugh8vPzOX36NMOGDeOZZ55h+fLl/Prrr8yfP79R90tISOCVV17hrbfeapL4Dx8+zPDhw5k9ezYPPvggAPn5+QwcOJBbbrmlQXHW5/9vXccUFxfX+Pd2tkFe55X8H3/88XodN3bsWJ5++mnAKulnZ2fb9+Xk5GCz2c4njLp5+1g/C042z/WFcHGlpaXNVsJ94oknuPPOO7nyyisB2LVrV7PcpymEh4ezdu1ae/L//PPP6dWrl4OjOrtmq/PPzc21/75lyxbCwsIAiImJISEhgZKSEjIzM0lPTycqKqpZYlCGG8qnPRScapbrC9Ea/Pbbb0yYMIG4uDhmzJhhfxr/+eefiYuL44orrmDevHmMGTOm1vMnTZrE/Pnzufrqq7nkkkvYvHkzYPVumjNnDmPHjmXcuHF8//33gPUkf9tttzF58mRuvPFGli9fzu23387UqVMZNmwYS5cuZcmSJYwbN44JEybYc8E777zD+PHjiYuL484776SwsPCs7yszM5Nu3brZX/fp08f+e0ZGBjfffDMXX3wxTz31lH37Qw89xFVXXcXll1/Oc889Z9++fv16Ro0axZVXXslXX31l356bm8vtt99OXFwcEyZMYOfOnYBVYM3Pz0drTb9+/fjwww8BmD17Nhs3bqwRq7e3N9HR0fzyyy8ArFy5kmuuuca+//Dhw0yePJm4uDimTJlCWloaAIcOHeKaa66pVkCu8PLLL9s/r6rvpak0W6XUsmXLSElJQSlFQEAAM2fOBCAsLIwRI0Ywd+5cDMNgxowZzdrTR7XvgJaSv2hi5vuvog8nN+k1VVgPjKl3Nvi8P//5z8ybN48RI0bw7LPPsmjRIp588knuu+8+nnnmGWJiYvjnP/951muUlpayatUq1q5dy6JFi1i+fDlvvvkmSinWrl1LUlISN910E99++y0A27dvJz4+ni5durB8+XL27NnD6tWrKS4u5uKLL+aRRx7h66+/5m9/+xsfffQRd955J1dddRU333wzAE8//TTvvfcet99+e50x3XnnnUyZMoWYmBhGjRrFjTfeiK+vLwA7duxg9erVtGvXjlGjRjF9+nRCQkJ48MEH6dKlC2VlZdx4443s3LmTyMhI/vKXv/DBBx/Qo0ePatVLCxcupH///rzxxht899133HfffaxZs4aYmBgSExMJDQ0lIiKCLVu2MHnyZH766ScWLFhQa7zXXXcdK1euxN/fH8Mw6Nq1KxkZGQA89thjTJ48mSlTpvD+++/z+OOP88Ybb/DEE08wbdo0Jk+ezJtvvmm/1oYNG0hOTmbVqlVorbntttvYtGkTw4cPP/cfRD01W/K/995769w3ceJEJk6c2Fy3rsZo34lSKfmLNur48ePk5+czYsQIACZPnsxdd91Ffn4+p06dIiYmBoDrr7/e3oGiNuPHjwdg4MCBpKamAlbPvOnTpwMQFRVFaGgoBw4cAGDUqFF06dLFfv7IkSPp0KEDHTp0oGPHjlxxxRWAVVqvKE3v2bOHZ555huPHj3Pq1ClGjx591vd24403Mnr0aL755htWr17NsmXLWLNmDQCXXHKJfQxRr169SEtLIyQkhM8//5x33nmHsrIyMjIy2LdvH6ZpEh4eTmRkJAA33HADy5YtA6xaiVdffdV+zdzcXE6cOMGwYcPYvHkzqampTJs2jWXLlpGenk7nzp3x8fGpNd7LLruMZ555hoCAAK677rpq+3766Sdee+01+/0rnlYSExPt97/hhhvs7QMbNmxgw4YNjBs3DoCCggKSk5OdI/m3Fqp9B6nzF02uMSX01mLOnDn89ttvBAUF8fbbbwPQrl07ANzc3OrVSHxmAqw4H8AwDDw9PQGr+2FZWZn9vq+//jr9+vVj+fLl/PDDD+e8T1BQEFOnTmXq1KmMGTOGPXv21Hq/0tJSDh06xJIlS1i1ahWdO3fmz3/+M0VFRee8R22GDRvGm2++SWhoKA8++CBfffUVq1atYujQoXWe065dOwYOHMiSJUv49ttv+fLLL+t1r9q6aGqtueeee/jjH//YqPjro82PrDI6dJQ6f9FmderUCV9fX3s9/ccff8zw4cPx9fWlffv2bN26FbDqoCssXryYNWvW2BN/XYYOHcqKFSsA2L9/P2lpafTs2bPRsZ48eZKuXbtSUlJiv+7ZrF+/npKSEsCq/8/NzSUoKKjO40+cOIG3tzedOnXi2LFjrF+/HrCeWg4fPkxKSgoAn376qf2cYcOG8cknnwBWLyCbzUbHjh0JCQkhJyeH5ORkIiIiGDp0KK+88so5S9533XUXjzzySLWnIrDaOiv+H3zyyScMGzYMgNjY2GrbK1x22WUsX76cU6es3JWent7kPedco+RfKMlftA2FhYVcdNFF9tczZ87k+eef56GHHqKoqIjw8HAWLVoEWEn+/vvvRynFiBEj6NixY4Pudeutt/Lwww8zduxY3NzcWLx4sb1E3xh/+ctfmDBhAn5+fgwePJiTJ8/+RL5hwwaeeOIJ+z0fe+wxAgPr7rLdr18/+vfvz6hRowgODiY2NhYALy8vnnnmGaZNm4a3tzfDhg2z33vu3Lncf//9xMXF4eXlxfPPP2+/3uDBgzFNE7C+CP/3f//Xfs269O7dm969e9fY/tRTTzFnzhxeeeUVbDYbixcvBuDJJ5/k7rvv5qWXXrJX8QCMHj2affv22WdI8PHx4V//+leTjptRWmvdZFdrRo1dzMXzs3co+Poz3F5c3sQRNb+21k/e2ZwZf0FBQZ31va1RcXGxPXG++OKLZGZm8uSTTzo4qvpxljEKdXFE/LX9fTZbP39noNp3hOJCdFkZyoknihKiodasWcMLL7xAWVkZISEh1Uq1QrT55G90KH/ULTgFHTs5NhghWtD111/PhAkTHB2GaKXafIOvat/B+qVQevyI8+MkNaTCRTX077PNJ3+jfXlp/5Q0+orzU9GlUIjWprS0tMGDZdt8tY+U/EVT8fLyoqioiOLiYqeY3tnT09NpV8Ny5tihZeOvupJXQ7T55F9R569PnaL1/3MVrZlSqkErJTmaM/e2cubYwTnib/PVPqp9eYOvlPyFEMKuzSd/e28fqfMXQgi7Np/8aecJbu5S8hdCiCrafPJXSoFPeyn5CyFEFW0++QPgI/P7CCFEVS6S/NujT0m1jxBCVHCZ5C8lfyGEqOQSyV/5dAAp+QshhJ1LJH8p+QshRHWuk/wLTsrEXEIIUc5Fkn8HKCuD0847V4gQQjQlF0n+7a2fUu8vhBCAiyR/5VMxs6fU+wshBLhI8peSvxBCVOciyV9K/kIIUZWLJH+r5C+jfIUQwuIiyV9K/kIIUZVrJH9vqfMXQoiqXCL5Kzc38PKWkr8QQpRr1jV8v/rqK1avXo1hGAwZMoRbbrkFgBUrVrBu3ToMw2D69OkMGjSoOcOw+LSHAkn+QggBzZj8f/vtN3788UeeffZZPDw8yM/PByA1NZWEhAQWLVpEbm4u8+bN44UXXsAwmvkhxKcDukCqfYQQApqx2ufrr7/muuuuw8PDAwBfX18AEhMTGTlyJB4eHgQGBhIUFERSUlJzhVFJSv5CCGHXbCX/9PR0du/ezfvvv4+Hhwd//OMfiYqKIicnh+joaPtxNpuNnJycGufHx8cTHx8PwIIFC/D3929UHO7u7vj7+5PX2UZZZjp+jbyOI1TE7qwkfsdy5vidOXZwjvjPK/nPmzePvLy8GtunTp2KaZqcPHmS+fPns3//fhYvXsyLL75Y72vHxcURFxdnf52VldWoGP39/cnKysJ080Afz2/0dRyhInZnJfE7ljPH78yxQ+uJPzg4uM5955X8H3/88Tr3ff311wwdOhSlFFFRURiGwYkTJ7DZbGRnZ9uPy8nJwWaznU8Y9dO+A0idvxBCAM1Y5x8bG8uOHTsAOHLkCKWlpXTs2JGYmBgSEhIoKSkhMzOT9PR0oqKimiuMSt7toagQXVbW/PcSQohWrtnq/MeMGcNLL73E/fffj7u7O3fffTdKKcLCwhgxYgRz587FMAxmzJjR/D19wCr5g9XXv0On5r+fEEK0Ys2W/N3d3Zk9e3at+yZOnMjEiROb69a1qxjlWyDJXwghXGKEL4CqmNZZ6v2FEMJ1kr99cjfp6y+EEK6U/KXkL4QQFVwo+Vslfy0lfyGEcKXkL9M6CyFEBddJ/p5e0NkGh/Y7OhIhhHA4l0n+SilU38HondvQpgz0EkK4NpdJ/gD0G2w1+Ka0wCyiQgjRirlU8ld9B4FS6B0/OzoUIYRwKNdK/h06QUQUesdWR4cihBAO5VLJH0D1GwzJe2VVLyGES3PB5D8ETBN2/eroUIQQwmFcLvnToxd4+0jVjxDCpblc8lfu7nDBQPSOn9FaOzocIYRwCJdL/lBe9ZNzDI6mOToUIYRwCBdN/oMBpOpHCOGyXDP5+3eFbmHobZsdHYoQQjiESyZ/ADV4BOzdgT5x3NGhCCFEi3Pd5H/RCNAmetsmR4cihBAtzmWTP2GR4BeI3vqDoyMRQogW57LJXymFumgk7PpFFngRQrgcl03+UF7vX1aK/jXR0aEIIUSLcunkT2Rv6GxDb01wdCRCCNGiXDr5K8NADR4OO7aii4scHY4QQrQYl07+UF71c/o0/CYDvoQQrsPlkz+9+kP7jujtUu8vhHAdLp/8lZsbhHZHyzw/QggX4vLJH0AFdoOMI44OQwghWowkf4CuwXDyuKzuJYRwGe7NdeHFixdz5IhVmi4oKMDHx4dnn30WgBUrVrBu3ToMw2D69OkMGjSoucKoFxXQDQ1w7ChERDk0FiGEaAnNlvznzJlj//2tt97Cx8cHgNTUVBISEli0aBG5ubnMmzePF154AcNw4ENIYDcAdMYRlCR/IYQLaPaMq7Xmhx9+4OKLLwYgMTGRkSNH4uHhQWBgIEFBQSQlJTV3GGcXYCV/MtMdG4cQQrSQZiv5V9i1axe+vr5062Yl2JycHKKjo+37bTYbOTk5Nc6Lj48nPj4egAULFuDv79+o+7u7u9fr3GN+AbQ7notvI+/THOobe2sl8TuWM8fvzLGDc8R/Xsl/3rx55OXl1dg+depUYmNjAfj+++/tpf6GiIuLIy4uzv46KyurUTH6+/vX61zTrytFhw5Q0sj7NIf6xt5aSfyO5czxO3Ps0HriDw4OrnPfeSX/xx9//Kz7y8rK2LJlCwsWLLBvs9lsZGdn21/n5ORgs9nOJ4wmoboGy8peQgiX0ax1/tu3byc4OBg/Pz/7tpiYGBISEigpKSEzM5P09HSiolpBI2tANziRjy4scHQkQgjR7Jq1zr+2Kp+wsDBGjBjB3LlzMQyDGTNmOLanTznVtby7Z2Y6RPR0dDhCCNGsmjX533333bVunzhxIhMnTmzOWzdcRXfPzHSUJH8hRBvn+CJ3a2Hv7inTPAgh2j5J/uWUpxd0tklffyGES5DkX1VgN7QkfyGEC5DkX4UK6CbVPkIIlyDJv6quwXA8D10k3T2FEG2bJP8qVGBFo+/RGvvM79ZgrljWwhEJIUTzkORfVR09fnTaIfQ7L6NXf4I+XeyAwIQQomlJ8q+qSl//CrqsDPPNF6DMhLJSSNnnqOiEEKLJSPKvQnl5g28XdMo+dFkZAPrrTyFlH+oPd1mv9+10YIRCCNE0JPmfQfUdDD9vwnxkJubKd9GfvQtDRqJG/w6Cw9FJkvyFEM5Pkv8Z1G2zMe5+FAKC0F+8D15eGDffhVIKFdUX9u9Gm2WODlMIIc5Lsy/m4myUYcCgYbgNGoZOTQY3D1SnLtbO6D6w8b+QdgjCejg2UCGEOA9S8j8LFdoD1S208nV0PwCp+hFCOD1J/g1hC4Au/iCNvkIIJyfJvwGsev8+6H070Fo7OhwhhGg0Sf4NFd0X8nIgO9PRkQghRKNJ8m8gFdUXkHp/IYRzk+TfUCHh4O0j9f5CCKcmyb+BlOEGPfugd25Dnzrp6HCEEKJRJPk3gnHpOMjNwnxyNnrvb44ORwghGkySfyOoISMwHnwG3D0wn3sM86Ol6NzsOo/X6amU/fV2dNrBFoxSCCHqJsm/kVSPaIzHn0eNvBy9egXmgzMoe+Ef6N9+qnGs3rkNcrOsSeKEEKIVkOR/HpSXN8Zt92HMfwV11SRIO4j5f/PQOceqH3h4PwB6ywb08byWD1QIIc4gyb8JqMBgjN/fgnH3I6BN9P491fbrQwcgMBhKS9EbVzsoSiGEqCTJvymFdAePdpBcmfx1SQkcOYS6aAT0G4z+5it0aanjYhRCCCT5Nynl7g7hkejkvZUbjxyCsjII64kx9hrIz0FvTXBckEIIgST/Jqd69IaD++2le33Iqu9X4ZHQbwgEBqPXfeHIEIUQQpJ/k4vsBSWnoaJb5+ED4OUNAUEow0CNmWAtCCNrAQshHEiSfxNTPXoBoMvr/fWhAxDWw1okBlAjx0A7T/S3XzssRiGEaLaVvFJSUnj11Vc5ffo0bm5u3HHHHURFRaG1ZunSpfz88894enoya9YsIiMjmyuMlucXCB194cAe9Kgr4XAy6tJx9t3K2wd10cXoLRvRU2agPL0cGKwQwlU1W8l/2bJlTJo0iWeffZYpU6awbNkyAH7++WeOHj3K//3f/zFz5kxee+215grBIZRSENnbavTNSIfTxRBe/ctNXXIFFBWif/reQVEKIVxdsyV/pRSFhYUAFBQU0KWLtQ7ujz/+yKhRo1BK0atXL06dOkVubm5zheEQqkcvOJqG3v2r9fqM5E90X+gagv5ujQOiE0KIZqz2ufXWW5k/fz5vv/02pmny1FNPAZCTk4O/v7/9OD8/P3JycuxfDhXi4+OJj48HYMGCBdXOaQh3d/dGn9tYxYNiyft0GW4Jayn1aId//8FWN9AqTo27lpNvv0zn4gLcQ8JrvY4jYm9KEr9jOXP8zhw7OEf855X8582bR15eXo3tU6dOZfv27dx6660MHz6chIQEXnnlFR5//PF6XzsuLo64uDj766ysrEbF6O/v3+hzG0t3CQSlKE3ZBxFRZNfyGekLh8M7S8j54kOMG26t9TqOiL0pSfyO5czxO3Ps0HriDw4OrnPfeSX/syXzF198kenTpwMwYsQIlixZAoDNZqv2oWRnZ2Oz2c4njFZH+bSHoFBIP1yzyqfiGN8uMDAWnbAWfd3NNZ4MhBCiOTVbnb/NZmPnTmu1q99++42goCAAYmJi2LhxI1pr9u7di4+PT40qn7ZARVpdPs9s7K3KuOQKOJ6HTljbQlEJIYSl2Yqbd911F0uXLsU0TTw8PLjrrrsAGDx4MFu3bmX27Nm0a9eOWbNmNVcIjhXZG75fi4qIqvuY/hdB7wHod19Bd7ahBsa2XHxCCJemtNba0UHUx5EjRxp1nqPq3nTJafS2zaiYS6zun3UdV1iAufAxOHII48//QPXqZ9/XWuoNG0vidyxnjt+ZY4fWE//Z6vxlhG8zUR7tMGIvPWviB2vQl3Hf38AvEPPFeejU5BaKUAjhyiT5twKqoy/GnH9AO0/MN56vMeWzmbDWPkGcEEI0BUn+rYSyBWDcdBccTkbHr7RvN7/9Gr30Bcz3X3VgdEKItkaSf2syZAQMGob+7D10Zjqn9/yGfvcVaOcJSbvQx9vWSGghhONI8m9FlFIYf/gTuLlhLn2B/KcfgS7+GLOfAK3R27Y4OkQhRBshyb+VUV38UBNvhaSdmAUnMWY9Ar36Q0AQ+ucfHB2eEKKNkGGlrZAa/TvIysB3+KWcCO1ubRs8Ar32c3TBSZRPBwB0aQmgmnx0sM7LQXVuW6OuhRDVScm/FVKGgTF5Op6Dh1duGzICykrRv/4IWAvDm08/hPnvp5r03jo1GfMvt6GTdjbpdYUQrYskf2fRoxf42tA/bwJAf7QUUvbBjm3o43lNdht96ID188CeJrumEKL1keTvJJRhoAYPh99+wtz0jbUI/IAY0Cb6lyZsCM5Mt36mHWq6awohWh1J/k5EDR4Op4vRbzwPEVEYsx4G/67orU3YEFye/PURSf5CtGWS/J1Jr/7g0wG8vDDu+ivK3cNqC9j1C7rgVJPcQleU/I8cQptmk1xTCNH6SPJ3IsrdHePOBzBm/w0VYE2RrQaXNwRv/7HWc/Spk/WeGkJrDZlHwMvbWns4O7PJYq/znify0cn7mv0+QojqJPk7GdV/CCqqT+WGyN7g26XWMQC65DTm4icw//kAOr8eo4NPHofCAtSAGOt1C1T96M/fw1z4GE4yuawQbYYkfydnbwje/hP6dHG1ffr91+BgEpSVoTdvOPfFMsqnzR40zDo/7WCD4zHXft6gBmh9OBmKC+FEXoPvJYRoPEn+bUBFQzA7f7ZvMxPWoTf+F/W7G6BHL/QP6855HZ1pJX8V3hNsAQ0u+Wut0SvfxVyzssY+c/MGzG++rHG8vVdR9rEG3UsIcX5khG9b0GsA+LTHXL0ClZEOCvTKd6D3ANT1t8DG1dZqYYcO1LmmMGD19FEG+AdCcDi6od09T+RB4SlrZtIzqnH0fz+B/Bz06Ksq1zjIzbaOB6t9oUevht1PCNFoUvJvA5S7O2pknDXz50dL0R8uhY6dMe58AOXmhoq9BNzc0T+sP/uFMtPBP9DqRRQSDkcPo8vK7Lv1yeNnr5s/Wl5tVHAScitXMdIlJZB+CE7kV9vOkcpqJS0lfyFalJT82wjjxhnoSbdByWkoKQEvb5SHBwCqQye4MBa9+Rv0DbfWOReQzkyHwG7Wi+AIKC2FY+kQFIrOysB84m7UtTdZVUm1nZ+RVvnicAr0Km+YPnIQKr5EDu63qpSg8snC3R1yJPkL0ZKk5N+GKDc3lJc3qmMne+KvYIy43Cp5V2kXqKqim6cqT/4qJNzaUZ6g9fpVUHIa/eWH6JPHaw/gaBq4WV8sVZej1Acru5rqlKTK49MOgq8NuoagW6BbqRCikiR/V9H/IujQCZ1QR8NveTdPAssXfA4KA6XQaQfRRQXob9dYdfJFhej/flzrJXRGGgSFQEAQHK6yFvGh/eDdHkK7ow9W9unXRw5BSDj4BUqDrxAtTJK/i1DuHqiho9DbNqO3JtQ8oLybp73k7+kJ/l2tkb4J66DwFMbUO1HDLkOvW4XOza55jaNp0DXESvKpKfbN+tABCI9ERUTBwf1WryCzDNIPoYIjULYAyJGSvxAtSZK/C1FXT4HwSMyXF2CuWGYl4HIV3TztJX+AkAh0Wgp67ecQ2RsV2Rt17U1gmugv3q92bV1aCllHUUEhqNAekHkEXVRobT+cbPUy6h5lPWHkHIOsDDh9urzkHwAFp9CFBU3+nrXWmBv+K3MVCXEGSf4uRHXqjPGXf6IujkN/+QHmi/PLF4ShejfPiuODI6zSfGY6Ku46a1tAEGr079DfrUEfrdLAm3XUatTtGoIK6wFaU3roABxNhdISCO+Jioi2jk1JsrclqJAIq9oHmmU6Cb3qA/Syl9Bfr2jyawvhzCT5uxjl0Q51672om2bC9h/Rq8uTYpVunnbBYdZPm781gVzFNa6eDIYbuuqgrfIvAhVkVfsAlKTss88rpCJ6QmgEuLmhDyZVjh7uFmZV+0CT9/gxE9ZZ4x2UYV+nQAhhka6eLkgphRozAXPvDvQXy9Gxl1Tv5llxXHgkGlCXX41yc6vc3qkLXDAA/dtW+zZ7N8+uIeDtA17elCYnWd1O23lC12CU4WZVJR1MQrXvCH6BKC9vdHnJX2cfQzXRe9S7fkG/9S9roFtET2sJzJKSGr2ghHBVUvJ3YWrqHeDhgbns5WrdPO37u4VhPPg06orra57bbwhkpKGPHbU2HE2Djr6o9h1QhgGh3SlNSbJK/mE9rMQPVqNvSnnJPyTCOrdTZ6uvfxNV++jiIsxXFkDXEIxZD6N69LKqpI40fK4iIdoqSf4uTHX2Q/1+Guz6pXo3z6rHRPWpVuq3b+9/EYC99K8revpU7A/tQenBJDiUbM0VVCEiyhoBfOSQfSyBMgxr4FcDq33MhHWUPTKz5pTQO36GgvLeST4doPz+VccbCOHqJPm7ODX6SvucOmeW/M+qazAEBKF/+8l6nZFm1fdXCOtu9d4pLoSIyuSvukdVHhMcUfm7LaDeA710UQHm64vRS5+HY0fRG/9bff+2zdaiN9H9rA0BQdY4g8NS7y9EhWar809JSeHVV1+lqKiIgIAAZs+ejY+PDwArVqxg3bp1GIbB9OnTGTRoUHOFIc5BGW4Yt87G/OgN6HlB/c9TCtVvCDphrbVWwIl8a4BXxf7QHlTMAqTCqkwmFxxhVfGUllo9fSqO8QtA/1b76OOq9PFczKcfhmNHUdf+AY6mobcmoG/+E8rdA11Wht6eiBpwkX0aC6UUhEeed8lfl5VBwUlUR9/zuo4QrUGzlfyXLFnCzTffzMKFCxk6dCifffYZAKmpqSQkJLBo0SIeffRRXn/9dUxZLtChVEg4bvf93WqEbch5/S+y1hT+bo31ukq1DyERoJSV6Ct6DYHV4BrSHQyj2pcFtkBr1s+SkrPeU8d/DseOYsx9EuOaqajho6HgFOzYZh2wfzecPIEqX5PAft/wSEhNqTZRXUPpj9/EfPRP6KKmH48gREtrtuR/5MgR+vSxJvYaOHAgmzdvBiAxMZGRI0fi4eFBYGAgQUFBJCUlne1SorW6YAC4u1d2+axa8vf0wq1bGARHVO8+Cla30QExKI92lRsr+vpXnfXzDPp0Mfrb1TBoKOqCgdbGPhdC+47oxI3WMb9stuYX6jek+snhkdakd0dTG/VW9fFc9DdfQeEp9Lb6L1YjRGvVbNU+YWFhJCYmMnToUDZt2kR2tjUdQE5ODtHR0fbjbDYbOTk5Nc6Pj48nPj4egAULFuDv79+oONzd3Rt9rqM5Q+y5/QZz+pdEcHPD/4L+1WYMLZv1IGXKoN2Z72Ha/9S4zunIKHIB39LimseXK4z/guMnT9Bl4i3Vjjk+8nKKvo3Hr2MHsrf/iNvAi+gSFl7t3NILY8gGOuRk4n1heWN1yWkwDJRb7f8Mqn7+J75cTkFZKapTZzy2/UCXCZPO9dE4nDP8/dTFmWMH54j/vJL/vHnzyMvLq7F96tSp/M///A9Lly7l448/JiYmBvc6phGuS1xcHHFxcfbXWVl1lwjPxt/fv9HnOpozxG72GgC/JIJ/ENln/C349xtMblYW1OM9aHdPAPKSkzCCu9fcrzXmyvcgJIL8rmGoKtfUA2LRaz7j2HuvodNTMcdMqPG5aU8faNeOEzt/4dSAWHRZGeb8uRDQDbf/eajWmCo+f33yOOaXn6BiLoEu/pyOX8mxlAPWVNmNoPftxPx0GcbVk1F9BzfqGvXhDH8/dXHm2KH1xB8cXLMHX4XzSv6PP/74Wfc/9thjgFUFtHWr1SXQZrPZnwLAehKw2WznE4ZwIDXgIvSHb1Svv2+MLn5WG0FdPX727YDUZNS0eypXAqvQuz906oz+4gMrpoFDa8ZpuEFYpH3Esd7wlTXz6OFkdHoqqltonaHptV9AcSFq/GRrPeTVn6B/SkCN/l2D3qIuLkZ/+rY1V5LWmMdzMf7+Yq1daYVobs1W55+fnw+AaZp88sknXHHFFQDExMSQkJBASUkJmZmZpKenExUVdbZLidYsKBT6XGjv999Yyt0DfLvYp3bW2zZTtvAxzG++srp2rv0C2ndEDR1d81zDzSqVl5VCRBTKVvvjtgqLhEMH0CeOoz97DyJ7g0c7dHzNNYcr6MIC9LrPYfBwq3dSWA9rcZstGxv0/nRhAeZTc9Dxn6Euuwo1Y47VUylhbYOuI0RTabY6/++//57Vq1cDMHToUC6//HLAagsYMWIEc+fOxTAMZsyYgWHIcANnpZTCbe68prmYXyA65xjm5g3oNxaDpxd696/oj5bC6dOoK39vTTVdWxyxl6LXfYG6sGap3y48Er75EnPp89YgsD/ejV6/Cv3DevT1t9TahVOvX2Ude/UU6z5KWVNjf/4eOjcb1cWvXm9Nb9kIR1Mx7n4ENWi4Na31ulXoz99HDxuNalf7+xKiuTRb8h8/fjzjx4+vdd/EiROZOHFic91aOCllC0D/shm9Zzv06o9xz2OQfhi94Sv0gb2oy6+u++SeF2Dc9deavXyqXj+ipzX2YPuPqMuuQoV2h7jr0BtXo9d/aU1XXYVZcAr99adWz6SIyqdTNXQU+rN30YnfosZdX6/3pr+Pt7q/Xmh1QVVKYdxwK+Zzj6K/+RI17vf1uo4QTUUmdhOth1+gNcf/gBiMPz1olYZ79LLm5jkHpRTEXHL2g4LDrW6gnp6oa2+2zusWCgNjrSeA302sVgIvWPUBnDqBccaXguoaDBFR1gC30O7QyRdsAdZUErXQ6YcheS9q8u3V2itU7wHQbzD6q4/Ql4xD+bQ/5/sU1WnTRH/+PqpXP1SfCx0djlOR+hbRaqiRY1DX/sGajK0ZqkGUuwfq6ikY0+5BdazsqWOMux5OHkdvWm/fpgtOUrDyfbhwKKp7dM1rjRwDaQcxFz+B+Y/7MB+6A12+GtqZ9PdrrS6lw2u2Vxi/nwYnT1jVS/WgTdOaEruR4xXanPRU9BfvYy7+G+Z/P7bWohb1IiV/0WqobmGoa6Y26z2M2q7fq79Vkv/oTXRnP9TAWHT8Z+haSv32WC+/2uqmeTwXnZeDXvo8eu3nqD/cVe04XVZmfakMiLGmwj7zOhE9oe8g9Ldfo6+aZE1yVwudvNeq/tr+ExzPA28fa8bVKlNkuCJ9YLf1S69+6I//g07Zh3HbfSgvb8cG5gSk5C9cnlIKY9bDENAN88WnMFe+i47/DM/hl1WfkfSMc1RQCKpXf4yho6wG54S16IKT1Q/csRXyczFGjq37/peMs7q47txW5zHm2/9G/5iA6j0ANe0eaOeF+a956OO5jXnLbUfyXvBpjzF3HmrSbbD1B/SauntviUqS/IXAamw2/rrASuJfvA+FBbS/8fb6nz/2WiguQn8XX227mbAWOnSCgTF1nztoGHTohPnd17Xu16UlcOQwasx4jJl/wbh0HMa9j8GJfGspztPF9Y6z2nWPHaXs3/+0eleZjZ/zyJF08l6rXcgwMK6cCF2D0anJjg7LKUjyF6Kc8vRE3XE/6qaZqEm34dG9/uNPVERPiO6LXveFPZHqrAz4ZQtq+GU15jeqdq6HB2rE5bBtC/p4Xs0Djhy2xjBUmR1VRURh3HE/pOxD/+df9Y6zgi4txXz1Odi2Cf3aQsx/3GfNjnqOOnNdUoJuJRMx6qJCSDuE6tG7cmPXEEiX9pD6kOQvRBVKKYwxE6xSZAMZY6+1qm+2bUGn7MNc8FfwaIcafdW573vpOCgrRf+wrsY+fdgqyaqwHtXPGTwcde0f0Fs2orf+0KBY9WfvWj2QZv4VNfOvYJZhvrzAPkNrredojfnELPTqTxp0r1qvlXEE89van3Tq7eB+0CYqsrI3mAoKhWPpTvsk05Ik+QvRVAYNA1sA5sf/wXz2YXD3wHjwmeqL3NRBdQuDqL7ob9fULH2nJkO7djXWWAZQV02CsB6Y7y1BF5yqV5h696/o/36MuuQKjNhLrP/+/iL0vAC98l10cR3VSMfzICsDvW9nve5z1hhWf4J+68V6x1zrNQ7ssX7pXqUrcFAIlJZCVtMsCdqWSfIXookoNzfUmAmQeQRCumM88qx9qcp6nX/pFZCRZs1jVIU+nAwh3e3rIJ95T+OP90B+HnrF2+e8h87Lxnx9MQQGo6beWf06N9xmralQ13QXGWnWz7TzXwvZ/gVScc3GXCN5DwR2q9Zt1/5Fex7XdRWS/IVoQmrMBNQd92M8ML/Wrp1nPfeiS8DbB51QWfWjtYbDB2pU+VQ7r0c0aszVVlfQ/bvrPE7/sgXzH/dBwUmMOx9AeXpVv050X7hwqFUqP3G85vkV4xhyjllLdJ6Fzj6G+d0azFefw1z5bvV9J/Lt6yro86mfT95bcwBgV2uCPn1Ukv+5SPIXogkpDw+MRs7Vozw9Uf0vQm//sbJRNSfLWqnsLMkfQF1/M3Txw/zPv2pU2+iS05jvLsF88Sno4ofx2GKrgboWxu+nQVER+ssPa+6smlCPHKozFvO9/4f50Az0f/5lNSJ/9WH16p39u6pcs5GL6+RkQV4OVG3sBespoEPHel/X3LwB89WFmOu+QB9Odqm2Akn+QrQmA2OsuvXyqacrFp2vtg5yLZSXD8a0e+FoKnrZS/Z2A11Whvn/nkWvX4WKuxbj4efOOn21CglHjRyD/maV1VupCp2RBt7WOtz6LMlfb/8Rovpi/P1fGHOfsqbB3rG1cv++Xdbynv5dGz9SOXmvFW9kLVN/dA2pd8lfr1mJTvwW/d7/w3zyPsyn5ja666yzkeQvRCui+l0EykD/mghg9VlXypoU7pznDkZNmIretN6qAtIa/fa/Ydtm1E0zMW68w1pD+VzXufYmKC1FJ35bfUfGEeg9wGp8riP56+JiyMpA9bnQGn3cs7dVEi9/PwB63w6rkTa0R/WniQbQB/ZYXyChNZ+IVFBIjTp//WsiOnlf9W2lJZCWghp3HcaC16w2kMPJ1nTfLkCSvxCtiOrYCXr2Rv/6I1De2BvQrd7TFagJN8KAGPT7r3F88d/R38db8xmNmVD/GGwBEBCETqlMlrqsDI4dtZ4auoXXXfI/ehi0tk87oQw3VP8Y9PafrKkuiovh0H5UdB8rSWemW9duIJ28B8J71v5l1jUU8nPt7RK6tBTztYWYH75e/bgjh6yeQRFRKL9AjLHXoC4dh/760xpfFG2RJH8hWhk1MBYOJqHzsq3VxsK61/9cw8CYMQc62yj6dg1q1JWo625ueAzdo6FK8ic7wxpo1jUEFRwOaXWU/Cu2B1f2clIXxsKpE3BgD6TshbIyVFRfayGgslI4o3qpLvrYUfTuXzETv4OD++uc7dXe46fiqSJpJxQWQEoSurS08noHraq1qlN4qEnTwbcL5psvoEtK6hWXs5LkL0QrowbGAqC3fGuVts9R31/j/PYdMe77Ox1uuxd1859qLntZH92jICercu6g8p4+qmswhIRbXUJPnah53pGDVnVM1TEJfQeDmxv6ly2VXTx79qmSpM9d729+8yXmIzMxFz6G/n/PwOliVN9BtR8cVNHjp7xHUUWVU8lpexsKYLWreHlDQJB9k/Jpj/HHWXDkUO2N3m2IzOopRGsTHG6tarbmU6DmyN76UN1CaT9gEIWNXERcdY+2Fr5JToILYysbULuGogoLrX1ph6BXv2rn6SOHISi02rrEyqc99OpvJWGbP4REoNp3QFdJ0mdbgc3cvAH97hJrnYdx10NHX+jUpVr//moCuoJh2Ev++tcfIbQ7pKag9++yPzHog/utqqMzZlJVA2OtOZ5Wf4IeP7nWqiWddgj9w1r0oQMYdz2Ial/7Wg6tmZT8hWhllFKogTFWV0aotVGz2YX3tBqeD5ZX/WSkgU8Hq/G2vEqn1nr/tIOo4JqN02pgDKQfhj3brfEEYCXMjr5nbfTVvyRaS3pG97MW+LlgICokou7ET/l60P5B6IxUa2xCRpo1fYZfICRZ4yB0WRmkptQ9a+tFF1tPCmdMEqezMih7ai7m3++xVnnb9Qvs/a3OWFozSf5CtEIVVT906Aj1XCe4Se/v5Q3dQtEpSUD5AK+gEKsKyeZvVZeckfx1YQHkHIPgsJrXG1hesi8thai+lTu6hdbZ3VOnJmMueRrCIjHueaxhYyeCQuBoGnq7VeWjBsSgel6A3r/L6gZ7NNVK7hF1VKlVPB0c2Fs9pm+/tgbd3XgHxv++CoaBruiWW3GM1hSu/+qcA+EcTZK/EK1R7wHQzhNCezSuzr4JVDT6Wskyzarvp3zJzOBaevyUv65tgRkV2M1eF6+qJH8VFFpnnb/50Zvg0Q7jvr+hyscX1Dv2oFCrJ9G2LdAtDBUQBD0vsJ6mco6hD1pfalXXZq52vs0fOtsgeU+17XrvDoiIwoi7FuUXCN3C7A3Hdkm7OP5/8zBffa7VzIBaG0n+QrRCyqMdato9ta881lK6R8OJfKu6Ji/bmi65Ir7g8Jol/yM1e/pUpS69AqL7ovwCKjcGhVrLWJ4xncTp7T/Bjp9R4yejOvo2PPagEKtkv2e7/SlKRfWx4kzaBYcOWF+u5V9oterRy1ovoOL9nS6GlL2oKu0cKrxn5YC8iuOSyhu1t/+IXvVBg0M3v/0ac/OGBp/XUJL8hWiljGGjUb36O+z+FWsX680brddVZycNCYcT+dXXHzhyyBoA5t+11usZ436P218XVL9HLT1+tNacePtl6OKPGnN142Kv+kVVUYUW0h08vWD/Lqu0Htaj1sny7Of16G09PZws/2JK3gulpajoKv9PInpaYwoq2mewvlzcQsJRwy9Hf/6etfRmA+hVH6DfebnmqnBNTJK/EKJ2od3BzR29+RvrdZVSsqoo3Vcp/esjh6BbeJ3rENfqjG6ZAGz9gdJ9O1HX3oTyaNe42Cu+VHw6WNU9WDOXEtnb6m56+ECdjb0V7FNHlA/40nt3WKOto/tUHlNxjfLSvzZN2L8bjwsGom6ZBSHdMV97Dn3saL3C1sXF1poQhQXo9V/W9902iiR/IUStlIeH9QWQXT43fkCVKpLyHj266mCvtEOVXwr15RcA7h6V3TLLyjA/fRu30O6oEWMaH3xHX+jUGTUwpnq3054XQGoKFBdBHfX9dhFRVo+n8np/vW8HhHZH+VTp1hnWHZSqrPc/mgqnTtDugoEoT09rbWjAfOl/614noarM8plTvX3Q8SvRxUX1fMMNJ8lfCFEnVbGUpS0A5Vmlt41vF2jfEb37VwBrwFd+jlUd1JDrG27WurtHU9FFBejXF8HRNDrccle1pN3guJXC+Ms/q61ZAKB6Vim119XTp2K/lzcEh6GT91rzAO3fVaMaTnn5WPFXlPyTrBlLPfoMtPYHBGHc8QCkpViL15xrmczyJyB1w21WW8jG1ed+s40kyV8IUbfyev8zG0aVUtbCNds2Yf6w3j7dQ219/M8pKARS9mHOvx/94/eo3/8Rz6GjzjdyVFAoqn3H6hsje1tVN+4eEFSzS2qNa0T2hgN7rSUjT59GRfereUx4VGWjb9Iu6OiLW5XurmrAReXLbW5Ar/387DdMTwWlrDWdew9Af72i2aaZkOQvhKhTRaNvbUtRqqunQK9+VuPkz5usjQ2t9qG8W+bxPCgswLh/Hsb4yc3WvVX5tLcafsMjUe71mOCgRy8oOFm5tnF035rHRERaU2GcyEfv3wU9L6gRvxo/GQYNQ3/4xtmXwcxIs56y2nlijJ8MeTnoH9bW/w02gCR/IUTdgsNgQAzqwmE1dik3N6tKw8PDWvrRy9saANZAauQY1NhrMJ54HtV7QFNEfVbGnfdj3HZfvY61TwWxab01bUWnzjWPKW/01dt/gsx0e5fSascYBsbtc6CLP+Y7L9c5k6k+mlrZWN3nQugejY7//JzVRY0hyV8IUSdluOE2+wlUv8G17+/ihzH9z9aL4PBGldhVYDDG1DsbvOxlY6ng8LMuaFNNcBh4eltdPHvVrPIBINxqO9DrvrCu37Nm8gdQ3j4YU2ZA2sFa6/K1aVqD6SoGwymFMe0ejDlPNsuT0HlN7PbDDz/w4YcfkpaWxj//+U969qzsOrVixQrWrVuHYRhMnz6dQYMGAbBt2zaWLl2KaZqMHTuW66+//nxCEEI4mBoYi/rjrBZL3i1JGW7WDKd7tkMdYy6UTwdrZtCDSVZbwtl6EQ0eDhcMRK98Bz300uptEnnZcLrY3v0VGjepX32dV8k/LCyMBx54gD59qn/TpaamkpCQwKJFi3j00Ud5/fXXMU0T0zR5/fXXeeSRR1i8eDHff/89qannsYCzEKJVMEb9DjWoZtVQW1DR31/VVt9fcUxFf//u0WddLU0phXHjHVBwquaKYRU9fWppX2kO51XyDw2t/dEpMTGRkSNH4uHhQWBgIEFBQSQlWXNpBAUF0bWrNQJw5MiRJCYm1nkdIYRwNHXF9ajI3tYKZ3WJ6Ak/fV9rfX+N64V2R43+HfqbL9Gjfocq7x5rnzY7qGXyYbPM55+Tk0N0dLT9tc1mIyfHGv7s51c5Q6Gfnx/79tW+XFp8fDzx8fEALFiwAH//hjckAbi7uzf6XEdz5thB4nc0Z46/VcXu7w89zj4a+PSgWHI/eQvf2Ivx9Pc/Z/zm9HvJ2rKRdus+w3fO3wE4npdNkbcP/j2jW2Qyv3Mm/3nz5pGXl1dj+9SpU4mNjW2OmACIi4sjLi7O/jqrkYtS+Pv7N/pcR3Pm2EHidzRnjt/ZYtdB4RgPPcPxsJ6orKz6xR9zMUWbvuF06mGUlzdlKUnQNYTs7Owmiys4uO6J686Z/B9//PEG39Bms1V7Azk5OdhsNoBq27Ozs+3bhRDCWSml7HMI1fuc4ZejN65G/7zJGtR1NK1FurpWaJaunjExMSQkJFBSUkJmZibp6elERUXRs2dP0tPTyczMpLS0lISEBGJiYpojBCGEaN16XmAt17npG3RRIeRmVfbxbwHnVee/ZcsW3njjDY4fP86CBQvo3r07jz76KGFhYYwYMYK5c+diGAYzZszAKJ/p7/bbb2f+/PmYpsnll19OWNi5h1gLIURbowwDNfwy9Jcf2ZeCVC3U2AvnmfyHDh3K0KG1L7w8ceJEJk6cWGP7kCFDGDJkyPncVggh2gQ17DL0qg8wK7p9tmDJX0b4CiGEg6huodagsINJoAwI7NZi95bkL4QQDqRGXG794h/Y+MVrGkGSvxBCOJCKvRQMo8UGd1VolkFeQggh6kd16oy6aWa1dYdbgiR/IYRwMOOy8S1/zxa/oxBCCIeT5C+EEC5Ikr8QQrggSf5CCOGCJPkLIYQLkuQvhBAuSJK/EEK4IEn+QgjhgpTWWjs6CCGEEC2rzZf8H3roIUeH0GjOHDtI/I7mzPE7c+zgHPG3+eQvhBCiJkn+Qgjhgtp88o+Li3N0CI3mzLGDxO9ozhy/M8cOzhG/NPgKIYQLavMlfyGEEDVJ8hdCCBfUZhdz2bZtG0uXLsU0TcaOHcv111/v6JAa5O6778bLywvDMHBzc2PBggWODumsXnrpJbZu3Yqvry8LFy4E4OTJkyxevJhjx44REBDAnDlz6NChg4MjrV1t8X/wwQesXbuWTp06AXDTTTcxZMgQR4ZZq6ysLP7973+Tl5eHUoq4uDjGjx/vNJ9/XfE7w+d/+vRp/va3v1FaWkpZWRnDhw9nypQpZGZm8vzzz3PixAkiIyO59957cXdvZelWt0FlZWX6nnvu0UePHtUlJSX6gQce0IcPH3Z0WA0ya9YsnZ+f7+gw6m3Hjh16//79eu7cufZtb7/9tl6xYoXWWusVK1bot99+20HRnVtt8S9fvlyvXLnSgVHVT05Ojt6/f7/WWuuCggI9e/ZsffjwYaf5/OuK3xk+f9M0dWFhodZa65KSEv3www/rPXv26IULF+rvvvtOa631kiVL9OrVqx0ZZq3aZLVPUlISQUFBdO3aFXd3d0aOHEliYqKjw2rT+vbtW6NUmZiYyOjRowEYPXp0q/5/UFv8zqJLly5ERkYC4O3tTUhICDk5OU7z+dcVvzNQSuHl5QVAWVkZZWVlKKXYsWMHw4cPB+Cyyy5rlZ99K3sOaRo5OTn4+fnZX/v5+bFv3z4HRtQ48+fPB+CKK65wiq5jZ8rPz6dLly4AdO7cmfz8fAdH1HCrV69m48aNREZGMm3atFb/BZGZmUlycjJRUVFO+flXjX/37t1O8fmbpsmDDz7I0aNHufLKK+natSs+Pj64ubkBYLPZWuWXWZtM/m3BvHnzsNls5Ofn89RTTxEcHEzfvn0dHVajKaVQSjk6jAYZN24ckyZNAmD58uW89dZbzJo1y8FR1a2oqIiFCxdy22234ePjU22fM3z+Z8bvLJ+/YRg8++yznDp1iueee44jR444OqR6aZPVPjabjezsbPvr7OxsbDabAyNquIp4fX19iY2NJSkpycERNZyvry+5ubkA5Obm2hvunEXnzp0xDAPDMBg7diz79+93dEh1Ki0tZeHChVx66aUMGzYMcK7Pv7b4nenzB2jfvj39+vVj7969FBQUUFZWBlg1Ea0x/7TJ5N+zZ0/S09PJzMyktLSUhIQEYmJiHB1WvRUVFVFYWGj//ddffyU8PNzBUTVcTEwMGzZsAGDDhg3ExsY6OKKGqUicAFu2bCEsLMyB0dRNa80rr7xCSEgIEyZMsG93ls+/rvid4fM/fvw4p06dAqyeP7/++ishISH069ePTZs2AfDNN9+0yvzTZkf4bt26lf/85z+Ypsnll1/OxIkTHR1SvWVkZPDcc88BViPSJZdc0urjf/7559m5cycnTpzA19eXKVOmEBsby+LFi8nKymrVXQ2h9vh37NhBSkoKSikCAgKYOXOmvQ69Ndm9ezdPPPEE4eHh9qqdm266iejoaKf4/OuK//vvv2/1n//Bgwf597//jWmaaK0ZMWIEkyZNIiMjg+eff56TJ0/So0cP7r33Xjw8PBwdbjVtNvkLIYSoW5us9hFCCHF2kvyFEMIFSfIXQggXJMlfCCFckCR/IYRwQZL8hRDCBUnyF0IIF/T/AcU4KD8/tUZcAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def log_normal_shadowing_model(Pt_dBm, Gt_dBi, Gr_dBi, f, d0, d, L, sigma, n):\n",
" _lambda = 3 * np.power(10, 8) / f\n",
" K = 20 * np.log10(_lambda / (4 * np.pi)) - (10 * n * np.log10(d0)) - (10 * np.log10(L))\n",
" X = sigma * np.random.randn(len(d))\n",
" PL = Gt_dBi + Gr_dBi + K - (10 * n * np.log10(d/d0)) -X\n",
" Pr_dBm = Pt_dBm + PL\n",
" return Pr_dBm\n",
"\n",
"Pr_dBm_shadow = log_normal_shadowing_model(\n",
" Pt_dBm=-30., Gt_dBi=1., Gr_dBi=1., f=2.4e9, d0=1., d=np.linspace(0.1, 32, 100), L=1., sigma=2., n=2)\n",
"\n",
"plt.plot(np.linspace(0.1, 32, 100), Pr_dBm_shadow, label=\"Log-normal Shadow Model\")\n",
"plt.legend();"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def inverted_log_normal_shadowing_model(rssi, Pt_dBm=0., Gt_dBi=1., Gr_dBi=1., f=2.4e9, d0=1., L=1., sigma=2., n=2):\n",
" _lambda = 3 * np.power(10, 8) / f\n",
" K = 20 * np.log10(_lambda / (4 * np.pi)) - (10 * n * np.log10(d0)) - (10 * np.log10(L))\n",
" X = sigma * np.random.randn(len(rssi))\n",
" PL = rssi - Pt_dBm\n",
" d = d0 * np.power(10, (Gt_dBi + Gr_dBi + K - PL -X)/(10 * n))\n",
" return d\n",
"\n",
"\n",
"dpred = inverted_log_normal_shadowing_model(Pr_dBm_shadow, Pt_dBm=0., sigma=2)\n",
"plt.plot(dpred, Pr_dBm_shadow);"
]
}
],
"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.6.9"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment