{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "raw", "metadata": {}, "source": [ "Content provided under a Creative Commons Attribution license, CC-BY 4.0; code under MIT License. (c)2014 Lorena A. Barba, Olivier Mesnard. Thanks: NSF for support via CAREER award #1149784." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[@LorenaABarba](https://twitter.com/LorenaABarba)" ] }, { "cell_type": "heading", "level": 5, "metadata": {}, "source": [ "Version 0.2 -- March 2014" ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Flow over a cylinder with source-panels" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In previous lessons, we used potential-flow singularities of defined strength to represent the shape of simple geometries, such as a [Rankine oval](http://nbviewer.ipython.org/github/barbagroup/AeroPython/blob/master/lessons/02_Lesson02_sourceSinkFreestream.ipynb) or a [circular cylinder](http://nbviewer.ipython.org/github/barbagroup/AeroPython/blob/master/lessons/03_Lesson03_doublet.ipynb), immersed in a free stream. We were rather lucky that when superposing a few fundamental potential-flow solutions, the stream-line pattern that resulted had a closed dividing stream line that we could interpret as a solid body.\n", "\n", "But what if we want to represent the stream lines around an *arbitrary* geometry? Would you be able to define the combination of fundamental solutions to get the expected result? *How could you do that?* Trial and error? It would take enormous luck and a lot of work to get a geometry we want.\n", "\n", "In this lesson, the objective is to calculate the source-strength distribution that can produce potential flow around a given geometry: a circular cylinder. We know that we can get the flow around a cylider by superposing a doublet in a free stream, but here we want to develop a more general approach that can later be extended to *different* shapes.\n", "\n", "The method we will use consists of representing the geometry of the body by a series of short linear segments, called *panels*, that correspond to [source sheets](http://nbviewer.ipython.org/github/barbagroup/AeroPython/blob/master/lessons/08_Lesson08_sourceSheet.ipynb) like we studied in the previous lesson.\n", "\n", "What we are aiming for is a method that starts with a defined body geometry, then works out the strength of sources needed in each panel representing that geometry to get a dividing streamline right on the body boundary. We will have to *solve* for the source strengths by specifying that the body be a streamline, i.e., the velocity be tangent there.\n", "\n", "Let's start by loading the Python libraries that we will need in this notebook." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from math import *\n", "import numpy as np\n", "from scipy import integrate\n", "import matplotlib.pyplot as plt" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will add a uniform horizontal flow of magnitude `u_inf`, so let's make that equal to 1:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "u_inf = 1.0 # free-stream speed" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Definition of the geometry" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The geometry considered here will be a circular cylinder of unit radius. We can define this geometry very easily by a set of points going around the angular range between $0$ and $2\\pi$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# defines the cylinder\n", "R = 1.0 # radius\n", "theta = np.linspace(0, 2*pi, 100) # angles in radians\n", "x_cylinder, y_cylinder = R*np.cos(theta), R*np.sin(theta) # coordinates of the cylinder\n", "\n", "# plots the cylinder\n", "%matplotlib inline\n", "\n", "size = 4\n", "plt.figure(figsize=(size, size))\n", "plt.grid(True)\n", "plt.xlabel('x', fontsize=16)\n", "plt.ylabel('y', fontsize=16)\n", "plt.plot(x_cylinder, y_cylinder, color='b', linestyle='-', linewidth=2)\n", "plt.xlim(-1.1, 1.1)\n", "plt.ylim(-1.1, 1.1);" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 3 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Discretization into panels" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A panel, which represents a source sheet, is defined by its two end-points (`xa`, `ya`) and (`xb`, `yb`) and its strength `sigma`. We'll also need its center point (`xc`, `yc`) and its length for further calculations. The orientation of the panel is defined by the angle between the $x$-axis and its normal in the counter-clockwise sense.\n", "\n", "What information do we need to compute on each panel? First of all, we will need the strength of the source sheet that will lead to the correct streamlines. In addition, we'll also want the tangential velocity (the normal velocity on the body is zero for an inviscid flow) and the pressure coefficient.\n", "\n", "In this lesson, you'll really appreciate having learned about classes. It will make the code so much easier to manage. We create a class named `Panel` containing all the geometry data related to one panel. With a start- and end-point, the class internally calculates the center-point, length and normal vector. It also initializes to zero the source strength, tangential velocity and pressure coefficient. (These will be updated later.)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "class Panel:\n", " \"\"\"Contains information related to a panel.\"\"\"\n", " def __init__(self, xa, ya, xb, yb):\n", " \"\"\"Initializes the panel.\n", " \n", " Arguments\n", " ---------\n", " xa, ya -- coordinates of the first end-point of the panel.\n", " xb, yb -- coordinates of the second end-point of the panel.\n", " \"\"\"\n", " self.xa, self.ya = xa, ya\n", " self.xb, self.yb = xb, yb\n", " \n", " self.xc, self.yc = (xa+xb)/2, (ya+yb)/2 # control-point (center-point)\n", " self.length = sqrt((xb-xa)**2+(yb-ya)**2) # length of the panel\n", " \n", " # orientation of the panel (angle between x-axis and panel's normal)\n", " if xb-xa <= 0.:\n", " self.beta = acos((yb-ya)/self.length)\n", " elif xb-xa > 0.:\n", " self.beta = pi + acos(-(yb-ya)/self.length)\n", " \n", " self.sigma = 0. # source strength\n", " self.vt = 0. # tangential velocity\n", " self.cp = 0. # pressure coefficient" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "To store all the discretization, we create a NumPy array of size `N_panels` where each item in the array is an object of type `Panel`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "N_panels = 10 # number of panels desired\n", "\n", "# defining the end-points of the panels\n", "x_ends = R*np.cos(np.linspace(0, 2*pi, N_panels+1))\n", "y_ends = R*np.sin(np.linspace(0, 2*pi, N_panels+1))\n", "\n", "# defining the panels\n", "panels = np.empty(N_panels, dtype=object)\n", "for i in xrange(N_panels):\n", " panels[i] = Panel(x_ends[i], y_ends[i], x_ends[i+1], y_ends[i+1])\n", " \n", "# plotting the panels\n", "size = 6\n", "plt.figure(figsize=(size, size))\n", "plt.grid(True)\n", "plt.xlabel('x', fontsize=16)\n", "plt.ylabel('y', fontsize=16)\n", "plt.plot(x_cylinder, y_cylinder, color='b', linestyle='-', linewidth=1)\n", "plt.plot(x_ends, y_ends, color='#CD2305', linestyle='-', linewidth=2)\n", "plt.scatter([p.xa for p in panels], [p.ya for p in panels], color='#CD2305', s=40)\n", "plt.scatter([p.xc for p in panels], [p.yc for p in panels], color='k', s=40, zorder=3)\n", "plt.legend(['cylinder', 'panels', 'end-points', 'center-points'], \n", " loc='best', prop={'size':16})\n", "plt.xlim(-1.1, 1.1)\n", "plt.ylim(-1.1, 1.1);" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAF/CAYAAAC44+WEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8zPcfwPHXXcZl71hJCBFijxqlRoyapaiWUpVOVRTd\n2ypKl7a0qPWjrVFqpCV2ULMoraJmiJCBLJmXu8/vj6+Ey12QcblL8nk+Hveo7/e+9/2+79PLfe77\n/iyVEEIgSZIkSfegtnQAkiRJkvWTlYUkSZJ0X7KykCRJku5LVhaSJEnSfcnKQpIkSbovWVlIkiRJ\n92Vr6QDMJTQ0lF27dlk6DEmSpDKlY8eOREZGGu0vt3cWu3btQghRpMeECROK/NqK+JDlJctLlpf1\nPIpbXgX9yC63lUVxREVFWTqEMkWWV+HI8iocWV6FY67ykpWFJEmSdF+ysjAhLCzM0iGUKbK8CkeW\nV+HI8iocc5WXSghRLueGUqlUlNO3JkmSZDYFfXfKOwsTTPUEkAomy6twZHkVjiyvwjFXecnKQpIk\nSbovmYaSJEmS8sg0lCRJklRkVldZPP/881SuXJlGjRoVeMxrr71GcHAwTZo04a+//irxGGSOtHBk\neRWOLK/CkeVVOBWmzeK5554jIiKiwOc3btzIuXPnOHv2LPPnz2fkyJGlGJ0kSVLFZJVtFlFRUfTp\n04d//vnH6LlXXnmFTp06MWjQIABCQkLYtWsXlStXNjhOtllIkiQVXrlps4iJiSEgICBv29/fnytX\nrlgwIkmSpPKvTM46m7/WU6lUJXr+yMhIQkNDS/Sc5ZksL0NaLaSlQWoq3Lp156FSga0t/P13JK1a\nhWJri9FDowFvb7C3t/S7sB7y81U45iqvMldZ+Pn5ER0dnbd95coV/Pz8TB4bFhZGYGAgAB4eHjRt\n2jSvEHMbgeS23L7fthCwYUMkCQlQuXIoV67AH39EEh8POTmhJCTA9euRZGRAVlYoOTng4BCJoyP4\n+ITi4gJarXI+F5dQbt4EnS4SnQ4cHJTjU1OVbSGU5+3tI3F3h4CAUHx9ISdH2W7ePBQfH7hxIxJ/\nf3jqKaXSsabykttlazsyMpIlS5YA5H1fmlLm2iw2btzI7Nmz2bhxIwcOHGDcuHEcOHDA6DjZZiEV\nVmoqnDgB//yjPE6ehMuX4coVcHSEgADw9zf+b6VK4OoKLi7KQ6NR7iKKSghITobr15WHUhnd+XdC\nAkRHw9mzEBcHgYFQuzYEBxs+AgLAxqbEikeqIAr67rS6yuLpp59m165dXL9+ncqVKzNp0iS0Wi0A\nI0aMAGD06NFERETg7OzM4sWLad68udF5ZGUhFSQnB/77706lkPuIj4d69aBxY2jUCBo0gBo1lArB\n2dnSUZuWmQnnz8O5c0rlcffjxg3lvbRqBS1bKv8NDgZ1mWuplEpTmaksSkpxKotImSMtFGsvr8xM\n+PNP2L1beezfD5Ur36kUch9BQaXzS7y0yuvWLTh6VHnvhw4p/715E1q0uFN5tGoFBWRxrYa1f76s\nTXHLq6DvzjLXZiFVXDk3r3Nl2lskblqD0OXg2qYTAR99iUOtugbHpaUpFcKuXUrlcOSIcsfQoQO8\n+ir8/LPSiFyaEhMTeeONN1ixYgXZ2dl07tyZWbNmUb9+fbNd08VFec8dOtzZl5AAhw8rlcfChTBi\nhHLX1K0bdO8OXbqAu7vheXSpyVz59B0SN6xAn52FS8v2BHz0BY51Cx44K5U/8s5CKhP0WVmc7NmU\n7KuXIUdJS6JSYePiRsjGY5xP9GPdOvjtN/j7b2jW7M4XZZs24OZmudi1Wi2NGzfmwoULZGdn3w5d\nhaurK3///Tc1atSwWGxCwKlTsHmz8ti3T7nj6t5dqUAeaqbjTP+WZF04g9Bm571O7exKvQ2H0NQI\nsljsknnINJRUpt0MX8HlD15Fn34LAJ1QcTk7mJPaVpxWtUNn70bLlkqKJSTEurqebth7gFFfzSEt\nI9Ngv52NDcN7PsrMkS9YKDJj2dlw6jQcP648bibkEKQ6Sl3bozTQHMbRJl050MYW7wHDqDF9nmUD\nlkqcrCwKQeZIC6c0yuvyhDFcWbaEaG0QNe3PYKvKMev1StKs6zksSzb9WaxtDysD7Eo5ouK5nB2E\nr+1VPIL8abD1X7NfT/49Fo5ss5AqJCFgzx5YGPEUD2Vcop2zMm9Ypt4BB7XyS922cjVcmj1syTDv\nqcax/3A48DeZOr3Rc35VquLRo4OJV1mHrOiLZJz6G/Q6tMIWG/RUtz/Phex6LDw7ln4blJSVRmPp\nSCVzk3cWklW6cgX+9z9YvBia2u3idbtncUi/ZnSc2tGJ2ot/x6XFIxaI8sEkJCRQs2ZN0tLSDPY7\nOTkRHh5O586dLRTZ/eUkJ3KifVBe+u9uOrWGNW5f8sPFF+nXT8WQIdCpk+yaW9aVm7mhpPIrKwtW\nrYKePZVG1pjLOazoP4H3c7rhkH4Nh9r1UDu7onZxQ+3ihkrjgN87n1p1RQHg6+vLb7/9hoeHB25u\nbri5ueHg4MDUqVOtuqIAsHX3pPaicGw8vPLKHnsNjg0fwkafxVNJo9j9+CCaBN3k9deV9qKvv4ak\nJEtHLpU4UU4V563t3Lmz5AKpAIpbXv/9J8SYMUJ4ewvRpYsQP/4oROKZi+L0kx3EkSA7caS2vYj5\naoLQa7VCl5UlkvdsFUnbfxM5Kckl8wZKSXZ2tti6dauYOnWqSEpKsnQ4haLPzhYp+3aIxK0bhDbp\nphBCiBsblou/mniLI0F24u92tUTKwT3ijz+EGDxYCA8PIV5+WYjjx4t/bfn3WDjFLa+CvjvlnYVk\nMXv3Qr9+0K6d0rf/zz9h2zbo5bmaS0+1JO3ofuwq+xG8bAvVxk1EZWuL2t4et3Zdce/cGxtXC/aH\nLQI7Ozu6du1K27Ztcc8/mMHKqezscG3TCY+ufbB19wTAq89g6m04hFOTVmivRXP2ma7UOjKFn5fl\ncOqUMvK9Vy9o3x5WrFB6Wklll2yzkEqVTgcbNsBnnynzGr3+Ojz3HDg5gS49jSufvMGNVYsAcO/a\nhxrT52PrWcoj6KRCEVotV7+eRNy8z0AIXFq2I/CLJdhXq45WC+vXw5w5cPo0vPIKjBkDXl6Wjloq\niOw6K1lURgYsXQpffAGenvDWW9C//53pNdJPHefiuGfIOv8fKnsN/u9/hs/QESU+/bxkPin7dnDp\nzefQxl/Dxt2T6tPm4tm9f97z//4LX34J69bByJEwfnzpj6SX7k82cBdC7vS90oO5V3mlpMAnn0DN\nmsro6gUL4MABGDhQqSiEEMQvncN/Ax4h6/x/ONSuR8jaffg+80q5rSjK6+fLrW1nQsIP49apF7rk\nRC6OGsTlj0ejz8wAlIkZFy5UphuJj4c6deC995TZdO+lvJaXuZirvGRlIZlFVpbSK6ZOHWWG1x07\nIDxcmX4jtw7IuXmdCyMGcGXyeIQ2G5+nXyJk7X4551AZZuftS9D8tfh/9CUqO3uu/zyf0/3bkHHm\nRN4xNWvC/PnKJIeJiVC3LrzzjjJvlWS9ZBpKKlE6nTJR38cfK78kp01TusHml7p/J1FvhCkpCzcP\nJWXRY0DpByyZTfrJY0pq8cIZVBoHJbU45GWjO8bLl+HTT5VG8Oefh7ffVtYIkSxDpqEksxICfv9d\nmcDv+++V9onffjOuKIRWS8wXH3H22R5o46/h3OIR6v12WFYU5ZBT/aaErDuI95PPIbIyiZ4whguv\nPklO0k2D46pXh+++UyaAzMxUfmR8+aXsPWVtZGVhgsyRFs6cOZF07Kj8IpwyRekS27698XFZ0Rc5\n83Rn4r6fASoVVcZ8SJ0ft2JfrXrpB21BFenzZePkTI3p8wj8+kfULm4kb93AqcdakHpwt9Gx/v4w\ne7Yyvcu2bcoaIxs3VqzyKgmyzUKyOlevwqBBMGmS0v3177/h8cdNLyl68/dVnOrTkrRjB7Gr4k/w\nj1upNvZjVLZyerKKwKv3U9T77TDOTVujjb3C2WHduDprEiLHeELIkBClkvjqK6Vr9dtvK91uJcuS\nbRZSoel0Sqpp0iR4+WX48ENljWqTx6ancWXyeG6sXgKAe7fHqTFtHrYesqN9RSS0Wq59O4XY72eA\nEDg/1JbAL/+Hxs/0mh7Z2coYjWnT4JlnYMIE8PAo5aArGDnOQioRR48qA6scHGDuXLjXQm/p//7F\nxfHD7jRwfvA5Pk+/VG67xEoPLnV/JFFvhqGNu6p0cJj6PZ49nyjw+IQE+OgjZYzG5Mnw4otywkJz\nkQ3chSBzpMZSU5VBVD17KgOqdu26U1HkLy8hBPFLvuW/ge3JunAGh+D6ytgJEz1hKiL5+QLXNqHU\nCz+Me+fe6FKSuDjmaS5/+Cr6jHSjYyMjI/H1VX6cRETAokXQtStcvGiBwMsA2WYhWYQQsHat0kMl\nKUkZhfvcc6bbJQC0NxI4/3J/rnzyhjJ2YsgIZexEnYalG7hk9Wy9fKg171f8P56Fyl7D9RULON3v\nYdJP/13ga5o2VTpQ9OoFLVsqKSq98TIhkhnINJRUoIQEpU3i9GnlV13Hjvc+PmXfDqLeCCMnIRYb\nd09qTJ+HR7d+pROsVKaln/6bqLHPkHn+tDLdy3sz8bnPKP7Tp5VxGfb2yt1GrVqlGHA5JtNQUqFs\n2aL8iqtTB44du3dFIbRaYj77gHPDe5KTEItLy3bUCz8sKwrpgTmFNKbu2v14D3oBkZ1F9KSxXHjl\nCXISbxT4mpAQpZttnz7QqpXS7VbeZZiPrCxMqMg55cxMpbviCy/AsmUwY8a9l8zMunyBZV2aKTOO\nqlRUHfsxwT9uxb5aQOkFXcZU5M/Xvdg4OVNj6vfU/HY5Nm4eJG//jVOPtWDjd7MKfo0NvPGGkpr6\n+Wdlpb7z50sxaCsk2ywks/v3X2jdGi5dUu4m7reI283wFZzq05LM86exqxpAnZ+3U3XMh6hyp5KV\npCLw7PkEIeF/4vxQW7RxMVyZ+hZXv5pgckxGrrp1lbuMxx+Hhx9WKg6pZMk2CwkhlIbCSZOUO4l7\nNWAD6NJuET15HDfXLAXAo3t/qk+bm7cojiSVBJGTw7XZnxA7Z7oyJqPZwwR+tRSNf+A9X3fsGDz5\npNJj6quvlG7e0oOT4ywkk+LjlcohPl75NRYcfO/j00/8xcVxQ8mKOofKwZGAD7/Ae9ALskusZDap\nB3Ypk07GxWDj6k71T77Ds/eT93xNcrKSSr14EX75RTZ+F4Zs4C6EipJTPnwYWrRQJvvbt8+wokhP\nT2fDhg2sXbuW5ORkhF5P3KKv+e/JdmRFncOhbkNC1u7HZ/CL7Nq1y3JvogyqKJ+vknIkU1Dvt8O4\nd+2DLjWZi2OHcun9V9Clp6HVatm8eTO//PILsbGxea9xd1cqiWefVdJS69ZZ8A2UMnN9vuTEPBXU\njz8qg+zmz1dWrLvb6tWrCQsLw8bGBiEEWq2WD5oH0ytOmaDH95mR+L37KWqHAub4kKQSZuvpTa3v\nV3P9p3lcmfYWN1Yt4o/tWxnz3w10QiCEIDs7m7Fjx/Lpp5+iUqlQqWDsWKUdbtAg+OMPmD4d7Ows\n/W7KJpmGqmB0Onj3Xfj1V+XXVqN86wydP3+exo0bk55uOJLWQQUL63rR65vFeDzatxQjliRDGf/9\nw4lRT9Npx7+k5fsTd3Z2ZuHChQwaNMhg/40bMGyYkp5auVKZ4VYyTaahJBITlZGvx47Bn38aVxQA\nP/zwA1qt1mh/toCNDTvJikKyOMe6jfh38FiEiRmL09LS+Oyzz4z2e3sr66v06qWkpY4eLY1IyxdZ\nWZhQHnPKJ08qA5fq14dNm8CrgElfr1y5YrKy0AMx100PkCqP5WVOsrwKx1R5JSQmkV1A4iAuLs7k\nfrUaPvgAZs2C7t2VxbrKIznOQiqy8HAIDVX+UL76Cu61hEQrDyccTXwqHBwc6Nq1q9lilKTCaN26\nNRoTo0XVwEM+bggTP3hyDRyo/E28+KIy1b70YGSbRTn3/ffwySdKG0Xr1gUfp7uVSvSkscSsWcaT\n0Tkk6FXk6JXyU6vVeHt7c+rUKby9vUspckkqmBCC9u3bc+TIETIzM/P2O6pgmb8tDVvdHpMRULPA\nc5w/r6Sl+vZVxhfJKc8Vss2ighFCWeL0iy+Uka33qijS/jnC6cdbc3Ptjzg5ObHju1kMHfYsLi4u\nODo68sQTT3D48GFZUUhWQ6VSsWXLFkaPHo2npycajYYuXbqw48fF1KlRnbRjBznVpyU3f1tZ4DmC\ngpQu4wcPwlNPQUZGKb6BskiUU8V5azt37iy5QCxApxPitdeEaNJEiGvXCj5Or9OJ2B++FEdDnMSR\nIDtxsndzkX72ZKGvV9bLq7TJ8iqcwpaXNvGGODdyoDgSZCeOBNmJqHdeFDlptwo8PjNTiKefFuLh\nh4WIjy9msFaguJ+vgr475Z1FOaPVwvDhSm+PyEioUqWA467Hcf6FvsR8+g5Cq8V3+GjqrtmLY+16\npRqvJJU0Ww8vas1ZRcCUOag0DtxY/T9O92tN+r9/mTxeo1HGHXXpAm3bwuXLpRxwGSHbLMqRjAzl\ndloIWLUKnJxMH5eyewtRbz1Pzo14bDy9qfHpD3h0eax0g5WkUpBx5l8ujnuGzDP/orKzx+/tafiG\njSlwepqvvoJvv4UdOyAwsHRjtRZybqhyLilJaairXh0WLzY9SlWfnc3VLz8mfsGXALg8HErg54ux\nr+JXytFKUunRZ2ZwZfo7XP9pLgBuoT2pMWMBdt6+Jo//9lulrW/Hjoo5p5Rs4C6EstYP/vp1ZR7/\npk1h6VLTFUVm1FnOPNVBqShsbKj2+mSC/7epRCqKslZelibLq3CKW15qB0eqT/qGWt//go27JymR\nmzj12EOk7Nth8vgxY+Dtt5W/qXPninVpi5DjLCSTkpKgWzfo0QO+/tp0978ba3/k9OOtST9xFHv/\nQOquiKTKq+/KdSekCsXj0cepF34Yl5btyUmI5dzwnsTMfN/kmIxXX1XGJXXuDGfOWCBYKyTTUGXY\nrVtKRdGypTIqNX8aVpeaQvTE17i5XlkJxrP3k1T/5DtsXN0tEK0kWQeh0xH7/adc+2YK6PU4NWlJ\nza+WoalunHNatAg+/hi2bVOWca0IZJtFOZORAb17KznV+fON7yjS/j5M1LhhZF0+j9rRCf+PZ+E9\ncLhcd0KSbrt1eC9Rrw8n++pl1M6uVJ8yG6++Txsdt3QpvPcebN2qTJdT3sk2i0Kw9pxydrayEljl\nyjBvnmFFIfR6Yud/zn9PdSDr8nkc6zUhZP1BfJ4MM1tFYe3lZW1keRWOucrLpcUjhIT/iUf3/ujT\nUol6fThRb7+ALu2WwXHPPgszZ8KjjyqLKVk72WYhAZCTA888oyxUv3Sp8t9c2oRYzj33GFdnvg85\nOVQKe426q//AoVZdywUsSVbM1t2TmrNXUP2T71E5OHLz12WcfrwV6ScMx2QMHQrvv6+0DV6/bqFg\nLUymocoQvR6efx6uXoUNGwzXFk7eFcGlt14g52YCtp4+1Ji5APdOvSwXrCSVMRlnTypjMv47gcrO\njmpvTqXSc6+huuvW/f33lS6127eDs7MFgzUj2WZRxgkBr70Gx49DRMSdAXf6rCyufv4h8Yu/BsC1\nbWcCP1+MXaWqFoxWksomfVYmMZ++S8Ky7wBw69CdGjMXYOdTGVD+Dp97TllMae3ae8/gXFbJNotC\nsMac8jffKNN3hIffqSgyL57hv6c6KBWFrS3V3ppK7SUbS72isMbysmayvAqnNMtLrXEgYMIsan2/\nGhsPL1J2b+bUYy1I+WMboPQ4/OEHZVqdV15RKg9rI9ssKrBNm5QplMPDlYXohRDcWLOU04+3JuPf\nv7APqKmMnRjxlsEtsyRJRePxaF/q/XYEl9Ydybkex7mwXlyZ8S767Gzs7GD1amXFyYkTLR1p6ZFp\nKCt34oQyMGjdOmWSM11qCpc/HkViuDL1smefQVSfPFuOnZAkMxA6HbHzZnLt68mg0+HU6CECv1qG\nQ2Bt4uLgkUfgrbdgxAhLR1pyZJtFGRQfr6xDMWWK0gMq7dghLo4fRnb0RdROzgRM/Bqv/sPk2AlJ\nMrNbR/cTNf5ZsmMuoXZ2ofrk2Xg9PoRz56B9e1iyRFmqtTyQbRaFYA055awsGDAAhgyBoUP0xM6d\nyX+DQ8mOvohj/aaErD+I94BnraKisIbyKktkeRWONZSXS/M2ypiMnk+gT7tF1BthRL35HDWrpLJy\npTIWw1rGYMg2iwpECHj5ZWUtio/HXONcWC+ufv6hMnbi+XHU/WUPDjXrWDpMSapQbN08qPnNz1Sf\nNg+1oxM31/3E6cdb85DnEd57T/lxV55X25NpKCv06afwyy+w8ZONxH38IjmJ17H18qXGZwtx79jD\n0uFJUoWXce4UUeOHkXHqb1R2dlR9fQqv7xiHnb2aJUuM52krS2SbRRmxdSu8GJbF5mHvk776WwBc\nH+lK4OeLsPMtYNk7SZJKnT4rk5iZ75Pwv9kAOLV5lJeOLeTpkVV49VULB1cMss2iEEorRypycri5\nYTlnn+vN2ed6c3rpWt4PO80vddopFYWtLX7vTKf24t+suqKwhpxyWSLLq3CstbzUGgcCPvqSWvN+\nxcbTm/T9W/lG04LwKVvYtuAvLox5mjNDuhI7/wt0qcmlFpe5yqscjj8sG4ROx7kX+pB29AD6jDT0\nAn7+rSGz3YdhG52NpnoQgbOW4dy4haVDlSTpHjy6PIbTb0eIeiOMWwcimer8GGveexG98x58bONJ\nO/4nCUtnE7L+IHbelSwdbpHJNJSFJEb8yqW3X0CfngbAhewQatmfBsClVXuC5q3FxtXNkiFKklQI\nQqfj6hcfETf/cwCisuvgZ3ceO5UObO3wHfwiARO/tnCU9yfTUFYmMXxlXkWRoXeilv1p9EJpFbP1\nqiQrCkkqY1Q2NmiqB6HSaBACAu3PIMTt5E2OlsSINZYNsJhkZWFCaeRIVbcXyk7TueCoTidLr0Gt\nEgbPlRXWmlO2VrK8CqcslZfK1haVjS0qFWQLe+zVWcRpqynP2ZRO1l+OsyhnvPo/g8rBmaOZ7QHQ\nqLMAUDs5493/GUuGJklSEbl37o3Q6QCwV2UDkKL3IsvWHa9+Qy0ZWrHJNgsLEUIwtetSWp3/EB/b\nOADUjs549OhPjZkLrWJktiRJhXd95SKip4xHaLPhdsWxUPcZ3/zzPDYurhaO7v5km4WViYpSselE\nPXxs41A7OuE9+EWCFqyXFYUklXE+g56n3vqDVH5+HHZ+1QEQetj9p/VXFPciKwsTzJ0jFUKZpfL1\nR9YC4P3kc9T45DtcW3cokxVFWcopWwNZXoVTFsvLISgEv3em4/fWVACeDVlHWBgkl8JwC9lmUY4s\nXQrXEwR1k9YB4NG9v4UjkiTJHNxDe6Gy12B/YR8Du8YydqylIyo62WZRyuLioHFj2PT9cXi7Jbbe\nlWi07xIqGxtLhyZJkhmcHzGA5O2/UemDb+k0bQQzZ0J/K/59KNssrMTYsRAWBlUu/QqAR7fHZUUh\nSeWYRw+lZsjY8SuLF8OYMZCaauGgikBWFiaYK+cXHg6HD8OECZAUobRXlIcUVFnMKVuSLK/CKevl\n5d75MbC1JfXQbh6uf51HH4XJk813vQrTZhEREUFISAjBwcHMmDHD6PnIyEjc3d1p1qwZzZo145NP\nPrFAlIWXkgKjRimLvauuniLz/Gls3D1xbd3R0qFJkmRGtu6euLXpDDodSdvCmTFDWVnv5ElLR1ZI\nwork5OSIoKAgcfHiRZGdnS2aNGkiTp48aXDMzp07RZ8+fe57Lit7a2LkSCFeeEH599XZU8WRIDtx\n8e0XLBuUJEmlImH5AnEkyE6cfV757vrmGyE6dxZCr7dwYCYU9N1pVXcWhw4donbt2gQGBmJnZ8fg\nwYNZv3690XHCChuu7+Wvv+DXX+Gzz5Tt3BSUZ48BFoxKkqTS4v5oX1CrSd23nZyUJEaOhBs3YNUq\nS0f24KyqsoiJiSEgICBv29/fn5iYGINjVCoV+/bto0mTJvTq1YuTZriXK8mcnxDw5ptKO4WnJ2Rd\nOk/GqeOoXdxwbdulxK5jSWU9p1zaZHkVTnkoLztvX1xadUBotSRv/w1bW5gzR/luuHWrZK9VIdaz\neJABac2bNyc6OhonJyc2bdpEv379OHPmjMljw8LCCAwMBMDDw4OmTZsSGhoK3ClQc2+npYVy9SrU\nqRNJZCSEnDkMwKng5iTt31/q8chtuS23LbOdVL0B1Q9EkrR5Lf94+gPQuXMoU6ZAz56Wiy8yMpIl\nS5YA5H1fmmJV4ywOHDjAxIkTiYiIAGD69Omo1WreeeedAl9Ts2ZNjhw5gpeXl8F+axhnkZOjjKmY\nORMee0zZd/qJR0g//ic156zEsxz0hJIk6cFkx13lxCOBqDQOND50FRtnF+LioGFD2L0b6tWzdISK\nMjHOokWLFpw9e5aoqCiys7NZuXIlffv2NTgmLi4u740cOnQIIYRRRWEtFiyAKlWgd29lO/tqNOnH\n/0Tt6IR7h+6WDU6SpFJlX7kazs3bILIySYncBEDlyvDBB0o6ytpZVWVha2vL7Nmz6d69O/Xr12fQ\noEHUq1ePefPmMW/ePABWr15No0aNaNq0KePGjWPFihUlHkfuLVpxpKTApEnwxReQm11L2qJM7+HW\noTtqR6diX8NalER5VSSyvAqnPJVX7riqxM1r8/aNHAknTsD+/SVzDXOVl1W1WQD07NmTnj17Guwb\nMWJE3r9HjRrFqFGjSjusQpsxA7p1g2bN7uxLuv0B8egpe0FJUkXk0aM/MdPfJiVyE/rMDNQOjmg0\n8PHH8OGHsH27pSMsmFW1WZQkS7ZZREdD06Zw/Dj4K+1YaBNi+adtDVR29kq+sgzMay9JUsk73b8N\n6f8codb3v+Dx6OMAaLVQvz7MmwedO1s2vjLRZlFeTJgAr7xyp6IASNqyHoTArV1XWVFIUgWWm4rK\nHW8FYGcHEyfCRx8p3e2tkawsTChOzi8qCtavN26wyktB9Sh/PaDKU065NMjyKpzyVl653wHJO35H\nn52dt3/tb2DeAAAgAElEQVTwYEhKgtudQYvMXOUlK4sS9vnn8NJLygC8XDmJN0g9uAtsbXHv0sdy\nwUmSZHEOgcE41G2ILjWZ1P078vbb2CgTDH74oXXeXcjKwoTcgSuFFRsLP/8M48cb7k/aFg46HW5t\nOmPr7mn6xWVYUcuropLlVTjlsbxyp/q5OxUFyjoXQsC6dUU/t7nKS1YWJWjWLBgyROk7fbe8FJQc\nhCdJEne1W2zbgMjJyduvVsOUKUrbhV5vqehMk5WFCUXJ+SUlKdOPv/WW4f6clCRS924DtVqZTKwc\nKm85ZXOT5VU45bG8HILro6lVB13iDVIP7TZ4rlcv0GiK3nYh2yys3Jw5ypQeNWoY7k/e8TtCq8Wl\nZXvsvH0tE5wkSVZFpVKZ7BWlPAfjximZCmsix1mUgLQ0qFULIiON53c5P3IgyVs34P/xLCo9+2qp\nxCNJkvVLP/EXp/u1xta3Co32RqFS3/ntnpUFNWvC1q3QoEHpxiXHWZjRggXQrp1xRaFLu0XK7i2A\nsta2JElSLscGTbH3DyQnIZa0o4ZzfWg0yjQgX39toeBMkJWFCYXJ+el08NVX8O67xs+l7IpAZGXi\n3LwN9lX8Si5AK1Mec8rmJMurcMprealUKjxu94pKjPjV6PkRI+CXX+D69cKdV7ZZWKnNm8HXF1q2\nNH5O9oKSJOlecpcpSNq8zij1U6kSDBgA8+dbIjJjss2imPr1U6Ygf+klw/36zAz+blUNfXoaDSLP\noPEPNHsskiSVLUKv50T7ILRxMdRdsxfnJoa/Ov/+G3r2hIsXwd6+dGKSbRZmEBMDu3bB008bP5ey\nZyv69DScGjaXFYUkSSap1Go8uvcDIGmzcSqqcWMICYHVq0s7MmOysjDhQXN+ixbBoEHg4mL8XEVK\nQZXXnLK5yPIqnPJeXne60BqnoqDw3Whlm4WV0emUQXh3LbWRR5+dTfL234DyOXGgJEklx6XFI9h6\nVyLr8nkyTv9t9HyvXnD1Kvz7rwWCu4usLEx4kLlVNm9WpvW4e3GjXKn7d6JLTcahbkMcatYp+QCt\nTHmcu8ecZHkVTnkvL5WNTV7X+iQTvaJsbGDoUFi27MHOJ+eGsjLz5pm+q4A7/8M9K0AKSpKk4ito\nNHeuYcPgp5+UjIalyMrChPvl/GJiYM8eZf75/ERODknbNgAVJwVV3nPKJU2WV+FUhPJybd0RG3dP\nMs+fJuPcKaPnGzYEHx9lloj7kW0WVuTHH2HgQNMN27f+3IMu8QaamsE4BJfyOH1JksoklZ0d7l2V\ntW5yO8fk9+yzD56KMgc5zqIIWrSAmTNNr5V7ecJrXP9pLpVfeRu/Nz8xy/UlSSp/knf8zvmX++NY\nrwn1wv80ej42VplSKCYGnJzMF4ccZ1FCLl6Ey5ehQwfj54ReT/LW9QB49niilCOTJKksc32kK2pn\nVzJOHSfr0nmj56tUgYcfLt7CSMUhKwsT7pXzW7NGGbVta2v8XNpfB9DGX8PePxDHBk3NF6CVqQg5\n5ZIky6twKkp5qTUa3Lv0BiCxgFTUsGGwdOm9z2O28hLlVHHe2s6dOwt8rnVrITZvvrOt1+vFvHnz\nREBAgLBRqYS/LWL2oMeKfG1r5+npKQD5kA+LPjw9PS39p2AWm7+aLhprVMJGhfDw8BBvvvmmyMjI\nyHs+LU0IDw8hrl0r+Bz3+v56EGD6u1O2WRTC5cvKuIrYWLCzU/ZNmzaNqVOnkp6enneck4MDX86a\nxYiC+taWYaW5TogkFaQ8fg6PHj1K+/btDb5LHBwcaNeuHVu3bs3bN3gwdOliPB9dSSmobGVlUQiz\nZikTey1apGynp6dTqVIl0tLSjI719vYmLi4OGxubEo3B0srjH6lU9pTHz2GvXr3YtGmT0X4nJyd2\n797NQw89BCi9MVevNl/bhWzgLoSCcn6rVytdZnOdO3euwMogIyODq1evmiE6SZLKo4MHD5rcL4Tg\n0KFDeds9esDOncpqeqbIcRYWFhMDJ08qt3+5KlWqRFYB/8d0Oh2enp6lFJ0kSWVdpUqVTO63tbWl\nSpUqeds+PspSq7t2lVZkCllZmGBqbpUNG5R1KzSaO/uqVKlCx44dsc9twLhNo9HwxBNP4GJq1J4k\nSZIJb775Js7Ozkb7NRoNvXv3Ntj32GPw+++mzyPnhrKwbduge3fj/cuXL6dB1Uo4qMDF3g5HR0ce\neeQR5s2bV/pBSpJUZj3//PO89NJLaDQaXB0dcFKBr6OGbdu2YZ9v5aPevZXKojSbbWRlYUL+nJ9e\nr8zJ0qmT8bFeXl78WM+bxX62fPfhuxw+fJjt27fLu4oKJDIyErVaze7du/P2hYaG0snUB6YEryGV\nLyqViq+++oqLFy+yaP58Zvnb87s/NKjub3Rs48ZKm8WZM8bnMVebhYmhZVJ+x44p62z7+Rk/l3n+\nNJnnTlGvkheN3/0IVb6UlFQxzZ0719IhSGVU1apVGfjMMM5uW0HqH1tJ2haOz5NhBseoVMo6F7//\nDnXrlk5c8s7ChPw5vx07DBu275Y70tK9ax9ZUUh5QkJCCAkJsXQYJgkh0Gq1lg5Dug/PHgMA02tc\nQMHtFrLNwoK2bzc9aSDcmX9erl1Rdh0/fpz+/fvj4+ODk5MTISEhfPrpp4wZM4YqVaqQk5NjcHxq\naiqurq68//77BZ4zfxoqN40UHh7O6NGj8fX1xdfXl2HDhpGcnGzw2oSEBIYMGYK7uzuenp4MHz6c\npKQkk9f59ddfefjhh3F2dsbT05OnnnqK6Ohog2MCAwMZNmwYixYtIiQkBI1Gw8aNGwtbTFIpc3+0\nL6jVpO7bTk6K8f//zp3hwAHIzCydeGRlYcLdOb/sbNi7F0xV1lmXL5Bx8hhqZ1dcH+laavFJJefQ\noUO0adOGixcvMmvWLDZu3Mjrr79OTEwMr776KvHx8axdazhPz88//0x6evo9R+irVCpUKpXR/rFj\nx2JjY8Py5cuZMGECa9asYezYsQbHDBgwgI0bNzJ9+nRWrVqFra0tY8aMMTrX3LlzGThwIA0bNmTN\nmjXMmzePEydO0LFjR27dumUQy86dO5k1axaTJk1i8+bNNGrUqLBFJZUyO29fXFq2R2i1JO8wvoVw\ndlZmoT161HC/nBuqkIrz1u6eW+WPP4Ro1sz0cbHzPxdHguzEhXHPFPlaZU15+8i0b99eVK9e3WD+\nnbuFhoaKLl26GOxr1qyZ6NmzZ972zp07hUqlErt27crb17FjR9GpUyejY8LCwgzONXr0aOHg4JC3\nvWXLFqFSqcTKlSsNjuvZs6fBNVJTU4Wbm5t44YUXDI67ePGisLe3F7NmzcrbV6NGDeHs7Czi4uLu\nWRZlSXn7HBYk7n9zxJEgO3HulSdMPj9mjBCffWa4z1xzQ8k7CxPuzvlt336P9orbKSgPmYIySaUy\n76O40tPT2bdvH0OHDsXBwcHkMa+++io7d+7k3LlzAPz5558cO3asyPN+5e8v37BhQ7KysoiPjwdg\n//792NjY8MQThlPcD863LOP+/ftJTU1lyJAh5OTk5D38/f2pW7euUa+phx9+uMBBX5L1yl2bO2X3\nFnRpt4yeb9sW9u0z3CfbLCxkxw7T7RXZ166QfvwQKgdH3DqYGIAhIYR5H8WVmJiIXq/H39+4a2Ku\n/v37U7ly5bxxM3PnzsXPz48+ffoU6ZpeXl4G25rbozwzbyeer127hqenp9E0Mvm/6HMrl65du2Jv\nb2/wOHHiBDdv3sw7VqVSUbVq1SLFK1mWfRU/nJs9jMjKJGVXhNHzuZVFaYy3kJWFCbk5P50OjhyB\nNm2Mj0naoszi5d6xBzZOxqMuJevn6emJWq3mypUrBR5ja2vLiy++yJIlS0hISGDFihW88MILqNXm\n+dOpWrUqiYmJ6HQ6g/1xcXEG297e3gD873//4/Dhw0aP+fPnGxxvqv1EKhs8bveKSjTRKyogAGxs\nlEXZcsm5oSzg7FllfIWHh/Fzub2gPHrIFFRZ5eTkRLt27fjxxx/zftmbMmLECJKSkhg4cCBarZaX\nzDU3NNC2bVt0Oh2rV6822L9ixQqj41xdXTl79izNmzc3egQHB5stRql0eXTvB0BK5Cb0mRkGz6lU\nplNR5iAH5ZmQm/P76y9l/Yr8tAmx3Dr8Byo7e9xDe5VucFKJ+vzzz+nYsSNt2rThjTfewM/PjwsX\nLnD8+HG++eYbgLy007p16+jbty9+pkZnmiCKkBvo2rUr7dq1Y8SIEVy/fp3atWuzcuVK/v33X4Pj\n3Nzc+Oyzzxg1ahQJCQn06NEDd3d3YmJi2LVrF506deLpp58uchyS9dD4B+LUsDnpJ46SsmcrHo/2\nNXg+t7J45hllW7ZZWMBff0Hz5sb7k7ZuACFwbdcVG1e30g9MKjEtWrRg7969BAQEMGbMGHr37s0X\nX3xBQECAwXEDb89NX1DDdv40j6muswWlgvLv//XXX+nVqxfvvfcegwcPRq/XM3v2bKPjXn75ZTZs\n2MB///3Hs88+S+/evZk0aRJ6vZ5md/3KkSmosi+3E02SieVW27SB/fvNH4Nc/MiEyMhIQkNDefRR\nGD9eGVZ/t7PDe5K6dzs1ZizA+4lnSyDasqM8LjrzIIYOHcr+/fu5cOGCpUORqHifw8yLZzj5aENs\nXN1pdDAG9V0TC2ZlgZcXxMcrYy9yv7+KSi5+VEhCKINd8qehchJvkHogEmxtce/ymEVik0rPgQMH\nmDt3LqtWreL111+3dDhSBeVQsw4OdRuiS00mdf8Og+c0GggKgtOnzRuDrCxMCA0NJTpaWWc7f4/D\n5O2/gU6H68OdsPXwMn0Cqdxo27Yt77zzDmFhYbz66quWDkeqwHKnFMrtXHO3evXg1Cnl37LNopQV\n1F6RO3Ggp+wFVSHo9XqSk5P54YcfzNZdVpIeRG7Py6RtGxD55iu7u7IwF/npNyEyMtJkCkqXmkzq\nH1tBrVYm+ZIkSSolDsEN0NQMRpd4g1t/7jF47u7KQo6zKGUnTigLjNwtecfvCK0WlxbtsPOWUydI\nklR6VCpVXq+oxHypKHlnYSGhoaFcuKA0Gt0tNwUlB+JJkmQJeWtcbFmH0Ovz9tepo4zi1mplm0Wp\ni4qCmjXvbOvS00jZvQUAj279LBOUJEkVmmODZtj7B5KTEEva0TuDKxwcwN8fbs93aRaysjDht98i\nyclR+i7nStkVgcjMwLnZw9hXebARvJIkSSXp7lRU/l5Ruako2WZRiq5dU+4q7h74mru0oZyOXJIk\nS8qrLLasMxg8Z+52C1lZmODjE2qQgtJnZZIcuQm4M6mXJEmSJTg3bYVd5WpkX71M+j9H8vbXrg0X\nLsg2i1J18SIEBt7ZTtmzFX3aLRwbNEMTULPA10lSScldszv/IkaSpFKr89pNk+6atrxqVYiNNd91\nZWVhwp49kQZ3FrmTd3nKFJQkSVYgd42LpIi1eamoKlWUykK2WZSi2Ng7PaH02dnKFB+AR88BFoxK\nkiRJ4dLiEWy9K5F1+TwZp/8GlDuLa9fMd01ZWZiQmhqal4a6dSASXUoSDnUa4FCzjkXjkkrWxIkT\nUavVnDhxgk6dOuHs7Ey1atWYMGFC3q+1rKwsxo8fT6NGjXB1daVq1ar07duX//77z+BcS5YsQa1W\nc/DgQYYOHYq7uzt+fn6MHTuWrKwsg2PT09N55513qFmzJhqNhlq1ajFt2rT7zqK6efNm2rZti4eH\nB66uroSEhDBlypSSLRSpTFDZ2OSta5Gb+ahUCRISoH37ULNcU1YWJsTF3ZlAMFH2gir3+vXrR7du\n3Vi/fj1DhgxhypQpTJ48GVAqi9TUVN5//31+//135s6dS2ZmJm3atDFa6hRg2LBhBAcHs3btWkaO\nHMmcOXOYPn163vM5OTl0796dhQsXMn78eCIiInjxxReZMmUKb731VoExXrhwgb59+xIUFMSqVasI\nDw/n9ddfJz09veQLRCoT8nehtbdXVvW8ft0815Mr5eUjBNy8GYm7eygiJ4fkrRsAOXFgYR2tbX//\ng4qp+bnsEjnPyy+/zNtvvw0oK9WlpKTwxRdfMG7cONzd3VmwYEHesXq9nkcffZQqVaqwfPlyxo0b\nZ3CuoUOHMmHCBAA6d+7MwYMHWb58ORMnTgRg+fLl7N27l927d9OuXTsAOnXqBMCkSZN499138fHx\nMYrx6NGjaLVavv/+e1xcXADz9XqRygbXh0Oxcfck89wpMs6dwrF2PapUgfDwSF58MbTEryfvLPJJ\nTwdbW2WO+Ft//kFO4nU0gbVxqNPQ0qFJZvLUU08ZbA8aNIhbt27lLWW6atUqWrdujaenJ7a2tri4\nuHDr1i3OnDljdK7evXsbbDds2JDLly/nbUdERFCjRg3atGlDTk5O3uPRRx9Fq9Vy4MABkzE2a9YM\nOzs7Bg0axJo1a4iPjy/u25bKOJWdXd6aOrmpqKpV4eZN81xP3lnkk5SkjLOAO/8DPHoMkEtTFlJJ\n/eovDZUrVza5HRMTQ3h4OIMHDyYsLIxJkybh4+ODSqWiV69eZGZmGp3Ly8twjRONRmPQZhEfH8+l\nS5ews7Mzeq1KpeLGjRsmYwwKCmLz5s3MmDGDYcOGkZWVRatWrZgxYwYdOnQo9HuWygfPHgO4+esy\nkiLWUnXU+1SpApUqhZrlWrKyyCcxUcn7Cb2epC3rgDuTd0nlU2xsLDXv6iud2xbh5+fHnDlzCA4O\nZtGiRXnPa7XaAr/U78fHx4eaNWvyyy+/mHy+Ro0aBb42NDSU0NBQtFotf/zxBx9//DG9e/cmKioK\nb2/vIsUjlW2uj3RF7exKxqnjZF2+QJUqtcw21kKmofJJSgKVKpK0YwfRxl/D3j8QxwbN7v9Cqcxa\ntWqVwfaKFStwdXWlYcOGpKenY2NjY/D8smXL0N8142dh9OjRg+joaJydnWnevLnR40G+9O3s7OjU\nqRNvvfUWaWlpREVFFSkWqexTazS4d+4FKJkQV1f4999Is1xL3lnkk5QELi6QtOl2L6hu/WQKqpxb\nsGABer2eFi1asHnzZhYuXMikSZNwc3OjZ8+erF+/ntdff53evXtz+PBhZs+ejYeHx327upoydOhQ\nFi9eTJcuXXjjjTdo3Lgx2dnZnD9/nvDwcNatW4ejo6PR6+bOncuePXvo1asX/v7+XL9+nenTp+Pn\n50fDhrI9rSLz6N6fxPCVJEasxeHhN8g2UwZYVhb5JCVB7aCOJG15CZBrV1QE69evZ/To0UyZMgUP\nDw8++ugjPvzwQwBeeukloqOjWbRoEfPmzaNVq1aEh4fTv39/ox8Rpn5UqFQqg/22trZs3ryZTz/9\nlPnz53Px4kWcnZ2pXbs2vXv3xt7e3uT5mjZtSkREBO+99x7x8fF4eXnRvn17li9fjkajKekikcoQ\ntw7dUTk4kn78EG4PRePrG2qW66hEUX4elQEqlapIv/xmz4aEg0d4fH8b7CpXo+GeC6jk2st5ilqu\n1mjixIlMnjyZnJwcub52GVOePocl4cKoQSRtXkt0ly8I143hrt7ehVZQ2cq/kHySk0F37ivgdgpK\nfolIkmTlcjMgXmfXculSpFmuYXXfhBEREYSEhBAcHMyMGTNMHvPaa68RHBxMkyZN+Ouvv0rs2vrs\nbDKjL+ETGwnIUdvlXf4UkSSVVe6hvVDZ2eN0eS8i/iI5yYklfo0HqizatGnD0qVLjea4KWk6nY7R\no0cTERHByZMnWb58OafyreaxceNGzp07x9mzZ5k/fz4jR44skWvf3LiGv1tVQ2z4kg428crKR/J7\npFybMGECOp1OpqCkMk+XmoxK44AKQYvY4/zTtgYxMz8o0VTdA/2VaDQawsLCqFatGuPHj+f06dMl\nFsDdDh06RO3atQkMDMTOzo7Bgwezfv16g2M2bNjA8OHDAWjdujVJSUkm5+gpjPSTx7j89gvob6VQ\nQ/WPslMIzr/UD+314p1bkiTJnIQQnB3eA31aKgCN7PcjsjKJXzaH68t/KLHrPFBlERkZycmTJxk+\nfDhLly6lfv36hIaGsmLFCrRabYkFExMTQ0BAQN62v78/MTEx9z3mypUrxbpu/KKv0Wcro3Fr2p3m\ncIbSh17odNxY/b9inVuSJMmc0o7uRxt3TZnYDkjTK6vniYx04ubNLLHrPHDX2ZCQEL788kumTZvG\nL7/8wrx58xgyZAi+vr6EhYUxYsQIatWqVaxgHjR/nP/WqqDXhYWFEXh7rnEPDw+aNm2aN/la7gIh\noaGhZF06z+G0HAAecrgOWpQKIyOd7lFnjY6vyNuSZC0iIyMt/vdgDdvZMZc4nKZFn6mnhaPy+z/3\nB2/LhLj7vj4yMpIlS5YA5H1fmlLkrrNHjx5l/Pjx7NmzRzmRSkX//v2ZPXs2VapUKcopOXDgABMn\nTiQiIgKA6dOno1areeedd/KOeeWVVwgNDWXw4MGAUont2rXLaH6fwnStuzLtbeKXfQfabGK1/lSx\nU+5U1E7O+L3/Gb6DXyzS+ymPZJdFyRrIz+EdGWf+5fSAtojMDKPnHOs1oV74n4U6X4l0nU1PT2fh\nwoW0bNmSFi1aEB8fz6xZs7hy5Qpz585l3759DBkypFCB3a1FixacPXuWqKgosrOzWblyJX379jU4\npm/fvixduhRQKhcPDw+jiqKwKoWNQW2vDGy6mB2St1/t7IpX36eLdW5JkiRzcqzTAJcW7cBGSRQd\nzVCmvlc5OFLtzU9K7kLiARw/fly8+uqrwt3dXdjZ2YmBAweK7du3Gx23YcMGYW9v/yCnLNDGjRtF\nnTp1RFBQkJg2bZoQQoi5c+eKuXPn5h0zatQoERQUJBo3biyOHDli8jwP+NbypJ06Lk4NbCfe8Bkv\n5lWzEUeCNSLj/Omiv5FyqrDlKknmID+HhnQZ6eJ4a39xJMhODHB7WvzToba4uXltkc5VUNk+UBpK\nrVZTrVo1XnrpJV5++WWq5i4jl8/JkycZNWoUO3fuLLnarIiKeps6eYIW5xVN6KQ7R63vVuHRrZ8Z\noiu75O2/ZA3k59CQNv4a/zwSiN7Gnne8fmbb3seKPIaoWGmoX375hUuXLjFhwoQCKwqA+vXrW0VF\nURx2DnZ413sOgMTbyxVKUnGEhYUZTIFeWnLXBb978aXCvHbx4sVmiEoyh6Qt60EIbtV6lGpBfcwy\n2PSBKosnnnjCaJrm8srDA066KSO3k3f8jt7MAxGlisESI8Ufe+wxDhw4UKQOJ0uWLDFYw0OybrkL\ntd2o3R8TkxaXCDl0NR8PDzh85QqO9Rqjv5VC6r7tlg6pXEs/dZzzrwzk7zbVOd3vYRI3rbF0SGZh\niZSJj48PrVq1MpjJVip/cm5eJ/XQbrC1Jdb/Ma5fjzTLdWRlkY+HB9y6dWdeqNwaW3pwQqslacs6\n4hZ8RcruLYgCFgpK++sgZ57qSPL2cHISYkk/cZRLb7/AtW9LsAfHAzh+/Dh9+/bFy8sLJycn2rVr\nxx9//JH3fFhYGAEBARw7doz27dvj7OxMnTp1mDdvntG5tm/fTvPmzXF0dKR27drMnz//gePITRvt\n2bOHfv364erqio+PD6NHjzZawvXatWs8++yz+Pr64uDgQJMmTfjpp59Mnu/uNFRgYCDDhg1jxYoV\n1KtXDxcXF1q2bMnevXvzjgkNDWX37t3s3bsXtVqNWq2mc+fOgLKq4PDhw/Hz88PBwYFq1arRp08f\nEhISHvh9SiUraVs46HS4telMGp6Y67eBXM8iHw8PUKtD8eheiWuzJpG0LZzqWi0qE2smS8ayLp3n\nzNOd0aXdQp+ViVqjwa5yNeos34mdt6/BsdGTx6PPSDfYp89IJ3buTHyfHYWtu6fBc7rUZOKXfUfS\nlvXYuLjiO2QEHj2fKFaK5+jRo7Rv356HHnqIBQsW4OjoyNy5c+natSv79u2jefPmAKSkpDBkyBDG\njx/PxIkTWbRoESNHjqRu3bp5A51OnTpFr169aNWqFStXriQzM5OJEydy69YtbG0f/E/tmWeeYdCg\nQYwePZqDBw8yefJk0tLS8toQ0tLS6NixI8nJyUyfPp2AgACWLVvGsGHDSE9P56WXXirw3CqVij17\n9nDmzBmmTp2KRqPho48+4rHHHiMqKgp3d3e+//57nnnmGfR6fV6F6ObmBsCwYcOIjo7m888/JyAg\ngNjYWHbs2EF6enqB15TMKyni9kJt3fuTeQbq1Ak1z4WK1LeqDCjqWzt1Sog6dZR/n+jWUBwJshPJ\nf2wrwcjKtvuV68neD4kjwRpxJMjuzqOukzj7Uj+D4/Q6nThS297wuNuPv5p4i6TITQbHa5Nuin86\n1BZH67veOa6hh4h6+8VivZ/OnTuL+vXrC61Wm7dPp9OJevXqiX79lJiHDx8uVCqViIyMzDsmKytL\neHt7i5dffjlv35AhQ4Svr69IT0/P2xcdHS3s7e1FzZo17xvL4sWLhUqlEiNHjjTYP3XqVGFjYyPO\nnj0rhBDi22+/FSqVSuzatcvguK5du4pKlSoJvV5vcL5Lly7lHVOjRg3h5eUlkpKS8vYdPnxYqFQq\n8fPPP+ft69ixo2jfvr1RjC4uLuLbb7+973sxt3L81VUo2uREcTTESRwJ1ojs6/Fi/HghPvuseOcs\nqGxlGiofDw+Ij48EwFOmogol69J5MqPOQv60U46W1D1b0aXdurNPpUJl72D6REKPjau7wa64hV+h\nTYhFZN1Jx+gz0kj8/RfSTx4rUrwZGRns3r2bJ598UgkzJ4ecnBz0ej1dunRh9+7decc6OzvTsWPH\nvG17e3vq1KlDdHR03r79+/fTq1cvg2VR/f39eeSRRwyuq9Pp8q6Vk5NjFNdTTz1lsD1o0CD0ej2H\nDh0CYPfu3fj7+9OhQweD44YOHUpCQgInT5685/tu06YN7u53yjd3Wda730tBWrZsycyZM/nmm2/4\n559/ZPdVC0ve/htCq8WlVQfsvH25dg0SEyPNci1ZWeST22YhBHj0GABA0uZ1CJ3OwpFZP11qCqqC\n0jCNBlEAACAASURBVC0qFfrM9Ls2VXj1H4rK3nhJUBsXd5ybtjbYl7TpV0S2cc80vTaL5MhNRYr3\n5s2b6HQ6Jk+ejL29vcFjzpw5JCUl5X0Zenp6Gr3e3t7eoC0hNjbW5GwClSpVMvhSDQoKMrhW7owE\nufKfI3c7d1LNmzdvmuzCntvr6ebNmwW+Z5VKhZeXl8G+3GVZ87eLmJI7q8LMmTNp0qQJ/v7+TJky\nRVYaFpL7Qzb3h21sLOT731tiZJtFPg4OYGMTSmamMq+KfUAtsqMvcOvIPlxbtbd0eFbNIbg+FPCd\nYedbBVsvwzYL/3dnkHHyGJnnTqPXZqO2t0dla0/QgnVGKxSqNabvQlQ2tqg1Resr6OHhgVqtZvTo\n0Tz77LOmz3+7PeRBvgyrVq1KbGys0f64uDiDdpXff//dYG2Y/JO3xcbGUq9ePYPXA/j5+QHg5eXF\nmTNnjK6Te+38lUFJ8vX1Zfbs2cyePZuzZ8+yZMkSJkyYgK+vL6+88orZrisZ091KJWX3FgDcuz0O\nwLVr0LNnqFmuJ+8sTPD0hMRE5YvCo4cyglumou5PrdHg/94MVI5OBvtVDo4ETPrGqCHaxsWVumv2\nEvTDOvze/ITq0+bSaF8UTvWaGJ3be/ALqB2cjPajUuHZc0CR4nV2dqZ9+/YcO3aMZs2a0bx5c6PH\nncvcvxG9TZs2bNy40aCxNzo62qCnEUCDBg0MrpH/y33VqlUG2ytWrECtVtO6tXK3FRoaypUrV9i3\nb5/BcT///DOVK1emfv36D1YA96DRaO7baB0cHMzUqVPx9PTk33//LfY1pcJJ3rUJkZ2Fc/M22Feu\nBih3FkWcx/W+ZGVhgotLJLnLaHh2vysVVUAXUOkOn8EvUmv2SpwfaoutbxVc23UleGkE7qE9TR6v\nUqlwbd2Byi+Mw6v3UwXeQfgOehHnFm1ROzkrO2ztUGkc8X9vJvbVqhc53i+//JIjR47QvXt3Vq5c\nya5du1izZg0ffPAB7733Xt5xBd1Z3L3/ww8/JCUlhW7durF+/XpWrVpF9+7dqVKlSqHSNJs2beLt\nt99m69atTJ06lcmTJzN8+HCCgoIApStvcHAwAwYMYOHChURERDBs2DC2bdvGlClT7lmxPWgcDRo0\n4MSJE6xatYrDhw9z5swZUlJSaNmyJV9//TURERFs376d1157jcTERLp16/bA708qGUm3Z5jITZdn\nZCiP48cjzXPB4rWbW6/ivLX27XeKlSuVf+t1OvH3IzXFkSA7ceuvgyUTXBlmyY+MXq8XyX9sE9Gf\nvCmufj1ZZFw8UyLnPXXqlBg8eLCoVKmS0Gg0wt/fXzz++ONi0yalR1ZYWJgICAgwel1oaKjo1KmT\nwb5t27aJZs2aCY1GI4KCgsT8+fNFWFhYoXpD7dmzRzz++OPCxcVFeHt7i9GjR4vMzEyDY69duyaG\nDRsmfHx8hEajEU2aNBE//fST0fnUarVBb6jAwEAxbNgwo2urVCoxadKkvO3Y2FjRq1cv4erqKlQq\nlejUqZPIysoSI0aMEA0aNBAuLi7Czc1NtGrVSixfvvy+762kleOvrgeiy0gXfzXyEEeC7ETmlSgh\nhBAXLghRvboQO3fuLNa5CyrbIq9nYe2KM9HYm2+Cry/kLqMR/ckbJCz5lkovvY7/O5+WYJRlj5zA\nzXyWLFnC888/z7lz54q9kFh5V9E/h0lb13Nh5JM4NXqIkLX7Adi/H8aPhwMHinfuElnPoqIIDISo\nqDvbeV1oI9ZW6A+oJEnWIS8Fdfu7CZTGbXO1V4CsLExKTY3k4sU7287N22DrU5ns6ItkFLFPvyQ9\nCEtMOCiVLfqsLJJ3/A6AR487lcXVq1C1qvmWQJaVhQlVq2JQWahsbPC43TVN9oqSzCUsLAydTidT\nUNI9pe7fgS41GceQRjgEBuftP3MGgoPv8cJikpWFCU8+Gcrly4YDkXNv9xJlZSFJkgWZSkEBnDoF\n9eqRN1dZSZOVhQnOzuDmpvRZzuXaqgM2Hl5knf+PjLP3nk5BkiTJHERODknbw4GCKwtzkZWFCZGR\nkdSsmS8VZWeHR9e+gExFSZJkGamHdqNLvIGmVh1lxoTb/t/enYdFVb59AP+eGYZ9R0A2AZHF0HBB\n1AzFBVRcwpY3M7fU9Geaa5qW5pKppZZZpmammGZmqbnvoqmIG6gp5MoiAiLIvs7M8/5xAhlmBhhk\nFob7c11cOuc8M3PP43FuzrPm5fETiVu0oD4LjWvZErh3T/ZYRWdSxZLAhBCiSVWboKoOhkhIAHx9\nAYEav9EpWSgQEhKCgAAgrtrAJ4uuvSAwt0Rxwk2UJN5T/GRCCFEDJpEg59heAM9XlqgQHw/4+fF/\npz4LDevQAYiNlT0mMDKCVa8BAKgpihCiWYXXoiF+mgFDN0+Y+LeTOafu/gqAkoVCUVFRaN+ev7Oo\nvhyUTT/a44IQonkVIzGrN0EBssmC+iw0rFkzwMJCtpMbACyDwyAwMUXRjSsoTU3STnCk0dqyZUvl\n9qiNkUAgwOLFi1V+XlxcHBYuXIhnz56pISr9xxhDztGKJqghcufpzkJLKtr82rdX0BRlYgrL/1ZQ\nrfjHI6SutmzZgp9//lnbYdTbxYsXMW7cOJWfFxcXh8WLF1OyqKeiG1dQnpYCkaMLTAM6yZzLzwdS\nU59PyKM+Cy1Q1G8BVBkVRU1RL+z69euIiIiAs7MzAgMD8ccff2g7pEan6kZK6hYUFARnZ+d6P5/W\nVqufnKP8CEzrvhFyG4NdusT/YmtoqOYgXmgtWx32Ih+tYonfvXsZ69dP/rw4P49da23OrrYyZGUZ\nj+v9Po1RXeq1rKyM7d69m61cuZIdOXKESSQSheWio6OZqakp4ziOgd9jj5mZmbGFCxc2dNg1iouL\nYxEREczOzo6ZmJgwX19ftmzZssrzf/75J+vcuTMzNTVl1tbW7K233mLJyckyr+Hu7s6GDx/OduzY\nwfz8/JiZmRkLDAxk586dqyzTo0cPxnGczE/VJc4fPHjAhg0bxuzt7ZmRkRFr164d27Nnj8z7LFiw\ngHEcx/755x8WFhbGzM3N2Wuvvab0s3Ecxz799FO2ZMkS5uLiwkxMTFj37t1ZXFycXNmvv/6a+fj4\nMENDQ+bk5MQmT57M8vLy5F6v6r9PRTx3795l4eHhzNzcnLm7u7PFixczqVTKGHu+9Hr1n4ql01ev\nXs38/PyYiYkJs7GxYYGBgXKfuzo9/uqSI5VK2c0QX3bVS8TyYs7KnV+8mLFZs54/VtcS5Xpb4w2R\nLJKSGHN0VFzm3vgh7KqXiD35ZV2936cxqq1e7927x5ydnZmFhQUTiUTM3Nyc+fr6sidPnsiV7dSp\nU2WSqPpjbGzMsrOz5crn5OSwJUuWsI4dO7KePXuy33//vfILqb5iYmKYiYkJCwgIYL/88gs7ffo0\n27BhA5s8eTJjjLF169YxjuPY2LFj2eHDh9nOnTtZ69atmaenJ8vPz698HQ8PD+bu7s6CgoLYn3/+\nyQ4cOMDat2/PrK2tWU5ODmOMsdu3b7MOHTqwdu3asZiYGBYTE8Pi4+MZY4wlJycze3t71rZtW7Z9\n+3Z27NgxNmbMGCYQCNi+ffsq36fiy9nLy4stW7aMnT59mp05c0bp5+M4jrm5ubFXX32V/fXXX2zn\nzp3M19eX2dnZydTx3LlzGcdx7MMPP2THjh1j33zzDTM3N2fBwcEydVx934uKeNq0acO+/vprdvLk\nSTZ16lTGcRzbvHkzY4yxzMxMNn/+fMZxHPvzzz8rP3tpaSnbtm0bMzAwYJ9//jmLiopihw8fZsuX\nL2c///xzjf9uTSlZFN6KZVe9ROx6kAuTisVy5/v1Y6xqbqVkoaKGuJikUsbs7BhLTZU/93T3VnbV\nS8TuDA974fdpTGqr14CAACYQCGS+/EUiERs4cKBMOYlEInNHUfXH0tKSHTp0SKZ8dnY28/DwYMbG\nxjJ3Ie+9994LfZ7g4GDWokULVlxcLHcuPz+fWVpasrFjx8ocf/jwITM0NGSrV6+uPObu7s5sbW0r\nEwNjjF25coVxHMd+/fXXymM9evRgwcHBcu81ZswY5uDgIJckQ0NDWbt27SofV3w5r1mzpk6fj+M4\nZm9vz4qKiiqPJSYmMpFIxObPn88YYywrK4sZGhrK1eW2bdsYx3EyyUpZstiyZYvMc9u2bcvCwp7/\n36i4u7h//75MuUmTJrEOHTrU6bNU1ZSSRerXn7GrXiKWNO8DuXMSCWPW1oylpzfc+ymrW+qzqAHH\nAV27AufOyZ+z6jUQnEiE/EtnUZ6VqfngdND9+/dx584dSKuNNy4vL8exY8dQUFBQeYzjOBgbK95C\nlTEGKysrmWOrVq1CWloaSkpKKo8VFhZi586diKs+e7KOioqKcOHCBbz77rsKY4mOjkZ+fj6GDRsG\nsVhc+ePq6gpfX1+cPXtWpnzXrl1l4m7Tpg0Afh/u2hw5cgTh4eGwtLSUea+wsDBcv35dpu4AYMiQ\n5yNiGGMyz5FIJDJlw8PDYWJiUvnY3d0dXbp0QXQ0v2nOxYsXUV5ejuHDh8s87+2334aBgYHc51Rk\nwIABMo/9/f2RnJxc6/OCgoIQFxeHKVOm4MSJE7Xu+90UKVs4EOBnbtvZAY6O6o+DkoUCVccp9+oF\nnDwpX8bAygYWXXsBEglyT+zXXHA6LDc3FyKRSOE5juNkvgg4jsOIESNgZGQkV9bS0hJdunSRObZr\n1y6FHbmlpaU4ePBgveJ99uwZpFIpXF1dFZ5/8uQJAKBPnz4wNDSU+fnnn3+QnZ0t83lsbW1lnl/x\n2aomOGWePHmCyMhIiEQimfeZPXs2OI5DVlaWTHknJ6fKvy9atEjmOaGhoTJlHRV8kzg4OODx48cA\nUPk5qr4mABgYGMDOzk7mcyqj6LPX5XOPHDkS69atQ0xMDPr16wc7Ozu88cYbSEqiYekAUHz3Nkru\nJ0BoZQOLzj3kzl+4ALzyiuwxdc2zMFDLq+qR3r2BH35QfM667xDknT2KnKN70OztMZoNTAf5+/sr\nHe3SvHlz2NvbyxxbuXIlYmNjER8fj7Kyssovu4MHD0JQbcRH1d+MqzIwMFB6rjY2NjYQCAR49OiR\nwvN2dnYAgMjISPj7+8udt7CwqNf7KtKsWTN0794dH1fs5VtN9S/yqpOyJkyYgMGDByuNKyMjQ+71\nMjIy4OLiAuD5F31aWhpaVxmsLxaLkZWVJZcIGtr48eMxfvx45Obm4ujRo5g5cybefvttXHzR/UH1\nQMWIS6s+g8Ap+EUsOppv/dAEShYKVB2n3KYNkJMDJCfzKzpWZdVnEDD/A+RHn4I4LwcGltaaDVTH\nGBkZYeXKlZg+fbrMXYSpqSl++OEHuVmnFhYWiImJwdmzZ3H16lW4uLjgtddeU9gk9P7772P27Nly\nzRQcx+HNN9+sV7ympqZ49dVXsW3bNnz22Wdy79utWzdYWFjg7t27GDFiRL3eozojIyO5uwQA6Nev\nH6Kjo/HSSy8pbZ5TxsnJSS6ZVHXo0CEUFRXB1NQUAJCYmIiLFy/ik08+AQB06dIFhoaG+O2339Cr\nV6/K5+3cuRNisbje4/ar/ntX3GXV1MxkZWWF//u//8PFixfx448/1us99U1FsrDp97rC8xcuAFOm\nyB5T1zwLSha1EAj4pqhTp4DRo2XPiezsYR7UHQUXo5B78gDshgxX+BpNyfjx49GiRQssWbIEDx48\nQNu2bbFgwQK8Uv1e+T8cx6FHjx7o0UP+Frv66+7btw8XLlxAQUEBRCIRDAwMsHLlSrSonsVVsHLl\nSvTo0QNdu3bFzJkz4eLiggcPHuD69etYs2YNVqxYgUmTJiEzMxP9+vWDlZUVUlNTcebMGfTs2RPv\nvPMOgLrPH/D398cPP/yA33//HS1btoSlpSV8fHywePFiBAUFoXv37pg8eTLc3d3x7Nkz/PPPP3j4\n8CE2bdpU789obGyMsLAwzJo1CyUlJViwYAGsra0xffp0APydxcyZM7Fs2TKYmZmhf//+iI+Px/z5\n8xEcHCzXH1FXVeuk4s5s7dq1GDlyJEQiEQICAjBp0qTKZkcHBwfcuXMH27ZtQ9++fev9efVFadJ9\nFMffgMDcEhav9JY7//Qpv5Xqf11j6tdwfei65UU+WvWhZ+vXMzZihOKyT7b+wK56idi9Ca/X+/0a\nE21eMlKplB0/fpxNnz6dLVy4kN25c6dBXjc2NpYNGjSIWVtbMxMTE9a6dWv21VdfVZ4/dOgQ69mz\nJ7O0tGSmpqbM29ubjR07tnLYK2P80NkRCi6S6qOH0tPTWXh4OLOwsJCbZ/Ho0SM2btw45uLiUjnX\nISwsjG3fvr2yzMKFC5lAIFA6d0XR+8+bN48tXbqUubq6MmNjY9a9e3d2/fp1ubLffPMN8/X1ZYaG\nhszZ2ZlNnjxZZniwos+jLJ7Ro0czT09PmWOLFi1iLi4uTCgUMoFAwBITE1lkZCQLCQlhDg4OzMjI\niHl6erIZM2bIvW91evzVVSltwwp21UvEHkxX/OXzyy+MDRkif1xdQ2e5/07qHY7j6j1bNCoqSuZW\n7t49oEcP4NEjfoRUVWUZj/HPq57gRIZ4+dJjCM0brh1bF71IvRLNEwgEmDdvXr3Wc9JlTeE6THij\nG4quX4bn2p0K14MaOhQIDQXGjpU9Xv37S1XK6pZGQylQvaK9vAChkN8QvTpDR2egbRD2PC3GjNHD\nsW3btjqNAiGEkOqkUimOHTuG2ZM/wIYzF5FlYAyr7vJNcmIxcOwYEB4u/xrUZ6FFHMePijp5kt+N\nqqr4+Hj0OXYNJUUSFP+5D+ZHT2HWrFmIjo6Gh4eHVuIlhDQ+xcXF6NOnD27cuIGCggIYAlifW4Tt\nh4/g9ddlO7gvXAA8PYEaxjU0OLqzUEDROOXQUODwYfmyb731FnKKilH8311bQUEBnjx5gpEjR6o3\nSELqQCqV6l0TlL5asWIFYmNjKydglgEoEUswYsQI5ObmypQ9eBBQNu6A9rPQsgEDgDNngKr/Zg8e\nPMCDBw/k2vekUiliYmLqNJmJEEIA4KeffkJxcbHccYFAgH379skcO3BAebJQF0oWCihq87Oy4ju5\nDxx4fqy4uBhCoVDhawgEAuq7IITUmaJEAfC/fFadn5KYCGRmAp06KSxO+1nogjffBKput+Dn56d0\nApWzs3ONE6UIIaSqQYMGKfzlUyqVysw7OXgQ6N+fnwOmSZQsFFDW5jd4MN/JnZ/PPxYKhdiwYQNM\nTU0rZ6sKAJgYGeHHH3+Um7FMCCHKLF68GNZWVqi6qIeZmRkmTpwoM1imtiYo6rPQATY2QLduwKFD\nz4+9/vrriIqKwpAhQ+DtaI8wcw573h2I3r3lZ1wSQogyrq6uOLNsPoZacWhlbY6QkBD88ssvWLVq\nVWWZzEx+JFT//pqPjyblqWjTJuDIEWDXLvlzxXduIT68PYQ2dng5OgWcgf6NTLa1taV9lInW2djY\n6OUAkntjByPvzBG0WLIOzYaOlTv/3XfAxYvA9u3qi0HZdyclCxU9fcpP0nv8GDAzkz3HGMPtvm1R\n+uAOWm09AstXeil+EUIIqUacl4ObnV3AJBK0jU6ByM5erkxQELB4MdCvn/rioBncKqipza9ZM/4f\n7MgR+XMcx1WuDplzZLeaotM96moj1VdUX6ppKvWVe+ogWHk5zDsFK0wU//4LpKQAffrU/DrUZ6FD\n3noL+PVXxecqdrPKOfYXWLUdywghRJmKXzAV7YgHAL/8AgwbBmirdZuaoeohNxdwd+e3NGzeXPYc\nYwy3evmhLOUhfHacgnmnV9USAyFEf0gKC3AjyBmstARtzifya85VIZUCLVsCe/cC7dqpNxZqhmpA\nVlb8nIvNm+XPcRxX+ZvBs/82LiGEkJrkRR0GKy2BWYeucokCAM6dAywsgIAALQT3H0oWCtSlzW/8\neGDjRj7jV1exnHDO0b16v4wy0HTalBsK1ZdqmkJ9VfxiWVMT1MiR8lskKEJ9FjqmUyf+DuPECflz\npgGdIHJ0QXlaCopuXNF8cISQRkNaUoy8KH6VUuu+EXLni4uB3bv5/gptomShQF3WVuE4/u5C0VbB\nnEAA637/NUUd+bOBo9M96lqLRl9RfalG3+sr7+/jkBYVwrRNBxi5esid//VXoGtXwMWlbq9Ha0Pp\noHff5Zf/SE+XP1c5KupI02iKIoTUT02joBgDVq8Gpk3TdFTyKFkoUNc2P0tL5R3d5h1fgYGdA8pS\nHqA4/nrDBqhjmkKbckOi+lKNPteXtKwMuacOAkBla0RVp07xCUOV1YOoz0JHKevo5oRCWIe9BgDI\noVFRhBAF8qNPQZKfC2PfNjD29JE7X3FXoQtrklKyUECVNr/AQH6BwaqLC1Z43hSl38lC39uUGxrV\nl2r0ub4qvhtsFDRB3b0LxMTwzd2qoD4LHcVxwOzZwNKl/O1iVRade0BoZYOS+wkovntbOwESQnQS\nE4uRc4LfAU9RE9SaNXzLhYmJpiNTjJKFAqq2+b35Jr908Nmzssc5kQjWoYMB6HdTlD63KasD1Zdq\n9LW+8i+dheRZFow8vWHs7S9zLieHX1n2gw9Uf13qs9BhQiEwZw5/d1FdZVOUHicLQojqKpqgrPu9\nLrdR2qZNQHg44Cw/mVtraG2oBlJWxi9dvmcP349RQVpaihudXSAtyIP/yXgYuXtpLCZCiG5iUilu\ndvOAODMdfntjYNqmfeW58nLA25vfwrnqd4mm0NpQamZoCHz0EbBsmexxgZERrHqFA6C1ogghvMJr\n0RBnpsPQ1QMm/rIrA27ZArRqpZ1EURNKFgrUt81v3Dh+wa/4eNnj+t4Upa9tyupC9aUafayvyiao\nvkNkmqBKSoDPPwe++KL+r019Fo2AmRnw4YfAl1/KHrfq3hcCE1MUXb+MssfJ2gmOEKITGGNKFw7c\nuJFfgrxzZ21EVjPqs2hgz57xt5BXrwIeHs+PP5g8FDlHdsP105VweG+KxuMihOiGwuuX8e8b3SBy\ndEGbv++DE/C/sxcV8d8dhw6pf8+KmlCfhYbY2AATJwILF8oer1xYUE+bogghdZNztGItqIjKRAEA\na9cCr76q3URRE0oWCrxom9/s2cDRo0Bs7PNjViHh4AyNUHj1AsozFaw82IjpY5uyOlF9qUaf6osx\nhpwjewHINkHl5QErVwKLFr34e+h9n0V2djZCQ0Ph4+ODsLAw5OTkKCzn4eGBl19+Ge3bt0dQUJCG\no6wbS0tgwQJg5szns7qF5hawfLUPwBhyjv2l3QAJIVpRnHADpcn3YWDnAPPAbpXHv/0W6NsXaN1a\ni8HVQmeSxfLlyxEaGoo7d+6gd+/eWL58ucJyHMchKioKsbGxuHTpklpiaYi1VcaN45cuP3jw+bGK\npih9GxWlz2v3qAPVl2r0qb4q/u9bhw4GJxQCALKz+WSxYEHDvIferw21b98+jBo1CgAwatQo7N27\nV2nZxtAnb2AArFgBzJoFiMX8MavegwADA+THnIE4+6l2AySEaFzOYfm9K774AnjjDX5Sry7TmWSR\nkZEBR0dHAICjoyMyMjIUluM4Dn369EFgYCA2btyollgaqs2vYrp+RZgGVjaw7NoLkEiQc2J/g7yH\nLtCnNmVNoPpSjb7UV/G9eJTcT4DQygYWXUIAALdu8ftrL1nScO+jrvoyUMurKhEaGop0BdvKfVFt\nBgrHcXJrpVQ4f/48nJyckJmZidDQUPj5+SE4OFhh2dGjR8Pjv/Gr1tbWaNeuXeUtWkWFqvvxqlUh\n6NcPaNEiCmZmQJu+Q5D39zEc3bIRLg6eGo+HHtNjeqydx1l7tsETgFWfQThz/jwYAxYvDsGCBcCt\nW9qLLyoqClu2bAGAyu9LRXRmnoWfnx+ioqLQvHlzpKWloWfPnkhISKjxOYsWLYK5uTlmzpwpd05b\n8ywUGT2a3z/3iy+A8qxM3OzqBk4oRNuYVBhYWms7PEKIBsQP6oTi+Ovw+nEPrHoNwI4dfFP15cv8\nYqS6QufnWQwePBiRkZEAgMjISERERMiVKSoqQn5+PgCgsLAQx44dQ9u2bTUaZ30sWQJs2ADcvw+I\n7Oxh3ikYrLy8cjtFQoh+K03mt1cWmFnAolsf5Ofz/Zlr1+pWoqiJziSLOXPm4Pjx4/Dx8cGpU6cw\nZ84cAMDjx48xYMAAAEB6ejqCg4PRrl07dO7cGQMHDkRYWFiDx1Jxi9ZQXF35JcwnTOCH0j7fQW93\ng76PtjR0fek7qi/V6EN9VYyCsuoVDoGRERYvBkJDga5dG/691FVfGu2zqImtrS1OnDghd9zZ2RkH\n/xt/2rJlS8TFxWk6tAYxbRrw22/8ipLvhkfg0eJpyPv7OCSFBRCamWs7PEKIGj377xdD636v4/Zt\n/nvg1i3txqQqnemzaGi61GdRIS4OCAsDbtwAcqf0QOG1aHh+ux02A97SdmiEEDUpe5yCf7p7QWBi\nirYxjxE60BSvvw5MnqztyBTT+T6LpqBdO2DsWGDKlOdNUbRWFCH6LecYP2fMsntf/LbHFNnZwP/+\np+Wg6oGShQLqbCP97DP+DuOygO/Az4s6DGlJsdreTxP0oU1Zk6i+VNPY66uiv0IaNATTp/Nbphqo\nsQNAXfVFyULDTEz4SXoTP/OAUesOkBYVIu/v49oOixCiBuWZ6Si4ch6cyBAztoXjww+Bjh21HVX9\nUJ+FlkyYALRP+hJB9+bD9rVh8Fi1RdshEUIaWOb2DUhZ8CGetQzHJ7l7cf68eu8qGoKy705KFlqS\nkwOEtfkX643bAgIBjFr6wu6NkXAYPhECE1Nth0cIqSfGGJ4d2InMyLUoSrgBVlKMFYUbsTBqFHx9\ntR1d7aiDWwWaaCO1NCnFeNfv8bDMF5BKUXovHmnfLsa/Q3tCWlam9vdvSI29TVnTqL5U09jqK2Xh\nVCR/MhGFcTGQFhdDzITwNoiDh3mSRt6f+iz0zLNDvyOwcBueiF0A8JP1WEkxSh/ewbNDu7QcaJsP\nLwAAH5NJREFUHSGkPkoS7yHrjy2QFhcCADgOuFMagMHGG5C2erGWo3sx1AylJff/9wZyT+xHORNC\nxElQzkQQceUAAKvQwfBa94eWIySEqCrz1x/xaOkssJJilEmNYCgoRa7EGlbCHAhtmiHg8mNth1gr\naobSMUILK4DjIOIkKJaaViYKABCYWmgxMkJIfXEmpoBECsYAQ0EpCiSWsBLyu3429r5IShYKaKKN\ntNn/jQFnbAIAMBEU4W5pG5QzEQCgMDYaxffi1R5DQ2lsbcraRvWlmsZSX+KcbOQe3g1WXgqOA2KL\nX4GZIA8AwBmboNnQsRqJg/os9Ix5p1fhMGoyOCMTwMAA3mYJ2J43A1mcG8qSHyAhogue7vxZp5vS\nCCG8/Et/I35gIHJPHUC5gTnWZi+Gv9VtcAIOAlMzmAUEwXHsDG2H+UKoz0LLSu4nIOf4PgCAcY8I\n9H3bCZ97TkGzW9sBANb930CLL9bRvheE6CAmFiNt7VKkr10KSKUQtwzC+Jtb8cdhK1je2AlJbjbM\ng7rDPChY6YZuuobmWTQSCQlAcDBweO52GER+CGlhAQxd3OHxzVaYd1DDesaEkHope5yMxJmjUXD5\nHMBxMB02C31+XIDNW0UIDdV2dPVHHdwq0GYbqZ8fvxxIxNfvwnrDJZi27Yiy1CTceacX0tYuBZNI\ntBabMo2lTVlXUH2pRhfr69mR3YgfGIiCy+cgcnCC+0+HMerIEkyeqv1EQX0WTUhEBPDhh8DrH7SC\n6+YzcHh/BiCRIO2bhbg7oi/K0h5pO0RCmiRpcRGS50/Cw8lDIcnLgWXPcPjtv4JPd/SCiwvw8cfa\njlB9qBlKRzEGvPcekJsL/PknUHD+OBJnjYH4aQaE1rZwX/YjrEMHaztMQpqM4jv/4OHU4Si5exuc\nyBAuc5bDfuQkbN7M4auvgEuXAEtLbUf54qjPohEqLeW3XuzWDVi2DCjPeoKkWWORd/YoAMB++ES4\nzFkOwX9DcAkhDY8xhqfbN+DRstlgpSUwaukDz9XbYPpSO5w8CbzzDhAVBbz0krYjbRjUZ6ECXWkj\nNTICdu8Gfv8diIwERHYO8PrpL7jM/QqcSITMbeuQ8EY3FN+9rdU4daW+GguqL9Vos77Ez7LwYOKb\nSFk4Bay0BHZvvQe/vTEwfakd4uKAoUP5/5+6lCioz6KJatYM2L8fmDULOHcO4AQCOI6dBt9d52Dk\n0Qol//6DhCFd8fS3nxr9nRQhuiQ/5iw/d+LEfggtrOD57Xa4L9sAoakZEhOBAQOAtWuBkBBtR6oZ\n1AzVSBw5wvdh/P030KoVf0xSWICURVORvfsXAPxWrS2WroeBlY0WIyWkcWNiMdK+X4L0tcsAxmDW\nrjM8Vv8CI1cPAEBWFt80/MEH/BbJ+ob6LPTATz8BS5YAZ88CLVo8P569bweS50+GtDAfIic3eH6z\nFeaB3bQXKCGNVGlqEhKnj0ThtWiA49B84sdw+nA+OBG/FE9REdC7N9C9O/Dll1oOVk2oz0IFutqm\nPG4cMG0af7GmpT0/bjv4HbTefxmmAZ1QnpaCO8N6I+27JRqbk6Gr9aWrqL5Uo6n6enboDyQMDETh\ntWiIHJ3hvfUonGcsrkwUYjHfmd2qFT/gRFdRnwUBwCeLUaP4UVJZWc+PG7VoCd/fouA4/iNAKkXa\nt4txd3gYyh6naC9YQhoBaXERkj6diIdThkGSnwurXgPQev8VWHQNqSzDGDBpElBSAmzaBAia4Dcn\nNUM1QowBc+cCJ04AJ08CVlay5/POn0TiR+9BnJkOoZUN3JdtgHVYhHaCJUSHFSXcQOLU4Si5nwDO\n0Aguc76E/YiJMus4MQbMng2cOsUPkbXQ8x0EqM9CzzDGz/KOiwOOHgXMzGTPl2dlIunjcciLOgwA\naDZsAlw/+YrmZBACfu5E5i/rkLr8Y7CyUhh7+cHj220w9Xu5Wjlgxgx+YMmxY4CtrZYC1iDqs1BB\nY2hT5jhgzRrA25tfHqSkRPa8yM4eXhv3wvXTleBEIjz9dQMShnRF8Z1/GjyWxlBfuoTqSzUNXV/i\n7Kd4MOF1PFo8DaysFHZvj4XvnmiFiWLKFODCBf4uvrEkCuqzIHIEAn6ElK0t8NZb8gmD4zg4vDcF\nvn+cg5GnN0ru3kbCkFeQ+euPen3XRYgy+dFRiB8UiNxTByG0tIbndzvg/sU6CE1lb82lUn5o7JUr\n/B2FNe0QQM1Q+qC8HBg+HMjMBPbuVbw+jaSwAI8+n4GsP7YAAKzCXoP70g0wsG4kvy4R8gJYeTnS\nvvsc6eu+5OdOdHwFHl9HwsjFXa6sVApMmADExwOHDunHek+qoD4LPSeR8KM1rlwBDh8G7O0Vl8ve\n/xs/J6MgD6LmrvD4OhIWQcGaDZYQDSp9lMjPnYi9yM+dmDQXTpPngTMwkCsrkfBD1B88AA4eBMzN\ntRCwllGfhQoaY5uyUAisWwf068dvnpScrLic7aChaL3/MszadUZ5+iPcHR6Kx98uBhOL6/3ejbG+\ntInqSzUvUl/PDu5CwqBOKIy9CJGjC7x/OQbnaQsVJgqxmF8lISmJv6NorImC+ixIrTiOn+E9YQKf\nMBISFJczcvOEz45TcJz4McAY0r9bgjvDQ1H2WEmGIaSRkRQVImnuBDyc+i4/d6LPILQ+cAUWXXoo\nLF9QALz2GvDkCXDggPzoQkLNUHpr61Z+I5Z9+4BOnZSXy48+jcSZo1H+JA1CS2u0WLoeNv1eBwAk\nJSVBIpHA09Oz0ewfTJqetLQ05Ofnw8vLC0KhEEW34/Bw2nCUPrgDztAIrp+sQLN3Jyi9hh8/BgYO\nBDp2BH74AfhvwnaTRX0WTdC+fXz7644d/BIhyoiznyLx43HIO30IAJDeMwIzzl5HUnIyBAIBHBwc\nEBkZie7du2sockJql5ycjKFDhyI2NhZCoRAmJib44q2B6HR6F1h5GYxbtYbnt9tg4ttW6WvcvMkn\niv/9D5gzh787b+qUfncyPfUiH+306dMNF4iWRUUxZm/P2E8/1VxOKpWyjMjv2clWpsyMAwNkf8zM\nzNi9e/cUPlef6ksTqL5Uo6i+ysrKmJubGxMKhTLXqTEH9qOzkCXN+4BJigprfN2jR/n/Gzt2qClw\nLXnR60vZdyf1Wei5Hj342adffcXP+C4vV1yO4zg4jJyE84PGQazg16uysjJ8++23ao6WkLo5ePAg\ncnJyIKm2WGYJA7Y5vIQWn6+FwMRU6fM3bQJGjuS3LB46VN3R6gdKFgqE6NluJr6+QEwMPxwwLAx4\n+lR52YSMpyiVyt+ClpeX48aNGwqfo2/1pW5UX6pRVF937txBcXGxwvL3M7OVvhZjwLx5/KqxZ8/y\nA0H0jbquL0oWTYS1Nd+H0aUL3+F9/bricgEBATAxkV8/ygCAf3MlkzcI0bCWdtYwglThuZeU7HGa\nmwu8+Sa/IGB0NODjo84I9Q8lCwX0dRy8UMj/RrV0KdCnD/DHH/JlxowZA0NDQ7njIg7od/EvPF69\nUG5Ohr7Wl7pQfammen1lH9gJjzVzYQkphNXKmpqaYv78+XKvERvLj3ZycgJOn1Y+aVUf0DwL0mDe\neYdfqXbmTGD+fH55gwrNmjXD2bNn0aZNGxgbG8PExAReXl7YMXk0XEQc0r9fijvDeqM0NUl7H4A0\nSZLCAiTNeR+J00ZAUJiP398JxyuvdIWRkRFMTU3h6OiIrVu3IrhK2xJjwI8/8s2vX3wBfP89YGSk\nxQ/RiNHQ2SbsyRP+ttzEBNiyhf+tq6rU1FRIJBK4ubmB4zjkR0ch8aPRKM94DKGFFVp8sQ424W9q\nJXbStBTdiuXnTjy8C87IGK6frkSzd94Hx3HIzMxEfn4+PDw8IKiyK1FhIT8kNi6Ov4v29dXiB2hE\naLkPIsfBgd88qUsXoH17vk+jKhcXF7Ro0aJyMpNF1xC03n8FVr0HQpKfi4dThiHp04mQFhdpIXrS\nFDDG8GTzGvz7ZjBKH96FsY8//PZcgP2w8ZXXpb29PVq2bCmTKOLjgaAgwMCAH9xBieLFUbJQoCm1\nKYtEwKJF/BDCqVOBiRP5TemVMbBthpbr/4Tbgm/BGRoha+cmbO3eBkXxSnrMiZymdH29iPKsJ7j/\nfgT2zpsBVl6GZu/+D367L8DEp02Nz/v1V6B7d76ZdfNmwFT5CFq9RH0WRK26deNv1/Pz+Y7A2Fjl\nZTmOg/2IifDdfR7GXn4oe5yMf994FU+2/kBNf6RB5J0/ifiBgciLOgyBmQVartuFFovW1LjT49On\nwLBh/C8/J04AY8ZoMOAmgPosiJzt24Fp0/i1pWbMqHlzemlxER598RGe/vYTAMCq1wC4L98IA9tm\nGoqW6BNWXo7H3yxAxsZVAGMw7xQMj1VbYOjsVuPz9uzhl+h/5x3g88+b3t1EQ6K1oYhKHj4ERozg\nR45s3gy0aFFz+WeH/0TypxMhycuByNEZHiu3wKJriEZiJfqhNOk+Hs4YiaLrlwGBAE5T5qP5xDng\nhNUHyD739Cm/MsG1a/x1+sorGgxYT1EHtwqoTRnw9ASiooBevYAOHYBVq/j1/hWJioqCTf834Lf/\nMsw6voLyjMe4O7IvHn/9GZiy9UWaMLq+5GXv24H4wUEoun4Zhs4t4PPrSThN/hScUKi0vnbvBtq2\nBZyd+SZUShQ86rMgGmdgAHz6KT/b9fBhIDCQH1mijJGLO3y2n0DzyZ8CHIf0H5bzczIeJWosZtK4\nSAoLkDh7LBJnjIK0MB/WfYfAb/9lmAd2U/qcp0/59ZzmzuUHZqxaxQ//JupFzVCkThjjR5l89BHw\n+uv8LHArK+Xl82POInHGKJRnpEJoYQW3JWthO+D/NBcw0XlF/1zj504k3gNnbAK3eV/D7u0xSved\nkEr5fVrmzuX3nF+8mJKEOlAzFHkhHAe8+y5w+za/T/FLLwG//cYnEUUsOndH6wNXYBU6GJL8XCRO\nHY6kuRMgKSrUbOBE5zCpFBmbVuPft4JRmngPxr5t4LcnGs2GjlWaKC5cADp3BjZs4OcDrVhBiULT\nKFkoQG3KytnYAOvX8zNily7l9/zeti1KYVkDGzu0/GEX3BZ9x8/J2LUZCRGdUXQ7TrNB65imfH2V\nP83A/XGvIXXZbLDyctiP+ICfO+GtePG/R4+APn2i8Pbb/Ai9Cxdq3vmRUJ8F0TFduwJXrwKhofyQ\nxUmTgPR0+XIcx8H+3Qnw23MBxq1ao/TBHX5ORuT31EzYxOT9fZyfO3H2KITWtmi57g+4LVgNgZGx\nXNniYn4IbLt2fAd2QgJ/Z0s72WkP9VmQF5aVxd9lbNnCzwCfNUtxf4a0uAiPls3G019/BABY9gyH\n+/KNENnp8RKgBNKyMjz+5jM82fg1AMC8cw94rNwMQydXubKM8Xets2bxy3V89RXg4aHhgJs4mmdB\n1C4pCViwgB85NWcOnziM5X9pxLOje5A8dwI/J8PBCe4rN8PylV6aD5ioXUniPSROH4Gim1cBoRBO\nUz9D8wmz5eZOMAYcOcJ3WpeUAN9+yy/ZQTSPOrhV0JTblOujor7c3fm7i5Mn+T0DfH2ByEi+Q7wq\nm75D0PrAFZh3ehXlT9Jwb1R/pK6c12TmZDSV6ytr73YkvBaEoptXYejiDp8dp+D0wVyZRMEYcPAg\nv5jlrFnA9Ol882bVRNFU6quhUJ8FaTTatOFHrGzfDmzcCAQEANu2ye7/bejcAt6/HIPTlPkAxyFj\n/Vf4d2hPlKY81F7gpEFICvKR+NF7SProPUgLC2D934RN8w5dK8swBuzfzzc1zZ3LJ4obN4D/+7+a\nl5ch2kPNUEStKpoXvvoKuH+fH9Hy/vuAhcXzMgWXz+HhjFEoT0uBwNwSLT7/HraDhmovaFJvhTev\nInHaCJQm/Td34rPVsHtrdOWQWMaAv/7im5ukUuCzz4CICEoQuoT6LIjWXbkCrFzJrwg6bhwwZQo/\n0gUAxDnZSP70f8g5uhcAYPfmKLjO/wZCM3MtRkzqikmlePLzaqSunAeIxTBp/TI8vvkFJq1aA+D7\nIX7/HfjmG778ggXA4MGUJHQR9VmogNpIVVPX+goM5CfyXb7M75nRpg2/jPStW4CBtS08v98Jt8/X\ngjMyRtYfkfycjFs1rJXeSOnb9VWemY57YwYhdfkcQCyG/ajJ8P3jHExatUZSEt/M1KIF3yz5+ef8\non+q3E3oW32pG/VZEL3h6QmsWQPcvQu0bAn07g307w/s2cPB6o334bcnGsY+/ih9eBf/vhmMJ5vX\n0F2ijso9cxTxAwORf+44hDZ2aLlhN1w+/Ronzhjjtdf4RShLSoBz5/h93wcOpLkSjRU1QxGtKykB\ndu7kl5i+fZuffPXeu8Ww3v8xnm5fDwCwDOkP9y83QpKfh2eH/wQrK4VVz3CYvRyo5ejr7uHDh/j9\n999RVFSE8PBwBAUFKV3eQteUpibh2cFdkBYWwLJHX5j4d0Da15/hySa+Xcm8SwhsP9uM7Ydd8MMP\n/JDpyZP5zYjMzLQcPFEJ9VmQRuH+fX747ZYtQPPmwMzgv+AXNR7SvGcQmFlAWlYCMABSCQRGxrDu\nOwTuK37W+S/d7777DrNnz4ZEIoFYLIapqSkGDhyIX3/9VWbvaF309LefkPL5DEAqBROXgzM0hsDQ\nEJL8XEAoRG7fhfgp8yMcOiJEv378bP5u3egOorGiZKGCqKgohISENGxAekwd9SWR8B3hP/8MXDue\nghWuw9GiKBqMyX4JCUzN4L58I2zC32zQ929I9+7dQ9u2bVFSUiJz3MzMDOvXr8fw4cO1FFntyh4n\n41ZoG7DS57FX/BvkCl0w/9lvELbujKFDgTffBOzVMBmf/j+q5kXrS9l3p8ELxESI2giFQN++/E9W\nlhvWjZ2ByxeOIsLiZwghRanUCCKuDCgqROKsMUhd8am2Q1ZqQ2IWxKUlcscLCwvx9aT30W7T51qI\nqm4keblgpSVgDCiHIQy5MnAccLGoN9JseuC3a53hKr9qB9FDdGdBGoWUxTOQufV7PBPbwVBQCjNB\ngbZDqrM1WWJE5ii+Fn0MgR1uIg1HVH/lTIR8iTVsDTJh5OUH/6M3tB0SaWB0Z0EaNaveA5D1x2bY\nFGVVHiuUmuFaeW9cd/wfLj5siZZeQGgffkVc/zaAgfKtmzVqeMwl/DF6LAqLimSOGxsZYdiHk+D/\n4SQtRSZLKuUHGJw9C/z9N/DPLaBtq3y8lPoT2hucgrvhXYi4ctgaZIIzNIJNv9e1HTLRILqzUIDa\nSFWjifpijOHemIEouHIerJj/0uWMjGHo5Aa/vRchMbRAVBS/hMSZM0BiIp80unfnfzp1UryooSYw\nxhAREYGTJ0+isJDf/MnY2BhOTk6IjY2FVU1bDqo1LiA5md9r/ehR4PhxoFmz581/3bsDpqYMD6cM\nQ17UEUiL+dg5QyMY2Nmj9f4rMLC2VXuc9P9RNerqs9CZYRi7du2Cv78/hEIhrl27prTckSNH4Ofn\nB29vb3z55ZcajJBoE8dxaLXxL7jOWwXTth1h7OOP5pPmwm9PNITmFjA0BMLCgO++49cYSkzkR+U8\newbMnMl/CfboAcyfz38p5uZqNvbdu3djzZo1CAoKgqenJz755BNcu3ZNo4kiK+v5yq6DBvGjzTp3\n5hNsz578An7x8cDq1fy8FzMzPnbPb7fDbdG3MA0IgrH3S3AcP0tjiYLoDp25s0hISIBAIMCECROw\natUqdOjQQa6MRCKBr68vTpw4ARcXF3Tq1Ak7duxA69at5cpSnwWpKj8fiI7mm1jOnAFiYwE7O6Bt\nW9kfX1/A0FDb0b4YxoAnT4B//+WXWLl8Gbh0CXj6FOjYkV+8r1Mn/k9XVxriSmTpfJ+Fn59frWUu\nXbqEVq1aweO/3VCGDh2Kv/76S2GyIKQqCwv+ziMsjH8slQIPHwI3b/I/e/fyv3EnJQHe3nzi8Pfn\nl113c+O/VF1cACMj7X6OCozxX/537/I/9+49//vdu3zC8/bmk0P//vyCfb6+tBYTqT+dSRZ1kZqa\nCjc3t8rHrq6uiImJafD3oTZS1TTG+hIIAC8v/ici4vnx4mK+KebmTb6z98ABfh/olBQgLQ2wtn6e\nPCr+dHDgk5G5ufyPhQVgair723tUVBR69AiBRAKIxbI/JSV8c1FmJp8Mnj5V/PfkZP4zeHvzP61a\n8U1LFY9tbDRfp+rSGK8vbVJXfWk0WYSGhiJdwUbNS5cuxaBBg2p9vq7P0iWNn4kJv56RglZQSKVA\nRsbz5JGSwv89Ph4oKJD/yc/n/ywp4V8X4BNCeTn/WkIhYGAg+2NoyPev2Nvzf1b8vXVr2WOurnwz\nGiGaotFkcfz48Rd6vouLC1JSUiofp6SkwLWGGUGjR4+ubLKytrZGu3btKjNuxcqMih6HhITUeJ4e\nN+36cnICCgujYGsLTJ1ae3mJBDh6NAocB/TsGQIDgxD8/Tf/WBc+j64/bmrX14s+VrW+oqKisGXL\nFgCo/L5URGc6uCv07NkTK1euRMeOHeXOicVi+Pr64uTJk3B2dkZQUBB1cBNCSAPS+aGze/bsgZub\nGy5evIgBAwagf//+AIDHjx9jwIABAAADAwN8//336Nu3L1566SW8/fbbauncrsi6pG6ovlRD9aUa\nqi/VqKu+dKaDe8iQIRgyZIjccWdnZxw8eLDycf/+/SsTCSGEEM3QuWaohkLNUIQQojqdb4YihBCi\nuyhZKEBtpKqh+lIN1ZdqqL5Uo676omRBCCGkVtRnQQghpBL1WRBCCKk3ShYKUBupaqi+VEP1pRqq\nL9VQn4UGxcXFaTuERoXqSzVUX6qh+lKNuuqLkoUCOTk52g6hUaH6Ug3Vl2qovlSjrvqiZEEIIaRW\nlCwUSExM1HYIjQrVl2qovlRD9aUaddWX3g6dDQkJwZkzZ7QdBiGENCo9evRQ2Emut8mCEEJIw6Fm\nKEIIIbWiZEEIIaRWlCwA7Nq1C/7+/hAKhbh27ZrSckeOHIGfnx+8vb3x5ZdfajBC3ZKdnY3Q0FD4\n+PggLCxM6VA9Dw8PvPzyy2jfvj2CgoI0HKX21eV6mTJlCry9vREQEIDY2FgNR6hbaquvqKgoWFlZ\noX379mjfvj2WLFmihSh1w5gxY+Do6Ii2bdsqLdPg1xYjLD4+nv37778sJCSEXb16VWEZsVjMvLy8\n2MOHD1lZWRkLCAhgt2/f1nCkumHWrFnsyy+/ZIwxtnz5cvbxxx8rLOfh4cGysrI0GZrOqMv1cvDg\nQda/f3/GGGMXL15knTt31kaoOqEu9XX69Gk2aNAgLUWoW86ePcuuXbvG2rRpo/C8Oq4turMA4Ofn\nBx8fnxrLXLp0Ca1atYKHhwdEIhGGDh2Kv/76S0MR6pZ9+/Zh1KhRAIBRo0Zh7969SsuyJjp+oi7X\nS9V67Ny5M3JycpCRkaGNcLWurv+/mur1VF1wcDBsbGyUnlfHtUXJoo5SU1Ph5uZW+djV1RWpqala\njEh7MjIy4OjoCABwdHRUehFyHIc+ffogMDAQGzdu1GSIWleX60VRmUePHmksRl1Sl/riOA4XLlxA\nQEAAwsPDcfv2bU2H2Wio49rSmT241S00NBTp6elyx5cuXYpBgwbV+nyO49QRls5SVl9ffPGFzGOO\n45TWzfnz5+Hk5ITMzEyEhobCz88PwcHBaolX19T1eqn+m3JTu84q1OVzd+jQASkpKTA1NcXhw4cR\nERGBO3fuaCC6xqmhr60mkyyOHz/+Qs93cXFBSkpK5eOUlBS4urq+aFg6q6b6cnR0RHp6Opo3b460\ntDQ4ODgoLOfk5AQAsLe3x5AhQ3Dp0qUmkyzqcr1UL/Po0SO4uLhoLEZdUpf6srCwqPx7//798cEH\nHyA7Oxu2trYai7OxUMe1Rc1Q1ShrEw0MDMTdu3eRmJiIsrIy7Ny5E4MHD9ZwdLph8ODBiIyMBABE\nRkYiIiJCrkxRURHy8/MBAIWFhTh27FiNIzf0TV2ul8GDB2Pr1q0AgIsXL8La2rqyea+pqUt9ZWRk\nVP7/vHTpEhhjlCiUUMu19cJd5Hpg9+7dzNXVlRkbGzNHR0fWr18/xhhjqampLDw8vLLcoUOHmI+P\nD/Py8mJLly7VVrhal5WVxXr37s28vb1ZaGgoe/bsGWNMtr7u37/PAgICWEBAAPP392+S9aXoelm/\nfj1bv359ZZlJkyYxLy8v9vLLLysdiddU1FZf33//PfP392cBAQGsa9euLDo6WpvhatXQoUOZk5MT\nE4lEzNXVlW3atEnt1xYt90EIIaRW1AxFCCGkVpQsCCGE1IqSBSGEkFpRsiCEEFIrShaEEEJqRcmC\nEEJIrShZEEIIqRUlC0IIIbWiZEEIIaRWlCwIUbPCwkL4+fmhc+fOEIvFlcePHTsGgUCAdevWaTE6\nQuqGlvsgRAPi4uLQpUsXTJ8+HcuWLUNGRgYCAgLQtWtX7NmzR9vhEVIrShaEaMjq1avx0Ucf4ejR\no1ixYgVu3bqF69ev08qppFGgZEGIBg0YMAAnT56EWCzG8ePH0bNnT22HREidUJ8FIRo0fPhwlJWV\nISAggBIFaVQoWRCiIenp6Zg6dSo6duyIuLg4rFmzRtshEVJnlCwI0QDGGEaNGgUTExOcOHEC06ZN\nw8cff4ybN29qOzRC6oT6LAjRgJUrV2LOnDk4ffo0goODUV5eji5duqC0tBRXrlyBsbGxtkMkpEZ0\nZ0GIml27dg3z5s3DJ598guDgYACASCTCjh07kJiYiJkzZ2o5QkJqR3cWhBBCakV3FoQQQmpFyYIQ\nQkitKFkQQgipFSULQgghtaJkQQghpFaULAghhNSKkgUhhJBaUbIghBBSK0oWhBBCavX/vPfpWVUH\nXE4AAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 5 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Flow-tangency boundary condition" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In [Lesson 1](http://nbviewer.ipython.org/github/barbagroup/AeroPython/blob/master/lessons/01_Lesson01_sourceSink.ipynb), you worked out the velocity potential of a single source as part of the final *Challenge Task.* It followed simply from integrating the radial velocity, $u_r=\\frac{\\sigma}{2\\pi r}$, that\n", "\n", "$$\\phi=\\frac{\\sigma}{2\\pi}\\ln r$$\n", "\n", "(The integration also gives a function of $\\theta$ that is seen to be a constant because $u_{\\theta}=0$; we take this constant to be zero.)\n", "\n", "We will use the velocity potential in this lesson to easily express that the velocity be tangent at the panel, i.e., that $u_n=0$ with:\n", "\n", "$$u_n(x,y)=\\frac{\\partial \\phi}{\\partial n}(x,y)$$\n", "\n", "at a given point on the panel. We choose the point to enforce that velocity-tangency condition as the center of the panel (and we call it the *control point*).\n", "\n", "The velocity potential in Cartesian coordinates of a [source sheet](http://nbviewer.ipython.org/urls/github.com/barbagroup/AeroPython/blob/master/lessons/08_Lesson08_sourceSheet.ipynb) on a panel is\n", "\n", "$$\\phi\\left(x,y\\right) = \\frac{\\sigma}{2\\pi} \\int_\\text{panel} \\ln \\sqrt{ \\left(x-x(s)\\right)^2 + \\left(y-y(s)\\right)^2 } {\\rm d}s$$\n", "\n", "where $s$ is the running coordinate along the panel and $\\left(x(s),y(s)\\right)$ are the Cartesian coordinates of $s$.\n", "\n", "Superposition of the potential of each panel gives the total potential at any point $\\left(x,y\\right)$, so we make a sum of all the panel contributions as follows (moving the $\\frac{1}{2}$ exponent in the logarithmic term as a factor outside the integral):\n", "\n", "$$\\phi\\left(x,y\\right) = \\sum_{j=1}^{N_p} \\frac{\\sigma_j}{4\\pi} \\int \\ln \\left( \\left(x-x_j(s_j)\\right)^2 + \\left(y-y_j(s_j)\\right)^2 \\right) {\\rm d}s_j$$\n", "\n", "By finally superposing the free stream, the flow around an immersed circular cylinder will be represented by the following velocity potential:\n", "\n", "$$\\phi\\left(x,y\\right) = U_\\infty x + \\sum_{j=1}^{N_p} \\frac{\\sigma_j}{4\\pi} \\int \\ln \\left( \\left(x-x_j(s_j)\\right)^2 + \\left(y-y_j(s_j)\\right)^2 \\right) {\\rm d}s_j$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Enforcing the flow-tangency condition on each *control point* approximately makes the body geometry correspond to a dividing streamline (and the approximation improves if we represented the body with more and more panels). So, for each panel $i$, we make $u_n=0$ at $(x_{c_i},y_{c_i})$:\n", "\n", "$$u_{n_i} = \\frac{\\partial}{\\partial n_i}\\left\\lbrace \\phi\\left(x_{c_i},y_{c_i}\\right) \\right\\rbrace = 0$$\n", "\n", "which leads to\n", "\n", "$$0 = U_\\infty \\cos\\beta_i + \\sum_{j=1}^{N_p} \\frac{\\sigma_j}{2\\pi} \\int \\frac{\n", "\\left(x_{c_i}-x_j(s_j)\\right) \\frac{\\partial x_{c_i}}{\\partial n_i}\n", "+ \\left(y_{c_i}-y_j(s_j)\\right) \\frac{\\partial y_{c_i}}{\\partial n_i}\n", "}\n", "{\\left(x_{c_i}-x_j(s)\\right)^2 + \\left(y_{c_i}-y_j(s)\\right)^2} {\\rm d}s_j$$\n", "\n", "where $\\beta_i$ is the angle that the panel's normal makes with the $x$-axis, so\n", "\n", "$$\\frac{\\partial x_{c_i}}{\\partial n_i} = \\cos\\beta_i \\quad \\text{and}\\quad\\frac{\\partial y_{c_i}}{\\partial n_i} = \\sin\\beta_i$$\n", "\n", "and\n", "\n", "$$x_j(s_j) = x_{a_j} - \\sin\\left(\\beta_j\\right) s_j$$\n", "$$y_j(s_j) = y_{a_j} + \\cos\\left(\\beta_j\\right) s_j$$\n", "\n", "But, there is still a problem to handle when $i=j$. From the previous notebook, we have seen that the stength of the [source sheet](http://nbviewer.ipython.org/github/barbagroup/AeroPython/blob/master/lessons/08_Lesson08_sourceSheet.ipynb) should be a specific value so that the streamlines do not penetrate the panel. This helps us determine that the contribution of the $i$-th panel to itself is $\\frac{\\sigma_i}{2}$.\n", "\n", "Finally, the boundary condition at the center point of the $i$-th panel gives\n", "\n", "$$0 = U_\\infty \\cos\\beta_i + \\frac{\\sigma_i}{2} + \\sum_{j=1,j\\neq i}^{N_p} \\frac{\\sigma_j}{2\\pi} \\int \\frac{\n", "\\left(x_{c_i}-x_j(s_j)\\right) \\cos\\beta_i\n", "+ \\left(y_{c_i}-y_j(s_j)\\right) \\sin\\beta_i\n", "}\n", "{\\left(x_{c_i}-x_j(s)\\right)^2 + \\left(y_{c_i}-y_j(s)\\right)^2} {\\rm d}s_j$$\n", "\n", "From the equation above, we understand that we will have to compute integrals using the SciPy function `integrate.quad()`. We define a function `integral_normal()` that will do the job." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def integral_normal(p_i, p_j):\n", " \"\"\"Evaluates the contribution of a panel at the center-point of another,\n", " in the normal direction.\n", " \n", " Arguments\n", " ---------\n", " p_i -- panel on which the contribution is calculated.\n", " p_j -- panel from which the contribution is calculated.\n", " \n", " Returns\n", " -------\n", " Integral over the panel of the influence at a control-point.\n", " \"\"\"\n", " def func(s):\n", "\t\treturn ( (+(p_i.xc-(p_j.xa-sin(p_j.beta)*s))*cos(p_i.beta)\n", " +(p_i.yc-(p_j.ya+cos(p_j.beta)*s))*sin(p_i.beta))\n", " /((p_i.xc-(p_j.xa-sin(p_j.beta)*s))**2\n", " +(p_i.yc-(p_j.ya+cos(p_j.beta)*s))**2) )\n", " return integrate.quad(lambda s:func(s), 0., p_j.length)[0]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Solving the system of equations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We just developed an equation to enforce a flow-tangency condition on the $i$-th panel. There are `N_panels` panels $i$ and `N_panels` unknown strengths $\\sigma_i$. Therefore, the problem represents solving a linear system of equations of the form\n", "\n", "$$[A][\\sigma] = [b]$$\n", "\n", "where\n", "\n", "$$A_{ij} = \\begin{cases}\n", "\\begin{matrix}\n", "\\frac{1}{2} & \\mbox{, if } i=j \\cr\n", "\\frac{1}{2\\pi} \\int \\frac{\n", "\\left(x_{c_i}-x_j(s_j)\\right) \\cos\\beta_i\n", "+ \\left(y_{c_i}-y_j(s_j)\\right) \\sin\\beta_i\n", "}\n", "{\\left(x_{c_i}-x_j(s)\\right)^2 + \\left(y_{c_i}-y_j(s)\\right)^2} ds_j & \\mbox{, if } i\\neq j\n", "\\end{matrix}\n", "\\end{cases}$$\n", "\n", "and\n", "\n", "$$b_i = - U_\\infty \\cos\\beta_i$$\n", "\n", "for $1\\leq i,j \\leq N_p$. Let's fill a matrix $A$ and a right-hand-side vector $b$ with the necessary values:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# computes the source influence matrix\n", "A = np.empty((N_panels, N_panels), dtype=float)\n", "np.fill_diagonal(A, 0.5)\n", "\n", "for i, p_i in enumerate(panels):\n", " for j, p_j in enumerate(panels):\n", " if i != j:\n", " A[i,j] = 0.5/pi*integral_normal(p_i, p_j)\n", "\n", "# computes the RHS of the linear system\n", "b = - u_inf * np.cos([p.beta for p in panels])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hey! We just used a new Python built-in function: [enumerate()](https://docs.python.org/2/library/functions.html#enumerate). It allows us to have access to each element `panel` in the array `panels` while keeping a count `i` (that starts from `0`) to locate the element of `A` to fill." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we can easily solve the linear system of equations using the function [`linalg.solve()`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.solve.html) from NumPy, and assign each source-panel its appropriate strength:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# solves the linear system\n", "sigma = np.linalg.solve(A, b)\n", "\n", "for i, panel in enumerate(panels):\n", "\tpanel.sigma = sigma[i]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Pressure coefficient on the surface" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At this point, we have the source strength distribution required to compute the streamlines around our geometry. A very useful measurement of the results is the pressure coefficient along the surface of the geometry.\n", "\n", "From Bernoulli's equation, the pressure coefficient on the $i$-th panel is\n", "\n", "$$C_{p_i} = 1-\\left(\\frac{u_{t_i}}{U_\\infty}\\right)^2$$\n", "\n", "where $u_{t_i}$ is the tangential component of the velocity at the center point of the $i$-th panel,\n", "\n", "$$u_{t_i} = \\frac{\\partial}{\\partial t_i}\\left\\lbrace \\phi\\left(x_{c_i},y_{c_i}\\right) \\right\\rbrace$$\n", "\n", "which we can obtain as:\n", "\n", "$$u_{t_i} = -U_\\infty \\sin\\beta_i + \\sum_{j=1}^{N_p} \\frac{\\sigma_j}{2\\pi} \\int \\frac{\n", "\\left(x_{c_i}-x_j(s_j)\\right) \\frac{\\partial x_{c_i}}{\\partial t_i}\n", "+ \\left(y_{c_i}-y_j(s_j)\\right) \\frac{\\partial y_{c_i}}{\\partial t_i}\n", "}\n", "{\\left(x_{c_i}-x_j(s)\\right)^2 + \\left(y_{c_i}-y_j(s)\\right)^2} {\\rm d}s_j$$\n", "\n", "with\n", "\n", "$$\\frac{\\partial x_{c_i}}{\\partial t_i} = -\\sin\\beta_i \\quad\\text{and} \\quad \\frac{\\partial y_{c_i}}{\\partial t_i} = \\cos\\beta_i$$\n", "\n", "Note that the contribution to the tangential velocity at a source panel from its own velocity potential is zero, which makes sense because streamlines go *outwards* from a source.\n", "\n", "We define a function `integral_tangential()` that will compute the integrals above using the SciPy function `integrate.quad()` once again:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def integral_tangential(p_i, p_j):\n", " \"\"\"Evaluates the contribution of a panel at the center-point of another,\n", " in the tangential direction.\n", " \n", " Arguments\n", " ---------\n", " p_i -- panel on which the contribution is calculated.\n", " p_j -- panel from which the contribution is calculated.\n", " \n", " Returns\n", " -------\n", " Integral over the panel of the influence at a control-point.\n", " \"\"\"\n", " def func(s):\n", " return ( (-(p_i.xc-(p_j.xa-sin(p_j.beta)*s))*sin(p_i.beta)\n", " +(p_i.yc-(p_j.ya+cos(p_j.beta)*s))*cos(p_i.beta))\n", " /((p_i.xc-(p_j.xa-sin(p_j.beta)*s))**2\n", " +(p_i.yc-(p_j.ya+cos(p_j.beta)*s))**2) )\n", " return integrate.quad(lambda s:func(s),0.,p_j.length)[0]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "# computes the matrix of the linear system\n", "A = np.empty((N_panels, N_panels), dtype=float)\n", "np.fill_diagonal(A, 0.0)\n", "\n", "for i, p_i in enumerate(panels):\n", " for j, p_j in enumerate(panels):\n", " if i != j:\n", " A[i,j] = 0.5/pi*integral_tangential(p_i, p_j)\n", "\n", "# computes the RHS of the linear system\n", "b = - u_inf * np.sin([panel.beta for panel in panels])\n", "\n", "# computes the tangential velocity at each panel center-point\n", "vt = np.dot(A, sigma) + b\n", "\n", "for i, panel in enumerate(panels):\n", " panel.vt = vt[i]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Once we have computed the tangential velocity on each panel, we can calculate the pressure coefficient." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# calculates the surface pressure coefficient\n", "for panel in panels:\n", " panel.cp = 1.0 - (panel.vt/u_inf)**2" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Allright! It is time to plot the surface pressure coefficient.\n", "\n", "Just before this, we should remember that in the lesson on the [doublet](http://nbviewer.ipython.org/urls/github.com/barbagroup/AeroPython/blob/master/lessons/03_Lesson03_doublet.ipynb), we found that the exact pressure coeficient on the surface on a cylinder was\n", "\n", "$$Cp = 1 - 4\\sin^2 \\theta$$\n", "\n", "i.e.\n", "\n", "$$Cp = 1 - 4\\left(\\frac{y}{R}\\right)^2$$\n", "\n", "We can use this to compare with the results obtained with our source-panel code." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# calculates the analytical surface pressure coefficient\n", "cp_analytical = 1.0 - 4*(y_cylinder/R)**2\n", "\n", "# plots the surface pressure coefficient\n", "plt.figure(figsize=(10, 6))\n", "plt.grid(True)\n", "plt.xlabel('x', fontsize=16)\n", "plt.ylabel('$C_p$', fontsize=16)\n", "plt.plot(x_cylinder, cp_analytical, color='b', linestyle='-', linewidth=1, zorder=1)\n", "plt.scatter([p.xc for p in panels], [p.cp for p in panels], color='#CD2305', s=40, zorder=2)\n", "plt.title('Number of panels : %d' % N_panels, fontsize=16)\n", "plt.legend(['analytical', 'source panel method'], loc='best', prop={'size':16})\n", "plt.xlim(-1.0, 1.0)\n", "plt.ylim(-4.0, 2.0);" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\ndAhkJIyxreT1ffj8/En5v37O8omKVhr/TvqXkBP+OqhxbNyKBTkee6KilXzqndLZzh2/Y6M4/m1r\ncVxlW/mkv4uc9N/oAr+Xhw8fypIkydu2bcv1mFGjRsmWlpby9evX1fvS09NlX19fuU6dOup9ffv2\nlX18fLI9v1mzZnJQUJB6e//+/bIkSXKXLl00jrt69aqsUqnkUaNG5RrL8uXLZUmS5D///FNj/+TJ\nk2Vra2s5Li4u1+fevHlTliRJ9vPz09h/+PBhWZIk+eeff87xeenp6XJqaqo8YMAAuWbNmhqPSZIk\nV65cWU5LS1Pv27BhgyxJknzkyBFZlmU5MTFRdnZ2lj/66KNs8VhbW8s//PCDep+Pj4/cr1+/XN+D\nLGd9fm+er06dOrIkSfLhw4fV+86cOSNLkiQvW7ZMva9ixYpyy5YtNZ6bkJAge3h4yCNGjNCIpU+f\nPtlef/z48bIkSfLSpUs19levXl0OCQlRb2vbbho1apTt/yQ6OlqWJEmj3bwpv7ykoHkLr7iRWTL3\nuiXSnqm1lcfrl0JOyV6vlZH8Eo9WaV6tsXByhmRhkeN5LBydNbbl1FTcHjMEcvJLILM7Kj0dGS+f\n49aYIQWO18PDAxUqVMAXX3yBxYsX4+rVq9mOOXjwIAICAlChQgX1PpVKhR49euDUqVMFvmLUuXNn\nje29e/dClmUMGjQo1+dERkbC29sbAQEBSEtLU/8LDg5GamoqoqOj833d9957T2O7UaNG8PLy0uiO\nvXr1Knr27AkvLy9YW1vD2toaP//8c45XgYKDg2Hx2v+jv78/AKivEh49ehSJiYno1auXRsxeXl7w\n9fXFwYMH8405J61bt9bY9vX1haOjIxo1aqSxD4D6StrVq1dx48aNbLHY2dmhYcOGOsXStm1bjW0/\nPz/cvn1bva1Nu0lPT8fx48ez/Z80aNAAPj4+WsdSlJi4ERGZkbQnj4GchkmQZaQ9idfYVaJF+6wk\n7DWSnT1K9tZMxl5cOgP5ta631726cQVpz54UOOY9e/bgnXfewVdffQVfX19UrFgRCxYsUD8eHx+P\nMmXKZHte6dKlIcsynjwp2Gu/ec7M7jwvL69cnxMXF4dbt27ByspKnVBZW1ujQYMGkCQJ8fHxuT43\nk6enZ7Z9pUqVwj///AMASEpKQnBwMM6ePYvp06fj0KFDOH78OPr374/k5ORsz3Vzc9PYtrGxAQD1\n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\n5uDVeebV/9UneT/RqVV36/P/uU/9X3cH7Xd3dtr35Oc/H3oP5syRNm4cukfokSND84WNjdLy5fY9\nAxDeXHWotLy8XOfOnVNFRcWI1zhUCoSXzz+3e+Zefln6xz9GXycvz85t3XmnNGPGlfvdJ++9Td98\nWPeD5zxXXa3091t01XVzLvvnd3VJBw5ItbX2cfTo2OvOmSOtWSP9+tf2wrgAwkNYz7g9/vjjqqqq\nUkxMjOrr6xUbGztiHYIbEP4uXJAOHrSHBV9+Wfr66/HXj4qyJ0QMPFJTh77+0Y9G/56e+vfVck/B\nqK9dk/3fuvGlfZess6dH+vvfh4LZoUPjrz99ur3F2MBj/nx7FiiA8OXq4FZQUKCOjo4Rz5eVlamo\nqGhwuaKiQs3NzXrhhRdGrEtwgz/q6uqUyx3Uw0ZPj/TRR9LJk/Zw6sCjtdX/n7Up7i7des1bg2df\nHvr3BWVNtSnqOzNZi/553u+fefXVQ6EsN9deLoXrpYUnti3w1URzS0hsOmpqanxab/ny5SosLBzz\n9RUrVigpKUmSFBsbqwULFgz+AxoYGGWZZUlqamoKqXpYvrzlw4frNHmytGqVb+vX1tapu1u69tpc\nNTdLNTV1amuTurpy9V/9Nqx5pMHAdujf9gatC2Ps5Tb+9a86xcRI2dm5mjZNam62y/n5dvmjj+rk\n8YTO+8Myyyw7vzzwdetE/kc5TEjscRtPS0uLUlJSJEnbtm1TQ0ODqqqqRqzHHjcAV0JPwwG1LM8f\n9TVfD5UCwKW4+lDpeO666y41NzcrKipKycnJ2r59u2bPnj1iPYIbgCsl0CcnAEDYBjdfEdzgj7q6\nusHd2MBovnzt/9T53CbVf/Gl8kvuVML6Sk2ePvLEKGA4ti3wlatn3AAg1Fz7y5W69pcrdaauTtfz\nQQwgRLDHDQAAIMjC9pZXAAAAsAhuiEjDT88GxkOvwB/0CwKN4AYAAOASzLgBAAAEGTNuAAAAYY7g\nhojEHAp8Ra/AH/QLAo3gBgAA4BLMuAEAAAQZM24AAABhjuCGiMQcCnxFr8Af9AsCjeAGAADgEsy4\nAQAABBkzbgAAAGGO4IaIxBwKfEWvwB/0CwKN4AYAAOASzLgBAAAEGTNuAAAAYY7ghojEHAp8Ra/A\nH/QLAo3gBgAA4BLMuAEAAAQZM24AAABhjuCGiMQcCnxFr8Af9AsCjeAGAADgEsy4AQAABBkzbgAA\n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\n", "text": [ "" ] } ], "prompt_number": 12 }, { "cell_type": "heading", "level": 5, "metadata": {}, "source": [ "Challenge task" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have computed the pressure coefficient on the surface of the cylinder, it will be interesting to visualize what the streamlines look like.\n", "\n", "To do that, we use the function `streamplot()` from Matplotlib, requiring the Cartesian velocity components (`u`,`v`) on a mesh grid (`X`,`Y`). Therefore, the first step is to derive the equations for the velocity components.\n", "\n", "The potential at point $\\left(x,y\\right)$ of the $N_p$ source sheets in a uniform horizontal flow $U_\\infty$ is\n", "\n", "$$\\phi\\left(x,y\\right) = U_\\infty x + \\sum_{j=1}^{N_p} \\frac{\\sigma_j}{4\\pi} \\int \\ln \\left( \\left(x-x_j(s_j)\\right)^2 + \\left(y-y_j(s_j)\\right)^2 \\right) {\\rm d}s_j$$\n", "\n", "And the velocity field at point $\\left(x,y\\right)$ is\n", "\n", "$$u\\left(x,y\\right) = \\frac{\\partial}{\\partial x}\\left\\lbrace \\phi\\left(x,y\\right) \\right\\rbrace$$\n", "\n", "$$v\\left(x,y\\right) = \\frac{\\partial}{\\partial y}\\left\\lbrace \\phi\\left(x,y\\right) \\right\\rbrace$$\n", "\n", "Your task will be to:\n", "\n", "* derive the Cartesian velocity components\n", "* create a mesh grid\n", "* compute the velocity field on the mesh grid\n", "* plot the results\n", "* change the number of panels to improve the visualization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "Please ignore the cell below. It just loads our style for the notebook." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.core.display import HTML\n", "def css_styling():\n", " styles = open('../styles/custom.css', 'r').read()\n", " return HTML(styles)\n", "css_styling()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", "\n", "\n", "\n" ], "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ "" ] } ], "prompt_number": 13 } ], "metadata": {} } ] }