Docker环境的持续部署优化实践
最近两周优化了我们持续部署的程序,收效显著,记录下来分享给大家
背景介绍
那年公司快速成长,频繁上线新项目,每上线一个项目,就需要新申请一批机器,初始化,部署依赖的服务环境,一个脚本行天下
那年项目发展如火如荼,A项目流量暴增马上给A扩机器,B项目上线新功能又要扩容B,上线新项目没资源了,就先下线处于流量低峰的C项目主机
每天日夜加班,疲于奔命
那年得知了Docker能拯救我于水火,遂决定为了荣誉(发际线)而战。
为了快速落地以及尽量降低引入Docker对整个CICD流程的影响,用最小的改动把Docker加入到了我们上线的流程中,流程变化参考下图
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnYAAALhCAYAAADSN+kCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAgAElEQVR4nOzde3yU5Z338e89k3MgIYAgBJVzFATNxEMVrEHLeqhgsa2Kq7UUdy1lC09360O3j6urZdcuWtFuPduDqwWLFTViUdQtCLZFyAEQTCCcCQYCIYEQkjldzx8hIzEJx2TumSuf9+vly5l7rpn5zUxuft+55j5IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM6Q43YB0XLJJZdcGAqFbnUcZ4yk8yX1lJTiclldWYOkakmlxpiPvV7vgtWrV3/qdlEA4AZ6VMyJ2x5lfbDLzc29wnGcOZLGul0LTmiFMeb/FhcX/9XtQgAgGuhRcSUuepTNwc7j8/kelvT/JCk5OVkTJ07UmDFjNGzYMGVlZSk5OdnlEruuxsZGHThwQJs2bdKKFStUUFAgv98vSXIcZ3ZhYeGDksLuVgkAnYYeFcPiuUdZGeyuuOKK1MbGxt9Kui0lJcX8/d//vXP77berZ8+ebpeGdlRXV+vVV1/V73//e9PQ0OBI+kNGRsZ3ly5d2uB2bQDQkehR8SeeepR1wW7o0KHJGRkZH0gae9ZZZ+nJJ59UTk6O22XhJJWVlWnmzJmqqqqSpBUHDx78Wnl5eaPbdQFAR6BHxbd46FEetwvoaBkZGf8laeywYcP00ksvscLEmZycHL300ksaNmyYJI3NyMj4uds1AUBHoUfFt3joUVbN2OXm5k50HOetjIwM84c//MHp06eP2yXhNO3du1e33nqrOXTokCNpYlFR0dtu1wQAZ4IeZY9Y7lFetwvoKJdddlkvY8z/Skp95JFHnJEjR7pdEs5Aenq6Bg4c6CxZskSSrj/nnHNerKioOOJ2XQBwOuhRdonlHmXNT7HBYPBHkrJuueUWXX311W6Xgw6Qn5+vSZMmSVJWKBT6P27XAwCnix5ln1jtUVb8FHvxxRf38Hq9O7xeb/e3335bTG/bY8+ePZo4caJCodChUCh0bklJSY3bNQHAqaBH2SsWe5QVM3Zer3eGMab7TTfdxApjmb59++qmm26SMaa71+v9odv1AMCpokfZKxZ7lA3BzmOMuddxHN19991u14JOcPfdd8txHBljvi87/mYBdB30KMvFWo9yvYAzlZeXd6mk/qNHj9a5557rdjnoBOeee65GjRolSf0vueSSS9yuBwBOFj3KfrHWo+I+2EmaJElXXXWV23WgEzV/vqFQaJLLpQDAqaBHdQGx1KPiPtgZY74hSV/96lfdLgWdqPnzdRzH9ZUGAE4WPapriKUeFdfB7vLLL+8rKadv374aPHiw2+WgEw0ZMqR5o+Oco587AMQ0elTXEUs9Kq6DXSgUGi1Jw4YNk+NYceQWtMNxnOZTuMjv949yuRwAOCF6VNcRSz0qroOdMWa0pJj8JvTiiy+e0f3nzp2r5cuXn3CcMUb333+/du/eLUmqq6vTtGnTFA6HVVFRofr6+jOqI5Yc8zmPdrMOADgZ9Ch6lBsS3HzyDjBaapoCjTW//vWvdc8990iSLrvsMg0cOLDF7du2bdMnn3zS7v0vuOAC/fa3vz3hBrerVq3S6tWrI8dG8ng8+uSTTxQMBrVkyRItXrxYc+fOVXZ2tmbOnKmSkpIW97/99tu1cOHCFstqamr0xBNPaMyYMSf7cqPimM+ZYAcgHtCj6FFRF9fBLhwOD3EcJ+Z3Ic/MzNSCBQtaLBs/fnzkclunlzHGKBQKtXnbr3/9aw0dOlSSNG/ePN15551KSGj6KFNSUuQ4jvx+v6ZMmaLExETNmDFDr732mp588knV1dXpmmuu0cKFCzVgwABJ0u7du/XQQw/J4/FE6jn77LM75sV3oGM+56Fu1gEAJ4MeRY9yQ1wHO4/H08MYo+7du7tdSsTNN98sSQoEArr55pv1wgsvqLa2VpMnT24xrra2NnJ52bJlkcvbtm1T//79lZSUJEkKhUIqKSlRXl5eq+cqKyvTihUr9PDDD0eWeTwepaWl6eDBg+rWrZsmTJig4cOHa82aNcrNzdXKlSs1YsSIyArj9/u1fPnyyArT0NCgurq6mFxpmj9nx3EyXS4FAE6IHkWPckNcBztJmZKUnp7udh0Rb731liTpiiuu0O9//3ulpKRIavrjP5F169Zp5syZeuSRR3T55ZdLkvbt26fZs2frmmuu0fTp0yN/3JL0+OOPyxgjv9+vefPmqaqqSvv27VMgENDUqVNVV1enjIwM9e3bV0OGDFFubq4WL16sO+64I/IYBw4cUM+ePSPXq6qqlJ6eHlPvabNjaiLYAYgH9Ch6VNTFdbAzxmRKUrdu3dwupZXmDUYffvjhE05zS9KKFSv0wAMPaPr06Tr2wNV9+/bVfffdpxdffFE//vGP9R//8R9KTU3Vm2++GflGlZiYqNraWvXv318XXXSRduzYoYkTJ2rSpEktVrKKigotW7ZMGzdu1FNPPaWsrCzNmjVLvXr1ioypqqqKyW9CUovPmWAHIObRo+hRbojrYCcpXVLkG4fb/H6/nnrqKX366acKh8O66667NHXqVKWnp+vWW29tMbZ52Y033qjExET99re/1aOPPqoFCxbI6/XqG9/4hiTp448/1pw5czR//nz95Cc/0b/927/pscceU0FBgR544AHdddddSkxM1LRp0yKPvWrVKu3du7fFCiNJTz/9tMLhsAoKCiQ1rbg1NTUqLS2NrMShUEh+v1/5+fmaP3+++vXr15lv2Sk55nOOva9qANAaPYoehVPh8/kO+nw+c/jwYRMLgsGgmT59uikrKzNf+cpXIsv/8pe/RC6PGTOm1f3Wr19vdu3aZYwxprS01IwfP95UV1cbv99vvv3tb5t3333XGGOM3++PjKuqqjLGGNPW61+0aJGZNm1ai2WBQMB85zvfMePGjYss+9rXvtbua7n++uvN/v37T+p1R0tdXZ3x+XzG5/PVnvivAwDcRY+iR7khro9j5zhOrdR0XJxY4PV69atf/UrDhw+PLKupqdHPfvaz495vxIgRys7OliTl5OTopptu0k9+8hPNmTNH5557rq677jpJTdPZzeN69+7d7uNdeumlKi4ubnF8oISEBD3zzDPyer0n9VoaGhqUlpZ2UmOj5ZjPmWAHIObRo9pGj+pc8f5TbK2kAYcPH3a7jnatX7++xfYBjY2NLaa8//u//1t9+7Y8+8idd96pb33rWyopKdH8+fNP+Tn79OmjkSNHatGiRZHnmjp1qh577LFWY7+8HYUkzZo1Sw0NDTHz80GzYz5ngh2AeECPagM9qnPFdbALh8M1juPo0KFDbpfSrkWLFsnr9eqnP/2pvvvd7yo5ObnVRqrN9u3bpzfeeEOvvvqqxo0bp/79++uee+7RhAkTNGnSpFYHkDyeKVOm6MEHH1R+fr4kqbS0VJmZTdtz3nLLLZFx77//fqv7lpWVRcbGkubP2RhDsAMQ8+hR7aNHdZ64DnYej2ezMWbMjh07NHq0+ycjCAQC2rx5s/r376+EhAT99a9/1cqVK7V48WKtWLFCc+fOVUpKiiZNmqRwOKxgMKgbb7xRPXv21EcffaQ1a9Zo3Lhxevrpp5WTkyNJuummm/TSSy/p7rvvVs+ePXXxxRfrvvvuO+EU9JgxY3TddddpypQpysnJUV5eXmRD1eajeB/7TSgUCik/P1/hcFiO42jGjBmd9C6dvh07djRfLHezDgA4GfSo9tGj0Ka8vLx/8fl85oknnnB3i8mjwuGwGTt2rLnqqqvMnDlzzJtvvmn++Mc/tjk2EAiYxsZGEwqFzPz5880bb7xhamtr233shoYG8+c//9kUFBS0WD5jxgzT2NjY7v0KCgrM7NmzzbZt24wxxpSXl0duC4VCrcb7/X4TDoeP+zrdMnfuXOPz+Uxubu4/u/23BwAnQo+iR7nBcfPJz9Qll1wyPhwOLxk7dqyefPJJt8tpJRwOt9qdG6dvxowZ+vjjj2WMGV9cXPyB2/UAwPHQo7qWWOlRcf2Jer3etZK0adMmGWPcLqcVVpiOY4zRpk2bJElJSUnrXC4HAE6IHtV1xFKPiutPdeXKlXskle3Zs0dbtmxxuxx0os2bN2vv3r2SVHb0cweAmEaP6jpiqUfFdbCTJMdx3pSkjz76yO1S0ImaP19jzBsulwIAJ40e1TXEUo+K+2An6Q1JWr58udt1oBM1f75er9f1lQYATgE9qguIpR4V98GusLBwlaTda9euPXZXY1hk+/btWrdunSTtXr169Wq36wGAk0WPsl+s9ai4D3aSwo7jPGeM0UsvveR2LegE//M//yNjjBzHeVZS2O16AOAU0KMsF2s9yoZgp1Ao9EvHcQ4tWrSoeeNFWGLPnj1atGiRHMc5FAqF/tvtegDgVNGj7BWLPcqKYFdSUlJjjPllMBjUCy+84HY56EAvvPCCgsGgJD1ZUlJS43Y9AHCq6FH2isUeZUWwk6SEhIS5kg4sXLhQy5Ytc7scdIClS5fqjTfekKQDXq/3CbfrAYDTRY+yT6z2qLg+88SX5ebmTnQc563u3bubBQsWOH369HG7JJymPXv26LbbbjOHDh1yJE0sKip62+2aAOBM0KPsEcs9yut2AR2psrKyrF+/fll+v/8rn3zyia666ip169bN7bJwivbs2aOZM2fq888/dyQ9UVRU9Eu3awKAM0WPskOs9yirgp0kpaen/zk5OTm/urr63CVLlujSSy9V79693S4LJ6msrEz33nuvdu7cKUkrDh48+J3q6uqQ23UBQEegR8W3eOhR1gW76urq0MCBA18NhUJD6+vrL3znnXdMQ0ODM3ToUKWmprpdHtpRXV2t3/zmN5o9e7Y5ePCgI+nVjIyMbxYVFTW6XRsAdBR6VHyKpx5l1TZ2X+LJy8t7yBhzvyQlJSVp4sSJGjNmjIYPH64ePXooJSXF7Rq7rIaGBtXU1Gjjxo36+OOPVVBQIL/fL0lyHGd2YWHhg4qB4wEBQCehR8WweO5RNgc7SVJubu4VjuPMkTTW7VpwQiuMMf+3uLj4r24XAgDRQI+KK3HRo6wPds0uueSSC0Oh0Lcdxxkj6XxJvSTxdcg9DZL2Syo1xnwcDocXrFmzZr3bRQGAG+hRMYcehejy+XzG5/MZt+sAAODL6FHuseYAxQAAAF0dwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASzhuF4ATGzp0aHJWVlbWsctCodDnkuT1evsdu/zAgQMHysvLG6NZHwCg66JHxZYEtwvAiWVlZWWFQqHdaiOIN688R4WzsrKyJVVGrTgAQJdGj4ot/BQbB1atWlUp6aOTGLr86FgAAKKCHhVbCHZxwhjz+kkM+2OnFwIAwJfQo2IHwS5OhMPhhScaEwqF3ohGLQAAHIseFTsIdnFizZo1FZL+dpwhfz06BgCAqKJHxQ6CXRxxHKfdqe7j3QYAQGejR8UGgl0cCQQC7a4YgUDghNPgAAB0FnpUbCDYxZG1a9dulVTcxk1FR28DAMAV9KjYQLCLP219I2KKGwAQC+hRLiPYxZm2tlPweDysNAAA19Gj3EewizOFhYWlkjY0X3ccZ/3q1avLXCwJAABJ9KhYQLCLQ8ceCDIcDvNNCAAQM+hR7iLYxafIisIu5ACAGEOPAk6R4/P5yn0+3ya1cdJlAABcRI9yUYLbBeC0GEmvO45jjl4GACBW0KNcRLCLUx6P5/VgMMgKAwCIOfQo98T1FGlubu5Kx3Euc7sORJcxZmlxcfE4t+sAgOOhR3VNbveouN55ghWma3IcJ9/tGgDgROhRXZPbPcqKn2ILCwvdLgFRkpeX53YJAHBK6FFdRyz0qLiesQMAAMAXCHYAAACWINgBAABYgmAHAABgCYIdAACAJQh2AAAAliDYAQAAWIJgBwAAYAmCXSdZtGhRq2WfffaZqqurO/R5jDG6//77tXv3bklSXV2dpk2bpnA4rIqKCtXX13fo8wEA4h89yl5WnHkiFv385z/XTTfd1GLZ/v37NWfOHD3//PNKTEyMLL/hhhtUVVWls846S5Iil0OhkJKSklo8xtVXX6377rsvcn3VqlVavXq1+vTpI0nyeDz65JNPFAwGtWTJEi1evFhz585Vdna2Zs6cqZKSkhaPd/vtt2vhwoUtltXU1OiJJ57QmDFjzvyNAADEHHqUvQh2nWz58uX613/918h1Y4zGjfvi3MArVqzQ4sWLdfXVV2vx4sWSpLFjx2rx4sV6//33VVJSEllJ3n33Xa1bt67F48+bN0933nmnEhKaPsqUlBQ5jiO/368pU6YoMTFRM2bM0GuvvaYnn3xSdXV1uuaaa7Rw4UINGDBAkrR792499NBD8niaJnCvvvpqnX322Z33pgAAYgI9yj4Euw7W/A2ooaFBN910kx566CGtWLHitB6rX79+evfddyPXN23apOHDh0eul5WVacWKFXr44Ycjyzwej9LS0nTw4EF169ZNEyZM0PDhw7VmzRrl5uZq5cqVGjFiRGSF8fv9Wr58eWSFaWhoUF1dHSsNAFiIHmU/gl0Ha95uYezYsZHLH374oXr16qWLL75YkhQIBPTkk09q+vTpSk1NlSTV19fr1ltvlSQ1NjZKkgYOHKjNmzdHHnvdunW68cYbI9cff/xxGWPk9/s1b948VVVVad++fQoEApo6darq6uqUkZGhvn37asiQIcrNzdXixYt1xx13RB7jwIED6tmzZ+R6VVWV0tPTlZ6e3hlvDwDARfQo+xHsoqCiokLFxcWRlaasrEzvvfeefvzjH0fGpKWlacGCBZKaVjhJ6tatmxISElRdXa20tDTt2rVLgwcPliS9+eabqq2tlSQlJiaqtrZW/fv310UXXaQdO3Zo4sSJmjRpUuRbTnMdy5Yt08aNG/XUU08pKytLs2bNUq9evSJjqqqq+CYEAF0IPcouBLsOZIzRrl27tGXLFvn9fk2bNk1Dhw7V+PHj9fOf/zwybs2aNbrsssta3Letb0OSdPnll2vZsmXq3r27vvKVr8hxHElSQUGBHnjgAd11111KTEzUtGnTIvdZtWqV9u7d22KFkaSnn35a4XBYBQUFkqTx48erpqZGpaWlGj9+vCQpFArJ7/crPz9f8+fPV79+/TrwHQIAuIUe1TUQ7DqQ3+/X9OnTNWzYMHm9Xv3gBz/QiBEjFAqFtHXrVh05ckSpqakqKipSfn5+i/u29W1Ikq6//no98sgjSk9P1/Tp0yPL58yZo969e7dZx4gRI/TOO++0WBYMBrVr1y5lZma2WH7FFVdo+fLlrR7jhhtuUHJy8im9fgBA7KJHdQ0cx64DJScnq6CgQL/4xS/k9Xo1atQoeb1eJSUladCgQSotLVU4HFZRUZGuvPLK4z5WUVGRVqxYoVGjRik1NVWhUCgyTS6p3RVGki699FIVFxe3OD5QQkKCnnnmGXm93pN6LQ0NDUpLSzupsQCA2EeP6hqYsYuSnJwcbdy4UUlJScrOzo5sM1BXV6c//elPamho0A9+8ANt2bJFDQ0N+v3vf6/c3Fyde+652rVrV2Q7hmM3Im1Pnz59NHLkSC1atCgydT516lQ99thjrcY2T28fa9asWWpoaFBKSsoZvmoAQDygR9mDYBcls2bNUkpKip577jldddVVkeWhUEjbt2/X/fffr+HDh2vw4MEaN26cfvGLX2jbtm36/ve/r3/6p39SbW2tZs6cqaeeekoZGRknfL4pU6bowQcfjEynl5aWRqa4b7nllsi4999/v9V9y8rKWk2HAwDsRY+yB8Gugx08eFDhcDhyMMZjt0WQmrZx8Hq9evnllyVJ3/ve91ocpbvZokWL9Oijj+of//EfNWHCBEnSxo0bdffdd+vZZ59V3759j1vHmDFjdN1112nKlCnKyclRXl5eZEPV5qN4H/tNKBQKKT8/X+FwWI7jaMaMGaf5DgAAYhU9yn4Euw521113qaqqSjfffLMkndaBHwcMGKCKigr99Kc/1XXXXRdZ/uCDD2rBggWR07pITStl8wr6Zffdd5/OP/98rV27Vnfeeack6dlnn43c/t5770Uue71eLV++XIFAQAkJCZE9mwAA9qBH2S+u3xmfz2ckqbCw0O1SECV5eXmSpKKiorj+2wVgP3pU1xMLPYq9YgEAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAAS1hx5onmAwICABBr6FGIpriesTPGLHW7BkQfnzuAeMC/VV0TnztOi8/nM82nqwEAIJbQo9wT1zN2AAAA+ALBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwhON2ATix0aNHD0hISLj/S4vvPfr/545dGAwGZ69du3ZXdCoDAHR19KjYQrCLA9/+9re95eXlFY7j9D3eOGPMnqFDh2a/9tproWjVBgDo2uhRscXrdgE4sQ0bNpjs7Owhki45wdCXP/zww0XRqAkAAIkeFWvYxi5OhMPh109i2MmMAQCgQ9GjYgfBLk54PJ5lxpjq4wzZn5mZuSxqBQEAcBQ9KnYQ7OJEYWFhwHGct44z5K2lS5cGo1YQAABH0aNiB8EujjiO0+40tsfjYYobAOAaelRsINjFkdra2g8kHWzjpoM1NTUfRrseAACa0aNiA8EujpSXlzcaY9rao+jt8vLyxqgXBADAUfSo2ECwizPtTHUzxQ0AcB09yn0EuzjjOM67kuqPWVTvOM57btUDAEAzepT7CHZxprCwsF7S4ubrjuP86egyAABcRY9yH8EuDhljItPaJ3lQSAAAooIe5S6CXRxKSkp6p/lyWlraO8cbCwBANNGjgNPg8/ne9vl8BW7XAQDAl9Gj3JPgdgE4ba87jmPcLgIAgDbQo1ziuF3AmcjNzV3pOM5lbteB6DLGLC0uLh7ndh0AcDz0qK7J7R4V19vYscJ0TY7j5LtdAwCcCD2qa3K7R1nxU2xhYaHbJSBK8vLy3C4BAE4JParriIUeFdczdgAAAPgCwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDs4lw4HG617PDhw20uBwAgmuhR0Uew6yTGGN1///3avXu3JKmurk7Tpk1TOBxWRUWF6uvrz/g59u/fr2984xsKhUItlv/whz/UwoUL27xPdXW1/H7/GT83ACB+0aPsZcWZJ2LRqlWrtHr1avXp00eS5PF49MknnygYDGrJkiVavHix5s6dq+zsbM2cOVMlJSUt7n/77be3+sOvqanRE088oTFjxkiS/vSnP+mKK66Q1+vV9OnTVVVVJUk6cOCA5s6dqwULFkiSevTooeeff16S9Oyzz2r//v169NFH9eKLL+rVV19VKBRSjx49Is8TCoVUWVmp1atXd86bAwBwFT0KMcnn8xmfz2di0cyZM83LL78cuR4KhUxeXp45dOiQMcaYl19+2dxyyy0mFAoZY4w5dOiQufTSS83OnTsj97n//vsjtxtjzFe/+lVTXl4eebxJkyaZrVu3GmOM+frXv95uLRMnToxcPnLkiJk8ebKZM2eOMcaY8vJyc/PNN5u6urrImP/6r/8y//mf/3m6L71TNX/mbv/tAcCJ0KPoUW7gp9hOUFZWphUrVmjixImRZR6PR2lpaTp48KAkacKECZo1a5bWrFkjSVq5cqVGjBihAQMGSJL8fr+WL18uj6fpI2poaFBdXZ3OPvtsSdLSpUs1aNAgBQIBzZ0796RrS0lJ0aOPPqqvf/3rkqQhQ4ZowoQJ+tGPfvI7zeMAACAASURBVKTq6mo98sgjKi8v17/8y7+c+RsBAIg59Ci78VNsJ3j88cdljJHf79e8efNUVVWlffv2KRAIaOrUqaqrq1NGRob69u2rIUOGKDc3V4sXL9Ydd9wReYwDBw6oZ8+eketVVVVKT09Xenq6JOn555/XpEmT9Lvf/U6XX365PvzwQ916661t1tPY2NjienZ2trKzsyPX77rrLq1cuVLXX3+9zj33XP3mN79RUlJSR74lAIAYQY+yG8Gug7355puqra2VJCUmJqq2tlb9+/fXRRddpB07dmjixImaNGlS5FuOJFVUVGjZsmXauHGjnnrqKWVlZWnWrFnq1atXZExVVVXkm5AkXXvttVq/fr0qKys1YcIEPffcc5HtFb5s8+bNkqRnnnlGCxcu1JEjR/TnP/9Zr7zyitauXaudO3fq8ssv1+TJk7Vq1Sp997vfVe/evXXRRRdp+vTpnfE2AQBcQI+yH8GugxUUFOiBBx7QXXfdpcTERE2bNi1y26pVq7R3794WK4wkPf300wqHwyooKJAkjR8/XjU1NSotLdX48eMlNW0s6vf7lZ+fr/nz5+t73/ue7r33Xv30pz+V4zgKh8ORb0M7d+7UOeecE/n/jh079Le//U3Tpk3TtGnTNHbsWCUmJuqCCy7QNddco/POO0+SNHbsWK1YsUKSVFlZqcOHD3f6+wUAiB56lP0Idh1szpw56t27d5u3jRgxQu+8806LZcFgULt27VJmZmaL5VdccYWWL1/e6jFuuOEGJScn68knn9Thw4e1ZMkSDR48WIFAQJK0YMEC3XnnnXrllVc0efJkzZ8/XzfffHOb9Vx22WWaNGlS5HpDQ0OLsd/5znc0ZMiQk3vhAICYR4+yH8Gug7W3wkjSpZdeqtmzZ6u+vl5paWmSpISEBD3zzDPt/mF/WUNDg9LS0nTbbbfpm9/8prp3765Dhw5FtnWYPHmytm/frsmTJ2vbtm2aPHmy9uzZ0+ZjeTwevfXWW5HrY8eObXEdAGAXepT9CHZR1KdPH40cOVKLFi2KTElPnTpVjz32WKuxzdPbx5o1a5YaGhqUkpKi7Oxs1dbWavv27frggw80ZMgQbd68WfPnzz+pb0ONjY365S9/GZnWllp/G5LESgQAXQQ9yg4EuyibMmWKHnzwQeXn50uSSktLI1Pct9xyS2Tc+++/3+q+ZWVlkbE33nijqqurNWrUKG3evFk//OEPIxugHk84HFYwGIzUcd9990Vu49sQAHRt9Kj4R7CLsjFjxui6667TlClTlJOTo7y8vMiGqs1H8T72m1AoFFJ+fr7C4bAcx9GMGTMkNW0nMXToUO3evVvf+9739LWvfU3z589v9XzBYLDFruRFRUUKBAK68sorNWzYsM58qQCAOEOPgqti+ajeM2bMMI2Nje3eXlBQYGbPnm22bdtmjDGRo3UbY1ocybuZ3+834XC41fLPPvvMLFiwwBhjzA9/+ENjjDGVlZXGGGO2bt1qbr/9dvOzn/0sMv7w4cNmyZIlbdY0ZsyYE70s18XCUb0B4GTQo+hRbnDcfPIz1fzmFRYWul0KoiQvL0+SVFRUFNd/uwDsR4/qemKhR3FKMQAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAElacUqz5gIAAEE25ubl/dhxnRDAYHLV27dq9bteD2ESPQjTF9YydMWap2zUg+vjcESscx8mX1CchIeHD0aNH93G7HsQW/q3qmtz+3DktU5xqPlUNp9YC3POlc0J+GgwGr2XmDqBHuSmuZ+wAIBYcOXJEki5k5g6A2wh2AHCGNm3aRLgDEBMIdgBwhoLBIOEOQEwg2AFAByDcAYgFBDsA6CCEOwBuI9gBQAci3AFwE8EOADoY4Q6AWwh2ANAJCHcA3ECwA4BOQrgDEG0EOwDoRIQ7ANFEsAOATka4AxAtBDsAiALCHYBoINgBQJQQ7gB0NoIdAEQR4Q5AZyLYAUCUEe4AdBaCHQC4gHAHoDMkuF0AAHuMGTOme319fY7bdcSL5nA3bNgwpaamNoe7a9euXbvX7doAxCeCHYAOc+TIkTLHcfq5XUc8IdwB6EgEOwAdqZ8k1dfXu11H1Bw+fPiMH4NwB6CjEOwAdLjS0lK3S4g7hDsAHYGdJwAgRrBDBYAzRbADgBhCuANwJgh2ABBjCHcAThfBDgBiEOEOwOkg2AFAjCLcAThVBDsAiGGEOwCngmAHADGOcAfgZBHsACAONIe7QCAgNYW7d92uCUDsIdgBQBwyxnSd03sAOGkEOwCIAwkJCRo2bJgSExMl6dNQKHSL2zUBiD0EOwCIcc2hLjU1VZI+DQaDnGoMQJsIdgAQwwh1AE4FwQ4AYhShDsCpItgBQAwi1AE4HQQ7AIgxhDoAp4tgBwAxhFAH4EwQ7AAgRhDqAJypBLcLAGCf888/3+0Soubw4cPauXPnGT8OoQ5ARyDYAehIn0vql5aW5nYdUZOWlnbGwY5QB6CjEOwAdJjU1NSc+vr6HLfriBbHcVad6WMQ6gB0JIIdgA7z8ccfH5K02u06osXn853R/Ql1ADoaO08AgAsIdQA6A8EOAKKMUAegsxDsACCKCHUAOhPBDgCihFAHoLMR7AAgCgh1AKKBYAcAnYxQByBaCHYA0IkIdQCiiWAHAJ2EUAcg2gh2ANAJCHUA3ECwA4AORqgD4BaCHQB0IEIdADcR7ACggxDqALiNYAcAHYBQByAWEOwA4AwR6gDECoIdAJwhQh2AWEGwA4AzRKgDECsIdgBw5gh1AGJCgtsFAEC8MsZ8IikQCoVuIdQBiAUEOwA4TcXFxZe7XQMAHIufYgEAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALOG4XQBObOjQoclZWVlZxy4LhUKfS5LX6+137PIDBw4cKC8vb4xmfQCAroseFVs4pVgcyMrKygqFQrvVRhBvXnmOCmdlZWVLqoxacQCALo0eFVv4KTYOrFq1qlLSRycxdPnRsQAARAU9KrYQ7OKEMeb1kxj2x04vBACAL6FHxQ6CXZwIh8MLTzQmFAq9EY1aAAA4Fj0qdhDs4sSaNWsqJP3tOEP+enQMAABRRY+KHQS7OOI4TrtT3ce7DQCAzkaPig0EuzgSCATaXTECgcAJp8EBAOgs9KjYQLCLI2vXrt0qqbiNm4qO3gYAgCvoUbGBYBd/2vpGxBQ3ACAW0KNcRrCLM21tp+DxeFhpAACuo0e5j2AXZwoLC0slbWi+7jjO+tWrV5e5WBIAAJLoUbGAYBeHjj0QZDgc5psQACBm0KPcRbCLT5EVhV3IAQAxhh4FnCLH5/OV+3y+TWrjpMsAALiIHuWiBLcLwGkxkl53HMccvQwAQKygR7korpN0bm7uSsdxLnO7DkSXMWZpcXHxOLfrAIDjoUd1TW73qLjexo4VpmtyHCff7RoA4EToUV2T2z3Kip9iCycWuV0CoiSvwOd2CQBwSorupUd1Fb7n3O9RcT1jBwAAgC8Q7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAAB0vHZOJuaE4vqkVzGPYNfJivd3UyDc9Ef8201nqz7Y9lt+JOTRugPpkes/KzlPa6q7SZIK93fTyqqMNu9nJN1fNFC765MkSXUBr6b9ZZjCxlFFfXK7zwcA6LrS96SfeFAbepX1UvLB5JMam7UlS4PfH9xqeY+tPZS6P/W49x304SAl1zY9T/eK7hr454GnXGtXZcWZJ2JV+cFU/fMnQzQv/zP1S/Wr/GCq5m3po3uGV7Ya+8HuLC3a2VPPXblJkrS0MlN3DNkrSUpPCOsnq8/T5Wcd0j+P3KVkbzhyv1X7umv1vu7qkxKQJHkc6ZN93RU00pKKLC3e1VNzLy9XdppfM1cOUcnRsNjs9kF7tXB77xbLavyJeuLyco3pc7BD3w8AQGzIeTNHxf9QLOMxyn0xt91xW6/dqppBNZKklJoUnbP8HG24fcNJPUfP8p6q61snSUrdn6rzlp0nSfIcnXAIJ3zRy0pvKY1cTt2fqvTKdPkz/Erdn6rB7w9WOCGsC/54gSSpZlCNPs/7/BRebddCsOskDSGP/l/RQP1jzufql+qXJP3gggrd9dH5+urZtRqecaTF+Ne39dZ3hu6RJFUeSZI/7NGgbg2SpPMz6/XyV0v1wsZ+rWa2523uozuH7FGCp+mWFG9IjiR/yKMpwyqV6DGa8behem3cZ3ry8s2qC3h1zbujtfCaDRqQ3ihJ2l2frIdyt8vjND3G1Ysv0tlHawYA2K34nuIW133P+bRmyhqFkkItlmf/NVvGa3T+6+e3+TgJDQmRsJhyIEUZOzKUui9VvT/rrQ23bVDZpDKd97/naXv+dsmRBn44UNuu3SbjadnZepX1UtXIKqXvSdeg9wdp67VbdfCcg3JCjoa8N0SHsg917BtgGYJdJwgbR/9WNFAD0ho1efDeyPLsNL9+NLJCM/82VM9euVHndWuM3LbuQLr+vfg8PVRynsLGUUPIo3Hvjm712G/t6KXstEbNu7pUZbWpWrEnUw/7tkVu9zhSWkJIBwNedUsMacI5+zU8s15rqtOV26tOK/d114ge9ZFQ5w87Wr4nMxLqGkIe1QW8Ojs10EnvDgDALRf/+mI5pmnzoIt/c7Gk1sGuLb029lJSXZLW3bWuxUzbsXzP+WSO9pJzPj5H+0bs084xO1uMccKOMndkygk5SmhMaBXqPEGPsrZkaeu1WzXk3SFyQo6yV2Yre2W2EhoS5IQcnbPiHHkbvfr07z895dffFRDsOpg/7OjB4oHa05CoZ68ob3X7hHP2a19Dor67Ikf3X7RD1/ZrmuIunPjFSaIfKjlP/VP9+oec4081P75+gIyaZufm7eylqoZE7WtIVCDsaOqKHNUFPcpIDKlvakBDuh9Rbq86Ld7VU3ccEzYPNCaqZ/IXIa6qIVHpCSGlJ4TaeEYAQDwrmVoiqSmElXyvpFWwaktaVZr6/62/HDm64LULWtxmPEYbbtvQtMG30/SfE3YUSA0oc3umMnZkqKFHgxKPJEbuc3bx2ZHL5y9smv3bnr9dR3oe0VmfniVJqutXpw3f3qCct3L02bc+kyTlvJGjbdduU2NGoy6cd+GZvA1WI9h1sJ+sHqwaf4J+9ZVypbUTjqYMq1TfVL/+vXigth6qbLHNXcg4Wl6ZqTmXbjnu87y5o5dq/U0fX6LHqNafoP5pfl3U87B2HE7WxHP2a9J5++Q5ZuejivpkLavM1MbaND1V2l9ZSUHNGrVTvZKDkTFVDYnM1gFAF5HQkKBwQrjdWThJyl6ZrV1jdmnQB4O07s51LcJg7vNN2+d5wh6Fj27/bTxG267dJkka9coobb5hs6QvQtyXNW9fl9CQoN6ffbHNdyA9oMTDibrgjxfI2+iV1+/V4CVNO2M4YfasbQ/BroPNGFGhz+uTNOGDpm8T9UGvUrzhyE+dknQ44NXr16zXa+M2KCMx2OL+H+/JUI0/Qf/0t6HqmdTytv2NifrxhTv1zYH7VLCjtx64eLvu+uh8JXrCmnb+7si4Vfu6aW9DYotQJ0lPl/ZT2Dgq+FrT9PX490apxp+g0to0jX9vlKSmYOkPeZS/+CLNP7rTBwDAHs17tQ57e5gSjyRq44SNxw12W/5ui0JJIQ36YFC7Y5ygEwl27UmsT9S6O9e1WDbqlVGRy1mbs7Rv5D71WdsnsmzjzRuVuT1Tvdf31p6L96gyt1JOyGkRANESwa6DDezWoIHdGrTshjWSpOuXjNLzYzbq3PQvtqe7bskopXjD6tvGzNj8LX1099A9+t/Pe+jV/M8ie8Ae8Cfolg9H6sq+TXuqzrlki3qntD2zNqJHvd7Z2avFsmDY0a7Dycr8Uli8os9BLb+xpNVj3LBklJI9x19JAQDxw+v3anjBcHkCTXul7rpyl+rPqj/h/Y7diWLEH0a0uC2YFow8djjpi57R/FNpQn2CLpx3oT771mfyNng15L0hLWtq8EYuHxh8QKHkkPqs7SOv36uzNpyl3ht6q3pYtXZduUvnLTtPB885qOy/Zqv+rHo5xols04cvEOw60edHklQf9GhAWmOL5fVBj9Lb+HZUtL+bPq1J088v2apuiSE9Vdpf/zxyl4yk/1hzrr45sCoyg9ZeqJOkS3sf0uySc1Uf9EZ+Dk7wGD1zRblu/nBEu/c7VkPIo7TjfIMDAMSXUFJIO766Q4f7HJbvOZ+O9Dpy4jt9yYbbNrT4Kbb50CXdK7rLn+5XUl2SjGP06R1NvwyNemVU5HIoJaTN121u8XjHztgFU4+ZeHCaZgE3X79ZvTf0Vq+NvVSZW6mhi4bqSO8jqvhKxSnX3lUQ7DrRixvP1vjsAy1+Eg2EHTWEvK22vwuEHf3XunP0jzmVykwK6jtD9+j7fxmmF8r6aV9jgg4HvJp2/skdt6dPSkAjs+q1aGdP3TqoSpI0dcVwPXZZ6+32mn+CPdasUTvVEPIo5QTT6gCA+HK4z+EOfbwh7w5R94ruCiWHtO2abcranKXkg8nacdWOyJjEw4kKpAdUM6hGIxaMUOLhRHmCHh3pdUTVw6qVcKRp79hQ8hd90Qk5csKOhiweor2j9qr2vFqd8/E58mf4Vde3Tpk7MlV7bm2HvhZbEOw6gT/s6OnP+uuvezP1yldLVR/0KMVr5HGMluzOUv+0xlbbv81dP0Bp3rAmD2raY9XrGE07f7e+/5dh8jpGvxm7Ud5TmHKeMqxSDxYNVP7RvW5La9OUmdi00tzyv1/M2r1/3bpW9y2rTWv1ky0AwF7NP2s2773a1t6y4YSwUg6ktJjp23TTpsgesV6/V32L+2p/zv4vHjfsaPCSwdp2zTbtHLNTZ60/S8k1ycranBXZaSJjZ4ZSq1O156I9kfuFkkIKpYRUfmO5zlp/lrK2ZGnT1zdp+NvDtW/kPg1/a7iOZB2RvzvbgX8Zwa6DrdrXXQ8Vn6cB6Y367dgy9UwO6MWN/fRsaT95HKPMpKD+7aIdLe7zxvbe+vPnPfS7q8p0MODVR5U99KddPVV5JFEP525XQ8ij//PJEOVk1uvv+h/Qpb3r1PcEOzWM6XNQ1w2o1pTlOcrJPKK8XnWRHTgWXtN01PBjZ+tCxlH+4osUNk17rM8YwTQ3ANgmbV+a/Ol+yVGL7dOGFQxT2r40OWFHh/ofanNnisrcSuW8lSMn2PYeqcZjdGjAIR0YekBS0xkkEo4kqPLiSvm7+9WrrJf6rumrjRM2KmtrlryNXoWSQ0rbn6aGHg0tHssT9CixLlFD/zRU+8/fr01f36Tunzf93BtIC6hqZJXOWn8WP8m2gWDXwUZnHdbsvG26uGddZNk9wz/XPcM/V9g4LfaObXZJ70PK7VWn2oBXU5aPUF6vOt02eK/yz66NzNJdP6Bab27vrd+Vn62K+gO69+gx7sb2rVVCO6eDve/CXTo/84jWVqfrzqOnJ3v26CnLJOm9v/vi4I5ex2j5jSUKhB0leIzYkRwA7NP/k/7qXtFdB4Yc0LH/0G+5bos8AY+MxyiQ3vY23JW+SlX6Wp8Ssz3hxLB2XblLB885qAt/f6EO9T+kjRM2yt/dr6qRVRpeMFyS5M/wa++Fe1vcN5QU0pHeR/R53ufqXtFdF7x+gYIpQe26cpckae/ova2eD03iun/7fD4jtTy4b7xrDHlanAsWLeUV+CRJRUVFcf23C8B+zT2q6F57etTp8oQ8Jzwcig18z7nfo9qZ64FbCHUAANt0hVAXKwh2AAAAliDYAQAAWIJgBwAAYAmCHQAAgCUIdgAAAJYg2AEAAFiCYAcAAGAJK8480XzQWgAAYk3zQWuBaIjrGTtjzFK3a0D08bkDiAf8W9U18bnjtPh8PtN8uhoAAGIJPco9cT1jBwAAgC8Q7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwAwAAsATBDgAAwBIEOwAAAEsQ7AAAACxBsAMAALAEwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsAAAALEGwAwAAsATBDgAAwBIEOwAAAEs4bheAExs9evSAhISE+7+0+N6j/3/u2IXBYHD22rVrd0WnMgBAVzdy5MhLk5OTf/elxSOO/n/DsQsbGxu/u379+lVRKayLSnC7AJxYTk7O5+Xl5d9wHKdvGzc3BzwZY/bk5ORMX7t2bRSrAwB0ZSNGjFhTXl5+vuM4bf0K2BzwZIwJjxgxYs369eujWF3Xw4xdnMjLy3vGGPP9440xxjxTXFz8g2jVBACAJPl8vvU6JsS1xRizvri4+MIoldRlsY1dnAiHw6+fxLCTGQMAQEd76UQDPB7P76JQR5dHsIsTHo9nmTGm+jhD9mdmZi6LWkEAABzlOM6vjDGmvduNMaZ79+6/imZNXRXBLk4UFhYGHMd56zhD3lq6dGkwagUBAHBUYWFhveM45e3d7vF4Ni1durQhmjV1VQS7OOI4Trs/tXo8Hn6GBQC4xuPxzGvvNsdx2r0NHYtgF0dqa2s/kHSwjZsO1tTUfBjtegAAaFZTU/O4pLZ+jjU1NTVzo11PV0WwiyPl5eWNxphFbdz0dnl5eWPUCwIA4Kjy8vKDxpjtX15ujNleXl7e1qQEOgHBLs6083MsP8MCAFznOM5rX17m8Xj+4EYtXRXBLs44jvOupPpjFtU7jvOeW/UAANDMcZw5bSx+LOqFdGEEuzhTWFhYL2lx83XHcf50dBkAAK4qLCzcJ6mi+brjOLuOLkOUEOzikDEm8tPrSR64GACAqDDGvNF8ORwOv3G8seh4BLs4lJSU9E7z5bS0tHeONxYAgGhKSUn5efPlbt26PeJmLUDc8Pl8b/t8vgK36wAA4Mtyc3Mr8/LyKt2uoytKcLsAnLbXHcdp9/QtAAC4xePxLFLbx7RDJ3PcLuBM5ObmrnQc5zK360B0GWOWFhcXj3O7DgA4HnpU1+R2j4rrbexYYbomx3Hy3a4BAE6EHtU1ud2jrPgptnBikdslIEryCnxulwAAp6ToXnpUV+F7zv0eFdczdgAAAPgCwQ4AAMASBDsAAABLEOwAAAAsQbADAACwBMEOAADAEgQ7AAAASxDsuqhA2FGYk70AAGAVgp0LGkIeVTcmqKI+6bjj3t7ZS/5w+x/R4aBXhwJN/x0Oek+phl991l9z1w84pfsAAOyUuSNTifWJbpchSUo8nKhBHwxq9/akuiRl7MqQE47rs6J2GivOPBFrnivrpyUVWZIkx5E8MqpuTFRWclCOpGRvWKnesDKTgnr00i3tPk5JdbqqGxN099A9bd4+8YOROq9bgyRp5+FkvX/dOuUV+NQv1d9i3P7GRP31puLI9Y/3Zmjelr7qm+LXyqqMNh/712PL1D0xdCovGwAQpzK3Z6rH1h7afvX2Nm93wo4u/vXFashq6jnJNckquadEo14epWBqMDIuuTZZJVNLJEmjXhnV6nESDycqkB5otbxmYI12jt0pSQqkB5S2L63F2Jw3cpR8MFnegLcp0Bmp9JZS1Z9Vf2Yv3EIEu07wD8Mr9Q/DP5fnmC8T498bpdfGbWj3PiHj6LK3c1uFspWSXtt6VuT650eSIqdQ8zhGvxm7MfL4kpTkMVo0/tPIeH/Y0dffvzByvWh/N80uOU9j+9ZqQFqjfjRyV6TOivpk/evqQRqVdVjdCHUAYB0n7Cj3hVwFUluHK0ka9T9fhLHEI4kquadEYW9YUlPg+uxbnzWNaw5tjiLLJOnC/9/enUdHXd/7H399Z7JAyAI0GBIgIIR9SyaIBnGBCm5Yub2i5Vdb6j1qf9eeHn5eb23PUTw9/PT0Utt6PMfbexVbtWotrheR8pMKskixtIGwLyYsiRACITsJs35+fyQzZEiAsOU78+X5+If5LjPzTibD+zWf+X4/3z+e7jfbH9ze4fELFhdo+3e3S2cZbBv14Si5Ai4Zl9Hw5cMj692n3Nr+4HYZN8cQnQ/B7jL7vLK3Xtmb3WF9vS9Bc9eM7vQ+79x6+k3RPpR15rplBV2qo8aboNTEoDZUZWhgSmtY/PJ4uv5vSa5+NblMozNa9KsdA/XwhpH64cgjKj6Rpk8q+uqxUUc0a1BNl54DABCftn+/NXQlnkxUcmOymvo3SZLSDqep5RstCvQIdLjuaeLJRI1+v7WPuU+1Hf5jFFknSQkt0bHC87JH3nRvZNkKWRr7p7FR+ySdTNKWh1u/VTo47aD67eyniqkV6n2wt/pv7q/9M/dr5IcjCXVdRLC7zKZl12ladp3+5YsRCprTH0ksS0pq+9QT1jc5oBcml0Wtu3Nlx6Hr9kLtHjNkrLOGxddL++svh/soJSGon01oHd7O79uk30/dp6yePjUH3JqU2ai/HU/Tk/8YquaAW98bVqVBvbxqCbrU84xaAQDxz7iMds/ZrcSTicralqU+ZX10NP+oAskBGZdRyvEUDVk9RMcmHNPOXHYpDwAAF0xJREFU7+yMjNbJkpqym/TVrK8kSUNWD1Hm7kw1DmhUzYgaZe7M1OEbDmvApgHRz+c22jl3Z2S54JWCqGVJKni1dcBi4IaBSj+cLlfApbR309Sjtoe86V7l/TnvCv5GnIdgd4Uca0mKGn2b8el4vXHT3qh9zgxxLstoxcyOQ9ft/efunKj9w6N94a9i/SFL938+RpIix8g9v32Q3rx5j9ZXZWhrTS/tqO2loy1JmpzZqCnXNOjHYw7rQGMPrfi6r57bOlgHmnroG8l+3ZZTq38f9/VF/gYAALGoT2kf9f2qr6rHVGvX/buUXp6uvBV5CiYFtX/mftXm1WrQhkFKakhSxU2tAwOj320dRBizZEzkcXof6C1fqk8px1OU2JyoUR+Okj/FrxEfj9C+b7UeJmQFraj7WCZ6ub2vbzzdb3LX5mrX/acPXxr/h/Ea+07rSJ8r6FLIHVLd0Dodvv7wZfqtOAfB7gqp9SXo0Q0jIssN/ujlMwVClnp0YZj5R6OPnHN7osvo+3lVqvUl6HvDqlR9KlHfXTdKye6QEiyjYWmnNDv3hIalt+hU0KXpKybo38Z9rZEZLRqZcVj/Z+xhNfjdKm3oqQEpvnM+FwAg/hwfd1yVkyqVcCpBuetzlVyXrL337lXSySQNXTlUx8YfU9ntZXIFT8/KsOuB1pCVcCpBffb3Ub/t/VR6V6lyNuWoZniNavNqFUzqeGy2cZvIfd1+t8b+cWxkOSw8YtdexqGMqGXLWJGRvomvTez0+D20IthdIX2SAnrlxn2R5Rmfjo9alqJH7JoCbmUkBjqsP1NOile/azth4mxfxU7o26T/2DZI3xtWpbVHMzT1mgZJrV8T/+tfh+u3e1qPATTGUsC4NPPT6OdLsHTekUMAQJwyUs7fc5S5K1PHxx3XwVsPyriN/L382vetfcr5e4767ein6jHVqru2TklNScoqyVLPmp5ye92qG1qnr2Z9JX8vv0rvLlXmnkwNWzFMbr9b/hS/Aj0CKr+lXCF3SFbQioy0WcaS2+eOLHdmzLuto3kJ3oTIbVwYgt0VUutL0Lz1IyPLDf7o5TMdbU5STtsIWbU3QX+/Z0uHfY40J+lfN54+SyjJ1fGrWEnK7eVVnS9R5SeT9e7BflowsTyy7b+mfBW5/fLebNX7EvTk+IrIuuaAW3d/dvY3HQAgfvUp66PBnw9WQ26DXAGXMndlKnNXZof93H63Mg5myJfqU1N2k2qH1irjUIa8GV6lVqYqrzJPu+/braGfDlViS+v8d66AS2mH07R39t7IsXnlN5XLuIxOjDqhb+z5hnrW9tTXRdGH+LQ/E7fixgoFegSUtzxP+2fuV6+jvVQ/pF6j3+v8eHJ0RLC7Qj6/c6uSXKe/Wu3sGDtfu8kVd9f31IiMyzcfz9yhx/S//zpCozKaNa7PyQ7bd9el6N0D/TrUVONNUG+mOgEAR6ofXK8dD+5QMCmogsUF2jZvW4d9wlOilN15+uS+uqF1Cv412GG6k561PaO+Fh3/1vioueUaBjVo+PLhCiWG1G9XP5XffHqgISx8hq7b71buutzICRqBnoHWEzz294k6sxbnRrC7Av5QmqWVR/pErav3JejBdaM67PvWzXskSWuP9tbcoce6/BxHW5LUr0fn8xBJ0qBeXlW1JGpGzqmo9UFj6aNDmfqvPdlakF+ugb288gZdSm77dLXxeLpyU0919pAAgDgXSggplBDqtqs2+FP9qvRUasjqIQomB5VxKEOJTYnypfvkT/ErmByUsVoHQdLL01U/uF6+NJ8sYymQHFDpnaXKXZer5kwmIu4qgt1l9j+HMrXi676dbgt28kaau2a0np5YrvKTybqhX6Ok1mPnZrWbVDhyf2NFpkz5oipdE/s26WTAraCREttdeWx1ZW89v32Qnr9uv17dl62f/D1ZT4z7WgebemhhSa4G9vLqv6d8peHpLZKkpzYP0bqjGUp2G/VJ8usXhQcv8bcAAIgH7b8GPZ+EloTInHXt56vrbB67HrU9NGDTAKUcT1FjTqN237dbgR4BZVRkKL0iXT3qeii5MVkJLQmyQpZ8aT7tmrNL/hS/JrwxIXKFC1+aTz3qeqgqv/MrMKEjgt1lNntwtWYPrr6g+9T5ErSw4JBcbZ9a/mX40U7Pfm3wu7W0vPVYiFpvor6Ve0K/2jFQO2t7ac6Q45Ikt2W06XiaXioq1bC0Ft3Qr1Ev7hqgt8uu0WOjj+iFyWUamdES9bi/um6/QqY1UCa4mAASAJzOWEY1w2t0cPrBTjZKQz4f0mH1rgd2Rb4STWpsvdb53nv3ypd2egaF5IZkSdKp3qd0fOxxNfVvUijh9LyoJ0ac0IkRJ6Ie1wpZsowl4zZqym7q8PXwgdsO6GTW6UOKavKYRP9c4voKuh6Px0iKXGILzlf4cetM6Js3b47rv10AzhfuUZt/SI+6WoSv1mFnj3KdfxcAAADEA4IdAACAQxDsAAAAHIJgBwAA4BAEOwAAAIcg2AEAADgEwQ4AAMAhCHYAAAAO4YgrT4QnrQUAINaEJ60FukNcj9gZY9bYXQO6H687gHjA/1VXJ153XBSPx2PCl6sBACCW0KPsE9cjdgAAADiNYAcAAOAQBDsAAACHINgBAAA4BMEOAADAIQh2AAAADkGwAwAAcAiCHQAAgEMQ7AAAAByCYAcAAOAQBDsAAACHINgBAAA4BMEOAADAIQh2AAAADkGwAwAAcAiCHQAAgEMQ7AAAAByCYAcAAOAQBDsAAACHINgBAAA4BMEOAADAIQh2AAAADkGwAwAAcAiCHQAAgEMQ7AAAAByCYAcAAOAQBDsAAACHINgBAAA4BMEOAADAIQh2AAAADkGwAwAAcAiCHQAAgEMQ7AAAAByCYAcAAOAQBDsAAACHINgBAAA4BMEOAADAIQh2AAAADkGwAwAAcAiCHQAAgEMQ7AAAAByCYAcAAOAQBDsAAACHINgBAAA4BMEOAADAIQh2AAAADkGwAwAAcAiCHQAAgEMQ7AAAAByCYAcAAOAQBDsAAACHINgBAAA4BMEOAADAIQh2AAAADkGwAwAAcAiCHQAAgEMQ7AAAAByCYAcAAOAQBDsAAACHINgBAAA4BMEOAADAIQh2AAAADkGwAwAAcAiCHQAAgEMQ7AAAAByCYAcAAOAQlt0F4PwmTJgwMCEh4ekzVv+w7d+X268MBALPbtu27evuqQwAcLWjR8UWgl0cmDNnjru0tPSwZVlZ59rPGFOVl5c34L333gt2V20AgKsbPSq2uO0uAOe3a9cuM2DAgGGSJp1n1zdXrVr1SXfUBACARI+KNRxjFydCodAHXditK/sAAHBZ0aNiB8EuTrhcrrXGmJpz7HIiIyNjbbcVBABAG3pU7CDYxYni4mK/ZVlLz7HL0jVr1gS6rSAAANrQo2IHwS6OWJZ11mFsl8vFEDcAwDb0qNhAsIsj9fX1n0lq6GRTQ11d3arurgcAgDB6VGwg2MWR0tJSrzGmszOKlpWWlnq7vSAAANrQo2IDwS7OnGWomyFuAIDt6FH2I9jFGcuy/p+k5narmi3L+tSuegAACKNH2Y9gF2eKi4ubJa0IL1uW9ee2dQAA2IoeZT+CXRwyxkSGtbs4KSQAAN2CHmUvgl0cSkpKWh6+nZKSsvxc+wIA0J3oUcBF8Hg8yzwez8d21wEAwJnoUfZJsLsAXLQPLMsydhcBAEAn6FE2sewuoBtYhYWFdxljHpA0WVK2pHSba8JpDZIqJW2yLGtJcXHxnyXxnwGAqwU9KrbFXY9ycrBzFRQUfNeyrCcljbO7GHTZDmPML7ds2fK2pJDdxQDAFUKPik8x36McGeyKiop6er3eNyX9syTl5ubq/vvvl8fjUU5OjlJTU2VZjvzR44oxRk1NTTpy5Ig2b96sd999V+Xl5ZIky7LeT0pK+v7GjRtbbC4TAC4relR8iNce5bi/nAkTJlyTkJDwsaTr+/fvr8cff1zTp0+Xy8UJwLEuFApp9erV+s1vfqOqqipJ+lsgEPjWtm3bjtldGwBcDvSo+BUvPcpRwa6wsDDRGLNe0vWjRo3Siy++qMzMTLvLwgWqrq7W/PnztWfPHkn60rKsm4uLi/121wUAl4Ie5Qyx3qMc9RHBGPOcpOsnTpyoxYsX84aJU5mZmVq8eLEmTpwoSTcYY561uyYAuFT0KGeI9R7lmBG7wsLCmcaYT9PS0sySJUusrKwsu0vCJTp69Ki+853vmMbGRsuyrNuLi4tX2l0TAFwMepTzxGqPcsqIncsY87wkPfPMM7xhHKJ///5asGCBJUnGmF/KQR9EAFxV6FEOFKs9yhHBLj8//x5JE/Lz8zV9+nS7y8Fl9M1vfjM83D2xoKDgHrvrAYALRY9yrljsUU4IdpbL5XpGkh566CG7a8EVEH5dLct6RjHyiQgAuoge5XCx1qPiPtjl5+dPlOQZNmyYbrzxRrvLwRUwdepUDRs2TJIKCwoKJthdDwB0FT3K+WKtR8V9sLMs658kaebMmUzo6FCWZWnGjBnh2/9kczkA0GX0KOeLtR7lhGD3bUm66aab7C4FV9DNN98cvvltO+sAgAtBj7o6xFKPiutgV1hYmCtpXFZWlkaMGGF3ObiCRowYobYzyca3ve4AENPoUVePWOpRcR3sgsFggSSNHz/eMUPc1dXVna43xqiioqKbq4kdlmVp/PjxkqRQKJRvczkAcF70qKtHLPWouA52lmWNl6ShQ4faXco5vfDCC1q/fv1599u7d6/uuusu1dTUdNjm9/s1e/bsDutDoZBWrFjRYf3rr79+UbXGsmuvvVbS6dcdAGIZPYoeZYcEO5/8UlmWNUFS+GyUmDV69Gi99tpr5z3GYuXKlbruuuvUt2/fLj/2zp07tWbNGt15551R619++WX94Ac/6LC/z+dTUVGRUlNTo9Y3NTVFrWtqatKmTZvkdru7XMuV1u51tv2sIwA4H3oUPcoOcR3sJA2TpEGDBtldR8Qtt9zSYZ0xRsFgsNNtv/vd75SXlye/36+PP/5YCxYsuKDn++yzz5Sfn6977703ar3f7++w7qOPPpIkuVwurV27NrI+GAxq8uTJUesKCwsvqI7ukJsbOWwhz846AKCL6FH0qG4X78EuQ1KHZG+n9n94Bw8eVE5OjpKSkiS1/nGWlJR0+ge5YsUK1dTUaMqUKSoqKjrr4xcVFWn69Ol67rnnFAgEtHbtWr333nuaO3duh/2WLl16mX6q2NDudU63sw4A6CJ6FD2q2zki2PXq1cvuOjrYvn275s+fr1/84he6/vrrJbUedPrss89q+vTp+tGPfiSXq/UQR7/fr1dffVVS6wGYGzdu7PB44eHp9ts++eQTeb1eJSYmatasWZE3Z/gxv/3t1rOum5qatHLl6WsTh0KhTi9rE+uXuklJSQnfzLCzDgDoInoUPQoXwuPxeD0ej/F6vSaWrF+/3kybNs28//77JhAIRG3bsGGDeeihh8zjjz9umpubjTHGLF682DzyyCPG4/GYQCBgAoGA+eCDD6Lu6/V6jcfjiVqeM2eOueOOO4wxxtxwww2RbaFQyBQVFUWW22/zer1m0qRJUTUFAoGoxzbGRGqJJeHfgcfj8dr9twcA50OPokfZIa7Pio1Fb7/9tn7+85/r+eef16ZNm7Rs2bLItg0bNmjRokV66aWXFAgEIscqVFRU6Jlnnons53K5tGrVKr322mtnfZ6lS5e2nxAxSiAQOOsBpcFgUImJiRfzowEA4hw9yvni/avYBkmZzc3NUUO8diooKNCtt96qAQMGKDU1VT/+8Y91yy23KDU1VS+++KIee+wxpaSk6Ne//rWOHTsmSXr66aej/pAty9KCBQs0d+5cTZs2rdMzqiZPnqxrrrlGy5cvlyQNHjw4MqwdCASihrn9fn/kfl6vVz6fL3L5k/Y6WxdLTp48Gb5Zb2cdANBF9Ch6VLeL92BXLynz5MmT6t27t921SJLGjBkTuT1y5EjNmjVLP/vZz5Sbm6vc3FzdfvvtkqTExEQNGDAgcvtM/fv31xNPPKFAINDp8wwePDhqef78+Vq2bJmeffZZbdiwQW+++aZeeeUVSVJlZWVkv4aGBo0cOVJvv/12ZF34jKO//OUvkXWxeMZRc3Nz+CbBDkA8oEe1oUd1HycEOzU1Ndldx1k9+OCDuu+++1RSUqJ33nnngu47a9asLu87efJkvfPOO3rsscfk9/s1ZcqUyLbs7OzI7cOHD0ferPGm3evcYGcdANBF9Kg29KjuE+/H2JVJisnLmFRXV2vx4sWaM2eOpk2bpkcffVQPP/ywXnjhBR08eLDLj9PQ0CC/36+ysrL2Z9x04Ha79dRTT2nPnj0qKSnRqVOnVF/f8UNDSUmJxo4dezE/ku3Ky8vDN0vtrAMAuoge1YYe1X3iesTOGLPNsqw5ZWVluu222+wuR8YY/elPf9K6deu0detWTZs2Tb/97W81cuRISa2fbt544w3NmzdPffv2VX5+vn7yk5+c880wb948lZeXKzExUY8++min+1RVVemDDz7Q+++/r3vuuUezZs3S73//e91xxx0aNWqURo8erWuvvVazZ8/W8uXL9dJLL521/mAwqNraWrlcrpi7tmFZWVn45jY76wCArqBHtaJHda94D3bbLcvS/v377S5FUusBpZZl6fbbb9eiRYuUnh49R2FWVpaefPJJzZ8/Xxs3blRjY2PUG+b111/vcKbQkiVLFAwGlZycHJlTqL1JkyapqqpKPp9Pb731lnJyciRJixYtUl1dnb788kvt3r1bAwcOjPw7ZMiQDnX37NlToVBIU6dOVSAQ0NSpUzt9PjsdOHBAUuvrbnMpAHBe9Ch6lB1iK+5eoMLCwlxjzKGsrCwtX7485tJ7LDrzentnMsYoEAjE3OnmxhjdfffdqqqqkmVZg4uLi8vPfy8AsA896sLRoy5dbMXdC9T2i9tRVVWlffv22V1OXDjfpW0sy4q5N4wk7du3T1VVVZK0nVAHIB7Qoy4cPerSxXWwkyRjzIeStH79ertLwRW0bt268M0P7awDAC4EPerqEEs9ygnB7iNJWrlypYwxdpeDK8AYE5m/KPx6A0A8oEc5X6z1qLgPdiUlJVslbS4rK9OGDRvsLgdXwBdffBE+26h4y5YtnBELIG7Qo5wv1npU3Ac7SSYUCi2UdM7r1iF+hV9XY8xCSXzkBRBP6FEOF2s9ygnBTiUlJR9L2lpSUqLVq1fbXQ4uo1WrVmnr1q2StHXLli3Lzrc/AMQaepRzxWKPckSwk2Qsy3pSkhYuXGjazkxBnDt69KgWLlxoJKnt9bX9kxAAXAR6lAPFao9yn3+X+FBZWVmWnZ3dy+fz3bhjxw7NmDEjJk+JRtc0NzfriSeeUEVFhSXpl5s3b37Z7poA4GLRo5wllnuUU0bsJEmWZT0l6cutW7fqkUceUXV1td0l4SIcP35cDz/8cHh4+0vLsp62uyYAuFT0KGeI9R7lmBE7SaqsrAz169dvmcvlurm6unrgZ599pqysLA0ZMoQZv+NAKBTSqlWr9NOf/lSHDh2SpC8DgcC9JSUljXbXBgCXih4V3+KlRznyL6moqKinz+f7gzHmPkkaNGiQHnjgAXk8HmVnZys1NTXmrjF3NQqFQmpqalJlZaU2b96sJUuWqKKiIrz5veTk5HkbN25ssbNGALjc6FHxIV57lCODXRuXx+P5X5J+Kmmc3cWgy7ar9XiFP0oK2V0MAFwh9Kj4FPM9ysnBLsyaNGnSncaYB4wx10vqLynD7qIQUS/pqGVZf7Msa8k//vGPFYqRM4sAoBvQo2IbPQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgNj1/wE0yghPL7PNUQAAAABJRU5ErkJggg==" alt="">
那年容器编排江湖混战,K8S还不流行,加之时间精力有限,技术实力也跟不上,生产环境没敢贸然上线编排,单纯在之前的主机上跑了Docker,主要解决环境部署和扩容缩容的问题,Docker上线后也确实解决了这两块的问题,还带来了诸如保证开发线上环境一致性等额外惊喜
但Docker的运用也并不是百利而无一害,将同步代码的方式转变成打包镜像、更新容器也带来了上线时间的增长,同时由于各个环境配置文件的不同也没能完全做到一次打包多环境共用,本文主要介绍我们是如何对这两个问题进行优化的
python多线程使用
分析了部署日志,发现在整个部署过程中造成时间增长的主要原因是下载镜像、重启容器时间较长
整个部署程序由python开发,核心思想是用paramiko模块来远程执行ssh命令,在还没有引入Docker的时候,发布是rsyslog同步代码,单线程滚动重启服务,上线Docker后整个部署程序逻辑没有大改,只是把同步代码重启服务给换成了下载镜像重启容器,代码大致如下:
import os
import paramiko
# paramiko.util.log_to_file("/tmp/paramiko.log")
filepath = os.path.split(os.path.realpath(__file__))[0]
class Conn:
def __init__(self, ip, port=22, username='ops'):
self.ip = ip
self.port = int(port)
self.username = username
self.pkey = paramiko.RSAKey.from_private_key_file(
filepath + '/ssh_private.key'
)
def cmd(self, cmd):
ssh = paramiko.SSHClient()
try:
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(self.ip, self.port, self.username, pkey=self.pkey, timeout=5)
except Exception as err:
data = {"state": 0, "message": str(err)}
else:
try:
stdin, stdout, stderr = ssh.exec_command(cmd, timeout=180)
_err_list = stderr.readlines()
if len(_err_list) > 0:
data = {"state": 0, "message": _err_list}
else:
data = {"state": 1, "message": stdout.readlines()}
except Exception as err:
data = {"state": 0, "message": '%s: %s' % (self.ip, str(err))}
finally:
ssh.close()
return data
if __name__ == '__main__':
# 演示代码简化了很多,整体逻辑不变
hostlist = ['10.82.9.47', '10.82.9.48']
image_url = 'ops-coffee:latest'
for i in hostlist:
print(Conn(i).cmd('docker pull %s' % image_url))
# 在镜像下载完成后进行更新容器的操作,代码类似省略了
全部都是单线程操作,可想效率就不会很高,为什么不用多线程?主要还是考虑到服务的可用性,一台服务器更新完成再更新下一台服务器直到所有服务器更新完成,单线程滚动更新最大程度保证服务可用,如果同时所有服务器进行更新,那么服务重启过程中无法对外提供服务,系统会有宕机的风险,且当时项目规模都很小,忽略掉了这个时间的增加,随着项目越来越多,规模越来越大,不得不重新思考这块的优化
引入多线程势在必行,那么多线程该如何应用呢?从服务整体可用性考虑,把下载镜像跟重启容器两个操作拆分,下载镜像不影响服务正常提供,完全可以采用多线程,这样整个下载镜像的时间将大大缩短,优化后代码如下:
import threading
# 再导入上一个示例里边的Conn类
class DownloadThread(threading.Thread):
def __init__(self, host, image_url):
threading.Thread.__init__(self)
self.host = host
self.image_url = image_url
def run(self):
Conn(self.host).cmd('docker login -u ops -p coffee hub.ops-coffee.cn')
r2 = Conn(self.host).cmd('docker pull %s' % self.image_url)
if r2.get('state'):
self.alive_host = self.host
print('---->%s镜像下载完成' % self.host)
else:
self.alive_host = None
print('---->%s镜像下载失败,details:%s' % (self.host, r2.get('message')))
def get_result(self):
return self.alive_host
if __name__ == '__main__':
# 演示代码简化了很多,整体逻辑不变
hostlist = ['10.82.9.47', '10.82.9.48']
image_url = 'ops-coffee:latest'
threads = []
for host in hostlist:
t = DownloadThread(host, image_url)
threads.append(t)
for t in threads:
t.start()
for t in threads:
t.join()
alive_host = []
for t in threads:
alive_host.append(t.get_result())
## 多线程下载镜像结束
print('---->本项目共有主机%d台,%d台主机下载镜像成功' % (len(hostlist), len(alive_host)))
重启容器就不能这么简单粗暴的多线程同时重启了,上边也说了,同时重启就会有服务宕机的风险。线上服务器都有一定的冗余,不能同时重启那么可以分批重启嘛,每次重启多少?分析了流量情况,我们想到了一个算法,如果项目主机少于8台,那么就单线程滚动重启,也用不了太长时间,如果项目主机大于8台,那么用项目主机数/8向上取整,作为多线程重启的线程数多线程重启,这样差不多能保证项目里边有80%左右的主机一直对外提供服务,降低服务不可用的风险,优化后的代码如下:
import threading
from math import ceil
# 再导入上一个示例里边的Conn类
class DeployThread(threading.Thread):
def __init__(self, thread_max_num, host, project_name, environment_name, image_url):
threading.Thread.__init__(self)
self.thread_max_num = thread_max_num
self.host = host
self.project_name = project_name
self.environment_name = environment_name
self.image_url = image_url
def run(self):
self.smile_host = []
with self.thread_max_num:
Conn(self.host).cmd('docker stop %s && docker rm %s' % (self.project_name, self.project_name))
r5 = Conn(self.host).cmd(
'docker run -d --env ENVT=%s --env PROJ=%s --restart=always --name=%s -p 80:80 %s' % (
self.environment_name, self.project_name, self.project_name, self.image_url)
)
if r5.get('state'):
self.smile_host.append(self.host)
print('---->%s镜像更新完成' % (self.host))
else:
print('---->%s服务器执行docker run命令失败,details:%s' % (self.host, r5.get('message')))
# check镜像重启状态 and 重启失败需要回滚代码省略
def get_result(self):
return self.smile_host
if __name__ == '__main__':
# 演示代码简化了很多,整体逻辑不变
alive_host = ['10.82.9.47', '10.82.9.48']
image_url = 'ops-coffee:latest'
project_name = 'coffee'
environment_name = 'prod'
# alive_host / 8 向上取整作为最大线程数
thread_max_num = threading.Semaphore(ceil(len(alive_host) / 8))
threads = []
for host in alive_host:
t = DeployThread(thread_max_num, host, project_name, environment_name, image_url)
threads.append(t)
for t in threads:
t.start()
for t in threads:
t.join()
smile_host = []
for t in threads:
smile_host.append(t.get_result())
print('---->%d台主机更新成功' % (len(smile_host)))
经过以上优化我们实测后发现,一个28台主机的项目在优化前上线要花10分钟左右的时间,优化后只要2分钟左右,效率提高80%
多环境下配置文件的处理
我们采用了项目代码打包进镜像的镜像管理方案,开发、测试、预发布、生产环境配置文件都不同,所以即便是同一个项目不同的环境都会单独走一遍部署发布流程打包镜像,把不同环境的配置打包到不同的镜像中,这个操作太过繁琐且没有必要,还大大增加了我们的上线时间
用过k8s的都知道,k8s中有专门管理配置文件的ConfigMap,每个容器可以定义要挂载的配置,在容器启动时自动挂载,以解决打包一次镜像不同环境都能使用的问题,对于没有用到k8s的要如何处理呢?配置中心还是必不可少的,之前一篇文章《中小团队落地配置中心详解》有详细的介绍我们配置中心的方案
我们处理不同配置的整体思路是,在Docker启动时传入两个环境变量ENVT和PROJ,这两个环境变量用来定义这个容器是属于哪个项目的哪个环境,Docker的启动脚本拿到这两个环境变量后利用confd服务自动去配置中心获取对应的配置,然后更新到本地对应的位置,这样就不需要把配置文件打包进镜像了
以一个纯静态只需要nginx服务的项目为例
Dockerfile如下:
FROM nginx:base
COPY conf/run.sh /run.sh
COPY webapp /home/project/webapp
CMD ["/run.sh"]
run.sh脚本如下:
#!/bin/bash
/etc/init.d/nginx start && \
sed -i "s|/project/env/|/${PROJ}/${ENVT}/|g" /etc/confd/conf.d/conf.toml && \
sed -i "s|/project/env/|/${PROJ}/${ENVT}/|g" /etc/confd/templates/conf.tmpl && \
confd -watch -backend etcd -node=http://192.168.107.101:2379 -node=http://192.168.107.102:2379 || \
exit 1
Docker启动命令:
'docker run -d --env ENVT=%s --env PROJ=%s --restart=always --name=%s -p 80:80 %s' % (
self.environment_name, self.project_name, self.project_name, self.image_url)
做到了一次镜像打包多环境共用,上线时也无需再走一次编译打包的流程,只需更新镜像重启容器即可,效率明显提高
写在最后
- 缺少编排的容器是没有灵魂的,继续推进编排工具的运用将会是2019年工作的重点
- 实际上我们在Docker改造稳定后,内网开发测试环境部署了一套k8s集群用到现在已经一年多的时间比较稳定
- 线上用到了多云环境,一部分线上项目已经使用了基于k8s的容器编排,当然还有一部分是我上边介绍的纯Docker环境
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAa4AAAHbCAYAAACTGn7oAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAPAISURBVHhe7P13oBzXcSWME4lB1JK/39/ft7tWICUxIAMEQZBUti17Za0ty5a99gbvyl5bIhEfIknJQQ6y1rS0tpUlKgfmACaQAJhzVmLOmUROD6G+Oj1z3qt3X3Xfnuk0Q8whD27PnRvqVtW91be73/QhMsAAAwwwwAB9hEHgGmCAAQYYoK8wCFwDDDDAAAP0FQaBa4ABBhhggL7CIHANMMAAAwzQVxgErgEGGGCAAfoKg8A1wAADDDBAX2EQuAYYYIABBugrDALXAAMMMMAAfYVB4BpggAEGGKCvMAhcAwwwwAAD9BUGgWuAAQYYYIC+wiBwDTDAAAMM0FcYBK4BBhhggAH6CoPANcAAAwwwQF9hELgGGGCAAQboKwwC1wADDDDAAH2FQeAaYIABBhigrzAIXAMMMMAAA/QVBoFrgAEGGGCAvsIgcA0wwAADDNBXGASuAQYYYIAB+gqDwDXAAAMMMEBfYRC4BhhggAEG6CsMAtcAAwwwwAB9hUHgGmCAAQYYoK8wCFwD9CgekUceUbY/DTDAAM1j7ScOkUMOAefLuQ1OzkHgGqAnMTpBlPM/IWt7JoK1A+pBGFFb4+6xgT92ney5tsV97aw3NtbKJ+bPl/nzz9WjuvGInDvfzEvl/IaiV6OBq7kFYK0aAMafL59wFQ8D4fteWjAfl32Pge2Pb3CMDVznNrbzeuQR9ZVzP9FaLMyEbfSMsx1AErazqsYj587vCXuIzoE9135Vtn3oI/La//v2sVx8XbtQM9jHAFrhHLXz4hP1R66x8zKhrpHt7+pEc4Fr7SfM4J0A8si57YVCvytbMyNtK73G7fcwTGOzlLhOtpkJuqXhCVoHxkyQumcogtUnwkClbJ/stFjnGa8GqLXnJsFzjDxgHboZM1dJ1YH2Xe2J53Wya/GQbFNu+ZAJUKn8iOyqIGi0Thgfb39KQzhHv1rBDjDc8TQRNB6RtTiR+wSoc6ChxbG5wDUmOCjHnMXpdjj1uxJgJqI77zNlqxI6QZKzNjtJHpddwaRF4Krvsgj6/4guHB+RbV+KTd7yYANXbZcjNGB9IrgU0sRlymQntZY7vUCekFUHrnAueKxsfowNBmncooFtF+ZNFUHrS6M7u23XtjNdBLJ+qI7A1dylOvjo2nP1ZAoneFammtbKHtlxWQOMXTySs7r2N2XBXvbw530QOFPLlYHHZc+XgjNKs6OyE+e1Dw2VPDnzXH4MziRrCV7BBNXg0TrDa7GSQJIErfZuCv2cuzY5m8ROp7XDqiOAjfe7dOJKRNUCBfIkOtAFK7xcVOFitWfxqO+FrPwE7rGvyhbbZ+aVjprmia6bY04kqj5xaYOXzMcEKZf1XELvmcDV0n8QtCrSwGjgylByckYBQ7UWs/IXCQ1Y3qS0Z2rXDpnvNGi1s8uB2cllnh2GZ73VXI4hMEESvbd9wGP1C/Yoxl/TJ6uZoGPuJbnUfmsZ/9iTh5G5WMvVCPXN9iXCXV/6avv4q3rSpr4YXH3YNubqRJkI/D4aJOs8weNu5xMVBon2JcFooBolTu4qO7EM0FjgCifofBhi5HO1Z5Oji5EquZ3XBPZpYBpzRjcmgNiJUPZOCxg/MdOwZ3F4I7zcILpWfSF6OartE5XPifZlujyTthofHd3lzP/Eucm9NttnXZeGxgdsBOpwt1XR/Al2OiOX6MacyCkruRzXQnhSmezuMufg2Ev69VyZGEWyIzK+UoafpJ20wS/Hn1zWu5b2TOAaYQ2XZHIFrrYjjF9QcSmpxJvSmKTJPaSxwcBOnEomQXgZJLaT0rNdngVvK/kSTXyXUdOkyLyfA7trIEHwrCd2JHhEFwhfnjZ1viQytcuXAWuPsSeUhlXey3CvNIT3esu+AmEQBsiA/iXKOndcQOsytvvATsLyrgiMnZ+tuThuzjqXLEeefK3AUXoqcFVxP2s8wvsn5qlFXqYKzrSTM4zEAHZhM/VKxpj7WglbD0eU+6RSuBDUf5Y4itH7S5/AQunudPBd1f6hvpHcbNa+xiwIuCTTnoTYjY0jdka4TAI/aTfVNdBH+oKE+2/+fYaS/HHEx0174VOFFd+AH+P/vBIQnmi1Hxgae/KlPqwngLsKXT4MrnRoTjgf/ad6awhcif9lBauAJS1Q8RPLOMu+UtAzgWucjtVIyXVcY6Qil2a4lXbPqNudj9ka43otFsoxXYY3z8veCeBBjTBoWVZwlpn8XUwnf3/CBzpiD3V0h0fCRTJke4dRNdIuk0RZYFHPs0C0fDL0wxarvyds+tJ5iRPNKjDuakOy27fzIAe7uoxoT+bGXoHg32ilX7IvMXDhBJonQ9Bz5JL1CJO5YU6oxi5eXaEVKJ2+Oma594QbC1xjF4b2oLKCS8JOA8XYhz08YrInxuEZsxrctbe3WOgiVXTq7sOkxFOFxul91vs4+ggQ2L6U8gefylLPLFOC1oiNjC1bu+B2vTKAE6XED7L8Lw+7naChf2HHo4uPF8w0YIwPrNVcTo0F0/KDZXDv1SXmAk+0Uk723F1RNvI++p7cm25f3t8FOZLc8gJXdzucEuyvc4APR2Wtm8kVCV0vkyCZ1Al8AHn6HQKvvUJVpqv0SODKz05P8jL7QWP28p85W8a9hSSYJWe4rd3fucrkEenQUN1g3D0mn7g8uEeDR31o38tKCVQhSwtc5jFfLIbWbtbm2JHZwNJ6TL0Le7RtGrvskgTIts29bnj5MJmkydkxLiu2v+wI/i7KY6ifhKXvfsJL6jo3dK6Ml7HcBSl7XiBg6Xxon0i1ymneuIeHunny1QSekd1a+6Rt5KnGtq+PuQfGvoKA20XgHMG4E7hw1zV+F1bI/Bn3dpMnBZN1r7XT504w8fWwfE1XQ4CGAldkJ9Te8iaLQrtG1zBO0Hpc0yxUuiiN/YM+nrWkPApcKoKnkJxgUepuZgQ6wZKzRWWOm8w+URcTuV2lIGwwoq5HF2ZnYfR2v0rc/0n8pl3MA3Zu4y+96BkkJif8zZ7tJn7Y3oU5AS458yxxosZP5lQXSX9BUPF0VATjFjK0j2CZFuTL63/8/d1sJvd9w4cpOg4a4VzEI/i+HMmcdB8eKTFwqX1bJ8rpvjzWT4veczT+BJ83t0gwX7Kvgo0nTvbKdEcPtQau8JHNccSltwpGPOZsecykbE9I7q70tCUpNuaMpxXMRnZcpcrXulc0gmACZv+lfpcIzmjd4DjmCUJnAhealGNhJ6A9QUhbxJMdjRrh3Mginzp5jP3HX27Mv+sZYZk7HeubyQ4Huznri63AlQTfkTxl6bstRTJnOG/CQKmEHQIbFBfDBhANCPi7rcD3WpfosMsaPXEKH13vdN64f08Jfggnkzavvbuy89TszsY87FTiHPGQNm/KROxEqnXJUOfQuCdfSz6RclBp4Mr9szVtVmUAIu+EtwZLZAoXlKQUJ3Z5MrtPE475PJ6d7srG9JHrBrazeJSxE8RJjPGLlp5bJxFjbJRKnBnyhKO1I2qxlZd1tpoGd6K2d1W0eVimbJ8dsyAll2TG9uexirg1AuxuAxlaT/96wazgmbYJCCM+ZoOEEwxwj3iMf3b4UMb4v1Fskf2PnZPt3VWtgWv0ZAq+zROtUT+sLkjEAleLOLEPTvgK7wDjqDBweWevurBgodHFYGy+YfuMumyM2Vq36S464y6T5GCRlSPy8EOcnVzPN5Mr9wTPuHTYzeREcBq363YuRbTP5pIdBk4QQvuVPDk8/wATf20TbhmWKydwMTi0rwBkXZUIWeUi4c0FLJ7JV6GMrfwiGNn5BL45uiPCTqt1FSDthK6T3da4oKX94snB5HcP8ZRtUmbs94lc9qpFjYGLTE5oRj4X13sqxtjfzFGcIKoMI5flg3tylZ5ItVHpjmskYidnCmZ62YHqxHMvH5qzi6JIPXPAmePIrtCTIf8Cks9YuDTYeoowf6DipRFeuuMTTaNlcu+AzIQbM8E13156SeRMXh0x2ofL3JNTAw/uFbm7Bw1QgZ5bukTAws1gUB0hWETL3OlEH8FP2D6zrWKSjhlba654wSvZ+Y0JGHUtWhG2g1khpPlmgiAoGOLJvvFBJI7w6saW9tOBNj+572zKWLkwP/BEoZ0zVQWucTtby4p3N2N3dq2TSMzJ1tUOXOEwsoB1RC1FIw9n2EAysgC1J2v49Iz/vqz86Ojs1bAl19izndaN+NaCGt6wjC2kqdfRleNf2aC7qCp+g23kEsfYvwdrTdb2zi24B+YSv/LR0ZOOrcDV+iNdEDup1qO0ra+zFknVM3Rb0VnduEAQBrHwCkDlgatN9HuuyR+zQLUWkGyP6xY6D+3lWo4/zUalLJx5rgTwaVfjhx1dbTAYmQd6Ahg8ZBQGtBFGg2JVgYuAXZy1rOLAFa6B2az+3hbRQOCy18b9gY67F9XV7su5Bq8c8xM2yeUoXUidP+pEkBrjKK6DtCY5LyNlYXRCtCYLLkeM/gGvvRynu6sOby7nxYgMYyYV+055Omocu1wsMjHeVq0HJ6hUnNTY78vYaWif4UkNopANTGrz1t92tWzcOpepIoBCltE2PZa5w8wE5kF7vGN/qcSZT2XstBRjdjnjrh48nlzSS/5mKvG7sXOlbF8cc1kSV0baVzny9DPm5LT0wNWCe0m76uAVrI1jWY4PdIpmA1emwnGWHtyoT85CEWTaRbIQnjkrW4uMMcLIquNMyoBlLBxpL6NLn7jtX6hofyoK9jOmD559Zpzpjg1kY3drpcHaS+2SXJLASQaupxs78PtCcHYPI08hOn6TEL6HApUErlGkX1JVcvfTBMbprKQFK9zhhydV43Ziwc4muWxuiUCDe1XdzJuUnR8eANHgFfvzj8oDV9aViZJOIuIYH8RGH4wi9aSnYj9tIHB5gcMguadhzvQyjJU8Gp369NjYYDQaeEz/YwJn+xKgvUxiOP7R6ZKQ9dSUmdTJy/JG/kq/O4wPXGaipk20cGGJXjLpHvku6xacoMll3vaOon3JcoxZg8CU2N0avuLARaTelwVrDmDjTiATGUo4y896IjD4bvQqhM1vXVJPezKw8+Bh2jZ1/SsV42FPQDvvOxuhDbiejc2v6FId10UNSiP2j7Lay4Y9Fbh4kzzc3bjb45DuZMaurR0IcU8g+TotcLUw7jKlQ/tYaiGMCQr+Tsa7N+b/yGcOtIMkA5edaCMLA3Z4IJ6uSh4iGd9/wpEzXJtXPKhZWycnJiO20x1YYssyFJ+BkcCE+6voz9ybg1+OfN9iFYHLLkZ49Lw1bmWyeIz2XdnJ1AjCKxE4m24fFw1cYwITLsuZqwBZAS3lUuG4VwQl7PTqwGjb9qrEyByM+PeYwNXxXGj5+CjaPp9cdRhrg3H3/QOfbK1PRayDuda62mHbdYk5OmaejO68NLsyNBq4bIAaXbC8M2oTbFI49p7IeLhn8zBwe1FIlG4dRCcmFoW0QFb00uG+4PcJx14itAgmccIur+0zUOqk2uNO9OKs6v5cbQgWAcvE5iUELvycGCY2f62DCC8T+j42/rJ28YVqPMbfZ24HyeTsu2jAxE6/feKjJ2H2x5rH/QpGmyMPUYz5PpwH4e6r08AVXCpMTuDsPGm31z65CzEmcHXYd96Tc1/vabc6NIB0c3IzxsfxHIC2oWtkcgKZfD3aR1VXHGJo/B7XWtz4M0qPKWL0EekWx56lZGP8JQ84gnMfZdzZJB4OCByr6zNO/9JGeuBShGegym4DhLuDw9+RBXlYFEYfIkm5X8Cd2WIzucu8RIKJAju3H4AJf3qpkkmTemlaJ7CuALwqQHYnQ+RELHWBaiMruGrd1sNG7bIdA2f51tedM/xKob4e7OLTT7JSTuAwX5LAqHXbWXkxNviEbPc3cqWkNUfwhC3mR5HABaReKlebRi8NZ/hEwjxtWGDupRQ/SAPX2IGPsrUwVA61xqiD6ALRzs6DMWdFXQWu4MYymTxe3i6SChu8utxxASn3rBjQwseDawPsokGqtfNNmcAhuz55yAIW7nPH7irGnfCMsvuJiyCIyyvBWBG02iXSEb8CAXZ6STvc8UUDaJXQ4DPmNSJJMDJ+22YVO/zxJ5YIgnjPl7nHnCLPKDsPXEDydLP1/7w+nvXghmHRK0XA6Ppd3+PvIRoJXFgIxii0yQnSKbBD4/2ODpFcHhy5RIKJkLKTScPImWR3k2IEOINtn5F21H8FSC6bWV8Yw/b18mS31aLdcZX2ZFseBFcGyKbOODW6jr9SkMLYCeG4xTJhc4tSFpKfeFLfZYBo+tJ0+h/qFzi57BKtE6FwjoQsbteDN3B5Z7UDHJzAbgYLMPgJ9Ynk8m/7ux5EuMg3FrhCJJd2QF5Gb39uf50GXEUY1T9OyHA/YzApO8Zj+Ok2nBCOBq++v9+bgoM4cA0wwAADDNCPGASuAQYYYIAB+gp4QKl16V535+28ujEIXAMMMMAAA/QVBoFrgAEGGGCAvsIgcA0wwAADDNBXGASuAQYYYIAB+gqDwDXAAAMMMEBfYRC4BhhggAEG6CsMAtcAAwwwwAB9hUHgGmCAAQYYoK8wCFwDDDDAAAP0FWoJXHv37pUDBw4kx/v2tX7WFXkDiOzfv799JDI8PJykyKOegINZf+G4Lazu0uCVYVtsuwhi8vW6ffPIVzU4VmuXTsZfpf5i9h2gGVQeuGhca2Q4FYg8OMbBTuoCsHrCd0X11+/AGKwOuIDs2rUrScPxhgRYFnVtW/y+CNBGTL4q7VsGs+QrirCvkOiP4yU8WdLgle1EfzGgjO2jU/97o7Mp1LLjska2qXXWgxmcDJwgPPP1JolNDxb97dy5M0k5Xo7fLlZpYJlQZ2yzDMTk63X7xuSrEqHOmFIneVC1/or43wDVoPLAtWdP681RmAwwPIgJsWXLliQfxj+YCUAn4aQjiuqv3xEGGOqnk/GzbKjbMoJXTD6gSvsWJZAlX1F4fVoCGCvGzPEzcFI3Wah6fhT1vzc6m0LlgQuG3r59e/vTWORxzDc67IKBCceUE3Cgv9Y4oQssTtQNkGfisAz1yTbK1F2WfL1u35h8VSNtjNAJZctCHfrLsu8AzaCWS4UAjA8ng7HrmBD9BrvAAuGkOFj1hzFTJxZYRPIsHCiDsiHQZp6FMYa88vG4V+0bk69qYMzoEzroJuBUpb+89h2gXlQeuEKj8zNeRHbYYYe1X0h2cHPSpEkjx4CdLEX11+/gIoaxTJw4cczYrN7SGJZhG0A3C2SIPPJVad8ymCVfUdh+PHKMQJouslBUfzEU9b83OptCbT3TAXA2tHv37sSpJkyY4CrjYCJ0QGJiYNHw0K3+3gjAzXeMlwvH4YcfnqR5xs8yrIM20FYnN/9jyJLPsgr7FmVe+bqF16cl+sVYMWbulKiLTlDl/Cjif290NoVaeraTgceeEg52YiJ4C0cR/fU77HjtQtHJouHVAzxdd4pO5EOe16fNs+3VzTT5isDrxyPg6SEPiugvBttezL4HI5tCLT0XcayDiVUsbP0OO95uFw6vHuDpulN0Ih/yvD5tnm2vbqbJVwRePx4BTw95UER/Mdj2YvY9GNkUaum5iGMdTKxiYet32PF2u3B49QBP152iE/mQ5/Vp82x7dTNNviLw+vEIeHrIgyL6i8G2F7PvwcimUEvPRRzrYGIVC1u/w46324XDqwd4uu4UnciHPK9Pm2fbq5tp8hWB149HwNNDHhTRXwy2vZh9D0Y2hVp6LuJYBxOrWNj6HXa83S4cXj3A03Wn6EQ+5Hl92jzbXt1Mk68IvH48Ap4e8qCI/mKw7cXsezCyKdTScxHHOphYxcLW77Dj7Xbh8OoBnq47RSfyIc/r0+bZ9upmmnxF4PXjEfD0kAdF9BeDbS9m34ORTaGWnos41sHEKha2focdb7cLh1cP8HTdKTqRD3lenzbPtlc30+QrAq8fj4Cnhzwoor8YbHsx+x6MbAq19FzEsQ4mVrGw9TvseLtdOLx6gKfrTtGJfMjz+rR5tr26mSZfEXj9eAQ8PeRBEf3FYNuL2fdgZFOopecqHavX0Ynjpy0cRfRXJquQLwbbXhP6i6ET+Zok4OmhnwCZy9ZrDJ3YF3n9qlfCjjcPm0ItPfejYsqCHW+3jl9Ef2WyCvlisO01ob8YOpGvSQKeHvoJkLlsvcbQiX2R1696Jex487Ap1NJzPyqmLNjxduv4RfRXJquQLwbbXhP6i6ET+Zok4OmhnwCZy9ZrDJ3YF3n9qlfCjjcPm0ItPfejYsqCHW+3jl9Ef2WyCvlisO01ob8YOpGvSQKeHvoJkLlsvcbQiX2R1696Jex487Ap1NJzPyqmLNjxduv4RfRXJquQLwbbXhP6i6ET+Zok4OmhnwCZy9ZrDJ3YF3n9qlfCjjcPm0ItPfejYsqCHW+3jl9Ef2WyCvlisO01ob8YOpGvSQKeHvoJkLlsvcbQiX2R1696Jex487Ap1NJzPyqmLNjxduv4RfRXJquQLwbbXhP6i6ET+Zok4OmhnwCZy9ZrDJ3YF3n9qlfCjjcPm0ItPfejYsqCHW+3jl9Ef2WyCvlisO01ob8YOpGvSQKeHvoJkLlsvcbQiX2R1696Jex487Ap1NJzlYrhCwGR8lXafKlcLziRHW+3jl9Ef2USL9Lj69VJvnGWukcejvF2WG+MIWOw443prwn50BZfXMgXDU6ZMmVcO2mEDJMnT06OrUxvfvObx5QrSoC6BMJjfk475pzCeO2cK4o885c2tC+IpM6KMgbKgLLWXzzfQR7LE/hsfZDfb9++PUmrBvtD6h0D3nE4tjQ2hVp6rloxO3bsSFI6PsE3qjYJO95uHB8oor8yiEWC8hKhrikXUjDva81jsONN01+T8nHhRdlwMc3bB8qBDHxHHHFEkh566KFjyhUhQB0AVh+EDUTUXziHmM85VwY6mb/e2IowBuoHZdP8z+ZZfRIYB8bG8VHP3bzpuRtYvVobez5gx5uHTaGWnqtUDI0S1rOLWZWMwY63W8cvor8yyAWVCzM/k9xhMB9pWcijvyrls+1k0QafTgJOWnnA84UQYb00Ap4fYVHF8fDwcPIZZa3+oOcwIINAGGi6Qafzt27k8T+bF9oM4/MCVFobVZE2BWBryMkTAyuzHW8eNoVaeq5SMXQKGAYLFFPUtROwKsZgx9uN4wNF9FeUWIyxiHAhsQsK9Xv44Ycniy8u4+AzyuCyThmI6a9q+VA+i2mXBY888kg3PyRlhGwYC+SEfECeM/KwvTQCnh9ZYJGl/kjKZ+cWUqCMHUNs/kIG6objwIIL+3ljKBsx/7NEXigTAzPkZRDDpUOU7+QEp1tCJhK2pTwWnl94bXlsCrX0XLVicL3Y1oGRjjrqqOQYzl8lY7DjhVxWRh7bPKsrooj+yiTGyxSTAMdcUEh8xkKDCYIzO6RZjKET/VUhH9rKItqEr6FdLLjolwtS3oUJ9cPx8B6IJ5OlrZNFwPMjBgEspmwPslB/YJZ8ZSBr/pLQNS6h4lKXHUeoj04ZQyf+hzwrG7F169b20Sh4YhP6U9lEH7Al5cWYYWvYfLDjiqBKxfDMGWW5SNFg4aJVBWOw4+3W8YvoryipQyzCkM/TLRaUcDzeOLpBTH9Vy2freLS7A5vyPlWMDBBshynAy3dZYDsxAp4fAVzAsKhR/jDwh3oFOPeKIDZ/YTektl/IC5blY1mI+Z8l8kKZ+GAGU3tJlraumrQl9MpgTZsDnl+EbaSxKdTSc5WKgSHQJspaB8flIaRwpioZgx0vyiMNj22e1RVRRH9FaeWE4+MzUkwGpKG+MRmxo8FExWURyJvFGFgmlIXHVcuH9mJEX1wcQPaJ/pmXRciDlO3hGH3Tt7No28kigPKEPbZBAP1Tf5SFurPzC+W5CBZBbP6C1DGOAdiO8iItwhhYhnJYmXhs87w2GZxtnyiLsSKtmpwLOAYgwyBw5UAdiuEZN8i69rgqxmDHG5MNeVZXRBH9lUFMMC7C9iyRed7CC5SxsOXRX5Xysa0scrG1MrHvGG0dEmPIi7BuGgHPjyywG7CXN62+7GeUKRtZ8xe6pD4B2K0M38qDPP5n80K9puk5rFsVrZzQsbeL9/zCtpHFplBLz1UqxrYXc6wqGEMn8iHP6grgBEU+b2TjbCmsWxXDRZkp822ePQbCsXQDqz+SgcjuctJo5eeijDwgj3y2rW6ZpcO65ANse17byKNsJAMG8ql3ylcGKIftM82+6NfuFOqAlc/qJtQT89L0SnjjrYtVyNcUaum5SsXY9mKOVQVj6ES+NMcCkM9LJAhmmMR2d1E10Z/dReAYeTj2xkWZywB3Amib7VtZ8hD1uBCiLhZA7+wzRNhOp8zSm2XV8gHWHp5tkEf9hqR8SCE/5ON9m6LIsi9Smw9Q9jp2XeyLOkAaHtu8NL0Str26WYV8TaGWnqtUjG0v5lhVMIZO5EtzrPAsE5+9xa8K4uyXfXFh5SLDMt4x4I2lU4T+Alm4M8n7AESoKy68eWDrdUvohDJTh5DB7mBYlp/Llg+w9vBsgzxrS5Iyk5CvrKDRiX070UtZsPKl+bzNS9MrEY63TlYhX1OopecqFWPbizlWFYyhE/k8x+ICgRTf2faw40KdKhnKx2OcCfOs2ObzGAjH4oFjSiMXKrSJhQtkX+wvi6GMTIE6dlxWTyD7t9/b/KrkA6BPwh4TyEuTDym+s/LxCkARxuzL/pGPvgHWsXOiW8bAMpDB6ibUE/O8Nm2eba9uViFfU6il5yoVY9uLOVYVjKET+dIcixOVl2b4lFIZC0eMISAjFxErd3gMePVDoHwWuZABWKjCM+5Q3pAM/NRdmMbAcRUhx4E0RF3yAdAHYY8J5EHGsC5twJ2XvQdFO3XLmH2pH+bbOjaYdssYqCf0h/JIw2Obl6ZXwrZXN6uQrynU0nOVirHtxRyrCsbQiXyeY/EzUruY5V3YigJBkn1BBisrFzJvXCwfA+ulkWfcBBYwPqSyc+fOJI0Bix9lwTHHw3ayEMrTKbm48zPlgAw8AalDPsDaw7MN8qysIPWPfHtPtaz7q53YF98xaJXFGKgnlPX83BJ5aXolbHt1swr5mkItPVepGNtezLGqYAydyOc5FhYyELDf4TJSXcELYF+QM1yMvWMgHIsH1ssi7nlgvLY96iQvWN7qMw88eToldMIgD3h2q1o+wOrPsw3yrC1BBBYbvJiPwMUxFWWWfZnyO5SHHCDlKsIYwn5ZL9QT89L0Stj26mYV8jWFWnquUjG2vZhjVcEYOpEvzbHs5RN7XAfYHxcQyMmzXqbeuABvLCFYL422PYJn5HkCt10A7TFkK0O+GENdAZQDuq1LPsC257WNPM8vbYAqe8fTiX0HO65irEK+plBLz1UqxrYXc6wqGEMn8qU5VpVgf15A9BZVyJl2Fo5jEGfQecG6Mea5bFYFPFksoQeM2dt9UB/8zJ1FCCzQoR3yBGXA9pfFNP1Zu0M2PtFXNz29hHMhlC/UL8krAnl2ZDGUMX9tnm2vblYhX1MYBK6CjKET+dIcq0qgPxuguJCF7+3hQgo5uTBQ7iI/CcQ20sjFB4BsINrG/Q+kVTOUJyT0QBmRcvzUCb6HvhjgALRLPVvdE9A1iLxQnpCUI40x/aEP2xfKQs6ydjZoK4voBynAMQG8/wdQZgBlMSbrg9b/rC34fRZjYL8oa9vz2kYey1vYPNte3axCvqZQS89VKsa2F3OsKhhDJ/KlOVbV4E1wBifKwMWMCx4AObFAcMHhAscFg58Bu/ikAWWzyEUJoAxM7WJfFUJ5PPLvjbjrom2pE+bjM2XmGACeJFDvTGmPLKDdLObRn80P7Vg1+ZAHwF0Xx83UyuvpFCl1zvy8f+MXA22BsnbO2mObx/IWNs+2VzerkK8p1NJzlYqx7cUcqwrG0Il8aY5VJcInt9j/li1bkpRAPhZYLAhcLMgir72wddKI19iH4KsisJhVSU8ey3CBpB6OPvrokTy7O0CbWJAR1LEg8xIeFm3kg8in/kN5QrKPLGbpD0B/tDvkRNDCJbnQzt0QbWURZfCKjxCUD7LxyVaOFzIyQIHUdeiDeYJXDGXMX5tn26ubVcjXFAaBqyBj6ES+NMeqGlg8sUBg8UTKM10sFJCHiywAObHg4G95IC8XN5w545gpkOe+lB2/R56Ro3/KyXYpU5UI5fFoxw7dUGYcQ0ckFlvo1AL6TQvydeoPcsDukDNso0rynhX6hlzQD3fqoa7wmScBJIOf1T1tYftJYwxlzF+bZ9urm1XI1xQGgasgY+hEvjTHqhLoj4HKAkEsXDgAT2Z79ksCXv0QYb2Q1FMInoFXjVAej1w8LcMdC48B6BZ6t4EDizbyMKZOAjLbT2Ne/fEYZRkcvHGVzTT5GMSgC+iFlxFRNtSr90BJXtlj4HxEWcoaHts8lreweba9ulmFfE2hlp6rVIxtL+ZYVTCGTuRLc6wqwbNv9G8XBNCb/CHCRZYL4I4dO5I0hrB9j7jUhTSPfHWTiyYQ6oInBDZApD30QvAz2uQvVBRlTH82n/fEwDLmUAz0P+oFumLAAux8sLqjTkP9sR769gJayBjKmL82z7ZXN6uQrynU0nOVirHtxRyrCsbQiXxpjlU1sCBgkeQCZp+IQ8ozcJThZRwuGJSXCxAWFC4wdqFJA8eeRi4+9n5FWQt6WYRs0AsXU943xGfqB6l3TFB/WHjRFi/Fev11wrz6Q1+wP1IyLNMN84CXSqETG5A8fYXHns6hvzz3t8AY2BfKWp14+kEey1vYPNte3axCvqZQS89VKsa2F3OsKhhDJ/KlOVaVaFq+sI9+JWB104mevHpeH/3IOlBEfzHY9rqdH0XkK5NVyNcUaum5SsXY9mKOVQVj6ES+NMeqEk3LF/bRrwSsbjrRk1fP66MfWQeK6C8G216386OIfGWyCvmaQi09V6kY217MsapgDJ3Il+ZYVaJp+cI++pWA1U0nevLqeX30I+tAEf3FYNvrdn4Uka9MViFfU6il5yoVY9uLOVYVjKET+dIcq0o0LV/YR78SsLrpRE9ePa+PfmQdKKK/GGx73c6PIvKVySrkawq19FylYmx7MceqgjF0Il+aY1WJpuUL++hXAlY3nejJq+f10Y+sA0X0F4Ntr9v5UUS+MlmFfE2hlp6rVIxtL+ZYVTCGTuRLc6wq0bR8YR/9SsDqphM9efW8PvqRdaCI/mKw7XU7P4rIVyarkK8p1NJzlYqx7cUcqwrG0Il8aY5VJZqWL+yjXwlY3XSiJ6+e10c/sg4U0V8Mtr1u50cR+cpkFfI1hVp6rlIxtr2YY1XBGDqRL82xqkTT8oV99CsBq5tO9OTV8/roR9aBIvqLwbbX7fwoIl+ZrEK+plBLz/2omLJgx9vLjg94/Vggz5O7CGOw443pL41ePcAbYwjWixGI6S8NXj2vjyIE+l0+5PWy/yHPk7vX4ek9HFsam0ItPfejYsqCHW+3jl9Ef3kJeP1YIM+TuwhjsOON6S+NXj3AG2MI1osRiOkvDV49r48iBPpdPuT1sv8hz5O71+HpPRxbGptCLT33o2LKgh1vt45fRH95CXj9WCDPk7sIY7DjjekvjV49wBtjCNaLEYjpLw1ePa+PIgT6XT7k9bL/Ic+Tu9fh6T0cWxqbQi0996NiyoIdb7eOX0R/eQl4/Vggz5O7CGOw443pL41ePcAbYwjWixGI6S8NXj2vjyIE+l0+5PWy/yHPk7vX4ek9HFsam0ItPfejYsqCHW+3jl9Ef3kJeP1YIM+TuwhjsOON6S+NXj3AG2MI1osRiOkvDV49r48iBPpdPuT1sv8hz5O71+HpPRxbGptCLT33o2LKgh1vt45fRH95CXj9WCDPk7sIY7DjjekvjV49wBtjCNaLEYjpLw1ePa+PIgT6XT7k9bL/Ic+Tu9fh6T0cWxqbQi0996NiyoIdb7eOX0R/eQl4/Vggz5O7CGOw443pL41ePcAbYwjWixGI6S8NXj2vjyIE+l0+5PWy/yHPk7vX4ek9HFsam0ItPfejYsqCHW+3jl9Ef3kJeP1YIM+TuwhjsOON6S+NXj3AG2MI1osRiOkvDV49r48iBPpdPuT1sv8hz5O71+HpPRxbGptCLT33o2LKAl9sZ1/UOGXKlHHjBNMcv4j+YkSfeBOufemhfZmfTe0LDsPX9duXE/IlfnW9gRbHJF+GyO8oJ3WPFMSYOM4ssJ00oq8s/TEPqXcMeMdeX92w3+Wzaa/6Hwm/4jjIXgd1XdWLOKvCIHBVDL4FGGMJJxtfnU5iMnjOXkR/eQg50C7b9mQgvLr2MwMEXxcfYwx2vN7CYfPsa+cpR0jko074mv00eG2EjOmPiwNg3wrtleex10+37Hf5LLy69nPd/gfyDeE4JqxOexk8KSA4LzCWMgJ/VailZ+uI1hEOJmKCgZhYaQ4B5/cmbRH95QUnPNO0XWEITNDQ+QGUtZM7jTHY8XoLB3SKY54UAOGiwdfiMx9t5pENzIuY/pgPDA8PJzJwkegF+/a6fGSIpv0PpMzh7r4fCFm99Sg8IUhjU6il5yKO3+9Mm4BHHnnkuDxMBqsrooj+8gCXBjjpcMkFjszdC2RCHh0ZwIKGOpCFixuCA46Zomza2C1jsONNWzhsHhaxUIfYRUAuyAygjL20lMU8iOmPRBnvTLxp+/a6fL3sf5ALsoPUIb/rhwBGvUJXOEYKufPoDmwKtfRcxPGhxH4mxnDUUUeNOAUcm2c4TEk4vNUVUUR/WIiyiLNrpHZxIO1njAXXvREEQhm3bt3aPhpFXZdqIBf0CFmRB6AOFzSmBD5jDKgHW9BOaQz1FTKP/uxihrIInFh4KVvT9u11+UDYohf9zxIyMoVOedzLhIxHH310koZjynOfqyn0fODqd/LMhU7C1HMKOE44KYEi+ssDtGnrQA7Kh2MsIFxEACxoIOph0WGeTVHW3nNKYwx2vHZi2WPKBt2GcgC48Wx1CNj6WcyDLP2BdhEL9QVY2ex48zAP+lk+HPey/1EunDwhj/Ob+b1Oysvx0Be89cljU6il5yKOD4X2O+EMdAjQLrTMA1HW6ooooj+UzyIurfDSGYMsJzzl5BhwDNjLcUgZGLigACgbjs9jDOwHZSEH69ljyMnPKI/FDDIipTx86ABn+Lw0hfGiXhbRXhZj+kMb6Au6wDGAepQLwGeCxxxbjJQjjf0uH1LKiGOgl/zP5lGHSK1Oe5mQ2+qbOqPsHFsam0ItPdP4gHWEg4V2AjKPDmKJ762uiCL6i4FnrChrnRkLCduArJQXQB3W84DFiHVjjMGO1+rPHpM460VgIrCIoT4CFYBj255ng5AxxPRn5QzlIygTYOXLwxj6XT6w1/3PLvgMvmAe/2qadhwkgi7yy5gfVaHynulgcAA4FIAFxVPCwUgGNTsxedZodUeUvXCwPcrBSx44Zh6Jz5SNwNkvQNsSKO9NipAx9Lt8zG/KvgTlQECgfOHChHwrC1B0/sZgx2vt4dnGkw+weba9PIyB7aXZ17Z1MLIp1NYzHIBbfEwGGN2enRzstJdCwrPeKicm+sJCxEWMZ1usj3x8Zh5AGbioMQXwHdrEBGcbWYyh3+Ujm7Iv5hzkw3yDXGnygci3slggv5v5G4Mdr5XLkzFNPptn28vDGPLa92BlU6ilZxjeghPJU8TBRpwBc1HDhCAwAblbqHJiAp49PPsgL7Ql/+IeZ+P2O5TnZM9iHvSzfL1gXwYaW48yWaYFhlCn3njTGIMdrw0IXnBIk69q/WXZ92BnU6i8Z3vWC6eyjoUzNjjjwczQEaAf6orwjsN6aYyBZ/8oS3mYYmHn4o6JinyACxltSyCfebZOFmPod/mQWpZtX5TPIoMjynJMlCuUD9+hjgX1RZn5Pcrnmb8x2PZQ3srCY5sXygfYPNteHsYQsy+OD2Y2hVpCJhcSTiLeLOelh4OZFvaz/T7MBzjxYswD2iVMsVhx4aIN4aw82wwXPuTzOwB1OI405kE/y2dh27Pth/mAlTuLdhHxyJ0VH3bgZ+rBEuWtLESR+RsDy7B/KwuPbZ7Xps2z7eVhHmTZF/0dzGwKlQcuDg4pDQ7Y44MZ9g89meIszzqFd+xNQo8x8IY77MGFFn2Eiy4A+cIFj3/vgXtG9jvAyt0t+l2+qu2bh/ZeFHdJOM6z4+JnpFXMXzveXgxcnfjfAPWh8sAFA1uDE5i8ZTn/GwFc1Ag7OaqcmIS1E1MglAFtYgEBufAxZT6CBC+xlIV+lY+oyr4xYodlAxfGjxQ6oV7sd1YWwI7LflfW/LXjpWzhsc0L5QNsnm0vD/PC6oHpAM2h8sAF2EkbTuCDHdRHOCHt5KhyYqI90E7KtAkKWcMdTXgpigTCMXWDfpevavt2Qqsb6sUyLTDYOWuPy4Adby8GLrQHptl3gGZQS+CqEnRUb0L1gmPF5LMycheAPFuebQA89iahxzJg5USb4dk6gwIWFi44gB1bVbB6gv68x9y9BRGweu0WRe3ryYBylLcoYSeMOS1QsQztCVi5rfxEluzdwu4KSWs3fvb6tHk8tvWyWDWq1h/bSPO/Nyqqt1zFgOHsJKMB+RM/+L5KxoAyMfns9XOmANu3/fDYm4QeUb4IAaS8LIQ2sQhyUeFZPH82BgsQAhnK4/5A2F7ZhL6oP3yGDJDN7i7sAshjAOWLgjIASLuxr/fLHhwD0ixyXGlEGQYlpKG9WIaBDYC8lAPgWDA2Ow5bJg0cUxrZDuXgmMIdMr9H2RA2j8dh3TSifJUEiugvBrRh2+y19a8q9H3gAvi3OlxcqVAatGnE5KOz8TPPzJlvHYTH3iT0WBToD3JQFrSJxY+LKj7jAQgek1bmqkHZkHKRritwAUXsyzpM+R1k9HYh3ZAPqDA4UQfQFY5pT+QBkAvEOCgzx0Q5Oeai8MbLNNwlQlbPZjaPx7ZeFqtG1foDen39qwJ9H7hCB6DRtmzZkqQwXpWMISYfAIdjPlMLm8djbxJ69GTuhAT6xVkcFkEGB9AGCH7G2TLqYlEK2yubABdZgAsxLhlSTi7U9hjwdN0pyrCv91oOvq+NQSWNHFcaGbRIjp+vsiChK5SFjUMZOZYwP8/i69nMEti+ffsYWSAjXgVk85jv6c/m8Tism0ZPpjIJFNFfDL2+/lWFvg9cAC5JYfHCQmnPYptUrEWWfHQ0pFyAWQYpvyN47E1Cj0WB/uwj3WgTCyaCExdBXHZCoODlHZwp8/JXXYCc0BllsrR5PGadMlDEvvRR6AvHaAvfQUbvfl03xA4GgQkpbMcdDY6hD9iNQRCAXJAHslI+yssxQs4ywHbgMxgvfQuy2BMkELJ6NrN5PLb1slg1qtYfkOV/b1T0feCCo9JQFjBiLxgur3zWwQH7XS9NTK8PLoRcaJDWDeoL/WMRxCLHxbjKwFXUvki9RSyUuwipB0u7I7UMAfkwlhAYR1n6A0I5PPn6NXBVrb88/vdGQ98HLk56OGHo6N6ELZsx5JHPygmEzlhkYpbNGCAfWIfuSavX8KEDm9pjyloUZdgXZ8lYZLjQ8Ma6F9BCsN00ctcGoB8Lb8EL64d25BiBMuXjJU20jz49/6kicFXNovqLIY//Vcmm0FzPJQITHZcXaDguXnbBqop5kCWfJb7vxYnJHQzGwEuAXPSYctGFfDjGpEEdr70qSP1Rl7Zv75iyloEi9sVnq0N+j/s+ecBxZRFBgZciAd4X4Wf2jzIYB2TlgxE4RsoxYQwow+AaA2XIIl+zj7642NLnbDl89mxm83hs6zXJovrLg15f/6pA3wcu66jWUHUYDYyhE/mQ18sTs9flS6Ond8AbS6ew4/X6sUzTXxGEfaQR8Oxkgbw0ucNjlo+B9cpgmv68cXn1m2IR/cVgx+v1UzWbQnM9l4ReN1wn8iHPc2abZ9urm70uXxo9vQPeWDqFHa/Xj2Wa/oog7CONgGcnC+SlyR0es3wMrFcG0/Tnjcur3xSL6C8GO16vn6rZFJrruST0uuE6kQ95njPbPNte3ex1+dLo6R3wxtIp7Hi9fizT9FcEYR9pBDw7WSAvTe7wmOVjYL0ymKY/b1xe/aZYRH8x2PF6/VTNptBczyWh1w3XiXzI85zZ5tn26mavy5dGT++AN5ZOYcfr9WOZpr8iCPtII+DZyQJ5aXKHxywfA+uVwTT9eePy6jfFIvqLwY7X66dqNoXmei4JvW64TuRDnufMNs+2Vzd7Xb40enoHvLF0Cjterx/LNP0VQdhHGgHPThbIS5M7PGb5GFivDKbpzxuXV78pFtFfDHa8Xj9Vsyk013NJ6HXDdSIf8jxntnm2vbrZ6/Kl0dM74I2lU9jxev1YpumvCMI+0gh4drJAXprc4THLx8B6ZTBNf964vPpNsYj+YrDj9fqpmk2huZ5LQq8brhP5kOc5s82z7dXNXpcvjZ7eAW8sncKO1+vHMk1/RRD2kUbAs5MF8tLkDo9ZPgbWK4Np+vPG5dVvikX0F4Mdr9dP1WwKzfVcEnrdcJ3IhzzPmW2eba9u9rp8afT0Dnhj6RR2vF4/lmn6K4KwjzQCnp0skJcmd3jM8jGwXhlM0583Lq9+UyyivxjseL1+qmZTqKXnOhwL8PqxQJ5n0CKOxXoxAk3IFwPbSOvnYGcMnegPeWl2J2x7vUJvXIA3ln4DxxUj4NnJAnlpdg+PWT4G1iuD6PuNYDMgPjNLgGdwT7FFCHj9WCCvKccCmpAvBraR1s/Bzhg60R/y0uxO2PZ6hd64AG8s/QaOK0bAs5MF8tLsHh6zfAysVwbR9xvBZkB8ZpYAz+CeYosQ8PqxQF5TjgU0IV8MbCOtn4OdMXSiP+Sl2Z2w7fUKvXEB3lj6DRxXjIBnJwvkpdk9PGb5GFivDKLvN4LNgPjMLAGewT3FFiHg9WOBvKYcC2hCvhjYRlo/Bztj6ER/yEuzO2Hb6xV64wK8sfQbOK4YAc9OFshLs3t4zPIxsF4ZRN9vBJsB8ZlZAjyDe4otQsDrxwJ5TTkW0IR8MbCNtH4OdsbQif6Ql2Z3wrbXK/TGBXhj6TdwXDECnp0skJdm9/CY5WNgvTKIvt8INgPiM7MEeAb3FFuEgNePBfKaciygCfliYBtp/RzsjKET/SEvze6Eba9X6I0L8MbSb+C4YgQ8O1kgL83u4THLx8B6ZRB9vxFsBsRnZgnwDO4ptggBrx8L5DXlWEAT8sXANtL6OdgZQyf6Q16a3QnbXq/QGxfgjaXfwHHFCHh2skBemt3DY5aPgfXKIPp+I9gMiM/MEuAZ3FNsEQJePxbIa8qxgCbki4FtpPVzsDOGTvSHvDS7E7a9XqE3LsAbS7+B44oR8Oxkgbw0u4fHLB8D65VB9P1GsBkQn5klwDO4p9huCGPgJWp4CR7f8Jr2ZlH0jZetoY4l2qnyRXlZL/KDTCQ+82VwlpTRHgPUZRGgT7xIEP2yb6Z8mWAeQmc85tts+XbbfmYMtAHKenayhF5Dm1f9Is7wDcOgtVWMlKHKFyE2CTtWjxg/bEG7AbQVbZf1Ik6mdm6BqMN2skA5uiVkIdEvx0CEPsjv877ItCn0feDiJARoAMI6Vtgv37TKlKSDAXW9Ot06MMpax+fn8Biwei0CyEXHZj95maY/vtW23xmD9SvPTqB9my8RLlpsBykY6rUIaYvQvnn6KDo/eh12bGmEDmgXgKkHr74l9AdfCNeCNHhtdEprQwDy27USssAf6ZM8Kell+8ZnZgmwhuaxVWwW84LKR/uhwmkQL1DgeHh4uP1pFDbYZcGTOaS3QCCg2YWEx+EZGugtiEBZ8qFNtkXd5HValLeTgGC7YV/9xhisP3t2ArNsC06ZMmVMPtK8sO14tP5iAZvZeZCGOuZHk8wLaxuktFlID5xL1Df0lndulAX2Ha6BSL25jr7zyNgUaunZOrid6HkYQ9oCu23btqQvBDQYCyk/Uwak1qD4DpMUad6F25M5JJwcDo8UQYxOj2NOBDgJz8yRggx41oF4DHAcWWC9LGLXSofG5Q6MPe+lIOgKQB3qDSnaTZvc/cQYaAOU9ewEG9KetC2/o+1xGQ4nMrx6gDKwQx6gfBZpA2sb+jZtl4U65keTzAPYAjZBedgItuKlU9gSeZyrAPSDOvQNzCXoizaFLmnrGIvCrnWQiyntSftCNgYxfIe+ebUoi02hlp6pPIDHnhI8QplZBLZs2TJiDJBniOHkskZEOQL1ASsnwHtRWfBktrT3FkAuWkcfffRIHiZFeEZnyTr2GAjl9YD2ssi+MbmgQws6dhaBrVu3JqnF4FLh6DEJPTPlQsgFj8RnLGrQLfw41HdIWzeNsEUI2sxr0xIoMj/oZ71Kb8yWtIENTqT9jLYw1zGPrJ68OYUyKM+5l8VQnk4JYK2jTN6a4c3fI488cmRcWWwKPR+4YmAACg3DHQMdh8GMxmQ+P7Me28szKQFP5pAMXlysuKjB8Eg5AfAZ3/FMh/negghYvaaB9bKINi3Qbt7xh/pkinZ5VtrPjIE2QFnPTrQhbIq80OYg/MPWBfPYFrB1PNIGQGgj2i4LdcyPJpkHGLutA1txTuMYtqQ9AegXpM6gq9Ceob3TWAZCe3MtRD7tyZTfoe88V0yaQi09W6Px2FOCR5TPIowBpVPxAA2EFGUIm4/y/M4GubS6afBktrSLFVI6uH1Ki2detizr2tQeA3nkQ/kswjnRPy4V0GmtPtBHjJyYKM9JAhntWPqVMWDcAMpCn6zHY5tnbUybh/4Ae+DsHv6JKwZWzx7ZdhppA4D2QT3aLEagyPzAeHuZ4XhD8tIZbMKFnLai7dAOT0oBu7ZwPlCHmGO89Ij2QnlChvJ0Q8hj7UbgO4CXMFkeQN8YXyhPyKbQ84ErD2AYgE6CPpgH2AnHxRlAnjUkYduJwZPZkosVHdsS+VxYQE4Mu6CxXHgMlCUfUgDtsU04c572PWCyh/30K2OgjlDWsxMIW1LPtDHIPN7vQB1rX883Q7CtGMPL5nlR9fxomjFw/Chr7UObgbCjnUd2XYGOvMDAemwjjUVh7ce1D3lZNkQ5TxaPTaHynq0BOXmgNE8JHsuANR5AY9mAhtQeWyfLgiezJZ2dDm+dPI/j2rM6ewkRKEM+ko7Ms3wg1FsarBw89vrohjH9Wf3Y1AZ+e9Jg8/MwBo6X7fKSII6RF5OPY0E+F0N8lxcon0X2Z8F5aE/u0lD1/LCkTkDvRC+NddgXZanL8NjmeTqxeba9PKwatCnkamp97ga19QzFcAsNZcHB7NlnGouCk8yCi7SFnZQ8zgNPZo9cZOHcnU4uEPU4QdEWxmB3j2kI2wkJG0Ae6ok26gS2PI+9voowpj/kMQiALI+U+XaxwbjzLI4xwAawBftAm7YfMk0+fqZ9OT60mSewsH4WEUwhp7VTJz4OVDU/MGa7DlB31m5ZtOWqsK/1Z9u+PbZ53twpMj/qAuRqYn3uFrX0HAYKfLaTNotlAMbgIs/FADJwCw9D0aFwzDJ5Lq94MlvyLBqTiGOGg+cdPxiWxedQp2mw9dLotZe3fYC6A3js9dMNY/rD9zzmQmV3PXZRsxMxz6QE88Dz57zy2XwS5fMGB1vPI8dPQFb6dScP4FQ1P8DQLqHtsli1fa0/W5vZY5tn5wJRZH7UAW/uh/6cxqZQec+cgHR+azg6aRaLwvYJ2GOA8nEyhmkMoSE9chKFKZzDG7NleDbJFMiz47JteaQsAHVlbZYHnn7RZlnM0h/LgBgPj6E36i4MHDYYhvoIGQNtgPZQ3qbhwst8fmdlRMo+8RmAD9ImaWSdNHLsAOwZLlJem5ZF54cnk6VnE6R5F06wSvtCBwDaQ3mk4bHNY3kLm2fby8OqYec6ZLPyYZ5RT2lsCtVrRsHJQmfnTifPxCwDaIeGCR2DCweMYFMgT2BgO2kMA4NNrbOksejC4bVp6dkECBe4LKAdgsehHrplTH8hYD8sZLRj0cCQB6FNmOaRDyyy8HoyW9KO7Id9kV6blkXnhyeTJXVlZbE2Q5rFqu3LMmiTbYfHNs9r0+bZ9vKwDjS9PneDyjXDwSGlYgB7XCWofIIOh0WBC0Q4mfE578Jt66URkypsr5PAwADHY+ouz6WaPAjtYm2WB7Ycjz09dMss/WGSUX70zTqwMwMBUxL29YJKN6ANIAPbhBw8jsnHhRefGaRBe5zFGEJ7YOx8yCf84/g0FpkfeQBdhX2ENstilfa1+uPaER7bPJa3sHmhPWKsGpQHabgO9DIq1wwcyE5oAmdrdSrHXtLxJgUXEhxzoSxrx4V2qYNux8z6Vp9lAPLYcdJGnfRj7cpjTxfdMK/+mI86KB8uLLQvUi68Zfqf1ZentzT54Gs2eFFejpuf05gHsC/vq9l+w7ayiHqUp5P5EQP0grZgE/Zh9ZCXtm6Z9rX+bOXyZESenQtEkflRNazfWjlh2zLnR9moXjMKOBFhj+sAjcJ+4QyctHBwEMdwOp6JIg/wnDAEymeRfVEOnKGzXW+BC8EySO0x2sgjXyfo1k5WDh6HeuiWMf1RTn6PsrQpUtaHfe0OuyzQDtY29jgmH1IboJiXlzF49gjvJ2WR8nQ7P/KC/UA2BgXaLot12BdgH+zXHts8Tyc2z7NHFutAt/O+SdSiGURuGoyKKTOasy22jb689pGf5nDhMcvHwHpp5MQC0B7bxCWkPO1zwbOw46watn+eYdsFGbBy8DjUQ1FmXRaFPDYwQOd20eOCBtta+3q67RQcrzfh2X5MviKMwfZrx0+dWDl4eRJ5NmDxexLlygb7tmTfkIVy2nLMq8O+bB9peEwisNtdqOcTAHw5rJvGorA6SJu/Va/PVaC4ZiKg4qwCoRQQeVBYEaINtkd4fQIo7zmc55AsHwPKZ5GXfBCo6Did/KQSUOQnd8L2uiFtBVid4jubAjymPouSixOA8VNn9vffkNL+KGsvN3EB7vYnlWJAGasbTnzaDECZNPmsr3RDK6tHjBF9Y8xc9O1PFkG/kAcp2qO+KRtSLzCgbfpgEbKNsH3bJ1LQykiZ67AvEMpijyEDP6M8xoT+ObYiP4mGekVJWQCmAL7z8lHeyp/FplB54AI4iTlQplBOUbCNsG27cBD4zjoc6Tkky8fAellEmxZot5O/oQEoC8ebt34Z4GSjLAzAzLd64rGnh27IBQlgf1Ye9IfPzENZLCR2MSnyI7Z5QFuEvphXviLMA8hg66Bf+2AGZEHKwGAvCSJA4JhBjylgdxfdgm14faBvysZ7dFzsmQ9WaV+2gzZtH/bY6o92Zso5E+ajPH07i2UglCWcv1Wuz1WhHM1kgJd4oCwoAoTC+KoEKLMIgU5eaxI6OOg5JMvHAKfNIs8M4Rx0FAKfvTFZAkVeK+G12QkB6DR0agubx2PqswxmvZaDQL/QMRYxeyYLG9i28Bln5Bgb/CQcb8gYQhtw/LQZkSVfEXoyW3KMGDPKh7pASh/FsZWNPOqoo8bNG77aPeyvUwJoy7aNvtCnzQOtjAyo3pjKtK/1Z2+dgCwIqugXeQDq2Lle5LU/nsydEMiav0XX56ZQeeCCoujkIcLA0g3S2kCfoZHwOZyAoOeQLB8D62WRly4AXDKEzN6O0AOdgw4FB0Nahu7ygDpAin6ZUh5+R/DY00M35Nk3x2zHTnmgU8qCsly8aEuc2WJxQR4+Y9FDnbJAuWgb2hq2yyNfEeYB+udCj36hC57tMxhAFpRhCkJOfo96+Iy6+A4owwfZBtpkAKCd0Dc+Ux4ro5W9Svtaf7b2ssc2D7a384F2t76LFOXp21ksCsqCFP0y5fzF5yrX56pQeeAioAQoCZMZCisbaJMLRZrC8V2aw4XHLB8D62URbbItBqK8ToHyWBBDhBOkalBuuygTVg4ee3rohtYeFpDDykCE9UEuEFzokJYFjJc6seDZfggrVxnMCzt2pOGiyXws+vYzUgQFliOBMvwvzV/QZyhzKBtZtX0BtOutEwisOKZsgLU7jj3/CNtLY1mgTN78Bapen8tGeZpJQWg0foZReIZUhGwDSOuLgGE8Z/EckuXLABwB7YYTLg8xMexntgHkCX62bre0MgDQi9Wt1ROPbf2i5GWVUH+hbsAYIB/o1fUYA22AsmXI1ynC9j1CDo7bg13EUB6+yoWY9UGOj/fHvIDWKdkG20Qf7I9lIIudl0C48BJl25c6Q1lvnbB59p4VdRXKwfw63xBuZQAwJs7ftDUTZfOsz02htp45wbGIYxsPpVijd0u0gbbs5Zi0BR0G8/q0eTxm+aLABIMzwGHptEzt4pBGymMv7WC8eS812ra6Ifon0benE5vHY6+tbhgubGA4obiw0Q+AcGJyoYN8OMZkpm6zmAewBfqmXWkrtp8lX1FQzjSiX4wVY6ZtqAvIgDwS+RyDrU8/tTorc+FlW5QVxzZYkZCN4yCrti/aA1DWthcek5DRfkdany0z8McYysbxhOh2fW4KtfRslWUdoUwCXj8WyPOMYfN4zPJFYcfr9ZOHReRjvTKIvtP0Stjx1s0q5IvBtufZyTJNviII+0gj4OnBAnme3L3CXrdvr7MJ/VWFWnouopi8BLx+LJDnOZznkCxfFHa8Xj95WEQ+1iuD6DtNr4Qdb92sQr4YbHuenSzT5CuCsI80Ap4eLJDnyd0r7HX79jqb0F9VqKXnIorJS8DrxwJ5nsN5DsnyRWHH6/WTh0XkY70yiL7T9ErY8dbNKuSLwbbn2ckyTb4iCPtII+DpwQJ5nty9wl63b6+zCf1VhVp6LqKYvAS8fiyQ5zmc55AsXxR2vF4/eVhEPtYrg+g7Ta+EHW/drEK+GGx7np0s0+QrgrCPNAKeHiyQ58ndK+x1+/Y6m9BfVail5yKKyUvA68cCeZ7DeQ7J8kVhx+v1k4dF5GO9Moi+0/RK2PHWzSrki8G259nJMk2+Igj7SCPg6cECeZ7cvcJet2+vswn9VYVaei6imLwEvH4skOc5nOeQLF8UdrxeP3lYRD7WK4PoO02vhB1v3axCvhhse56dLNPkK4KwjzQCnh4skOfJ3Svsdfv2OpvQX1WopeciislLwOvHAnmew3kOyfJFYcfr9ZOHReRjvTKIvtP0Stjx1s0q5IvBtufZyTJNviII+0gj4OnBAnme3L3CXrdvr7MJ/VWFWnouopi8BLx+LJDnOZznkCxfFHa8Xj95WEQ+1iuD6DtNr4Qdb+fE3xC1OMEc+2XHszP58rXbAv/YdXzaam9/UnbChNF6nn3xPcu3UDQd1fOEIA0JjNVD+8AA33ty9wqr8L8YbHtWN72spzQ2ob+q0FzPPYR+NFxeeDJ3yyoc/5CJbSafJ8vEQw5POFk56ZDDdCGeLJMm4NcUJsikySqDljvs0AlJOkU/T544SY/1+wmoO0kF0P/36dK+FwcQSGTfsAYY/G061nv9vHfPPjn80COTeminKA87dKLs2Y0f28Ufw6KTvXJgP46V2vGB/fjjTpVB04kavFBnko6Z9TEOHuN7tLdrJ34/brQ9P1ViYMmAdWAJNbs9bnLPrtYflLZ0PFEmTjpMdXmEHDIBP5VkTxAyiKBsAnPZBDw/qhqeLB6BXpYvD9Pmbz9iELgUnkN6hvfY6/Bk7pZVBi60jSDVClpvGglcUya1foXisMN0kcWir2WTgDWptci32hldYIm9e7EbwqI9rELhh2bbv/cI8ZQIkocd1nodBnZC3fLQQ/kbdeivFR13J0Fsv+zU4LM/CWDtIKMcGbdyoo6F9adMaf1iBAI0UpTdtw8yj9Z1ifHYoBVw37D2n4y39csTkycfqn0hiE1WXeKXG0xwyqKOdRC4ele+PBwErjcYPIf0DO+x1+HJ3C2rCFytwAFOSnZMEw+ZMsIJSiyaRxz5ptaiqQv9xMmtBR7lQeRPOUKD3GGHyoQpk2XP/n2C8KF7niQFt+3amexRhlU0EHmHTNKAobu1QyZqH0WoO71DJh2atIm292iwALfs2D3S/279Z5sG0KRfLX/YkUfJxEOx49G6yjcd9f+XQyZrMFFOmKKBWvPQBspD7iyyD3IkhilhCvyUD4Ingjx4qAZI7u4Onazyt+3QNAHPj6qGJ4tHoJfly8NB4HqDwXNIz/Aeex2ezN2yksA1EqgYuBjIdOcxcYJM0mB0yCQ940egmYCzf134D8dv2+lnJYLWyOXGKRN0Md8nu/btTtLd+/fIcHK0X4OK7mBUrt379sqrmze16iEYatApRA0yh77p38nrW3eMBBsEKqQIZNt3o//WZxxPOUJlbwes5BhtIAC220LwOvzNR8umbTuTOl6wsmTbLDu6+Wr9lh+O8A2D1STlmw+fIkdMmShTdPzI8+xC0haJPZzvyyLg+VHV8GTxCPSyfHkIG9Yld9UYBC6F55Ce4T32OjyZu2Wa43evv4kaqA5tE8ELC6T2w0A0qZ1qHhZ5BIhDkl3YFDn8iKM0v7VjeNORWlfLot6+/fjxYVxi26sL+B7ZM7wjOR7e27oHdaD9Hdp8879rXYYswje9+cikLYwawQLctWd38nnP3uEktUyCpQbkJMW4dKeI9NDDdbelAXryodjFtdrz6o8lekOZPe20RYyPxH21XTu3yBGHTpDDJqu8Gtwnq9zgYdCZppk0gQscGXtbfquLIgQ8P6oaniwegV6WLw/T5m8/YhC4FJ5Deob32OvwZO6WaY7fvf50oW4/iJFcGsTCiMUQAYvUxfbQN/Gymi7yWm7KoRoskgDWuvfCBx2QImht37FJ9uuui4s4g9a+/btleM8O2bV7m7z1Lf9e3n7Mr8ixx7xNjlF2m771rb8iv/Ir/yG5n4V7W3v3th7EGB7Gr8BjtzOW73znsfKOdxyTpMce+3b5j//x3yfpv//3/4+87W1vSfLf9a53qB6xhxpffyw1OGlwFkGwJjHm1rgPKPfshR7G3lvDfbXJkyaMuWyYynbAskzaGQSu9lG18GTplrBdXXJXjUHgUngO6RneY6/Dk7lbpjl+9/qbKFMOOaIduHDPSvOww9JgNRq8Wg8HTE4e0mjd98JDFXhtBR5oWLToTHn99Ve1x/2yZ8+upH9IsG3bjiTF2y6Q4uEMXEID2kkpKXdZOAb3HdgvO3erHO1jpHv370tS7qCYz5T1kQ7v00DbJvPTiBoMXK1d1x7NwcVRUPWh3+zQItv2HhCE0R1a6bWde+V/L17eujyJkwG1gxuw2sTJQPIkZBi4cNKQEMfFCXh+VDU8WTwCvSxfHg4C1xsMnkN6hvfY6/Bk7pZVBC48OYhLhcmDFghaJIIWUi136JQ3JU8XTjpEdwq4nKh5e5NLgBoI2k/t4ZFvAK8h36VBClLs3tMKDHuGWwFgr25ieA+o/bBdEhyKMGlXAxOIQMQghcCDlN/z2JbBMcsh2DGQkWw/jSiBnRV3WQhVCFp4DAT7LOy/oBWkr+3cnxxj77ldq+F4jzaCXVMYrCwRuJId7SBw9bR8eTgIXB0AirIve6PisMD0Eqp6kRpf+IiUL7tjX3U4kSdzp8x6ESLHtHMnlsTWZ5SxL37MIh/KSHTNgJUErdYiefihurvSgHXExCPk8ImT5a/OXq2dJMuv2mqrKlF1eUAXbg0G+k8igwU0TCJgQeVjqcEBf2vVJVt9NsdEDgTwJHBxt7UvyYGlsNuCpXapqJBWh5yQdZF+/vOfT3awiZ3VJtxlJTst2Kh9nOTzRYk40SgpcMFX4DOeL1UNTx5LjBW6gSycr5Qrz8tAWYdzHnXtmhCDJ5Nl0Ret9itq2TIgGMBgNDgNRmM2idCA/Ow5gMc82LEDu4PxExF6qRqezEUYItQfx4Syed7wioUxOdaFMQlcSMH2GT2C1mETpsiheizDqr/92F1gP7FDP27XtPW0IIin+nbo7gqL9Q7NwBSFp1kmOw0lpAbxuQh36bq0E9S+wxT9efmlpcoROdrEkh8ykVHVtm37Hp1zOmoErP2opeENgVuP9gzvSxa3hGqPZJfVto/lqO3K2XHRR4B9wXyoY3EN5fGIwNU6wYGmRoNRHoRj4hrANSEGT56QfIM0TipsPuS2n8E3CiofCQzlBSgoMTlzCxQbsi5ARjgk5A2drQjoqOG4vFeTV8GyEbaPyeIFKG/SeGyFD+wPRgNQon2sDcmKqvpLoswB2bVli26u9iQPWwxr+MHS+4ouyK9ohVe17Cb9/HqbLytfUr4YEPkg7oqBr2i9hNpNNynbS+MrEXp1OuGLKsMI8blNjB3yvaq62axMghtilqb4Z8/2zaroPcllVag30buOCZcnh4dxcqA7g+TXOzRzDFtAO0lbEXg2D+n5CnwqXIirYF5QFqZTprSeaI0RcxxzPcwHwhNZD2G9kFxDQiDoe+2H9YuyKVTeM5XHSwEIEFAqBp3njLxqIFht27at/WksytgRsg04PJydKcbWSxMzDdAPbMdgjjax0PBSKhcdjAnH4RhjHPtQQeuyVnJJD26DLnUngHTHJg1LyNcs7Dhgsad1O/GCptc/PSx/d8Gt8vGzvywL/uTTMuMPVsj0jy+XqR9fKdP+YFWba5J05h+uVq6UWX8A6vHvn9XmOV2lMzSd8fH0dObHPy0z/+Ds1HT67yl/f01qmtn+739GZvzeX8u031d+/K+U54yMc4Zy9u+vkgV/9Gn5wH/9tPyPlV+Wr/zkZrnz4dfkNXVJeOU2jU9It+vJAUJVom7VLe61JZfr3EuhLcAOYAyezUNan6EPId8LaGUzD+D/DD7we6xbhx+e708pOMftGJECedaXsL2Q1BXmJ9pjCuA4Nn9tW92wKdTS89atW9tHozjySDzS3DJsFqsGjYyzTARUEEbeomf3AIJtFvMA9/OsseEwRx11VK7xF6UncyckMAFwiRfX0tGuHc/RRx89Mi6bn+c+14EDOzVQ7dTFUvWOhxWwcGq3Sdc40F2BDO9KdloIaJv144vK1/Trjc8ckHcv+YbMWfQdmXHmt2Xu0h/IaWddKu/5y6vk9E9fJfPXrJVTz7laTvn01bLg7GuUV8mpCdfK6WeBenzWtW1e11V62tnXu/lITzt7XfJ9VrpgDaiypaS2/Ph+lGs2tph8bo1xwTk67vYY5y25QH7z09fIuxf9RN53xnky+4/+Xj625jzZ8JTIc6rDlzRiYTeGS6tJAFMdIyDxMh0efiH37xtO5kbLN1o2Cv0lpGdzy9BH6EP0qdCfy6YnsyXWBaRY6MNAis9em5Yoh7kezo289/htnTTiUmGIcM1Nm7+hvJ2yKVQeuDgBmLYuQ7QMwrOFLNYB3nODcW1KmYuAN0MxFjo+DG4/V8migC6wWIVnbCAmI8fCickz0zxBC2wtmyAuUml/bbYA/evZ4h5Mwr3Jo92b9ehZTb9y7cNy8ifOlfnLL5bZK9fJ7FXrZfZZG2X2OTfKzHNulhln3yLTz75Npq65dYTTVt+ScPqqG0c4YxXyb9f0djedvlLbWHVbajprzZ0y46w7ZebqO2T6mjtGUuaXndp+wBkrWpy+sjWuqas3yolr1ifp1NU3yknnaJ3lN2hQu1VmL1wrv/aXG+WUxT+WaX/yRfn23ZuSy5Wv64kAg9e23fuSX/6ADVqLqyrb2XHlhWfzkPQV+g59ib5VJfMAc8DWgXx5/TttzgNcG7LAdtLInR/AOcoUATc2f21b3bAp1NIzDQQlMihAaVReFqsGjGtTAAELpOGzGAPbgJHpMDimw3ljLpOhvJ0SQMogDpnD+3McC8bGCYrUlknjgf27E0JPyQarTfy+HvL37MHearvs3LtDNumWCwvt9259Rk79xBfkPUt/Iqeuuk5O0UX51M/cJQs+c4+cdPZdrQV95Z0ybdWdGsgeGMO5Zz+gZe5r8x6Zd879urjfn5qi3Nx2eS+de9a9MnvNPTJHGaZz9Dt8n5V69Wxqy4ffg6esuU95j8zXoHbSObfL3E9rgPrMrTLrMxrsPn2PBvD7knFPHbpNx3S3zD/7ZjlpxTUyf/UVMvN/nSs/uunnskXNvEXXNcxSXjLE7hbgbivJUNIvMF1Afk6jZ3NL+Ij1mV6bH7giA9/Hjosn2tbfvTYtw/IcH9q2a04aUDaL1B3AAIW2cakXKYA0bf6G8nbKplB54KLyLLDrouJjrAMwKuXkmQkNXRZwXZzG5tjscVUsA5hgnGRoE5OFE8YbAycGy2QxeZRdCf2310Y91o5wfyX541o8ObgTzxAmD19seHq/nPQ/Pi/vXXahnL7iWjlFd0wn6e5ozso7Es5efbcu7PfpYn+/8gHdhdwrM1bfp3wgSWe1OUeJcrP1+1mrNSikpLNW3iMzV92TmrIdpKzHz3nSWP9z12AcSlNvpB/lvJV3KzVoqQ7mrr5Ny9ymOzPdEWogm37W3bprvFd3hvfJzLMfSgIYdoqzVt8s8z99s5y28hI55b9+Ru57bnei261qYnj9rr14xF6P8ScGiUH0AxjAmdrj4NncEj4CX+Fuy7IX5of1e8hDmRDIbDtptGNgfawFeWHbymLW/bKs+VuUTaHynqkwLEz2pqGnBI9FwUAUBlDKVTXYL8+0GMBwbM/AmGe/QwraSW3z8zAGyJcEjbY+rJMjpf6YhzYpA9Ni8mFHuk92DuOPZ9v6gsqS7vBP66ebNmse7sm8d8nXZP6yS+T0lTfIKStuk5NW36WLtQYSDVgtaqBac6/MPEsXa8MkeGk+yXIIBvien2P5aeW6TW17zM/qz6YgAhl3X9yNgTPPAttjxtjbAS/R0Rrdia6+XeavukHevfRC+eBf/EvyFCIenW89Y9h6yhO/9LEfQQxb4DZwQXfvvpbPwE70nzR4Nk9jzOe9OcIF2C7G+J7E5yzmBWWwDzWwvyz5OI4w0AFZeiNsnSxynmKNZbt2LvN7lLVy16W/slFbz1AmdzZQJpRW5z0uGo6gHFUDu0v0TaeAI3sOYZ0IxDHzrEPxe+jOTu405oV1ck8vaZcaisqHoLV3f+uVH2AiB37iAnMPYuzDU4f75XU9vvbxrXLSovNk1tA6WbBadxkr7koW7pEF2hB5luH3ZNr3zJ919v0jZF6Z9Pr08tKIQJdFBjiPczV4LVhxvZz6F9+UjY/slNadRFws3K0ab/0SSLIGKuHDw2oLbsASmEuHafBsbgkfsetA6Fdp84KfSeShblg+xhjg9xg72w/nbx75+D3qgTh55b3+GGw7HqE79Id5Y9fYEPbZAm9ecnzheGJsCrX0HAYNOoKniJBFYR8F5eILI2ZNtrLhjZef7dNKdCi7K7NObye4Pc5iDNwFQzcMWNANj6E/6g35bBfyQN7i8uHMvvXuKrxLC7bZvRO/Oaif8RJIXSzx3Wv6+bM/3pA8QThn1XpZcNbdMm9Va3HGAm4Xe2/BD78nvTI2z9LWi5XNS68tmxdjGKhCegGLROA6TXddC/7iPPnc9zcmD77gVzcQuHAygRmyfftO2bunNV8YuLABg08M726d3WfNJc/mIUO/8XwfcwLHnCOYM9zF4Jh1cMwyeS7n5QHmAucoaRf/LPn4EAe+t20AWXojWD6LaNdbY4EwkFFPkLMu/VWBynvmAsgzAioRg6aTZpF1uqWF/ex9XwXsmQ7GY9PwzIb5/I7f0+FDh8Jn6imNecDAFKa0nQXatI5eVL7WTxapnvSfXXuHk19ZR8boG4v1zF8T/FHx763+oswf+rHMXXODzD/rHjn5rAeSxdlb7BkEYsHAK+PlhZy++p6Etmw3ZHtp+TGGgSqkF7DIuavulAWrbpR3L/qR/JdV/5qcHGDvi0uzOImAXfAmaeyA4RMIZsllQs1v/Z1XfB55Nrf0fAYpfcrOAxB1eAyyHINfmMZI+dPIuYCylJnyULYs+SwhK+UFEFy8Pi3ZZxo5ToB17JoLMA+plQcsqr+mUEvP4Y6HTxniM5WdRs9YnTBUNNqkEesCxx2meQKDnSR2TEAe/cVQNLAWlW/kZ4TwoshJaO8QOerfHZksirt3te6v7NZy+KWKeX+0XE5fc6kuujcmD2LMW50/cOUtE7LKy4Qgg0hawAnzyyTuD56y8ib54MpL5T3/7Zzkb+N2JRcJdTd1oPVLJm95y9tGbTRBA0vy2v/W3+/s3L5jxI5psLb2yLmA9uk/1qeYzzkRwi7ONkW9PIsv+0xjLLCyjTT5LLAOUl62YfvyaHXlkfqzayrANZflCHsMFNVfU6i8Z6sQKhWwx1nwlNUJ4XB0NjgCEcpTFYpeisMxUxIOz/plAE5uJyL7QAr98Zhy2EuZNp/sRD4sismigLcbT8YZ6QR561v+o+yDSuA6+w/ITj3GY/BTP7ZQ3vuZK2XWWbfIrFV36c6r+8DlfZ+XZbUDZgWnOgLXyStull9bs1ZO+v2VyU9gtR7QwJujW7vg44+bJpP4+pNJGkwmYTFr/+Gpfg+fBYsAvhL6n/V962vsC3OGizUXaQKfGfTKoF3AcUx50EdMPv5gMNYBKyfrs14a88CuYzimDDblCSplQFqG/ppC5T3DKbmIUZEAFGkVngZPWd2QEwGgEeuE1QNTC+qCstrJAOIz8zHJ4Vx59BcDdGEd1esbRJ/WmXFsF5tu5cMvw0+efOjIj+xOnnJI8pJHuArupwD4w1gsqtN+fyj5RYzZZ9/eekx89f3JAowAYINJVkCJfR/StknyMmEZlwpjgStGr15e4inEeatuk/evukrm/N6qkScLd+7TkylNwbe/7Z0yof1juhMnq21hK/2MuYzdcJKaed0p4CPwFfiM9SH6lfUtHLOOB+ZjfqF83stdWQzboWzwf86HmHx2vjOI8J5YjDGgL7ue0RZcb8DQPtC3h2701xRq6dkqKk1pafCU1Qm5uNLJAMpgHaoqcGKzLzoTj0NZrMxI7eTg5QrklwU6Nfu0uynkMZ959jukReVrLYoTZcIUnfh6Ro/A9Stv+X+T7/AQAMRD4MKOa/rHV8rJqy5P/k4Jf0g8E3/LpAswAkAYXEYCQ3CZz34HZl0GrPISIRkGkzqZBK7Vd8jpQ2tlzsfPkhdU3/gNmW17diRBC575jmOPl8l46aTaFScXEw89TCZMnKzfqG1KCFwE/Qk+RB+DbzGfKcC5grnDY8jAqxvIY32kZZEygAxUMfkYDCgbgbIcZxY7AdcSwB5THoL2KkN/TaG5nnPCU1ZIOo11BE/p+L6MSVYmrIOlnYnZcfEYKHMs3tkV+4J+qU9bjnkMWChv5QsnjAcEruQlkthxTdY2dNd1zLFvSb7D6PBju7iggV9Cn/kHZyW/PzjjrNuT3QYCV+sPjRHAWn+/NPr3XOPJMpat+un0FnyQ34c7oE7pte2Vi9Grm9YWyyJw4cnC965ZJ7M+tibRMX7kCc8TMnC97a3vGLlUmNgI9yInjF4qLAtZ/kdibtjdBeYO5gAveeGYcwLlyw5cMXryeUCA8Op7jIHj9frC/LNzkLIhj+W9NQTlPFk8NoWeD1xcDLOIsx8Qx1AmA1nouPjeM1QRcLJ0SzgRzsqQ4jPl5Bj4OTxm3zHYvjyG/bJ9G4yQgtAnPiOFvpFSTv6sDRYg1MWYMEHD/kL6getXWrKD4wLXVTLz7DvaizIX++yAZRkGLi7ivUov8IRMK+/Vt2WTP1peeUcSuGb+7lnykio8DFzvfMcJrRd9wgfwjq4pemI1sbWj3jccf/gmxpj/gfAx5rMO5wwXYP7eKBZdBDJe6mKbaWQfRZglHz7z55cgK+VF2TyBNQb2B3j6wPeUBWAK4DvAC/wYD8eVxabQ84HLM6Ylz9ToBEy9H8GEommYXgKdDSnlLytwxcCzMLRJXTLF5KccvIToyQddWxnBvLJNOERPOA7R/pKHM3R8kcB1ymoErtt14W393JIXnEAGJi9vLEcX8jzMCgRNMJQhlCtLRgau96y+VmzgYtDCPcZ3Hnu82kdPLtSmE3ByoXaadNjhshsvpCwBMf9DSl+D72GOAEwB+7t8ROiPVTJLPgaKMB/lebKXxTzgAyAIUAB1EfbNz9Q58lmHqWePLDaFng9ccIosQnl4bQCOoWg4Oy+3hZfd4MxlBy44QxECcCDKBRkxFsjOIGEnIY+BPGPx+rQEtme8dsWS8iANFxUSn3G2jLYxCcL+xjItcP0HSJ4auJKHM866O1l4bWDKDlBp9Bf1NDIwhAGiWxZtK6zXSVvJpcJVd465VIj38trA9a53HCeT1K6HTp6i80vnnAYt2Arf4W3Kvl3zE9geee0P5gL8CvkA/J6LMVMCn7HboI+iXhZtv90wJh/gvdaJby2OMQYGLYJrAl/LBCAoMd9bM7JeOxXqK2RT6PnAFRoyZNpZARVvCcfyDNcLgFxwMMjoyR0es05R8IYsAz6ckZdpMCnxGd+B6Jspv0eKM0fUZT2U4eWHGPIELjyWjTccz/r4WXLq6rUauG7VRfcON3DZoGTvfaXTX9RJBoK0YGC/74ZpD5XkJdpIk8fmu9+rvk7SwPWBNdfJnN87K/k7LiyD+4zu3/7WY2TyIbrTVsK2vMdV3PNaiPlf0meb8Du7CBMIVGiHPocy9lJjXfTkYwCDfDhmivJl7WjYJk4UkUIGACcGlAUpvmOKMkh58gDd4Rht4Tv0DXuE8oRsCn0fuEieAfAMyCsDxwqdvldAB4KcDA4YD+W2Y0AKlDEWtsH2SeiQCwdTyGU/k5yAtnxejAtckw6RY4/FU4Wtyadr6PjAteaW5KEC7Baw+IbBKwxgluPLjV/cLe1CP7Lgm+/xC/FFiEfqw+DVCdFGKJ+X59ELXLgzgsCFHRVcEoFritpmyuSWbbHjmnLEm2TPMO7XVO9/mAPwefoewLlCYLEFmI827ZypkjH5cMxAYoGyeWSMAWP12ufVDoLHNqgxpf4s0HcZ8lWF5nouCbwJCSXSeUgu/CQMUcZib2Hb75Y2ENjr3nQc60A8BvKMhfXSyCDPe4JcLKzuGEhxTNhJYQGZwFD3PnHvZIpSZYgELvwcER7ZXrDqMg0YN8mcVbrrar/GBAFo5qq7uqK3oFvaIFMF7d+EdUO248lrxxF+l3yv458zdJu8b8U1MvujqxMdYzYd4I5L/9n08uuybdNm2bljW2KOPRrRNm/flfw916Tkj5E9u+ZnzP+s79u5YeeMJfJRB7uJPPDa6IQx+cJ5wPyyLhUy6KBsqBP2bWUAwmAHXWE+c05zTfUCWq+g7wMXlI1trt0hpG3B4WS9GLhAyMZJR9rvwmOgjMAFchKhbTq5DVYk5IO+GZzsBKDTIw/HaCesP54IXOmXChOYwDX791fJqRq4kp98WnGL8nZdfO8YId5aPMKVd8pMcIUGNbKdN2NF6w3GIIJXKwCkBDZwpS7yeP+WtjFj5ViOBAHznq4Rsn6bYblW3bEBZdqqu9tsvQhzlK38sH/QBjAQea1jDVgrQyK/Pb6Vqr+lN8l7hq6SmR9dKa+qrsPAte31rbL19U2yY/vWxNZ4VxdCAmxXRuACY/6HlOQcYV2erHLuIwUhK30yC2ynCLPkI+2lS/vDu8xLYx4g0KB96oAB1MpF2cI1I5zD/H578vbr3kXfBy4qmoaiwe2xzQsNVxRhH1XQGxeQZyysVwbT9GfzrD3yMHwcHn+EzL/jaq2eOMvXM389nPV7y2X+8gtljgauWUM3y1zdcSF4zV55q/IWXYzb1M9YlGevuFPmrrg34UnLkd6j1F0GXrm/Wsvgdf4aFKau1sCwGq/qx2v8b5UZq2/R4Ic2tF1tf87yOzW9W2Yv10Vf25ihi/80UAMJg9Ic/YygMEf7wjH6TupCxjZHy2kZlEt4fyIfjhnMpq/WYLrmDpnWJo6RlwRS9KFkHQSnaWu4A0MQbgXIVtC6X2V+QHdVDymR3peMA7pJxrhad656AvCeFVfJjN9dKa+ornGPC78Qj6UM6t/8+hbZvnmL7N61I1ngsONi4PLmWBPslflRBWOw883TgyXy8uikHzAIXAUR9lEFvXEBdU/MNP3ZPGuPPBwXuJId11sYs5Id124TuE4ZulBmr7pBZi/DK+jv0IVZg9CKmxPOWHljwumrkGqefoegM2f53TJ3qEUGupmrbkoW7+naxnQNZkmqwS/hKrSFNnVXN6RtDGngWXaXzB7SwKFtzFh+l0xdCd6hQaAVoLibS3Zl2hb6TvpfgaDaCoItcheowU0DITgHaZLXInaLCKRTk2DaIvLAJIAqkzpK7K5Gdmgox90myqHMMg1wS+9X+TVdpnkYg8rVGuON2taN8p6Va2X6R1eM/OSTG7h27tLAtWc0cKm9vDnWBHtlflTBGOx88/Rgibw8OukHDAJXQYR9VEFvXEDdEzNNfzbP2iMP8wYuvNZk5seGZP6yC3QnsTG5xIUgNHPoVg06N+kO6CY5UQPaias2JJy2Erwh+Q6cufzmhNOVKJsQAU8DERb32ZrOWo6A0wo6CIgIWrOX3Spzl4Ia8JbdruU1+CinaUACcdmxdenxFpmqu70TNeCh3enLVS5l0qf2D5lOWK2EjEkZrb9cg1K7neQ4oQagNk/UXZv93CLL3a7tt8afkONLxtoaL3alrcDbDr7KJNArZ2hQRnAeBK7x7fUSY7DzzdODJfLy6KQfMAhcBRH2UQW9cQF1T8w0/dk8a4887DZwzVyiuwVdiJPApQECweLEIHiNBrANuqC3ghjKtYh6GoyW3ilzl+huStNZCEzt4NSiLuwauLC7A/F51lArECIoIvihDfBE3U2doLsYEIEpkWnoliSAoByC1vFrrpfj28GLMiQyJxwr1wiH7hw5TgJWUgdslW/J1GIrYJE3JJwFqsxgEtwSfbF9jPEmefeKKwaBq0cZg51vnh4skZdHJ/2AQeAqiLCPKuiNC6h7Yqbpz+ZZe+RhNHDpP3uUI/e4xgUuXdjbHF3Yxwex0UCjC3dS/i6Zict/Gqiwo2JgSnYt5MhOrRUMWsGvFQhbbWq+tjFz2T26O7pdjl91a0IEFvQB2RAI0SeC1bvWbEjYClwIIFo2kfH6ERmTYNMONLPBRC4GnvbOkmND/yofAy13X5Qd8k5dsbHNG2Wq1p+qu68TVK4TdIc5FTIuu0lOX355ErjwB8gMXAhO0P8gcDXLGOx88/Rgibw8OukHDAJXQYR9VEFvXEDdEzNNfzbP2iMPiwQu3Hea1WYrgNzVCkrtAIZFnjuu1q6rFbhaZe+TWUvvaV0G1MUbQSIJTrroj+7KTBBrB4ORwIG2tY/ZS7V/bQeX8U7ArivZDSGA3Jns4sCZQ9iR3aS7rRsSnrBK+2oHmVZAhWwbZKYSO6TZQzeoTJYt+Ri8KEcSOFWuVtDCZcPRnVQiv35/gupqhFrvhOUMXPfK1GV3jwtc/DuuQeDqDcZg55unB0vk5dFJP2AQuAoi7KMKeuMC6p6YafqzedYeedj6DTwdU0bg4sMZuFR48tLzkwV+xmI8oHG7zFpyR5u6u1miCzECxdI7ZMay22SGLvTcJSWBIbl8pgv9MgSUe5KgM2epBoRlN+oCfmNSfuryW1qL+/I7Ek7VXR04bdkosVMBZ2hfJy2+S07SvhEwksuFK25JLhHOWnqLzF18m37XujeGIMdLiQgqvHeWBJ0k+LSIAIVABZ6ksoFzddfV2hVqeYxZ5UdgTIKV1k3YDl5jd5/an+60bPDCrmua7rqmadCC/DOW3pgErmm/s3wQuHqQMdj55unBEnl5dNIPGASuggj7qILeuIC6J2aa/myetUceRgNXcI8LgWvG8vUyfREe0LhNd166aIOLdRFffMcIZ2jAmL70Zg1GN+oivlG5PqmHzzOXaWDRYDdnyW0auG7UQKA7OAYuXdQZrJIApUEQnK7lW9RdXcJ7tJ+7ZN6i22TuklvaQU+pgWLact0Nartzl2jQUSKIIZghqDGwIWDyu0QeBNBUtgIhxptQ5UBwnqnH6BdjmqFtJMFaA2uLGpy0H8jSulS4vqWDodZYW21p30tvkNOGLhsErh5lDHa+eXqwRF4enfQDaglcRRa2GMowXBH58hLw+rFAXprc4THLF4Udr9dPHhaRL++OC4Fr+keXyoLlF+lu4TqZgwcfdLGevkSD0tL1yW5l+iINGAg4Z9wsJ628W6Yu1t3GovUagDbIicuvl3ctvSpZvI9feK3MxX2oxRtk1uL1unjrbkwX8+nKqbqrAbGDwhOGuI82TduZq59nnKk7oGV3aaqBZ7HutvR41sINMlfbx27uxOUb5PgV18uJKt9sDRSzllwrp6zStlTG4zWQzVhztxy3GDse3Y0tu0ED5/UyRwMLLg3Oxq4pCZ4aVDS4Ha+yoRwu++GPq09c1NotztYd4dRFG5J7X9gtod8kIGsAaj1IcnvrEiqCuuoHj+PPWKZtLblGy67TcW+Qk7T8vCXrdbfYGj8Cl71UaO9xbXpts+zYsnUkcOGhDRB/ogz7kmmgX8QI2Hby+A7h1fP6KEIgJh/yvHlTZH6wXhlE33n67Ae0NFgxPIN7ivUYg23PcxDLNMMVkS8vAa8fC+SlyR0es3xR2PF6/eRhEfny7rjwyxnTfmfJSODCwo2F+UTdLSFgtHZSN7Ue/dadFBbwGbrjOmn1Xfr9DfKuoevlnVpv7qdxX0kXcgQ73R0lu632LgS7lxN1h3Oi7kSmov0hXfQ1ICC4zFx0vQah2+UkDSbzhjSoITDoTg9BZ8ay62XGyo1y3NJr5YSh6+TEFetk5opW8ELQwO8qJg9FaB2kyePoCBwaQKZrQJmxbJ3mtWQ6bvH1MmuNll+lZVffKcerDMciiK1QeVbpDmrpxmTXNGdlK2BhLNhR4e/YMP6TdLc1W3efc3D5FDsy7Do1wE3XtiHnTO1r9tJ1crIezxtSHQwCVy4CMfmQ582bIvOD9cog+s7TZz+gpcGK4RncU6zHGGx7noNYphmuiHx5CXj9WCAvTe7wmOWLwo7X6ycPi8iX53H4XbqKMnDhD5Cn6sKLwDV9aetBiOTekS7aJ+oCj10X7gfNXIi/YbpD3vnJ9RowdOdy1p3ydt19HYd7Pqtu0iBznS76uvjjUqIGLOxucH/rRN21nKi7txORrwHrRN01zVm1Xtu+Uk5ao0FSP0/VndJU7NCS3dBtSfDED/8iaM1YfYNMX6U7LA0Q6OO4JRpYksuPrScZ5666V3dMN8gJZ2oQ1XIzV16rcmjwWqXBT+sepwEGv5TxTpXjHcrjV9yh1PrazzsXX5dc8puFpxMXXirTV18vb1uyLnmScfan79Fdmva9uHUZ9OSV9yWXS/EgCv5gGn9gnTywogEueVpS5cdOEwF0ELjiBGLyIc+bN0XmB+uVQfSdp89+QEuDFcMzuKdYjzHY9jwHsUwzXBH58hLw+rFAXprc4THLF4Udr9dPHhaRr5vAxR0X7uMcs3CjLvJ6vKJ1v+Yk3eEsWHaDzPrk1TJbg8O8lbfLtCUa1DQY4f4SgsJUBDrdbSSPtic7EQ14yWXCNrGL0l3NjOUaXDQ4zFx+lZa7Qndia3UndX0S8BBI8BAHLv1hd4Yd0LSlV2tQu0pO0CCH4IUXXuLVKnhY4oQztM6nVB4tCxnnLFsvcxCEVl4vJyy5Qsd0TfJTVtNVduz8TliiO0ANWNj94XjeWbqTwlOCi6/S9q7VoHm1TFulgfLTGpBV3mMWaSDWQHvy6ltlju7KZmkQwz0sBHfs9N65+FZ5p6YIhPjFjySIaTlcxhwErjiBmHzI8+ZNkfnBemUQfefpsx/Q0mDF8AzuKdZjDLY9z0Es0wxXRL68BLx+LJCXJnd4zPJFYcfr9ZOHReTL+wfICFzj7nHpQpxcfsO9HdwnWniVLFh0mbx78SXy3qWXyfuGrpJTNJjM050P72OdsOh6DQ4bkkfqp2kQmKPfn7Tkat2laZBKuF4Dy/Vyku6e5i7T75ddpjuYS2Teqis1wK1NdlwIgsfqzubE5fdoELmn9dNT2vc87fPkZZckdWZq/XecobuuMzSALblZTl2uAUL7WXDmxfLuobVy6grdZS28UuZo/vTFuNelu7al12uwvVZmf+oaOenMdXKqyjlv4XWyQGWa+cm12sfVckryA8P6WXd00AMecT9xNR7C0CA4dI3MWniRynGpnLT4ck2vkbn6PXaGxy+7Q96lO6/jVtyt6R1y3PLbk13qIHDlIxCTD3nevCkyP1ivDKLvPH32A1oarBiewT3FeozBtuc5iGWa4YrIl5eA148F8tLkDo9ZvijseL1+8rCIfHn+jivt4Qzcw8EP7eJy15yFl8uvn3WlfGjFj+TXl35TPrz8O/Kflv9A3rPw+3LKmT+ReYsvlQUr18m85es0KF2twegy+cCn18mvrrpIfnXl+coL5VdXXKy8NOEHtZ/3Lz9f3r/ix/LB1RfI6UPny/vOvkpmLrpcFugu53jdaeHSHx7DX6CBYcGZF8p/OkfrrfyhvG/1hTJvhQYy/L2WBsr3rrlZTjvzx/L+M7+tcn1PPrzqR3LKGd+T01ZcqcFlncxefK2ctlID5hmXyG+efZ38p9VXyodVht9Yer78lsr022ddLr+6TGVbqQFv6eUy7c/PT4LqySs3yImLrpLZujNcoIH1fasulQ+dpXU+/RP50Kofy+mLfyDzNZDO0h1gcm8Mv4G46m45fuh2eVd7dzkIXPkIxORDnjdviswP1iuD6DtPn/2AlgYrhmdwT7EeY7DteQ5imWa4IvLlJeD1Y4G8NLnDY5YvCjter588LCJfJzuu8OEMPFI+c+G1csqyK+Rjf3+9XPSwyHVP75cNT+6Q9Y9vlWsf3y5X/HKPnP3D++Sjf3mZnLbo+3Lq4h/KyRrM3r/mIvnJo1r+qb2y8cntsuGJ7bL+id2a7tW6e+X6x4bl2sf2yF99/wa58tE9cs1zIhc+JvLH/3ybzPnk+TLjU2s1kN0lC5bdIqd86nL5L397uXz/7lflOi132VMif/CFm3Und0ki27y/+K6s+MbNcsVPX5evXXW3XPGL1+XyJ0TWXPS4/Nqnr5VZf/5jOXXhj+S3P32JfPfOrXLNY3vl5qf2yI2Pb5ONj26SKx56STY8fUAu+eU+OePrt8oHVv5I3rPqEpm76Ce6e9NA+qkfyv/65w3yb9c9Ldc/uVd+cueTcv5dz8klP9smC796s/z2X18t8xddKnMW6c5yaEOyO521bL3uxm4Y3OPKSSAmH/K8eVNkfrBeGUTfefrsB7Q0WDE8g3uK9RiDbc9zEMs0wxWRLy8Brx8L5KXJHR6zfFHY8Xr95GER+UafKpwoh0xSBoELTYze41ompwxdLNOXtgLX7CW4PLhWFiw5Xz72N5fIg8MiT2qQe0755G6Rp/XzI7oSP6or7c26Ki/++nr59RXflvcv+1aS3rtT5Fn97kXlM9qHxjx5vk3kP6P1z/7y+XLTM7tEY4ZoXJRzr3lWPrjsR7oDu1J3eWt1N3eNvH/hRfIP5z8gGvPkSS1z62siH/2bC+U9Qz+UD628QL50w6vyC+3rSW3vsjt/Lve9OiyPaR8PqGxfu2Wz/OHfrpX3nPkt+cO/uUg09iV9v6TjfXHffnlq555kt6kxVR7afEA03sk373hVPjB0nnxw6Afy/k+dJ6u+cY88uEXlVxlf1HobfvaUPPTKnkQXGkPlm7dtlz/8x1tUT5cnl0ZnL71W9ae7zqF1GriuGwSuHARi8iHPmzdF5gfrlUH0nafPfkBLgxXDM7inWI95kPUiNaR8KR3K4KWTAF+eZl+iBkC+/C9CjBNtoC37kjb2FcoA2SAj6vAFeZSBY8IYUYZvKS0DMf3xGN8jJfkdaF/fTz1znFmYpIEKweuQZNc1USZOniDHHPO2ZNHcdwD19yc/+YTANfW3hzRwXZo82o3AhUe5ccnvtOXny8f//iK5f7su1KqWl/foAq7p8xosntu5X57dtTdZlB/Sz6u+d7P8xopvym8s+ld5TF3hdVX9ywgqmmKRf0TrIsA8r5+f2CGy4t9+Il+47BZ5SI+f0e9vel7kN5efJwtWXqy7l7W6g7tcPqy7wI0/PyDPajsIHmt/+ar82tC/yfuXfkW+suFZ+YXKohuxpN2LdTd0/8sH5Dlt/wX0qd9d+7Mt8qGl35ePnn2xPKRB78mtB+QV1d2L+4blKVXBk6qAV9RHXto1nNR7QnXxlY1Pyq+d+a/yR2f/QG7TxjG+Z3U8z6ic9zz9mjzw0i55SmX5merkES1/xlcfkpMWXay71ctkxlnXygkr1sqM1etk5tB6OXWZ6lQD1yvahg5hJHDt13pVBy74UWx+ZKHX528vvOgya/3rV/R94Mrz6mrLNFAupKBXt1uiLbbLPtLg1bWfOUagjFdr59GfzbevJ+ek5meQExWIB9f9MlnLTpmM9ifLpMPelFwyPPadx8j2nTt08cTE3p/sAkYC17LLRwLXbA1c85ZdpTuJH8mHVnxNLn1ok1x222Ny+c2/lG9cerecd8U9sv6nT8vzWvfpXbvlGU3v14X9z/7xQvn40L/KBRsel3U3/EJuuvcp+epVd8jfXrhePnfhRvnnS26Rz/3oZvmXS++T//rX58knz/2x/HRrKyg9rfP+7PNwX+gHMn/FJfLuJT+W//HZtfIL3Sm9qN/9Usut+dol8oFF/0fO+MqV8pB+fgQBVdeJO57fJ2d94zr5y/Oul9sf3yQv7Dggr+3eJ8+qTKu/cZv8l89cKN+6/G655YEn5dIb75BvXrVe/vmKm+WfLr1ZvnbpdXL3k8/Lc2quR7TNxzUI/sU/fF/O/tpaeVQV9KLK9sz2vfLln1wp//ucz8vK//s9+aHq4i4NhGf+yw26y7y49UAIXhq55jqZvupaDWLXNh64wE7mRxpsXTD0yyLsRD6vviXmEubNvn3QcBxeG0X4RkEtI7GG5rGnVI8xoD3v7GF4eNg9o/H6sLsFpmXDtm37DBkCY8BYQmDMWRMoL/Lqj8eQkWdwdnHAa8gxNuR1smjIvtYyiNfzb9MdBXZZw/v2JDuuPQcw7vTANXfRRt3xXC+nnnmhfHjld+SuzbqoaxC476X9csY/XyS/euYX5LdWf0mWfPVy+bku9o9u012OtnX9g6/LH37ys/KoblOeVj7yksjif75APrj4n+Q3hr4kH1lznrzvjC/Lry/7rrxv8bfkI8u/Jbfq9uVprf+aBqfr7n9Zd0jf0KD1bXnPJ/9N/v6C++VxXfFxme7+TSIfX/Ml+Q1t61s3P6m7JRGNaXKn9vFHn/me/Mby78p7zviSfGz5V+Sup4flJZX3BeUtT+yX/7H6y3LHT1+SZ17dr0FI5MtXPigLPvWv8v5V35d3L/qC/Pe//4488Lru3lRl2BH+24Ub5P+cv1ae1vaf0JOERzZvk89/5xL57TP+Sj7wF38pH/vMefKRs34gv77mMjl58ZXJU4sIVMd/6kqZv+xGzdsos5dsSAIXfvKJgYs/+VRG4MqLvPPDYy/PX4Anh5xD0Bfmj1c/ZNnw+ijCplBLz9axeewpwWMewDFwBoPFFikXYjgK+sP2mGc4aBMLK7f0+IxdBBZe5OEzFmZuqcsA2uJOBH2gL3s5Dnlc7AHIijqQnc6OMdkxlrHbIrL0R0AW5HsT7sgjjxyXB+ZZfPbtRljaL3g9Pyy0a89u3W1t0+C1V3bvxxj9wIWnCmdr4Fqw5EZ5z+IrNNj8SB7S4s9q2Se0oU/88+XynqXfkZM+9TX5rU//SL5/05Pykg7reQ0Sv3hut5xx1rnyhAaIzWrm17Xvv/rG1bLsS2vlzz9/gfzZ/7lM/vQL18l/Pufi5IGODyz6lnx57S+SS48vaGB6RFf4PzznO/JrS78qv7nwXLn5uQPymPb9sPJL6x6V9/7ZP8p/XvYv8pAGn2c17wlNv3T1o0k7eKjilMU/lt9Y9gNZ+S/r5BWNza+qDCi37O++LL94aqts1gG/pPzrr98sv7H6fJm/VAPXsm/Kf1r11eShDdzz0mLy9UtvlD//h3+Re7UCLhU+v/eAPKvt3ffKPvnGxofkf33+B/LRs7Xumd+T+QvXysn4LcXF1yU/dzXzkxtk3mLV4ZIbZMHSS9zAhZlaR+DKmh952MvzF8CVB8wxyoR5RFljLArIgH4hE4A2w/WvCJtCLT1bx+axpwSPMezciak2Cra/ZcuWJCWQDwc64ogjRs6awHB3QKNi0eauowjZhnVu2xePIRNkg4xWXwDHEuaHY+8GefQHp2c+nB1yY/JCZqSQHykmN4IVvj/qqKNGxpVOtW/7PhZ2W7t1biUBa1h1gH413wtc+IPhJHBp0Drxz6+R+Uuukg9/5nz5qRbHJbSHNTj90Wc1cC25WBYsu0rmf7IdJLQhBIVX9Ptz/vnr8vDru5J7XC9s3yffvmi9PK3BAPe7XtQg8piWW/nNG+X9y78vC878hvzxX/8oafc5zX9cd16rv7lefnPJF2ThP54nT6rcP9f8B5V//i/rk8fx/+Rvfpjc08Llw8d1J/jJz6+V+Z/6rsxdcYVMPfMSOX3hpfLfPnO5/EJ3Yi8jcCm/dP4V8sDjL8sWPX5V1f/1nzwgH/7UlzXIfV1+Z83X5JzzrpGfvbhPXtHvn1M5/+kH6+W3l31RvrzuF/K45r2s40cQfm77LnlaA82T2/fLHY/v0qB8u3zwjPOTB0nw2pSZZ98lxy+7S/BaE/wcVJWBK5wPIWPzY7zPjKVXp5fmLwMGgc8og/KYL3YsHkN5OiUBmbz1L+yvUzaFvg9cABdf7hTYBwyHYzhLeMYB8owDxgzPPqzMRYG2bNvoC33ymPLgM0B5UY/OR3k4xjKCFpGlP4C6QwpnhZx20nIs/I5p3h3X/n2609P2dw5jOdQzXA1cr216fUzgwi7DC1wnDd0sC5ZfLb+25rtyvwYcBAvwf/7jdfK+oStl9plXJAHsv6/6tryqDW3R3c8rW/fJp7/wNXlkm/ajvbywa6f85MobZbMO/2UNSs8q8YQgnkJcoLu2k3V39P6lX5OLHtqSPHGIpw0vuvdF+Z0l/yAX3ny3PK39Pqx51+l278NnXyjvOfM78nurviWX3fmcXHPbT+Xaux6X//qZH+ju7Ycyc+gymb38Wpn3qUvkv/3NOrn/ed0pqVzPqgK+sfYa+ekzr8sLGug0VsiV6x6W9Q9slSvufVnWP7wp6edl7Uc3VHK/RpmPLP4X+dVF5yV/r/bFyx+Ue146IE+oKV9SGfGk5MvKFzXYov1zz39U3r/wApm/+jp5+8JrZerZD8rxK+9JfjGk6UuFqG99ws6PPOzl+QtgfoXyhPKmsSjQL+UB0CblzStDFptCLT1bo/HYU4LHGNAeF1ikNBDOLgiU4aKMNnGmQ6PR4bj1x2KLsyuUx/YedYsQbaAttMmFnH2xb8jCSxEAyqMuwbFgbHastky3QBtZ+kMe5GF/lJeye4EMY6GOs6nj1R0XAteOPa3Xxe8e3iObtryeBDB7jwuBC4urDVxz8Nt8f3GlLFh8sXx49bfllzoMLO6P6mL9Pz9/rZy+5IKk/AdX/ETO+tfLWzsuDVyb9PvVn/uSPLZ1ly70r8rTe3fId6+9W+56TgOCdnSPBo61GlD+9Nt3yfShH8vcNRfLu1d+V1Z8d6M8jMCnsvxSy5z1xW/JA08/Lc/sHE6eSPynax7VYHmRvHfJhfKJz10lv9Bd02MaaZ7VOou+cIm8d9HX5ZQVF8rcpRepTFfIH//lpfKwtoNA88jO/RpcLpZ7nnpRtqgitmkEueGmB+Up3bJhh/jSzgPJwxwISPe9KvI3F9ynAfm7ctqytXLywsv0+Ifym6t/JH/2hRvku3fulNtx707bwA4Rlzh/qbIs/crG5LLjtKHL5fhVN8u78MvxQ63AVdXDGbaMx9j88P1mlL0+f8P5hB0cLz2ivXA8IUN5OiWAFDIBkJFzk7IXYVN4QwQugA5iYRdkHqNNLLZccEE4JVIag/2yThHYfm377BO08gBWXk8GjtXqtVvE9GfzMel4adDS6pLjs4Esi7JXg9OB1kK5fbcumRrIsOPavHVLcuavUqQHriUbZMHQennf8ks0cH1NHta5+YwGrsd1of/UuWvlfYu+Le9b9n35tcVfkasfeFFe1oYQvB58crMM/e2/yUOvbJFn9m+X53QRXv5vF8tvLf6afPCTX5UPLvuOfECDwPxVP5bZa/AzTxfK/KEfysf/9idytwYiBI9XtJ9rbr1bnnrtNXlBh/BL/fyHn70kCaKnLrxEfmPpD+UuDR54ASaCx3fW/1T+86qv6HdfldMWnycfGvqefOY7t8lTu1uPxT+qbSz6p6/IHY8/J69qW1s1b+31t8vzGvSSx/p1TM9o2dteEPnL8x+Q05d9V+Yvuyj5W7L3rdmoAewCOXXx9+WDqy6X+X/xPfmtVT+Qv/7BjaoL/DnAfnlOFfxl3cGdvuTbMmvZJcmv5L8TP7KbEbj2qfqr3nHlmR8x9vL8hW54b8vqivXYRhrLgJUHbVp5i7Ip1NKzdWxruDyMgc5Aw1gjIeXCaw3HRRUpDQiHpDMivyx442U/PEsj0W8YQNLGxXHXCcgWBiTqz04GTnBO8iwicB3Yj6WydakQgWvHru3JwhgGrhm/u1JOXnJpcp8Gb0Ceu3SjnLxMd1ZLf5w8PYg/zn1ud+vvqRZ+7vvy4TO/IP958RflS2vvk6c0AODeFQLb+bc8Jn809A9yz0vb5fHhvXLvaztk5dfXy4cWf0c+uOi7cvqZ35IPrPyhzFvcuic1e9mVcsryK+SDQ9+XS+59Jblct233Pnn48Sfk4aefk6e17Yvv2SofXnm+zDsT99Wu0eDxffnGDVvlMQ04eIQeu5+hf/2e/Oaif0zujf3Pz35b7n9Ng5LKg0C44dGt8vFln5P7n35VcHcR97y+ff1d8pnvrZezf3CrrP7OLfLn/7ZBfutvr5FTVl6e/H7iHPwmowby9w/9RD75tRvkA8u/ljxMkuz6Fp4nv3f2N+WWp15NLkPiD5i/fePz8r7FP5QFK66UaWdeKXN111X1L2fEwLrwBesv9pg+xzymyOccCgMdUMb8sPKR3cxftIPdG4A8lM8TPMoEZPDmpB1HOL9jbAq19GwdyHOELOZFuLCHSNsqk/jMfDog6xQFdypom/3aBd/mA9SRHYcdmze+qsC+rN0or5140BnykOaZkGTycIbuuHbtbb1ZFwsiAhd6G24vkTv1gxe48Cvoc5Zeq4HifPnwWV+VR7Xci9rcs9uG5d9+tF4u2PiwPPjcfnlZG8aDC4/rqnyrrs7/83Pny28u/Kx8/5YH5TvrbpSL7/i5BrdfyL9e/Yx886bX5d+uf06+pIv8P13/onzkszfISYvXyqkrN8pJn/qJLP/aLfKCtrV5zwF5dfMWWXfLfcnfVv39j38uJ//pd+SkhVdokFsv8xddLn/4d+vlpudEXlLZH991QB5Vfu3qO+XvfnCt3KsC4dF9PE34Uw1gS//vNfKnf/VDufvxza0/ZNY6f3fZLXLaUt2lLf+BvHf5BbJg+WXJ314dj/d/KU8ZukrHfYVc/HOR+7TONU9qAD7vZvmjz14qS750g/zg9ueSx/+x63pe09Vfv0OD8gWqw3W6m2z97FOvB67Qn3AcLq78nn6JuYY5VxbKmL8A1xPkY63hpccslgnIRTlJyG/1x3zIFgZmj02hlp6tY1tHzcMYeBYDp7CLLI+xTafDIJ/twkg0TGggTIzQ6bpFOF60zctt4Q1ofBeesQGQhe3gmOPh2OuCt+Oi3HR6HFOf4VmwR9mv4zWBC4/Dv/Lay8miycfhEbjwVKENXMmr+/EjsUvx6pLL5INnfU1+pqWxUD+zdZecf/UdycMYeNz9+c0iP9NV+UHdGf2PL2yQdy//lnzkL7+ePD7/jJZ5TdX5PMppit3PE/gDXy37uH7/v//5Jjn1zMvl1DV3yaxF6+RXV18uN2lb2EXhUfbvXXOv3PSkyMfPvkI+tPp6maU7GQSFuYuvkXerrH93yWPyUPthj0d3DCd/xIxf0XhUA82LkFXd7FvXPSe/tfQn8nsrLpBbH90ruvmSX+p3qy66R+Yu+6HMWnq5tndV8ndY+IHcE1beKfOW3yLvGbpGvn+PjPwyx7N7hnXHKXLeZbcmv6CBhzPwYMYz2tdFd2+T3z17rcxfvC7RHd64jMuE/bDjwjHnDH0Lfgb/4hzC99Y3gSJyEVY+9tvp/A3z8JnBIsYygbFYvYI2aNlAmieogk2hlp6tA4WOEGMecCEPUy/4wEBwMBqQhkOKPOYDaAfyFiGdFm2iXzu52C+/Q98A60B+jiFtjDF4MnVC9k+ZqD/KzmM6epjGiD9A5lOFW3e2/vB4156dScpLhQxcWFznLb5E8MZiLL4zl+BliDfIyauukfed9T25W4vjNwCfUdVctPHnyb2h5NcsXhW5Sbcw/+vc62T+sgtk9pIf6k7qx3L7llaweh5PEmKB17K4lJhQgxIeuFj4pTvlVN1x4QWVJy66QeYtWyv/uP51+bmWQbC4Vf/52588Iu/51IUy74yr5KTlG+WEhdcmvwyf7NTO/K78zfkPygMaSPDbgbhkiJ+awvHdr4h88fLH5LeGLpAPLb9GfmvFVXKTdvq4KuNe/f7TVz8rc5freHWXNWfhOpmpY37XkjvkuKV3Jg+mnKa7u9//q6tk7cMH5Oc6hoe37Eouh3770tvlSQ3WuLf2iKYbtNM/+qtLZd6f/yi5Lzhvzd3JO8qmLd6ogavaX4ePgXXhC5x79hg+xjkSlglp5xcAn7UydsOy5i/asinq5JkjZQJ9e/rjmMITTnxG+Sw2hXI1kwIaC7CGy8MYeEkAZaFIm1qHt/n8zjod0m4MFyPbBuDEdGoiFhgoI/JtCuS5HEI5uqXVET4DZU5M/OTT5Ek6pgmT5dA3/bvkJ5/e8rZfSe517dyLZTQ9cOFx+Nln6EKsu64PfOZK+cZP98n3H9wsP7zvZTn7u7fJP176Sznn+3fLX/yr7rKWfEvmnvl93Q1dI3N1J/SB5T+Wr6x/Sb6//jE57+r75byND8tXb3xU/vXGJ+XLt74oX9zwkvzjulflY/9wS/KzUghGeMnjrKVXyUc+d6P88/XPyZc3Pif/ct3r8tHPrEvetTXtU1clu5gTlm6QWSt0N7PoKnnPyrVJX3/wNxfJZ8+/X35011b57m2vyheveUT+5PNXyq8PXaIB5aIk6H1w9Xr5m4tfkH/buEU+r/xvX75H5i+9LPk7tdMWXyunLNEd3dLWe8hO1oCNd43NXXyhLFj6PfnEF6+Rc9c+Jj+5c5985ryH5Nu37JS/v/gR+e+fu0Q+uOybyWtZ5q1YKycsWtt6eSbuES7DPa7eDlw8tv6XBvgl/RH1WKcIi85fHnMucI3JfWJXIqBryGfb5/xGyjGz3zwn7k2hXM2kwA6Qx1Z5WcwDOA0dhORnBCEe02l4vRrHNjBYZ8rrWDGyfQKy8hJf+LdY3jhAb2zhBEqDrVeUaf2GefjMccc4CcQP7U45PAleUw47VE6YenwSuMIdV3ipcK7uGk5bcYdMP+NambbwUjlpxYVyyqJvyemLv5kEiw+suljmD/1Y5iz9ke5cLpD5a66S2SvWa4BZKx9cfrV8cOGP5dcWnqfpV+SDQ1/TndVXZN7Cb8qpugM6bdkVcvLiKwQvZJy9ZK3MWblB5q65SXdd1ySf3zt0sbxv8Y/ltDPOl3cvu1p3Muvk5LPvTF7OOG317fKuRdfJvNW6GxzS7z55QfJOsPcvu0hOP+O78sGlP5T5//vrcvqi8+X0ZdfJ6atu0QB0rcxddIV+vkROX3KRnLp8bdL3PA2IJy+9RhYsvkbHfl0ScKYu2qBB8Vo91p3g8ivl5LNUpk/+IPl7tbn/60fyXg10p2uAP23ZhfKBNVfobu18LXu5zFi+Tk7QnR3e/Hzyqrtk5kJcKuztwMWTR+azPBZV3AbgHMKcsn6Isnl9MItlzV+OAcfhCXIWywR0Z3VJUh4SMjIg9yr6PnBh12EXytDRSRjDOjKOmcd8Ww+BKzRot0SghJxWD3QMplYvkAO08uIz5UE+xpxnx8X63RJ9UR58Bihr6Ny8fIl8yJon+DNwTTz0iCRwYcf1tmPemvyChg1c/sMZNyW7BuyEZn/6ruR1+Xjr78lnagDQMrMXXydTh66Xd+E196uvlnfqYo7gg3tjczXYoczMxeuSFzGetPIKmb/iMg0SV8nJi9bJ/EU3ybwzNTgu1MCz9EqZvXJdsvBPXbReThq6ReafuV5OO1N3WouvlwUrNupOZp28feE6mXbWvXKs7gSnLd+YBLvZS9fJqatvkVkLNVjoLmm+7g5PX6XHGujmanDD5b9p2uaCNetkjgbDk3WHNv3MS5Uql44Nl0Lx5uZZQ3iT8c3Ja/enrrpNZuIllbpDm33ODXLMGRq0l7fkOGXlLTJ9oe4qV14n05deIe/8s0tlweo7dMe4UcvfJlPP2iDHr8BvFt6pQeuORI/9sOOi7wPhZXLrh2gP84L3ocpgGfOXwStch2IsE5DR6tWSOqaMWF/y3o5oAn0fuNgelI3ydjeFPOYzz36HFLQByuaXQfZnYR8osfDO2Kz8nIzIA6xe02DbKkr0Cxkt7MTluJCH8nkmKIIWLxUmwWviBHn729+aLJr7DrSWSLzWZFzg0p3CLLxIUhf1abqov2PoZjlx1R1J3vzlt+oO6BYNCDfLcXp8ggaO4zTwTFulQUyDxdyVt8m8Zbckr9THK+1P0N3HCRpg8Lp9/BLH3IU36W7rTpm36LbkVf54f9U0DV54og91p555oyxYdpfuzm6Wk3ThR3A5TsudqAHlXUO3yfFDt+quRneFGjTxu4rHfUqD1Ip7k0Axe7kGFpV9xuKbZPbQHRrc7knypi3Rnd2KK2Tm8qtkKnZfq3AfSgPU0O06vlvkRJXreA1cx6+4TU5YcYumG+QElfcdGqjnnHObTFusuzDIouOaod9Pxc5y+Xo5ec3dcsIZN8lJZz0ox+t4j9N607Bz1LZnLLm968AFe1t2C9aFL3Cu2GP6P1OAPmcXV/oeYdsowqLzl3MAKY/RJmnLeiwT0HXYp5WJO0CuL72McjWTAuvY1lHzMC8YsKxh8jhGXQwnlgUmIicjyoZOzjY4Pow1L1i3DPLMkwiDGIGxevU9jr5IUk8eJmlgnjBJjjnmmGTRPIDz+gP7zBuQlyePhCe/Dq/BKnmqcIkGCE2xsGOBn7kMwazFGbqIT9Vdy4lDN+rO6wZdyG+UGVoPZBnUmaqBA/emsHNDHoIf7iXNXnarftY6yzbod60/1m3VbX2XvFpFOSvpG22122vvAlF+5vJWf5Bl+lLkox9tZymeiNTP7Tzct8Mvt6OfpC4CqwZApKhv209SHYslykCOmcnTgq3vW2Nq9YN2krosj/ZBDbr4o+mZH12Z/Ir9DiV2uskpg+r89dc3y+bXNyWBa3h4twzv3S+79rbsfmAf7FP9jsvmhX15fcNHw7pFmTZ/7Rwoe6cHloEq15em0PeBCwZBmyiLMwWe8fBnWWiMqkg500gHAeDkIOS1v1+GlGdvKMstO9uwPzHD8aEOnTELbKMI0SflYb+Ql7rnWDg+9suxZzEWuPCofBi4klf36+KMoMLAlQQDzQs5TRfmrO/JtDLM975HkGCgIMPy9vvwO8uwDD8XZVZ70F8scG3atEW2bNos+zVY7d7detoTTH5xfHj05n23YN3EF4zPe3MLeV5f3i9ToCz9NothHyFj8zecCyiLdjlPi5Jj6pYA0qrWl6bQ94GLTouyVDqdrSznKUI6BcBFnSmdnRMCQFk6kJ0A4ZgAjj0LKFuUVgZvDECYj/IcexaLBq5k55KxOHcauMJyNt/73tIrGwtcVr6QaXU8so+0vsLvwazAhX01ljrsuHZs2y47t+9IdlzbtreCV7Lz1gP4r53fncKuB3Yxtcc2L+yLCzJTXhFA+TIesIrNX8Dml732FEXV60tTKK6ZHLDOZh01D/Ng+/btY+rAIHytBo1UFW2/aXzzm9/clnQUW7dubR+1AL14rx0AMZZwImPMeWDrdEPIgksHGCtkADgZiHAsAMbstReyrMDlLcxgnsDF771y4XekLZNVrpvAlRXMitDKC+YJXFu2bEsuFe7dM6w+tzWxC3ZiAHZh8AU7vzuFXQ+sj4f+zjyvL8//+I64cL6GDPvwGJu/mAuUCzKiXcyZcB53QwTHIiQgXxXrS1Po+8DFa88wBs6wmKJuGY5TlJQFzg1ZmQJ0+OSySzsQoCwcHzdK4Uwcgx0bUiDtursF5SiDkAdnttaelNuODSnKc+xZLCNwhQuyZSxw2YXdMvY9mKdMJ5cKeVxX4Jqh/cQC16uvvi5bN29JdlwaqmTHzt2yZ7h9Bq82gS9Yf+gUdj2wi2e4kDIv7IuLM+YQjuF/8FGUL+N+U2z+EpAL/XpyF2FRQK4q15em0PeBi44b1guv4zZFyhACTm7PiAivvn3qkQS8+iHCep0STm5lAGy/OOZlGguUzaP/ooEreQgjXJANiwauPGW870B8lydw8fuwTFadbhj2kydwbdu2I9lx7dmlAWtP6wWfYPI3THqA+Wznd6ew64H1F893kBf2Bf/zFti0Njol2wgRzl8eoyzXnrw7uiyWjbB9yFlkfWkK5WvGgXU266h5mAc7dmC6jVe0PSOqCp7MIXnZjGc3pOfYIcIxcIwccwxh+53STn57z4pjCcfA/LouFdrAZYMEWUbgCst634He97HAlVaOxzGG7YT5Ie33eQLXsce+s2Uj5eTJsG2LAHZhmM9hMOkEdj2wvmaPbZ7XF+YI5gXnBt99lWfHEPbhMTZ/bb6dI94YmmaIoutLU+j7wEUnRUql02GLTKi88GS25OUK+4Oc4V/M8wwN+bwhyl0Mx8AxYYx2zDHYfrolZCMxSb0Jacdkf/iUeWksO3CFwavMwNUN8wQuyh3KnodswyO+Cy87Mj85zhG4jjnmHSOBayL+UHzSFDn0sCNa/ri/FbSKzDO7Hli/8nwMeWFf+My5grnB78u6B5xn/oKQjXODDMs0xSrXl6bQ94GraXgyd0s4l9VVGfD66SV2ErjwR7IMXHOw0OviGwtcIfMGiTzlvO8ZHEJ6ZbPaLpPsexyhPw1c7x66XGb8zookcGGpQuDCsoZzce64Jh7SWognTFQ7qY0SP+2BwFUUYR9vZFahv6YwCFwF4cncLQ/GiVl24LILtqUNKFnlLPOWsxzZzQT5tq204FY1k2Bl5BgErt6fH2WyCv01hUHgKghP5m55ME7MMgNXGhlMwoBh8y1tmU7otRG255Wpkpn9tC8VDgLXwcEq9NcUBoGrIDyZu+XBODGLBq7Y4/AMEuG9Lh5nMWwrRq++d5yVF5Jt56XXRhoZuE5fdplM/+3lg8D1BmcV+msKg8BVEJ7M3fJgnJhlBK5kEXYWcZCLdBmBKy3ffhcyfDgiLS+NXl9Z9NpIIwIXfqx4ELgODlahv6YwCFwF4cncLQ/GiVlW4EoW4oyFvNPAFbZj62R9l0avTN56eenVz2IYuF5RHQ8C1xuXVeivKQwCV0F4MnfLg3FiFg1csR/ZBccs1in5IW05r2zse8u0crF6oK0bY1g3trMbBK7enx9lsgr9NYVB4CoIT+ZueTBOzHGBa+IEDVxvS4JWwnbgelXVMv13Vsopy6/QBXl9Erjsa02ShdhZzMExi3Xk+27LhN9beuVsXlm0fSJohYErLJfcH9TAddrSy8cErr02cB1znNpo4mjgmjQxsRHsgpMK+GsRn7XrgQ1W9tjmHWzzo0xWob+m0POBKy8Br59+AmT2JmwdZP+Ep7/K5NMz+NEd1yFyzLFv0aC1NwlceIH/LhXlJQ1e0z72meQNxVh85y5rMXapMC+7bSPrkfm07/hYelbd3ETwUeLpyhZb79niu76S93m1ifd7TV8+yiR/8Q1y+tK1MkNPCnCPC3+APKya5x8gvz0JXHjXXeunvxC0YKPk2wMopYbJgGtvh0DM/3odafPD5vGY5YuCbaT1Y4k8r0+bZ9vLw6ZQS89FFJOXgNdPPwEyew5XB9k/4emvMvnGBa5f0d4QuHDuv0926qcXVZxpv/uXMm9ZK3CdtLRFvjwxJBf2vAGp28AVoycbOGvFLQm9Op0Q4wfxFuUWb0uIIJUEqiB4tV5E2eLYwNV6HD4MXMe8/YQkcE08JAxcWuIAfm1hELiItPlh83jM8kXBNtL6sUSe16fNs+3lYVOopeciislLwOunnwCZPYerg+yf8PRXhXy4DIWz+UMOaQcuzcOOq7Vs4pfo2zsu5bSPnaOB63JdsDcmr9Sfu3Rjcp8rXMwZhEKG5RBAwvJhmaKsql1ydKdFtnZcDFThzmtM4NL603GpcOgyDVxDSeDCSQJe3T9yqfBtx2nQmiKTNXAllwsRuNRGckBL7B/suCzS5ofN4zHLFwXbSOvHEnlenzbPtpeHTaGWnosoJi8Br59+AmT2HK4Osn/C01/Z8uH+1qTk/gleHTFFJkw8NMk75u2tHZcNXC/q+jj9Y6vl5GWXyIzl62UOHtBYtj55wMAGHsus+zzJol9i4LJt2HbC/JC2jW6Y3OMbQ+TdJNPaZOBi8LKBK5FBTwBOG1KdfnSpCVzD0Lz+J/LOt70rCVqTNWghcLVOMiaqM+iX+3GfS9MMeHb3CMT8r9eRNj9sHo9ZvijYRlo/lsjz+rR5tr08bAq19FxEMXkJeP30EyCz53B1kP0Tnv7Klo+Ba3I7cE2cYAPX6MMZeGDgZQ1cM353ue64zpfpQ9fKrKF1yutGAhcXcns5DswKXKT9Pq1MFsP6pFc2pFfP0qszhghIypGdVjs/T1vTl6lull4nC5ZfItN/d7G8rHreqTrfK3v0X+y3RN71tnfIFA1YYCt4TVIbTW5ttFAkMs08u3sEYv7X60ibHzaPxyxfFGwjrR9L5Hl92jzbXh42hVp6LqKYvAS8fvoJkNlzuDrI/glPf2XLhyDVOpvX3VY7cE3SPASu1lOFrfCFwPWKLpIzf3eZ7rh+ItOXX627h3XK6zUwbRwJTuHC3Fqcxy/gYFjGBjj7XYysk8Zu6lh69S0ZsMBZuK/V3kWS2e3ouHXnisA11QtcaoB3ve0YOUxtMiWxFRa/1mXdQeAaj7T5YfN4zPJFwTbS+rFEntenzbPt5WFTqKXnIorJS8Drp58AmT2Hq4Psn/D0V7Z8o4GrdRY/ceLkduB6a7Imti4WSnKpEIFr1keXySlLNXDpjmv60PW6IG+QqUs2JvQuC3LBDvMs+b0XuOxxGlmnKnp9Wtr7Vwntd9E2MO71csoKBK6l7cDVulTYOm3wAhfsz0uFSZFMeHb3CMT8r9eRNj9sHo9ZvijYRlo/lsjz+rR5tr08bAq19FxEMXkJeP30EyCz53B1kP0Tnv7Klo+Ba4oGreRvhfA+I817uwYuBCw8s4bb/1hMXzWBC7utqUM3yNQOFniQZUEGOubbwGfL8ziNbC9sgwwvXWbV9xiWH0cTtJInCZ0+yPGytAPX8ss0cA0lgQtPFeLhjP1t87/z7cckQQucOEHtljxVOAhcHtLmh83jMcsXBdtI68cSeV6fNs+2l4dNoZaeiygmD/GSN7wgjS+STF4rrrAvlkPqHfcC+FI3jAEve4ODha/T7vZFjXkJWJ14+kFeOCGsrHzNP47zvgF5ki6CCFatl/BpIJtyiLzlbb8i29SUO1QEBK/Xdu6XLZrO/M8L5eSFP5JpS9bJNF2ITxy6WU5cOvZlkTF6iznStO9J24Ytx/q2XPiZZGDzApwt731P2rYTmsCVMPge8rXqIkijPtrHDnVjkofANW/xJXLcR5YmD8Bg5uzct0+G9Rge8La3vD3ZaU2ZqLZWTj5iSvtxeJF9++JzyLO5RyDN/3DMz+FxLyBr/nI+8M3I8HOUKesljdSB7Ss8JtE310TSWzMxDvvizCw2hb4PXFy8gX3Ba6jtm1EJ6zBWrl5BOL6ir8bPS8CzkwXyvAkBGUHK1klgbQWsCVpWd126MGJRfNPRRyb3tbapCHhfK4LXq3rwwf9+jrxn6QUye/n1Mnv1nXLc4pt01zU2cISBJMaigStk+D3aj8nEMl4526dtd4SRwDVa9wZtH30hD0HxBpm1XNPF6+S9K9bKKX/0l8lThVt1yuzR6cLbV8e+/R3JTmtS2zYTDp0oh7/5SNmzd1jnlRaIwLO5R8DzP5tn566d072EcFxp8xfgW4eLgPpBm2mBi29AxjFB/XGNJLiGomye+dsUaunZc0hPCd0ydA4QSqeTgNZhhoeHEznCQNcN2H5ZDAEHC50LQFkviHRLwLOTBfLCPqFXz8FZPoaJk9V2uiDitfDYbeH4kCkT5LXd+2SLVt+h8wuj36Jz/Df+5Bx53+IfyoyFVyZ/vDtt+e0jf48E2gCQFgjIsExqYGhzNACkl/O+D/vxiO8wnlg50PaR9BMJXNxdYac1awX+WFnzdTc3Y9kGmT20QU47S9v8k6/JRxf/X9mqet6hUwKzYo/+A7722ibZtOk12bHzdQ1ku2Xn/p2ydfd2mTRl8rirAkUIeP6HOYpjzFkAZe287jWGwPyl7BaY03nmRwxsA32nBS7qi/YK10Vv/nprqsemUEvPnkN6SuiWU6ZMSQyAFApHinwcw4AkDFf2mVooS6eEXLh0QEcBMFmxXYeuGFxxdoZjpijLcZZBwLOTBfLshAA5CTgGTALoGchzRsnAhTYmTW7xEGWy41LuUTGwgA5r+j+H/o+c9mdfkfnLrpQTFl4ts1bdNnYRNwt2Wn5IBopYWdteWrmsMuF3llnl7Hfu95HANXXJBi03epkw+fOBJRuTv9/C38LN+IufyK8u/p589lvXymbVM7xtx87drYdjVOevvb5Ztm7dLLv3btW8nbr7xXd7E3vhEi/9oCiBmP9h7nL3QHpt1cnY/LU7G+QjiHEelwHqibJYuZBCLuiMemOK7zB3KbddO7mWsq0sNoVaevYc0lNCNwyvxdIoRx999EieNRZ3MHAsOFBRwMhFSBlxjLHgckg4abduxbnwWPTSpcKjjjpqXP727duTOtB3FvFr4yB2XFgID23vurboSSquusNCu3frBxXn2xdtkFP+2z/IacsulJPwZKEuvvZx+G5YVuAKv/fIe1dWXk92Wy7cgY0rZ/6g2O4+Sd7Lar0CRvtSnWG3NXNoY6LD9y69SOb+4d/Irb/clDy9mSyoB1oPZ+xV5b/88quyc+d22blrk+zcs1l2DG8T3UMktjpiyqHJPcrQpy2tT2QR8PwPcxRzFXMW/oKy8DXMaRx7fdZJyo/jtPm7ZQvu0I4dH8D7SkXANqkXyuPNU8qLlPoDuVaGdfLc52oKfR+4QCqYxqABaCjr5HB+oIygBaDdIoSsONMJz9hA6CqUlynK8oZvGQQ8O1kgL3Ru6pZnaEwB7xJJCPxN0JQpesaqgQuPwk/GfRTlwuVnJbuupI0De2XPju3J5cJT/ss5Mv+Mb8nJyy6TOSuuTxZhLuThot1auMcGipBVB66iZex33vexwMXdFgMXAhbubYEnD10t8//8q/Kbf/6PskndDBbfu1v3uQewKzggr762RV599XVdjHdoENueEL9iuHv3ziRoJY/HK+kLRQik+R99HnMhnNNNM+/85Xh42b+MoAWwXcpi5UJKuXAlBHnUH/P5meWp1zxBC2wKtfTsOaSnhG5ojYGUBuGiju9hDHyHYwAycDIUBdosQisjjgF7/RspnJwyU26OF2kZBNgnYI8J5FFmS1wqQWrHhLKYtEjTiXGM/uHxoRqwsBgeOkVtOHFKErgO7N8j+3du1oPdsnXXXvnylQ/K9P/6OTl9he4UhtZq4MLfc41f4MlwoQ9ZdeDydkxZn5lHZn0H5g1cCPDcaSFoJfe4Fl4ks/747+WWJ3EBUHe2u3Rnf2Cn7Nn6sqYizz//orz68iuyY/tm9cltsmd4qwYvWGW/HKp2OnLiYe2fgUqn9ZMsAvAJwh4zCABoE36P+RL21QQhO9K0+QvwoRKMg4GMc6Mo2AbloD6tbMzjGkj9cf3gWom1k3ksy7ppbAq19GwNZBVdBqlgOo4l8q3ycdaRZxfQCWx/3RJjoMMAcGo6uAdczgnbKErAs5MF8kJn9pwbu668QNDCbxUicOFvhQ5rXzKcfMSbk/tbugyoQnbJgV1bkoc08OTbX/zTRTLzj/9GTln4bTlp6ZUyc6kuyMpZy1o/ukvylR9JABjz6o9RJr8uP1IWl9SQz7KjKb9PKxd+H5ZL+z5WLrsf5bh7W5pnmFwm1GA1c+n1MmvJtTJn6dWJzmadeaHM/tOvydevf0I2qU637sK8UOquSvbukH1798jLL78sWzZtlu3bNsneYeTtVL9UK6hdWj8DhT8cH2v7bgnE/A9z1z5I4PleE8yav9485smnN8ZOwTbQt9WHPbYByd67Qp6nQ54UsE4Wm0LlPdNwUDBvSMJwnhKKkrstkIGMeUwBykQHKgL2l0Y4AInP1slDx4CMoUye/pDn1S9C9os+OBnQT6grlGW/kJd65q6LBPJMTCx8JHZbvPw0+dApcsSRb0r65+UV/Iu7fVhoF//tl+Sk318uJ/3Zt2TWGZfKguXXyfyh62XGmVfJbF2k5y2/SaYtWp+8tgM/Pot0DJdsNNRyXaZ4mSUCJtJWAL1h5DPS2RpM7GdbrhVsR/PzpqP1lUv0M9huDzvQ1i4Ul1CVuA+46FqZv3KDzF14sbxv2cUy78++LPP+5P/IFy//afJm6Z1q4n0w8wHYeG8StJ5++ukkcG3evDm5x4XLgwha9IeJ2GmpnazNi3Bfl/5n5xKPwzlXJWPrC4/tWJBijHnmRwxsw8rEueidzIcsqr+mUFvPUDC30DAcDJ33yZUswji2HSo7NASNCHAhLAPsN0bIgjFDFjo5862TAHRGOjpBuZEfjrtbog3Iw8kUXuYguFNFnXBChA7fyc528iTVB+5vtckghvYg1xf+7xdbT7rt2Se79ACXtDbt3p+kP1p3t/z6J/+vzPmTf5F5f/pVee/SH8l7l1wgCxb+WE5ffImcvuwKOXXpWJ62xHDp5W1e2nW6YDF4cWp66pLLlJeMyT9l0UXKS5KU36elae22UpVjyZVmLJfKqRqYThkCL9VAfrmcunxtkj/1v38leXrwpP/yWfmdRV+UO587IK+rDmEla2/YDQHrxRdflOeeey55sACXqhFQ4CP0SfprUZbhf6CdW/THuoh+Y+sL9WZ1WBa4E+X8gxyd6qBb/TWFWnrm2RKBz1CQp4huaBdwHFvjwaH4GeSkgHPhaaWiYLtptGc/HDMdxJYDkRfqCvD0V+bk9Prl53AhoS4xHoyNN3ExceyYAG8BCsH2EKx4Fj/mTH7CIRq0hluPZytxtwBWw69qvKpr2dOa8ZXL75aPL/0nOf2PVsopvz8kcz62TGZ9dHnycsQZv7tSZnx01QhnJlwps36nRRzP1LLdprM/tlqpbf3uKuWKkZT5YRqWS2T8naHUNLs+x9MaE36EeMbHlsi0hMtlWnvsC/74r+QPVnxF/u689XLnY9sEz3tCf9t2q231GAupnQuPP/54suPC06wg7tFUFbjAIv7H+szHMYNIeBWgCuZZX6Az5uOYgY1XUIqA7bJ/jJ+XU/M+YFFEf02h8p7p6DSeVTSDTBGGSuZnGAApiHI0TgjK1C3ZRxYZWMMUMjEAWfk4aaEz6g992dS2k0XqKY1sA+CYrM0A5iEN27fEGKh3AONgm2lkXQYs/EpD8pt4zJ+k+mkHL9zzwpR/fWf7YQIlFmH8oTL+5gvHuIz4sqoPr0HBjgIvoLR8pc1X9XuQn4sS/Vl6ZUhbDvfssujVT6WWfyngC6qLl1RpeCD7BVXSVjztrsfbtrb2W9u3tR7Vps/df//98uSTT8qrr76a7LbwZw1YYHFWb/0RvkMbZTH0t5BF/Y/+Fs6tPHOjLGIcdv5acAwMVmEaA3WSRtoNctj5Z2XLYlH9NYVaeqZyaSyeieCzZ4xOyDahRBqDwQApSUXjex7zcxHatjzSAQDIa1M4NR2bOkKbdCbIHToWA3Nex7K68ujZBKA8LEfY4xCow/Ggb8ge6iskwX5AtIGFEmf6m7dukZdeeVmefv6FJGhhl4AU3KGy7t6/Cw9oJ+mOvbtk1368lKO1M8MPxia/vdf+zN2aJb/vluijCL02Lb06Hlvl9xuOfrddTcJfxMBj7nt2tJ4elN2bNadlL+j83nvvTYIWuGnTpuT+1o4dOxJb2LkKwHahr3m0dvVY1P/ob8xnir7zzpEijK0v/I75TAFe/swCymeR6wMAXVBvBPWXxqL6awqV92wVQqcE7HFRQPk0IMkFHoSBuX22O7I6LiWAcN7QocLPAPLCcYAMADwOd5lZzIPQLqETI+Uko9xIsdjw71FwVm7HhL7thE6jBfoBYU/IgcC1dfs22bRlszz/8ivy6JNPyWtbtib3ZXZrV8MH9Cw8CUeQYbcuwXv0M97eq0Fvv+4SdKnGm6VAlAX3Hdg7hq3S3VNDdUIcWTI/7XtyzwHsJNMZlh/bJsaGQA1ZMN7dyp3tVD9jvKoZ/GCuxnvZg58fwTql+bJHdTasIW7fsDzxxBPy85//PEnBbdu2yeuvv57suGAD2AK2pX0A+mOMeVDE/3hsgc95fK8sxtaXcE7jcyhzGmw9jxwngXZ5CTLv34oV0V9TqLxnLEJhVAd4FlcUnFRc3OE4dlIh3xoBx6EjVUmctUAm6iAcc6gb1IH8oJWb4wvHE2MMkMee+VEO2g20dgNCR+cYAC4ynMgx7tUdAH6lAT0gJffp4oofckXQYvB68eWX5Ge/+Ln88rFHk6fgUGd4H4KV7sL261K9d3ernjawW+WApklIDKIOCCBFni3XLaFBS69MN8zbZmt8COS68CdpKw9BC9ypa1nyWRvauUNrtBVx0003yS9/+Ut55JFH5OGHH07ubb322mvyyiuvJIEBhL1DPy1rYSvD/wjOLdTBnKtjx5V3feHaxDIYgx13GsJ2PGKuoS2rJ9qrE3Sjv6ZQS8/W0dKcrijoLDjLYeCiQ/E75jP1HKxsUgY6Es6G7OS0gG5CmVgfKY8hP2nLeuwEaXYK5aT8KENnD280o+888jEAgUnA0s/g3v165qiBC9yybau8vnmTPPv8c/LCSy/Kcy88Lw/+9CG5/8EH5Pnnnx9ZAFCfbeEXziEZyYCIzUYifjtFni3XKaElLx/M+q4I0S6JkYPJ+DDyZJDcHWkZ6AFjNHzyyRdl/fW3yB233yv33feAPProown5FCGeKsS9LegVgQv2pw/Q9vTFGDtBN/5n5aIPIg9955WxKLPWF/sdT+aQB3AcWUD5LLIvC+qBczMLRfXXFJrruSTQ+FCiXSjtcZOk8QHISnmxIODYTlAsFN5OxTqQnRTMy2JR2EVjJEBoHuXmeCxQzpPFY7LOah1L5CULru7Gdg/vkR27diZPt+HyFRZVLLBPPPGY7hB+IT976KfywH33yx233Sl33n6XvP2tx8g73vEuefvbj014wglT5a1vfbucePxUedc7jpO3/8e3JS9HPPFdx8nx73invOOYd8qxx6bzxhtvzuQNN9yku5ZbkuMNG25I0ltvvV2uv35DkuL7LKLuzTffmhyj/saNN8ptt90h/+E//ErSP8aSymOPl2MSHqfjAI+V4495h/IYOe5Y8B3JmNHWbbfeLRtvuDUhju+796fy4AM/153WY/LYY48lOsV9Ley0+EAGfBQp7G3tjAUx7/wqipj/AVY2HnuyNEVvXQK8uROC9dIYW1+6AWwe9pPGptBczyXBOqrnIFUT/WSRlwrhSJx44U/AYCHg4sA2GZjomPbMDe2Btp800pmLkPIBdiHBdwDGBrA8gL4hcyhPyFjgws4LwQvX6xG8uLg+99wz8vRTT8hjj+hu4Re/lAfvvU8e0gA2acJkOWwKfo1Dz3aTl1ROlH935Jtlkqb4fb1DJ07SVPWnujxskuoQOk2IsuPTW2++TXlLanr7rXfI9euuS4LmHbfdngTQjes3yP33PiDXXbtObrnpVuXNqemNG2+Sm2+8aaQ95N+48QY5dPJhMlllTZOrlcI3cPkJ45ioY8KvWRwyQv4xN+yAS4J33nm33H//g/Lzn/9Sd1iPa8B6Qp566qnkb7bwFCF0i6CFBzJ4bws+izz6wb52wIAv5iF9oghj/scU4LEnS1OEn4fHgJU7DXaueIytL+gjxiI/KdcUBoGrBkIWCzoLQWdBGgYqkH+Pwe+Y1nUNmvJx0eAEQT4WFYApv0PfeeTD5S1Y0BJ5I5cM8RTccOtGPBZUPL69edNr8uorL8lLLz4vLzz/rLz4wnPy3LNPy5O6C2st6i3ij5v/f0cd3TpOgsDod0e96Ygxn9OI3dwD99+bmt53z73y8C9/LvfefY/cf989cvedd8lDD94vd91xpzyiO8IH739Adzb3ZaZox36+5+47R98MrcEo+RMBL1VyAcNx8juPpJaZokQbhx0+SR786X3y8KM/l0cf/6U8/uQj8tTTj8kzzzyVXGrlPS0GrX1qV56x067Isylsl+c+Zhlgn57/AVwDALse9Aq9dQmwcqeB9bIYW1+yQJ169s3zI95NYRC4ChIBJos4G0KgwVkQnYKwzsJxQG7Uw6KAelwckKItBAN8j1eJ5OkfjlmEABYvyudNNu+1K0ceeWQ++TRIoUVL5HHXBQ7vbT0ej8V0187tSfDasvl12fT6q/LSSy/o4vtssnPALgx9Tp7MP4No2Sh5SWWyS23l4dfnmY80i637Pw+nprjM9otf/Cx5uOGxx8DH5PHH8d2j8rOfPZTkP/JI6+EHL8Uf+/IzLn0yH/aepIEX/gB5/VR9HGNpjwdBCr/5COI4GYOOccrhE+SRJ7WvZx6VJ559TJ59/il54aVn5bXXX2q9JFKDFRY6ELbGpSJeIgSy7Btj6E+dEoj5n83jsSdLU0zsFBwD3lhCeHPGMra+eDq1BDz75n1tUlMYBK4aiAdGeOaKxReLArfzBMaBMp7caYtEHTsu6hcpAyxSyMqJAWBcOMbY8B36znNGfiB5kAATDu0gZI0GLl5GTI61bbS7d48GsJ27ZOeObbpD2DryxCFeeIgHN6YcenjyR8t4x9chE3UXMuWw9sKuu9T2Ij/pMJVL0wlTWmUSTtAdrpM+/cxz8vSzz6Smz7/wkjz1zNPy0suvJp8ff+Kp5POzz72QyIMUD5Wkpc88+3xS/rnntWw7/5nnnm3JDxnxvrL2eML0EPxxNuVvyzyhzZb8oI550iHypAaqZ19/Xl7c9KK8tvV1eX3za6q7LcmiBfLvtRiwYGfaGoB9cYyU9u0F/+N3BI89WZpikcDFelnMs76kgTpEHRwzRbt1XdHpBoPAVQMhC+XkQg8HsWA+yuMsCnVwRsU2uAPjmRbzYywLlI8ThJ+RhmMB0HceGySBS/AobyuAQUuWDGDoBxNq3/BeGd6tO4LdO3Vy7kgub23bvlO2btPjHbu0TVxGRZBqL97KVvDS9PAj2ou5chKCFvTYLp9CBMQsvvDiy/LiS6/Iy6+8Jq+8+nqSh8+bNm8dycsiyqA86vEz0qR/yB/IM4YIxBqUEuI4yddxgRNanIC/JTpssryiQeq1bZtk0/bNsn3ntuTpQQQrLnLQLxY9gIsZgHxemrMLLWwHfwztGbIs0N9C/wOsXHY96BV66xJg5U4D62Uxz/qSBpSnTi3YbthXyKYwCFwFmQdYCCBP2kS3+fa6MuqEQQpBDSmQ56zK1u2WVgYAOrfOjvFhAnDSUK745NHy2G0d0MDF4KW5lqOBq0X0hb7xC+YgghiCGXZieAXH/r37ZPvWbbJty1bZuX1H8usPL7zwQnIZDH9Yu2nTFtm9BzuGiTJxUvyMMkbaAzIhGKAPjB/3jLCTQV4WEXjxUERLNg0s7WO0Cb+AD6RTfQSXPpWj970mKafIhEOwq9TxJQFsomzBizi3bU3a3rNLz8q3qY2GdfeiuoO8tCfHRZ/k+Ej6Qt5LhWUw5n82ANj1oFcIW4XHgJW7CGLrSxbD9YVtDC4VVgzrqJ6DVM0YeEYDh6BTeIsCHQ8pye9AbttRBrsvXpqLwbbRDa086DucbPjMRQTy8HssyLnAwNXeceEyIVoIadHqA2NHNNPy+7SWLsAouFcX5aQC83GTTD/j8iJS/OQR1DZ5Mi5jqr4xxgzyIYgs4kEKBAAEzTF9tWWKEUEXqZU3eSW+09cYInAF8uLpyQncdbWJy4roKgHOAvA/fnoEKhz5Qg9Vr/BJ2Jm+SD/gZV/k8eQqz6Xgooz5H2DzeOy11RStHnkMeGPpFHnXlxjtr/DYH85mXhqbwiBwFWQMZcjn1QPyOD7rlUH0XcZkGw+soN0B8iQyIVB5absMwWNvfEUIeP3kQZnyIXiNXEocYSAfknYAs8D3nfhl3UzzvzL1VwWLzN8Y7Hi9fqpmU2iu55LQ64YrQz6vHpDH8VmvDKLvMiZbmYA8WWQZgsfe+IoQ8PrJg16RD3md+GXdTPM/b1xe/aZYZP7GYMfr9VM1m0JzPZeEXjdcGfJ59YA8js96ZRB9lzHZ6oaV2dqjTAJeP3nQK/IhrxO/rJtp/ueNy6vfFIvM3xjseL1+qmZTaK7nktDrhitDPq8ekMfxWa8Mou8yJlvdsDJbe5RJwOsnD3pFPuR14pd1M83/vHF59Ztikfkbgx2v10/VbArN9VwSet1wZcjn1QPyOD7rlUH0XcZkqxtWZmuPMgl4/eRBr8iHvE78sm6m+Z83Lq9+Uywyf2Ow4/X6qZpNobmeS0KvG64M+bx6QB7HZ70yiL7LmGx1w8ps7VEmAa+fPOgV+ZDXiV/WzTT/88bl1W+KReZvDHa8Xj9Vsyk013NJ6HXDlSGfVw/I4/isVwbRdxmTrW5Yma09yiTg9ZMHvSIf8jrxy7qZ5n/euLz6TbHI/I3Bjtfrp2o2heZ6Lgm9brgy5PPqAXkcn/XKIPouY7LVDSuztUeZBLx+8qBX5ENeJ35ZN9P8zxuXV78pFpm/Mdjxev1UzaZQS89FHKtMoO+6DBqS/RP2mEiTz3NIlo+B9cog+s7TZyfw+vEIdKu/Osj+ibL1lAZPFo9AE/IdTEjzvzrmLxCzbxXyNYWWhBXDUygVFWOZSDNcHWT/hOcUafIVcSzWK4PoO0+fncDrxyPQrf7qIPsnytZTGjxZPAJNyHcwIc3/6pi/QMy+VcjXFFoSVgxPoVRUjGUizXB1kP0TnlOkyVfEsVivDKLvPH12Aq8fj0C3+quD7J8oW09p8GTxCDQh38GENP+rY/4CMftWIV9TaElYMTyFUlExlok0w9VB9k94TpEmXxHHYr0yiL7z9NkJvH48At3qrw6yf6JsPaXBk8Uj0IR8BxPS/K+O+QvE7FuFfE2hJWHF8BRKRcVYJtIMVwfZP+E5RZp8RRyL9cog+s7TZyfw+vEIdKu/Osj+ibL1lAZPFo9AE/IdTEjzvzrmLxCzbxXyNYWWhBXDUygVFWOZSDNcHWT/hOcUafIVcSzWK4PoO0+fncDrxyPQrf7qIPsnytZTGjxZPAJNyHcwIc3/6pi/QMy+VcjXFFoSVgxPoVRUjGUizXB1kP0TnlOkyVfEsVivDKLvPH12Aq8fj0C3+quD7J8oW09p8GTxCDQh38GENP+rY/4CMftWIV9TaElYMTyFUlExlok0w9VB9k94TpEmXxHHYr0yiL7z9NkJvH48At3qrw6yf6JsPaXBk8Uj0IR8BxPS/K+O+QvE7FuFfE2hJWHF8BRKRcUYA9+2i5QvVuSbd9kXX3SIly/ihWkwTviStW5fpBYj+sJbRu1LFikn5cqSj6l9SRyIOmwnC5Qji3zbKWXFMfqlE5Pol+Mgi8K2n0bYw744E28zBkJZ8Jl6qot57FslPJk8AtZe4TE/h8dVI8/87RdAXvgffIKsev7G/A95JPLT5od9US3WoLwvqm0KfR+4gB07diRpqOh9+/a1j0YRtl/01dV5iD7oPIDVRwivviXkg7N6Y/PgtWHJ4MxgjfYhr9WLDWJEWU7NPtJI+YBwzAwMVhaUtQtGHezEvmXDk8cjYOXyZGUQAepctDqZv70IBgiA+g7XFbLs+QvG/C9rfoRyMh+w/tBryBcZCsIqMjRwjDHQKGE9u9hahkB978wYZb36IfOCAZEpz3BCeuAZKMcKHeaRDYwhzR4IGKHMdGp+roveImDlA6uSMS/YH9M0+zZFwJuHWEBxPDw8nHxG2bJ0B8bQ6fwtm2WAY/BOpIAq5y8R8z/mp80PzifMtbSg67Ep1NKzN2E8JXiMgU4BpcNYTFEXx3AQbH1pDACTFVthyMIzH7SDY6Yom2fxyQP0RYeBLHCSww8/PPkckw/AmQ/kQh6ACYI6lCGLMVB/kA9yQQ62TUfGd1xImPJ721dVtHaFPLQLjimDlY3yUqdFmAdZ9u0VAt48tMDCSh2SXludMIbY/A3bK5tFgbmK+YiU6wl1W8f8BbL8L8/8OPLII5M0JO2QxaZQS8/ehPGU4DEPtm/fPqYOjHPUUUeNyYMBcTkMTmTlAbZu3do+GkXeS4WY7FnEmSxSOFS4kNrPafJhIljgM8qgPJwPaRZDeUICefQHoj2mnCi2r25o2/fIS5gkF9Ojjz56JI96wHGeNjuhpzPLmH3tWKug7S+LgDcP4U9Y+LCYYhwoy8UNx16fnTAPsvzPa7NMlgnqFCl3X1XP3zzrS9b8QJBjinI8Ocyr/6bQ94GLZzEoS0NBofyMSYCU3wFwHhCywOjMsynK5jlrzgP0Y+tAJi7IMfkAPIxgdQignm0zjTHYS0Q8w2IKR6ZccGz0aXWLtA5SV1xMOfZQFnzGd5yMZciYB1n27RVSTsIe0+cxF6hT6rooY4jNX7ZTFYuCuuM8CtcToMr5C8T8LzY/WJZ6ZzrYcTkTxlOCxxjgKDQcDEFj2KADY3EiAjgbohxI6VgMGADK0oBZRL0s4hIBLw3QESgbZc2Sj/LgLA3ABOGlAbSHulkM5Qlp9cc6OIa8zEMK0vGRon9+LkK2nUaUoR2QhvYNZWFZ1uVxtwz1FTJmX46zKlpZswhAXsIew8f4GW1Sp2Ff3TCG2Pz12iyTRWH1yKCFlHO46vkb87/Y/OBn6h1E+bz2bwp9H7gI7ghA1uUxjEMDAXAsOpkHOAPbiDEG9oOyVj4GBjBLPuiLZ6V0VoD12EYa84JOb0lZOQFwbMvl6b8o0QfkwEQKv0O+lYGyIc9OxCKMIY99e4GANw8tsKjybBzkWIowL7Lmb5UsAwhO9APuvADkVT1/Y/6XZ37YMqyfd/40hVp69iaMpwSPMbA9KpoTAMfIYz6NA/AsCEan4dEOAhaA71E2D2PwxkunwmIckw+oQ3+2jicfdeo5tg0qNr8uZslIvSLlMb4n8TmLeUEZoDu2y/6y5ENaB+lT8HHanP5FIN/TSRH7xmD9z/Ztj7P0V5d9u0Vd6wt1lLb+Mc9+hxSs0r5VoZaeqVzAOmoexoAzHDgCnRZG8ByWxmGdEJCL23s4Gwzo7UJC5gHPZCEXZaO8ZJZ8VeoPyCMf9GHzcMw85lu9Q3d2QlTFNLlsGRB5kC8sH2MM8Bn4H9sP/S+vfFURdkB/8Gnr4x6Qb2UHIS/l78a+MVh/tu3zOK/+kIc6YfkY64LVfZnrS971L02PSJlfhX2rQi0924liHTUP84ALh63HzzgDpgFgGIKOBKC+hddeGmMIx4t2ESRwjJuieeSrUn955KMuKKc9q7NObydinklZFtE3ZaaMkJk7RxxTXhyzDL/PYh5wIbL12AcYk69qoi/Px0PAF6gnsqh9Y7D+Z/sOj5u0b1FUub4AXnv8DB3wmHopc/42hVp6rnLh5e4EZWmM0CiW6J9nnwCOmSLPygfjoa0ssk4a6bRoDw4Uc1jUsfIB3rFX1yPKZ7ET+TBeHkO31G84Mbhg4HOor5AoV4RWDjBsk7JxIoZpjJ7OLHlygbIcE+WhbFnysU5V5DgBymx93gLfoY6VDyxi3xjQJ4D2UB6pPY7pr6h9q0bR9SWGTtY/5vM7fl+lfatC3wcugItHmHoTk7BOxMWb9XgzFZ9ZLo2eMS3pFADkYV8e0B7B9nlM8DjUUxo9mSw7kQ9gHaSoR+dHyjbZXh79oWxRWplC0AfQl01RL8/ixjGl0ZvsSKlXtpEmn9VFFfR8GvDsjPKQkXKDRe0bA8ugTdt3eFyVfetAkfUlD9humIbrH2B1ifFXbd+qUIvl7AB5TMeJMQbe8ISSrRPzGE5Cx2GKsxTKYVMaHLDHWfBktqRjEJCBMuMx/Jh8gHcc9tMt88hHXaBv1oODc5FmSmJieJPGg63XDXlWyM/UD2TmAkG9EvjMcZdBu0DyLBrH6COPfFUj9GvKwJTAZysrWcS+MVAGtGv75nHV9q0aVtehHcpAnvWPfSGf44ZOadcq7VsV+j5wEVA0le0pPXRuGtfWs3IieORxLk/mkLimHAajUMY0+XhM8Njrp1vmkY+6QPlwMQE5EZDC8TGesvQXo52EQFq/zMfYUD7PGXmMYTvUCxZOLp555asC6Au2JWhj6CC0Mb6j/CE5BqSd2DcG68+27/C4KvtWDatnO7/yri95YfthasG+MGba0eqBOkZapn2rQvWWU1iDWUfNwxjQHmiNZo8ZEKwMgDWuDRr2OA88mS3pIBb2LCmPfPY7Hof9dMu88lEelIVjM7WLMy+XIT8vUL4IrSxIAcoK2XkMvXFcyEPZvGfleUkZQC60MfnqhO3P6xs6oj+QRe0bg/Vn2zePY/orat86ENN7EWDcIPWA1B6zP+ZhzFanVdu3KtRiOTonYB01D2Nge55DWCMCPPO0BgWwQIft5D3b8GS2pGMA6IP9YAvP406BCRr2U5SAlceTDXnhwhZ+BnGmmxdh3SKELGlyEzz26ldN7mwJ+Jr1T4I+6I2lbNh5ANn49J6ltTGPgTLl83ZHoW95+vPQyfzod9AGni7Cda5J+5aNWixnFcBjKirGGNAeJ781FH9iBd8jCNkyRFiXQHnWQZkswtBZxITE2TcCFScdZYOsXpshi/wkVV4C6IOwxwTyMKawLs/UOGYco2we/dl2ihJ9o80QNo/HXv2qiDPYUC/WJ60/MI+6iwFlitDKgs+QEbLyrJyfw2P2HYPty2PYL9unT4FZ+sPnKn+yrWnGgDLQA4CU46dPhbrCmKHLsuzbFPo+cAFwXAAGAtgHDUpj8jMDSGhk1mPK9rLgyRwSzmCB9ilzDOEY7MTkb5KVQYDjBuwxgTzr5CAvifGMmSlgz47TwHbKIGRLk5vgsVe/KnKRwEIa2pH2pVz0ubz+UQasTFzs61rY6CNoM/Sh8HJrlv7CfJTPMz/eCMi7/iGt275VoRbLWQXwmIqKMYZwgrP9LVu2JCkAgzI/NAavi2MCoRwIA7M+jJ9FOEAWMfngLAiOdCACn702LYEir13JS8CzkwXyrJOTeAVCmI9XVQDemCxtnaKEDGlyEzz26ldB2B6XZ+ALkA+ADNYX6Guh7HmCl6fTTghAFvYNGSErZOYiZ23LYyCU14PXpyUQe61JTH9VvpaoacaQZ/2r0r5Noe8DF4DgA+Mg+CDlmQcMz/6Q0oAsw89cZEMwqGXBkzkkLntQJlwyRLvc5cUAGQGOkSna5ZlpGQSoK8AeE8izTg7S+TFGTggEa6As/eUlZEuTm+CxV79qQj74gZWHixP9kT6cR3dlAjJBhtC+lDs8Zp2i4DjhMwxQvExI37J9h/orOj/eCOCYvfWPaMq+VaEWy1kF8JiKijEGGiQEjGgNZxcIwH4HwPhoC/mcDHngyRwSzsBxs19O2BhQ3hsf2w376paAZycL5IV98ozY5oEsH0NYrwitni28cXn1qyB3CrzsBVjfwzF8NQRsnkd/ZYEyQUbICpkhOz5bm/MYKEO+NHtwR5BHf0XmR78D+utk/cOY67RvVajFclYBaY6axhgYAFA2PEOjYZiCgDV2aHR+Rll7gziNeYBACIcI5ctDKzvINnrpUiFkBCkbX0znBbQqCdnS5CZ47NWvglZf9p4LdZVmXyDPyY2t2y2tX1oZKbsdA48BT9chWC+N9BH7MkP6Ez53q7+y50dTjCHP+lelfZtCXDMloMjCkQe47IYgQwPRODCCJb5PMwYdAEEGl/PQHo2YxRh4Roi+KR9TnkXmoQ2iVQQGwLOTBfJCneAzx4GJwu+bWDjQd5rcBI+9+lURcpGwPXXE75DSZ/E9bJ33UjLbKUorG2m/C48BT9chWC+L9BW0zcWWuwLmk6H+yKrnR1PMg6z1j+1Y3ZH2u/AYyGPfppBPMwVRZOGIwbaXZgyb5xmjV+RrkoCnBwvk9ZrcllXYtw56fgF4YwnBelWy1+V7IzMG68+enfKwiH2bQlwzJcAqwCo6D2PoxHDI84zRK/I1ScDTgwXyek1uyyrsWwc9vwC8sYRgvSrZ6/K9kRmD9WfPTnlYxL5NIa6ZEmAVYBWdhzF0YjjkecboFfmaJODpwQJ5vSa3ZRX2rYOeXwDeWEKwXpXsdfneyIzB+rNnpzwsYt+mENdMCbAKsIrOwxg6MRzyPGP0inxNEvD0YIG8XpPbsgr71kHPLwBvLCFYr0r2unxvZMZg/dmzUx4WsW9TiGumBFgFWEXnYQydGA55njF6Rb4mCXh6sEBer8ltWYV966DnF4A3lhCsVyV7Xb43MmOw/uzZKQ+L2LcpxDVTAqwCrKLzMIZODIc8zxi9Il+TBDw9WCCv1+S2rMK+ddDzC8AbSwjWq5K9Lt8bmTFYf/bslIdF7NsU4popAVYBVtF5GEMnhkOeZ4xeka9JAp4eLJDXa3JbVmHfOuj5BeCNJQTrVclel++NzBisP3t2ysMi9m0Kcc2UAKsAq+g8jKETwyHPM0avyNckAU8PFsjrNbktq7BvHfT8AvDGEoL1qmSvy/dGZgzWnz075WER+zaFuGYGaBzWgayjlknA66dp2PHGJibyypY77CONQEx/yPPkHrCY/3n1vD481oFekQ99p82b8JjlexX1WG6AQiji+HkJeP00DTteb4JZIq9sucM+0gjE9Ic8T+4Bi/mfV8/rw2Md6BX50HfavAmPWb5XUY/lBiiEIo6fl4DXT9Ow4/UmmCXyypY77CONQEx/yPPkHrCY/3n1vD481oFekQ99p82b8JjlexX1WG6AQiji+HkJeP00DTteb4JZIq9sucM+0gjE9Ic8T+4Bi/mfV8/rw2Md6BX50HfavAmPWb5XUY/lBiiEIo6fl4DXT9Ow4/UmmCXyypY77CONQEx/yPPkHrCY/3n1vD481oFekQ99p82b8JjlexX1WG6AQiji+HkJeP00DTteb4JZIq9sucM+0gjE9Ic8T+4Bi/mfV8/rw2Md6BX50HfavAmPWb5XUY/lBiiEIo6fl4DXT9Ow4/UmmCXyypY77CONQEx/yPPkHrCY/3n1vD481oFekQ99p82b8JjlexX1WG6AQiji+HkJeP00DTteb4JZIq9sucM+0gjE9Ic8T+4Bi/mfV8/rw2Md6BX50HfavAmPWb5XUbnlMHi+VRgvVaQytm/fnqQHO6gPpN4x0e2LLvMQL95Dm3y9986dO5PU2ismX1WADBwvX5Q3ZcqUcWMAoY+y5fL6sUSfkA0ywjZA2puLIVtZNiuTkIlMe1FjVURfeHmk9TX6IdYN5iH1jgHv2OvLYwx8oSdSykX7WjnSjgHv2JPFYx5wLUXbnu4IfE6zLecU7E9/Zlu9iMoDF4AJDSVQEXSGtAl+sME6iH3zLRyNQZ/gZzgZHMw6XzfkW2IBLryEPeEgQvmqBvuDjOEbo8PXtmNSli2Tbd8jbQCk2YrIWjiaopXHezV+HYQdoRvaLrRhzP9seR57/XjMgx07diSplQPgfGlSPq6h7BeygOFcBtB36H/hHOIcA+xYeg35LFcAUKIXoKCcXpvETZILBTA8PJw4mXU+6BB5aU6ZhrAfj6HzgghodvGKydct2H6MkBGEHGmvZK8icOUFdAHboP+0EzJ812s+D51CJrtgYRx1g/7FNNxVZ/mftTmPbd0sxkBdhPWgL2vLquSLkTKEgA+GdkTfaf7H+c555pXx2BQq75nK49YTCsWZKAadtgAdTIQjkZgMnrNt27at/Wks0hZIC6/PkFgk4LRI4bRcNLioZclXFKEsIcMFjDzyyCPH5UFGu0jUgTQbwGahLFkLRy8QsmFu1q1DrA0MnNjBYl3g7o++B6b5n5WXx3ZcWYyB9uX8YIq6OK5avhi5hsJuDFbQJ+CtJZAzbMObS2Da3LNsCrX0vHXr1vbRKKgsGP9gJnQAh6dDwdnghLxnwomDszjkg8jfsmVLko/yWaSDpRH3t+xnynH00UeP5GXJVxSeTizR51FHHTUSUCELJ2t44gMZ7SJRBkJ9hgRgC+iC9oGtgDCopS0cTRI6hh55kkI5aVtvzGUSukKKgBWe6fNzzP+szXls28liHuAekq0DWeCT/FylfOF8CIkyWEtDeGsu+g79z84ljANzDHrn+Lw+LZtC5YELRrQpJzWUkieiHwyEwyCFI8DxARsUeK2ZTs+UOs1C2JdHBi/KQeeGPDY/Tb4iQLtZtGe3Ng0DLgi57SJRB2iD0Dbe/QF8Fy4cvUAGCOiWdi3LvnkAvVh5oCNr35j/WZvzmHVjjIG7F5S1erKfq5QvRs4PgGtruOYS6NvzP+qa42KaZ31uCrX0TONDcTQcFAjDIz3YCceHs+AYgI7o+JwITAE4JIg86jSNnrNZok/rsJyM9lJNlnxFgTZjRP9cHMBwASFRFrKVCatLj7AB7UF4NgNQHjJamXuBnIc4tmPK419FiV0p+sKOiwslfY9yxfwPnwkec2wxxkAdoCzk6WZ+FJEPbWaROgLQNtvnmmuB71DWts85xHGBnG+2nzQ2hcoDlzUagTMDKulgJ4zPY2zXedZkgYlNPXJC2IUyC7Yvj5xwNjCQdE5+TpOvCGx/aeSksrKEQQvE956/VQ3agraBDJ59vIWjlxjat6yTkywwuKN/6298WtPqK83/rM15zDox5gX6tvKB4ecq5MvLWL8APlt5STuX+L0NZFlsCrX0XIfh+oHhWY39DoTThM5WFGEfITn56LBwYjoyUsrMPIALWrij6AZosyxC1nCxpYxI7TH0XLaubd+hjvgZclKXeReHIizDvt64yoJdDyhjeGzzPJvZPNteHsbA9qgnBjAcIy+P/orIl5fsEztY9sH+CeR7ei3CplBLz3UYrleJAGWvFdNx7AJiv7O6KgO2/SxyEYMMnIyWDLRAmbuusJ9OCbkhM/UKeBOXx0jDCV0E2FlZfdi+bT8sAxm9k5aq2a197Tisb6JM3l1/Fux6QBuGxzbPmx82z7aXhzFgnAgKnKvQkydb1vwoIl+MWFtgT9gIbcMmtj8L5HuyF2FTqKXnKg3XD7SBC8d0nl4IXLwkg4nHBQ1y8Bjfc1Iin4CcZSxcaLcsQmZvR8BJzWPKHT711y2sHrBosS/qyNqUtodOqfsqWdS+dix2QS7D9gDbZ/9Iw2ObZ3VJ2DzbXh7mAXyK+iI7mR9F5MtDz++9eYC+Pb0WYVPo+cAFRfcz6dR2AUEaTgQQ5a2uykDYh0cG1jD1ZIR8NhAURaivTsngD1nxGeCkhZwgwEUkTGPAOLPIdngznJ/twoFy1Fmoz3A8nTJsz2NR+3Is3lhRLosxsAz6tuPxxoY8r02bZ9vLwxgYrFGWMjENTzxB9B/qr4h86CuLtCWAttk/wJTAd6gT9lGETaHnAxeN0a/kZMdY6Gx0+F7YcYWOb1PP8QkclyEr2+mWlJGLK3TIBRn6pY45YZkC4SUdDyifxdjCwTzCHgP8/v9r72yWHrdxKLrKKl15/9dMKp1FNjNzunLnu4WAImWKlOXGqbolmqYIEARJ2f3jV4XtI83Ob2ss6juLiauH90d7+e1lr1N7x+u8vxGNoDUcryPxU1mc9U/9tCRfjh6cBO2zuM7oLrZYJmBC5SwImT4BEjw+3eqTl6u1MGeINjKxucdE12sWhMq6+tdh7wT+ZZ8iYh2v43hb+H0tZf35a2KlQ1L1XLO/snyWzJ+o2fnN7s3inKmH7wfveHDp62QOBB1U2FB5JH4r/QMdVkBZNtwu8LoOrhOsnrh3hkTSQidpOLBaydNamDNkdlw8NeOTFqIvAiduXvgZnzjvwDcTYEzEEfknWsWesjbykU9cur8l+mRu8QMfYvxU78RYzpD55LpyfrUpUs+YFc8j9Yjzpvu87HUxluB13t+IRmHMikeMCxzFb6V/zInnsfp3fwXvZXGd0V1ssbxy4p6CnlD5sy4lj2+sqLUwZ/D+M8kHJXn867RakNGvuCjeAXyNnwT0mtjyV5lVByOx9r6OpDhlfx0520AgbnavkPnimp1fXXlfnz64J9ppqYfs0tY31WyDba0Pr/P+RtSD/pDHw8u9+MFK/xzPpyy3sJ3FdUZ3scXyyolTf9lEefLchY/31YWpJ13QOFtPzpFoI0obG2BDdvgKhLLHUE92vmB3oLHKJn5l48c/HU6IeMaYI9qMontb6sWvR5ajPs4e0Z+WdOhcAX1lNjL10Php6/Olv8yEiLHHmXuyuIkr/VvBlf4pR472P48XfXo8Z3UXWyz7AlQ5C0KmHvTnE6QJ9P/fb6V6qA1jiZuoyl4X+/SxCTZtRJ37kkmbQUv6KomNVgeTYkcs6UO2wP3gvVnc10zY03hF9EV+AmNiUTImysTV/wshfQJT3z08VplG4nck8PY+Nr1/hHKnJd/w6V8+8WOh7seR1Fb3g/d9pNhXFJs4c8tBRSy5x+eLK3HW15JAe+4Friv9u0Iz/vWgX88Z9e//VyZttH7o09eG5/IruovHH1ygX+zV5MjGyMa0Gh8vE61xednrPFbCD2G/+mbeItrIFBOQ/hVT0GJQPLVBq34lcU519YXp/mkz0EanzU/1eg0cNj1o21MvfkcopnFOR+/P/HHpEADFKc7nEWoT7/W+jzQCY/d7iKf+41fK/sAB+IC4b4d/M+zw72j/o4xNt6t4Etto76zuYotlBRJUzoKQqUdc4Op/9Gc/ZtXDx+uJkiUNdR4r0Fc8HBYkJiIJR8enJG2JDZ5NnYNAyS30GpvyK/o3S+azC45+NoR6DiDqaa846uBC/ERDjLd+7rxHFjNXL35xPFGguYyxHTm8fEwtffv27Z/WX+hnLzKfXJD9RAZ9Zraisj5dzCVXPnERT7/XXxNjDjPiHOO00r9ZwYx/PXr7n6Ce2BFDPcQhz+VXdBePP7hAGxiLQBscKHHuxMf7ysHF69Ymq0PtiGgjE5uGYsYhQL/6RCN/uBJbXWnPdTWtMRKTGCvmW1+DSFqkfA1FWVfYEb8eylHFUzk84htk/rj09Zv69L5H5k9t/F6u3veRRiBmetAglvwZpD6NMId+qAH2uUe5CCv9m2GHf+oz2/+IEbGSH/RJLIkpsY32zuoutlj2DUblLAiZetCfJsrRk9zd+Hg9UbKkoc5j5ZCcvMeYlIQjRBuZ3K5ihj3HN1jYHVvGjE38dN+op475BsbjT5SMzT99STAyhnhfppH4taC9fHeIs/o8IvPHpTyL0P/I+GmTrS/v+0ijaM78QcP7kSK7/HuV1f6RI1n/rf0vszGju9hi2RegylkQMvXQBkFb37CQntJWqoeP1xM1S1rq4mYVk1Kvac9TU+wjagQ2f2zH+EkeR2gtlldwO5k0Rshi4fHyTzlatPGQV/33799/XK+gF78jxRxVHzBy+Pm9LelrqVfWR8u/0a+6RoQN5jHmfkZ2r79e4d+MZv3rcXb/+xS2jMQTUuUY0JZGYMNig9PE+dcM3tcK9fDxuj+Zb9S1Fq8SlE2Sj/6jH/V76ImQ2Cl+umZfu41sLmdwXzNhl7H61x1xQ8cn+dUq6x7GqwNu9Ou8I3rx87Fk0hwqZ7mX8Y765n1l0j8P8F8U1sPAGfk96sv/6cGrYvxssMRRc6WHCz2o6Op5H2O7yr+r9Kp/I/T2P61j2hBDUEyfyuMPLu9PExXLK9XjjH/UeazEu8Sv5d8M0UZLkMXhbs7Er6XsPhgZo+57uqA3v9SdiesnqMeZ/KNuJKeeQD8yF5AlZAxqSz3OTNwK9bgisd4lfi3/Zog2WoIsDndzJn4tZffByBh139MFvfml7kxcP0E9zuQfdSM59QT6kbmALCFjUFvqcWbiVqjHFYn1LvFr+TdDtNESZHG4mzPxaym7D0bGqPueLujNL3Vn4voJ6nEm/6gbyakn0I/MBWQJGYPaUo8zE7dCPa5IrHeJX8u/GaKNliCLw92ciV9L2X0wMkbd93RBb36pOxPXT1CPM/lH3UhOPYF+ZC4gS8gY1JZ6nJm4FepxRWK9S/xa/s0QbbQEWRzu5kz8Wsrug5Ex6r6nC3rzS92ZuH6CepzJP+pGcuoJ9CNzAVlCxqC21OPMxK1QjysS613i1/JvhmijJcjicDdn4tdSdh+MjFH3PV3Qm1/qzsT1E9TjTP5RN5JTT6AfmQvIEjIGtaUeZyZuhXpckVjvEr+WfzNEGy1BFoe7ORO/lrL7YGSMuu/pgt78Uncmrp+gHmfyj7qRnHoC/chcQJaQMagt9TgzcSvU44rEepf4tfybIdpoCbI43M2Z+LWU3QcjY9R9Txf05pe6M3H9BPU4k3/UjeTUE+hH5gKyhIxBbanHmYlboR5XJNbK+J0B2y2/Y1ntiy9a8ZvRDt49/2bUw8eb5flq9TjjH3U+l09mS+Z7sDzQI+rxMyTWyvidAdstv2NZ7YsvWvGb0Q7ePf9m1MPHm+X5avU44x91PpdPZkvme7A80CPq8TMk1sr4nQHbLb9jWe2LL1rxm9EO3j3/ZtTDx5vl+Wr1OOMfdT6XT2ZL5nuwPNAj6vEzJNbK+J0B2y2/Y1ntiy9a8ZvRDt49/2bUw8eb5flq9TjjH3U+l09mS+Z7sDzQI+rxMyTWyvidAdstv2NZ7YsvWvGb0Q7ePf9m1MPHm+X5avU44x91PpdPZkvme7A80CPq8TMk1sr4nQHbLb9jWe2LL1rxm9EO3j3/ZtTDx5vl+Wr1OOMfdT6XT2ZL5nuwPNAj6vEzJNbK+J0B2y2/Y1ntiy9a8ZvRDt49/2bUw8eb5flq9TjjH3U+l09mS+Z7sDzQI+rxMyTWyvidAdstv2NZ7YsvWvGb0Q7ePf9m1MPHm+X5avU44x91PpdPZkvme7A80CPq8TMk1sr4jXD0Q34ax6s/hNjDf/RRPzCoH4XMYvXO4G+cd48lP6io96/6hdxe/BTDVhmycuZLph4j/km8rx9LlFbHD/Dt6IcaVeZ9rpLqV/pHTLQu5d8vv/zyr34QtjV/gtda3/Sl9//8888f13flmp2tgwdL5SywmXp4f0qKWF6pHmf8yxILVsbvLLH/+PPgWjwQf6n4VfQz+9rYRPxZ/neHucvmnRgixe7qX8jtxc/rdZCAcm11/p3xjz6JoQ4DtDJ+ymHaqn9Jue/1OtSQ5nqlf5ov2npMkPyTWvsLcSbGirP6vGr9rmAssyZZmfjen28K2QaxQj3O+NdKrJn4Xa0Iyf7333//8+oLnuKysZxFiyn6wSLdMcdXQjyiz2xm2Qam9rOMxk+bKjCf2NbB4X6orPt66nHWP23Oer06fvSR/cw9MZLv4OOQ7zqsZvyL97Xkh2PrQMSnaBO/swNK7WMfUXexxbIHS+UsCJl6eH8e6JGgX6EeZ/yjLiYWzMRvVvjE1xB6egM2NL6ewBctWBY39Sxorlc9rakfFiRfgeiKL5Td1xW6EuIV511jUIzZdNj44IoY9uKHPxJ2fTMWM/nXo+cfoiz/dEXaqHl/VfyAfjy3/as1QVyoxz+NXWOY8c/7yqRYRf3666//qsM3n0vQGFjPOsQYB+1bB6DrLrZYXpn43p8nTUygVepxxr8ssWAmflr8r8r74SsOvkaIPv7+++8/rrH+r7/++qc0B9+3+5iI02+//fZ/v1bqSohPNu+MJdbrzxjYTI40wlH8kA4EyvTJxsVGxiYNM/k3woh/zAVlXV0r4xdzWONXzgNxUj1+6ICSrzP+KQ9bUv/Y5BAjVjpw4sGDDz6X4o8//vin9IUOvsym6y7q4JpUjzP+tRJrJn6zwicWBeI1sFC1WFlcIL/0NHrVocUGCtiWDywYf71SV0KM4ryz0XDVk7OukH0Fe5aR+MkH6jWfOrRgJv96jPjn9cRPGzL1q+MHymXltmIQY8W1FdtX/aPtkdSf7OqqP0dzZfuLxqSrfKK9+j7SXWyxvDLxvT/fFOIGsUo9zviXJRbMxI8+Z6Q+tACBJHef9Ie5LFwtZq7ZWM6ifrDNZqANwf9m10pdCeOgT/x28TWSj4UybTX2I/UYiR9zq0MBaL/r4Or5h1/unzZmpFitjB9t6Ae4Ki7KeepYDz4OfNA4Zv3TPUciPlqfSLY9Voi29BnRw4NsAm3px+1kuos6uCbV44x/1HmsxEz8rhALQIsAWHBI5YgWdzaWV+Epm/j0Yni1roR4RJ+zMfCkezWt+Plr2mSfAmbyb5SWf775+qcLbc7eXroyfhqvH+SC3Pd6YqdPg9Ksf/HeTFks4qGFeD+uyfgaGEe8t6W72GJ5ZeKrP02eFgBl1a1UDx+vJ1aW0Fli6WCgXn+Yy2KJ9+5Q5t9qRuIXF66u1GsBc1WZ9yVeH+kMvollGx1jyWx6ncpqP4v6aK0P1Ss2IN/9AYV+Xsm/HiPzeySfU32yYUxXgX9IcfCYcPVYgez7NRsXaOxH6L6W6E/itec51978gvvh8zGiu9hieWVgeDpgIjQxfGT2RFmtHj5e9yvzkTqPlUO9vqIj4UjIke+gr9SRf6voxY84aO6RL1YXddwT2/fUgznxTynylznSxiB4z8cgZeNS+1lG14e+atI9EXx5Jf96aIy0zeIwKtprbPjGmPH3Knw+47yCbOFLjHFWhpH51X09Ke81/vj+0fy6Hz4fI7qLLZZXB4YkjZOVTd4K9fDxtpLZ6zxWQk9IIhvvDrX8W8lI/CjrKxotUOLjT+BqT1lt9P6RRvANkk1BPsdY8dr9lrJxqf0VHK0PYqB4YFtgW+Oayb8eGiNtsziMSP5L+JYdLq+gT5nEQn3is8r8+ZDiRL18wH+Pq9dzVfseuq8l5TC2NCfYODO/7ofKtB/RXWyxvDIwenqgrZJCV55CKK9UDx8v7bnGstd5rMCf8njP++OJV360FG3MiP6if6vpxY859k9QccxawPp0EK89KeYtafHrD7hbmz3QPpuTbFxqP0tvfXB1YVO5BrP518P7o7388PKRNAZf67wG5kI+tzSC5jReFRsH++Rcayzu34h93XekVm4r913Y9PmFrBzva+kutlheHZijxMLeSvVQG8bSSmavy/rUJqhx+SbpvmSKNmbU8m8lsif77ouXtVlEtLmoH+9v5PCizyOpD6BvJJtxY+M97slsxLLaX8HR+nDcnsYCM/nXQ21acRiRNmh9svBPIfRzpB5nDn7V6z297/Uqw0h8dF9LMf/8Ojq/sR6inZbuYovllYHpfZS/Gx9vlsAu6jxWoNdctXGAl4+INmaU+beaXvy0Oale7YmPNtjsq6646cyIjTOzEcE391XKxqX2s4x81SVfdc2+7uT6Sv71UP+tOPTkh4M/iIw8lKARiEv89KLXHJLx4PS/AIOyMmjsR+i+IxGDVv715heycmYn011ssbwjMCxELcZ3ObTAx9tKZq/zWIGPy98j+UY2j2hjRpl/qxmJH2VtGtCKi+qJJ+1HN7cj0Q8bF33i69Gc8L77LWXjUvur8DzS1YkbH7Z1j9q7P6P510N9tuLQU+uTDXOrnDhSD8ZJbGSDPjPfyAG1QZR1oGXjgpH51X0taZyao9actOZXZeHzMaK72GJ5ZWDoD2kSfKHpeic+3iyBXdR5rIQnXUzAHtHGjFr+raQXP20OuoLmnVipTD/69EEdbX2jmZXmBRvyOeYf9a15j2W1n4U+kHzh6mX5HW257zP510N2W3EYkR9QyoNR9ZB/6rf1zwlU5+9x9TovQ4x5hu5rSTms+Yr5NzK//p7K0U5Ld7HF8hMDczXZ070ntF7HBJvF+39F7iOLlifQCE958lsL5YqncUcbhvsTX7f8m8m/UUFmx8E3fNQ98l1/JuPjAd9c7iLzobUZvoLPh8+ll3vyBxDdN3qAjXK0frElH7yd6mbmV331pIeyK6CvzEamu9hiOVvQWRAy0f7JIjm5MhZPXCWzi/doeyWyOSOeaFmElAEftXlp8fki5NBCGvuRenj8/Al3139ZNCrI7AC+6DU+4qu+corjYeMjN4ifnp7vFKz8L73UB2MnHoqnl4+kw0Fx5D5iq/j25GPN5Pmneyj7YcQVKQc1v1xn51d9t6TxA/OjXOP/V4x9taS2uh+87yPdxdsfXE9HnwAYi57GdCW5NU6khXQl3v+rkp8ksjYuJThoY5Pvul7xqUt/wQL72gS0oPS6599M/o0KMjsgX/BNvvvc8x+i+gaI/P47UTzlj+b0qv9E2efDYxDjcST9h7KKra7+6aelHr31qxzUNwIxN9HM/Po9mXQggvLM861HXC+6et9Huostln2SPFFHRGCfLOj9bIPXjyb0KCygGeEXC1QLjzGxeelvK+krChY49Yh6/exDjEfUCHf+LMeoILODD/iCT/hGW3zVwaUYS7zmiZy2xFRxukuw8mdrfD40h7F8JH31ypWYcqgQQ+WH8rilbMwuGF2/fnBeNb9+b0vfvn374aejnyrJ+nRB9rMm9JnZirqLtz+4no42dhKZxaXEZWxKdIkFETeHWbz/V4RPEmNQsgv81W8LRTT2GdQHsWJT0hXfKPf8g5n8GxVkdhx8w0f3mXt5siU3lBe00SfNu1E89UDCZusPLLP4fCgesdxT9qOJSHlypB699ctr3tO86qr3uc7ML+2PpDFqTnxuKPdQG7+Xq/d9pLuog2sxrfGSyEpsiYTPNrwZvP8ZyVdg88JPXxgkPHVsdCMLZhRtnNEf3yDQkX8eU5V131WCzA4+UMYnoG2cdz+IdX0XiL98dzjIfLyv4vPh8+nlEWk9cZCgrE2mHu6fy9evruSkv5Zm5tf7yaQ4RfQJvwdtaBvxvo90F1sse4K3EuFTRYJz9e/hW4uLRLliM7gaXwD68yzA15j0es149IR5pBG+f//+4xoXog6mI//8CqvyDzI7Xue+tTYV2qMzm+9KRT+0+YKe7GdQfOjzlYMr+qfDAzzeLfzeTCPr1x+ixM751dd6mhtpxEZsoz7qq8L/oeQET9SfRUoCkluJEj8x6H2P1Tsgf7hmZeFfT/A1CIfWyObTQ5sPV20GstXyycuQlTNfZgRHNvU6lnXQa2zUUSZPRuK3WvJBf1DPxsbcjhwKIygWbiuWR+SfajhsyMHW4eHEfjKNrl9sY1NzvGN+48GKRh4Yo/we9aW+j3QXdXC9kUhkj9VTmJnfHezIP8jsjLDDvxn5BqsynBljCx9vZmdEM/7pviuE7cym1/l4P0F3scXyJ0/clWol/rszM7872JF/kNkZYYd/M5o5GHr4eDM7I5rxT/ddIWxnNr3Ox/sJuostlj954q5UK/HfnZn53cGO/IPMzgg7/JvRzMHQw8eb2RnRjH+67wphO7PpdT7eT9BdbLH8yRN3pVqJ/+7MzO8OduQfZHZG2OHfjGYOhh4+3szOiGb8031XCNuZTa/z8X6C7mKL5U+euCvVSvx3Z2Z+d7Aj/yCzM8IO/2Y0czD08PFmdkY045/uu0LYzmx6nY/3E3QXWyx/8sRdqVbivzsz87uDHfkHmZ0Rdvg3o5mDoYePN7Mzohn/dN8VwnZm0+t8vJ+gu9hi+ZMn7kq1Ev/dmZnfHezIP8jsjLDDvxnNHAw9fLyZnRHN+Kf7rhC2M5te5+P9BN3FFsufPHFXqpX4787M/O5gR/5BZmeEHf7NaOZg6OHjzeyMaMY/3XeFsJ3Z9Dof7yfoLu6zXBRFURQvUAdXURRF8Sjq4CqKoigeRR1cRVEUxaOog6soiqJ4FHVwFUVRFI+iDq6iKIriUdTBVRRFUTyKOriKoiiKR1EHV1EURfEo6uAqiqIoHkUdXEVRFMWjqIOrKIqieBR1cBVFURSPog6uoiiK4lHUwVUURVE8ijq4iqIoikdRB1dRFEXxKOrgKoqiKB5FHVxFURTFo6iDqyiKongUdXAVRVEUj6IOrqIoiuJR1MFVFEVRPIo6uIqiKIpHUQdXURRF8Sjq4CqKoigeRR1cRVEUxaOog6soiqJ4FHVwFUVRFI+iDq6iKIriUdTBVRRFUTyKOriKoiiKR1EHV1EURfEg/vOf/wLWktV1pVzP4AAAAABJRU5ErkJggg==" alt="长按关注公众号查看更多原创文章">
如果你觉得文章对你有帮助,请转发分享给更多的人。如果你觉得读的不尽兴,推荐阅读以下文章:
Docker环境的持续部署优化实践的更多相关文章
- Docker环境 ELK 快速部署
Docker环境 ELK快速部署 环境 Centos 7.4 , Docker version 17.12 Docker至少3GB内存: #内核配置 echo ' vm.max_map_count = ...
- JAVA项目如何通过Docker实现Jenkins持续部署
原文地址:http://blog.51cto.com/dadonggg/1957691 本篇实操性的案例讲解——JAVA项目如何通过Docker实现持续部署(只需简单四步), 即:开发通过git pu ...
- .netcore mvc docker环境jenkins一键部署(DevOps)
[前言] DevOps方面的文章很早之前就想分享了,挤出一点时间把前段时间搭建的一些提高开发效率的东西给大家分享一下吧. 本文介绍了一个.netcore mvc web项目,从项目push到githu ...
- Docker环境下eShopOnContainers部署
从头开始学eShopOnContainers--Visual Studio 2017环境配置 https://www.cnblogs.com/dusthunter/p/9973815.html 一.安 ...
- Docker部署Jenkins 2.285版持续部署集成实践(2)
前言:上一篇文章中,写到了jenkins搭建,下面记录使用jenkins构建项目实践 1. 以构建.netcore项目为例,如果要构建.netcore项目,需要安装dotnet-sdk包 进入jenk ...
- Docker部署Jenkins 2.285版持续部署集成实践(1)
抓取Jenkins镜像 docker pull jenkins/jenkins 创建映射本地路径: 运行Jenkins实例 docker for windows: docker run -it -p ...
- Docker Compose编排工具部署lnmp实践及理论(详细)
目录 一.理论概述 编排 部署 Compose原理 二.使用docker compose 部署lnmp 三.测试 四.总结 一.理论概述 Docker Compose是一个定义及运行多个Docker容 ...
- Shell脚本开发环境的配置和优化实践
1. 配置vim编辑器 1-1. 为什么不使用vi而是vim vi适合编辑普通文本,不适用编写脚本代码,例如:缺少高亮显示代码.自动缩进等重要功能: vim相当于高级编辑器,可以提高开发效率. 1-2 ...
- .NET Core微服务之基于Jenkins+Docker实现持续部署(Part 1)
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.CI, CD 与Jenkins 互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous i ...
随机推荐
- Redis集群命令行部署工具
使用之前准备工作: 1)配置好与端口无关的公共redis.conf文件,和工具放在同一目录下 2)配置好与端口相关的模板redis-PORT.conf文件,也和工具放在同一目录下(部署时PORT会被替 ...
- Web模板引擎—Mustache
Web模板引擎——Mustache 2012年9月12日 BY BELL·12 COMMENTS Web 模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,通常是标准的 ...
- C++调用ocx
1.保证ocx已正常注册,可以使用 2.创建一个C++的命令行程序,在主程序#import "HZ_KevinTest.ocx" no_namespace 生成一次程序,debug ...
- SSH 等效性问题 总提示输入密码问题
家目录权限问题 .chmod 700 /home/.. 得到的教训就是没事儿不要乱修改家目录权限,一时方便,可能在别的地方载跟头 ~~ 浪费好许时间 哎
- Unix传奇
转自 http://coolshell.cn/articles/2322.html 了解过去,我们才能知其然,更知所以然.总结过去,我们才会知道我们明天该如何去规划,该如何去走.在时间的滚轮中,许许多 ...
- _编程语言_C++_宏定义#define 和 常量const 的区别
C++中有两种定义常量的方式:#define预处理和const关键字 #define 预处理指令 #include <iostream> using namespace std; #def ...
- CentOS 6 安装Redmine
Redmine是一个灵活的项目管理web应用,采用Ruby on Rails框架开发.Redmine是典型的web 2.0网站,项目管理系统的后起之秀.Redmine支持多项目,灵活的角色权限管理,灵 ...
- 初始Hbase
Hbase 定义 HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现 的编程语言为 Java. 是Apache软件基金会的Hadoop项目的一部分,运行 ...
- flume遇到的问题
Caused by: java.lang.IllegalStateException: Unable to add FlumeEventPointer [fileID=, offset=]. Queu ...
- 面向对象的设计原则(JAVA)
一.单一职责原则(Single Responsibility Principe,SRP) 1.1单一职责原则的定义 1)定义:在软件系统中,一个类只负责一个功能领域中的相应职责. 2)另一种 ...