计算机二级练习仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

413 lines
76 KiB

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 实践13 递归函数\n",
"1.理解递归 \n",
"2.掌握递归函数的定义和调用\n",
"3.理解递归函数的调用过程"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1.递归"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"递归是个很有趣也很有用的概念。所谓“**递归**(*recursion*,*recursive*)”,就是“用自己定义自己”,或者“自己包含自己”。举个例子,大家都听过的这个故事就是递归的经典例子:\n",
"\n",
"```\n",
"从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是这样的:从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是这样的:从前有座山,……\n",
"```\n",
"\n",
"如果我们把这个故事叫做 A,那么 A 的定义可以写作这样:\n",
"\n",
"```\n",
"A ::= 从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是这样的:A\n",
"```\n",
"\n",
"上面这个定义里的 `::=` 的意思是“定义为”,这种语法叫 [巴科斯范式(BNF)](https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form)。这个定义里最有意思的地方是,在 A 的定义中用到了 A 本身,如果我们把 A 的定义代入 `::=` 右边出现的 A,就会出现无限循环下去的情况,这恰恰是原来那个故事的 point 所在。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"如果把这个故事写成 Python 代码,大致是这样子的\n",
"\n",
"```python\n",
"def a_monk_telling_story():\n",
" print('从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是这样的:')\n",
" return a_monk_telling_story()\n",
"```\n",
"\n",
"这个简短的程序体现了递归的本质:一个函数的定义中调用了自己。不过我们可不能真写这样的程序,因为它会无限的自我调用下去,形成“无限循环”,或者更难听的词儿“死循环”——循环到死。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. 递归的基本概念"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"递归在编程中很有用,要了解这一点,我们可以来了解递归的来源:又是数学。人们很早就意识到,数学上有一类东西,很不好写出一个公式来计算,但用自己来定义自己反而会很清晰和严谨,比如大名鼎鼎的斐波那契(*Fibonacci*)数列,这个数列不仅有很高的理论价值,而且有很多数学和其他学科里的直接应用,它的定义是:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\\begin{equation*}\n",
" f(n) = \\begin{cases}\n",
" 0 & n = 0\\\\\n",
" 1 & n = 1\\\\\n",
" f(n-1) + f(n-2) & \\text{otherwise}\n",
" \\end{cases}\n",
"\\end{equation*}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"也就是说,开头两项是 0 和 1,之后每一项都是前两项之和,这个定义来自数学家 Leonardo Fibonacci 对兔子生长问题的研究:\n",
"* 第一个月初有一对刚诞生的兔子;\n",
"* 第二个月之后(第三个月初)它们可以生育;\n",
"* 每月每对可生育的兔子会诞生下一对新兔子;\n",
"* 兔子永不死去。\n",
"\n",
"在这一模型下,每个月兔子的数量就可以简单直观地用上面的递归表达式来表示。而要写出斐波那契(Fibonacci)数列的通项公式(即通过 n 的有限次运算求出第 n 项的值)就没那么容易了,当然这个公式目前不算什么了,长这样:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\\begin{equation*}\n",
" f(n) = \\frac{1}{\\sqrt{5}}((\\frac{1+\\sqrt{5}}{2})^{n} - (\\frac{1-\\sqrt{5}}{2})^{n})\n",
"\\end{equation*}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"所以可以看出,递归表达式和通项表达式很不一样,有时候递归表达式代表了问题的本质,从递归表达式出发就可以一个一个计算出值来,而通项表达式更方便快速计算出特定某一项来,却完全看不出和最初的问题有什么关联。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"另一个经典的递归例子是阶乘的定义,n 的阶乘 $n!$ 就是从 1 开始一直乘到 n,递归定义很简单:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\\begin{equation*}\n",
"n! = (n-1)! \\times n\n",
"\\end{equation*}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"可要写出它的通项,怎么写呢?当然我们可以写 `n! = 1x2x3x...xn`,但是 `...` 并不是在数学上严谨的一个东西啊。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"为了用 Python 计算阶乘的值,可以有两种方法,循环,和递归。先来看循环的方法:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"result = 1\n",
"for i in range(5):\n",
" result = result * (i+1)\n",
"print(result)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"就是把 1~n 的整数都乘起来,下面看看递归的方法:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def f(n):\n",
" if n == 1:\n",
" return 1\n",
" else:\n",
" return n * f(n-1)\n",
" \n",
"f(5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"和前面的版本结果一样。这个实现基本就是阶乘数学定义的翻译,很容易明白,但我们需要格外关注的是在函数里调用自己这件事。我们可以一层一层的分析一下在函数调用 `f(5)` 之后到底发生了什么。"
]
},
{
"attachments": {
"image.png": {
"image/png": "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8pJLLhnHOaxMOh+vKjjnox97cxVFEZwRgg4++OC4IBS+BotNUq+Txu+TTz45Lir34IMPxkkoROltt902Li43YMCAsMACC4Rf/OIXcVI84b3mmmvGhW5vvPHG5KVC/FZwLkQ317zIIgnOxx9/fMAGYDfmm2++wOQUjSyqESNGRF8DYYRGnfB99tkn2gU+M88884Qdd9wx3HrrrV1+BXaFReXwT5IoxvjhHP+j4Jzjzq3z0ooiODOphK8w/fTTR5ux3HLLdU1KE+yC5jH55JPHCanSCGeinvHHll122XDppZd2UcV3YR9oHdiRIjUF5yL1ttfaEQJFEJwxtLfffnsYPHhwGDhwYBg+fHgUipLIZGbzVlpppfiD2EzEwNZbbx0mmWSSsO6668afddZZJ6yxxhpROEJEIlLxoosuCosuumhYbbXVKopNHenQNhxUwbkNkFN+iKIIzgge2IaZZpopHHDAAWHkyJFd4hERjNgEnDaiEssbi0atuuqqcZC43nrrdQnORCsuvfTSYciQIYWJPFJwLr87ivf/IgjORBHdfPPNUTSed955w2GHHRa495PsByIOl19++Wg3mLBisIcPMdVUU8XXtthiizBo0KA4eMSuELlEYwKcSfL111+/UDeOgnOhurvixRZFcCbYhSCX2WabLU5YEWmI0Ewjs4rglxVWWCEGxIwZMyasuOKKUUzCTiCw8VnEJewO2ZcIzOyDCS8+V5SSPArOFR+jQr1YBMEZsfn666+PwSsEtRx55JHxuU8imZlkwjYw9kjsCDcB71911VVhlllmiT8EvpS2k046KU52bbXVVqUv5/5vBefcd7EX2GkCeRacS2f0Mar9+/cPm2yySZwBTNJViVRmUMh7iGiI08zs4cwRGfDoo4/GH1JV/va3v8U02X/84x+x2yjDQURB3759YwpKMqjsdJ+2+vgKzq0mnP7951lwLrUbDNwQgBiwkQmRPOP8JvKZZ5+MB2qsljbsClHNTFpNOumk0eljkopGaizi9cQTTxwdxiKkySs4l94dxfw7z4Jzqc3ANmIXdthhhyjyJL4GAjMRiQhKTFwRZbTpppuG6aabLgpGlPti4orBIKI0tuOYY46JNgdfY7PNNosTX/fee2/X5FXe7yQF57z3cPfXl2fBudRukC0166yzhrXXXjuW7Up8DYTi4447LkYx/v73vw9ELpIlNcUUUwQyHyi9Qbk/SvfstttuMXti4403DpTnYNthw4aFKaecMpbkKYLorODc/TOV9y3yLDiX2oxzzjkn2oG99947+gnJGAPfYqeddgpzzTVXzG6gvwm6I/MKAZpsiD59+kR/ojTCme0oK4oNIjiP0qPla9Pk9d5RcM5rz3pdqSGQZ8EZyMzsMYDbfvvto2FGSCY6gOhEGtHNK6+8coxIoqYRDaeO6MNtttkm/r/WP2xLmY5dd921qxZSre3z8J6Ccx56cdxroM7fddddF2uUj/tO5f/lWXDmihmYEY3Ic92vX78YhXjTTTcFJp5w+BjcbbjhhlE8evXVV8dJV0Vgwi4sssgiYY455oip8mRIJM4g+6cMD1HT2223Xay7WJlyfl5VcM5PX3IlDELIBKLEA6Jg+YRLpavNs+DM9cLgiiuu6MqOWmuttcJtt90W01l5n8jnZZZZJqbAsw4ENVcp1UPqPGU1ShtCMwNCJq0YPNIoxUFU0p577jlOHfnSz+XtbwXnfPUo351k+PDdmpSL6O4K8yw4c+1kWjKxTfDK1FNPHbOfqNdOsAuNCSaE5bnnnjv6CtjdJZZYIsw444zh8ssvHwcfYxtsCin2CEe0iy++OPoaiHDYnbw3Bed89TARuUzEEs1LGark+7DWVeZZcOa6WTuGIDoyoiaccMIYSIeWQZkdGvaEjG70DgJlaDwXq6++ehSSmfQmG4Lf5YIz2x511FFx8gufLZkwjzvJ8T8KzjnuXC8tHQTyLjgjBpFWgrhDXTSiAhCTDz/88Jhacuyxx0ZRiFpnSeM90leJFsBpw4gnC3KURyPec889sd4RwlIS+ZzsJ6+/FZzz17PMhm+00UaBGoIMWhjUMDgpFUlLrzrvgjPRQZTKYTIJh26yySaLovP+++8fB4jUfKeeMynupREHMMJekNaK/dh3331jWQ3Ep1LHjYWBGEQiIBHZmPem4JyvHsYu4KATxbvLLrvEiF0mcd94442qYmjeBWd8hCWXXDJmS00wwQSxTAYCMz4WNoLooh//+Mcx4pC7geeekl1wwd6UtiOOOCJGODNwTgbYiWCN8ESWRBGagnO+epkMQgI5iOwndZsJGaJzuf+TVPDyK8674MyCXtRMTdaXQQiiDMYhhxwSoxaZaGJ8seWWW0Y02FmEI7I1sbeljTJeiy22WBSTWKyYRpQiQTWIS8lrpZ/J298KzvnqUYI/EJuxG0T2I5DiP/PcJGUxy68474Iz2dYIykw64WtMM800MSvqxBNPjCj22muv6Gvst99+XWgIkqEMKMEwp512WgyEIYqZbKvyRkAMNohSHYlgXb5N3v6v4Jy3HvV6Ukcg74IzK7hSVJ+aqaSoMuDjS4tZfxqiEGlsDO5QjAUAACAASURBVPCStvPOO8cIAYRqjDrpsSzKwSKBRGaUCkysDs3rGH1mX4vQFJzz18sIGMyYI4DMMMMMcZKGNE7ub4RSBoql933eBWecrAMPPDA6cUxSUXIHu8Aq8bAgAoDXEJRLB8qvvPJKTJuHIRFKRCBRW7FccGYiC6GOKMYiLASm4Jw/m8EVUVsUwZTFc3keiNIjU4K1EGg8K0nLu+DMhDO+BRPaE000UUxnZeBHHVUa60IgHP3mN79JkIzzm6hxfkitx+/A56AOY5JazyCTSUFK8WCXi9ASwfntt98uwuUW4hrxyfEfWP+A70nKVSGUMGFTydfIu+CM2I4fweQUE9s894xLYERDNGJiGgGaRiAAPgMp8l988UV8LfkH20FGFguPJhHkcCWTCl+DOtF5bwrO+exh7l1KRyy44IJdWcVkHSaTtaW+Rt4FZybpGI8gCicLjFKuCz+btsEGG8RSgKeeemrFm4HMb7IumbxOtJDSDfHrCIhhbYmXXnqp9K3c/q3gnNuu9cLSQiDvgjMiGeknRFPgiBElgJOWzIwSoYgzx6I8SSNVHueMumdEOSIoE7GIYceRw6lLIp0TgYntL7jggq4FxZJ95el3IjjyZcf1OgjMU+/+cC0M+OhXSmzg3CGWMiD89a9/HSPyEvEj74Iz9zqRhSwQyoQUC/bgpFGHlYZYPO2008aBciI44/Ced9550c5gb4jMwFYQ9VguOFOTlUkuniMimBKnOX931A9XRBo1zqstfwR4Vj788MNYpgpxiHude54yVpSzSkSRvAvOcEBoZ6IO34EBITYg8RVYfBTBGUGkvFHOi7UkGAAyMU7kEZNape25556LJX7wQ4jySiKfS7fJy9+Jr0EJI643z9ealz5r9DrwJYhSRCShTAwTNUTiIj4/+eSTXdlVeRecE/uJOETEImMSxieJr8GYBWGeNSOShl2BX/Kc8DoiESI+9uOggw6K4x5eR3hmzQh8DcY5H3zwQbKbXP5mHAZHW/4IcL9z//K9gI9NpD9jFARmJrqTLMK8C85wYJzGQoGsEYNvxbXja/EeJXfQLCqVy+Cu4PuUOs3VBGfsL1nf7Jto58QW5e+OGntFCs5jWfiXBFpCIO+CcwKNNBLqmhGBlTSEaMQ0jC4DYxqGmJlCBCYikYgqon4UpTOSKAEin5OUVgaKiHE4cww0id7Ic3vrrbfiQkZcL1/0OLirrrqqPxlnQGRz8oMjwuCPiRgi9+lrBjyUmUGIpjErzgROIrbm9Z7HYSMrAiZJw0aQzkqZHjgki2qQ9seAGfuQ2IEkwpnPl0ZgsJgPgz/4EkmdRCMlx8jbbzJDuI8Q3RgkaDPyYTOx/0TKYDv4zmSQQ0o4fc1vys4QhUPqN4Mj6prnvZ155pmxFitRi0nDXyDVnRRVnoXyRtQighKLfSFKI1hTf/HOO+/sEt747qXcFzbjlFNOyX09VmwiUZ3cS8stt5y+RsZ9jMTmYysSm8H3IvaB71L6mR98DZ4VBADaGWecESd9y5+ZvP2fSXw4JKUzuD7ENWwsNoH68NUa7zGWwW7AmdIZiV/CJBj2ArbYYOxInhs+G9fK9xEBQ8l95+9s+xyJr4HtwI9k3I4gSl+ThcgCeYxJ+S4lq5mFd/PcGHvxXJMVcfTRR3ddKs83fhiT/pRHrNTI4MT2VhOcydYis4JMLYJu8j5JBSMF50p3iq9JoIkEiiA4I/Qg7rAaPFFXNGYBqQOFY4vDi6BMY4aQVZ/5P4J0abv11lvjAj9E3DADSGPmj4glvvSIIsi7cMTAmZllrpcvfkT4rbbayp+MM2AihqgAajn/7Gc/i6IgYlEiOFP/jwENdURp1AIrguDMdbIID+llSSPSkMHLoEGD4srv2BIE5iQTAnuQCPH8jX1BZCVCOmlEMDHJhS1hYUL2meeGGI/NYBE0Iie0Gfmwmdj/xG6wgA33OpHs9DULYCEwE/HM80FEf94FZ6KMiFSEAeU0aAg/RGQxCGQQjH9R3ohYRCSi3iriEaUzyKAgNTZZkJHfiG+wRXgmSyLPjQiuZPFEss70NfJhMxJfgwwAasDzXYqgyn2Nv8EELxO3TLbQmIghyyjvjaAYBOfNNtus61JZD4JygEz2syhYacPvoDQX9oaFRxHqmbBKhPpkW8Yo1GmFL1lrZGXmuVEajmvFH6Pur75GPuxG4mvgb+BHMnZHaKav+a5cdNFFw3rrrRfFUb578y44kzl1wgknRNEdf4DGuIMyVIxZGHPgd1Rq3QnOCMwE0jE+IZAuKZFWaV95eU3BOS896XWklkCRBWdS0HDkmAlMBoEMDpPIgPJOYyE1BDm+4Jg5xOFjgJnMqJPW8tprr5V/LDf/53pp1HSCAdHdtnwRIDUe8ZO6o0ToESWCE8egj0j/ZBHBvJfUSHq1kuD8yCOPRGcWAemuu+6Km5LGiShPxADsiGxmpehhw4bF9HgiG4mGphwNDJNF13DosCmwzXOzpEZ+exexlKgaJmmZjEQsJbKMQR9OfDL5kveSGvRwNcEZ8YwJPCKzsB80BnUsalypnA7bI84TvYTNoDEZTg15vnuHDx+ea8E58TVghY0sQkpv7OQC/cP9T31hBEIiEnk2sB0Eh5RG6Oa9pEbS5ZUEZyagqOeOmHbvvfcmm8axB3Xc8dGI8kSoJjMTnuUN+8zkNmI+NhmROs/Nkhr57V2+A8mW4vuRBc4pP4OwynNAQFiSRZj3khr0cCXBmXEF2gTZqQSEEVRXqXUnOPN9i93FZjDpm2R0V9pXXl5TcM5LT3odqSVQZMGZ6AEisqjLTAQejVQShCIcvfKGKIQ4hBGmXhTCNIabFFoGgaS3FGEm0EUDy++M7P+fWoo46kTyUv+OVdMRjxj4VWpFFpwRgHByEZip0Uyj/A51V7EDtX6wt9gIBoFEHWFLiE7Ie5qriwZWeoqy/RqiIAM/RIzShXxuueWWrqjc0issquDMIPixxx4L888/f/Q3brvttigYYW9ZKIwIovLGdyyZJqS0MhDC10CgI6IJm0GaK2V58t6SRQPzHs2d934svT6yAM8555w4mY2vQTTzaaedVjXytsiCM2MOysmUlv2DJUIS0bv4GgTMsKAak12VGkEEiNlsS9Ri3gNFyCqjfGK1wKFKjHwt3QToS4RUAjiI5ifjgbrvLJxZqb5/UQVnJvcfeuihmDGC3SjPikh6uTvBGYGZcQn+B89TkmWVfD6PvxWc89irXlOqCBRZcEbkwSgjHCGg0Vj9mVSdTTfdNC5oUtpZRHARqYjjlqwSzz4OPfTQOAgkii9ZIKj0c3n7W8E5bz0aYpkD0reJZKZuOSnwOHLVnPYiC84IxqR4U1IEXghKRIUjqjKwIwqRHyKaSR9GiEaQI3IrWQyJqEYWR8KW8JnSchv5u7tCZEN9yWSx1jxeY5GuiUgaJl0pj7L77rvHSVqyeyhDxWRKpVZUwRlhHjZEKVKGhwwIXuO5n3nmmWMtxfLIRIRWUoInnHDCLl8DoY66irx20003dS3GWIl1Xl5TcM5LT/5wHXxXUjKCNRCYNCGCHQG0lq9RZMGZsjJkixDBjEifNCLCKSOAH8I2tRqTNUlpGqLJ8/4drOBc627I3ntJhD4lUigJwxoIBIYx4ZosYl5+VUUVnLGvZCDPM888ccwxevTocjTx/90JzgTVUOqPDCuCCqpxrrjzjL6o4JzRjvO0s0OgqIJz0kM4bMyGE6FIw1izwiuDOmZTiUwi+hOxeeutt44rQLN4QRIlQJkNatEhHFWrl5QcKy+/FZzz0pNjr4MIGe7xeiPJiiw4Q22XXXaJC/SwqBVRBQjzDJqJJkp+iDg699xzY0osdSpZzCQpL4DDjACH3UjqYo/tjfz9ZYRzvvqUgQ0C6H333RcF0XpKHhRVcKbnsQ+UJ0JgJpqTxvcoJb0mmWSSWJ+YAQ9MKfXFWhMsuohInaSzJivHE3VULlDn6+4aezUKzmNZ5OEvJlqISsRuJAvrdnddRRacYYPQ1rdv3yga8/9HH300Lo5GzWYWC8MuEADD6wj4/MY+JCIRJTT22GOP6GvAPe9NwTlfPYzPTOkpSsqQlVzPhElRBWd6nueerAfqOBPkUql1JzhjR5gUJEgkz2VCS9koOJfS8G8JtIBAEQRnBnsM8hjYsbBRaSNiiEEgAlLSiFqkPisRBNSvJbWVSGjSeFg4jSjoJIqLaFBW3Z5mmmkKY5gVnJM7pbi/iyI4k/bOYqOUGCltTFBhN1hRHvGtWqMGNKIS9SkZbCeNiGhsEaJSESaqFJyTni/u76IIzpS9YCKp1Keg1/k/tRWpN0nDbpDiTm1n7MCQIUOi0IyPQUQjYjOZEolwxICbaEcmyJMJ77zfTQrOee/h7q+vKIIzEd8IPIwnShv12vE1yJaiMT5BbKa2OX4F2/NDzda11147/s22iY14/PHHY21sFjLN++LE8FFwLr17ivl3EQRnhHf0G3yNAw88cJyOJjgOvQLbUalRImPFFVeM/gjPS3mjHjZ+CPtAnC5CU3AuQi97jR0lUATBmYEdK79jQA877LBxeJPeSkQzgjILEtAwsAhFGGRWzGaQyKCQSAPE5tJ29dVXx9QVIhiTSKTS9/P4t4Jzfb3KfUeUa7WyFOV7YXvEBX6nvRVFcKa2OxkNZDuUNtL6EKERk6mtWq2xHauk83nKECSNxQZZFAy7Q1ZF3puCc957uPvrK4LgzDNObfall146LmpUSgWbufDCC0d7kmQ6kBZMqjzlM+aYY47oaxCZxGJI+CaljRI91IFea621ClFTkWtXcC69A4r5d1EEZ74jEZD333//cTqaUn3Yk6WWWiounnnWWWfFiSfS5vmZa665un4Yp1C2B3tCZiaN8juUAmQ8k/e1IrheBedxbp9C/qcIgjNBb/gU6BdMVpU2IpvxFTbeeONxAl2SbSjhRyk0/AzGKOUNn4SgOzLAE12kfJu8/V/BOW896vWkjkARBOda0Kl/RkkMohhJbU+iifgMEYkMCHHcKtVmxhAffPDBMboZQbvSNrWOndX30io4I9RW+ymNLq3Fne0aEXyT7SmnwIRD6XH4/4MPPhio11tJdE7Olc/wwz5Ip2YV5rS3ogjO1fqB8hiU06DGGQPFekoKJPvCxjCIJuMCjkWIIFBwTnq/vt+ldqSeTzS6fT37bPY2RRCcazHDj2DSesCAAbGsQOkEFN8FTFyRvlqpnjvRTAwQiWy86qqrxvFTah0z6+8pONffg43agEa3r/9MmrtlUQTnatSIVGZhVrIoEYeS7Mpq25e+zraU3SBymomwRvyU0v1k6W8F58Z6q1E70Oj2jZ1Nc7YuguBcixR+BGIyk1FkRlUaf1b7PP7HdtttF9e2wt4kk+PVts/L6wrOeelJryO1BIouONMxF154Yax3RHp8pWjFal+wRA4Q2Uw0QVHEZnilUXBGACTVkAE9X5bUwOSH6FKEDvqqu8bkAlFkpCfVKwLyhcx9w2rrRK+Rssj9wmQEZReYJWYBhkpf+CzkwkJ9LB5FYzBAxCsTIGmv0Vl0wZn+ItuBDAiiABqZJKBeNp/hfuGeK0LLquBczfbX6rNGP0MWRGlDJKDuJt9F3Tn7HIvvnhdeeCFObJXuJ21/F11wpj+ITiSCme+mSrUoq012kklFhhbZFuX3S9r6uZnno+BcmWbpZAVbMFn9yiuvxMj3avdQsifeR1R49tln4+eS19P6u+iCM/1CQAt2gwUXCWCot40ZMyZmRFDTlXukCK1IgnNvfQ18B3wN1h2pNEYpvV84Ft9ZrFtUaZxcum2n/y664Az/448/PtoMSnmVf1/U6p/LL7881oAmOrq775Ja+8naewrOWesxzzdzBBScQ3TUWfWZxXhYOK1eI7vtttvGchrUeS1SS6PgTC1tBuPUtyR1kEkAfkhDxElHSK7WiERGEEMAJpJk9dVXD2eccUaMJGORimoN54tZZOptLr744jHiNVkxHIGbRaKWXXbZ8dKfEZGIZF5wwQUDdfWOOuqoeAgcvh122CHMN998sTZXteOm4XUF5xBXh6dED7UUEYTqtRsIb0QeMEFSlJYlwZkI0iOOOCKQylxP43kmiuS8886LA7d6PsMiTyeddFJMeWTygUEcAzp+mMTCBiW2hzToESNGxIkwoly559jm/fffj4dCgGRFcbJt0rzAi4JziP3MhCKZEdRur9dmMPhbbLHFYpRiPfdXXrZJq+CMD0TaMmuAsCAbvgNlkuoV9RB8EQPxHUuFnloC0l//+tfoK1Crl3VFkgV+sT+kQLPIUzLxySJbBFIcdNBBsZwTPgZ1OZOJdAQmtkfMrXfxvk7dUwrOIbDIMKU2WMycfqzXbiA24U9yfxSlpVlwJsvlkksuibV1d9ttt/hdTuBC8l3eXR8xGX3nnXdGX6PeaHUWkST4heAW1g1hYgo7wz00atSoWPe7PCgGm4RPy+dYQC5pCNRMlhI1n9ia5L00/VZwDtF/3GabbWJmBN9X9dgMvkvwPRk3jx49Ok1d2vJzUXBuOWIPUHQCCs4/LN6DYIkD/sADD9SVrsoXMk784YcfXpjazcmzkkbBmXqXRBNTz+rSSy+Niy2x4BIiEDO2LJxSrTFwQ/xBsGahJmppMsBnQSfui2qNqGoWc+EzHJ/BHDPJfGnj6CMoV3L0cTrZ/8QTTxxTHXHekoYzSb09xPJkQJm8l6bfCs4/lNwhon3TTTeNg8B6ap3h6J966qlx4TD6t5bAkKb+7u25ZEVw5tmkRi4LxjIJWashGmELccz5HsB+YGuefPLJ8Prrr9f6aBSHsTN9+/aNE2SJuExmA5NO/fv3j+IxkcuHHnpotAlJvU7eW2aZZeJ9hHBEYyBJzb5TTjml5nE7+aaC8w++BpPa2AyEgHqildmGyQS+jxqJbuxkXzfr2GkUnOk3Jg34fp977rnj+h5MOrOgIxPblSLXEx4s1sTnKW+AWI14TCk3JqBqCb/sk4XgKMdC+TfuH0RIGozWXHPNrowZ7A8LUzJBgc3ALvC5lVdeOWZT4acgHOFj4C8hgKW5KTj/4GvgwzJGYXKznrIaCEzYDEp/1bq30tz3PTm3tArO+Ir0BcEpjFWS55LnkEXtGU9U8weZyOK5xr9gHzzvTIxjN/BZqjXGInvvvXeMdO3Xr1/0UZjcpnE/4TfMNtts49X2xq8hYIbACKLrk8a4lwUqGaMw4ZbWpuD8g69xyy23xD6mP+uJcmYMw/2CzS1K9mVyDys4JyT8LYEWEVBwHguWL3UcuXpnAhk81CMyjT1CPv5Ko+B87LHHxkgOxJlGGwP6++67L5bjYMVfIlYRhPkCqhRFwBc3Djxf5gz+WBmcaKVE/KFkAgvCsQBMEvGcnBODPSKPiGymDAdpkkmEM9tw7xE5z+s4dNUc0GR/nfqt4DyWPHYDO1AaqTb23XH/Yhu2ryVKjPuJfPwvC4Iz/YJwjAhMtguCUK1WOlHFAJCJJ+wGA0JEpGoNoRr7gHB85JFHxtR2BCDaySefHAeiRLMxWKS8D+L3wIEDo+hImuR6660XbRQriLOoJQ1bNXjw4JgKiR1Ko91QcI5dFf/pia9Rj8g09gj5+CttgjPP6eabbx6mmGKKKOjy/OJ7kFWF70DpAiYUKjWeSdLXsQ9MTlGODVGYsl/sh2CHag1bg69BtCoTlkQwJ+uNMDGGPTnxxBOjqEAEIueHqMVExZlnnhntEtGxfJ6oRhqiN34GJcHS7McqOI+9KxJfo94xSjK5MHYP+f8rjYIzfh8LR0899dQxoIXvd8or8eyR7cJzyHlX61eiibEz2I0kMIbMTcY7d9xxR9VOpfQFojGi8nHHHRdLbyXPOoEuCyywQIy2xjZxryBeMxY64IADoo9BQA2+W2nj/3wOQZr7MY2+hoLzDz1G39BHfFfU00/4nPiP9UyEl94TefhbwTkPveg1pJqAgnOquyeVJ5dGwZnoHyIHiBSg8eWa/NQDkZQyZnYRgokeRPQl5blSe+mll2KqKk4Xgzg+gyBE7WgaZTmo7ctgr7xRaoNBJqlODDQRiUiRL20IzewbEauaA1q6fSf+VnDuBPXsHjPtgjOONoIPos6kk04axWCiBGs1nHiizUhvR2zih2eWDIt333234kcZeCIWIQYxIVUqMmFXiB4iKvGxxx6Lk1WI2HPOOWcsqZHskEgobA22h3R+hEj2S1YFi8oxoZXGAYOCc9KD/q6XQJoEZ76LiQ7ERiy99NLjTCoRbcz6C0wOUV6jWmOiER+A9PZkcpsoQ0rkVKuLim0iGpF94zfgf9Hwb3idtQAQrzk3MiSYyMa+EA1Z2sicYKFajkdj4ovPIUJfe+21pZum6m8F51R1R+pPJm2CM3aDiSa+xxkXJGu2JCDxM8h2xHfgWa/UEInJfmTMkPgalPMju6pa1gs+ARlSiM1kUpSWxiDaGv+DiapkvRgEcEopIIAnx+CzRFKXNibdEMqZ8Cazk+OkrSk4p61H0n8+Cs7p7yPPMOMEFJwz3oEdOP00Cs44TwyycKyIACTli0gAUsxx9rprzOpTVuN3v/tdLKOBeIODV6mRLk9tM4RpIiEZ4CF2IzTTOC7nUp5yRto8QvagQYPi4JAIyoUWWmg8wZmabjh+OKdpTWtScK50Z/haNQJpF5yxaZTSIC0e0bf0ea52TbyOeMzEEgM0SmSQ8nz77bdX/Mg777wT63YzsJx88skDKa4859RyZNBG5CJiM4NKBqmI2YhMnBMDx9KGqIXgzCKpSXQ0A23SdLGByWuln+n03wrOne6B7B0/TYIzYvE111wTn3WiFctLXvEsElnc3UQVtoYoZGwGfgKTR0888UTFzmESishEFozE1yDikHUhiIimkQFBdCSZGdgMxCH2i+BSXs8dX4gJKWxb0siuoiwIE/ZpbQrOae2ZdJ5X2gRnJqYRs/jOxz8o/y6n9B/iLeOCWmUPsAVkM/B8E7XMxBHjlkqNdR/IlmJCiQl01rZhkgzbxEQVNoV97LTTTl0fZ80K9s+kFudJmSACacojnPkA649gu9iumkjeteMO/KHg3AHoGT+kgnPGO9DTTz8BBef091HazjBtgjNlL3DWcMQYkA0ZMiTWJiR9DaeJhbZYkb1WY+FAhGmiBxF/qLOIQFSpEW1ANBG1DxGNSKdlUS+iBnC+iE4mcqB80QXS1BDCqauH08eCPmxbHuHM4kCU6SC1nwF3GqMVFZwr3Rm+Vo1AmgVnopERcJk4YrKH55LMgz333LPa5XS9Tl1FJp/YFntAbddq0YKU1yEtlgwHIprIjMBusWggYhGDJETrREzC/jAIZFBZOhBFSOIzfJ5jJ6n1t912Wxg6dGi0edVsV9eJd+APBecOQM/4IdMkOPPdTiQzzzm1U/kOTxqCMc814i8CUq3G88yipDwP7AvBudpaEfgtiMpEIVPqC38DgRifhoaghPCDyEbDd8COIIwnqfPxjRCijcMnQrxOGtkYTHpz7mkt2aLgnPSWv+shkDbBGf+dbEkmliljU15OjQXKea7JVCj9ni+/ViKU8R8QhXlumSRiAclKjaAY/Aj2yUTVNNNME30NJsVoiNVEXFOiK2mUCcTeMLZhshuBGltTPo5hezIymCzHX6mWmZHstxO/FZw7QT3bx1Rwznb/efYZIKDgnIFOStkppklwZtCHo8TCGzhHzNhfdNFFcVae+mYslsMgCxGpJ610UFn+eZw6BG6ctySKGlFplllmiYO60kjH6667LkYWkUqbpMAxkERwJjqptOH0MQidcsop44C0Uh3p0u078beCcyeoZ/eYaRacGaBSe5XnmAEf0T+IMPUIzoi/1GxlkMZnec4ph1GpkcKO2HTCCSdEcRsRiXquiMo0VgdHgK600CiDVD7LuRIBja1DdCbqCbGaxiQZi4khZiPU1Rq8xg+0+R8F5zYDz8Hh0iQ4l+N8//33Y/1UUtH5Xkd8QQguj3wu/xzf7zzLZEcg8lL6gr8rNTKcmEjCRyBCkqwqhCReQ8giI4KF/xCYaWzPJBiTaKW+C3YqWQx1n3326ToUPgqlQPCTmDBPY3q8gnNXd/lHHQTSJjjz/YwoS4YjY5Xk+5pLwVbgdzB5jEha6/ljjIEQTPk/nn2yGRiLVWrUY2YtGXwZAlcQnhkP4Z9gF7AjZENRfqtSY8xBJhaTWZUEZya2yKRijIIQnrYoZwXnSr3qa7UIKDjXouN7EmgCAQXnJkAs2C7SJDjjvBGdzKAPUau8diopo0QGMTBLIgGb0V04hgwciaAmrSxx/HDESFvdaKONuoQnBGYEcUQtIhNonDclNXD6hg8fHl9LBog4pQwKSYVjwR+cx7Q1Bee09Ui6zyetgjMiCyU0EJiph0rjO7Fewbka9eRZrvQ+0cc895TKQByiEY1IVgQTULAqb0xuIWYRqUQmB7UVicouHegxEGUbIpoYdLOobZqagnOaeiMb55JmwRmhhYhB6iLzTDKB1F10cy3qtWwGafgIR0Q1Ygto2BFS5VdeeeVw1113Vdw1fgYLjlHrnc8T3Vy6yBiTVExcUZca0TqNUc4KzhW71herEEib4FzpNHkueX7JeiSziowqarvzeqOtlt1gEUBK8zEhhq9DYxE5JrY5JpHKlRpjFvwTxk2VBGfqPlMTnnrPZGkwmZ6mpuCcpt7IxrkoOGejnzzLDBNQcM5w53Xo1NMkOHeHgJQzxF4ikYki6olDV+kY5YIzDhivkU6fLO7D8ailyurxRCchBpGKy+AxiWImKoqobGquJZHMOG+k3CIckfKWxpQ1BedKd4WvVSOQVsGZQRPiL9+DSWOSqreCc7Kv8t/YH6INiRxCKEpS6bEHDO6INqwkHmEDGBxSl3HjjTeOKbhkUvD/ZCKNASx2gwk26rUmmRTl59Cp/ys4d4p8do+bZsGZ6ETsGmnuRAMiviy44ILjLPDZDPJMKlGyA7+CzCeyKWgsOMprm2++QPAURwAAIABJREFUeddkWenxEKLItiASkXrv2Be+t0sbtohFT8kC473ydP/SbTv1t4Jzp8hn87hpF5x5LhF/CVRhsooxADWRm90YjzAJzeQ0k+pJnXjGILxGRhX2tVLrTnDG9vF9TjYVQTEffvhhpd107DUF546hz+yBFZwz23WeeFYIKDhnpafSc55pEpwZjCHWEllM/eXydv/998dF/Ig6ZvDVrDTzcsEZJjiSpKgSLUREAdGLRBluvfXWMQJqggkmiNEMnAs/iNAMBBGIiGwk3Y1UOVJ1iX7mfWpDpy16AMYKzuV3mv+vRSBtgjMiLSusk0rOius8q6SjI+wykEKcQYwmGohnslYUUa3rLn+vXHCmtiP7JuqQ+q/Ubk8irUs/i71BDMKecE5MYpFdgVieDPaYsGLgSrQlKfhkSqSpKTinqTeycS5pFpzxPXjmeP6wHdRWTRb5bCbdcsEZEQk/hpR6FilkgWNK65Q2sr4o3YNNwb+g1A6LICeTU8m2nDsLieFrIOym0ddQcE56y9/1EEiz4IydYGFyFuzjexohmMjmVmQWlAvOCM34HzfffHMch2ATkszMcq7dCc74IJTrwLYw4Za2yW0F5/Ie9f/dEVBw7o6Q70uglwQUnHsJsIAfT5PgjAhDDVSiBc8777zxBlSkg+HcIc5QX7lZrVxwpj4bjRTV/v37x6hqBngMFimjQQ3pXXfdNS4qxgCRxcVYQJA0V6IpeZ8UXcQnBo+sYs/gtdIgsVnX0Jv9KDj3hl7xPps2wRlhZdiwYXHQR1o60T6rrLJKXISLiCOEHFJd119//bgwT7Mi/yoJztwN1IEm9ZVzeOihh6IdoAYjGQ78Lm8PPvhgnEgjqhLRmsYg8KSTTgpMbBH5nLZBoIJzeS/6/+4IpElwxmYg1iC0kNFU3q6//vpYFgf7QeQwz3ozWiXBmdeYoKaG6rbbbjuOcETJDUpykdWFTWGRYvwSPlPeKEFGuQ1qyCLUNcvOlR+nN/9XcO4NveJ9Nq2CM1HBLBBOdDHZSdRi53u8fBKoWT1WLjgT4cz4gvrvjFEQuxlzVGrdCc4I50kWJoseJpPelfbVidcUnDtBPdvHVHDOdv959hkgQB1IFiCySaBeApSKYHae0hCdbtQ+pYwF5SdYPAeBmQhhIhURbhmMIR6xYA4OWLNaueCc1GIlsmjgwIExtXbUqFHxcDhj1FJjIMgq9/xNXUWEZ549FifjfJPBHk4oziCCF59pVnRls66d/eDUE8ltk0A9BG688cb4HCb3eD2faeU2lLqh7AT1S1ltffHFF48/2BAGg0T8MRm04oorxlIWzYr8qyY4Yz+wBdRVRNTCvpx66qlh1llnDXvvvXdXuZ2ECdkanHuyQCCvM6HGxBW2EDvYrHNOjtnb32RtcH02CdRLgGh/JlAQazrdEGfJHOjXr19AZCHzobRRvot1GnhmKXvRLH+jXHBO/C4WEKOmO1kRSWo84hXniA1bdNFF4wLKtbK62BeLkJJxhRDVKvGrlFOjf2OnidS2SaAeAgR44Js26/mr55jdbcP3PpPHTEZR653gGMYurWxcf6WSGojM2Khll102jBkzpuIpdCc4My5h3IKfxMQX/lSaGrXuV1pppTSdkueScgKUsqPEDWPxTrU+nTqwx5VAOwgQ4cxsJyvg4nxSW8ofGVS7BxBKEXjTIjjzjCAwM+jiywLBiFTSc845J6bKI9oiJrESfDMbzhx1V4mOZIHApD4ax2BhHhxLBqW12v777x9ruRL1UNpIsVt66aXDnHPOmcoBIOdKhDPRlUS7I+xXu198XVuCWIRowOAkLYIzA0BqHnP/It4ibPEM8//ddtstLqpDbVS+E3FAmzV4LReckxrOTFQhEJGNcfHFF0dzgM1K7Bfp8wjICEIISBdccEHclu9uJrBo2CPqsSZRz80657jzJvxDhDOTcQxWEeS0DdqGWvcA9/XIkSOjr5EGwZmJY9LhmeRZb731YhkcRCPS4RFcCN5AuGVSpZl2rlxwhhkNMQn7gMhNdBaN54psLgTaZAFDzo3SH8lPafo+pcjWWGONGHX5yiuvNC0qO55Mk/4hwpnJP2wx11zrnvG9YtsUJl1ZgyFNgjPf+QSaMKHM84ovRMN2JM8kv5stQJcLzkmpLuwq50IZP8qKVWrdCc7sa4sttogTXkyWp83XYF0cMkcZr2oTxtoEbehYFqX3Bf7F2WefHYM1FJwrWQRfk0ATCCQ1HxEQ/ZFBvfcAUUcMUNLSEIpwMihDkVwD9ZEZTDED3+yGg8XgDsGHxT+oj5a0Aw88MKayUhuxVkNwpgZrueCMWM7rpPnjrKaxEb2dcPa3dqOeewAhpJlCTKuei3YuGkj5jKSx8Bg1pZkwozGRRoQ1bBdeeOG4sCFRiJTNYDDFBNs222zTFV2EeERmBAuAIWCnrTG5Xc994jbak9J7gAkUJoc63cg0IjCDSSH8HxYjJguBZ5KoYp5dIo75Xm9mKxecmViiMfmEaETE5BVXXBEjrhFnmdgjuo+yOgj2F154YfxhPQgms0oXJSXzZMiQIXHiuzxiu5nX0Jt9IZyX3g/+rX3o7h7gGU2LCIqYjJhFZgSTQ0Q6lz+XF110UYw2bqa/Xy44U1YnaSxOTLmdakEx3QnO2BDKfyGgs65E2ho2uLt7pIjv873FTxGvvZ5r5hntZHkYI5zTZkk8n6YSYDYHsc4fGdRzD1CrmO0QW9M0QGFQxqKBnB/O0C233BJFYGYuW5XuxYCPASjHKI8aIsoJp66WKE+KLrUece6SxnWQ4kp0M4PDNJbT4FypF0sdy3ruGbcptm1JbAbPSjMHVMkz0+zfhxxySByMUQew2Y3rpyQR9VURepJUeI6TTFRRaidp1G9mcR+iKhkoIGjxG3GLOq3sK2HKxBoZHkxW8XymrSGgawuKbQsa6f/EbhDVyvdiGho+D8/Z0KFD44JZTGrzTDKYHTRoUKzv3GxxnGsnopBjMLkNFxqC0nbbbRejkxG+mcwj6jAZWGMzJp100q6f5P+U4knaueeeG8VmxKO0NgQtfQ3tRj22g2eDH74X09Kod7zDDjt0+1wySdRMO4d9IKIV+8TEdZJNBZe99torZkFQ5qpSY2xCliWleShRUt7IvlpkkUXCYostlsosTMaC3C/Jd0g9907etyGyfbPNNov+Ic9H3q+3ketL7hOydTs5UaXgXG5p/H9uCKRVzMoN4AJcSFrvoU6eFwIQYhVlNYhGbKQhlFMChMXKPv7440Y+2rZtO8m2bRfpgQpLAHHnmmuuCQ888EDTGfDsEPFEiQxqNTMwStrtt98elllmmSgaJwucInBR6oMIKCKjyIYgcpHP4xyXNhYhojYj0ZalE2Cl23Tqb21Gp8h73GYTQNhlooiyNiwgyPNGpiDRwm+99VazDxcnnQkMueSSSwJ1m5MILPwMFmMlmnPLLbeMx2aynYlqasSSKUVkZfJDORD+pmRX0hCs55lnnnDaaaclL6Xqt3YjVd3hyfSAAN/FPLdENdd6Lq+++uquyeMeHGa8j/DsMPFMNiJZGEz4Jo0SPIjFiNyIy+XPGefMWAQ/gxJY5Q2hmghpspY6KdCVnxf/L7+WStsU9TXWA2EiwZZOAgrO6ewXz0oCEpBAaglQ55pFOXDqSiOYa50wtVmJUCLtLqm/WGt735OABFpLoJ2DFzIxhg0bFqOKiDysFO1UbVEv0uwpp0GpDbJPkqjn1tJx7xKQQLVnstVksE2Iz5TiobTGlVdeWfch+SwRj9SNZ0HlpA583TtwQwlIoFsC7fQfuj2Zkg2Y9GZBdYJiWI+ltFU659LXqNmMUM04hQzO0vdK9+Pf6SOw++67x35L35l5RhBQcPY+kIAEJCCBhgggHp144okxfYn6zpXEo/IdEtFMhCP1x9KwSFL5+fl/CUigtQRGjx4dFx2jPiypuPU2FiwjM6Jaimy9+3E7CUggWwSo24zgTOmdevwMro7J7T333DMKzpTjsElAAsUiQG13ymKsttpqMeuq3qun5BiBNGR22LJFQME53f2l4Jzu/vHsJCABCaSSAAIytbKIJuguCoD3k5rQnVwlN5UgPSkJFIQA9UopncGCgPfdd19ddfKxG0sttVRYZ511YvmNgqDyMiUggRBiSjx136kLT63jelLcybqi/M6uu+4a16EQpAQkUCwCTGgfeuihYcoppwwPP/xwnITqjgBjGbKoNt9882hrutve99NFQME5Xf1RfjYKzuVE/L8EJCABCdRFgNT27sTmZEdsV89gMdne3xKQQP4IUL+Z+onUVqzHHlDnmcUFyaSoZ/v8EfOKJFBsAtRzpwY8k9X1lNOhDjU2JisLuRa7d716CbSGwBtvvBHGjBkTy/7VYzeo7XzHHXfUPbHVmrN2rz0loODcU3Lt+ZyCc3s4exQJSEACEpCABCRQeAIIx/zUM1nFQJEUeZsEJFBcAtiLekQjCGkzinufeOUSKCWQ+Bqlr1X7W7tRjUw2XldwTnc/KTinu388OwlIQAISkIAEJCABCUhAAhKQgAQkIAEJSKCEgIJzCYwU/qngnMJO8ZQkIAEJSEACEpCABCQgAQlIQAISkIAEJCCBygQUnCtzScurCs5p6QnPQwISkIAEJCABCUhAAhKQgAQkIAEJSEACEuiWgIJzt4g6uoGCc0fxe3AJSEACEpCABCQgAQlIQAISkIAEJCABCUigEQIKzo3Qav+2Cs7tZ+4RJSABCUhAAhKQgAQkIAEJSEACEpCABCQggR4SUHDuIbg2fUzBuU2gPYwEJCABCUhAAhKQgAQkIAEJSEACEpCABCTQewIKzr1n2Mo9KDi3kq77loAEJCABCUhAAhKQgAQkIAEJSEACEpCABJpKQMG5qTibvjMF56YjdYcSkIAEJCABCUhAAhKQgAQkIAEJSEACEpBAqwgoOLeKbHP2q+DcHI7uRQISkIAEJCABCUhAAhKQgAQkIAEJSEACEmgDAQXnNkDuxSEUnHsBz49KQAISkIAEJCABCUhAAhKQgAQkIAEJSEAC7SWg4Nxe3o0eTcG5UWJuLwEJSEACEpCABCQgAQlIQAISkIAEJCABCXSMgIJzx9DXdWAF57owuZEEJCABCUhAAhKQgAQkIAEJSEACEpCABCSQBgIKzmnohernoOBcnY3vSEACEpCABCQgAQlIQAISkIAEJCABCUhAAikjoOCcsg4pOx0F5zIg/lcCEpCABCQgAQlIQAISkIAEJCABCUhAAhJILwEF5/T2DWem4Jzu/vHsJCABCUhAAhKQgAQkIAEJSEACEpCABCQggRICCs4lMFL4p4JzCjvFU5KABCQgAQlIQAISkIAEJCABCUhAAhKQgAQqE1BwrswlLa8qOKelJzwPCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIoFsCCs7dIuroBgrOHcXvwSUgAQlIQAISkIAEJCABCUhAAhKQgAQkIIFGCCg4N0Kr/dsqOLefuUeUgAQkIAEJSEACEpCABCQgAQlIQAISkIAEekhAwbmH4Nr0MQXnNoH2MBKQgAQkIAEJSEACEpCABCQgAQlIQAISkEDvCSg4955hK/eg4NxKuu5bAhKQgAQkIAEJSEACEpCABCQgAQlIQAISaCoBBeem4mz6zhScm47UHUpAAhKQgAQkIAEJSEACEpCABCQgAQlIQAKtIqDg3CqyzdmvgnNzOLoXCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIoA0EFJzbALkXh1Bw7gU8PyoBCUhAAhKQgAQkIAEJSEACEpCABCQgAQm0l4CCc3t5N3o0BedGibm9BCQgAQlIQAISkIAEJCABCUhAAhKQgAQk0DECCs4dQ1/XgRWc68LkRhKQgAQkIAEJSEACEpCABCQgAQlIQAISkEAaCCg4p6EXqp+DgnN1Nr4jAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJpIyAgnPKOqTsdBScy4D4XwlIQAISkIAEJCABCUhAAhKQgAQkIAEJSCC9BBSc09s3nJmCc7r7x7OTgAQkIAEJSEACEpCABCQgAQlIQAISkIAESggoOJfASOGfCs4p7BRPSQISkIAEJCABCUhAAhKQgAQkIAEJSEACEqhMQMG5Mpe0vKrgnJae8DwkIAEJSEACEpCABCQgAQlIQAISkIAEJCCBbgkoOHeLqKMbKDh3FL8Hl4AEJCABCUhAAhKQgAQkIAEJSEACEpCABBohoODcCK32b6vg3H7mHlECEpCABCQgAQlIQAISkIAEJCABCUhAAhLoIQEF5x6Ca9PHFJzbBNrDSEACEpCABCQgAQlIQAISkIAEJCABCUhAAr0noODce4at3IOCcyvpum8JSEACEpCABCQgAQlIQAISkIAEJCABCUigqQRaITh///33TT3HIu9MwbnIve+1S0ACEpCABCQgAQlIQAISkIAEJCABCUggYwSaJTi/9tpr4dFHHw3vvPNOpgg8/fTT4fHHHw/vv/9+Ks9bwTmV3eJJSUACEpCABCQgAQlIQAISkIAEJCABCUhAApUINENw/vDDD8Mee+wRFl988XDRRRdVOkwqX/v666/DmmuuGVZeeeVw8803p/IcFZxT2S2elAQkIAEJSEACEpCABCQgAQlIQAISkIAEJFCJQG8F5y+++CJcdtllYYYZZggzzzxzGDlyZKXDpO61zz77LBxzzDGhb9++YZlllgl//vOfU3eOnJCCcyq7xZOSgAQkIAEJSEACEpCABCQgAQlIQAISkIAEKhHoqeB83XXXhd122y0su+yyYcCAAaFPnz5hpplmSr3gfPXVV4d11lknLLXUUqFfv37xvIcOHRpuuummSng6/pqCc8e7wBOQgAQkIAEJSEACEpCABCQgAQlIQAISkIAE6iXQU8F5xIgRYb311gsLLrhgmHfeecNUU00VZpttttQLzhdccEE85/nnnz8ssMACUXBeYYUVjHCu94ZxOwlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEAC1Qj0VHBmob0rr7wyXHrppeH8888PCy+8cBg4cGDqazg/9thj8Xwp/YH4POuss8ZoZ0tqVLtDfF0CEpCABCQgAQlIQAISkIAEJCABCUhAAhKQQJ0Eeio4l+6eOs7rrrtumHvuucOFF15Y+lbVv1mw77///W+glnK1H97/6quvwrfffhu+/PLLqtsln//8888D+623se/BgweHxRZbzAjneqG5nQQkIAEJSEACEpCABCQgAQlIQAISkIAEJCCBagSaITh/8sknYe21125IcL7hhhvCdtttF4YNG1b1Z4cddogLEj711FPh7LPPDnvssUfYddddK26/8847hwMPPDBce+214X//+1+1yx3ndQRtxGYF53Gw+B8JSEACEpCABCQgAQlIQAISkIAEJCABCUhAAj0j0AzB+eOPP25YcCYSeokllggrrbRS1Z8hQ4aE0047LTz00ENh+PDhYdVVVw0s8FfpM8stt1zYeOONY5mMeqOcP/30UwXnnt02fkoCEpCABCQgAQlIQAISkIAEJCABCUhAAhKQwPgEOiU4P/vsszF6mTrQ1X4uu+yyQK3of/3rX+Evf/lLuOqqq8Lo0aMrbj9q1KhA1PTTTz8dS3CMf6Xjv6LgPD4TX5GABCQgAQlIQAISkIAEJCABCUhAAhKQgAQk0GMCnRKce3zCTfyggnMTYborCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAKdEpxfeOGFGLFMVHK1n2uuuSZQv/m9994Ljz76aLjxxhvD9ddfX3H76667Ltx6663h+eefN8LZ21oCEpCABCQgAQlIQAISkIAEJCABCUhAAhKQQCcIdEpwPuqoo0KfPn3ChBNOWPWH9/fcc89w8803hw033DBMNtlkVT/DtgMGDAiHHnpo+PLLL+tCaYRzXZjcSAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpBAfQQ6JTg/+eSTYcSIEeHSSy+t+sPCgo888kh45513wj333BMuv/zycMkll1TcfuTIkeHqq6+OEdHffvttXRev4FwXJjeSgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJFAfgWYIzh99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GQYPHhz+9re/peEUPYf/T0DB2VtBAhKQgAQkIAEJSEACEpCABCQgAQlIQAISSDWBzz//PBx11FGxfMYiiywSZp555nDooYfG8hpvvPFGqs+9aCen4Fy0Hvd6JSABCUhAAhKQgAQkIAEJSEACEpCABCSQMQKUzHj88cfDJptsEiabbLIw0UQTxTrOd9xxR/jiiy8ydjX5Pl0F53z3r1cnAQlIQAISkIAEJCABCUhAAhKQgAQkIIHcENhggw1Cnz594s8CCywQPvzww9xcW14uRME5Lz3pdUhAAhKQgAQkIAEJSEACEpCABCQgAQlIIOcETjnllDD77LOHaaaZJuy7777hyy+/zPkVZ+/yFJyz12eesQQkIAEJSEACEpCABCQgAQlIQAISkIAECkngiSeeCMsvv3yYaaaZAuU0vv3220JySPNFKzinuXc8NwlIQAISkIAEJCCY0h1aAAAgAElEQVQBCUhAAhKQgAQkIAEJSKCLAPWaL7nkkkCk88cffxy+//77rvf8Ix0EFJzT0Q+eRQsIaHBaALVgu/QeKliHh6CjUrwu94ol0CsCfk/0Cp8flkAhCWg3CtntXrQEekxAm1EdHVHNLhRYnU+n32lYcH755ZcDP0899VR4+umnU/uTnN9LL71kaH2n77IOHv+DDz5I7T2a5uenqOeW2I3nn38+fP311x28cz10Jwl88skn4ZlnntF2pPg7Pi02KrEZ+EXfffddJ29bj91BAu+//772QntR9z2Q2I0XX3wxfPPNNx28cz10Jwl89NFH+hrajbrsBjaDn1dffbWTt6zH7jCB9957L94vyXdIWnzhTp/Hs88+G5577rm6nqVOn2s7j5/cJ53WQxsWnPv169e1EmSyImSaf1NAHNHRVkwCp59+eqbu1zQ/S0U6twkmmCC88sorxXxovOowatQo7cb/X/G5SM99b66V2nGfffaZT09BCfzqV7/SZmgzGr4HJptssvDOO+8U9Knxss8///yG75nefE/52T6Z5z3XXHMZSFdg07H//vtn/h7WDrXfDqHffvjhhx17cnokOI8YMSL885//jDMJzCak8eett94KfJH/6Ec/CkSe2IpJgEFg//79Y1T+Cy+8kMp7NY3PT1HP6Y033gjXXntt/DLnfrEVk8Af//jHgBDALDSzwkV9Hrzu7v0bfCHqxk0++eQKzsU0F/Gqf/nLX4aBAweG119/PZAh47PT/bNTZEZvvvlmGDlyZPQ1sCG2YhL47W9/G/r27RvwN4l2L/Iz4bXXtplvv/12OOqoo8J0002n4FxMcxGveqeddgoLLbRQYLzqM1P7mZHPc1GvPfvss8NEE03U0QDcHgnODz74YCYe9b/85S8RsIJzJrqrJSd5zDHHhLnnnrsl+3an+SRAuhqzrwrO+ezfeq7qD3/4Q3Tq69nWbSRw4403himmmELBucC3wn777RcGDx5cYAJeeqMEHn/88UA2lYJzo+Tysz2TlbPPPnt+LsgraSmBSy+9VMG5pYTTv/Mdd9wxrLTSSuk/Uc8wNQTuuuuuMMkkk2RPcObEs9Buv/12BecsdFQLz5EIZ9KPbBKolwBRrQrO9dLK53ZEOJN+ZG3NfPZvs6/qT3/6U5hyyikVnJsNNkP7I8J5kUUWydAZe6qdJkBQjIJzp3uhs8cnwnnWWWft7El49MwQIBhi+umnN8I5Mz3W/BP9+c9/HpZffvnm79g95pbAn//8ZwXnVvaugnMr6WZj3wrO2einNJ2lgnOaeqMz56Lg3BnuWT2qgnNWe655563g3DyWRdmTgnNRerr6dSo4V2fjO+MTUHAen0nRXlFwLlqP9/56FZx7z7DmHhSca+IpxJsKzoXo5qZepIJzU3FmcmcKzpnsto6dtIJzx9Cn5sAKzqnpisyciIJzZrqqZSeq4NwytLncsYJzLru1oYtScG4IlxuHEBScW3wbKDi3GHAGdq/gnIFOStkpKjinrEM6cDoKzh2AnuFDKjhnuPOadOoKzk0CWaDdKDgXqLOrXKqCcxUwvlyRgIJzRSyFelHBuVDd3ZSLVXBuCsbqO1Fwrs6mKO8oOBelp5t3nQrOzWOZ1T0pOGe15zpz3grOneGepqMqOKepN7JxLgrO2einVp6lgnMr6eZv3wrO+evTRq9IwblRYm6v4Nzie0DBucWAM7B7BecMdFLKTlHBOWUd0oHTUXDuAPQMH1LBOcOd16RTV3BuEsgC7UbBuUCdXeVSFZyrgPHligQUnCtiKdSLCs6F6u6mXKyCc1MwVt+JgnN1NkV5R8G5KD3dvOtUcG4ey6zuScE5qz3XmfNWcO4M9zQdVcE5Tb2RjXNRcM5GP7XyLBWcW0k3f/tWcM5fnzZ6RQrOjRJzewXnFt8DCs4tBpyB3Ss4Z6CTUnaKCs4p65AOnI6CcwegZ/iQCs4Z7rwmnbqCc5NAFmg3Cs4F6uwql6rgXAWML1ckoOBcEUuhXlRwLlR3N+ViFZybgrH6ThScq7MpyjsKzkXp6eZdp4Jz81hmdU8Kzlntuc6ct4JzZ7in6agKzmnqjWyci4JzNvqplWep4NxKuvnbt4Jz/vq00StScG6UmNsrOLf4HlBwbjHgDOxewTkDnZSyU1RwTlmHdOB0FJw7AD3Dh1RwznDnNenUFZybBLJAu1FwLlBnV7lUBecqYHy5IgEF54pYCvWignOhurspF6vg3BSM1Xei4FydTVHeUXBuT09///337TlQG46i4NwGyCk/hIJz+joozTZGwTl990u7z0jBud3Euz9emm0GZ6/g3H0f5n0LBef09XC9dqPe7Zp5hQrOzaSZzX0pOGez3zp51grOLaav4NxiwBnYfdoF5//973/hyy+/DN9++21qaX7zzTfhvffeC//617/CO++8M94P51/a2PbDDz8MfK68se27774b3nrrrfDGG2+E//u//wuffvppqMdx++STT8Kbb74Z+P3dd9+V77pp/1dwbhrKzO4oi4Izz8RXX30Vvv7667qep7R0DufLc/2f//wnYA/L27///e9oc8pf5/9cL5/Dnvzzn/8M77//fvjiiy8qbdrS1xScW4o3EzvPouCM38F3Ms9gmhvnmTzn+A3Js17Jx+A68CvYvrxhXz744IPw9ttvR/+D/fD/Tl2/gnN5DxXv/1kUnEvtRj2+e6d6lXP76KOPup53/AT8iWrPO2MTfmo1xh+Mg9hvJ5qCcyeop+uYeRWcE7uCX5+Vhn6BNoIfkeam4Nzi3lFwbjHgDOw+zYIzxhVxE0PAAIn/p7HhpP30pz8Na6+9dlhzzTXDWmut1fWzxhprxCid5Lxx8LbddttwzDHHhJdffjl5Of7GybvpppvCxhtvHBZccMEwaNCgsNJKK4XTTz+9WyePL6CTTz45fuacc86JIvU4O2/ifxScmwgzo7vKouDMRM9tt90WHnroofD5559ngjw2j/Odc845w7777huef/758c57xx13DNiZ8oajd+edd4bdd989LLLIImHw4MFh1113Dddee23bRWcF5/LeKd7/syg4v/7669FmPPbYYxUniNPQi4jKL774Yhg2bFhYdNFFw8CBA+Ozvttuu4Unn3yy4iTV8ssvH37xi1+Md/qPP/54oJ+WWWaZ8OMf/zjuj/8/+OCD423bjhcUnNtBOd3HyKLgzHgFX+Phhx+OE1ZpJMxYBPH48MMPD8stt1wcOyy00EJhm222iWOW8kAZrmHTTTcNm222Wc3LOeWUU8Lqq68eTjjhhJrbtepNBedWkc3OfvMqODOZfOutt46jKaS9V84999yohxxyyCGpPlUF5xZ3j4JziwFnYPdpFpyZETv00EMDTtCYMWNitF4akT766KNhiimmCPPOO29YccUVo+iMw8UPQhDvI0qfeeaZAWds2WWXDT/72c/C/vvvHw477LDAoJZ27LHHhplmmilMN910YcMNNwybbLJJmG222cKUU04ZBe1aEQMjRoyIDuO0004bj0GUQauagnOryGZnv1kUnBFfF1988bDzzjvHCMAs0H7mmWeiPenTp0/YaaedAv+nkSGx1157Bfph6NChYb755gujRo2KrxENTbvkkkuiaIRNwQ5hm2adddYw99xzx20RpNvVFJzbRTq9x8mi4HzhhRdGm7HffvuFzz77LJVwEcOZUMIHwRasv/76ccIav4FJpvvuuy+e96uvvhoQoUeOHBnmmmuusNpqq8W/6Rcim2+88caw8sorB3yIpZdeOmy11VZd+0Ggvuuuu6pGPrYKjIJzq8hmZ79ZFJxvuOGGaDeY7CViOI3ttddeCyussEK0G9iJLbbYIqyyyiphsskmi5NW+BM0Juq5josuuigsscQS0aZcccUVccIKYb20MTHFvhjDEFTTiabg3Anq6TpmXgXn0aNHx+/mLbfcMl3A///ZlGdz/P3vf48+CT7FPvvsk8pzTk5KwTkh0aLfCs4tApuh3aZZcCYKEUdn8sknDzfffHMqqRJddPXVVwcEIQRkHM177rkn3HHHHTG6EJHr448/jilr5513XoxunmGGGaKQzIAP/ojRDKwQw3gPkf2BBx4IDCRPPfXUKLjjwHGcSunwL7zwQoyK5hzYDlE7jYJz+ZdRKjvUk6qLQFYF5379+sXJnErp5HVdeBs3ovzFSSedFCaddNJoXxDKE8EZm3LEEUfEiaj+/fuHaaaZJtqW4cOHR3tz7733xuwIRCcG7PyfwSBRBhNPPHEcaBIV2a6m4Nwu0uk9ThYFZ6Jz+vbtG3bYYYdUgiVVFR+C734G2WRIPfHEE1EcImqR10888cToNyAO0QdEKCJOM/lEdgQT3dia7bffPkw11VRxgouxAdHO+F0I2NgM9o/daWfrqeCsr9HOXmrtsbIoOJNFhN3YfPPNUzlRhQh+xhlnRPtAZuall14asyGIntxll13i69ttt1145ZVX4jOPX4HIxfhi+umnD7yH/4E9wCdhnIJ/QjDNBBNMEKaeeupol1p7Z1Teu4JzZS5FejVNgnNvv4tKP08QycwzzxyDR7rrz9LPJdtWei15r1m/n3322XDWWWfFjCsmwPEdmMRi0j7NTcG5xb3TiOBMTTeENJxZoqts+SDQCsGZaJl//OMfUXRlIMP9cvfdd4drrrmm697hNQYTvMasHfdiEukLWaJxrrvuulimgkHQkUceGVPB+RyRvqSZP/LII+NE3FCjlahojoUIS4kKBFq2Y6YNJ4tjcCy24T1eJwKZgRsC7/XXXx+YvUc4JpK3OwPNPillgZOFSFytIUyzf6IIcNgYCFIug+gjhHUGfThp66233ji1jmCJs8f2GOzyOkhcw5577hk5EbWEk5sWwZnrgiEsk6jLanx8PVsE2ik4Uy7m/vvvD88991wURvh9yy23xO8i0j55Rl966aWYBcGzi93gmU6elf/+97+xFAU2BMGZQREZAZS0YZvEJlSKRGI/PNeINRyHySEi/ahtSsQj53XVVVdF28J3JLaGe56/EXmxbUQK8d2J7erOnpTeBZwjJXqIQuL5LxWcsQsIQjh0iEc890QlYhdppMliT8ojIbBz2AtSY9MqOMMY+0w5gHYLXKX8/bu5BNopOPPM85wSxUeEHvcSNoPBEH4CvgF/I9Befvnl8fdTTz3VNVGLj8FnEF+wGUwO85yT0spkFc8Ok8nlE7uUwPnrX/8aU+nZjv9zDkxAs09e47ywUZwjfg42BpvGfY9vgg278sor4wRRd1kI+A9EJU444YTRHiQ9hs0ko+pHP/pRLKODcMR181xRrgufCpuBmIy94lrJ0Jp99tnjsZP98BsxCp9ljjnmiCxL32v13/UKzrDkGvA1qB9ryw+BdgrO+BN8b/N8M3ZBTGXShXsLm8HzzNgCW5KME0rHxDyv2JUDDzwwPl98PyMSYQN49nnesQWJb1LaS3/729/i9zff0fgJ2BpsDGUvsDOcF0En+BH40/ganB++BjYFPwN/A5vA92YtXwPfgWcfvwJbVNrwpQYMGBCzJjgejXNbaqmlYrYldoNsKcYzNMZM66yzTvwMk99MkBM4w9iyE61ewRk+jFOxidjAclveiXP3mM0hkCbBmSviu59nCB+DZx/7Qskdvt9o3Is8d4iePMd8j1GOJ/F/sT0815TVm3HGGcPCCy8c7QH6BRoAn2WMwbik9LlnDI6NwI5wDjTsBf9nvMP2+Cv8Hx+BcQ52hrER9g9/hPPBH+FcsU3dNT5DWVCys8muxB7gQyk4d0cuhD7dbzLuFoDF+GehcWNMNNFE8cYqP1++WDHAOG98seG88gV13HHHVawjWf55/58NAq0QnHGIqCNMDeKLL744DuhI+SbaDscNI4qYQp1AjCeDn3nmmSc6aThriLPMvpPGyWcYNBGNw4AHQQXDjYNDyYlSkYhBFsaTARWz7xh2DCrGj+id3//+9+Hggw+OKeWrrrpqvLepacpgkhl6tqNuIeIxEYNbb711/GLgWajWMMzUQuQ54tgYaZxBDDccGOQlDUOPAMQPgztSVnFeaQhEMOC8y1sSiUA0EvtPGl9COEswPP744+M+mEnspODMlx/c+QLEEUVkwFFNa4R6wtLfjRFol+CM84RghC2gRin2hGd5lllmCQcccEB8fnCoyITg+eH+Z9Cz7rrrxnITiMLci4isfDcjzGBv+Dy2j6jf3/3ud9G2EN1T6qxBhGcVW4HDxbPM8bEvTDJxT5M+yj559hmAUgqHGoh8TzIoQwxmULfAAgsE0vMTp6872jh/2DjEZga3HIPnn2tNGt/PlO3hOBtttFGsw8j+eR3byDUSWcxrDHbhiP3gNwPgdpYIqBXhnPga2EzsO7aYiTeiu+FgyweBdgnOPMMM6Oaff/5w9NFHBzKLkgHQr3/96+gTMHgjSo/vewZEDI541hFYEJ0QkYhOZNKGZ4/f1EYm4pmB11FHHRXtDQPIUpvBAI+yFDyPDNz4P74zNdgRg0hLxy8ixRTx6bTTTgsbbLBBjB4mBZ0sJyKC8EGYGEvOp9odwCCTySOErWRwyrb8TekM9oXt41g0/CHqPHNMhGquEb8JHhwbnwThu7RRagP7hdBUz4Cz9LO9/buW4IyvgV3DhyJwYe+9946+Btxt+SHQLsGZ5xgfnbIRiCOMURgD8D1K1iHfRYisTEIR3IHdINqQZx1RmWediSNKX/GsJL4GYxe+y5i45lqwI0xUl9oNeotnkvVfEJsYAyGcMk5gLMX9/ZOf/CQeE9vEueFr4Avha2Ar8H3wNXi+L7vssprruDCGYjzPuAxhu7QxruD6+MHfoeHT44MxVsK3widikofGmI5z5dqwZ9gRBOs0ltSAK7YRXwOfjewPfA3OG/HZlg8CaROcsRvcZ9gGxgGUtuL5wi/BD+eZ3mOPPaLOkWQf8awxpsBO4MPj5zO2QWvA9vCcU6aCe5mxDGW1mBwmGCVp+PmI1JTRSyaIEJDxR3i2sR1LLrlkGDJkSDj//PPjeIH/cy7oJeyTDHPsCs81/k8tPYTjss4M14gOge9DphU21JIaSa9U/11YwRmHHSPMzYKgRaQVA3McVlt+CLRCcEbUQABFLMYoMhvHwAdDxmAG0Zf3mP1CKGIgSp1mhGVqjTLJgVHEOCMyY2ARLTHOiEfMxrFfjGRpNAsDRaIHEJQYZCFG40SwHcIQ0Tscl31S/gIniohjjCkOIgNB6qIy6GIAiuHni4tBTbXGLCTiDgNSzo/z4nnBOCOIlT4vGH8cRGbTmezBeFObmoYzypcL0U6ljXPE+YUfEZqlghUOMFGNDBxxdBnMwqpTgjMON84ywhhfpnDm3Bk0Js5p6bX5d3YJtFNw5hln4JUshsXzilDEoIuBFQM1BBoGQTxzPIeIy0Tl8T6TWDg+2AEcNZw2tuV5YeCF08U+iWAsd6Zw8hiUcSwEZ1LFeL4Rt7FnPG8I0DhZMOE8sTEcB7uAHeJYbIfIVO/iWzxDiy22WPzOxf7w/O+www5dgjPnyfOPHWOCGyEaJxFhiWMgQGHzGFSxeA/CEgNFnD6iOksnwtpxF1YTnHGmsV0MyOHJdwLnibPbbnGrHRyKfIx2Cc4w5pln0pjvY55Vnm+eUwTcCy64IAo0PKNM6hx00EFRSGFgxbPORCnPE2I1Quskk0wSBRQEGqIB+T7DT+B1JkhKbQbfcxwPf4WJIgaT+FiIQfgE7I9nGb+ayEWOgV37f+3d3cs1VfkH8F9FVCf2dhKRVgSVIgZaUUHvhlHai1lWSklZgUZBmpkZQmZFYYFpkQeFZXUSRvWjl4NOhISixKAgqIMg+gM6qrP7x2f4XQ/LaWa/PPfM3rPv57vgfvZ+9p5Zs+a7Z13rur7Xy/I9HQIJTicyF0rOrcoOMo+RKIzMlsAy75FQ+ijSyHEIcnICSSvCyr3TyehJdC76Ez2qbQxRWDI+Wwd/e8xc78cIZzgj4WzADD/6hqhSvwc9JO3kILBLwtlco/tbxxG85o9nC5HDgcM+QSRz9HrekEjmBoKVU5rc4Yy2dpMv1jO2sywKz6bAEroK2dDKDb8W/YStxA4wn903u4TcspaTG/qVkUWfQSKxUcgtdgxdw7rPjhJhjAgea3QqjiRjbiN7yQjRz4h0AUEVKEJe0B3cgwA0QTbGUfdQ+gQZxMZBaHHK7aONRTgbI9uL0xGO7hFpT29rA3n2MeZcc1oElkY4s+/NbfMY+WrecogLMDPfrPfmt/mLH1H2ih2Bs2BzkAfWbc4w55rf7AEywrPL2crmwSm0hDMeTwCMvo1BQwaTa+wSNgnbxDygD9AV8CCle9DF2fClj9ABOHRr3g/9amSAuVb6CFlBHgxtUjx0/r4+S0mNmZHvRzgzVi1kDGVRGh4QBjshLVoz7eQhQDkiDKZsBOAdd9zREb+UM0YUA0g0MAWGAkVwUniQKTzOPHyiCShYPPrIBkoOg4JCx+hxvuY8wlsfQ4QzQU04M4547xl6lD+KIyUIUeM8ypXoBMKVAsID6LrGw9niuhYFHsSxRnF0TAloyiUC2KJiHBRSaS+ayAHGnQVBdI45Vcqe/0vHE23UNvMRweWPsleLiUgMxipyXb04DUmzS8IZjoxTvykvKgP3yiuv7MgjJBjc3FfayUMAOWGumkNzNkqLuYqoMcc4pjg+kZTkDHLG3KBgmuvmrnlFXpTRROnSkMaOZTSSR8aOaDGP9I0U7d8PBZDxySihRFH+ENaOR3R7zjnBNNcsZVLkDBLa/BY9SIF0DpJ7FSFifjMCRUVZf80fxBSFsSWc4UJWkFfmoHHDyfkUR4QW+UOpRLzDjQPIZ+4Hhrtc0/uEM9lOWSZ/yUvyQwQog711qnXA5p8TgYAoQev2LprniDFlzskSYEjVum9NRiohjET7VwYA3cDcFmVILzHffca4E0VM5jC09C3bwlprTW6NL0Qog42B1ieczWFOdLIHWaNxItMzyA3Gos/JMKS3eYHUpqf39YIxDI2XfuU+6AbkEPmhkRnkiXXZmL0nP+gl5Ab9g2wqQ9E5jEu2ACNX/fd1JT7GxnW6nyOcEWjGCVsObWQ/XYMhTYYYI9nXJ8pP95o5b1kImBcI3bmb5x7hzJlNbiCH6NTWKnICkYpANvfp36VrfO1rX+s+pytUtDA9gdxA2AgiMd/IH3NI33TmVm64N3aKdRo5bT4KHEEiOR6h7DkvG8g16TJknIwgOghdg6yglziHHjE2J+gLnGHmFDlXTYAM8sn5CGb3renHHCOHyAvvvbayovqwIfqSCGfOQ3IQLmSqoATBBfQzv2HayUOA/U8HXkoTBMKZbT1ny+AXyBCcG9uFLcUhb17RR3AXAkXo7J5Z658/MoEstP7RUfxpIqbJAtwJ2VGN7YNXwcPQOzS6kPntz1wli+gIgttkarA9yB3EN12BDECKq/XOKW4M5v6mjW4fwnkztE58hDMl2KJDcaMkW2wpeB5GDzvjnKGrfqRXSp4I0PwdPgaEDeOI12rKhggS4czz7pkSiVINuYMAoUAhewg6Ao2AFQnE+BJJxLAh1BgXhB/vUzXGmDFvEuFMAURMe54JPkK+bRRChiMvXtuQRPq3EKyKMEI4EcTmCeVUqpzF5e677+4WGPPL4rKKZGqvW+8tPKL+eDht1EFRbfuwaDAszctadCw27oUCOme6PAcUPCm30uYQWGXcwwveCDblSkRqWlA5HSIzDl9m+A3JDZGDFJM+QVvP71SvDBpzgbLmmaNY1TxAziBUEcsI4ZIlZIdIPUQJBc97TWaEY5FHRcLouyWc+0ZgRTi3hLP5yMmEwG6b+U8ZFHHXZjYwBBmgxs/BRz6ONQal6EikF9miGSM5AndG0rpG3urD9azn5igDC+kLP8434xfdvavm2ggwMp2cJ1uRfnQNEV8UUvfsHqNrnAw50cp7v6u1bFdGYBHO5o39EYoYEfVnvaI/eCYZWWQBHVhkIcczfQPJpJnTZAaiuGQdcgfppO8hwlnkYZ9wJofcu+yCtiGcrZ2+a8lcc97eDeYHAqoc0+25Q+8RK1LfySDzH8lC7m1KWFefSCgywz4TjEyOdLKnLx/r+LleGcnug17FAIat8fiMHIYzXbLVNQQptM9e3h+uPCE3rFXm7NytCGdyyvPFJihixZyXTWheiXRmr7BbzFlz2vxl79D9NZkQ5IZnrxyo7Ah6/FiEM71ZVHURzmxyzzpdy2dtY1NwKiGvihT2PXnGbjB+Noj/b9LMd4Q2+965yPPSmzY5vz0GT7BvwhkZ7/ckM+ga9DK4k6dsXpktni1ynSMBKRc5cbhyov3t/K7lOG6fy32+L8LZ3BJhXza7oA96sGdSZD55Qh9hIyiXZS1nZ3G0auQAXk65jbZZ/9jeYxHOeIEinAW9GIfrcopXo9/I5DB3kNwly+p7c4k8klU55siqY9tX0dchnFtExt+fEYQzckpoP2WOB7cIZ+8tggxBxJxXDzojP3+Hj4Hf029MoZmyFeFMyBFOFSFMoKmTiHjwXEnn5In0x+uMtHWOaB/ePM+lCEaCVBRvCblVhDPjSv9tSQ3XQrK0xLf7pZAwpAhehFLblMpAfIvsqaiF9vt6jzSXpiuqsG0UVR5KnkUGUFt7tT2u/949Whhgw6CChUisqsHoeESRLARC3PvCRa1n+LnuKlKrf81t/+9eLFg8o343YxQ56TPYSylG1MEPGS+irCK/IzdOhtxgeJk3RcJs+wxterw5inyhkHneKUvVKGGighBEjBxyxLyn4HBwiBbyTIo81tRoZgSKqjVvNQ6obQlnzzgjpfroOjo66pQ9Y5SKatzVyDHRRgweymaR3fV9vZKTvtc/oqsikBHr5jU5ItJgXUMUic4ie2QclHxwnihNcxEuUuva79b1e5zvW8KZIe/3pNjCxFj8Lsij0jWMMbrG4cuKkvd+V/NUtPEuGsLZPLL2V9kqkT8ieDhhGG3IBvLCn2g+usC2WT0AACAASURBVElFN5aDG2lDRyJfihAWNbSKcB4qqUGnlk7fn/s+Q4YoedM2JBXHsfPM0yKt2mNaGVOfu2+6CH1Gn853n5zEmzTEk9Jf6l6Tn3QQ63cZvJv0MeUxRTjbq4J8JyfoZGQG45cjEine6hr0SAZzPXt5PVw5Qm4gXPzOczfzCSlMn3U9GTfV6PiVOYDQKrlB10DSIsQ9kwgbzRpMbnCGsGU0dsQqwhkx2iecldphA/XrqiOjySrPedvIqCKUkNKb2AGc41UupBxjtalp2/em75dEOCPi6Bqizf0+9A3ylkOebYLXiK5xuPJhSLaTGdZ+ToWlNOQtx5k1qw30oI9zXLOlrNf0kJItMhzZE2xrNoq12TwdmvcCScYIZ3YD+6EIZ4Ey5gJ9p5UrnNLklzVfkFjZH4Uhx71gQePaxm4I4VwIrn898YSzB7EWJREMyCr1qSx+FjoLJ8N62wiJ9dDmiCUgwBtOqE3ZinBm7Ijoq2eHwWcxQP4SsgSk6B5/IpsJOgaF6CMRBKKOtiWcRd1abAhtfXh2GZ0Isj4pTMGkbLh/0U1tE7lEGSHsxwhn5w8ZffqxOIiSouhYFBlM6xp8GHaOtyAwXJFl/bQvi5J7dByCHZEmAohBBnOLhftpIx/WXXub7yvCWTSm3wiRLyqRQo7Mk3IDP8ovHNJOHgKeL/N3V4SzOSrCqPXIU444y8wV8qOVJcgtc488qfrL6whna10/gg9BxphsI5wRHtLfKtK6fl0ZBgxVMqUio3xX0ZOMHaWG+qRTnU8+GTPHrzGLODK/kWTIY8Ylp9I655X7JPMopn6ndg6KeDJOYxFd2c/4qLFM/YpwJksr80ItWQosGYZopsQychn8LXZTjyP97Q8BEbu7Kqlhjpin1iNrkea5UqKqSOWSF6V/kBl0EPNP2S7NXBkjnJEz+m7nl+cbwdGPcCajkNf9Z/uWW27pSn0hsdpmntKdrOcIpCHC2fFkkHXe9+04fMeBRe9RSkxG1CbN2s4h5N7gwVhkFO+rVUkNTkf3yHGH0KJryKJSWkDJAjK2f//7GnOuOy0C5iCScO5WhLP5LjuqMoxc1/pfZb3GdA2kUUUinw7h3C+pgVQ2D5XJ6RM8dGz2AfnWNpkQRSiZG2Xbt8fUe/eLDEeCI9nZZfa/WFX7uc5d9boEwhkxVrocJz1dx2+KaCbfRKUj2vvyeNV95bvDQQBvsKtsqk1QUT+ZA5d9QPfV2E7Wt9rsk03f6iTeW4MFj+DlrG/W8W0JZ9H7LeFMltFH6GPW1WpFOLsm/PrlMGVKmlf4h748qj6GXkM4D6Ey/NkZRThbgDzUHjyLDjJStJb0BN5AUVflrR2GK58eGgJzbhrIWFIrtBoBKxqAQocQFrlH+NYfI5Fxg6j1HEo72YZwZuyJhGZotoQz5wlDt1UgjcnzjhxilJWiWGMtwllfY4SzMRov5YWnsBQcffhOGp4oPmkxFWVV/Q+9iipirErN45kXaTTURG9aMPzBuP4qWrBe+/c01NfpfFaEc6Udu1dkud+Lok3hZLQjCUVAixbvL16nc92csxwEKC0Uk10RzuYogwEJWw35jHA2t6V/kiOezXoV7Wd+ltElIh8B3Y9wZtCZS0OEM+LWc1yktdIY5qd6tP0mnY1CKcKuNWQ2JZxlbtS8NofH5rXshlXNpj5SYo2bA6uVS5xXCCx9y6LoR2mv6vc43/UJ59I1yAUGISIe1tYG0Yqer/rdjnPdnLscBHa5aWARzoyt2kPBGqX2PPKKPstJW/KiZIbzrGtF8JrvfcLZ9yKKkEGilax/1cx1MoaRaM2nk9CxzGuRyv2GcDZPrZlt25RwJrNqAzPXbpu5xWmOIJM5sa6ZhyIyjRVhLqW371Rb18fU39emgeUYK11DMIHfkj4JP+QbA9o9bGMMTz3e9Dc9AohXUc5zN2sShyd7V3Rkm1JubeZ4RlgKHil5Ua+la1QJC9HR5EYb4WytlZZubae7tOuyexMBSX/gJCar3LfAHGRTvyGc6djqLbdtG8KZ41sGFDKKHkXHcV04HKeRZeYkvWofrb9poPvxR5bRjRBn7hfJjmAXNVryfh/jzTWnR0DQFbt7KU10sewF6ypZUU22FD1CMIl5jzMgU0qu0Ed8VkEq5ug2hLNrKaslYKU2DTQ/rPF07jYorSWcZXD1137zhkM+hHP9etO/nlGEcwsfIoFSZ0Iw5pHPDHWvJkDayUBgTsKZYiU6oRoFS+kWkZHSPPtNhJ+oFekjjCdKAMFHyElxLUXIe1HQlNASxPoSUStFlXAVMVcRzghnx/ejjPVXhLPNMdu2CeHseBFTxnH77bc/imSiuFE6EdZqxorCGWvGYcNCZSgQa+ZYKa5D55iPFE4pt6Kg/ImeojwhkqTAwsHcnaP1Cef2Gn4D5DvFTgSqutnuS9Rl2slBYB+EM6VMbfVq1iHp1BSwfso3goJCJaPC86qRG4xA87E8+xyojqOAIYwrAtfxHD6MOun3yCJkRxHOiKJ+Oy7hzAEnKkkqrPltXotoNpfNa4QsR1ql+/evX/+nOCLaEOPkUtvcN+LP/bpOP22uPXbK933Cue2brKT4IvLICfX/6RrGN+Z0a8/P+8NAYB+Es3TSitijfyAkOXURR60sgSDnFELIs1eBFdZ3MoMBW04km3/RLxA15I7nt5p1HMGrFrRnuSWch6KMj0s4I0s4tcko+k7bEK+IFVkT5Na6du2113YRTBxau3JErRtTn3Buj0euIQiR/rD1m9A1nJN2chDYB+FMh67MCEiSDewIpHM/eMS6zWZBUtemfpwhiGu1ZWuNFVHL/rH2mrdtEAZdnR2hf+eSKUU4q8veb8clnNkX9957b5cpyebq20b9623z/6URzu3Y4cpmlM2N9JdlRd6zn8iStJOBwFIJZ3pHSzjTM8x7doYMv7ZZzzltOFVLFrFD1Jjv13BmF3BOieRvm2Avx+NiyoFWhDNHVqszhHD+3478X8W9tNjO8f6MJZz7YFpUKdeUudYr0j8u/z8sBOYmnC3k1RA2BKB0SFFACBWkkYWewoMwZRyJwCP8kJcEKcOOd60EJm+haEfEMkJGH55PJBjDi0InbWoXhDOlzTh49BGsoqGlslo8pOMbCwK57y0sTLzCxcIihcbuswhliquFqSKwKLzIIsfqS/Sf+6s/DiILiLHASs3nfgRFe83jvF9FOLf9chowBv2epYi33+f94SKwBMKZo8Y8N284jmQwIJqRlAwyqeRKNpSDVISzlDCGo4gl0b6i8pEV5qmoR/OWYUjBU6eZEkcZ3AXhzBgynprTXs0h0Q5koJprIryL+Fr19Lh/slQaX5WqICMRaGQkpx85s6u2inDuj4Hs8vuIyIBH2slAYB+EM2OtCGcoImE5nDixRfeZ59ZrhI+9Ejh8Ea5ldCBqzRWOLRHRdJLWSYXQLrnDYY68IEs4h4pwth77zDrYb8clnMkDY9M/fJUUM89FdSPBOKroSj4fa3QK6zRZIeqPw8ccRMqU/uEV0T53Rkt/jEU4k8mrGvKZfkhOj2WkrTo/3y0XgX0QzjIDiuSBDF1a1iFdQwYOZxW5YU5w6tL/ObeLtBRsQsbIEEZQez6t57IYzVVygj5CXyFXENPmKttoF4SzABgEubEgtMkL92Ke+yMzyQDj3ra9b2ERzmPjpz/SDelHfutyDIwdn88PB4FDIZzp9zgOTmr8h6wickXwhawktgdyuQLrrG9kjWhpzvOqwVyOLFHdJZusnZzI5ri/kmdFOFvnyaRqmxLOSmRsk0WUkhqF8PrXEM4jGBHWaYePwFyEc6WRIjj6jVdZvTOkM+VEFLO0UMYeZa6EICWP0EWiqp8m6oAyhGxF0Kp9JFpJiQmCFbkkJY1wvf7667t+kE8MKSmXQwSLiBjjUCe1bcgOgp5ncFW0j/GI1rYZgDRa43BtRqBFxP1YGFY194loNm6LCcW23XXXZgL6VSKjjcDs98k41sc6grt/3rb/d8+uY1HcpkVmbIPWso/dNeEsytAc6Ufi+L+0UnPN/Ke8UTbNRfKEEwhJpJnTyGa1hJWccA+UO8YWuUGecBIp44OootQhnH2nljpiRtStZ185in4j60Rb67slhV3fOJyHfKroyf75Y/93vHONCQm0SWMwSvtnIFNC4XLNNdd0mR5Id0R9KbGb9HfcY7YhnPvXitzoI3KY/98l4VxrlLXz4YcffhRgNgAzRxFCSBcGER1CdCG5oX5zRS17bmuzH8far4D+gURSmoMs8TmZ4Vr64BxCOMtEYFCWMUje9Bs5Qv+w3reNo4VBaN47byzl21g4vTmRZDSY6/QHqfzmuc85/Uunaq9R792ra5EV/shTskaWhHEh5r1HyJ8OAVXXOZ3XTQnnft+RGX1EDvf/uyScOSvo8nT/2mSrkDPnkcrmiLJZIurVXlfSy7xXX7wCS9gasgvUZZWZZf233iJ9OMLNVZ/bd8X8QjSTG2wVx5qTiGDzv5+lZDzmq8hIjva2caLTVZzH6Tw275XicT3HIb/pBq3NIeqZriJTcdumH46robJj2/Z1Osf3S2ps00fkxjZoLffYpRHOnEq4CrKCblKNA9ccE+xSNg59RLALu4M+IqiuGscxG0UZDvOWPULm0FnIm8pwxkH4nu5CvzDPS54pjev/eJg2eBThLPhGLXf4lSyra3OOk1t0nW0IZ/wOeeB1yY2+BtcKNtjHWEM47wP1XHNnCMxBOPMUK6WBfOkTuW6M0UIpIiBFD1HKKFoELQ9f22yahYymXDHuKp1cxC+PYBl9ovkQ0gxCyp/UEuPgARStQEGsGkZt/yKUbC7QT8lnpFLCCOyqH9ie174XUUQIM+7cC4UVcUxobxLZa9FBUEuNtTgwFN1P/SHTeDr9VmOGp/FYLFzXglIkWzvOqd6XMb8t4TzV9dPP/hHYFeHsTpEqyGYRviLx+o1DxzzmxDL/zCHGHEOVElXNPGaEmdMUJ8aeucu4Q8pIg6/5Sx4hkBle5IyoI4SzOcZ5JTuj36TJmsfImiKsHMNJJGJXapvruJ9tGsKZkYok3qZMDtlDyXO/5Cw5gkRX63RO+TB0b8chnIf6y2eHh8AuCWfPvnlKp6Ar9FtFIzPyrNfmJj1BBFHbzDclbaztjrMGI3Gsw0gf67LP/SF7OX0R0EgXzjBGG4ORbELy9BvnMP3D3G6b/kVD0qGct2q+Opasok8h0Y2FDoH0VuZnnQFFVnHgO5/OQQ9xfukh+vS5TVu3lV3tPZ3O+9MlnE/nWjlnmQjsinB297II6QECYYYCRdgQ9BB2h3nmlX1i3rfR/4hrpbrIB2X17GUiSh9Ro2wW/aJ0DaSS8zl66BsibvWFOKXPm8P9RsfnNGNjtI2coKuQN+q9jkXtspPMacfVfC97w6t7EywjCnvbRpaRhUr+7aMdh3Dex3hzzekRMC88g0tpMgo4scypyrhsxyYqGclMH6GnK8fDmcTeaNdcjmgOKPoIEpejXFYFucImo/PYWwdXYhNSTjE6CzlUZT1lX5j3bJE2g1CQDNlTNkJb8sdYkdsIc5lTrV3V3sfQe1yM34KOseQWwnnmX4e3hJezfaBnvmS6XxgCcxDOvMSidgklr/3me+QNgYZMQfrwzDvW523zf4JQX/7qe334HKHMKKQoOr+uS2FzjD8GlWPr3Lb/se/a87xf1epYRDpDV1Q1Q1Pf686tftt7rHvtv7YKbZ3Xvta9e52zhXCeE93D6HuXhLM5ZH6YT0NzuOYfYpcsIFPMlf58cZzPaq55X/PTnHG+uSu1lALnM9f0V3PKq3nZ79uv5rsaZ/9XNG7nOaau2T9m7P+Or2tuc65jjd29kEtl8A6NfezaU30ewnkqJA+3n10SzuvmjPlorlqzZQ0gZc2LmueFsn58Xmux9zUHvUfwkDmMvprfJQNKVpXM6PftGvpwvNd+W3Vee6zx1LHGwRFsruvX5zXe9pz++xpH3efQq/426avf93H+H8L5OOidjHN3STh7vvvzt0XRnLamylwwz0QImjv9ua0fn9c88r7mjvd0DXoGfaPkRukam8gN16txtuPzvmTBqrnvGjW2sVfjqbH0r7Hq/+6vZM+q4+b6LoTzXMgeTr9LI5zNo5qvJQdaNH1vvnIe09URwfR2n7fH9+WKOVrfO58+YqNBvAgZ5bOSQzWXfVYyp86tsdQ4ndNvznMPQ9/1j23/X/Jg2/PaPnbxPoTzzCiHcJ4Z4APofg7Cede33Reau75+e70ljaUd15TvQzhPieZh9rVLwnkbhKaYf1P0sc2Yd3Hsvu8phPMufuVlX2OXhPM2SJQhts057bH7nlvtWLxf2nj649vm/yGct0HrZB67S8J5GwRP0jzb5r6XfmwI56X/QvOPb2mE8zZ3fFy5clx9ZpuxnqRjQzjP/GsugXDmyRHduknjlZEixDucNg0CJ4FwngaJ9LIpAkslnMmGsRTC/r2VLOEFPpQ2pIgMfbaL+1kq4byLe881tkfg0Ahnka+bZn6JMiF3yJJ9zcftf5Hdn7FUwnn3SOSKmyJwSISzKHkRapu00j9iy6xHa6mE8/qR54h9IHBohDP+o1/2aEyPEGFausY+sD2Uax4y4XwoGJ+0cYZwnvkX3QXhzAhTrPwHP/hBV89XuL9GoP7pT3/q6shU3V6bs/32t7/tjndO/Sm4Lk1amqCaUupdMQj31Qj9P/7xj0d2CKc4DjX1Qt2Lncp//vOfdztoK/sw5H2ipCLx1Cv20Ou30rqH+p7ysxDOU6J5ZvS1L8JZipFNV9SgUi+3alJBXVqzuuA2TxhqlDp1O8kcc9acI//U02s3Thg6d47PyC+b1RkD+UDGSaWStrSqSUsiV9T82uWmb/0xhXDuI5L/r0JgaYSzeUR+GJc6eYitatKcfaYWpkZXMTfpKeaqDaHU9ywdRBqjNVuNu1UbzFb/c7za/JJcMDa1g423v+nLHNfdps8QztuglWMhsCTC2XxSw5dcoH/YmLWasixq7dIxNDJDyYVWZljva04KtCFL1Pfe1Ele15rilT5EhhmvccD5b3/72yIdZiGcp/jFz5w+lkY44wuszTaVpFe0+5Cw8+nSamr3m70CcAL0EU5tjd3y61//utM1rPn7avQntYjZL0t0moVw3teTcbjXDeE882+3C8KZIWaDhMc//vHd7r42N9EoXh//+Me7AuU2QCC07IprB06bk3hVaNzfi1/84qPvf//73eYvdtZ83OMe1wndEsIzw/Rf3VMcL7vssqNzzz23I6tab6T3yHFE7mte85pu0xfF3V/ykpd0m8xYYNqG/HJvl19+ebdBhKLxNnmyCR3s5m4hnOdG+OT1vy/C2bwjC+yia1MEmxFonDg2drLpUX3Wok7WIKlt0mITKaQQRxhjz269NmUacxy1/Uz1XjTD/fff320g8ZznPKfb/MHYP/zhDx/9/ve/P6VcDl2Pkveyl72s28HYRnT7aiGc94X8YV53aYSzdfhVr3rV0ROf+MTuzwaS1b70pS91G67ZcEVDzFx77bXdumwtN2dtAGMOMwDJEobkYx7zmG7D1v5mK9XvHK9kH3lmIxkbZdo05rzzzutkCSJpH2TW2H2GcB5DJp+PIbAkwpmz2zptJ3ubqtnwUUMo3Xjjjd2GSrWZLGeWTaDYPja8tumrzSSt2Wwd2RNf/OIXO5lhnupjVw2RRV5dcsklpzafsnHddddd1wW+7MuuGrv/EM5jyOTzIQSWRjjbtJbOzm6xgeQnP/nJU8Nmf9uksv2svrSBrc3jyJna3I3tYDNZdsv3vve9rs5vHb/LV3YIe8UGk5zbLQeyy3GMXSuE8xgy+XwMgRDOY8hM9PnchDNBZMfaxz72sZ0yIyqAF11j8Nkd90Mf+tCRHX158V73utd1yhmi9p3vfOfR29/+9u7vzW9+c0cYIYV4B5Gyb33rW7vi6BNBsXE3DLiPfOQj3T3ZsVOUYSts3ct73/veTil9wQtecPT+97+/20nYbsYWieuvv76LfHBBXkJREZRRBJr7Z+RSah3LgOTNnLOFcJ4T3ZPZ9z4IZ5sg2OWWLDGn7MBNkdM4eMyhK664YnBncVECSJiaf7VLsAgku/XaDfihhx7ayY9FcaQwUj6f/vSnd2OmuCHSEVYvfelLuwjFocHYEOqWW27pMGDE/uQnPxk6bCefhXDeCcwn5iJLIpxlNCAxOMHf8Y53dJkRDz/8cIe1yL+LLrro6A1veEOXTSGryg7f5A4nuLlqXUZUW7NlSGj6dJxjEEi7avSPN77xjZ0hywF+5ZVXHr3pTW86etKTntQ5pURVLaWFcF7KL3E441gK4Wxj65tuuqmTA2yW73znOx3RAkk6v/X4fe97X6fbkyXPeMYzusAYOj2d/y1veUsnb8xLdpDGgc6Bxb7h1NpFI6fILJvFI7Pe/e53d840pBcZJ8AHsb6kFsJ5Sb/G8seyJMJZFPLnP//5bm7hBYyN/aRxOlmzyQYR0G2j27/iFa/o1vUvfOELpwhnx5BF55xzTscXVHZ4e+7c7wXwsMXoPzgc9lTLgcx9/U36D+G8CUo5pkUghHOLxgzv5yKcS/hIM6PQMOyQO9UQRLfeemsnsJTa0Chcz372szsiWZqXkhTIaX/I6apxhHgSbSTCgBG7iyYiwDgZdogrXkrkFSXNvdT9erVQiKS84IILuvE515ilulJCLRTIMo3gFvmMfKKUOo6BK+2fUSuS4oMf/OCstxjCeVZ4T2TnuySca26ZGxw95p1SO9UQRCKFnvzkJ58if+o7r5Shj33sY53C1yeckb++c+4999zTnjbbe6UwLrzwwm7OM1oZq4xA98Q4lb0hwnKotAZDldwjL84+++wuWmq2ga7pOITzGoDy9aMQWALhXLLEvBdRRB78+Mc/PjVOJXtkYDGiGFQMQmUyHEf2IGKs58ppWZfpNYxIa7YIxZtvvrlzIjl3F41OxGFNHrznPe/p0uOV7aI/yOTgwDJOEdhLaCGcl/ArHNYY9k04l8xghyCUkbKI4mpkBB2azi/ikFO4ZAvdQoAMeUNnchyZYa6yhwSvyKw466yzTpHQ1e9cr7/4xS+6SGzEt9IgxkumCWx55Stf2ekfd99992Dpv7nGtK7fEM7rEMr3LQJLIJxLbliPrcV0CIEv1azJX/nKV46e9rSndZnPPuc8JhtEQ1eAGtnQJ5zZPJ/4xCeOnvrUp3Z9VJ9zviof9rOf/awLABRoZ1zuSfBfCOc5kU/fu0IghPPMSM9FOBu2vpGoPHiULEaYOkUIWmnjooEuvvjiU94+wljUkJIZDL+xJsrZschYJTkQNnM3Y7733nu7Uh/nn3/+0fOe97xO8UQqt4QzxdLiQBBL8ff/alJfeTIRSr7TKKEIJOlsalO3TWqeCEjfzVkjKYRzi3reb4LALgln42F0UrA4eMytG264oXPm8PTLjCBjRBYic/uNY+vVr351lzHhXGmjFeEsdZRBSHG7+uqrT0Us9fuY8v9IZuMwXkRVNWNBbpGVIqja7xxD5ongfu5zn9vJoec///lHDzzwQJ2+89cQzjuH/KAvuATCGYAc25/+9Kc7o848FLGs3A7nOPKIM0i2Af1FdJJMKsf1y9dQTjmQOYYrIhARzWkudb72qpjzR5Phcemll3byq5/tQC7SM+gtrR4y53jW9R3CeR1C+b6PwL4JZ+NREx15TPdHOJMfP/rRj7o12jy3FsvKJENEN1vb6fklF+qelL6h09Njar7SWQSwcGiZs3M3DjXyjHObvKumDBBHt+/MU3bNUloI56X8EocxjiUQzpAy/zmf6BPmFRki40gAHf2ePEEuC0bTfIYTwSvIckbm4gf6hLPMaByK79kEbTDfXL8Q5xg9iS1l3PgbckuWRAjnuVBPv7tEIITzzGjPSTiL9mF8SbsQaeP9VVdd1SlvjDcCGNkpuk8TQewzxDRPmrH5o8D1CVcePpHCUk48JHM33kjjEMHAcEZiIZ0RXS3hzJupLqwFQ6pLWxeWx9P9U0SlxWuUVtFJopD6i4ZIBOn1cPPdUMTjFPcdwnkKFM+sPnZNOKthhmilfJER0lelwjPaRAb7DCGNgG6bqB1zSJo5wtZxaqMX4exY84rHnoJX2RZtH1O/p3CSG+5J/ddqDD51FclL6WDtvZB3yoiobS8qQlSl2pDkx75aCOd9IX+Y110K4ey5ZSw95SlP6eQBo81+DOoxI3ARSh/4wAc68kfEkX0lrNuMxGqimekCHFWcyIimaogn/duXYu6GrJKSryQQA5QuJTX3d7/7XSc/RC6SHbusKb3qnkM4r0In3w0hsATC+bbbbuvqtotiZsvILpK5KRPTH72Cc0fGAYeWKEXEUb9+uvUeQWPtJg81c5O8kOm4Cwey7ErX59xuMx+855zi8FbWT0bZUloI56X8EocxjqUQzpw7Sv1VNLC1WplQersa7+SGoLzSLWw+bD8nf+wEGRUC6/qEc/0KZIaMa3bD3I2coh+xkciuO+64oys9JkI7hPPc6Kf/XSAQwnlmlOcknAkmdZhtsINkRZJIW3/wwQc7UpZhJ9pPWQmKWHnXRQxRiBhzCtLzqImMbpU3wg/ZLO1E+tdYQ/JKBdE/w2vor74TYVhpMGP91eeUYBsO2aCnJZzdi4gHhLrogbY/xyG1RDjAQcSzWq4UPBETjNu2WZBESrlHmM21kUcI5xb1vN8EgV0Tzj/96U87+SGSiJJGaePYQSh/97vf7T5Tl7CN2KG8MfrICecr0TNEOLtf8wzxhFxa1fRZ8mKVLEFItXO/7VMUE/nAidRuFEQ+IMPJSg4tskQjJyiuZCJDULTiu971rm4Ds6Gdrdtrzfk+hPOc6J68vpdCOItWvOaaa7ooHfLAxlmcOL/85S87B5bapjYeHdoB3pzkVEb0kiucQ4zBtiGn6S3SaFc1BM8qWUK++J7TekyWUJBLppGH9stAeBsb0pyeyGDMCQAAGW5JREFU0jq9V41nF9+FcN4FyifrGksgnG0qzGldmY3W369//evdpt4cS0hor2wNpLPNvsmZdu6RHQJpkNZqrLsvTbSiOStbghxa1Ta1ZVbpH3/5y186OYckcu1qSmuQGe6FLbYqy7TO2dVrCOddIX0yrrMUwlnQmMxJASbWaY5tjh4RzaKFzTXlAPu2f/0KJVvGCGd2EAeW4L5VbZ2uQc9Yp2v0+5fNhd9RjjCEcx+d/P8QEQjhPPOvNifhbOiiDwlZpTLKi2cjQakliNbaXMdnUt0JZVGMFDJRfmqK+YwRKKII+aIhnKWS+G6VsKXwMXLsFi2KeOiP8SmdTVTQpkoWZVLaHAKsJZyNzRhFTbZGosgjxiAyyQYh0vjdA5LMZ8qItIS6fhDXb3vb2zoizO/UklMdCBP9E8J5IiDPoG52TTiDVt1EZI45XxtsMJJkRPhMVECRtAwzRgrnTu0kTylyXD/CWd8MLfNQFPGqhogyhiE54jMyS18IqRpLvz9ygXwoWeZ7x6qnyBhVP5aBqzmG3BTdTbkkExi0IZz7qOb/S0dgKYQznMgCcoA8QAJpjL4777yzMwLvuuuuI86lfuP4ERlNVjiXPOhHAsq0oO/Y72FVI5c44cdkCTkiwonROjQWfcPUOGxOLL2Vc1r6rqgqxiwnGuN7KS2E81J+icMZxxIIZ2jROWRVsUWswxrnsZR5wTNqwdPpNeu7v7bJQFAez3xF6FbWJtKXHDBfVzmp9GfTQgTWmMxgyyjHJZW/xtKOwfuyT1r9AyH17W9/u5NbZAiZs6QWwnlJv8byx7IUwhlSZAW7wLxnF2iCX2wk6DMZByUL+shyapEtY4Sz+u94FMTvqsbGX2e3kB0CeMbG0u+fPCMPQzj3kcn/DxWBEM4z/3JzE86EEqKEAVYRQ/WZUhKPPPJId4dIFSkaiOaqp+h4Ub7KTxDMiNraLAyRLNqPMJaSMtYQyIhpET8ipYf+7MpsR3pRCVMQzv2xUP6k3zEIRUhUGjyPYhHOIisRSW2z8Q/sGI0UwBDOLTp5v08E9kE4i8xBCJMFvOuaKGGKks84gao99NBDR8961rM6w6yMQ04tx1HSbADUNjLGJjqXX355+/F/vac4KmsxJEd8xkHmlSNtU8WN7PvUpz7VRTgxZkUqSoXXyATpuSIkONw0Ec6irV74whc+asOz7ssd/pMI5x2CfQIutSTCGUnc38in/Uw661CzzwLntRIW5qpyV8iQtkYyMkmaKYd063Tu94d8Ve5nTJb4nN5iLBxo/YaAqnrw5BrSSokh8oTOgZiiY3Fal57V72PX/w/hvGvED/96SyGc6RzWXfO+ai3XZxxQgkiGGmeylPfaf4ITif5UDeHMSYU4osuMNcfRBV7+8pePygwyR21m5cPGHN79/ulQ5qWsDPLiW9/61n/ZIv1zdv3/EM67Rvywr7ckwpmtwQlkja5Amfaz/t5NLfLrCGe8gQC9dc5tAXWr7BbZ2mQH/YHzaZMWwnkTlHLMISEQwnnmX2tuwpmAtekOwlk0oiadRKF8BCxPn0bIUXwQRf3SEQwoNc4Yd7yBGvKVh1BKKyVtjIxllKmxpjaaNPahP5EJopykyvajErqLDfyzKsK5DhfVTHlDaFsUCHWkEaJZQyaJmKLAipRqywH4npGoPqRUu0Q4F6p5XQIC+yCcOWAYaxQ39dQ18oWzSHRQkdDGhhjmqFFKo6IDRUg7V+Rgu8u8fpC8DC6lNVYRxeqyK2MxJEfaz8i6Nl116DfzPbkkSsBYRTEjq2RMaFLqGaoiCEQ2Icw1Gw9xRCnnI6pbW0VsdQfM8E8I5xlAPcFdLolwVh+do5o8UEpDo3+YVz5D2Aw1a7p1GQkm/V02AkOOnKlGR1FGTH1FWUtjc/M3v/nNWllCPjBOh/Qb/VY5ITKC/GkbGUlG0J0Q00toIZyX8Csc1hiWQjibTyIJ6esyJDQRi/R6dVb7Tmzfy5q88cYbu4wDcxTxhKhpbRw2h2wH38tcGgt6Md/JpXW2TJUPW6d/kCmcWewzcoyskOHRt0OW8LSEcF7Cr3A4Y1gS4SxQRkYCvQK/obE/BNf5bMxR5bh1hPM3vvGNbg8HJXnYOWO6Bjm1zm7Bg7AtWtm06hcP4bwKnXx3iAgcLOFckbhLB50gokDNpWQMEc6i/6SWIYsr6pmQ6ytaJTwpZLz2ooYoHhpliZKGyEUubSokp/o9VhHOxo1IF7GNJJeCKzKiDNsaA+LZwiiyQYRDPzXXM/T617++2yBtiIivfo77ykvKKE0LApsiUOUpkDS7akOEM9JGVLFMh4oaQsL6vwhnqWRqvHPsSH2l4CGIRDfWztDG7xi10CiBY6moU94nMtk4bVaoVr269WRBm+aK2CoCTFS2bAjEuBIizkOQy5xggJbjbsoxrusL4UwmpwWBTRBAiHIyr3LobNLPFMcMEc7ki0ghMkJqqWaeMgh9NyQXZF2Zv2RLNU4iJS0Qzs4vPaa+n/JVtpTxKqNRGxe212OImqP9OtNTjmGbvpQVE+mZFgQ2RQBpy6H8j3/8Y9NTZjluiHBGAMtSQDhX1LOLs0dkGXAmm38yG2VRtTp+zVP2jbqu5Ag7Yci5NPUNCXYhp2RJGR+n/X333Tf1ZSbrj3OPPpcWBDZBwLPsud40gGyTPk/3mCHCWeY2nd/aXVHPQ/2vI5xt8mkDdX3tWq9aOuEsEJEzMC0IbIoATsBa3q82sOn5Uxz3P9t2QnFQg1NKk2i1pf5V3dBdE86iBBlCop4r0lD0HgKGh6GvcBGkBCritjbVUFLjhhtu6NLgkbVjjZefx199VBFWQ3+8/Lx/FNp1UQF1nVWEsygokYruD+GMJBoyVuHvfhnhyn5YhNpmzDYKQwYzkFsyqj3uuO+RchYtacHGvtTnNeNahizhSUfIUJb2TThTei699NJHkURK8khx5YyyeHDoeCXnjBkZ7VWkczVOFxFGUlZXNU6j2qV5SJbUZ+brmBOMY41MohC7pgio1lit65MHMhzIPamu7qP+3AMj3H1IheM4LAO2zp/7FeGs5jS5yWGZ+bmM+bnE38H6ZwOcJRPOnGjmvzlVJTWQXQgljh+GY79xBJnDyllUQx7ZjZ6zeFWjB9F5SmYMvZJlrttuPtb2KXuLTFB6oxxu7ff0Jo4p2WBLaCKc7XuBiFcze4nPasa0HDlG9xd5Z07uw6nazpkhwpnDG1lLt2gjFZXx4gg3N2VNjWVM6J/NYdNwAThS38ca/V/6/TpbhhNKhtWY/kEWk2/0IzrIZz7zmVPZp2PX3vfnAo1EYbNPlBvLHF3OHF3ab0G//vKXv9zt37JUwtlaXcEkxympwZFsnxpZCqsaIm2d3UImjGVTDfW9dMKZfXfhhRd22fNLe0YznuXJL3ycjEFr9sERzsgASsjS/yhyyJi2BuGQcDndz4YinH2mrqDr1uYUovTOO++8rlZpf8dW5A0DTsq5B0KzqDDyRCXa5XWsUVid6z79JkN/vlO/lZNg0/pFqwhnwp0Rev7553elMMbG5nP3xkGB8O1HGCDUEWdqts1JJiHxYbD0ZzXjW4488bz4qzIPq57xqb4binBuP6NQMbIs5hxIDK/649gR5WzM6q8yYKoEh/Ex9JSuQYisaua0PobkiM8KF2n1SJWhVlHZDD5jHpM5zhcl5V7IJveixhqil0wgM0QMMnSr5vPQ9eb67P777+/ul4zK3FzO3Fzqb2FucJ7sOhJn6Pm37vZLakgnrc9kPGiMKhvywXSINBIRXU6juo567OamWs+rGqf7JrKErBrLQEOCIcSNgU7SNrKZTsVhLZpxCe3WW2/t7nmpz2jGtTw5VnOksiH39RwPEc4+UwbDGiiDAymsNJ8sJJ/ZHH2djoRwtjeFslpK6401ug0bqPAY0kF8x2DmyKpSYv3+yDElDcliZP4S5HF/jP3/Kx3g3jI/lzc/l/ibeFaswUslnDm3q8yGzTrH5uC6CGfyBb9hA+RVTQbUOrnhe/NMGbBN2tIJZ9hEZkRebCOfPC+4wE3nwCbzZNtjto5wRqgiFUQBHsIfwmLTyN5twRsinHnfa2dnhhBFSqRzefwYakhbRiGiSJSfB+G66647VScN4WxTHcYgAmasWXD0IXqoyKf+KzKH4jVFDWf3Vpscug9kEdLIhoQimhiFDz744Kn0QF4VafyUU+kfohccLypaHUhk9M033zx2e5N87r6N7RCe1YxxOTKFjDMPd9VacpmhpyGXefnJB3OmHGcUOERu/Tn2D3/4Q3ccRa/Or7GTMdJelelZ1dRSFwnQlyH9/0udHZOp0uDMd2WFkLZwFKFsDvpjEIp4FtUo26O9F336zuaGIgWdr+1DsUaCkWuZk8uZk0v/LUQMz5Wps2re9r8bIpxFNdxzzz2dM+m2227rlE5RlaKYyRdRxGSM9dmfsjzInYsuuuhR9ZORR9budeu2OS+CuS872v/TW0QdjUUrcs5zuBsfAtseESKi6RmXXXZZ97myO/uODi38yUVjW/pzmvEtS6aZb/3Mx3qmdvU6RDjL7uFEQf7ar8U8tYaTCQzdu+66q1vb1aGu9d2zpVxWRVFZ0znB1VAuR9fQPZGbAnRW6R9sGcE7yPkxnUAGhgwpJX/0NaR/bFPLdWisU39GzsEv83JZ83LJvwd9f85ArU2f8aGSGgJEOJKt22wOkftDbR3hzNmlfNfnPve5odNPfeZ3WqdrkB3m/Zjdcqqz/3+zdMLZvUTXiLzYVkbhLDedA/05McX/tyacp7joPvqYQzhTZi6++OJOsP7973/vbosiJJqXsJXKTtj6TISA+qrStJExl1xySVfvT/SOWomI2hoj7z2CiKde1N+uG0JcLUJRCQjbGhcCBhHu3pTTkNJBseNh9Of/xlyb+FAi1bRmLLpvhqpNBqXJiEC49tprB1Nlp7rfGvdU/aWfMw+BXT1DIpLVRDS3qvyM+SMlzWdK6yCSxhrFz3Fqe7VRR8ZvXl5wwQWnMijG+jju50haUcnGYb6TIWQeA7VkxLnnnttFY49FSFNWlRF55jOf2TnSjjum0zl/V7/56Ywt5wSBdQggce39YB5ySGtkCWJL5pV0zCoXZP8EuogSWdK6Ec/WaCnwIoiRSkUe6UeKvajiVeTRuvFt+j29Se1mhqeILjVZ7Xch6ln5EmU96v427XOu4yIz5kL2zOl3n88QnaM2+irZYP5xCpEjAk04h+n2/u+v9P12fadnCJ5hG2kcy9Z8xyB95myIWzaFscmwMj6yoh0fmWY/iX/9619zDmXjvvf5m288yBwYBEYQsD5XqS4chkbXQIRx/Miqau2RtpsipWVMDGU50UXIjlVBd21/U75HzNWeF+ThkubpksYyJebp6+QjcMYQznP8lEgeNYJF27Rp36Kqzz777K6+WaW2qy1G4bJxBvKFYqY+qZ2dW68D74P/M/hEK9ZmOXOMf6xPY1Z71fXbneh5/aTli1hAIqvj5h7qj6GKkK7SINW/SGgR0chpJJTj9NPWhatj8xoEzkQEOKyUf6HktDvCU9Y4n8y3UuiG8BFdp56iqIHagIjB+Oc//7krpyFquB/5PNTPcT4TaYiIMlaOuL58ICcYgVLbxghn8saGpAzHQ9mc9jiY5dwgMDUCiBfz0DotEqoaHUXZHE5hddarqd1uvjHwrM/0E3UTpcNWdBIjksNL1pX5XYRS9THnq8hxdWCRzS960Yu6kjv0CVHU+44MnfO+03cQ2BUCdA7rruCXNmNAdqbgEo4mxIuoOtmKnFRD6zsHM6ezOas5X3DJVVdddaT285xNBuadd97Z2SCcUUPjQz4jzcdKcsw5vvQdBE4aAmwNG37TNVquwlyUpWgODpXrggMdhM0iOrl1ANE1lOU455xzOidYyZJdYvfXv/612xtCEBB5GJJ3l+jnWicVgRDOM/yyhLCUVPVSpHX1G2UHsUKw9ptzkbE2vJg7IqB/7VX/31bgDh0vJU+ZgLQgEAQ2Q0AZDXVTRQyLNhxqQ3PNcSITbZpjYy0k7yG2sXs7xHvJmIPAPhCoOaTElfRUpaxELPab9Vmk0VDddQ5zhJSaikpy7KPRl+hOHGlpQSAIzI8AfZ09IqOAA2qbxvF10003dbZMPwhlm35ybBAIAoeFgIAS5XjOOuustaX8+neGfKZj2MNKFHRaEAgCJwOBEM4z/I4VpYwkEjnUev5cjgFYRmD/8hUdLbqYl++ktbH7Pmn3mfsJAlMg0EYp87ZvE6XMS28jHilvbaTjFONKH0EgCBwWAghbtf9EKb/2ta8djFIe0004vpS0UA9eaa19tegP+0I+1z0TEaB/iFLmpLr66qu3ilKWKSlKUd13e1SkBYEgcGYgQG5UlLISeVUmcJO7l60pq/OKK67oyoBtck6OCQJBYPkIhHCe6TfipaNo2SzDZjybNPWSefae8IQndOnzieTZBLUcEwRONgIiDz/60Y92KWqiBjZpIhXJndphfp8bBWwy3hwTBILAbhAQ3aw2og0DN2milWyAbKMw9RRTxmIT1HJMEDgZCMiMUPqPLWMTz02a6GbHkhk2I47+sQlqOSYInBwEOLjtPcPBrUTnJk1W5je/+c2u/rNSG2yftCAQBE4GAiGcZ/odReLYpEeN5003tkE426TDOTboSAsCQSAIQECEMgPuhz/84UaAIJxtOPrZz372UfXlNzo5BwWBIHBiEVBL9atf/erRvffeu9E9Ipx/9atfdSmyqzYu3aizHBQEgsDBIaCO6u233370wAMPbDR2td/t3SKAZmy/ho06ykFBIAgcLAKPPPJIV1Ljvvvu2+geEM42ShdY889//nOjc3JQEAgCh4FACOeZfyfRAf/+9783ugpvnlqJiWzeCK4cFATOKATIEfJkkyaiiCxJZNEmaOWYIHBmISBKeVOnNn0ksuTMej5yt0GgjwAZ4G+TVvpHbJlN0MoxQeDkIvCf//xnY7slusbJfQ5yZ0EghHOegSAQBIJAEAgCQSAIBIEgEASCQBAIAkEgCASBIBAEgkAQmASBEM6TwJhOgkAQCAJBIAgEgSAQBIJAEAgCQSAIBIEgEASCQBAIAkEghHOegSAQBIJAEAgCQSAIBIEgEASCQBAIAkEgCASBIBAEgkAQmASBEM6TwJhOgkAQCAJBIAgEgSAQBIJAEAgCQSAIBIEgEASCQBAIAkEghHOegSAQBIJAEAgCQSAIBIEgEASCQBAIAkEgCASBIBAEgkAQmASBEM6TwJhOgkAQCAJBIAgEgSAQBIJAEAgCQSAIBIEgEASCQBAIAkEghHOegSAQBIJAEAgCQSAIBIEgEASCQBAIAkEgCASBIBAEgkAQmASBEM6TwJhOgkAQCAJBIAgEgSAQBIJAEAgCQSAIBIEgEASCQBAIAkEghHOegSAQBIJAEAgCQSAIBIEgEASCQBAIAkEgCASBIBAEgkAQmASBEM6TwJhOgkAQCAJBIAgEgSAQBIJAEAgCQSAIBIEgEASCQBAIAkEghHOegSAQBIJAEAgCQSAIBIEgEASCQBAIAkEgCASBIBAEgkAQmASBEM6TwJhOgkAQCAJBIAgEgSAQBIJAEAgCQSAIBIEgEASCQBAIAkEghHOegSAQBIJAEAgCQSAIBIEgEASCQBAIAkEgCASBIBAEgkAQmASBEM6TwJhOgkAQCAJBIAgEgSAQBIJAEAgCQSAIBIEgEASCQBAIAkEghHOegSAQBIJAEAgCQSAIBIEgEASCQBAIAkEgCASBIBAEgkAQmASBEM6TwJhOgkAQCAJBIAgEgSAQBIJAEAgCQSAIBIEgEASCQBAIAkEghHOegSAQBIJAEAgCQSAIBIEgEASCQBAIAkEgCASBIBAEgkAQmASBEM6TwJhOgkAQCAJBIAgEgSAQBIJAEAgCQSAIBIEgEASCQBAIAkEghHOegSAQBIJAEAgCQSAIBIEgEASCQBAIAkEgCASBIBAEgkAQmASBEM6TwJhOgkAQCAJBIAgEgSAQBIJAEAgCQSAIBIEgEASCQBAIAkEghHOegSAQBIJAEAgCQSAIBIEgEASCQBAIAkEgCASBIBAEgkAQmASBEM6TwJhOgkAQCAJBIAgEgSAQBIJAEAgCQSAIBIEgEASCQBAIAkEghHOegSAQBIJAEAgCQSAIBIEgEASCQBAIAkEgCASBIBAEgkAQmASBEM6TwJhOgkAQCAJBIAgEgSAQBIJAEAgCQSAIBIEgEASCQBAIAkEghHOegSAQBIJAEAgCQSAIBIEgEASCQBAIAkEgCASBIBAEgkAQmASBEM6TwJhOgkAQCAJBIAgEgSAQBIJAEAgCQSAIBIEgEASCQBAIAkEghHOegSAQBIJAEAgCQSAIBIEgEASCQBAIAkEgCASBIBAEgkAQmASBEM6TwJhOgkAQCAJBIAgEgSAQBIJAEAgCQSAIBIEgEASCQBAIAkEghHOegSAQBIJAEAgCQSAIBIEgEASCQBAIAkEgCASBIBAEgkAQmASBEM6TwJhOgkAQCAJBIAgEgSAQBIJAEAgCQSAIBIEgEASCQBAIAkEghHOegSAQBIJAEAgCQSAIBIEgEASCQBAIAkEgCASBIBAEgkAQmASBEM6TwJhOgkAQCAJBIAgEgSAQBIJAEAgCQSAIBIEgEASCQBAIAkEghHOegSAQBIJAEAgCQSAIBIEgEASCQBAIAkEgCASBIBAEgkAQmASB/wOpVU7Yw/lr4QAAAABJRU5ErkJggg=="
}
},
"cell_type": "markdown",
"metadata": {},
"source": [
"![image.png](attachment:image.png)<img src=\"assets/recursion-factorial.png\" width=\"800\">"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"如上图所示,当 f(5) 被调用之后,函数开始运行……\n",
"* 因为 `5 > 1`,所以,在计算 `n * f(n-1)` 的时候要再次调用自己 `f(4)`;所以必须等待 `f(4)` 的值返回;\n",
"* 因为 `4 > 1`,所以,在计算 `n * f(n-1)` 的时候要再次调用自己 `f(3)`;所以必须等待 `f(3)` 的值返回;\n",
"* 因为 `3 > 1`,所以,在计算 `n * f(n-1)` 的时候要再次调用自己 `f(2)`;所以必须等待 `f(2)` 的值返回;\n",
"* 因为 `2 > 1`,所以,在计算 `n * f(n-1)` 的时候要再次调用自己 `f(1)`;所以必须等待 `f(1)` 的值返回;\n",
"* 因为 `1 == 1`,所以,这时候不会再次调用 `f()` 了,`f(1)` 返回值是 `1`;\n",
"* 下一步,`f(2)` 返回值是 `2 * 1 = 2`;\n",
"* 下一步,`f(3)` 返回值是`3 * 2 = 6`;\n",
"* 下一步,`f(4)` 返回值是`4 * 6 = 24`;\n",
"* 下一步,`f(5)` 返回值是`5 * 24 = 120`。\n",
"\n",
"至此,函数调用 `f(5)` 才执行完,最终返回值是 `120`。这个调用中“**递归**(*recursively*)”调用了四次 `f()` 自己。\n",
"\n",
"> *Recursive* 本来就是“反复、重复”的意思。\n",
"\n",
"试着在自己脑子里把这个过程走通,有点烧脑,不过搞清楚了也很有意思。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 递归的终止"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"从上面的例子,我们可以发现,最终 f(1) 不再需要递归,可以直接返回一个确定的值,这一步是递归的转折点,特别重要,如果没有这个,递归就会无穷无尽的重复下去,永远得不到结果,就像最开始我们写的那个老和尚讲故事的例子一样。\n",
"\n",
"把我们计算阶乘的例子中的 `if n == 1:` 条件去掉,直接写成这样:\n",
"\n",
"```python\n",
"def f(n):\n",
" return n * f(n-1)\n",
"```\n",
"\n",
"如果运行这个版本的 `f(5)`,会得到一个运行时异常 `RecursionError: maximum recursion depth exceeded`,因为 Python 对递归次数是有限制的,达到一定次数还没返回的递归会抛出这个异常。\n",
"\n",
"我们写递归函数的时候,要特别小心的确认递归的终止条件,就和循环中的退出条件一样,一定不能出现无限递归或者死循环的情况。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 递归的好处与代价"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"从理论上可以证明,所有递归(*recursion*)都可以改写为循环(*iteration*),反之所有循环也都可以用递归改写。那么我们写递归这样的算法好处是什么呢?\n",
"\n",
"> Alonzo Church 和 Alan Turing 两位现代计算机科学的奠基者的[经典论文](https://en.wikipedia.org/wiki/Church%E2%80%93Turing_thesis)提供了证明,前提是内存管够。\n",
"\n",
"最大的好处是清晰易懂。递归通常用于本质上就带有递归特性的问题(如前面所见的例子),递归算法几乎原样展现了问题的本质,容易理解也容易编写。\n",
"\n",
"另外的好处是,对某些问题的算法,递归是最优化的,比如树型结构的遍历。\n",
"\n",
"凡事有得必有失。递归的代价是什么呢?\n",
"\n",
"主要代价有二:递归一般会使用更多的内存,因为每次调用自身都需要建立新函数调用所需要的环境,占用相应的资源,一直迭代到最深层开始返回才会释放这些资源,对此有些编程语言会在编译器和运行时进行优化,比如“**尾递归优化**(*tail-recursion optimization, TRO*)”,能够将这种消耗免除,但 Python 并不支持(以后也不会支持),所以 Python 会限制递归的层次,超过就扔出 `RecursiveError`。\n",
"\n",
"另一个代价是,有的时候递归算法不是最高效的,这涉及到算法分析,我们目前还不用深入,知道有这些代价就好。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"对于我们来说,了解这种思考问题的方法,在碰到适合的问题时能多一个思路,就是相当不错的收获了。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 小试身手"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. 使用递归求最大公约数 \n",
"(1)编写函数gcd(m,n),可以如下递归定义: \n",
"* 如果m%n为0,那么gcd(m,n)的值为n。\n",
"* 否则,gcd(m,n)的值是gcd(n,m%n)\n",
"(2)调用gcd函数,测试gcd的正确性\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"5\n"
]
}
],
"source": [
"def gcd(m,n):\n",
" if m%n == 0:\n",
" return n\n",
" else:\n",
" return gcd(n,m%n)\n",
"print(gcd(15,25))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"2.使用递归方法逆序输出一个整数中的数字 \n",
"(1)编写函数reverseDisplay(value),可以如下递归定义: \n",
"* 如果value大于0,那么输出个位数,并继续递归调用reverseDisplay(value//10)\n",
"* 否则 函数结束 \n",
"\n",
"(2)调用reverseDisplay函数,测试reverseDisplay的正确性。 \n",
"\n",
"reverseDisplay(12345) \n",
"54321 "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"54321"
]
}
],
"source": [
"def reverseDisplay(value):\n",
" pass\n",
"reverseDisplay(12345)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"3.使用递归方法逆序输出一个字符串中的字母 \n",
"(1)编写函数reverseDisplay(s),可以如下递归定义: \n",
"\n",
"* 如果s的长度不等于1,那么s串去首字符,继续递归调用。 \n",
"* 输出字符串的首字符。\n",
"\n",
"(2)调用reverseDisplay函数,测试reverseDisplay的正确性。 \n",
"\n",
"reverseDisplay(\"abcde\") \n",
"edcba "
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"edcba"
]
}
],
"source": [
"def reverseDisplay(s):\n",
" if len(s)!=1:\n",
" reverseDisplay(s[1:])\n",
" print(s[0],end=\"\")\n",
"reverseDisplay(\"abcde\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.10"
}
},
"nbformat": 4,
"nbformat_minor": 4
}