Skip to content

Instantly share code, notes, and snippets.

@dbarbeau
Last active December 24, 2015 21:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dbarbeau/8b5ae150a65ce144a1bb to your computer and use it in GitHub Desktop.
Save dbarbeau/8b5ae150a65ce144a1bb to your computer and use it in GitHub Desktop.
First steps in understanding B-Splines
{
"metadata": {
"name": "",
"signature": "sha256:0a71f78f2800978c0612cb5851c844a24edca0556141fff672c971814997691d"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This notebook is the first result of online exploration of material explaining B-Splines. As I get more familiar with them, I'll do other notebooks. I will document my sources and eventually add some notes about things that bothered me. This is only a reformulation with my own terms of the vast b-spline documentation around the web. I try to explain the pitfalls and complete the ellipsis that other websites do. However, I'm not a mathematician so I might get some things wrong. But I really want this to be as precise yet understandable as possible using both precise terms and common language. If you spot errors, misconceptions or cryptic parts, please do leave a comment.\n",
"\n",
"- [The Gist](https://gist.github.com/dbarbeau/8b5ae150a65ce144a1bb)\n",
"- [In NBViewer](http://nbviewer.ipython.org/8b5ae150a65ce144a1bb)\n",
"\n",
"Used Tools:\n",
"\n",
"- Python 3\n",
"- Numpy\n",
"- Matplotlib\n",
"- IPython\n",
"\n",
"I won't detail their installation but have a look at [IPython's installation guide](http://ipython.org/install.html). I prefer running it inside a [VirtualEnv](https://pypi.python.org/pypi/virtualenv). Once installed, run IPython with:\n",
"\n",
" ipython3 notebook --pylab=inline\n",
" \n",
"We will draw these types of curves: </br>\n",
"<img src=\"data:image/jpeg;base64,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\n",
"k+puJWYylr7DhRPia77E9Mysh7S2yVrCWExljgGHYnpudtuo6haWHHao4iahsNusIEZmq3BYZz1I\n",
"IyA+N0DgAS7rH08Tt6W3QrsOk9IYbTjO0qw/aLz2hst6wA6xIAANi/bw2A6DovP7etxX/HPZp49Z\n",
"9PB2209Ph9r/AJreHSPVy/C8PNU5otu5GNuKdMyrK6S7KbFiKaPqXMbzO2B9he0gknbp1s8fwwxk\n",
"UjZ7mVyViZs0thvZubCxkkg5XloA5ti3psXO26+fVXqK9Ps7h6zma5nxnf4sLcRqW649ElFw40gy\n",
"EQ92zPjEP2fkfdmcOx8ezIL+rN+vKei95+H2mZhLvBdaZuQykX5iZCw7xl27jvynw38NlVIuieG0\n",
"Z/ZHuhl2p8UTf4ewytm+zZu+wzWorkonayVss0RaWF3QHl9Bm7WkDp5dd9FltE6gr2Ll6uynatWc\n",
"hDcku1XGCzHE3s2vhiB323Yxw35xvzu811NFz2+zuGmc1rifLb4Kzu5FPqPLYo261/tZImX4Y6OL\n",
"vgutTxSdm3nEvMSNnufs7ry8vpH2UuN1vDTuzY3MtkilgkYyQsDphCHgFhfI1oHKd9t3cp3B6HxV\n",
"ncrV7lWSrahZNBK0tfG9u7XD2EKPz/D+pZx+QrYa5Li23YeWaKMAsleBsHFxBcPIEg77AeC0066+\n",
"jGK27VfCefTr9eakxaOSyhljmibLE9sjHDdrmncFe64/agz+k8nasURX0/WlqtkiqQRGzDanYXcw\n",
"OzRyuILR6IDndDv0IVlpjXVHKGKLI1JsPPLVFmP7W9gZIz0QS12/tc3x2PX27gb01K38p8J5/wC+\n",
"xFdSJnE7SrkXhpDmhzSCCNwR5ryrtBERAREQEREBERAREQEREBERAUZxl1K3TGhbdtstRk0xbAwW\n",
"DuC1xAeQ3cF2zSTsFZr87cV81JrDipT05i7lECjYbS/s29vI8TchkfsHADkI/wCx259nZwOhGtrR\n",
"2u7G8+ke2FbTiFDwN082po69mLMdp1q5IKNeWYcofWc5gBa3YdC5xG5335AV2haWvjocVisJhK73\n",
"vhrGKFjnndxbEwkE/wCQLdKvFa061u3PWZn5fIrGNhERcqwiIgIiIIzg36o3viTO/m1tWajODfqj\n",
"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\n",
"\" class=\"ui-resizable\" style=\"margin: 0px; resize: none; position: static; zoom: 1; display: inline-block; height: 256px; width: 426px;\">\n",
"<img src=\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEP\n",
"ERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4e\n",
"Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCADtAZQDASIA\n",
"AhEBAxEB/8QAHAABAAIDAQEBAAAAAAAAAAAAAAIDAQQGBQcI/8QARxAAAgEDAgMFBAgEAwUHBQAA\n",
"AQIDAAQRBSEGEjETIkFRcQcyYYEUFTNCcpGhsSNSwdE0YuEIFiRDgjVEU2OSk/AXJVRksv/EABkB\n",
"AQADAQEAAAAAAAAAAAAAAAABAgMEBf/EAC8RAQACAQIDBwIFBQAAAAAAAAABAgMEESExQRITMlFh\n",
"kdHB8CKBobHhMzRCcfH/2gAMAwEAAhEDEQA/AP2XSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKB\n",
"SlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKBSlKB\n",
"SlKBSlKBSlKBSlKBSlKBSlKBSlDt1oFKpluY4/HJ8K1xPPMDygIMkZPr5UG3LLHGMu2KoW/gLcuT\n",
"+9a80QEZZiXOR19fKqZFUzAEA+9QemLmE/fA9dqmro3uup9DXldmngMehxWOz8mYfrQexSvHjMqs\n",
"3LKRg/HyqwT3S/eB+f8ApQepSvOF7OPejz8v9ammoqQC0ZHzoN6layX0DeJ/erBcwH/mAeu1BbSs\n",
"K6N7rKfQ1mgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgUpSgU\n",
"pVcs8caklhtQWVF3RB3mArU+lSSgGJCAR1O1UzRkqDI5bvLt0HUUGzJdjPLGpc/CqGM0k2HcqOXO\n",
"AatAAGAAB5CoH/EL+A/uKCSRom6jfxPjUYPdb8bfvVlURSDvhFLnmPTp+dBO4+xb5fvVEn2w+dWT\n",
"rI0LF2AGPdX+9USRqJQBkbnoTQWUqPIR0kb96YkH3lPqKAnvv6/0FSqpC4d+4Dv4H4VPn80cfLP7\n",
"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\n",
"AEb4hfiFtOVEs5msjeuij6V2T9nyc3WTry43z0oPotfLOE9W4J0v218bWtjq2g2lxPY2Et3HHdRK\n",
"73AlvBKXGclxzRhs7jKg+Fb/ALTNX4e1fh3SZ21TTNQ4b+tbV9YdLhJbf6KwcoZSCV7IydlknukZ\n",
"ztmvT9jnL/uQPo3/AGd9Y331bj3fof0qXsOT/wAvs+XkxtycuNqDjIdN4ah9rl9YtHwdxRLxFfzp\n",
"qNr9XpJqGnRC0we2cs3NCTCqFWRN5hueh+naNwxw1opU6Nw9pGm8rF1+iWUcWGIwT3QNyABnyr1q\n",
"UGhomiaLocMsOi6Rp+mRzSGWVLS2SFZHPVmCgZPxO9b9KUClKUClKUClKUClKUClKUClKUClKUCl\n",
"KUClKUClKUClKUClKUClKUClKUClKUClKUClKUCtfUrGy1Kwn0/UbO3vLO4Qxz29xGJI5UOxVlbI\n",
"IPka2KUHnaDoOh6BBJb6FounaVDK3PJHZWqQq7YxkhAATjxr0aUoPO4livLjRbi2stN03U3mXspL\n",
"TUJjFBNG2zqzCOTYqTtykHoeteX7NeH7jhnhn6tuEtIM3U88VpZsTb2cbyFlgiJCkooOB3VHXCqM\n",
"AdLSgVzvtE4oteEeF5tVubizgkeRLe2a7mEUPbSHlTtHJAVATzMfBQcZOBXRUoOL9inEEnEvs+td\n",
"Qudettdukubm3mvYOzAkMc7qpIj7qkoEOB4EHxzXW6j9J+r7j6Hj6T2Tdjnpz4PL+uKq0bTLHR7A\n",
"WOnQdhbiSSUJzs3ekdpHOSSd2Zj89tq3KD4x7ErnQbbVrL6luLWGOXh+0j1rvhWfVCxws2et0f43\n",
"OD3/AHeb7tbfsij0bR+OL3RdFuOFtcFzFeXt1qmk2ix3Ns5ulYW91Irvzs3bNy55D/Bbu+I+uUoF\n",
"KUoFKUoFKUoFKUoFKUoFKUoFKUoFKUoFKUoP/9k=\n",
"\" class=\"ui-resizable\" style=\"margin: 0px; resize: none; position: static; zoom: 1; display: inline-block; height: 237px; width: 404px;\">\n",
"\n",
"#Introduction to B-Splines curves by a dummy\n",
"B-splines are mathematical objects which are very useful in computer aided design applications. They are a generalization of Bezier curves which were developped for the car industry in the mid 1900's. The user typically manipulates the vertices (**control points**) of a polyline and the b-spline will gracefully and smoothly interpolate those points. B-splines have nice curvature properties that make them very useful for design and industry and can be easily used in 2D or 3D (and maybe more...). They were further generalized into Non-Uniform Rational B-splines, yep: **NURBs**.\n",
"\n",
"##Parametric curves\n",
"A **b-spline curve** is a **parametric curve** whose points' coordinates are determined by **b-spline functions** of a parameter usually called $t$ (for *time* - this comes from physics and motion description). More precisely: A $D$-Dimensionnal b-spline curve is a **parametric curve** whose $D$ component functions are **b-spline functions**.\n",
"\n",
"Let's pretend $C(t)$ is a 2D B-Spline *curve* (each of its points has two coordinates) : \n",
"\n",
"- **eq. 1 :** $C(t) = ( S_x(t), S_y(t) )$\n",
"\n",
"$S_x$ and $S_y$ are the component functions of $C$ for the $x$ and $y$ coordinates respectively. In other words, $S_x(t)$ and $S_y(t)$ will yield the x and y coordinates of $C(t)$'s points. *They* are the actual b-spline functions.\n",
"\n",
"#B-Spline Function\n",
" But $t$ can't define the shape of $C$ all alone. A **b-spline curve is also defined by**:\n",
"\n",
"- $P$ : an $m$-sized list of control points. This defines which points the curve will interpolate. For example $P=[(2,3),(4,5),(4,7),(1,5)]$ be a list of $m=4$ vertices with two **de Boor points** each ($D=2$). Graphically, $P$ forms the **control polygone** or **control cage** of the curve.\n",
"- $V$ : a $k$-sized list of non-decreasing real values called **knot vector**. It's the key to b-splines but is quite abstract. Knot vectors are very intrically tied to...\n",
"- $n$ : the **degree** of the function. A higher degree means more derivability.\n",
"\n",
"$S_x$ and $S_y$ are the same function $S$ which simply processes different de Boor points (different coordinates of $P$'s points). So for the 2D curve $C$:\n",
"\n",
"- **eq. 2 :** $C_{P,V,n} (t) = ( S_{Px,V,n} (t), S_{Py,V,n} (t) )$\n",
"\n",
"Note that $S$ is \"configured\" (subscripted) like $C$ except that for the $x$ component function it takes the $x$ coordinate of points in $P$, thus the $Px$ subscript, the same goes for the $y$ component/coordinate. This is exactly what I meant above by *\"processes different de Boor points\"*. These two sentences are equivalent.\n",
"I also didn't put $P$, $V$ and $n$ as parameters because when you evaluate $C$, you evaluate $S$ and you evaluate it for a varying $t$, while all other inputs remain constant. This expression makes sense when a curve is to be evaluated more often than its control points are modified. Now we just need to know the definition of a B-spline function.\n",
"\n",
"The mathematical definition of a B-Spline of degree $n$ as found in literature \\[[Wolfram](#bspl_wolf),[Wikipedia](#bspl_wiki)\\] is\n",
"\n",
"- **eq. 3 :** $S_{n}(t) = \\sum \\limits_i^m p_i b_{i,n}(t)$\n",
"\n",
"$b$ is the **b-spline basis function**, we're getting close! $p_i$ is the vertex of index i in $P$. This means **eq. 3** is for **one** dimension! Let's express it for curve of $D$-dimensions.\n",
"\n",
"- **eq. 4 :** $\\forall d \\in \\{1,...,D\\}, C_{P,V,n} = (S_{n,d_1}(t), ...,S_{n,d_D}(t) ) = (\\sum \\limits_i^m p_{i,d_1} b_{i,n}(t), ..., \\sum \\limits_i^m p_{i,d_D} b_{i,n}(t))$\n",
"\n",
"Roughly, $S$ is a sum of monomials, making it a polynomial! :) There is one monomial for each index of a vertex and each monomial is the product of the de Boor point at that index and the basis function at $t$ for that index. This is repeated for $D$ dimensions. So computing b-splines this way is quite slow with many loops, etc... but the implementation is easy and there are ways to speed it up (like memoization \\[[Wikipedia](#memo_wiki), [StackOverflow](#memo_stov)\\]).\n",
"\n",
"Okay, time to translate **eq. 4** to Python even though we don't know what $b$ is exactly. I'll try to follow the same naming but keep in mind that Python uses 0-indexing while maths use 1-indexing, so we shall pay attention to the iterations and array sizes.\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def C_factory(P, V=None, n=2):\n",
" \"\"\" Returns a b-spline curve C(t) configured with P, V and n.\n",
" \n",
" Parameters\n",
" ==========\n",
" - P (list of D-tuples of reals) : List of de Boor points of dimension D.\n",
" - n (int) : degree of the curve\n",
" - V (list of reals) : list of knots in increasing order (by definition).\n",
" \n",
" Returns\n",
" =======\n",
" A D-dimensionnal B-Spline curve.\n",
" \"\"\"\n",
" \n",
" # TODO: check that p_len is ok with the degree and > 0\n",
" m = len(P) # the number of points in P \n",
" D = len(P[0]) # the dimension of a point (2D, 3D)\n",
" \n",
" # TODO: check the validity of the input knot vector.\n",
" # TODO: create an initial Vector Point.\n",
" \n",
" #############################################################################\n",
" # The following line will be detailed later. #\n",
" # We create the highest degree basis spline function, aka. our entry point. #\n",
" # Using the recursive formulation of b-splines, this b_n will call #\n",
" # lower degree basis_functions. b_n is a function. #\n",
" #############################################################################\n",
" b_n = basis_factory(n)\n",
" \n",
" def S(t, d):\n",
" \"\"\" The b-spline funtion, as defined in eq. 3. \"\"\"\n",
" out = 0.\n",
" for i in range(m): #: Iterate over 0-indexed point indices\n",
" out += P[i][d]*b_n(t, i, V)\n",
" return out\n",
" \n",
" def C(t):\n",
" \"\"\" The b-spline curve, as defined in eq. 4. \"\"\"\n",
" out = [0.]*D #: For each t we return a list of D coordinates\n",
" for d in range(D): #: Iterate over 0-indexed dimension indices\n",
" out[d] = S(t,d)\n",
" return out\n",
" \n",
" ####################################################################\n",
" # \"Enrich\" the function with information about its \"configuration\" #\n",
" #################################################################### \n",
" C.V = V #: The knot vector used by the function\n",
" C.spline = S #: The spline function.\n",
" C.basis = b_n #: The highest degree basis function. Useful to do some plotting.\n",
" C.min = V[0] #: The domain of definition of the function, lower bound for t\n",
" C.max = V[-1] #: The domain of definition of the function, upper bound for t\n",
" C.endpoint = C.max!=V[-1] #: Is the upper bound included in the domain.\n",
" return C\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"###Some python background\n",
"- `C_factory` is a **high-order function**: it is a function which returns a function. The returned `C` function is a closure, it inherits the namespace of its definition context and holds reference to those variables.\n",
"- In Python 3, the `range(start, stop, step)` function returns an iterator which iterates over integers like: $[0,X)$. This spares us much fiddling with \"-1\" adjustments all over the place. In Python 2, there it is called `xrange(start, stop, step)`.\n",
"\n",
"##What *is* the Knot Vector?\n",
"Right, good question. $V$ is a list whose length is $k$ (see **eq. 6**), made of reals $t_q$ (called **knots**) with $q \\in [1, k]$ where $t_q \\leq t_{q+1}$. In other words values must never decrease. The current $t$ must lay somewhere in $[t_1, t_k)$. During the calculations $t$ will be compared to all the knot spans and if it falls in those spans, then the basis function will have a certain influence on the final curve. It determines which vertices (de Boor points) will influence the curve at a given $t$.\n",
"\n",
"The distribution of the knots in $V$ will determine if the curve meets the endpoints of the control polyline (it is then **clamped**), or not (**unclamped** - the domain of definition is shorter). It can be **periodic** or not if some knot spans repeat themselves, and **uniform** or not if the knot spans have a constant size, but more on this later when I wrap my head around it a bit more! Just remember that the distribution of knots will depend on the type of the knot vector. We will focus on clamped knot vectors which are a special case of b-splines behaving like Bezier curves.\n",
"\n",
"###Clamped Knot Vector\n",
"A clamped knot vector looks like this:\n",
"\n",
"- **eq. 5 :** $ V = \\{t_1 = ... = t_n, ..., t_{k-n-1}, t_{k-n} = ... = t_{k} \\} $\n",
"\n",
"Where, as a reminder, $k$ is the length of $V$, where $n$ is the degree of the curve. and the length of a knot vector is totally conditionned by the type of $V$, the degree of the curve and the number of control points.\n",
"\n",
"The $t_1, ... ,t_n$ and $t_{k-n} = ... = t_k$ are called **external knots**, the others are **internal knots**.\n",
"\n",
"- **eq. 6 :** $k = m + n + 2$\n",
"\n",
"We can now implement a basic `make_knot_vector` function which only handles clamped knot vectors."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def make_knot_vector(n, m, style=\"clamped\"):\n",
" \"\"\"\n",
" Create knot vectors for the requested vector type.\n",
" \n",
" Parameters\n",
" ==========\n",
" - n (int) : degree of the bspline curve that will use this knot vector\n",
" - m (int) : number of vertices in the control polygone\n",
" - style (str) : type of knot vector to output\n",
" \n",
" Returns\n",
" =======\n",
" - A knot vector (tuple)\n",
" \"\"\"\n",
" if style != \"clamped\":\n",
" raise NotImplementedError\n",
" \n",
" total_knots = m+n+2 # length of the knot vector, this is exactly eq.6\n",
" outer_knots = n+1 # number of outer knots at each of the vector.\n",
" inner_knots = total_knots - 2*(outer_knots) # number of inner knots\n",
" # Now we translate eq. 5:\n",
" knots = [0]*(outer_knots)\n",
" knots += [i for i in range(1, inner_knots)]\n",
" knots += [inner_knots]*(outer_knots)\n",
" \n",
" return tuple(knots) # We convert to a tuple. Tuples are hashable, required later for memoization"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#B-spline basis function\n",
"Basis functions are the functions that will be multiplied and summed in the B-Spline function.\n",
"\n",
"##Definition\n",
"The b-spline basis function is defined as follows:\n",
"\n",
"- **eq. 7 :** $b_{i,1}(x) = \\left \\{ \\begin{matrix} 1 & \\mathrm{if} \\quad t_i \\leq x < t_{i+1} \\\\0 & \\mathrm{otherwise} \\end{matrix} \\right.$\n",
"\n",
"- **eq. 8 :** $b_{i,k}(x) = \\frac{x - t_i}{t_{i+k-1} - t_i} b_{i,k-1}(x) + \\frac{t_{i+k} - x}{t_{i+k} - t_{i+1}} b_{i+1,k-1}(x).$\n",
"\n",
"There is really not much to say about them right now. Sometime later we might try to understand them, but we're fine with this definition right now. However, I did get confused as some sites write **eq. 7** this way:\n",
"\n",
"- $b_{i,1}(x) = \\left \\{ \\begin{matrix} 1 & \\mathrm{if} \\quad t_i \\leq x \\leq t_{i+1} \\\\0 & \\mathrm{otherwise} \\end{matrix} \\right.$\n",
"\n",
"This is wrong (the double $\\leq$), at least as far as I could see : graphically, spikes appear on the curve at knot values. It makes sense since at knots the sum (**eq. 3**) will cumulate values from different intervals because $b_{i,1}$ will evaluate to 1 instead of 0 at internal knots.\n",
"\n",
"##What is `basis_factory(n)` ?\n",
"It is a high-order function! It will return b-spline basis functions `b_n` of degree $n$ which will be used by `S`. We are ready to implement it. We need to translate **eq. 7** and **eq. 8** to Python. Again, we must be extra careful with indexing."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def basis_factory(degree):\n",
" \"\"\" Returns a basis_function for the given degree \"\"\"\n",
" if degree == 0:\n",
" \n",
" def basis_function(t, i, knots):\n",
" \"\"\"The basis function for degree = 0 as per eq. 7\"\"\"\n",
" t_this = knots[i]\n",
" t_next = knots[i+1]\n",
" out = 1. if (t>=t_this and t< t_next) else 0. \n",
" return out\n",
" else:\n",
" \n",
" def basis_function(t, i, knots):\n",
" \"\"\"The basis function for degree > 0 as per eq. 8\"\"\"\n",
" out = 0.\n",
" t_this = knots[i]\n",
" t_next = knots[i+1]\n",
" t_precog = knots[i+degree]\n",
" t_horizon = knots[i+degree+1] \n",
"\n",
" top = (t-t_this)\n",
" bottom = (t_precog-t_this)\n",
" \n",
" if bottom != 0:\n",
" out = top/bottom * basis_factory(degree-1)(t, i, knots)\n",
" \n",
" top = (t_horizon-t)\n",
" bottom = (t_horizon-t_next)\n",
" if bottom != 0:\n",
" out += top/bottom * basis_factory(degree-1)(t, i+1, knots)\n",
" \n",
" return out\n",
" \n",
" ####################################################################\n",
" # \"Enrich\" the function with information about its \"configuration\" #\n",
" #################################################################### \n",
" basis_function.lower = None if degree==0 else basis_factory(degree-1)\n",
" basis_function.degree = degree\n",
" return basis_function"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#The puzzle is complete\n",
"\n",
"We now have all that is needed to start drawing clamped b-splines!\n",
"\n",
"##Constructing the spline curve"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# We decide to draw a quadratic curve\n",
"n = 2\n",
"# Next we define the control points of our curve\n",
"P = [(3,-1), (2.5,3), (0, 1), (-2.5,3), (-3,-1)]\n",
"# Create the knot vector\n",
"V = make_knot_vector(n, len(P), \"clamped\")\n",
"# Create the Curve function\n",
"C = C_factory(P, V, n)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##Sampling the curve\n",
"$C(t)$ is ready to be sampled (evaluated)! That means that we are ready to feed it with values for $t$ and getting point coordinates out. In the case of **clamped curves** the domain of definition of $C$ - that is: the values for which $t$ is valid - is $[min(V), max(V))$. These bounds are available as `C.min` and `C.max` member attributes of `C`. Do NOT sample at the endpoint, the curve is not defined there in the case of clamped knot vectors. There *are* situations where it is possible to sample at `C.max` but this value will be different to $max(V)$.\n",
"\n",
"There are many ways to sample a function. In general most effort is put in strategies the put more samples (decreasing sample steps) in curvy areas and less in straight lines. This can be done by analyzing the polyline angles for example. The best sampling visually is when each display point was tested for being a point of the curve.\n",
"\n",
"These are complicated strategies that we might explore later. For now we will use a linear sampling of the definition interval."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Regularly spaced samples\n",
"sampling = [t for t in np.linspace(C.min, C.max, 100, endpoint=C.endpoint)]\n",
"# Sample the curve!!!!\n",
"curvepts = [ C(s) for s in sampling ]\n",
"\n",
"# Create a matplotlib figure\n",
"fig = plt.figure()\n",
"fig.set_figwidth(16)\n",
"ax = fig.add_subplot(111)\n",
"# Draw the curve points\n",
"ax.scatter( *zip(*curvepts), marker=\"o\", c=sampling, cmap=\"jet\", alpha=0.5 )\n",
"# Draw the control cage.\n",
"ax.plot(*zip(*P), alpha=0.3)\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 7,
"text": [
"[<matplotlib.lines.Line2D at 0x7f46a6cf67d0>]"
]
},
{
"jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYF\nBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoK\nCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAEAA54DASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KKK\npeI28Qp4ev38Iw2UmrCylOlx6lI6W7XGw+WJWQMyxl9u4qCQM4BPFAFPRPiL8PvEvi3W/AHhzx1o\n2oa94a+zf8JHollqkUt3pX2iMyW/2mFWLwebGC6bwN6glcjmtmviP/gmh8Ff2vfg1+1d8Vh+0h8G\nPC2lrrXgXwxcav418O+NNQ1aPxFrgu9ZluZ0e50exRmZrqRpIlbFogtIUDxuvldf8AP2sP8Ago9+\n0l8CPBP7RXw9/Yr+CVvoHj7wjpviPQ7fWf2jtYivIrO+tY7qFZ0i8ISIkojlUOqSOoYEBmGCQD6t\norwD/hY3/BU3/ozf9n//AMSW1z/5jKP+Fjf8FTf+jN/2f/8AxJbXP/mMoA9/orwD/hY3/BU3/ozf\n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\nABJbXP8A5jKP+Fjf8FTf+jN/2f8A/wASW1z/AOYygD3+ivAP+Fjf8FTf+jN/2f8A/wASW1z/AOYy\nj/hY3/BU3/ozf9n/AP8AEltc/wDmMoA9/or5ytf2nv2y/Afxs+GPw2/aQ/Zd+GOiaL8TfF134csd\na8EfGnUdburK8h0LVdYVpLW68O2CNE0elTRlhPuVpUO1hnH0bQAUUUUAFeAf8Enf+UWX7NP/AGb/\nAODf/THZ17/XgH/BJ3/lFl+zT/2b/wCDf/THZ0Ae/wBFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFR\n2lpaWFrFYWFtHBBBGscMMKBUjQDAVQOAABgAVJRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBHd2\nlpf2sthf20c8E8bRzQzIGSRCMFWB4IIOCDUlFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAEd3aW\nl/ay2F/bRzwTxtHNDMgZJEIwVYHggg4INSUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAR3NpaX\nsYhvLaOZFkSQJKgYB0YMrYPcMAwPYgEdKkoooAKKKKACiiigAooooAKKKKACiiigAooooAjubS0v\nYxDeW0cyLIkgSVAwDowZWwe4YBgexAI6VJRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBHc2lpe\nxiG8to5kWRJAkqBgHRgytg9wwDA9iAR0qSiigAooooAKKKKACiiigAooooAKKKKACiiigCOa0tLm\nSGa4to5Ht5DJA7oCY3Ksu5Seh2sy5HZiO5qSiigAooooAKKKKACiiigAooooAKKKKACiiigDwD9s\nj/k4r9k7/s4DUv8A1XnjKvf68A/bI/5OK/ZO/wCzgNS/9V54yr3+gAooooAK8A/4JO/8osv2af8A\ns3/wb/6Y7Oov2Q/22vEP7Rvxj+IPwO8W+BvBdpq3w9W1Gr6h8OPiWPFOnWl1LPdQSaXeTmys2s9S\nga1Yy2hR9iyKS/OKl/4JO/8AKLL9mn/s3/wb/wCmOzoA9/ooooAKKKKACiiigAooooAKKKKACiii\ngAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA\nCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK\n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\nH3fW+a4Wphq6c7Xkk3Zpq9lfVaXatJ+ooSTQUUUV5hYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB4\nB+2R/wAnFfsnf9nAal/6rzxlXv8AXgH7ZH/JxX7J3/ZwGpf+q88ZV7/QAVX1bS9P1zSrnRNWtlmt\nby3eC5hbpJG6lWU49QSKsUUAfPP7Hv7EHjH9m7xLZ+IPiP8AHtfHX/CMeALLwN4AWPwuNMfS9Ctp\nN4F0wuJhe3kvl2yyXCiCNhaptgQs5bK/4I+fDH4beEP+CaP7PXizwn8PdD0vVdX+Afg+TVtS07SY\nYLi9dtGtHZpZEUNISxLEsTkknrX03XgH/BJ3/lFl+zT/ANm/+Df/AEx2dAHv9FFFABRRRQAUUUUA\nFFFFABRRRQAUUUUAFFFUfE2oXWk+G9Q1Sx8nz7axllh+0tiPeqEjcey5HPtTSbdkB8g/8FI/i7+1\n54U+K3hXT/2btN10aXpVhPPd3/h3wuuqvJq0uFhtZUaKURp5Bc5wm7ziN4xX1v4EvPFWo+B9G1Dx\n1pcNjrc+lW8msWVu+6O3umiUyxqcnKq5YA5PAr5E/wCCX3i79uvxJ488UXH7Tuj+IY9Jv7A397L4\nk8PpY+Rq7yxqsNmRGnnQCAOCy+YgEUW1/mOftCtK7TqtJu0Vy29N2vJyu/Q7cUlShGhaN46uUXfm\n5rNXe3u7abahRRRWRxBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU\nAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA\nUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAfJv/BVP\n4gftbeD/AAl4b0b9nDSta/srV2vYfEuo+HfDQ1S7jkCxi2h8sxS+XG+6Ylwmd0aLvTPze9fs2eLv\nH/jj4E+FvEPxa0hNP8WyaNDH4qsEUAW+pIoS4TAJ2jzAxAyeCMEjmuzv2vEsZm06NHuBExgWU4Uv\nj5QT6ZxXxD/wTc+IH7fV/wDtK+LvDf7VOia9baHqejy30n9vaAllDDrMc0ETRWDoiieEwliSpkXC\nI2/JYt7NG2MyqdJKEXS9697TldpNJdbLXTZIzfu1L9z7jooorxjQKKKKACiiigAooooAKKKKACii\nigAooooA+ZP2svhj8NtA/a4/Za+IGhfD3Q7LXtR+Pmpx6hrdppMMd5dI3w+8YMVkmVQ7glEJBJyV\nX0FfTdeAftkf8nFfsnf9nAal/wCq88ZV7/QAUUUUAFeAf8Enf+UWX7NP/Zv/AIN/9MdnXv8AXgH/\nAASd/wCUWX7NP/Zv/g3/ANMdnQB7/RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXyN/wAFV/Hn7WPh\nzSfBvhH9nG017+ztduLxPEtx4W0BdSvf3YhMURiMUpWFw0oZgmN2xWZQcN9c18PfsVftJ/tofGD9\nuLxP4e+Mngm4h8O6ZbajYzW8vhxraDQWjnUxrDdbQLjzCFQ5Zy/l712quK2oPlk6mq5VdW79Px19\nEzqwqak6toyUdWpbNbbaX+R9efBq/wDiHqvwj8Mal8XNLhsvFNxoNpJ4is7cAJDemFTMgAJAAfcM\nAkDoCetdLRRWJzN3YUUUUCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA\nooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi\niigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK+L\n/wDgrJ8QP23vAGo+C9c/ZZ0jXv7MsFury+v/AAz4dXUp/ti7UWGdTHJ5cBheU5IVWb7zDatfaFYH\nxW1XxZoXwu8Sa34B8Nx6zrtnoF5PoukSn5b67SB2hgPI4dwq9R96uzAYpYLGQrOCmlvGWzTVmn8m\nTKPNG1yx8Pr7xRqngLQ9S8cWdtb61caPbS6xb2b7oYrpolMqocnKhywBycgDmtevjb/gkp+0H+1f\n8YtP8YeEv2idIvH0/wALtaW+j6pqHhttLmWRvM3WuxlXzFSNYTuILKWIZmJGPsmljsJLA4udCTTs\n907pp6pprugjLmjcKKKK5CgooooAKKKKACiiigAooooAKKKKAPAP2yP+Tiv2Tv8As4DUv/VeeMq9\n/rwD9sj/AJOK/ZO/7OA1L/1XnjKvf6AKfiHU7vRNAvtZsNAvNWntLOWaDS9PaIXF46IWEMRmkjjD\nuQFXe6JkjcyjJHl2m+PfGX7Q1pqHwo8d/sv/ABd+Hem6lp7ifxLc+JdHsXjwV/dxXGj6xNdwytzh\n41XAB+dTjPrtZPjvwF4F+KXg/Ufh58TfBek+I/D+sWrW2raHrunRXlnewt96KaGVWSRD3VgQaAPJ\nv+CaviLxJ4u/4J//AAc8TeMPE2p61ql98PNLmv8AVta1GW8u7uU267pZp5maSaRjyXdizHkkmuT/\nAOCPnxC0HxR/wTR/Z68Nabp+uRXOmfAPwelzJqPhi/s7dyujWiHyp54UiuBkcGJnBGGBIINe3fBr\n4B/Ar9nLwlJ4B/Z6+C3hLwHoUt695Lovgzw5a6XaPcOqq8xhto0QyMqIC+MkIoJ4FeW/8Enf+UWX\n7NP/AGb/AODf/THZ0Ae/0UUUAFFFFABRRRQAUUUUAFFFFABRRRQBX1a4vbTSrm702xN1cxW7vb2w\nYKZXCkqmSQBk4GSQOap+DNAfwz4Xs9FnmEs8cW67mH/LWdyXlf8A4E7M341qUVp7SSpOn0bv9233\nXf3itrcKKKKzGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU\nAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA\nUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHw\n/wDtof8ABQD41fsy/tv6J8L/AAB8K9O1DStW0rTUvoL2KZrvXGluZFVbIo6qrpudM7ZcsQGCqAa+\n4KimsbK4uIru4s4nlgJMMrxgtHng7SeRn2qWurEYiFeFNKFnFWbu/e10b7WVlp0SJSabCiiiuUoK\nKKKACiiigAooooAKKKKACiiigD5k/ay+IWg61+1x+y14Js9P1xL2x+PmpvPNd+GL+3s2A+H3jAHy\n7uWFbeY5YYEcjEgMQCFYj6brwD9sj/k4r9k7/s4DUv8A1XnjKvf6ACiiigArwD/gk7/yiy/Zp/7N\n/wDBv/pjs69/rwD/AIJO/wDKLL9mn/s3/wAG/wDpjs6APf6KKKACiiigAooooAKKKKACiiigAooo\noAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig\nAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC\n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\n",
"metadata": {},
"output_type": "display_data",
"text": [
"<matplotlib.figure.Figure at 0x7f46a758e710>"
]
}
],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Mission complete! We can now draw clamped 2D Curves!\n",
"\n",
"#Short discussion\n",
"##Degree\n",
"Compared to Bezier curves, a B-Spline of degree $n$ can interpolate a polyline of an almost arbitrary number of points without having to raise the degree. With Bezier curves, to interpolate a polyline of $m$ vertices you need a curve of $n=m-1$ degree. Or you do a \"poly-bezier\" curve: you connect a series of lower-degree bezier curves and put effort in keeping control points correctly placed to garantee the continuity of the curve at the \"internal endpoints\".\n",
"\n",
"##Ugly endpoint\n",
"In our example, the endpoint is on the left (dark red). It is quite clear that the curve's end doesn't match that of the polyline. This is because in our basic sampling example, we didn't include the endpoint (when $t=max(V)$). And for a good reason : the curve is not defined there. However, we could include a sample $t_f$ very close to $max(V)$:\n",
"\n",
"- $t_f=max(V)-\\epsilon $\n",
"\n",
"##Computation\n",
"In our example we sampled one short b-spline of low-degree and with a decent amount of samples and it went quickly. However, if you add more curves and sample them in a similar way, you will notice the slowness of the calculations. Memoization is interesting in our case for several reasons:\n",
"\n",
"- the recursive definition of $b_n$ (**eq. 8**) and its implementation (see `basis_function(n)`) imply many requests to create lower-level basis functions. \n",
"- the fact that the same $S(t)$ is used for the different components (coordinates) of the curve points implies many calls to the basis_functions with the same exact input. So in a 2D case, for each point we save one full computation of $b_n$.\n",
"- if we consider that the curve will be more often sampled than modified (*eg:* adaptive sampling in a resolution-aware drawing system to get exact representation of the curve) then there are chances that the curve will be sampled many times for the same $t$.\n",
"\n",
"This gives serious performance improvements at the expense of memory.\n",
"\n",
"##Complete implementation with memoization\n",
"See the final listing for an implementation with memoization. The creation of the knot vector was moved inside the `C_factory` function. A helper function was created for drawing purpose. It includes a dirty fixed hack to approach the endpoint too.\n",
"\n",
"#References\n",
"\n",
"- <a id=\"bspl_wolf\"><href url=\"http://mathworld.wolfram.com/B-Spline.html\">Wolfram Mathworld's b-spline article</href></a>\n",
"- <a id=\"bspl_wiki\"><href url=\"http://en.wikipedia.org/wiki/B-spline#Definition\">Wikipedia's b-spline article</href></a>\n",
"- <a id=\"memo_wiki\"><href url=\"http://en.wikipedia.org/wiki/Memoization\">Wikipedia Memoization article</href></a>\n",
"- <a id=\"memo_stov\"><href url=\"http://stackoverflow.com/questions/1988804/what-is-memoization-and-how-can-i-use-it-in-python\">StackOverflow Python Memoization article</href></a>\n",
"\n",
"#Full implementation"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def memoize(f):\n",
" \"\"\" Memoization decorator for functions taking one or more arguments. \"\"\"\n",
" class memodict(dict):\n",
" def __init__(self, f):\n",
" self.f = f\n",
" def __call__(self, *args):\n",
" return self[args]\n",
" def __missing__(self, key):\n",
" ret = self[key] = self.f(*key)\n",
" return ret \n",
" return memodict(f)\n",
"\n",
"def C_factory(P, n=2, V_type=\"clamped\"):\n",
" \"\"\" Returns a b-spline curve C(t) configured with P, V_type and n.\n",
" The knot vector will be created according to V_type\n",
" \n",
" Parameters\n",
" ==========\n",
" - P (list of D-tuples of reals) : List of de Boor points of dimension D.\n",
" - n (int) : degree of the curve\n",
" - V_type (str): name of the knit vector type to create.\n",
" \n",
" Returns\n",
" =======\n",
" A D-dimensionnal B-Spline Curve.\n",
" \"\"\"\n",
" \n",
" # TODO: check that p_len is ok with the degree and > 0\n",
" m = len(P) # the number of points in P \n",
" D = len(P[0]) # the dimension of a point (2D, 3D)\n",
" \n",
" # Create the knot vector\n",
" V = make_knot_vector(n, m, V_type)\n",
" # TODO: check the validity of the input knot vector.\n",
" # TODO: create an initial Vector Point.\n",
" \n",
" #############################################################################\n",
" # The following line will be detailed later. #\n",
" # We create the highest degree basis spline function, aka. our entry point. #\n",
" # Using the recursive formulation of b-splines, this b_n will call #\n",
" # lower degree basis_functions. b_n is a function. #\n",
" #############################################################################\n",
" b_n = basis_factory(n)\n",
" \n",
" @memoize\n",
" def S(t, d):\n",
" \"\"\" The b-spline funtion, as defined in eq. 3. \"\"\"\n",
" out = 0.\n",
" for i in range(m): #: Iterate over 0-indexed point indices\n",
" out += P[i][d]*b_n(t, i, V)\n",
" return out\n",
" \n",
" def C(t):\n",
" \"\"\" The b-spline curve, as defined in eq. 4. \"\"\"\n",
" out = [0.]*D #: For each t we return a list of D coordinates\n",
" for d in range(D): #: Iterate over 0-indexed dimension indices\n",
" out[d] = S(t,d)\n",
" return out\n",
" \n",
" ####################################################################\n",
" # \"Enrich\" the function with information about its \"configuration\" #\n",
" #################################################################### \n",
" C.P = P #: The control polygone\n",
" C.V = V #: The knot vector used by the function\n",
" C.spline = S #: The spline function.\n",
" C.basis = b_n #: The highest degree basis function. Useful to do some plotting.\n",
" C.min = V[0] #: The domain of definition of the function, lower bound for t\n",
" C.max = V[-1] #: The domain of definition of the function, upper bound for t\n",
" C.endpoint = C.max!=V[-1] #: Is the upper bound included in the domain.\n",
" return C\n",
"\n",
"def make_knot_vector(n, m, style=\"clamped\"):\n",
" \"\"\"\n",
" Create knot vectors for the requested vector type.\n",
" \n",
" Parameters\n",
" ==========\n",
" - n (int) : degree of the bspline curve that will use this knot vector\n",
" - m (int) : number of vertices in the control polygone\n",
" - style (str) : type of knot vector to output\n",
" \n",
" Returns\n",
" =======\n",
" - A knot vector (tuple)\n",
" \"\"\"\n",
" if style != \"clamped\":\n",
" raise NotImplementedError\n",
" \n",
" total_knots = m+n+2 # length of the knot vector, this is exactly eq.6\n",
" outer_knots = n+1 # number of outer knots at each of the vector.\n",
" inner_knots = total_knots - 2*(outer_knots) # number of inner knots\n",
" # Now we translate eq. 5:\n",
" knots = [0]*(outer_knots)\n",
" knots += [i for i in range(1, inner_knots)]\n",
" knots += [inner_knots]*(outer_knots)\n",
" \n",
" return tuple(knots) # We convert to a tuple. Tuples are hashable, required later for memoization\n",
"\n",
"@memoize\n",
"def basis_factory(degree):\n",
" \"\"\" Returns a basis_function for the given degree \"\"\"\n",
" if degree == 0:\n",
" @memoize \n",
" def basis_function(t, i, knots):\n",
" \"\"\"The basis function for degree = 0 as per eq. 7\"\"\"\n",
" t_this = knots[i]\n",
" t_next = knots[i+1]\n",
" out = 1. if (t>=t_this and t<t_next) else 0. \n",
" return out\n",
" \n",
" else:\n",
" @memoize\n",
" def basis_function(t, i, knots):\n",
" \"\"\"The basis function for degree > 0 as per eq. 8\"\"\"\n",
" out = 0.\n",
" t_this = knots[i]\n",
" t_next = knots[i+1]\n",
" t_precog = knots[i+degree]\n",
" t_horizon = knots[i+degree+1] \n",
"\n",
" top = (t-t_this)\n",
" bottom = (t_precog-t_this)\n",
" \n",
" if bottom != 0:\n",
" out = top/bottom * basis_factory(degree-1)(t, i, knots)\n",
" \n",
" top = (t_horizon-t)\n",
" bottom = (t_horizon-t_next)\n",
" if bottom != 0:\n",
" out += top/bottom * basis_factory(degree-1)(t, i+1, knots)\n",
" \n",
" return out\n",
" \n",
" ####################################################################\n",
" # \"Enrich\" the function with information about its \"configuration\" #\n",
" #################################################################### \n",
" basis_function.lower = None if degree==0 else basis_factory(degree-1)\n",
" basis_function.degree = degree\n",
" return basis_function\n",
"\n",
"import matplotlib\n",
"def draw_bspline(C=None, P=None, n=None, V_type=None, endpoint_epsilon=0.00001):\n",
" \"\"\"Helper function to draw curves.\"\"\"\n",
" if P and n and V_type:\n",
" C = C_factory(P, n, V_type)\n",
" if C:\n",
" # Use 2D or 3D\n",
" is3d = True if len(C.P[0])==3 else False\n",
" from mpl_toolkits.mplot3d import Axes3D\n",
"\n",
" # Regularly spaced samples\n",
" sampling = [t for t in np.linspace(C.min, C.max, 100, endpoint=C.endpoint)]\n",
" # Hack to sample close to the endpoint\n",
" sampling.append(C.max - endpoint_epsilon)\n",
" # Sample the curve!!!!\n",
" curvepts = [ C(s) for s in sampling ]\n",
" \n",
" # Create a matplotlib figure\n",
" fig = plt.figure()\n",
" fig.set_figwidth(12)\n",
" if is3d:\n",
" fig.set_figheight(10)\n",
" ax = fig.add_subplot(111, projection='3d')\n",
" else:\n",
" ax = fig.add_subplot(111)\n",
" \n",
" # Draw the curve points\n",
" ax.scatter( *zip(*curvepts), marker=\"o\", c=sampling, cmap=\"jet\", alpha=0.5 )\n",
" # Draw the control cage.\n",
" ax.plot(*zip(*C.P), alpha=0.3)\n",
" # Draw the knots\n",
" knotspos = [C(s) for s in C.V if s!= C.max]\n",
" knotspos.append( C(C.max - endpoint_epsilon) )\n",
" ax.scatter( *zip(*knotspos), marker=\"*\", c=sampling, alpha=1, s=100 )\n",
" \n",
" # Here we annotate the knots with their values\n",
" prev = None\n",
" occurences = 1\n",
" for i, curr in enumerate(C.V):\n",
" if curr == C.max:\n",
" kpos = C(curr-endpoint_epsilon)\n",
" else:\n",
" kpos = C(curr)\n",
" if curr == prev:\n",
" occurences += 1\n",
" else:\n",
" occurences = 1\n",
" kpos[0] -= 0.3*occurences\n",
" ax.text( *kpos, s=\"t=\"+str(curr), fontsize=12 )\n",
" prev = curr\n",
"\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Next we define the control points of our 2D curve\n",
"P = [(3 , 1), (2.5, 4), (0, 1), (-2.5, 4), (-3, 0), (-2.5, -4), (0, -1), (2.5, -4), (3, -1)]\n",
"# Create the a quadratic curve function\n",
"draw_bspline(P=P, n=2, V_type=\"clamped\")\n",
"\n",
"# Next we define the control points of our 3D curve\n",
"P3D = [(3, 1, 8), (2.5, 3, 7), (0, 1, 6), (-2.5, 3, 5), (-3, 0, 4), (-2.5, -3, 3), (0, -1, 2), (2.5, -3, 1), (3, -1, 0)]\n",
"# Create the a quadratic curve function\n",
"draw_bspline(P=P3D, n=2, V_type=\"clamped\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYF\nBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoK\nCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAD7Ar8DASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KKK\nKACvArj/AIKtf8EubS4e0u/+CkvwCilicpLFJ8YtEVkYHBBBusgg9q99rwD/AIJO/wDKLL9mn/s3\n/wAG/wDpjs6AD/h7F/wSy/6SWfs//wDh5ND/APkqj/h7F/wSy/6SWfs//wDh5ND/APkqvf6KAPAP\n+HsX/BLL/pJZ+z//AOHk0P8A+SqP+HsX/BLL/pJZ+z//AOHk0P8A+Sq9/ooA8A/4exf8Esv+kln7\nP/8A4eTQ/wD5Ko/4exf8Esv+kln7P/8A4eTQ/wD5Kr3+igDwD/h7F/wSy/6SWfs//wDh5ND/APkq\nj/h7F/wSy/6SWfs//wDh5ND/APkqvf6KAPAP+HsX/BLL/pJZ+z//AOHk0P8A+SqP+HsX/BLL/pJZ\n+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\n807f08oopylKTu3cSSirIKKKKQwooooAKKKKACiiigDwD/gpZ/ybr4c/7OA+E/8A6sPw9Xv9eAf8\nFLP+TdfDn/ZwHwn/APVh+Hq9/oAKz/Feu/8ACL+FtS8Sixe5/s7T5rr7NEfml8tC+we5xj8a0KOv\nWgD5C/4J/wDxy/aO8UeN/CWjfHP42DxzD8UPgTpvxHt1/sOxso/DV3LNCs9ham0ijaWyZbyEQm4M\ns4NrIWmffhOi/wCCPnxC0HxR/wAE0f2evDWm6frkVzpnwD8Hpcyaj4Yv7O3cro1oh8qeeFIrgZHB\niZwRhgSCDXpn7Pn7Gv7OH7LOo6tqvwM+H0mjzaxbwWtwZ9cvr5ba0geV4LK0W7mlWxs42nmZLS3E\ncCGRisYzXH/8Enf+UWX7NP8A2b/4N/8ATHZ0Ae/0UUUAFFFFABRRRQAUUUUAFcz4t/4nnjDRfB03\ny23z6ndbuBP5DII4x64kdJD6eWB/FXTVz/xEsLz+y4fE+kW7SX2iT/bII0+9NGARNCPXfGWAH97a\ne1dWDaWIXRu6T7NppP5Pr03FLY8Z/bauYL/xT4V8N6RaxWeujTNTvbXxBP4ik01YLOM2y3FsHRH3\n+YWhYgjCCEP1Ar1j4A3nhnUvgb4P1PwZ4bl0fSbrw1ZT6dpc8hd7WF4UZY2Y5LsAcFiSWPPevLv2\nzYr/AMZad4SiXSb+88IXK3N5ealonhCLW7iO8CwmyAhktrjy43V7hjIsf3kjUsofDet/B298c6l8\nKvDt/wDEzTUs/EE2j276xbJGEEc5QbxtUkIc9VBIByATivLgpLG1E09l9m3fr19OhxUl/t1R+Ufs\n27/a+16dDpKKKK6juCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA\nKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo\noooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD5k/4KZfELQYPhZ4W+Hz6frhv5/j58\nJ3S4TwxftYgf8LA8Pv8ANeiE2yHCnhpAc4XG4gH6brwD/gpZ/wAm6+HP+zgPhP8A+rD8PV7/AEAF\nFFFABXgH/BJ3/lFl+zT/ANm/+Df/AEx2de/14B/wSd/5RZfs0/8AZv8A4N/9MdnQB7/RRRQAUUUU\n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\nWm69CP4Z1NncY/3lDxuf+Axj3pR8TdGsD5fi7Tb/AEJu76nb4gH/AG3jLRD8WB9q6OggEYIyD1Fa\n+3pT/iQXrH3X+sf/ACUVmtmRWd7Z6hbJeWF3FPDIMpLDIGVh6gjg1LWBefDPwjNcvqGmWMmlXbnL\n3Wjztau59XEZCyf8DDCov7N+Jeh86br9lrcI6Q6tD9nnP/baFSh/79D60exoVP4c/lJW/FXXzbQX\na3R0lY/jXxFc6DpiQaTEk2p38wttLgfo0zAnc3+wihnb/ZU9yKp/8LGh0z5PGPhrUtHx964lg8+3\n+vmw7go932fSmeDo38V6tL8Rr1CIZIzb6DE4+5a5BabHZpSA3+4sfQ7q0p4aVH97Wj7q+ak+iTWj\n87PZPrYHK+iNfwv4etfC2iQ6PbStKUy89xJ9+eViWeVv9pmJY/X0rQoorjnOVSblJ3bKSsgoooqQ\nCiiigAooooAKKKKACiiigAooooA8A/4KWf8AJuvhz/s4D4T/APqw/D1e/wBfMn/BTL4nfDa2+Fnh\nb4Z3HxC0OPxJcfHz4TyQeH31aEX0iD4geH33LAW8wjYrNkL0UnoDX03QAjKrqUdQQRggjgiua+J/\nwU+Dfxu8E3nw0+M/wl8M+L/DmoGM3/h/xRoNvqFlcmORZIzJBOjRvtkRHXIOGVSOQDXTUUAeXfsm\n/sb/ALPn7EvgTV/hv+zl8PdM8O6RrfizU/EN7a6ZpNpaJ9pvbl5jGFtYYl8qFGS3hUgmOCCGPcwQ\nGuR/4JO/8osv2af+zf8Awb/6Y7Ovf68A/wCCTv8Ayiy/Zp/7N/8ABv8A6Y7OgD3+iiigAooooAKK\nKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo\noAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig\nAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA8A/wCCln/Juvhz/s4D4T/+\nrD8PV7/XgH/BSz/k3Xw5/wBnAfCf/wBWH4er3+gAooooAK+I/wDgn9+2n8M/gJ+wb8EvgX8Vvg98\nfdM8U+C/hF4b0HxLpsf7Lnjy5W01Cz0u2t7iITQaK8UoWWN13xuyNjKswIJ+j/iL+1x8JPhb4vuv\n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\n",
"metadata": {},
"output_type": "display_data",
"text": [
"<matplotlib.figure.Figure at 0x7f46a6b60e50>"
]
},
{
"jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYF\nBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoK\nCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAI8AqsDASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KKK\nKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo\nAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA\nooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi\niigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK\nKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo\nAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA\nooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi\niigAooooAKKKKACimT3ENsm+aQAdvU1jXXiqcrFcWMKeXIuQJQckfh0oA3KKw7XxrHJI8Vxp7gxs\nATG4OeAe+PWrsHiXR5uDdeWfSVSv69KAL9FMhuLe4XdBOjj1RgafQAUUUUAFFFFABRRRQAUUUUAF\nFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU\nUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR\nQAUUUUAFFFFABRRRQAUUUUAFFFFABRRUF3qEFr8p+Z+yD+vpQBOSAMk4A7mqV1q6jKWg3H++eg/x\nrOXU7nUzJ5+FWOZkCL049fWnUAK7vK/mSuWY9zWQgxpdn/1zx/KtaslP+QXaeykUAVrb/j6uP99f\n/QRU9QW//H3cf7y/+gip6AECKG3AYPqODViHVNTt/wDU6hKB6M24frmoKKANKHxXqcX+uiilH0Kn\n+tWLLxpaXMCTT2Use9A3ykMBkZ9j+lYrdD9Kh07/AJB8H/XFf5CgDrodf0ec4W+RT6SfL/OraSJI\nu6Nww9Qc1xhAPBFEeYm3wsyH1RiD+lAHaUVysOtavb8Jfsw9JAG/nzVj/hM7y1Tfc2ccg3KvyMVP\nJA759aAOiorLh8W6e/E8MsfuVyP0q3b6xpd1gQ30ZJ/hLYP5GgCzRQCCMg0UAFFFFABRRRQAUUUU\nAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA\nUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR\nRR060AFNmnigTzJnCj3qrdasiEx2oDt/ePQf41kRXE9xqFyLiYvsZduf4cr29KANG61WabKW+UX+\n8ep/wqqAB+PWiigCrpv3rkf9PTfyFWqq6d/rbof9PR/9BWrVABWUv/IMtvbd/OtC6vLezUNM/LHC\nIoyzH0A71jp/aMunwuGjiTcwRSu4nk8nnj6CgBIP+Puf6r/Kpqpwvex3c2YUk+7nY2O3of8AGpft\nyL/rreWP/ejyPzGaAJ6KjiurafiGdGPoG5qSgAbofpUOnf8AIPg/64r/ACFTVDpv/IPg/wCuK/yo\nAmooooAKh1D/AI9x/wBdo/8A0NamqHUP+Pcf9do//Q1oAmpCqtwwB+tLRQA6GWa3ObeeSP8A3HIq\n1D4g1iDpdiQekqA/ywap0UAaqeNJYpY4brTw28kbonxjAz0P+NXYfFWlSf60yRH/AG4/6jNctP8A\n8fkH1b+VT0Addb6jYXX/AB7Xkb57K4z+VTVxRRW+8oP1FSw3d5bY+z3kqY7CQ4/I8UAdhRXNQ+Jd\nXh4eSOUf7aYP5jFWIfGq+f8AZ7nTmB2bt0Tg9/Q4oA3aKoQ+JtHlwGuDGT2kQj9elXIbq2uRut7h\nHHqjA0APooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo\nAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACimyyx\nwIZJXCgdyaoXWrSy/JajYv8AfPU/4UAWrq/t7XKs+5/7i9f/AK1Z9zez3fDnav8AcU/z9aoQcavc\n5JJMMRJJ68vVqgAqra8aldD2jP6GrVVbf/kK3I/6Zxn/ANCoAtUUVBc6hFBJ9niRpZiMiKPr9T6D\n3NADLBlWa8LEAC55J/65pSG9nvfk0xRs73Lj5f8AgI/i/l71XsbFru6un1IhsXAJgVvkz5acn+92\n68cdK0wABgCgCG1sYbZjMS0krDDTSHLH29h7DiqA/wCQbD/11k/9CatWsoD/AIlsXtcSD/x5qAK0\nP/H7P9E/kamqCH/j+m/3U/rU9ADJbe3nGJoEf/eXNR/YIl/1Mskf+5Icfkcip6KAIPKv4/uXSOPS\nSPn8x/hUVhPcx2MIayLL5S4Mbg8Y9DirlQ6b/wAg+D/rkv8AKgBP7QtRxKzR/wDXRCv6nipUkjlG\n6ORWHqpzTqiextJDua3XP95Rg/mKAJahv/8AUKPWaP8A9DFJ9jdP9ReSr7M24frUV6L5Il3PFIPO\nj7FT94fWgC5RUH2uVP8AXWUo91ww/Tn9KVL+zdtvnqrf3X+U/kaAJqKAQRkGigCGf/j8g/4F/Kpq\ngm/4/YPo/wDIVPQAUUUUAFQ/8xH/ALYf1qaoR/yEW/64D+ZoAmpNi53bcH1HWlooAnh1PUrf/U38\noHozbh+uatQeKdUj4mSKUe6lT+n+FZ1FAG1b+NLR5WguLGVGVQSUIYYOfoe1XYfEGjz8C9VT6SAr\n/OuRi5v5v+uaf+zVPQB2aSRyrvjcMPVTmlri0HlNviYofVDg/pVmHWdWt8CO/cgdpAG/nzQB1dFc\n/D4tv04uLWKQeqkqf61Zt/GWmyyGGaCaNlALfLuHP0+lAGvRVWDWtKucCK/jyf4WbafyNWgQRkHI\n9qACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo\noAKKKKACiiigAooooAKKKKACiiigAooqK5vILUfvGyT0UdTQBLVK41q2SV7a2YSSIBux0XPT+VVr\nm+uLr5WOxP7i9/qaz4MDV7hR/wA8Ij+r0AXJZZZ38ydyx7eg+lNoooAqxcazN720X/oUlWqqpxrM\nnvap/wChN/jVqgAqn9ohtdSuZbiUIogi5Y+706TUGlkNvpsQmcHDOThE+p7n2H6VBaWW3WpZbuQT\nSi3jKuygbSWfO0dh+tAE2++1DiMNbQn+Nh+8Yew/h/Hn2FT21rb2ieXbxhQTlj1LH1J6k1JRQBWs\nv+P28H/TZT/5DWrNVrPi+vB/00Q/+OCrNABWWB/xLk9rqX/0N61Kyx/yDgPS8m/9GPQBVi/4/wCb\n/cT/ANmqaoIv+QhN/wBc0/m1T0AFFFFABUOm/wDIPh/65D+VTVBpv/IPh/65j+VAE9FFFABUN/8A\n6lf+u8f/AKGKmqG//wBSv/XeP/0MUATUjojja6Aj0IpaKAIDp9oDmOMxn1iYr/Kj7NdJ/qr5j6CV\nA38sGp6KAKcr3yXkPmQo+FfGxsZ6ev8AjUv25F/10Esf+9HkfmMill/4/wCH/cf/ANlqagCOK6tp\n+IZ0Y+gbmpKZLbW84xNAj/7yg1H9giXmGWSP/dkOPyORQBPUK/8AIRf/AK4L/NqTyr+P7l0jj0kj\nwfzH+FQpPdJfyGW03Hykz5Tg4GW55xQBdoqD+0LVf9azR/8AXVCv6nipkkjkG6ORWHqpzQAtFFFA\nEMP/AB+zn2Qfzqaobf8A4+5z7qP0qagAooooAKgg5vZz7IP0NT1Db83Vwf8AaUf+OigCYgMMEZHv\nSxSSwHNvM8Z/6ZuR/KkooAuQa/rEHAvN49JUB/lg1bh8X3C8XNire8b4/Q/41kUUAdBB4v0iWQwy\nmWJlALB48jnPcZ9DV231LT7o4t72Jz6Bxn8q4yLm/mP/AEzQf+hf41Kyq33lB+ooA7WiuOhuru2/\n497yVMdlkOPy6Vbh8SaxDw0ySj/ppH/higDpqKxIfGB6XWnn6xPn9DirUPirRZXET3JjcjO2RCOP\nr0oA0aKrWWs6PqVzNZafqttPNbbftMMM6s8W4EruAOVyASM9cVZoAKKKKACiiigAooooAKKKKACi\niigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkkkSJC8jhQOpNVrrVIYCY4Rvf26D6\nms+aaa5bfO+70HYUATza8J5ZLayBHlkBnYeozx+dVjyxYnJPUnqaq2vGpXY/3D/47/8AWq1QAVVj\n41mX3tY/0Z/8atVVHGst72o/Rj/jQBaopHdI0MkjhVAySTgCqv2u6v8A5dOXZGetzIvX/dHf6nj6\n0AMubuG01fMm4l7bCIi5Zju6AU/7Nd3/ADfMYoj/AMu8bcn/AHmH8h+ZqO3s4rTWBtLM72zF5HOW\nY7h/nHSr9ACRxxxII4kCqBgKowBVZP8AkMye9qn/AKE1WqqjjWW97Uf+hGgC1RRRQBWtP+Qjdj/a\nT/0GrNVrX/kJXQ9oz+hqzQAVlj/jxI/6fZv/AENq1Kx5r21gt2hklAb7XKdoBJA3NycdBQBBH/yE\nJf8ArjH/ADep6rW9xBNqEjRTKw8lBw3u1WaACiiigAqHTf8Ajwh/65ipqh03/jwh/wCuYoAmoooo\nAKgv/wDVJ/13j/8AQhU9Q3/+qT/rvH/6EKAJqKKKACiiigCGX/j/AIf+ub/zWpqhk/5CEP8A1yk/\nmtTUAFFFFABUMf8AyEJv+uUf82qaoYv+P+b/AHE/9moAmqJ7GzkO5rdc/wB5Rg/mKlooAg+xun+p\nvJV9mbcP15o/4mMfeKQfip/rU9FAFOC6eO4nM1pIPnGSg3AfKPTmpkv7N22/aFB/uv8AKfyNJa83\nFyf+mw/9AWpnRJBtdAw9CM0AKCCMg0VAdPtBzFGYz/0yYr/Kj7NdJ/qb5j7SoG/lg0AT1Ba83Fyf\n+moH/ji0eZfx/ft45B6o+D+R/wAaitb1EkmM0MiZm7oSB8oHJGRQBcoqOK6tp+IZ0Y+isKkoAKKK\nKAIIObyc/wC6P0qeobbm5uD/ANNAP/HRU1ABRRRQAVD11H6Qf1/+tU1QJzqMntCn82oA4f8AZbT7\nZ+0J8dtY6+R4r0XTc+nl6DY3GP8Aycz+Ne514f8Asg/P8Tv2gLheVf4xWoVvXb4Q8NofyZWH4V7h\nQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRSO6RqXdgAOpJqj\ndauW+SzHH/PRh/IUAW7i7gtVzK/PZR1NZR1mbUhIEUxIkjIVB5OD3NMJZmLuxZj1JNVdN4a5X0um\n/kD/AFoAtAADAooooAq2/Gq3I/6ZRH/0L/CrVVYuNZnHrbRf+hSVNcXUFpH5txKFXOBnufQepoAk\nrPub0Ra0IreIzS/ZiPLQj5fmHU9hUuL7UOu62hP/AH8cf+yj9fpTY7aC01WGK3iCqbaTgdzuTk+p\n5oAemnvcMJtTkEjA5WJf9Wv4dz7n9KtUUUAVZONZi97WT/0JKtVVm41e3P8A0wlH6pVqgAqseNZH\nvan/ANCFWaqtxrKe9q3/AKEtAFqiiigCtb/8hS5H+xGf/QqnlligjMs0ioqjJZjgCqLXjR6vcRWs\nJmkMUfyqcBfvfePbt7+1TRae0kguNRkEsgOVUDCJ9B6+55+lADfOvNQ4tA0EJ6zOvzN/ug9Pqfyq\nrDbxW9jIIxz9scFjyW5PU961qzG/49Jf+v1/5mgCg9vbz6g4mhVv3Kkblz3an/YUX/UTyx+yyZH5\nHIoX/kIv/wBcF/m1T0AQbNQj+7PHIPR0IP5j/Cj7TcJ/rrF/rGwYf0P6VPRQBCNQtCdry7D6SAr/\nADpNNINhFg/wDpU5AYYYAj0NU7GxtXs45PK2sVGWjYqT+VAFyioPs1wn+pvn+kihh/Q/rRv1CP70\nMcg9UcqfyP8AjQBPUN//AKpP+u8f/oQpPtyr/r7eWP6pkfmM0y6uraeJBDOjfv4+FbP8QoAtUUUU\nAFFFFAEEnOoxf9cX/mlT1C//ACEY/wDrg/8ANamoAKKKKACoYf8Aj+n/AN1P61NUEH/H5P8A8B/l\nQBPRRRQAUUUUAQ2n+suD/wBN/wD2VamqGz+9Mf8Apuf5CpqACiiigAqGy6zH1nb+lTVDY/dkPrO/\n86AHy21vP/roEb/eUGo/sES/6iWWP/dkOPyORU9FAEHl36fcuUcekkeD+Y/wo+0Xcf8ArbIn3icH\n+eKnooAp2t9bJJOZnMe6b/lopH8KjrVtJI5BujcMPVTmobPnzj6zN/QU57Gzdt5t1Df3lGD+YoAl\noqD7G6f6i8lX2Y7h+vP60f8AExj7xSfmh/rQBPUMPN9Mf9hB/P8AxpPtcif6+ylX3UBh+nP6Vn6p\n4s8L+GLW817xP4istMsoWjEt3qNysEaZ2qNzSEAZZgBnqSB3oA5v9iZftK/FfXuv9ofGLVTu9fIt\nrOz/AE+zY/Cvb68R/YClg1D4Ka94gt5kkXUfi344cSIwZXWPxNqVupBHUFYVwfSvbqACiivMf2iP\n2xP2fP2VpNNt/jX4t1Gyn1WyvL20tNG8K6lrE62Vp5X2u9li0+3neC1h8+HzLmUJDH5qbnG4UAen\nUVX0rVdM13S7bXNF1CG7s7y3Se0uraQPHNE6hldWHDKQQQRwQasUAFFFFABRRRQAUUUUAFFFFABR\nRRQAUUUUAFFFFABRRUdxcw2yb5nx6DuaAJKrXepw22UQb3x90Hp9aqXWpT3OUTMaeg6mq4AHAFAD\nYdQm1W1hvJzgSRq4jHRcjNOqrov/ACCrcekQH5cVaoAKq6fxc3i+lyP1jQ1aqrZcX14PWVT/AOOK\nP6UAWqKhur6C1IjOXkb7kSDLN+H9TxUX2O5vvm1Jgsfa2jbg/wC8e/06fWgCub17jWHTTAkhNuFa\nRj8i4Y/99deg/MVbt9Pjik+0zuZpsf61x09gOij6U0KkerqiKAPspAAGMYYf41aoAKqz8avbn/ph\nKP1SrVVrnjVLU/7Eg/8AQf8ACgCzRRRQBVuP+QrbH/pnIP8A0GrVVrrjUrU/74/SrNABVaTjWYfe\n1k/9CSrNZt1emXWIYtPVZZFhlViThV5Tqe+MdBzQBfuLmC1jM1xIFUdz39veq/8Ap2o/3raE/wDf\nxx/7KP1+lPt9PVJBdXUhmm7Ow4X2Udv5+9WKAKVlbwWuqTw28YVfs8RwO/zSc+9XarR/8hmb/r1j\n/wDQnqzQAVmN/wAe04/6fWrTrNbi3uf+vw/yFAFMf8hFv+uA/mamqEf8hE/9cB/M1NQAUUUUAFQ6\nd/x4xf7lTVBp3/HlH/u0AT0UUUAFVtRghkjTzIlP75Bkj/aFWahvv9XH/wBd0/8AQhQAn2FF/wBR\nNLH/ALr5H5HIo8u/jPyXEcg9HTB/Mf4VPRQBB9puU/11i31jYMP6GlGoWmcPLsPpIpX+dTUEBhhg\nCPQ0AQFlbUEZWBHkNyD7rU9U3sbU6goWIJmFiTGSpzkelS/ZZ0/1N8/0kAYf4/rQBPRUG/UI/vQx\nyD1Rip/I5/nR9uVP9fbyx+5TI/Nc0AT1Db/8fdx/vL/6DTorq2nOIZ0Y+gbmm23/AB9XH++v/oIo\nAmooooAKKKKAILLpKf8Apu1T1DY/ckP/AE3f/wBCNTUAFFFFABUFhzCx9ZpP/QzU9Qaf/wAe2fWR\nz/48aAJ6KKKACiiigCGx5jkPrO//AKERU1Qaf/x7k+ssh/8AHzU9ABRRRQAVka/4S8K+O9F1Lwp4\n38M6frOlXzCO90zVbJLi3uE2odrxyAq4yAcEHpWvUNnyZj6zn+goA+Z/2C/+CfP7Kp+EFr8T/Bfg\nbU/BeqP8Q/FN7by/Dvxdqfh6CSFfEuotbwy22nXENvcQrCIohFLG6eWoXbgCvtKvGP8Agniu/wDY\nt+H2p/8AQT0ZtSz6/ap5LnP4+bn8a9noAK+MP+CqX7Lvxf8A2gfFfhvVfB/wZ8V+NtFtvAHifRFs\nvAPjy18OajZatfmw+yzXlxPdWxutKKW8wntN80bsImktLragj+z6KAMH4VaN4q8OfC/w34e8dXOn\nza3YaBZ2+szaTbCG1e6SBFlaGMABIi4YqoAAXAwMYreoooAKKKKACiiigAooooAKKKKACiiigAoo\nooAKKKKAM7W9ak05NtvEC3mIrM3QBmAyPXrVRmaRzJIxZj1JpPFgxHI3oY2/Jh/hS0AFFFFAFXR+\nNPRfRmH5MRVqq2k8WjL/AHbiUf8AkRqJ9RUSG2s4/OmHVVOFT/ePb6dfagCeWWOGMyzSKqqMlmOA\nKzrea6vdQuRYt5UbBCZXT5iMEfKD9Op/I1Zj08ySC41GQTODlVxhE+g9fc8/SiDjV7gesER/V/8A\nCgCW1soLQHylJZvvyMcsx9zUtFFAFWTjWYve2k/Rk/xq1VafjVrY/wDTGUfqn+FWaACq13xqNof9\npx/47/8AWqzVW94vbM/9NmH/AJDb/CgC1RRQSAMk0AVbzi/tD/00cf8AjhqW6vLezQNO+CThVAyz\nH0A6mqN9etd3lqmm4OJ2HnsuUzsbgf3u/TjirlrYRW7md2MkxGGlk6/Qeg9hQBH5F5qAzdkwQn/l\nijfM3+8R0+g/Oh4ooNRtYoYwqiKQBVGAPu1bqtc/8hO1P+zIP0FAFmiiigCqn/IZk97VP/Qmq1VY\ncay3vaj/ANCNWaACs1x+4uva8/otaVZr/wCqvPa8H/oKUAUv+Yj/ANsP61PUB/5CI/64H+dT0AFF\nFFABUOnf8eUf+7U1Q6d/x5R/T+tAE1FFFABUN9/q4/8Arun/AKEKmqC++5Hj/nun/oQoAnooooAK\nKKKAIT/yEV/64H+YqaoT/wAhEf8AXA/zFTUAFFFFADJbe3n4mgR/95c1Wt7JBPcCGWSPEgA2P/sq\nehyKuVBaf665P/TYf+gLQAeXfx/cuI5B6SJg/mP8K560+Lvgu8+K2ofBCLUGfxRpXh6z1zUNNigk\nPlWF1PdW9vN5hURtuls7ldisXXy8soDKT1FfFHx6/Zy+Gdz/AMFKfEfxT8TfsnR+INb8Z/BLTdJ+\nH/jW28K6hELTxFb3GtLOJfEOl2c9x4dla1uLCMajlJERF8ou8KpQB9ojULTOJJfLPpKpX+deWeGf\n24/2XPGHxwk/Z18O/E83HilNSu9NiiOh30djdahaRmS6sbfUHgFnc3cKK7S20UzyxiNy6LsbHhPw\nn/ZH/aw8J/EPTPEVz8KrTRRaTM6atf8A7eHxL8XQWkmxgksmjahZW9tqSKxUm3lniVxkb1OCPzq/\nZa/an+NXws/ZI/ZV+C/xtvfh9o+uQ/Eq/wDiNa+LvjJ4kvPA+nz6ev2q984a9cx30GtzXp1grK9s\nEuLVp0iltpAz3KgH7vWH+pY+s0n/AKGamr8s/wBon/gsjrnjS98EfsteFPGHgWG5+J3i/T9M1Tx9\n+zn8VL7xsug6c+uaTaXEX2qDRLZbW8uIb6aOMq5khJhcAPcQV6v+xL/wUZ/Y78CfGb4q/s5Xv/BR\nn4f+J/Cuk+KNJf4X6n4s+Ndnqd9dQ32nwtPYQ3t3dSTaisV4su1nklkQ3HlFjsUAA+9aK+WfiR/w\nUh13wJ8RfFVxYfs9vqHwv+HvjzSvB3j7x+3ihYrux1O+FlmS204W7i6tbY6jaCeU3ETrul8uKXyj\nn6cutc0Wxt2u77VraCJfvSTzqgX6knimk5OyAtVDp3/Hmh9ST+prL0D4h+DfFWoyaZ4a1xL94lJk\nls43khXGODKoKZ56bsmtTTv+PGI+qZq6lKrRly1ItPs1YSaexNRRRWYwooooAh0//j0U+pY/qamq\nDTv+PGI+qZqegAooooAKgsmAhkcnA86TJPsxqeua+Imt/wDCNfCfxH4k37fsGi391u9Nkcj5/SgC\nr/wTuUr+wB8Diw+ZvhB4ad/dm0u3JP1JJNex153+yDof/CMfsmfC/wANFNv9nfDvRLbbjp5dhCmP\n0r0SgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDD8XjFpcN6W5b8sn+lFP8Wp\nvsp1/vWjj9DUUbholkJ4Kg0AOqO5u7e0QPPJjJwoAyWPoAOSagN/NeEx6WgYdDcOPkH0/vfhx71J\nbWEVu/nu7SzEYMsnJ+g9B7CgClp0V3fJKryNBD9ofKKcO2Wzgn+Hr25960YIIbaIQ28Soo6KoqHT\nuHul9Lo/+gqf61ZoAKqpxrMnvap+jP8A41aqr01n62v8m/8Ar0AWqKKKAKt1xqdqfaQfoP8ACrVV\nbzi/sz/00cf+OH/CrVABVXUOLizb0uT/AOi3qy7pGpd2CqBkknAFZl/dzXz2/wBiUpH9oGLlh1OG\nHyg9fr0+tAF66voLUhGy0jfciQZZvw/r0qIWdxfHfqRATtbIeP8AgR/i+nT61La2UFoCYwS7ffkc\n5ZvqamoAq3yqk1mFUALc8ADp+7cVaqrqX37U+l0P/QWq1QAVVu/+QjaH/acf+O1aqre8X1n/ANdW\nH/jjUAWqKKKAKv8AzGfra/8As1Wqquypq4ZmAH2Vskn/AGhTftlxfnZpo2x97lxwf90d/r0+tAE1\n1fQ2pEZBeRvuRIMs3+A9zxWW1rPdLdy3kjJi6X9zHIQAdic5GCTj8K1bWygtATGCXb78jnLMfc1T\nccXw/wCnpf8A0XHQBmG2mjvwsN2/+pOPMG7uPx/Wpd+oR/ehjkHqjFT+R/xob/kIr/1wb+YqegCD\n7ci/6+CWP3ZMj8xkVJFc28/+pnRv91s1HqmqadothLqur3sVtbQLulmmcKqj6muYubHUPiMhuNZh\nk0vw+Bu8iTMdzfL6yHgwRY/h4dh94qMqd6VB1Fzydord/ou78vvstRN2Og0jxN4d1+ae30TXbS7k\ntXKXCW9wrmNgcYIB45/lVjTv+PJPof51x3iCD4PtaWu/WrazFtDixvdMuNps4xx8skefKTjBBIU4\nwc1gWfxlu/B8KQXeot4hs1jMmU06SG/ihz/rWQLslj9XUJ6bWNbLDQr/AMBu/Z/o9vvt2VzKVelB\n2lJfeerUV+c37Nn7evxy+FXwM8a/Ff4r/tUfATxFYP8AHTxTo2kQfFXxle+BUso11nVCirqdzLqp\nnXy4EFtYLaQ+VArDz38nD+6fs1/tj2H7c1t4t+Fl38XvgbBHFoQeTUP2fv2k28TatZrI+wyP/wAS\niyNkAM7ZlZyG4AU4auSUJQlyyVmappq6PqWob77kf/XdP518wf8ABPCTWNY+IPxO8VfDD4heM/EX\nwPnk0qz+G+peOfFl7rc2o6lB9rXV76xvL+WW5k06Rms44i8jRvJbXEkOInRn+n777kf/AF3T+dSM\nmooooAKKKKAIP+Yj/wBsP61PUP8AzET/ANcP61NQAUUUUAeQfCz9uz9l74w/tEeOf2VfB3xa0J/H\nfgHVhYap4ck16yN3eEWdtdSzW1uk7TSQwm5EErsi7J4ZUI+XJ9ZtP9Zcf9d//ZVr48+KHwd8Vj4r\nfHv4ZfEr4Y+B28I/GjxLoet+HfGXxT0TSvEHhMS2elaRZvp9/o82q2V5cXBk015IfLUxKzRSGTMZ\njb4z0n9s79lf/gnn+1J4c8U+Gvh5+znf2Nhqep6X8RNQ+E/7H1/4H17QV8gRxxR3V1qM7SB53UvE\nkZ/dwuSwyoOlOjVrTUIRbb2SE5Rirtn6e/syftbaD+03rPjbwzafCPxr4M1bwFrVtput6V43srSC\ndnuLOG8hljW2uZxsaGeM4co4JIKDFesV+d3/AAT6/bi8a/H3xv8AtBftR/CL9jT4oDw74+1C01Xw\ndrGs22lLbTT6doNjYtaypDqDzh5JYWdNsZRoyCXViEr339mr4yftWftA+CvFen6lY6TpMsNuItG8\nTXVjLEY7iWOQFPIX5XMTBGJD8bwpyRXfHKMY6E6tS0FBpNSajLXtF+8/kmT7SN0lrc+kLu7tNPtJ\nb+/uY4III2kmmlcKkaAZLMTwABySa8D+HXiH9iz9jX4L6j4l+D/i24PhKXWRFDpdp4yvdXt7a6YE\ni0sYLu5kisItuXEEHkwqMttA5rlvgD+x/wDHW48J+M/BX7QfxJ1iDSvEWmizWxsNc84vMQ4kugx3\nMoIZRgvlsfMowM9L8Mf+CdPwh8J+E9a8P+P5x4jutaubaVtSW2a1ltfs+/yjE3mSSK+ZH3NvO4HG\nMDFdbwWR4WpKNbEupyyjb2cdJRfxWlLls1trFq5PNUktFb1PlX9vb9o74W/HT4hfD34geD/gvbfE\n3wzo3g3X7Dxn4Y1zUrrSCbXUb7T5BLbXMNvMReW02iiRMGMbijJMjBWH5hftD/8ABTP9sn/gnVba\n5+zh+zr+0P8AGnR9Q1y8GsNrvjPSvDF8dVuZhB500+ovphvb6eOFUgaVpQ6NGiFVSMKf6KvB/wCz\nN8CvD3hrRNHi+Gul3i6HLJNptzqdstzPFK8nmNJ5kgLFi/zZz1AxjArwP/goZ/wRz+A//BTT41/D\nzxz+0p4y1hvB3w+03Vli8C6Cq2X9p3981tuuZ72M+aEVLZR5SBWLBW8xRvSQljskpR5aGGb1fvTl\nd2u7WSSina17p6oThWa+I/Eb/gnd+1P/AMFQP+ClX7V15+ztoniXWbv4e/FD4jWfiL4s2tro0X2G\nzgjntJLqc3CRDySUsY0UiRSzAKFZmwf6N7H9nXwPc3a6p44Rtful5X7duaJT7BmZ3HtI7153/wAE\n0P2BND/4Jrfs2N+y94S+J994r0Ky8T6lqHh+91XSbe2vLSyuZzMlpO8AAupEZnJnKpu34CRqqov0\nHWWJzrEVKjeHiqSat7iUb6t62t36W7bWScaaS97UqWmiafplqlnpMP2SGNcRw2/yog9AvQflSWCX\ny2ULRzxsDEp2umMceoP9KtSHEbH/AGTTLEYsoR6RL/KvHbbd2ajftF0n+usSfUxOG/ng0o1C0ziS\nQxn0lUr/ADqaggEYIyKQCKyuNyMCPUGhjgE+gqJrCzZiwgCk/wASfKfzFMmtpoomaK9kACn5Xww/\nx/WgB+njFhAP+mS/yqaqtqb+K2jAijkURjGGKnpT/twT/X20qe+zcP8Ax3NAE9FRxXdrMcRXCMfQ\nNz+VSUAFeW/tg6y3h39iz4reIVJBsfhnr1yCP9jT53/pXqROBk145+3Z837BPxctB9+7+Fmt20Q9\nXm0+aNR/304oA+hPBWiL4Z8G6T4bVQBp+mQWwA7eXGq/0rTo6UUAFFFFABRRRQAUUUUAFFFFABRR\nRQAUUUUAFFFFABRRRQAUUUUAY3i25jij8jazySQsEjQZJ9/Ye5rMsrKW+tIpdRkDRmNSsCfdxj+L\n+9/L2rd1tNwT3DD+VZOjndpNqT/z7pn/AL5FAFkAKAqgADoBRRRQBVsOLq8X/p4B/wDIaVaqtaca\nhdr6sh/8dA/pVmgAqs/Gsxe9rJ+jJ/jVmqs/Gr27esMo/VD/AEoAtUUU2aaK3jM08ioqjlmOAKAI\nL/i6s2/6eSP/ACG9Oub+OCT7PEhlmIyIk6/UnsPc1Sv5rq/ktjEjwRfaBtlYYdsqwyAeg+vPtWhb\nWkFonlwR4ycsSclj6k9zQBAlhLcuJtUcOQcrAv3F/wDij7n8hS6nwID6XKfzq1VXVf8AUxH0uov/\nAEMCgC1RRRQBW1PgW59LpP8ACrNVdV4ihPpdR/8AoQq1QAVVvuLyyP8A08MP/Ib1aqrqTKk1pI7A\nBbkkkngfu3oAtVDdX0VsRFtaSVvuRRjLH/Ae54qI3Vzf/Lp3yR97l16/7o7/AFPH1qa1soLRT5Sk\nsxy8jHLMfc0AUTaS3erxtqgQg27lYV+6uGXr/e6/StMAAYAqtJxrMPvay/8AoUdeW/tT/twfs1/s\nX3XgeL9o/wCJukeF7bx74nfRNK1HWtas7K2tXSzuLp7m4kupogluogWIyLuIlubdSP3mQAet1nyd\nb7/r4T/0BKtabqWnazp1vq+kX8N3aXcKTWt1bSiSOaNgGV0ZSQykEEEcEHNeH/tXftk2v7JGn654\n08b/ALPPxA1rwZomlrqvijx34cXSH0/RbZQfMMsVxqEN5MyKm8pbW8zbWXALHbQB6w3/ACEU/wCu\nDfzWsrxh8QfDfgvybXU7xZL+8yNP0uF1NxdsOuxCRwO7HCr3IrjvFvxo/tq7i0X4TStc3xQG+vp7\nGTydOgcArM4ZQXJO0BACfmydo+an+E/hZqF+k3iPVtX+032qbU1HUr20xcTRxudhjGQIUIwQgGFP\nzAEmuyFCFKKnX67R6vzfZfi+mmq5Z4huXLSXM/wtez17rsVDrHiDxDqFlrniu1kgmc/aLGCBBPBY\nQgcOFwd02WQGRlIXd8oXk1bfwd418ZxGfU2eF7q5DpqDSlQtujDCNBkffC8r0+cnINd5pfhzQ9El\nefS9OjheQYYrngZztGfuj2GBV2oqYmdSV9rbLol2X9X6vUzWEnU/jTb8lot/8tDhm+C0GotqE2ta\n2wOrQi31KC0hCxywhSoUbslWIZgWB6EccA1HB8CvDt3D9pk1/VfOezazaUSx5NsSf3X+rx153fe9\n672odO/480+p/maj29ZfaZccBg4q3s1+Z8sav/wS18A+FNQ8T+NPgB4sv/DXiXxHYXES3k+p3c9p\nZXEriRrqGyeZraOSSQAzbIk87JLfMST+d2pa1+1HqniDxD4O+K3jXxPd+FviZpV14W8Q+JBpsjL4\nmtLRJle3tpI9m0ukRUNBIj5umJ3fMD+31Vm0XR2sYtLbSbY20O3ybcwL5ce37u1cYGO2OldlLM6s\nYezrRVSHZ9PRrVfl3TJlgaSlzUm4vy/yPlj9k68/Zs/Z202fwt4Ai+ISynS7Rf7O1X4q6/4qjtLS\nEMi7ItTu5EsSvKtHCibgEADhAF97svjN8Mdbna00f4jWM5gQXDtM22MRrgswkIVWCgjdgkr3xWZ4\nx/ZQ+C/iySK9s/D0mg30QZRqXhyb7HO6NjMbsgxInyjCsCB2xk1574h/ZVm8P2b6bf6pe32kQziT\nR5dMs0ZtOk8wODLbj5p0HK4RiSrEbRwRv7DKcSr0ZSi/5XZ9Vs9L6X7NvZEp5hT0lyyXfVf1rY9r\ng+JHg+bQ4/E6eKtIl02WXyotQh1SLyXfONoYkDd7ZzV258X+GrG/t9K1HWra1ursE2tvczKjzY67\nAT834ZrxGP8AZhPivw7b6x4Z+I2laje/b7iS786wY2f7yOGMgRhyySIIFB3Ek73B25GI/G37M+na\nRrmi3mpfFjTbW0tNP061uJ9VULdr9lxg253YXdjIH8LEkbs4rL6lhXV9mqjv72nI76baef4dS1Wx\nXLd0+32l13+78T3GHxp4OufETeELfxZpkmrJF5r6Wl/GbhU/vGMHcBz1xiqmi/FL4deI/FN34J0L\nxnp93q1ju+1WEFwGkTaQG477SQDjOCcHFeNWfwXt5fjcfif4dk1TVrIa1LqsVvBohtpDPIjKUN1O\n8aNEN55UE7QF7Va+H37LPjjwl8Sj4/07xTa6fbQTXUul6fdobx7drjdv3lfL34DuF+bjOTuIBq3l\n+GhFudWz5U9Vb3usWr81l3S1LVWu38PXv07/APAO/wDA/wC0B8LfiJ49uvBfhXXpJr23t3ZDJZyR\nxXKxvtdoZGULIFJH3T0ORkc1zXg/9sz4beKPiFJ4HvrObSYJGuF03VtRuYkiuzASHG3duTOCVz1A\n5wcA1fh/+x14P8A+OZfF3/CWa/qE/wBnkS2shqX2S2s0kfLrEsCrJg4Aw8j4HAIHFdd4K+APwP8A\nhx4uuvHvhL4U2Om6zebvtGpR25kkO45chsttLEZYjBY8nNOccjpc6TnP3Va1laWl7t9N7e6OP1lp\nXstdfQ8o8OftueMfEX7Sc3wl0jwB/aOnf2pdWUdpZWMqXkccSuy3jSzOsRifarAYACyod5PBg+Kd\nl+3PrX7Rdhf+BbObS/DxubP7Gw1JJrOC3G37SLqFWQO5/eHqxwUCEEE19JQtpstwbqHyTMV2s4A3\n49D3x7VPTWZ4WjUUsPhoL3eV81562s5a2V+q0sivZTatKT3v2+R4P+0l+xz4l/aBvdJ1e6+MU8Nz\nYQT20tvNp4Fs0MxQsUWFkcNlB952BBxxivnb9or/AIIQfDv9p3xX4s8V+KfjTqWnSy+G9N0TwZHY\n6bE4tfsduqm6v2fMl5I8pkOFaPapXDEhdv6A1DZdJT/03b+dc9TNsxqYeFB1GoRvZK0Ur6vRJble\nyp8zdtWc98G/hlonwh+G+leA9E0yzthZ2ifbPsKuI5rkqPNkG9mc7myRuJOMDPFdPRRXnylKcnKT\nu2abBRRR0pAQ6d/x4xH/AGBU1Q6b/wAg+D/rkv8AKpqACiiigBlycW8h9EP8qLYYtox6IP5U29OL\nOU+kTfyp8QxEo9FFADqKKKACo7w7bSU+kbfyqSodRONPnP8A0xb+VAEkI2woPRRTqAMACigBktvB\nOMTQq/8AvLmo/sES/wCpkkj/ANyQ4/I5FT0UAVpUvoomZbpXAU8SJg/mP8K+cP8AgpL8UvHvgX9n\nO98MaT+zz4o8V6Tr0NrY6jrPhm805hpzS3ttCkclvc3UM8vm+YUXyElO4qCACWH0peHbaSt6Rt/K\nvKv2xU3/AAd0Ozb7lx8V/ANvKPVJPFukIw/FWIoA7/4H/tb/AAp+PniG78F+GdG8a6Lr2n2X2q+0\nPxt8PNX0KeOIOqF0a+too513Mo3QvIvPBNenUUUAFfI+lf8ABQrWPFf/AAUA1z9m238c+F/Dfhfw\nt4vt/Ck1prHgHWry78Q6rLpMOoFItZhlj0zS3/0lI4rS4Wa4ufs8zKqK0ZP1xXh/iD9gv4ZeIfj9\nJ8c5viD4wt7O88WWPivV/AFpfWi6HqfiCytIbS11SZTbG686OK2tf3aXCQM1tE7xM4LEA9wooooA\nKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKWsj5EPuaxtG/5BcI9Ex+RxW3rA/cKf9v8ApWJo\n/wDx4geksg/J2FAFqiiigCtb8arcj1jjP/oQ/pVmqsfGsze9tH+jP/jVqgAqrdcalan1Eg/QH+lT\nXFzBaR+bcSBR0HqT6AdzWfdi7v7y1MqNbxNIwUBsSN8jHnH3en1+lAFufUAJTa2cXnTDqoOFT/eP\nb6dfaiHTy0gub+TzpRyoxhE/3R/U81NBBDbRiG3iCKOgUU+gCrqfAgb0uk/nj+tWqrarxBE3pdRf\n+hgf1qzQAVV1f/j0U+lxCf8AyItWqrax/wAeBPpJGf8Ax8UAWaKKKAKurcWyH0uYf/Ri1aqrrLKl\ngXdgAs0RJPbEi037Tdah8th+7i73DLyf90Hr9Tx9aAJbq+itmEIVpJWHyRJyx9/Ye5qneWlxPLbS\n6k6sDcjEC8ovyt1z94+/6VetbOCzUiFTljl3Y5Zj6k96i1Lg25/6el/kaALXTpRRRQBVm/5DFuf+\nneX+cdeI/t0eBfirr0nwk+J/wm+F2oeNbn4bfFmHxJqnhjRtRsba+vrI6Nq2nOLZ7+4t7YyK+oRy\nbZJowVjfDZwD7dP/AMha2/65S/zSsf4n+P7H4b+FH8RXkkYJuIoIRICcu7BRhV+ZjznaOT7dRUIS\nnJRirtkykoRcnsj86f2zv2afhZ4O8X+K/iL4g+GH7E1z4o1rUpdZj8LeM/2MxqOvSi7n80m+1GPx\nCI7u4VZGaa6VAkjq7BV3YEH7Yb69+354Wuv2f/gB+x/pvjm40HQ4LXwF8VrCz0jTdM8G6hLbRIt3\natcT/wBo6SIpIY5g1os7FII413cPX1D8XP2Y/F37busaF4n8b+KbTw1pvh6e7ge20yxS4nuw6xFM\nu5ZAAS25MuismMOQGX1T9nX4Q3XwI+E6/C261C0vP7LldYb21tvKNxE0haNpF/56bSqscnJXOTXU\n1Rw8dPen98V/m/wXS+6wi512pLSOjT6v18hfhb8L7X4Z6XpekNq8t/dWukC2mu5Y0TzGHll3woHL\nuNxJySe9djUEv/IQh/65P/NanrllKU5OUnds3hCFOPLFWQUUUVJQVBp3/Hov1b+ZqeodP/49F/3m\n/wDQjQBNRRRQAVDe/di/67r/ADqaob37sX/Xdf50AZuseAvC2uXx1S80+SO5ZQstxZXcts8yjosj\nRMpkX2bIqbRfBvhPw45l0Lw5ZWsjffmit1Ej+7Pjcx9ya0qK2eJxDp8jm+Xtd2+4Vle4UUUViMhX\n/kIv/wBcF/m1TVAn/IRk/wCuCfzap6AGS28E4xNCr/7y5qP7BEn+olkj/wBxzj8jkVPRQBB5d/H9\n24SQekiYP5j/AAqKzuJ40fzLNyPOfLRkMBz+B/SrlQ2P+qc/9N5P/QjQALqFoSFaXYT/AAyAqf1q\nYEMMqQR6ikZVYbWUEehFRHT7TO5Ith9YmK/yoAmpHOEJ9qh+zXSf6m+Y+glQN/LBpJZb6OJvMt0c\nbT80b4P5H/GgB9gMWMI/6Yr/ACFS1UtL6GO1jWZXjxGOWQ46evSrMc8Mw3Qyq49VbNADqKKKAIdR\nONPnP/TFv5VMBgAVDqP/AB4Sj1QipqACiiigAqHUf+PGUeqYqaoNR/49GHqVH/jwoAnooooAKKKK\nAIdRONPmx/zyYfpXl/7Wo+1eGvA2gjn7d8YvB3Hr9n1u0vP/AG2z+Fen6j/x5SD1AH615n+0Wn27\n4ifBPQcZ+3fGC3O31+z6Rqt5+n2bP4UAfQ9FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ\nAUUUUAFFFFAFXVxm1Hs4/rWHpXEEq+l1L/6GT/Wt3VBm0PswrC03g3K+l036gH+tAFqiiorq8t7N\nQZn5Y4RFGWY+gHegCMcayfe1H6N/9ekkv3mc2+mxiVwcNIT8ifU9z7D9KqvBcX+qxi+UxRtbuREj\n8kBl4Yj69B+ZrTjjjiQRxIFVRgKowBQBBbaekUn2m4kM02P9Y4+77KP4RTdQ4uLNvS5/9puKtVV1\nLhrZvS6X+RH9aALVFFFAFXV/+PMH0niP/kRatVV1j/kHufRlP5MKtUAFVtZ/5Bsp9AD+oqzVXWyB\npNwxPSImgC1UF1fx27CFEaWZhlYk6n3PoPc1F9ou9Q+WxzFF3uHXlv8AdB/mfyNT2tnBaIVhTljl\n3Y5Zj6k96AKOpWc8tm11qMoJVlKwofkX5h/30fc/lWnVXWf+QZKfQA/qKtUAFVtU+7AfS6j/AJ1Z\nqrqv+piPpdRf+higC1RRXl3jn4raj43Q6F8E/EAkgtr4ReIPEOmQrdGyTa/ywxgN5rl1ClgpVOc5\nIIGtOlKpdrRLd9F/Xbd9E2RUmqcW3/wTQ+Inxs0rwp4wh8IaVot5qeprFiZbbaIrPzNux5mJyicg\nkhWODwGPFUvhR8FNa8MeJT4r8bSWd5qP2GS3uLuJyyzlypysbL8gwpyzFnYuctgAVZ8A/C3Q47XT\ntY17S7ptRmmlkvLi8mkWW/2OfJmuUBAeTaFOGHHTCgBR311fRWzCFVMkrD5Ik6n39h7mrlWjCLhR\n2e76v/JeXXq3oljGnKpNTqdNVv26+Y9I7WxtwkaRwxRrwqgKqj+QrKknuL2a7ayISIhCZJFOW44w\nPT3NXksZblxPqbByDlIV+4n/AMUfc/gKjmx9ovR/0zjP865zpMqQ30d7FuEch2PjGV4+X61L9tCf\n6+2lT32bh/47mib/AI/of9x/6VPQBHFdW0/EM6MfQNzUlMlt7ecYmhV/95c1H9hVeYJ5Y/ZXyPyO\nRQBPUOn/APHov+83/oRpNuoR/dljkHoylT+Yz/KorG6kjtgJbSTG5vmQBh94+nP6UAXKKijvrSRt\ngnUN/dbg/kaloAKgvekX/Xdf51PUN70i/wCu60ATUUUUAFFFFAEKf8hGT/rgn83qaoY/+QhL/wBc\nY/5vU1ABRRRQAVDYf6hj6zSf+hmpqh0//j2/7aP/AOhmgCaiiigAplycW0h/2D/Kn1FenFnKf+mT\nfyoAdbDFvGP9gfypJbO1mO6S3Un+9jn86dCMRKP9kU6gCD7Eyf6i7lT2Lbh/49mj/iYx94pR+KH+\ntT0UAU766kFq6TWki5wMgBh19qnjvbSVtqXC7v7pOD+RpNQ/49SPV0H/AI8KkkiimXbLGrD0YZoA\ndRUH9nwLzCXj/wCubkD8ulHlX0f+ru1f2lj5/MY/lQBPUGof8e4HrLGP/HxR9ou4/wDW2RPvE4P8\n8VFd31uyIjMyHzkyJEK9CD3oAuUUisrjcjAj1BpaACiiigCHUP8Aj2x6yIP/AB4V5r8bf3n7QP7P\ncC8svxW1CVh6KPB/iJSfzdR+Nek3/MaL6zp/6EDXnHxFX7f+1z8E9L6/ZrrxDqWPTy9La2z/AOTm\nPxoA+gqKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAINSGbJ/w/nWBYELcX\nik4AuQefQxoa3tVdo9PldYmcheETGT+dcxaWcl7fXJ1IYG9GNurZX7oHP97p06UAWDfTXpMelqCv\ne5cfIP8Ad/vfy96ltbGG2YykmSVh880hyx/wHsOKmAAGAMAdAKKAKs/Gr2zesMo/VD/SrVVbrjUb\nRvXeP/Hc/wBKtUAFVtU4ihb0uo//AEID+tWaq6v/AMeit6XER/8AIi0AWqKKKAKus/8AILnPomfy\nq1VXWyBo90SRxbv1+hpvn3eo8WeYYT1nZfmb/dB/mfyoAlur+O3fyI0MsxGViTr9T6D3NU9UsZp9\nMubjUZAzLA5jiT7iHaf++j7n8AKv21pBZoUgTGTlmJyWPqT3NM1QbtNuF9YH/wDQTQBMpyoI7ilp\nsB3QI3qg/lTqAKutcaTcH0iJq1VbWhnSLrH/AD7v/wCgmrIORkUAFZ3irVdO0TRm1bV72O3toJ4W\nlmlbCqPMWr800NvC9xcSqkcalndzgKByST2FeM+J/Elh8VkOpWGo3VxNFqsTaPpMPmQFraKVfMki\nkYKjXDDLcPujT5RsbdW1OEOR1Kj91dt2+iXm/wAFrronE58i8y5428e6/wCL7+90q/0Kax8LWsMX\n9owtdm3v7+ObIBChSUjxzsJV36Eryp7HwJ8Nv+EJninm1W3kisdNFhYQ2tiLdIoAVPzDcQW+Rem0\nDBwOareDvDUEdjFqHjTQBPfQ3btoy6iEuby3g4KqZCWOQ25gSx2gjJyK6lbKe9YS6oQV6rbKflH+\n9/eP6fzrOdWVa11aK2Xb17vu36bWRlTpc0vaT1fTurrYrXV1Lf31sLAlE3OBcFcg/L/CD1+vT61f\ntbOC0UiJTuY5d2OWY+pPeorwAX1ngf8ALRh/441Wqk6AqhP/AMfN6P8ApjGf/Qqv1Qn/AOPq9/69\no/5vQBnzf8fsH0f+lT1BP/x+wf8AA/5VPQAUUUUAFQ6f/wAeo/32/wDQjU1Qaf8A8eo/33/9CNAE\nzxxyrtkQMPRhmof7Pt1/1O+L/rm5A/LpU9FAEHk3sf8Aq7tXHpKnP5jH8qhvJ7pRH51p0mXmN85/\nPFXahvekX/XdaAAahaZxJJ5Z9JVK/wA6lVlYblYEeoNKQCMEZHvULafaFtyRbD/ejJU/pQBNRUH2\na5T/AFN830lUMP0waPNvo/v2ySD1jfB/I/40ALF/yEJv+uSfzapqpx30KXsrTh48on31/wB7v0q1\nHNFMu6KVWHqpzQA6iiigAqDT/wDj1H++3/oRqeodP/49FPu38zQBNRRRQAVDqBxYTn/pi38jU1Q6\nl/yD5h/0yb+VAEqjCge1LRRQAUUUUAQX/MCj1mj/APQxU9Q333Ix6zp/6EKmoAKKKKACoL0A+Sp7\nzL/Wp6gu/wDW249Zv/ZWoAVrCzY7hAFP95DtP5ik+yzp/qb5x7SAMP8AH9anooAg36hH96GOQeqM\nVP5H/Gj7ci/6+CWP/eTI/MZFT0UAVZ7m3uPJEM6PmYfdbPqa8/1Nftf7e3wysn+7B8MPGd6v++l9\n4bhH/jtw1eg31vBNNAskSnMvJI7bWNfL/ib9ka41f/goPperfCH9pv4qeAdUu/ht4i1S8vNL8ULq\n8EUs2qaOPKhs9civra1t5DGzPDbxxKTFGV2FQaAPt2iub+E3hr4i+EfA1roHxV+JqeMNageXz/EC\naHHpxuULsY90ETMisqFVZlwGILBVztHSUAFY3g74i/D74iDVD8P/AB1o2u/2HrM+ka1/Y+qRXX9n\n6hDt86zn8tm8qePcu+JsOu4ZAzWN+0NYfG3Vfgf4p0r9m++0W08d3WjTQ+F7zxDdyQWdvduNqyyS\nRwTsuzJYHyZBuVcowyK+ev8Agk98Jvjj8E9P+MvgP4tfATRPAmnJ8Uo5vDUOi+Lb/WEv4hoWlQSz\nLcXmm2T3MZaBSbvDNNO1yHCtFvlAPreiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAjvB\nm1k/3DXPW/Gq3K+scZ/9CH9K6K4GYHH+wf5VzkfGsy/7VtH+jP8A40AWqKKKAKt9xeWbf9N2H/kN\n/wDCrVVtR4ltG9LofqrD+tWaACq2sf8AIPc+jIfyYGrNVdbZU0qd2IACZyaALVQXN+kD/Z4ozLMR\nkRJ1A9Sew9zUXnXmo8Wu6CHvMy/O3+6D0+p/LvVi2tLe0Ty4I8ZOWJOSx9Se5oApX+nyT2E8+pSC\nRxC5SNfuIcHp6n3P4Yq/Ad0KN6qP5Uy9G6zlX1ib+VFid1lC3rEv8qAJaivRus5h6xN/KpaZON0D\nr6of5UANsjus4T6xL/Kpag0w7tNt29YE/wDQRU9AFfVRnS7ketu//oJqaI5iU+qio9QG6wnX1hb+\nRrj/AIs/GTwz8KvDUZv7yRtUvrcrpFjb2skzyy7cBmEattjUnLO2AFBPaqjFzkorqJtRV2Y/xs8b\n31z4i0/4X6K9jHBcI9zr17qMjLAIkCsln8pGXlzuIyMRI+c7hSeC/DNrr2l6Z43sLu7S08w31pYS\nbDDazTFgxRwoaVf3km3PGH7kDGT8C/hF4lskR/HmnvcWtzYmbWXvtSW9j1jUXZGF2o3OAgUSAZC/\nK6LtIQY9a1VEj0t0jQKq7dqgYAAI4qaslWkkvgjsmuvWXz6dkkjCEHUlzzXon0JbWyhtMspLyN9+\nVzlm+p/p0qaiig6Ctff8flmf+m7f+i3qzVa/4urI/wDTyf8A0W9WaACqE/8Ax+Xn/XpH/OSr9UZx\n/p92B3s4/wD0KSgDPn/4/IPq38qmqG4/4+7f/eb/ANBNTUAFFFFABUOn/wDHt/20f/0I1NUOn/8A\nHt/20f8A9CNAE1FFFABUF7/yx/67rU9Q3vWH/ruv9aAJqKKKACiiigCGH/j+m/3E/rSyWVpK257d\nd394DB/MU2H/AI/p/wDdT+tT0AQfZJE/1F5Kvsx3D9ef1ozqMfVIpR7Eqf61PRQBB9tCf6+2lj99\nm4fmuabpdxBJaIkcykjOQG5HNWaq2dvbz2MXnQo3y/xLmgC1RUH2FUH+j3EsfsHyPyOaNuoR/dli\nkHoylT+Yz/KgCeodR/48ZR6rik+1yp/r7KRfdMMP05/So729tZbV0Wddxx8rcHqOxoAt0UUUAFFF\nFAEF7/yxHrOtT1Def6yAes//ALK1TUAFFFFABUNzzc24/wCmjH/x01NUM/N5AP8AeP6UATUUUUAF\nFFFAENxzdW4/2mP/AI6f8a8/8Bp9v/b71p+v9k/B/Tx/u/a9VvP5/Yv0rv5ub6Ef7Ln+X+NcH8HQ\nH/bx+J7kZ2fCTwQoPoTqfiokfov6UAe70UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR\nRRQAUUUUAJIMxsPY1zXTWfra/wAm/wDr10xGRiual+XWYfe2kH5Mn+NAFmiiigCtqfCwN6XSfqcf\n1qzVTWZEis1mkYKqXERYk9B5i5pPNvNR4t90EB/5asPnf/dB6fU/l3oAkub9IpPs0EZmmI4iQ9Pc\nnsKqanp8k2m3NzqEokkWByka/cjO09B3Puf0q/bWsFpH5cEeATknOST6k9zTdSXdp06+sLj9DQBK\npyAfUUtMtm3W8beqA/pT6AGzDdC6+qmotKO7TLZvWBP/AEEVP1qtov8AyCLUekCD9BQBZpGGQR6i\nlooA5rxp8SPBnwe+EGrfF34j6z/Z3h7wr4buNX17UPs8k32Wytrdpp5fLiVnfbGjNtRWY4wASQK3\n9O1Cz1bT4NV0+bzLe5hWWCTaRuRgCDg8jgjrXiv7ffwql+Of/BPb4ufBvT/B9t4g1LxH8LtasdC0\na5tkmF1qTWMv2MIrgjzBcCJkbqrqrAgqCPmuD9mo+OPh94S1r9kf9k1PBXgm08PJZXPh28+P/j/4\nItDqQlma5D6BpOkiCYsWDfbiPMnzty8cUbEA+3fin8SvDvw1+HHiH4jeI7+G20fw5ot1qOsajcPt\nht7eCJpJWJ74VWPtivAv2YfiJ4Z/bhj0z9oDwv4rb+yNV8L+Z4Z1PSYJI2ksXlaOQzQ3kIkhkLqw\njYojbEc7RuIr44h8X/HD9tf4X6H8Cf2YPCWi6tpXgr4lanF8SvA+uftP+IdX/tP7HKn2KSPXNV06\nW7ubSWfZMsXk7ALYLkLI6n7H/wCCM3gb4ufDn/gnX8PfCfxw+Ell4N8QWdjLHLpkE87XEkXmuUlu\nUntLZ4Jm3NmLa4ChCJG3YUnGaXK1o1rdbxfbtf8ALyZlKKquz2X4/wDDH07pmm2ej6bb6Rp8Xl29\nrAkMCZztRVCqOfYCmaz/AMguY+iZ/WrVVta/5BNwfSFj+lBqWaKKKAK2of6+0P8A09f+yPVmq2o/\n6y1P/T0P/QWqa4uYLWMy3EgVf5n0HqaAH1k3V482o3Menqsh+yqskhb5UwXz9Tz2q15V3qXNwGgg\nPSIHDv8A7x7D2HPr6UySOOG8miiQKoslCqowB8zUAZVxLeR3EBltg2HOPKfk/Kexx/Opf7Qtl4mL\nRf8AXVSo/PpRc/8AHzb/APXRv/QTU/XrQAiOki7o3DD1BzS1C9haM27yArH+JPlP5ik+y3CcwXr/\nAO7IoYf0P60AT1Bp/wDx7f8AbR//AEM0GS/j+/bJIPWN8H8j/jUVjfQRwbZg0f7x+XQ4+8e/SgC5\nRTY5opl3RSqw9VOadQAVDe9Yf+u6/wBamqG96w/9d1/rQBNRRRQAUUUUAQwf8fs/0T+RqaoYP+Py\nf/gP8qmoAKKKKACoNN/48If+uYqfpUOm/wDIPg/65L/KgCaiiigAqvqSI9oQ6g/MvUf7QqxUOof8\ne+PWVB/4+KAE/s+3XmHfF/1zcgfl0o8q+j/1d2r+0qc/mMfyqeigCD7RdR/66yJ94nB/ng0o1C0z\nteXyz6SqV/nU1BAYYYAj0NAEFyyvNbbWBBmJyP8Acap6p3Nla/aoPLiCEs2TGdp+6fSpfs90n+pv\nSfaVA38sGgCeioPNvo/9Zaq49Yn5/I/40f2hAvEyvEf+miED8+lAE9QS838I/wCmbn/0GpY5YpRu\nikVh6qc1E/Oox+0L/wA1oAnooooAKKKKAIH51GP2hf8AmtcJ+z4De/tf/GTVuv2fQ/Cum59PLj1G\n4x/5OZ/Gu7POoj2gP6n/AOtXEfsoJ9r+OHx81Y9YfiHpenA+0fhnR7j+d2aAPcqKKKACiiigAooo\noAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACubvfl1i3/wB2Vf8A0E/0rpK5rWpYrXUYJ55A\niLNICzHAHysf6UAWar3N+sUn2a3jM02M+Wp+77sew/yM0wyXmo8QbreDvIRh3HsD90e559u9T21r\nBaR+VbxhRnJ9SfUnuaAKOo2UhtTeX83mSK6FVXhI/mHQdz7n9K0qq6z/AMguc+iZ/LmrVABTLpd1\ntIvqhH6U+kYblK+ooAi05t2nwN6wqf0FTVW0c7tJtT/07p/6CKs0AFVdG/5BcI9Ex+Rq1VLT7mC0\n0tZLiQKod1GepO4jAHc0AXaqy37yyG206MSSA4dz9yP6nufYfpTfLu9S5n3QQf8APMHDv9T/AAj2\nHP8AKrUUUUEYihjCKowFUYAoApaDZRR2cdy5LykFd7dhk8D0FfPX/BVLwR4V+KX7K+rfDLU/gpa+\nOtf1a2nHgvS7m8Fq0WqrERbyxzcMjh3XgEBlLhjt3V9F6P8A8eAHpJIP/H2r5m8XavH8e/j7c6WY\ndT1XT7HWIIPBYdCujyNAAt/I+/EU8i4uUGA77CdpHJXOrUVGn7R90tNbt7Ldb9bapJvoRNtKy3Z8\nrf8ABJr/AIJNeNvgV+0RpPxn/aN+Hnh3xPZQ+Dmn8K69p9wrR6DrMNzHHJFJCwXzZAoPlTqGQCHc\noRm4/ULRTnR7XP8Az7p/6CKksrKz02zi07TrSK3t4IxHDBDGFSNAMBVA4AA4wKi0X/kE249IgK2n\nUqVZc09320XyXRdl0CEI048qLVVtaGdHusf8+7/+gmrNV9WGdLuR627/APoJqSywDkZopnnRxW4m\nmkCqEyzMcAVW8y71LiDdBAeshGHf/dH8I9zz/OgCPV71fOgtrUCSZbhSVzwvB+8e386sW9htlF1d\nyedN2YjAT2Udv51Fd20FpDbxW8YVRdIeO5z1Pqau0AFUrnjUJv8ArzH/AKEau1SuP+QjJ/15H+Zo\nAzrr/j4tv+up/wDQGqaoLnia2P8A01P/AKA1T0AFFFFABUGn/wDHuf8ArrJ/6GanqHT/APj3P/Xa\nT/0NqAFksrSRt7W67v7wGD+Ypv2SVP8AUXsi/wCy/wAw/Xn9anooAg36hH96KOUeqsVP5HP86iu7\nxcw+dDJHiYE7l46HuMirlQ3n3of+u4/kaAHxXEE4zDMr/wC62afUctpbTHdLAhP97bz+dM+xsnMF\n3KnsW3D9c0AT0VBnUI/4YpR7Eof60fbdn/HxbSx++3cP/Hc0ALb/APH3P9V/lU1VrO4gmupzHKpy\ny4wf9kVZoAKKKKAEbhSfaotP4sIB/wBMV/kKkl4iY/7JpllxZQj/AKZL/KgCWiiigAqC/wCYkH/T\naP8A9DFT1DffcjH/AE3T+dAE1FFFABRRRQBDP/x+QD/eP6VNUMvN/CP+mbn/ANBqagAooooAiksr\nSRt7W67v7wGD+Y5qv9lkS/2wXci4h/jO7v781dqFedRb2gX+Z/woATdqEfVIpR6qSp/Ln+dH24J/\nr7eWP3KZH5rmp6KAI4rq2n/1M6N7Bqkpkttbz/66BG92Wo/sKpzBcSx+wfI/Js0AKvOov7QL+pb/\nAArif2PP3/xB+PWpKPkufjHFs/7ZeFvD8Df+PRNW74tuvHem6Dq194A0TTNY1uGwLaXp2r6m9hb3\nU4DFI5LiOGdoVJ4LiKQgHO04xXzt+xj+1r8RPBEHjmX4wfsX/E2yi1r4r6s9z4j8G2Vt4l0yG4je\nKzkh22MpvyIntypkayRCAGB6hQD7cooooAKK+df+CjPiD4y+BfhWnjn4IftKa34Q8URxTWPgjwZo\nvhvStRPjTxFKubHT5lvbeWQwlo38z7O9uyQ+bM88aQs6/QeltqTaZbNrMcK3hgQ3a2zExiXaNwUn\nkrnOM84oAnooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuX1izK6xFc3EzSH7adqnhUB\nVsYHrnHPWuorn/EI23cbel2n68f1oAkooooArayC2kXQHX7O+P8Avk1YU7lDDuKi1Fd+nzr6wsP0\nNOtW32sbesYP6UASUUUUAVtG/wCQVAPSMD8uKs1T06eG20pZZ5AiozAlj6MRR/pmpf37eA/hI/8A\n8SP1+lAD578+abWxj82Ufe5wqf7x/p1qDQ7FFiN1cHzJhNKoY9Fw7A7R2zV2CCG2iEMEYRR0AFQa\nVxDKvpdS/wDoZNAFqiiqXiLXrHwzo0+t6juMcC8Rxrl5HJAVFHdmYhQO5IqoQlUmoxV2w2MDX767\n1Xyvh7otw8VzfyTvqFxG2GtLMSsHYHs7/cT3LMPuGvE/gNqmkz/G7TPBsXj+1uTp8+p3f/CBQRRx\nv4Xl+dRvYfvHG2Z0Cvx+9DKNoGPdPhtoN7pun3esa8FOraneyTagUbKxncdkKn+4inaPU7m6sa8H\n+JviDUvgp8TZLvVfHmhWukaBrg1fRdDvtMcajrc98ZhLFFMJfnCmeVV2RM2VG/5VJPk8R1Y4b6s1\nrTp1FzPfVprm2bsnZK1tNdLsUY8zufTlVtG/5BkQ9FI/U03Q9d0fxLpMGu+H9ThvLO5TdBc27hkc\nZxwR6EEEdiCDS6QQNOXPGGf/ANCNemmmroZaqnrN5DDZy2/LyPC22NBk4x1PoPelN3PfHy9NIEfR\nrlhkf8BH8R9+n1pXsoLWwnWMEs8bb5GOWY46k0wGWdi9xHFc6i4kIUGOIfcTjr7n3P4Yq7UVkc2U\nJ9Yl/lUtAFbVP9XCf+nqP/0IVZqrqv8AqIj6XUX/AKGKmmuFj+VeW9KAHvIka7nOBWXqsriT7Yky\nINnlmORSd/OcDHOfzp1xfO0phgXzpu4zhU+p7fzot7IJJ9ouJPNlx98jhfZR2oAzxa3ckiTz2MsS\nLyqQuGwcYycn07AVKJ0DBBeICeizoY2/WtKkdEkXa6hgeoIzQBSJnUZktmx6p8w/SkWeFjgSDPoe\nKnOl2YOYUMR9YXK/oOKbJZXeMC6SUf3biIH9RigBtQ6f/wAe5/67Sf8AobUydnhkNvHYsZducW02\nVHucjiktmFvGInvUDliSs8Zj5JJOM/WgC1RTSZ1G57ZseqHcKQTxE48wA+h4P60APqG8+9D/ANdx\n/I1NUF596H/ruP5GgCeiiigAooooAqpbwT3Nx50Kth1xuXOPlFP+whObe4lj9g+R+TZpbb/j5uP+\nug/9BFTUAQY1CPo0Uo9CCp/rR9sdP+PizlT3Ubh+nP6VPRQBA17ayxOsdwpYKflzz09KfaDFpEP+\nma/ypL2KKS2k8yNWwhxuGe1RQWKCBDDNLGdg+4/HT0ORQBaoqDZqEf3Jo5B6Ou0/mP8ACj7XMn+v\nsnHuhDD9Of0oAnqG9/5ZD/putLHfWkjbBOob+63B/I0285aAesw/kaAJ6KKKACiiigCB+dRj9oX/\nAJrU9QHnUV9oD/MVPQAUUUUAFQR86hKfSJB+rVPUEPN7OfZB/OgCeiiigAooooAgg5vJz7qP0/8A\nr1yH7AwD/AzWbtvvzfF3x+Xb12+LtWjX/wAdRR+Fdfa83Fwf+moH/ji1yP8AwT7Hm/sv2Oqf9BTx\nd4p1LPr9q8Q6jcZ/Hzc/jQB7TRRRQB5T+0D+xZ8Bf2m/Gfh34ifFKDxjDrvhO0vLbw/q3g/4n6/4\nbntIrryvtCb9IvrYuH8mIHfu4QDgZr1DT7KHTbCDTrZ5mjt4Vjja4uHlkKqAAWdyWduOWYkk8kk1\nNRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABWB4oG2QN6XMJ/8fUVv1heLBiN29Gj\nP5MKAFooooAZcLvgdfVCP0qPTG36bbv6wIf/AB0VORkYNVNKmjg0S3lnkCqluu5mOAMCgC3Ve5vx\nHJ9ltY/Omx9xTwvux7fzqPzLzUeIN0EHeQjDv9B/CPc8+3erFvbQWkflW8YVc5OO59Se5oApaLYq\n0X2m7bzJEmlCg/dQh2B2j+vWtGq2lcRSr6XUv/oZP9as0AFVdM4FwvpdP/jVqquncS3a+l0f/QVN\nAFquXtP+K68WnU2+bSdCuGSzH8N1ejKvJ7rFyi/7Zc/wKa6S9tjeWctoLiSLzYmTzYWw6ZGNynsR\n1Fc1pXgDxH4b02DSPDnxFu0traIRwQ3um20gVQOBmNIyfqTk9zXZhnTjCTc1GWyvfZ7vRPXp6N9b\nEyvc6DTOk49Lp/51ifEbwBJ43h02703WF0/UtGv/ALXpt5JaCdFcxSQsrxll3KUlccMpBwQeOYNO\ntPirayXKprmgXgFyeH0ya3J+VT1Ezj9KJPEnxRSRraDwRpF2ynDzWmuvhPqHgUZ9g31IrCvl9PFU\nZUpOMoyVmr2un/i5RqVnc8X+HHxB8ffBjWNM8NeI/wDhJtev9X1TUv7Z0QaBFbwxXTvLcBrWVljT\nacMeZnBTLZ3AZ9m+Hvi7RvH3h+21Xz3tluLm5jXSbsqk6SxTOkscihjuKOrA7SV4yCQQazPFOmp4\nssYrbxn8LfEZlt5xPb6jp+oQCWCQArujeK4WRPlZlIAwQxBzk15ZcfC2ws/EMv8AYWgyWWnTajBN\nHquq6PqEl/pJhnLuIZFhkWQuwaTc0qHzJpGbfnB8Wjlmd5X+7oR9vS0SSaco3lrqtOSMbWVr6G3N\nRqL3nyv8P+HPpMAAYAwB0AplyM20g9UP8q8F8A/tH6pqPxVh0jxH49RI5r2+TVtF1DTUtINMt4xI\nYJYpnRWkZisQwXfeJWZVXaQOx+Ff7RmnfFPWbXS4tAjtbbWdKl1DQrqLVI7hp4EMefNRQPJfbLGw\nUFxyQWBGD1rFwTiqkZQcpSilKLi2472utuzE6UrNrWyT013O11jxh4T8D+F7fxD428Uado9gZLS1\n+3arex28Pn3EsdvBFvkIXfJNLHEi5y7yIqglgDrkgDJOAK+LP+CqXjf4L/F79ia88OXvjDWobfQ/\nGvg/V9RvNJ1XU9IVbC08S6Z9vulu7Z4fNit7czys6OwhMazAq8SSLxXxa+Kfj7wtPcax+zh8av2q\ndc+GVj4cg1Hw9r/w38b/AAl1/RrrTYrNHlu4L7xTPPrN4gZZTJPdySEyCTy2MQjreFSnUjeDTXkQ\n4uLs0fX/AMff2qf2Yv2c4NMj/aM/aR8CfDtdaeU6LJ438X2Wlfb2gMZl8j7VKnm7PMi3bc7fMXON\nwz0Oha+vjDQrTxJ4U1iy1HSdRto7mw1OxnDR3lvIodJYnUsroykMrjhgQRwQa+FPGnxi/Z1+JPwj\n+B37Ynjn/gpd4p+D/in/AIVtrh8Fav42tvCbarr9rqE2nyzJd2cdnLZ3Uyvp1rm3sFil52qUYmvs\nH9kL4h/FX4tfsr/Dr4ofHLwb/wAI94x8QeC9N1DxPon2Z4Psd9Lbo80flSEvFhyf3bksn3WJINWI\n7uC5hs4xE9jLCB1OzcD75XP5mp4Lu1uf+Pe4R/UKwJFSVHPZ2tzzPbo57Fl5H40ASUVX/s8x/wDH\nteTR+2/cPybNR3F1fWKgymGbJwqqCrsfYc5oAuEhQWYgAdSaqme4v/lsm2Rd5yOW/wB0f1/nUBmk\nnfdq9rLHGD8sQXcv1YrnP48Vdgu7W44t7hHx1CsMigBbe2htU8uFMAnJJOST6k9zTmVXG11BB6gi\nlooArnS7PO6KMxH1hYp/KmvZXeMJdrIP7txED+oxVqmT3ENtH5sz4H6k+g9TQBSa3miyXsGH+1bT\nZH1w2KqvcpcTxiK6UIrbt867ATyMA960BDPqHzXamOHtDnlv97/D86s7ECeWEG3GNuOMUAUszqNz\nW5YdmjIYGkFxCTtL4Po3FTtplkSWji8tj/FCxQ/pTXsroDCXocf3biIMPzGDQA3r0opjW00fL6ef\n961m/o2P61G88cIJe82Y7XMRX9ehoAW1/wCPi5/66j/0BamqvZfaWEl0bVtkrhlKkHjaB069qlE8\nWdpbafRhj+dAD6KOvSigCO84tJT/ANM2/lToeIUH+yP5Uy+OLKY/9Mm/lT4xiNR/sigB1FFFACPH\nHKNskasPRhmql1YwJJAIN0eZsfIxAHysenSrlQXXNxbD/pqf/QGoAPKvo/8AV3KyD0kTB/Mf4UC5\nuU/19i31iYMP6H9KnooAhW/tGbY0wRj/AAyAqf1qYEEZBpGVXG11BHoRUR0+2HMSmM+sTFf0HFAB\n/wAxE+0H9amqmsN2l+wiugxEK/61M8ZbjjHpUvn3cf8ArrLI9YnB/Q4oAnoqEahaA7ZJDGfSVSv8\n6lVlYblYEeoNAC1Db83Vwf8AbUf+Oj/GpqgteZ7g/wDTYf8AoC0AT0UUUAFFFFAEFny87es5/kBX\nKf8ABO9N/wCw58LNT/6Cfgyz1LPr9qT7Tn8fNz+NdQlzDZ2VzfXD7Y4nkd29Aucn9K57/gnvay2X\n7A/wPs7hNskXwg8NI6nsw0u2BH50Aev0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR\nRQAUUUUAFYfjAYtJm9Id35f/AKq3KxvF6brGceto4/Q0AMopvmosPnSMFXbkknAFVftF1qPy2WYo\ne9wy/M3+6D/M/kaAJbm/SB/s8KGWYjIiTt7k9h7mqmi2Als4p71/MKZ8uM/dTBI4Hc+5/Sr1taQW\niFIExk5Ziclj6knqah0j/jx2+ksg/J2FAFqiiigCtpvBuF9Lpv6H+tWaq6fxPeL6XP8A7Ihq1QAV\nWsOLu9X/AKeAf/IaVZqrZ8X92P8AbQ/+OD/CgC1TLi4htYjNcSBVHc/y96iub8RyfZbWPzZsfcBw\nFHqx7D9aS3sCJRdXsnmzD7pxhU/3R2+vWgCpZR3Goz3QdnhgNxlo8YdvkXgnsMfjz2rSiiigjEUM\nYRVGAqjAFV7Li9vB/wBNlP8A5DX/AAq1QAVW0viKUel1L/6ETVmqmnyJElwXbAF0/wDOgCzLFFMh\njmjV1PVWGQa4mz+AfwL0bU7rVtH+Efh6O7vM/aLkaXETy24hcj5QW5wuBnmurvL5Ej8yZ9idMd29\nv/rVWENxfDNwDFD2hB+Zv949h7D8fSrhUnTleLafkB5F4K/ZD8CeC/EkWqeGfEGtSW2nxSxaTaHU\nXt4tPWTqEe3KPIQBsG4thcg5PNfF3/BX7/gmn8XfitoNn4r+CWn+L/EninV/F9taWUWk+Ibg5tp4\nyLmPUfMPk/ZFijkAnkI270jw27DfpuiLGoRFAAGAAOlLUxbiopPSMuZLpfvbZ79dCnOUr3e6t8j8\nk/8Agm//AME9v2sPgb4l8YwfE/R/GVpr+g38mnaBZL4qlTQ/ss8aSx3tiPtFvFJul+0eYwBli+TM\nSlyK/Qz4o61+0n4A+F+lPa67o17eiW2t9c1my0mbzLdPKbzLhYz5wOZFVclGCiQsVwOPX3jjlXZI\ngYHqGGag/sy1Xm3Dwn/pi5Ufl0/SlUlOpOrO+s1bZaWVrxslYcJqEYRtpH8fXueR+Gfjf8YfDfwS\nl+IfxF+GyX8lrLIlvJa34t5b6Mz+VBI0csUYi37kJOAMHdtAOK0vh3+0jf8AiXT9Xk8cfCjVNCuN\nCYHU2t7yC9to4mj8wSCVGVsbckgoMY7gg16FqulpfaZPp2rG2vLKeFo7q3v4AySIRgq3Ygjggiud\nHw48JN4G1D4d6b4Nj0vQ9Wtpob6LSkCNKJU2OwwAwJXjdgngegojKcZwXLFxUbP4uZvSzvzNLz0K\ncqTi7rVvTsl2t/wTO8K/tPfCXx358PhTV795bYIblbzQL23EKuCUdvMhXKtg4IyGwcHg10GmfEL4\nbzTnZ490mW6YYYSX8auPYKSCB7YrmvCHwjfwPpWvXGhePri78Q6npRtLC/1KCOIW2xZDEfLRQDiS\nQszEEn0AGK5f4Y6F8QfhjoHijxn8Q/DOpnS9P0A3B0jU9YXUZb26hWSSSWI+ZIEDKAvJUscEoMc5\n08VBezjWoyUpXu4yTjG3rFPXoXOjSfPKnPRWsmrN3/DQ9rtb2zvo/NsruKZP70UgYfmKWeztbn/X\n26OexZeRXjXwp8W+A/iDdaynjz4d+ErFtJ0+DUJNW01kaBIJfM4eVkUoV8ondnDKc8YxXaeE9F+F\nHjjTG1n4e+KLme2SUxtNo3iS5CI4AJUqku0HBBwR0IPet6FbLMVSVSlUk1Lb3V/8kn+BnWoV8PUc\nKkbNbnW/2eY/+Pa8mj9t+4fk2aP+JpF2hmH4of6j+VYv/CC6nb86d8SdftwOivJbzj8fOhY/rTPB\n3iXV9aW68OalIg1HTJRHeXSoAs8ZyY5416YdRz2DK6jO2tpYePs3OElJLfdNeeq2vpo3ujK+tmbE\n+s+QTE1jL5oH3cAge5K5wKdYi2uJPtL3aTzD+6eE9gO386nt7aG1TZEvU5Ziclj6k96J7O1uf9fb\no57Fl5FcwySiq/8AZ5j/AOPW8mj9t+4fk2aP+JpF2hmH4of6j+VAFiiq/wDaHl/8fNpNH77Nw/Nc\n0w6kt0/2fTJEd8fM5Pyp/ifb+VAE1zdx22F2l5G+5GvVv/re9Rx2bzOLjUCHYcpEPup/ifepLa0j\ntsvuLyN9+R+rf/W9qloAgfTLJm3pD5bH+KIlD+mKa1lcgYjvtw/uzxhx+mDVmigCg1rPHy9h/wAC\ntpsH8jj+dMMyR8NdGM+lzEV/XpWlUFzd7H+zQR+ZKR9zPCj1Y9hQBRv5JRZOpjVvMQqhjcNuJHAF\nSrPEuEdipx0cY/nUkWiWgYzzLmZuWkjJTHsMdKe1lcqMRX7Ef3J0Dj+h/WgBgIIyDmimPazoSW09\nT/tW0u0/kcD9aY0scXD3Lxe1zEQP++ulAE1Q3P8Ax9W4/wBtv/QTUimcrvWJZF/vQuDmoJ54/tkC\nsSpG4kOMdvegCzRQCCMg5ooAKKKKAIY+dQlPpEg/VqmqGHm+mP8AsoP51NQAEAjBGR71C1haE7ki\n2E94yVP6VNRQBB9nuo/9Tek+0qBv5YNRWs13G0xa1DgzHJjcdcAdDVyoLHlZD6zv/OgA/tC2XiYt\nF/11Qgfn0qZHSRd0bhh6g5pevWonsbR23+SFY/xJ8p/MUAS0VB9luI/9Rev9JAGH+P60eZfxn57d\nJB6xvg/kf8aAOV+M2tf8I38CPGfiTft+w+GtUut2emyCVs/pXXfsy6H/AMIx+zd8PvDWzb/Z3gjS\nbbb6eXZxJj9K+eP+CkH7Q3w4+Bv7FvxCTx9rlxpdxr3w/wDEFpolw+lXMlu92bCby45LiONorfcz\nKFMrIGJwCcGvo/4J/Fb4L/FjwLZav8DPiv4a8X6Lb2sUMOp+Ftdt9QtyoUBcSQOy9B60AdfRRRQA\nUV84/Bb9vPxD8Vfjfp3grWPgcmjeCfF2s+JdJ+HXjRPE4ubjV7zQ7qS3ulubH7Mn2OOUQXU1u6zz\nGSO3YyLCzIh+jqACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKxvF1zFFB5G1nklhcJ\nGgyTx19hz1rZqhrqB41HqGFAGHY2b3lvDc6jIHGxWjhH3F44J/vH6/hV+q+kNv0q2b1t0/8AQRVi\ngAqrpXEEi+l1L/6GT/WrVVtM4+0L6XT/AK4P9aALNFFFAFay4vbwesyn/wAhqP6VZqta8aldD12H\n9Mf0p91fRWpEeC8rfciTlm/wHuaAJZJEiQySuFVRlmY4AFZlvJc6hqFyLSQxQsELSlcMwwR8oPTp\n1P8A9erMdjLcuLjU2DEHKQL9xP8A4o+5/Klg41e4H/TCI/q/+FAE1vbQWkflW8YUZyfUn1J7n3qS\niigCtacajdj/AGkP/jv/ANarNVbchdTusnA2Rkn/AL6/wpZ7wbCVYKgHzOxoAlmuFj+VeW9PSsi5\na5junXT7jzJXfc8TICiZ7k8EfqakElxffLakxQ95iPmf/dB6fU/h61Ygt4baPyoECjv7n1PqaAKk\nUV9BMbm8tPPfs8Ug+UegU4x+ZNTDU7MHEzmE+kylf1PBqxQQCMEZB7GgBFZXXcjAg9CDS1XbTLIt\nvSHy2/vQsUP6daPs19F/qL/cP7s0YP6jH9aALFRXN3HbYQgvI33I06t/9b3qo2pajJuit7JXKnDT\nRPuVfwOMn2FSWlxp1uTvmKyv95rgFWY/jj8hxQA+O0lncT6gQxBykS/dT/E+9WaAQRkHIPcUUANk\njjlXZLGrA9mGRUJ0u1AxBvi9onIH5dP0qxRQBxvir4N6BrPgDVfh/oNtZaTbaoN0j2GnxxETBlZZ\nCEAVzuVcgj5hwetec+JPD3xE/Z4+H2peItJ1dr3Vtb1i1TVtX07Rt0djaqjKHiti0jMwOAWbeB5m\n4jamK9xuLzZJ9nt4/MlI+6Dwo9WPYUW9mUk+03MnmS/3iOF9lHb+dc1bC0qsufadmlJbq/Y6aOKq\nUlyPWN03F7O3c8h8A/tEabpvw8sNW+PXiB7K5u7u5TT0OkTLcX9rE+BdSQRIWjTaV3NtVOQ3AYCu\n98T+X9nsfif4TZbv7Lbh5BaEML6wcBmC4+8QMSJjqQQPvms74u/AvSfixf2GsP4lv9JvrGCW3FzY\npE/mQSFWZCsqMM5RSGAyDnqDivLT4s+KHw8+M2mfCHwbZXVroOl3mn6ZpmirpbvHPpQiiWS8a5II\nBjXzGzkKDDtKlmyShiq+Aqr2i5o+7FPVuV1aXNZaJ90bOhRxkXKk7S96TTsopLZRbd2/I+hrK9tN\nSs4tRsLhJoJ4lkhlQ5V0YZBB9CDUteb/AAx+IPhO48SXvg3wP470jWtOaV5dPNndpJ9mkOWltWMZ\nIXvInHKlwOI69A+23EfFzp8g9WiIcfpz+ld9enGnP3XeL1T7r/Po/NM4NdnuWKSSRIkMkjhVAyWJ\nwBVd9XsFHyzbnJwsQGHJ+hojtZbhxPqGDg5SEHKr7n1NYgJun1H7m6KD+90eT6f3R+v0qRtOsGjE\nTWcZVfujYOKmooAr/wBn+X/x63k0fPTfuH5Nmj/iaRf88Zhn3Q/1H8qsUUAV/wC0PL/4+rOaPnrs\n3D81zUkN5a3H+ouEfHUK3Ip000VvGZZnCqOpNU5LIaswkvLYJEDlUK/O3uT2Ht+fpQBI1zNeMYrB\nsIDh7jGR9F9T79PrU1vbRWqbIl6nLMTksfUnvUQ00RDFpdzRAdFDbh+TZ/Sl/wCJpF/zxmGfdD/U\nfyoAsUVX/tDy/wDj5s5o/fZuH5rmpILy1uf9RcI+OoVuRQBJRQSAMk4A6mqpmm1AlLRykPRpx1b/\nAHf8fyoAjuobSWYwWdqpn/jkTK7PqVwc+1LFpMtvl4r9mdgN7ToHz/I49s1aggit4xFCgVR2p9AF\nB7W4Q5ewRv8Aat5dp/I8frTDKkX355IsdrmLj/vocfrWlRQBQUzsu9I1lX+9E4OaDPGpxJlD6OMV\nZl06ylbe1uob++nyt+Y5qrItwZja6deO+DiTzcOifieSfbNADLYhrudgcjKjI+lT1DFps9qpDWiy\nk8tLHKVYn1weP1oZ0i+/NND7XEWR/wB9Dj9aAJqKZGZnXfGscq/3oZAaDOikCUMhPZ1xQA+oLDmF\nm9ZpP/QzUysrDcrAj1BqHT/+PUH1dj/48aAJ6KKKACiikkO2Nm9AaAPHf26P337C/wAUNNHXU/h9\nqVgvubm2eAfrLXs+j/s8/APw98UJfjf4f+CPhGw8Z3FlJZ3Hi2y8OW0Wpy28jI7wvcqglZGZEYqW\nIJUHHFeOftoR+f8Asy3WjYz/AGprnh7TMev2rWbG3x+Pm4/GvpOgAooooA+cfgt+wX4i+FXxw07x\ntrHxyTWfBPhHWfEurfDrwWnhcW1xpF5rl1JcXTXN99pf7ZHEJ7qG3RYITHHcMJGmZUYfR1FFABRR\nRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFUtZH7tD7mrtVNYH7hT/ALf9KAMXRv8AkFQL\n/djA/LirNVdH4sFX0dx+TkVaoAKq6fxPeL6XP80Q/wBatVWsuL68HrKp/wDHFH9KALNHTrUV1dwW\naB5m6nCqBksfQDvUAtrnUDu1AbIu1sD1/wB8jr9Bx9aAIIrqa81S4TTHXaY4907cheWHA/i/lwau\n2tlDaAlMs7ffkc5Zj7mo4lVNYlVVAH2WPAA9Gf8Axq1QAVVTjWZfe1j/AEZ/8atVVHGsn3tR+jH/\nABoAtUyWeOIfMeewHWmTXWDsh5Pduwqg93LcSNFY4Zs4eduVX6ep9qAGak8sdwbmK4xLIoCwBN27\nGccZB79c4qMx6k8gm1KzEqjBWKGQYX3IOMn8at21pHbZcEs7ffkfq3+fSpaAK41OzU7ZnMJ9JlK/\nqeDU6srruRgQehBpSARgjIPY1A2mWRJaOLy2P8ULFD+nWgCeiq/2a+i/1F/uH92dAf1GP61FLqd1\nbyfZ5LHzJSuQIJN34nIBAoAtTTxW8ZlmcKo6k1BsuNQ5mDRQdkzhn+voPbr/ACqK3ntHmE9/cjzv\n4UlUoE9lDfzq+CCMg5FACIiRII40CqowABwKGVXXa6gg9QRS0UAVzplmDuhjMR9YWK/oODR5GoRf\n6m+Dj+7NGP5rj+VWKZcXMNrH5kzYGcAAZJPoB3NAEJu7uEZubAkDq0Lhh+uDUB1eK+cQWtysSsOZ\nZOCfZQev1/nUwt574775dsf8MAPX/e9fp0+tWWjjddjxqV9COKAGW9vDbR7IVwCckk5LH1J71JVf\n+y7VebcPCf8Api5Ufl0/SjydSi/1V4ko9Jo8H81/woAsVS8SaFaeKPDt/wCGb+SRINRspbWZ4X2u\nqSIUJU9jgnBqX7Zcxf8AHxp7+7QsHH9D+lKmp2DHablVIGSsnyn8jzQGx8weNPh/rX7MUFpew6xa\na/4g1oR6d4euDbHTrbT0tQ04lk2mUyyk4G1QqlS4wAWz7b8CPjPF8cvhbpfjzT9H+xXl3GyajYNL\n5i2dwjFJF3jG9SRuRsDejI2AGrT+Ivhm0+IPg++0efwRo2vIIHlsdN8RAC1urlVJiV3MUxiQtgGU\nRuygkqjYwfzJ/ZB/aX/4KG/Dr4O/DT9sr46/ArxF4o0HxB4e0+78Rap4B8b6HHp93p0tpElvJLY6\njPpVvZ3JklRPLgWQDy3YyqoRXzw1N0IfV4L3PsJL4W7813e7Uvnqlbdnp1KsMwi51HaqrtybfvLR\nKKSVrr5XP1Uj063wWuVEzuPneRQc+wHYe1H9mwJ/x7SSQ/8AXNzj8jkfpXyH+0j/AMFIviFoH7F9\n58c/AH7PnjHwbrGteM9C8J+E28RLoetTT3Gp6jDZNdW9vo2qXkc8kIkkKwTSRF5lRGwrMw9J/YM+\nLWt+OvD3i7wB8QvHnxK1Pxn4Q8RR2/iTSvixomg2Wr6SJ7SGeCMf2BGthPbujGSOWJpD8zozloyB\nommjzWmnZnufl6nF9y4ilHpIu0/mOP0o+2zR/wDHzYSr/tR/OP05/SrFFAiGK/sp22R3K7v7hOG/\nI80tzdpbYQKXkb7ka9W/wHvUN3Il4xs7eCOVhw7SLlE+vqfb+VJBotvbDdbzypIRhpFfr+B4/SgC\nSG0d5Bc3zB3H3EH3Y/p6n3/lViq+zVIvuTRTD0dSp/MZH6UfbpY/+PmwlX/aQbx+nP6UAWKKihvr\nOdtkVyhb+7nB/LrUtABUF7HYeX5t7FGQOhZcnPt7065u0tyI1QvI33I16n39h70yCzcyi6vHDyj7\noH3Y/p/jQBWTSpLtSXllgiJykBfdn/eBz+VWANUhAA8mYD6of6j+VWaKAK/9oGP/AI+bOaP32bh+\na5qSC8tbn/UXCOe4VuRUlRz2lrc/6+3R8dCygkUASUEgDJOAOpNVJrWGzjMyX0sKjtv3D6YbP5Co\nBDq92oe7jjeLORCSULDtu6/l09aALBlm1E7LZikH8Uw6v/u+3v8Al61Yhhit4xFCgVR0AqAX/ljF\nzZTR+4TcPzXNSwXlpc8QXKOe4VuRQBJRRRQBDLp9lM297Zd399RhvzHNMNjKgxb38oH92TDj9ef1\nqySAMk1VM0uoEx2jlIc4aYdW9l/x/KgCpOLtpWtrezhlkUfNLCSmz6joT7ZpY1jtIliaSeLaP+W8\nWR/30vH61pQwRW8YhhQKo6AU6gChG0si74vLmX+9DIDQZ1Q4lVkP+2uKszWFlO2+W2Qt/fAwfzHN\nMNhIgxb30qj+65Dj9ef1oAjVlYZVgfoaZdHbayN6Rn+VOktLkcyWcEv+1Exjb8uf51Q1jUrSwsri\nS6uJLaOGJmupbnBSFApJZmGcAAE0Aeb/ALX6g/CXw3b9d/xe+Hq7fUf8Jfo5I/IH8K+ja+OfF37R\n3we/a58TfD/4V/sp/EPQvibNH470LxH4ivPBGt219aaHpNhqEdy1zeTpIY4S0sCxxw7jNKwfZGyx\nStH9jUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABVXVhm1+jirVV9UG\nbQ/UUAYOk8W0i+lzN/6MY1aqrpnH2hfS6f8AXB/rU888NtEZp5AijqSaAH1mrdynVLq3sI1kc7Nz\nk/JHwRz7+38qmxeal97dBb+nSSQf+yj9fpRZwxW2pzQQRhEFvEVVRwOXoAltbFIHNxM5lmIw0r/y\nA7D2FT0UUAVRxrJ97X+Tf/Xq1VZ+NZj97V/0Zf8AGpZrlY/lUZb09KAHvIka7nOBWZqksglF9HcJ\nEAmwrIpO8E5xwc5/Olub1vO8mJfOm/uA4CD1J7D9aILPEgubqTzJexxwnso7fXrQBVMmo3IU3ljI\nkJHMcLAlvr0IHsKsw3+njECyLEQMLG67D+AOKsUjxxyrskQMD1DDNAC9elFV/wCzLZebffCf+mLl\nR+XT9KPK1KL/AFd0ko9JUwfzX/CgCxQSAMk1Ul1N7UD7bZuuThTGQ4J9B3/So4Z4dUfFzOqqDxa7\nsMf971+nT60ASm5nvT5dgdsfRrgj/wBBHf69PrU1taw2qbIl6nLMTksfUnvUgAAwBgDoBRQAjIjq\nVdQQeoIqD+zLRTmBWhPrCxX9BxViigCuINRi/wBVeLIPSZOfzXH8qBd3Uf8Ax86e/wDvQsHH9D+l\nWCQoLMQAOpNVTPPfnbZsUi7z45b/AHf8f50ANk1m2ZxbWrbpm6I4Kbfc56fzqW3swj/aLiTzZSPv\nkcKPQDsKcllaxw+QIFKk5IYZyfU56mmf2Zboc2zyQn/pk5A/I8fpQBYoqv5epxH5LiKUeki7T+Y4\n/Sg30sX/AB82Eq/7UY3j9Of0oAsUVFDfWc7bIrlC390nB/I802e8Ik+zWieZL3GflT3Y9vp1oAfc\nXUNqgaUnJOFUDJY+gFQ/Y3vmEuooNo5S36ge7ep/T61Jb2Yic3Ez+ZMRgyEdB6AdhU1AFf8Asy3T\n/j2eSH08pyB+XT9K+Jv2l/8Agkr4fv8A9jY/Bn4c+G/DXxa1TwORN8INF+Oeh6VdWvhu1Bj83SrW\n6hsEmW3kjiRMztK7GOLfKAilfuGqut6Np3iLRbzw/q8LSWl/ayW91GkrIWjdSrAMhDKSCeQQR2Ip\nSipJplQnKnNSi7Nao/mk/wCCY/x9+JHjz41eLf2I/hD8H/h5YW/xq8U6NfytYznSoPB99o0vn2uo\nac1iGJnikSKRMJIJJIVZso8rH+hX9nD9nLwh8AJ/EuuRfEnxJ4y8U+M9ThvvFXi7xlcWrahqEkNu\nltAhS0t7e3hijijVVjhhjUEuxBZ2Y+DftIfsD/s4fs2eDvCvx1/ZM/Zf0PQ/GPw5vY4/DWqaFp0j\nyaTaSQyW9zIIFJWZnjcqzyK53P5r7ihNe1fsp/GnV/ij8ItN1b4qXlsdXvp7j+zY7m1W1utStEcq\nlwbU4ZCcMpwoB2bgADgb16lOpNShG11qknZPbf8AvbpeqWiOiWHqPDfWXJO8rO7XM21dvl3t0v8A\n52PXndY1LuwAAyST0qtvn1HiFmjg7ydGk+noPfr6etQJoxnHmSu8K5BSCN8qvuQcgn8MVZ2anF9y\nWKUejqUP5jI/SsTlJooYoIxFCgVR0Ap1V/t8kf8Ax9WMqY/iUbx/47z+lPhvbS4O2G5Rj/d3cj8O\ntAEtFFIzKoLMQAOpNADZreC4XbPCjj0dQapSwDzfs2kSyI4PzsHJRPqDkZ9h+lTGSfUflt2McHeU\ncM/+76D3/L1qxDDFbxiKFAqjoBQBUgs7+zLSRyRTs5yzSAqx/EZ/LFS/b3j4ubGZP9pV3j/x3n9K\nsUUARQ31ncHbDcozf3d3P5dalpk1tb3A23ECOP8AaUGov7ORP+PW5mi9lfI/JsigCxUVzdx22E2l\n5H+5GvVv/re9VpLnU45ja2zxXDgckqV2em4g4/Ci2k+x5e7tJ/Mb78xXfn/vnOB7YoAmgtJGlF1e\nsGkH3FH3Y/p6n3qxUUN7aXJ2wXCMR1UNyPwqWgAqOe0tbn/j4t0f0LKCRUlFAFf+zhH/AMet3NF7\nb9w/Js02WXULOMyyyQSIo5LZQ/1FTXNzFaoGkySThEUZLH0AqKK1lnkFzf4JBzHEPup7+59/yoAr\ntdS3bA6haTRW+AQgQtv/AN7HQe35+lXLe7tJxttp0bH8KsOPwqWo57S1uf8Aj4t0f0LKCRQBJRVf\n+zxH/wAe13NF7b9w/Js0f8TSLvDMPxQ/1H8qALFFVjqIiBN3aTRAdW27h+a5/Ws688WeHHvo9Lvf\nEllaGaKWWKCa7SOa4jiAMjKpIOxAy7m7bhnGRkA0XuJbtzb2LYUHEk+OB7L6n9BXk+v/ABM8e/Gj\nxZqHwO/ZQvYbb+y7prTxt8Tp7Zbiy8PSDiS0tFfKX+qdvLOYbY/PcbmCW09LTtV8b/trv/ZXwm1z\nUPC/wgB2X/jvTZWt9Q8XIOGg0d1w1tZNyG1IYeRc/ZMBku1+gPAvgTwZ8MPB+nfD74d+F7HRdE0i\n1W20zStNt1igtol6KqqMAd/ckk8mgDx2b/gmV+wvqmg2um+Lf2cvD2varbO8zeNNZtBN4inuXOZL\np9VGLvznPJdZVwMKu1VVR7hpOl2eiaVbaLp4kFvZ26QQCWd5XCIoVdzuSznAGWYknqSTViigAooo\noAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKg1IZsn/D+dT1X1WJptPliSZoy\nV++uMj6ZoA5qG98i7u7WCIyzG4ysY4ABROSew6/0qxBYMZRdX8gllH3Rj5Y/90f161HpdvFa3V3B\nCDjzFbk5Jyg5JPXpV2gAqqvGsv72q/ozf41aqq3Gsr72rfow/wAaALVIzBRuY4A7mmyzpEOTk9lH\nU1SvL5YyPOJZmP7uFOS3+fXpQAmoyzmdL202YijdW8x9uQSp64P92qZ1Ke4QBbeWCI/emEZYn6YH\n6mrC2kt0wm1AjAOVgU/Kv1/vH9Ks0AQWMmn+X5djKhAOWCtk59T3z9anqOeztbnme3Rj2JXkfjUf\n2Bo/+PW9mj/2WbeP/Hsn9aALFFV92pxfeiimHqhKH8jkfrQdThjH+lRSQ+pkTgfiMj9aALFQT3hE\nhtrRPMlHUZ+VPdj2+nWokuZNUyLSTZD0Mo+830Hb6n/69WYIIbaMRQoFA/X396AI7eyET/aJ38yY\njlyOnsB2FSTQQXC7J4UcejqDT6KAK502NObaeWH2R8j8jkUbdTi6PFMPRgUP5jI/SrFFAFc6gY/+\nPqzmj/2gu8f+O5/Wg6pYBN6XKvzgKhyxPpjrmlnvCJDbWiCSXuM/Knux/p1pq6XbuTLeqJpT1dl6\new9BQAgtpr0+ZfrtTOVtweP+Bev06fWrQAAwBVf+z2j5tb2aP/ZLbx/49n9KN2pxfeSKYeqkofyO\nR+tAFiiq39pRJxdQSwn1dMj8xkVNFPBcLvgmVx6owNAD6CQBknAHUmmXFzDbR+ZM+BnAAGST6Adz\nUAt574775dsecrBnr/vev06fWgBk6rq48qOJfJ7zOgJP+7n+f5U+LSILZdtlNLD/ALr5BP0bIq0A\nAMAUUAV8apF91oZh6MCh/PkfoKDqBj/4+rOaP/aC7x/47n9asUUARwXlrc/6i4R/UK3IqSo57S1u\nf+Pi3R8dCy8iqQhlnfZpN3LHGDh5Wbcp9lDZz9elAFq4vNj/AGe2TzJSPu54UerHsK+Pfj/+zff/\nAAh/aAv/ANqbXPE1ofC7apb+IbiWCzY6la3VpGjtYwHIQR3HkkBmZQPMlBBL5P17BBfWEeyKKGUZ\nyxBKsx9TnOT+NZ3jXw/4d8feE7/wX4x0hpLDUbZobmKeEOpB7914OCM9xVwVKfuVV7r/AAa1T9U9\nfPbZnVhMZXwVRypO3MnF7axlo1qna669Di/2a/2mbP8AaETWrCfwZcaFqehNbtd2cl4twjQziTyn\nWRQuSTDICpAIK9wQT6jXyB8Yv2cvHV54W0fwz+zR4SSzi0q9uU8XaH4b13+y5Lq9ZYRbX5lMiGSI\nRq+FLkp5uFVipC9l8Nv20LTwv488P/s1fETSdT1PWbI2ega34wjkjME+s+SgcBCRIyNIdvm7Rljn\naF+auVyq4ap7HEfErLm2Um9uU9HEZfSxieIy5Xj70nTu5TpwjbWbslZ33Po2mT21tcjbcQI4/wBp\nQaIbm3uC4t50fy3KvsYHaw6g46H2plzdrCwhjQySsPljH8z6D3rc8Qintreyj82O8mhGeFV9wJ9A\npz+QqH7Pq1yqyXaxugORAx2k+hbGQT7dKtW9mwk+1XbiSXHBxwnsB/Xqa+dP2jvjf+1r4N/b1+D3\nwY+B/hXwjqvhTxR4J8T6h4lsvEXiyXTXlks7vRo/PVotKu33wR3jGONZESc3MgkMXkxs4B9E/wBo\nGIYubKaPHcJuH/jualhvLW44guEYjqA3I/CvBrn9tH4w6Pbyat4w/wCCbPxo0HSLVDNqmu6x4o8A\nx2enWyjdLczuvidisUaBnZgpIVScHpXzef2wIv2xvF/wX+I37Cv/AAUV8W3p+K3jywbVPhlFbeC7\n+18K6Ja2f9oatBerFpk97az/AGeJYNr3rOlxqERBKgLQB+htFcp8VPE/ib4ceDLjxV4I+Ffinxvf\nQyRrH4a8K3mmx3k4ZgpZG1S7tbcBAdx3TKcA7QxwDxH7K37Wp/af0vxjeJ8F/Ffgy48DeL5vDet6\nf4yk0vzWvoreCeUQyaZfXsEqoLhEZhIMSK6EbkYAA9iqq1xLfEx2T7YwcPPjr7L6/Xp9age7e7Yf\nbreaC3IB2+WTv/3iOg9v/wBVXbe4tJlxazRsBxhGHFACwW8VtGIoUwP1J9T6mn0UUARz2ttcjFxA\nj+m5QcVH/ZypzbXU0XsH3D8mzViigCvjVIujQzD3BQ/1H8qhuNYaAmF7CUS4yFGGGPUlc4H4VNNd\nSzSG1sMFhxJKRlY/8T7fnUltaxWykJksxy7tyWPqaAILD7LI5n+1pNORhmB+6PQDsKt1HPaWtz/x\n8W6P6FlBIqP+zxH/AMet3NH7b9w/Js0AWKKr/wDE0i/54zD8UP8AUfyo/tAR8XNpNH77Nw/Nc/rQ\nBYpk08VvGZZnCqO9RNqllsDQzrKxOFjjYFifTFcp8Wfi54M+Cnh2Lxb8QLqeW4vLtbLQdD0u3a5v\ndUvXBMdpZwL8087BWOBwqq7sUjR3ABp+OfG3hH4f+Eb/AOInxO8SWeiaBpUBnvbzUJxHFCg43Ox7\nkkAKOSSAASQK8R8U/sf+Ff8AgpRqmkeOP2xPgTp8Xw30O4a68FeCPEuiR/2xqcjAYvtQd183T4mw\nrJYRskhAVro5JtYvQvhj+z744+J3jDTvjz+1jZ241HTbgXfgv4cW9ytxp3hZ/wCC5ndfkvtUweZ+\nYrfJjtx/rLi490oA8u+Bf7JHw1/Zx1+51L4V+K/HUWmXNj9mTwtrnxA1PV9LtPnVg9tBfzzfZSAu\n0LCyRhWYbOc16jRRQAUUUUAfOP7Xn7ZHj/4PfFnwN8K/gx4d0bU3ufG/hm0+JF/rEcrx6Vpmr6tF\nptvDCIpE/wBNmZ5poyxdI47KQyIfNh3fR1eF/tM/8E2P2I/2uPFGneP/AI3fs2+CtV8Tafrelah/\nwlVx4O02fU7lLC5jnjs5bm4t5JHtX8vypIsjdE7qCuc17pQAUUUUAFFFFABRRRQAUUUUAFFFFABR\nRRQAUUUUAFFFFABRRRQAVHdjNrJ/uGpKZOMwOP8AYP8AKgDnbbjVLlfVI2/9CH9Ks1Vi41mb/ato\n/wBGerMkiRLudsCgBaz7+4mjvo7q1gaULE6Ptxxkqc89ehp95eqkZkmk8uMdu5/z6VWEdxf/AOtD\nQw9owcM/19B7f/qoAhbW4JpPJtZVEhOGkn+UKfTnqfYVatbSKDMgYu7/AH5WOS3+A9qkEMKxCERL\nsAwE28Y+lQnS7RTugDQn/pi5Ufl0/SgCxRVcQ6lD/q7tJR6TJg/mv+FH22eL/j5sJB6tF84/Tn9K\nALFFRQ31nO2yK4Ut3QnDD8DzTJLuSVzb2ChmBw8h+6n+J9v5UAPubuK2ADZZ2+5GoyzH2qNLWW5Y\nTahg4OUgByq+5/vH9KktrOO3JkLF5G+/K/U/4D2FS0AQy6dZTNva3UN/fT5W/Mc0z7HdRf8AHtqD\n/wC7Mocf0P61ZooArefqMX+uslkH96F+fybH86UanaA7ZnaI+kylf1PBqxUd1cQW8eZud3CoBksf\nQDvQA/zE2eZvG3Gd2eKredPfnbasY4e82OW/3f8AH8vWoV0aK6Yy3UIiDdIYTj8Wx1P6fWrH2e/i\n/wBTehx/dmjH81x/I0ASwW8NtGIoUCj+Z9T6mn1X+13cX/Hxp7H/AGoWDD8jg/pSx6lZStsFwFY/\nwSDa35HmgCeiijp1oAKp3yWby+UlmstwRxt+UqPUsOgpzXM16THYNtTo1wRx9F9fr0+tTW9tDaps\niXqcsxOSx9Se9AFWHSJ4XFwNQdpQuP3i7lHsM8j86m83Uov9ZapKPWJ8H8m/xqxRQBXGp2q8XG+E\n/wDTZCo/Pp+tTo6SLvjcMD0IOaXr1qB9MsnYyLBsY/xxEofzFAE9Nmmit4zLM4VR1Jqpcm5ssJb3\nrSu33IZEDE/iMED3NNRL9JvtOoWfnMPueQ4IT6A459+aAJRHPqHzXCmODtF0Z/8Ae9B7fn6VZVVV\nQqqAAOAB0qFdTsyQskvlseizKUP69anBBGQcg9xQAUUUUAct460yHRNQh+I1pZBzaR+VrEca/NLZ\n5yXGOS0RJcd9pkA5YVz+v/sw/B/xF4tuvi1o2g21p4qvLJ1tfEcQMjxSNCYkuVUttMqoQBJ9/AA3\nYr0iQxrGxlIC4+bd0xXIeE3uNC1qT4fSO0WnMjXGgyngyQZG+3Hp5ZIx3MbLj7pNdVliaFn8UPxj\n/nH8r9IjjOdJvldr6P8Ay9GfJ3gf4PftD/sF/D7xv8XLVfD+oXCaZaWCwaTJc3Fu7falEmq3aMkZ\nLRxu7FQzHBffIBzXefB39v6y0n4Cp8S/jpodzcXt34lm0vRpvDemnGuokKStcRCWTYqpukjZvM2b\nojtOWCj6jiijhjEUSBVAwFArg/jt8H/gz8bfD1r4c+KkiJHp919psbm31Q2k9tJtKEq6MCAVYqVO\nQQenAI86OHqRXLRfTRb69+57E8yw+Nqc2OhdyknKcbKXKlblS0j53tuWfD37RHwX8QfD3RPig/xE\n0rTdI8QYXS59bvo7Myy5KtBiVh+9VlZSgycqayfjT+zRpXxi+I/gr4waZ8U/FPg/xJ4H+2xaZq3h\nY2DG6sbw2zXdjPHfWlzE8MptLckqiSqYwUkQ5J8a/aO/ZD+C3xE0vwroHwy+MPhjwzb+GtJuNKTT\n71lvVe2mZHaQATK5m3KSzMW37ju55rmf2nvhd8atW1zwdo/7PvxL1rUNG0Lwza6ZYXFvq1xE2nXk\nJZTfTiJQbjcnk52h2zEw2Yc56vq2YJN+xk9tk9e/3HNHD4Cs4KFdRb5r8ya5Uvh1V7uXktGex6X/\nAMEwf+Caeianb63ov/BPH4GWd7ZzpPaXdr8JdGjlglRgyujrbAqwIBBByCMivlT4Wf8ABLX4q/Fr\n4U/CvQPjR8J/h/put/Bv4cL4D/sf4+fC3TfH/h3U1R4XbWdFgstbtpLN5vJVJHuwJWSOFFih2SNN\n67+1N8Uv21Lf4s6NB8C9A8YXelx6Xb/Yn0rwrIlpc3/mP53237RECkRAi/iVQpbad3Sx+1p+0z+1\n14T+LWkaH8Efhl4mXT5LGF7S3Xw5bzQ6leNK4eG5ldj5EYURgENGQHZtx2/Lbw+Ijfmg1bvZfm0Y\nxwrnyWnH3k3vtbo+zfQ8XuvgH+1t+xR+1d8P/BX7MV/8AdHOufD7xtrd34G+FX7Ptx4W0/xRPYPo\nIit7iBfEnkyXree0VvezOEtRNPuSRZW24X7C37fS/Ab4P+EPgzr3x7/Yi13V7vUnvPE2rW/7aSNf\n6nrOpXr3V/di0j0CRWmkurmZliE7qMqglKjfXq//AAUW8M/Hbx38TPh94p8LfCTxTDe+Go5rzw/r\nnhfW7u3umvpJEEthNPpsodbSRYoN8DMI5sfOT5fHx7/wXr8Sf8FHrj4seFvgho3xM1bxBoHiK1Pj\nS1+HPgPw6l3qXhuTTmj2zyz21mJpbdJXkkjdiQrQfOWKIxuOFqSk03FW/vR/zMJwdOnGd/iv66d+\nx9x/tk/BfSNa/bC+Dvgv4X/FH4q6R4w8ceOT4i8UHSfjX4ng0218NaJFHNfAaXHqAsUjuJ306xZR\nbhSL+R+H+avsGaytLg7prdGYdGK8j8a+SP8Agkz4T+IPxb+CPhb9vf8AaR+Mlv8AEL4j+O/A9vZw\n6xaaVDYwaJpXnNO2lxxQBImkFzuM02xWd4kTlYUr68rmIK/2B4/+PW+mT0Vm3j/x7n9aTdqkX3oo\nph3KEofyOR+tWabNNFbxmWZwqjqTQBD/AGlEn/HzBLD7umR+YyKjW5bVGKWc22FTh5VPzN7L6D3/\nAC9acIZdRIe6UpD/AAwnq/u3t7fn6VJLp9lMdz2ybuzAYI/Ec0ASRQxwRiKFAqr0Ap1V/sU0f/Ht\nfyr/ALMnzj9ef1o8zU4vv28Uo9Y32n8jx+tAFiiq/wDacCcXMckPqZUOPzHH61NFNFOu+GVXX1Vs\nigB1Q3N35Ti3gTzJmHCZ6D1PoKbNdSSyG1scFx/rJCPlj/xPtXmXxC+Mfie78aTfs/8A7NOkWeve\nPBFHJrmpaiHfSvCcEi5S61J4yGeRl+aGxjZZp+OYYd9xGAW/jR8YNH+Hl3Y+AdB8Lz+MfiB4kik/\n4Rzwfp04imuEXCyXU0uCLGyiLL5l0/C7lRBLNJFFJ5L8H/8Agk34o+FNzY/FTw1+2p8R9E+IUFpP\nDFKuoxeItF0q2ndXfTbK38QR3tzb2gKRhjFcQyymJSzKoSKP6M+A37O/hT4F2F/qMWq3viDxVr8k\nc3izxrrZRtQ1iZAQm8qAsUEe5hFbRBYYVZgigsxb0CgCl4cs9a0/w9YWHiTWY9R1GCyijv8AUIrQ\nQLdTqgDyiIM3lhmBYJuO3OMnGau0UUAFUPFV54j0/wAL6lf+DtDttT1eCwmk0rTb2/NpDd3KoTFF\nJOI5DCjOFUyCNyoJO1sYN+svxtp/izVvCOpab4D8S2uja1PZyJpWq32mG9htJyPkkkgEkRmQHBKC\nRCwyAy9QAePfsIftnr+2j4O8UeJI9C8KKvhjxN/ZA174eePF8T+HNYP2WC4MlhqYtbX7Rs8/ypR5\nK+XLG65bGa91ryL9l79m/wAa/BfX/HPxK+LHxP0vxV4w+IWs2t9r154c8KHQ9MjFtaR2sKQWb3V1\nIG2R5eWS4ldyQMqqIq+u0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB\nSSDKEeopaiv7OHUbGbT7h5VjniaN2gneJwGGCVdCGQ88MpBB5BBoA5i9vobHVPNlbAa3C7j90EMT\nye3Wo5tRSRwtuRcSkcKjcKPUnsK+Yvit+yl+3jrfxFvvg7+yt+1L4x+HXgKPSCL7xt47m07xRM80\nqHbBpMUqDUN6ceZdX15hTgRQykmVPQ7XUv2vfhZYw2Hjv9mrT/HFtbRLF/bfwz8YxDULnaMGaay1\nX7IsWepVLu4Y84B4FAHrcFmRILm7k8yXscfKn+6O3161PXj1r+2l8AbC/h0bx/4+vPAGozyCKDTf\ninoVz4fM8pOPLglvo4Yrs54zBJKD2Jr1W21KS4to7yOBJ4ZUDxz2kwdXUjIYdMgj0zQBcoqCPUrJ\n2EZm2MeiSgqfyNT0AFNlmigjMszhVHUk1Hc3iQMIkQySsPljXqfc+g96bFZu8gub5g7jlEH3U+nq\nff8AlQBFLbNq4AuIdkHYMvzv/wDEj9fpUi6XFAMWdxLCB0VXyv5NkVZooAr/APE0h7xTD8UP9Qf0\no/tBU/4+raWL3Kbh+a5/WrFFADIbi3uF3W86OPVWzT6hubOxlBmuYUyoyZDwR+NU1t7y6yNPvpoo\nCMB5fm3fTPIHvn/GgC3PeN5htrNBJL35+VPqf6daW3s1hczyuZJWGGkYfoB2FRQLe2MYiWyjdB3h\nfBP4N/jTxqdqpxOWhP8A02QqPz6frQBYopFdHUMjAg9CDS0AFNkiimXZLGrD0YZFOqG5vFhYQxIZ\nJWHyxr/MnsPegCKezsrOMzJM9uB08tzj6BeQfyqH7Nq10gM7q0eeIZPlZx/tFf5fnVqCzbzBdXji\nSX+H+6nsB/XrU9AFYXjQgLcWEkYHQou9f/Hef0qSG8tLg7YbhGI6qG5H4VLUc1rbXIxcQI/puUHF\nAElFV/7P8v8A49buaL23bh+TZ/SmvJqVqheUwSooyWyYyB+OR/KgC1VeW7klkNtYAMwOHkP3U/xP\ntVVtSe7wJI5raAjlyhy30I4Ue9XbRrMwhLJ4yijgRkECgAtrSO2BYEs7ffkbq3+fSpaKKAEZVddr\nqCD1BFQHS7QHdArQn1hYr+g4NWKKAK/k6hF/qbxZB6TJz+a4/lTJdSltAPttkwycKYnDgn0A4P6V\nLc3gicQQp5kzD5UB6D1J7Ckt7PZJ9puX8yYj72OFHoo7CgCtDPBqEoa9mVcHKWrnBHuwPU/oKXXv\nDWieJreK21qz81YZfMhZZWRo2wVyrIQRwxBweQSKuywxTrsmiV19GXIqH+zIE/49pJIf+ub8fkcj\n9KqE505KUXZ90DSZjf8ACqPhy/8Ax9eELO5/6/EM+f8Av4TmrVn4A8Cadj+z/BWkQY6eTpsS4/Ja\nvlNTi+5NFMPSRSp/MZH6UfbpI/8Aj6sZU/2lG8f+O8/pW0sXi5KzqSfzYuWPYkt7W1tE8u1to4l/\nuxoFH6VJUKahYyKWW7j+UZYFsEfUdqi/famP4o7f8mk/wH6n2rnbbeox0lzLdOYLE4AOJJ8cL7D1\nP6D9Klt7WG2j8uNepyxbksfUnvT0RIkEcaBVUYAA4FLQBA+mWTMXSHy2P8URKH9KrL4ft7fVX161\njt/tslusEl3NaqZWiVmZYzIAGKhmYgEkAsT3NaFFAGfpljB4esxp2l+Hbe2thI8gi05FRAzuXdto\nC8s7MxPUliTyasLqdkSFkl8tj0WZSh/XrVioLu5UN9kiiEsrD7h6AeregoAdcXcVugY5YtwiJyWP\ntTIbWSWQXV/guP8AVxjlY/8AE+9RQaHaw5lyyynrJESmPYAcYqXyNQiH7m9WQek0fP5rj+VAFiiq\n4u7uP/j509v96Fgw/of0pY9SspW2CcKx/gkG1vyPNAE9FFJJIkSGSRwqqMlieBQApxjms+S2g1OX\nNrCqID81ygwzeykfzpNS1Gyt9OuNa12+isNLtIXmubi6lESLEoLM8jMQEQAEknHA5wK8j0uPxx+3\nEAvhy+1Twr8F24k1q1kks9V8cx/3bNhtksdLYcfaRtnugSYTFDsnnAOL+LEX7UX7U3xGuPBn7A/7\nT954I0PQ7W80zxd42vvClhq+hw6gNy+TYxyRpcX19FJ8krJcpbQbSr+ZOjwj1r9iv4UfHf4EeF7r\n4TfE3wD8ObTSLP8A0mx8T+Cdd1KW71y8ldjc3F9bX8TyLO5xI07Xt08rO24jGW9f8KeFPC/gTwzY\neC/BPh2x0jR9KtI7XTNL021SC3tIEUKkUcaAKiKoACgAACtCgAooooAK8o/ak/aqi/ZX8ON411n4\nCeP/ABboNhpd3qnibWvBtlYTQaBYWyh5rm5W6vIJJAELOIrZJ5mEbbYzgZ9Xr51/b2+FH7XPxsPh\njwB8FfBPw98R/DyWWeb4l+GfGPxBv/D02vKuz7NYeda6RqIaxY+Y1zEVRpwscRbymmjkAPoPTNSs\ndY0231fTLgTW11Ak1vKoOHRgGVhn1BBqeodOa9bT4G1O1hguTCpuILaYyRxvgblVyqllByAxVSRz\ngdKmoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAI\ndR03TtYsJtL1awhurW4jMdxbXMQeOVCMFWVgQwI7GvHr/wDYE/ZntriTUvhf4Uv/AIcX0jmQ3Pww\n1u50CJ5Sc+bLaWjpaXTZ5/0iGUHuDXs9FAHhN18FP2xPAak+Af2i9B8d2SfN/ZfxO8LR217Of7o1\nHSRDDCvudPlbpye/ivgH/goL8TPiJ4oRPCH7JGt6l4M0TW7jT/G3xO8Bajc+INEV0ifC6OltaC61\norOBHK8dskUOHXe8imIfcFQ6fp9hpNjDpmlWMNtbW8ax29vbxBI4kAwFVRwoA4AFAHifww/aX+A3\nxN1uTwn8O/jDoN/ryLvu/DV9cm01i3/672U+25hPHSSJcYr0H7fJHxdWMqf7SjeP05/SrnxP+DHw\ng+NuiL4a+Mvwr8OeLNOR98dj4k0SC+iRv7ypMjAHgcjnivNpv2HvDPhn998CPjh8Rvh8w+7Z6X4n\nOq6eAOka2WsJeQW8f+zbLCcZwQeaAPQoby1uDiC4RiOoDcj8Kkryq98Mft0eBuZ7L4afFGzTndEb\nvwtqMaDsqN9vguZT6l7RMn+EVQm/at0LwT+6+OHwm+JHw2ZeZLnxD4aOoabGv/PSTUdMe8s7dPea\neI88gHIAB7JUdzdRWqgyElmOERRlmPoBXnPwl/ar+CHx81/WPDHwF+LHh7xxNoEFvJrF94WvRd2d\noZw5ija5i3QNKQhYwrIZFUozKquhPeW89rasZb7zUmYfNLOmB9ARkAe2aAJVtZbthNf4wDlIAcge\n59T+n86s02OWOZd8Uisp6FTkU6gAoIBGCKKKAIH0yyZi6ReWx/iiYof06037Nfw8wX+8f3Z0B/UY\n/rU800UEZlmcKo6k1X2XGoHMytFB2j6M/wBfQe3X+VAELalqEwMUFpkBsPPE28D6A4yf5VLZT6bD\n+6jnxIxy3nZV2Pqc4Jq0iJGgSNQqgYAA4FJJHHKuyWNWB7MMigB1FV/7Mt0/49nkhPbynwPyPH6U\nmzVIfuTxTD0kXafzGR+lAFmiq32+SP8A4+rGVP8AaUbx/wCO8/pSPqkMjCCwZZpT/CDwvu3p/OgC\na5uorVN8pOScKoGSx9AKiS1mu3E9+MAHKQA5A9z6n9B+tPt7MRObiZ/MmIwZCOg9AOwqagAqGaws\n523yWy7v74GG/Mc1NRQBX+xTxf8AHtfyD0WX5x+vP60ebqMX+stUlHrE+D+Tf41YpJJEiQySOFUD\nJYnAFAEH9p2qnFwWhP8A02QqPz6frTWu3u2MOnMCBw8/VV9h6n9B+lIRNqYwQ0dufwaT/Afr9Ked\nKsBzFbiI/wB6ElD+lAEltaxWqFYwSScu7HJY+pNSVW+zX0X/AB73+4f3Z0B/UYP86PtV7F/x8WBY\nf3oHDfocH+dAFmioE1KydgjTbGPRZQUP5Gp+vSgAqO4uYrVN8p6nCqBksfQDvTbm7ELCCJPMlYfL\nGD29SewpLe0KP9puX8yYjG7HCj0UdhQBH9g+3uLjUolIH+rh67fcnuf0H60/+zxH/wAet1NF7B9w\n/Js/pViigCt/xNIe0Mw/FD/UH9KX+0Vj/wCPq2mi9ym4fmuasUUAMhube5G63nRx/ssDT6huLOym\n/e3ECEj+MjBH41UW2ubwkWN9NFb4xuc7t/0zyB75+nrQBYluZbiQ21gRkHEkxGQnsPU/y71LbW0V\nqhSMEknLMxyWPqTUMQv7RBEtrC6KMDym2n8jx+tO/tO3Ti5WSE9/NQgfmOP1oAsUU2OWKZd8UisP\nVTkU6gApskccq7JY1YHswyKdUVzdpb4QKXkf7ka9T/gPegCC4tLGyj81Hkg7AQseT6BehP4VxPx+\n+Iup/B34P638UptS8PpNpVpv0+28U6hNaWk9wzBYoXltoJ5d8jssaLFBK7O6qkbsQDb+Lvxj8I/B\nPSLTWPFUd5qms6vdfYvDPhjRIBPqGs3hUsLW0hJG5toLPIxWOJFeSV440Z1o/CT9nbxj4q8Z2P7Q\nX7VUllfeKLFml8J+D7CYzaT4ODqVLRFgPtmoFGKPeuo2qzRwJEjymYA+edL+I/7Rvxw8ZaPrH7fH\n7BnxI8O/D4taTaJ4S8Hra+JdLvbpirC61pbaRNRkWNipjs3sEhj2+ZP5kgRLb7zAAGAKKKACiiig\nDG+IPxG+Hvwl8G33xF+KvjvRvDPh/S41k1PXfEOqRWVnaIWCBpZpmVIwWZVBYjlgOpq54a8S+HPG\nfhzT/GHg/X7LVtI1ayivNL1TTbpJ7a8tpUDxTRSoSskboysrqSGBBBINc98efFXh3wR8H9f8U+Kt\nB1jU7K0sSz2OgeFr3W7yRywWPyrKxhmuJ2DlW/dxsVALnAUsPN/+CY+rz3//AAT9+Duh6l4S8T6F\nqXh34b6JoetaR4u8I6hot7a31np8EFxG1vfwQylVkRgJApjcDcjMuDQB7tRRRQAUUUUAFFFFABRR\nRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBznxQ+MXwj+CHh6Pxd8aPin4c8\nIaTNdraw6p4o1y30+3edlZliEk7qpcqjkKDkhGOODXzt+2Z/wUq8HeAv2Y/FPxB/Yj+IHgD4l+NN\nN8N6zq2mwWWuR6ppljb6XZG9vbq++xTh1ijj8qMKHRnnvLWPcgl3r9UzQQXC7LiFHUHOHUEZ/GvI\n/wBrf9g39kz9t/4eX3w//aN+BfhXxC02h6hpmj6/qPhiwu9S8Pi8hEctxp091BL9knG2N1dRw8Mb\nEHaBQB6poN9Lqmh2Wp3CqJLm0jlcIOAWUE4z25q3WR4B8B+D/hd4I0j4b/D7w3Y6NoWg6dDYaRpW\nmWcdvb2ltEgSOKOKJVSNFUABVAAAwAK16ACiiigAoryT4pftbWPwd+MXh/4Y+OPgZ45h0XxLrllo\nmmfESBNMk0Y6ldg+RatGL77flmGwyC0MSk/NIoBYet0AFFFFABXP/FTwB/wtP4e6p8PG8aa/4eTV\nrfyJtX8LagLTUIIywLiGfaxhZlBTzExIoclGRwrr0FFAHilj/wAE5v2H9G8Paf4e8Mfs2eHNDfS7\nfydP1vw7C+naxACxZmGp2zR3nmO5Z3kM293YuzMxJqGb9lP4weCfn+BX7Xnia0hTi30L4jabF4m0\n+NfeVmt9SkPvJft9OufcaKAPny68Q/tgeAWLeP8A9mDSPGVsvyjVfhX4tijvJfWR7HVfsiwr/spe\nXDdcAnAMNp+2l8ANPv4dF8f+PrzwBqM8gig034p6Fc6AZ5SceXBLfRwxXZzxmCSVT2Jr6JqHUdN0\n7WLCbS9WsIbq1uIzHcW1zEHjlQjBVlYEMCOxoA5G21KW4to7yKFLiGVA8U9pMHV1IyGHTII9M0su\ntWceEBbzWOFiZSpJ/HoPevEf2jf2B7KPw9bQfsMeDdF+GPifVdXSPUPE/h7Xb/RbLR7cq7y6g+la\na8VtrE4KqiQXAVC0od32oVaf4efsi/tR/s46PeWHwk/aVtPiJBf6hJqOqwfGSwnl1K/u5AvmFdUs\n5FjtIvl+WFbCSOJcKiqoxQB7VDaPJILq9cO45RB91Pp6n3/lVivH5vjT8Xvh8dnxr/ZG8Y6XFH/x\n8a98OblPE+mj/chthHqUnf8A5h4Hv2ra+G/7UHwL+Kutt4S+H/xl0HUNdiTdc+F724+x6vbD/ptZ\nTBLiE8Hh4lPFAHo1FV/t0kf/AB9WMqf7SDeP05/SnwXlpcnbBcIxHVQ3I/CgCWjp1pk08VvGZZnC\nqO5qDyptQ+a5Uxw9oe7/AO97e35+lAAbia+JjsW2xg4efH6L6/Xp9aeNMsBH5bWqNzklxkk+uTzm\nplVVAVQAB0ApaAK/2Ax/8et5LH7Ftw/Js/pSbtUh+9HFMPVSUP5HI/WrNFAFb+04U/4+oZYfeROP\nzGR+tTxTRTrvhlV19VbIp1Ur2KzabyobQPcEdUO0qPUsOQKALNzcxWqBpCSScIqjJY+gFRR2sty4\nuL8Dg5jgByF9z6n9B+tRw6Vc27/aE1BnlK4JmTcPoO4H41L9o1CL/XWQkH96B+fybH86ALFFV11S\nzzslkMTekylf59asAhhuUgg9CKACiikZlVSzMAAOST0oAHRJF2SIGB6gjNUJLeJ5TBpIMbKcSSRs\nQie2OhPtU3mTaicQs0cHeQcNJ9PQe/5etWIoooIxFCgVVHAAoAqw2V5ZbjbzJLuOW85SGY+7D/Cp\nPts0XFzYSqP70fzj9Of0qxRQBFDf2dw2yK4Ut/dJwfyPNS0ya2t7ldtxAjj0dQah/s5I+bW5mi9l\nfI/JsigCzTJp4reMyzOFUd6q3FzqFjtVjFcFjhEAKO38x/IUyKVhN9p1W3lVwfkGzcifQrnn3P6U\nATLDNqBEl2hSLqkB6t7t/hVrp0pkNzb3I3W86OP9lgafQAUUUUAQSadZSMXNuFY/xx/K35jmkNpd\nx822oN/uzKGH9D+tWKrSXMt1IbaxOApxJPjIX2Hqf0H6UARTahqEbm1js0llC5zE/Cj1IOMfTPNf\nN3x4/wCCpH7M/wABfGM3wY1LxA1j8R7rUV0/StJ+IFpdeGNNuJGLBbptU1CFLU2IKsfOgeYuR5cS\nTTFYm9F8b/F3xj4r8a3n7Pn7LFnZah4qtCi+KvFWpRNNpPg9ZFDhrraym6vWRg8dijK5VkeV4InR\n39C+Dn7Nnw3+DvhLUvD0FvNr9/4hl8/xj4j8SbLm/wDEVyV2mW7faFYBfkSFFWGFAI4o441VAAYf\n7NvwH0Pw5M3x48YePrTx9468Q2AjuvGluii0gs2YP9h0uIO62liGVTtVmeVkV5pJXAYeuVhfDr4W\n/DL4QeHT4Q+Evw60LwvpJupbk6X4d0iGytvPlbdJL5cKqu92JZmxlicnJrdoAKKKKACivg3xH8SP\nHqfth6x8Rl+OHimLxJpP7T2i/D/TPh3H4puF0mXw3c+H7K5mRtKD+RLKUuLvUvthjM6/ZwqyCKNo\nz95UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR\nRRQAUUUUAFFFFABXn/xY/Zs8B/GXX4PEninxb8QLCe3sxbJF4T+KWu6Hbsgdm3NBp15DG75cgyMp\ncgKCcKoHoFFAHyp8X/2Lvib8Qv2g/hzrnh34cfDzT9J+G2vaTeaF8ZNU8WalqPjyLTbZ1lvNHzPa\nMzw3h863lkk1Bw0Nw5aFpMEfVdFFABRRRQAVx3wr/aI/Z/8Ajreavp/wR+Ofg7xjceH7kW2vweFf\nE1pqL6bMd2I7hbeRzC52t8r4Pyn0Nc/f+GP21ZPHUt9pfxv+FsXhk6qXh0u4+FmpSX62XmZELXQ1\nxY2m8v5fNEAXd83l4+WvE/2GfHnhj9oD9p7xV8drn4K+PPh7fad4V/4Rfwf4T8S/BrXvDsVroMF8\nZDcT3l9YQWlxc3ExWSO2glkFvAi4y7z7QD69ooooAKKKKACiiigArmvif8GPg/8AG3RF8M/GX4V+\nHPFmnI++Ox8SaJBfRI395UmRgDwORzxXS0UAeIzfsPeGfDP734D/ABw+I3w9Yfds9L8THVdPAHSN\nbLWEvILeP/ZtlhOM4IPNeVfH/wCOH7W/7LOt+HvAM/hnwR8c/E3i6eSLwr4R8OW134c1u4ihKCe5\ncP8Ab7QQQiSMzXU0tlAhkRR87xxv9h0m1SwcqMgYBxQB8qfD39qXxT4N8GadL+2r8JvFnw28UiIv\nq0yeGp9R8PWhLH7upWTXdvFEqlV8y4lgZjlvLjz5a+vfDv4q+BPixoC+K/hT8QvDni3Smbaup+G9\nYhuoSfQPEzoT/wACr06vN/iV+yB+zP8AFrX28Z+NPg3o58RMu1fFmlRNp2tRD0j1G0aK6j/4DKKA\nNf8AtOBOLqKSH3kTj8xkfrU8csUy74pFYeqnIrzeb9lP4weCQX+BX7Xvia0hTi30L4jabF4n0+Jf\neVmt9SkPvJft9Ouc678Q/tgeAnLfED9mDSPGVsnyjVfhZ4tijvJfWR7HVfsiwr/speXDcHAJwCAe\nt0V4hrP7en7MvgDTrjUPjH8Trr4am1haSa2+K2hXWg79oJZYJL2OKO8YYP8Ax7vMCR8pNeleDPGt\nr8TfBmkePdBtrw6NrenQ31iZrKW1nkglQOhkguFSWElWGY3VXU8MAQRQBuPczXbmGwbCg4efGQPZ\nfU/oP0qW3torWPZEvU5Ziclj6k96ji1CwUCHzBERwqSKU/IGrAIIyDQAUUUUAIyqw2soIPUEVAdM\ntAd0KGI+sLFf0HBqxUVzdpb4jVC8jfcjXqff2HvQBDObuxjMpvldR0WZOSfQFf8AA1CZLu5YSapp\n8ixAArFGQ4z/ALWOT9MYq1BaOZBdXjB5f4QPup7D/Gp6AIYdQsp28uO4Xd/cbhvyPNTUyaCC4XZP\nCrj0dQai/s6OP/j1nlh9kfI/I5FAFiiq+NTi6NFMPcFD/UfypP7R8vi6tJovfZuH5rn9aALNQXF2\nyv8AZrVBJMR0zwg9Se39ajN/9uc2+mzKQP8AWTZyF9gO5/QfpU9vbRWsflxDqcsxOSx9Se9ADba0\nWAmWR/Mlb78hH6D0HtU1FFAEU1laXB3TW6M3Zscj8etM+wyx/wDHtfyp/sud4/Xn9asUUAVvM1OH\n/WW8cw9Y22n8jx+tH9qWycXKvCf+mqED8+n61PNNFbxmWZwqjqTWV4h13RNA0G98XeNtZtNJ0XTb\nWS6vrvUblYYbeCNSzyzSOQqIqgk5IAAyaALgmfVCRbyFbcHDSKeZPYeg9/y9a8ik8bePv2rNWufh\n7+zX4gl0HwPY3D2nij4r2iKzXDoxSWw0MOCk0ykFJb5g0MDAxxiaYSfZ+F8Zfso+GP8Agpt4o0v4\ni/Ejwbq/hX4baRa3EGh6hZX13o/iLxfBOm2TdJA8U1hpTDDCNsXF0QrEQQri59x/Zz/Zi8Rfs33H\n9gaP+0n418TeDbbSUstD8HeLINMmj0YIUEf2e6t7SG5ZFjUoEnkmwDwRgCgDuPhb8Kvh98FfA9n8\nOfhj4Zh0rSLHeYreJ2d5JHYvJNLI5Z55pHZpJJpGaSR3Z3ZmYk9DRRQAUUV5Xon7aP7J3xH1YeAP\nhD+1x8K9a8V6gksOiaTZeOLC8mmuQjFR5EE/mSAYyyrztU8jrQB6pRXj/wCxH8Xvi18ZfhDqusfG\n+58OXHiTQviD4l8N3t34U0iewsbldN1a5so5UguLm5kjLJArMDK3zE4wOB7BQBys/wAC/gldfFqD\n4+XXwd8KyeO7XTjYW3jWTw9bHVorQ5zbreFPOWI7j8gbbyeOa6qiigAooooAKKKKACiiigAooooA\nKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo\noooAKKKKACiiigCn4h1yx8MaBfeJdUjunttOs5bm4SxsJrqdo40LsI4YVeWZ8A4jjVnY4CqSQK8u\n039oXwb+0Xaah8LvhL4k+JfhDXLvT3e18R3/AMHtY037CFK5kjl1rTFs2kwflSQPnJOxsGvXayfH\nfgvR/iL4P1HwN4gvNWt7LVLVre5n0LX7zS7xEbqYbuyliuLd/R4pEcdiKAPNv+Cf3xJ8e/GL9iL4\nVfFP4peJpNa8R6/4F06+1vVpbWCBry5kgVpJTHAkcSFmJJWNFUZ4UDivX64P9nD9mv4T/snfC+1+\nDXwSs9dtfDljJu0+w17xlqmttaLsRBDDNqVzcSxQqqLthRxGvzFVBZie8oAKKKKACivEPjr+3j8M\nPgH8WE+FfiHwF4v1ZLGy0u98Y+JtC0+2k0zwlaaley2Vjcag8txHKElmhm4t452jSJpZVjjw59vo\nAKKKKACiiigDzj4pfsq/CL43/E/QPiX8YNOuvEkXheFjoPhXV5xLottelj/xMWsyuya7CnYksu/y\nVyYhGzuzc/qH7An7M9tcSal8L/Cl/wDDi+kcyG5+GGt3OgRPKTnzZbS0dLS6bP8Az8Qyg9wa9noo\nA8Jufgp+2L4DUnwB+0ZoPjuyT5v7L+J3haO2vZz/AHRqOkiGGFfc6fK3Tk982f40/F34fHZ8a/2R\nPGOlxR/8fGvfDm5TxPpo/wByG2EepSf+C8D37V9EUUAeI/Df9p/4GfFXXG8JfD/4zaDqGuxJuufC\n99P9j1e2H/TaymCXEJ4PDxKa7430sQ/0qxlX/aQbx+nP6Vb+J/wY+EHxt0NfDPxl+FfhzxZpyPvj\nsfEmiQX0SN/eCTIwB4HI54r5o+Mf7CHxm1H4jaZ8Ov2SvjF4v+EXgOfTJJfGXiS08bXGqvMr+ZGu\nl6Vpt+08emuABI15EYfKUqsSO7M8IB9EtqkdxJ9m051eQjkt0Qep9/apra0jtsvuLyP9+Rurf/W9\nq8g0H4Z/tqfBLwxp/hHSbP4e/FHRtJsorW2e5vtQ0DV1giQIu+S5bUkv7gqoLSSS229iWYgk5J/2\nrdB8FfJ8cPhL8SPhqy8yXPiDw2dQ0yNf+ekmo6Y15Z26e800R55AOQAD2SiuZ+HfxV8CfFjw+viv\n4UfEPw54u0pm2rqfhvWIbqEn0DxM6E/jW8NShTi5hlh95E4/MZH60AWKKbFNFOu+GVXX1Vsiknni\ntozLM2AP1PoPU0AOZlRS7sAAMkk9Kq7ptS4jLR2/dhw0n09B79TSrBLfMJb1NsYOUg9fdvU+3SrV\nAEL6dYuoVrSP5RhSFwR9D2posZYv+PW+lX/Zc7x+vP61YooAr+ZqUP8ArLeOUesTbT+R4/Wj+1LZ\nOLkPCf8ApshA/Pp+tWKOvWgBEkjlXfG4YHoVOaZc3MdqgZ8kscIijJY+gqteQWKSBILb/SHGVELF\nD9SR0FeT/tZ/FPx/8IvA9pa/BnX9LvPiRrt4tv4P8L6l4el1WTXHQhpreKCK7tWiUIcvdySrDbgi\nSU7RggHd/Ez4meB/g94Qn+I/xV15LCwtpEjhjSF5pZp5GCRW8EMYaS5uJHKpHFGrSO7BUUkgHkPB\nXwP8e/tHa/Y/Ff8Aao8PNpXh6wuo7zwh8JJpUlSCVGDw3+sshaO6u1IV47VS1vbOA+Z5kjli86+B\nvhb9s/Rf2hNP+JH7bX7Klr4u1mbUDaeFvE3w18a2l7oPgi0mHlmUWGpfY7mOZkYrPdRLeTMGZI9k\nJMQ+xqACiiigAoorzHxF+2H+z/4S+ONn+zv4m8U6pY+JdQvYbGze58Jammly3ksHnxWY1Q232EXL\nxfMtuZ/NboFJ4oA9OqnfaNb3NlPbWMpsZpYXSK9tIY/NgYggSJvRl3DORuVlyOQRxVyigDyT9kr9\nlG5/ZQ0TxDoA/aM8e/ECDxF4iu9clPjmDREazvbu5murySE6XptlxNPOzssm9V2qIxGuVPrdFFAB\nRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF\nFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB8pftWfsX/H74tfFvxif\nhdrXg+PwT8XvDfh3Q/iLPr1/dRano8GmXt1LLNp8UVvJFdvc2t20GyWW3EDxrKGlBMVfVtFFABRR\nRQAUUV8a+I/iL+xx4B/4LbeGtIsviN8OdJ+JPib4L6/p3iWxGu2MOtajeG/8OSadazxlxM8htYri\nSCIjJjSZ0BAc0AfZVFFFABRRRQAUUUUAFFFFAHm/xK/ZA/Zn+LWvt4z8afBvRz4iZdq+LNKibTta\niHpHqNo0V1H/AMBlFcrN+yn8YPBP7z4E/te+JrOFOLfQviNpsXifT4l95Wa31KQ+737fTrn3KigD\n4++N/wC1d8ev2Xtd0LwH8VP2dNG8feKPFs0tt4M0j4Q+Jy2r6xLGm555dOvoofsVpHlfNuftM8cI\nYFmyyK3QeAP20PhYmiaLB+0N4ni+GXjG5tIUv9B8d2V7pVqt8yjzLexu9Tt7VdQUPuVZYc7wM4HI\nH0r/AMI74f8A+Eg/4Sz+wrP+1fsf2T+0/sqfaPs+/f5PmY3eXu+bbnGecZqbUdO0/V7CbS9WsIbq\n1uIzHcW1xEHjlQjBVlYEMCOxoA5G11Ga4t47yKGO4hlQPFPaTB1dSMhhnGQR6E1Kup2RYJJN5bHo\nsqlD+vWuHv8A9gT9ma2uZNT+F/hO/wDhxfSOZDc/DDW7nQInlJz5stpaOlpdNnn/AEiGUHuDVC5+\nCv7Y3gJSfh/+0ZoPjuyT5v7L+J3haO2vZz/cGo6SIYYV9zp8re57gHpwIIyDkUV4/P8AGn4u/D8l\nPjZ+yJ4w0uKP/j4174c3KeJ9NB/2IbYR6lJ3/wCYeB79q2fhv+1B8Cvirrb+FPAHxo0K/wBchTfc\n+GL+f7Hq9sP+m1lMEuIeh4kiU8UAej1XnupHkNrZANIPvuR8sf19T7Vytl8aPAviX4dXHxU8I+Io\nta8N21vdTSaz4WVtWWZbZnWZbdbRZHuHV4pE2RqzF0KqpbivF9D/AG9vhr+1N49/4Zq/YX+Lfhy5\n8UC1WfxPr+r/ALs+Frdiw/5B9x5dxd6g21ttuUCRY8y4ZR5cVwAem/FL4133hfxRD8Ffgr4ZTxd8\nSdTtVuY9Ie5MVrpVqzFBqOqXCq32W13KwRQGlnZGSGN9khj6r4C/s36b8JL2++IXjLxJJ4t+IOvQ\nJH4j8aX1sInkjUlls7SEMwsrGNifLtkY85kleaZ5Jn2Pgh8CPAPwC8LTeHfBcF1cXWoXZvfEGv6t\ncfaNR1u+ZQr3d3OQDLKQqqOAkaIkcaxxoiL2dABRRRQAUUUUAef/ABY+D/xM+IWvwav4L/at8b+B\nLaGzEMmleGdJ0GeCeQOzGZm1HTbqUOQwXCuEwgwoJYnw3xlpX7Tvir9rnwZ8L/ih+zv8RvF/ws8A\nXenahpPxEtdU8KJBr+vGM/8AE01SEahaXMNvYmQlLe2sWMs480KVhiV/rKigAooooAKKKKACiiig\nAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC\niiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK\nKKAPAP2uPjL+058DPG3hLxN8PtW8AX/hfW/Fuh+Hk8DahoV7J4g1y4vb1Yrp7O8ju1hg+zWpkuyr\nWswMdpOzvCil19/rxH4o/sW3fxH/AGodH/aq0n9qv4leFtU0TRE0m18O6LbeHrnSxa+f51wETUtJ\nup7d7nEaTyW80TyJDEu4eWpHt1ABRRRQAUUV5r8W/wBrf4GfAvx9pHw6+Kes67pd3rb2iWmqDwTq\n0+kQvdXJtrdLnVIbV7GzeSYeWq3E8bEsvHzLkA9KooooAKKKKACvF/2x/wBirwJ+2/pnhz4ffGTU\no5vA+m6ob/xH4aj0uIza6ybGgtzeN+9tLcOpaVYNkk2EQypH5iS+0UUAeDS/8E+fhnoGkJ4a+C3x\ne+J3w50jy1t59F8J+N5pLP7IMA20EOoC5TTkKZQNYi2kQHMbowDDqPEX7En7H/jH4aaX8HvGf7Mv\ngfWvDWiQ+XpGlaz4at7tLM7i5kjMqMySlyZDKDvLsXLFiTXqNFAENhYWel2EGmafbrFb20KxQRJ0\nRFACqPYAAVNRRQAVzPxW8feJPh14bi13wv8ABvxN44uJLxYW0jwpNp0dzGhViZmOoXdrFsBUKcSF\n8uuFI3FemooA+T/2yrz4u/Hz9mrV/EPhj4Q+NPh/4s8OxXl1o+leKfjy/gkzRJb7pL/7T4bu7xbp\nYGMeLe7KQszHzGRSGPun7LHjeX4mfsw/Dj4jz+INQ1Z/EHgPR9SfVdX05LO7vDPZQymaaBCywSvv\n3NGpIRiVBIGas/F/9nP9nv8AaDj0yH4+fAjwZ44TRLlrjRl8X+F7TUxYTNtzJCLmN/Kc7Vyy4J2j\n0FdjFFHBGsMMaoiKFRFGAoHQAdqAHUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ\nAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB\nRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXyp/wUK+FHxg\n+P8A4r8H+Avhv8AvG17d6H4g0rVtG8fW/wAQLSz8K2Dx6lbT3A1fSXv1fVDHHahokewugruDFJbu\nWkH1XRQAUUUUAFFFFABRXwb/AMFM/wBrnx18Pf2ivh94Esm+L3hrw74Y+IXgy7vNR8HfDnxJd2Xi\nua+1qCGeykvtOs5LeS3hs/OVrJpC91PeRKIyYAsn3lQAUUUUAFYvxG+IXhH4T+AtY+Jnj3VlsdG0\nLTpb3UroozlIo1LNtVQWdjjCooLMxCgEkCr3iHw/oPi3QL7wr4p0a11LTNTs5bTUdOvrdZYLqCRC\nkkUiMCroykqVIIIJBrxbxL/wTJ/YH8ReHrnw5Z/steFvDYupbWV9U8BWz+G9Tje2uobuBor/AEpr\ne6hK3FvDIPLlXJjXORxQBv8A7GX7SHiH9qn4Jt8U/Fvwnm8D6nB4r13Q7/wzcaul9LaS6bqlzp7b\n5UjRS7G23MqhlQsVDyBQ7erV49+xV+x54Z/Yq+G+vfDjwv468R+IIdc8ea54ka78SeI9S1KaEahf\nzXKW4fULu5kzGkiI8gcGeRZLh182aQn2GgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK\nACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA\nKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo\noooAKKKKACiiigDP8ReFPC3i+2t7Lxb4a0/VIbTULe+tIdRs0nWG6glWWCdA4IWSORFdHHzKyhgQ\nQDWhRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU\nAFFFFABRRRQAUUUUAFFFFAH/2Q==\n",
"metadata": {},
"output_type": "display_data",
"text": [
"<matplotlib.figure.Figure at 0x7f46a6a4df90>"
]
}
],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#Revisions\n",
"I decided to add this section a bit late. At first I was planning to use git commits to document changes but it is not possible. The revision number is the gist revision number and I start at revision 11.\n",
"\n",
"- **r.14**\n",
" + Fix details of range and xrange. This code is written for Python 3 and the info in that section was for Python 2.\n",
"- **r.13**\n",
" + More 1-indexing fixes in text, not in code. \n",
" + Corrections of some docstrings.\n",
" + Watch out for < and > in python code. For example \"if d < myvar\" won't interfer with the html layout when converting using nbconvert, but \"if d <myvar\" will open a new html tag and wreck the layout.\n",
"- **r.12**\n",
" + Ugh, I obviously got the gist numbering wrong. Fix to sync with gist.\n",
"- **r.11** \n",
" + Cosmetic fixes to markdown to get better rendering of mathjax elements and other elements. NBConvert renders to html with a different pipeline (pandoc) than IPython Notebook and uses a [stricter version of markdown](http://johnmacfarlane.net/pandoc/README.html).\n",
" + Fixes to \"What is The Knot Vector\" section: there were 0-indexing *vs* 1-indexing inconsistencies. I think I got it right this time."
]
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment